mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2898 Ensemble curves. Add vector selection button and dialog
This commit is contained in:
parent
ff9fbe95b8
commit
450d1177f6
@ -35,7 +35,9 @@
|
||||
#include "RimSummaryFilter.h"
|
||||
#include "RimSummaryPlot.h"
|
||||
|
||||
#include "RiuPlotMainWindow.h"
|
||||
#include "RiuSummaryQwtPlot.h"
|
||||
#include "RiuSummaryCurveDefSelectionDialog.h"
|
||||
|
||||
#include "cafPdmUiTreeOrdering.h"
|
||||
#include "cafPdmUiListEditor.h"
|
||||
@ -112,8 +114,6 @@ RimEnsembleCurveSet::RimEnsembleCurveSet()
|
||||
CAF_PDM_InitFieldNoDefault(&m_yPushButtonSelectSummaryAddress, "SelectAddress", "", "", "", "");
|
||||
caf::PdmUiPushButtonEditor::configureEditorForField(&m_yPushButtonSelectSummaryAddress);
|
||||
m_yPushButtonSelectSummaryAddress = false;
|
||||
m_yPushButtonSelectSummaryAddress.uiCapability()->setUiReadOnly(true);
|
||||
m_yPushButtonSelectSummaryAddress.uiCapability()->setUiHidden(true);
|
||||
|
||||
m_yValuesCurveVariable = new RimSummaryAddress;
|
||||
|
||||
@ -418,6 +418,37 @@ void RimEnsembleCurveSet::fieldChangedByUi(const caf::PdmFieldHandle* changedFie
|
||||
{
|
||||
m_userDefinedName = createAutoName();
|
||||
}
|
||||
else if (changedField == &m_yPushButtonSelectSummaryAddress)
|
||||
{
|
||||
RiuSummaryCurveDefSelectionDialog dlg(nullptr);
|
||||
RimSummaryCaseCollection* candidateEnsemble = m_yValuesSummaryGroup();
|
||||
RifEclipseSummaryAddress candicateAddress = m_yValuesCurveVariable->address();
|
||||
|
||||
dlg.hideSummaryCases();
|
||||
dlg.setEnsembleAndAddress(candidateEnsemble, candicateAddress);
|
||||
|
||||
if (dlg.exec() == QDialog::Accepted)
|
||||
{
|
||||
auto curveSelection = dlg.curveSelection();
|
||||
if (curveSelection.size() > 0)
|
||||
{
|
||||
m_yValuesSummaryGroup = curveSelection[0].ensemble();
|
||||
m_yValuesCurveVariable->setAddress(curveSelection[0].summaryAddress());
|
||||
|
||||
this->loadDataAndUpdate(true);
|
||||
|
||||
plot->updateAxes();
|
||||
plot->updatePlotTitle();
|
||||
plot->updateConnectedEditors();
|
||||
|
||||
RiuPlotMainWindow* mainPlotWindow = RiaApplication::instance()->mainPlotWindow();
|
||||
mainPlotWindow->updateSummaryPlotToolBar();
|
||||
}
|
||||
}
|
||||
|
||||
m_yPushButtonSelectSummaryAddress = false;
|
||||
}
|
||||
|
||||
|
||||
if (changedField == &m_isUsingAutoName ||
|
||||
changedField == &m_userDefinedName ||
|
||||
|
@ -697,6 +697,7 @@ void RimSummaryCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
||||
candicateAddress = m_xValuesCurveVariable->address();
|
||||
}
|
||||
|
||||
dlg.hideEnsembles();
|
||||
dlg.setCaseAndAddress(candidateCase, candicateAddress);
|
||||
|
||||
if (dlg.exec() == QDialog::Accepted)
|
||||
@ -730,6 +731,7 @@ void RimSummaryCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
||||
candicateAddress = m_yValuesCurveVariable->address();
|
||||
}
|
||||
|
||||
dlg.hideEnsembles();
|
||||
dlg.setCaseAndAddress(candidateCase, candicateAddress);
|
||||
|
||||
if (dlg.exec() == QDialog::Accepted)
|
||||
|
@ -228,6 +228,8 @@ RiuSummaryCurveDefSelection::RiuSummaryCurveDefSelection() : m_identifierFieldsM
|
||||
|
||||
m_currentSummaryCategory.uiCapability()->setUiHidden(true);
|
||||
m_multiSelectionMode = false;
|
||||
m_hideEnsembles = false;
|
||||
m_hideSummaryCases = false;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -308,6 +310,22 @@ void RiuSummaryCurveDefSelection::setMultiSelectionMode(bool multiSelectionMode)
|
||||
m_multiSelectionMode = multiSelectionMode;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuSummaryCurveDefSelection::hideEnsembles(bool hide)
|
||||
{
|
||||
m_hideEnsembles = hide;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuSummaryCurveDefSelection::hideSummaryCases(bool hide)
|
||||
{
|
||||
m_hideSummaryCases = hide;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -458,55 +476,64 @@ QList<caf::PdmOptionItemInfo> RiuSummaryCurveDefSelection::calculateValueOptions
|
||||
RimSummaryCaseMainCollection* sumCaseMainColl = oilField->summaryCaseMainCollection();
|
||||
if (sumCaseMainColl)
|
||||
{
|
||||
// Top level cases
|
||||
for (const auto& sumCase : sumCaseMainColl->topLevelSummaryCases())
|
||||
if (!m_hideSummaryCases)
|
||||
{
|
||||
options.push_back(caf::PdmOptionItemInfo(sumCase->caseName(), sumCase));
|
||||
// Top level cases
|
||||
for (const auto& sumCase : sumCaseMainColl->topLevelSummaryCases())
|
||||
{
|
||||
options.push_back(caf::PdmOptionItemInfo(sumCase->caseName(), sumCase));
|
||||
}
|
||||
}
|
||||
|
||||
// Ensembles
|
||||
bool ensembleHeaderCreated = false;
|
||||
for (const auto& sumCaseColl : sumCaseMainColl->summaryCaseCollections())
|
||||
if (!m_hideEnsembles)
|
||||
{
|
||||
if (!sumCaseColl->isEnsemble()) continue;
|
||||
|
||||
if (!ensembleHeaderCreated)
|
||||
bool ensembleHeaderCreated = false;
|
||||
for (const auto& sumCaseColl : sumCaseMainColl->summaryCaseCollections())
|
||||
{
|
||||
options.push_back(caf::PdmOptionItemInfo::createHeader("Ensembles", true));
|
||||
ensembleHeaderCreated = true;
|
||||
}
|
||||
if (!sumCaseColl->isEnsemble()) continue;
|
||||
|
||||
auto optionItem = caf::PdmOptionItemInfo(sumCaseColl->name(), sumCaseColl);
|
||||
optionItem.setLevel(1);
|
||||
options.push_back(optionItem);
|
||||
}
|
||||
if (!ensembleHeaderCreated)
|
||||
{
|
||||
options.push_back(caf::PdmOptionItemInfo::createHeader("Ensembles", true));
|
||||
ensembleHeaderCreated = true;
|
||||
}
|
||||
|
||||
// Grouped cases
|
||||
for (const auto& sumCaseColl : sumCaseMainColl->summaryCaseCollections())
|
||||
{
|
||||
if (sumCaseColl->isEnsemble()) continue;
|
||||
|
||||
options.push_back(caf::PdmOptionItemInfo::createHeader(sumCaseColl->name(), true));
|
||||
|
||||
for (const auto& sumCase : sumCaseColl->allSummaryCases())
|
||||
{
|
||||
auto optionItem = caf::PdmOptionItemInfo(sumCase->caseName(), sumCase);
|
||||
auto optionItem = caf::PdmOptionItemInfo(sumCaseColl->name(), sumCaseColl);
|
||||
optionItem.setLevel(1);
|
||||
options.push_back(optionItem);
|
||||
}
|
||||
}
|
||||
|
||||
// Observed data
|
||||
auto observedDataColl = oilField->observedDataCollection();
|
||||
if (observedDataColl->allObservedData().size() > 0)
|
||||
if (!m_hideSummaryCases)
|
||||
{
|
||||
options.push_back(caf::PdmOptionItemInfo::createHeader("Observed Data", true));
|
||||
|
||||
for (const auto& obsData : observedDataColl->allObservedData())
|
||||
// Grouped cases
|
||||
for (const auto& sumCaseColl : sumCaseMainColl->summaryCaseCollections())
|
||||
{
|
||||
auto optionItem = caf::PdmOptionItemInfo(obsData->caseName(), obsData);
|
||||
optionItem.setLevel(1);
|
||||
options.push_back(optionItem);
|
||||
if (sumCaseColl->isEnsemble()) continue;
|
||||
|
||||
options.push_back(caf::PdmOptionItemInfo::createHeader(sumCaseColl->name(), true));
|
||||
|
||||
for (const auto& sumCase : sumCaseColl->allSummaryCases())
|
||||
{
|
||||
auto optionItem = caf::PdmOptionItemInfo(sumCase->caseName(), sumCase);
|
||||
optionItem.setLevel(1);
|
||||
options.push_back(optionItem);
|
||||
}
|
||||
}
|
||||
|
||||
// Observed data
|
||||
auto observedDataColl = oilField->observedDataCollection();
|
||||
if (observedDataColl->allObservedData().size() > 0)
|
||||
{
|
||||
options.push_back(caf::PdmOptionItemInfo::createHeader("Observed Data", true));
|
||||
|
||||
for (const auto& obsData : observedDataColl->allObservedData())
|
||||
{
|
||||
auto optionItem = caf::PdmOptionItemInfo(obsData->caseName(), obsData);
|
||||
optionItem.setLevel(1);
|
||||
options.push_back(optionItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -58,6 +58,8 @@ public:
|
||||
void setSelectedCurveDefinitions(const std::vector<RiaSummaryCurveDefinition>& curveDefinitions);
|
||||
std::vector<RiaSummaryCurveDefinition> selectedCurveDefinitions() const;
|
||||
void setMultiSelectionMode(bool multiSelectionMode);
|
||||
void hideEnsembles(bool hide);
|
||||
void hideSummaryCases(bool hide);
|
||||
void setFieldChangedHandler(const std::function<void()>& handlerFunc);
|
||||
|
||||
void setDefaultSelection(const std::vector<RimSummaryCase*>& defaultCases);
|
||||
@ -105,6 +107,9 @@ private:
|
||||
std::map<RifEclipseSummaryAddress::SummaryVarCategory, std::vector<SummaryIdentifierAndField*>> m_identifierFieldsMap;
|
||||
|
||||
bool m_multiSelectionMode;
|
||||
|
||||
bool m_hideEnsembles;
|
||||
bool m_hideSummaryCases;
|
||||
|
||||
std::function<void()> m_toggleChangedHandler;
|
||||
};
|
||||
|
@ -20,6 +20,8 @@
|
||||
|
||||
#include "RiaSummaryCurveDefinition.h"
|
||||
|
||||
#include "RimSummaryCaseCollection.h"
|
||||
|
||||
#include "RiuSummaryCurveDefSelection.h"
|
||||
#include "RiuSummaryCurveDefSelectionEditor.h"
|
||||
#include "RiuTools.h"
|
||||
@ -77,9 +79,28 @@ void RiuSummaryCurveDefSelectionDialog::setCaseAndAddress(RimSummaryCase* summar
|
||||
{
|
||||
if (summaryCase)
|
||||
{
|
||||
std::vector<RiaSummaryCurveDefinition> sumCasePairs;
|
||||
sumCasePairs.push_back(RiaSummaryCurveDefinition(summaryCase, address));
|
||||
summaryAddressSelection()->setSelectedCurveDefinitions(sumCasePairs);
|
||||
std::vector<RiaSummaryCurveDefinition> curveDefs;
|
||||
curveDefs.push_back(RiaSummaryCurveDefinition(summaryCase, address));
|
||||
summaryAddressSelection()->setSelectedCurveDefinitions(curveDefs);
|
||||
}
|
||||
|
||||
summaryAddressSelection()->updateConnectedEditors();
|
||||
updateLabel();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuSummaryCurveDefSelectionDialog::setEnsembleAndAddress(RimSummaryCaseCollection* ensemble, const RifEclipseSummaryAddress& address)
|
||||
{
|
||||
if (ensemble)
|
||||
{
|
||||
std::vector<RiaSummaryCurveDefinition> curveDefs;
|
||||
for (const auto& summaryCase : ensemble->allSummaryCases())
|
||||
{
|
||||
curveDefs.push_back(RiaSummaryCurveDefinition(summaryCase, address, ensemble));
|
||||
}
|
||||
summaryAddressSelection()->setSelectedCurveDefinitions(curveDefs);
|
||||
}
|
||||
|
||||
summaryAddressSelection()->updateConnectedEditors();
|
||||
@ -94,6 +115,22 @@ std::vector<RiaSummaryCurveDefinition> RiuSummaryCurveDefSelectionDialog::curveS
|
||||
return summaryAddressSelection()->selectedCurveDefinitions();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuSummaryCurveDefSelectionDialog::hideEnsembles()
|
||||
{
|
||||
summaryAddressSelection()->hideEnsembles(true);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuSummaryCurveDefSelectionDialog::hideSummaryCases()
|
||||
{
|
||||
summaryAddressSelection()->hideSummaryCases(true);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -40,8 +40,12 @@ public:
|
||||
~RiuSummaryCurveDefSelectionDialog();
|
||||
|
||||
void setCaseAndAddress(RimSummaryCase* summaryCase, const RifEclipseSummaryAddress& address);
|
||||
void setEnsembleAndAddress(RimSummaryCaseCollection* ensemble, const RifEclipseSummaryAddress& address);
|
||||
std::vector<RiaSummaryCurveDefinition> curveSelection() const;
|
||||
|
||||
void hideEnsembles();
|
||||
void hideSummaryCases();
|
||||
|
||||
private:
|
||||
RiuSummaryCurveDefSelection* summaryAddressSelection() const;
|
||||
void updateLabel();
|
||||
|
Loading…
Reference in New Issue
Block a user