Salome HOME
WidgetMultiSelector preparation to use ModelAPI_AttributeRefAttrList.
[modules/shaper.git] / src / ModuleBase / ModuleBase_IModule.h
index 11e7949cfaf5e5e3de153dcda2f2e11a263eea0b..d80620a4895a15befa1605d1c770b1b7b465600d 100755 (executable)
@@ -32,6 +32,12 @@ class MODULEBASE_EXPORT ModuleBase_IModule : public QObject
 {\r
   Q_OBJECT\r
  public:\r
+  /// enumeration to know which objects should be customized\r
+  enum ModuleBase_CustomizeFlag {\r
+    CustomizeArguments = 0, /// references of other objects referenced to the current feature\r
+    CustomizeResults, /// results of the current feature\r
+    CustomizeHighlightedObjects /// highlighted objects of the active widget\r
+  };\r
 \r
    /// Constructor\r
    /// \param theParent instance of workshop interface\r
@@ -154,14 +160,30 @@ class MODULEBASE_EXPORT ModuleBase_IModule : public QObject
   /// \param theModes a list of modes\r
   virtual void activeSelectionModes(QIntList& theModes) {}\r
 \r
-  /** Update the object presentable properties such as color, lines width and other\r
-  * If the object is result with the color attribute value set, it is used,\r
-  * otherwise the customize is applyed to the object's feature if it is a custom prs\r
-  * \param theObject an object instance\r
-  * \param theUpdateViewer the parameter whether the viewer should be update immediately\r
-  * \returns true if the object is modified\r
-  */\r
-  virtual bool customizeObject(ObjectPtr theObject, const bool theUpdateViewer);\r
+  /// Activate custom presentation for the object. Default realization is empty.\r
+  /// \param theObject an object instance\r
+  /// \param theFlag a flag of level of customization, which means that only part of sub-elements\r
+  /// \param theUpdateViewer the parameter whether the viewer should be update immediately\r
+  virtual void activateCustomPrs(const FeaturePtr& theFeature,\r
+                                 const ModuleBase_CustomizeFlag& theFlag,\r
+                                 const bool theUpdateViewer) {}\r
+\r
+  /// Deactivate custom presentation for the object. Default realization is empty.\r
+  /// \param theFlag a flag of level of customization, which means that only part of sub-elements\r
+  /// \param theUpdateViewer the parameter whether the viewer should be update immediately\r
+  virtual void deactivateCustomPrs(const ModuleBase_CustomizeFlag& theFlag,\r
+                                   const bool theUpdateViewer) {}\r
+\r
+  /// Update the object presentable properties such as color, lines width and other\r
+  /// If the object is result with the color attribute value set, it is used,\r
+  /// otherwise the customize is applyed to the object's feature if it is a custom prs\r
+  /// \param theObject an object instance\r
+  /// \param theFlag a flag of level of customization, which means that only part of sub-elements\r
+  /// should be updated(e.g. only highlighted elements)\r
+  /// \param theUpdateViewer the parameter whether the viewer should be update immediately\r
+  /// \returns true if the object is modified\r
+  virtual bool customizeObject(ObjectPtr theObject, const ModuleBase_CustomizeFlag& theFlag,\r
+                               const bool theUpdateViewer);\r
 \r
   /// This method is called on object browser creation for customization of module specific features\r
   /// \param theObjectBrowser a pinter on Object Browser widget\r
@@ -191,11 +213,6 @@ class MODULEBASE_EXPORT ModuleBase_IModule : public QObject
   //! \return string value\r
   virtual QString getFeatureError(const FeaturePtr& theFeature);\r
 \r
-  //! Returns the widget error, get it from the attribute validator and state of the widget\r
-  //! If the feature is correct, it returns an empty value\r
-  //! \return string value\r
-  virtual QString getWidgetError(ModuleBase_ModelWidget* theWidget);\r
-\r
   /// Returns list of granted operation indices\r
   virtual void grantedOperationIds(ModuleBase_Operation* theOperation, QStringList& theIds) const;\r
 \r
@@ -212,6 +229,14 @@ class MODULEBASE_EXPORT ModuleBase_IModule : public QObject
   /// \param thePreviousAttributeID an index of the previous active attribute\r
   virtual bool processEnter(const std::string& thePreviousAttributeID) { return false; };\r
 \r
+  /// Performs some GUI actions after an operation transaction is opened\r
+  /// Default realization is empty\r
+  virtual void beforeOperationStarted(ModuleBase_Operation* theOperation) {};\r
+\r
+  /// Performs some GUI actions before an operation transaction is stopped\r
+  /// Default realization is empty\r
+  virtual void beforeOperationStopped(ModuleBase_Operation* theOperation) {};\r
+\r
 signals:\r
   /// Signal which is emitted when operation is launched\r
   void operationLaunched();\r