+QMenu* XGUI_ContextMenuMgr::viewerMenu() const
+{
+ QMenu* aMenu = new QMenu();
+ addViewerItems(aMenu);
+ if (aMenu->actions().size() > 0) {
+ return aMenu;
+ }
+ delete aMenu;
+ return 0;
+}
+
+void XGUI_ContextMenuMgr::addViewerItems(QMenu* theMenu) const
+{
+ XGUI_SelectionMgr* aSelMgr = myWorkshop->selector();
+ QObjectPtrList aObjects = aSelMgr->selection()->selectedObjects();
+ if (aObjects.size() > 0) {
+ //if (aObjects.size() == 1)
+ // theMenu->addAction(action("EDIT_CMD"));
+ bool isVisible = false;
+ bool isShading = false;
+ foreach(ObjectPtr aObject, aObjects)
+ {
+ ResultPtr aRes = std::dynamic_pointer_cast<ModelAPI_Result>(aObject);
+ if (aRes && myWorkshop->displayer()->isVisible(aRes)) {
+ isVisible = true;
+ isShading = (myWorkshop->displayer()->displayMode(aObject) == XGUI_Displayer::Shading);
+ break;
+ }
+ }
+ if (isVisible) {
+ if (isShading)
+ theMenu->addAction(action("WIREFRAME_CMD"));
+ else
+ theMenu->addAction(action("SHADING_CMD"));
+ theMenu->addSeparator();
+ theMenu->addAction(action("SHOW_ONLY_CMD"));
+ theMenu->addAction(action("HIDE_CMD"));
+ } else
+ theMenu->addAction(action("SHOW_CMD"));
+ //theMenu->addAction(action("DELETE_CMD"));
+ }
+ if (myWorkshop->displayer()->objectsCount() > 0)
+ theMenu->addAction(action("HIDEALL_CMD"));
+ 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());
+ }
+ }
+}
+