X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_IModule.cpp;h=c73bf3c1c5081a803b07d15181918d283418eaae;hb=7850a95ad1efe835c2266230bdab39bf2e856789;hp=3fe2524f3f512002f407eb42ca281702702635e9;hpb=03936c76cd52c555961e4636e640c12fe2d47f2f;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_IModule.cpp b/src/ModuleBase/ModuleBase_IModule.cpp index 3fe2524f3..c73bf3c1c 100644 --- a/src/ModuleBase/ModuleBase_IModule.cpp +++ b/src/ModuleBase/ModuleBase_IModule.cpp @@ -8,9 +8,11 @@ #include "ModuleBase_ISelection.h" #include "ModuleBase_OperationDescription.h" #include "ModuleBase_OperationFeature.h" +#include #include +#include #include #include #include @@ -64,16 +66,92 @@ void ModuleBase_IModule::sendOperation(ModuleBase_Operation* theOperation) Events_Loop::loop()->send(aMessage); } +const char* toString(ModelAPI_ExecState theExecState) +{ +#define TO_STRING(__NAME__) case __NAME__: return #__NAME__; + switch (theExecState) { + TO_STRING(ModelAPI_StateDone) + TO_STRING(ModelAPI_StateMustBeUpdated) + TO_STRING(ModelAPI_StateExecFailed) + TO_STRING(ModelAPI_StateInvalidArgument) + TO_STRING(ModelAPI_StateNothing) + default: return "Unknown ExecState."; + } +#undef TO_STRING +} + +QString ModuleBase_IModule::getFeatureError(const FeaturePtr& theFeature) +{ + QString anError; + if (!theFeature.get() || !theFeature->data()->isValid() || theFeature->isAction()) + return anError; + + // to be removed later, this error should be got from the feature + if (theFeature->data()->execState() == ModelAPI_StateDone || + theFeature->data()->execState() == ModelAPI_StateMustBeUpdated) + return anError; + + // set error indication + anError = QString::fromStdString(theFeature->error()); + if (anError.isEmpty()) { + bool isDone = ( theFeature->data()->execState() == ModelAPI_StateDone + || theFeature->data()->execState() == ModelAPI_StateMustBeUpdated ); + if (!isDone) + anError = toString(theFeature->data()->execState()); + } + + return anError; +} + +QString ModuleBase_IModule::getWidgetError(ModuleBase_ModelWidget* theWidget) +{ + QString anError; + + if (!theWidget || !theWidget->feature().get()) + return anError; + + std::string anAttributeID = theWidget->attributeID(); + AttributePtr anAttribute = theWidget->feature()->attribute(anAttributeID); + if (!anAttribute.get()) + return anError; + + std::string aValidatorID; + std::string anErrorMsg; + + static ModelAPI_ValidatorsFactory* aValidators = ModelAPI_Session::get()->validators(); + if (!aValidators->validate(anAttribute, aValidatorID, anErrorMsg)) { + if (anErrorMsg.empty()) + anErrorMsg = "unknown error."; + anErrorMsg = anAttributeID + " - " + aValidatorID + ": " + anErrorMsg; + } + + anError = QString::fromStdString(anErrorMsg); + if (anError.isEmpty()) + anError = theWidget->getValueStateError(); + + return anError; +} + +void ModuleBase_IModule::grantedOperationIds(ModuleBase_Operation* theOperation, + QStringList& theIds) const +{ +} + ModuleBase_Operation* ModuleBase_IModule::getNewOperation(const std::string& theFeatureId) { return new ModuleBase_OperationFeature(theFeatureId.c_str(), this); } +bool ModuleBase_IModule::customizeObject(ObjectPtr theObject, const bool theUpdateViewer) +{ + return false; +} + ModuleBase_Operation* ModuleBase_IModule::createOperation(const std::string& theFeatureId) { ModuleBase_OperationFeature* aFOperation = dynamic_cast (getNewOperation(theFeatureId)); - // If the operation is launched as sub-operation of another then we have to initialise + // If the operation is launched as sub-operation of another then we have to initialize // parent feature ModuleBase_OperationFeature* aCurOperation = dynamic_cast (myWorkshop->currentOperation()); @@ -115,6 +193,11 @@ void ModuleBase_IModule::actionCreated(QAction* theFeature) connect(theFeature, SIGNAL(triggered(bool)), this, SLOT(onFeatureTriggered())); } +bool ModuleBase_IModule::canEraseObject(const ObjectPtr& theObject) const +{ + return true; +} + bool ModuleBase_IModule::canDisplayObject(const ObjectPtr& theObject) const { return true; @@ -132,18 +215,13 @@ bool ModuleBase_IModule::canRedo() const return aMgr->hasModuleDocument() && aMgr->canRedo() && !aMgr->isOperation(); } -bool ModuleBase_IModule::canCommitOperation() const -{ - return true; -} - void ModuleBase_IModule::onFeatureTriggered() { QAction* aCmd = dynamic_cast(sender()); //Do nothing on uncheck if (aCmd->isCheckable() && !aCmd->isChecked()) { ModuleBase_Operation* anOperation = myWorkshop->findStartedOperation(aCmd->data().toString()); - if (myWorkshop->canStopOperation()) + if (myWorkshop->canStopOperation(anOperation)) myWorkshop->abortOperation(anOperation); else { aCmd->setChecked(true); @@ -176,7 +254,7 @@ bool ModuleBase_IModule::canActivateSelection(const ObjectPtr& theObject) const return !aFOperation || !aFOperation->hasObject(theObject); } -void ModuleBase_IModule::onOperationResumed(ModuleBase_Operation* theOperation) +void ModuleBase_IModule::operationResumed(ModuleBase_Operation* theOperation) { - emit operationResumed(theOperation); + emit resumed(theOperation); }