X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_IModule.cpp;h=a4fb017577a7bc20c8d46fd5d92e489cdc418fa6;hb=8cd56d486b6e96b8814002f9f0f4acadd6cea11b;hp=1c69f04710ee9e69b304a29dbbfa70e28fab35ed;hpb=8c61cbe058ed744affb3ae76379c8f3ce1d1cdf2;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_IModule.cpp b/src/ModuleBase/ModuleBase_IModule.cpp index 1c69f0471..a4fb01757 100644 --- a/src/ModuleBase/ModuleBase_IModule.cpp +++ b/src/ModuleBase/ModuleBase_IModule.cpp @@ -7,12 +7,15 @@ #include "ModuleBase_Operation.h" #include "ModuleBase_ISelection.h" #include "ModuleBase_OperationDescription.h" +#include "ModuleBase_OperationFeature.h" +#include "ModuleBase_ModelWidget.h" #include #include #include #include +#include "ModelAPI_Tools.h" #include #include @@ -43,11 +46,14 @@ void ModuleBase_IModule::launchOperation(const QString& theCmdId) if (!myWorkshop->canStartOperation(theCmdId)) return; - ModuleBase_Operation* anOperation = createOperation(theCmdId.toStdString()); - ModuleBase_ISelection* aSelection = myWorkshop->selection(); - // Initialise operation with preliminary selection - anOperation->initSelection(aSelection, myWorkshop->viewer()); - sendOperation(anOperation); + ModuleBase_OperationFeature* aFOperation = dynamic_cast + (createOperation(theCmdId.toStdString())); + if (aFOperation) { + ModuleBase_ISelection* aSelection = myWorkshop->selection(); + // Initialise operation with preliminary selection + aFOperation->initSelection(aSelection, myWorkshop->viewer()); + sendOperation(aFOperation); + } } @@ -60,24 +66,40 @@ void ModuleBase_IModule::sendOperation(ModuleBase_Operation* theOperation) Events_Loop::loop()->send(aMessage); } +QString ModuleBase_IModule::getFeatureError(const FeaturePtr& theFeature) +{ + return ModelAPI_Tools::getFeatureError(theFeature).c_str(); +} + +void ModuleBase_IModule::grantedOperationIds(ModuleBase_Operation* theOperation, + QStringList& theIds) const +{ +} + ModuleBase_Operation* ModuleBase_IModule::getNewOperation(const std::string& theFeatureId) { - return new ModuleBase_Operation(theFeatureId.c_str(), this); + return new ModuleBase_OperationFeature(theFeatureId.c_str(), this); } -ModuleBase_Operation* ModuleBase_IModule::createOperation(const std::string& theFeatureId) +bool ModuleBase_IModule::customizeObject(ObjectPtr theObject, const bool theUpdateViewer) { - ModuleBase_Operation* anOperation = getNewOperation(theFeatureId); + return false; +} - // If the operation is launched as sub-operation of another then we have to initialise +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 initialize // parent feature - ModuleBase_Operation* aCurOperation = myWorkshop->currentOperation(); + ModuleBase_OperationFeature* aCurOperation = dynamic_cast + (myWorkshop->currentOperation()); if (aCurOperation) { FeaturePtr aFeature = aCurOperation->feature(); CompositeFeaturePtr aCompFeature = std::dynamic_pointer_cast(aFeature); if (aCompFeature) { - anOperation->setParentFeature(aCompFeature); + aFOperation->setParentFeature(aCompFeature); } } @@ -87,10 +109,10 @@ ModuleBase_Operation* ModuleBase_IModule::createOperation(const std::string& the std::string aXmlCfg = aWdgReader.featureWidgetCfg(theFeatureId); std::string aDescription = aWdgReader.featureDescription(theFeatureId); - anOperation->getDescription()->setDescription(QString::fromStdString(aDescription)); - anOperation->getDescription()->setXmlRepresentation(QString::fromStdString(aXmlCfg)); + aFOperation->getDescription()->setDescription(QString::fromStdString(aDescription)); + aFOperation->getDescription()->setXmlRepresentation(QString::fromStdString(aXmlCfg)); - return anOperation; + return aFOperation; } void ModuleBase_IModule::createFeatures() @@ -107,9 +129,15 @@ void ModuleBase_IModule::createFeatures() void ModuleBase_IModule::actionCreated(QAction* theFeature) { + theFeature->setStatusTip(theFeature->text()); 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; @@ -127,18 +155,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); @@ -156,18 +179,22 @@ void ModuleBase_IModule::editFeature(FeaturePtr theFeature) if (!myWorkshop->canStartOperation(aFeatureId.c_str())) return; - ModuleBase_Operation* anOperation = createOperation(aFeatureId); - anOperation->setFeature(theFeature); - sendOperation(anOperation); + ModuleBase_OperationFeature* aFOperation = dynamic_cast + (createOperation(aFeatureId)); + if (aFOperation) { + aFOperation->setFeature(theFeature); + sendOperation(aFOperation); + } } bool ModuleBase_IModule::canActivateSelection(const ObjectPtr& theObject) const { - ModuleBase_Operation* aOperation = myWorkshop->currentOperation(); - return !aOperation || !aOperation->hasObject(theObject); + ModuleBase_OperationFeature* aFOperation = dynamic_cast + (myWorkshop->currentOperation()); + 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); }