aCommand->connectTo(this, SLOT(onRedo()));
aCommand = aGroup->addFeature("REBUILD_CMD", tr("Rebuild"), tr("Rebuild data objects"),
- QIcon(":pictures/rebuild.png"));
+ QIcon(":pictures/rebuild.png"), QKeySequence());
aCommand->connectTo(this, SLOT(onRebuild()));
aCommand = aGroup->addFeature("SAVEAS_CMD", tr("Save as..."), tr("Save the document into a file"),
- QIcon(":pictures/save.png"));
+ QIcon(":pictures/save.png"), QKeySequence());
aCommand->connectTo(this, SLOT(onSaveAs()));
//aCommand->disable();
// Find and Activate active part
if (myPartActivating)
return;
+ myActionsMgr->update();
SessionPtr aMgr = ModelAPI_Session::get();
DocumentPtr aActiveDoc = aMgr->activeDocument();
DocumentPtr aDoc = aMgr->moduleDocument();
for (; anIt != aLast; anIt++) {
aWidget = *anIt;
aWidget->setFeature(aOperation->feature());
+ aWidget->enableFocusProcessing();
QObject::connect(aWidget, SIGNAL(valuesChanged()), this, SLOT(onWidgetValuesChanged()));
// Init default values
if (!aOperation->isEditOperation() && !aWidget->isComputedDefault()) {
myPropertyPanel->setModelWidgets(aWidgets);
myPropertyPanel->onActivateNextWidget(NULL);
- myPropertyPanel->setWindowTitle(aOperation->getDescription()->description());
+ // Widget activation (from the previous method) may commit the current operation
+ // if pre-selection is enougth for it. So we shouldn't update prop panel's title
+ if(myOperationMgr->isCurrentOperation(aOperation)) {
+ myPropertyPanel->setWindowTitle(aOperation->getDescription()->description());
+ }
}
updateCommandStatus();
}
{
PostponeMessageQtEvent* aPostponedEv = dynamic_cast<PostponeMessageQtEvent*>(theEvent);
if (aPostponedEv) {
-#ifdef _DEBUG
- std::cout << "XGUI_Workshop::event " << "Got PostponeMessageQtEvent" << std::endl;
- bool isMyThread = (QApplication::instance()->thread() == QThread::currentThread());
- std::cout << "XGUI_Workshop::event " << "I am in the Qt's thread: "
- << isMyThread << std::endl;
-#endif
boost::shared_ptr<Events_Message> aEventPtr = aPostponedEv->postponedMessage();
processEvent(aEventPtr);
return true;
QString::fromStdString(theMessage->text()),
QString::fromStdString(theMessage->tooltip()),
QIcon(theMessage->icon().c_str()),
- QKeySequence(), isUsePropPanel);
+ QKeySequence(),
+ isUsePropPanel);
salomeConnector()->setNestedActions(aFeatureId, aNestedFeatures.split(" ", QString::SkipEmptyParts));
myActionsMgr->addCommand(aAction);
myModule->featureCreated(aAction);
if (!aGroup) {
aGroup = aPage->addGroup(aGroupName);
}
+ QString aDocKind = QString::fromStdString(theMessage->documentKind());
// Check if hotkey sequence is already defined:
QKeySequence aHotKey = myActionsMgr->registerShortcut(
QString::fromStdString(theMessage->keysequence()));
XGUI_Command* aCommand = aGroup->addFeature(aFeatureId,
QString::fromStdString(theMessage->text()),
QString::fromStdString(theMessage->tooltip()),
- QIcon(theMessage->icon().c_str()), aHotKey,
+ QIcon(theMessage->icon().c_str()),
+ aDocKind,
+ aHotKey,
isUsePropPanel);
aCommand->setNestedCommands(aNestedFeatures.split(" ", QString::SkipEmptyParts));
myActionsMgr->addCommand(aCommand);
//******************************************************
void XGUI_Workshop::onRebuild()
{
+ SessionPtr aMgr = ModelAPI_Session::get();
+ bool aWasOperation = aMgr->isOperation(); // keep this value
+ if (!aWasOperation) {
+ aMgr->startOperation();
+ }
static const Events_ID aRebuildEvent = Events_Loop::loop()->eventByName("Rebuild");
Events_Loop::loop()->send(boost::shared_ptr<Events_Message>(
new Events_Message(aRebuildEvent, this)));
+ if (!aWasOperation) {
+ aMgr->finishOperation();
+ }
}
//******************************************************
if (!err.isEmpty()) {
if (mainWindow()) {
- QMessageBox::warning(mainWindow(), tr("Error"), err);
+ Events_Error::send(err.toStdString());
} else {
qWarning(qPrintable(err));
}
showObjects(aObjects, false);
else if (theId == "SHOW_ONLY_CMD")
showOnlyObjects(aObjects);
+ else if (theId == "SHADING_CMD")
+ setDisplayMode(aObjects, XGUI_Displayer::Shading);
+ else if (theId == "WIREFRAME_CMD")
+ setDisplayMode(aObjects, XGUI_Displayer::Wireframe);
+ else if (theId == "HIDEALL_CMD")
+ myDisplayer->eraseAll();
}
//**************************************************************
for (int i = 0; i < theDoc->size(theGroup); i++)
myDisplayer->display(theDoc->object(theGroup, i), false);
}
+
+//**************************************************************
+void XGUI_Workshop::setDisplayMode(const QList<ObjectPtr>& theList, int theMode)
+{
+ foreach(ObjectPtr aObj, theList) {
+ myDisplayer->setDisplayMode(aObj, (XGUI_Displayer::DisplayMode)theMode, false);
+ }
+ if (theList.size() > 0)
+ myDisplayer->updateViewer();
+}