| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 | 
							- /*=========================================================================
 
-   Library:   CTK
 
-   Copyright (c) Kitware Inc.
 
-   Licensed under the Apache License, Version 2.0 (the "License");
 
-   you may not use this file except in compliance with the License.
 
-   You may obtain a copy of the License at
 
-       http://www.apache.org/licenses/LICENSE-2.0.txt
 
-   Unless required by applicable law or agreed to in writing, software
 
-   distributed under the License is distributed on an "AS IS" BASIS,
 
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
-   See the License for the specific language governing permissions and
 
-   limitations under the License.
 
- =========================================================================*/
 
- #ifndef __ctkActionsWidget_h
 
- #define __ctkActionsWidget_h
 
- // Qt includes
 
- #include <QStyledItemDelegate>
 
- #include <QSortFilterProxyModel>
 
- #include <QWidget>
 
- // CTK includes
 
- #include "ctkPimpl.h"
 
- #include "ctkWidgetsExport.h"
 
- class ctkActionsWidgetPrivate;
 
- class ctkSortFilterActionsProxyModelPrivate;
 
- class QAction;
 
- class QStandardItemModel;
 
- class QStandardItem;
 
- class QTreeView;
 
- /// \ingroup Widgets
 
- /// ctkActionsWidget presents a list of QAction to the user. The QAction's are
 
- /// displayed in a multi column tree view. The columns contain the QAction's
 
- /// text, shortcut, context and tooltip in that order.
 
- /// The typical use is to show what shortcuts are associated to what commands
 
- /// in an application.
 
- /// ctkActionsWidget internally uses a QStandardItemModel where each item data
 
- /// (QStandardItem::data) contain a pointer to the QAction.
 
- /// QActions can optionally be ordered by group
 
- /// TODO: Add "hide empty group" property to hide empty groups
 
- class CTK_WIDGETS_EXPORT ctkActionsWidget : public QWidget
 
- {
 
-   Q_OBJECT
 
-   Q_PROPERTY(bool actionsWithNoShortcutVisible READ areActionsWithNoShortcutVisible WRITE setActionsWithNoShortcutVisible)
 
-   Q_PROPERTY(bool menuActionsVisible READ areMenuActionsVisible WRITE setMenuActionsVisible)
 
-   /// This property controls whether the actions are sorted by column (>=0) or
 
-   /// not (-1). Not sorted by default.
 
-   /// \sa sortColumn(), setSortColumn()
 
-   Q_PROPERTY(int sortColumn READ sortColumn WRITE setSortColumn)
 
- public:
 
-   explicit ctkActionsWidget(QWidget* parent = 0);
 
-   virtual ~ctkActionsWidget();
 
-   /// Add an action into a specified group (or at top level if group is empty)
 
-   /// An action can be added multiple times (in a different group). Once added,
 
-   /// ctkActionsWidget listens to the QAction and updates the action properties
 
-   /// TODO: check that the action hasn't been already added into a group
 
-   void addAction(QAction* action, const QString& group = QString());
 
-   /// Convenient function to add a list of action at once
 
-   void addActions(QList<QAction*> actions, const QString& group = QString());
 
-   /// Remove all the actions and groups
 
-   void clear();
 
-   /// Return a pointer on a group item (you probably have no use for it)
 
-   QStandardItem* groupItem(const QString& category);
 
-   /// If true, shows QActions that have an empty shortcut, otherwise hide them.
 
-   /// True by default
 
-   void setActionsWithNoShortcutVisible(bool show);
 
-   bool areActionsWithNoShortcutVisible()const;
 
-   /// If true, shows QMenus, otherwise hide them.
 
-   /// True by default
 
-   void setMenuActionsVisible(bool show);
 
-   bool areMenuActionsVisible()const;
 
-   /// Set the sortColumn property value.
 
-   /// \sa sortColumn
 
-   void setSortColumn(int column);
 
-   /// Return the sortColumn property value.
 
-   /// \sa sortColumn
 
-   int sortColumn()const;
 
-   /// Return the unsorted/unfiltered model of all the actions
 
-   QStandardItemModel* model()const;
 
-   /// return the view used to display the action model
 
-   QTreeView* view()const;
 
- protected Q_SLOTS:
 
-   void updateAction();
 
- protected:
 
-   enum ActionColumn{
 
-     NameColumn = 0,
 
-     ShortcutColumn,
 
-     ContextColumn,
 
-     DetailsColumn
 
-   };
 
- protected:
 
-   QScopedPointer<ctkActionsWidgetPrivate> d_ptr;
 
- private:
 
-   Q_DECLARE_PRIVATE(ctkActionsWidget);
 
-   Q_DISABLE_COPY(ctkActionsWidget);
 
-   friend class ctkSortFilterActionsProxyModel;
 
- };
 
- /// \ingroup Widgets
 
- /// ctkSortFilterActionsProxyModel is a utility class that is needed by
 
- /// ctkActionsWidget. It's a specialization of a QSortFilterProxyModel and
 
- /// control what action is visible to the tree view.
 
- class ctkSortFilterActionsProxyModel : public QSortFilterProxyModel
 
- {
 
-   Q_OBJECT
 
- public:
 
-   explicit ctkSortFilterActionsProxyModel(QObject* parent=0);
 
-   virtual ~ctkSortFilterActionsProxyModel();
 
-   void setActionsWithNoShortcutVisible(bool);
 
-   bool areActionsWithNoShortcutVisible()const;
 
-   void setMenuActionsVisible(bool);
 
-   bool areMenuActionsVisible()const;
 
- protected:
 
-   bool filterAcceptsRow(int source_row, const QModelIndex & source_parent) const;
 
-   QScopedPointer<ctkSortFilterActionsProxyModelPrivate> d_ptr;
 
- private:
 
-   Q_DECLARE_PRIVATE(ctkSortFilterActionsProxyModel);
 
-   Q_DISABLE_COPY(ctkSortFilterActionsProxyModel);
 
- };
 
- /// \ingroup Widgets
 
- /// ctkRichTextItemDelegate is a utility class that is needed by
 
- /// ctkActionsWidget. It control how QAction tree items are displayed when the
 
- /// text is written in HTML.
 
- class ctkRichTextItemDelegate : public QStyledItemDelegate
 
- {
 
-   Q_OBJECT
 
- protected:
 
-   virtual void paint(QPainter * painter, const QStyleOptionViewItem & option,
 
-              const QModelIndex & index) const;
 
-   virtual QSize sizeHint(const QStyleOptionViewItem & option,
 
-                          const QModelIndex & index)const;
 
- };
 
- #endif
 
 
  |