#include "Session.h"
+#include <QAbstractProxyModel>
+#include <QComboBox>
#include <QList>
#include <QToolBar>
-#include <QComboBox>
+
+class QSortFilterProxyModel;
+class QStandardItemModel;
namespace lyx {
-class ToolbarItem;
+class DocumentClass;
+class Inset;
namespace frontend {
+class Action;
class GuiCommandBuffer;
+class GuiLayoutFilterModel;
+class GuiToolbar;
class GuiView;
-class Action;
-
+class LayoutItemDelegate;
+class ToolbarInfo;
+class ToolbarItem;
class GuiLayoutBox : public QComboBox
{
Q_OBJECT
public:
- GuiLayoutBox(GuiView &);
+ GuiLayoutBox(GuiToolbar * bar, GuiView &);
/// select the right layout in the combobox.
void set(docstring const & layout);
/// Populate the layout combobox.
- void updateContents();
+ void updateContents(bool reset);
+ /// Add Item to Layout box according to sorting settings from preferences
+ void addItemSort(docstring const & item, docstring const & category,
+ bool sorted, bool sortedByCat);
+
+ ///
+ void showPopup();
+
+ ///
+ bool eventFilter(QObject * o, QEvent * e);
+ ///
+ QString const & filter() { return filter_; }
private Q_SLOTS:
- void selected(const QString & str);
+ ///
+ void selected(int index);
+ ///
+ void setIconSize(QSize size);
private:
+ friend class LayoutItemDelegate;
+
+ ///
+ void resetFilter();
+ ///
+ void setFilter(QString const & s);
+ ///
+ QString charFilterRegExp(QString const & filter);
+ ///
+ void countCategories();
+
+ ///
GuiView & owner_;
+ ///
+ GuiToolbar * bar_;
+ ///
+ DocumentClass const * text_class_;
+ ///
+ Inset const * inset_;
+
+ /// the layout model: 1st column translated, 2nd column raw layout name
+ QStandardItemModel * model_;
+ /// the proxy model filtering \c model_
+ GuiLayoutFilterModel * filterModel_;
+ /// the (model-) index of the last successful selection
+ int lastSel_;
+ /// the character filter
+ QString filter_;
+ ///
+ LayoutItemDelegate * layoutItemDelegate_;
+ ///
+ unsigned visibleCategories_;
+ ///
+ bool inShowPopup_;
};
{
Q_OBJECT
public:
+ ///
GuiToolbar(ToolbarInfo const &, GuiView &);
+ ///
+ void setVisibility(int visibility);
+
/// Add a button to the bar.
void add(ToolbarItem const & item);
- /** update toolbar information
- * ToolbarInfo will then be saved by session
- */
- void saveInfo(ToolbarSection::ToolbarInfo & info);
+
+ /// Session key.
+ /**
+ * This key must be used for any session setting.
+ **/
+ QString sessionKey() const;
+ /// Save session settings.
+ void saveSession() const;
+ /// Restore session settings.
+ void restoreSession();
+
/// Refresh the contents of the bar.
- void updateContents();
- GuiLayoutBox * layout() const { return layout_; }
+ void update(bool in_math, bool in_table, bool review,
+ bool in_mathmacrotemplate);
+
+ ///
+ void toggle();
+
///
GuiCommandBuffer * commandBuffer() { return command_buffer_; }
+ ///
+ Action * addItem(ToolbarItem const & item);
+
Q_SIGNALS:
+ ///
void updated();
private:
- Action * addItem(ToolbarItem const & item);
+ // load flags with saved values
+ void initFlags();
+ ///
+ void fill();
+ ///
+ void showEvent(QShowEvent *);
+ ///
+ QString name_;
+ ///
QList<Action *> actions_;
+ /// initial visibility flags
+ int visibility_;
+ ///
+ bool allowauto_;
+ ///
GuiView & owner_;
-
+ ///
GuiLayoutBox * layout_;
+ ///
GuiCommandBuffer * command_buffer_;
+ ///
+ ToolbarInfo const & tbinfo_;
+ ///
+ bool filled_;
};
} // namespace frontend