///////////////////////////////////////////////////////////////////////////////// // // 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"); } } }