主菜单项及工具栏按钮

Extension 可以在主菜单中添加用于 Extension 的菜单项。菜单项也可以通过子菜单进行分层。

此外,对于每个菜单项,也可以添加对应的工具栏按钮。(仅添加工具栏按钮的操作不被支持)

选择菜单项或点击工具栏按钮时,会调用 Extension 的命令。被调用的命令在菜单项和工具栏按钮之间没有区别。
不过,可以区分命令是否是通过工具栏按钮调用的。

要使用此扩展点,需要创建并导出实现了接口 IRCXMainMenuItemProvider 的类。

[Export(typeof(IRCXMainMenuItemProvider))]
public class MainMenuItem : IRCXMainMenuItemProvider
{
    /// <inheritdoc />
    public string Id => Main.CommonId;

    /// <inheritdoc />
    public string MenuItemId => "MyExtension.MainMenuItem";

    /// <inheritdoc />
    public IRCXMainMenuItemProvider.MenuItem MainMenuRootItem
    {
        get
        {
            return new IRCXMainMenuItemProvider.MenuItem
            {
                Caption = new RCXCaption(Main.CommonId, Caption.MainMenu),
                Icon = Main.CommonIcon,
                CommandName = "Main",
                ToolTip = new RCXCaption(Main.CommonId, Caption.MainMenu),
            };
        }
    }

    /// <inheritdoc />
    public IRCXMainMenuItemProvider.TopLevelMenu TopLevel => IRCXMainMenuItemProvider.TopLevelMenu.Default;

    /// <inheritdoc />
    public Task ExecuteMainMenuItemCommandAsync(
        string commandName,
        bool fromToolBar
    )
    {
        // (Code here)
        return Task.CompletedTask;
    }
}

如果包含多个菜单项,请注意 MenuItemId 不要与其他项重复。

以下是包含子菜单的示例。

    public IRCXMainMenuItemProvider.MenuItem MainMenuRootItem
    {
        get
        {
            return new IRCXMainMenuItemProvider.MenuItem
            {
                Caption = new RCXCaption(Main.CommonId, Caption.MainMenu),
                Icon = Icon,
                CommandName = "Main",
                Children =
                [
                    new()
                    {
                        Caption = new RCXCaption(Main.CommonId, Caption.MainMenu_Sub1),
                        Icon = Icon,
                        CommandName = "Sub1",
                        ToolTip = new RCXCaption(Main.CommonId, Caption.ToolTip_Sub1),
                    },
                    new()
                    {
                        Caption = new RCXCaption(Main.CommonId, Caption.MainMenu_Sub2),
                        Icon = Icon,
                        CommandName = "Sub2",
                        ToolTip = null,
                    },
                ]
            };
        }
    }

将 ToolTip 设置为 null 时,该菜单项对应的工具栏按钮不会显示。
当前规范下,没有提供动态更改菜单项显示字符串等内容的方法。