-class GuiPopupMenu;
-class GuiView;
-
-///
-class MenuItem {
-public:
- /// The type of elements that can be in a menu
- enum Kind {
- ///
- Command,
- ///
- Submenu,
- ///
- Separator,
- /** This is the list of last opened file,
- typically for the File menu. */
- Lastfiles,
- /** 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
- typically for the File->View menu. */
- ViewFormats,
- /** This is a list of updatable formats
- typically for the File->Update menu. */
- UpdateFormats,
- /** This is a list of exportable formats
- typically for the File->Export menu. */
- ExportFormats,
- /** This is a list of importable formats
- typically for the File->Export menu. */
- ImportFormats,
- /** 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,
- /** This is the list of floats that we can
- insert. */
- FloatInsert,
- /** This is the list of selections that can
- be pasted. */
- PasteRecent,
- /** toolbars */
- Toolbars,
- /** Available branches in document */
- Branches
- };
-
- explicit MenuItem(Kind kind);
-
- MenuItem(Kind kind,
- QString const & label,
- QString const & submenu = QString(),
- bool optional = false);
-
- MenuItem(Kind kind,
- QString const & label,
- FuncRequest const & func,
- bool optional = false);
-
- /// This one is just to please boost::shared_ptr<>
- ~MenuItem();
- /// The label of a given menuitem
- QString label() const;
- /// The keyboard shortcut (usually underlined in the entry)
- QString shortcut() const;
- /// The complete label, with label and shortcut separated by a '|'
- QString fulllabel() const { return label_;}
- /// The kind of entry
- Kind kind() const { return kind_; }
- /// the action (if relevant)
- FuncRequest const & func() const { return func_; }
- /// returns true if the entry should be ommited when disabled
- bool optional() const { return optional_; }
- /// returns the status of the lfun associated with this entry
- FuncStatus const & status() const { return status_; }
- /// returns the status of the lfun associated with this entry
- 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.
- QString binding() const;
- /// the description of the submenu (if relevant)
- QString const & submenuname() const { return submenuname_; }
- /// set the description of the submenu
- void submenuname(QString const & name) { submenuname_ = name; }
- ///
- Menu * submenu() const { return submenu_.get(); }
- ///
- void setSubmenu(Menu * menu);
-
-private:
- ///
- Kind kind_;
- ///
- QString label_;
- ///
- FuncRequest func_;
- ///
- QString submenuname_;
- ///
- bool optional_;
- ///
- FuncStatus status_;
- ///
- boost::shared_ptr<Menu> submenu_;
-};
-