X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_ContextMenuMgr.cpp;h=8ecb179b3d1b77a46503126208ead9d91469b882;hb=47c18d4de2719126f6b045b5c37525cd8f170aa1;hp=a02f1d2dc397bc3a573ad4e54727067e52ba7883;hpb=c2ffb268ca15d135b371efbde80ff33d59a08f24;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ContextMenuMgr.cpp b/src/XGUI/XGUI_ContextMenuMgr.cpp index a02f1d2dc..8ecb179b3 100644 --- a/src/XGUI/XGUI_ContextMenuMgr.cpp +++ b/src/XGUI/XGUI_ContextMenuMgr.cpp @@ -5,7 +5,8 @@ #include "XGUI_SelectionMgr.h" #include "XGUI_Displayer.h" #include "XGUI_MainWindow.h" -#include "XGUI_Viewer.h" +#include "XGUI_ViewerProxy.h" +#include "XGUI_Selection.h" #include "PartSetPlugin_Part.h" @@ -84,7 +85,7 @@ void XGUI_ContextMenuMgr::onContextMenuRequest(QContextMenuEvent* theEvent) QMenu* aMenu = 0; if (sender() == myWorkshop->objectBrowser()) aMenu = objectBrowserMenu(); - else if (sender() == myWorkshop->mainWindow()->viewer()) { + else if (sender() == myWorkshop->viewer()) { aMenu = viewerMenu(); } @@ -98,7 +99,7 @@ QMenu* XGUI_ContextMenuMgr::objectBrowserMenu() const { QMenu* aMenu = new QMenu(); XGUI_SelectionMgr* aSelMgr = myWorkshop->selector(); - QFeatureList aFeatures = aSelMgr->selectedFeatures(); + QFeatureList aFeatures = aSelMgr->selection()->selectedFeatures(); if (aFeatures.size() == 1) { PluginManagerPtr aMgr = ModelAPI_PluginManager::get(); FeaturePtr aFeature = aFeatures.first(); @@ -141,19 +142,7 @@ QMenu* XGUI_ContextMenuMgr::objectBrowserMenu() const QMenu* XGUI_ContextMenuMgr::viewerMenu() const { QMenu* aMenu = new QMenu(); - XGUI_SelectionMgr* aSelMgr = myWorkshop->selector(); - QFeatureList aFeatures = aSelMgr->selectedFeatures(); - if (aFeatures.size() > 0) { - if (aFeatures.size() > 0) - aMenu->addAction(action("EDIT_CMD")); - aMenu->addAction(action("HIDE_CMD")); - aMenu->addAction(action("DELETE_CMD")); - } - QMdiArea* aMDI = myWorkshop->mainWindow()->mdiArea(); - if (aMDI->actions().size() > 0) { - QMenu* aSubMenu = aMenu->addMenu(tr("Windows")); - aSubMenu->addActions(aMDI->actions()); - } + addViewerItems(aMenu); if (aMenu->actions().size() > 0) { return aMenu; } @@ -161,6 +150,35 @@ QMenu* XGUI_ContextMenuMgr::viewerMenu() const return 0; } +void XGUI_ContextMenuMgr::addViewerItems(QMenu* theMenu) const +{ + XGUI_SelectionMgr* aSelMgr = myWorkshop->selector(); + QFeatureList aFeatures = aSelMgr->selection()->selectedFeatures(); + if (aFeatures.size() > 0) { + if (aFeatures.size() == 1) + theMenu->addAction(action("EDIT_CMD")); + bool isVisible = false; + foreach(FeaturePtr aFeature, aFeatures) { + if (myWorkshop->displayer()->isVisible(aFeature)) { + isVisible = true; + break; + } + } + if (isVisible) + theMenu->addAction(action("HIDE_CMD")); + else + theMenu->addAction(action("SHOW_CMD")); + theMenu->addAction(action("DELETE_CMD")); + } + if (!myWorkshop->isSalomeMode()) { + QMdiArea* aMDI = myWorkshop->mainWindow()->mdiArea(); + if (aMDI->actions().size() > 0) { + QMenu* aSubMenu = theMenu->addMenu(tr("Windows")); + aSubMenu->addActions(aMDI->actions()); + } + } +} + void XGUI_ContextMenuMgr::connectObjectBrowser() const { connect(myWorkshop->objectBrowser(), SIGNAL(contextMenuRequested(QContextMenuEvent*)), @@ -169,7 +187,7 @@ void XGUI_ContextMenuMgr::connectObjectBrowser() const void XGUI_ContextMenuMgr::connectViewer() const { - // TODO: Adapt to SALOME mode - connect(myWorkshop->mainWindow()->viewer(), SIGNAL(contextMenuRequested(QContextMenuEvent*)), + connect(myWorkshop->viewer(), SIGNAL(contextMenuRequested(QContextMenuEvent*)), this, SLOT(onContextMenuRequest(QContextMenuEvent*))); } +