Salome HOME
Fix solvespace version number in environment.
[modules/shaper.git] / src / ModuleBase / ModuleBase_IModule.h
old mode 100644 (file)
new mode 100755 (executable)
index a32b022..75a962d
@@ -7,12 +7,18 @@
 #include "ModuleBase_IWorkshop.h"\r
 \r
 #include <ModelAPI_Feature.h>\r
+#include <ModelAPI_Attribute.h>\r
+\r
+#include <GeomAPI_Shape.h>\r
+#include <GeomAPI_ICustomPrs.h>\r
 \r
 #include <QString>\r
 #include <QObject>\r
 #include <QMap>\r
+#include <QList>\r
 \r
 #include <string>\r
+#include <vector>\r
 #include <map>\r
 \r
 class QAction;\r
@@ -32,6 +38,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
@@ -61,21 +73,21 @@ class MODULEBASE_EXPORT ModuleBase_IModule : public QObject
 \r
   /// Realizes some functionality by an operation start\r
   /// \param theOperation a started operation\r
-  virtual void onOperationStarted(ModuleBase_Operation* theOperation) {}\r
+  virtual void operationStarted(ModuleBase_Operation* theOperation) {}\r
 \r
   /// Realizes some functionality by an operation resume\r
   /// By default it emits operationResumed signal\r
   /// \param theOperation a resumed operation\r
-  virtual void onOperationResumed(ModuleBase_Operation* theOperation);\r
+  virtual void operationResumed(ModuleBase_Operation* theOperation);\r
 \r
   /// Realizes some functionality by an operation stop\r
-  virtual void onOperationStopped(ModuleBase_Operation* theOperation) {}\r
+  virtual void operationStopped(ModuleBase_Operation* theOperation) {}\r
 \r
   /// Realizes some functionality by an operation commit\r
-  virtual void onOperationCommitted(ModuleBase_Operation* theOperation) {}\r
+  virtual void operationCommitted(ModuleBase_Operation* theOperation) {}\r
 \r
   /// Realizes some functionality by an operation abort\r
-  virtual void onOperationAborted(ModuleBase_Operation* theOperation) {}\r
+  virtual void operationAborted(ModuleBase_Operation* theOperation) {}\r
 \r
   /// Realizes some functionality by an operation start\r
   virtual ModuleBase_Operation* currentOperation() const = 0;\r
@@ -101,6 +113,9 @@ class MODULEBASE_EXPORT ModuleBase_IModule : public QObject
     return 0;\r
   }\r
 \r
+  /// Returns the active widget, by default it is the property panel active widget\r
+  virtual ModuleBase_ModelWidget* activeWidget() const = 0;\r
+\r
   /// Returns current workshop\r
   ModuleBase_IWorkshop* workshop() const { return myWorkshop; }\r
 \r
@@ -108,6 +123,13 @@ class MODULEBASE_EXPORT ModuleBase_IModule : public QObject
   /// It is called as on clearing of property panel as on filling with new widgets\r
   virtual void propertyPanelDefined(ModuleBase_Operation* theOperation) {}\r
 \r
+  /// Have an opportunity to create widgets for the current operation instead of standard creation in workshop\r
+  /// \param theOperation a started operation\r
+  /// \param theWidgets a list of created widgets\r
+  /// \return boolean result, false by default\r
+  virtual bool createWidgets(ModuleBase_Operation* theOperation,\r
+                             QList<ModuleBase_ModelWidget*>& theWidgets) const { return false; }\r
+\r
   //! Returns True if there are available Undos and there is not an active operation\r
   virtual bool canUndo() const;\r
 \r
@@ -132,6 +154,10 @@ class MODULEBASE_EXPORT ModuleBase_IModule : public QObject
   /// \param theObject a model object\r
   virtual bool canDisplayObject(const ObjectPtr& theObject) const;\r
 \r
+  /// Make some functionality after the objects are hidden in viewer\r
+  /// \param theObjects a list of hidden objects\r
+  virtual void processHiddenObject(const std::list<ObjectPtr>& theObjects) {};\r
+\r
   /// Returns true if selection for the object can be activate.\r
   /// By default a result or feature of the current operation can not be activated\r
   /// \param theObject a model object\r
@@ -151,14 +177,34 @@ 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
+  /// Modifies the given presentation in the custom way.\r
+  virtual bool customisePresentation(ResultPtr theResult, AISObjectPtr thePrs,\r
+                                     GeomCustomPrsPtr theCustomPrs) { return false; };\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,13 +237,53 @@ class MODULEBASE_EXPORT ModuleBase_IModule : public QObject
   /// Returns list of granted operation indices\r
   virtual void grantedOperationIds(ModuleBase_Operation* theOperation, QStringList& theIds) const;\r
 \r
+  /// Connects or disconnects to the value changed signal of the property panel widgets\r
+  /// \param theWidget a property contol widget\r
+  /// \param isToConnect a boolean value whether connect or disconnect\r
+  virtual void connectToPropertyPanel(ModuleBase_ModelWidget* theWidget, const bool isToConnect) {};\r
+\r
+  /// Validates the operation to change the "Apply" button state.\r
+  /// \param thePreviousState the previous state of the widget\r
+  virtual void widgetStateChanged(int thePreviousState) {};\r
+\r
+  /// Returns true if the event is processed.\r
+  /// \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
+  /// Finds a shape by attribute if it is possible\r
+  /// \param theAttribute an attribute\r
+  /// \return a geom shape\r
+  virtual GeomShapePtr findShape(const AttributePtr& theAttribute) = 0;\r
+\r
+  /// Finds an attribute by geom shape if it is possible\r
+  /// \param theObject an object of the attribute\r
+  /// \param theGeomShape a geom shape\r
+  /// \return theAttribute\r
+  virtual AttributePtr findAttribute(const ObjectPtr& theObject,\r
+                                     const GeomShapePtr& theGeomShape) = 0;\r
+\r
+  /// Returns XML information by the feature index\r
+  /// \param theFeatureId a feature id\r
+  /// \param theXmlCfg XML configuration\r
+  /// \param theDescription feature description\r
+  void getXMLRepresentation(const std::string& theFeatureId, std::string& theXmlCfg,\r
+                            std::string& theDescription);\r
+\r
 signals:\r
   /// Signal which is emitted when operation is launched\r
   void operationLaunched();\r
 \r
   /// Segnal emitted when an operation is resumed\r
   /// \param theOp a resumed operation\r
-  void operationResumed(ModuleBase_Operation* theOp);\r
+  void resumed(ModuleBase_Operation* theOp);\r
 \r
 public slots:\r
   /// Called on call of command corresponded to a feature\r
@@ -231,7 +317,6 @@ protected slots:
   virtual ModuleBase_Operation* getNewOperation(const std::string& theFeatureId);\r
 \r
 protected:\r
-\r
   /// Reference to workshop\r
   ModuleBase_IWorkshop* myWorkshop;\r
 \r