From 983274afd0b92d3dc977f86b944a023f9a3f6f6b Mon Sep 17 00:00:00 2001 From: vsv Date: Fri, 23 Oct 2015 19:21:02 +0300 Subject: [PATCH] Issue #633: It can be compiled pure SALOME module or pure Open Parts standalone application --- CMakeLists.txt | 8 +- src/XGUI/CMakeLists.txt | 33 ++-- src/XGUI/XGUI_ActionsMgr.cpp | 28 +-- src/XGUI/XGUI_ContextMenuMgr.cpp | 26 ++- src/XGUI/XGUI_Displayer.cpp | 3 + src/XGUI/XGUI_SelectionMgr.cpp | 2 + src/XGUI/XGUI_ViewerProxy.cpp | 270 +++++++++++++------------- src/XGUI/XGUI_ViewerProxy.h | 10 +- src/XGUI/XGUI_Workshop.cpp | 301 +++++++++++++++-------------- src/XGUI/XGUI_Workshop.h | 39 ++-- src/XGUI/XGUI_WorkshopListener.cpp | 94 ++++----- 11 files changed, 432 insertions(+), 382 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c61e60c75..272c1b159 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,9 +58,13 @@ ADD_SUBDIRECTORY (src/SketchPlugin) ADD_SUBDIRECTORY (src/SketchSolver) ADD_SUBDIRECTORY (src/ModuleBase) ADD_SUBDIRECTORY (src/PartSet) -ADD_SUBDIRECTORY (src/AppElements) + +IF(NOT ${HAVE_SALOME}) + ADD_SUBDIRECTORY (src/AppElements) + ADD_SUBDIRECTORY (src/GeomApp) +ENDIF(NOT ${HAVE_SALOME}) + ADD_SUBDIRECTORY (src/XGUI) -ADD_SUBDIRECTORY (src/GeomApp) ADD_SUBDIRECTORY (src/ExchangePlugin) ADD_SUBDIRECTORY (src/GeomValidators) ADD_SUBDIRECTORY (src/InitializationPlugin) diff --git a/src/XGUI/CMakeLists.txt b/src/XGUI/CMakeLists.txt index 704b5ea05..56f7bebd6 100644 --- a/src/XGUI/CMakeLists.txt +++ b/src/XGUI/CMakeLists.txt @@ -73,7 +73,6 @@ SET(PROJECT_LIBRARIES Config ModelAPI ModuleBase - AppElements ${QT_LIBRARIES} ${CAS_VIEWER} ${CAS_KERNEL} @@ -85,6 +84,11 @@ SET(PROJECT_LIBRARIES ${qtx} ) +IF(NOT ${HAVE_SALOME}) + SET(PROJECT_LIBRARIES ${PROJECT_LIBRARIES} AppElements) +ENDIF(NOT ${HAVE_SALOME}) + + IF(WIN32) SET(PROJECT_LIBRARIES ${PROJECT_LIBRARIES} opengl32) ELSE() @@ -107,17 +111,22 @@ SOURCE_GROUP ("Resource Files" FILES ${TEXT_RESOURCES} ${PROJECT_RESOURCES} ${PR ADD_DEFINITIONS( -DXGUI_EXPORTS ${CAS_DEFINITIONS} ) -INCLUDE_DIRECTORIES (${PROJECT_SOURCE_DIR}/src/Events - ${PROJECT_SOURCE_DIR}/src/Config - ${PROJECT_SOURCE_DIR}/src/ModelAPI - ${PROJECT_SOURCE_DIR}/src/GeomAPI - ${PROJECT_SOURCE_DIR}/src/ModuleBase -# ${PROJECT_SOURCE_DIR}/src/PartSetPlugin - ${PROJECT_SOURCE_DIR}/src/GeomAlgoAPI - ${PROJECT_SOURCE_DIR}/src/AppElements - ${CAS_INCLUDE_DIRS} - ${SUIT_INCLUDE}) - +SET(PROJECT_INCLUDES + ${PROJECT_SOURCE_DIR}/src/Events + ${PROJECT_SOURCE_DIR}/src/Config + ${PROJECT_SOURCE_DIR}/src/ModelAPI + ${PROJECT_SOURCE_DIR}/src/GeomAPI + ${PROJECT_SOURCE_DIR}/src/ModuleBase + ${PROJECT_SOURCE_DIR}/src/GeomAlgoAPI + ${CAS_INCLUDE_DIRS} + ${SUIT_INCLUDE}) + +IF(NOT ${HAVE_SALOME}) + SET(PROJECT_INCLUDES ${PROJECT_INCLUDES} ${PROJECT_SOURCE_DIR}/src/AppElements) +ENDIF(NOT ${HAVE_SALOME}) + +INCLUDE_DIRECTORIES(${PROJECT_INCLUDES}) + LINK_DIRECTORIES($ENV{PYTHON_LIB_DIR}) ADD_LIBRARY(XGUI SHARED diff --git a/src/XGUI/XGUI_ActionsMgr.cpp b/src/XGUI/XGUI_ActionsMgr.cpp index 1f721eea9..83a388576 100644 --- a/src/XGUI/XGUI_ActionsMgr.cpp +++ b/src/XGUI/XGUI_ActionsMgr.cpp @@ -4,7 +4,9 @@ * XGUI_ActionsMgr.cpp */ +#ifndef HAVE_SALOME #include +#endif #include #include @@ -61,13 +63,13 @@ void XGUI_ActionsMgr::addCommand(QAction* theCmd) return; } myActions.insert(aId, theCmd); - AppElements_Command* aXCmd = dynamic_cast(theCmd); - if (aXCmd) { - myNestedActions[aId] = aXCmd->nestedCommands(); - } else { +#ifdef HAVE_SALOME XGUI_Workshop* aWorkshop = static_cast(parent()); myNestedActions[aId] = aWorkshop->salomeConnector()->nestedActions(aId); - } +#else + AppElements_Command* aXCmd = dynamic_cast(theCmd); + myNestedActions[aId] = aXCmd->nestedCommands(); +#endif } void XGUI_ActionsMgr::addNestedCommands(const QString& theId, const QStringList& theCommands) @@ -337,16 +339,16 @@ void XGUI_ActionsMgr::updateByDocumentKind() QString aDocKind = QString::fromStdString(aStdDocKind); XGUI_Workshop* aWorkshop = static_cast(parent()); foreach(QAction* eachAction, myActions.values()) { - AppElements_Command* aCmd = dynamic_cast(eachAction); QString aCmdDocKind; - if(aCmd) { - aCmdDocKind = aCmd->documentKind(); - } else { - QString aId = eachAction->data().toString(); - if (!aId.isEmpty()) { - aCmdDocKind = aWorkshop->salomeConnector()->documentKind(aId); - } +#ifdef HAVE_SALOME + QString aId = eachAction->data().toString(); + if (!aId.isEmpty()) { + aCmdDocKind = aWorkshop->salomeConnector()->documentKind(aId); } +#else + AppElements_Command* aCmd = dynamic_cast(eachAction); + aCmdDocKind = aCmd->documentKind(); +#endif if(!aCmdDocKind.isEmpty() && aCmdDocKind != aDocKind) { eachAction->setEnabled(false); } diff --git a/src/XGUI/XGUI_ContextMenuMgr.cpp b/src/XGUI/XGUI_ContextMenuMgr.cpp index b90e3e085..7b570f9cc 100644 --- a/src/XGUI/XGUI_ContextMenuMgr.cpp +++ b/src/XGUI/XGUI_ContextMenuMgr.cpp @@ -12,7 +12,9 @@ #include "XGUI_OperationMgr.h" #include "XGUI_Tools.h" +#ifndef HAVE_SALOME #include +#endif //#include "PartSetPlugin_Part.h" @@ -34,6 +36,7 @@ #include #include #include +#include XGUI_ContextMenuMgr::XGUI_ContextMenuMgr(XGUI_Workshop* theParent) @@ -49,10 +52,13 @@ XGUI_ContextMenuMgr::~XGUI_ContextMenuMgr() void XGUI_ContextMenuMgr::createActions() { - QAction* aAction = new QAction(QIcon(":pictures/delete.png"), tr("Delete"), this); +#ifdef HAVE_SALOME + QMainWindow* aDesktop = myWorkshop->salomeConnector()->desktop(); +#else QMainWindow* aDesktop = myWorkshop->mainWindow(); - if (!aDesktop) - aDesktop = myWorkshop->salomeConnector()->desktop(); +#endif + + QAction* aAction = new QAction(QIcon(":pictures/delete.png"), tr("Delete"), this); aDesktop->addAction(aAction); addAction("DELETE_CMD", aAction); @@ -462,14 +468,14 @@ void XGUI_ContextMenuMgr::addViewerMenu(QMenu* theMenu) const } theMenu->addActions(aActions); - 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()); - } +#ifndef HAVE_SALOME + theMenu->addSeparator(); + QMdiArea* aMDI = myWorkshop->mainWindow()->mdiArea(); + if (aMDI->actions().size() > 0) { + QMenu* aSubMenu = theMenu->addMenu(tr("Windows")); + aSubMenu->addActions(aMDI->actions()); } +#endif } QStringList XGUI_ContextMenuMgr::actionObjectGroups(const QString& theName) diff --git a/src/XGUI/XGUI_Displayer.cpp b/src/XGUI/XGUI_Displayer.cpp index ef89e2bce..b68df4408 100644 --- a/src/XGUI/XGUI_Displayer.cpp +++ b/src/XGUI/XGUI_Displayer.cpp @@ -11,7 +11,9 @@ #include "XGUI_Selection.h" #include "XGUI_CustomPrs.h" +#ifndef HAVE_SALOME #include +#endif #include #include @@ -35,6 +37,7 @@ #include #include #include +#include #include #include #include diff --git a/src/XGUI/XGUI_SelectionMgr.cpp b/src/XGUI/XGUI_SelectionMgr.cpp index 3a13e3213..6136e93f8 100644 --- a/src/XGUI/XGUI_SelectionMgr.cpp +++ b/src/XGUI/XGUI_SelectionMgr.cpp @@ -9,7 +9,9 @@ #include "XGUI_Displayer.h" #include "XGUI_Selection.h" +#ifndef HAVE_SALOME #include +#endif #include #include diff --git a/src/XGUI/XGUI_ViewerProxy.cpp b/src/XGUI/XGUI_ViewerProxy.cpp index 955813a42..90178a967 100644 --- a/src/XGUI/XGUI_ViewerProxy.cpp +++ b/src/XGUI/XGUI_ViewerProxy.cpp @@ -5,10 +5,14 @@ #include "XGUI_SalomeConnector.h" #include "XGUI_Displayer.h" -#include -#include -#include -#include +#ifndef HAVE_SALOME + #include + #include + #include + #include +#endif + +#include #include @@ -20,31 +24,32 @@ XGUI_ViewerProxy::XGUI_ViewerProxy(XGUI_Workshop* theParent) Handle(AIS_InteractiveContext) XGUI_ViewerProxy::AISContext() const { - if (myWorkshop->isSalomeMode()) { - return myWorkshop->salomeConnector()->viewer()->AISContext(); - } else { - return myWorkshop->mainWindow()->viewer()->AISContext(); - } +#ifdef HAVE_SALOME + return myWorkshop->salomeConnector()->viewer()->AISContext(); +#else + return myWorkshop->mainWindow()->viewer()->AISContext(); +#endif } Handle(V3d_Viewer) XGUI_ViewerProxy::v3dViewer() const { - if (myWorkshop->isSalomeMode()) { - return myWorkshop->salomeConnector()->viewer()->v3dViewer(); - } else { - return myWorkshop->mainWindow()->viewer()->v3dViewer(); - } +#ifdef HAVE_SALOME + return myWorkshop->salomeConnector()->viewer()->v3dViewer(); +#else + return myWorkshop->mainWindow()->viewer()->v3dViewer(); +#endif } Handle(V3d_View) XGUI_ViewerProxy::activeView() const { - if (myWorkshop->isSalomeMode()) { - return myWorkshop->salomeConnector()->viewer()->activeView(); - } else { - AppElements_Viewer* aViewer = myWorkshop->mainWindow()->viewer(); - return (aViewer->activeViewWindow()) ? aViewer->activeViewWindow()->viewPortApp()->getView() : +#ifdef HAVE_SALOME + return myWorkshop->salomeConnector()->viewer()->activeView(); +#else + AppElements_Viewer* aViewer = myWorkshop->mainWindow()->viewer(); + return (aViewer->activeViewWindow()) ? + aViewer->activeViewWindow()->viewPortApp()->getView() : Handle(V3d_View)(); - } +#endif } void XGUI_ViewerProxy::setViewProjection(double theX, double theY, double theZ, double theTwist) @@ -62,96 +67,96 @@ void XGUI_ViewerProxy::setViewProjection(double theX, double theY, double theZ, void XGUI_ViewerProxy::fitAll() { - if (myWorkshop->isSalomeMode()) { - myWorkshop->salomeConnector()->viewer()->fitAll(); - } else { - AppElements_Viewer* aViewer = myWorkshop->mainWindow()->viewer(); - if (aViewer->activeViewWindow()) - aViewer->activeViewWindow()->viewPortApp()->fitAll(); - } +#ifdef HAVE_SALOME + myWorkshop->salomeConnector()->viewer()->fitAll(); +#else + AppElements_Viewer* aViewer = myWorkshop->mainWindow()->viewer(); + if (aViewer->activeViewWindow()) + aViewer->activeViewWindow()->viewPortApp()->fitAll(); +#endif } void XGUI_ViewerProxy::connectToViewer() { - if (myWorkshop->isSalomeMode()) { - ModuleBase_IViewer* aViewer = myWorkshop->salomeConnector()->viewer(); +#ifdef HAVE_SALOME + ModuleBase_IViewer* aViewer = myWorkshop->salomeConnector()->viewer(); - connect(aViewer, SIGNAL(lastViewClosed()), this, SIGNAL(lastViewClosed())); - connect(aViewer, SIGNAL(tryCloseView(ModuleBase_IViewWindow*)), - this, SIGNAL(tryCloseView(ModuleBase_IViewWindow*))); + connect(aViewer, SIGNAL(lastViewClosed()), this, SIGNAL(lastViewClosed())); + connect(aViewer, SIGNAL(tryCloseView(ModuleBase_IViewWindow*)), + this, SIGNAL(tryCloseView(ModuleBase_IViewWindow*))); - connect(aViewer, SIGNAL(deleteView(ModuleBase_IViewWindow*)), - this, SIGNAL(deleteView(ModuleBase_IViewWindow*))); + connect(aViewer, SIGNAL(deleteView(ModuleBase_IViewWindow*)), + this, SIGNAL(deleteView(ModuleBase_IViewWindow*))); - connect(aViewer, SIGNAL(viewCreated(ModuleBase_IViewWindow*)), - this, SLOT(onViewCreated(ModuleBase_IViewWindow*))); + connect(aViewer, SIGNAL(viewCreated(ModuleBase_IViewWindow*)), + this, SLOT(onViewCreated(ModuleBase_IViewWindow*))); - connect(aViewer, SIGNAL(activated(ModuleBase_IViewWindow*)), - this, SIGNAL(activated(ModuleBase_IViewWindow*))); + connect(aViewer, SIGNAL(activated(ModuleBase_IViewWindow*)), + this, SIGNAL(activated(ModuleBase_IViewWindow*))); - connect(aViewer, SIGNAL(mousePress(ModuleBase_IViewWindow*, QMouseEvent*)), - this, SIGNAL(mousePress(ModuleBase_IViewWindow*, QMouseEvent*))); + connect(aViewer, SIGNAL(mousePress(ModuleBase_IViewWindow*, QMouseEvent*)), + this, SIGNAL(mousePress(ModuleBase_IViewWindow*, QMouseEvent*))); - connect(aViewer, SIGNAL(mouseRelease(ModuleBase_IViewWindow*, QMouseEvent*)), - this, SIGNAL(mouseRelease(ModuleBase_IViewWindow*, QMouseEvent*))); + connect(aViewer, SIGNAL(mouseRelease(ModuleBase_IViewWindow*, QMouseEvent*)), + this, SIGNAL(mouseRelease(ModuleBase_IViewWindow*, QMouseEvent*))); - connect(aViewer, SIGNAL(mouseDoubleClick(ModuleBase_IViewWindow*, QMouseEvent*)), this, - SIGNAL(mouseDoubleClick(ModuleBase_IViewWindow*, QMouseEvent*))); + connect(aViewer, SIGNAL(mouseDoubleClick(ModuleBase_IViewWindow*, QMouseEvent*)), this, + SIGNAL(mouseDoubleClick(ModuleBase_IViewWindow*, QMouseEvent*))); - connect(aViewer, SIGNAL(mouseMove(ModuleBase_IViewWindow*, QMouseEvent*)), - this, SIGNAL(mouseMove(ModuleBase_IViewWindow*, QMouseEvent*))); + connect(aViewer, SIGNAL(mouseMove(ModuleBase_IViewWindow*, QMouseEvent*)), + this, SIGNAL(mouseMove(ModuleBase_IViewWindow*, QMouseEvent*))); - connect(aViewer, SIGNAL(keyPress(ModuleBase_IViewWindow*, QKeyEvent*)), - this, SIGNAL(keyPress(ModuleBase_IViewWindow*, QKeyEvent*))); + connect(aViewer, SIGNAL(keyPress(ModuleBase_IViewWindow*, QKeyEvent*)), + this, SIGNAL(keyPress(ModuleBase_IViewWindow*, QKeyEvent*))); - connect(aViewer, SIGNAL(keyRelease(ModuleBase_IViewWindow*, QKeyEvent*)), - this, SIGNAL(keyRelease(ModuleBase_IViewWindow*, QKeyEvent*))); + connect(aViewer, SIGNAL(keyRelease(ModuleBase_IViewWindow*, QKeyEvent*)), + this, SIGNAL(keyRelease(ModuleBase_IViewWindow*, QKeyEvent*))); - connect(aViewer, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged())); + connect(aViewer, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged())); - connect(aViewer, SIGNAL(viewTransformed(int)), this, SIGNAL(viewTransformed(int))); + connect(aViewer, SIGNAL(viewTransformed(int)), this, SIGNAL(viewTransformed(int))); - connect(aViewer, SIGNAL(contextMenuRequested(QContextMenuEvent*)), this, - SIGNAL(contextMenuRequested(QContextMenuEvent*))); - } else { - AppElements_Viewer* aViewer = myWorkshop->mainWindow()->viewer(); + connect(aViewer, SIGNAL(contextMenuRequested(QContextMenuEvent*)), this, + SIGNAL(contextMenuRequested(QContextMenuEvent*))); +#else + AppElements_Viewer* aViewer = myWorkshop->mainWindow()->viewer(); - connect(aViewer, SIGNAL(lastViewClosed()), this, SIGNAL(lastViewClosed())); + connect(aViewer, SIGNAL(lastViewClosed()), this, SIGNAL(lastViewClosed())); - connect(aViewer, SIGNAL(tryCloseView(AppElements_ViewWindow*)), - this, SLOT(onTryCloseView(AppElements_ViewWindow*))); + connect(aViewer, SIGNAL(tryCloseView(AppElements_ViewWindow*)), + this, SLOT(onTryCloseView(AppElements_ViewWindow*))); - connect(aViewer, SIGNAL(deleteView(AppElements_ViewWindow*)), - this, SLOT(onDeleteView(AppElements_ViewWindow*))); + connect(aViewer, SIGNAL(deleteView(AppElements_ViewWindow*)), + this, SLOT(onDeleteView(AppElements_ViewWindow*))); - connect(aViewer, SIGNAL(viewCreated(AppElements_ViewWindow*)), - this, SLOT(onViewCreated(AppElements_ViewWindow*))); + connect(aViewer, SIGNAL(viewCreated(AppElements_ViewWindow*)), + this, SLOT(onViewCreated(AppElements_ViewWindow*))); - connect(aViewer, SIGNAL(activated(AppElements_ViewWindow*)), - this, SLOT(onActivated(AppElements_ViewWindow*))); + connect(aViewer, SIGNAL(activated(AppElements_ViewWindow*)), + this, SLOT(onActivated(AppElements_ViewWindow*))); - connect(aViewer, SIGNAL(mousePress(AppElements_ViewWindow*, QMouseEvent*)), this, - SLOT(onMousePress(AppElements_ViewWindow*, QMouseEvent*))); + connect(aViewer, SIGNAL(mousePress(AppElements_ViewWindow*, QMouseEvent*)), this, + SLOT(onMousePress(AppElements_ViewWindow*, QMouseEvent*))); - connect(aViewer, SIGNAL(mouseRelease(AppElements_ViewWindow*, QMouseEvent*)), this, - SLOT(onMouseRelease(AppElements_ViewWindow*, QMouseEvent*))); + connect(aViewer, SIGNAL(mouseRelease(AppElements_ViewWindow*, QMouseEvent*)), this, + SLOT(onMouseRelease(AppElements_ViewWindow*, QMouseEvent*))); - connect(aViewer, SIGNAL(mouseDoubleClick(AppElements_ViewWindow*, QMouseEvent*)), this, - SLOT(onMouseDoubleClick(AppElements_ViewWindow*, QMouseEvent*))); + connect(aViewer, SIGNAL(mouseDoubleClick(AppElements_ViewWindow*, QMouseEvent*)), this, + SLOT(onMouseDoubleClick(AppElements_ViewWindow*, QMouseEvent*))); - connect(aViewer, SIGNAL(mouseMove(AppElements_ViewWindow*, QMouseEvent*)), this, - SLOT(onMouseMove(AppElements_ViewWindow*, QMouseEvent*))); + connect(aViewer, SIGNAL(mouseMove(AppElements_ViewWindow*, QMouseEvent*)), this, + SLOT(onMouseMove(AppElements_ViewWindow*, QMouseEvent*))); - connect(aViewer, SIGNAL(keyPress(AppElements_ViewWindow*, QKeyEvent*)), this, - SLOT(onKeyPress(AppElements_ViewWindow*, QKeyEvent*))); + connect(aViewer, SIGNAL(keyPress(AppElements_ViewWindow*, QKeyEvent*)), this, + SLOT(onKeyPress(AppElements_ViewWindow*, QKeyEvent*))); - connect(aViewer, SIGNAL(keyRelease(AppElements_ViewWindow*, QKeyEvent*)), this, - SLOT(onKeyRelease(AppElements_ViewWindow*, QKeyEvent*))); + connect(aViewer, SIGNAL(keyRelease(AppElements_ViewWindow*, QKeyEvent*)), this, + SLOT(onKeyRelease(AppElements_ViewWindow*, QKeyEvent*))); - connect(aViewer, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged())); - connect(aViewer, SIGNAL(contextMenuRequested(QContextMenuEvent*)), this, - SIGNAL(contextMenuRequested(QContextMenuEvent*))); - } + connect(aViewer, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged())); + connect(aViewer, SIGNAL(contextMenuRequested(QContextMenuEvent*)), this, + SIGNAL(contextMenuRequested(QContextMenuEvent*))); +#endif } bool XGUI_ViewerProxy::eventFilter(QObject *theObject, QEvent *theEvent) @@ -165,6 +170,16 @@ bool XGUI_ViewerProxy::eventFilter(QObject *theObject, QEvent *theEvent) return ModuleBase_IViewer::eventFilter(theObject, theEvent); } +void XGUI_ViewerProxy::onViewCreated(ModuleBase_IViewWindow* theWnd) +{ + theWnd->viewPort()->installEventFilter(this); + + myWindowScale.insert (theWnd->v3dView(), theWnd->v3dView()->Camera()->Scale()); + + emit viewCreated(theWnd); +} + +#ifndef HAVE_SALOME void XGUI_ViewerProxy::onTryCloseView(AppElements_ViewWindow* theWnd) { emit tryCloseView(theWnd); @@ -177,15 +192,6 @@ void XGUI_ViewerProxy::onDeleteView(AppElements_ViewWindow* theWnd) emit deleteView(theWnd); } -void XGUI_ViewerProxy::onViewCreated(ModuleBase_IViewWindow* theWnd) -{ - theWnd->viewPort()->installEventFilter(this); - - myWindowScale.insert (theWnd->v3dView(), theWnd->v3dView()->Camera()->Scale()); - - emit viewCreated(theWnd); -} - void XGUI_ViewerProxy::onViewCreated(AppElements_ViewWindow* theWnd) { theWnd->viewPort()->installEventFilter(this); @@ -233,56 +239,62 @@ void XGUI_ViewerProxy::onKeyRelease(AppElements_ViewWindow* theWnd, QKeyEvent* t emit keyRelease(theWnd, theEvent); } +void XGUI_ViewerProxy::onViewTransformed(AppElements_ViewWindow::OperationType theType) +{ + emit viewTransformed((int) theType); +} + +#endif //*************************************** void XGUI_ViewerProxy::enableSelection(bool isEnabled) { - if (myWorkshop->isSalomeMode()) { - myWorkshop->salomeConnector()->viewer()->enableSelection(isEnabled); - } else { - myWorkshop->mainWindow()->viewer()->setSelectionEnabled(isEnabled); - } +#ifdef HAVE_SALOME + myWorkshop->salomeConnector()->viewer()->enableSelection(isEnabled); +#else + myWorkshop->mainWindow()->viewer()->setSelectionEnabled(isEnabled); +#endif } //*************************************** bool XGUI_ViewerProxy::isSelectionEnabled() const { - if (myWorkshop->isSalomeMode()) { - return myWorkshop->salomeConnector()->viewer()->isSelectionEnabled(); - } else { - return myWorkshop->mainWindow()->viewer()->isSelectionEnabled(); - } +#ifdef HAVE_SALOME + return myWorkshop->salomeConnector()->viewer()->isSelectionEnabled(); +#else + return myWorkshop->mainWindow()->viewer()->isSelectionEnabled(); +#endif } //*************************************** void XGUI_ViewerProxy::enableMultiselection(bool isEnable) { - if (myWorkshop->isSalomeMode()) { - myWorkshop->salomeConnector()->viewer()->enableMultiselection(isEnable); - } else { - myWorkshop->mainWindow()->viewer()->setMultiSelectionEnabled(isEnable); - } +#ifdef HAVE_SALOME + myWorkshop->salomeConnector()->viewer()->enableMultiselection(isEnable); +#else + myWorkshop->mainWindow()->viewer()->setMultiSelectionEnabled(isEnable); +#endif } //*************************************** bool XGUI_ViewerProxy::isMultiSelectionEnabled() const { - if (myWorkshop->isSalomeMode()) { - return myWorkshop->salomeConnector()->viewer()->isMultiSelectionEnabled(); - } else { - return myWorkshop->mainWindow()->viewer()->isMultiSelectionEnabled(); - } +#ifdef HAVE_SALOME + return myWorkshop->salomeConnector()->viewer()->isMultiSelectionEnabled(); +#else + return myWorkshop->mainWindow()->viewer()->isMultiSelectionEnabled(); +#endif } //*************************************** bool XGUI_ViewerProxy::enableDrawMode(bool isEnabled) { - if (myWorkshop->isSalomeMode()) { - return myWorkshop->salomeConnector()->viewer()->enableDrawMode(isEnabled); - } else { - return myWorkshop->mainWindow()->viewer()->enableDrawMode(isEnabled); - } +#ifdef HAVE_SALOME + return myWorkshop->salomeConnector()->viewer()->enableDrawMode(isEnabled); +#else + return myWorkshop->mainWindow()->viewer()->enableDrawMode(isEnabled); +#endif } //*************************************** @@ -326,26 +338,20 @@ bool XGUI_ViewerProxy::canDragByMouse() const } } -//*************************************** -void XGUI_ViewerProxy::onViewTransformed(AppElements_ViewWindow::OperationType theType) -{ - emit viewTransformed((int) theType); -} - //*************************************** void XGUI_ViewerProxy::Zfitall() { - if (myWorkshop->isSalomeMode()) { - myWorkshop->salomeConnector()->viewer()->Zfitall(); - } else { - AppElements_Viewer* aViewer = myWorkshop->mainWindow()->viewer(); - AppElements_ViewWindow* aView = aViewer->activeViewWindow(); - if (aView) { - Handle(V3d_View) aView3d = aView->v3dView(); - aView3d->ZFitAll(); - if (aView3d->Depth() < 0.1) - aView3d->DepthFitAll(); - } +#ifdef HAVE_SALOME + myWorkshop->salomeConnector()->viewer()->Zfitall(); +#else + AppElements_Viewer* aViewer = myWorkshop->mainWindow()->viewer(); + AppElements_ViewWindow* aView = aViewer->activeViewWindow(); + if (aView) { + Handle(V3d_View) aView3d = aView->v3dView(); + aView3d->ZFitAll(); + if (aView3d->Depth() < 0.1) + aView3d->DepthFitAll(); } +#endif } \ No newline at end of file diff --git a/src/XGUI/XGUI_ViewerProxy.h b/src/XGUI/XGUI_ViewerProxy.h index 7362bbfa4..8763be818 100644 --- a/src/XGUI/XGUI_ViewerProxy.h +++ b/src/XGUI/XGUI_ViewerProxy.h @@ -5,7 +5,10 @@ #include "XGUI.h" #include -#include + +#ifndef HAVE_SALOME + #include +#endif class XGUI_Workshop; /** @@ -98,9 +101,11 @@ protected: bool eventFilter(QObject *theObject, QEvent *theEvent); private slots: + void onViewCreated(ModuleBase_IViewWindow* theWnd); + +#ifndef HAVE_SALOME void onTryCloseView(AppElements_ViewWindow*); void onDeleteView(AppElements_ViewWindow*); - void onViewCreated(ModuleBase_IViewWindow* theWnd); void onViewCreated(AppElements_ViewWindow*); void onActivated(AppElements_ViewWindow*); @@ -113,6 +118,7 @@ private slots: void onKeyRelease(AppElements_ViewWindow*, QKeyEvent*); void onViewTransformed(AppElements_ViewWindow::OperationType); +#endif private: XGUI_Workshop* myWorkshop; diff --git a/src/XGUI/XGUI_Workshop.cpp b/src/XGUI/XGUI_Workshop.cpp index 6a988677a..3af0fc6e3 100644 --- a/src/XGUI/XGUI_Workshop.cpp +++ b/src/XGUI/XGUI_Workshop.cpp @@ -23,6 +23,7 @@ #include #include +#ifndef HAVE_SALOME #include #include #include @@ -30,6 +31,7 @@ #include #include #include +#endif #include #include @@ -78,6 +80,7 @@ #include #include #include +#include #include #include #include @@ -112,16 +115,16 @@ XGUI_Workshop::XGUI_Workshop(XGUI_SalomeConnector* theConnector) myObjectBrowser(0), myDisplayer(0) { - myMainWindow = mySalomeConnector ? 0 : new AppElements_MainWindow(); +#ifndef HAVE_SALOME + myMainWindow = new AppElements_MainWindow(); - if (myMainWindow) { - SUIT_ResourceMgr* aResMgr = ModuleBase_Preferences::resourceMgr(); - bool aCloc = aResMgr->booleanValue("language", "locale", true); - if (aCloc) - QLocale::setDefault( QLocale::c() ); - else - QLocale::setDefault( QLocale::system() ); - } + SUIT_ResourceMgr* aResMgr = ModuleBase_Preferences::resourceMgr(); + bool aCloc = aResMgr->booleanValue("language", "locale", true); + if (aCloc) + QLocale::setDefault( QLocale::c() ); + else + QLocale::setDefault( QLocale::system() ); +#endif myDisplayer = new XGUI_Displayer(this); @@ -160,8 +163,10 @@ XGUI_Workshop::XGUI_Workshop(XGUI_SalomeConnector* theConnector) //connect(myOperationMgr, SIGNAL(validationStateChanged(bool)), // myErrorMgr, SLOT(onValidationStateChanged())); - if (myMainWindow) - connect(myMainWindow, SIGNAL(exitKeySequence()), SLOT(onExit())); +#ifndef HAVE_SALOME + connect(myMainWindow, SIGNAL(exitKeySequence()), SLOT(onExit())); +#endif + connect(this, SIGNAL(errorOccurred(const QString&)), myErrorDlg, SLOT(addError(const QString&))); connect(myEventsListener, SIGNAL(errorOccurred(const QString&)), myErrorDlg, SLOT(addError(const QString&))); @@ -202,10 +207,11 @@ void XGUI_Workshop::startApplication() // by Config_PropManger to restore user-defined path to plugins ModuleBase_Preferences::loadCustomProps(); createModule(); - if (myMainWindow) { - myMainWindow->show(); - updateCommandStatus(); - } + +#ifndef HAVE_SALOME + myMainWindow->show(); + updateCommandStatus(); +#endif onNew(); @@ -253,48 +259,47 @@ void XGUI_Workshop::initMenu() { myContextMenuMgr->createActions(); - if (isSalomeMode()) { - // Create only Undo, Redo commands - QAction* aAction = salomeConnector()->addDesktopCommand("UNDO_CMD", tr("Undo"), - tr("Undo last command"), - QIcon(":pictures/undo.png"), - QKeySequence::Undo, false, "MEN_DESK_EDIT"); - QString aToolBarTitle = tr( "INF_DESK_TOOLBAR_STANDARD" ); - salomeConnector()->addActionInToolbar( aAction,aToolBarTitle ); - - connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onUndo())); - addHistoryMenu(aAction, SIGNAL(updateUndoHistory(const QList&)), SLOT(onUndo(int))); - - aAction = salomeConnector()->addDesktopCommand("REDO_CMD", tr("Redo"), tr("Redo last command"), - QIcon(":pictures/redo.png"), QKeySequence::Redo, - false, "MEN_DESK_EDIT"); - salomeConnector()->addActionInToolbar( aAction, aToolBarTitle ); - - connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onRedo())); - addHistoryMenu(aAction, SIGNAL(updateRedoHistory(const QList&)), SLOT(onRedo(int))); - - salomeConnector()->addDesktopMenuSeparator("MEN_DESK_EDIT"); - aAction = salomeConnector()->addDesktopCommand("REBUILD_CMD", tr("Rebuild"), tr("Rebuild data objects"), - QIcon(":pictures/rebuild.png"), QKeySequence(), - false, "MEN_DESK_EDIT"); - salomeConnector()->addActionInToolbar( aAction, aToolBarTitle ); - - connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onRebuild())); - salomeConnector()->addDesktopMenuSeparator("MEN_DESK_EDIT"); - - aAction = salomeConnector()->addDesktopCommand("SAVEAS_CMD", tr("Export NewGeom..."), tr("Export the current document into a NewGeom file"), - QIcon(), QKeySequence(), - false, "MEN_DESK_FILE"); - connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onSaveAs())); - - aAction = salomeConnector()->addDesktopCommand("OPEN_CMD", tr("Import NewGeom..."), tr("Import a NewGeom file"), - QIcon(), QKeySequence(), - false, "MEN_DESK_FILE"); - connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onOpen())); - salomeConnector()->addDesktopMenuSeparator("MEN_DESK_FILE"); +#ifdef HAVE_SALOME + // Create only Undo, Redo commands + QAction* aAction = salomeConnector()->addDesktopCommand("UNDO_CMD", tr("Undo"), + tr("Undo last command"), + QIcon(":pictures/undo.png"), + QKeySequence::Undo, false, "MEN_DESK_EDIT"); + QString aToolBarTitle = tr( "INF_DESK_TOOLBAR_STANDARD" ); + salomeConnector()->addActionInToolbar( aAction,aToolBarTitle ); + + connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onUndo())); + addHistoryMenu(aAction, SIGNAL(updateUndoHistory(const QList&)), SLOT(onUndo(int))); + + aAction = salomeConnector()->addDesktopCommand("REDO_CMD", tr("Redo"), tr("Redo last command"), + QIcon(":pictures/redo.png"), QKeySequence::Redo, + false, "MEN_DESK_EDIT"); + salomeConnector()->addActionInToolbar( aAction, aToolBarTitle ); + + connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onRedo())); + addHistoryMenu(aAction, SIGNAL(updateRedoHistory(const QList&)), SLOT(onRedo(int))); + + salomeConnector()->addDesktopMenuSeparator("MEN_DESK_EDIT"); + aAction = salomeConnector()->addDesktopCommand("REBUILD_CMD", tr("Rebuild"), tr("Rebuild data objects"), + QIcon(":pictures/rebuild.png"), QKeySequence(), + false, "MEN_DESK_EDIT"); + salomeConnector()->addActionInToolbar( aAction, aToolBarTitle ); + + connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onRebuild())); + salomeConnector()->addDesktopMenuSeparator("MEN_DESK_EDIT"); + + aAction = salomeConnector()->addDesktopCommand("SAVEAS_CMD", tr("Export NewGeom..."), tr("Export the current document into a NewGeom file"), + QIcon(), QKeySequence(), + false, "MEN_DESK_FILE"); + connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onSaveAs())); + + aAction = salomeConnector()->addDesktopCommand("OPEN_CMD", tr("Import NewGeom..."), tr("Import a NewGeom file"), + QIcon(), QKeySequence(), + false, "MEN_DESK_FILE"); + connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onOpen())); + salomeConnector()->addDesktopMenuSeparator("MEN_DESK_FILE"); - return; - } +#else // File commands group AppElements_MenuGroupPanel* aGroup = myMainWindow->menuObject()->generalPage(); @@ -336,10 +341,6 @@ void XGUI_Workshop::initMenu() QIcon(":pictures/open.png"), QKeySequence::Open); aCommand->connectTo(this, SLOT(onOpen())); - //aCommand = aGroup->addFeature("NEW_CMD", tr("New"), tr("Create a new document"), - // QIcon(":pictures/new.png"), QKeySequence::New); - //aCommand->connectTo(this, SLOT(onNew())); - aCommand = aGroup->addFeature("PREF_CMD", tr("Preferences"), tr("Edit preferences"), QIcon(":pictures/preferences.png"), QKeySequence::Preferences); aCommand->connectTo(this, SLOT(onPreferences())); @@ -347,25 +348,25 @@ void XGUI_Workshop::initMenu() aCommand = aGroup->addFeature("EXIT_CMD", tr("Exit"), tr("Exit application"), QIcon(":pictures/close.png"), QKeySequence::Close); aCommand->connectTo(this, SLOT(onExit())); - //FIXME: SBH's test action. Can be used for some GUI tests. -// #ifdef _DEBUG -// aCommand = aGroup->addFeature("TEST_CMD", "Test!", "Private debug button", -// QIcon(":pictures/close.png"), QKeySequence(), true); -// aCommand->connectTo(myMainWindow, SLOT(dockPythonConsole())); -// #endif +#endif } -//****************************************************** +#ifndef HAVE_SALOME AppElements_Workbench* XGUI_Workshop::addWorkbench(const QString& theName) { AppElements_MainMenu* aMenuBar = myMainWindow->menuObject(); return aMenuBar->addWorkbench(theName); } +#endif //****************************************************** QMainWindow* XGUI_Workshop::desktop() const { - return isSalomeMode() ? salomeConnector()->desktop() : myMainWindow; +#ifdef HAVE_SALOME + return salomeConnector()->desktop(); +#else + return myMainWindow; +#endif } //****************************************************** @@ -423,16 +424,16 @@ bool XGUI_Workshop::isFeatureOfNested(const FeaturePtr& theFeature) { bool aHasNested = false; std::string aFeatureKind = theFeature->getKind(); - if (isSalomeMode()) { +#ifdef HAVE_SALOME XGUI_SalomeConnector* aSalomeConnector = salomeConnector(); if (aSalomeConnector->isFeatureOfNested(actionsMgr()->action(aFeatureKind.c_str()))) aHasNested = true; - } else { +#else AppElements_MainMenu* aMenuBar = mainWindow()->menuObject(); AppElements_Command* aCommand = aMenuBar->feature(aFeatureKind.c_str()); if (aCommand && aCommand->button()->additionalButtonWidget()) aHasNested = true; - } +#endif return aHasNested; } @@ -623,23 +624,42 @@ bool XGUI_Workshop::abortAllOperations() } //****************************************************** -void XGUI_Workshop::onExit() +void XGUI_Workshop::onOpen() { - SessionPtr aMgr = ModelAPI_Session::get(); - if (aMgr->isModified()) { + if(!abortAllOperations()) + return; + //save current file before close if modified + SessionPtr aSession = ModelAPI_Session::get(); + if (aSession->isModified()) { + //TODO(sbh): re-launch the app? int anAnswer = QMessageBox::question( - myMainWindow, tr("Save current file"), tr("The document is modified, save before exit?"), + desktop(), tr("Save current file"), + tr("The document is modified, save before opening another?"), QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, QMessageBox::Cancel); if (anAnswer == QMessageBox::Save) { - bool saved = onSave(); - if (!saved) { - return; - } + onSave(); } else if (anAnswer == QMessageBox::Cancel) { return; } + myCurrentDir = ""; } - qApp->exit(); + + //show file dialog, check if readable and open + myCurrentDir = QFileDialog::getExistingDirectory(desktop(), tr("Select directory")); + if (myCurrentDir.isEmpty()) + return; + QFileInfo aFileInfo(myCurrentDir); + if (!aFileInfo.exists() || !aFileInfo.isReadable()) { + QMessageBox::critical(desktop(), tr("Warning"), tr("Unable to open the file.")); + myCurrentDir = ""; + return; + } + QApplication::setOverrideCursor(Qt::WaitCursor); + aSession->closeAll(); + aSession->load(myCurrentDir.toLatin1().constData()); + myObjectBrowser->rebuildDataTree(); + updateCommandStatus(); + QApplication::restoreOverrideCursor(); } //****************************************************** @@ -652,54 +672,57 @@ void XGUI_Workshop::onNew() } myViewerProxy->connectToViewer(); showObjectBrowser(); - if (!isSalomeMode()) { - myMainWindow->showPythonConsole(); - QMdiSubWindow* aWnd = myMainWindow->viewer()->createView(); - aWnd->showMaximized(); - updateCommandStatus(); - } +#ifndef HAVE_SALOME + myMainWindow->showPythonConsole(); + QMdiSubWindow* aWnd = myMainWindow->viewer()->createView(); + aWnd->showMaximized(); + updateCommandStatus(); +#endif myContextMenuMgr->connectViewer(); QApplication::restoreOverrideCursor(); } +#ifndef HAVE_SALOME //****************************************************** -void XGUI_Workshop::onOpen() +void XGUI_Workshop::onExit() { - if(!abortAllOperations()) - return; - //save current file before close if modified - SessionPtr aSession = ModelAPI_Session::get(); - if (aSession->isModified()) { - //TODO(sbh): re-launch the app? + SessionPtr aMgr = ModelAPI_Session::get(); + if (aMgr->isModified()) { int anAnswer = QMessageBox::question( - myMainWindow, tr("Save current file"), - tr("The document is modified, save before opening another?"), + myMainWindow, tr("Save current file"), tr("The document is modified, save before exit?"), QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, QMessageBox::Cancel); if (anAnswer == QMessageBox::Save) { - onSave(); + bool saved = onSave(); + if (!saved) { + return; + } } else if (anAnswer == QMessageBox::Cancel) { return; } - myCurrentDir = ""; } + qApp->exit(); +} - //show file dialog, check if readable and open - myCurrentDir = QFileDialog::getExistingDirectory(mainWindow(), tr("Select directory")); - if (myCurrentDir.isEmpty()) - return; - QFileInfo aFileInfo(myCurrentDir); - if (!aFileInfo.exists() || !aFileInfo.isReadable()) { - QMessageBox::critical(myMainWindow, tr("Warning"), tr("Unable to open the file.")); - myCurrentDir = ""; - return; +//****************************************************** +void XGUI_Workshop::onPreferences() +{ + ModuleBase_Prefs aModif; + ModuleBase_Preferences::editPreferences(aModif); + if (aModif.size() > 0) { + QString aSection; + foreach (ModuleBase_Pref aPref, aModif) + { + aSection = aPref.first; + if (aSection == ModuleBase_Preferences::VIEWER_SECTION) { + myMainWindow->viewer()->updateFromResources(); + } else if (aSection == ModuleBase_Preferences::MENU_SECTION) { + myMainWindow->menuObject()->updateFromResources(); + } + } + displayer()->redisplayObjects(); } - QApplication::setOverrideCursor(Qt::WaitCursor); - aSession->closeAll(); - aSession->load(myCurrentDir.toLatin1().constData()); - myObjectBrowser->rebuildDataTree(); - updateCommandStatus(); - QApplication::restoreOverrideCursor(); } +#endif //****************************************************** bool XGUI_Workshop::onSave() @@ -712,8 +735,9 @@ bool XGUI_Workshop::onSave() std::list aFiles; saveDocument(myCurrentDir, aFiles); updateCommandStatus(); - if (!isSalomeMode()) +#ifndef HAVE_SALOME myMainWindow->setModifiedState(false); +#endif return true; } @@ -722,7 +746,7 @@ bool XGUI_Workshop::onSaveAs() { if(!abortAllOperations()) return false; - QFileDialog dialog(mainWindow()); + QFileDialog dialog(desktop()); dialog.setWindowTitle(tr("Select directory to save files...")); dialog.setFileMode(QFileDialog::Directory); dialog.setFilter(tr("Directories (*)")); @@ -737,7 +761,7 @@ bool XGUI_Workshop::onSaveAs() QDir aDir(aTempDir); if (aDir.exists() && !aDir.entryInfoList(QDir::NoDotAndDotDot | QDir::AllEntries).isEmpty()) { int answer = QMessageBox::question( - myMainWindow, + desktop(), //: Title of the dialog which asks user if he wants to save study in existing non-empty folder tr("Save"), tr("The directory already contains some files, save anyway?"), @@ -747,10 +771,10 @@ bool XGUI_Workshop::onSaveAs() } } myCurrentDir = aTempDir; - if (!isSalomeMode()) { +#ifndef HAVE_SALOME myMainWindow->setCurrentDir(myCurrentDir, false); myMainWindow->setModifiedState(false); - } +#endif return onSave(); } @@ -818,28 +842,6 @@ void XGUI_Workshop::onRebuild() updateCommandStatus(); } -//****************************************************** -void XGUI_Workshop::onPreferences() -{ - ModuleBase_Prefs aModif; - ModuleBase_Preferences::editPreferences(aModif); - if (aModif.size() > 0) { - QString aSection; - foreach (ModuleBase_Pref aPref, aModif) - { - aSection = aPref.first; - if (aSection == ModuleBase_Preferences::VIEWER_SECTION) { - if (!isSalomeMode()) - myMainWindow->viewer()->updateFromResources(); - } else if (aSection == ModuleBase_Preferences::MENU_SECTION) { - if (!isSalomeMode()) - myMainWindow->menuObject()->updateFromResources(); - } - } - displayer()->redisplayObjects(); - } -} - //****************************************************** ModuleBase_IModule* XGUI_Workshop::loadModule(const QString& theModule) { @@ -890,7 +892,7 @@ ModuleBase_IModule* XGUI_Workshop::loadModule(const QString& theModule) ModuleBase_IModule* aModule = crtInst ? crtInst(myModuleConnector) : 0; if (!err.isEmpty()) { - if (mainWindow()) { + if (desktop()) { Events_Error::send(err.toStdString()); } else { qWarning(qPrintable(err)); @@ -922,13 +924,13 @@ bool XGUI_Workshop::createModule() void XGUI_Workshop::updateCommandStatus() { QList aCommands; - if (isSalomeMode()) { // update commands in SALOME mode +#ifdef HAVE_SALOME aCommands = salomeConnector()->commandList(); - } else { +#else AppElements_MainMenu* aMenuBar = myMainWindow->menuObject(); foreach (AppElements_Command* aCmd, aMenuBar->features()) aCommands.append(aCmd); - } +#endif SessionPtr aMgr = ModelAPI_Session::get(); if (aMgr->hasModuleDocument()) { foreach(QAction* aCmd, aCommands) { @@ -991,7 +993,7 @@ QDockWidget* XGUI_Workshop::createObjectBrowser(QWidget* theParent) */ void XGUI_Workshop::createDockWidgets() { - QMainWindow* aDesktop = isSalomeMode() ? salomeConnector()->desktop() : myMainWindow; + QMainWindow* aDesktop = desktop(); QDockWidget* aObjDock = createObjectBrowser(aDesktop); aDesktop->addDockWidget(Qt::LeftDockWidgetArea, aObjDock); myPropertyPanel = new XGUI_PropertyPanel(aDesktop, myOperationMgr); @@ -1047,7 +1049,7 @@ void XGUI_Workshop::hidePropertyPanel() // set the focus on it. As a result, shortcuts of the application, like // are processed by this console. For example Undo actions. // It is possible that this code is to be moved to NewGeom package - QMainWindow* aDesktop = isSalomeMode() ? salomeConnector()->desktop() : myMainWindow; + QMainWindow* aDesktop = desktop(); aDesktop->activateWindow(); aDesktop->setFocus(); } @@ -1123,7 +1125,7 @@ void XGUI_Workshop::deleteObjects() // deletion and negative consequences connected with processing of already deleted items mySelector->clearSelection(); // check whether the object can be deleted. There should not be parts which are not loaded - if (!XGUI_Tools::canRemoveOrRename(myMainWindow, anObjects)) + if (!XGUI_Tools::canRemoveOrRename(desktop(), anObjects)) return; bool hasResult = false; @@ -1148,9 +1150,8 @@ void XGUI_Workshop::deleteObjects() operationMgr()->startOperation(anOpAction); // 3. delete objects - QMainWindow* aDesktop = isSalomeMode() ? salomeConnector()->desktop() : myMainWindow; std::set anIgnoredFeatures; - if (deleteFeatures(anObjects, anIgnoredFeatures, aDesktop, true)) { + if (deleteFeatures(anObjects, anIgnoredFeatures, desktop(), true)) { operationMgr()->commitOperation(); } else { @@ -1175,7 +1176,7 @@ void XGUI_Workshop::moveObjects() // moving and negative consequences connected with processing of already moved items mySelector->clearSelection(); // check whether the object can be moved. There should not be parts which are not loaded - if (!XGUI_Tools::canRemoveOrRename(myMainWindow, anObjects)) + if (!XGUI_Tools::canRemoveOrRename(desktop(), anObjects)) return; DocumentPtr anActiveDocument = aMgr->activeDocument(); @@ -1533,7 +1534,7 @@ void XGUI_Workshop::changeColor(const QObjectPtrList& theObjects) if (!abortAllOperations()) return; // 2. show the dialog to change the value - XGUI_ColorDialog* aDlg = new XGUI_ColorDialog(mainWindow()); + XGUI_ColorDialog* aDlg = new XGUI_ColorDialog(desktop()); aDlg->setColor(aColor); aDlg->move(QCursor::pos()); bool isDone = aDlg->exec() == QDialog::Accepted; diff --git a/src/XGUI/XGUI_Workshop.h b/src/XGUI/XGUI_Workshop.h index 628e721ce..5d03eefe5 100644 --- a/src/XGUI/XGUI_Workshop.h +++ b/src/XGUI/XGUI_Workshop.h @@ -16,9 +16,11 @@ #include #include +#ifndef HAVE_SALOME class AppElements_MainWindow; class AppElements_Command; class AppElements_Workbench; +#endif class XGUI_ActionsMgr; class XGUI_ContextMenuMgr; @@ -68,12 +70,17 @@ Q_OBJECT /// Deactivates the module controls. Should be called after module creation void deactivateModule(); +#ifndef HAVE_SALOME //! Returns main window (Desktop) of the application AppElements_MainWindow* mainWindow() const { return myMainWindow; } + //! Creates and adds a new workbench (menu group) with the given name and returns it + AppElements_Workbench* addWorkbench(const QString& theName); +#endif + //! Returns selection manager object XGUI_SelectionMgr* selector() const { @@ -116,9 +123,6 @@ Q_OBJECT return myContextMenuMgr; } - //! Creates and adds a new workbench (menu group) with the given name and returns it - AppElements_Workbench* addWorkbench(const QString& theName); - //! Returns an object which provides interface to Salome Module (LightApp_Module) XGUI_SalomeConnector* salomeConnector() const { @@ -280,21 +284,12 @@ signals: /// update history list (undo/redo commands) void updateHistory(); - /// Create a new document - void onNew(); - - /// Open document from file - void onOpen(); - /// Save current document bool onSave(); /// Save current document to a file selected by user bool onSaveAs(); - /// Exit application - void onExit(); - /// Undo last command void onUndo(int times = 1); @@ -304,9 +299,6 @@ signals: /// Rebuild data tree void onRebuild(); - /// Open preferences dialog box - void onPreferences(); - /// Show property panel void showPropertyPanel(); @@ -322,6 +314,20 @@ signals: /// Close document void closeDocument(); + /// Open document from file + void onOpen(); + + /// Create a new document + void onNew(); + +#ifndef HAVE_SALOME + /// Exit application + void onExit(); + + /// Open preferences dialog box + void onPreferences(); +#endif + protected: /// Sets the granted operations for the parameter operation. Firstly, it finds the nested features /// and set them into the operation. Secondly, it asks the module about ids of granted operations. @@ -425,7 +431,10 @@ private: QList processHistoryList(const std::list&) const; private: +#ifndef HAVE_SALOME AppElements_MainWindow* myMainWindow; +#endif + ModuleBase_IModule* myModule; XGUI_ErrorMgr* myErrorMgr; XGUI_ObjectsBrowser* myObjectBrowser; diff --git a/src/XGUI/XGUI_WorkshopListener.cpp b/src/XGUI/XGUI_WorkshopListener.cpp index e5c95c78b..8b658c997 100755 --- a/src/XGUI/XGUI_WorkshopListener.cpp +++ b/src/XGUI/XGUI_WorkshopListener.cpp @@ -11,12 +11,14 @@ #include "XGUI_ModuleConnector.h" #include "XGUI_QtEvents.h" +#ifndef HAVE_SALOME #include #include #include #include #include #include +#endif #include @@ -218,12 +220,12 @@ void XGUI_WorkshopListener::processEvent(const std::shared_ptr& } return; } - if (!workshop()->isSalomeMode()) { +#ifndef HAVE_SALOME SessionPtr aMgr = ModelAPI_Session::get(); AppElements_MainWindow* aMainWindow = workshop()->mainWindow(); if (aMgr->isModified() != aMainWindow->isModifiedState()) aMainWindow->setModifiedState(aMgr->isModified()); - } +#endif } //****************************************************** @@ -498,52 +500,52 @@ void XGUI_WorkshopListener::addFeature(const std::shared_ptrisSalomeMode()) { - XGUI_SalomeConnector* aSalomeConnector = aWorkshop->salomeConnector(); - QAction* aAction; - if (isColumnButton) { - aAction = aSalomeConnector->addFeatureOfNested(aWchName, aFeatureInfo, aNestedActList); - } else { - //Issue #650: in the SALOME mode the tooltip should be same as text - aFeatureInfo.toolTip = aFeatureInfo.text; - aAction = aSalomeConnector->addFeature(aWchName, aFeatureInfo); - } - aSalomeConnector->setNestedActions(aFeatureInfo.id, aNestedFeatures); - aSalomeConnector->setDocumentKind(aFeatureInfo.id, aDocKind); - - aWorkshop->actionsMgr()->addCommand(aAction); - aWorkshop->module()->actionCreated(aAction); +#ifdef HAVE_SALOME + XGUI_SalomeConnector* aSalomeConnector = aWorkshop->salomeConnector(); + QAction* aAction; + if (isColumnButton) { + aAction = aSalomeConnector->addFeatureOfNested(aWchName, aFeatureInfo, aNestedActList); } else { - //Find or create Workbench - AppElements_MainMenu* aMenuBar = aWorkshop->mainWindow()->menuObject(); - AppElements_Workbench* aPage = aMenuBar->findWorkbench(aWchName); - if (!aPage) { - aPage = aWorkshop->addWorkbench(aWchName); - } - //Find or create Group - QString aGroupName = QString::fromStdString(theMessage->groupId()); - AppElements_MenuGroupPanel* aGroup = aPage->findGroup(aGroupName); - if (!aGroup) { - aGroup = aPage->addGroup(aGroupName); - } - // Check if hotkey sequence is already defined: - XGUI_ActionsMgr* anActionsMgr = aWorkshop->actionsMgr(); - QKeySequence aHotKey = anActionsMgr->registerShortcut(aFeatureInfo.shortcut); - if(aHotKey != aFeatureInfo.shortcut) { - aFeatureInfo.shortcut = aHotKey; - } - // Create feature... - AppElements_Command* aCommand = aGroup->addFeature(aFeatureInfo, - aDocKind, - aNestedFeatures); - // Enrich created button with accept/abort buttons if necessary - AppElements_Button* aButton = aCommand->button(); - if (aButton->isColumnButton()) { - aButton->setAdditionalButtons(aNestedActList); - } - aWorkshop->actionsMgr()->addCommand(aCommand); - aWorkshop->module()->actionCreated(aCommand); + //Issue #650: in the SALOME mode the tooltip should be same as text + aFeatureInfo.toolTip = aFeatureInfo.text; + aAction = aSalomeConnector->addFeature(aWchName, aFeatureInfo); } + aSalomeConnector->setNestedActions(aFeatureInfo.id, aNestedFeatures); + aSalomeConnector->setDocumentKind(aFeatureInfo.id, aDocKind); + + aWorkshop->actionsMgr()->addCommand(aAction); + aWorkshop->module()->actionCreated(aAction); +#else + //Find or create Workbench + AppElements_MainMenu* aMenuBar = aWorkshop->mainWindow()->menuObject(); + AppElements_Workbench* aPage = aMenuBar->findWorkbench(aWchName); + if (!aPage) { + aPage = aWorkshop->addWorkbench(aWchName); + } + //Find or create Group + QString aGroupName = QString::fromStdString(theMessage->groupId()); + AppElements_MenuGroupPanel* aGroup = aPage->findGroup(aGroupName); + if (!aGroup) { + aGroup = aPage->addGroup(aGroupName); + } + // Check if hotkey sequence is already defined: + XGUI_ActionsMgr* anActionsMgr = aWorkshop->actionsMgr(); + QKeySequence aHotKey = anActionsMgr->registerShortcut(aFeatureInfo.shortcut); + if(aHotKey != aFeatureInfo.shortcut) { + aFeatureInfo.shortcut = aHotKey; + } + // Create feature... + AppElements_Command* aCommand = aGroup->addFeature(aFeatureInfo, + aDocKind, + aNestedFeatures); + // Enrich created button with accept/abort buttons if necessary + AppElements_Button* aButton = aCommand->button(); + if (aButton->isColumnButton()) { + aButton->setAdditionalButtons(aNestedActList); + } + aWorkshop->actionsMgr()->addCommand(aCommand); + aWorkshop->module()->actionCreated(aCommand); +#endif } -- 2.39.2