Salome HOME
Set font of the Root Label the same as in Tree View
[modules/shaper.git] / src / XGUI / XGUI_ContextMenuMgr.cpp
index c65481a0879e1cc85c89837a6d71c4cba9873445..7c40774ddf0edbc0d0206e3ca33c9a0de7a1b15d 100644 (file)
@@ -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 <AppElements_MainWindow.h>
+#endif
 
 //#include "PartSetPlugin_Part.h"
 
 
 #include <ModuleBase_IModule.h>
 #include <ModuleBase_Tools.h>
+#include <ModuleBase_OperationAction.h>
 
 #include <QAction>
 #include <QContextMenuEvent>
 #include <QMenu>
 #include <QMdiArea>
+#include <QMainWindow>
 
 
 XGUI_ContextMenuMgr::XGUI_ContextMenuMgr(XGUI_Workshop* theParent)
@@ -46,10 +52,13 @@ 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);
@@ -177,8 +186,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(
@@ -203,7 +218,7 @@ void XGUI_ContextMenuMgr::updateObjectBrowserMenu()
         if( aMgr->activeDocument() == aObject->document() )
         {
           action("RENAME_CMD")->setEnabled(true);
-          action("DELETE_CMD")->setEnabled(true);
+          action("DELETE_CMD")->setEnabled(!hasSubFeature);
         }
       }
     } else {
@@ -278,8 +293,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);
@@ -446,14 +468,14 @@ void XGUI_ContextMenuMgr::addViewerMenu(QMenu* theMenu) const
   }
   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)
@@ -479,5 +501,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();
 }