2

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

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

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

4

1 回答 1

2

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

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

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

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

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

有关更多可选配置功能,请查看#menuCommandOn:.

于 2017-03-26T14:30:32.020 回答