///////////////////////////////////////////////////////////////////////////////// // // Copyright (C) 2011- Statoil ASA // Copyright (C) 2013- Ceetron Solutions AS // Copyright (C) 2011-2012 Ceetron AS // // 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 "RimEclipseInputProperty.h" #include "RigCaseCellResultsData.h" #include "RigEclipseCaseData.h" #include "RimEclipseInputCase.h" #include "RimEclipseResultDefinition.h" #include "cafPdmUiLineEditor.h" #include "cvfAssert.h" #include namespace caf { template <> void RimEclipseInputProperty::ResolveStateEnum::setUp() { addItem( RimEclipseInputProperty::UNKNOWN, "UNKNOWN", "Unknown" ); addItem( RimEclipseInputProperty::FILE_MISSING, "FILE_MISSING", "No data loaded, can't find the file" ); addItem( RimEclipseInputProperty::KEYWORD_NOT_IN_FILE, "KEYWORD_NOT_IN_FILE", "No data loaded, can't find the keyword" ); addItem( RimEclipseInputProperty::RESOLVED_NOT_SAVED, "RESOLVED_NOT_SAVED", "Ok, but not saved" ); addItem( RimEclipseInputProperty::RESOLVED, "RESOLVED", "Loaded, Ok" ); setDefault( RimEclipseInputProperty::UNKNOWN ); } } // namespace caf CAF_PDM_SOURCE_INIT( RimEclipseInputProperty, "RimInputProperty" ); //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RimEclipseInputProperty::RimEclipseInputProperty() { CAF_PDM_InitObject( "Input Property", ":/EclipseInput48x48.png" ); CAF_PDM_InitField( &resultName, "ResultName", QString(), "Result Name" ); CAF_PDM_InitField( &eclipseKeyword, "EclipseKeyword", QString(), "Eclipse Keyword" ); CAF_PDM_InitFieldNoDefault( &fileName, "FileName", "Filename" ); CAF_PDM_InitField( &resolvedState, "ResolvedState", (ResolveStateEnum)UNKNOWN, "Data State" ); resolvedState.uiCapability()->setUiReadOnly( true ); resolvedState.xmlCapability()->disableIO(); resolvedState.uiCapability()->setUiEditorTypeName( caf::PdmUiLineEditor::uiEditorTypeName() ); fileName.uiCapability()->setUiReadOnly( true ); setDeletable( true ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RimEclipseInputProperty::~RimEclipseInputProperty() { } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimEclipseInputProperty::fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) { if ( changedField == &resultName ) { RimEclipseInputCase* rimCase = nullptr; this->firstAncestorOrThisOfType( rimCase ); if ( rimCase ) { bool anyNameUpdated = false; QString oldName = oldValue.toString(); QString newName = newValue.toString(); RigCaseCellResultsData* matrixResults = rimCase->eclipseCaseData()->results( RiaDefines::PorosityModelType::MATRIX_MODEL ); if ( matrixResults ) { if ( matrixResults->updateResultName( RiaDefines::ResultCatType::INPUT_PROPERTY, oldName, newName ) ) { anyNameUpdated = true; } } RigCaseCellResultsData* fracResults = rimCase->eclipseCaseData()->results( RiaDefines::PorosityModelType::FRACTURE_MODEL ); if ( fracResults ) { if ( fracResults->updateResultName( RiaDefines::ResultCatType::INPUT_PROPERTY, oldName, newName ) ) { anyNameUpdated = true; } } if ( anyNameUpdated ) { std::vector resDefs; rimCase->descendantsIncludingThisOfType( resDefs ); for ( auto it : resDefs ) { if ( it->resultVariable() == oldName ) { it->setResultVariable( newName ); } it->loadDataAndUpdate(); it->updateAnyFieldHasChanged(); } } } } }