mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-09 23:16:00 -06:00
#2088 Curve Calculator : Ask user to calculate curves when expression has changed
This commit is contained in:
parent
2e6c37c266
commit
9adb9ba4b1
@ -21,8 +21,12 @@
|
||||
#include "RicSummaryCurveCalculator.h"
|
||||
#include "RicSummaryCurveCalculatorEditor.h"
|
||||
|
||||
#include "RimSummaryCalculationCollection.h"
|
||||
#include "RimSummaryCalculation.h"
|
||||
|
||||
#include <QDialogButtonBox>
|
||||
#include <QVBoxLayout>
|
||||
#include <QMessageBox>
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
@ -58,7 +62,45 @@ void RicSummaryCurveCalculatorDialog::setCalculationAndUpdateUi(RimSummaryCalcul
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicSummaryCurveCalculatorDialog::slotTryCloseDialog()
|
||||
{
|
||||
// Test for dirty
|
||||
RimSummaryCalculationCollection* calculationCollection = RicSummaryCurveCalculator::calculationCollection();
|
||||
|
||||
if (dirtyCount() > 0)
|
||||
{
|
||||
QMessageBox msgBox(this);
|
||||
msgBox.setIcon(QMessageBox::Question);
|
||||
|
||||
QString questionText = QString("Detected calculation expression text modifications.");
|
||||
|
||||
msgBox.setText(questionText);
|
||||
msgBox.setInformativeText("Do you want to trigger calculation?");
|
||||
msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
|
||||
|
||||
int ret = msgBox.exec();
|
||||
if (ret == QMessageBox::No)
|
||||
{
|
||||
reject();
|
||||
}
|
||||
else if (ret == QMessageBox::Yes)
|
||||
{
|
||||
for (auto c : calculationCollection->calculations())
|
||||
{
|
||||
if (c->isDirty())
|
||||
{
|
||||
c->calculate();
|
||||
c->updateDependentCurvesAndPlots();
|
||||
}
|
||||
}
|
||||
|
||||
if (dirtyCount() > 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
accept();
|
||||
}
|
||||
@ -82,3 +124,21 @@ void RicSummaryCurveCalculatorDialog::setUp()
|
||||
m_summaryCalcEditor->updateUi();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
size_t RicSummaryCurveCalculatorDialog::dirtyCount() const
|
||||
{
|
||||
size_t count = 0;
|
||||
|
||||
RimSummaryCalculationCollection* calculationCollection = RicSummaryCurveCalculator::calculationCollection();
|
||||
for (auto c : calculationCollection->calculations())
|
||||
{
|
||||
if (c->isDirty())
|
||||
{
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
@ -41,8 +41,10 @@ public:
|
||||
private slots:
|
||||
void slotTryCloseDialog();
|
||||
|
||||
|
||||
private:
|
||||
void setUp();
|
||||
size_t dirtyCount() const;
|
||||
|
||||
private:
|
||||
std::unique_ptr<RicSummaryCurveCalculatorEditor> m_summaryCalcEditor;
|
||||
|
@ -65,6 +65,8 @@ RimSummaryCalculation::RimSummaryCalculation()
|
||||
CAF_PDM_InitFieldNoDefault(&m_timesteps, "TimeSteps", "Time Steps", "", "", "");
|
||||
|
||||
m_exprContextMenuMgr = std::unique_ptr<RiuExpressionContextMenuManager>(new RiuExpressionContextMenuManager());
|
||||
|
||||
m_isDirty = false;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -83,6 +85,14 @@ QString RimSummaryCalculation::description() const
|
||||
return m_description;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimSummaryCalculation::isDirty() const
|
||||
{
|
||||
return m_isDirty;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -300,6 +310,8 @@ bool RimSummaryCalculation::calculate()
|
||||
{
|
||||
// Copy time vector from source
|
||||
m_timesteps = sourceTimeSteps;
|
||||
|
||||
m_isDirty = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -357,6 +369,16 @@ void RimSummaryCalculation::attachToWidget()
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCalculation::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
|
||||
{
|
||||
m_isDirty = true;
|
||||
|
||||
PdmObject::fieldChangedByUi(changedField, oldValue, newValue);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -42,6 +42,8 @@ public:
|
||||
void setDescription(const QString& description);
|
||||
QString description() const;
|
||||
|
||||
bool isDirty() const;
|
||||
|
||||
caf::PdmChildArrayFieldHandle* variables();
|
||||
|
||||
const std::vector<double>& values() const;
|
||||
@ -60,7 +62,11 @@ public:
|
||||
static QString findLeftHandSide(const QString& expresion);
|
||||
void attachToWidget();
|
||||
|
||||
|
||||
private:
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue,
|
||||
const QVariant& newValue) override;
|
||||
|
||||
RimSummaryCalculationVariable* findByName(const QString& name) const;
|
||||
RimSummaryCalculationVariable* addVariable(const QString& name);
|
||||
void deleteVariable(RimSummaryCalculationVariable* calcVariable);
|
||||
@ -78,4 +84,6 @@ private:
|
||||
caf::PdmField<std::vector<time_t>> m_timesteps;
|
||||
|
||||
std::unique_ptr<RiuExpressionContextMenuManager> m_exprContextMenuMgr;
|
||||
|
||||
bool m_isDirty;
|
||||
};
|
||||
|
@ -113,14 +113,7 @@ void RimSummaryCalculationCollection::deleteCalculation(RimSummaryCalculation* c
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<RimSummaryCalculation*> RimSummaryCalculationCollection::calculations() const
|
||||
{
|
||||
std::vector<RimSummaryCalculation*> calcs;
|
||||
|
||||
for (auto c : m_calcuations)
|
||||
{
|
||||
calcs.push_back(c);
|
||||
}
|
||||
|
||||
return calcs;
|
||||
return m_calcuations.childObjects();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user