X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FToolbarBackend.h;h=95dc8900b726e9021a1ff9aabf19d1907c8ccb57;hb=2417d9d911dbca181c48f45d1aad26d31c9aa815;hp=bbc3498f5ebd6c01e287fe3744940318948502d7;hpb=84640bc0f28e0f884c1258a77e9ee21dcffd283c;p=lyx.git diff --git a/src/ToolbarBackend.h b/src/ToolbarBackend.h index bbc3498f5e..95dc8900b7 100644 --- a/src/ToolbarBackend.h +++ b/src/ToolbarBackend.h @@ -4,96 +4,147 @@ * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * - * \author unknown + * \author Jean-Marc Lasgouttes + * \author John Levon * - * Full author contact details are available in file CREDITS + * Full author contact details are available in file CREDITS. */ #ifndef TOOLBAR_BACKEND_H #define TOOLBAR_BACKEND_H +#include "FuncRequest.h" + #include -#include -#include "LString.h" -class LyXLex; +namespace lyx { -/// -class ToolbarBackend { + +class Lexer; + +class ToolbarItem { public: - /// The special toolbar actions - enum ItemType { + enum Type { + /// command/action + COMMAND, /// the command buffer - MINIBUFFER = -3, + MINIBUFFER, /// adds space between buttons in the toolbar - SEPARATOR = -2, + SEPARATOR, /// a special combox insead of a button - LAYOUTS = -1, + LAYOUTS, + /// a special widget to insert tabulars + TABLEINSERT, + /// + POPUPMENU, + /// + ICONPALETTE }; - /// action, tooltip - typedef std::pair Item; + ToolbarItem(Type type, + FuncRequest const & func, + docstring const & label = docstring()); - /// the toolbar items - typedef std::vector > Items; + ToolbarItem(Type type, + std::string const & name = std::string(), + docstring const & label = docstring()); + + ~ToolbarItem(); + + /// item type + Type type_; + /// action + FuncRequest func_; + /// label/tooltip + docstring label_; + /// name + std::string name_; +}; + +/// +class ToolbarInfo { +public: /// toolbar flags enum Flags { - ON = 1, //< always shown - OFF = 2, //< never shown - MATH = 4, //< shown when in math - TABLE = 8, //< shown when in table + ON = 1, //< show + OFF = 2, //< do not show + MATH = 4, //< show when in math + TABLE = 8, //< show when in table TOP = 16, //< show at top BOTTOM = 32, //< show at bottom LEFT = 64, //< show at left - RIGHT = 128 //< show at right + RIGHT = 128, //< show at right + REVIEW = 256, //< show when change tracking is enabled + AUTO = 512 //< only if AUTO is set, when MATH, TABLE and REVIEW is used }; + /// the toolbar items + typedef std::vector Items; - /// a toolbar - struct Toolbar { - /// toolbar UI name - string name; - /// toolbar contents - Items items; - /// flags - Flags flags; - }; + typedef Items::const_iterator item_iterator; - typedef std::vector Toolbars; + explicit ToolbarInfo(std::string const & name = std::string()) + : name(name) {} - typedef Items::const_iterator item_iterator; + /// toolbar name + std::string name; + /// toolbar GUI name + std::string gui_name; + /// toolbar contents + Items items; + /// flags + Flags flags; + + /// read a toolbar from the file + ToolbarInfo & read(Lexer &); + +private: + /// add toolbar item + void add(ToolbarItem const &); +}; + + +/// +class ToolbarBackend { +public: + typedef std::vector Toolbars; ToolbarBackend(); /// iterator for all toolbars - Toolbars::const_iterator begin() const { - return toolbars.begin(); - } + Toolbars::const_iterator begin() const { return usedtoolbars.begin(); } - Toolbars::const_iterator end() const { - return toolbars.end(); - } + Toolbars::const_iterator end() const { return usedtoolbars.end(); } - /// read a toolbar from the file - void read(LyXLex &); + Toolbars::iterator begin() { return usedtoolbars.begin(); } - /// return a full path of an XPM for the given action - static string const getIcon(int action); + Toolbars::iterator end() { return usedtoolbars.end(); } -private: - /// add the given lfun with tooltip if relevant - void add(Toolbar & tb, int, string const & tooltip = string()); + /// read toolbars from the file + void readToolbars(Lexer &); + + /// read ui toolbar settings + void readToolbarSettings(Lexer &); - /// add the given lfun with tooltip if relevant - void add(Toolbar & tb, string const &, string const & tooltip); + /// + ToolbarInfo const * getDefinedToolbarInfo(std::string const & name) const; + /// + ToolbarInfo * getUsedToolbarInfo(std::string const & name); - /// all the toolbars +private: + /// all the defined toolbars Toolbars toolbars; + + /// toolbars listed + Toolbars usedtoolbars; }; /// The global instance extern ToolbarBackend toolbarbackend; + +} // namespace lyx + #endif // TOOLBAR_BACKEND_H