mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-09 23:16:00 -06:00
#2093 Cross Plot : Add push button to select curve address
This commit is contained in:
parent
3b31c4800f
commit
762a21d940
@ -25,7 +25,6 @@
|
||||
#include "RimSummaryCase.h"
|
||||
#include "RimSummaryCurve.h"
|
||||
|
||||
#include "RiuSummaryCurveDefSelection.h"
|
||||
#include "RiuSummaryCurveDefSelectionDialog.h"
|
||||
|
||||
#include "cafPdmUiPushButtonEditor.h"
|
||||
@ -86,22 +85,15 @@ void RimSummaryCalculationVariable::fieldChangedByUi(const caf::PdmFieldHandle*
|
||||
|
||||
{
|
||||
RiuSummaryCurveDefSelectionDialog dlg(nullptr);
|
||||
{
|
||||
std::vector<RiaSummaryCurveDefinition> sumCasePairs;
|
||||
sumCasePairs.push_back(RiaSummaryCurveDefinition(m_case(), m_summaryAddress->address()));
|
||||
|
||||
dlg.summaryAddressSelection()->setSelectedCurveDefinitions(sumCasePairs);
|
||||
dlg.summaryAddressSelection()->updateConnectedEditors();
|
||||
dlg.updateLabel();
|
||||
}
|
||||
dlg.setCaseAndAddress(m_case(), m_summaryAddress->address());
|
||||
|
||||
if (dlg.exec() == QDialog::Accepted)
|
||||
{
|
||||
std::vector<RiaSummaryCurveDefinition> sumCasePairs = dlg.summaryAddressSelection()->selectedCurveDefinitions();
|
||||
if (sumCasePairs.size() == 1)
|
||||
std::vector<RiaSummaryCurveDefinition> curveSelection = dlg.curveSelection();
|
||||
if (curveSelection.size() > 0)
|
||||
{
|
||||
m_case = sumCasePairs[0].summaryCase();
|
||||
m_summaryAddress->setAddress(sumCasePairs[0].summaryAddress());
|
||||
m_case = curveSelection[0].summaryCase();
|
||||
m_summaryAddress->setAddress(curveSelection[0].summaryAddress());
|
||||
|
||||
updateContainingEditor = true;
|
||||
}
|
||||
|
@ -35,10 +35,12 @@
|
||||
#include "RimSummaryTimeAxisProperties.h"
|
||||
|
||||
#include "RiuLineSegmentQwtPlotCurve.h"
|
||||
#include "RiuSummaryCurveDefSelectionDialog.h"
|
||||
#include "RiuSummaryQwtPlot.h"
|
||||
|
||||
#include "cafPdmUiComboBoxEditor.h"
|
||||
#include "cafPdmUiListEditor.h"
|
||||
#include "cafPdmUiPushButtonEditor.h"
|
||||
#include "cafPdmUiTreeOrdering.h"
|
||||
|
||||
#include "qwt_date.h"
|
||||
@ -97,6 +99,12 @@ RimSummaryCurve::RimSummaryCurve()
|
||||
m_yValuesCurveVariable.uiCapability()->setUiHidden(true);
|
||||
m_yValuesCurveVariable.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_yPushButtonSelectSummaryAddress, "SelectAddress", "", "", "", "");
|
||||
m_yPushButtonSelectSummaryAddress = false;
|
||||
m_yPushButtonSelectSummaryAddress.xmlCapability()->disableIO();
|
||||
m_yPushButtonSelectSummaryAddress.uiCapability()->setUiEditorTypeName(caf::PdmUiPushButtonEditor::uiEditorTypeName());
|
||||
m_yPushButtonSelectSummaryAddress.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||
|
||||
m_yValuesCurveVariable = new RimSummaryAddress;
|
||||
|
||||
|
||||
@ -128,6 +136,12 @@ RimSummaryCurve::RimSummaryCurve()
|
||||
m_xValuesCurveVariable.uiCapability()->setUiHidden(true);
|
||||
m_xValuesCurveVariable.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_xPushButtonSelectSummaryAddress, "x_SelectAddress", "", "", "", "");
|
||||
m_xPushButtonSelectSummaryAddress = false;
|
||||
m_xPushButtonSelectSummaryAddress.xmlCapability()->disableIO();
|
||||
m_xPushButtonSelectSummaryAddress.uiCapability()->setUiEditorTypeName(caf::PdmUiPushButtonEditor::uiEditorTypeName());
|
||||
m_xPushButtonSelectSummaryAddress.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||
|
||||
m_xValuesCurveVariable = new RimSummaryAddress;
|
||||
|
||||
|
||||
@ -438,6 +452,22 @@ void RimSummaryCurve::onLoadDataAndUpdate(bool updateParentPlot)
|
||||
if (updateParentPlot) updateQwtPlotAxis();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCurve::defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute)
|
||||
{
|
||||
if (&m_yPushButtonSelectSummaryAddress == field ||
|
||||
&m_xPushButtonSelectSummaryAddress == field)
|
||||
{
|
||||
caf::PdmUiPushButtonEditorAttribute* attrib = dynamic_cast<caf::PdmUiPushButtonEditorAttribute*> (attribute);
|
||||
if (attrib)
|
||||
{
|
||||
attrib->m_buttonText = "Select Address";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -458,6 +488,8 @@ void RimSummaryCurve::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering&
|
||||
curveVarSelectionGroup->setCollapsedByDefault(true);
|
||||
m_yValuesSummaryFilter->uiOrdering(uiConfigName, *curveVarSelectionGroup);
|
||||
curveVarSelectionGroup->add(&m_yValuesUiFilterResultSelection);
|
||||
|
||||
curveDataGroup->add(&m_yPushButtonSelectSummaryAddress);
|
||||
}
|
||||
|
||||
if (isCrossPlotCurve())
|
||||
@ -470,6 +502,8 @@ void RimSummaryCurve::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering&
|
||||
curveVarSelectionGroup->setCollapsedByDefault(true);
|
||||
m_xValuesSummaryFilter->uiOrdering(uiConfigName, *curveVarSelectionGroup);
|
||||
curveVarSelectionGroup->add(&m_xValuesUiFilterResultSelection);
|
||||
|
||||
curveDataGroup->add(&m_xPushButtonSelectSummaryAddress);
|
||||
}
|
||||
|
||||
uiOrdering.add(&m_plotAxis);
|
||||
@ -561,29 +595,29 @@ void RimSummaryCurve::applyCurveAutoNameSettings(const RimSummaryCurveAutoName&
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
|
||||
{
|
||||
this->RimPlotCurve::fieldChangedByUi(changedField,oldValue,newValue);
|
||||
this->RimPlotCurve::fieldChangedByUi(changedField, oldValue, newValue);
|
||||
|
||||
RimSummaryPlot* plot = nullptr;
|
||||
firstAncestorOrThisOfType(plot);
|
||||
CVF_ASSERT(plot);
|
||||
|
||||
bool loadAndUpdate = false;
|
||||
|
||||
if(changedField == &m_yValuesUiFilterResultSelection)
|
||||
{
|
||||
m_yValuesCurveVariable->setAddress(m_yValuesUiFilterResultSelection());
|
||||
|
||||
this->calculateCurveInterpolationFromAddress();
|
||||
this->loadDataAndUpdate(true);
|
||||
|
||||
plot->updateAxes();
|
||||
loadAndUpdate = true;
|
||||
}
|
||||
else if (changedField == &m_xValuesUiFilterResultSelection)
|
||||
{
|
||||
m_xValuesCurveVariable->setAddress(m_xValuesUiFilterResultSelection());
|
||||
|
||||
this->calculateCurveInterpolationFromAddress();
|
||||
this->loadDataAndUpdate(true);
|
||||
|
||||
plot->updateAxes();
|
||||
loadAndUpdate = true;
|
||||
}
|
||||
else if (&m_showCurve == changedField)
|
||||
{
|
||||
@ -600,6 +634,47 @@ void RimSummaryCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
||||
plot->updateCaseNameHasChanged();
|
||||
this->onLoadDataAndUpdate(true);
|
||||
}
|
||||
else if (changedField == &m_yPushButtonSelectSummaryAddress)
|
||||
{
|
||||
RiuSummaryCurveDefSelectionDialog dlg(nullptr);
|
||||
dlg.setCaseAndAddress(m_yValuesSummaryCase(), m_yValuesCurveVariable->address());
|
||||
|
||||
if (dlg.exec() == QDialog::Accepted)
|
||||
{
|
||||
auto curveSelection = dlg.curveSelection();
|
||||
if (curveSelection.size() > 0)
|
||||
{
|
||||
m_yValuesSummaryCase = curveSelection[0].summaryCase();
|
||||
m_yValuesCurveVariable->setAddress(curveSelection[0].summaryAddress());
|
||||
|
||||
loadAndUpdate = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (changedField == &m_xPushButtonSelectSummaryAddress)
|
||||
{
|
||||
RiuSummaryCurveDefSelectionDialog dlg(nullptr);
|
||||
dlg.setCaseAndAddress(m_xValuesSummaryCase(), m_xValuesCurveVariable->address());
|
||||
|
||||
if (dlg.exec() == QDialog::Accepted)
|
||||
{
|
||||
auto curveSelection = dlg.curveSelection();
|
||||
if (curveSelection.size() > 0)
|
||||
{
|
||||
m_xValuesSummaryCase = curveSelection[0].summaryCase();
|
||||
m_xValuesCurveVariable->setAddress(curveSelection[0].summaryAddress());
|
||||
|
||||
loadAndUpdate = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (loadAndUpdate)
|
||||
{
|
||||
this->loadDataAndUpdate(true);
|
||||
|
||||
plot->updateAxes();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -88,6 +88,7 @@ private:
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
|
||||
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly);
|
||||
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
|
||||
virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute) override;
|
||||
|
||||
static void appendOptionItemsForSummaryAddresses(QList<caf::PdmOptionItemInfo>* options,
|
||||
RimSummaryCase* summaryCase,
|
||||
@ -102,6 +103,7 @@ private:
|
||||
caf::PdmField<QString> m_yValuesSelectedVariableDisplayField;
|
||||
caf::PdmChildField<RimSummaryFilter*> m_yValuesSummaryFilter;
|
||||
caf::PdmField<RifEclipseSummaryAddress> m_yValuesUiFilterResultSelection;
|
||||
caf::PdmField<bool> m_yPushButtonSelectSummaryAddress;
|
||||
|
||||
// X values
|
||||
caf::PdmPtrField<RimSummaryCase*> m_xValuesSummaryCase;
|
||||
@ -109,6 +111,7 @@ private:
|
||||
caf::PdmField<QString> m_xValuesSelectedVariableDisplayField;
|
||||
caf::PdmChildField<RimSummaryFilter*> m_xValuesSummaryFilter;
|
||||
caf::PdmField<RifEclipseSummaryAddress> m_xValuesUiFilterResultSelection;
|
||||
caf::PdmField<bool> m_xPushButtonSelectSummaryAddress;
|
||||
|
||||
caf::PdmChildField<RimSummaryCurveAutoName*> m_curveNameConfig;
|
||||
caf::PdmField<caf::AppEnum< RiaDefines::PlotAxis>> m_plotAxis;
|
||||
|
@ -69,6 +69,27 @@ RiuSummaryCurveDefSelectionDialog::~RiuSummaryCurveDefSelectionDialog()
|
||||
{
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuSummaryCurveDefSelectionDialog::setCaseAndAddress(RimSummaryCase* summaryCase, const RifEclipseSummaryAddress& address)
|
||||
{
|
||||
std::vector<RiaSummaryCurveDefinition> sumCasePairs;
|
||||
sumCasePairs.push_back(RiaSummaryCurveDefinition(summaryCase, address));
|
||||
|
||||
summaryAddressSelection()->setSelectedCurveDefinitions(sumCasePairs);
|
||||
summaryAddressSelection()->updateConnectedEditors();
|
||||
updateLabel();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<RiaSummaryCurveDefinition> RiuSummaryCurveDefSelectionDialog::curveSelection() const
|
||||
{
|
||||
return summaryAddressSelection()->selectedCurveDefinitions();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -18,13 +18,16 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "RiaSummaryCurveDefinition.h"
|
||||
|
||||
#include <QDialog>
|
||||
|
||||
#include <memory>
|
||||
|
||||
class QLabel;
|
||||
|
||||
class RiuSummaryCurveDefSelectionEditor;
|
||||
class RiuSummaryCurveDefSelection;
|
||||
class RiuSummaryCurveDefSelectionEditor;
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
@ -36,9 +39,12 @@ public:
|
||||
RiuSummaryCurveDefSelectionDialog(QWidget* parent);
|
||||
~RiuSummaryCurveDefSelectionDialog();
|
||||
|
||||
RiuSummaryCurveDefSelection* summaryAddressSelection() const;
|
||||
void setCaseAndAddress(RimSummaryCase* summaryCase, const RifEclipseSummaryAddress& address);
|
||||
std::vector<RiaSummaryCurveDefinition> curveSelection() const;
|
||||
|
||||
void updateLabel();
|
||||
private:
|
||||
RiuSummaryCurveDefSelection* summaryAddressSelection() const;
|
||||
void updateLabel();
|
||||
|
||||
private:
|
||||
std::unique_ptr<RiuSummaryCurveDefSelectionEditor> m_addrSelWidget;
|
||||
|
Loading…
Reference in New Issue
Block a user