internal static class MenuDefinitions
{
private static readonly ITranslation MenuTranslation = ...
private static readonly ITranslation TextMenuItemTranslation = ...
// Menu 'Menu'
[Export]
public static MenuDefinition MyMenuDefinition { get; }
= new MenuDefinition(
menuBar: Gemini.Modules.MainMenu.MenuDefinitions.MainMenuBar,
sortOrder: 20,
text: MenuTranslation);
// First menu group
[Export]
public static MenuItemGroupDefinition MyEditMenuItemGroupDefinition { get; }
= new MenuItemGroupDefinition(
parent: MyMenuDefinition,
sortOrder: 0);
// Command menu item 'Copy'
[Export]
public static MenuItemDefinition MyCopyCommandMenuItemDefinition { get; }
= new CommandMenuItemDefinition<CopyCommandDefinition>(
group: MyEditMenuItemGroupDefinition,
sortOrder: 0);
// Command menu item 'Paste'
[Export]
public static MenuItemDefinition MyPasteCommandMenuItemDefinition { get; }
= new CommandMenuItemDefinition<PasteCommandDefinition>(
group: MyEditMenuItemGroupDefinition,
sortOrder: 10);
// Second menu group
[Export]
public static MenuItemGroupDefinition MySecondItemGroupDefinition { get; }
= new MenuItemGroupDefinition(
parent: MyMenuDefinition,
sortOrder: 10);
// Command menu item 'Checked Command'
[Export]
public static MenuItemDefinition MyCheckCommandMenuItemDefinition { get; }
= new CommandMenuItemDefinition<CheckCommandDefinition>(
group: MySecondItemGroupDefinition,
sortOrder: 0);
// Create a dynamic list of menu items
// Command menu items 'Item 1', 'Item 2' and 'Item 3'
[Export]
public static MenuItemDefinition MyListCommandMenuItemDefinition { get; }
= new CommandMenuItemDefinition<ListCommandDefinition>(
group: MySecondItemGroupDefinition,
sortOrder: 10);
// Third menu group
[Export]
public static MenuItemGroupDefinition MyThirdMenuItemGroupDefinition { get; }
= new MenuItemGroupDefinition(
parent: MyMenuDefinition,
sortOrder: 10);
// Text menu item 'Text Menu Item'
[Export]
public static MenuItemDefinition MyTextMenuItemDefinition { get; }
= new TextMenuItemDefinition(MyThirdMenuItemGroupDefinition, 0, TextMenuItemTranslation);
// Create a sub menu for more menu items
// Fourth menu group on menu item
[Export]
public static MenuItemGroupDefinition MySubMenuItemGroupDefinition { get; }
= new MenuItemGroupDefinition(MyTextMenuItemDefinition, 0);
// Command menu item 'Undo'
[Export]
public static MenuItemDefinition MyUndoCommandDefinition { get; }
= new CommandMenuItemDefinition<UndoCommandDefinition>(MySubMenuItemGroupDefinition, 0);
// Command menu item 'Redo'
[Export]
public static MenuItemDefinition MyRedoCommandDefinition { get; }
= new CommandMenuItemDefinition<RedoCommandDefinition>(MySubMenuItemGroupDefinition, 10);
}
Simple Example
This example adds a MenuItemGroup with a CommandMenuItem to the bottom of the ViewMenu.
[Export]
public static MenuItemGroupDefinition MyMenuGroup { get; }
= new MenuItemGroupDefinition(
parent: Gemini.Modules.MainMenu.MenuDefinitions.ViewMenu,
sortOrder: 100);
[Export]
public static MenuItemDefinition MyCommandMenuItemDefinition { get; }
= new CommandMenuItemDefinition<MyCommandDefinition>(
group: MyMenuItemGroupDefinition,
sortOrder: 0);
Exclude Defined Menus and Menu Items
You can exclude already defined menus, menu groups, and menu items by exporting an exclude definition.