4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
7 * \author Lars Gullik Bjønnes
8 * \author Angus Leeming
10 * Full author contact details are available in file CREDITS.
12 * The Toolbars class is a container of toolbars.
13 * It provides accessors to each Toolbar and to the LayoutBox.
15 * Each GUI frontend should provide toolbar and layout boxes by derivation
16 * from the LayoutBox and Toolbar pure abstract classes.
18 * The Toolbars class has no knowledge at all of the details of each
19 * frontend's implementation, which requires that each frontend should
20 * provide a 'make_toolbar' function, signature below.
26 #include "ToolbarBackend.h"
27 #include <boost/shared_ptr.hpp>
35 virtual ~LayoutBox() {}
36 /// Select the correct layout in the combox.
37 virtual void set(std::string const & layout) = 0;
38 /// Populate the layout combox.
39 virtual void update() = 0;
40 /// Erase the layout list.
41 virtual void clear() = 0;
42 /// Display the layout list.
43 virtual void open() = 0;
44 /// Set the activation status of the combox.
45 virtual void setEnabled(bool) = 0;
52 /// Add a button to the bar.
53 virtual void add(FuncRequest const & func,
54 std::string const & tooltip) = 0;
57 * \param update_metrics is a hint to the layout engine that the
58 * metrics should be updated.
60 virtual void hide(bool update_metrics) = 0;
62 * \param update_metrics is a hint to the layout engine that the
63 * metrics should be updated.
65 virtual void show(bool update_metrics) = 0;
67 /// Refresh the contents of the bar.
68 virtual void update() = 0;
69 /// Accessor to the layout combox, if any.
70 virtual LayoutBox * layout() const = 0;
77 Toolbars(LyXView & owner);
79 /// Initialize the toolbars using the backend database.
82 /// Show/hide the named toolbar.
83 void display(std::string const & name, bool show);
84 /// Update the state of the toolbars.
85 void update(bool in_math, bool in_table);
87 /// Select the right layout in the combox.
88 void setLayout(std::string const & layout);
90 /** Populate the layout combox - returns whether we did a full
93 bool updateLayoutList(int textclass);
95 /// Drop down the layout list.
96 void openLayoutList();
97 /// Erase the layout list.
98 void clearLayoutList();
101 typedef boost::shared_ptr<Toolbar> ToolbarPtr;
104 /// Add a new toolbar.
105 void add(ToolbarBackend::Toolbar const & tb);
106 /// Show or hide a toolbar.
107 void displayToolbar(ToolbarBackend::Toolbar const & tb, bool show);
108 /// Update the state of the icons
111 /// The parent window.
114 /** The layout box is actually owned by whichever toolbar
115 * contains it. All the Toolbars class needs is a means of
118 * We don't need to use boost::weak_ptr here because the toolbars
119 * are also stored here. There are, therefore, no lifetime issues.
123 /// Toolbar store providing access to individual toolbars by name.
124 typedef std::map<std::string, ToolbarPtr> ToolbarsMap;
125 ToolbarsMap toolbars_;
127 /// The last textclass layout list in the layout choice selector
132 /** Each GUI frontend should provide its own version of this.
134 Toolbars::ToolbarPtr make_toolbar(ToolbarBackend::Toolbar const &, LyXView &);
136 #endif // NOT TOOLBARS_H