///////////////////////////////////////////////////////////////////////////////// // // Copyright (C) 2018- Equinor 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 "RiuDockWidgetTools.h" #include "RimEclipseView.h" #include "RimGeoMechView.h" #include "RiuMainWindow.h" #include "cvfAssert.h" #include #include //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QString RiuDockWidgetTools::projectTreeName() { return "dockProjectTree"; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QString RiuDockWidgetTools::propertyEditorName() { return "dockpropertyEditor"; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QString RiuDockWidgetTools::resultInfoName() { return "dockResultInfo"; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QString RiuDockWidgetTools::processMonitorName() { return "dockProcessMonitor"; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QString RiuDockWidgetTools::resultPlotName() { return "dockResultPlot"; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QString RiuDockWidgetTools::relPermPlotName() { return "dockRelPermPlot"; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QString RiuDockWidgetTools::pvtPlotName() { return "dockPvtPlot"; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QString RiuDockWidgetTools::mohrsCirclePlotName() { return "dockMohrsCirclePlot"; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QString RiuDockWidgetTools::plotMainWindowProjectTreeName() { return "plotMainWindow_dockProjectTree"; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QString RiuDockWidgetTools::plotMainWindowPropertyEditorName() { return "plotMainWindow_dockPropertyEditor"; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QString RiuDockWidgetTools::messagesName() { return "dockMessages"; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QMap RiuDockWidgetTools::widgetVisibilitiesForEclipse() { QMap widgetVisibility; widgetVisibility[RiuDockWidgetTools::projectTreeName()] = true; widgetVisibility[RiuDockWidgetTools::propertyEditorName()] = true; widgetVisibility[RiuDockWidgetTools::resultInfoName()] = true; widgetVisibility[RiuDockWidgetTools::processMonitorName()] = true; widgetVisibility[RiuDockWidgetTools::resultPlotName()] = true; widgetVisibility[RiuDockWidgetTools::relPermPlotName()] = true; widgetVisibility[RiuDockWidgetTools::pvtPlotName()] = true; widgetVisibility[RiuDockWidgetTools::messagesName()] = true; widgetVisibility[RiuDockWidgetTools::mohrsCirclePlotName()] = false; return widgetVisibility; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QMap RiuDockWidgetTools::widgetVisibilitiesForGeoMech() { QMap widgetVisibility; widgetVisibility[RiuDockWidgetTools::projectTreeName()] = true; widgetVisibility[RiuDockWidgetTools::propertyEditorName()] = true; widgetVisibility[RiuDockWidgetTools::resultInfoName()] = true; widgetVisibility[RiuDockWidgetTools::processMonitorName()] = true; widgetVisibility[RiuDockWidgetTools::resultPlotName()] = true; widgetVisibility[RiuDockWidgetTools::relPermPlotName()] = false; widgetVisibility[RiuDockWidgetTools::pvtPlotName()] = false; widgetVisibility[RiuDockWidgetTools::messagesName()] = true; widgetVisibility[RiuDockWidgetTools::mohrsCirclePlotName()] = true; return widgetVisibility; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QDockWidget* RiuDockWidgetTools::findDockWidget( const QObject* parent, const QString& dockWidgetName ) { QList dockWidgets = parent->findChildren(); for ( QDockWidget* dock : dockWidgets ) { if ( dock->objectName() == dockWidgetName ) { return dock; } } return nullptr; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QAction* RiuDockWidgetTools::toggleActionForWidget( const QObject* parent, const QString& dockWidgetName ) { auto w = RiuDockWidgetTools::findDockWidget( parent, dockWidgetName ); if ( w ) { return w->toggleViewAction(); } return nullptr; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RiuDockWidgetTools::setVisibleDockingWindowsForEclipse() { RiuMainWindow* mainWindow = RiuMainWindow::instance(); auto widgetVisibilities = widgetVisibilitiesForEclipse(); applyDockWidgetVisibilities( mainWindow, widgetVisibilities ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RiuDockWidgetTools::setVisibleDockingWindowsForGeoMech() { RiuMainWindow* mainWindow = RiuMainWindow::instance(); auto widgetVisibilities = widgetVisibilitiesForGeoMech(); applyDockWidgetVisibilities( mainWindow, widgetVisibilities ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RiuDockWidgetTools::setDockWidgetVisibility( const QObject* parent, const QString& dockWidgetName, bool isVisible ) { QDockWidget* dockWidget = findDockWidget( parent, dockWidgetName ); if ( dockWidget ) { dockWidget->setVisible( isVisible ); } } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QVariant RiuDockWidgetTools::dockWidgetsVisibility( const QObject* parent ) { QMap widgetVisibility; QList dockWidgets = parent->findChildren(); for ( QDockWidget* dock : dockWidgets ) { if ( dock ) { bool isVisible = dock->isVisible(); widgetVisibility[dock->objectName()] = isVisible; // qDebug() << "Store " << dock->objectName() << " : " << (isVisible ? "visible" : "not visible"); } } return QVariant( widgetVisibility ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QVariant RiuDockWidgetTools::defaultDockWidgetVisibilities() { return QVariant( widgetVisibilitiesForEclipse() ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RiuDockWidgetTools::applyDockWidgetVisibilities( const QObject* parent, const QMap& widgetVisibilities ) { QList dockWidgets = parent->findChildren(); for ( QDockWidget* dock : dockWidgets ) { if ( dock ) { bool isVisible = true; auto widgetVisibility = widgetVisibilities.find( dock->objectName() ); if ( widgetVisibility != widgetVisibilities.end() ) { isVisible = widgetVisibility.value().toBool(); } dock->setVisible( isVisible ); // qDebug() << "Restore " << dock->objectName() << " : " << (isVisible ? "visible" : "not visible"); } } }