メインメニュー項目およびツールバーボタン
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 にすると、そのメニュー項目に対するツールバーボタンは表示しません。
現仕様では、メニュー項目に表示する文字列などを、動的に変更する手段は用意されていません。
← 拡張ポイント解説 ドッキングウィンドウ →