X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_Operation.cpp;h=bfe58446d370168a50092075ea228460c6ca7c25;hb=8b3ac2b938bd55064a6f260ca7ec9c9a84cd977e;hp=00e90732e4cf4efeeaab495ead46ba72c097aa1f;hpb=47c024e673a2da5094f8f233124c412d0fcdc9b4;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_Operation.cpp b/src/ModuleBase/ModuleBase_Operation.cpp index 00e90732e..bfe58446d 100644 --- a/src/ModuleBase/ModuleBase_Operation.cpp +++ b/src/ModuleBase/ModuleBase_Operation.cpp @@ -66,27 +66,14 @@ bool ModuleBase_Operation::isValid() const { if (!myFeature) return true; // rename operation + if (myFeature->isAction()) + return true; //Get validators for the Id SessionPtr aMgr = ModelAPI_Session::get(); ModelAPI_ValidatorsFactory* aFactory = aMgr->validators(); return aFactory->validate(myFeature); } -//void ModuleBase_Operation::storeCustomValue() -//{ -// if (!myFeature) { -//#ifdef _DEBUG -// qDebug() << "ModuleBase_Operation::storeCustom: " << -// "trying to store value without opening a transaction."; -//#endif -// return; -// } -// -// ModuleBase_ModelWidget* aCustom = dynamic_cast(sender()); -// if (aCustom) -// aCustom->storeValue(); -//} - bool ModuleBase_Operation::canBeCommitted() const { @@ -105,7 +92,7 @@ void ModuleBase_Operation::flushCreated() FeaturePtr ModuleBase_Operation::createFeature(const bool theFlushMessage) { - if (myParentFeature) { + if (myParentFeature.get()) { myFeature = myParentFeature->addFeature(getDescription()->operationId().toStdString()); } else { std::shared_ptr aDoc = document(); @@ -159,7 +146,8 @@ std::shared_ptr ModuleBase_Operation::document() const void ModuleBase_Operation::start() { - ModelAPI_Session::get()->startOperation(); + QString anId = getDescription()->operationId(); + ModelAPI_Session::get()->startOperation(anId.toStdString()); if (!myIsEditing) createFeature(); @@ -171,15 +159,13 @@ void ModuleBase_Operation::start() void ModuleBase_Operation::postpone() { - if (myPropertyPanel) - disconnect(myPropertyPanel, 0, this, 0); + postponeOperation(); emit postponed(); } void ModuleBase_Operation::resume() { - // connect(myPropertyPanel, SIGNAL(widgetActivated(ModuleBase_ModelWidget*)), - // this, SLOT(onWidgetActivated(ModuleBase_ModelWidget*))); + resumeOperation(); emit resumed(); } @@ -187,8 +173,6 @@ void ModuleBase_Operation::abort() { abortOperation(); emit aborted(); - if (myPropertyPanel) - disconnect(myPropertyPanel, 0, this, 0); stopOperation(); @@ -199,9 +183,6 @@ void ModuleBase_Operation::abort() bool ModuleBase_Operation::commit() { if (canBeCommitted()) { - if (myPropertyPanel) - disconnect(myPropertyPanel, 0, this, 0); - commitOperation(); // check whether there are modifications performed during the current operation // in the model @@ -268,6 +249,16 @@ void ModuleBase_Operation::activateByPreselection() } +void ModuleBase_Operation::setParentFeature(CompositeFeaturePtr theParent) +{ + myParentFeature = theParent; +} + +CompositeFeaturePtr ModuleBase_Operation::parentFeature() const +{ + return myParentFeature; +} + void ModuleBase_Operation::initSelection(ModuleBase_ISelection* theSelection, ModuleBase_IViewer* theViewer) { @@ -347,8 +338,6 @@ void ModuleBase_Operation::setPropertyPanel(ModuleBase_IPropertyPanel* theProp) { myPropertyPanel = theProp; myPropertyPanel->setEditingMode(isEditOperation()); - //connect(myPropertyPanel, SIGNAL(widgetActivated(ModuleBase_ModelWidget*)), this, - // SLOT(onWidgetActivated(ModuleBase_ModelWidget*))); // Do not activate widgets by default if the current operation is editing operation // Because we don't know which widget is going to be edited.