diff --git a/ApplicationCode/Commands/ExportCommands/RicExportCarfin.cpp b/ApplicationCode/Commands/ExportCommands/RicExportCarfin.cpp index 1eeb81770f..f4e0347960 100644 --- a/ApplicationCode/Commands/ExportCommands/RicExportCarfin.cpp +++ b/ApplicationCode/Commands/ExportCommands/RicExportCarfin.cpp @@ -18,6 +18,7 @@ #include "RicExportCarfin.h" +#include "RiaApplication.h" #include "RiaLogging.h" #include "RicCellRangeUi.h" @@ -26,7 +27,9 @@ #include "RifEclipseDataTableFormatter.h" +#include "RimDialogData.h" #include "RimEclipseCase.h" +#include "RimProject.h" #include "cafPdmUiPropertyViewDialog.h" #include "cafSelectionManager.h" @@ -34,6 +37,7 @@ #include #include + CAF_CMD_SOURCE_INIT(RicExportCarfin, "RicExportCarfin"); //-------------------------------------------------------------------------------------------------- @@ -57,15 +61,18 @@ void RicExportCarfin::onActionTriggered(bool isChecked) RimEclipseCase* rimCase = RicExportCarfin::selectedCase(); CVF_ASSERT(rimCase); - RicExportCarfinUi carfinUi; - carfinUi.setCase(rimCase); + QString exportCarfinDataAsString = RiaApplication::instance()->project()->dialogData()->exportCarfinDataAsString(); + + RicExportCarfinUi* exportCarfinObject = RiaApplication::instance()->project()->dialogData()->exportCarfin(); - caf::PdmUiPropertyViewDialog propertyDialog(nullptr, &carfinUi, "Export CARFIN to Eclipse Data", ""); + exportCarfinObject->setCase(rimCase); + + caf::PdmUiPropertyViewDialog propertyDialog(nullptr, exportCarfinObject, "Export CARFIN to Eclipse Data", ""); RicExportFeatureImpl::configureForExport(&propertyDialog); if (propertyDialog.exec() == QDialog::Accepted) { - QString filePath = carfinUi.exportFileName(); + QString filePath = exportCarfinObject->exportFileName(); QFile exportFile(filePath); if (!exportFile.open(QIODevice::WriteOnly)) { @@ -93,28 +100,33 @@ void RicExportCarfin::onActionTriggered(bool isChecked) formatter.keyword("CARFIN"); formatter.header(header); - formatter.add(carfinUi.cellRange()->start().i()); - formatter.add(carfinUi.cellRange()->start().i() + carfinUi.cellRange()->count().i()); + formatter.add(exportCarfinObject->cellRange()->start().i()); + formatter.add(exportCarfinObject->cellRange()->start().i() + exportCarfinObject->cellRange()->count().i()); - formatter.add(carfinUi.cellRange()->start().j()); - formatter.add(carfinUi.cellRange()->start().j() + carfinUi.cellRange()->count().j()); + formatter.add(exportCarfinObject->cellRange()->start().j()); + formatter.add(exportCarfinObject->cellRange()->start().j() + exportCarfinObject->cellRange()->count().j()); - formatter.add(carfinUi.cellRange()->start().k()); - formatter.add(carfinUi.cellRange()->start().k() + carfinUi.cellRange()->count().k()); + formatter.add(exportCarfinObject->cellRange()->start().k()); + formatter.add(exportCarfinObject->cellRange()->start().k() + exportCarfinObject->cellRange()->count().k()); - formatter.add(carfinUi.lgrCellCount().i()); - formatter.add(carfinUi.lgrCellCount().j()); - formatter.add(carfinUi.lgrCellCount().k()); + formatter.add(exportCarfinObject->lgrCellCount().i()); + formatter.add(exportCarfinObject->lgrCellCount().j()); + formatter.add(exportCarfinObject->lgrCellCount().k()); - formatter.add(carfinUi.maxWellCount()); + formatter.add(exportCarfinObject->maxWellCount()); - if (!carfinUi.gridName().isEmpty()) + if (!exportCarfinObject->gridName().isEmpty()) { - formatter.add(carfinUi.gridName()); + formatter.add(exportCarfinObject->gridName()); } formatter.rowCompleted(); formatter.tableCompleted(); + + } + else + { + RiaApplication::instance()->project()->dialogData()->setExportCarfinDataFromString(exportCarfinDataAsString); } } diff --git a/ApplicationCode/Commands/ExportCommands/RicExportCarfinUi.cpp b/ApplicationCode/Commands/ExportCommands/RicExportCarfinUi.cpp index 5b0a3d6a82..7abbe8018e 100644 --- a/ApplicationCode/Commands/ExportCommands/RicExportCarfinUi.cpp +++ b/ApplicationCode/Commands/ExportCommands/RicExportCarfinUi.cpp @@ -56,13 +56,13 @@ RicExportCarfinUi::RicExportCarfinUi() //-------------------------------------------------------------------------------------------------- void RicExportCarfinUi::setCase(RimEclipseCase* rimCase) { - m_caseToApply = rimCase; - m_cellRange->setCase(rimCase); + bool isDifferent = (rimCase != m_caseToApply); - if (rimCase) + setCasePointers(rimCase); + + if (isDifferent) { - QString caseFolder = rimCase->locationOnDisc(); - m_exportFileName = caseFolder + "/carfin.data"; + setDefaultValuesFromCase(); } } @@ -114,6 +114,32 @@ QString RicExportCarfinUi::gridName() const return m_cellRange->gridName(); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RicExportCarfinUi::setCasePointers(RimEclipseCase* rimCase) +{ + m_caseToApply = rimCase; + m_cellRange->setCase(rimCase); +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RicExportCarfinUi::setDefaultValuesFromCase() +{ + if (m_caseToApply) + { + QString caseFolder = m_caseToApply->locationOnDisc(); + m_exportFileName = caseFolder + "/carfin.data"; + } + + m_cellCountI = 2; + m_cellCountJ = 2; + m_cellCountK = 2; + m_maxWellCount = 8; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -136,7 +162,8 @@ void RicExportCarfinUi::fieldChangedByUi(const caf::PdmFieldHandle* changedField { if (changedField == &m_caseToApply) { - setCase(m_caseToApply); + setCasePointers(m_caseToApply); + setDefaultValuesFromCase(); } } diff --git a/ApplicationCode/Commands/ExportCommands/RicExportCarfinUi.h b/ApplicationCode/Commands/ExportCommands/RicExportCarfinUi.h index ab97dfdd74..0e972f533b 100644 --- a/ApplicationCode/Commands/ExportCommands/RicExportCarfinUi.h +++ b/ApplicationCode/Commands/ExportCommands/RicExportCarfinUi.h @@ -50,11 +50,15 @@ public: QString gridName() const; private: + void setCasePointers(RimEclipseCase* rimCase); + void setDefaultValuesFromCase(); + virtual QList calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly) override; virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override; virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute) override; + private: caf::PdmField m_exportFileName; caf::PdmPtrField m_caseToApply; diff --git a/ApplicationCode/ProjectDataModel/CMakeLists_files.cmake b/ApplicationCode/ProjectDataModel/CMakeLists_files.cmake index ca126d25ad..2b66ae7980 100644 --- a/ApplicationCode/ProjectDataModel/CMakeLists_files.cmake +++ b/ApplicationCode/ProjectDataModel/CMakeLists_files.cmake @@ -89,6 +89,7 @@ ${CEE_CURRENT_LIST_DIR}RimCheckableNamedObject.h ${CEE_CURRENT_LIST_DIR}RimGridTimeHistoryCurve.h ${CEE_CURRENT_LIST_DIR}RimGeometrySelectionItem.h ${CEE_CURRENT_LIST_DIR}RimEclipseGeometrySelectionItem.h +${CEE_CURRENT_LIST_DIR}RimDialogData.h ) set (SOURCE_GROUP_SOURCE_FILES @@ -176,6 +177,7 @@ ${CEE_CURRENT_LIST_DIR}RimCheckableNamedObject.cpp ${CEE_CURRENT_LIST_DIR}RimGridTimeHistoryCurve.cpp ${CEE_CURRENT_LIST_DIR}RimGeometrySelectionItem.cpp ${CEE_CURRENT_LIST_DIR}RimEclipseGeometrySelectionItem.cpp +${CEE_CURRENT_LIST_DIR}RimDialogData.cpp ) list(APPEND CODE_HEADER_FILES diff --git a/ApplicationCode/ProjectDataModel/RimDialogData.cpp b/ApplicationCode/ProjectDataModel/RimDialogData.cpp new file mode 100644 index 0000000000..cbb236cd2c --- /dev/null +++ b/ApplicationCode/ProjectDataModel/RimDialogData.cpp @@ -0,0 +1,60 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) 2017 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 +// for more details. +// +///////////////////////////////////////////////////////////////////////////////// + +#include "RimDialogData.h" + +#include "ExportCommands/RicExportCarfinUi.h" + +CAF_PDM_SOURCE_INIT(RimDialogData, "RimDialogData"); + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RimDialogData::RimDialogData() +{ + CAF_PDM_InitObject("Dialog Data", "", "", ""); + + CAF_PDM_InitFieldNoDefault(&m_exportCarfin, "ExportCarfin", "ExportCarfin", "", "", ""); + m_exportCarfin = new RicExportCarfinUi; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RicExportCarfinUi* RimDialogData::exportCarfin() const +{ + return m_exportCarfin; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +QString RimDialogData::exportCarfinDataAsString() const +{ + return m_exportCarfin->writeObjectToXmlString(); +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimDialogData::setExportCarfinDataFromString(const QString& data) +{ + m_exportCarfin->readObjectFromXmlString(data, caf::PdmDefaultObjectFactory::instance()); + m_exportCarfin->resolveReferencesRecursively(); +} + diff --git a/ApplicationCode/ProjectDataModel/RimDialogData.h b/ApplicationCode/ProjectDataModel/RimDialogData.h new file mode 100644 index 0000000000..5934a267c6 --- /dev/null +++ b/ApplicationCode/ProjectDataModel/RimDialogData.h @@ -0,0 +1,43 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) 2017 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 +// for more details. +// +///////////////////////////////////////////////////////////////////////////////// + +#pragma once + +#include "cafPdmObject.h" +#include "cafPdmChildField.h" + +class RicExportCarfinUi; + +//================================================================================================== +/// +/// +//================================================================================================== +class RimDialogData : public caf::PdmObject +{ + CAF_PDM_HEADER_INIT; + +public: + RimDialogData(); + + RicExportCarfinUi* exportCarfin() const; + QString exportCarfinDataAsString() const; + void setExportCarfinDataFromString(const QString& data); + +private: + caf::PdmChildField m_exportCarfin; +}; diff --git a/ApplicationCode/ProjectDataModel/RimProject.cpp b/ApplicationCode/ProjectDataModel/RimProject.cpp index 698a62a9df..d4cdef2d87 100644 --- a/ApplicationCode/ProjectDataModel/RimProject.cpp +++ b/ApplicationCode/ProjectDataModel/RimProject.cpp @@ -31,6 +31,7 @@ #include "RimCaseCollection.h" #include "RimCommandObject.h" #include "RimContextCommandBuilder.h" +#include "RimDialogData.h" #include "RimEclipseCase.h" #include "RimEclipseCaseCollection.h" #include "RimFlowPlotCollection.h" @@ -121,6 +122,11 @@ RimProject::RimProject(void) CAF_PDM_InitField(&m_showPlotWindow, "showPlotWindow", false, "Show Plot Window", "", "", ""); m_showPlotWindow.uiCapability()->setUiHidden(true); + CAF_PDM_InitFieldNoDefault(&m_dialogData, "DialogData", "DialogData", "", "", ""); + m_dialogData = new RimDialogData(); + m_dialogData.uiCapability()->setUiHidden(true); + m_dialogData.uiCapability()->setUiTreeChildrenHidden(true); + // Obsolete fields. The content is moved to OilFields and friends CAF_PDM_InitFieldNoDefault(&casesObsolete, "Reservoirs", "", "", "", ""); casesObsolete.uiCapability()->setUiHidden(true); @@ -771,6 +777,14 @@ void RimProject::reloadCompletionTypeResultsInAllViews() removeEclipseResultAndRedrawAllViews(RiaDefines::DYNAMIC_NATIVE, RiaDefines::completionTypeResultName()); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RimDialogData* RimProject::dialogData() const +{ + return m_dialogData; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/RimProject.h b/ApplicationCode/ProjectDataModel/RimProject.h index e25c51f622..4c0e4aceb6 100644 --- a/ApplicationCode/ProjectDataModel/RimProject.h +++ b/ApplicationCode/ProjectDataModel/RimProject.h @@ -34,6 +34,7 @@ class RigMainGrid; class RimCase; class RimCommandObject; +class RimDialogData; class RimEclipseCase; class RimIdenticalGridCaseGroup; class RimMainPlotCollection; @@ -110,6 +111,7 @@ public: void reloadCompletionTypeResultsInAllViews(); + RimDialogData* dialogData() const; protected: // Overridden methods @@ -126,6 +128,9 @@ private: private: caf::PdmField m_projectFileVersionString; + caf::PdmChildField m_dialogData; + + caf::PdmField m_show3DWindow; caf::PdmField m_showPlotWindow;