mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#4410 Dock Window State : Set default visibility of dock widgets
This commit is contained in:
@@ -95,7 +95,7 @@ QString RiuDockWidgetTools::mohrsCirclePlotName()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RiuDockWidgetTools::plotMainWindowProjectTreeName()
|
||||
QString RiuDockWidgetTools::plotMainWindowProjectTreeName()
|
||||
{
|
||||
return "plotMainWindow_dockProjectTree";
|
||||
}
|
||||
@@ -103,7 +103,7 @@ QString RiuDockWidgetTools::plotMainWindowProjectTreeName()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RiuDockWidgetTools::plotMainWindowPropertyEditorName()
|
||||
QString RiuDockWidgetTools::plotMainWindowPropertyEditorName()
|
||||
{
|
||||
return "plotMainWindow_dockPropertyEditor";
|
||||
}
|
||||
@@ -116,6 +116,48 @@ QString RiuDockWidgetTools::messagesName()
|
||||
return "dockMessages";
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QMap<QString, QVariant> RiuDockWidgetTools::widgetVisibilitiesForEclipse()
|
||||
{
|
||||
QMap<QString, QVariant> 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<QString, QVariant> RiuDockWidgetTools::widgetVisibilitiesForGeoMech()
|
||||
{
|
||||
QMap<QString, QVariant> 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;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -153,19 +195,10 @@ QAction* RiuDockWidgetTools::toggleActionForWidget(const QObject* parent, const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuDockWidgetTools::setVisibleDockingWindowsForEclipse()
|
||||
{
|
||||
RiuMainWindow* mainWindow = RiuMainWindow::instance();
|
||||
RiuMainWindow* mainWindow = RiuMainWindow::instance();
|
||||
auto widgetVisibilities = widgetVisibilitiesForEclipse();
|
||||
|
||||
RiuDockWidgetTools::trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::projectTreeName(), true);
|
||||
RiuDockWidgetTools::trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::propertyEditorName(), true);
|
||||
RiuDockWidgetTools::trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::resultInfoName(), true);
|
||||
RiuDockWidgetTools::trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::processMonitorName(), true);
|
||||
RiuDockWidgetTools::trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::resultPlotName(), true);
|
||||
RiuDockWidgetTools::trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::relPermPlotName(), true);
|
||||
RiuDockWidgetTools::trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::pvtPlotName(), true);
|
||||
RiuDockWidgetTools::trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::messagesName(), true);
|
||||
|
||||
|
||||
RiuDockWidgetTools::trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::mohrsCirclePlotName(), false);
|
||||
applyDockWidgetVisibilities(mainWindow, widgetVisibilities);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -173,24 +206,16 @@ void RiuDockWidgetTools::setVisibleDockingWindowsForEclipse()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuDockWidgetTools::setVisibleDockingWindowsForGeoMech()
|
||||
{
|
||||
RiuMainWindow* mainWindow = RiuMainWindow::instance();
|
||||
RiuMainWindow* mainWindow = RiuMainWindow::instance();
|
||||
auto widgetVisibilities = widgetVisibilitiesForGeoMech();
|
||||
|
||||
RiuDockWidgetTools::trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::projectTreeName(), true);
|
||||
RiuDockWidgetTools::trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::propertyEditorName(), true);
|
||||
RiuDockWidgetTools::trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::resultInfoName(), true);
|
||||
RiuDockWidgetTools::trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::processMonitorName(), true);
|
||||
RiuDockWidgetTools::trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::resultPlotName(), true);
|
||||
RiuDockWidgetTools::trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::relPermPlotName(), false);
|
||||
RiuDockWidgetTools::trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::pvtPlotName(), false);
|
||||
RiuDockWidgetTools::trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::messagesName(), true);
|
||||
|
||||
RiuDockWidgetTools::trySetDockWidgetVisibility(mainWindow, RiuDockWidgetTools::mohrsCirclePlotName(), true);
|
||||
applyDockWidgetVisibilities(mainWindow, widgetVisibilities);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuDockWidgetTools::trySetDockWidgetVisibility(const QObject* parent, const QString& dockWidgetName, bool isVisible)
|
||||
void RiuDockWidgetTools::setDockWidgetVisibility(const QObject* parent, const QString& dockWidgetName, bool isVisible)
|
||||
{
|
||||
QDockWidget* dockWidget = findDockWidget(parent, dockWidgetName);
|
||||
if (dockWidget)
|
||||
@@ -202,7 +227,7 @@ void RiuDockWidgetTools::trySetDockWidgetVisibility(const QObject* parent, const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QVariant RiuDockWidgetTools::storeDockWidgetsVisibility(const QObject* parent)
|
||||
QVariant RiuDockWidgetTools::dockWidgetsVisibility(const QObject* parent)
|
||||
{
|
||||
QMap<QString, QVariant> widgetVisibility;
|
||||
|
||||
@@ -212,7 +237,7 @@ QVariant RiuDockWidgetTools::storeDockWidgetsVisibility(const QObject* parent)
|
||||
{
|
||||
if (dock)
|
||||
{
|
||||
bool isVisible = dock->isVisible();
|
||||
bool isVisible = dock->isVisible();
|
||||
widgetVisibility[dock->objectName()] = isVisible;
|
||||
|
||||
// qDebug() << "Store " << dock->objectName() << " : " << (isVisible ? "visible" : "not visible");
|
||||
@@ -225,10 +250,16 @@ QVariant RiuDockWidgetTools::storeDockWidgetsVisibility(const QObject* parent)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuDockWidgetTools::restoreDockWidgetsVisibility(const QObject* parent, QVariant widgetVisibilities)
|
||||
QVariant RiuDockWidgetTools::defaultDockWidgetVisibilities()
|
||||
{
|
||||
QMap<QString, QVariant> widgetVisibilityMap = widgetVisibilities.toMap();
|
||||
return QVariant(widgetVisibilitiesForEclipse());
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuDockWidgetTools::applyDockWidgetVisibilities(const QObject* parent, const QMap<QString, QVariant>& widgetVisibilities)
|
||||
{
|
||||
QList<QDockWidget*> dockWidgets = parent->findChildren<QDockWidget*>();
|
||||
|
||||
for (QDockWidget* dock : dockWidgets)
|
||||
@@ -237,8 +268,8 @@ void RiuDockWidgetTools::restoreDockWidgetsVisibility(const QObject* parent, QVa
|
||||
{
|
||||
bool isVisible = true;
|
||||
|
||||
auto widgetVisibility = widgetVisibilityMap.find(dock->objectName());
|
||||
if (widgetVisibility != widgetVisibilityMap.end())
|
||||
auto widgetVisibility = widgetVisibilities.find(dock->objectName());
|
||||
if (widgetVisibility != widgetVisibilities.end())
|
||||
{
|
||||
isVisible = widgetVisibility.value().toBool();
|
||||
}
|
||||
@@ -249,4 +280,3 @@ void RiuDockWidgetTools::restoreDockWidgetsVisibility(const QObject* parent, QVa
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -51,13 +51,19 @@ public:
|
||||
|
||||
static QAction* toggleActionForWidget(const QObject* parent, const QString& dockWidgetName);
|
||||
|
||||
static QVariant storeDockWidgetsVisibility(const QObject* parent);
|
||||
static void restoreDockWidgetsVisibility(const QObject* parent, QVariant widgetVisibilities);
|
||||
static QVariant dockWidgetsVisibility(const QObject* parent);
|
||||
static QVariant defaultDockWidgetVisibilities();
|
||||
|
||||
static void setVisibleDockingWindowsForEclipse();
|
||||
static void setVisibleDockingWindowsForGeoMech();
|
||||
static void trySetDockWidgetVisibility(const QObject* parent, const QString& dockWidgetName, bool isVisible);
|
||||
|
||||
static void setDockWidgetVisibility(const QObject* parent, const QString& dockWidgetName, bool isVisible);
|
||||
static void applyDockWidgetVisibilities(const QObject* parent, const QMap<QString, QVariant>& visibilityMap);
|
||||
|
||||
private:
|
||||
static QMap<QString, QVariant> widgetVisibilitiesForEclipse();
|
||||
static QMap<QString, QVariant> widgetVisibilitiesForGeoMech();
|
||||
|
||||
|
||||
static QDockWidget* findDockWidget(const QObject* parent, const QString& dockWidgetName);
|
||||
};
|
||||
|
||||
@@ -1749,7 +1749,7 @@ void RiuMainWindow::updateMemoryUsage()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuMainWindow::showProcessMonitorDockPanel()
|
||||
{
|
||||
RiuDockWidgetTools::trySetDockWidgetVisibility(this, RiuDockWidgetTools::processMonitorName(), true);
|
||||
RiuDockWidgetTools::setDockWidgetVisibility(this, RiuDockWidgetTools::processMonitorName(), true);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
#include "RiuDockWidgetTools.h"
|
||||
#include "RiuMdiSubWindow.h"
|
||||
|
||||
#include "RimViewWindow.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimViewWindow.h"
|
||||
|
||||
#include "cafPdmObject.h"
|
||||
#include "cafPdmUiTreeView.h"
|
||||
@@ -87,6 +87,16 @@ void RiuMainWindowBase::loadWinGeoAndDockToolBarLayout()
|
||||
restoreDockWidgetVisibilities();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString mainWindowDockWidgetSettingsKey(const QString& settingsFolderName)
|
||||
{
|
||||
QString key = settingsFolderName + "/dockWindowVisibilies";
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -102,24 +112,44 @@ void RiuMainWindowBase::saveWinGeoAndDockToolBarLayout()
|
||||
settings.setValue(QString("%1/dockAndToolBarLayout").arg(registryFolderName()), layout);
|
||||
|
||||
settings.setValue(QString("%1/isMaximized").arg(registryFolderName()), isMaximized());
|
||||
|
||||
|
||||
if (this->isVisible())
|
||||
{
|
||||
QVariant dockWindowVisibilities = RiuDockWidgetTools::storeDockWidgetsVisibility(this);
|
||||
settings.setValue(QString("%1/dockWindowVisibilies").arg(registryFolderName()), dockWindowVisibilities);
|
||||
QVariant dockWindowVisibilities = RiuDockWidgetTools::dockWidgetsVisibility(this);
|
||||
QString key = mainWindowDockWidgetSettingsKey(registryFolderName());
|
||||
|
||||
settings.setValue(key, dockWindowVisibilities);
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuMainWindowBase::restoreDockWidgetVisibilities()
|
||||
void RiuMainWindowBase::storeDefaultDockWidgetVisibilitiesIfRequired()
|
||||
{
|
||||
QSettings settings;
|
||||
|
||||
QString key = mainWindowDockWidgetSettingsKey(registryFolderName());
|
||||
|
||||
if (!settings.contains(key))
|
||||
{
|
||||
QVariant dockWidgetVisibilities = RiuDockWidgetTools::defaultDockWidgetVisibilities();
|
||||
settings.setValue(key, dockWidgetVisibilities);
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuMainWindowBase::restoreDockWidgetVisibilities()
|
||||
{
|
||||
// Company and appname set through QCoreApplication
|
||||
QSettings settings;
|
||||
|
||||
QVariant dockWindowVisibilities = settings.value(QString("%1/dockWindowVisibilies").arg(registryFolderName()));
|
||||
RiuDockWidgetTools::restoreDockWidgetsVisibility(this, dockWindowVisibilities);
|
||||
QString key = mainWindowDockWidgetSettingsKey(registryFolderName());
|
||||
|
||||
QVariant dockWindowVisibilities = settings.value(key);
|
||||
RiuDockWidgetTools::applyDockWidgetVisibilities(this, dockWindowVisibilities.toMap());
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -142,7 +172,7 @@ void RiuMainWindowBase::showWindow()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuMainWindowBase::hideAllDockWidgets()
|
||||
void RiuMainWindowBase::hideAllDockWidgets()
|
||||
{
|
||||
QList<QDockWidget*> dockWidgets = findChildren<QDockWidget*>();
|
||||
|
||||
@@ -272,7 +302,8 @@ void RiuMainWindowBase::addViewerToMdiArea(QMdiArea* mdiArea,
|
||||
const QPoint& subWindowPos,
|
||||
const QSize& subWindowSize)
|
||||
{
|
||||
RiuMdiSubWindow* subWin = new RiuMdiSubWindow(nullptr, Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint | Qt::WindowMaximizeButtonHint);
|
||||
RiuMdiSubWindow* subWin =
|
||||
new RiuMdiSubWindow(nullptr, Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint | Qt::WindowMaximizeButtonHint);
|
||||
subWin->setAttribute(Qt::WA_DeleteOnClose); // Make sure the contained widget is destroyed when the MDI window is closed
|
||||
subWin->setWidget(viewer);
|
||||
|
||||
|
||||
@@ -56,6 +56,7 @@ public:
|
||||
RimMdiWindowGeometry windowGeometryForViewer(QWidget* viewer);
|
||||
void loadWinGeoAndDockToolBarLayout();
|
||||
void saveWinGeoAndDockToolBarLayout();
|
||||
void storeDefaultDockWidgetVisibilitiesIfRequired();
|
||||
void restoreDockWidgetVisibilities();
|
||||
void showWindow();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user