#include "XGUI_ObjectsBrowser.h"
#include "XGUI_SelectionMgr.h"
#include "XGUI_Displayer.h"
+#include "XGUI_MainWindow.h"
+#include "XGUI_ViewerProxy.h"
#include "PartSetPlugin_Part.h"
#include <QAction>
#include <QContextMenuEvent>
#include <QMenu>
+#include <QMdiArea>
XGUI_ContextMenuMgr::XGUI_ContextMenuMgr(XGUI_Workshop* theParent) :
QObject(theParent), myWorkshop(theParent)
QMenu* aMenu = 0;
if (sender() == myWorkshop->objectBrowser())
aMenu = objectBrowserMenu();
-
- if (aMenu) {
+ else if (sender() == myWorkshop->viewer()) {
+ aMenu = viewerMenu();
+ }
+
+ if (aMenu && (aMenu->actions().size() > 0)) {
aMenu->exec(theEvent->globalPos());
delete aMenu;
}
return 0;
}
+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();
+ QFeatureList aFeatures = aSelMgr->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*)),
this, SLOT(onContextMenuRequest(QContextMenuEvent*)));
-}
\ No newline at end of file
+}
+
+void XGUI_ContextMenuMgr::connectViewer() const
+{
+ connect(myWorkshop->viewer(), SIGNAL(contextMenuRequested(QContextMenuEvent*)),
+ this, SLOT(onContextMenuRequest(QContextMenuEvent*)));
+}
+