mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-26 15:10:22 -05:00
Work in progress
This commit is contained in:
1 parent
2c9e148fc6
commit
a28340063f
9 files changed
+22
-255
No files matched your search
@@ -62,7 +62,6 @@ set(SOURCE_GROUP_SOURCE_FILES
|
||||
${CMAKE_CURRENT_LIST_DIR}/RimPlotCurveAppearance.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RimStackablePlotCurve.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RimAdvancedSnapshotExportDefinition.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RimMdiWindowController.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RimDockWindowController.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RimNamedObject.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RimCheckableNamedObject.cpp
|
||||
|
||||
@@ -32,10 +32,10 @@
|
||||
#include "RimAnnotationCollection.h"
|
||||
#include "RimAnnotationInViewCollection.h"
|
||||
#include "RimCase.h"
|
||||
#include "RimDockWindowController.h"
|
||||
#include "RimGridView.h"
|
||||
#include "RimLegendConfig.h"
|
||||
#include "RimMainPlotCollection.h"
|
||||
#include "RimMdiWindowController.h"
|
||||
#include "RimMeasurement.h"
|
||||
#include "RimOilField.h"
|
||||
#include "RimProject.h"
|
||||
|
||||
@@ -1,178 +0,0 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2017 Statoil ASA
|
||||
//
|
||||
// ResInsight is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||
// for more details.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "RimMdiWindowController.h"
|
||||
|
||||
#include "RiaGuiApplication.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimViewWindow.h"
|
||||
#include "RiuMainWindowBase.h"
|
||||
|
||||
#include <QMdiSubWindow>
|
||||
|
||||
CAF_PDM_XML_SOURCE_INIT( RimMdiWindowController, "MdiWindowController" );
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimMdiWindowController::RimMdiWindowController()
|
||||
{
|
||||
CAF_PDM_InitField( &m_mainWindowID, "MainWindowID", -1, "" );
|
||||
CAF_PDM_InitField( &m_x, "xPos", -1, "" );
|
||||
CAF_PDM_InitField( &m_y, "yPos", -1, "" );
|
||||
CAF_PDM_InitField( &m_width, "Width", -1, "" );
|
||||
CAF_PDM_InitField( &m_height, "Height", -1, "" );
|
||||
CAF_PDM_InitField( &m_isMaximized, "IsMaximized", false, "" );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimMdiWindowController::~RimMdiWindowController()
|
||||
{
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimMdiWindowController::setMdiWindowGeometry( const RimMdiWindowGeometry& windowGeometry )
|
||||
{
|
||||
m_mainWindowID = windowGeometry.mainWindowID;
|
||||
m_x = windowGeometry.x;
|
||||
m_y = windowGeometry.y;
|
||||
m_width = windowGeometry.width;
|
||||
m_height = windowGeometry.height;
|
||||
m_isMaximized = windowGeometry.isMaximized;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimMdiWindowGeometry RimMdiWindowController::mdiWindowGeometry()
|
||||
{
|
||||
RimMdiWindowGeometry windowGeometry;
|
||||
|
||||
windowGeometry.mainWindowID = m_mainWindowID;
|
||||
windowGeometry.x = m_x;
|
||||
windowGeometry.y = m_y;
|
||||
windowGeometry.width = m_width;
|
||||
windowGeometry.height = m_height;
|
||||
windowGeometry.isMaximized = m_isMaximized;
|
||||
|
||||
return windowGeometry;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimMdiWindowController::handleViewerDeletion()
|
||||
{
|
||||
viewPdmObject()->m_showWindow = false;
|
||||
viewPdmObject()->updateConnectedEditors();
|
||||
viewPdmObject()->updateUiIconFromToggleField();
|
||||
uiCapability()->updateUiIconFromToggleField();
|
||||
removeWindowFromMDI();
|
||||
|
||||
updateConnectedEditors();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimMdiWindowController::removeWindowFromMDI()
|
||||
{
|
||||
RiuMainWindowBase* mainWin = getMainWindow();
|
||||
if ( mainWin && viewWidget() )
|
||||
{
|
||||
mainWin->removeViewer( viewWidget() );
|
||||
viewPdmObject()->deleteViewWidget();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimViewWindow* RimMdiWindowController::viewPdmObject()
|
||||
{
|
||||
return firstAncestorOrThisOfType<RimViewWindow>();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QWidget* RimMdiWindowController::viewWidget()
|
||||
{
|
||||
return viewPdmObject()->viewWidget();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RiuMainWindowBase* RimMdiWindowController::getMainWindow()
|
||||
{
|
||||
if ( RiaGuiApplication::isRunning() )
|
||||
{
|
||||
return RiaGuiApplication::instance()->mainWindowByID( m_mainWindowID );
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimMdiWindowController::setupBeforeSave()
|
||||
{
|
||||
if ( viewWidget() && getMainWindow() )
|
||||
{
|
||||
setMdiWindowGeometry( getMainWindow()->windowGeometryForViewer( viewWidget() ) );
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimMdiWindowController::updateViewerWidget()
|
||||
{
|
||||
RiuMainWindowBase* mainWindow = getMainWindow();
|
||||
if ( !mainWindow ) return;
|
||||
|
||||
if ( viewPdmObject()->isWindowVisible() )
|
||||
{
|
||||
if ( !viewWidget() )
|
||||
{
|
||||
QMdiSubWindow* viewWindow = mainWindow->createViewWindow();
|
||||
QWidget* viewWidget = viewPdmObject()->createViewWidget( viewWindow );
|
||||
mainWindow->initializeViewer( viewWindow, viewWidget, mdiWindowGeometry() );
|
||||
|
||||
viewPdmObject()->updateViewWidgetAfterCreation();
|
||||
}
|
||||
|
||||
viewPdmObject()->updateMdiWindowTitle();
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( viewWidget() )
|
||||
{
|
||||
setMdiWindowGeometry( mainWindow->windowGeometryForViewer( viewWidget() ) );
|
||||
|
||||
mainWindow->removeViewer( viewWidget() );
|
||||
|
||||
viewPdmObject()->deleteViewWidget();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,65 +0,0 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2017 Statoil ASA
|
||||
//
|
||||
// ResInsight is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||
// for more details.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "cafPdmChildField.h"
|
||||
#include "cafPdmField.h"
|
||||
#include "cafPdmObject.h"
|
||||
|
||||
class RiuMainWindowBase;
|
||||
class RiuMdiSubWindow;
|
||||
class RimViewWindow;
|
||||
struct RimMdiWindowGeometry;
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
///
|
||||
//==================================================================================================
|
||||
class RimMdiWindowController : public caf::PdmObject
|
||||
{
|
||||
CAF_PDM_HEADER_INIT;
|
||||
|
||||
public:
|
||||
RimMdiWindowController();
|
||||
~RimMdiWindowController() override;
|
||||
|
||||
void setMdiWindowGeometry( const RimMdiWindowGeometry& windowGeometry );
|
||||
RimMdiWindowGeometry mdiWindowGeometry();
|
||||
|
||||
void updateViewerWidget();
|
||||
void handleViewerDeletion();
|
||||
void removeWindowFromMDI();
|
||||
|
||||
protected:
|
||||
RimViewWindow* viewPdmObject();
|
||||
QWidget* viewWidget();
|
||||
RiuMainWindowBase* getMainWindow();
|
||||
|
||||
// Overridden PDM methods
|
||||
void setupBeforeSave() override;
|
||||
|
||||
private:
|
||||
caf::PdmField<int> m_mainWindowID;
|
||||
|
||||
caf::PdmField<int> m_x;
|
||||
caf::PdmField<int> m_y;
|
||||
caf::PdmField<int> m_width;
|
||||
caf::PdmField<int> m_height;
|
||||
caf::PdmField<bool> m_isMaximized;
|
||||
};
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
#include "RicfCommandObject.h"
|
||||
|
||||
#include "RimMdiWindowController.h"
|
||||
#include "RimDockWindowController.h"
|
||||
#include "RimProject.h"
|
||||
|
||||
#include "cafPdmUiTreeAttributes.h"
|
||||
@@ -96,7 +96,7 @@ void RimViewWindow::loadDataAndUpdate()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewWindow::removeMdiWindowFromMdiArea()
|
||||
{
|
||||
if ( m_windowController() ) m_windowController->removeWindowFromMDI();
|
||||
if ( m_windowController() ) m_windowController->removeWindowFromDock();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -194,7 +194,7 @@ bool RimViewWindow::isMdiWindow() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewWindow::setMdiWindowGeometry( const RimMdiWindowGeometry& windowGeometry )
|
||||
{
|
||||
if ( m_windowController() ) m_windowController()->setMdiWindowGeometry( windowGeometry );
|
||||
if ( m_windowController() ) m_windowController()->setWindowGeometry( windowGeometry );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -203,7 +203,7 @@ void RimViewWindow::setMdiWindowGeometry( const RimMdiWindowGeometry& windowGeom
|
||||
RimMdiWindowGeometry RimViewWindow::mdiWindowGeometry()
|
||||
{
|
||||
if ( m_windowController() )
|
||||
return m_windowController()->mdiWindowGeometry();
|
||||
return m_windowController()->windowGeometry();
|
||||
else
|
||||
return RimMdiWindowGeometry();
|
||||
}
|
||||
@@ -293,7 +293,7 @@ void RimViewWindow::setAsMdiWindow( int mainWindowID )
|
||||
{
|
||||
if ( !m_windowController() )
|
||||
{
|
||||
m_windowController = new RimMdiWindowController;
|
||||
m_windowController = new RimDockWindowController;
|
||||
RimMdiWindowGeometry mwg;
|
||||
mwg.mainWindowID = mainWindowID;
|
||||
setMdiWindowGeometry( mwg );
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
#include <vector>
|
||||
|
||||
class RimMdiWindowController;
|
||||
class RimDockWindowController;
|
||||
|
||||
struct RimMdiWindowGeometry
|
||||
{
|
||||
@@ -90,7 +90,6 @@ protected:
|
||||
void removeMdiWindowFromMdiArea();
|
||||
|
||||
///////// Interface for the Window controller
|
||||
friend class RimMdiWindowController;
|
||||
friend class RimDockWindowController;
|
||||
|
||||
QString windowTitle();
|
||||
@@ -118,8 +117,8 @@ private:
|
||||
virtual void assignIdIfNecessary() = 0;
|
||||
|
||||
protected:
|
||||
caf::PdmField<bool> m_showWindow;
|
||||
caf::PdmChildField<RimMdiWindowController*> m_windowController;
|
||||
caf::PdmField<bool> m_showWindow;
|
||||
caf::PdmChildField<RimDockWindowController*> m_windowController;
|
||||
|
||||
private:
|
||||
// Obsoleted field
|
||||
|
||||
@@ -1256,7 +1256,7 @@ RiuMessagePanel* RiuMainWindow::messagePanel()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuMainWindow::removeViewer( QWidget* viewer )
|
||||
{
|
||||
// removeViewerFromMdiArea( m_mdiArea, viewer );
|
||||
// m_dockManager->removeDockWidget( viewer );
|
||||
slotRefreshViewActions();
|
||||
}
|
||||
|
||||
|
||||
@@ -365,6 +365,17 @@ bool RiuMainWindowBase::isBlockingViewSelectionOnSubWindowActivated() const
|
||||
return m_blockSubWindowProjectTreeSelection;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuMainWindowBase::removeViewerFromDockArea( QWidget* viewer )
|
||||
{
|
||||
if ( auto dw = m_dockManager->findDockWidget( viewer->objectName() ) )
|
||||
{
|
||||
dw->close();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -108,6 +108,7 @@ protected:
|
||||
void createTreeViews( int numberOfTrees );
|
||||
void removeViewerFromMdiArea( RiuMdiArea* mdiArea, QWidget* viewer );
|
||||
void initializeSubWindow( RiuMdiArea* mdiArea, QMdiSubWindow* mdiSubWindow, const QPoint& subWindowPos, const QSize& subWindowSize );
|
||||
void removeViewerFromDockArea( QWidget* viewer );
|
||||
|
||||
void restoreTreeViewStates( QString treeStateString, QString treeIndexString );
|
||||
|
||||
|
||||
Reference in new issue
Block a user