Salome HOME
Union of validator and filter functionalities.
[modules/shaper.git] / src / ModuleBase / ModuleBase_WidgetMultiSelector.h
index b65b4812b1d01ec8e4edca75b8e223cd1b79ee58..49ae66b6b85f47e9a333df3dc701ae8c954a0785 100644 (file)
@@ -11,7 +11,7 @@
 #define MODULEBASE_WIDGETMULTISELECTOR_H_
 
 #include <ModuleBase.h>
-#include <ModuleBase_ModelWidget.h>
+#include <ModuleBase_WidgetValidated.h>
 
 #include <GeomAPI_Shape.h>
 #include <ModelAPI_Result.h>
@@ -33,6 +33,7 @@ class QAction;
 
 
 /**
+* \ingroup GUI
 * Implementation of widget for shapes selection. This widget provides selection of several shapes.
 * It can be defined in XML file as following:
 * \code
@@ -45,7 +46,7 @@ class QAction;
 * - tooltip - a tooltip for the widget
 * - type_choice - list of expected shape types.
 */
-class MODULEBASE_EXPORT ModuleBase_WidgetMultiSelector : public ModuleBase_ModelWidget
+class MODULEBASE_EXPORT ModuleBase_WidgetMultiSelector : public ModuleBase_WidgetValidated
 {
   Q_OBJECT
  public:
@@ -60,25 +61,22 @@ class MODULEBASE_EXPORT ModuleBase_WidgetMultiSelector : public ModuleBase_Model
                                  const std::string& theParentId);
   virtual ~ModuleBase_WidgetMultiSelector();
 
-  /// Saves the internal parameters to the given feature
-  virtual bool storeValue() const;
-
   virtual bool restoreValue();
 
-  /// Returns the internal parent wiget control, that can be shown anywhere
-  /// \returns the widget
-  QWidget* getControl() const;
-
   /// Returns list of widget controls
   /// \return a control list
   virtual QList<QWidget*> getControls() const;
 
   virtual bool eventFilter(QObject* , QEvent* );
 
- public slots:
-  /// Activate or deactivate selection
-  void activateSelection(bool toActivate);
+  /// The methiod called when widget is deactivated
+  virtual void deactivate();
 
+  /// Fills the attribute with the value of the selected owner
+  /// \param theOwner a selected owner
+  virtual bool setSelection(const Handle_SelectMgr_EntityOwner& theOwner);
+
+ public slots:
   /// Slot is called on selection type changed
   void onSelectionTypeChanged();
 
@@ -93,11 +91,23 @@ protected slots:
   void onListSelection();
 
  protected:
-   /// Provide filtering of selected shapes
-   /// \param theShapesToFilter source list of shapes
-   /// \param theResult result list of shapes
-  void filterShapes(const NCollection_List<TopoDS_Shape>& theShapesToFilter,
-                    NCollection_List<TopoDS_Shape>& theResult);
+  /// The methiod called when widget is activated
+  virtual void activateCustom();
+
+  /// Saves the internal parameters to the given feature
+  /// \return True in success
+  virtual bool storeValueCustom() const;
+
+  /// Creates a backup of the current values of the attribute
+  /// It should be realized in the specific widget because of different
+  /// parameters of the current attribute
+  virtual void storeAttributeValue();
+
+  /// Creates a backup of the current values of the attribute
+  /// It should be realized in the specific widget because of different
+  /// parameters of the current attribute
+  /// \param theValid a boolean flag, if restore happens for valid parameters
+  virtual void restoreAttributeValue(const bool theValid);
 
   /// Set current shape type for selection
   void setCurrentShapeType(const TopAbs_ShapeEnum theShapeType);
@@ -115,9 +125,6 @@ protected slots:
   /// Combobox of types
   QComboBox* myTypeCombo;
 
-  /// Container
-  QWidget* myMainWidget;
-
   //TODO: Move into the base of selectors
   ModuleBase_IWorkshop* myWorkshop;
 
@@ -127,11 +134,17 @@ protected slots:
   /// Provides correspondance between Result object and its shape
   typedef QPair<ResultPtr, GeomShapePtr> GeomSelection;
 
-  /// Variable of GeomSelection type
-  QList<GeomSelection> mySelection;
-
   /// An action for pop-up menu in a list control
   QAction* myCopyAction;
+
+  /// backup parameters of the model attribute. The class processes three types of attribute:
+  /// Reference, RefAttr and Selection. Depending on the attribute type, only the attribute parameter
+  /// values are reserved in the backup
+  /// Variable of selection type
+  std::string mySelectionType;
+
+  /// Variable of GeomSelection
+  QList<GeomSelection> mySelection;
 };
 
 #endif /* MODULEBASE_WIDGETFILESELECTOR_H_ */