#1677 Store dialog data in project file

This commit is contained in:
Magne Sjaastad
2017-06-30 16:14:15 +02:00
parent f8f57d3184
commit 78a779424f
8 changed files with 189 additions and 22 deletions

View File

@@ -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 <QAction>
#include <QFile>
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);
}
}

View File

@@ -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();
}
}

View File

@@ -50,11 +50,15 @@ public:
QString gridName() const;
private:
void setCasePointers(RimEclipseCase* rimCase);
void setDefaultValuesFromCase();
virtual QList<caf::PdmOptionItemInfo> 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<QString> m_exportFileName;
caf::PdmPtrField<RimEclipseCase*> m_caseToApply;

View File

@@ -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

View File

@@ -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 <http://www.gnu.org/licenses/gpl.html>
// 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();
}

View File

@@ -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 <http://www.gnu.org/licenses/gpl.html>
// 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<RicExportCarfinUi*> m_exportCarfin;
};

View File

@@ -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;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -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<QString> m_projectFileVersionString;
caf::PdmChildField<RimDialogData*> m_dialogData;
caf::PdmField<bool> m_show3DWindow;
caf::PdmField<bool> m_showPlotWindow;