+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
+
/*
* ModuleBase_Operation.cpp
*
{
if (!myFeature)
return true; // rename operation
+ if (myFeature->isAction())
+ return true;
//Get validators for the Id
SessionPtr aMgr = ModelAPI_Session::get();
ModelAPI_ValidatorsFactory* aFactory = aMgr->validators();
return aFactory->validate(myFeature);
}
-bool ModuleBase_Operation::isNestedOperationsEnabled() const
-{
- return true;
-}
-
-//void ModuleBase_Operation::storeCustomValue()
-//{
-// if (!myFeature) {
-//#ifdef _DEBUG
-// qDebug() << "ModuleBase_Operation::storeCustom: " <<
-// "trying to store value without opening a transaction.";
-//#endif
-// return;
-// }
-//
-// ModuleBase_ModelWidget* aCustom = dynamic_cast<ModuleBase_ModelWidget*>(sender());
-// if (aCustom)
-// aCustom->storeValue();
-//}
-
bool ModuleBase_Operation::canBeCommitted() const
{
FeaturePtr ModuleBase_Operation::createFeature(const bool theFlushMessage)
{
- if (myParentFeature) {
+ if (myParentFeature.get()) {
myFeature = myParentFeature->addFeature(getDescription()->operationId().toStdString());
} else {
std::shared_ptr<ModelAPI_Document> aDoc = document();
void ModuleBase_Operation::start()
{
- ModelAPI_Session::get()->startOperation();
+ QString anId = getDescription()->operationId();
+ ModelAPI_Session::get()->startOperation(anId.toStdString());
if (!myIsEditing)
createFeature();
startOperation();
emit started();
+
}
void ModuleBase_Operation::postpone()
{
- if (myPropertyPanel)
- disconnect(myPropertyPanel, 0, this, 0);
+ postponeOperation();
emit postponed();
}
void ModuleBase_Operation::resume()
{
- // connect(myPropertyPanel, SIGNAL(widgetActivated(ModuleBase_ModelWidget*)),
- // this, SLOT(onWidgetActivated(ModuleBase_ModelWidget*)));
+ resumeOperation();
emit resumed();
}
{
abortOperation();
emit aborted();
- if (myPropertyPanel)
- disconnect(myPropertyPanel, 0, this, 0);
stopOperation();
bool ModuleBase_Operation::commit()
{
if (canBeCommitted()) {
- if (myPropertyPanel)
- disconnect(myPropertyPanel, 0, this, 0);
-
commitOperation();
// check whether there are modifications performed during the current operation
// in the model
}
}
-bool ModuleBase_Operation::activateByPreselection()
+void ModuleBase_Operation::activateByPreselection()
{
- if (!myPropertyPanel)
- return false;
- if (myPreSelection.empty())
- return false;
+ if (!myPropertyPanel || myPreSelection.empty()) {
+ myPropertyPanel->activateNextWidget(NULL);
+ return;
+ }
const QList<ModuleBase_ModelWidget*>& aWidgets = myPropertyPanel->modelWidgets();
- if (aWidgets.empty())
- return false;
+ if (aWidgets.empty()) {
+ myPropertyPanel->activateNextWidget(NULL);
+ return;
+ }
ModuleBase_ModelWidget* aWgt, *aFilledWgt = 0;
QList<ModuleBase_ModelWidget*>::const_iterator aWIt;
aFilledWgt = aWgt;
}
}
- if (isSet && canBeCommitted()) {
- // if all widgets are filled with selection - commit
- // in order to commit the operation outside of starting procedure - use timer event
- QTimer::singleShot(50, this, SLOT(commit()));
- return true;
- }
- else {
- //activate next widget
- if (aFilledWgt) {
- myPropertyPanel->activateNextWidget(aFilledWgt);
- return true;
- }
- }
- return false;
+
+ myPropertyPanel->activateNextWidget(aFilledWgt);
+ if (aFilledWgt)
+ emit activatedByPreselection();
+
+}
+
+void ModuleBase_Operation::setParentFeature(CompositeFeaturePtr theParent)
+{
+ myParentFeature = theParent;
+}
+
+CompositeFeaturePtr ModuleBase_Operation::parentFeature() const
+{
+ return myParentFeature;
}
void ModuleBase_Operation::initSelection(ModuleBase_ISelection* theSelection,
{
myPropertyPanel = theProp;
myPropertyPanel->setEditingMode(isEditOperation());
- //connect(myPropertyPanel, SIGNAL(widgetActivated(ModuleBase_ModelWidget*)), this,
- // SLOT(onWidgetActivated(ModuleBase_ModelWidget*)));
+
+ // Do not activate widgets by default if the current operation is editing operation
+ // Because we don't know which widget is going to be edited.
+ if (!isEditOperation())
+ activateByPreselection();
}
bool ModuleBase_Operation::isGranted(QString theId) const
{
return myNestedFeatures.contains(theId);
-}
\ No newline at end of file
+}