X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_ActionsMgr.cpp;h=8b6fbadd1c685e94305ef78d791405823e73c060;hb=92b6738b4a67f24c626b106e2bcf7651577ff2bc;hp=83d3e09b0b02d854ee2033be34a3819cbf703e77;hpb=9ab2083403bd0837a7690f4923419be51f249b71;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ActionsMgr.cpp b/src/XGUI/XGUI_ActionsMgr.cpp index 83d3e09b0..8b6fbadd1 100644 --- a/src/XGUI/XGUI_ActionsMgr.cpp +++ b/src/XGUI/XGUI_ActionsMgr.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include @@ -95,15 +96,16 @@ bool XGUI_ActionsMgr::isNested(const QString& theId) const void XGUI_ActionsMgr::update() { FeaturePtr anActiveFeature = FeaturePtr(); - if (myOperationMgr->hasOperation()) { - ModuleBase_Operation* anOperation = myOperationMgr->currentOperation(); - anActiveFeature = anOperation->feature(); + ModuleBase_OperationFeature* aFOperation = dynamic_cast + (myOperationMgr->currentOperation()); + if (aFOperation) { + anActiveFeature = aFOperation->feature(); if(anActiveFeature.get()) { setAllEnabled(false); QString aFeatureId = QString::fromStdString(anActiveFeature->getKind()); setActionEnabled(aFeatureId, true); } - setNestedStackEnabled(anOperation); + setNestedStackEnabled(aFOperation); } else { setAllEnabled(true); setNestedCommandsEnabled(false); @@ -156,20 +158,15 @@ void XGUI_ActionsMgr::updateOnViewSelection() ModelAPI_ValidatorsFactory* aFactory = aMgr->validators(); foreach(QString aFeatureId, aIdList) { foreach(QString aId, nestedCommands(aFeatureId)) { - std::list aValidators; - std::list > anArguments; - aFactory->validators(aId.toStdString(), aValidators, anArguments); - std::list::iterator aValidator = aValidators.begin(); - std::list >::iterator aValidatorArgs = anArguments.begin(); - for (; aValidator != aValidators.end(); aValidator++, aValidatorArgs++) { - if (!(*aValidator)) - continue; + ModelAPI_ValidatorsFactory::Validators aValidators; + aFactory->validators(aId.toStdString(), aValidators); + ModelAPI_ValidatorsFactory::Validators::iterator aValidatorIt = aValidators.begin(); + for (; aValidatorIt != aValidators.end(); ++aValidatorIt) { const ModuleBase_SelectionValidator* aSelValidator = - dynamic_cast(*aValidator); + dynamic_cast(aFactory->validator(aValidatorIt->first)); if (!aSelValidator) continue; - setActionEnabled(aId, aSelValidator->isValid(aSelection, *aValidatorArgs)); - + setActionEnabled(aId, aSelValidator->isValid(aSelection, aValidatorIt->second)); } } } @@ -261,6 +258,15 @@ QAction* XGUI_ActionsMgr::operationStateAction(OperationStateActionId theId, QOb return aResult; } +QAction* XGUI_ActionsMgr::action(const QString& theId) +{ + QAction* anAction = 0; + if(myActions.contains(theId)) { + anAction = myActions.value(theId); + } + return anAction; +} + ActionInfo XGUI_ActionsMgr::actionInfoById(const QString& theId) { ActionInfo aResult; @@ -300,9 +306,10 @@ void XGUI_ActionsMgr::setNestedCommandsEnabled(bool theEnabled, const QString& t void XGUI_ActionsMgr::setNestedStackEnabled(ModuleBase_Operation* theOperation) { - if(!theOperation || !theOperation->feature()) + ModuleBase_OperationFeature* anOperation = dynamic_cast(theOperation); + if(!anOperation || !anOperation->feature()) return; - FeaturePtr aFeature = theOperation->feature(); + FeaturePtr aFeature = anOperation->feature(); QString aFeatureId = QString::fromStdString(aFeature->getKind()); setActionEnabled(aFeatureId, true); setNestedCommandsEnabled(true, aFeatureId); @@ -357,8 +364,8 @@ void XGUI_ActionsMgr::updateByPlugins(FeaturePtr anActiveFeature) { static Events_ID aStateRequestEventId = Events_Loop::loop()->eventByName( EVENT_FEATURE_STATE_REQUEST); - std::shared_ptr aMsg = - std::make_shared(aStateRequestEventId, this); + std::shared_ptr aMsg( + new ModelAPI_FeatureStateMessage(aStateRequestEventId, this)); aMsg->setFeature(anActiveFeature); Events_Loop::loop()->send(aMsg, false); }