X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FMenuBackend.h;h=33e9d57b45c181bdf90ebfba02933eae83ce3f3f;hb=4056f0ddb150d0e5d60bc5941d51e365eed0ac86;hp=9fa664d8fc52a83b783a724b3d730b779cb0d5f3;hpb=34694773c6a1b68fb52e367aaa949828bdbe8df1;p=lyx.git diff --git a/src/MenuBackend.h b/src/MenuBackend.h index 9fa664d8fc..33e9d57b45 100644 --- a/src/MenuBackend.h +++ b/src/MenuBackend.h @@ -14,13 +14,17 @@ #define MENUBACKEND_H #include "FuncStatus.h" -#include "funcrequest.h" +#include "FuncRequest.h" #include #include +#include -class LyXLex; + +namespace lyx { + +class Lexer; class Buffer; class Menu; @@ -41,6 +45,8 @@ public: /** This is the list of opened Documents, typically for the Documents menu. */ Documents, + /** This is the bookmarks */ + Bookmarks, /// Toc, /** This is a list of viewable formats @@ -58,6 +64,12 @@ public: /** This is the list of elements available * for insertion into document. */ CharStyles, + /** This is the list of user-configurable + insets to insert into document */ + Custom, + /** This is the list of XML elements to + insert into the document */ + Elements, /** This is the list of floats that we can insert a list for. */ FloatListInsert, @@ -67,6 +79,8 @@ public: /** This is the list of selections that can be pasted. */ PasteRecent, + /** toolbars */ + Toolbars, /** Available branches in document */ Branches }; @@ -74,23 +88,23 @@ public: explicit MenuItem(Kind kind); MenuItem(Kind kind, - lyx::docstring const & label, - lyx::docstring const & submenu = lyx::docstring(), + docstring const & label, + docstring const & submenu = docstring(), bool optional = false); MenuItem(Kind kind, - lyx::docstring const & label, + docstring const & label, FuncRequest const & func, bool optional = false); /// This one is just to please boost::shared_ptr<> ~MenuItem(); /// The label of a given menuitem - lyx::docstring const label() const; + docstring const label() const; /// The keyboard shortcut (usually underlined in the entry) - lyx::docstring const shortcut() const; + docstring const shortcut() const; /// The complete label, with label and shortcut separated by a '|' - lyx::docstring const fulllabel() const { return label_;} + docstring const fulllabel() const { return label_;} /// The kind of entry Kind kind() const { return kind_; } /// the action (if relevant) @@ -103,12 +117,12 @@ public: FuncStatus & status() { return status_; } /// returns the status of the lfun associated with this entry void status(FuncStatus const & status) { status_ = status; } - /// returns the binding associated to this action - lyx::docstring const binding() const; + ///returns the binding associated to this action. + docstring const binding() const; /// the description of the submenu (if relevant) - lyx::docstring const & submenuname() const { return submenuname_; } + docstring const & submenuname() const { return submenuname_; } /// set the description of the submenu - void submenuname(lyx::docstring const & name) { submenuname_ = name; } + void submenuname(docstring const & name) { submenuname_ = name; } /// Menu * submenu() const { return submenu_.get(); } /// @@ -119,11 +133,11 @@ private: /// Kind kind_; /// - lyx::docstring label_; + docstring label_; /// FuncRequest func_; /// - lyx::docstring submenuname_; + docstring submenuname_; /// bool optional_; /// @@ -143,17 +157,16 @@ public: /// typedef ItemList::size_type size_type; /// - explicit Menu(lyx::docstring const & name = lyx::docstring()) - : name_(name) {} + explicit Menu(docstring const & name = docstring()) : name_(name) {} /// Add the menu item unconditionally Menu & add(MenuItem const &); /// Checks the associated FuncRequest status before adding the /// menu item. Menu & addWithStatusCheck(MenuItem const &); /// - Menu & read(LyXLex &); + Menu & read(Lexer &); /// - lyx::docstring const & name() const { return name_; } + docstring const & name() const { return name_; } /// bool empty() const { return items_.empty(); } /// Clear the menu content. @@ -165,23 +178,23 @@ public: /// bool hasFunc(FuncRequest const &) const; /// - const_iterator begin() const { - return items_.begin(); - } + const_iterator begin() const { return items_.begin(); } /// - const_iterator end() const { - return items_.end(); - } + const_iterator end() const { return items_.end(); } // Check whether the menu shortcuts are unique void checkShortcuts() const; + + // search for func in this menu iteratively, and put menu + // names in a stack. + bool searchFunc(FuncRequest & func, std::stack & names) const; private: friend class MenuBackend; /// ItemList items_; /// - lyx::docstring name_; + docstring name_; }; @@ -195,26 +208,29 @@ public: /// typedef MenuList::iterator iterator; /// - MenuBackend() : specialmenu_(0) {} + MenuBackend() {} /// - void read(LyXLex &); + void read(Lexer &); /// void add(Menu const &); /// - bool hasMenu(lyx::docstring const &) const; + bool hasMenu(docstring const &) const; /// - Menu & getMenu(lyx::docstring const &); + Menu & getMenu(docstring const &); /// - Menu const & getMenu(lyx::docstring const &) const; + Menu const & getMenu(docstring const &) const; /// Menu const & getMenubar() const; /// bool empty() const { return menulist_.empty(); } /** This defines a menu whose entries list the FuncRequests - will be removed by expand() in other menus. This is used by - the Qt/Mac code + that will be removed by expand() in other menus. This is + used by the Qt/Mac code */ - void specialMenu(lyx::docstring const &); + void specialMenu(Menu const &); + /// + Menu const & specialMenu() { return specialmenu_; } + /// Expands some special entries of the menu /** The entries with the following kind are expanded to a sequence of Command MenuItems: Lastfiles, Documents, @@ -223,31 +239,23 @@ public: void expand(Menu const & frommenu, Menu & tomenu, Buffer const *) const; /// - const_iterator begin() const { - return menulist_.begin(); - } + const_iterator begin() const { return menulist_.begin(); } /// - iterator begin() { - return menulist_.begin(); - } + iterator begin() { return menulist_.begin(); } /// - const_iterator end() const { - return menulist_.end(); - } + const_iterator end() const { return menulist_.end(); } /// - iterator end() { - return menulist_.end(); - } + iterator end() { return menulist_.end(); } + private: /// MenuList menulist_; /// Menu menubar_; /// - Menu * specialmenu_; + Menu specialmenu_; }; -/// -extern MenuBackend menubackend; +} // namespace lyx -#endif /* MENUBACKEND_H */ +#endif // MENUBACKEND_H