X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FXGUI%2FXGUI_ContextMenuMgr.cpp;h=0abbb09ffe7bb8cbdd84e86c214622fb76dd8094;hb=a25996a80f13f4af8bd60a90edc3811bbbee3b2d;hp=60d6e9f8392ecb04d1ddb1c74adce731dfd13c0c;hpb=5a82631ae0ac6ea47916b608914b43b9ee785770;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ContextMenuMgr.cpp b/src/XGUI/XGUI_ContextMenuMgr.cpp index 60d6e9f83..0abbb09ff 100644 --- a/src/XGUI/XGUI_ContextMenuMgr.cpp +++ b/src/XGUI/XGUI_ContextMenuMgr.cpp @@ -3,9 +3,11 @@ #include "XGUI_Workshop.h" #include "XGUI_ObjectsBrowser.h" #include "XGUI_SelectionMgr.h" +#include "XGUI_Displayer.h" #include #include +#include #include #include @@ -14,7 +16,6 @@ XGUI_ContextMenuMgr::XGUI_ContextMenuMgr(XGUI_Workshop* theParent) : QObject(theParent), myWorkshop(theParent) { - } XGUI_ContextMenuMgr::~XGUI_ContextMenuMgr() @@ -31,6 +32,15 @@ void XGUI_ContextMenuMgr::createActions() aAction = new QAction(QIcon(":pictures/assembly.png"), tr("Deactivate"), this); addAction("DEACTIVATE_PART_CMD", aAction); + + aAction = new QAction(QIcon(":pictures/delete.png"), tr("Delete"), this); + addAction("DELETE_CMD", aAction); + + aAction = new QAction(QIcon(":pictures/eye_pencil.png"), tr("Show"), this); + addAction("SHOW_CMD", aAction); + + aAction = new QAction(QIcon(":pictures/eye_pencil_closed.png"), tr("Hide"), this); + addAction("HIDE_CMD", aAction); } void XGUI_ContextMenuMgr::addAction(const QString& theId, QAction* theAction) @@ -78,7 +88,7 @@ void XGUI_ContextMenuMgr::onContextMenuRequest(QContextMenuEvent* theEvent) QMenu* XGUI_ContextMenuMgr::objectBrowserMenu() const { - QList aActions; + QMenu* aMenu = new QMenu(); XGUI_SelectionMgr* aSelMgr = myWorkshop->selector(); QFeatureList aFeatures = aSelMgr->selectedFeatures(); if (aFeatures.size() == 1) { @@ -87,28 +97,36 @@ QMenu* XGUI_ContextMenuMgr::objectBrowserMenu() const //Process Feature if (aFeature) { if (aFeature->getKind() == "Part") { - boost::shared_ptr aFeaDoc = aFeature->data()->docRef("PartDocument")->value(); + ObjectPtr aObject = boost::dynamic_pointer_cast(aFeature); + DocumentPtr aFeaDoc = aObject->featureRef()->data()->docRef("PartDocument")->value(); if (aMgr->currentDocument() == aFeaDoc) - aActions.append(action("DEACTIVATE_PART_CMD")); + aMenu->addAction(action("DEACTIVATE_PART_CMD")); else - aActions.append(action("ACTIVATE_PART_CMD")); + aMenu->addAction(action("ACTIVATE_PART_CMD")); } else { - aActions.append(action("EDIT_CMD")); + aMenu->addAction(action("EDIT_CMD")); + + XGUI_Displayer* aDisplayer = myWorkshop->displayer(); + if (aDisplayer->IsVisible(aFeature)) + aMenu->addAction(action("HIDE_CMD")); + else + aMenu->addAction(action("SHOW_CMD")); } + aMenu->addAction(action("DELETE_CMD")); + aMenu->addSeparator(); // Process Root object (document) } else { // If feature is 0 the it means that selected root object (document) if (aMgr->currentDocument() != aMgr->rootDocument()) { - aActions.append(action("ACTIVATE_PART_CMD")); + aMenu->addAction(action("ACTIVATE_PART_CMD")); } } } - aActions.append(myWorkshop->objectBrowser()->actions()); - if (aActions.size() > 0) { - QMenu* aMenu = new QMenu(); - aMenu->addActions(aActions); + aMenu->addActions(myWorkshop->objectBrowser()->actions()); + if (aMenu->actions().size() > 0) { return aMenu; } + delete aMenu; return 0; }