Salome HOME
Make same planes cannot be used twice in partition tool
[modules/shaper.git] / src / XGUI / XGUI_ContextMenuMgr.cpp
index 7b570f9cc678e355d46742099997b519f4a70d1e..e1b8584766d9865eb70e67d9ee6c6de6354c2363 100644 (file)
@@ -62,16 +62,18 @@ void XGUI_ContextMenuMgr::createActions()
   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);
 
@@ -215,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 {
@@ -241,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
@@ -370,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;
@@ -388,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
@@ -402,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;
@@ -432,6 +439,7 @@ 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);
@@ -458,14 +466,18 @@ 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);
 
 #ifndef HAVE_SALOME