aCommand = aGroup->addFeature("REBUILD_CMD", tr("Rebuild"), tr("Rebuild data objects"),
QIcon(":pictures/rebuild.png"));
+ aCommand->connectTo(this, SLOT(onRebuild()));
aCommand = aGroup->addFeature("SAVEAS_CMD", tr("Save as..."), tr("Save the document into a file"),
QIcon(":pictures/save.png"));
}
}
}
- myOperationMgr->validateCurrentOperation();
+ myOperationMgr->onValidateOperation();
if (myObjectBrowser)
myObjectBrowser->processEvent(theMsg);
}
std::set<ObjectPtr>::const_iterator aIt;
for (aIt = aObjects.begin(); aIt != aObjects.end(); ++aIt) {
ObjectPtr aObj = (*aIt);
- if (!aObj->data() || !aObj->data()->isValid())
+ if (!aObj->data() || !aObj->data()->isValid() || aObj->document()->isConcealed(aObj))
myDisplayer->erase(aObj, false);
else {
if (myDisplayer->isVisible(aObj)) // TODO VSV: Correction sketch drawing
// it doesn't stored in the operation mgr and doesn't displayed
} else if (myOperationMgr->hasOperation()) {
ModuleBase_Operation* aOperation = myOperationMgr->currentOperation();
- if (aOperation->hasObject(*aIt)) { // Display only current operation results
+ if (!(*aIt)->document()->isConcealed(*aIt) &&
+ aOperation->hasObject(*aIt)) { // Display only current operation results
myDisplayer->display(*aIt, false);
isDisplayed = true;
}
}
myPropertyPanel->setModelWidgets(aWidgets);
+ myPropertyPanel->onActivateNextWidget(NULL);
myPropertyPanel->setWindowTitle(aOperation->getDescription()->description());
}
updateCommandStatus();
aCommand = salomeConnector()->command(theOperation->getDescription()->operationId());
} else {
XGUI_MainMenu* aMenu = myMainWindow->menuObject();
- aCommand = aMenu->feature(theOperation->getDescription()->operationId());
+ FeaturePtr aFeature = theOperation->feature();
+ if(aFeature)
+ aCommand = aMenu->feature(QString::fromStdString(aFeature->getKind()));
}
//Abort operation on uncheck the command
- if (aCommand)
+ if (aCommand) {
connect(aCommand, SIGNAL(triggered(bool)), theOperation, SLOT(setRunning(bool)));
+ }
}
/*
bool XGUI_Workshop::isActiveOperationAborted()
{
- if(!myOperationMgr->hasOperation())
- return true;
- return myOperationMgr->abortOperation();
+ return myOperationMgr->abortAllOperations();
}
//******************************************************
objectBrowser()->treeView()->setCurrentIndex(QModelIndex());
SessionPtr aMgr = ModelAPI_Session::get();
if (aMgr->isOperation())
- operationMgr()->abortOperation();
+ operationMgr()->onAbortOperation();
aMgr->undo();
updateCommandStatus();
}
objectBrowser()->treeView()->setCurrentIndex(QModelIndex());
SessionPtr aMgr = ModelAPI_Session::get();
if (aMgr->isOperation())
- operationMgr()->abortOperation();
+ operationMgr()->onAbortOperation();
aMgr->redo();
updateCommandStatus();
}
+//******************************************************
+void XGUI_Workshop::onRebuild()
+{
+ static const Events_ID aRebuildEvent = Events_Loop::loop()->eventByName("Rebuild");
+ Events_Loop::loop()->send(boost::shared_ptr<Events_Message>(
+ new Events_Message(aRebuildEvent, this)));
+}
+
//******************************************************
void XGUI_Workshop::onPreferences()
{
if (aMgr->hasModuleDocument()) {
QAction* aUndoCmd;
QAction* aRedoCmd;
- foreach(QAction* aCmd, aCommands)
- {
+ foreach(QAction* aCmd, aCommands) {
QString aId = aCmd->data().toString();
if (aId == "UNDO_CMD")
aUndoCmd = aCmd;
aUndoCmd->setEnabled(aMgr->canUndo());
aRedoCmd->setEnabled(aMgr->canRedo());
} else {
- foreach(QAction* aCmd, aCommands)
- {
+ foreach(QAction* aCmd, aCommands) {
QString aId = aCmd->data().toString();
if (aId == "NEW_CMD")
aCmd->setEnabled(true);
connect(aOkBtn, SIGNAL(clicked()), myOperationMgr, SLOT(onCommitOperation()));
QPushButton* aCancelBtn = myPropertyPanel->findChild<QPushButton*>(XGUI::PROP_PANEL_CANCEL);
connect(aCancelBtn, SIGNAL(clicked()), myOperationMgr, SLOT(onAbortOperation()));
-//TODO(sbh): KeyReleasedProblem
connect(myPropertyPanel, SIGNAL(keyReleased(QKeyEvent*)), myOperationMgr,
SLOT(onKeyReleased(QKeyEvent*)));
-
connect(myPropertyPanel, SIGNAL(widgetActivated(ModuleBase_ModelWidget*)), myOperationMgr,
SLOT(onWidgetActivated(ModuleBase_ModelWidget*)));
connect(myOperationMgr, SIGNAL(activateNextWidget(ModuleBase_ModelWidget*)), myPropertyPanel,
//**************************************************************
void XGUI_Workshop::updateCommandsOnViewSelection()
{
- SessionPtr aMgr = ModelAPI_Session::get();
- ModelAPI_ValidatorsFactory* aFactory = aMgr->validators();
XGUI_Selection* aSelection = mySelector->selection();
if (aSelection->getSelected().size() == 0)
return;
+ // Restrict validators to manage only nested (child) features
+ // of the current feature i.e. if current feature is Sketch -
+ // Sketch Features & Constraints can be validated.
+ QStringList aNestedIds;
+ if(myOperationMgr->hasOperation()) {
+ FeaturePtr aFeature = myOperationMgr->currentOperation()->feature();
+ if(aFeature) {
+ aNestedIds << myActionsMgr->nestedCommands(QString::fromStdString(aFeature->getKind()));
+ }
+ }
+ SessionPtr aMgr = ModelAPI_Session::get();
+ ModelAPI_ValidatorsFactory* aFactory = aMgr->validators();
QList<QAction*> aActions = getModuleCommands();
- foreach(QAction* aAction, aActions)
- {
+ foreach(QAction* aAction, aActions) {
QString aId = aAction->data().toString();
+ if(!aNestedIds.contains(aId))
+ continue;
std::list<ModelAPI_Validator*> aValidators;
std::list<std::list<std::string> > anArguments;
aFactory->validators(aId.toStdString(), aValidators, anArguments);