]> git.lyx.org Git - lyx.git/blobdiff - src/ToolbarBackend.h
* BufferView::updateMetrics(): split up the method in two for the SinglePar case.
[lyx.git] / src / ToolbarBackend.h
index ba2bfa4c9a7c48107abeb328a85f2c49e84e289a..95dc8900b726e9021a1ff9aabf19d1907c8ccb57 100644 (file)
  * 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 <vector>
-#include <algorithm>
 
-#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,
                /// adds space between buttons in the toolbar
-               SEPARATOR = -3,
+               SEPARATOR,
                /// a special combox insead of a button
-               LAYOUTS = -2,
-               /// begin a new line of button (not working)
-               NEWLINE = -1
+               LAYOUTS,
+               /// a special widget to insert tabulars
+               TABLEINSERT,
+               ///
+               POPUPMENU,
+               ///
+               ICONPALETTE
        };
 
-       /// action, tooltip
-       typedef std::pair<int, string> Item;
+       ToolbarItem(Type type,
+                FuncRequest const & func,
+                docstring const & label = docstring());
 
-       /// the toolbar items
-       typedef std::vector<std::pair<int, string> > Items;
-
-       /// a toolbar
-       struct Toolbar {
-               /// toolbar UI name
-               string name;
-               /// toolbar contents
-               Items items;
-       };
+       ToolbarItem(Type type,
+                std::string const & name = std::string(),
+                docstring const & label = docstring());
 
-       typedef std::vector<Toolbar> Toolbars;
+       ~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, //< 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, //< 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<ToolbarItem> Items;
 
        typedef Items::const_iterator item_iterator;
 
+       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 &);
+};
+
+
+///
+class ToolbarBackend {
+public:
+       typedef std::vector<ToolbarInfo> 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