#include <ModuleBase.h>
#include <ModuleBase_Operation.h>
-#include <ModuleBase_ViewerPrs.h>
#include <ModelAPI_Object.h>
#include <ModelAPI_CompositeFeature.h>
class ModuleBase_ModelWidget;
class ModuleBase_ISelection;
class ModuleBase_IViewer;
+class ModuleBase_IWorkshop;
+class ModuleBase_ViewerPrs;
class QKeyEvent;
/// 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
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
/// \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.
/// 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.
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