Adjustments for release

* Make sure text for multiple wells in same grid cell is displayed correctly
* Improve selection of result in Advanced Snapshot Export
* Restore the main window that was on top when project was saved
* Trim string to make sure '/' is exported with no space in front
* #9872 RFT-plot: Make colors stable for curves in RFT plots
* Set version to RC_02
This commit is contained in:
Magne Sjaastad
2023-03-09 08:54:28 +01:00
committed by GitHub
parent 1d00b38638
commit 527743a845
12 changed files with 107 additions and 33 deletions

View File

@@ -1183,7 +1183,7 @@ void RiaGuiApplication::onFileSuccessfullyLoaded( const QString& fileName, RiaDe
auto plotWindow = getOrCreateAndShowMainPlotWindow(); auto plotWindow = getOrCreateAndShowMainPlotWindow();
plotWindow->raise(); plotWindow->raise();
} }
else else if ( fileType != RiaDefines::ImportFileType::RESINSIGHT_PROJECT_FILE )
{ {
auto mainWindow = getOrCreateAndShowMainWindow(); auto mainWindow = getOrCreateAndShowMainWindow();
mainWindow->raise(); mainWindow->raise();
@@ -1271,6 +1271,12 @@ void RiaGuiApplication::onProjectOpened()
// Make sure to process events before this function to avoid strange Qt crash // Make sure to process events before this function to avoid strange Qt crash
RiuPlotMainWindowTools::refreshToolbars(); RiuPlotMainWindowTools::refreshToolbars();
if ( m_project->showPlotWindow() && m_project->showPlotWindowOnTop() )
{
m_mainPlotWindow->raise();
m_mainPlotWindow->activateWindow();
}
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -57,6 +57,14 @@ const QDateTime& RiaRftPltCurveDefinition::timeStep() const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool RiaRftPltCurveDefinition::operator<( const RiaRftPltCurveDefinition& other ) const bool RiaRftPltCurveDefinition::operator<( const RiaRftPltCurveDefinition& other ) const
{ {
if ( m_curveAddress.ensemble() != other.m_curveAddress.ensemble() )
{
// Sort by ensemble first, to make sure the ensemble curves are created and plotted before the single curves
if ( m_curveAddress.ensemble() ) return true;
return false;
}
if ( m_curveAddress == other.m_curveAddress ) if ( m_curveAddress == other.m_curveAddress )
{ {
if ( m_wellName == other.m_wellName ) if ( m_wellName == other.m_wellName )

View File

@@ -332,8 +332,21 @@ void RifTextDataTableFormatter::tableCompleted()
{ {
outputBuffer(); outputBuffer();
// Output an "empty" line after a finished table if ( m_tableRowPrependText.trimmed().isEmpty() )
m_out << m_tableRowPrependText << m_tableRowAppendText << "\n"; {
// When exporting to Eclipse, make sure that the '/' character is written at the start of the line with no space in front. Some
// applications are not able to detect the '/' if space is in front
QString line = m_tableRowPrependText + m_tableRowAppendText;
line = line.trimmed();
m_out << line << "\n";
}
else
{
// Output an "empty" line after a finished table
m_out << m_tableRowPrependText << m_tableRowAppendText << "\n";
}
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -1282,8 +1282,18 @@ cvf::Color3f RimWellRftPlot::findCurveColor( RimWellLogCurve* curve )
} }
else else
{ {
RifDataSourceForRftPlt sourceAddress( curveDef.address().ensemble() ); if ( curveDef.address().ensemble() )
curveColor = m_dataSourceColors[sourceAddress]; {
// If we have an ensemble, we need to use the ensemble address to find one single color for all curves in the ensemble. If
// we also include the summary case, each curve will be assigned a separate color.
RifDataSourceForRftPlt dataSource( curveDef.address().ensemble() );
curveColor = m_dataSourceColors[dataSource];
}
else
{
curveColor = m_dataSourceColors[curveDef.address()];
}
} }
if ( m_showStatisticsCurves ) if ( m_showStatisticsCurves )
@@ -1308,9 +1318,6 @@ cvf::Color3f RimWellRftPlot::findCurveColor( RimWellLogCurve* curve )
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimWellRftPlot::defineCurveColorsAndSymbols( const std::set<RiaRftPltCurveDefinition>& allCurveDefs ) void RimWellRftPlot::defineCurveColorsAndSymbols( const std::set<RiaRftPltCurveDefinition>& allCurveDefs )
{ {
m_dataSourceColors.clear();
m_timeStepSymbols.clear();
// Clear all ensemble legends // Clear all ensemble legends
RiuQwtPlotWidget* viewer = nullptr; RiuQwtPlotWidget* viewer = nullptr;
RimWellLogTrack* track = dynamic_cast<RimWellLogTrack*>( plotByIndex( 0 ) ); RimWellLogTrack* track = dynamic_cast<RimWellLogTrack*>( plotByIndex( 0 ) );
@@ -1368,22 +1375,21 @@ void RimWellRftPlot::defineCurveColorsAndSymbols( const std::set<RiaRftPltCurveD
auto colorTableIndex = m_dataSourceColors.size(); auto colorTableIndex = m_dataSourceColors.size();
auto symbolTableIndex = m_timeStepSymbols.size(); auto symbolTableIndex = m_timeStepSymbols.size();
const RifDataSourceForRftPlt& address = curveDefToAdd.address(); RifDataSourceForRftPlt address = curveDefToAdd.address();
RifDataSourceForRftPlt colorAddress = address; if ( address.ensemble() )
if ( address.sourceType() == RifDataSourceForRftPlt::SourceType::SUMMARY_RFT )
{ {
colorAddress = RifDataSourceForRftPlt( address.ensemble() ); // Strip the summary case from the address, so that all curves in the ensemble will get the same color
address = RifDataSourceForRftPlt( address.ensemble() );
} }
if ( !m_dataSourceColors.count( colorAddress ) ) if ( !m_dataSourceColors.contains( address ) )
{ {
colorTableIndex = colorTableIndex % colorTable.size(); colorTableIndex = colorTableIndex % colorTable.size();
m_dataSourceColors[colorAddress] = colorTable[colorTableIndex]; m_dataSourceColors[address] = colorTable[colorTableIndex];
} }
if ( address.sourceType() != RifDataSourceForRftPlt::SourceType::ENSEMBLE_RFT )
{ {
if ( !m_timeStepSymbols.count( curveDefToAdd.timeStep() ) ) if ( !m_timeStepSymbols.contains( curveDefToAdd.timeStep() ) )
{ {
symbolTableIndex = symbolTableIndex % symbolTable.size(); symbolTableIndex = symbolTableIndex % symbolTable.size();
m_timeStepSymbols[curveDefToAdd.timeStep()] = symbolTable[symbolTableIndex]; m_timeStepSymbols[curveDefToAdd.timeStep()] = symbolTable[symbolTableIndex];

View File

@@ -32,6 +32,7 @@
#include "RimTools.h" #include "RimTools.h"
#include "cafPdmPointer.h" #include "cafPdmPointer.h"
#include "cafPdmUiComboBoxEditor.h"
CAF_PDM_SOURCE_INIT( RimAdvancedSnapshotExportDefinition, "MultiSnapshotDefinition" ); CAF_PDM_SOURCE_INIT( RimAdvancedSnapshotExportDefinition, "MultiSnapshotDefinition" );
@@ -48,7 +49,7 @@ RimAdvancedSnapshotExportDefinition::RimAdvancedSnapshotExportDefinition()
CAF_PDM_InitFieldNoDefault( &view, "View", "View" ); CAF_PDM_InitFieldNoDefault( &view, "View", "View" );
CAF_PDM_InitFieldNoDefault( &eclipseResultType, "EclipseResultType", "Result Type" ); CAF_PDM_InitFieldNoDefault( &eclipseResultType, "EclipseResultType", "Result Type" );
CAF_PDM_InitFieldNoDefault( &selectedEclipseResults, "SelectedEclipseResults", "Properties" ); CAF_PDM_InitFieldNoDefault( &m_selectedEclipseResult, "SelectedEclipseResults", "Properties" );
CAF_PDM_InitField( &timeStepStart, "TimeStepStart", 0, "Start Time" ); CAF_PDM_InitField( &timeStepStart, "TimeStepStart", 0, "Start Time" );
CAF_PDM_InitField( &timeStepEnd, "TimeStepEnd", 0, "End Time" ); CAF_PDM_InitField( &timeStepEnd, "TimeStepEnd", 0, "End Time" );
@@ -71,6 +72,25 @@ RimAdvancedSnapshotExportDefinition::~RimAdvancedSnapshotExportDefinition()
{ {
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimAdvancedSnapshotExportDefinition::setSelectedEclipseResults( const QString& result )
{
m_selectedEclipseResult = result;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<QString> RimAdvancedSnapshotExportDefinition::selectedEclipseResults() const
{
// The interface here can return a vector of selected results. The user interface in the table is not working well for multi-select of
// strings, so we only allow one result to be selected at a time.
return { m_selectedEclipseResult() };
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -108,9 +128,9 @@ QList<caf::PdmOptionItemInfo> RimAdvancedSnapshotExportDefinition::calculateValu
options.push_back( caf::PdmOptionItemInfo( caf::AppEnum<RiaDefines::ResultCatType>( RiaDefines::ResultCatType::STATIC_NATIVE ).uiText(), options.push_back( caf::PdmOptionItemInfo( caf::AppEnum<RiaDefines::ResultCatType>( RiaDefines::ResultCatType::STATIC_NATIVE ).uiText(),
RiaDefines::ResultCatType::STATIC_NATIVE ) ); RiaDefines::ResultCatType::STATIC_NATIVE ) );
} }
else if ( fieldNeedingOptions == &selectedEclipseResults ) else if ( fieldNeedingOptions == &m_selectedEclipseResult )
{ {
RimEclipseView* rimEclipseView = dynamic_cast<RimEclipseView*>( view() ); auto* rimEclipseView = dynamic_cast<RimEclipseView*>( view() );
if ( rimEclipseView ) if ( rimEclipseView )
{ {
QStringList varList; QStringList varList;
@@ -161,7 +181,7 @@ void RimAdvancedSnapshotExportDefinition::fieldChangedByUi( const caf::PdmFieldH
{ {
if ( changedField == &eclipseResultType ) if ( changedField == &eclipseResultType )
{ {
selectedEclipseResults.v().clear(); m_selectedEclipseResult.v().clear();
} }
else if ( changedField == &sliceDirection ) else if ( changedField == &sliceDirection )
{ {
@@ -242,7 +262,7 @@ void RimAdvancedSnapshotExportDefinition::defineUiOrdering( QString uiConfigName
{ {
view.uiCapability()->setUiReadOnly( true ); view.uiCapability()->setUiReadOnly( true );
eclipseResultType.uiCapability()->setUiReadOnly( true ); eclipseResultType.uiCapability()->setUiReadOnly( true );
selectedEclipseResults.uiCapability()->setUiReadOnly( true ); m_selectedEclipseResult.uiCapability()->setUiReadOnly( true );
timeStepStart.uiCapability()->setUiReadOnly( true ); timeStepStart.uiCapability()->setUiReadOnly( true );
timeStepEnd.uiCapability()->setUiReadOnly( true ); timeStepEnd.uiCapability()->setUiReadOnly( true );
sliceDirection.uiCapability()->setUiReadOnly( true ); sliceDirection.uiCapability()->setUiReadOnly( true );
@@ -257,7 +277,7 @@ void RimAdvancedSnapshotExportDefinition::defineUiOrdering( QString uiConfigName
if ( !view() ) if ( !view() )
{ {
eclipseResultType.uiCapability()->setUiReadOnly( true ); eclipseResultType.uiCapability()->setUiReadOnly( true );
selectedEclipseResults.uiCapability()->setUiReadOnly( true ); m_selectedEclipseResult.uiCapability()->setUiReadOnly( true );
timeStepStart.uiCapability()->setUiReadOnly( true ); timeStepStart.uiCapability()->setUiReadOnly( true );
timeStepEnd.uiCapability()->setUiReadOnly( true ); timeStepEnd.uiCapability()->setUiReadOnly( true );
sliceDirection.uiCapability()->setUiReadOnly( true ); sliceDirection.uiCapability()->setUiReadOnly( true );
@@ -268,7 +288,7 @@ void RimAdvancedSnapshotExportDefinition::defineUiOrdering( QString uiConfigName
else else
{ {
eclipseResultType.uiCapability()->setUiReadOnly( false ); eclipseResultType.uiCapability()->setUiReadOnly( false );
selectedEclipseResults.uiCapability()->setUiReadOnly( false ); m_selectedEclipseResult.uiCapability()->setUiReadOnly( false );
timeStepStart.uiCapability()->setUiReadOnly( false ); timeStepStart.uiCapability()->setUiReadOnly( false );
timeStepEnd.uiCapability()->setUiReadOnly( false ); timeStepEnd.uiCapability()->setUiReadOnly( false );
sliceDirection.uiCapability()->setUiReadOnly( false ); sliceDirection.uiCapability()->setUiReadOnly( false );

View File

@@ -41,12 +41,14 @@ public:
RimAdvancedSnapshotExportDefinition(); RimAdvancedSnapshotExportDefinition();
~RimAdvancedSnapshotExportDefinition() override; ~RimAdvancedSnapshotExportDefinition() override;
void setSelectedEclipseResults( const QString& result );
std::vector<QString> selectedEclipseResults() const;
caf::PdmField<bool> isActive; caf::PdmField<bool> isActive;
caf::PdmPtrField<Rim3dView*> view; caf::PdmPtrField<Rim3dView*> view;
caf::PdmField<caf::AppEnum<RiaDefines::ResultCatType>> eclipseResultType; caf::PdmField<caf::AppEnum<RiaDefines::ResultCatType>> eclipseResultType;
caf::PdmField<std::vector<QString>> selectedEclipseResults;
caf::PdmField<int> timeStepStart; caf::PdmField<int> timeStepStart;
caf::PdmField<int> timeStepEnd; caf::PdmField<int> timeStepEnd;
@@ -68,4 +70,7 @@ private:
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
QList<caf::PdmOptionItemInfo> toOptionList( const QStringList& varList ); QList<caf::PdmOptionItemInfo> toOptionList( const QStringList& varList );
private:
caf::PdmField<QString> m_selectedEclipseResult;
}; };

View File

@@ -190,6 +190,9 @@ RimProject::RimProject( void )
CAF_PDM_InitField( &m_showPlotWindow, "showPlotWindow", false, "Show Plot Window" ); CAF_PDM_InitField( &m_showPlotWindow, "showPlotWindow", false, "Show Plot Window" );
m_showPlotWindow.uiCapability()->setUiHidden( true ); m_showPlotWindow.uiCapability()->setUiHidden( true );
CAF_PDM_InitField( &m_showPlotWindowOnTopOf3DWindow, "showPlotWindowOnTopOf3DWindow", false, "Show Plot On Top" );
m_showPlotWindowOnTopOf3DWindow.uiCapability()->setUiHidden( true );
CAF_PDM_InitField( &m_subWindowsTiled3DWindow_OBSOLETE, "tiled3DWindow", false, "Tile 3D Window" ); CAF_PDM_InitField( &m_subWindowsTiled3DWindow_OBSOLETE, "tiled3DWindow", false, "Tile 3D Window" );
m_subWindowsTiled3DWindow_OBSOLETE.uiCapability()->setUiHidden( true ); m_subWindowsTiled3DWindow_OBSOLETE.uiCapability()->setUiHidden( true );
@@ -368,6 +371,12 @@ void RimProject::setupBeforeSave()
{ {
m_show3DWindow = guiApp->isMain3dWindowVisible(); m_show3DWindow = guiApp->isMain3dWindowVisible();
m_showPlotWindow = guiApp->isMainPlotWindowVisible(); m_showPlotWindow = guiApp->isMainPlotWindowVisible();
if ( m_showPlotWindow )
{
auto plotWindow = RiuPlotMainWindow::instance();
m_showPlotWindowOnTopOf3DWindow = plotWindow->isTopLevel();
}
} }
} }
@@ -968,6 +977,14 @@ bool RimProject::showPlotWindow() const
return m_showPlotWindow; return m_showPlotWindow;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimProject::showPlotWindowOnTop() const
{
return m_showPlotWindowOnTopOf3DWindow();
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -155,6 +155,7 @@ public:
bool show3DWindow() const; bool show3DWindow() const;
bool showPlotWindow() const; bool showPlotWindow() const;
bool showPlotWindowOnTop() const;
RiaDefines::WindowTileMode subWindowsTileMode3DWindow() const; RiaDefines::WindowTileMode subWindowsTileMode3DWindow() const;
RiaDefines::WindowTileMode subWindowsTileModePlotWindow() const; RiaDefines::WindowTileMode subWindowsTileModePlotWindow() const;
@@ -219,6 +220,7 @@ private:
caf::PdmField<bool> m_show3DWindow; caf::PdmField<bool> m_show3DWindow;
caf::PdmField<bool> m_showPlotWindow; caf::PdmField<bool> m_showPlotWindow;
caf::PdmField<bool> m_showPlotWindowOnTopOf3DWindow;
caf::PdmField<bool> m_subWindowsTiled3DWindow_OBSOLETE; caf::PdmField<bool> m_subWindowsTiled3DWindow_OBSOLETE;
caf::PdmField<bool> m_subWindowsTiledPlotWindow_OBSOLETE; caf::PdmField<bool> m_subWindowsTiledPlotWindow_OBSOLETE;

View File

@@ -281,7 +281,7 @@ TEST( RifTextDataTableFormatter, TwoHeaderRowsWithDifferentColSpan )
WELSPECS WELSPECS
OP-01 PLATFORM 45 99 1* OIL 0.0 STD STOP YES 0 SEG 0 / OP-01 PLATFORM 45 99 1* OIL 0.0 STD STOP YES 0 SEG 0 /
OP-02ST PLATFORM 60 91 1* OIL 0.0 STD STOP YES 0 SEG 0 / OP-02ST PLATFORM 60 91 1* OIL 0.0 STD STOP YES 0 SEG 0 /
/ /
)"; )";
EXPECT_STREQ( textForCompare.toStdString().data(), tableText.toStdString().data() ); EXPECT_STREQ( textForCompare.toStdString().data(), tableText.toStdString().data() );
@@ -336,7 +336,7 @@ WELSPECS
-- [cm2] -- [cm2]
OP-01 PLATFORM 45 99 1* OIL 0.0 STD STOP YES 0 SEG 0 / OP-01 PLATFORM 45 99 1* OIL 0.0 STD STOP YES 0 SEG 0 /
OP-02ST PLATFORM 60 91 1* OIL 0.0 STD STOP YES 0 SEG 0 / OP-02ST PLATFORM 60 91 1* OIL 0.0 STD STOP YES 0 SEG 0 /
/ /
)"; )";
EXPECT_STREQ( textForCompare.toStdString().data(), tableText.toStdString().data() ); EXPECT_STREQ( textForCompare.toStdString().data(), tableText.toStdString().data() );

View File

@@ -142,7 +142,7 @@ void RiuAdvancedSnapshotExportWidget::addSnapshotItemFromActiveView()
if ( eclipseView ) if ( eclipseView )
{ {
multiSnapshot->eclipseResultType = eclipseView->cellResult()->resultType(); multiSnapshot->eclipseResultType = eclipseView->cellResult()->resultType();
multiSnapshot->selectedEclipseResults.v().push_back( eclipseView->cellResult()->resultVariable() ); multiSnapshot->setSelectedEclipseResults( eclipseView->cellResult()->resultVariable() );
} }
multiSnapshot->timeStepStart = activeView->currentTimeStep(); multiSnapshot->timeStepStart = activeView->currentTimeStep();
multiSnapshot->timeStepEnd = activeView->currentTimeStep(); multiSnapshot->timeStepEnd = activeView->currentTimeStep();
@@ -198,10 +198,7 @@ QString RiuAdvancedSnapshotExportWidget::exportFolder() const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RiuAdvancedSnapshotExportWidget::customMenuRequested( QPoint pos ) void RiuAdvancedSnapshotExportWidget::customMenuRequested( QPoint pos )
{ {
caf::CmdFeatureManager* commandManager = caf::CmdFeatureManager::instance();
QMenu menu; QMenu menu;
menu.addAction( commandManager->action( "PdmListField_DeleteItem", "Delete row" ) );
QAction* newRowAction = new QAction( "New row", this ); QAction* newRowAction = new QAction( "New row", this );
connect( newRowAction, SIGNAL( triggered() ), SLOT( addSnapshotItem() ) ); connect( newRowAction, SIGNAL( triggered() ), SLOT( addSnapshotItem() ) );

View File

@@ -1177,7 +1177,7 @@ QString RiuResultTextBuilder::wellResultText()
const int outletSegmentId = wellResultCell->outletSegmentId(); const int outletSegmentId = wellResultCell->outletSegmentId();
text += QString( "-- Well-cell connection info --\n Well Name: %1\n Branch Id: %2\n Segment " text += QString( "-- Well-cell connection info --\n Well Name: %1\n Branch Id: %2\n Segment "
"Id: %3\n Outlet Branch Id: %4\n Outlet Segment Id: %5" ) "Id: %3\n Outlet Branch Id: %4\n Outlet Segment Id: %5\n" )
.arg( singleWellResultData->m_wellName ) .arg( singleWellResultData->m_wellName )
.arg( branchId ) .arg( branchId )
.arg( segmentId ) .arg( segmentId )

View File

@@ -5,7 +5,7 @@ set(RESINSIGHT_PATCH_VERSION 1)
# Opional text with no restrictions # Opional text with no restrictions
#set(RESINSIGHT_VERSION_TEXT "-dev") #set(RESINSIGHT_VERSION_TEXT "-dev")
set(RESINSIGHT_VERSION_TEXT "-RC_01") set(RESINSIGHT_VERSION_TEXT "-RC_02")
# Optional text # Optional text
# Must be unique and increasing within one combination of major/minor/patch version # Must be unique and increasing within one combination of major/minor/patch version