1 // Copyright (C) 2014-2022 CEA/DEN, EDF R&D
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 #ifndef ParametersPlugin_WidgetParamsMgr_H_
21 #define ParametersPlugin_WidgetParamsMgr_H_
23 #include <ModuleBase_ModelDialogWidget.h>
24 #include <QModelIndex>
25 #include <QAbstractItemDelegate>
26 #include <QTreeWidget>
28 class QTreeWidgetItem;
29 class ParametersPlugin_ItemDelegate;
32 class ModuleBase_IWorkshop;
36 * Redefinition of QTreeWidget for processing of closeEditor event
38 class ParametersPlugin_TreeWidget: public QTreeWidget
43 /// \param theParent a parent widget
44 ParametersPlugin_TreeWidget(QWidget* theParent = 0) : QTreeWidget(theParent) {}
47 /// Redefinition of virtual method
48 /// \param theEditor a editor widget
49 /// \param theHint end of editing hint
50 virtual void closeEditor(QWidget* theEditor, QAbstractItemDelegate::EndEditHint theHint);
57 * Represent a content of the property panel to show/modify parameters of some feature.
59 class ParametersPlugin_WidgetParamsMgr : public ModuleBase_ModelDialogWidget
63 /// Constructs a model widget
64 ParametersPlugin_WidgetParamsMgr(QWidget* theParent, const Config_WidgetAPI* theData,
65 ModuleBase_IWorkshop* theWorkshop);
67 /// Destructs the model widget
68 virtual ~ParametersPlugin_WidgetParamsMgr() {}
70 /// Returns list of widget controls
71 /// \return a control list
72 virtual QList<QWidget*> getControls() const;
74 /// Set general buttons from dialog
75 /// \param theButtons the dialog buttons
76 virtual void setDialogButtons(QDialogButtonBox* theButtons);
79 /// Saves the internal parameters to the given feature
80 /// \return True in success
81 virtual bool storeValueCustom();
83 /// Restore value from attribute data to the widget's control
84 virtual bool restoreValueCustom();
86 /// The method called when widget is activated
87 virtual void activateCustom();
89 virtual void showEvent(QShowEvent* theEvent);
91 virtual void hideEvent(QHideEvent* theEvent);
94 /// Slot for reaction on double click in the table (start editing)
95 /// \param theIndex the clicked index
96 void onDoubleClick(const QModelIndex& theIndex);
98 /// Slot for reaction on end of cell editing
99 /// \param theEditor the editor widget
100 /// \param theHint end of edit type
101 void onCloseEditor(QWidget* theEditor, QAbstractItemDelegate::EndEditHint theHint);
103 /// Slot for reaction on add parameter
106 /// Slot for reaction on insert parameter
109 /// Slot for reaction on remove parameter
112 /// Slot for reaction on import parameter
115 /// Slot for reaction on shift up
118 /// Slot for reaction on shift down
121 /// Slot to show message on closing of editor
124 /// Slot for reaction on selection in the table
125 void onSelectionChanged();
127 // A slot for show preview button
128 void onShowPreview();
131 /// Creates a new parameter feature
132 FeaturePtr createParameter() const;
134 /// Creates a new item
135 QTreeWidgetItem* createNewItem(QTreeWidgetItem* theParent) const;
137 /// Returns currently selected item
138 QTreeWidgetItem* selectedItem() const;
140 /// Select the given Item and scroll the table to make it visible
141 void selectItemScroll(QTreeWidgetItem* theItem);
143 /// Update values in features part
144 void updateItem(QTreeWidgetItem* theItem, const QList<QStringList>& theFeaturesList);
146 void updateFeaturesPart();
148 void updateParametersPart();
150 /// Returns true if values in the widget are valid
153 /// Returns true if parameter with the given name already exists
154 bool hasName(const QString& theName, int theIndex) const;
156 /// Enable or disable buttons for parameters managemnt
157 void enableButtons(bool theEnable);
159 QList<QStringList> featuresItems(const QList<FeaturePtr>& theFeatures,
160 QList<FeaturePtr>& theFeatureList) const;
161 QList<QStringList> parametersItems(const QList<FeaturePtr>& theFeatures) const;
163 void updateParametersFeatures();
165 ModuleBase_IWorkshop* myWorkshop;
167 ParametersPlugin_TreeWidget* myTable;
168 QTreeWidgetItem* myFeatures;
169 QTreeWidgetItem* myParameters;
170 ParametersPlugin_ItemDelegate* myDelegate;
172 QList<FeaturePtr> myParametersList;
176 QPushButton* myAddBtn;
177 QPushButton* myInsertBtn;
178 QPushButton* myRemoveBtn;
179 QPushButton* myImportBtn;
180 QToolButton* myUpBtn;
181 QToolButton* myDownBtn;