【问题标题】:How can I edit the WorldMenu in Pharo如何在 Pharo 中编辑 WorldMenu
【发布时间】:2017-03-25 20:18:00
【问题描述】:

如何在运行时在 Pharo 中的 WorldMenu 中删除或添加条目?

例如,我有一个菜单选项,可以加载用于使用 Web 工具的额外工具。运行设置这些工具的代码将包括向菜单添加项目以停止和启动 Web 服务。我不希望这些停止和启动项目正常使用,但设置项目的代码将在图像中。

我已经看到并使用了这个question 中的方法但是这会在加载代码时添加项目。

【问题讨论】:

  • 实际上,该问题的answer 应该动态工作,因为每次世界菜单即将弹出时,都会收集并调用带有<wordMenu> pragma 的#menuCommandOn: 的实现者。
  • 问题是我不希望我的商品在我运行代码之前购物 - 而不仅仅是图像中的代码
  • 那么<worldMenu> pragma 确定该方法被调用。您可以在那里有条件地添加项目。

标签: menu pharo morphic


【解决方案1】:

让我澄清一下@Peter 和我的意思

选择任何类,并在类的行中添加您的#menuCommandOn: 方法

menuCommandOn: aBuilder
  <worldMenu>
  self showsItem ifTrue: [
    (aBuilder item: self itemToken)
      order: 0.1;
      action: [self performItemAction]]

这样,即使每次世界菜单即将弹出时都会调用该方法,但它会添加菜单项只有#showsItem背后的逻辑启用它。请注意,菜单的动态特性不需要您删除菜单项,而是您根本不添加它们。在您的情况下,这样的逻辑应该反映 Web 服务的可用性。

#itemToken 消息发送是您要用于标识项目的Symbol 的占位符。换句话说,您可能希望将其作为文字内联,而不是发送#itemToken 消息。此Symbol 将用作项目label

有关更多可选配置功能,请查看#menuCommandOn: 的其他实现者。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多