]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiToolbar.h
fix completion painting for RTL (inline completion and completion list)
[lyx.git] / src / frontends / qt4 / GuiToolbar.h
index b4a4b6efbe6e839dadc6914c20d4617c8b8a2e82..ec0b4cec2872a030bf19567d3fabd432f581a316 100644 (file)
 
 #include "Session.h"
 
+#include <QAbstractProxyModel>
+#include <QComboBox>
 #include <QList>
 #include <QToolBar>
-#include <QComboBox>
 
+class QSortFilterProxyModel;
 class QStandardItemModel;
 
 namespace lyx {
 
-class Inset;
 class DocumentClass;
-class ToolbarItem;
+class Inset;
 
 namespace frontend {
 
+class Action;
 class GuiCommandBuffer;
-class GuiFilterProxyModel;
+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(bool reset);
        /// Add Item to Layout box according to sorting settings from preferences
-       void addItemSort(docstring const & item, bool sorted);
+       void addItemSort(docstring const & item, docstring const & category,
+               bool sorted, bool sortedByCat);
 
        ///
-       bool eventFilter(QObject *o, QEvent *e);
+       void showPopup();
+       
+       ///
+       bool eventFilter(QObject * o, QEvent * e);
        ///
        QString const & filter() { return filter_; }
 
 private Q_SLOTS:
        ///
        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_;
@@ -76,11 +94,17 @@ private:
        /// the layout model: 1st column translated, 2nd column raw layout name
        QStandardItemModel * model_;
        /// the proxy model filtering \c model_
-       GuiFilterProxyModel * filterModel_;
+       GuiLayoutFilterModel * filterModel_;
        /// the (model-) index of the last successful selection
        int lastSel_;
        /// the character filter
        QString filter_;
+       ///
+       LayoutItemDelegate * layoutItemDelegate_;
+       ///
+       unsigned visibleCategories_;
+       ///
+       bool inShowPopup_;
 };
 
 
@@ -88,31 +112,68 @@ class GuiToolbar : public QToolBar
 {
        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();
+       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:
+       // 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