X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FMenuBackend.h;h=6f4bf989dbc9dc96acaf734fd1a4ce17284c662a;hb=98c966c64594611e469313314abd1e59524adb4a;hp=4a1d16bf7f70f79823b8af6763a01d8dbf7f5620;hpb=4b2a999762c83627476428e595d3c1e3704a3da0;p=lyx.git diff --git a/src/MenuBackend.h b/src/MenuBackend.h index 4a1d16bf7f..6f4bf989db 100644 --- a/src/MenuBackend.h +++ b/src/MenuBackend.h @@ -1,10 +1,10 @@ /* This file is part of -*- C++ -*- * ====================================================== -* +* * LyX, The Document Processor * -* Copyright (C) 1995 Matthias Ettrich -* Copyright (C) 1995-1999 The LyX Team. +* Copyright 1995 Matthias Ettrich +* Copyright 1995-2001 The LyX Team. * * This file is Copyright 1999 * Jean-Marc Lasgouttes @@ -19,78 +19,131 @@ #endif #include "LString.h" -#include "support/LAssert.h" #include class LyXLex; -class MenuItem; +class Buffer; +/// class MenuItem { public: - // The type of elements that can be in a menu - enum Kind { - Command, - Submenu, - Separator, - Lastfiles, // This is the list of last opened file, - // typically for the File menu. - Documents // This is the list of opened Documents, - // typically for the Documents menu. + /// 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, + /// + 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 copy of a given MenuItem - MenuItem(MenuItem const &); - // Create a Command type MenuItem - MenuItem(Kind kind_, string const & label_ = string(), - string const & command_ = string()); - // - ~MenuItem() {} + /// 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 label_; } - // The kind of entry - Kind kind() const { return kind_; } - // the action (if relevant) + /// The label of a given menuitem + 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_; } + /// the action (if relevant) int action() const { return action_; } - // the description of the submenu (if relevant) + /// 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_; } private: + /// Kind kind_; + /// string label_; + /// int action_; + /// string submenu_; - MenuItem() {} + /// + bool optional_; }; +/// class Menu { public: - // + /// typedef std::vector ItemList; - // + /// 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) {} - // - void add(MenuItem const &); - // - void read(LyXLex &); - // + /// + 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_; } - // + /// 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_; @@ -98,10 +151,10 @@ private: bool menubar_; /// string name_; - /// }; +/// class MenuBackend { public: /// @@ -115,24 +168,27 @@ 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; // bool empty() const { return menulist_.empty(); } - /// - const_iterator begin() const { - return menulist_.begin(); - } - /// - const_iterator end() const { - return menulist_.end(); - } + /// + const_iterator begin() const { + return menulist_.begin(); + } + /// + const_iterator end() const { + return menulist_.end(); + } private: /// MenuList menulist_; }; +/// extern MenuBackend menubackend; #endif /* MENUBACKEND_H */