Salome HOME
Issue #1659 New widget for supporting optional inputs : rename CheckGroupBox to Optio...
[modules/shaper.git] / src / ModuleBase / ModuleBase_OperationFeature.h
index 32e648bd9b0fc96797cf4c76613e55984fcf857a..268b1d7590bb633b5a2e60d14f97afa35a42159a 100755 (executable)
@@ -12,7 +12,6 @@
 
 #include <ModuleBase.h>
 #include <ModuleBase_Operation.h>
-#include <ModuleBase_ViewerPrs.h>
 
 #include <ModelAPI_Object.h>
 #include <ModelAPI_CompositeFeature.h>
@@ -26,6 +25,8 @@
 class ModuleBase_ModelWidget;
 class ModuleBase_ISelection;
 class ModuleBase_IViewer;
+class ModuleBase_IWorkshop;
+class ModuleBase_ViewerPrs;
 
 class QKeyEvent;
 
@@ -67,9 +68,10 @@ Q_OBJECT
   /// Change the operation mode from create to edit.
   /// The transaction and the operation name in the model history of transaction are the same.
   /// It updates the edit state in the widgets of property panel
-  /// \param theRestartTransaction if true, the current model transaction is committed and
+  /// \param isEditState boolean state whether the operation should become editing or creating
+  // \param theRestartTransaction if true, the current model transaction is committed and
   /// the new one is started
-  void setEditOperation(const bool theRestartTransaction);
+  void setEditOperation(const bool& isEditState/*const bool theRestartTransaction*/);
 
   /// Returns the operation feature
   /// \return the feature
@@ -96,15 +98,21 @@ Q_OBJECT
   virtual void initSelection(ModuleBase_ISelection* theSelection,
                              ModuleBase_IViewer* theViewer);
 
+  /// Fill internal map by preselection
+  /// \param theValues a list of preselection
+  void setPreselection(const QList<std::shared_ptr<ModuleBase_ViewerPrs>>& theValues);
+
   /// \brief Set property pane to the operation
   /// \param theProp a property panel instance
   virtual void setPropertyPanel(ModuleBase_IPropertyPanel* theProp);
 
-  /// \return Currently installed property panel
+  // \return Currently installed property panel
   //ModuleBase_IPropertyPanel* propertyPanel() const { return myPropertyPanel; }
 
-  /// Activates widgets by preselection if it is accepted. Emits signal if the activation is correct
-  virtual void activateByPreselection();
+  /// Activates widgets by preselection if it is accepted.
+  /// \param theGreedAttributeId a greed attribute id if there is in the current feature
+  /// \return last filled widget
+  virtual ModuleBase_ModelWidget* activateByPreselection(const std::string& theGreedAttributeId);
 
   /// If the operation works with feature which is sub-feature of another one
   /// then this variable has to be initialised by parent feature 
@@ -122,10 +130,6 @@ Q_OBJECT
   /// \return theFeature a feature
   FeaturePtr previousCurrentFeature();
 
-signals:
-  /// The operation is filled with existing preselection
-  void activatedByPreselection(); 
-
  public slots:
   /// Starts operation
   /// Public slot. Verifies whether operation can be started and starts operation.
@@ -133,7 +137,8 @@ signals:
   /// to change behavior of operation. There is no point in using this method. It would
   /// be better to inherit own operator from base one and redefine startOperation method
   /// instead.
-  void start();
+  /// \return true if the start is successful
+  virtual bool start();
 
   /// Aborts operation
   /// Public slot. Aborts operation. This slot is not virtual and cannot be redefined.
@@ -172,7 +177,7 @@ signals:
   bool myIsEditing;
 
   /// List of pre-selected object 
-  QList<ModuleBase_ViewerPrs> myPreSelection;
+  QList<std::shared_ptr<ModuleBase_ViewerPrs>> myPreSelection;
 
   /// If the operation works with feature which is sub-feature of another one
   /// then this variable has to be initialised by parent feature