X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_OperationFeature.cpp;h=4a3466ba6bd37475318a4a9046150c9abbf9db30;hb=7ad94f3cf928e9abe353fe20fa1becfe2574b857;hp=aa2d464fcb4fda8c66cf1f089b413a279ec4cdc2;hpb=8ca03f0f11bac0ff8daf358eba3a003be1b53c82;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_OperationFeature.cpp b/src/ModuleBase/ModuleBase_OperationFeature.cpp index aa2d464fc..4a3466ba6 100644 --- a/src/ModuleBase/ModuleBase_OperationFeature.cpp +++ b/src/ModuleBase/ModuleBase_OperationFeature.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2019 CEA/DEN, EDF R&D +// Copyright (C) 2014-2022 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -175,22 +175,6 @@ FeaturePtr ModuleBase_OperationFeature::createFeature(const bool theFlushMessage 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 - setIsModified(true); - // Model update should call "execute" of a feature. - //myFeature->execute(); - // Init default values - /*QList aWidgets = getDescription()->modelWidgets(); - QList::const_iterator anIt = aWidgets.begin(), aLast = aWidgets.end(); - for (; anIt != aLast; anIt++) { - (*anIt)->storeValue(aFeature); - }*/ - } - - //if (theFlushMessage) { - // Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_OBJECT_CREATED)); - // Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_OBJECT_UPDATED)); - //} return myFeature; } @@ -225,10 +209,10 @@ bool ModuleBase_OperationFeature::hasObject(ObjectPtr theObj) const std::shared_ptr aCurSelList = std::dynamic_pointer_cast(*anIt); for (int i = 0, aNb = aCurSelList->size(); i < aNb && !aFoundObject; i++) { - ObjectPtr anObject = aCurSelList->object(i); - FeaturePtr aFeature = std::dynamic_pointer_cast(anObject); - if (aFeature.get()) { - aFoundObject = anObjectFeature == aFeature; + ObjectPtr aCurObj = aCurSelList->object(i); + FeaturePtr aCurFeat = std::dynamic_pointer_cast(aCurObj); + if (aCurFeat.get()) { + aFoundObject = anObjectFeature == aCurFeat; } } } @@ -249,7 +233,6 @@ bool ModuleBase_OperationFeature::start() #ifdef DEBUG_OPERATION_START qDebug("ModuleBase_OperationFeature::start -- begin"); #endif - setIsModified(false); QString anId = getDescription()->operationId(); if (myIsEditing) { anId = anId.append(EditSuffix()); @@ -295,6 +278,12 @@ void ModuleBase_OperationFeature::abort() new Events_Message(Events_Loop::eventByName(EVENT_UPDATE_VIEWER_BLOCKED))); Events_Loop::loop()->send(aMsg); + if (myFeature.get()) + { + static const Events_ID anEvent = Events_Loop::eventByName(EVENT_VISUAL_ATTRIBUTES); + ModelAPI_EventCreator::get()->sendUpdated(myFeature, anEvent); + } + // the widgets of property panel should not process any events come from data mode // after abort clicked. Some signal such as redisplay/create influence on content // of the object browser and viewer context. Therefore it influence to the current @@ -410,20 +399,16 @@ ModuleBase_ModelWidget* ModuleBase_OperationFeature::activateByPreselection( } } else { - bool isSet = false; // 1. apply the selection to controls for (aWIt = aWidgets.constBegin(); aWIt != aWidgets.constEnd(); ++aWIt) { aWgt = (*aWIt); if (!aWgt->canAcceptFocus()) continue; aPropertyPanel->setPreselectionWidget(aWgt); - if (myPreSelection.empty() || !aWgt->setSelection(myPreSelection, true)) { - isSet = false; + if (myPreSelection.empty() || !aWgt->setSelection(myPreSelection, true)) break; - } else { - isSet = true; + else aFilledWgt = aWgt; - } } } aPropertyPanel->setPreselectionWidget(NULL);