Depth plot as docking widget (#9909)

* Add docked depth result plot for eclipse data
* Update dock layout defaults
This commit is contained in:
jonjenssen 2023-03-03 15:21:01 +01:00 committed by Magne Sjaastad
parent b4f492e2fe
commit 98caeba776
35 changed files with 935 additions and 177 deletions

View File

@ -118,6 +118,7 @@ include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/ResultStatisticsCache
${CMAKE_CURRENT_SOURCE_DIR}/ReservoirDataModel
${CMAKE_CURRENT_SOURCE_DIR}/ReservoirDataModel/Completions
${CMAKE_CURRENT_SOURCE_DIR}/ReservoirDataModel/ResultAccessors
${CMAKE_CURRENT_SOURCE_DIR}/GeoMech/OdbReader
${CMAKE_CURRENT_SOURCE_DIR}/GeoMech/GeoMechDataModel
${CMAKE_CURRENT_SOURCE_DIR}/GeoMech/GeoMechVisualization
@ -164,6 +165,7 @@ list(
ReservoirDataModel/CMakeLists_files.cmake
ReservoirDataModel/CMakeLists_filesNotToUnitTest.cmake
ReservoirDataModel/Completions/CMakeLists_files.cmake
ReservoirDataModel/ResultAccessors/CMakeLists_files.cmake
FileInterface/CMakeLists_files.cmake
ProjectDataModel/CMakeLists_files.cmake
ProjectDataModel/AnalysisPlots/CMakeLists_files.cmake
@ -426,20 +428,22 @@ target_link_libraries(
target_include_directories(
${PROJECT_NAME}
PRIVATE ${CMAKE_BINARY_DIR}/Generated
PUBLIC ${CMAKE_SOURCE_DIR}/ApplicationLibCode
${CMAKE_SOURCE_DIR}/ApplicationLibCode/Application
${CMAKE_SOURCE_DIR}/ApplicationLibCode/Application/Tools
${CMAKE_SOURCE_DIR}/ApplicationLibCode/CommandFileInterface
${CMAKE_SOURCE_DIR}/ApplicationLibCode/CommandFileInterface/Core
${CMAKE_SOURCE_DIR}/ApplicationLibCode/FileInterface
${CMAKE_SOURCE_DIR}/ApplicationLibCode/GeoMech
${CMAKE_SOURCE_DIR}/ApplicationLibCode/ModelVisualization
${CMAKE_SOURCE_DIR}/ApplicationLibCode/ProjectDataModel
${CMAKE_SOURCE_DIR}/ApplicationLibCode/ProjectDataModel/Flow
${CMAKE_SOURCE_DIR}/ApplicationLibCode/ProjectDataModel/Intersections
${CMAKE_SOURCE_DIR}/ApplicationLibCode/ReservoirDataModel
${CMAKE_SOURCE_DIR}/ApplicationLibCode/SocketInterface
${CMAKE_SOURCE_DIR}/ApplicationLibCode/UserInterface
PUBLIC
${CMAKE_SOURCE_DIR}/ApplicationLibCode
${CMAKE_SOURCE_DIR}/ApplicationLibCode/Application
${CMAKE_SOURCE_DIR}/ApplicationLibCode/Application/Tools
${CMAKE_SOURCE_DIR}/ApplicationLibCode/CommandFileInterface
${CMAKE_SOURCE_DIR}/ApplicationLibCode/CommandFileInterface/Core
${CMAKE_SOURCE_DIR}/ApplicationLibCode/FileInterface
${CMAKE_SOURCE_DIR}/ApplicationLibCode/GeoMech
${CMAKE_SOURCE_DIR}/ApplicationLibCode/ModelVisualization
${CMAKE_SOURCE_DIR}/ApplicationLibCode/ProjectDataModel
${CMAKE_SOURCE_DIR}/ApplicationLibCode/ProjectDataModel/Flow
${CMAKE_SOURCE_DIR}/ApplicationLibCode/ProjectDataModel/Intersections
${CMAKE_SOURCE_DIR}/ApplicationLibCode/ReservoirDataModel
${CMAKE_SOURCE_DIR}/ApplicationLibCode/ReservoirDataModel/ResultAccessors
${CMAKE_SOURCE_DIR}/ApplicationLibCode/SocketInterface
${CMAKE_SOURCE_DIR}/ApplicationLibCode/UserInterface
)
# ##############################################################################

View File

@ -4,14 +4,7 @@ set(SOURCE_GROUP_HEADER_FILES
${CMAKE_CURRENT_LIST_DIR}/RigEclipseCaseData.h
${CMAKE_CURRENT_LIST_DIR}/RigGridBase.h
${CMAKE_CURRENT_LIST_DIR}/RigGridManager.h
${CMAKE_CURRENT_LIST_DIR}/RigResultAccessor.h
${CMAKE_CURRENT_LIST_DIR}/RigResultAccessorFactory.h
${CMAKE_CURRENT_LIST_DIR}/RigAllGridCellsResultAccessor.h
${CMAKE_CURRENT_LIST_DIR}/RigActiveCellsResultAccessor.h
${CMAKE_CURRENT_LIST_DIR}/RigCellEdgeResultAccessor.h
${CMAKE_CURRENT_LIST_DIR}/RigCellGeometryTools.h
${CMAKE_CURRENT_LIST_DIR}/RigCombTransResultAccessor.h
${CMAKE_CURRENT_LIST_DIR}/RigCombMultResultAccessor.h
${CMAKE_CURRENT_LIST_DIR}/RigResultModifier.h
${CMAKE_CURRENT_LIST_DIR}/RigResultModifierFactory.h
${CMAKE_CURRENT_LIST_DIR}/RigFormationNames.h
@ -37,14 +30,12 @@ set(SOURCE_GROUP_HEADER_FILES
${CMAKE_CURRENT_LIST_DIR}/cvfGeometryTools.h
${CMAKE_CURRENT_LIST_DIR}/cvfGeometryTools.inl
${CMAKE_CURRENT_LIST_DIR}/RigPipeInCellEvaluator.h
${CMAKE_CURRENT_LIST_DIR}/RigTernaryResultAccessor.h
${CMAKE_CURRENT_LIST_DIR}/RigEclipseNativeStatCalc.h
${CMAKE_CURRENT_LIST_DIR}/RigEclipseNativeVisibleCellsStatCalc.h
${CMAKE_CURRENT_LIST_DIR}/RigEclipseMultiPropertyStatCalc.h
${CMAKE_CURRENT_LIST_DIR}/RigWellLogCurveData.h
${CMAKE_CURRENT_LIST_DIR}/RigWellLogExtractionTools.h
${CMAKE_CURRENT_LIST_DIR}/RigHexIntersectionTools.h
${CMAKE_CURRENT_LIST_DIR}/RigTimeHistoryResultAccessor.h
${CMAKE_CURRENT_LIST_DIR}/RigLasFileExporter.h
${CMAKE_CURRENT_LIST_DIR}/RigSimulationWellCoordsAndMD.h
${CMAKE_CURRENT_LIST_DIR}/RigFishbonesGeometry.h
@ -105,14 +96,7 @@ set(SOURCE_GROUP_SOURCE_FILES
${CMAKE_CURRENT_LIST_DIR}/RigEclipseCaseData.cpp
${CMAKE_CURRENT_LIST_DIR}/RigGridBase.cpp
${CMAKE_CURRENT_LIST_DIR}/RigGridManager.cpp
${CMAKE_CURRENT_LIST_DIR}/RigResultAccessor.cpp
${CMAKE_CURRENT_LIST_DIR}/RigResultAccessorFactory.cpp
${CMAKE_CURRENT_LIST_DIR}/RigAllGridCellsResultAccessor.cpp
${CMAKE_CURRENT_LIST_DIR}/RigActiveCellsResultAccessor.cpp
${CMAKE_CURRENT_LIST_DIR}/RigCellEdgeResultAccessor.cpp
${CMAKE_CURRENT_LIST_DIR}/RigCellGeometryTools.cpp
${CMAKE_CURRENT_LIST_DIR}/RigCombTransResultAccessor.cpp
${CMAKE_CURRENT_LIST_DIR}/RigCombMultResultAccessor.cpp
${CMAKE_CURRENT_LIST_DIR}/RigResultModifierFactory.cpp
${CMAKE_CURRENT_LIST_DIR}/RigFormationNames.cpp
${CMAKE_CURRENT_LIST_DIR}/RigAllanDiagramData.cpp
@ -134,13 +118,11 @@ set(SOURCE_GROUP_SOURCE_FILES
${CMAKE_CURRENT_LIST_DIR}/RigFault.cpp
${CMAKE_CURRENT_LIST_DIR}/RigNNCData.cpp
${CMAKE_CURRENT_LIST_DIR}/cvfGeometryTools.cpp
${CMAKE_CURRENT_LIST_DIR}/RigTernaryResultAccessor.cpp
${CMAKE_CURRENT_LIST_DIR}/RigEclipseNativeStatCalc.cpp
${CMAKE_CURRENT_LIST_DIR}/RigEclipseNativeVisibleCellsStatCalc.cpp
${CMAKE_CURRENT_LIST_DIR}/RigEclipseMultiPropertyStatCalc.cpp
${CMAKE_CURRENT_LIST_DIR}/RigWellLogCurveData.cpp
${CMAKE_CURRENT_LIST_DIR}/RigHexIntersectionTools.cpp
${CMAKE_CURRENT_LIST_DIR}/RigTimeHistoryResultAccessor.cpp
${CMAKE_CURRENT_LIST_DIR}/RigLasFileExporter.cpp
${CMAKE_CURRENT_LIST_DIR}/RigSimulationWellCoordsAndMD.cpp
${CMAKE_CURRENT_LIST_DIR}/RigFishbonesGeometry.cpp

View File

@ -0,0 +1,35 @@
set(SOURCE_GROUP_HEADER_FILES
${CMAKE_CURRENT_LIST_DIR}/RigResultAccessor.h
${CMAKE_CURRENT_LIST_DIR}/RigResultAccessorFactory.h
${CMAKE_CURRENT_LIST_DIR}/RigAllGridCellsResultAccessor.h
${CMAKE_CURRENT_LIST_DIR}/RigActiveCellsResultAccessor.h
${CMAKE_CURRENT_LIST_DIR}/RigCellEdgeResultAccessor.h
${CMAKE_CURRENT_LIST_DIR}/RigCombTransResultAccessor.h
${CMAKE_CURRENT_LIST_DIR}/RigCombMultResultAccessor.h
${CMAKE_CURRENT_LIST_DIR}/RigTernaryResultAccessor.h
${CMAKE_CURRENT_LIST_DIR}/RigTimeHistoryResultAccessor.h
${CMAKE_CURRENT_LIST_DIR}/RigDepthResultAccessor.h
)
set(SOURCE_GROUP_SOURCE_FILES
${CMAKE_CURRENT_LIST_DIR}/RigResultAccessor.cpp
${CMAKE_CURRENT_LIST_DIR}/RigResultAccessorFactory.cpp
${CMAKE_CURRENT_LIST_DIR}/RigAllGridCellsResultAccessor.cpp
${CMAKE_CURRENT_LIST_DIR}/RigActiveCellsResultAccessor.cpp
${CMAKE_CURRENT_LIST_DIR}/RigCellEdgeResultAccessor.cpp
${CMAKE_CURRENT_LIST_DIR}/RigCombTransResultAccessor.cpp
${CMAKE_CURRENT_LIST_DIR}/RigCombMultResultAccessor.cpp
${CMAKE_CURRENT_LIST_DIR}/RigTernaryResultAccessor.cpp
${CMAKE_CURRENT_LIST_DIR}/RigTimeHistoryResultAccessor.cpp
${CMAKE_CURRENT_LIST_DIR}/RigDepthResultAccessor.cpp
)
list(APPEND CODE_HEADER_FILES ${SOURCE_GROUP_HEADER_FILES})
list(APPEND CODE_SOURCE_FILES ${SOURCE_GROUP_SOURCE_FILES})
source_group(
"ReservoirDataModel\\ResultAccessors"
FILES ${SOURCE_GROUP_HEADER_FILES} ${SOURCE_GROUP_SOURCE_FILES}
${CMAKE_CURRENT_LIST_DIR}/CMakeLists_files.cmake
)

View File

@ -0,0 +1,153 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2023 Equinor ASA
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#include "RigDepthResultAccessor.h"
#include "RigCell.h"
#include "RigEclipseCaseData.h"
#include "RigGridBase.h"
#include "RigResultAccessor.h"
#include "RigResultAccessorFactory.h"
#include <cmath>
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<double> RigDepthResultAccessor::resultValues( RigEclipseCaseData* eclipseCaseData,
RimEclipseResultDefinition* resultDefinition,
int gridIndex,
size_t cellIndex,
int currentTimeStep )
{
std::vector<double> values;
RigHugeValResultAccessor hugeVal;
if ( cellIndex != cvf::UNDEFINED_SIZE_T )
{
size_t i = 0;
size_t j = 0;
size_t dummy = 0;
auto kvals = kValues( eclipseCaseData, gridIndex );
auto grid = eclipseCaseData->grid( gridIndex );
if ( grid->ijkFromCellIndex( cellIndex, &i, &j, &dummy ) )
{
cvf::ref<RigResultAccessor> resultAccessor =
RigResultAccessorFactory::createFromResultDefinition( eclipseCaseData, gridIndex, currentTimeStep, resultDefinition );
for ( auto k : kvals )
{
int tmpCellIdx = grid->cellIndexFromIJK( i, j, k );
if ( resultAccessor.notNull() )
{
values.push_back( resultAccessor->cellScalar( tmpCellIdx ) );
}
else
{
values.push_back( hugeVal.cellScalar( tmpCellIdx ) );
}
}
}
}
return values;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<int> RigDepthResultAccessor::kValues( RigEclipseCaseData* eclipseCaseData, int gridIndex )
{
std::vector<int> kvals;
int maxK = eclipseCaseData->grid( gridIndex )->cellCountK();
for ( int i = 0; i < maxK; i++ )
{
kvals.push_back( i );
}
return kvals;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<double> RigDepthResultAccessor::depthValues( RigEclipseCaseData* eclipseCaseData, int startCellIndex, int gridIndex )
{
std::vector<double> depthVals;
auto grid = eclipseCaseData->grid( gridIndex );
size_t i = 0;
size_t j = 0;
size_t dummy = 0;
if ( grid->ijkFromCellIndex( startCellIndex, &i, &j, &dummy ) )
{
int maxK = grid->cellCountK();
for ( int k = 0; k < maxK; k++ )
{
auto cellIdx = grid->cellIndexFromIJK( i, j, k );
auto& cell = grid->cell( cellIdx );
if ( cell.isInvalid() )
{
depthVals.push_back( std::nan( "" ) );
}
else
{
auto center = cell.center();
depthVals.push_back( -1.0 * center.z() );
}
}
}
return depthVals;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RigDepthResultAccessor::geometrySelectionText( RigEclipseCaseData* eclipseCaseData, size_t gridIndex, size_t cellIndex )
{
QString text;
if ( eclipseCaseData )
{
if ( cellIndex != cvf::UNDEFINED_SIZE_T )
{
size_t i = 0;
size_t j = 0;
size_t k = 0;
if ( eclipseCaseData->grid( gridIndex )->ijkFromCellIndex( cellIndex, &i, &j, &k ) )
{
// Adjust to 1-based Eclipse indexing
i++;
j++;
text += QString( "[%1, %2]" ).arg( i ).arg( j );
}
}
}
return text;
}

View File

@ -0,0 +1,39 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2023 Equinor ASA
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#pragma once
#include <QString>
#include <vector>
class RigEclipseCaseData;
class RimEclipseResultDefinition;
class RigDepthResultAccessor
{
public:
static QString geometrySelectionText( RigEclipseCaseData* eclipseCaseData, size_t m_gridIndex, size_t m_cellIndex );
static std::vector<double> resultValues( RigEclipseCaseData* eclipseCaseData,
RimEclipseResultDefinition* resultDefinition,
int gridIndex,
size_t cellIndex,
int currentTimeStep );
static std::vector<int> kValues( RigEclipseCaseData* eclipseCaseData, int gridIndex );
static std::vector<double> depthValues( RigEclipseCaseData* eclipseCaseData, int startCellIndex, int gridIndex );
};

View File

@ -89,6 +89,7 @@ set(SOURCE_GROUP_HEADER_FILES
${CMAKE_CURRENT_LIST_DIR}/RiuDockWidgetTools.h
${CMAKE_CURRENT_LIST_DIR}/RiuQwtPlotItemGroup.h
${CMAKE_CURRENT_LIST_DIR}/RiuQwtPlotTools.h
${CMAKE_CURRENT_LIST_DIR}/RiuDepthQwtPlot.h
${CMAKE_CURRENT_LIST_DIR}/RiuWellPathComponentPlotItem.h
${CMAKE_CURRENT_LIST_DIR}/RiuMeasurementViewEventFilter.h
${CMAKE_CURRENT_LIST_DIR}/RiuDraggableOverlayFrame.h
@ -193,6 +194,7 @@ set(SOURCE_GROUP_SOURCE_FILES
${CMAKE_CURRENT_LIST_DIR}/RiuDockWidgetTools.cpp
${CMAKE_CURRENT_LIST_DIR}/RiuQwtPlotItemGroup.cpp
${CMAKE_CURRENT_LIST_DIR}/RiuQwtPlotTools.cpp
${CMAKE_CURRENT_LIST_DIR}/RiuDepthQwtPlot.cpp
${CMAKE_CURRENT_LIST_DIR}/RiuWellPathComponentPlotItem.cpp
${CMAKE_CURRENT_LIST_DIR}/RiuDraggableOverlayFrame.cpp
${CMAKE_CURRENT_LIST_DIR}/RiuMdiMaximizeWindowGuard.cpp
@ -258,6 +260,7 @@ list(
${CMAKE_CURRENT_LIST_DIR}/RiuRelativePermeabilityPlotPanel.h
${CMAKE_CURRENT_LIST_DIR}/RiuResultInfoPanel.h
${CMAKE_CURRENT_LIST_DIR}/RiuResultQwtPlot.h
${CMAKE_CURRENT_LIST_DIR}/RiuDepthQwtPlot.h
${CMAKE_CURRENT_LIST_DIR}/RiuTextDialog.h
${CMAKE_CURRENT_LIST_DIR}/RiuViewer.h
${CMAKE_CURRENT_LIST_DIR}/RiuProcessMonitor.h

View File

@ -0,0 +1,309 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2023 Equinor ASA
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#include "RiuDepthQwtPlot.h"
#include "RiaApplication.h"
#include "RiaCurveDataTools.h"
#include "RimCase.h"
#include "RimContextCommandBuilder.h"
#include "RiuQwtLinearScaleEngine.h"
#include "RiuQwtPlotCurve.h"
#include "RiuQwtPlotTools.h"
#include "RiuQwtSymbol.h"
#include "RiuTextDialog.h"
#include "cvfColor3.h"
#include "qwt_legend.h"
#include "qwt_plot_curve.h"
#include "qwt_plot_grid.h"
#include "qwt_plot_layout.h"
#include "qwt_scale_engine.h"
#include <QContextMenuEvent>
#include <QMenu>
#include <cmath>
#include <limits>
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiuDepthQwtPlot::RiuDepthQwtPlot( QWidget* parent )
: RiuDockedQwtPlot( parent )
, m_bShowDepth( true )
{
setAutoFillBackground( true );
setDefaults();
resetRanges();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiuDepthQwtPlot::~RiuDepthQwtPlot()
{
deleteAllCurves();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuDepthQwtPlot::resetRanges()
{
m_minX = std::numeric_limits<double>::max();
m_minY = std::numeric_limits<double>::max();
m_maxX = std::numeric_limits<double>::lowest();
m_maxY = std::numeric_limits<double>::lowest();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuDepthQwtPlot::addCurve( const RimCase* rimCase,
const QString& curveName,
const cvf::Color3f& curveColor,
const std::vector<int>& kIndexes,
const std::vector<double>& depthValues,
const std::vector<double>& resultValues )
{
if ( kIndexes.empty() || resultValues.empty() || depthValues.empty() )
{
return;
}
std::vector<double> kValues;
if ( m_bShowDepth )
{
kValues = depthValues;
setAxisTitle( QwtAxis::YLeft, "Depth" );
}
else
{
for ( auto k : kIndexes )
{
kValues.push_back( 1.0 * k + 1.0 ); // adjust to eclipse index
}
setAxisTitle( QwtAxis::YLeft, "K" );
}
double yMax = *std::max_element( kValues.begin(), kValues.end() );
double yMin = *std::min_element( kValues.begin(), kValues.end() );
m_maxY = std::max( yMax, m_maxY );
m_minY = std::min( yMin, m_minY );
std::vector<double> tmpResultValues;
for ( auto val : resultValues )
{
if ( std::isinf( val ) )
tmpResultValues.push_back( std::nan( "" ) );
else
{
if ( val > m_maxX ) m_maxX = val;
if ( val < m_minX ) m_minX = val;
tmpResultValues.push_back( val );
}
}
RiuQwtPlotCurve* plotCurve = new RiuQwtPlotCurve( nullptr );
plotCurve->setSamplesFromXValuesAndYValues( tmpResultValues, kValues, false );
plotCurve->setTitle( curveName );
plotCurve->setAxes( QwtAxis::XTop, QwtAxis::YLeft );
auto color = QColor( curveColor.rByte(), curveColor.gByte(), curveColor.bByte() );
plotCurve->setPen( QPen( color ) );
RiuQwtSymbol* symbol = new RiuQwtSymbol( RiuPlotCurveSymbol::SYMBOL_XCROSS, "" );
symbol->setSize( 6, 6 );
symbol->setColor( color );
plotCurve->setSymbol( symbol );
plotCurve->attach( this );
m_plotCurves.push_back( plotCurve );
updateAxisScaling();
this->applyFontSizes( false );
this->replot();
int caseId = rimCase->caseId();
m_caseNames[caseId] = rimCase->caseUserDescription();
m_curveNames[caseId].push_back( curveName );
m_curveData[caseId].push_back( resultValues );
m_kSteps[caseId] = kIndexes;
m_depthValues[caseId] = depthValues;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuDepthQwtPlot::deleteAllCurves()
{
for ( size_t i = 0; i < m_plotCurves.size(); i++ )
{
m_plotCurves[i]->detach();
delete m_plotCurves[i];
}
m_plotCurves.clear();
m_caseNames.clear();
m_curveNames.clear();
m_curveData.clear();
m_kSteps.clear();
m_depthValues.clear();
resetRanges();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QSize RiuDepthQwtPlot::sizeHint() const
{
return QSize( 100, 100 );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QSize RiuDepthQwtPlot::minimumSizeHint() const
{
return QSize( 0, 0 );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuDepthQwtPlot::contextMenuEvent( QContextMenuEvent* event )
{
QMenu menu;
const int curveCount = this->itemList( QwtPlotItem::Rtti_PlotCurve ).count();
QAction* act = menu.addAction( "Show Plot Data", this, SLOT( slotCurrentPlotDataInTextDialog() ) );
act->setEnabled( curveCount > 0 );
if ( !menu.actions().empty() )
{
menu.exec( event->globalPos() );
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuDepthQwtPlot::setDefaults()
{
RiuQwtPlotTools::setCommonPlotBehaviour( this );
setAxesCount( QwtAxis::XTop, 1 );
setAxesCount( QwtAxis::YLeft, 1 );
setAxisVisible( QwtAxis::XTop, true );
setAxisVisible( QwtAxis::XBottom, false );
setAxisMaxMinor( QwtAxis::XTop, 2 );
setAxisMaxMinor( QwtAxis::YLeft, 6 );
applyFontSizes( false );
QwtLegend* legend = new QwtLegend( this );
insertLegend( legend, BottomLegend );
RiuQwtPlotTools::enableGridLines( this, QwtAxis::XBottom, false, false );
RiuQwtPlotTools::enableGridLines( this, QwtAxis::XTop, true, true );
RiuQwtPlotTools::enableGridLines( this, QwtAxis::YLeft, true, true );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiuDepthQwtPlot::asciiDataForUiSelectedCurves() const
{
QString out;
for ( std::pair<int, QString> caseIdAndName : m_caseNames )
{
int caseId = caseIdAndName.first;
out += "Case: " + caseIdAndName.second;
out += "\n";
for ( size_t i = 0; i < m_kSteps.at( caseId ).size(); i++ ) // time steps & data points
{
if ( i == 0 )
{
out += "K Index";
out += "\tDepth";
for ( QString curveName : m_curveNames.at( caseId ) )
{
out += "\t" + curveName;
}
}
out += "\n";
QString kString = QString::number( m_kSteps.at( caseId )[i] );
out += kString;
QString depthString = QString::number( m_depthValues.at( caseId )[i], 'f', 2 );
out += "\t" + depthString;
for ( size_t j = 0; j < m_curveData.at( caseId ).size(); j++ ) // curves
{
out += "\t" + QString::number( m_curveData.at( caseId )[j][i], 'g', 6 );
}
}
out += "\n\n";
}
return out;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuDepthQwtPlot::slotCurrentPlotDataInTextDialog()
{
QString outTxt = asciiDataForUiSelectedCurves();
RiuTextDialog* textDialog = new RiuTextDialog( this );
textDialog->setMinimumSize( 600, 600 );
textDialog->setWindowTitle( "Depth Plot Data" );
textDialog->setText( outTxt );
textDialog->show();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuDepthQwtPlot::updateAxisScaling()
{
double valRangeX = m_maxX - m_minX;
this->setAxisScale( QwtAxis::YLeft, m_maxY + 0.1, m_minY - 0.1 );
this->setAxisScale( QwtAxis::XTop, m_minX - 0.02 * valRangeX, m_maxX + 0.1 * valRangeX );
}

View File

@ -0,0 +1,88 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2023 Equinor ASA
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "RiuDockedQwtPlot.h"
#include <QString>
#include <map>
#include <vector>
class RimCase;
class QwtPlotCurve;
class QwtPlotGrid;
namespace cvf
{
class Color3f;
}
//==================================================================================================
//
//
//
//==================================================================================================
class RiuDepthQwtPlot : public RiuDockedQwtPlot
{
Q_OBJECT
public:
explicit RiuDepthQwtPlot( QWidget* parent = nullptr );
~RiuDepthQwtPlot() override;
void addCurve( const RimCase* rimCase,
const QString& curveName,
const cvf::Color3f& curveColor,
const std::vector<int>& kIndexes,
const std::vector<double>& depthValues,
const std::vector<double>& resultValues );
void deleteAllCurves();
protected:
QSize sizeHint() const override;
QSize minimumSizeHint() const override;
void contextMenuEvent( QContextMenuEvent* ) override;
private:
void setDefaults();
void resetRanges();
void updateAxisScaling();
QString asciiDataForUiSelectedCurves() const;
private slots:
void slotCurrentPlotDataInTextDialog();
private:
std::vector<QwtPlotCurve*> m_plotCurves;
std::map<int, QString> m_caseNames;
std::map<int, std::vector<int>> m_kSteps;
std::map<int, std::vector<double>> m_depthValues;
std::map<int, std::vector<std::vector<double>>> m_curveData;
std::map<int, std::vector<QString>> m_curveNames;
double m_maxY;
double m_minY;
double m_maxX;
double m_minX;
bool m_bShowDepth;
};

View File

@ -91,6 +91,14 @@ QString RiuDockWidgetTools::mainWindowResultPlotName()
return "dockResultPlot_mainWindow";
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiuDockWidgetTools::mainWindowDepthPlotName()
{
return "dockDepthPlot_mainWindow";
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -323,6 +331,8 @@ QIcon RiuDockWidgetTools::dockIcon( const QString dockWidgetName )
return QIcon( ":/view.svg" );
else if ( dockWidgetName == mainWindowResultPlotName() )
return QIcon( ":/graph.svg" );
else if ( dockWidgetName == mainWindowDepthPlotName() )
return QIcon( ":/graph.svg" );
else if ( dockWidgetName == mainWindowRelPermPlotName() )
return QIcon( ":/graph.svg" );
else if ( dockWidgetName == mainWindowPvtPlotName() )
@ -377,34 +387,39 @@ QByteArray RiuDockWidgetTools::defaultEclipseDockState()
// Set up the dock widgets the way you want it using the GUI inside ResInsight - then use "Export Layout to
// Clipboard" from the Windows menu and paste the exported text into this file to update the default states.
// start paste
static const char stateData[] =
{ '\x00', '\x00', '\x06', '\x13', '\x78', '\xda', '\x95', '\x54', '\xdf', '\x4f', '\xc2', '\x30', '\x10', '\x7e', '\xf7', '\xaf',
'\x68', '\xf6', '\xae', '\x30', '\xc6', '\x94', '\x25', '\x80', '\x31', '\xa0', '\x89', '\x0f', '\x28', '\x3a', '\xd0', '\x47',
'\x53', '\xbb', '\x13', '\xab', '\x5d', '\x4b', '\xae', '\x07', '\xfe', '\x88', '\x7f', '\xbc', '\x1d', '\x18', '\x12', '\xa0',
'\xdb', '\xe4', '\x69', '\xdd', '\xdd', '\xf7', '\xf5', '\xfb', '\xae', '\xbd', '\x6b', '\xf7', '\xfc', '\x33', '\x57', '\x6c',
'\x09', '\x68', '\xa5', '\xd1', '\xbd', '\x20', '\x3c', '\x69', '\x06', '\x0c', '\xb4', '\x30', '\x99', '\xd4', '\xb3', '\x5e',
'\x30', '\x9d', '\x5c', '\x1d', '\x77', '\x82', '\xf3', '\x7e', '\xf7', '\x8e', '\x2e', '\xb2', '\x25', '\xd7', '\x02', '\xb2',
'\xa1', '\x11', '\xef', '\x2e', '\x97', '\x7e', '\x59', '\x82', '\x9c', '\x3d', '\x6c', '\x88', '\x01', '\x9b', '\x5a', '\xc0',
'\xcd', '\x7f', '\x2b', '\x60', '\x03', '\xa3', '\x89', '\x4b', '\xed', '\x22', '\xab', '\xf4', '\x00', '\x34', '\x21', '\x57',
'\x8f', '\x32', '\x9b', '\x01', '\xf5', '\x82', '\xcc', '\xed', '\x13', '\x0d', '\x1f', '\xa5', '\xce', '\xcc', '\xc7', '\x53',
'\xee', '\x70', '\xeb', '\x65', '\xd0', '\xef', '\x6e', '\x78', '\xec', '\x4a', '\x19', '\x4e', '\x2b', '\x23', '\x4d', '\x17',
'\x4f', '\xe7', '\x4a', '\x12', '\xb9', '\xf0', '\x2d', '\x4a', '\xb7', '\x97', '\xcb', '\x14', '\x42', '\x3f', '\x85', '\xd0',
'\x42', '\x53', '\x21', '\x59', '\x86', '\x39', '\xde', '\xc2', '\x5c', '\x20', '\x70', '\x36', '\xe1', '\xcf', '\xce', '\x56',
'\xe4', '\x12', '\x0b', '\x44', '\xd0', '\x7f', '\x86', '\xc6', '\x68', '\xde', '\x40', '\xd0', '\x04', '\x01', '\xb6', '\x3d',
'\xad', '\x5d', '\xb3', '\x1b', '\x9e', '\x43', '\x25', '\x92', '\x0d', '\x94', '\xb1', '\x90', '\x15', '\x86', '\x1b', '\x1e',
'\xd6', '\x90', '\x13', '\x4f', '\xcd', '\x02', '\x05', '\x1c', '\x48', '\x4c', '\x05', '\xca', '\x39', '\xd9', '\x6a', '\x56',
'\xa3', '\xa8', '\x6c', '\xab', '\xbe', '\x70', '\xbf', '\xbe', '\x39', '\x20', '\x7d', '\x5d', '\x66', '\x92', '\x0c', '\xd6',
'\x97', '\x58', '\x02', '\xf6', '\xca', '\xa6', '\xf2', '\x1b', '\x6c', '\xff', '\xac', '\xd3', '\x62', '\xed', '\xd3', '\x0e',
'\xeb', '\x36', '\xd6', '\xff', '\xee', '\xfb', '\x77', '\x25', '\x07', '\x5f', '\xce', '\xae', '\x79', '\x5f', '\xb7', '\xb8',
'\x16', '\xe1', '\xb3', '\x15', '\xd6', '\x53', '\x80', '\x97', '\xe0', '\xb5', '\x5e', '\xd3', '\x59', '\x51', '\xb5', '\xb1',
'\x7b', '\xb0', '\x0b', '\x45', '\xd7', '\xfa', '\xc5', '\xd4', '\x9c', '\xa8', '\x1f', '\x58', '\x77', '\x89', '\x6d', '\xaf',
'\xdc', '\x58', '\x19', '\xfa', '\x97', '\xdc', '\x2e', '\xb0', '\xa6', '\xd3', '\x46', '\xe6', '\x15', '\xed', '\x40', '\xa2',
'\x50', '\x50', '\xca', '\x0c', '\xbd', '\xcc', '\x7b', '\x50', '\x63', '\xc0', '\xfc', '\x40', '\xbd', '\xf1', '\xb2', '\xc6',
'\xe1', '\xfe', '\x81', '\xec', '\x4e', '\xed', '\x08', '\xac', '\xe5', '\x33', '\xb0', '\x35', '\xc7', '\xe1', '\x83', '\xd5',
'\x99', '\x43', '\x23', '\x1c', '\x6b', '\x64', '\x74', '\xf5', '\x08', '\xec', '\x11', '\xa7', '\x0e', '\x94', '\x12', '\x17',
'\xef', '\xff', '\x1c', '\x9b', '\x28', '\x89', '\x59', '\xd8', '\x4a', '\x9a', '\xac', '\x1d', '\x97', '\xcc', '\xce', '\x2a',
'\xd2', '\x49', '\x4e', '\x59', '\x14', '\xb7', '\x2b', '\x10', '\x51', '\x92', '\xb0', '\x56', '\x18', '\xc7', '\x5e', '\x48',
'\x63', '\xf3', '\xb4', '\xba', '\x75', '\xc9', '\x93', '\xde', '\x3f', '\xfa', '\x05', '\x48', '\x0b', '\x16', '\x15' };
{ '\x00', '\x00', '\x06', '\x92', '\x78', '\xda', '\xb5', '\x55', '\x5d', '\x4f', '\xc2', '\x30', '\x14', '\x7d', '\xf7', '\x57',
'\x34', '\x7b', '\x47', '\x18', '\x83', '\x30', '\x13', '\xc0', '\x18', '\x90', '\xc4', '\x07', '\x14', '\x1d', '\xca', '\xa3',
'\xa9', '\xdb', '\x15', '\xab', '\x5d', '\x4b', '\x6e', '\x2f', '\x28', '\xc6', '\x1f', '\x6f', '\xc7', '\xcc', '\x12', '\xb0',
'\x50', '\x79', '\xf0', '\x69', '\xed', '\xed', '\x39', '\x3d', '\xe7', '\x7e', '\x6c', '\xeb', '\x9e', '\x7f', '\xe4', '\x92',
'\xad', '\x00', '\x8d', '\xd0', '\xaa', '\x17', '\x84', '\xa7', '\x8d', '\x80', '\x81', '\x4a', '\x75', '\x26', '\xd4', '\xbc',
'\x17', '\xdc', '\x4f', '\x47', '\xb5', '\x38', '\x38', '\xef', '\x77', '\x6f', '\xe9', '\x22', '\x5b', '\x71', '\x95', '\x42',
'\x36', '\xd4', '\xe9', '\x9b', '\x3d', '\x4b', '\xd6', '\x86', '\x20', '\x67', '\x0f', '\x15', '\x31', '\x60', '\xf7', '\x06',
'\xb0', '\xda', '\x47', '\x01', '\x1b', '\x68', '\x45', '\x5c', '\x28', '\x1b', '\xd9', '\x1c', '\x0f', '\x40', '\x11', '\x72',
'\x39', '\x13', '\xd9', '\x1c', '\xa8', '\x17', '\x64', '\xf6', '\x9e', '\x68', '\x38', '\x13', '\x2a', '\xd3', '\xef', '\x8f',
'\xb9', '\xc5', '\x95', '\xcb', '\xa0', '\xdf', '\xad', '\x78', '\x6c', '\x24', '\x35', '\xa7', '\x8d', '\x91', '\x86', '\x8d',
'\x27', '\x0b', '\x29', '\x88', '\x6c', '\xf8', '\x06', '\x85', '\xbd', '\xcb', '\x9e', '\x14', '\x42', '\x5f', '\x85', '\xd0',
'\x52', '\x51', '\x21', '\xb9', '\x0f', '\x53', '\xab', '\x30', '\x4d', '\x8b', '\xb9', '\x40', '\xe0', '\x6c', '\xca', '\x9f',
'\x4c', '\xe9', '\x72', '\x89', '\x08', '\xea', '\xc7', '\xd0', '\x04', '\xf5', '\x2b', '\xa4', '\x34', '\x45', '\x80', '\x6d',
'\x4f', '\xa5', '\x6b', '\x76', '\xcd', '\x73', '\x38', '\x88', '\x64', '\x03', '\xa9', '\x0d', '\x64', '\x85', '\xe1', '\xba',
'\x83', '\x35', '\xe4', '\xc4', '\x13', '\xbd', '\xc4', '\x14', '\x8e', '\x24', '\x26', '\x29', '\x8a', '\x05', '\x99', '\xc3',
'\xac', '\x7a', '\x91', '\xd9', '\x56', '\x7e', '\xe1', '\xef', '\xfc', '\x16', '\x80', '\xb4', '\xbe', '\xcc', '\x04', '\x69',
'\xf4', '\xa7', '\xb8', '\x07', '\xec', '\x94', '\x4d', '\xc4', '\x27', '\x98', '\x7e', '\xa7', '\x73', '\xc6', '\xda', '\x51',
'\xc8', '\xba', '\xf5', '\x72', '\x6f', '\x9f', '\x3f', '\x2d', '\x39', '\xba', '\x39', '\xbb', '\xe6', '\x5d', '\xd3', '\x62',
'\x47', '\x84', '\xcf', '\x37', '\x58', '\x47', '\x02', '\x4e', '\x82', '\xd3', '\xba', '\x67', '\xb2', '\x3c', '\xc6', '\xee',
'\xc0', '\x2c', '\x25', '\x5d', '\xa9', '\x67', '\xed', '\xa9', '\xa8', '\x1b', '\xe8', '\x6b', '\x62', '\xcb', '\x29', '\x37',
'\x91', '\x9a', '\xfe', '\x24', '\xb7', '\x0b', '\xf4', '\x4c', '\xda', '\x58', '\xbf', '\xa0', '\x19', '\x08', '\x4c', '\x25',
'\xec', '\x65', '\x86', '\x4e', '\xe6', '\x1d', '\xc8', '\x09', '\x60', '\x7e', '\xa4', '\xde', '\x64', '\xe5', '\x71', '\xb8',
'\x35', '\x5e', '\xad', '\xf0', '\x8c', '\x85', '\xcd', '\x38', '\x72', '\xcf', '\xd7', '\x26', '\x12', '\xc7', '\x6d', '\xd6',
'\x6a', '\xb6', '\xff', '\x63', '\x02', '\x87', '\xb0', '\xa0', '\x97', '\x3f', '\x14', '\xde', '\x89', '\xf3', '\xb5', '\xb9',
'\xb9', '\x23', '\x36', '\x06', '\x63', '\xf8', '\x1c', '\x8c', '\x47', '\xcb', '\x05', '\xf3', '\x95', '\x1c', '\x75', '\x6a',
'\x59', '\x63', '\xad', '\x8e', '\x78', '\xb1', '\x0f', '\x96', '\xb5', '\xec', '\x4d', '\x14', '\xb1', '\xb0', '\xd3', '\x88',
'\x59', '\xab', '\xd1', '\x71', '\xc2', '\xea', '\xd5', '\x97', '\xdd', '\xae', '\xf7', '\xfc', '\x51', '\xfa', '\x27', '\xdf',
'\x7c', '\xb5', '\x40', '\x74' };
// end paste
QByteArray retVal( stateData, sizeof( stateData ) );
@ -416,34 +431,39 @@ QByteArray RiuDockWidgetTools::defaultEclipseDockState()
//--------------------------------------------------------------------------------------------------
QByteArray RiuDockWidgetTools::defaultGeoMechDockState()
{
// start paste
static const char stateData[] =
{ '\x00', '\x00', '\x06', '\x13', '\x78', '\xda', '\x95', '\x54', '\xdf', '\x4f', '\xc2', '\x30', '\x10', '\x7e', '\xf7', '\xaf',
'\x68', '\xf6', '\x8e', '\xb0', '\x8d', '\x29', '\x4b', '\xf8', '\x11', '\x03', '\x9a', '\xf8', '\x80', '\xa2', '\x03', '\x79',
'\x34', '\xb5', '\x3b', '\xb1', '\xda', '\xb5', '\xa4', '\x3d', '\xf0', '\x47', '\xfc', '\xe3', '\xed', '\x86', '\x21', '\x01',
'\xba', '\x0d', '\x9e', '\xda', '\xde', '\x7d', '\x5f', '\xef', '\xbb', '\xeb', '\x5d', '\xbb', '\x83', '\xaf', '\x4c', '\x90',
'\x35', '\x68', '\xc3', '\x95', '\xec', '\x79', '\xfe', '\x79', '\xcb', '\x23', '\x20', '\x99', '\x4a', '\xb9', '\x5c', '\xf4',
'\xbc', '\xd9', '\xf4', '\xa6', '\xd1', '\xf1', '\x06', '\xfd', '\xee', '\x03', '\x5e', '\xa5', '\x6b', '\x2a', '\x19', '\xa4',
'\x23', '\xc5', '\x3e', '\xac', '\x2f', '\xf9', '\x36', '\x08', '\x19', '\x79', '\xda', '\x12', '\x3d', '\x32', '\x33', '\xa0',
'\xb7', '\xe7', '\xc0', '\x23', '\x43', '\x25', '\x91', '\x72', '\x69', '\x2d', '\x85', '\x7b', '\x08', '\x12', '\x35', '\x15',
'\x73', '\x9e', '\x2e', '\x00', '\x7b', '\x5e', '\x6a', '\xef', '\x09', '\x47', '\x73', '\x2e', '\x53', '\xf5', '\xf9', '\x9c',
'\x59', '\xdc', '\x66', '\xeb', '\xf5', '\xbb', '\x5b', '\x1e', '\xb9', '\x11', '\x8a', '\x62', '\x21', '\xa4', '\x65', '\xed',
'\xc9', '\x52', '\x70', '\x44', '\x6b', '\xbe', '\xd7', '\xdc', '\xde', '\x65', '\x3d', '\x79', '\xa0', '\xdf', '\x3c', '\xd0',
'\x4a', '\x62', '\x1e', '\xb2', '\x0c', '\xd3', '\xd8', '\xc1', '\x5c', '\x69', '\xa0', '\x64', '\x4a', '\x5f', '\xac', '\xac',
'\xd0', '\x3a', '\x56', '\x5a', '\x83', '\xfc', '\x17', '\x34', '\xd1', '\xea', '\x1d', '\x18', '\x4e', '\x35', '\xc0', '\xae',
'\xa6', '\x8d', '\x6a', '\x72', '\x47', '\x33', '\xa8', '\x44', '\x92', '\xa1', '\x50', '\x06', '\xd2', '\x5c', '\x70', '\xd3',
'\xc1', '\x1a', '\x51', '\xa4', '\x89', '\x5a', '\x69', '\x06', '\x27', '\x12', '\x13', '\xa6', '\xf9', '\x12', '\x4d', '\x35',
'\xab', '\x99', '\x67', '\xb6', '\x93', '\x9f', '\x7f', '\x98', '\xdf', '\x12', '\x34', '\x7e', '\x5f', '\xa7', '\x1c', '\x95',
'\xae', '\x4f', '\xb1', '\x04', '\xec', '\x0c', '\x9b', '\xf0', '\x1f', '\x30', '\xfd', '\xcb', '\x4e', '\x40', '\xda', '\x17',
'\x1d', '\xd2', '\x6d', '\x6e', '\xce', '\x76', '\xfd', '\x7f', '\x92', '\x93', '\x1f', '\x67', '\x5f', '\xbc', '\xab', '\x5b',
'\x6c', '\x8b', '\xd0', '\x45', '\x81', '\x75', '\x24', '\xe0', '\x24', '\x38', '\xa5', '\xd7', '\x74', '\x56', '\x58', '\x2d',
'\xec', '\x11', '\xcc', '\x4a', '\xe0', '\xad', '\x7c', '\x55', '\x35', '\x15', '\x75', '\x03', '\xeb', '\x1e', '\xb1', '\xed',
'\x0c', '\x37', '\x11', '\x0a', '\x8f', '\x0a', '\xb7', '\x0f', '\xac', '\xe9', '\xb4', '\xb1', '\x7a', '\xd3', '\x66', '\xc8',
'\x35', '\x13', '\x70', '\x22', '\xf3', '\x11', '\xc4', '\x04', '\x74', '\x56', '\xca', '\xf2', '\x9d', '\xac', '\xc9', '\x1a',
'\xab', '\x19', '\x87', '\x05', '\xd9', '\x9f', '\xda', '\x31', '\x18', '\x43', '\x17', '\x60', '\x6a', '\xca', '\xe1', '\x82',
'\xd5', '\xa4', '\x64', '\x47', '\x80', '\x59', '\xd6', '\x58', '\xc9', '\xea', '\x11', '\x38', '\x20', '\xce', '\x2c', '\x28',
'\x41', '\xca', '\x3e', '\x8e', '\x1c', '\x9b', '\x30', '\x8e', '\x88', '\x1f', '\xc4', '\x2d', '\xd2', '\x8e', '\x4a', '\x66',
'\xa7', '\xb0', '\x74', '\xe2', '\x0b', '\x12', '\x46', '\xed', '\x0a', '\x44', '\x18', '\xc7', '\x24', '\xf0', '\xa3', '\xc8',
'\x09', '\x69', '\x6e', '\xbf', '\x56', '\xbb', '\x2f', '\xf9', '\xd2', '\xfb', '\x67', '\x7f', '\x49', '\x4b', '\x16', '\x16' };
{ '\x00', '\x00', '\x06', '\x4e', '\x78', '\xda', '\x95', '\x55', '\x5d', '\x4f', '\xc2', '\x30', '\x14', '\x7d', '\xf7', '\x57',
'\x34', '\x7b', '\x47', '\x36', '\x36', '\x44', '\x12', '\x3e', '\x42', '\x40', '\x12', '\x1f', '\x50', '\x64', '\x20', '\x8f',
'\xa6', '\x6e', '\x57', '\xa8', '\x76', '\x2d', '\x69', '\x2f', '\x28', '\xc6', '\x1f', '\x6f', '\xc7', '\xc8', '\x12', '\xa0',
'\x6c', '\xf0', '\xb4', '\xee', '\xf6', '\x9c', '\x9e', '\x73', '\x3f', '\xba', '\xb5', '\xba', '\x3f', '\x09', '\x27', '\x1b',
'\x50', '\x9a', '\x49', '\xd1', '\x76', '\xbc', '\x5b', '\xd7', '\x21', '\x20', '\x22', '\x19', '\x33', '\xb1', '\x68', '\x3b',
'\xb3', '\xe9', '\xb0', '\x72', '\xef', '\x74', '\x3b', '\xad', '\x17', '\xec', '\xc5', '\x1b', '\x2a', '\x22', '\x88', '\x07',
'\x32', '\xfa', '\x32', '\x7b', '\xe1', '\x56', '\x23', '\x24', '\xe4', '\x35', '\x27', '\x3a', '\x64', '\xa6', '\x41', '\xe5',
'\xef', '\xbe', '\x43', '\xfa', '\x52', '\x20', '\x65', '\xc2', '\x44', '\x76', '\xdb', '\x7d', '\x10', '\xa8', '\x28', '\x9f',
'\xb3', '\x78', '\x01', '\xd8', '\x76', '\x62', '\x73', '\x8e', '\x3f', '\x98', '\x33', '\x11', '\xcb', '\xef', '\xb7', '\xc4',
'\xe0', '\xb2', '\xa5', '\xd3', '\x69', '\xe5', '\x3c', '\x32', '\xe4', '\x92', '\xe2', '\xce', '\x88', '\x6b', '\xe2', '\xe1',
'\x8a', '\x33', '\x44', '\x13', '\x7e', '\x56', '\xcc', '\x9c', '\x65', '\x76', '\x52', '\xa1', '\xbf', '\x54', '\x68', '\x2d',
'\x30', '\x95', '\x3c', '\x87', '\xa9', '\xe4', '\x98', '\x9a', '\xc1', '\xf4', '\x14', '\x50', '\x32', '\xa5', '\xef', '\x3a',
'\x73', '\xb9', '\x56', '\x0a', '\xc4', '\xde', '\xd0', '\x58', '\xc9', '\x4f', '\x88', '\x70', '\xaa', '\x00', '\x0e', '\x3d',
'\x65', '\xae', '\xc9', '\x13', '\x4d', '\xa0', '\x10', '\x49', '\xfa', '\x5c', '\x6a', '\x88', '\x53', '\xc3', '\x55', '\x0b',
'\x6b', '\x40', '\x91', '\x86', '\x72', '\xad', '\x22', '\xb8', '\x92', '\x18', '\x46', '\x8a', '\xad', '\x50', '\x17', '\xb3',
'\xaa', '\x69', '\x66', '\x07', '\xf9', '\x79', '\xa7', '\xf9', '\xad', '\x40', '\xe1', '\xf6', '\x21', '\x66', '\x28', '\x55',
'\x79', '\x8a', '\x67', '\xc0', '\x56', '\xd9', '\x90', '\xfd', '\x82', '\xee', '\x34', '\x1a', '\x4d', '\x52', '\xf7', '\x3d',
'\xd2', '\xaa', '\x66', '\xef', '\xe6', '\xb9', '\x6f', '\xc9', '\xd5', '\xcd', '\x39', '\x36', '\x6f', '\x9b', '\x16', '\x33',
'\x22', '\x74', '\xb1', '\xc3', '\x5a', '\x12', '\xb0', '\x12', '\xac', '\xd6', '\x2f', '\x98', '\xac', '\x02', '\x63', '\x13',
'\xd0', '\x6b', '\x8e', '\x8f', '\xe2', '\x43', '\x96', '\x54', '\xd4', '\x0e', '\x2c', '\x6b', '\x62', '\x60', '\x95', '\x1b',
'\x73', '\x89', '\x17', '\xc9', '\x1d', '\x03', '\x4b', '\x26', '\x6d', '\x24', '\x97', '\x4a', '\xf7', '\x99', '\x8a', '\x38',
'\x5c', '\xc9', '\x9c', '\x00', '\x1f', '\x83', '\x4a', '\xce', '\xb2', '\x3c', '\x2b', '\x6b', '\xbc', '\xc1', '\x62', '\xc6',
'\x69', '\x41', '\x6a', '\x47', '\x05', '\x19', '\x81', '\xd6', '\x74', '\x01', '\xba', '\xa4', '\x1c', '\x36', '\x58', '\x49',
'\x4a', '\xe6', '\x0a', '\x44', '\x86', '\x35', '\x92', '\xe2', '\x8a', '\x2b', '\x50', '\xaf', '\x79', '\xc4', '\xf3', '\xea',
'\x2e', '\x09', '\xfc', '\x7b', '\xfb', '\x3d', '\xd8', '\x45', '\x9a', '\x6e', '\x40', '\x02', '\xf7', '\xce', '\x8a', '\x28',
'\x18', '\xb6', '\x01', '\xac', '\x70', '\x79', '\x41', '\xf3', '\xad', '\x38', '\x6b', '\x65', '\x33', '\xf9', '\xc0', '\xf7',
'\x49', '\xcd', '\x33', '\xd6', '\x5d', '\xab', '\xa3', '\x6a', '\xfe', '\x55', '\x36', '\xeb', '\x33', '\x7f', '\x83', '\xce',
'\xcd', '\x3f', '\x00', '\xe7', '\x29', '\xe5' };
// end paste
QByteArray retVal( stateData, sizeof( stateData ) );
@ -455,32 +475,35 @@ QByteArray RiuDockWidgetTools::defaultGeoMechDockState()
//--------------------------------------------------------------------------------------------------
QByteArray RiuDockWidgetTools::defaultPlotDockState()
{
// start paste
static const char stateData[] =
{ '\x00', '\x00', '\x04', '\xf5', '\x78', '\xda', '\x9d', '\x54', '\x51', '\x6f', '\x82', '\x30', '\x10', '\x7e', '\xdf', '\xaf',
'\x68', '\xfa', '\xee', '\x04', '\x99', '\x13', '\x13', '\xd4', '\x18', '\x9c', '\x6f', '\x6e', '\x2e', '\xe8', '\x7c', '\x34',
'\x1d', '\x5c', '\x48', '\x23', '\xb4', '\xa4', '\x2d', '\x6e', '\x2e', '\xfb', '\xf1', '\x3b', '\x70', '\x61', '\x9b', '\x01',
'\xc5', '\x3d', '\xb5', '\xbd', '\xfb', '\xbe', '\xbb', '\xef', '\x72', '\x5f', '\xea', '\x4d', '\xde', '\xd3', '\x84', '\xec',
'\x41', '\x69', '\x2e', '\xc5', '\x88', '\xda', '\xb7', '\x16', '\x25', '\x20', '\x42', '\x19', '\x71', '\x11', '\x8f', '\xe8',
'\x7a', '\x35', '\xef', '\xb8', '\x74', '\x32', '\xf6', '\x9e', '\xcd', '\x34', '\xda', '\x33', '\x11', '\x42', '\x34', '\x93',
'\xe1', '\x0e', '\x73', '\xc1', '\x41', '\x1b', '\x48', '\xc9', '\x4b', '\x45', '\xa4', '\x64', '\xad', '\x41', '\x55', '\xef',
'\x1e', '\x25', '\xbe', '\x14', '\x86', '\x71', '\x81', '\x91', '\x32', '\xed', '\x83', '\x30', '\x8a', '\x25', '\x1b', '\x1e',
'\xc5', '\x60', '\x46', '\x34', '\xc2', '\x3a', '\xcb', '\x44', '\x9a', '\x0d', '\x17', '\x91', '\x7c', '\xdb', '\xa6', '\x88',
'\xfc', '\x79', '\xd2', '\xb1', '\x57', '\xb1', '\xc9', '\x3c', '\x91', '\xcc', '\x94', '\x72', '\x2c', '\x8c', '\x07', '\x59',
'\xc2', '\x8d', '\xc1', '\xf0', '\x93', '\xe2', '\x58', '\x11', '\x33', '\x45', '\xbb', '\xcf', '\xa2', '\x5d', '\x2e', '\xb0',
'\xae', '\xd3', '\x88', '\xe9', '\x54', '\x98', '\x1e', '\x62', '\xa6', '\x0a', '\x18', '\x59', '\xb1', '\x57', '\x5d', '\x50',
'\x88', '\x9f', '\x2b', '\x05', '\xe2', '\x97', '\x2c', '\xbd', '\x52', '\x00', '\xdb', '\x0c', '\x6f', '\x0b', '\x54', '\x51',
'\xa9', '\x3a', '\xaa', '\x27', '\x8f', '\x2c', '\x85', '\x0b', '\x58', '\xe2', '\x27', '\x52', '\x43', '\x54', '\x88', '\xee',
'\xd6', '\xf0', '\x56', '\x90', '\x66', '\x09', '\x33', '\xf0', '\x1f', '\x6e', '\x10', '\x2a', '\x9e', '\xb5', '\xe9', '\xda',
'\x2d', '\x86', '\xfc', '\x33', '\xaa', '\x7d', '\x3a', '\xaa', '\x92', '\x19', '\x28', '\x73', '\x78', '\x88', '\xb8', '\x91',
'\xaa', '\xcd', '\xbc', '\x67', '\x09', '\xb5', '\xed', '\x03', '\xfe', '\x01', '\x7a', '\xec', '\xda', '\x43', '\x72', '\xd7',
'\x77', '\x89', '\xd7', '\x3d', '\xbe', '\xf1', '\xfc', '\xde', '\xd2', '\x79', '\x81', '\x8d', '\x16', '\x41', '\x5f', '\xb0',
'\xb8', '\x64', '\x34', '\xac', '\xa5', '\x81', '\x56', '\x2b', '\xf1', '\x3a', '\xc3', '\xf4', '\x4e', '\x44', '\xce', '\x98',
'\x61', '\x81', '\xcc', '\x55', '\x08', '\x2d', '\x5d', '\x73', '\x9e', '\x70', '\x69', '\xfd', '\x79', '\x9a', '\x32', '\x75',
'\x58', '\x96', '\x24', '\xc1', '\x62', '\x50', '\x17', '\xd7', '\x7e', '\x2a', '\x78', '\x01', '\x5a', '\x23', '\x51', '\xb7',
'\x90', '\xda', '\x04', '\xbd', '\x20', '\x72', '\x8d', '\xa0', '\xc0', '\xb0', '\x70', '\x77', '\x8d', '\x45', '\x86', '\x16',
'\x71', '\xdc', '\x41', '\xad', '\x45', '\x8e', '\x11', '\xc7', '\xe9', '\x13', '\x7b', '\x70', '\x6f', '\xa1', '\x93', '\x9c',
'\x5a', '\x58', '\xb7', '\xfa', '\x36', '\xf0', '\xde', '\xf0', '\x69', '\x8d', '\x6f', '\xbe', '\x00', '\x0a', '\x89', '\xb7',
'\xa8' };
{ '\x00', '\x00', '\x04', '\xbd', '\x78', '\xda', '\x9d', '\x54', '\x51', '\x6f', '\x82', '\x30', '\x10', '\x7e', '\xdf', '\xaf',
'\x68', '\xfa', '\xee', '\x50', '\xc1', '\x89', '\x09', '\x62', '\x8c', '\xce', '\x37', '\x37', '\x17', '\x70', '\x3e', '\x9a',
'\x8e', '\x5e', '\x48', '\x33', '\x68', '\x49', '\x5b', '\xdd', '\x5c', '\xf6', '\xe3', '\x57', '\x60', '\x61', '\x9b', '\x01',
'\xc4', '\x3d', '\xd1', '\xbb', '\xfb', '\xbe', '\xde', '\x77', '\xf9', '\xae', '\x78', '\xb3', '\xf7', '\x34', '\x41', '\x47',
'\x90', '\x8a', '\x09', '\x3e', '\xc5', '\x83', '\xdb', '\x3e', '\x46', '\xc0', '\x23', '\x41', '\x19', '\x8f', '\xa7', '\x78',
'\x1b', '\xae', '\x7a', '\x2e', '\x9e', '\xf9', '\xde', '\x93', '\x9e', '\xd3', '\x23', '\xe1', '\x11', '\xd0', '\xa5', '\x88',
'\x5e', '\x4d', '\x2d', '\x38', '\x29', '\x0d', '\x29', '\x7a', '\xae', '\x88', '\x18', '\x6d', '\x15', '\xc8', '\x2a', '\xb6',
'\x31', '\x5a', '\x08', '\xae', '\x09', '\xe3', '\x26', '\x53', '\x94', '\x17', '\xc0', '\xb5', '\x24', '\xc9', '\x8e', '\xd1',
'\x18', '\xf4', '\x14', '\x53', '\x73', '\xcf', '\x26', '\x11', '\x7a', '\xc7', '\x38', '\x15', '\x6f', '\xfb', '\xd4', '\x20',
'\x7f', '\x42', '\xec', '\x7b', '\x15', '\x1b', '\xad', '\x12', '\x41', '\x74', '\x21', '\xa7', '\x6f', '\xf2', '\x41', '\x96',
'\x30', '\xad', '\x4d', '\xfa', '\x51', '\x32', '\x73', '\xa3', '\xa9', '\xe4', '\xed', '\x3e', '\xf3', '\x76', '\x07', '\xae',
'\xf3', '\xc6', '\x4d', '\x98', '\x5e', '\x85', '\x19', '\x1a', '\xcc', '\x5c', '\x02', '\x41', '\x21', '\x79', '\x51', '\xa5',
'\xd6', '\x83', '\x94', '\xc0', '\x7f', '\xc9', '\x52', '\xa1', '\x04', '\xd8', '\x67', '\xe6', '\xb4', '\x36', '\x2a', '\x2a',
'\x55', '\xa5', '\x7a', '\xf4', '\x40', '\x52', '\xb8', '\x80', '\x45', '\x8b', '\x44', '\x28', '\xa0', '\xb9', '\x68', '\xab',
'\x86', '\x17', '\x42', '\x9a', '\x25', '\x44', '\xc3', '\x7f', '\xb8', '\x41', '\x24', '\x59', '\xd6', '\xa5', '\xab', '\x95',
'\x0f', '\xf9', '\x67', '\xd4', '\xc1', '\xf9', '\xa8', '\x52', '\x64', '\x20', '\xf5', '\xe9', '\x9e', '\x32', '\x2d', '\x64',
'\x97', '\x79', '\x5b', '\x09', '\xb5', '\xed', '\x03', '\xf6', '\x01', '\xca', '\x1f', '\x4f', '\x5c', '\xe4', '\x8c', '\x27',
'\xc8', '\xb3', '\xca', '\xd8', '\x7c', '\xbf', '\x5d', '\x6a', '\x17', '\xd8', '\xb8', '\x22', '\x66', '\x2f', '\x48', '\x5c',
'\x30', '\x1a', '\x6c', '\x69', '\xa0', '\xd5', '\x4a', '\xbc', '\x6e', '\x61', '\x86', '\x67', '\x22', '\x97', '\x44', '\x93',
'\x40', '\x1c', '\x64', '\x04', '\x1d', '\xb7', '\xa6', '\x9d', '\x70', '\xc9', '\xfe', '\x43', '\x9a', '\x12', '\x79', '\xda',
'\x14', '\x24', '\x4e', '\x62', '\x90', '\x57', '\xdb', '\xbe', '\x06', '\xa5', '\x0c', '\x51', '\x75', '\x90', '\xda', '\x04',
'\x6d', '\xb1', '\xda', '\x9d', '\xd8', '\xc8', '\x76', '\x9d', '\x5a', '\xab', '\xcb', '\x8c', '\x3d', '\x72', '\xd0', '\x60',
'\x3c', '\xba', '\x43', '\x8e', '\xed', '\xd6', '\xc2', '\xac', '\xea', '\xf9', '\x9b', '\x73', '\xc3', '\xcf', '\xc7', '\xbf',
'\xf9', '\x02', '\x51', '\x97', '\xa4', '\x18' };
// end paste
QByteArray retVal( stateData, sizeof( stateData ) );
@ -492,34 +515,38 @@ QByteArray RiuDockWidgetTools::defaultPlotDockState()
//--------------------------------------------------------------------------------------------------
QByteArray RiuDockWidgetTools::hideAllDocking3DState()
{
// start paste
static const char stateData[] =
{ '\x00', '\x00', '\x06', '\x11', '\x78', '\xda', '\x95', '\x54', '\x4d', '\x53', '\xc2', '\x30', '\x10', '\xbd', '\xfb', '\x2b',
'\x32', '\xbd', '\x2b', '\x05', '\xd4', '\xf1', '\xc0', '\xc7', '\x30', '\xa0', '\x33', '\x1e', '\x50', '\xb4', '\x20', '\x47',
'\x27', '\xa6', '\x2b', '\x46', '\xd3', '\x84', '\xd9', '\x2c', '\xf8', '\x31', '\xfe', '\x78', '\xb7', '\x05', '\x19', '\x29',
'\xa5', '\x95', '\x53', '\xd3', '\xdd', '\xf7', '\xf2', '\xde', '\x26', '\xbb', '\x69', '\x75', '\x3f', '\x12', '\x23', '\x96',
'\x80', '\x5e', '\x3b', '\xdb', '\x0e', '\xea', '\x27', '\x61', '\x20', '\xc0', '\x2a', '\x17', '\x6b', '\x3b', '\x6b', '\x07',
'\x93', '\xf1', '\xd5', '\xf1', '\x45', '\xd0', '\xed', '\xb4', '\xee', '\xa8', '\x17', '\x2f', '\xa5', '\x55', '\x10', '\x0f',
'\x9c', '\x7a', '\xe3', '\x5c', '\xf4', '\xe9', '\x09', '\x12', '\xf1', '\xb0', '\x21', '\x06', '\x62', '\xe2', '\x01', '\x37',
'\xff', '\x8d', '\x40', '\xf4', '\x9d', '\x25', '\xa9', '\x2d', '\x47', '\xb2', '\x74', '\x1f', '\x2c', '\xa1', '\x34', '\x53',
'\x1d', '\xcf', '\x80', '\xda', '\x41', '\xcc', '\xfb', '\x34', '\x07', '\x53', '\x6d', '\x63', '\xf7', '\xfe', '\x98', '\x30',
'\x6e', '\xb5', '\x0c', '\x3a', '\xad', '\x0d', '\x4f', '\x5c', '\x19', '\x27', '\x29', '\x33', '\x12', '\x72', '\x3c', '\x9a',
'\x1b', '\x4d', '\xc4', '\xe1', '\x5b', '\xd4', '\xbc', '\x17', '\x67', '\x52', '\xa1', '\xef', '\x54', '\x68', '\x61', '\x29',
'\x95', '\xdc', '\x87', '\x39', '\xde', '\xc2', '\xf4', '\x10', '\xa4', '\x18', '\xcb', '\x27', '\xb6', '\xd5', '\xe4', '\xc4',
'\x02', '\x11', '\xec', '\xda', '\x50', '\xa4', '\x50', '\xcf', '\xc9', '\x8f', '\x11', '\x60', '\xdb', '\xd3', '\xca', '\xb5',
'\xb8', '\x91', '\x09', '\xac', '\x90', '\x23', '\x74', '\xaf', '\xa0', '\x28', '\x8f', '\x14', '\x7d', '\xe3', '\x3c', '\xc4',
'\x69', '\xc1', '\xb5', '\x02', '\xd6', '\x40', '\x92', '\x8c', '\xdc', '\x02', '\x15', '\x1c', '\x48', '\xdc', '\x63', '\x6c',
'\x9b', '\x55', '\x4b', '\x2b', '\xdb', '\xaa', '\xaf', '\x9e', '\xab', '\x8f', '\x5d', '\xcf', '\x01', '\xe9', '\xf3', '\x32',
'\xd6', '\xe4', '\xb0', '\xba', '\xc4', '\x3d', '\xe0', '\x42', '\xd9', '\x48', '\x7f', '\x81', '\xef', '\x84', '\xa2', '\xde',
'\x38', '\x3b', '\x17', '\xad', '\xda', '\xea', '\x97', '\xbf', '\xeb', '\x1b', '\x39', '\xf8', '\x6e', '\xf2', '\xde', '\x8b',
'\x9a', '\x85', '\x3b', '\x44', '\xce', '\x32', '\x6c', '\x81', '\xff', '\x42', '\xc2', '\xaf', '\xf3', '\xf0', '\xaf', '\xf3',
'\x8a', '\xc6', '\x6a', '\x96', '\x1b', '\xbb', '\x07', '\xbf', '\x30', '\x74', '\x6d', '\x9f', '\x5d', '\xc5', '\x81', '\x16',
'\x03', '\xab', '\xee', '\xf0', '\x34', '\x27', '\x37', '\x74', '\x2f', '\xe8', '\xfb', '\x1a', '\x95', '\x81', '\x91', '\x71',
'\xf4', '\x2f', '\xcd', '\x3c', '\xb0', '\xa2', '\xdb', '\x4a', '\x24', '\x2a', '\x98', '\xf7', '\x60', '\x46', '\x80', '\xc9',
'\x81', '\xac', '\xd1', '\xb2', '\xc2', '\xe1', '\xee', '\xa9', '\xe4', '\x27', '\x77', '\xc2', '\xac', '\x88', '\xa4', '\x7a',
'\xab', '\x38', '\x8f', '\x21', '\x78', '\x2f', '\x67', '\xe0', '\x0f', '\x71', '\x87', '\x4e', '\x31', '\x6b', '\xe8', '\x6c',
'\xf9', '\x1c', '\xec', '\x10', '\x0b', '\x3d', '\x95', '\xce', '\x4e', '\x28', '\x78', '\x78', '\xc2', '\xe2', '\xe9', '\xc9',
'\x22', '\xd9', '\x70', '\x95', '\x01', '\x4a', '\x76', '\xa8', '\x6d', '\x1e', '\x56', '\x5e', '\xef', '\x79', '\xd0', '\x3b',
'\x47', '\x3f', '\x6f', '\xaf', '\x16', '\x81' };
{ '\x00', '\x00', '\x06', '\x51', '\x78', '\xda', '\x95', '\x95', '\x4d', '\x53', '\xc2', '\x30', '\x10', '\x86', '\xef', '\xfe',
'\x8a', '\x4c', '\xef', '\x48', '\x01', '\x65', '\x3c', '\xf0', '\x31', '\x4c', '\x91', '\x19', '\x0f', '\x28', '\x5a', '\x90',
'\xa3', '\x13', '\xdb', '\x15', '\xa2', '\x69', '\xc2', '\x24', '\x0b', '\x8a', '\xe3', '\x8f', '\x37', '\x6d', '\xb1', '\x23',
'\x25', '\x6d', '\xe9', '\xa9', '\x69', '\xf2', '\xbe', '\xd9', '\x67', '\xb3', '\x9b', '\xb6', '\x37', '\xfc', '\x8a', '\x38',
'\xd9', '\x81', '\xd2', '\x4c', '\x8a', '\xbe', '\xd3', '\xba', '\x74', '\x1d', '\x02', '\x22', '\x90', '\x21', '\x13', '\xab',
'\xbe', '\xb3', '\x98', '\x4f', '\x1a', '\x37', '\xce', '\x70', '\xd0', '\x7b', '\xc4', '\x51', '\xb8', '\xa3', '\x22', '\x80',
'\x70', '\x2c', '\x83', '\x0f', '\xb3', '\xe6', '\xef', '\x35', '\x42', '\x44', '\x9e', '\x33', '\xa3', '\x43', '\x16', '\x1a',
'\x54', '\xf6', '\xde', '\x71', '\x88', '\x27', '\x05', '\x52', '\x26', '\xcc', '\x4c', '\xb2', '\xec', '\x81', '\x40', '\x45',
'\xf9', '\x92', '\x85', '\x2b', '\xc0', '\xbe', '\x13', '\x9a', '\x7d', '\x3a', '\xe3', '\x25', '\x13', '\xa1', '\xfc', '\x7c',
'\x89', '\x8c', '\x2e', '\x1d', '\x3a', '\x83', '\x5e', '\xe6', '\x23', '\x13', '\x2e', '\x29', '\x26', '\x20', '\xae', '\x99',
'\xf7', '\x37', '\x9c', '\x21', '\x9a', '\xe9', '\x07', '\xc5', '\xcc', '\x5e', '\x66', '\x25', '\x0e', '\xf4', '\x13', '\x07',
'\xda', '\x0a', '\x8c', '\x43', '\x16', '\x69', '\x1a', '\x99', '\xa6', '\x6d', '\x34', '\x23', '\x05', '\x94', '\xcc', '\xe9',
'\xab', '\x4e', '\x29', '\xb7', '\x4a', '\x81', '\x38', '\x00', '\xf9', '\x81', '\x62', '\x1b', '\xd4', '\x73', '\x05', '\x70',
'\xcc', '\x94', '\x52', '\x93', '\x7b', '\x1a', '\x41', '\xaa', '\x9c', '\x29', '\xf9', '\x0e', '\x01', '\xe6', '\x95', '\xc4',
'\xe3', '\x52', '\x43', '\x18', '\x27', '\xdc', '\xb4', '\xb8', '\xc6', '\x14', '\xa9', '\x2f', '\xb7', '\x2a', '\x80', '\x9a',
'\xc6', '\x02', '\xb0', '\x63', '\x57', '\x33', '\xce', '\xec', '\x28', '\xbf', '\x56', '\x2e', '\x3f', '\x43', '\xbd', '\x01',
'\x85', '\xfb', '\xdb', '\x90', '\xa1', '\x54', '\xd5', '\x29', '\x16', '\x88', '\xad', '\x61', '\x7d', '\xf6', '\x0d', '\x7a',
'\xe0', '\x92', '\x56', '\xa7', '\xd5', '\x25', '\xbd', '\x66', '\xfa', '\x6a', '\x9e', '\x87', '\x8a', '\xd4', '\xae', '\x4d',
'\x9e', '\xdd', '\xd6', '\x2c', '\xa6', '\x43', '\xe8', '\x2a', '\xd1', '\x5a', '\xf8', '\xad', '\x86', '\x3f', '\x72', '\xf7',
'\x3f', '\xf9', '\x19', '\x8d', '\x55', '\x02', '\xf6', '\x04', '\x7a', '\xcb', '\xf1', '\x4e', '\xbc', '\xc9', '\x8a', '\x03',
'\xb5', '\x0b', '\xab', '\x6a', '\x78', '\x95', '\x0b', '\x37', '\x95', '\x6b', '\xa5', '\x3d', '\xa6', '\x02', '\x0e', '\x33',
'\x2e', '\xf1', '\xac', '\x98', '\x79', '\x61', '\x45', '\xb7', '\x95', '\x84', '\xa8', '\x70', '\x3e', '\x01', '\x9f', '\x81',
'\x8a', '\x6a', '\xba', '\x66', '\xbb', '\x0a', '\xc2', '\xd3', '\x53', '\x69', '\x9f', '\x76', '\x76', '\x00', '\x5a', '\x4f',
'\xa5', '\x38', '\xa3', '\xb3', '\xa7', '\x46', '\x49', '\x57', '\xa0', '\xeb', '\x20', '\x16', '\xee', '\x5f', '\x7a', '\x19',
'\x5c', '\xd2', '\xbe', '\xee', '\xba', '\xf6', '\xeb', '\x90', '\xcc', '\x24', '\xb7', '\xc5', '\x2e', '\x28', '\x69', '\xb9',
'\x31', '\x6c', '\x70', '\x7d', '\x46', '\xf5', '\xad', '\xba', '\x52', '\xe0', '\x04', '\xd7', '\xce', '\xd3', '\xcc', '\x3e',
'\xcc', '\x66', '\x5c', '\xf0', '\x43', '\x18', '\x5c', '\xfc', '\x02', '\x10', '\x78', '\x2c', '\xb5' };
// end paste
QByteArray retVal( stateData, sizeof( stateData ) );
@ -531,31 +558,34 @@ QByteArray RiuDockWidgetTools::hideAllDocking3DState()
//--------------------------------------------------------------------------------------------------
QByteArray RiuDockWidgetTools::hideAllDockingPlotState()
{
// start paste
static const char stateData[] =
{ '\x00', '\x00', '\x04', '\xe7', '\x78', '\xda', '\x9d', '\x94', '\x51', '\x6f', '\x82', '\x30', '\x14', '\x85', '\xdf', '\xf7',
'\x2b', '\x9a', '\xbe', '\x3b', '\x10', '\xb3', '\xc5', '\x07', '\xc4', '\x18', '\x9c', '\x6f', '\x6e', '\x2e', '\xe0', '\x7c',
'\x34', '\x1d', '\xdc', '\x90', '\x46', '\x68', '\x49', '\x5b', '\xdc', '\x5c', '\xf6', '\xe3', '\x77', '\x41', '\xc5', '\xe9',
'\xc0', '\xa9', '\x4f', '\xd0', '\xf6', '\x9c', '\x9e', '\xef', '\x72', '\x6f', '\x70', '\x87', '\x9f', '\x59', '\x4a', '\xd6',
'\xa0', '\x34', '\x97', '\x62', '\x40', '\xbb', '\xf7', '\x36', '\x25', '\x20', '\x22', '\x19', '\x73', '\x91', '\x0c', '\xe8',
'\x3c', '\x9c', '\x74', '\xfa', '\x74', '\xe8', '\xb9', '\xaf', '\x66', '\x14', '\xaf', '\x99', '\x88', '\x20', '\x1e', '\xcb',
'\x68', '\x85', '\x67', '\xc1', '\x46', '\x1b', '\xc8', '\xc8', '\x5b', '\x6d', '\xa4', '\x64', '\xae', '\x41', '\xd5', '\x6b',
'\x87', '\x12', '\x5f', '\x0a', '\xc3', '\xb8', '\xc0', '\x9d', '\xea', '\xd8', '\x07', '\x61', '\x14', '\x4b', '\x17', '\x3c',
'\x4e', '\xc0', '\x0c', '\x68', '\x8c', '\xf7', '\xcc', '\x52', '\x69', '\x16', '\x5c', '\xc4', '\xf2', '\x63', '\x99', '\xa1',
'\xf2', '\xb0', '\xa4', '\x9e', '\x5b', '\xbb', '\xc9', '\x24', '\x95', '\xcc', '\x54', '\x38', '\x36', '\xee', '\x07', '\x79',
'\xca', '\x8d', '\xc1', '\xed', '\x17', '\xc5', '\xf1', '\x46', '\x3c', '\x29', '\xe3', '\xbe', '\xcb', '\xb8', '\x42', '\xe0',
'\xbd', '\xbd', '\x56', '\x4d', '\xa7', '\xd6', '\x38', '\xa8', '\x19', '\x29', '\x60', '\x24', '\x64', '\xef', '\xba', '\xb4',
'\x10', '\xbf', '\x50', '\x0a', '\xc4', '\x0e', '\x2b', '\x88', '\x14', '\xcf', '\x8d', '\x0e', '\x15', '\xc0', '\x32', '\x47',
'\xa6', '\x29', '\x72', '\xd4', '\x5c', '\x5b', '\x7e', '\xf2', '\xcc', '\x32', '\x38', '\x14', '\xd1', '\xa8', '\x25', '\x7e',
'\x2a', '\x35', '\xc4', '\x65', '\xf1', '\x56', '\x83', '\x2f', '\x84', '\x2c', '\x4f', '\x99', '\x81', '\x5b', '\xbc', '\x67',
'\x08', '\x8f', '\x9d', '\x56', '\x59', '\xe6', '\x51', '\xb1', '\xdd', '\x93', '\x62', '\x67', '\x4a', '\xe6', '\xa0', '\xcc',
'\xe6', '\x29', '\xe6', '\x46', '\xaa', '\x4b', '\xea', '\x3d', '\x6b', '\x68', '\x8c', '\x0f', '\xf8', '\x17', '\x68', '\xcf',
'\x26', '\x5d', '\xa7', '\xdf', '\x23', '\xae', '\xb5', '\x5d', '\xe2', '\x73', '\xd7', '\xa6', '\xf3', '\x7c', '\xad', '\x33',
'\x82', '\x83', '\xc1', '\x92', '\xca', '\xd1', '\xd2', '\x95', '\x16', '\xdb', '\x9e', '\xd0', '\xfe', '\x4d', '\x78', '\xdd',
'\xc4', '\x38', '\xa7', '\x13', '\x53', '\x64', '\x19', '\x53', '\x9b', '\x59', '\xf5', '\x2d', '\x04', '\x4b', '\x40', '\x35',
'\x31', '\x8d', '\x99', '\x61', '\x81', '\x2c', '\x54', '\x04', '\xb7', '\xb4', '\xfc', '\x6f', '\xc4', '\x7f', '\xad', '\x3e',
'\xa5', '\x9c', '\x63', '\x4e', '\x60', '\x58', '\xb4', '\xba', '\xa0', '\xcb', '\x53', '\xd0', '\x1a', '\x43', '\xf4', '\x95',
'\x94', '\xad', '\x11', '\xb7', '\xcd', '\xc5', '\x5e', '\xe0', '\x3c', '\x3c', '\xda', '\xc4', '\x6e', '\x94', '\x58', '\xf5',
'\x8f', '\x02', '\xdf', '\x5b', '\x7e', '\x53', '\xde', '\xdd', '\x0f', '\x36', '\x41', '\xb3', '\x2a' };
{ '\x00', '\x00', '\x04', '\xae', '\x78', '\xda', '\x9d', '\x54', '\xc1', '\x6e', '\x82', '\x40', '\x10', '\xbd', '\xf7', '\x2b',
'\x36', '\x7b', '\xb7', '\x20', '\xa6', '\x8d', '\x07', '\xc4', '\x18', '\xad', '\x37', '\x5b', '\x1b', '\xb0', '\x1e', '\xcd',
'\x96', '\x9d', '\x90', '\x4d', '\x61', '\x97', '\xec', '\x2e', '\xb6', '\x36', '\xfd', '\xf8', '\x0e', '\xa8', '\x58', '\x2d',
'\x18', '\xf5', '\x04', '\x33', '\xf3', '\xde', '\xce', '\x1b', '\xde', '\xb0', '\xfe', '\xf0', '\x2b', '\x4b', '\xc9', '\x1a',
'\xb4', '\x11', '\x4a', '\x0e', '\x68', '\xf7', '\xde', '\xa5', '\x04', '\x64', '\xac', '\xb8', '\x90', '\xc9', '\x80', '\x2e',
'\xa2', '\x69', '\xa7', '\x4f', '\x87', '\x81', '\xff', '\x6a', '\x47', '\x7c', '\xcd', '\x64', '\x0c', '\x7c', '\xa2', '\xe2',
'\x0f', '\xac', '\x85', '\x1b', '\x63', '\x21', '\x23', '\x6f', '\x35', '\x91', '\x92', '\x85', '\x01', '\x5d', '\xc7', '\x3d',
'\x4a', '\xc6', '\x4a', '\x5a', '\x26', '\x24', '\x66', '\xaa', '\xf2', '\x18', '\xa4', '\xd5', '\x2c', '\x5d', '\x0a', '\x9e',
'\x80', '\x1d', '\x50', '\x8e', '\xe7', '\xcc', '\x53', '\x65', '\x97', '\x42', '\x72', '\xf5', '\xb9', '\xca', '\x10', '\x79',
'\x08', '\x69', '\xe0', '\xd7', '\x6c', '\x32', '\x4d', '\x15', '\xb3', '\x95', '\x1c', '\x17', '\xf3', '\x61', '\x9e', '\x0a',
'\x6b', '\x31', '\xfd', '\xa2', '\x05', '\x9e', '\x88', '\x95', '\xb2', '\xdd', '\x4f', '\xd9', '\xae', '\x90', '\xb6', '\x6c',
'\xdc', '\x86', '\xe9', '\xd4', '\x18', '\x0f', '\x31', '\x23', '\x0d', '\x8c', '\x44', '\xec', '\xdd', '\x6c', '\xb5', '\x16',
'\x5a', '\x83', '\xdc', '\xc9', '\x0a', '\x63', '\x2d', '\x72', '\x6b', '\x22', '\x0d', '\xb0', '\xca', '\x51', '\xd3', '\x0c',
'\x75', '\xd4', '\xba', '\xb6', '\xfa', '\xc9', '\x33', '\xcb', '\xe0', '\x30', '\x44', '\x23', '\x96', '\x8c', '\x53', '\x65',
'\x80', '\x97', '\xc3', '\x3b', '\x0d', '\xbc', '\x08', '\xb2', '\x3c', '\x65', '\x16', '\x6e', '\xe1', '\x9e', '\x51', '\x78',
'\xcc', '\x74', '\xca', '\x31', '\x8f', '\x86', '\xed', '\x9e', '\x0c', '\x3b', '\xd7', '\x2a', '\x07', '\x6d', '\x37', '\x4f',
'\x5c', '\x58', '\xa5', '\x2f', '\x99', '\xf7', '\x2c', '\xa1', '\xb1', '\x7d', '\x28', '\xbe', '\xc1', '\x04', '\x2e', '\xe9',
'\x7a', '\xfd', '\x1e', '\xf1', '\x9d', '\x6d', '\x88', '\xcf', '\x9d', '\x4d', '\xe7', '\xf5', '\xb5', '\xee', '\x08', '\x2e',
'\x06', '\x4b', '\x2a', '\x46', '\x8b', '\x2b', '\x2d', '\xb4', '\xbd', '\x42', '\xf7', '\xaf', '\xc2', '\xeb', '\x36', '\xc6',
'\x3b', '\xdd', '\x98', '\x22', '\xcb', '\x98', '\xde', '\xcc', '\xab', '\x6f', '\x21', '\x59', '\x02', '\xba', '\x49', '\xd3',
'\x84', '\x59', '\x16', '\xaa', '\x42', '\xc7', '\x70', '\x8b', '\xe5', '\xff', '\x5b', '\x5c', '\x6b', '\xf5', '\x0c', '\x8c',
'\x41', '\xa2', '\xb9', '\xc0', '\xe4', '\x36', '\xe8', '\x6d', '\xf6', '\xee', '\x01', '\xde', '\xc3', '\xa3', '\x4b', '\xdc',
'\x46', '\x88', '\x53', '\xff', '\xef', '\xf8', '\xde', '\x72', '\xdb', '\x04', '\x77', '\xbf', '\xe8', '\x23', '\x9f', '\x33' };
// end paste
QByteArray retVal( stateData, sizeof( stateData ) );

View File

@ -51,6 +51,7 @@ public:
static QString mainWindowResultInfoName();
static QString mainWindowProcessMonitorName();
static QString mainWindowResultPlotName();
static QString mainWindowDepthPlotName();
static QString mainWindowRelPermPlotName();
static QString mainWindowPvtPlotName();
static QString mainWindowMessagesName();

View File

@ -50,6 +50,7 @@
#include "RimViewLinkerCollection.h"
#include "RimViewWindow.h"
#include "RiuDepthQwtPlot.h"
#include "RiuDockWidgetTools.h"
#include "RiuMdiArea.h"
#include "RiuMdiSubWindow.h"
@ -256,6 +257,7 @@ void RiuMainWindow::cleanupGuiCaseClose()
setResultInfo( "" );
m_resultQwtPlot->deleteAllCurves();
m_depthQwtPlot->deleteAllCurves();
if ( m_relPermPlotPanel ) m_relPermPlotPanel->clearPlot();
if ( m_pvtPlotPanel ) m_pvtPlotPanel->clearPlot();
if ( m_mohrsCirclePlot ) m_mohrsCirclePlot->clearPlot();
@ -814,6 +816,14 @@ void RiuMainWindow::createDockPanels()
bottomWidgets.push_back( dockWidget );
}
{
auto dockWidget = RiuDockWidgetTools::createDockWidget( "Depth Plot", RiuDockWidgetTools::mainWindowDepthPlotName(), dockManager() );
m_depthQwtPlot = new RiuDepthQwtPlot( dockWidget );
dockWidget->setWidget( m_depthQwtPlot );
rightWidgets.push_back( dockWidget );
}
ads::CDockAreaWidget* leftArea = addTabbedWidgets( leftWidgets, ads::DockWidgetArea::LeftDockWidgetArea );
ads::CDockAreaWidget* rightArea = addTabbedWidgets( rightWidgets, ads::DockWidgetArea::RightDockWidgetArea );
ads::CDockAreaWidget* bottomArea =
@ -1149,6 +1159,14 @@ RiuResultQwtPlot* RiuMainWindow::resultPlot()
return m_resultQwtPlot;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiuDepthQwtPlot* RiuMainWindow::depthPlot()
{
return m_depthQwtPlot;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -1820,6 +1838,10 @@ void RiuMainWindow::applyFontSizesToDockedPlots()
{
m_resultQwtPlot->applyFontSizes( true );
}
if ( m_depthQwtPlot )
{
m_depthQwtPlot->applyFontSizes( true );
}
if ( m_mohrsCirclePlot )
{
m_mohrsCirclePlot->applyFontSizes( true );

View File

@ -49,6 +49,7 @@ class RiuMessagePanel;
class RiuProcessMonitor;
class RiuResultInfoPanel;
class RiuResultQwtPlot;
class RiuDepthQwtPlot;
class RiuRelativePermeabilityPlotPanel;
class RiuPvtPlotPanel;
class RiuMohrsCirclePlot;
@ -123,6 +124,7 @@ public:
QList<QMdiSubWindow*> subWindowList( QMdiArea::WindowOrder order );
RiuResultQwtPlot* resultPlot();
RiuDepthQwtPlot* depthPlot();
RiuRelativePermeabilityPlotPanel* relativePermeabilityPlotPanel();
RiuPvtPlotPanel* pvtPlotPanel();
RiuMohrsCirclePlot* mohrsCirclePlot();
@ -184,6 +186,7 @@ private:
QPointer<RiuMessagePanel> m_messagePanel;
RiuResultQwtPlot* m_resultQwtPlot;
RiuDepthQwtPlot* m_depthQwtPlot;
RiuMohrsCirclePlot* m_mohrsCirclePlot;
RiuRelativePermeabilityPlotPanel* m_relPermPlotPanel;
RiuPvtPlotPanel* m_pvtPlotPanel;

View File

@ -52,7 +52,7 @@
#include <QUndoStack>
#include <QUndoView>
#define DOCKSTATE_VERSION 2
#define DOCKSTATE_VERSION 3
//--------------------------------------------------------------------------------------------------
///

View File

@ -319,3 +319,29 @@ QList<QwtLegendData> RiuQwtPlotTools::createLegendData( const std::vector<RimPlo
return legendDataList;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuQwtPlotTools::enableGridLines( QwtPlot* plot, QwtAxis::Position axis, bool enableMajor, bool enableMinor )
{
QwtPlotItemList plotItems = plot->itemList( QwtPlotItem::Rtti_PlotGrid );
for ( QwtPlotItem* plotItem : plotItems )
{
auto* grid = static_cast<QwtPlotGrid*>( plotItem );
if ( axis == QwtAxis::XTop || axis == QwtAxis::XBottom )
{
grid->setXAxis( axis );
grid->enableX( enableMajor );
grid->enableXMin( enableMinor );
}
else
{
grid->setYAxis( axis );
grid->enableY( enableMajor );
grid->enableYMin( enableMinor );
}
grid->setMajorPen( Qt::lightGray, 1.0, Qt::SolidLine );
grid->setMinorPen( Qt::lightGray, 1.0, Qt::DashLine );
}
}

View File

@ -70,6 +70,8 @@ public:
static QwtAxis::Position toQwtPlotAxisEnum( RiaDefines::PlotAxis riaPlotAxis );
static RiaDefines::PlotAxis fromQwtPlotAxis( QwtAxis::Position );
static void enableGridLines( QwtPlot* plot, QwtAxis::Position axis, bool enableMajor, bool enableMinor );
};
//--------------------------------------------------------------------------------------------------

View File

@ -20,6 +20,7 @@
#include "RiuSelectionChangedHandler.h"
#include "RigCaseCellResultsData.h"
#include "RigDepthResultAccessor.h"
#include "RigEclipseCaseData.h"
#include "RigFemPartCollection.h"
#include "RigFemPartResultsCollection.h"
@ -38,6 +39,7 @@
#include "RimProject.h"
#include "Riu3dSelectionManager.h"
#include "RiuDepthQwtPlot.h"
#include "RiuFemResultTextBuilder.h"
#include "RiuMainWindow.h"
#include "RiuMohrsCirclePlot.h"
@ -82,6 +84,7 @@ void RiuSelectionChangedHandler::handleSelectionDeleted() const
if ( !RiuMainWindow::instance() ) return;
RiuMainWindow::instance()->resultPlot()->deleteAllCurves();
RiuMainWindow::instance()->depthPlot()->deleteAllCurves();
RiuRelativePermeabilityPlotUpdater* relPermPlotUpdater = RiuMainWindow::instance()->relativePermeabilityPlotPanel()->plotUpdater();
relPermPlotUpdater->updateOnSelectionChanged( nullptr );
@ -104,7 +107,9 @@ void RiuSelectionChangedHandler::handleItemAppended( const RiuSelectionItem* ite
{
if ( !RiuMainWindow::instance() ) return;
addCurveFromSelectionItem( item );
addResultCurveFromSelectionItem( item );
addDepthCurveFromSelectionItem( item );
RiuRelativePermeabilityPlotUpdater* relPermUpdater = RiuMainWindow::instance()->relativePermeabilityPlotPanel()->plotUpdater();
relPermUpdater->updateOnSelectionChanged( item );
@ -128,6 +133,7 @@ void RiuSelectionChangedHandler::handleSetSelectedItem( const RiuSelectionItem*
if ( !RiuMainWindow::instance() ) return;
RiuMainWindow::instance()->resultPlot()->deleteAllCurves();
RiuMainWindow::instance()->depthPlot()->deleteAllCurves();
RiuMohrsCirclePlot* mohrsCirclePlot = RiuMainWindow::instance()->mohrsCirclePlot();
if ( mohrsCirclePlot ) mohrsCirclePlot->clearPlot();
@ -138,7 +144,7 @@ void RiuSelectionChangedHandler::handleSetSelectedItem( const RiuSelectionItem*
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuSelectionChangedHandler::addCurveFromSelectionItem( const RiuEclipseSelectionItem* eclipseSelectionItem ) const
void RiuSelectionChangedHandler::addResultCurveFromSelectionItem( const RiuEclipseSelectionItem* eclipseSelectionItem ) const
{
RimEclipseResultDefinition* eclResDef = eclipseSelectionItem->m_resultDefinition;
if ( !eclResDef ) return;
@ -184,7 +190,7 @@ void RiuSelectionChangedHandler::addCurveFromSelectionItem( const RiuEclipseSele
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuSelectionChangedHandler::addCurveFromSelectionItem( const RiuGeoMechSelectionItem* geomSelectionItem ) const
void RiuSelectionChangedHandler::addResultCurveFromSelectionItem( const RiuGeoMechSelectionItem* geomSelectionItem ) const
{
RimGeoMechResultDefinition* geomResDef = geomSelectionItem->m_resultDefinition;
@ -271,40 +277,40 @@ void RiuSelectionChangedHandler::addCurveFromSelectionItem( const RiuGeoMechSele
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuSelectionChangedHandler::addCurveFromSelectionItem( const Riu2dIntersectionSelectionItem* selectionItem ) const
void RiuSelectionChangedHandler::addResultCurveFromSelectionItem( const Riu2dIntersectionSelectionItem* selectionItem ) const
{
if ( selectionItem->eclipseSelectionItem() )
{
addCurveFromSelectionItem( selectionItem->eclipseSelectionItem() );
addResultCurveFromSelectionItem( selectionItem->eclipseSelectionItem() );
}
else if ( selectionItem->geoMechSelectionItem() )
{
addCurveFromSelectionItem( selectionItem->geoMechSelectionItem() );
addResultCurveFromSelectionItem( selectionItem->geoMechSelectionItem() );
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuSelectionChangedHandler::addCurveFromSelectionItem( const RiuSelectionItem* itemAdded ) const
void RiuSelectionChangedHandler::addResultCurveFromSelectionItem( const RiuSelectionItem* itemAdded ) const
{
if ( itemAdded->type() == RiuSelectionItem::ECLIPSE_SELECTION_OBJECT )
{
const RiuEclipseSelectionItem* eclipseSelectionItem = static_cast<const RiuEclipseSelectionItem*>( itemAdded );
addCurveFromSelectionItem( eclipseSelectionItem );
addResultCurveFromSelectionItem( eclipseSelectionItem );
}
else if ( itemAdded->type() == RiuSelectionItem::GEOMECH_SELECTION_OBJECT )
{
const RiuGeoMechSelectionItem* geomSelectionItem = static_cast<const RiuGeoMechSelectionItem*>( itemAdded );
addCurveFromSelectionItem( geomSelectionItem );
addResultCurveFromSelectionItem( geomSelectionItem );
}
else if ( itemAdded->type() == RiuSelectionItem::INTERSECTION_SELECTION_OBJECT )
{
const Riu2dIntersectionSelectionItem* _2dSelectionItem = static_cast<const Riu2dIntersectionSelectionItem*>( itemAdded );
addCurveFromSelectionItem( _2dSelectionItem );
addResultCurveFromSelectionItem( _2dSelectionItem );
}
}
@ -406,3 +412,56 @@ void RiuSelectionChangedHandler::updateResultInfo( const RiuSelectionItem* itemA
mainWnd->statusBar()->showMessage( pickInfo );
mainWnd->setResultInfo( resultInfo );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuSelectionChangedHandler::addDepthCurveFromSelectionItem( const RiuSelectionItem* itemAdded ) const
{
if ( itemAdded->type() != RiuSelectionItem::ECLIPSE_SELECTION_OBJECT ) return;
const RiuEclipseSelectionItem* eclipseSelectionItem = static_cast<const RiuEclipseSelectionItem*>( itemAdded );
if ( eclipseSelectionItem == nullptr ) return;
int currentTimeStep = eclipseSelectionItem->m_view->currentTimeStep();
RimEclipseResultDefinition* eclResDef = eclipseSelectionItem->m_resultDefinition;
if ( !eclResDef ) return;
if ( eclResDef->isFlowDiagOrInjectionFlooding() && eclResDef->resultVariable() != RIG_NUM_FLOODED_PV )
{
// NB! Do not read out data for flow results, as this can be a time consuming operation
return;
}
else if ( eclResDef->hasResult() && !RiaResultNames::isPerCellFaceResult( eclResDef->resultVariable() ) && eclResDef->eclipseCase() &&
eclResDef->eclipseCase()->eclipseCaseData() )
{
QString curveName = eclResDef->resultVariableUiShortName();
curveName += ", ";
curveName += RigDepthResultAccessor::geometrySelectionText( eclResDef->eclipseCase()->eclipseCaseData(),
eclipseSelectionItem->m_gridIndex,
eclipseSelectionItem->m_gridLocalCellIndex );
std::vector<double> resultValues = RigDepthResultAccessor::resultValues( eclResDef->eclipseCase()->eclipseCaseData(),
eclResDef,
eclipseSelectionItem->m_gridIndex,
eclipseSelectionItem->m_gridLocalCellIndex,
currentTimeStep );
std::vector<int> kValues =
RigDepthResultAccessor::kValues( eclResDef->eclipseCase()->eclipseCaseData(), eclipseSelectionItem->m_gridIndex );
std::vector<double> depthValues = RigDepthResultAccessor::depthValues( eclResDef->eclipseCase()->eclipseCaseData(),
eclipseSelectionItem->m_gridLocalCellIndex,
eclipseSelectionItem->m_gridIndex );
CVF_ASSERT( kValues.size() == resultValues.size() );
RiuMainWindow::instance()->depthPlot()->addCurve( eclResDef->eclipseCase(),
curveName,
eclipseSelectionItem->m_color,
kValues,
depthValues,
resultValues );
}
}

View File

@ -38,10 +38,12 @@ public:
void handleSetSelectedItem( const RiuSelectionItem* item ) const;
private:
void addCurveFromSelectionItem( const RiuSelectionItem* itemAdded ) const;
void addCurveFromSelectionItem( const RiuEclipseSelectionItem* selectionItem ) const;
void addCurveFromSelectionItem( const RiuGeoMechSelectionItem* selectionItem ) const;
void addCurveFromSelectionItem( const Riu2dIntersectionSelectionItem* selectionItem ) const;
void addResultCurveFromSelectionItem( const RiuSelectionItem* itemAdded ) const;
void addResultCurveFromSelectionItem( const RiuEclipseSelectionItem* selectionItem ) const;
void addResultCurveFromSelectionItem( const RiuGeoMechSelectionItem* selectionItem ) const;
void addResultCurveFromSelectionItem( const Riu2dIntersectionSelectionItem* selectionItem ) const;
void addDepthCurveFromSelectionItem( const RiuSelectionItem* itemAdded ) const;
void scheduleUpdateForAllVisibleViews() const;
void updateResultInfo( const RiuSelectionItem* itemAdded ) const;