#include <QPushButton>
ModuleBase_IModule::ModuleBase_IModule(ModuleBase_IWorkshop* theParent)
- : QObject(theParent), myWorkshop(theParent)
+ : QObject(theParent), myWorkshop(theParent)
{
connect(myWorkshop, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged()));
void ModuleBase_IModule::launchOperation(const QString& theCmdId)
{
+ /// selection should be obtained from workshop before ask if the operation can be started as
+ /// the canStartOperation method performs commit/abort of previous operation.
+ /// Sometimes commit/abort may cause selection clear(Sketch operation) as a result
+ /// it will be lost and is not used for preselection.
+ ModuleBase_ISelection* aSelection = myWorkshop->selection();
+ QList<ModuleBase_ViewerPrsPtr> aPreSelected =
+ aSelection->getSelected(ModuleBase_ISelection::AllControls);
+
if (!myWorkshop->canStartOperation(theCmdId))
return;
ModuleBase_OperationFeature* aFOperation = dynamic_cast<ModuleBase_OperationFeature*>
(createOperation(theCmdId.toStdString()));
if (aFOperation) {
- ModuleBase_ISelection* aSelection = myWorkshop->selection();
- // Initialise operation with preliminary selection
- aFOperation->initSelection(aSelection, myWorkshop->viewer());
+ aFOperation->initSelection(aPreSelected);
+
workshop()->processLaunchOperation(aFOperation);
}
}
QString ModuleBase_IModule::getFeatureError(const FeaturePtr& theFeature)
{
+ // Error already translated.
std::string aMsg = ModelAPI_Tools::getFeatureError(theFeature);
- ModuleBase_Tools::translate(theFeature->getKind(), aMsg);
-
- return aMsg.c_str();
+ return QString::fromUtf8(aMsg.c_str());
}
void ModuleBase_IModule::grantedOperationIds(ModuleBase_Operation* theOperation,
}
bool ModuleBase_IModule::customizeObject(ObjectPtr theObject,
- const ModuleBase_IModule::ModuleBase_CustomizeFlag& theFlag,
- const bool theUpdateViewer)
+ const ModuleBase_IModule::ModuleBase_CustomizeFlag& theFlag,
+ const bool theUpdateViewer)
{
return false;
}
void ModuleBase_IModule::createFeatures()
{
registerValidators();
- registerFilters();
registerProperties();
Config_ModuleReader aXMLReader = Config_ModuleReader();
return !aFOperation || !aFOperation->hasObject(theObject);
}
-void ModuleBase_IModule::operationResumed(ModuleBase_Operation* theOperation)
+void ModuleBase_IModule::operationResumed(ModuleBase_Operation* theOperation)
{
emit resumed(theOperation);
}