X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FMenuBackend.h;h=12e38bf0a67112745b2526f8b2cf23dd0d586567;hb=501f1dd61b6c0beb927151ecf331f78848261b59;hp=161d9283dfb6c66e97d59c13985d254c01ba7966;hpb=aa5aac89dec42cb52415002f6de9c3532613e527;p=lyx.git diff --git a/src/MenuBackend.h b/src/MenuBackend.h index 161d9283df..12e38bf0a6 100644 --- a/src/MenuBackend.h +++ b/src/MenuBackend.h @@ -1,10 +1,10 @@ /* This file is part of -*- C++ -*- * ====================================================== -* +* * LyX, The Document Processor * * Copyright 1995 Matthias Ettrich -* Copyright 1995-2000 The LyX Team. +* Copyright 1995-2001 The LyX Team. * * This file is Copyright 1999 * Jean-Marc Lasgouttes @@ -19,10 +19,12 @@ #endif #include "LString.h" -#include "support/lstrings.h" #include +#include class LyXLex; +class Buffer; +class Menu; /// class MenuItem { @@ -40,26 +42,63 @@ public: Lastfiles, /** This is the list of opened Documents, typically for the Documents menu. */ - Documents + Documents, + /// + 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 floats that we can + insert a list for. */ + FloatListInsert, + /** This is the list of floats that we can + insert. */ + FloatInsert }; /// Create a Command type MenuItem - MenuItem(Kind kind, - string const & label = string(), - string const & command = string(), + 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); + + /// This one is just to please boost::shared_ptr<> + ~MenuItem(); /// The label of a given menuitem - string label() const { return token(label_, '|', 0); } - /// - string shortcut() const { return token(label_, '|', 1); } + string const label() const; + /// The keyboard shortcut (usually underlined in the entry) + string const shortcut() const; + /// 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_; } + Kind kind() const { return kind_; } /// the action (if relevant) int action() const { return action_; } - /// the description of the submenu (if relevant) - string const & submenu() const { return submenu_; } /// returns true if the entry should be ommited when disabled bool optional() const { return optional_; } + /// the description of the submenu (if relevant) + string const & submenuname() const { return submenuname_; } + /// the description of the submenu (if relevant) + void submenuname(string const & name) { submenuname_ = name; } + /// + Menu * submenu() const { return submenu_.get(); } + /// + void submenu(Menu * menu); + private: + //friend class MenuBackend; /// Kind kind_; /// @@ -67,9 +106,11 @@ private: /// int action_; /// - string submenu_; + string submenuname_; /// bool optional_; + /// + boost::shared_ptr submenu_; }; @@ -81,34 +122,39 @@ public: /// typedef ItemList::const_iterator const_iterator; /// - explicit Menu(string const & name, bool mb = false) - : menubar_(mb), name_(name) {} + typedef ItemList::size_type size_type; + /// + explicit Menu(string const & name = string()) + : name_(name) {} /// Menu & add(MenuItem const &); /// Menu & read(LyXLex &); - /// - bool menubar() const { return menubar_; } - /// + /// string const & name() const { return name_; } /// bool empty() const { return items_.empty(); } - /// - const_iterator begin() const { - return items_.begin(); - } - /// - const_iterator end() const { - return items_.end(); - } + /// + ItemList::size_type size() const { return items_.size(); } + /// + bool hasSubmenu(string const &) const; + /// + const_iterator begin() const { + return items_.begin(); + } + /// + const_iterator end() const { + return items_.end(); + } + + // Check whether the menu shortcuts are unique + void checkShortcuts() const; + private: /// ItemList items_; /// - bool menubar_; - /// string name_; - /// }; @@ -126,24 +172,35 @@ public: /// void add(Menu const &); /// - bool hasMenu (string const &) const; + bool hasMenu(string const &) const; /// Menu & getMenu (string const &); /// Menu const & getMenu (string const &) const; - // + /// + Menu const & getMenubar() const; + /// bool empty() const { return menulist_.empty(); } - /// - const_iterator begin() const { - return menulist_.begin(); - } - /// - const_iterator end() const { - return menulist_.end(); - } + /// 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 const & frommenu, Menu & tomenu, + Buffer const *) const; + /// + const_iterator begin() const { + return menulist_.begin(); + } + /// + const_iterator end() const { + return menulist_.end(); + } private: /// MenuList menulist_; + /// + Menu menubar_; }; ///