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); setActiveReservoirView(riv);
RiuViewer* viewer = riv->viewer(); RiuViewer* viewer = riv->viewer();
mainWnd->setActiveViewer(viewer); mainWnd->setActiveViewer(viewer->layoutWidget());
// Process all events to avoid a black image when grabbing frame buffer // Process all events to avoid a black image when grabbing frame buffer
QCoreApplication::processEvents(); QCoreApplication::processEvents();

View File

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

View File

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

View File

@ -114,7 +114,7 @@ RimView::~RimView(void)
if (m_viewer) if (m_viewer)
{ {
RiuMainWindow::instance()->removeViewer(m_viewer); RiuMainWindow::instance()->removeViewer(m_viewer->layoutWidget());
} }
delete m_viewer; delete m_viewer;
@ -144,7 +144,7 @@ void RimView::updateViewerWidget()
m_viewer = new RiuViewer(glFormat, NULL); m_viewer = new RiuViewer(glFormat, NULL);
m_viewer->setOwnerReservoirView(this); m_viewer->setOwnerReservoirView(this);
RiuMainWindow::instance()->addViewer(m_viewer, windowGeometry()); RiuMainWindow::instance()->addViewer(m_viewer->layoutWidget(), windowGeometry());
m_viewer->setMinNearPlaneDistance(10); m_viewer->setMinNearPlaneDistance(10);
this->resetLegendsInViewer(); this->resetLegendsInViewer();
@ -155,7 +155,7 @@ void RimView::updateViewerWidget()
isViewerCreated = true; isViewerCreated = true;
} }
RiuMainWindow::instance()->setActiveViewer(m_viewer); RiuMainWindow::instance()->setActiveViewer(m_viewer->layoutWidget());
if (isViewerCreated) m_viewer->mainCamera()->setViewMatrix(cameraPosition); if (isViewerCreated) m_viewer->mainCamera()->setViewMatrix(cameraPosition);
m_viewer->mainCamera()->viewport()->setClearColor(cvf::Color4f(backgroundColor())); 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... 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(); 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", "", "", "", ""); CAF_PDM_InitFieldNoDefault(&traces, "Traces", "", "", "", "");
traces.uiCapability()->setUiHidden(true); traces.uiCapability()->setUiHidden(true);
CAF_PDM_InitFieldNoDefault(&windowGeometry, "WindowGeometry", "", "", "", "");
windowGeometry.uiCapability()->setUiHidden(true);
updateViewerWidget(); updateViewerWidget();
updateAvailableDepthRange(); updateAvailableDepthRange();
} }
@ -60,7 +63,7 @@ RimWellLogPlot::RimWellLogPlot()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RimWellLogPlot::~RimWellLogPlot() RimWellLogPlot::~RimWellLogPlot()
{ {
RiuMainWindow::instance()->removeWellLogViewer(m_viewer); RiuMainWindow::instance()->removeViewer(m_viewer);
delete m_viewer; delete m_viewer;
} }
@ -76,7 +79,7 @@ void RimWellLogPlot::updateViewerWidget()
{ {
m_viewer = new RiuWellLogPlot(this, RiuMainWindow::instance()); m_viewer = new RiuWellLogPlot(this, RiuMainWindow::instance());
RiuMainWindow::instance()->addWellLogViewer(m_viewer); RiuMainWindow::instance()->addViewer(m_viewer, windowGeometry());
isViewerCreated = true; isViewerCreated = true;
} }
@ -89,7 +92,7 @@ void RimWellLogPlot::updateViewerWidget()
m_viewer->showMaximized(); 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; *minimumDepth = m_minimumVisibleDepth;
*maximumDepth = m_maximumVisibleDepth; *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::PdmChildArrayField<RimWellLogPlotTrace*> traces;
caf::PdmField<bool> showWindow; caf::PdmField<bool> showWindow;
caf::PdmField< std::vector<int> > windowGeometry;
void addTrace(); void addTrace();
@ -60,12 +61,16 @@ protected:
// Overridden PDM methods // Overridden PDM methods
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue); virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
virtual void initAfterRead();
virtual void setupBeforeSave();
private: private:
void updateViewerWidget(); void updateViewerWidget();
virtual caf::PdmFieldHandle* objectToggleField(); virtual caf::PdmFieldHandle* objectToggleField();
private: private:
QPointer<RiuWellLogPlot> m_viewer; QPointer<RiuWellLogPlot> m_viewer;

View File

@ -1143,25 +1143,7 @@ void RiuMainWindow::removeRecentFiles(const QString& file)
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
QMdiSubWindow* RiuMainWindow::findMdiSubWindow(RiuViewer* viewer) QMdiSubWindow* RiuMainWindow::findMdiSubWindow(QWidget* 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)
{ {
QList<QMdiSubWindow*> subws = m_mdiArea->subWindowList(); QList<QMdiSubWindow*> subws = m_mdiArea->subWindowList();
int i; int i;
@ -1176,11 +1158,10 @@ QMdiSubWindow* RiuMainWindow::findMdiSubWindow(RiuWellLogPlot* viewer)
return NULL; return NULL;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RiuMainWindow::removeViewer(RiuViewer* viewer) void RiuMainWindow::removeViewer(QWidget* viewer)
{ {
#if 0 #if 0
m_CentralFrame->layout()->removeWidget(viewer->layoutWidget()); 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 #if 0
m_CentralFrame->layout()->addWidget(viewer->layoutWidget()); m_CentralFrame->layout()->addWidget(viewer->layoutWidget());
#else #else
QMdiSubWindow * subWin = m_mdiArea->addSubWindow(viewer->layoutWidget()); QMdiSubWindow * subWin = m_mdiArea->addSubWindow(viewer);
if (windowsGeometry.size() == 5) 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); QMdiSubWindow * swin = findMdiSubWindow(viewer);
if (swin) m_mdiArea->setActiveSubWindow(swin); if (swin) m_mdiArea->setActiveSubWindow(swin);
@ -1639,7 +1582,7 @@ void RiuMainWindow::selectedObjectsChanged()
// Set focus in MDI area to this window if it exists // Set focus in MDI area to this window if it exists
if (selectedReservoirView->viewer()) 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. // 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; std::vector<int> geo;

View File

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