diff --git a/ApplicationLibCode/Application/RiaDefines.h b/ApplicationLibCode/Application/RiaDefines.h index 92a0d1637e..68025e5697 100644 --- a/ApplicationLibCode/Application/RiaDefines.h +++ b/ApplicationLibCode/Application/RiaDefines.h @@ -200,12 +200,6 @@ enum class RINavigationPolicy : short NAVIGATION_POLICY_RMS }; -enum class RIMainWindow -{ - MAIN_WINDOW_3D = 0, - MAIN_WINDOW_PLOTS = 1 -}; - enum class WellProductionType : short { PRODUCER, diff --git a/ApplicationLibCode/Application/RiaGuiApplication.cpp b/ApplicationLibCode/Application/RiaGuiApplication.cpp index 1d93d80672..aa679285f0 100644 --- a/ApplicationLibCode/Application/RiaGuiApplication.cpp +++ b/ApplicationLibCode/Application/RiaGuiApplication.cpp @@ -57,6 +57,7 @@ #include "RimAnnotationCollection.h" #include "RimAnnotationInViewCollection.h" #include "RimAnnotationTextAppearance.h" +#include "RimDockWindowController.h" #include "RimEclipseCaseCollection.h" #include "RimEclipseView.h" #include "RimFlowPlotCollection.h" @@ -1145,11 +1146,11 @@ RiuPlotMainWindow* RiaGuiApplication::mainPlotWindow() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RiuMainWindowBase* RiaGuiApplication::mainWindowByID( RiaDefines::RIMainWindow mainWindowID ) +RiuMainWindowBase* RiaGuiApplication::mainWindowByID( int mainWindowID ) { - if ( mainWindowID == RiaDefines::RIMainWindow::MAIN_WINDOW_3D ) + if ( mainWindowID == RimDockWindowController::MAIN_WINDOW_ID_3D ) return m_mainWindow; - else if ( mainWindowID == RiaDefines::RIMainWindow::MAIN_WINDOW_PLOTS ) + else if ( mainWindowID == RimDockWindowController::MAIN_WINDOW_ID_PLOTS ) return m_mainPlotWindow.get(); else return nullptr; diff --git a/ApplicationLibCode/Application/RiaGuiApplication.h b/ApplicationLibCode/Application/RiaGuiApplication.h index 5d6be3604d..caaaf5da00 100644 --- a/ApplicationLibCode/Application/RiaGuiApplication.h +++ b/ApplicationLibCode/Application/RiaGuiApplication.h @@ -103,7 +103,7 @@ public: RiuPlotMainWindow* getOrCreateMainPlotWindow(); RiuPlotMainWindow* getOrCreateAndShowMainPlotWindow(); RiuPlotMainWindow* mainPlotWindow(); - RiuMainWindowBase* mainWindowByID( RiaDefines::RIMainWindow mainWindowID ); + RiuMainWindowBase* mainWindowByID( int mainWindowID ); static RimViewWindow* activeViewWindow(); static RiuMainWindowBase* activeMainWindow(); diff --git a/ApplicationLibCode/ProjectDataModel/Rim3dView.cpp b/ApplicationLibCode/ProjectDataModel/Rim3dView.cpp index 1987f25fc5..955d8b58ae 100644 --- a/ApplicationLibCode/ProjectDataModel/Rim3dView.cpp +++ b/ApplicationLibCode/ProjectDataModel/Rim3dView.cpp @@ -186,7 +186,7 @@ Rim3dView::Rim3dView() m_annotationsPartManager = new RivAnnotationsPartMgr( this ); m_measurementPartManager = new RivMeasurementPartMgr( this ); - this->dockAs3DViewWindow(); + dockAs3DViewWindow(); // Every timer tick, send a signal for updating animations. // Any animation is supposed to connect to this signal diff --git a/ApplicationLibCode/ProjectDataModel/RimDockWindowController.cpp b/ApplicationLibCode/ProjectDataModel/RimDockWindowController.cpp index fb9e703b1f..6155aed346 100644 --- a/ApplicationLibCode/ProjectDataModel/RimDockWindowController.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimDockWindowController.cpp @@ -33,14 +33,14 @@ #include "DockManager.h" #include "DockWidget.h" -CAF_PDM_XML_SOURCE_INIT( RimDockWindowController, "DockWindowController" ); +CAF_PDM_XML_SOURCE_INIT( RimDockWindowController, "DockWindowController", "MdiWindowController" ); //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RimDockWindowController::RimDockWindowController() { - m_mainWindowID = RiaDefines::RIMainWindow::MAIN_WINDOW_3D; + CAF_PDM_InitField( &m_mainWindowID, "MainWindowID", RimDockWindowController::MAIN_WINDOW_ID_UNASSIGNED, "" ); CAF_PDM_InitFieldNoDefault( &m_viewToControl, "ViewToControl", "" ); m_viewToControl = nullptr; } @@ -159,7 +159,7 @@ void RimDockWindowController::updateViewerWidget() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimDockWindowController::setMainWindowId( RiaDefines::RIMainWindow mainId ) +void RimDockWindowController::setMainWindowId( int mainId ) { m_mainWindowID = mainId; } @@ -175,9 +175,9 @@ void RimDockWindowController::setViewToControl( RimViewWindow* view ) //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RiaDefines::RIMainWindow RimDockWindowController::mainWindowId() const +int RimDockWindowController::mainWindowId() const { - return m_mainWindowID; + return m_mainWindowID(); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimDockWindowController.h b/ApplicationLibCode/ProjectDataModel/RimDockWindowController.h index 664ba1efd2..06ebf934b7 100644 --- a/ApplicationLibCode/ProjectDataModel/RimDockWindowController.h +++ b/ApplicationLibCode/ProjectDataModel/RimDockWindowController.h @@ -36,13 +36,18 @@ class RimDockWindowController : public caf::PdmObject { CAF_PDM_HEADER_INIT; +public: + static constexpr int MAIN_WINDOW_ID_UNASSIGNED = -1; + static constexpr int MAIN_WINDOW_ID_3D = 0; + static constexpr int MAIN_WINDOW_ID_PLOTS = 1; + public: RimDockWindowController(); ~RimDockWindowController() override; - void setMainWindowId( RiaDefines::RIMainWindow mainId ); - void setViewToControl( RimViewWindow* view ); - RiaDefines::RIMainWindow mainWindowId() const; + void setMainWindowId( int mainId ); + void setViewToControl( RimViewWindow* view ); + int mainWindowId() const; void setAsActiveViewer(); @@ -59,6 +64,6 @@ protected: void setupBeforeSave() override; private: - RiaDefines::RIMainWindow m_mainWindowID; + caf::PdmField m_mainWindowID; caf::PdmPtrField m_viewToControl; }; diff --git a/ApplicationLibCode/ProjectDataModel/RimViewWindow.cpp b/ApplicationLibCode/ProjectDataModel/RimViewWindow.cpp index 979d88363a..b04b56c179 100644 --- a/ApplicationLibCode/ProjectDataModel/RimViewWindow.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimViewWindow.cpp @@ -50,12 +50,14 @@ size_t RimViewWindow::m_nextDockWindowId = 0; //-------------------------------------------------------------------------------------------------- RimViewWindow::RimViewWindow() : m_dockWidget( nullptr ) - , m_windowController( nullptr ) , m_dockWindowId( m_nextDockWindowId++ ) - , m_activeViewer( false ) + , m_isActiveViewer( false ) { CAF_PDM_InitScriptableObjectWithNameAndComment( "View window", "", "", "", "ViewWindow", "The Base Class for all Views and Plots in ResInsight" ); + CAF_PDM_InitFieldNoDefault( &m_windowController, "WindowController", "" ); + m_windowController.uiCapability()->setUiTreeChildrenHidden( true ); + CAF_PDM_InitField( &m_showWindow, "ShowWindow", true, "Show Window" ); m_showWindow.uiCapability()->setUiHidden( true ); } @@ -114,7 +116,7 @@ bool RimViewWindow::isMainDockedWindow() const //-------------------------------------------------------------------------------------------------- bool RimViewWindow::isDockedIn3DView() const { - return ( m_windowController != nullptr ) && ( m_windowController->mainWindowId() == RiaDefines::RIMainWindow::MAIN_WINDOW_3D ); + return ( m_windowController != nullptr ) && ( m_windowController->mainWindowId() == RimDockWindowController::MAIN_WINDOW_ID_3D ); } //-------------------------------------------------------------------------------------------------- @@ -122,7 +124,7 @@ bool RimViewWindow::isDockedIn3DView() const //-------------------------------------------------------------------------------------------------- bool RimViewWindow::isDockedInPlotView() const { - return ( m_windowController != nullptr ) && ( m_windowController->mainWindowId() == RiaDefines::RIMainWindow::MAIN_WINDOW_PLOTS ); + return ( m_windowController != nullptr ) && ( m_windowController->mainWindowId() == RimDockWindowController::MAIN_WINDOW_ID_PLOTS ); } //-------------------------------------------------------------------------------------------------- @@ -168,6 +170,7 @@ void RimViewWindow::updateDockWindowVisibility() if ( m_windowController != nullptr ) { + m_windowController->setViewToControl( this ); m_windowController->updateViewerWidget(); } else @@ -191,7 +194,7 @@ void RimViewWindow::updateDockWindowVisibility() //-------------------------------------------------------------------------------------------------- void RimViewWindow::dockAs3DViewWindow() { - dockInWindow( RiaDefines::RIMainWindow::MAIN_WINDOW_3D ); + dockInWindow( RimDockWindowController::MAIN_WINDOW_ID_3D ); } //-------------------------------------------------------------------------------------------------- @@ -199,7 +202,7 @@ void RimViewWindow::dockAs3DViewWindow() //-------------------------------------------------------------------------------------------------- void RimViewWindow::dockAsPlotWindow() { - dockInWindow( RiaDefines::RIMainWindow::MAIN_WINDOW_PLOTS ); + dockInWindow( RimDockWindowController::MAIN_WINDOW_ID_PLOTS ); } //-------------------------------------------------------------------------------------------------- @@ -307,7 +310,7 @@ QString RimViewWindow::dockWindowName() const //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimViewWindow::dockInWindow( RiaDefines::RIMainWindow mainWindowID ) +void RimViewWindow::dockInWindow( int mainWindowID ) { if ( m_windowController == nullptr ) { @@ -361,7 +364,7 @@ ads::CDockWidget* RimViewWindow::createDockWidget() //-------------------------------------------------------------------------------------------------- void RimViewWindow::setActive( bool active ) { - m_activeViewer = active; + m_isActiveViewer = active; } //-------------------------------------------------------------------------------------------------- @@ -369,5 +372,5 @@ void RimViewWindow::setActive( bool active ) //-------------------------------------------------------------------------------------------------- bool RimViewWindow::isActive() const { - return m_activeViewer; + return m_isActiveViewer; } diff --git a/ApplicationLibCode/ProjectDataModel/RimViewWindow.h b/ApplicationLibCode/ProjectDataModel/RimViewWindow.h index 51bc99d5b1..fd7eb670fd 100644 --- a/ApplicationLibCode/ProjectDataModel/RimViewWindow.h +++ b/ApplicationLibCode/ProjectDataModel/RimViewWindow.h @@ -101,15 +101,16 @@ protected: private: friend class RimProject; - void dockInWindow( RiaDefines::RIMainWindow mainWindowID ); + void dockInWindow( int mainWindowID ); virtual void assignIdIfNecessary() = 0; protected: - caf::PdmField m_showWindow; - RimDockWindowController* m_windowController; - ads::CDockWidget* m_dockWidget; - size_t m_dockWindowId; - bool m_activeViewer; + caf::PdmChildField m_windowController; + + caf::PdmField m_showWindow; + ads::CDockWidget* m_dockWidget; + size_t m_dockWindowId; + bool m_isActiveViewer; static size_t m_nextDockWindowId; }; diff --git a/ApplicationLibCode/UserInterface/RiuPlotMainWindow.cpp b/ApplicationLibCode/UserInterface/RiuPlotMainWindow.cpp index fbbc6a9e39..24d1d1aeb7 100644 --- a/ApplicationLibCode/UserInterface/RiuPlotMainWindow.cpp +++ b/ApplicationLibCode/UserInterface/RiuPlotMainWindow.cpp @@ -210,6 +210,11 @@ void RiuPlotMainWindow::initializeGuiNewProjectLoaded() } } + for ( auto view : viewWindows() ) + { + view->updateDockWindowVisibility(); + } + refreshToolbars(); // Sync selections with property views. diff --git a/Fwk/AppFwk/cafUserInterface/cafPdmUiPropertyView.cpp b/Fwk/AppFwk/cafUserInterface/cafPdmUiPropertyView.cpp index 0571f64a69..4d2be3c33b 100644 --- a/Fwk/AppFwk/cafUserInterface/cafPdmUiPropertyView.cpp +++ b/Fwk/AppFwk/cafUserInterface/cafPdmUiPropertyView.cpp @@ -115,7 +115,11 @@ PdmUiPropertyView::PdmUiPropertyView( QWidget* parent, Qt::WindowFlags f ) //-------------------------------------------------------------------------------------------------- PdmUiPropertyView::~PdmUiPropertyView() { - if ( m_defaultObjectEditor ) delete m_defaultObjectEditor; + if ( m_defaultObjectEditor ) + { + m_defaultObjectEditor->setPdmObject( nullptr ); + delete m_defaultObjectEditor; + } } //--------------------------------------------------------------------------------------------------