Salome HOME
SketchEntity object for the Sketch features
[modules/shaper.git] / src / XGUI / XGUI_ContextMenuMgr.cpp
index dcde2a6b592a2bc710f42505b8e96983b26fd3d7..ece5d2d2bafb64b118d6c1ea1e006ff4ef1452c2 100644 (file)
@@ -7,6 +7,7 @@
 #include "XGUI_Displayer.h"
 #include "XGUI_ViewerProxy.h"
 #include "XGUI_Selection.h"
+#include "XGUI_SalomeConnector.h"
 
 #include <AppElements_MainWindow.h>
 
@@ -19,6 +20,8 @@
 #include <ModelAPI_Session.h>
 #include <ModelAPI_ResultGroup.h>
 
+#include <ModuleBase_IModule.h>
+
 #include <QAction>
 #include <QContextMenuEvent>
 #include <QMenu>
@@ -46,7 +49,17 @@ void XGUI_ContextMenuMgr::createActions()
   addAction("DEACTIVATE_PART_CMD", aAction);
 
   aAction = new QAction(QIcon(":pictures/delete.png"), tr("Delete"), this);
+  QMainWindow* aDesktop = myWorkshop->mainWindow();
+  if (!aDesktop)
+    aDesktop = myWorkshop->salomeConnector()->desktop();
+  aDesktop->addAction(aAction);
+
   addAction("DELETE_CMD", aAction);
+  aAction->setShortcut(Qt::Key_Delete);
+  aAction->setShortcutContext(Qt::ApplicationShortcut);
+
+  aAction = new QAction(QIcon(":pictures/color.png"), tr("Color"), this);
+  addAction("COLOR_CMD", aAction);
 
   aAction = new QAction(QIcon(":pictures/eye_pencil.png"), tr("Show"), this);
   addAction("SHOW_CMD", aAction);
@@ -145,7 +158,7 @@ QMenu* XGUI_ContextMenuMgr::objectBrowserMenu() const
             aMenu->addAction(action("DEACTIVATE_PART_CMD"));
           else
             aMenu->addAction(action("ACTIVATE_PART_CMD"));
-        } else if (hasFeature) {
+        } else if (hasFeature && aObject->document() == aMgr->activeDocument()) {
           aMenu->addAction(action("EDIT_CMD"));
         } else {
           if (aDisplayer->isVisible(aObject)) {
@@ -179,8 +192,16 @@ QMenu* XGUI_ContextMenuMgr::objectBrowserMenu() const
     if (hasFeature)
       aMenu->addAction(action("DELETE_CMD"));
   }
+  if (myWorkshop->canChangeColor())
+    aMenu->addAction(action("COLOR_CMD"));
+
   aMenu->addSeparator();
   aMenu->addActions(myWorkshop->objectBrowser()->actions());
+
+  ModuleBase_IModule* aModule = myWorkshop->module();
+  if (aModule)
+    aModule->addObjectBrowserItems(aMenu);
+
   if (aMenu->actions().size() > 0) {
     return aMenu;
   }
@@ -243,6 +264,12 @@ void XGUI_ContextMenuMgr::addViewerItems(QMenu* theMenu) const
       aSubMenu->addActions(aMDI->actions());
     }
   }
+  if (myWorkshop->canChangeColor())
+    theMenu->addAction(action("COLOR_CMD"));
+
+  ModuleBase_IModule* aModule = myWorkshop->module();
+  if (aModule)
+    aModule->addViewerItems(theMenu);
 }
 
 void XGUI_ContextMenuMgr::connectObjectBrowser() const