From 6adda6619cc1396212b3d46acdb3a537a630fb67 Mon Sep 17 00:00:00 2001 From: vsv Date: Fri, 31 Oct 2014 16:53:07 +0300 Subject: [PATCH] Update pop-up menu of group object. --- src/XGUI/XGUI_ContextMenuMgr.cpp | 75 +++++++++++++++++--------------- 1 file changed, 41 insertions(+), 34 deletions(-) diff --git a/src/XGUI/XGUI_ContextMenuMgr.cpp b/src/XGUI/XGUI_ContextMenuMgr.cpp index a96189889..f951d7a27 100644 --- a/src/XGUI/XGUI_ContextMenuMgr.cpp +++ b/src/XGUI/XGUI_ContextMenuMgr.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -120,58 +121,64 @@ QMenu* XGUI_ContextMenuMgr::objectBrowserMenu() const XGUI_Displayer* aDisplayer = myWorkshop->displayer(); bool hasResult = false; bool hasFeature = false; + bool hasGroup = false; foreach(ObjectPtr aObj, aObjects) { FeaturePtr aFeature = boost::dynamic_pointer_cast(aObj); ResultPtr aResult = boost::dynamic_pointer_cast(aObj); + ResultGroupPtr aGroupRes = boost::dynamic_pointer_cast(aObj); if (aResult) hasResult = true; if (aFeature) hasFeature = true; - if (hasFeature && hasResult) + if (aGroupRes) + hasGroup = true; + if (hasFeature && hasResult && hasGroup) break; } //Process Feature - if (aSelected == 1) { - ObjectPtr aObject = aObjects.first(); - if (aObject) { - ResultPartPtr aPart = boost::dynamic_pointer_cast(aObject); - if (aPart) { - if (aMgr->activeDocument() == aPart->partDoc()) - aMenu->addAction(action("DEACTIVATE_PART_CMD")); - else - aMenu->addAction(action("ACTIVATE_PART_CMD")); - } else if (hasFeature) { - aMenu->addAction(action("EDIT_CMD")); - } else { - if (aDisplayer->isVisible(aObject)) { - if (aDisplayer->displayMode(aObject) == XGUI_Displayer::Shading) - aMenu->addAction(action("WIREFRAME_CMD")); + if (!hasGroup) { + if (aSelected == 1) { + ObjectPtr aObject = aObjects.first(); + if (aObject) { + ResultPartPtr aPart = boost::dynamic_pointer_cast(aObject); + if (aPart) { + if (aMgr->activeDocument() == aPart->partDoc()) + aMenu->addAction(action("DEACTIVATE_PART_CMD")); else - aMenu->addAction(action("SHADING_CMD")); - aMenu->addSeparator(); - aMenu->addAction(action("HIDE_CMD")); + aMenu->addAction(action("ACTIVATE_PART_CMD")); + } else if (hasFeature) { + aMenu->addAction(action("EDIT_CMD")); } else { - aMenu->addAction(action("SHOW_CMD")); + if (aDisplayer->isVisible(aObject)) { + if (aDisplayer->displayMode(aObject) == XGUI_Displayer::Shading) + aMenu->addAction(action("WIREFRAME_CMD")); + else + aMenu->addAction(action("SHADING_CMD")); + aMenu->addSeparator(); + aMenu->addAction(action("HIDE_CMD")); + } else { + aMenu->addAction(action("SHOW_CMD")); + } + aMenu->addAction(action("SHOW_ONLY_CMD")); } + } else { // If feature is 0 the it means that selected root object (document) + if (aMgr->activeDocument() != aMgr->moduleDocument()) + aMenu->addAction(action("ACTIVATE_PART_CMD")); + } + } else { + if (hasResult) { + aMenu->addAction(action("SHOW_CMD")); + aMenu->addAction(action("HIDE_CMD")); aMenu->addAction(action("SHOW_ONLY_CMD")); + aMenu->addSeparator(); + aMenu->addAction(action("SHADING_CMD")); + aMenu->addAction(action("WIREFRAME_CMD")); } - } else { // If feature is 0 the it means that selected root object (document) - if (aMgr->activeDocument() != aMgr->moduleDocument()) - aMenu->addAction(action("ACTIVATE_PART_CMD")); - } - } else { - if (hasResult) { - aMenu->addAction(action("SHOW_CMD")); - aMenu->addAction(action("HIDE_CMD")); - aMenu->addAction(action("SHOW_ONLY_CMD")); - aMenu->addSeparator(); - aMenu->addAction(action("SHADING_CMD")); - aMenu->addAction(action("WIREFRAME_CMD")); } + if (hasFeature) + aMenu->addAction(action("DELETE_CMD")); } - if (hasFeature) - aMenu->addAction(action("DELETE_CMD")); } aMenu->addSeparator(); aMenu->addActions(myWorkshop->objectBrowser()->actions()); -- 2.39.2