Version: 9.16.0
SUIT_FindActionDialog.h
Go to the documentation of this file.
1// Copyright (C) 2007-2026 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
41class QCheckBox;
42class QLineEdit;
43class QLabel;
44class QPushButton;
45class QKeyEvent;
48
49
51{
52 Q_OBJECT
53
54public:
58 virtual ~SUIT_FindActionDialog() = default;
59
60 void setActiveModuleID(const QString& theModuleID = SUIT_ShortcutMgr::ROOT_MODULE_ID);
61
62private:
63 void executeAction(const QString& theModuleID, const QString& theInModuleActionID);
64
65private:
67};
68
69
71{
72 Q_OBJECT
73
74public:
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
97private slots:
98 void onQueryChanged(const QString& theKeyword);
99 void onSearchOptionUnavailableActionsChanged(int);
100 void onSearchOptionInactiveModulesChanged(int);
101
102private:
107
108 std::set<QString> myIncludedModuleIDs;
110
111public:
113 const std::function<void(const QString&, const QString&)> myCallback;
114};
115
116
120
121
123{
124 Q_OBJECT
125
126public:
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
161protected:
162 bool eventFilter(QObject* theQObject, QEvent* theEvent);
163
164private:
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
168private slots:
169 void onItemExecuted(QTreeWidgetItem* theWidgetItem, int theColIdx);
170
171private:
173 Qt::SortOrder mySortOrder;
174
176 std::map<QString, bool> myModuleItemExpansionStates;
177
178public:
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{
190public:
191 enum Type {
193 Action
194 };
195
196protected:
197 SUIT_FoundActionTreeItem(const QString& theModuleID);
198
199public:
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
210public:
211 const QString myModuleID;
212};
213
214
216{
217public:
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{
230private:
231 SUIT_FoundActionTreeAction(const QString& theModuleID, const QString& theInModuleActionID);
232
233public:
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
252private:
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:153
For more information see QT documentation.
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 & operator=(const SUIT_FindActionDialog &)=delete
SUIT_FindActionDialog(const SUIT_FindActionDialog &)=delete
SUIT_FindActionWidget * myFindActionWidget
Definition: SUIT_FindActionDialog.h:66
virtual ~SUIT_FindActionDialog()=default
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
QCheckBox * myIncludeUnavailableActionsCB
Definition: SUIT_FindActionDialog.h:104
SUIT_FindActionWidget & operator=(const SUIT_FindActionWidget &)=delete
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:250
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
Qt::SortOrder mySortOrder
Definition: SUIT_FindActionDialog.h:173
SortKey
Definition: SUIT_FindActionDialog.h:133
const std::function< std::pair< QString, bool >(const QString &, const QString &)> myKeySequenceGetter
std::pair<QString, bool> getKeySequence(theModuleID, theInModuleActionID).
Definition: SUIT_FindActionDialog.h:184
SUIT_FoundActionTree & operator=(const SUIT_FoundActionTree &)=delete
SUIT_FoundActionTree(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