X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FToolbarBackend.h;h=95dc8900b726e9021a1ff9aabf19d1907c8ccb57;hb=2417d9d911dbca181c48f45d1aad26d31c9aa815;hp=7d9fc9f6b914729081bd8c95f033a996287efb0a;hpb=eaa33dca6def75e9bf48582073c75b256821fd25;p=lyx.git diff --git a/src/ToolbarBackend.h b/src/ToolbarBackend.h index 7d9fc9f6b9..95dc8900b7 100644 --- a/src/ToolbarBackend.h +++ b/src/ToolbarBackend.h @@ -13,7 +13,7 @@ #ifndef TOOLBAR_BACKEND_H #define TOOLBAR_BACKEND_H -#include "funcrequest.h" +#include "FuncRequest.h" #include @@ -21,57 +21,94 @@ namespace lyx { -class LyXLex; +class Lexer; - -/// -class ToolbarBackend { +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 - REVIEW = 256, //< shown when change tracking is enabled - AUTO = 512 //< only if AUTO is set, will MATH, TABLE and REIVEW is used + 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 name - std::string name; - /// toolbar GUI name - std::string gui_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) {} + + /// 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 &); +}; - typedef Items::const_iterator item_iterator; + +/// +class ToolbarBackend { +public: + typedef std::vector Toolbars; ToolbarBackend(); @@ -84,21 +121,19 @@ public: Toolbars::iterator end() { return usedtoolbars.end(); } - /// read a toolbar from the file - void read(LyXLex &); + /// read toolbars from the file + void readToolbars(Lexer &); - /// read the used toolbars - void readToolbars(LyXLex &); + /// read ui toolbar settings + void readToolbarSettings(Lexer &); - /// return a full path of an XPM for the given action - static std::string const getIcon(FuncRequest const &); + /// + ToolbarInfo const * getDefinedToolbarInfo(std::string const & name) const; + /// + ToolbarInfo * getUsedToolbarInfo(std::string const & name); private: - /// add the given lfun with tooltip if relevant - void add(Toolbar & tb, FuncRequest const &, - docstring const & tooltip = docstring()); - - /// all the toolbars + /// all the defined toolbars Toolbars toolbars; /// toolbars listed