mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
(#408) Save and restore MDI window size and position
This commit is contained in:
@@ -99,6 +99,9 @@ RimView::RimView(void)
|
||||
|
||||
CAF_PDM_InitField(&m_disableLighting, "DisableLighting", false, "Disable Results Lighting", "", "Disable light model for scalar result colors", "");
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&windowGeometry, "WindowGeometry", "", "", "", "");
|
||||
windowGeometry.uiCapability()->setUiHidden(true);
|
||||
|
||||
m_previousGridModeMeshLinesWasFaults = false;
|
||||
}
|
||||
|
||||
@@ -141,7 +144,7 @@ void RimView::updateViewerWidget()
|
||||
m_viewer = new RiuViewer(glFormat, NULL);
|
||||
m_viewer->setOwnerReservoirView(this);
|
||||
|
||||
RiuMainWindow::instance()->addViewer(m_viewer);
|
||||
RiuMainWindow::instance()->addViewer(m_viewer, windowGeometry());
|
||||
m_viewer->setMinNearPlaneDistance(10);
|
||||
|
||||
this->resetLegendsInViewer();
|
||||
@@ -255,7 +258,9 @@ void RimView::setupBeforeSave()
|
||||
{
|
||||
hasUserRequestedAnimation = m_viewer->isAnimationActive(); // JJS: This is not conceptually correct. The variable is updated as we go, and store the user intentions. But I guess that in practice...
|
||||
cameraPosition = m_viewer->mainCamera()->viewMatrix();
|
||||
}
|
||||
|
||||
windowGeometry = RiuMainWindow::instance()->windowGeometryForViewer(m_viewer);
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -588,3 +593,4 @@ void RimView::notifyCameraHasChanged()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -74,6 +74,9 @@ public:
|
||||
|
||||
void notifyCameraHasChanged();
|
||||
|
||||
caf::PdmField< std::vector<int> > windowGeometry;
|
||||
|
||||
|
||||
// Draw style
|
||||
|
||||
enum MeshModeType
|
||||
|
||||
@@ -1194,22 +1194,39 @@ void RiuMainWindow::removeViewer(RiuViewer* viewer)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuMainWindow::addViewer(RiuViewer* viewer)
|
||||
void RiuMainWindow::addViewer(RiuViewer* viewer, const std::vector<int>& windowsGeometry)
|
||||
{
|
||||
#if 0
|
||||
m_CentralFrame->layout()->addWidget(viewer->layoutWidget());
|
||||
#else
|
||||
QMdiSubWindow * subWin = m_mdiArea->addSubWindow(viewer->layoutWidget());
|
||||
subWin->resize(400, 400);
|
||||
|
||||
if (m_mdiArea->subWindowList().size() == 1)
|
||||
if (windowsGeometry.size() == 5)
|
||||
{
|
||||
// Show first view maximized
|
||||
subWin->showMaximized();
|
||||
subWin->move(QPoint(windowsGeometry[0], windowsGeometry[1]));
|
||||
subWin->resize(QSize(windowsGeometry[2], windowsGeometry[3]));
|
||||
if (windowsGeometry[4] > 0)
|
||||
{
|
||||
subWin->showMaximized();
|
||||
}
|
||||
else
|
||||
{
|
||||
subWin->show();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
subWin->show();
|
||||
subWin->resize(400, 400);
|
||||
|
||||
if (m_mdiArea->subWindowList().size() == 1)
|
||||
{
|
||||
// Show first view maximized
|
||||
subWin->showMaximized();
|
||||
}
|
||||
else
|
||||
{
|
||||
subWin->show();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2148,3 +2165,24 @@ void RiuMainWindow::customMenuRequested(const QPoint& pos)
|
||||
menu.exec(globalPos);
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<int> RiuMainWindow::windowGeometryForViewer(RiuViewer* viewer)
|
||||
{
|
||||
std::vector<int> geo;
|
||||
|
||||
QMdiSubWindow* mdiWindow = findMdiSubWindow(viewer);
|
||||
if (mdiWindow)
|
||||
{
|
||||
geo.push_back(mdiWindow->pos().x());
|
||||
geo.push_back(mdiWindow->pos().y());
|
||||
geo.push_back(mdiWindow->size().width());
|
||||
geo.push_back(mdiWindow->size().height());
|
||||
geo.push_back(mdiWindow->isMaximized());
|
||||
}
|
||||
|
||||
return geo;
|
||||
}
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ public:
|
||||
void cleanupGuiBeforeProjectClose();
|
||||
|
||||
void removeViewer( RiuViewer* viewer );
|
||||
void addViewer(RiuViewer* viewer);
|
||||
void addViewer(RiuViewer* viewer, const std::vector<int>& windowsGeometry);
|
||||
void setActiveViewer(RiuViewer* subWindow);
|
||||
|
||||
void addWellLogViewer(RiuWellLogPlot* viewer);
|
||||
@@ -113,6 +113,8 @@ public:
|
||||
void addRecentFiles(const QString& file);
|
||||
void removeRecentFiles(const QString& file);
|
||||
|
||||
std::vector<int> windowGeometryForViewer(RiuViewer* viewer);
|
||||
|
||||
protected:
|
||||
virtual void closeEvent(QCloseEvent* event);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user