Genexus Extensions SDK - 我在哪里可以找到可用的菜单上下文字符串?

Genexus Extensions SDK - Where can I find the avaliable Menu Context strings?

我正在尝试使用 Genexus Extensions SDK 在 IDE 上放置按钮,在这种情况下,我想将其放置在“上下文”菜单中,仅在“[=37] 类型的对象中可用=]”和“交易”,就像 WorkWithPlus 在这里做的那样:

到目前为止,深入研究可用文档,我注意到您需要将上下文类型字符串放入 xml 标记和您打算添加的包的 GUID菜单项,例如下面 GeneXusPackage.package:

上面的上下文 ID 会将项目添加到“文件夹视图”上下文中。

我的问题:

我正在使用 Genexus 16 U11 的 SDK

很抱歉,没有所有可用菜单的详尽列表。直到现在我才想到它,我看到了它的用处,所以我们一定会考虑将它作为 SDK 的一部分,以便任何包实现者可以参考它。

同时,要在您提到的上下文菜单中添加新命令,您必须将其添加到列为该菜单一部分的命令组中。该组是 KBObjectGrp,由核心 shell 包提供,其 ID 是 98121D96-A7D8-468b-9310-B1F468F812AE

首先在命令部分的 .package 文件中定义命令:

<Commands>
  <CommandDefinition id='MyCommand' context='selection'/>
</Commands>

然后加上前面提到的KBObjectGrp

<Groups>
  <Group refid='KBObjectGrp' package='98121D96-A7D8-468b-9310-B1F468F812AE'>
    <Command refid='MyCommand' />
  </Group>
</Groups>

然后为了使您的命令仅对您之前所说的对象可用,您必须为命令编写一个查询处理程序,它将在命令启用、禁用或根本不可见时进行规则。您可以在包 class.

的 Initialize 方法中执行此操作
public override void Initialize(IGxServiceProvider services)
{
    base.Initialize(services);

    CommandKey myCmdKey = new CommandKey(Id, "MyCommand");
    AddCommand(myCmdKey, ExecMyCommand, QueryMyCommand);
}

private bool QueryMyCommand(CommandData data, ref CommandStatus status)
{
    var selection = KBObjectSelectionHelper.TryGetKBObjectsFrom(data.Context).ToList();
    status.Visible(selection.Count > 0 && selection.All(obj => obj.Type == ObjClass.Transaction || obj.Type == ObjClass.WebPanel));
    return true;
}

private bool ExecMyCommand(CommandData data)
{
    // Your command here
    return true;
}

我在这里使用了一些助手 classes 来从选择中获取对象,然后是一个名为 ObjClass 的 class,它公开了最常见的 guid对象类型。如果您觉得有些地方不够清楚,请随时联系我们。

反编译Genexus dll,寻找名为package的资源,可以推断出是什么名字。 很麻烦但是很管用