MainWindow.setMenuAndToolbarFromAnnotatedCode

Adds a menu and toolbar from annotated functions. It uses the top-level annotations from this module, so it is better to put the commands in a separate struct instad of in your window subclass, to avoid potential conflicts with method names (if you do hit one though, you can use @(.icon(...)) instead of plain @icon(...) to disambiguate, though).

        struct Commands {
                @menu("File") {
			@toolbar("") // adds it to a generic toolbar
                        void New() {}
                        void Open() {}
                        void Save() {}
                        @separator
                        void Exit() @accelerator("Alt+F4") @hotkey('x') {
                                window.close();
                        }
                }

                @menu("Edit") {
			@icon(GenericIcons.Undo)
                        void Undo() {
                                undo();
                        }
                        @separator
                        void Cut() {}
                        void Copy() {}
                        void Paste() {}
                }

                @menu("Help") {
                        void About() {}
                }
        }

        Commands commands;

        window.setMenuAndToolbarFromAnnotatedCode(commands);

Note that you can call this function multiple times and it will add the items in order to the given items.

  1. void setMenuAndToolbarFromAnnotatedCode(T t)
    class MainWindow
    void
    setMenuAndToolbarFromAnnotatedCode
    (
    T
    )
    (
    ref T t
    )
    if (
    !is(T == class) &&
    !is(T == interface)
    )
  2. void setMenuAndToolbarFromAnnotatedCode(T t)

Meta