Prepare for release

Always create plots using Qwt
Always create plot for command "New Summary Plot"
#9103 : Fix missing updates in multiselect field update operation
Add Open Summary Plot Editor
Trigger missing load of data
Enable data source display for first realization of an ensemble
Always show legend text
Set version to 2022.06.0-RC-02
This commit is contained in:
Magne Sjaastad
2022-06-30 18:23:45 +02:00
parent 3d53c9de1e
commit af77fdad81
17 changed files with 306 additions and 28 deletions

View File

@@ -1,4 +1,5 @@
set(SOURCE_GROUP_HEADER_FILES
${CMAKE_CURRENT_LIST_DIR}/RicOpenSummaryPlotEditorFeature.h
${CMAKE_CURRENT_LIST_DIR}/RicNewDefaultSummaryPlotFeature.h
${CMAKE_CURRENT_LIST_DIR}/RicNewSummaryCrossPlotFeature.h
${CMAKE_CURRENT_LIST_DIR}/RicNewSummaryCurveFeature.h
@@ -46,6 +47,7 @@ set(SOURCE_GROUP_HEADER_FILES
)
set(SOURCE_GROUP_SOURCE_FILES
${CMAKE_CURRENT_LIST_DIR}/RicOpenSummaryPlotEditorFeature.cpp
${CMAKE_CURRENT_LIST_DIR}/RicNewDefaultSummaryPlotFeature.cpp
${CMAKE_CURRENT_LIST_DIR}/RicNewSummaryCrossPlotFeature.cpp
${CMAKE_CURRENT_LIST_DIR}/RicNewSummaryCurveFeature.cpp

View File

@@ -0,0 +1,139 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2022 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 "RicOpenSummaryPlotEditorFeature.h"
#include "RiaSummaryTools.h"
#include "RicEditSummaryPlotFeature.h"
#include "RicNewSummaryEnsembleCurveSetFeature.h"
#include "RicSummaryPlotEditorDialog.h"
#include "RicSummaryPlotEditorUi.h"
#include "RicSummaryPlotFeatureImpl.h"
#include "RimCustomObjectiveFunctionCollection.h"
#include "RimEnsembleCurveFilter.h"
#include "RimEnsembleCurveFilterCollection.h"
#include "RimProject.h"
#include "RimRegularLegendConfig.h"
#include "RimSummaryCase.h"
#include "RimSummaryCaseCollection.h"
#include "RimSummaryCaseMainCollection.h"
#include "RimSummaryPlot.h"
#include "RiuPlotMainWindow.h"
#include "cafSelectionManagerTools.h"
#include "cvfAssert.h"
#include <QAction>
CAF_CMD_SOURCE_INIT( RicOpenSummaryPlotEditorFeature, "RicOpenSummaryPlotEditorFeature" );
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RicOpenSummaryPlotEditorFeature::isCommandEnabled()
{
RimSummaryMultiPlot* multiPlot = nullptr;
RimCustomObjectiveFunctionCollection* customObjFuncCollection = nullptr;
caf::PdmObject* selObj = dynamic_cast<caf::PdmObject*>( caf::SelectionManager::instance()->selectedItem() );
if ( selObj )
{
multiPlot = RiaSummaryTools::parentSummaryMultiPlot( selObj );
selObj->firstAncestorOrThisOfType( customObjFuncCollection );
}
auto ensembleFilter = dynamic_cast<RimEnsembleCurveFilter*>( selObj );
auto ensembleFilterColl = dynamic_cast<RimEnsembleCurveFilterCollection*>( selObj );
auto legendConfig = dynamic_cast<RimRegularLegendConfig*>( selObj );
if ( ensembleFilter || ensembleFilterColl || legendConfig || customObjFuncCollection ) return false;
if ( multiPlot ) return true;
return true;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicOpenSummaryPlotEditorFeature::onActionTriggered( bool isChecked )
{
RimProject* project = RimProject::current();
CVF_ASSERT( project );
std::vector<RimSummaryCase*> selectedCases = caf::selectedObjectsByType<RimSummaryCase*>();
std::vector<RimSummaryCaseCollection*> selectedGroups = caf::selectedObjectsByType<RimSummaryCaseCollection*>();
std::vector<caf::PdmObject*> sourcesToSelect( selectedCases.begin(), selectedCases.end() );
if ( sourcesToSelect.empty() && selectedGroups.empty() )
{
const auto allSingleCases = project->firstSummaryCaseMainCollection()->topLevelSummaryCases();
const auto allGroups = project->summaryGroups();
std::vector<RimSummaryCaseCollection*> allEnsembles;
for ( const auto group : allGroups )
if ( group->isEnsemble() ) allEnsembles.push_back( group );
if ( !allSingleCases.empty() )
{
sourcesToSelect.push_back( allSingleCases.front() );
}
else if ( !allEnsembles.empty() )
{
sourcesToSelect.push_back( allEnsembles.front() );
}
}
// Append grouped cases
for ( auto group : selectedGroups )
{
if ( group->isEnsemble() )
{
sourcesToSelect.push_back( group );
}
else
{
auto groupCases = group->allSummaryCases();
sourcesToSelect.insert( sourcesToSelect.end(), groupCases.begin(), groupCases.end() );
}
}
auto dialog = RicEditSummaryPlotFeature::curveCreatorDialog( true );
if ( !dialog->isVisible() )
{
dialog->show();
}
else
{
dialog->raise();
}
dialog->updateFromDefaultCases( sourcesToSelect );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicOpenSummaryPlotEditorFeature::setupActionLook( QAction* actionToSetup )
{
actionToSetup->setText( "Open Summary Plot Editor" );
actionToSetup->setIcon( QIcon( ":/SummaryPlotLight16x16.png" ) );
}

View File

@@ -0,0 +1,36 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2016- Statoil 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 "RicfCommandObject.h"
#include "cafCmdFeature.h"
//==================================================================================================
///
//==================================================================================================
class RicOpenSummaryPlotEditorFeature : public caf::CmdFeature
{
CAF_CMD_HEADER_INIT;
protected:
bool isCommandEnabled() override;
void onActionTriggered( bool isChecked ) override;
void setupActionLook( QAction* actionToSetup ) override;
};

View File

@@ -50,6 +50,8 @@
#include "RiuSummaryVectorSelectionUi.h"
#include "RiuTools.h"
#include "PlotBuilderCommands/RicSummaryPlotBuilder.h"
#include "cafPdmUiComboBoxEditor.h"
#include "cafPdmUiPushButtonEditor.h"
@@ -263,7 +265,7 @@ QList<caf::PdmOptionItemInfo> RicSummaryPlotEditorUi::calculateValueOptions( con
{
QList<caf::PdmOptionItemInfo> options;
if ( m_targetPlot && ( fieldNeedingOptions == &m_targetPlot ) )
if ( fieldNeedingOptions == &m_targetPlot )
{
// Create New Plot item
QString displayName = "( New Plot )";
@@ -845,6 +847,12 @@ void RicSummaryPlotEditorUi::createNewPlot()
RimSummaryPlot* newSummaryPlot = nullptr;
if ( !m_plotContainer )
{
std::vector<RimSummaryPlot*> plots;
m_plotContainer = RicSummaryPlotBuilder::createAndAppendSummaryMultiPlot( plots );
}
if ( m_plotContainer )
{
newSummaryPlot = new RimSummaryPlot();