Remove duplicate add/remove/setActive viewer methods from MainWindow.

(#408) Added Save Load of WellLog Plot window geometry also
This commit is contained in:
Jacob Støren 2015-09-02 15:53:49 +02:00
parent 1282766427
commit 30e2495849
8 changed files with 46 additions and 84 deletions

View File

@ -1464,7 +1464,7 @@ void RiaApplication::saveSnapshotForAllViews(const QString& snapshotFolderName)
setActiveReservoirView(riv);
RiuViewer* viewer = riv->viewer();
mainWnd->setActiveViewer(viewer);
mainWnd->setActiveViewer(viewer->layoutWidget());
// Process all events to avoid a black image when grabbing frame buffer
QCoreApplication::processEvents();

View File

@ -203,7 +203,7 @@ void RimEclipseView::fieldChangedByUi(const caf::PdmFieldHandle* changedField, c
{
if (m_viewer)
{
RiuMainWindow::instance()->removeViewer(m_viewer);
RiuMainWindow::instance()->removeViewer(m_viewer->layoutWidget());
delete m_viewer;
m_viewer = NULL;
}

View File

@ -480,7 +480,7 @@ void RimGeoMechView::fieldChangedByUi(const caf::PdmFieldHandle* changedField, c
{
if (m_viewer)
{
RiuMainWindow::instance()->removeViewer(m_viewer);
RiuMainWindow::instance()->removeViewer(m_viewer->layoutWidget());
delete m_viewer;
m_viewer = NULL;
}

View File

@ -114,7 +114,7 @@ RimView::~RimView(void)
if (m_viewer)
{
RiuMainWindow::instance()->removeViewer(m_viewer);
RiuMainWindow::instance()->removeViewer(m_viewer->layoutWidget());
}
delete m_viewer;
@ -144,7 +144,7 @@ void RimView::updateViewerWidget()
m_viewer = new RiuViewer(glFormat, NULL);
m_viewer->setOwnerReservoirView(this);
RiuMainWindow::instance()->addViewer(m_viewer, windowGeometry());
RiuMainWindow::instance()->addViewer(m_viewer->layoutWidget(), windowGeometry());
m_viewer->setMinNearPlaneDistance(10);
this->resetLegendsInViewer();
@ -155,7 +155,7 @@ void RimView::updateViewerWidget()
isViewerCreated = true;
}
RiuMainWindow::instance()->setActiveViewer(m_viewer);
RiuMainWindow::instance()->setActiveViewer(m_viewer->layoutWidget());
if (isViewerCreated) m_viewer->mainCamera()->setViewMatrix(cameraPosition);
m_viewer->mainCamera()->viewport()->setClearColor(cvf::Color4f(backgroundColor()));
@ -259,7 +259,7 @@ 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);
windowGeometry = RiuMainWindow::instance()->windowGeometryForViewer(m_viewer->layoutWidget());
}
}

View File

@ -51,6 +51,9 @@ RimWellLogPlot::RimWellLogPlot()
CAF_PDM_InitFieldNoDefault(&traces, "Traces", "", "", "", "");
traces.uiCapability()->setUiHidden(true);
CAF_PDM_InitFieldNoDefault(&windowGeometry, "WindowGeometry", "", "", "", "");
windowGeometry.uiCapability()->setUiHidden(true);
updateViewerWidget();
updateAvailableDepthRange();
}
@ -60,7 +63,7 @@ RimWellLogPlot::RimWellLogPlot()
//--------------------------------------------------------------------------------------------------
RimWellLogPlot::~RimWellLogPlot()
{
RiuMainWindow::instance()->removeWellLogViewer(m_viewer);
RiuMainWindow::instance()->removeViewer(m_viewer);
delete m_viewer;
}
@ -76,7 +79,7 @@ void RimWellLogPlot::updateViewerWidget()
{
m_viewer = new RiuWellLogPlot(this, RiuMainWindow::instance());
RiuMainWindow::instance()->addWellLogViewer(m_viewer);
RiuMainWindow::instance()->addViewer(m_viewer, windowGeometry());
isViewerCreated = true;
}
@ -89,7 +92,7 @@ void RimWellLogPlot::updateViewerWidget()
m_viewer->showMaximized();
}
RiuMainWindow::instance()->setActiveWellLogViewer(m_viewer);
RiuMainWindow::instance()->setActiveViewer(m_viewer);
}
}
@ -250,3 +253,19 @@ void RimWellLogPlot::visibleDepthRange(double* minimumDepth, double* maximumDept
*minimumDepth = m_minimumVisibleDepth;
*maximumDepth = m_maximumVisibleDepth;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimWellLogPlot::initAfterRead()
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimWellLogPlot::setupBeforeSave()
{
windowGeometry = RiuMainWindow::instance()->windowGeometryForViewer(m_viewer);
}

View File

@ -42,6 +42,7 @@ public:
caf::PdmChildArrayField<RimWellLogPlotTrace*> traces;
caf::PdmField<bool> showWindow;
caf::PdmField< std::vector<int> > windowGeometry;
void addTrace();
@ -60,12 +61,16 @@ protected:
// Overridden PDM methods
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
virtual void initAfterRead();
virtual void setupBeforeSave();
private:
void updateViewerWidget();
virtual caf::PdmFieldHandle* objectToggleField();
private:
QPointer<RiuWellLogPlot> m_viewer;

View File

@ -1143,25 +1143,7 @@ void RiuMainWindow::removeRecentFiles(const QString& file)
///
//--------------------------------------------------------------------------------------------------
QMdiSubWindow* RiuMainWindow::findMdiSubWindow(RiuViewer* viewer)
{
QList<QMdiSubWindow*> subws = m_mdiArea->subWindowList();
int i;
for (i = 0; i < subws.size(); ++i)
{
if (subws[i]->widget() == viewer->layoutWidget())
{
return subws[i];
}
}
return NULL;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QMdiSubWindow* RiuMainWindow::findMdiSubWindow(RiuWellLogPlot* viewer)
QMdiSubWindow* RiuMainWindow::findMdiSubWindow(QWidget* viewer)
{
QList<QMdiSubWindow*> subws = m_mdiArea->subWindowList();
int i;
@ -1176,11 +1158,10 @@ QMdiSubWindow* RiuMainWindow::findMdiSubWindow(RiuWellLogPlot* viewer)
return NULL;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuMainWindow::removeViewer(RiuViewer* viewer)
void RiuMainWindow::removeViewer(QWidget* viewer)
{
#if 0
m_CentralFrame->layout()->removeWidget(viewer->layoutWidget());
@ -1194,12 +1175,12 @@ void RiuMainWindow::removeViewer(RiuViewer* viewer)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuMainWindow::addViewer(RiuViewer* viewer, const std::vector<int>& windowsGeometry)
void RiuMainWindow::addViewer(QWidget* viewer, const std::vector<int>& windowsGeometry)
{
#if 0
m_CentralFrame->layout()->addWidget(viewer->layoutWidget());
#else
QMdiSubWindow * subWin = m_mdiArea->addSubWindow(viewer->layoutWidget());
QMdiSubWindow * subWin = m_mdiArea->addSubWindow(viewer);
if (windowsGeometry.size() == 5)
{
@ -1234,44 +1215,6 @@ void RiuMainWindow::addViewer(RiuViewer* viewer, const std::vector<int>& windows
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuMainWindow::addWellLogViewer(RiuWellLogPlot* viewer)
{
QMdiSubWindow * subWin = m_mdiArea->addSubWindow(viewer);
subWin->resize(400, 400);
if (m_mdiArea->subWindowList().size() == 1)
{
// Show first view maximized
subWin->showMaximized();
}
else
{
subWin->show();
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuMainWindow::removeWellLogViewer(RiuWellLogPlot* viewer)
{
m_mdiArea->removeSubWindow(findMdiSubWindow(viewer));
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuMainWindow::setActiveWellLogViewer(RiuWellLogPlot* viewer)
{
QMdiSubWindow* subWindow = findMdiSubWindow(viewer);
if (subWindow)
{
m_mdiArea->setActiveSubWindow(subWindow);
}
}
//--------------------------------------------------------------------------------------------------
@ -1533,7 +1476,7 @@ void RiuMainWindow::slotEditPreferences()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuMainWindow::setActiveViewer(RiuViewer* viewer)
void RiuMainWindow::setActiveViewer(QWidget* viewer)
{
QMdiSubWindow * swin = findMdiSubWindow(viewer);
if (swin) m_mdiArea->setActiveSubWindow(swin);
@ -1639,7 +1582,7 @@ void RiuMainWindow::selectedObjectsChanged()
// Set focus in MDI area to this window if it exists
if (selectedReservoirView->viewer())
{
setActiveViewer(selectedReservoirView->viewer());
setActiveViewer(selectedReservoirView->viewer()->layoutWidget());
}
// m_projectTreeView->selectAsCurrentItem(uiItems[0]); TODO: Is this neccesary ? Was done in the old tree view.
@ -2173,7 +2116,7 @@ void RiuMainWindow::customMenuRequested(const QPoint& pos)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<int> RiuMainWindow::windowGeometryForViewer(RiuViewer* viewer)
std::vector<int> RiuMainWindow::windowGeometryForViewer(QWidget* viewer)
{
std::vector<int> geo;

View File

@ -79,13 +79,9 @@ public:
void initializeGuiNewProjectLoaded();
void cleanupGuiBeforeProjectClose();
void removeViewer( RiuViewer* viewer );
void addViewer(RiuViewer* viewer, const std::vector<int>& windowsGeometry);
void setActiveViewer(RiuViewer* subWindow);
void addWellLogViewer(RiuWellLogPlot* viewer);
void removeWellLogViewer(RiuWellLogPlot* viewer);
void setActiveWellLogViewer(RiuWellLogPlot* subWindow);
void removeViewer( QWidget* viewer );
void addViewer(QWidget* viewer, const std::vector<int>& windowsGeometry);
void setActiveViewer(QWidget* subWindow);
void setResultInfo(const QString& info) const;
@ -113,7 +109,7 @@ public:
void addRecentFiles(const QString& file);
void removeRecentFiles(const QString& file);
std::vector<int> windowGeometryForViewer(RiuViewer* viewer);
std::vector<int> windowGeometryForViewer(QWidget* viewer);
protected:
virtual void closeEvent(QCloseEvent* event);
@ -129,8 +125,7 @@ private:
void updateRecentFileActions();
QMdiSubWindow* findMdiSubWindow(RiuViewer* viewer);
QMdiSubWindow* findMdiSubWindow(RiuWellLogPlot* viewer);
QMdiSubWindow* findMdiSubWindow(QWidget* viewer);
void storeTreeViewState();
void restoreTreeViewState();