Version: 9.15.0
SUIT_FindActionDialog.h
Go to the documentation of this file.
1 // Copyright (C) 2007-2025 CEA, EDF, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 
23 #ifndef SUIT_FINDACTIONDIALOG_H
24 #define SUIT_FINDACTIONDIALOG_H
25 
26 #include "SUIT.h"
27 #include "SUIT_ShortcutMgr.h"
28 #include <QDialog>
29 #include <QFrame>
30 #include <QTreeWidget>
31 #include <QList>
32 #include <QString>
33 #include <QVariant>
34 #include <memory>
35 #include <map>
36 #include <set>
37 #include <functional>
38 #include <utility>
39 
40 
41 class QCheckBox;
42 class QLineEdit;
43 class QLabel;
44 class QPushButton;
45 class QKeyEvent;
48 
49 
51 {
52  Q_OBJECT
53 
54 public:
55  SUIT_FindActionDialog(QWidget* theParent);
58  virtual ~SUIT_FindActionDialog() = default;
59 
60  void setActiveModuleID(const QString& theModuleID = SUIT_ShortcutMgr::ROOT_MODULE_ID);
61 
62 private:
63  void executeAction(const QString& theModuleID, const QString& theInModuleActionID);
64 
65 private:
67 };
68 
69 
71 {
72  Q_OBJECT
73 
74 public:
76  QWidget* theParent,
77  const std::function<void(const QString&, const QString&)> theCallback,
78  const QString& theActionItemToolTip,
79  bool theEnableItemsOfUnavailableActions = false,
80  bool theShowKeySequenceColumn = false,
81  const std::function<std::pair<QString, bool>(const QString&, const QString&)>& theKeySequenceGetter = std::function<std::pair<QString, bool>(const QString&, const QString&)>()
82  );
85  virtual ~SUIT_FindActionWidget() = default;
86 
87  void showOptions(bool theToShow);
88 
90  void setIncludedModuleIDs(const std::set<QString>& theModuleIDs = {}, bool doNotUpdateResults = false);
91  const std::set<QString>& getIncludedModuleIDs() const;
92 
93  void updateUI();
94 
95  void setColumnWidth(int theColumnIdx, int theColumnWidth);
96 
97 private slots:
98  void onQueryChanged(const QString& theKeyword);
99  void onSearchOptionUnavailableActionsChanged(int);
100  void onSearchOptionInactiveModulesChanged(int);
101 
102 private:
107 
108  std::set<QString> myIncludedModuleIDs;
110 
111 public:
113  const std::function<void(const QString&, const QString&)> myCallback;
114 };
115 
116 
120 
121 
123 {
124  Q_OBJECT
125 
126 public:
127  enum ColumnIdx {
130  KeySequence
131  };
132 
133  enum class SortKey {
134  MatchMetrics,
135  ID,
136  Name,
137  ToolTip,
138  KeySequence
139  };
140 
142  static std::pair<QString, bool> getKeySequenceFromShortcutMgr(const QString& theModuleID, const QString& theInModuleActionID);
143 
145  SUIT_FindActionWidget* theParent,
146  const QString& theActionItemToolTip,
147  bool theEnableItemsOfUnavailableActions = false,
148  bool theShowKeySequenceColumn = false,
149  const std::function<std::pair<QString, bool>(const QString&, const QString&)>& theKeySequenceGetter = std::function<std::pair<QString, bool>(const QString&, const QString&)>()
150  );
153  virtual ~SUIT_FoundActionTree() = default;
154 
155  void updateItems(const std::map<QString, std::map<QString, SUIT_ActionSearcher::AssetsAndSearchData>>& theActionAssetsAndSD);
156 
157  void sort(SUIT_FoundActionTree::SortKey theKey, Qt::SortOrder theOrder);
158 
159  void keyPressEvent(QKeyEvent* theEvent);
160 
161 protected:
162  bool eventFilter(QObject* theQObject, QEvent* theEvent);
163 
164 private:
165  std::pair<SUIT_FoundActionTreeModule*, int> findModuleItem(const QString& theModuleID) const;
166  std::set<SUIT_FoundActionTreeAction*, std::function<bool(SUIT_FoundActionTreeAction*, SUIT_FoundActionTreeAction*)>> createActionSetWithComparator() const;
167 
168 private slots:
169  void onItemExecuted(QTreeWidgetItem* theWidgetItem, int theColIdx);
170 
171 private:
173  Qt::SortOrder mySortOrder;
174 
176  std::map<QString, bool> myModuleItemExpansionStates;
177 
178 public:
179  const QString myActionItemToolTip;
180  const bool myEnableItemsOfUnavailableActions; // If false, items of unavailable actions/modules are dimmed.
182 
184  const std::function<std::pair<QString, bool>(const QString&, const QString&)> myKeySequenceGetter;
185 };
186 
187 
189 {
190 public:
191  enum Type {
193  Action
194  };
195 
196 protected:
197  SUIT_FoundActionTreeItem(const QString& theModuleID);
198 
199 public:
200  virtual ~SUIT_FoundActionTreeItem() = default;
202 
203  QString name() const;
204  QString toolTip() const;
205 
206  virtual QVariant getValue(SUIT_FoundActionTree::SortKey theKey) const = 0;
207 
208  virtual void styleAsDimmed();
209 
210 public:
211  const QString myModuleID;
212 };
213 
214 
216 {
217 public:
218  SUIT_FoundActionTreeModule(const QString& theModuleID);
219  virtual ~SUIT_FoundActionTreeModule() = default;
220  virtual SUIT_FoundActionTreeItem::Type type() const { return SUIT_FoundActionTreeItem::Type::Module; };
221 
222  void setAssets(const SUIT_ShortcutModuleAssets& theAssets, const QString& theLang);
223 
224  virtual QVariant getValue(SUIT_FoundActionTree::SortKey theKey) const;
225 };
226 
227 
229 {
230 private:
231  SUIT_FoundActionTreeAction(const QString& theModuleID, const QString& theInModuleActionID);
232 
233 public:
234  static SUIT_FoundActionTreeAction* create(const QString& theModuleID, const QString& theInModuleActionID);
235  virtual ~SUIT_FoundActionTreeAction() = default;
237 
238  void setAssetsAndSearchData(const SUIT_ActionSearcher::AssetsAndSearchData& theAssetsAndSD, const QString& theLang);
239  void setToolTip(const QString& theToolTip);
240  void setKeySequence(const QString& theKeySequence);
241  QString keySequence() const;
242  void styleAsKeySequenceModified(bool theIsModified);
243 
244  virtual QVariant getValue(SUIT_FoundActionTree::SortKey theKey) const;
245  double matchMetrics() const { return myMatchMetrics; };
246 
247  virtual bool isEnabled() const;
249 
250  const QString myInModuleActionID;
251 
252 private:
255 };
256 
257 #endif // SUIT_FINDACTIONDIALOG_H
#define SUIT_EXPORT
Definition: SUIT.h:36
Action
Action of splitting corresponding to QtxWorkstack::SplitType enumeration.
Definition: SalomePyQt.h:143
For more information see QT documentation.
Definition: SUIT_Application.h:42
Definition: SUIT_ShortcutMgr.h:970
Searches in data, provided in action asset files and shortcut preferences.
Definition: SUIT_ShortcutMgr.h:960
Definition: SUIT_FindActionDialog.h:51
SUIT_FindActionDialog(const SUIT_FindActionDialog &)=delete
SUIT_FindActionWidget * myFindActionWidget
Definition: SUIT_FindActionDialog.h:66
virtual ~SUIT_FindActionDialog()=default
SUIT_FindActionDialog & operator=(const SUIT_FindActionDialog &)=delete
Definition: SUIT_FindActionDialog.h:71
std::set< QString > myIncludedModuleIDs
Definition: SUIT_FindActionDialog.h:108
SUIT_FindActionWidget(const SUIT_FindActionWidget &)=delete
SUIT_FoundActionTree * myFoundActionsTree
Definition: SUIT_FindActionDialog.h:106
SUIT_ActionSearcher myActionSearcher
Definition: SUIT_FindActionDialog.h:109
QLineEdit * myQueryLineEdit
Definition: SUIT_FindActionDialog.h:103
const std::function< void(const QString &, const QString &)> myCallback
void callback(theModuleID, theInModuleActionID)
Definition: SUIT_FindActionDialog.h:113
QCheckBox * myIncludeInactiveModulesCB
Definition: SUIT_FindActionDialog.h:105
SUIT_FindActionWidget & operator=(const SUIT_FindActionWidget &)=delete
QCheckBox * myIncludeUnavailableActionsCB
Definition: SUIT_FindActionDialog.h:104
virtual ~SUIT_FindActionWidget()=default
Definition: SUIT_FindActionDialog.h:229
void styleAsKeySequenceModified(bool theIsModified)
Definition: SUIT_FindActionDialog.cxx:598
bool isEnabledBufferedValue() const
Definition: SUIT_FindActionDialog.h:248
virtual SUIT_FoundActionTreeItem::Type type() const
Definition: SUIT_FindActionDialog.h:236
void setToolTip(const QString &theToolTip)
Definition: SUIT_FindActionDialog.cxx:571
double matchMetrics() const
Definition: SUIT_FindActionDialog.h:245
virtual bool isEnabled() const
Definition: SUIT_FindActionDialog.cxx:626
void setKeySequence(const QString &theKeySequence)
Definition: SUIT_FindActionDialog.cxx:588
virtual ~SUIT_FoundActionTreeAction()=default
const QString myInModuleActionID
Definition: SUIT_FindActionDialog.h:248
virtual QVariant getValue(SUIT_FoundActionTree::SortKey theKey) const
Definition: SUIT_FindActionDialog.cxx:608
void setAssetsAndSearchData(const SUIT_ActionSearcher::AssetsAndSearchData &theAssetsAndSD, const QString &theLang)
Definition: SUIT_FindActionDialog.cxx:560
SUIT_FoundActionTreeAction(const QString &theModuleID, const QString &theInModuleActionID)
Definition: SUIT_FindActionDialog.cxx:543
bool myIsEnabledBufferedValue
Definition: SUIT_FindActionDialog.h:254
double myMatchMetrics
Definition: SUIT_FindActionDialog.h:253
static SUIT_FoundActionTreeAction * create(const QString &theModuleID, const QString &theInModuleActionID)
Definition: SUIT_FindActionDialog.cxx:550
QString keySequence() const
Definition: SUIT_FindActionDialog.cxx:593
Definition: SUIT_FindActionDialog.h:189
SUIT_FoundActionTreeItem(const QString &theModuleID)
Definition: SUIT_FindActionDialog.cxx:490
Type
Definition: SUIT_FindActionDialog.h:191
@ Module
Definition: SUIT_FindActionDialog.h:192
virtual QVariant getValue(SUIT_FoundActionTree::SortKey theKey) const =0
virtual ~SUIT_FoundActionTreeItem()=default
virtual void styleAsDimmed()
Definition: SUIT_FindActionDialog.cxx:504
virtual SUIT_FoundActionTreeItem::Type type() const =0
QString name() const
Definition: SUIT_FindActionDialog.cxx:494
const QString myModuleID
Definition: SUIT_FindActionDialog.h:211
QString toolTip() const
Definition: SUIT_FindActionDialog.cxx:499
Definition: SUIT_FindActionDialog.h:216
void setAssets(const SUIT_ShortcutModuleAssets &theAssets, const QString &theLang)
Definition: SUIT_FindActionDialog.cxx:520
virtual QVariant getValue(SUIT_FoundActionTree::SortKey theKey) const
Definition: SUIT_FindActionDialog.cxx:526
SUIT_FoundActionTreeModule(const QString &theModuleID)
Definition: SUIT_FindActionDialog.cxx:511
virtual ~SUIT_FoundActionTreeModule()=default
virtual SUIT_FoundActionTreeItem::Type type() const
Definition: SUIT_FindActionDialog.h:220
Definition: SUIT_FindActionDialog.h:123
const bool myEnableItemsOfUnavailableActions
Definition: SUIT_FindActionDialog.h:180
ColumnIdx
Definition: SUIT_FindActionDialog.h:127
@ ToolTip
Definition: SUIT_FindActionDialog.h:129
@ Name
Definition: SUIT_FindActionDialog.h:128
SUIT_FoundActionTree::SortKey mySortKey
Definition: SUIT_FindActionDialog.h:172
const std::function< std::pair< QString, bool >const QString &, const QString &)> myKeySequenceGetter
std::pair<QString, bool> getKeySequence(theModuleID, theInModuleActionID).
Definition: SUIT_FindActionDialog.h:184
Qt::SortOrder mySortOrder
Definition: SUIT_FindActionDialog.h:173
SortKey
Definition: SUIT_FindActionDialog.h:133
SUIT_FoundActionTree(const SUIT_FoundActionTree &)=delete
SUIT_FoundActionTree & operator=(const SUIT_FoundActionTree &)=delete
const bool myShowKeySequenceColumn
Definition: SUIT_FindActionDialog.h:181
static const QList< std::pair< SUIT_FoundActionTree::SortKey, Qt::SortOrder > > DEFAULT_SORT_SCHEMA
Definition: SUIT_FindActionDialog.h:141
const QString myActionItemToolTip
Definition: SUIT_FindActionDialog.h:179
virtual ~SUIT_FoundActionTree()=default
std::map< QString, bool > myModuleItemExpansionStates
{moduleID, isExpanded}[]
Definition: SUIT_FindActionDialog.h:176
static const QString ROOT_MODULE_ID
Definition: SUIT_ShortcutMgr.h:494
GUI-related module assets.
Definition: SUIT_ShortcutMgr.h:294