X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_ContextMenuMgr.cpp;h=e1b8584766d9865eb70e67d9ee6c6de6354c2363;hb=220bd2b37119be1c65abf88a88792445cb9d99f8;hp=ad3ce3ea8e4b537be2190ecc55ed9e7c06654b3b;hpb=d954d40632e449ce0e96f31755239f2344347239;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ContextMenuMgr.cpp b/src/XGUI/XGUI_ContextMenuMgr.cpp index ad3ce3ea8..e1b858476 100644 --- a/src/XGUI/XGUI_ContextMenuMgr.cpp +++ b/src/XGUI/XGUI_ContextMenuMgr.cpp @@ -9,8 +9,12 @@ #include "XGUI_Selection.h" #include "XGUI_SalomeConnector.h" #include "XGUI_DataModel.h" +#include "XGUI_OperationMgr.h" +#include "XGUI_Tools.h" +#ifndef HAVE_SALOME #include +#endif //#include "PartSetPlugin_Part.h" @@ -26,11 +30,13 @@ #include #include +#include #include #include #include #include +#include XGUI_ContextMenuMgr::XGUI_ContextMenuMgr(XGUI_Workshop* theParent) @@ -46,23 +52,28 @@ XGUI_ContextMenuMgr::~XGUI_ContextMenuMgr() void XGUI_ContextMenuMgr::createActions() { - QAction* aAction = new QAction(QIcon(":pictures/delete.png"), tr("Delete"), this); +#ifdef HAVE_SALOME + QMainWindow* aDesktop = myWorkshop->salomeConnector()->desktop(); +#else QMainWindow* aDesktop = myWorkshop->mainWindow(); - if (!aDesktop) - aDesktop = myWorkshop->salomeConnector()->desktop(); +#endif + + QAction* aAction = new QAction(QIcon(":pictures/delete.png"), tr("Delete"), this); aDesktop->addAction(aAction); addAction("DELETE_CMD", aAction); - aAction->setShortcut(Qt::Key_Delete); aAction->setShortcutContext(Qt::ApplicationShortcut); aAction = new QAction(QIcon(":pictures/rename_edit.png"), tr("Rename"), this); addAction("RENAME_CMD", aAction); connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onRename())); - aAction = new QAction(QIcon(":pictures/move.png"), tr("Move to the end"), this); + aAction = new QAction(QIcon(":pictures/move.png"), XGUI_Workshop::MOVE_TO_END_COMMAND, this); addAction("MOVE_CMD", aAction); + aAction = new QAction(QIcon(":pictures/clean_history.png"), tr("Clean history"), this); + addAction("CLEAN_HISTORY_CMD", aAction); + aAction = new QAction(QIcon(":pictures/color.png"), tr("Color..."), this); addAction("COLOR_CMD", aAction); @@ -177,8 +188,14 @@ void XGUI_ContextMenuMgr::updateObjectBrowserMenu() ObjectPtr aObject = aObjects.first(); if (aObject) { if (hasResult && myWorkshop->canBeShaded(aObject)) { - action("WIREFRAME_CMD")->setEnabled(true); - action("SHADING_CMD")->setEnabled(true); + XGUI_Displayer::DisplayMode aMode = aDisplayer->displayMode(aObject); + if (aMode != XGUI_Displayer::NoMode) { + action("WIREFRAME_CMD")->setEnabled(aMode == XGUI_Displayer::Shading); + action("SHADING_CMD")->setEnabled(aMode == XGUI_Displayer::Wireframe); + } else { + action("WIREFRAME_CMD")->setEnabled(true); + action("SHADING_CMD")->setEnabled(true); + } } if (!hasFeature) { bool aHasSubResults = ModelAPI_Tools::hasSubResults( @@ -200,10 +217,13 @@ void XGUI_ContextMenuMgr::updateObjectBrowserMenu() else if (hasFeature && myWorkshop->canMoveFeature()) action("MOVE_CMD")->setEnabled(true); + else if (hasFeature || hasParameter) + action("CLEAN_HISTORY_CMD")->setEnabled(true); + if( aMgr->activeDocument() == aObject->document() ) { action("RENAME_CMD")->setEnabled(true); - action("DELETE_CMD")->setEnabled(true); + action("DELETE_CMD")->setEnabled(!hasSubFeature); } } } else { @@ -226,6 +246,8 @@ void XGUI_ContextMenuMgr::updateObjectBrowserMenu() if (hasFeature || hasParameter) action("DELETE_CMD")->setEnabled(true); } + if (allActive && (hasFeature|| hasParameter)) + action("CLEAN_HISTORY_CMD")->setEnabled(true); } // Show/Hide command has to be disabled for objects from non active document @@ -278,8 +300,15 @@ void XGUI_ContextMenuMgr::updateViewerMenu() } if (isVisible) { if (canBeShaded) { - action("WIREFRAME_CMD")->setEnabled(true); - action("SHADING_CMD")->setEnabled(true); + XGUI_Displayer* aDisplayer = myWorkshop->displayer(); + XGUI_Displayer::DisplayMode aMode = aDisplayer->displayMode(aObject); + if (aMode != XGUI_Displayer::NoMode) { + action("WIREFRAME_CMD")->setEnabled(aMode == XGUI_Displayer::Shading); + action("SHADING_CMD")->setEnabled(aMode == XGUI_Displayer::Wireframe); + } else { + action("WIREFRAME_CMD")->setEnabled(true); + action("SHADING_CMD")->setEnabled(true); + } } action("SHOW_ONLY_CMD")->setEnabled(true); action("HIDE_CMD")->setEnabled(true); @@ -348,12 +377,14 @@ void XGUI_ContextMenuMgr::buildObjBrowserMenu() aList.clear(); aList.append(action("DELETE_CMD")); aList.append(action("MOVE_CMD")); + aList.append(action("CLEAN_HISTORY_CMD")); aList.append(mySeparator); aList.append(action("RENAME_CMD")); myObjBrowserMenus[ModelAPI_Feature::group()] = aList; aList.clear(); aList.append(action("DELETE_CMD")); + aList.append(action("CLEAN_HISTORY_CMD")); aList.append(mySeparator); aList.append(action("RENAME_CMD")); myObjBrowserMenus[ModelAPI_ResultParameter::group()] = aList; @@ -366,7 +397,6 @@ void XGUI_ContextMenuMgr::buildViewerMenu() // Result construction menu aList.append(action("HIDE_CMD")); aList.append(action("SHOW_ONLY_CMD")); - aList.append(action("HIDEALL_CMD")); aList.append(action("COLOR_CMD")); myViewerMenu[ModelAPI_ResultConstruction::group()] = aList; // Result part menu @@ -380,7 +410,6 @@ void XGUI_ContextMenuMgr::buildViewerMenu() aList.append(mySeparator); aList.append(action("HIDE_CMD")); aList.append(action("SHOW_ONLY_CMD")); - aList.append(action("HIDEALL_CMD")); myViewerMenu[ModelAPI_ResultBody::group()] = aList; // Group menu myViewerMenu[ModelAPI_ResultGroup::group()] = aList; @@ -410,6 +439,8 @@ void XGUI_ContextMenuMgr::addObjBrowserMenu(QMenu* theMenu) const aActions.append(mySeparator); aActions.append(action("DELETE_CMD")); //aActions.append(action("MOVE_CMD")); + aActions.append(action("CLEAN_HISTORY_CMD")); + aActions.append(action("COLOR_CMD")); } theMenu->addActions(aActions); @@ -435,22 +466,28 @@ void XGUI_ContextMenuMgr::addViewerMenu(QMenu* theMenu) const QActionsList aActions; if (aSelected == 1) { ObjectPtr aObject = aPrsList.first().object(); - std::string aName = aObject->groupName(); - if (myViewerMenu.contains(aName)) - aActions = myViewerMenu[aName]; + if (aObject.get() != NULL) { + std::string aName = aObject->groupName(); + if (myViewerMenu.contains(aName)) + aActions = myViewerMenu[aName]; + } + aActions.append(action("COLOR_CMD")); } else if (aSelected > 1) { aActions.append(action("HIDE_CMD")); + aActions.append(action("COLOR_CMD")); } + // hide all is shown always even if selection in the viewer is empty + aActions.append(action("HIDEALL_CMD")); theMenu->addActions(aActions); - if (!myWorkshop->isSalomeMode()) { - theMenu->addSeparator(); - QMdiArea* aMDI = myWorkshop->mainWindow()->mdiArea(); - if (aMDI->actions().size() > 0) { - QMenu* aSubMenu = theMenu->addMenu(tr("Windows")); - aSubMenu->addActions(aMDI->actions()); - } +#ifndef HAVE_SALOME + theMenu->addSeparator(); + QMdiArea* aMDI = myWorkshop->mainWindow()->mdiArea(); + if (aMDI->actions().size() > 0) { + QMenu* aSubMenu = theMenu->addMenu(tr("Windows")); + aSubMenu->addActions(aMDI->actions()); } +#endif } QStringList XGUI_ContextMenuMgr::actionObjectGroups(const QString& theName) @@ -476,5 +513,10 @@ QStringList XGUI_ContextMenuMgr::actionObjectGroups(const QString& theName) void XGUI_ContextMenuMgr::onRename() { + QObjectPtrList anObjects = myWorkshop->selector()->selection()->selectedObjects(); + if (!myWorkshop->abortAllOperations()) + return; + // restore selection in case if dialog box was shown + myWorkshop->objectBrowser()->setObjectsSelected(anObjects); myWorkshop->objectBrowser()->onEditItem(); }