diff --git a/ApplicationCode/Application/Tools/RiaSummaryCurveDefTools.cpp b/ApplicationCode/Application/Tools/RiaSummaryCurveDefTools.cpp index f0ca354cf0..de45964297 100644 --- a/ApplicationCode/Application/Tools/RiaSummaryCurveDefTools.cpp +++ b/ApplicationCode/Application/Tools/RiaSummaryCurveDefTools.cpp @@ -20,92 +20,99 @@ #include "RiaSummaryCurveDefinition.h" +#include "RimSummaryCurve.h" +#include "RimSummaryCurveCollection.h" + #include //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RiaSummaryCurveDefTools::RiaSummaryCurveDefTools(const std::vector& curveDefinitions) - : m_curveDefinitions(curveDefinitions), m_isEvaluated(false) -{ -} +RiaSummaryCurveDefTools::RiaSummaryCurveDefTools() {} //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -std::vector RiaSummaryCurveDefTools::uniqueWellNames() const +void RiaSummaryCurveDefTools::findIdentifiers(RimSummaryCurveCollection* sumCurveCollection) { - computeUniqueValues(); + if (!sumCurveCollection) return; - return std::vector(m_wellNames.begin(), m_wellNames.end()); -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -std::vector RiaSummaryCurveDefTools::uniqueGroupNames() const -{ - computeUniqueValues(); - - return std::vector(m_groupName.begin(), m_groupName.end()); -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -std::vector RiaSummaryCurveDefTools::uniqueRegions() const -{ - computeUniqueValues(); - - return std::vector(m_regionNumbers.begin(), m_regionNumbers.end()); -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -std::vector RiaSummaryCurveDefTools::uniqueSummaryCases() const -{ - computeUniqueValues(); - - return std::vector(m_summaryCases.begin(), m_summaryCases.end()); -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RiaSummaryCurveDefTools::computeUniqueValues() const -{ - if (m_isEvaluated) + for (auto curve : sumCurveCollection->curves()) { - return; - } + m_summaryCases.insert(curve->summaryCaseY()); - // m_wellNames.clear(); - // m_groupName.clear(); - // m_summaryCases.clear(); + auto adr = curve->summaryAddressY(); - for (const auto& curveDef : m_curveDefinitions) - { - if (curveDef.summaryCase() != nullptr) + if (!adr.wellName().empty()) { - m_summaryCases.insert(curveDef.summaryCase()); + m_wellNames.insert(adr.wellName()); } - if (!curveDef.summaryAddress().wellName().empty()) + if (!adr.quantityName().empty()) { - m_wellNames.insert(curveDef.summaryAddress().wellName()); + m_quantities.insert(adr.quantityName()); } - if (!curveDef.summaryAddress().wellGroupName().empty()) + if (!adr.wellGroupName().empty()) { - m_groupName.insert(curveDef.summaryAddress().wellGroupName()); + m_wellGroupNames.insert(adr.wellGroupName()); } - if (curveDef.summaryAddress().regionNumber() != -1) + if (adr.regionNumber() != -1) { - m_regionNumbers.insert(curveDef.summaryAddress().regionNumber()); + m_regionNumbers.insert(adr.regionNumber()); } } - - m_isEvaluated = true; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +std::set RiaSummaryCurveDefTools::quantities() const +{ + return m_quantities; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +std::set RiaSummaryCurveDefTools::wellNames() const +{ + return m_wellNames; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +std::set RiaSummaryCurveDefTools::wellGroupNames() const +{ + return m_wellGroupNames; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +std::set RiaSummaryCurveDefTools::regionNumbers() const +{ + return m_regionNumbers; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +std::set RiaSummaryCurveDefTools::summaryCases() const +{ + return m_summaryCases; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RiaSummaryCurveDefTools::clearAllSets() +{ + m_quantities.clear(); + m_wellNames.clear(); + m_wellGroupNames.clear(); + m_regionNumbers.clear(); + m_summaryCases.clear(); } diff --git a/ApplicationCode/Application/Tools/RiaSummaryCurveDefTools.h b/ApplicationCode/Application/Tools/RiaSummaryCurveDefTools.h index 74f17fd2db..6d2c4c1181 100644 --- a/ApplicationCode/Application/Tools/RiaSummaryCurveDefTools.h +++ b/ApplicationCode/Application/Tools/RiaSummaryCurveDefTools.h @@ -22,7 +22,7 @@ #include #include -class RiaSummaryCurveDefinition; +class RimSummaryCurveCollection; class RimSummaryCase; //================================================================================================== @@ -31,22 +31,24 @@ class RimSummaryCase; class RiaSummaryCurveDefTools { public: - RiaSummaryCurveDefTools(const std::vector& curveDefinitions); + RiaSummaryCurveDefTools(); - std::vector uniqueWellNames() const; - std::vector uniqueGroupNames() const; - std::vector uniqueRegions() const; - std::vector uniqueSummaryCases() const; + void findIdentifiers(RimSummaryCurveCollection* sumCurveCollection); + + std::set quantities() const; + std::set wellNames() const; + std::set wellGroupNames() const; + + std::set regionNumbers() const; + std::set summaryCases() const; private: - void computeUniqueValues() const; + void clearAllSets(); private: - const std::vector& m_curveDefinitions; - - mutable bool m_isEvaluated; - mutable std::set m_wellNames; - mutable std::set m_groupName; - mutable std::set m_regionNumbers; - mutable std::set m_summaryCases; + std::set m_quantities; + std::set m_wellNames; + std::set m_wellGroupNames; + std::set m_regionNumbers; + std::set m_summaryCases; }; diff --git a/ApplicationCode/Commands/FlowCommands/RicPlotProductionRateFeature.cpp b/ApplicationCode/Commands/FlowCommands/RicPlotProductionRateFeature.cpp index c6e991ec9d..f29b8f9b06 100644 --- a/ApplicationCode/Commands/FlowCommands/RicPlotProductionRateFeature.cpp +++ b/ApplicationCode/Commands/FlowCommands/RicPlotProductionRateFeature.cpp @@ -99,11 +99,8 @@ void RicPlotProductionRateFeature::onActionTriggered(bool isChecked) description = "Well Injection Rates : "; } - RimSummaryPlot* plot = new RimSummaryPlot(); - summaryPlotColl->summaryPlots().push_back(plot); - description += well->name(); - plot->setDescription(description); + RimSummaryPlot* plot = summaryPlotColl->createNamedSummaryPlot(description); if (isInjector(well)) { diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicNewGridTimeHistoryCurveFeature.cpp b/ApplicationCode/Commands/SummaryPlotCommands/RicNewGridTimeHistoryCurveFeature.cpp index faf73d01b3..70792f26c3 100644 --- a/ApplicationCode/Commands/SummaryPlotCommands/RicNewGridTimeHistoryCurveFeature.cpp +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicNewGridTimeHistoryCurveFeature.cpp @@ -119,10 +119,7 @@ RimSummaryPlot* RicNewGridTimeHistoryCurveFeature::userSelectedSummaryPlot() RimSummaryPlot* summaryPlot = nullptr; if (featureUi.isCreateNewPlotChecked()) { - RimSummaryPlot* plot = new RimSummaryPlot(); - summaryPlotColl->summaryPlots().push_back(plot); - - plot->setDescription(featureUi.newPlotName()); + RimSummaryPlot* plot = summaryPlotColl->createNamedSummaryPlot(featureUi.newPlotName()); summaryPlotColl->updateConnectedEditors(); diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicPasteAsciiDataToSummaryPlotFeature.cpp b/ApplicationCode/Commands/SummaryPlotCommands/RicPasteAsciiDataToSummaryPlotFeature.cpp index e248ff7d45..40fbec23c9 100644 --- a/ApplicationCode/Commands/SummaryPlotCommands/RicPasteAsciiDataToSummaryPlotFeature.cpp +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicPasteAsciiDataToSummaryPlotFeature.cpp @@ -246,10 +246,7 @@ RicPasteAsciiDataToSummaryPlotFeature::CurveType RicPasteAsciiDataToSummaryPlotF //-------------------------------------------------------------------------------------------------- RimSummaryPlot* RicPasteAsciiDataToSummaryPlotFeature::createSummaryPlotAndAddToPlotCollection(RimSummaryPlotCollection *plotCollection) { - auto summaryPlot = new RimSummaryPlot(); - summaryPlot->setDescription(QString("Summary Plot %1").arg(plotCollection->summaryPlots.size() + 1)); - plotCollection->summaryPlots().push_back(summaryPlot); - plotCollection->updateConnectedEditors(); - summaryPlot->loadDataAndUpdate(); - return summaryPlot; + QString name = QString("Summary Plot %1").arg(plotCollection->summaryPlots.size() + 1); + + return plotCollection->createNamedSummaryPlot(name); } diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreator.cpp b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreator.cpp index 3ef74d2b4d..a787cf78eb 100644 --- a/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreator.cpp +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreator.cpp @@ -649,10 +649,7 @@ void RicSummaryCurveCreator::createNewPlot() summaryPlotName = QInputDialog::getText(NULL, "New Summary Plot Name", "New Summary Plot Name", QLineEdit::Normal, summaryPlotName, &ok); if (ok) { - RimSummaryPlot* plot = new RimSummaryPlot(); - summaryPlotColl->summaryPlots().push_back(plot); - - plot->setDescription(summaryPlotName); + RimSummaryPlot* plot = summaryPlotColl->createNamedSummaryPlot(summaryPlotName); plot->loadDataAndUpdate(); summaryPlotColl->updateConnectedEditors(); diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurvesModifier.cpp b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurvesModifier.cpp index 6dc9d17f7b..1ebdb9b668 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurvesModifier.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurvesModifier.cpp @@ -50,6 +50,7 @@ RimSummaryCurvesModifier::RimSummaryCurvesModifier() m_wellNameProxy.registerGetMethod(this, &RimSummaryCurvesModifier::wellName); m_wellNameProxy.registerSetMethod(this, &RimSummaryCurvesModifier::setWellName); m_wellNameProxy.uiCapability()->setUiEditorTypeName(caf::PdmUiListEditor::uiEditorTypeName()); + m_wellNameProxy.uiCapability()->setUiHidden(false); // clang-format on } @@ -92,20 +93,20 @@ QList RimSummaryCurvesModifier::calculateValueOptions(co std::set identifierTexts; RifSummaryReaderInterface* reader = summaryReader(); + if (reader) { + const std::vector allAddresses = reader->allResultAddresses(); + if (fieldNeedingOptions == &m_wellName || fieldNeedingOptions == &m_wellNameProxy) { - const std::vector allAddresses = reader->allResultAddresses(); identifierTexts = findAvailableIdentifierTexts(allAddresses, RifEclipseSummaryAddress::SUMMARY_WELL); } else if (fieldNeedingOptions == &m_region) { - const std::vector allAddresses = reader->allResultAddresses(); identifierTexts = findAvailableIdentifierTexts(allAddresses, RifEclipseSummaryAddress::SUMMARY_REGION); } else if (fieldNeedingOptions == &m_groupName) { - const std::vector allAddresses = reader->allResultAddresses(); identifierTexts = findAvailableIdentifierTexts(allAddresses, RifEclipseSummaryAddress::SUMMARY_WELL_GROUP); } } @@ -193,9 +194,12 @@ void RimSummaryCurvesModifier::fieldChangedByUi(const caf::PdmFieldHandle* chang for (auto curve : curveCollection->curves()) { RifEclipseSummaryAddress adr = curve->summaryAddressY(); - adr.setWellName(m_wellName().toStdString()); + if (adr.category() == RifEclipseSummaryAddress::SUMMARY_WELL) + { + adr.setWellName(m_wellName().toStdString()); - curve->setSummaryAddressY(adr); + curve->setSummaryAddressY(adr); + } } triggerLoadDataAndUpdate = true; @@ -205,9 +209,12 @@ void RimSummaryCurvesModifier::fieldChangedByUi(const caf::PdmFieldHandle* chang for (auto curve : curveCollection->curves()) { RifEclipseSummaryAddress adr = curve->summaryAddressY(); - adr.setRegion(m_region()); + if (adr.category() == RifEclipseSummaryAddress::SUMMARY_REGION) + { + adr.setRegion(m_region()); - curve->setSummaryAddressY(adr); + curve->setSummaryAddressY(adr); + } } triggerLoadDataAndUpdate = true; @@ -217,9 +224,12 @@ void RimSummaryCurvesModifier::fieldChangedByUi(const caf::PdmFieldHandle* chang for (auto curve : curveCollection->curves()) { RifEclipseSummaryAddress adr = curve->summaryAddressY(); - adr.setWellGroupName(m_groupName().toStdString()); + if (adr.category() == RifEclipseSummaryAddress::SUMMARY_WELL_GROUP) + { + adr.setWellGroupName(m_groupName().toStdString()); - curve->setSummaryAddressY(adr); + curve->setSummaryAddressY(adr); + } } triggerLoadDataAndUpdate = true; @@ -229,6 +239,9 @@ void RimSummaryCurvesModifier::fieldChangedByUi(const caf::PdmFieldHandle* chang { RimSummaryPlot* summaryPlot = nullptr; this->firstAncestorOrThisOfTypeAsserted(summaryPlot); + + summaryPlot->updatePlotTitle(); + summaryPlot->loadDataAndUpdate(); } } @@ -247,8 +260,6 @@ void RimSummaryCurvesModifier::defineUiOrdering(QString uiConfigName, caf::PdmUi curveDefinitions.push_back(RiaSummaryCurveDefinition(curve->summaryCaseY(), curve->summaryAddressY())); } - RiaSummaryCurveDefTools tools(curveDefinitions); - // m_summaryCase.uiCapability()->setUiReadOnly(true); // m_wellName.uiCapability()->setUiReadOnly(true); // m_groupName.uiCapability()->setUiReadOnly(true); diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.cpp b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.cpp index d12c75048d..0a23d701ca 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.cpp @@ -19,6 +19,7 @@ #include "RimSummaryPlot.h" #include "RiaApplication.h" +#include "RiaSummaryCurveDefTools.h" #include "RimAsciiDataCurve.h" #include "RimGridTimeHistoryCurve.h" @@ -40,16 +41,16 @@ #include "cafPdmUiTreeOrdering.h" #include "cafPdmUiCheckBoxEditor.h" -#include -#include -#include - #include "qwt_abstract_legend.h" #include "qwt_legend.h" #include "qwt_plot_curve.h" #include "qwt_plot_renderer.h" -#include "vector" +#include +#include +#include + +#include CAF_PDM_SOURCE_INIT(RimSummaryPlot, "SummaryPlot"); @@ -61,12 +62,15 @@ RimSummaryPlot::RimSummaryPlot() { CAF_PDM_InitObject("Summary Plot", ":/SummaryPlotLight16x16.png", "", ""); - CAF_PDM_InitField(&m_userName, "PlotDescription", QString("Summary Plot"), "Name", "", "", ""); + CAF_PDM_InitField(&m_userDefinedPlotTitle, "PlotDescription", QString("Summary Plot"), "Name", "", "", ""); CAF_PDM_InitField(&m_showPlotTitle, "ShowPlotTitle", true, "Plot Title", "", "", ""); m_showPlotTitle.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN); CAF_PDM_InitField(&m_showLegend, "ShowLegend", true, "Legend", "", "", ""); m_showLegend.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN); + CAF_PDM_InitField(&m_isUsingAutoName, "IsUsingAutoName", false, "Auto Name", "", "", ""); + m_isUsingAutoName.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN); + CAF_PDM_InitFieldNoDefault(&m_curveFilters_OBSOLETE, "SummaryCurveFilters", "", "", "", ""); m_curveFilters_OBSOLETE.uiCapability()->setUiTreeHidden(true); @@ -497,6 +501,19 @@ RiuSummaryQwtPlot* RimSummaryPlot::qwtPlot() const return m_qwtPlot; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryPlot::updatePlotTitle() +{ + if (m_isUsingAutoName) + { + m_userDefinedPlotTitle = extractPlotTitleFromCurves(); + } + + updateMdiWindowTitle(); +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -1045,6 +1062,14 @@ void RimSummaryPlot::addAsciiDataCruve(RimAsciiDataCurve* curve) } } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +caf::PdmFieldHandle* RimSummaryPlot::userDescriptionField() +{ + return &m_userDefinedPlotTitle; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -1052,11 +1077,12 @@ void RimSummaryPlot::fieldChangedByUi(const caf::PdmFieldHandle* changedField, c { RimViewWindow::fieldChangedByUi(changedField, oldValue, newValue); - if (changedField == &m_userName || + if (changedField == &m_userDefinedPlotTitle || changedField == &m_showPlotTitle || - changedField == &m_showLegend) + changedField == &m_showLegend || + changedField == &m_isUsingAutoName) { - updateMdiWindowTitle(); + updatePlotTitle(); } } @@ -1115,7 +1141,12 @@ void RimSummaryPlot::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering //-------------------------------------------------------------------------------------------------- void RimSummaryPlot::onLoadDataAndUpdate() { - updateMdiWindowVisibility(); + if (m_isUsingAutoName) + { + m_userDefinedPlotTitle = extractPlotTitleFromCurves(); + } + + updateMdiWindowVisibility(); for (RimSummaryCurveFilter* curveFilter: m_curveFilters_OBSOLETE) { @@ -1190,6 +1221,42 @@ void RimSummaryPlot::setZoomIntervalsInQwtPlot() m_qwtPlot->setZoomWindow(left, right, time); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +QString RimSummaryPlot::extractPlotTitleFromCurves() const +{ + RiaSummaryCurveDefTools nameHelper; + + nameHelper.findIdentifiers(m_summaryCurveCollection()); + + auto quantities = nameHelper.quantities(); + auto wellNames = nameHelper.wellNames(); + auto wellGroupNames = nameHelper.wellGroupNames(); + auto regions = nameHelper.regionNumbers(); + + QString title; + + if (wellNames.size() == 1) + { + title = "Well : " + QString::fromStdString(*(wellNames.begin())); + } + else if (wellGroupNames.size() == 1) + { + title = "Well Group : " + QString::fromStdString(*(wellGroupNames.begin())); + } + else if (regions.size() == 1) + { + title = "Region : " + QString::number(*(regions.begin())); + } + else if (quantities.size() == 1) + { + title = "Quantity : " + QString::fromStdString(*(quantities.begin())); + } + + return title; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -1216,7 +1283,7 @@ void RimSummaryPlot::disableAutoZoom() //-------------------------------------------------------------------------------------------------- void RimSummaryPlot::setDescription(const QString& description) { - m_userName = description; + m_userDefinedPlotTitle = description; } //-------------------------------------------------------------------------------------------------- @@ -1224,7 +1291,7 @@ void RimSummaryPlot::setDescription(const QString& description) //-------------------------------------------------------------------------------------------------- QString RimSummaryPlot::description() const { - return m_userName(); + return m_userDefinedPlotTitle(); } //-------------------------------------------------------------------------------------------------- @@ -1235,6 +1302,14 @@ void RimSummaryPlot::setShowDescription(bool showDescription) m_showPlotTitle = showDescription; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryPlot::enableAutoName(bool enable) +{ + m_isUsingAutoName = enable; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -1243,6 +1318,24 @@ void RimSummaryPlot::setAsCrossPlot() m_isCrossPlot = true; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryPlot::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) +{ + uiOrdering.add(&m_isUsingAutoName); + uiOrdering.add(&m_userDefinedPlotTitle); + uiOrdering.add(&m_showPlotTitle); + uiOrdering.add(&m_showLegend); + + m_userDefinedPlotTitle.uiCapability()->setUiReadOnly(m_isUsingAutoName); + + if (m_isUsingAutoName) + { + m_userDefinedPlotTitle = extractPlotTitleFromCurves(); + } +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -1327,18 +1420,19 @@ void RimSummaryPlot::updateMdiWindowTitle() { if (m_qwtPlot) { - m_qwtPlot->setWindowTitle(m_userName); + QString plotTitle = description(); + + m_qwtPlot->setWindowTitle(plotTitle); if (m_showPlotTitle) { - m_qwtPlot->setTitle(m_userName); + m_qwtPlot->setTitle(plotTitle); } else { m_qwtPlot->setTitle(""); } - if (m_showLegend) { // Will be released in plot destructor or when a new legend is set @@ -1446,7 +1540,9 @@ size_t RimSummaryPlot::curveCount() const //-------------------------------------------------------------------------------------------------- void RimSummaryPlot::defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute * attribute) { - if (field == &m_showLegend || field == &m_showPlotTitle) + if (field == &m_showLegend || + field == &m_showPlotTitle || + field == &m_isUsingAutoName) { caf::PdmUiCheckBoxEditorAttribute* myAttr = dynamic_cast(attribute); if (myAttr) diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.h b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.h index b5d73626a1..60cbcd8f19 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.h +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.h @@ -55,6 +55,7 @@ public: void setDescription(const QString& description); QString description() const; void setShowDescription(bool showDescription); + void enableAutoName(bool enable); void addCurveAndUpdate(RimSummaryCurve* curve); void addCurveNoUpdate(RimSummaryCurve* curve); @@ -101,6 +102,8 @@ public: RimSummaryCurveCollection* summaryCurveCollection() const; RiuSummaryQwtPlot* qwtPlot() const; + void updatePlotTitle(); + // RimViewWindow overrides public: virtual QWidget* createViewWidget(QWidget* mainWindowParent) override; @@ -112,16 +115,19 @@ private: protected: // Overridden PDM methods - virtual caf::PdmFieldHandle* userDescriptionField() { return &m_userName; } + virtual caf::PdmFieldHandle* userDescriptionField(); virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "") override; virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute); + virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override; virtual void onLoadDataAndUpdate() override; virtual QImage snapshotWindowContent() override; void setAsCrossPlot(); + + private: std::vector visibleSummaryCurvesForAxis(RiaDefines::PlotAxis plotAxis) const; std::vector visibleTimeHistoryCurvesForAxis(RiaDefines::PlotAxis plotAxis) const; @@ -136,10 +142,14 @@ private: void updateBottomXAxis(); void setZoomIntervalsInQwtPlot(); + QString extractPlotTitleFromCurves() const; + private: caf::PdmField m_showPlotTitle; caf::PdmField m_showLegend; - caf::PdmField m_userName; + + caf::PdmField m_isUsingAutoName; + caf::PdmField m_userDefinedPlotTitle; caf::PdmChildArrayField m_gridTimeHistoryCurves; caf::PdmChildField m_summaryCurveCollection; diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlotCollection.cpp b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlotCollection.cpp index 7cab507ea1..3697dab045 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlotCollection.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlotCollection.cpp @@ -42,6 +42,30 @@ RimSummaryPlotCollection::~RimSummaryPlotCollection() summaryPlots.deleteAllChildObjects(); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RimSummaryPlot* RimSummaryPlotCollection::createSummaryPlotAutoName() +{ + RimSummaryPlot* plot = new RimSummaryPlot(); + plot->enableAutoName(true); + summaryPlots.push_back(plot); + + return plot; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RimSummaryPlot* RimSummaryPlotCollection::createNamedSummaryPlot(const QString& name) +{ + RimSummaryPlot* plot = new RimSummaryPlot(); + summaryPlots.push_back(plot); + plot->setDescription(name); + + return plot; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlotCollection.h b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlotCollection.h index 8da9941795..43c59700c9 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlotCollection.h +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlotCollection.h @@ -36,6 +36,9 @@ public: caf::PdmChildArrayField summaryPlots; + RimSummaryPlot* createSummaryPlotAutoName(); + RimSummaryPlot* createNamedSummaryPlot(const QString& name); + void updateSummaryNameHasChanged(); void summaryPlotItemInfos(QList* optionInfos) const; };