X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FMenuBackend.h;h=d21df334087a878af2a4765ccdf57a80ce3cd03d;hb=c90c5e6386ce69c34c99b3594d6fa452e6a13161;hp=7ceb6c6ec5cefd5ac41918415fb7c31ca362c5d7;hpb=45a03f4f67bb00f8142e465c615f348f0622eb32;p=lyx.git diff --git a/src/MenuBackend.h b/src/MenuBackend.h index 7ceb6c6ec5..d21df33408 100644 --- a/src/MenuBackend.h +++ b/src/MenuBackend.h @@ -23,6 +23,7 @@ #include class LyXLex; +class Buffer; /// class MenuItem { @@ -43,27 +44,37 @@ public: Documents, /// Toc, - /// - References, /** This is a list of viewable formats - typically for the Documents menu. */ + typically for the File->View menu. */ ViewFormats, /** This is a list of updatable formats - typically for the Documents menu. */ + typically for the File->Update menu. */ UpdateFormats, /** This is a list of exportable formats - typically for the Documents menu. */ - ExportFormats + typically for the File->Export menu. */ + ExportFormats, + /** This is a list of importable formats + typically for the File->Export menu. */ + ImportFormats }; /// Create a Command type MenuItem MenuItem(Kind kind, string const & label = string(), string const & command = string(), bool optional = false); + MenuItem(Kind kind, + string const & label, + int action, + bool optional = false) + : kind_(kind), label_(label), + action_(action), submenu_(), optional_(optional) {} + /// The label of a given menuitem string const label() const { return token(label_, '|', 0); } - /// + /// The keyboard shortcut (usually underlined in the entry) string const shortcut() const { return token(label_, '|', 1); } + /// The complete label, with label and shortcut separated by a '|' + string const fulllabel() const { return label_;} /// The kind of entry Kind kind() const { return kind_; } /// the action (if relevant) @@ -94,12 +105,18 @@ public: /// typedef ItemList::const_iterator const_iterator; /// - explicit Menu(string const & name, bool mb = false) + explicit Menu(string const & name = string(), bool mb = false) : menubar_(mb), name_(name) {} /// Menu & add(MenuItem const &); /// Menu & read(LyXLex &); + /// Expands some special entries of the menu + /** The entries with the following kind are expanded to a + sequence of Command MenuItems: Lastfiles, Documents, + ViewFormats, ExportFormats, UpdateFormats + */ + void expand(Menu & tomenu, Buffer *) const; /// bool menubar() const { return menubar_; } /// @@ -108,6 +125,8 @@ public: bool empty() const { return items_.empty(); } /// ItemList::size_type size() const { return items_.size(); } + /// + bool hasSubmenu(string const &) const; /// const_iterator begin() const { return items_.begin(); @@ -116,6 +135,10 @@ public: const_iterator end() const { return items_.end(); } + + // Check whether the menu shortcuts are unique + void checkShortcuts() const; + private: /// ItemList items_; @@ -140,7 +163,7 @@ public: /// void add(Menu const &); /// - bool hasMenu (string const &) const; + bool hasMenu(string const &) const; /// Menu & getMenu (string const &); ///