X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_ContextMenuMgr.cpp;h=fe220b6578c83044f9938a0b15e9f4329e7be525;hb=4cb749258f33b7de231da5bb50140407c0599d30;hp=226aa30dda252dfedcba4bca6b533df7f10a1a5d;hpb=749e980caeebfe4d16441703b7028dbbb1f1d91a;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ContextMenuMgr.cpp b/src/XGUI/XGUI_ContextMenuMgr.cpp index 226aa30dd..fe220b657 100644 --- a/src/XGUI/XGUI_ContextMenuMgr.cpp +++ b/src/XGUI/XGUI_ContextMenuMgr.cpp @@ -55,7 +55,7 @@ #include #include -#include +#include #include #include @@ -96,10 +96,14 @@ void XGUI_ContextMenuMgr::createActions() aDesktop, this, SLOT(onRename())); addAction("RENAME_CMD", aAction); - aAction = ModuleBase_Tools::createAction(QIcon(":pictures/move.png"), + aAction = ModuleBase_Tools::createAction(QIcon(":pictures/move_to_end.png"), XGUI_Workshop::MOVE_TO_END_COMMAND, this); addAction("MOVE_CMD", aAction); + aAction = ModuleBase_Tools::createAction(QIcon(":pictures/move_to_end_split.png"), + XGUI_Workshop::MOVE_TO_END_SPLIT_COMMAND, this); + addAction("MOVE_SPLIT_CMD", aAction); + aAction = ModuleBase_Tools::createAction(QIcon(":pictures/clean_history.png"), tr("Clean history"), aDesktop); addAction("CLEAN_HISTORY_CMD", aAction); @@ -136,6 +140,14 @@ void XGUI_ContextMenuMgr::createActions() aDesktop); addAction("WIREFRAME_CMD", aAction); + aAction = ModuleBase_Tools::createAction(QIcon(":pictures/iso_lines.png"), tr("Define Isos..."), + aDesktop); + addAction("ISOLINES_CMD", aAction); + + aAction = ModuleBase_Tools::createAction(QIcon(), tr("Show Isos..."), aDesktop); + aAction->setCheckable(true); + addAction("SHOW_ISOLINES_CMD", aAction); + mySeparator1 = ModuleBase_Tools::createAction(QIcon(), "", aDesktop); mySeparator1->setSeparator(true); @@ -293,12 +305,14 @@ void XGUI_ContextMenuMgr::updateObjectBrowserMenu() bool hasCompositeOwner = false; bool hasResultInHistory = false; bool hasFolder = false; - bool canBeDeleted = true; ModuleBase_Tools::checkObjects(aObjects, hasResult, hasFeature, hasParameter, hasCompositeOwner, hasResultInHistory, hasFolder); //Process Feature if (aSelected == 1) { // single selection ObjectPtr aObject = aObjects.first(); + ResultPtr aResult; + if (hasResult) + aResult = std::dynamic_pointer_cast(aObject); if (aObject) { if (hasResult && myWorkshop->canBeShaded(aObject)) { XGUI_Displayer::DisplayMode aMode = aDisplayer->displayMode(aObject); @@ -309,10 +323,12 @@ void XGUI_ContextMenuMgr::updateObjectBrowserMenu() action("WIREFRAME_CMD")->setEnabled(true); action("SHADING_CMD")->setEnabled(true); } + action("SHOW_ISOLINES_CMD")->setEnabled(true); + action("SHOW_ISOLINES_CMD")->setChecked(ModelAPI_Tools::isShownIsoLines(aResult)); + action("ISOLINES_CMD")->setEnabled(true); } if (!hasFeature) { - bool aHasSubResults = ModelAPI_Tools::hasSubResults( - std::dynamic_pointer_cast(aObject)); + bool aHasSubResults = ModelAPI_Tools::hasSubResults(aResult); if (aHasSubResults) { action("HIDE_CMD")->setEnabled(true); action("SHOW_CMD")->setEnabled(true); @@ -327,19 +343,15 @@ void XGUI_ContextMenuMgr::updateObjectBrowserMenu() if (!(hasParameter || hasFeature)) action("SHOW_ONLY_CMD")->setEnabled(true); } - else if (hasFeature && myWorkshop->canMoveFeature()) + else if (hasFeature && myWorkshop->canMoveFeature()) { action("MOVE_CMD")->setEnabled(true); + action("MOVE_SPLIT_CMD")->setEnabled(true); + } if( aMgr->activeDocument() == aObject->document() ) { action("RENAME_CMD")->setEnabled(true); - if (aObject->groupName() == ModelAPI_ResultConstruction::group()) { - FeaturePtr aFeature = ModelAPI_Feature::feature(aObject); - canBeDeleted = aFeature->isInHistory(); - action("DELETE_CMD")->setEnabled(canBeDeleted); - } - else - action("DELETE_CMD")->setEnabled(!hasCompositeOwner); + action("DELETE_CMD")->setEnabled(!hasCompositeOwner); action("CLEAN_HISTORY_CMD")->setEnabled(!hasCompositeOwner && (hasFeature || hasParameter)); } @@ -353,15 +365,12 @@ void XGUI_ContextMenuMgr::updateObjectBrowserMenu() action("SHOW_ONLY_CMD")->setEnabled(true); action("SHADING_CMD")->setEnabled(true); action("WIREFRAME_CMD")->setEnabled(true); - - foreach(ObjectPtr aObj, aObjects) { - FeaturePtr aFeature = ModelAPI_Feature::feature(aObj); - if (!aFeature->isInHistory()) { - canBeDeleted = false; - break; - } - } - action("DELETE_CMD")->setEnabled(canBeDeleted); + action("SHOW_ISOLINES_CMD")->setEnabled(true); + action("ISOLINES_CMD")->setEnabled(true); + } + if (hasFeature && myWorkshop->canMoveFeature()) { + action("MOVE_CMD")->setEnabled(true); + action("MOVE_SPLIT_CMD")->setEnabled(true); } } // end multi-selection @@ -462,8 +471,8 @@ void XGUI_ContextMenuMgr::updateObjectBrowserMenu() break; } if (!hasCompositeOwner && allActive ) { - if (hasResult || hasFeature || hasParameter) // #2924 results can be erased - action("DELETE_CMD")->setEnabled(canBeDeleted); + if (hasResult || hasFeature || hasParameter) // #2924 results can be erased + action("DELETE_CMD")->setEnabled(true); } if (!hasCompositeOwner && allActive && (hasFeature|| hasParameter)) action("CLEAN_HISTORY_CMD")->setEnabled(true); @@ -547,6 +556,15 @@ void XGUI_ContextMenuMgr::updateViewerMenu() action("WIREFRAME_CMD")->setEnabled(true); action("SHADING_CMD")->setEnabled(true); } + action("ISOLINES_CMD")->setEnabled(true); + + if (aPrsList.size() == 1) { + ResultPtr aResult = std::dynamic_pointer_cast(aObject); + if (aResult.get()) { + action("SHOW_ISOLINES_CMD")->setEnabled(true); + action("SHOW_ISOLINES_CMD")->setChecked(ModelAPI_Tools::isShownIsoLines(aResult)); + } + } } action("SHOW_ONLY_CMD")->setEnabled(true); action("HIDE_CMD")->setEnabled(true); @@ -609,8 +627,7 @@ void XGUI_ContextMenuMgr::updateViewerMenu() if (myWorkshop->canChangeProperty("TRANSPARENCY_CMD")) action("TRANSPARENCY_CMD")->setEnabled(true); - // Delete command is not used in viewer pop-up menu - action("DELETE_CMD")->setEnabled(false); + action("DELETE_CMD")->setEnabled(true); } void XGUI_ContextMenuMgr::connectObjectBrowser() @@ -662,6 +679,8 @@ void XGUI_ContextMenuMgr::buildObjBrowserMenu() aList.append(action("COLOR_CMD")); aList.append(action("DEFLECTION_CMD")); aList.append(action("TRANSPARENCY_CMD")); + aList.append(action("SHOW_ISOLINES_CMD")); + aList.append(action("ISOLINES_CMD")); aList.append(action("SHOW_FEATURE_CMD")); aList.append(mySeparator3); aList.append(action("DELETE_CMD")); @@ -677,6 +696,7 @@ void XGUI_ContextMenuMgr::buildObjBrowserMenu() aList.append(action("RENAME_CMD")); aList.append(action("SHOW_RESULTS_CMD")); aList.append(action("MOVE_CMD")); + aList.append(action("MOVE_SPLIT_CMD")); aList.append(mySeparator1); aList.append(action("INSERT_FOLDER_CMD")); aList.append(action("ADD_TO_FOLDER_BEFORE_CMD")); @@ -736,6 +756,8 @@ void XGUI_ContextMenuMgr::buildViewerMenu() aList.append(action("COLOR_CMD")); aList.append(action("DEFLECTION_CMD")); aList.append(action("TRANSPARENCY_CMD")); + aList.append(action("SHOW_ISOLINES_CMD")); + aList.append(action("ISOLINES_CMD")); aList.append(mySeparator3); aList.append(action("SET_VIEW_NORMAL_CMD")); aList.append(action("SET_VIEW_INVERTEDNORMAL_CMD")); @@ -784,10 +806,13 @@ void XGUI_ContextMenuMgr::addObjBrowserMenu(QMenu* theMenu) const aActions.append(action("ADD_OUT_FOLDER_BEFORE_CMD")); aActions.append(action("ADD_OUT_FOLDER_AFTER_CMD")); aActions.append(mySeparator3); - //aActions.append(action("MOVE_CMD")); + aActions.append(action("MOVE_CMD")); + aActions.append(action("MOVE_SPLIT_CMD")); aActions.append(action("COLOR_CMD")); aActions.append(action("DEFLECTION_CMD")); aActions.append(action("TRANSPARENCY_CMD")); + aActions.append(action("SHOW_ISOLINES_CMD")); + aActions.append(action("ISOLINES_CMD")); aActions.append(action("CLEAN_HISTORY_CMD")); aActions.append(action("DELETE_CMD")); }