(#711) Use most recent activated Eclipse view if a well log plot is active

Octave scripts must have an Eclipse view to communicate with. If a WLP
is active, evaluate recently used views to find the most recently
Eclipse view used.
This commit is contained in:
Magne Sjaastad 2016-01-06 23:01:27 +01:00
parent f00ecd9a5a
commit 1c4c1d254e
3 changed files with 53 additions and 26 deletions

View File

@ -22,36 +22,38 @@
#include "RiaSocketCommand.h" #include "RiaSocketCommand.h"
#include "RiaSocketTools.h" #include "RiaSocketTools.h"
#include "RiaApplication.h"
#include "RigCaseCellResultsData.h"
#include "RigCaseData.h"
#include "RigGridBase.h"
#include "Rim3dOverlayInfoConfig.h"
#include "RimCaseCollection.h"
#include "RimCellEdgeColors.h"
#include "RimCellRangeFilterCollection.h"
#include "RimEclipseCase.h"
#include "RimEclipseCaseCollection.h"
#include "RimEclipseCellColors.h"
#include "RimEclipsePropertyFilterCollection.h"
#include "RimEclipseView.h"
#include "RimEclipseWellCollection.h"
#include "RimIdenticalGridCaseGroup.h"
#include "RimOilField.h"
#include "RimProject.h"
#include "RimReservoirCellResultsStorage.h"
#include "RimScriptCollection.h"
#include "RiuMainWindow.h"
#include "RiuViewer.h"
#include "cafFactory.h"
#include <QtGui> #include <QtGui>
#include <QtNetwork> #include <QtNetwork>
#include <stdlib.h> #include <stdlib.h>
#include "RiaApplication.h"
#include "RiuMainWindow.h"
#include "RimEclipseView.h"
#include "RimProject.h"
#include "RimEclipseCase.h"
#include "RimEclipseCellColors.h"
#include "RimCellEdgeColors.h"
#include "RimCellRangeFilterCollection.h"
#include "RimEclipsePropertyFilterCollection.h"
#include "RimEclipseWellCollection.h"
#include "Rim3dOverlayInfoConfig.h"
#include "RimIdenticalGridCaseGroup.h"
#include "RimScriptCollection.h"
#include "RimCaseCollection.h"
#include "RimReservoirCellResultsStorage.h"
#include "RigCaseData.h"
#include "RigCaseCellResultsData.h"
#include "cafFactory.h"
#include "RigGridBase.h"
#include "RimOilField.h"
#include "RimEclipseCaseCollection.h"
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
@ -155,6 +157,22 @@ RimEclipseCase* RiaSocketServer::findReservoir(int caseId)
{ {
return riv->eclipseCase(); return riv->eclipseCase();
} }
// If the active mdi window is different from an Eclipse view, search through available mdi windows to find the last activated
// Eclipse view. The sub windows are returned with the most recent activated window at the back.
QList<QMdiSubWindow*> subWindows = RiuMainWindow::instance()->subWindowList(QMdiArea::ActivationHistoryOrder);
for (int i = subWindows.size() - 1; i > -1; i--)
{
RiuViewer* viewer = subWindows[i]->widget()->findChild<RiuViewer*>();
if (viewer)
{
RimEclipseView* riv = dynamic_cast<RimEclipseView*>(viewer->ownerReservoirView());
if (riv)
{
return riv->eclipseCase();
}
}
}
} }
else else
{ {

View File

@ -1167,6 +1167,14 @@ QMdiSubWindow* RiuMainWindow::findMdiSubWindow(QWidget* viewer)
return NULL; return NULL;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QList<QMdiSubWindow*> RiuMainWindow::subWindowList(QMdiArea::WindowOrder order)
{
return m_mdiArea->subWindowList(order);
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -23,6 +23,7 @@
#include <QEvent> #include <QEvent>
#include <QMainWindow> #include <QMainWindow>
#include <QPointer> #include <QPointer>
#include <QMdiArea>
class QActionGroup; class QActionGroup;
class QComboBox; class QComboBox;
@ -30,7 +31,6 @@ class QFrame;
class QItemSelection; class QItemSelection;
class QLabel; class QLabel;
class QLineEdit; class QLineEdit;
class QMdiArea;
class QMdiSubWindow; class QMdiSubWindow;
class QSpinBox; class QSpinBox;
class QTreeView; class QTreeView;
@ -112,6 +112,7 @@ public:
void tileWindows(); void tileWindows();
bool isAnyMdiSubWindowVisible(); bool isAnyMdiSubWindowVisible();
QMdiSubWindow* findMdiSubWindow(QWidget* viewer); QMdiSubWindow* findMdiSubWindow(QWidget* viewer);
QList<QMdiSubWindow*> subWindowList(QMdiArea::WindowOrder order);
RiuResultQwtPlot* resultPlot(); RiuResultQwtPlot* resultPlot();