X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FModuleBase%2FModuleBase_Operation.cpp;h=4b8c7d34bec1db0259ad11036dc3dffed806e207;hb=241b57ba3887bc2d239df98405c4fc4d6979119b;hp=00e90732e4cf4efeeaab495ead46ba72c097aa1f;hpb=3efd29f07fa128246690fd24a3439048b5e95878;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_Operation.cpp b/src/ModuleBase/ModuleBase_Operation.cpp index 00e90732e..4b8c7d34b 100644 --- a/src/ModuleBase/ModuleBase_Operation.cpp +++ b/src/ModuleBase/ModuleBase_Operation.cpp @@ -66,49 +66,26 @@ 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 { return isValid(); } -void ModuleBase_Operation::flushUpdated() -{ - Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_OBJECT_UPDATED)); -} - -void ModuleBase_Operation::flushCreated() -{ - Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_OBJECT_CREATED)); -} - FeaturePtr ModuleBase_Operation::createFeature(const bool theFlushMessage) { - if (myParentFeature) { + if (myParentFeature.get()) { myFeature = myParentFeature->addFeature(getDescription()->operationId().toStdString()); } else { - std::shared_ptr aDoc = document(); + std::shared_ptr aDoc = ModelAPI_Session::get()->activeDocument(); myFeature = aDoc->addFeature(getDescription()->operationId().toStdString()); } if (myFeature) { // TODO: generate an error if feature was not created @@ -124,7 +101,7 @@ FeaturePtr ModuleBase_Operation::createFeature(const bool theFlushMessage) } if (theFlushMessage) - flushCreated(); + Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_OBJECT_CREATED)); return myFeature; } @@ -150,16 +127,13 @@ bool ModuleBase_Operation::hasObject(ObjectPtr theObj) const return false; } - -std::shared_ptr ModuleBase_Operation::document() const -{ - return ModelAPI_Session::get()->moduleDocument(); -} - - void ModuleBase_Operation::start() { - ModelAPI_Session::get()->startOperation(); + QString anId = getDescription()->operationId(); + if (myIsEditing) { + anId = anId.append(EditSuffix()); + } + ModelAPI_Session::get()->startOperation(anId.toStdString()); if (!myIsEditing) createFeature(); @@ -171,15 +145,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 +159,6 @@ void ModuleBase_Operation::abort() { abortOperation(); emit aborted(); - if (myPropertyPanel) - disconnect(myPropertyPanel, 0, this, 0); stopOperation(); @@ -199,9 +169,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 +235,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 +324,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.