///////////////////////////////////////////////////////////////////////////////// // // 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 // for more details. // ///////////////////////////////////////////////////////////////////////////////// #include "RimMdiWindowController.h" #include "RiaApplication.h" #include "RimViewWindow.h" #include "RiuMainWindowBase.h" 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; uiCapability()->updateUiIconFromToggleField(); updateConnectedEditors(); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimMdiWindowController::removeWindowFromMDI() { RiuMainWindowBase* mainWin = getMainWindow(); if (mainWin && viewWidget()) mainWin->removeViewer(viewWidget()); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RimViewWindow* RimMdiWindowController::viewPdmObject() { RimViewWindow * viewWindowObj; this->firstAncestorOrThisOfType(viewWindowObj); return viewWindowObj; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QWidget* RimMdiWindowController::viewWidget() { return viewPdmObject()->viewWidget(); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RiuMainWindowBase* RimMdiWindowController::getMainWindow() { return RiaApplication::instance()->mainWindowByID(m_mainWindowID); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimMdiWindowController::setupBeforeSave() { if ( viewWidget() && getMainWindow() ) { this->setMdiWindowGeometry(getMainWindow()->windowGeometryForViewer(viewWidget())); } } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimMdiWindowController::updateViewerWidget() { RiuMainWindowBase* mainWindow = getMainWindow(); if ( !mainWindow ) return; if ( viewPdmObject()->m_showWindow() ) { if ( !viewWidget() ) { QWidget * viewWidget = viewPdmObject()->createViewWidget(mainWindow); mainWindow->addViewer(viewWidget, this->mdiWindowGeometry()); mainWindow->setActiveViewer(viewWidget); viewPdmObject()->updateViewWidgetAfterCreation(); } else { mainWindow->setActiveViewer(viewWidget()); } viewPdmObject()->updateMdiWindowTitle(); } else { if ( viewWidget() ) { this->setMdiWindowGeometry(mainWindow->windowGeometryForViewer(viewWidget())); mainWindow->removeViewer(viewWidget()); viewPdmObject()->deleteViewWidget(); } } }