From c51aa91c42d5f7011d031ac600d9c1366ce7db23 Mon Sep 17 00:00:00 2001 From: Gaute Lindkvist Date: Tue, 10 Mar 2020 14:11:22 +0100 Subject: [PATCH] #5632 Python method commands (#5649) * General PdmObjectMethods for scripting. --- .../Application/RiaApplication.cpp | 4 +- .../Core/CMakeLists_files.cmake | 8 - .../Core/RicfCommandObject.cpp | 4 +- .../Core/RicfCommandObject.h | 73 +-- .../Core/RicfCommandResponse.h | 62 -- .../Core/RicfFieldCapability.h | 260 --------- .../Core/RicfFieldHandle.cpp | 35 -- .../Core/RicfFieldHandle.h | 48 -- .../Core/RicfObjectCapability.h | 55 -- .../Core/RifcCommandFileReader.cpp | 6 +- .../CommandFileInterface/RicfCloneView.cpp | 9 +- .../CommandFileInterface/RicfCloneView.h | 2 +- .../CommandFileInterface/RicfCloseProject.cpp | 4 +- .../CommandFileInterface/RicfCloseProject.h | 2 +- .../RicfComputeCaseGroupStatistics.cpp | 14 +- .../RicfComputeCaseGroupStatistics.h | 2 +- .../RicfCreateGridCaseGroup.cpp | 10 +- .../RicfCreateGridCaseGroup.h | 2 +- .../RicfCreateLgrForCompletions.cpp | 28 +- .../RicfCreateLgrForCompletions.h | 2 +- .../RicfCreateMultipleFractures.cpp | 45 +- .../RicfCreateMultipleFractures.h | 2 +- .../RicfCreateSaturationPressurePlots.cpp | 12 +- .../RicfCreateSaturationPressurePlots.h | 4 +- .../RicfCreateStatisticsCase.cpp | 9 +- .../RicfCreateStatisticsCase.h | 2 +- .../CommandFileInterface/RicfCreateView.cpp | 9 +- .../CommandFileInterface/RicfCreateView.h | 2 +- ...RicfCreateWellBoreStabilityPlotFeature.cpp | 16 +- .../RicfCreateWellBoreStabilityPlotFeature.h | 2 +- .../RicfExportFlowCharacteristics.cpp | 26 +- .../RicfExportFlowCharacteristics.h | 2 +- .../RicfExportLgrForCompletions.cpp | 28 +- .../RicfExportLgrForCompletions.h | 2 +- .../CommandFileInterface/RicfExportMsw.cpp | 28 +- .../CommandFileInterface/RicfExportMsw.h | 4 +- .../RicfExportMultiCaseSnapshots.cpp | 14 +- .../RicfExportMultiCaseSnapshots.h | 2 +- .../RicfExportProperty.cpp | 25 +- .../CommandFileInterface/RicfExportProperty.h | 2 +- .../RicfExportPropertyInViews.cpp | 19 +- .../RicfExportPropertyInViews.h | 2 +- .../RicfExportSimWellFractureCompletions.cpp | 50 +- .../RicfExportSimWellFractureCompletions.h | 2 +- .../RicfExportSnapshots.cpp | 20 +- .../RicfExportSnapshots.h | 2 +- .../RicfExportVisibleCells.cpp | 49 +- .../RicfExportVisibleCells.h | 2 +- .../RicfExportWellLogPlotData.cpp | 24 +- .../RicfExportWellLogPlotData.h | 2 +- .../RicfExportWellPathCompletions.cpp | 112 ++-- .../RicfExportWellPathCompletions.h | 2 +- .../RicfExportWellPaths.cpp | 13 +- .../RicfExportWellPaths.h | 2 +- .../RicfImportFormationNames.cpp | 14 +- .../RicfImportFormationNames.h | 2 +- .../RicfImportWellLogFiles.cpp | 14 +- .../RicfImportWellLogFiles.h | 2 +- .../CommandFileInterface/RicfLoadCase.cpp | 10 +- .../CommandFileInterface/RicfLoadCase.h | 2 +- .../CommandFileInterface/RicfOpenProject.cpp | 10 +- .../CommandFileInterface/RicfOpenProject.h | 2 +- .../CommandFileInterface/RicfReplaceCase.cpp | 24 +- .../CommandFileInterface/RicfReplaceCase.h | 4 +- .../RicfReplaceSourceCases.cpp | 16 +- .../RicfReplaceSourceCases.h | 2 +- .../RicfRunOctaveScript.cpp | 12 +- .../RicfRunOctaveScript.h | 4 +- .../RicfScaleFractureTemplate.cpp | 24 +- .../RicfScaleFractureTemplate.h | 2 +- .../RicfSetExportFolder.cpp | 14 +- .../RicfSetExportFolder.h | 2 +- .../RicfSetFractureContainment.cpp | 18 +- .../RicfSetFractureContainment.h | 2 +- .../RicfSetMainWindowSize.cpp | 10 +- .../RicfSetMainWindowSize.h | 2 +- .../RicfSetPlotWindowSize.cpp | 12 +- .../RicfSetPlotWindowSize.h | 2 +- .../CommandFileInterface/RicfSetStartDir.cpp | 12 +- .../CommandFileInterface/RicfSetStartDir.h | 2 +- .../CommandFileInterface/RicfSetTimeStep.cpp | 16 +- .../CommandFileInterface/RicfSetTimeStep.h | 2 +- .../RicSaveProjectAsFeature.cpp | 12 +- .../RicSaveProjectAsFeature.h | 2 +- .../RicSaveProjectFeature.cpp | 8 +- .../RicSaveProjectFeature.h | 2 +- .../RicExportContourMapToTextFeature.cpp | 27 +- .../RicExportContourMapToTextFeature.h | 2 +- .../Commands/RicNewMultiPlotFeature.cpp | 4 +- .../Commands/RicNewMultiPlotFeature.h | 2 +- .../RicNewSummaryEnsembleCurveSetFeature.cpp | 4 +- .../RicNewSummaryEnsembleCurveSetFeature.h | 2 +- .../RicNewSummaryPlotFeature.cpp | 79 ++- .../RicNewSummaryPlotFeature.h | 26 + .../WellPathCommands/RicImportWellPaths.cpp | 22 +- .../WellPathCommands/RicImportWellPaths.h | 2 +- .../GrpcInterface/GrpcProtos/PdmObject.proto | 33 +- .../rips/PythonExamples/new_summary_plot.py | 13 + .../GrpcInterface/Python/rips/pdmobject.py | 32 +- .../GrpcInterface/RiaGrpcCommandService.cpp | 6 +- .../GrpcInterface/RiaGrpcPdmObjectService.cpp | 164 ++++-- .../GrpcInterface/RiaGrpcPdmObjectService.h | 40 +- .../GrpcInterface/RiaGrpcServiceInterface.cpp | 46 +- .../GrpcInterface/RiaGrpcServiceInterface.h | 4 +- .../ProjectDataModel/Rim3dView.cpp | 37 +- ApplicationCode/ProjectDataModel/RimCase.cpp | 14 +- .../ProjectDataModel/RimEclipseCase.cpp | 2 + .../RimEclipseResultDefinition.cpp | 33 +- .../RimEclipseStatisticsCase.cpp | 89 ++- .../ProjectDataModel/RimEclipseView.cpp | 2 + .../ProjectDataModel/RimGeoMechCase.cpp | 2 + .../RimIdenticalGridCaseGroup.cpp | 10 +- .../ProjectDataModel/RimPlotWindow.cpp | 5 +- .../ProjectDataModel/RimSimWellInView.cpp | 4 +- .../ProjectDataModel/RimWbsParameters.cpp | 146 +++-- .../RimWellBoreStabilityPlot.cpp | 2 + .../ProjectDataModel/RimWellLogPlot.cpp | 18 +- .../ProjectDataModel/RimWellPath.cpp | 3 +- .../Summary/RimFileSummaryCase.cpp | 5 +- .../Summary/RimGridSummaryCase.cpp | 2 + .../Summary/RimSummaryCase.cpp | 16 +- .../Summary/RimSummaryPlot.cpp | 15 +- .../Summary/RimSummaryPlotCollection.cpp | 5 +- .../Summary/RimSummaryPlotCollection.h | 2 + .../UnitTests/RifcCommandCore-Test.cpp | 39 +- Fwk/AppFwk/cafPdmScripting/.clang-format | 79 +++ Fwk/AppFwk/cafPdmScripting/.clang-tidy | 5 + Fwk/AppFwk/cafPdmScripting/CMakeLists.txt | 10 +- .../cafPdmFieldIOScriptability.cpp | 108 ++-- .../cafPdmFieldIOScriptability.h | 529 ++++++++++++++++++ .../cafPdmFieldScriptability.cpp | 44 +- .../cafPdmFieldScriptability.h | 90 +-- .../cafPdmScripting/cafPdmObjectMethod.cpp | 95 ++++ .../cafPdmScripting/cafPdmObjectMethod.h | 151 +++++ .../cafPdmObjectScriptability.cpp | 83 +-- .../cafPdmObjectScriptability.h | 84 +++ .../cafPdmObjectScriptabilityRegister.h | 28 +- .../cafPdmScripting/cafPdmPythonGenerator.cpp | 347 ++++++------ .../cafPdmScripting/cafPdmPythonGenerator.h | 5 +- .../cafPdmScripting/cafPdmScriptResponse.cpp | 64 ++- .../cafPdmScripting/cafPdmScriptResponse.h | 83 +++ .../cafPdmCore/cafPdmPtrArrayField.h | 5 + .../cafPdmCore/cafPdmPtrArrayField.inl | 30 + .../cafInternalPdmXmlFieldCapability.h | 2 +- .../cafPdmXml/cafPdmDefaultObjectFactory.h | 3 - 145 files changed, 2646 insertions(+), 1587 deletions(-) delete mode 100644 ApplicationCode/CommandFileInterface/Core/RicfCommandResponse.h delete mode 100644 ApplicationCode/CommandFileInterface/Core/RicfFieldCapability.h delete mode 100644 ApplicationCode/CommandFileInterface/Core/RicfFieldHandle.cpp delete mode 100644 ApplicationCode/CommandFileInterface/Core/RicfFieldHandle.h delete mode 100644 ApplicationCode/CommandFileInterface/Core/RicfObjectCapability.h create mode 100644 ApplicationCode/GrpcInterface/Python/rips/PythonExamples/new_summary_plot.py create mode 100644 Fwk/AppFwk/cafPdmScripting/.clang-format create mode 100644 Fwk/AppFwk/cafPdmScripting/.clang-tidy rename ApplicationCode/CommandFileInterface/Core/RicfFieldCapability.cpp => Fwk/AppFwk/cafPdmScripting/cafPdmFieldIOScriptability.cpp (54%) create mode 100644 Fwk/AppFwk/cafPdmScripting/cafPdmFieldIOScriptability.h create mode 100644 Fwk/AppFwk/cafPdmScripting/cafPdmObjectMethod.cpp create mode 100644 Fwk/AppFwk/cafPdmScripting/cafPdmObjectMethod.h rename ApplicationCode/CommandFileInterface/Core/RicfObjectCapability.cpp => Fwk/AppFwk/cafPdmScripting/cafPdmObjectScriptability.cpp (68%) create mode 100644 Fwk/AppFwk/cafPdmScripting/cafPdmObjectScriptability.h rename ApplicationCode/CommandFileInterface/Core/RicfCommandResponse.cpp => Fwk/AppFwk/cafPdmScripting/cafPdmScriptResponse.cpp (54%) create mode 100644 Fwk/AppFwk/cafPdmScripting/cafPdmScriptResponse.h diff --git a/ApplicationCode/Application/RiaApplication.cpp b/ApplicationCode/Application/RiaApplication.cpp index ba88dd6634..e459598db2 100644 --- a/ApplicationCode/Application/RiaApplication.cpp +++ b/ApplicationCode/Application/RiaApplication.cpp @@ -35,8 +35,6 @@ #include "HoloLensCommands/RicHoloLensSessionManager.h" #include "RicImportGeneralDataFeature.h" #include "RicfCommandFileExecutor.h" -#include "RicfFieldHandle.h" -#include "RicfObjectCapability.h" #include "Rim2dIntersectionViewCollection.h" #include "RimAnnotationCollection.h" @@ -1260,7 +1258,7 @@ QVariant RiaApplication::cacheDataObject( const QString& key ) const //-------------------------------------------------------------------------------------------------- void RiaApplication::executeCommandFile( const QString& commandFile ) { - QFile file( commandFile ); + QFile file( commandFile ); caf::PdmScriptIOMessages messages; if ( !file.open( QIODevice::ReadOnly | QIODevice::Text ) ) { diff --git a/ApplicationCode/CommandFileInterface/Core/CMakeLists_files.cmake b/ApplicationCode/CommandFileInterface/Core/CMakeLists_files.cmake index 67d97ac1d3..89b16d4d82 100644 --- a/ApplicationCode/CommandFileInterface/Core/CMakeLists_files.cmake +++ b/ApplicationCode/CommandFileInterface/Core/CMakeLists_files.cmake @@ -1,19 +1,11 @@ set (SOURCE_GROUP_HEADER_FILES ${CMAKE_CURRENT_LIST_DIR}/RicfCommandObject.h -${CMAKE_CURRENT_LIST_DIR}/RicfCommandResponse.h -${CMAKE_CURRENT_LIST_DIR}/RicfFieldCapability.h -${CMAKE_CURRENT_LIST_DIR}/RicfFieldHandle.h -${CMAKE_CURRENT_LIST_DIR}/RicfObjectCapability.h ${CMAKE_CURRENT_LIST_DIR}/RifcCommandFileReader.h ) set (SOURCE_GROUP_SOURCE_FILES ${CMAKE_CURRENT_LIST_DIR}/RicfCommandObject.cpp -${CMAKE_CURRENT_LIST_DIR}/RicfCommandResponse.cpp -${CMAKE_CURRENT_LIST_DIR}/RicfFieldCapability.cpp -${CMAKE_CURRENT_LIST_DIR}/RicfFieldHandle.cpp -${CMAKE_CURRENT_LIST_DIR}/RicfObjectCapability.cpp ${CMAKE_CURRENT_LIST_DIR}/RifcCommandFileReader.cpp ) diff --git a/ApplicationCode/CommandFileInterface/Core/RicfCommandObject.cpp b/ApplicationCode/CommandFileInterface/Core/RicfCommandObject.cpp index 4bcf181958..ce4b6cf58b 100644 --- a/ApplicationCode/CommandFileInterface/Core/RicfCommandObject.cpp +++ b/ApplicationCode/CommandFileInterface/Core/RicfCommandObject.cpp @@ -18,13 +18,11 @@ #include "RicfCommandObject.h" -#include "cafPdmPythonGenerator.h" - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RicfCommandObject::RicfCommandObject() - : RicfObjectCapability( this, false ) + : PdmObjectScriptability( this, false ) { } diff --git a/ApplicationCode/CommandFileInterface/Core/RicfCommandObject.h b/ApplicationCode/CommandFileInterface/Core/RicfCommandObject.h index b670dc5343..784bd106b2 100644 --- a/ApplicationCode/CommandFileInterface/Core/RicfCommandObject.h +++ b/ApplicationCode/CommandFileInterface/Core/RicfCommandObject.h @@ -17,66 +17,11 @@ ///////////////////////////////////////////////////////////////////////////////// #pragma once -#include "RicfCommandResponse.h" -#include "RicfFieldCapability.h" -#include "RicfObjectCapability.h" #include "cafCmdFeature.h" #include "cafPdmObject.h" -#include "cafPdmObjectScriptabilityRegister.h" -#include "cafPdmPythonGenerator.h" - -//================================================================================================== -// -// -// -//================================================================================================== -class RicfCommandObject : public caf::PdmObject, public RicfObjectCapability -{ -public: - RicfCommandObject(); - ~RicfCommandObject() override; - - virtual RicfCommandResponse execute() = 0; -}; - -#define RICF_InitField( field, keyword, default, uiName, iconResourceName, toolTip, whatsThis ) \ - CAF_PDM_InitField( field, \ - keyword, \ - default, \ - uiName, \ - iconResourceName, \ - caf::PdmPythonGenerator::pythonHelpString( toolTip, keyword ), \ - whatsThis ); \ - AddRicfCapabilityToField( field, keyword ) - -#define RICF_InitFieldNoDefault( field, keyword, uiName, iconResourceName, toolTip, whatsThis ) \ - CAF_PDM_InitFieldNoDefault( field, \ - keyword, \ - uiName, \ - iconResourceName, \ - caf::PdmPythonGenerator::pythonHelpString( toolTip, keyword ), \ - whatsThis ); \ - AddRicfCapabilityToField( field, keyword ) - -#define RICF_InitFieldTranslated( field, keyword, scriptKeyword, default, uiName, iconResourceName, toolTip, whatsThis ) \ - CAF_PDM_InitField( field, \ - keyword, \ - default, \ - uiName, \ - iconResourceName, \ - caf::PdmPythonGenerator::pythonHelpString( toolTip, scriptKeyword ), \ - whatsThis ); \ - AddRicfCapabilityToField( field, scriptKeyword ) - -#define RICF_InitFieldNoDefaultTranslated( field, keyword, scriptKeyword, uiName, iconResourceName, toolTip, whatsThis ) \ - CAF_PDM_InitFieldNoDefault( field, \ - keyword, \ - uiName, \ - iconResourceName, \ - caf::PdmPythonGenerator::pythonHelpString( toolTip, scriptKeyword ), \ - whatsThis ); \ - AddRicfCapabilityToField( field, scriptKeyword ) +#include "cafPdmObjectScriptability.h" +#include "cafPdmScriptResponse.h" #define RICF_HEADER_INIT \ CAF_CMD_HEADER_INIT; \ @@ -91,3 +36,17 @@ public: } \ CAF_FACTORY_REGISTER2( caf::CmdFeature, ClassName, std::string, ClassName::idNameStatic() ); \ CAF_PDM_SOURCE_INIT( ClassName, CommandKeyword ) + +//================================================================================================== +// +// +// +//================================================================================================== +class RicfCommandObject : public caf::PdmObject, public caf::PdmObjectScriptability +{ +public: + RicfCommandObject(); + ~RicfCommandObject() override; + + virtual caf::PdmScriptResponse execute() = 0; +}; diff --git a/ApplicationCode/CommandFileInterface/Core/RicfCommandResponse.h b/ApplicationCode/CommandFileInterface/Core/RicfCommandResponse.h deleted file mode 100644 index bd556ccc9b..0000000000 --- a/ApplicationCode/CommandFileInterface/Core/RicfCommandResponse.h +++ /dev/null @@ -1,62 +0,0 @@ -///////////////////////////////////////////////////////////////////////////////// -// -// Copyright (C) 2019- Equinor 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 "cafPdmPointer.h" - -#include -#include - -#include - -//================================================================================================== -// -// Command response which contains status and possibly a result -// -//================================================================================================== -class RicfCommandResponse -{ -public: - // Status in order of severity from ok to critical - enum Status - { - COMMAND_OK, - COMMAND_WARNING, - COMMAND_ERROR - }; - -public: - RicfCommandResponse( Status status = COMMAND_OK, const QString& message = "" ); - explicit RicfCommandResponse( caf::PdmObject* ok_result ); - - Status status() const; - QString sanitizedResponseMessage() const; - QStringList messages() const; - caf::PdmObject* result() const; - void setResult( caf::PdmObject* result ); - void updateStatus( Status status, const QString& message ); - -private: - static QString statusLabel( Status status ); - -private: - Status m_status; - QStringList m_messages; - std::unique_ptr m_result; -}; diff --git a/ApplicationCode/CommandFileInterface/Core/RicfFieldCapability.h b/ApplicationCode/CommandFileInterface/Core/RicfFieldCapability.h deleted file mode 100644 index c684466cc3..0000000000 --- a/ApplicationCode/CommandFileInterface/Core/RicfFieldCapability.h +++ /dev/null @@ -1,260 +0,0 @@ -///////////////////////////////////////////////////////////////////////////////// -// -// 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 "RicfFieldHandle.h" - -#include "cafAppEnum.h" -#include "cafPdmScriptIOMessages.h" - -#include "cvfColor3.h" - -#include -#include - -template -struct RicfFieldIOHandler -{ - static void writeToField( DataType& fieldValue, - QTextStream& inputStream, - caf::PdmScriptIOMessages* errorMessageContainer, - bool stringsAreQuoted = true ) - { - inputStream >> fieldValue; - if ( inputStream.status() == QTextStream::ReadCorruptData ) - { - errorMessageContainer->addError( "Argument value is unreadable in the argument: \"" + - errorMessageContainer->currentArgument + "\" in the command: \"" + - errorMessageContainer->currentCommand + "\"" ); - - inputStream.setStatus( QTextStream::Ok ); - } - } - - static void readFromField( const DataType& fieldValue, - QTextStream& outputStream, - bool quoteStrings = true, - bool quoteNonBuiltins = false ) - { - outputStream << fieldValue; - } -}; - -template <> -struct RicfFieldIOHandler -{ - static void writeToField( QString& fieldValue, - QTextStream& inputStream, - caf::PdmScriptIOMessages* errorMessageContainer, - bool stringsAreQuoted = true ); - static void readFromField( const QString& fieldValue, - QTextStream& outputStream, - bool quoteStrings = true, - bool quoteNonBuiltins = false ); -}; - -template <> -struct RicfFieldIOHandler -{ - static void writeToField( bool& fieldValue, - QTextStream& inputStream, - caf::PdmScriptIOMessages* errorMessageContainer, - bool stringsAreQuoted = true ); - static void readFromField( const bool& fieldValue, - QTextStream& outputStream, - bool quoteStrings = true, - bool quoteNonBuiltins = false ); -}; - -template <> -struct RicfFieldIOHandler -{ - static void writeToField( cvf::Color3f& fieldValue, - QTextStream& inputStream, - caf::PdmScriptIOMessages* errorMessageContainer, - bool stringsAreQuoted = true ); - static void readFromField( const cvf::Color3f& fieldValue, - QTextStream& outputStream, - bool quoteStrings = true, - bool quoteNonBuiltins = false ); -}; - -template -struct RicfFieldIOHandler> -{ - static void writeToField( caf::AppEnum& fieldValue, - QTextStream& inputStream, - caf::PdmScriptIOMessages* errorMessageContainer, - bool stringsAreQuoted = true ) - { - errorMessageContainer->skipWhiteSpaceWithLineNumberCount( inputStream ); - QString accumulatedFieldValue; - QChar nextChar; - QChar currentChar; - while ( !inputStream.atEnd() ) - { - nextChar = errorMessageContainer->peekNextChar( inputStream ); - if ( nextChar.isLetterOrNumber() || nextChar == QChar( '_' ) ) - { - currentChar = errorMessageContainer->readCharWithLineNumberCount( inputStream ); - accumulatedFieldValue += currentChar; - } - else - { - break; - } - } - if ( !fieldValue.setFromText( accumulatedFieldValue ) ) - { - // Unexpected enum value - // Error message - errorMessageContainer->addError( "Argument must be valid enum value. " + - errorMessageContainer->currentArgument + "\" argument of the command: \"" + - errorMessageContainer->currentCommand + "\"" ); - } - } - - static void readFromField( const caf::AppEnum& fieldValue, - QTextStream& outputStream, - bool quoteStrings = true, - bool quoteNonBuiltins = false ) - { - if ( quoteNonBuiltins ) - { - outputStream << "\"" << fieldValue << "\""; - } - else - { - outputStream << fieldValue; - } - } -}; - -template -struct RicfFieldIOHandler> -{ - static void writeToField( std::vector& fieldValue, - QTextStream& inputStream, - caf::PdmScriptIOMessages* errorMessageContainer, - bool stringsAreQuoted = true ) - { - errorMessageContainer->skipWhiteSpaceWithLineNumberCount( inputStream ); - QChar chr = errorMessageContainer->readCharWithLineNumberCount( inputStream ); - if ( chr == QChar( '[' ) ) - { - while ( !inputStream.atEnd() ) - { - errorMessageContainer->skipWhiteSpaceWithLineNumberCount( inputStream ); - QChar nextChar = errorMessageContainer->peekNextChar( inputStream ); - if ( nextChar == QChar( ']' ) ) - { - nextChar = errorMessageContainer->readCharWithLineNumberCount( inputStream ); - break; - } - else if ( nextChar == QChar( ',' ) ) - { - nextChar = errorMessageContainer->readCharWithLineNumberCount( inputStream ); - errorMessageContainer->skipWhiteSpaceWithLineNumberCount( inputStream ); - } - - T value; - RicfFieldIOHandler::writeToField( value, inputStream, errorMessageContainer, true ); - fieldValue.push_back( value ); - } - } - else - { - errorMessageContainer->addError( "Array argument is missing start '['. " + - errorMessageContainer->currentArgument + "\" argument of the command: \"" + - errorMessageContainer->currentCommand + "\"" ); - } - } - - static void readFromField( const std::vector& fieldValue, - QTextStream& outputStream, - bool quoteStrings = true, - bool quoteNonBuiltins = false ) - { - outputStream << "["; - for ( size_t i = 0; i < fieldValue.size(); ++i ) - { - RicfFieldIOHandler::readFromField( fieldValue[i], outputStream, quoteNonBuiltins ); - if ( i < fieldValue.size() - 1 ) - { - outputStream << ", "; - } - } - outputStream << "]"; - } -}; - -//================================================================================================== -// -// -// -//================================================================================================== -template -class RicfFieldCapability : public RicfFieldHandle -{ -public: - RicfFieldCapability( FieldType* field, const QString& fieldName, bool giveOwnership ) - : RicfFieldHandle( field, fieldName, giveOwnership ) - { - m_field = field; - } - - // Xml Serializing -public: - void writeToField( QTextStream& inputStream, - caf::PdmObjectFactory* objectFactory, - caf::PdmScriptIOMessages* errorMessageContainer, - bool stringsAreQuoted = true ) override - { - typename FieldType::FieldDataType value; - RicfFieldIOHandler::writeToField( value, - inputStream, - errorMessageContainer, - stringsAreQuoted ); - - if ( this->isIOWriteable() ) - { - m_field->setValue( value ); - } - } - - void readFromField( QTextStream& outputStream, bool quoteStrings = true, bool quoteNonBuiltins = false ) const override - { - RicfFieldIOHandler::readFromField( m_field->value(), - outputStream, - quoteStrings, - quoteNonBuiltins ); - } - -private: - FieldType* m_field; -}; - -template -void AddRicfCapabilityToField( FieldType* field, const QString& fieldName ) -{ - if ( field->template capability>() == nullptr ) - { - new RicfFieldCapability( field, fieldName, true ); - } -} diff --git a/ApplicationCode/CommandFileInterface/Core/RicfFieldHandle.cpp b/ApplicationCode/CommandFileInterface/Core/RicfFieldHandle.cpp deleted file mode 100644 index 08ed08849a..0000000000 --- a/ApplicationCode/CommandFileInterface/Core/RicfFieldHandle.cpp +++ /dev/null @@ -1,35 +0,0 @@ -///////////////////////////////////////////////////////////////////////////////// -// -// 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 "RicfFieldHandle.h" -#include "cafPdmFieldHandle.h" - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -RicfFieldHandle::RicfFieldHandle( caf::PdmFieldHandle* owner, const QString& scriptFieldName, bool giveOwnership ) - : caf::PdmFieldScriptability( owner, scriptFieldName, giveOwnership ) -{ -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -RicfFieldHandle::~RicfFieldHandle() -{ -} diff --git a/ApplicationCode/CommandFileInterface/Core/RicfFieldHandle.h b/ApplicationCode/CommandFileInterface/Core/RicfFieldHandle.h deleted file mode 100644 index deecc13e1d..0000000000 --- a/ApplicationCode/CommandFileInterface/Core/RicfFieldHandle.h +++ /dev/null @@ -1,48 +0,0 @@ -///////////////////////////////////////////////////////////////////////////////// -// -// 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 "cafPdmFieldScriptability.h" - -#include - -namespace caf -{ -class PdmObjectFactory; -class PdmFieldHandle; -class PdmScriptIOMessages; -} // namespace caf - -class QTextStream; - -//================================================================================================== -// -// -// -//================================================================================================== -class RicfFieldHandle : public caf::PdmFieldScriptability -{ -public: - RicfFieldHandle( caf::PdmFieldHandle* owner, const QString& scriptFieldName, bool giveOwnership ); - ~RicfFieldHandle() override; - -private: - caf::PdmFieldHandle* m_owner; - QString m_fieldName; - bool m_IOWriteable; -}; diff --git a/ApplicationCode/CommandFileInterface/Core/RicfObjectCapability.h b/ApplicationCode/CommandFileInterface/Core/RicfObjectCapability.h deleted file mode 100644 index 4f6cd5f83d..0000000000 --- a/ApplicationCode/CommandFileInterface/Core/RicfObjectCapability.h +++ /dev/null @@ -1,55 +0,0 @@ -///////////////////////////////////////////////////////////////////////////////// -// -// 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 "cafPdmObjectCapability.h" - -#include - -#include - -namespace caf -{ -class PdmObject; -class PdmObjectHandle; -class PdmObjectFactory; -class PdmScriptIOMessages; -} // namespace caf - -class QTextStream; - -//================================================================================================== -// -// -// -//================================================================================================== -class RicfObjectCapability : public caf::PdmObjectCapability -{ -public: - RicfObjectCapability( caf::PdmObjectHandle* owner, bool giveOwnership ); - - ~RicfObjectCapability() override; - - void readFields( QTextStream& inputStream, - caf::PdmObjectFactory* objectFactory, - caf::PdmScriptIOMessages* errorMessageContainer ); - void writeFields( QTextStream& outputStream ) const; - -private: - caf::PdmObjectHandle* m_owner; -}; diff --git a/ApplicationCode/CommandFileInterface/Core/RifcCommandFileReader.cpp b/ApplicationCode/CommandFileInterface/Core/RifcCommandFileReader.cpp index 6bda135a7b..98dc4c1fd3 100644 --- a/ApplicationCode/CommandFileInterface/Core/RifcCommandFileReader.cpp +++ b/ApplicationCode/CommandFileInterface/Core/RifcCommandFileReader.cpp @@ -19,9 +19,9 @@ #include "RifcCommandFileReader.h" #include "RicfCommandObject.h" -#include "RicfObjectCapability.h" #include "cafPdmObjectFactory.h" +#include "cafPdmObjectScriptability.h" #include "cafPdmScriptIOMessages.h" #include @@ -127,7 +127,7 @@ std::vector RicfCommandFileReader::readCommands( QTextStream else { readCommands.push_back( cObj ); - auto rcfCap = cObj->capability(); + auto rcfCap = cObj->capability(); errorMessageContainer->currentCommand = commandName; rcfCap->readFields( inputStream, objectFactory, errorMessageContainer ); errorMessageContainer->currentCommand = ""; @@ -144,7 +144,7 @@ void RicfCommandFileReader::writeCommands( QTextStream& outputStream, const std: { for ( const auto& cmdObj : commandsToWrite ) { - auto rcfCap = cmdObj->capability(); + auto rcfCap = cmdObj->capability(); if ( !rcfCap ) continue; outputStream << cmdObj->classKeyword(); diff --git a/ApplicationCode/CommandFileInterface/RicfCloneView.cpp b/ApplicationCode/CommandFileInterface/RicfCloneView.cpp index 09340a232f..e0b8038fb1 100644 --- a/ApplicationCode/CommandFileInterface/RicfCloneView.cpp +++ b/ApplicationCode/CommandFileInterface/RicfCloneView.cpp @@ -14,6 +14,7 @@ #include "Riu3DMainWindowTools.h" +#include "cafPdmFieldIOScriptability.h" #include "cafSelectionManager.h" #include @@ -25,13 +26,13 @@ CAF_PDM_SOURCE_INIT( RicfCloneView, "cloneView" ); //-------------------------------------------------------------------------------------------------- RicfCloneView::RicfCloneView() { - RICF_InitField( &m_viewId, "viewId", -1, "View Id", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_viewId, "viewId", -1, "View Id", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfCloneView::execute() +caf::PdmScriptResponse RicfCloneView::execute() { RimProject* project = RiaApplication::instance()->project(); std::vector allViews; @@ -66,7 +67,7 @@ RicfCommandResponse RicfCloneView::execute() if ( newViewId >= 0 ) { - RicfCommandResponse response; + caf::PdmScriptResponse response; response.setResult( new RicfCreateViewResult( newViewId ) ); return response; } @@ -75,5 +76,5 @@ RicfCommandResponse RicfCloneView::execute() QString error = QString( "cloneView: Could not clone view with id %1" ).arg( m_viewId() ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } diff --git a/ApplicationCode/CommandFileInterface/RicfCloneView.h b/ApplicationCode/CommandFileInterface/RicfCloneView.h index 64e96da95a..706c7d1371 100644 --- a/ApplicationCode/CommandFileInterface/RicfCloneView.h +++ b/ApplicationCode/CommandFileInterface/RicfCloneView.h @@ -34,7 +34,7 @@ class RicfCloneView : public RicfCommandObject public: RicfCloneView(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_viewId; diff --git a/ApplicationCode/CommandFileInterface/RicfCloseProject.cpp b/ApplicationCode/CommandFileInterface/RicfCloseProject.cpp index b6f5e84603..74e1698d1e 100644 --- a/ApplicationCode/CommandFileInterface/RicfCloseProject.cpp +++ b/ApplicationCode/CommandFileInterface/RicfCloseProject.cpp @@ -32,8 +32,8 @@ RicfCloseProject::RicfCloseProject() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfCloseProject::execute() +caf::PdmScriptResponse RicfCloseProject::execute() { RiaApplication::instance()->closeProject(); - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } diff --git a/ApplicationCode/CommandFileInterface/RicfCloseProject.h b/ApplicationCode/CommandFileInterface/RicfCloseProject.h index b0d211fb18..09b6f5edcf 100644 --- a/ApplicationCode/CommandFileInterface/RicfCloseProject.h +++ b/ApplicationCode/CommandFileInterface/RicfCloseProject.h @@ -34,7 +34,7 @@ class RicfCloseProject : public RicfCommandObject public: RicfCloseProject(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: }; diff --git a/ApplicationCode/CommandFileInterface/RicfComputeCaseGroupStatistics.cpp b/ApplicationCode/CommandFileInterface/RicfComputeCaseGroupStatistics.cpp index 9b4aab2908..648c172a7f 100644 --- a/ApplicationCode/CommandFileInterface/RicfComputeCaseGroupStatistics.cpp +++ b/ApplicationCode/CommandFileInterface/RicfComputeCaseGroupStatistics.cpp @@ -30,6 +30,8 @@ #include "RiaApplication.h" #include "RiaLogging.h" +#include "cafPdmFieldIOScriptability.h" + CAF_PDM_SOURCE_INIT( RicfComputeCaseGroupStatistics, "computeCaseGroupStatistics" ); //-------------------------------------------------------------------------------------------------- @@ -37,16 +39,16 @@ CAF_PDM_SOURCE_INIT( RicfComputeCaseGroupStatistics, "computeCaseGroupStatistics //-------------------------------------------------------------------------------------------------- RicfComputeCaseGroupStatistics::RicfComputeCaseGroupStatistics() { - RICF_InitField( &m_groupId, "caseGroupId", -1, "Case Group ID", "", "", "" ); - RICF_InitField( &m_caseIds, "caseIds", std::vector(), "Case IDs", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_groupId, "caseGroupId", -1, "Case Group ID", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_caseIds, "caseIds", std::vector(), "Case IDs", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfComputeCaseGroupStatistics::execute() +caf::PdmScriptResponse RicfComputeCaseGroupStatistics::execute() { - RicfCommandResponse response; + caf::PdmScriptResponse response; std::vector caseIds = m_caseIds.v(); @@ -83,7 +85,7 @@ RicfCommandResponse RicfComputeCaseGroupStatistics::execute() "statistics case, cannot compute statistics." ) .arg( caseId ); RiaLogging::warning( warning ); - response.updateStatus( RicfCommandResponse::COMMAND_WARNING, warning ); + response.updateStatus( caf::PdmScriptResponse::COMMAND_WARNING, warning ); } foundCase = true; break; @@ -99,7 +101,7 @@ RicfCommandResponse RicfComputeCaseGroupStatistics::execute() QString( "computeCaseGroupStatistics: Could not find statistics case with ID %1." ).arg( caseId ); RiaLogging::warning( warning ); - response.updateStatus( RicfCommandResponse::COMMAND_WARNING, warning ); + response.updateStatus( caf::PdmScriptResponse::COMMAND_WARNING, warning ); } } return response; diff --git a/ApplicationCode/CommandFileInterface/RicfComputeCaseGroupStatistics.h b/ApplicationCode/CommandFileInterface/RicfComputeCaseGroupStatistics.h index 4ce4dd0f42..0dc109073e 100644 --- a/ApplicationCode/CommandFileInterface/RicfComputeCaseGroupStatistics.h +++ b/ApplicationCode/CommandFileInterface/RicfComputeCaseGroupStatistics.h @@ -34,7 +34,7 @@ class RicfComputeCaseGroupStatistics : public RicfCommandObject public: RicfComputeCaseGroupStatistics(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_groupId; diff --git a/ApplicationCode/CommandFileInterface/RicfCreateGridCaseGroup.cpp b/ApplicationCode/CommandFileInterface/RicfCreateGridCaseGroup.cpp index ea009fee9b..13e528e674 100644 --- a/ApplicationCode/CommandFileInterface/RicfCreateGridCaseGroup.cpp +++ b/ApplicationCode/CommandFileInterface/RicfCreateGridCaseGroup.cpp @@ -23,6 +23,8 @@ #include "RimIdenticalGridCaseGroup.h" +#include "cafPdmFieldIOScriptability.h" + #include #include #include @@ -47,13 +49,13 @@ CAF_PDM_SOURCE_INIT( RicfCreateGridCaseGroup, "createGridCaseGroup" ); //-------------------------------------------------------------------------------------------------- RicfCreateGridCaseGroup::RicfCreateGridCaseGroup() { - RICF_InitFieldNoDefault( &m_casePaths, "casePaths", "List of Paths to Case Files", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_casePaths, "casePaths", "List of Paths to Case Files", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfCreateGridCaseGroup::execute() +caf::PdmScriptResponse RicfCreateGridCaseGroup::execute() { QStringList casePaths; for ( QString casePath : m_casePaths() ) @@ -71,10 +73,10 @@ RicfCommandResponse RicfCreateGridCaseGroup::execute() if ( RiaImportEclipseCaseTools::addEclipseCases( casePaths, &caseGroup ) && caseGroup ) { - RicfCommandResponse response; + caf::PdmScriptResponse response; response.setResult( new RicfCreateGridCaseGroupResult( caseGroup->groupId(), caseGroup->name() ) ); return response; } - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, "Could not load grid case group" ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, "Could not load grid case group" ); } diff --git a/ApplicationCode/CommandFileInterface/RicfCreateGridCaseGroup.h b/ApplicationCode/CommandFileInterface/RicfCreateGridCaseGroup.h index 7a66cd593f..16b5040fe6 100644 --- a/ApplicationCode/CommandFileInterface/RicfCreateGridCaseGroup.h +++ b/ApplicationCode/CommandFileInterface/RicfCreateGridCaseGroup.h @@ -46,7 +46,7 @@ class RicfCreateGridCaseGroup : public RicfCommandObject public: RicfCreateGridCaseGroup(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField> m_casePaths; diff --git a/ApplicationCode/CommandFileInterface/RicfCreateLgrForCompletions.cpp b/ApplicationCode/CommandFileInterface/RicfCreateLgrForCompletions.cpp index 26ecce8480..2656a0bc3b 100644 --- a/ApplicationCode/CommandFileInterface/RicfCreateLgrForCompletions.cpp +++ b/ApplicationCode/CommandFileInterface/RicfCreateLgrForCompletions.cpp @@ -38,6 +38,8 @@ #include "RiaWellNameComparer.h" #include "cafCmdFeatureManager.h" +#include "cafPdmFieldIOScriptability.h" + #include CAF_PDM_SOURCE_INIT( RicfCreateLgrForCompletions, "createLgrForCompletions" ); @@ -47,19 +49,19 @@ CAF_PDM_SOURCE_INIT( RicfCreateLgrForCompletions, "createLgrForCompletions" ); //-------------------------------------------------------------------------------------------------- RicfCreateLgrForCompletions::RicfCreateLgrForCompletions() { - RICF_InitField( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); - RICF_InitField( &m_timeStep, "timeStep", 0, "Time Step Index", "", "", "" ); - RICF_InitField( &m_wellPathNames, "wellPathNames", std::vector(), "Well Path Names", "", "", "" ); - RICF_InitField( &m_refinementI, "refinementI", -1, "RefinementI", "", "", "" ); - RICF_InitField( &m_refinementJ, "refinementJ", -1, "RefinementJ", "", "", "" ); - RICF_InitField( &m_refinementK, "refinementK", -1, "RefinementK", "", "", "" ); - RICF_InitField( &m_splitType, "splitType", Lgr::SplitTypeEnum(), "SplitType", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_timeStep, "timeStep", 0, "Time Step Index", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_wellPathNames, "wellPathNames", std::vector(), "Well Path Names", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_refinementI, "refinementI", -1, "RefinementI", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_refinementJ, "refinementJ", -1, "RefinementJ", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_refinementK, "refinementK", -1, "RefinementK", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_splitType, "splitType", Lgr::SplitTypeEnum(), "SplitType", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfCreateLgrForCompletions::execute() +caf::PdmScriptResponse RicfCreateLgrForCompletions::execute() { using TOOLS = RicfApplicationTools; @@ -74,7 +76,7 @@ RicfCommandResponse RicfCreateLgrForCompletions::execute() QString error = QString( "createLgrForCompletions: These well paths were not found: " ) + wellsNotFound.join( ", " ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } } @@ -82,7 +84,7 @@ RicfCommandResponse RicfCreateLgrForCompletions::execute() { QString error( "No well paths found" ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } caf::CmdFeatureManager* commandManager = caf::CmdFeatureManager::instance(); @@ -103,7 +105,7 @@ RicfCommandResponse RicfCreateLgrForCompletions::execute() { QString error( QString( "createLgrForCompletions: Could not find case with ID %1" ).arg( m_caseId() ) ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } } @@ -122,7 +124,7 @@ RicfCommandResponse RicfCreateLgrForCompletions::execute() feature->updateViews( eclipseCase ); - RicfCommandResponse response; + caf::PdmScriptResponse response; if ( !wellsIntersectingOtherLgrs.empty() ) { auto wellsList = wellsIntersectingOtherLgrs.join( ", " ); @@ -130,7 +132,7 @@ RicfCommandResponse RicfCreateLgrForCompletions::execute() "LGR(s).Affected wells : " + wellsList ); RiaLogging::warning( warning ); - response.updateStatus( RicfCommandResponse::COMMAND_WARNING, warning ); + response.updateStatus( caf::PdmScriptResponse::COMMAND_WARNING, warning ); } return response; } diff --git a/ApplicationCode/CommandFileInterface/RicfCreateLgrForCompletions.h b/ApplicationCode/CommandFileInterface/RicfCreateLgrForCompletions.h index e04c65d5cd..c139c6fd6e 100644 --- a/ApplicationCode/CommandFileInterface/RicfCreateLgrForCompletions.h +++ b/ApplicationCode/CommandFileInterface/RicfCreateLgrForCompletions.h @@ -39,7 +39,7 @@ class RicfCreateLgrForCompletions : public RicfCommandObject public: RicfCreateLgrForCompletions(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_caseId; diff --git a/ApplicationCode/CommandFileInterface/RicfCreateMultipleFractures.cpp b/ApplicationCode/CommandFileInterface/RicfCreateMultipleFractures.cpp index 92edf8f97c..f6c3c5454f 100644 --- a/ApplicationCode/CommandFileInterface/RicfCreateMultipleFractures.cpp +++ b/ApplicationCode/CommandFileInterface/RicfCreateMultipleFractures.cpp @@ -38,6 +38,7 @@ #include "RiaWellNameComparer.h" #include "cafCmdFeatureManager.h" +#include "cafPdmFieldIOScriptability.h" CAF_PDM_SOURCE_INIT( RicfCreateMultipleFractures, "createMultipleFractures" ); @@ -58,27 +59,27 @@ void AppEnum::setUp() //-------------------------------------------------------------------------------------------------- RicfCreateMultipleFractures::RicfCreateMultipleFractures() { - RICF_InitField( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); - RICF_InitField( &m_wellPathNames, "wellPathNames", std::vector(), "Well Path Names", "", "", "" ); - RICF_InitField( &m_minDistFromWellTd, "minDistFromWellTd", 100.0, "Min Distance From Well TD", "", "", "" ); - RICF_InitField( &m_maxFracturesPerWell, "maxFracturesPerWell", 100, "Max Fractures per Well", "", "", "" ); - RICF_InitField( &m_templateId, "templateId", -1, "Template ID", "", "", "" ); - RICF_InitField( &m_topLayer, "topLayer", -1, "Top Layer", "", "", "" ); - RICF_InitField( &m_baseLayer, "baseLayer", -1, "Base Layer", "", "", "" ); - RICF_InitField( &m_spacing, "spacing", 300.0, "Spacing", "", "", "" ); - RICF_InitField( &m_action, - "action", - caf::AppEnum( MultipleFractures::APPEND_FRACTURES ), - "Action", - "", - "", - "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_wellPathNames, "wellPathNames", std::vector(), "Well Path Names", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_minDistFromWellTd, "minDistFromWellTd", 100.0, "Min Distance From Well TD", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_maxFracturesPerWell, "maxFracturesPerWell", 100, "Max Fractures per Well", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_templateId, "templateId", -1, "Template ID", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_topLayer, "topLayer", -1, "Top Layer", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_baseLayer, "baseLayer", -1, "Base Layer", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_spacing, "spacing", 300.0, "Spacing", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_action, + "action", + caf::AppEnum( MultipleFractures::APPEND_FRACTURES ), + "Action", + "", + "", + "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfCreateMultipleFractures::execute() +caf::PdmScriptResponse RicfCreateMultipleFractures::execute() { using TOOLS = RicfApplicationTools; @@ -99,7 +100,7 @@ RicfCommandResponse RicfCreateMultipleFractures::execute() QString error = QString( "createMultipleFractures: These well paths were not found: %1" ).arg( wellsNotFound.join( ", " ) ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } } @@ -107,7 +108,7 @@ RicfCommandResponse RicfCreateMultipleFractures::execute() { QString error = QString( "createMultipleFractures: Could not find case with ID %1" ).arg( m_caseId ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } if ( !fractureTemplate ) @@ -115,21 +116,21 @@ RicfCommandResponse RicfCreateMultipleFractures::execute() QString error = QString( "createMultipleFractures: Could not find fracture template with ID %1" ).arg( m_templateId ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } if ( wellPaths.empty() ) { QString error( "createMultipleFractures: No wellpaths found" ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } if ( !validateArguments() ) { QString error( "createMultipleFractures: Mandatory argument(s) missing" ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } RicCreateMultipleFracturesOptionItemUi* options = new RicCreateMultipleFracturesOptionItemUi(); @@ -163,7 +164,7 @@ RicfCommandResponse RicfCreateMultipleFractures::execute() if ( m_action == MultipleFractures::APPEND_FRACTURES ) feature->appendFractures(); if ( m_action == MultipleFractures::REPLACE_FRACTURES ) feature->replaceFractures(); } - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/CommandFileInterface/RicfCreateMultipleFractures.h b/ApplicationCode/CommandFileInterface/RicfCreateMultipleFractures.h index abce4d9112..e2c8286577 100644 --- a/ApplicationCode/CommandFileInterface/RicfCreateMultipleFractures.h +++ b/ApplicationCode/CommandFileInterface/RicfCreateMultipleFractures.h @@ -49,7 +49,7 @@ class RicfCreateMultipleFractures : public RicfCommandObject public: RicfCreateMultipleFractures(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: bool validateArguments() const; diff --git a/ApplicationCode/CommandFileInterface/RicfCreateSaturationPressurePlots.cpp b/ApplicationCode/CommandFileInterface/RicfCreateSaturationPressurePlots.cpp index 1869a6e7dd..5aa646b5a4 100644 --- a/ApplicationCode/CommandFileInterface/RicfCreateSaturationPressurePlots.cpp +++ b/ApplicationCode/CommandFileInterface/RicfCreateSaturationPressurePlots.cpp @@ -29,6 +29,8 @@ #include "RimProject.h" #include "RimSaturationPressurePlotCollection.h" +#include "cafPdmFieldIOScriptability.h" + CAF_PDM_SOURCE_INIT( RicfCreateSaturationPressurePlots, "createSaturationPressurePlots" ); //-------------------------------------------------------------------------------------------------- @@ -36,13 +38,13 @@ CAF_PDM_SOURCE_INIT( RicfCreateSaturationPressurePlots, "createSaturationPressur //-------------------------------------------------------------------------------------------------- RicfCreateSaturationPressurePlots::RicfCreateSaturationPressurePlots() { - RICF_InitField( &m_caseIds, "caseIds", std::vector(), "Case IDs", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_caseIds, "caseIds", std::vector(), "Case IDs", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfCreateSaturationPressurePlots::execute() +caf::PdmScriptResponse RicfCreateSaturationPressurePlots::execute() { std::vector caseIds = m_caseIds(); if ( caseIds.empty() ) @@ -62,7 +64,7 @@ RicfCommandResponse RicfCreateSaturationPressurePlots::execute() { QString error( "createSaturationPressurePlots: No cases found" ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } RimProject* project = RiaApplication::instance()->project(); @@ -70,7 +72,7 @@ RicfCommandResponse RicfCreateSaturationPressurePlots::execute() { QString error( "No project loaded" ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } auto eclipeCases = project->eclipseCases(); @@ -93,5 +95,5 @@ RicfCommandResponse RicfCreateSaturationPressurePlots::execute() collection->updateAllRequiredEditors(); RiaGuiApplication::instance()->getOrCreateAndShowMainPlotWindow(); - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } diff --git a/ApplicationCode/CommandFileInterface/RicfCreateSaturationPressurePlots.h b/ApplicationCode/CommandFileInterface/RicfCreateSaturationPressurePlots.h index 6253cb1515..204003310a 100644 --- a/ApplicationCode/CommandFileInterface/RicfCreateSaturationPressurePlots.h +++ b/ApplicationCode/CommandFileInterface/RicfCreateSaturationPressurePlots.h @@ -34,8 +34,8 @@ class RicfCreateSaturationPressurePlots : public RicfCommandObject public: RicfCreateSaturationPressurePlots(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField> m_caseIds; -}; \ No newline at end of file +}; diff --git a/ApplicationCode/CommandFileInterface/RicfCreateStatisticsCase.cpp b/ApplicationCode/CommandFileInterface/RicfCreateStatisticsCase.cpp index 03c0dfb950..207870e440 100644 --- a/ApplicationCode/CommandFileInterface/RicfCreateStatisticsCase.cpp +++ b/ApplicationCode/CommandFileInterface/RicfCreateStatisticsCase.cpp @@ -27,6 +27,7 @@ #include "RiaApplication.h" #include "Riu3DMainWindowTools.h" +#include "cafPdmFieldIOScriptability.h" #include "cafSelectionManager.h" #include @@ -49,13 +50,13 @@ CAF_PDM_SOURCE_INIT( RicfCreateStatisticsCase, "createStatisticsCase" ); //-------------------------------------------------------------------------------------------------- RicfCreateStatisticsCase::RicfCreateStatisticsCase() { - RICF_InitField( &m_caseGroupId, "caseGroupId", -1, "Case Group Id", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_caseGroupId, "caseGroupId", -1, "Case Group Id", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfCreateStatisticsCase::execute() +caf::PdmScriptResponse RicfCreateStatisticsCase::execute() { RimProject* project = RiaApplication::instance()->project(); @@ -68,10 +69,10 @@ RicfCommandResponse RicfCreateStatisticsCase::execute() RimEclipseStatisticsCase* createdObject = gridCaseGroup->createAndAppendStatisticsCase(); project->assignCaseIdToCase( createdObject ); gridCaseGroup->updateConnectedEditors(); - RicfCommandResponse response; + caf::PdmScriptResponse response; response.setResult( new RicfCreateStatisticsCaseResult( createdObject->caseId() ) ); return response; } } - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, "Could not find grid case group" ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, "Could not find grid case group" ); } diff --git a/ApplicationCode/CommandFileInterface/RicfCreateStatisticsCase.h b/ApplicationCode/CommandFileInterface/RicfCreateStatisticsCase.h index 95538a35a4..d2261d1397 100644 --- a/ApplicationCode/CommandFileInterface/RicfCreateStatisticsCase.h +++ b/ApplicationCode/CommandFileInterface/RicfCreateStatisticsCase.h @@ -45,7 +45,7 @@ class RicfCreateStatisticsCase : public RicfCommandObject public: RicfCreateStatisticsCase(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_caseGroupId; diff --git a/ApplicationCode/CommandFileInterface/RicfCreateView.cpp b/ApplicationCode/CommandFileInterface/RicfCreateView.cpp index c89976bd72..2f0fe37304 100644 --- a/ApplicationCode/CommandFileInterface/RicfCreateView.cpp +++ b/ApplicationCode/CommandFileInterface/RicfCreateView.cpp @@ -12,6 +12,7 @@ #include "Riu3DMainWindowTools.h" +#include "cafPdmFieldIOScriptability.h" #include "cafSelectionManager.h" #include @@ -34,13 +35,13 @@ CAF_PDM_SOURCE_INIT( RicfCreateView, "createView" ); //-------------------------------------------------------------------------------------------------- RicfCreateView::RicfCreateView() { - RICF_InitField( &m_caseId, "caseId", -1, "Case Id", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_caseId, "caseId", -1, "Case Id", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfCreateView::execute() +caf::PdmScriptResponse RicfCreateView::execute() { RimProject* project = RiaApplication::instance()->project(); std::vector allCases; @@ -72,7 +73,7 @@ RicfCommandResponse RicfCreateView::execute() if ( viewId >= 0 ) { - RicfCommandResponse response; + caf::PdmScriptResponse response; response.setResult( new RicfCreateViewResult( viewId ) ); return response; } @@ -81,5 +82,5 @@ RicfCommandResponse RicfCreateView::execute() QString error = QString( "createView: Could not create view for case id %1" ).arg( m_caseId() ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } diff --git a/ApplicationCode/CommandFileInterface/RicfCreateView.h b/ApplicationCode/CommandFileInterface/RicfCreateView.h index 8a2c9ceb65..91808b84ae 100644 --- a/ApplicationCode/CommandFileInterface/RicfCreateView.h +++ b/ApplicationCode/CommandFileInterface/RicfCreateView.h @@ -50,7 +50,7 @@ class RicfCreateView : public RicfCommandObject public: RicfCreateView(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_caseId; diff --git a/ApplicationCode/CommandFileInterface/RicfCreateWellBoreStabilityPlotFeature.cpp b/ApplicationCode/CommandFileInterface/RicfCreateWellBoreStabilityPlotFeature.cpp index 13aa1a8f0a..0d1f18354d 100644 --- a/ApplicationCode/CommandFileInterface/RicfCreateWellBoreStabilityPlotFeature.cpp +++ b/ApplicationCode/CommandFileInterface/RicfCreateWellBoreStabilityPlotFeature.cpp @@ -29,6 +29,8 @@ #include "RimWellBoreStabilityPlot.h" #include "RimWellPath.h" +#include "cafPdmFieldIOScriptability.h" + #include CAF_PDM_SOURCE_INIT( RicfCreateWbsPlotResult, "createWbsPlotResult" ); @@ -49,9 +51,9 @@ CAF_PDM_SOURCE_INIT( RicfCreateWellBoreStabilityPlotFeature, "createWellBoreStab //-------------------------------------------------------------------------------------------------- RicfCreateWellBoreStabilityPlotFeature::RicfCreateWellBoreStabilityPlotFeature() { - RICF_InitField( &m_caseId, "caseId", -1, "GeoMech Case Id", "", "", "" ); - RICF_InitField( &m_wellPath, "wellPath", QString( "" ), "Well Path", "", "", "" ); - RICF_InitField( &m_timeStep, "timeStep", -1, "Time Step", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_caseId, "caseId", -1, "GeoMech Case Id", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_wellPath, "wellPath", QString( "" ), "Well Path", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_timeStep, "timeStep", -1, "Time Step", "", "", "" ); CAF_PDM_InitFieldNoDefault( &m_wbsParameters, "wbsParameters", "WbsParameters", "", "", "" ); } @@ -59,7 +61,7 @@ RicfCreateWellBoreStabilityPlotFeature::RicfCreateWellBoreStabilityPlotFeature() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfCreateWellBoreStabilityPlotFeature::execute() +caf::PdmScriptResponse RicfCreateWellBoreStabilityPlotFeature::execute() { RimProject* project = RiaApplication::instance()->project(); @@ -93,17 +95,17 @@ RicfCommandResponse RicfCreateWellBoreStabilityPlotFeature::execute() QString error = QString( "The well path %1 has no geometry. Cannot create a Well Bore Stability Plot" ) .arg( chosenWellPath->name() ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } RimWellBoreStabilityPlot* wbsPlot = RicNewWellBoreStabilityPlotFeature::createPlot( chosenCase, chosenWellPath, m_timeStep(), m_wbsParameters() ); - RicfCommandResponse response; + caf::PdmScriptResponse response; response.setResult( new RicfCreateWbsPlotResult( wbsPlot->id() ) ); return response; } QString error = QString( "createWellBoreStabilityPlot: Could not find GeoMech case with id %1" ).arg( m_caseId() ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } diff --git a/ApplicationCode/CommandFileInterface/RicfCreateWellBoreStabilityPlotFeature.h b/ApplicationCode/CommandFileInterface/RicfCreateWellBoreStabilityPlotFeature.h index 5723e78659..d4f3aa0bd1 100644 --- a/ApplicationCode/CommandFileInterface/RicfCreateWellBoreStabilityPlotFeature.h +++ b/ApplicationCode/CommandFileInterface/RicfCreateWellBoreStabilityPlotFeature.h @@ -50,7 +50,7 @@ class RicfCreateWellBoreStabilityPlotFeature : public RicfCommandObject public: RicfCreateWellBoreStabilityPlotFeature(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_caseId; diff --git a/ApplicationCode/CommandFileInterface/RicfExportFlowCharacteristics.cpp b/ApplicationCode/CommandFileInterface/RicfExportFlowCharacteristics.cpp index 979cb89e34..bfd365f977 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportFlowCharacteristics.cpp +++ b/ApplicationCode/CommandFileInterface/RicfExportFlowCharacteristics.cpp @@ -29,6 +29,8 @@ #include "RimMainPlotCollection.h" #include "RimProject.h" +#include "cafPdmFieldIOScriptability.h" + #include #include #include @@ -40,19 +42,19 @@ CAF_PDM_SOURCE_INIT( RicfExportFlowCharacteristics, "exportFlowCharacteristics" //-------------------------------------------------------------------------------------------------- RicfExportFlowCharacteristics::RicfExportFlowCharacteristics() { - RICF_InitField( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); - RICF_InitField( &m_selectedTimeSteps, "timeSteps", std::vector(), "Selected Time Steps", "", "", "" ); - RICF_InitField( &m_injectors, "injectors", std::vector(), "Injectors", "", "", "" ); - RICF_InitField( &m_producers, "producers", std::vector(), "Producers", "", "", "" ); - RICF_InitField( &m_fileName, "fileName", QString(), "Export File Name", "", "", "" ); - RICF_InitField( &m_minCommunication, "minimumCommunication", 0.0, "Minimum Communication", "", "", "" ); - RICF_InitField( &m_maxPvFraction, "aquiferCellThreshold", 0.1, "Aquifer Cell Threshold", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_selectedTimeSteps, "timeSteps", std::vector(), "Selected Time Steps", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_injectors, "injectors", std::vector(), "Injectors", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_producers, "producers", std::vector(), "Producers", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_fileName, "fileName", QString(), "Export File Name", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_minCommunication, "minimumCommunication", 0.0, "Minimum Communication", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_maxPvFraction, "aquiferCellThreshold", 0.1, "Aquifer Cell Threshold", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfExportFlowCharacteristics::execute() +caf::PdmScriptResponse RicfExportFlowCharacteristics::execute() { using TOOLS = RicfApplicationTools; @@ -61,7 +63,7 @@ RicfCommandResponse RicfExportFlowCharacteristics::execute() { QString error = QString( "exportFlowCharacteristics: Could not find case with ID %1." ).arg( m_caseId() ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } { @@ -79,7 +81,7 @@ RicfCommandResponse RicfExportFlowCharacteristics::execute() if ( !exportDir.mkpath( "." ) ) { QString msg = QString( "Failed to create folder - %1" ).arg( exportFolder ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, msg ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, msg ); } } @@ -111,10 +113,10 @@ RicfCommandResponse RicfExportFlowCharacteristics::execute() else { QString msg = QString( "Failed to export file - %1" ).arg( exportFileName ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, msg ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, msg ); } } } } - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } diff --git a/ApplicationCode/CommandFileInterface/RicfExportFlowCharacteristics.h b/ApplicationCode/CommandFileInterface/RicfExportFlowCharacteristics.h index 8433636f1e..6be12c24e9 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportFlowCharacteristics.h +++ b/ApplicationCode/CommandFileInterface/RicfExportFlowCharacteristics.h @@ -38,7 +38,7 @@ class RicfExportFlowCharacteristics : public RicfCommandObject public: RicfExportFlowCharacteristics(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_caseId; diff --git a/ApplicationCode/CommandFileInterface/RicfExportLgrForCompletions.cpp b/ApplicationCode/CommandFileInterface/RicfExportLgrForCompletions.cpp index 8838c82d0b..eb5d71079b 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportLgrForCompletions.cpp +++ b/ApplicationCode/CommandFileInterface/RicfExportLgrForCompletions.cpp @@ -36,6 +36,8 @@ #include "RiaWellNameComparer.h" #include "cafCmdFeatureManager.h" +#include "cafPdmFieldIOScriptability.h" + #include CAF_PDM_SOURCE_INIT( RicfExportLgrForCompletions, "exportLgrForCompletions" ); @@ -45,19 +47,19 @@ CAF_PDM_SOURCE_INIT( RicfExportLgrForCompletions, "exportLgrForCompletions" ); //-------------------------------------------------------------------------------------------------- RicfExportLgrForCompletions::RicfExportLgrForCompletions() { - RICF_InitField( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); - RICF_InitField( &m_timeStep, "timeStep", -1, "Time Step Index", "", "", "" ); - RICF_InitField( &m_wellPathNames, "wellPathNames", std::vector(), "Well Path Names", "", "", "" ); - RICF_InitField( &m_refinementI, "refinementI", -1, "RefinementI", "", "", "" ); - RICF_InitField( &m_refinementJ, "refinementJ", -1, "RefinementJ", "", "", "" ); - RICF_InitField( &m_refinementK, "refinementK", -1, "RefinementK", "", "", "" ); - RICF_InitField( &m_splitType, "splitType", Lgr::SplitTypeEnum(), "SplitType", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_timeStep, "timeStep", -1, "Time Step Index", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_wellPathNames, "wellPathNames", std::vector(), "Well Path Names", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_refinementI, "refinementI", -1, "RefinementI", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_refinementJ, "refinementJ", -1, "RefinementJ", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_refinementK, "refinementK", -1, "RefinementK", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_splitType, "splitType", Lgr::SplitTypeEnum(), "SplitType", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfExportLgrForCompletions::execute() +caf::PdmScriptResponse RicfExportLgrForCompletions::execute() { using TOOLS = RicfApplicationTools; @@ -72,7 +74,7 @@ RicfCommandResponse RicfExportLgrForCompletions::execute() QString error( QString( "exportLgrForCompletions: These well paths were not found: " ) + wellsNotFound.join( ", " ) ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } } @@ -80,7 +82,7 @@ RicfCommandResponse RicfExportLgrForCompletions::execute() { QString error( "exportLgrForCompletions: Could not find any well paths" ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } QString exportFolder = RicfCommandFileExecutor::instance()->getExportPath( RicfCommandFileExecutor::LGRS ); @@ -97,7 +99,7 @@ RicfCommandResponse RicfExportLgrForCompletions::execute() { QString error( QString( "exportLgrForCompletions: Could not find case with ID %1" ).arg( m_caseId() ) ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } caf::VecIjk lgrCellCounts( m_refinementI, m_refinementJ, m_refinementK ); @@ -112,7 +114,7 @@ RicfCommandResponse RicfExportLgrForCompletions::execute() {RigCompletionData::PERFORATION, RigCompletionData::FRACTURE, RigCompletionData::FISHBONES}, &wellsIntersectingOtherLgrs ); - RicfCommandResponse response; + caf::PdmScriptResponse response; if ( !wellsIntersectingOtherLgrs.empty() ) { auto wellsList = wellsIntersectingOtherLgrs.join( ", " ); @@ -120,7 +122,7 @@ RicfCommandResponse RicfExportLgrForCompletions::execute() "exportLgrForCompletions: No export for some wells due to existing intersecting LGR(s).Affected wells : " + wellsList ); RiaLogging::warning( warning ); - response.updateStatus( RicfCommandResponse::COMMAND_WARNING, warning ); + response.updateStatus( caf::PdmScriptResponse::COMMAND_WARNING, warning ); } return response; } diff --git a/ApplicationCode/CommandFileInterface/RicfExportLgrForCompletions.h b/ApplicationCode/CommandFileInterface/RicfExportLgrForCompletions.h index 5ca3fde139..4da67fa219 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportLgrForCompletions.h +++ b/ApplicationCode/CommandFileInterface/RicfExportLgrForCompletions.h @@ -41,7 +41,7 @@ class RicfExportLgrForCompletions : public RicfCommandObject public: RicfExportLgrForCompletions(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_caseId; diff --git a/ApplicationCode/CommandFileInterface/RicfExportMsw.cpp b/ApplicationCode/CommandFileInterface/RicfExportMsw.cpp index 56b24437c8..6219fdfb85 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportMsw.cpp +++ b/ApplicationCode/CommandFileInterface/RicfExportMsw.cpp @@ -36,6 +36,8 @@ #include "CompletionExportCommands/RicExportCompletionDataSettingsUi.h" #include "CompletionExportCommands/RicWellPathExportMswCompletionsImpl.h" +#include "cafPdmFieldIOScriptability.h" + CAF_PDM_SOURCE_INIT( RicfExportMsw, "exportMsw" ); //-------------------------------------------------------------------------------------------------- @@ -43,18 +45,24 @@ CAF_PDM_SOURCE_INIT( RicfExportMsw, "exportMsw" ); //-------------------------------------------------------------------------------------------------- RicfExportMsw::RicfExportMsw() { - RICF_InitField( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); - RICF_InitField( &m_wellPathName, "wellPath", QString(), "Well Path Name", "", "", "" ); - RICF_InitField( &m_includePerforations, "includePerforations", true, "Include Perforations", "", "", "" ); - RICF_InitField( &m_includeFishbones, "includeFishbones", true, "Include Fishbones", "", "", "" ); - RICF_InitField( &m_includeFractures, "includeFractures", true, "Include Fractures", "", "", "" ); - RICF_InitField( &m_fileSplit, "fileSplit", RicExportCompletionDataSettingsUi::ExportSplitType(), "File Split", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_wellPathName, "wellPath", QString(), "Well Path Name", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_includePerforations, "includePerforations", true, "Include Perforations", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_includeFishbones, "includeFishbones", true, "Include Fishbones", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_includeFractures, "includeFractures", true, "Include Fractures", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_fileSplit, + "fileSplit", + RicExportCompletionDataSettingsUi::ExportSplitType(), + "File Split", + "", + "", + "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfExportMsw::execute() +caf::PdmScriptResponse RicfExportMsw::execute() { using TOOLS = RicfApplicationTools; @@ -65,7 +73,7 @@ RicfCommandResponse RicfExportMsw::execute() { QString error = QString( "exportMsw: Could not find case with ID %1." ).arg( m_caseId() ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } QString exportFolder = RicfCommandFileExecutor::instance()->getExportPath( RicfCommandFileExecutor::COMPLETIONS ); @@ -85,10 +93,10 @@ RicfCommandResponse RicfExportMsw::execute() { QString error = QString( "exportMsw: Could not find well path with name %1" ).arg( m_wellPathName() ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } RicWellPathExportMswCompletionsImpl::exportWellSegmentsForAllCompletions( exportSettings, {wellPath} ); - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } diff --git a/ApplicationCode/CommandFileInterface/RicfExportMsw.h b/ApplicationCode/CommandFileInterface/RicfExportMsw.h index 1a8fd67a90..7b15cadd38 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportMsw.h +++ b/ApplicationCode/CommandFileInterface/RicfExportMsw.h @@ -36,7 +36,7 @@ class RicfExportMsw : public RicfCommandObject public: RicfExportMsw(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_caseId; @@ -45,4 +45,4 @@ private: caf::PdmField m_includeFishbones; caf::PdmField m_includeFractures; caf::PdmField m_fileSplit; -}; \ No newline at end of file +}; diff --git a/ApplicationCode/CommandFileInterface/RicfExportMultiCaseSnapshots.cpp b/ApplicationCode/CommandFileInterface/RicfExportMultiCaseSnapshots.cpp index b5e422a39f..e707e5d28b 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportMultiCaseSnapshots.cpp +++ b/ApplicationCode/CommandFileInterface/RicfExportMultiCaseSnapshots.cpp @@ -24,6 +24,8 @@ #include "RiaLogging.h" #include "RiaProjectModifier.h" +#include "cafPdmFieldIOScriptability.h" + CAF_PDM_SOURCE_INIT( RicfExportMultiCaseSnapshots, "exportMultiCaseSnapshots" ); //-------------------------------------------------------------------------------------------------- @@ -31,26 +33,26 @@ CAF_PDM_SOURCE_INIT( RicfExportMultiCaseSnapshots, "exportMultiCaseSnapshots" ); //-------------------------------------------------------------------------------------------------- RicfExportMultiCaseSnapshots::RicfExportMultiCaseSnapshots() { - RICF_InitField( &m_gridListFile, "gridListFile", QString(), "Grid List File", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_gridListFile, "gridListFile", QString(), "Grid List File", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfExportMultiCaseSnapshots::execute() +caf::PdmScriptResponse RicfExportMultiCaseSnapshots::execute() { RiaGuiApplication* app = RiaGuiApplication::instance(); if ( !app ) { QString error( "exportMultiCaseSnapshots: Requires GUI Application" ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } if ( m_gridListFile().isNull() ) { QString error( "exportMultiCaseSnapshots: Required parameter gridListFile." ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } QString lastProjectPath = RicfCommandFileExecutor::instance()->getLastProjectPath(); @@ -59,7 +61,7 @@ RicfCommandResponse RicfExportMultiCaseSnapshots::execute() QString error( "exportMultiCaseSnapshots: 'openProject' must be called before 'exportMultiCaseSnapshots' to " "specify project file to replace cases in." ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } std::vector listFileNames = RiaApplication::readFileListFromTextFile( m_gridListFile() ); @@ -67,5 +69,5 @@ RicfCommandResponse RicfExportMultiCaseSnapshots::execute() listFileNames, RicfCommandFileExecutor::instance()->getExportPath( RicfCommandFileExecutor::SNAPSHOTS ) ); - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } diff --git a/ApplicationCode/CommandFileInterface/RicfExportMultiCaseSnapshots.h b/ApplicationCode/CommandFileInterface/RicfExportMultiCaseSnapshots.h index 9dac938962..5abdd96328 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportMultiCaseSnapshots.h +++ b/ApplicationCode/CommandFileInterface/RicfExportMultiCaseSnapshots.h @@ -34,7 +34,7 @@ class RicfExportMultiCaseSnapshots : public RicfCommandObject public: RicfExportMultiCaseSnapshots(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_gridListFile; diff --git a/ApplicationCode/CommandFileInterface/RicfExportProperty.cpp b/ApplicationCode/CommandFileInterface/RicfExportProperty.cpp index 9768983a99..5280e93cde 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportProperty.cpp +++ b/ApplicationCode/CommandFileInterface/RicfExportProperty.cpp @@ -35,6 +35,7 @@ #include "RimEclipseView.h" #include "RimProject.h" +#include "cafPdmFieldIOScriptability.h" #include "cafUtils.h" #include @@ -47,19 +48,19 @@ CAF_PDM_SOURCE_INIT( RicfExportProperty, "exportProperty" ); RicfExportProperty::RicfExportProperty() { // clang-format off - RICF_InitField(&m_caseId, "caseId", -1, "Case ID", "", "", ""); - RICF_InitField(&m_timeStepIndex, "timeStep", -1, "Time Step Index", "", "", ""); - RICF_InitField(&m_propertyName, "property", QString(), "Property Name", "", "", ""); - RICF_InitField(&m_eclipseKeyword, "eclipseKeyword", QString(), "Eclipse Keyword", "", "", ""); - RICF_InitField(&m_undefinedValue, "undefinedValue", 0.0, "Undefined Value", "", "", ""); - RICF_InitField(&m_exportFileName, "exportFile", QString(), "Export FileName", "", "", ""); + CAF_PDM_InitScriptableFieldWithIO(&m_caseId, "caseId", -1, "Case ID", "", "", ""); + CAF_PDM_InitScriptableFieldWithIO(&m_timeStepIndex, "timeStep", -1, "Time Step Index", "", "", ""); + CAF_PDM_InitScriptableFieldWithIO(&m_propertyName, "property", QString(), "Property Name", "", "", ""); + CAF_PDM_InitScriptableFieldWithIO(&m_eclipseKeyword, "eclipseKeyword", QString(), "Eclipse Keyword", "", "", ""); + CAF_PDM_InitScriptableFieldWithIO(&m_undefinedValue, "undefinedValue", 0.0, "Undefined Value", "", "", ""); + CAF_PDM_InitScriptableFieldWithIO(&m_exportFileName, "exportFile", QString(), "Export FileName", "", "", ""); // clang-format on } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfExportProperty::execute() +caf::PdmScriptResponse RicfExportProperty::execute() { using TOOLS = RicfApplicationTools; @@ -69,7 +70,7 @@ RicfCommandResponse RicfExportProperty::execute() { QString error = QString( "exportProperty: Could not find case with ID %1" ).arg( m_caseId() ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } if ( !eclipseCase->eclipseCaseData() ) @@ -78,7 +79,7 @@ RicfCommandResponse RicfExportProperty::execute() { QString error = QString( "exportProperty: Could not find eclipseCaseData with ID %1" ).arg( m_caseId() ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } } } @@ -91,7 +92,7 @@ RicfCommandResponse RicfExportProperty::execute() { QString error = QString( "exportProperty: Could not find result property : %1" ).arg( m_propertyName() ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } QString filePath = m_exportFileName; @@ -118,8 +119,8 @@ RicfCommandResponse RicfExportProperty::execute() m_undefinedValue, &errMsg ) ) { - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, errMsg ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, errMsg ); } - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } diff --git a/ApplicationCode/CommandFileInterface/RicfExportProperty.h b/ApplicationCode/CommandFileInterface/RicfExportProperty.h index 72e0f918e1..eecb36f18e 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportProperty.h +++ b/ApplicationCode/CommandFileInterface/RicfExportProperty.h @@ -38,7 +38,7 @@ class RicfExportProperty : public RicfCommandObject public: RicfExportProperty(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_caseId; diff --git a/ApplicationCode/CommandFileInterface/RicfExportPropertyInViews.cpp b/ApplicationCode/CommandFileInterface/RicfExportPropertyInViews.cpp index 657a9bdb4f..026ef8e85f 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportPropertyInViews.cpp +++ b/ApplicationCode/CommandFileInterface/RicfExportPropertyInViews.cpp @@ -34,6 +34,7 @@ #include "RimEclipseView.h" #include "RimProject.h" +#include "cafPdmFieldIOScriptability.h" #include "cafUtils.h" #include @@ -47,16 +48,16 @@ CAF_PDM_SOURCE_INIT( RicfExportPropertyInViews, "exportPropertyInViews" ); //-------------------------------------------------------------------------------------------------- RicfExportPropertyInViews::RicfExportPropertyInViews() { - RICF_InitField( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); - RICF_InitField( &m_viewIds, "viewIds", std::vector(), "View IDs", "", "", "" ); - RICF_InitField( &m_viewNames, "viewNames", std::vector(), "View Names", "", "", "" ); - RICF_InitField( &m_undefinedValue, "undefinedValue", 0.0, "Undefined Value", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_viewIds, "viewIds", std::vector(), "View IDs", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_viewNames, "viewNames", std::vector(), "View Names", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_undefinedValue, "undefinedValue", 0.0, "Undefined Value", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfExportPropertyInViews::execute() +caf::PdmScriptResponse RicfExportPropertyInViews::execute() { using TOOLS = RicfApplicationTools; @@ -65,7 +66,7 @@ RicfCommandResponse RicfExportPropertyInViews::execute() { QString error( QString( "exportProperty: Could not find case with ID %1" ).arg( m_caseId() ) ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } std::vector viewsForExport; @@ -110,7 +111,7 @@ RicfCommandResponse RicfExportPropertyInViews::execute() } } - RicfCommandResponse response; + caf::PdmScriptResponse response; for ( const auto& view : viewsForExport ) { @@ -134,7 +135,7 @@ RicfCommandResponse RicfExportPropertyInViews::execute() .arg( view->currentTimeStep() ) .arg( propertyName ); RiaLogging::warning( warning ); - response.updateStatus( RicfCommandResponse::COMMAND_WARNING, warning ); + response.updateStatus( caf::PdmScriptResponse::COMMAND_WARNING, warning ); continue; } @@ -160,7 +161,7 @@ RicfCommandResponse RicfExportPropertyInViews::execute() &errorMsg ); if ( !worked ) { - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, errorMsg ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, errorMsg ); } } return response; diff --git a/ApplicationCode/CommandFileInterface/RicfExportPropertyInViews.h b/ApplicationCode/CommandFileInterface/RicfExportPropertyInViews.h index 8e5a60d179..7da69baf89 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportPropertyInViews.h +++ b/ApplicationCode/CommandFileInterface/RicfExportPropertyInViews.h @@ -40,7 +40,7 @@ class RicfExportPropertyInViews : public RicfCommandObject public: RicfExportPropertyInViews(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_caseId; diff --git a/ApplicationCode/CommandFileInterface/RicfExportSimWellFractureCompletions.cpp b/ApplicationCode/CommandFileInterface/RicfExportSimWellFractureCompletions.cpp index f3c1cde126..5adda3f788 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportSimWellFractureCompletions.cpp +++ b/ApplicationCode/CommandFileInterface/RicfExportSimWellFractureCompletions.cpp @@ -37,6 +37,8 @@ #include "CompletionExportCommands/RicWellPathExportCompletionDataFeatureImpl.h" +#include "cafPdmFieldIOScriptability.h" + CAF_PDM_SOURCE_INIT( RicfExportSimWellFractureCompletions, "exportSimWellFractureCompletions" ); //-------------------------------------------------------------------------------------------------- @@ -44,25 +46,37 @@ CAF_PDM_SOURCE_INIT( RicfExportSimWellFractureCompletions, "exportSimWellFractur //-------------------------------------------------------------------------------------------------- RicfExportSimWellFractureCompletions::RicfExportSimWellFractureCompletions() { - RICF_InitField( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); - RICF_InitField( &m_viewId, "viewId", -1, "View ID", "", "", "" ); - RICF_InitField( &m_viewName, "viewName", QString( "" ), "View Name", "", "", "" ); - RICF_InitField( &m_timeStep, "timeStep", -1, "Time Step Index", "", "", "" ); - RICF_InitField( &m_simWellNames, "simulationWellNames", std::vector(), "Simulation Well Names", "", "", "" ); - RICF_InitField( &m_fileSplit, "fileSplit", RicExportCompletionDataSettingsUi::ExportSplitType(), "File Split", "", "", "" ); - RICF_InitField( &m_compdatExport, - "compdatExport", - RicExportCompletionDataSettingsUi::CompdatExportType(), - "Compdat Export", - "", - "", - "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_viewId, "viewId", -1, "View ID", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_viewName, "viewName", QString( "" ), "View Name", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_timeStep, "timeStep", -1, "Time Step Index", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_simWellNames, + "simulationWellNames", + std::vector(), + "Simulation Well Names", + "", + "", + "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_fileSplit, + "fileSplit", + RicExportCompletionDataSettingsUi::ExportSplitType(), + "File Split", + "", + "", + "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_compdatExport, + "compdatExport", + RicExportCompletionDataSettingsUi::CompdatExportType(), + "Compdat Export", + "", + "", + "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfExportSimWellFractureCompletions::execute() +caf::PdmScriptResponse RicfExportSimWellFractureCompletions::execute() { using TOOLS = RicfApplicationTools; @@ -79,7 +93,7 @@ RicfCommandResponse RicfExportSimWellFractureCompletions::execute() { QString error = QString( "exportSimWellCompletions: Could not find case with ID %1" ).arg( m_caseId() ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } exportSettings->caseToApply = eclipseCase; } @@ -108,10 +122,10 @@ RicfCommandResponse RicfExportSimWellFractureCompletions::execute() .arg( m_viewName ) .arg( m_caseId() ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } - RicfCommandResponse response; + caf::PdmScriptResponse response; std::vector simWells; if ( m_simWellNames().empty() ) @@ -146,7 +160,7 @@ RicfCommandResponse RicfExportSimWellFractureCompletions::execute() .arg( m_viewName ) .arg( m_caseId() ); RiaLogging::warning( warning ); - response.updateStatus( RicfCommandResponse::COMMAND_WARNING, warning ); + response.updateStatus( caf::PdmScriptResponse::COMMAND_WARNING, warning ); } } } diff --git a/ApplicationCode/CommandFileInterface/RicfExportSimWellFractureCompletions.h b/ApplicationCode/CommandFileInterface/RicfExportSimWellFractureCompletions.h index b2e907d895..c99697f2c5 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportSimWellFractureCompletions.h +++ b/ApplicationCode/CommandFileInterface/RicfExportSimWellFractureCompletions.h @@ -37,7 +37,7 @@ class RicfExportSimWellFractureCompletions : public RicfCommandObject public: RicfExportSimWellFractureCompletions(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_caseId; diff --git a/ApplicationCode/CommandFileInterface/RicfExportSnapshots.cpp b/ApplicationCode/CommandFileInterface/RicfExportSnapshots.cpp index f7a3294532..0a33a63ee5 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportSnapshots.cpp +++ b/ApplicationCode/CommandFileInterface/RicfExportSnapshots.cpp @@ -29,6 +29,8 @@ #include "RiuMainWindow.h" +#include "cafPdmFieldIOScriptability.h" + #include CAF_PDM_SOURCE_INIT( RicfExportSnapshots, "exportSnapshots" ); @@ -58,24 +60,24 @@ void RicfExportSnapshots::SnapshotsTypeEnum::setUp() //-------------------------------------------------------------------------------------------------- RicfExportSnapshots::RicfExportSnapshots() { - RICF_InitField( &m_type, "type", RicfExportSnapshots::SnapshotsTypeEnum(), "Type", "", "", "" ); - RICF_InitField( &m_prefix, "prefix", QString(), "Prefix", "", "", "" ); - RICF_InitField( &m_caseId, "caseId", -1, "Case Id", "", "", "" ); - RICF_InitField( &m_viewId, "viewId", -1, "View Id", "", "", "" ); - RICF_InitField( &m_exportFolder, "exportFolder", QString(), "Export Folder", "", "", "" ); - RICF_InitFieldNoDefault( &m_plotOutputFormat, "plotOutputFormat", "Output Format", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_type, "type", RicfExportSnapshots::SnapshotsTypeEnum(), "Type", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_prefix, "prefix", QString(), "Prefix", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_caseId, "caseId", -1, "Case Id", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_viewId, "viewId", -1, "View Id", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_exportFolder, "exportFolder", QString(), "Export Folder", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_plotOutputFormat, "plotOutputFormat", "Output Format", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfExportSnapshots::execute() +caf::PdmScriptResponse RicfExportSnapshots::execute() { if ( !RiaGuiApplication::isRunning() ) { QString error( "RicfExportSnapshot: Command cannot run without a GUI" ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } RiuMainWindow* mainWnd = RiuMainWindow::instance(); @@ -129,5 +131,5 @@ RicfCommandResponse RicfExportSnapshots::execute() mainWnd->loadWinGeoAndDockToolBarLayout(); RiaGuiApplication::instance()->processEvents(); - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } diff --git a/ApplicationCode/CommandFileInterface/RicfExportSnapshots.h b/ApplicationCode/CommandFileInterface/RicfExportSnapshots.h index 2c710edb0e..e8d0b1400d 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportSnapshots.h +++ b/ApplicationCode/CommandFileInterface/RicfExportSnapshots.h @@ -53,7 +53,7 @@ public: public: RicfExportSnapshots(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_type; diff --git a/ApplicationCode/CommandFileInterface/RicfExportVisibleCells.cpp b/ApplicationCode/CommandFileInterface/RicfExportVisibleCells.cpp index 85a542a22b..30cf047183 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportVisibleCells.cpp +++ b/ApplicationCode/CommandFileInterface/RicfExportVisibleCells.cpp @@ -38,8 +38,7 @@ #include "RifEclipseInputFileTools.h" -#include - +#include "cafPdmFieldIOScriptability.h" #include #include @@ -63,31 +62,43 @@ void AppEnum::setUp() //-------------------------------------------------------------------------------------------------- RicfExportVisibleCells::RicfExportVisibleCells() { - RICF_InitField( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); - RICF_InitField( &m_viewId, "viewId", -1, "View ID", "", "", "" ); - RICF_InitField( &m_viewName, "viewName", QString(), "View Name", "", "", "" ); - RICF_InitField( &m_exportKeyword, - "exportKeyword", - caf::AppEnum(), - "Export Keyword", - "", - "", - "" ); - RICF_InitField( &m_visibleActiveCellsValue, "visibleActiveCellsValue", 1, "Visible Active Cells Value", "", "", "" ); - RICF_InitField( &m_hiddenActiveCellsValue, "hiddenActiveCellsValue", 0, "Hidden Active Cells Value", "", "", "" ); - RICF_InitField( &m_inactiveCellsValue, "inactiveCellsValue", 0, "Inactive Cells Value", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_viewId, "viewId", -1, "View ID", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_viewName, "viewName", QString(), "View Name", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_exportKeyword, + "exportKeyword", + caf::AppEnum(), + "Export Keyword", + "", + "", + "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_visibleActiveCellsValue, + "visibleActiveCellsValue", + 1, + "Visible Active Cells Value", + "", + "", + "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_hiddenActiveCellsValue, + "hiddenActiveCellsValue", + 0, + "Hidden Active Cells Value", + "", + "", + "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_inactiveCellsValue, "inactiveCellsValue", 0, "Inactive Cells Value", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfExportVisibleCells::execute() +caf::PdmScriptResponse RicfExportVisibleCells::execute() { if ( m_caseId < 0 || ( m_viewName().isEmpty() && m_viewId() < 0 ) ) { QString error( "exportVisibleCells: CaseId or view name or view id not specified" ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } RimEclipseView* eclipseView = nullptr; if ( m_viewId() >= 0 ) @@ -105,7 +116,7 @@ RicfCommandResponse RicfExportVisibleCells::execute() .arg( m_viewName ) .arg( m_caseId ) ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } QString exportFolder = RicfCommandFileExecutor::instance()->getExportPath( RicfCommandFileExecutor::CELLS ); @@ -120,7 +131,7 @@ RicfCommandResponse RicfExportVisibleCells::execute() buildExportSettings( exportFolder, &exportSettings ); RicSaveEclipseInputVisibleCellsFeature::executeCommand( eclipseView, exportSettings, "exportVisibleCells" ); - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/CommandFileInterface/RicfExportVisibleCells.h b/ApplicationCode/CommandFileInterface/RicfExportVisibleCells.h index 21f6973794..e316ef7041 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportVisibleCells.h +++ b/ApplicationCode/CommandFileInterface/RicfExportVisibleCells.h @@ -45,7 +45,7 @@ class RicfExportVisibleCells : public RicfCommandObject public: RicfExportVisibleCells(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: void buildExportSettings( const QString& exportFolder, RicSaveEclipseInputVisibleCellsUi* exportSettings ); diff --git a/ApplicationCode/CommandFileInterface/RicfExportWellLogPlotData.cpp b/ApplicationCode/CommandFileInterface/RicfExportWellLogPlotData.cpp index 5762c1836f..6787fef623 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportWellLogPlotData.cpp +++ b/ApplicationCode/CommandFileInterface/RicfExportWellLogPlotData.cpp @@ -26,6 +26,8 @@ #include "RimProject.h" #include "RimWellLogPlot.h" +#include "cafPdmFieldIOScriptability.h" + #include #include #include @@ -59,24 +61,24 @@ CAF_PDM_SOURCE_INIT( RicfExportWellLogPlotData, "exportWellLogPlotData" ); //-------------------------------------------------------------------------------------------------- RicfExportWellLogPlotData::RicfExportWellLogPlotData() { - RICF_InitFieldNoDefault( &m_format, "exportFormat", "", "", "", "" ); - RICF_InitField( &m_viewId, "viewId", -1, "", "", "", "" ); - RICF_InitField( &m_folder, "exportFolder", QString(), "", "", "", "" ); - RICF_InitField( &m_filePrefix, "filePrefix", QString(), "", "", "", "" ); - RICF_InitField( &m_exportTvdRkb, "exportTvdRkb", false, "", "", "", "" ); - RICF_InitField( &m_capitalizeFileNames, "capitalizeFileNames", false, "", "", "", "" ); - RICF_InitField( &m_resampleInterval, "resampleInterval", 0.0, "", "", "", "" ); - RICF_InitField( &m_convertCurveUnits, "convertCurveUnits", false, "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_format, "exportFormat", "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_viewId, "viewId", -1, "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_folder, "exportFolder", QString(), "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_filePrefix, "filePrefix", QString(), "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_exportTvdRkb, "exportTvdRkb", false, "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_capitalizeFileNames, "capitalizeFileNames", false, "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_resampleInterval, "resampleInterval", 0.0, "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_convertCurveUnits, "convertCurveUnits", false, "", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfExportWellLogPlotData::execute() +caf::PdmScriptResponse RicfExportWellLogPlotData::execute() { QStringList errorMessages; - RicfCommandResponse response; + caf::PdmScriptResponse response; if ( QFileInfo::exists( m_folder ) ) { @@ -133,7 +135,7 @@ RicfCommandResponse RicfExportWellLogPlotData::execute() for ( QString errorMessage : errorMessages ) { - response.updateStatus( RicfCommandResponse::COMMAND_ERROR, errorMessage ); + response.updateStatus( caf::PdmScriptResponse::COMMAND_ERROR, errorMessage ); } return response; } diff --git a/ApplicationCode/CommandFileInterface/RicfExportWellLogPlotData.h b/ApplicationCode/CommandFileInterface/RicfExportWellLogPlotData.h index 4a9f28ea5a..5c48407f6d 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportWellLogPlotData.h +++ b/ApplicationCode/CommandFileInterface/RicfExportWellLogPlotData.h @@ -59,7 +59,7 @@ public: public: RicfExportWellLogPlotData(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_format; diff --git a/ApplicationCode/CommandFileInterface/RicfExportWellPathCompletions.cpp b/ApplicationCode/CommandFileInterface/RicfExportWellPathCompletions.cpp index f54dec68d5..c97b251748 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportWellPathCompletions.cpp +++ b/ApplicationCode/CommandFileInterface/RicfExportWellPathCompletions.cpp @@ -34,6 +34,8 @@ #include "CompletionExportCommands/RicWellPathExportCompletionDataFeatureImpl.h" +#include "cafPdmFieldIOScriptability.h" + CAF_PDM_SOURCE_INIT( RicfExportWellPathCompletions, "exportWellPathCompletions" ); //-------------------------------------------------------------------------------------------------- @@ -41,55 +43,79 @@ CAF_PDM_SOURCE_INIT( RicfExportWellPathCompletions, "exportWellPathCompletions" //-------------------------------------------------------------------------------------------------- RicfExportWellPathCompletions::RicfExportWellPathCompletions() { - RICF_InitField( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); - RICF_InitField( &m_timeStep, "timeStep", -1, "Time Step Index", "", "", "" ); - RICF_InitField( &m_wellPathNames, "wellPathNames", std::vector(), "Well Path Names", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_timeStep, "timeStep", -1, "Time Step Index", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_wellPathNames, "wellPathNames", std::vector(), "Well Path Names", "", "", "" ); - RICF_InitField( &m_fileSplit, "fileSplit", RicExportCompletionDataSettingsUi::ExportSplitType(), "File Split", "", "", "" ); - RICF_InitField( &m_compdatExport, - "compdatExport", - RicExportCompletionDataSettingsUi::CompdatExportType(), - "Compdat Export", - "", - "", - "" ); - RICF_InitField( &m_combinationMode, - "combinationMode", - RicExportCompletionDataSettingsUi::CombinationModeType(), - "Combination Mode", - "", - "", - "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_fileSplit, + "fileSplit", + RicExportCompletionDataSettingsUi::ExportSplitType(), + "File Split", + "", + "", + "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_compdatExport, + "compdatExport", + RicExportCompletionDataSettingsUi::CompdatExportType(), + "Compdat Export", + "", + "", + "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_combinationMode, + "combinationMode", + RicExportCompletionDataSettingsUi::CombinationModeType(), + "Combination Mode", + "", + "", + "" ); - RICF_InitField( &m_useLateralNTG, "useNtgHorizontally", false, "Use NTG Horizontally", "", "", "" ); - RICF_InitField( &m_includePerforations, "includePerforations", true, "Include Perforations", "", "", "" ); - RICF_InitField( &m_includeFishbones, "includeFishbones", true, "Include Fishbones", "", "", "" ); - RICF_InitField( &m_includeFractures, "includeFractures", true, "Include Fractures", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_useLateralNTG, "useNtgHorizontally", false, "Use NTG Horizontally", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_includePerforations, "includePerforations", true, "Include Perforations", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_includeFishbones, "includeFishbones", true, "Include Fishbones", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_includeFractures, "includeFractures", true, "Include Fractures", "", "", "" ); - RICF_InitField( &m_excludeMainBoreForFishbones, - "excludeMainBoreForFishbones", - false, - "Exclude Main Bore for Fishbones", - "", - "", - "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_excludeMainBoreForFishbones, + "excludeMainBoreForFishbones", + false, + "Exclude Main Bore for Fishbones", + "", + "", + "" ); - RICF_InitField( &m_performTransScaling, "performTransScaling", false, "Perform Transmissibility Scaling", "", "", "" ); - RICF_InitField( &m_transScalingTimeStep, "transScalingTimeStep", 0, "Transmissibility Scaling Pressure Time Step", "", "", "" ); - RICF_InitField( &m_transScalingInitialWBHP, - "transScalingWBHPFromSummary", - RicExportCompletionDataSettingsUi::TransScalingWBHPSource(), - "Transmissibility Scaling WBHP from summary", - "", - "", - "" ); - RICF_InitField( &m_transScalingWBHP, "transScalingWBHP", 200.0, "Transmissibility Scaling Constant WBHP Value", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_performTransScaling, + "performTransScaling", + false, + "Perform Transmissibility Scaling", + "", + "", + "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_transScalingTimeStep, + "transScalingTimeStep", + 0, + "Transmissibility Scaling Pressure Time Step", + "", + "", + "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_transScalingInitialWBHP, + "transScalingWBHPFromSummary", + RicExportCompletionDataSettingsUi::TransScalingWBHPSource(), + "Transmissibility Scaling WBHP from summary", + "", + "", + "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_transScalingWBHP, + "transScalingWBHP", + 200.0, + "Transmissibility Scaling Constant WBHP Value", + "", + "", + "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfExportWellPathCompletions::execute() +caf::PdmScriptResponse RicfExportWellPathCompletions::execute() { using TOOLS = RicfApplicationTools; @@ -127,7 +153,7 @@ RicfCommandResponse RicfExportWellPathCompletions::execute() { QString error = QString( "exportWellPathCompletions: Could not find case with ID %1" ).arg( m_caseId() ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } exportSettings->caseToApply = eclipseCase; } @@ -139,7 +165,7 @@ RicfCommandResponse RicfExportWellPathCompletions::execute() } exportSettings->folder = exportFolder; - RicfCommandResponse response; + caf::PdmScriptResponse response; std::vector wellPaths; if ( m_wellPathNames().empty() ) @@ -167,7 +193,7 @@ RicfCommandResponse RicfExportWellPathCompletions::execute() QString warning = QString( "exportWellPathCompletions: Could not find well path with name %1" ).arg( wellPathName ); RiaLogging::warning( warning ); - response.updateStatus( RicfCommandResponse::COMMAND_WARNING, warning ); + response.updateStatus( caf::PdmScriptResponse::COMMAND_WARNING, warning ); } } } diff --git a/ApplicationCode/CommandFileInterface/RicfExportWellPathCompletions.h b/ApplicationCode/CommandFileInterface/RicfExportWellPathCompletions.h index d6cafdb063..82e30f50de 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportWellPathCompletions.h +++ b/ApplicationCode/CommandFileInterface/RicfExportWellPathCompletions.h @@ -37,7 +37,7 @@ class RicfExportWellPathCompletions : public RicfCommandObject public: RicfExportWellPathCompletions(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_caseId; diff --git a/ApplicationCode/CommandFileInterface/RicfExportWellPaths.cpp b/ApplicationCode/CommandFileInterface/RicfExportWellPaths.cpp index 1fdbaf3902..c0c3ecde7d 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportWellPaths.cpp +++ b/ApplicationCode/CommandFileInterface/RicfExportWellPaths.cpp @@ -36,6 +36,7 @@ #include "RiaWellNameComparer.h" #include "cafCmdFeatureManager.h" +#include "cafPdmFieldIOScriptability.h" CAF_PDM_SOURCE_INIT( RicfExportWellPaths, "exportWellPaths" ); @@ -44,14 +45,14 @@ CAF_PDM_SOURCE_INIT( RicfExportWellPaths, "exportWellPaths" ); //-------------------------------------------------------------------------------------------------- RicfExportWellPaths::RicfExportWellPaths() { - RICF_InitField( &m_wellPathNames, "wellPathNames", std::vector(), "Well Path Names", "", "", "" ); - RICF_InitField( &m_mdStepSize, "mdStepSize", 5.0, "MD Step Size", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_wellPathNames, "wellPathNames", std::vector(), "Well Path Names", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_mdStepSize, "mdStepSize", 5.0, "MD Step Size", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfExportWellPaths::execute() +caf::PdmScriptResponse RicfExportWellPaths::execute() { using TOOLS = RicfApplicationTools; @@ -66,7 +67,7 @@ RicfCommandResponse RicfExportWellPaths::execute() QString error( QString( "exportWellPaths: These well paths were not found: " ) + wellsNotFound.join( ", " ) ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } } @@ -74,7 +75,7 @@ RicfCommandResponse RicfExportWellPaths::execute() { QString error( "No well paths found" ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } QString exportFolder = RicfCommandFileExecutor::instance()->getExportPath( RicfCommandFileExecutor::WELLPATHS ); @@ -94,5 +95,5 @@ RicfCommandResponse RicfExportWellPaths::execute() feature->exportWellPath( wellPath, m_mdStepSize, exportFolder, false ); } } - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } diff --git a/ApplicationCode/CommandFileInterface/RicfExportWellPaths.h b/ApplicationCode/CommandFileInterface/RicfExportWellPaths.h index d45d5c97d7..bf6caf3928 100644 --- a/ApplicationCode/CommandFileInterface/RicfExportWellPaths.h +++ b/ApplicationCode/CommandFileInterface/RicfExportWellPaths.h @@ -37,7 +37,7 @@ class RicfExportWellPaths : public RicfCommandObject public: RicfExportWellPaths(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField> m_wellPathNames; diff --git a/ApplicationCode/CommandFileInterface/RicfImportFormationNames.cpp b/ApplicationCode/CommandFileInterface/RicfImportFormationNames.cpp index 2772d5599c..942f57c841 100644 --- a/ApplicationCode/CommandFileInterface/RicfImportFormationNames.cpp +++ b/ApplicationCode/CommandFileInterface/RicfImportFormationNames.cpp @@ -24,6 +24,8 @@ #include "RimFormationNames.h" #include "RimProject.h" +#include "cafPdmFieldIOScriptability.h" + #include CAF_PDM_SOURCE_INIT( RicfImportFormationNames, "importFormationNames" ); @@ -33,14 +35,14 @@ CAF_PDM_SOURCE_INIT( RicfImportFormationNames, "importFormationNames" ); //-------------------------------------------------------------------------------------------------- RicfImportFormationNames::RicfImportFormationNames() { - RICF_InitFieldNoDefault( &m_formationFiles, "formationFiles", "", "", "", "" ); - RICF_InitField( &m_applyToCaseId, "applyToCaseId", -1, "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_formationFiles, "formationFiles", "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_applyToCaseId, "applyToCaseId", -1, "", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfImportFormationNames::execute() +caf::PdmScriptResponse RicfImportFormationNames::execute() { QStringList errorMessages, warningMessages; @@ -87,14 +89,14 @@ RicfCommandResponse RicfImportFormationNames::execute() errorMessages << "No formation files provided"; } - RicfCommandResponse response; + caf::PdmScriptResponse response; for ( QString warningMessage : warningMessages ) { - response.updateStatus( RicfCommandResponse::COMMAND_WARNING, warningMessage ); + response.updateStatus( caf::PdmScriptResponse::COMMAND_WARNING, warningMessage ); } for ( QString errorMessage : errorMessages ) { - response.updateStatus( RicfCommandResponse::COMMAND_ERROR, errorMessage ); + response.updateStatus( caf::PdmScriptResponse::COMMAND_ERROR, errorMessage ); } return response; } diff --git a/ApplicationCode/CommandFileInterface/RicfImportFormationNames.h b/ApplicationCode/CommandFileInterface/RicfImportFormationNames.h index 3b283adcc3..bbf1f5625f 100644 --- a/ApplicationCode/CommandFileInterface/RicfImportFormationNames.h +++ b/ApplicationCode/CommandFileInterface/RicfImportFormationNames.h @@ -35,7 +35,7 @@ class RicfImportFormationNames : public RicfCommandObject public: RicfImportFormationNames(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField> m_formationFiles; diff --git a/ApplicationCode/CommandFileInterface/RicfImportWellLogFiles.cpp b/ApplicationCode/CommandFileInterface/RicfImportWellLogFiles.cpp index 664ec38f2e..8fc49a23f0 100644 --- a/ApplicationCode/CommandFileInterface/RicfImportWellLogFiles.cpp +++ b/ApplicationCode/CommandFileInterface/RicfImportWellLogFiles.cpp @@ -22,6 +22,8 @@ #include "RiaApplication.h" #include "RimWellLogFile.h" +#include "cafPdmFieldIOScriptability.h" + #include #include #include @@ -44,11 +46,11 @@ CAF_PDM_SOURCE_INIT( RicfImportWellLogFiles, "importWellLogFiles" ); //-------------------------------------------------------------------------------------------------- RicfImportWellLogFiles::RicfImportWellLogFiles() { - RICF_InitFieldNoDefault( &m_wellLogFileFolder, "wellLogFolder", "", "", "", "" ); - RICF_InitFieldNoDefault( &m_wellLogFilePaths, "wellLogFiles", "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_wellLogFileFolder, "wellLogFolder", "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_wellLogFilePaths, "wellLogFiles", "", "", "", "" ); } -RicfCommandResponse RicfImportWellLogFiles::execute() +caf::PdmScriptResponse RicfImportWellLogFiles::execute() { QStringList errorMessages, warningMessages; QStringList wellLogFilePaths; @@ -94,7 +96,7 @@ RicfCommandResponse RicfImportWellLogFiles::execute() } } - RicfCommandResponse response; + caf::PdmScriptResponse response; if ( !wellLogFilePaths.empty() ) { @@ -117,12 +119,12 @@ RicfCommandResponse RicfImportWellLogFiles::execute() for ( QString warningMessage : warningMessages ) { - response.updateStatus( RicfCommandResponse::COMMAND_WARNING, warningMessage ); + response.updateStatus( caf::PdmScriptResponse::COMMAND_WARNING, warningMessage ); } for ( QString errorMessage : errorMessages ) { - response.updateStatus( RicfCommandResponse::COMMAND_ERROR, errorMessage ); + response.updateStatus( caf::PdmScriptResponse::COMMAND_ERROR, errorMessage ); } return response; diff --git a/ApplicationCode/CommandFileInterface/RicfImportWellLogFiles.h b/ApplicationCode/CommandFileInterface/RicfImportWellLogFiles.h index a876d779ea..3ea3a5320e 100644 --- a/ApplicationCode/CommandFileInterface/RicfImportWellLogFiles.h +++ b/ApplicationCode/CommandFileInterface/RicfImportWellLogFiles.h @@ -50,7 +50,7 @@ class RicfImportWellLogFiles : public RicfCommandObject public: RicfImportWellLogFiles(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_wellLogFileFolder; diff --git a/ApplicationCode/CommandFileInterface/RicfLoadCase.cpp b/ApplicationCode/CommandFileInterface/RicfLoadCase.cpp index 7c1c5f6d9e..2122daf1e0 100644 --- a/ApplicationCode/CommandFileInterface/RicfLoadCase.cpp +++ b/ApplicationCode/CommandFileInterface/RicfLoadCase.cpp @@ -23,6 +23,8 @@ #include "RiaImportEclipseCaseTools.h" #include "RiaLogging.h" +#include "cafPdmFieldIOScriptability.h" + #include #include #include @@ -45,13 +47,13 @@ CAF_PDM_SOURCE_INIT( RicfLoadCase, "loadCase" ); //-------------------------------------------------------------------------------------------------- RicfLoadCase::RicfLoadCase() { - RICF_InitField( &m_path, "path", QString(), "Path to Case File", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_path, "path", QString(), "Path to Case File", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfLoadCase::execute() +caf::PdmScriptResponse RicfLoadCase::execute() { QString absolutePath = m_path; QFileInfo projectPathInfo( absolutePath ); @@ -67,10 +69,10 @@ RicfCommandResponse RicfLoadCase::execute() { QString error = QString( "loadCase: Unable to load case from %1" ).arg( absolutePath ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } CAF_ASSERT( fileCaseIdMap.size() == 1u ); - RicfCommandResponse response; + caf::PdmScriptResponse response; response.setResult( new RicfLoadCaseResult( fileCaseIdMap.begin()->second ) ); return response; } diff --git a/ApplicationCode/CommandFileInterface/RicfLoadCase.h b/ApplicationCode/CommandFileInterface/RicfLoadCase.h index a3803d547b..25ba7a9eb2 100644 --- a/ApplicationCode/CommandFileInterface/RicfLoadCase.h +++ b/ApplicationCode/CommandFileInterface/RicfLoadCase.h @@ -46,7 +46,7 @@ class RicfLoadCase : public RicfCommandObject public: RicfLoadCase(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_path; diff --git a/ApplicationCode/CommandFileInterface/RicfOpenProject.cpp b/ApplicationCode/CommandFileInterface/RicfOpenProject.cpp index c333e86343..2afc2e14ec 100644 --- a/ApplicationCode/CommandFileInterface/RicfOpenProject.cpp +++ b/ApplicationCode/CommandFileInterface/RicfOpenProject.cpp @@ -23,6 +23,8 @@ #include "RiaApplication.h" #include "RiaLogging.h" +#include "cafPdmFieldIOScriptability.h" + #include #include @@ -33,13 +35,13 @@ CAF_PDM_SOURCE_INIT( RicfOpenProject, "openProject" ); //-------------------------------------------------------------------------------------------------- RicfOpenProject::RicfOpenProject() { - RICF_InitField( &m_path, "path", QString(), "Path", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_path, "path", QString(), "Path", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfOpenProject::execute() +caf::PdmScriptResponse RicfOpenProject::execute() { QString projectPath = m_path; QFileInfo projectPathInfo( projectPath ); @@ -53,10 +55,10 @@ RicfCommandResponse RicfOpenProject::execute() { QString errMsg = QString( "openProject: Unable to open project at %1" ).arg( m_path() ); RiaLogging::error( errMsg ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, errMsg ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, errMsg ); } RicfCommandFileExecutor::instance()->setLastProjectPath( projectPath ); - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } diff --git a/ApplicationCode/CommandFileInterface/RicfOpenProject.h b/ApplicationCode/CommandFileInterface/RicfOpenProject.h index 6a4b1714fb..a867119f51 100644 --- a/ApplicationCode/CommandFileInterface/RicfOpenProject.h +++ b/ApplicationCode/CommandFileInterface/RicfOpenProject.h @@ -34,7 +34,7 @@ class RicfOpenProject : public RicfCommandObject public: RicfOpenProject(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_path; diff --git a/ApplicationCode/CommandFileInterface/RicfReplaceCase.cpp b/ApplicationCode/CommandFileInterface/RicfReplaceCase.cpp index 862b423774..5bcb40ba26 100644 --- a/ApplicationCode/CommandFileInterface/RicfReplaceCase.cpp +++ b/ApplicationCode/CommandFileInterface/RicfReplaceCase.cpp @@ -26,6 +26,8 @@ #include "RimProject.h" +#include "cafPdmFieldIOScriptability.h" + #include #include @@ -36,8 +38,8 @@ CAF_PDM_SOURCE_INIT( RicfSingleCaseReplace, "replaceCase" ); //-------------------------------------------------------------------------------------------------- RicfSingleCaseReplace::RicfSingleCaseReplace() { - RICF_InitField( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); - RICF_InitField( &m_newGridFile, "newGridFile", QString(), "New Grid File", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_newGridFile, "newGridFile", QString(), "New Grid File", "", "", "" ); } //-------------------------------------------------------------------------------------------------- @@ -59,7 +61,7 @@ QString RicfSingleCaseReplace::filePath() const //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfSingleCaseReplace::execute() +caf::PdmScriptResponse RicfSingleCaseReplace::execute() { QString lastProjectPath = RicfCommandFileExecutor::instance()->getLastProjectPath(); if ( lastProjectPath.isNull() ) @@ -67,7 +69,7 @@ RicfCommandResponse RicfSingleCaseReplace::execute() QString errMsg( "replaceCase: 'openProject' must be called before 'replaceCase' to specify project file to " "replace case in." ); RiaLogging::error( errMsg ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, errMsg ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, errMsg ); } cvf::ref projectModifier = new RiaProjectModifier; @@ -93,10 +95,10 @@ RicfCommandResponse RicfSingleCaseReplace::execute() { QString errMsg( "Could not reload project" ); RiaLogging::error( errMsg ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, errMsg ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, errMsg ); } - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } CAF_PDM_SOURCE_INIT( RicfMultiCaseReplace, "replaceMultipleCases" ); @@ -119,13 +121,13 @@ void RicfMultiCaseReplace::setCaseReplacePairs( const std::map& ca //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfMultiCaseReplace::execute() +caf::PdmScriptResponse RicfMultiCaseReplace::execute() { if ( m_caseIdToGridFileNameMap.empty() ) { QString errMsg( "replaceCaseImpl: No replacements available." ); RiaLogging::error( errMsg ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, errMsg ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, errMsg ); } QString lastProjectPath = RicfCommandFileExecutor::instance()->getLastProjectPath(); @@ -134,7 +136,7 @@ RicfCommandResponse RicfMultiCaseReplace::execute() QString errMsg( "replaceCase: 'openProject' must be called before 'replaceCase' to specify project file to " "replace case in." ); RiaLogging::error( errMsg ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, errMsg ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, errMsg ); } cvf::ref projectModifier = new RiaProjectModifier; @@ -163,8 +165,8 @@ RicfCommandResponse RicfMultiCaseReplace::execute() { QString errMsg( "Could not reload project" ); RiaLogging::error( errMsg ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, errMsg ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, errMsg ); } - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } diff --git a/ApplicationCode/CommandFileInterface/RicfReplaceCase.h b/ApplicationCode/CommandFileInterface/RicfReplaceCase.h index 0ee274c6e1..f65257ac64 100644 --- a/ApplicationCode/CommandFileInterface/RicfReplaceCase.h +++ b/ApplicationCode/CommandFileInterface/RicfReplaceCase.h @@ -40,7 +40,7 @@ public: int caseId() const; QString filePath() const; - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_newGridFile; @@ -63,7 +63,7 @@ public: void setCaseReplacePairs( const std::map& caseIdToGridFileNameMap ); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: std::map m_caseIdToGridFileNameMap; diff --git a/ApplicationCode/CommandFileInterface/RicfReplaceSourceCases.cpp b/ApplicationCode/CommandFileInterface/RicfReplaceSourceCases.cpp index 84c16eb528..5e2d717701 100644 --- a/ApplicationCode/CommandFileInterface/RicfReplaceSourceCases.cpp +++ b/ApplicationCode/CommandFileInterface/RicfReplaceSourceCases.cpp @@ -24,6 +24,8 @@ #include "RiaLogging.h" #include "RiaProjectModifier.h" +#include "cafPdmFieldIOScriptability.h" + CAF_PDM_SOURCE_INIT( RicfReplaceSourceCases, "replaceSourceCases" ); //-------------------------------------------------------------------------------------------------- @@ -31,20 +33,20 @@ CAF_PDM_SOURCE_INIT( RicfReplaceSourceCases, "replaceSourceCases" ); //-------------------------------------------------------------------------------------------------- RicfReplaceSourceCases::RicfReplaceSourceCases() { - RICF_InitField( &m_caseGroupId, "caseGroupId", -1, "Case Group ID", "", "", "" ); - RICF_InitField( &m_gridListFile, "gridListFile", QString(), "Grid List File", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_caseGroupId, "caseGroupId", -1, "Case Group ID", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_gridListFile, "gridListFile", QString(), "Grid List File", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfReplaceSourceCases::execute() +caf::PdmScriptResponse RicfReplaceSourceCases::execute() { if ( m_gridListFile().isNull() ) { QString error( "replaceSourceCases: Required parameter gridListFile." ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } QString lastProjectPath = RicfCommandFileExecutor::instance()->getLastProjectPath(); @@ -53,7 +55,7 @@ RicfCommandResponse RicfReplaceSourceCases::execute() QString error( "replaceSourceCases: 'openProject' must be called before 'replaceSourceCases' to specify " "project file to replace cases in." ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } cvf::ref projectModifier = new RiaProjectModifier; @@ -74,7 +76,7 @@ RicfCommandResponse RicfReplaceSourceCases::execute() { QString error( "Could not reload project" ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } diff --git a/ApplicationCode/CommandFileInterface/RicfReplaceSourceCases.h b/ApplicationCode/CommandFileInterface/RicfReplaceSourceCases.h index 285a67a508..935f976a35 100644 --- a/ApplicationCode/CommandFileInterface/RicfReplaceSourceCases.h +++ b/ApplicationCode/CommandFileInterface/RicfReplaceSourceCases.h @@ -34,7 +34,7 @@ class RicfReplaceSourceCases : public RicfCommandObject public: RicfReplaceSourceCases(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_gridListFile; diff --git a/ApplicationCode/CommandFileInterface/RicfRunOctaveScript.cpp b/ApplicationCode/CommandFileInterface/RicfRunOctaveScript.cpp index 0c8d10fcff..bbc4f822ef 100644 --- a/ApplicationCode/CommandFileInterface/RicfRunOctaveScript.cpp +++ b/ApplicationCode/CommandFileInterface/RicfRunOctaveScript.cpp @@ -26,6 +26,8 @@ #include "RimEclipseCase.h" #include "RimProject.h" +#include "cafPdmFieldIOScriptability.h" + #include CAF_PDM_SOURCE_INIT( RicfRunOctaveScript, "runOctaveScript" ); @@ -35,14 +37,14 @@ CAF_PDM_SOURCE_INIT( RicfRunOctaveScript, "runOctaveScript" ); //-------------------------------------------------------------------------------------------------- RicfRunOctaveScript::RicfRunOctaveScript() { - RICF_InitField( &m_path, "path", QString(), "Path", "", "", "" ); - RICF_InitField( &m_caseIds, "caseIds", std::vector(), "Case IDs", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_path, "path", QString(), "Path", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_caseIds, "caseIds", std::vector(), "Case IDs", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfRunOctaveScript::execute() +caf::PdmScriptResponse RicfRunOctaveScript::execute() { QString octavePath = RiaApplication::instance()->octavePath(); @@ -77,12 +79,12 @@ RicfCommandResponse RicfRunOctaveScript::execute() RiaApplication::instance()->octaveProcessEnvironment() ); } - RicfCommandResponse response; + caf::PdmScriptResponse response; if ( !ok ) { QString error = QString( "runOctaveScript: Could not execute script %1" ).arg( m_path() ); RiaLogging::error( error ); - response.updateStatus( RicfCommandResponse::COMMAND_ERROR, error ); + response.updateStatus( caf::PdmScriptResponse::COMMAND_ERROR, error ); } else { diff --git a/ApplicationCode/CommandFileInterface/RicfRunOctaveScript.h b/ApplicationCode/CommandFileInterface/RicfRunOctaveScript.h index b93fdca280..edd3b8785b 100644 --- a/ApplicationCode/CommandFileInterface/RicfRunOctaveScript.h +++ b/ApplicationCode/CommandFileInterface/RicfRunOctaveScript.h @@ -34,9 +34,9 @@ class RicfRunOctaveScript : public RicfCommandObject public: RicfRunOctaveScript(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_path; caf::PdmField> m_caseIds; -}; \ No newline at end of file +}; diff --git a/ApplicationCode/CommandFileInterface/RicfScaleFractureTemplate.cpp b/ApplicationCode/CommandFileInterface/RicfScaleFractureTemplate.cpp index d7ba073fb7..a496ad4140 100644 --- a/ApplicationCode/CommandFileInterface/RicfScaleFractureTemplate.cpp +++ b/ApplicationCode/CommandFileInterface/RicfScaleFractureTemplate.cpp @@ -26,6 +26,8 @@ #include "RimFractureTemplateCollection.h" #include "RimProject.h" +#include "cafPdmFieldIOScriptability.h" + CAF_PDM_SOURCE_INIT( RicfScaleFractureTemplate, "scaleFractureTemplate" ); //-------------------------------------------------------------------------------------------------- @@ -35,13 +37,13 @@ RicfScaleFractureTemplate::RicfScaleFractureTemplate() { // clang-format off - RICF_InitField(&m_id, "id", -1, "Id", "", "", ""); - RICF_InitField(&m_halfLengthScaleFactor, "halfLength", 1.0, "HalfLengthScaleFactor", "", "", ""); - RICF_InitField(&m_heightScaleFactor, "height", 1.0, "HeightScaleFactor", "", "", ""); - RICF_InitField(&m_dFactorScaleFactor, "dFactor", 1.0, "DFactorScaleFactor", "", "", ""); - RICF_InitField(&m_conductivityScaleFactor, "conductivity", 1.0, "ConductivityScaleFactor", "", "", ""); + CAF_PDM_InitScriptableFieldWithIO(&m_id, "id", -1, "Id", "", "", ""); + CAF_PDM_InitScriptableFieldWithIO(&m_halfLengthScaleFactor, "halfLength", 1.0, "HalfLengthScaleFactor", "", "", ""); + CAF_PDM_InitScriptableFieldWithIO(&m_heightScaleFactor, "height", 1.0, "HeightScaleFactor", "", "", ""); + CAF_PDM_InitScriptableFieldWithIO(&m_dFactorScaleFactor, "dFactor", 1.0, "DFactorScaleFactor", "", "", ""); + CAF_PDM_InitScriptableFieldWithIO(&m_conductivityScaleFactor, "conductivity", 1.0, "ConductivityScaleFactor", "", "", ""); - RICF_InitField(&m_OBSOLETE_widthScaleFactor, "width", 1.0, "WidthScaleFactor", "", "", ""); + CAF_PDM_InitScriptableFieldWithIO(&m_OBSOLETE_widthScaleFactor, "width", 1.0, "WidthScaleFactor", "", "", ""); // clang-format on } @@ -49,13 +51,13 @@ RicfScaleFractureTemplate::RicfScaleFractureTemplate() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfScaleFractureTemplate::execute() +caf::PdmScriptResponse RicfScaleFractureTemplate::execute() { if ( m_id < 0 ) { QString error( "scaleFractureTemplate: Fracture template id not specified" ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } RimProject* project = RiaApplication::instance()->project(); @@ -64,7 +66,7 @@ RicfCommandResponse RicfScaleFractureTemplate::execute() { QString error( "scaleFractureTemplate: Project not found" ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } RimFractureTemplateCollection* templColl = @@ -75,12 +77,12 @@ RicfCommandResponse RicfScaleFractureTemplate::execute() { QString error = QString( "scaleFractureTemplate: Fracture template not found. Id=%1" ).arg( m_id ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } templ->setScaleFactors( m_halfLengthScaleFactor, m_heightScaleFactor, m_dFactorScaleFactor, m_conductivityScaleFactor ); templ->loadDataAndUpdateGeometryHasChanged(); - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/CommandFileInterface/RicfScaleFractureTemplate.h b/ApplicationCode/CommandFileInterface/RicfScaleFractureTemplate.h index 7345c2aab5..93999f9bf1 100644 --- a/ApplicationCode/CommandFileInterface/RicfScaleFractureTemplate.h +++ b/ApplicationCode/CommandFileInterface/RicfScaleFractureTemplate.h @@ -36,7 +36,7 @@ class RicfScaleFractureTemplate : public RicfCommandObject public: RicfScaleFractureTemplate(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: void initAfterRead() override; diff --git a/ApplicationCode/CommandFileInterface/RicfSetExportFolder.cpp b/ApplicationCode/CommandFileInterface/RicfSetExportFolder.cpp index 4bef091169..386cb7d5fa 100644 --- a/ApplicationCode/CommandFileInterface/RicfSetExportFolder.cpp +++ b/ApplicationCode/CommandFileInterface/RicfSetExportFolder.cpp @@ -21,6 +21,8 @@ #include "RiaApplication.h" #include "RiaLogging.h" +#include "cafPdmFieldIOScriptability.h" + #include CAF_PDM_SOURCE_INIT( RicfSetExportFolder, "setExportFolder" ); @@ -31,16 +33,16 @@ CAF_PDM_SOURCE_INIT( RicfSetExportFolder, "setExportFolder" ); RicfSetExportFolder::RicfSetExportFolder() { // clang-format off - RICF_InitField(&m_type, "type", RicfCommandFileExecutor::ExportTypeEnum(RicfCommandFileExecutor::COMPLETIONS), "Type", "", "", ""); - RICF_InitField(&m_path, "path", QString(), "Path", "", "", ""); - RICF_InitField(&m_createFolder, "createFolder", false, "Create Folder", "", "", ""); + CAF_PDM_InitScriptableFieldWithIO(&m_type, "type", RicfCommandFileExecutor::ExportTypeEnum(RicfCommandFileExecutor::COMPLETIONS), "Type", "", "", ""); + CAF_PDM_InitScriptableFieldWithIO(&m_path, "path", QString(), "Path", "", "", ""); + CAF_PDM_InitScriptableFieldWithIO(&m_createFolder, "createFolder", false, "Create Folder", "", "", ""); // clang-format on } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfSetExportFolder::execute() +caf::PdmScriptResponse RicfSetExportFolder::execute() { if ( m_createFolder ) { @@ -54,12 +56,12 @@ RicfCommandResponse RicfSetExportFolder::execute() { QString error = QString( "Could not create folder : %1" ).arg( m_path ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } } } RicfCommandFileExecutor* executor = RicfCommandFileExecutor::instance(); executor->setExportPath( m_type(), m_path ); - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } diff --git a/ApplicationCode/CommandFileInterface/RicfSetExportFolder.h b/ApplicationCode/CommandFileInterface/RicfSetExportFolder.h index 231e3164f7..45256d324f 100644 --- a/ApplicationCode/CommandFileInterface/RicfSetExportFolder.h +++ b/ApplicationCode/CommandFileInterface/RicfSetExportFolder.h @@ -36,7 +36,7 @@ class RicfSetExportFolder : public RicfCommandObject public: RicfSetExportFolder(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_type; diff --git a/ApplicationCode/CommandFileInterface/RicfSetFractureContainment.cpp b/ApplicationCode/CommandFileInterface/RicfSetFractureContainment.cpp index 6db26b8dde..b822dbacaa 100644 --- a/ApplicationCode/CommandFileInterface/RicfSetFractureContainment.cpp +++ b/ApplicationCode/CommandFileInterface/RicfSetFractureContainment.cpp @@ -26,6 +26,8 @@ #include "RimFractureTemplateCollection.h" #include "RimProject.h" +#include "cafPdmFieldIOScriptability.h" + CAF_PDM_SOURCE_INIT( RicfSetFractureContainment, "setFractureContainment" ); //-------------------------------------------------------------------------------------------------- @@ -33,21 +35,21 @@ CAF_PDM_SOURCE_INIT( RicfSetFractureContainment, "setFractureContainment" ); //-------------------------------------------------------------------------------------------------- RicfSetFractureContainment::RicfSetFractureContainment() { - RICF_InitField( &m_id, "id", -1, "Id", "", "", "" ); - RICF_InitField( &m_topLayer, "topLayer", -1, "TopLayer", "", "", "" ); - RICF_InitField( &m_baseLayer, "baseLayer", -1, "BaseLayer", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_id, "id", -1, "Id", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_topLayer, "topLayer", -1, "TopLayer", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_baseLayer, "baseLayer", -1, "BaseLayer", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfSetFractureContainment::execute() +caf::PdmScriptResponse RicfSetFractureContainment::execute() { if ( m_id < 0 || m_topLayer < 0 || m_baseLayer < 0 ) { QString error( "setFractureContainment: Required argument missing" ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } RimProject* project = RiaApplication::instance()->project(); @@ -56,7 +58,7 @@ RicfCommandResponse RicfSetFractureContainment::execute() { QString error( "setFractureContainment: Project not found" ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } RimFractureTemplateCollection* templColl = @@ -67,11 +69,11 @@ RicfCommandResponse RicfSetFractureContainment::execute() { QString error = QString( "setFractureContainment: Fracture template not found. Id=%1" ).arg( m_id ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } templ->setContainmentTopKLayer( m_topLayer ); templ->setContainmentBaseKLayer( m_baseLayer ); templ->loadDataAndUpdateGeometryHasChanged(); - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } diff --git a/ApplicationCode/CommandFileInterface/RicfSetFractureContainment.h b/ApplicationCode/CommandFileInterface/RicfSetFractureContainment.h index fd1bb31042..94bc37613f 100644 --- a/ApplicationCode/CommandFileInterface/RicfSetFractureContainment.h +++ b/ApplicationCode/CommandFileInterface/RicfSetFractureContainment.h @@ -36,7 +36,7 @@ class RicfSetFractureContainment : public RicfCommandObject public: RicfSetFractureContainment(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_id; diff --git a/ApplicationCode/CommandFileInterface/RicfSetMainWindowSize.cpp b/ApplicationCode/CommandFileInterface/RicfSetMainWindowSize.cpp index f55c5ed255..6646dc30ae 100644 --- a/ApplicationCode/CommandFileInterface/RicfSetMainWindowSize.cpp +++ b/ApplicationCode/CommandFileInterface/RicfSetMainWindowSize.cpp @@ -21,6 +21,8 @@ #include "RiuMainWindow.h" +#include "cafPdmFieldIOScriptability.h" + CAF_PDM_SOURCE_INIT( RicfSetMainWindowSize, "setMainWindowSize" ); //-------------------------------------------------------------------------------------------------- @@ -28,15 +30,15 @@ CAF_PDM_SOURCE_INIT( RicfSetMainWindowSize, "setMainWindowSize" ); //-------------------------------------------------------------------------------------------------- RicfSetMainWindowSize::RicfSetMainWindowSize() { - RICF_InitField( &m_height, "height", -1, "Height", "", "", "" ); - RICF_InitField( &m_width, "width", -1, "Width", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_height, "height", -1, "Height", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_width, "width", -1, "Width", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfSetMainWindowSize::execute() +caf::PdmScriptResponse RicfSetMainWindowSize::execute() { RiuMainWindow::instance()->resize( m_width, m_height ); - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } diff --git a/ApplicationCode/CommandFileInterface/RicfSetMainWindowSize.h b/ApplicationCode/CommandFileInterface/RicfSetMainWindowSize.h index 97d8966932..48f2d04008 100644 --- a/ApplicationCode/CommandFileInterface/RicfSetMainWindowSize.h +++ b/ApplicationCode/CommandFileInterface/RicfSetMainWindowSize.h @@ -34,7 +34,7 @@ class RicfSetMainWindowSize : public RicfCommandObject public: RicfSetMainWindowSize(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_height; diff --git a/ApplicationCode/CommandFileInterface/RicfSetPlotWindowSize.cpp b/ApplicationCode/CommandFileInterface/RicfSetPlotWindowSize.cpp index 0b7a78ac4d..b0ee15a27b 100644 --- a/ApplicationCode/CommandFileInterface/RicfSetPlotWindowSize.cpp +++ b/ApplicationCode/CommandFileInterface/RicfSetPlotWindowSize.cpp @@ -21,6 +21,8 @@ #include "RiaGuiApplication.h" #include "RiuPlotMainWindow.h" +#include "cafPdmFieldIOScriptability.h" + CAF_PDM_SOURCE_INIT( RicfSetPlotWindowSize, "setPlotWindowSize" ); //-------------------------------------------------------------------------------------------------- @@ -28,20 +30,20 @@ CAF_PDM_SOURCE_INIT( RicfSetPlotWindowSize, "setPlotWindowSize" ); //-------------------------------------------------------------------------------------------------- RicfSetPlotWindowSize::RicfSetPlotWindowSize() { - RICF_InitField( &m_height, "height", -1, "Height", "", "", "" ); - RICF_InitField( &m_width, "width", -1, "Width", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_height, "height", -1, "Height", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_width, "width", -1, "Width", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfSetPlotWindowSize::execute() +caf::PdmScriptResponse RicfSetPlotWindowSize::execute() { RiaGuiApplication* guiApp = RiaGuiApplication::instance(); if ( guiApp ) { guiApp->getOrCreateAndShowMainPlotWindow()->resize( m_width, m_height ); - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, "Need GUI ResInsight to set plot window size" ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, "Need GUI ResInsight to set plot window size" ); } diff --git a/ApplicationCode/CommandFileInterface/RicfSetPlotWindowSize.h b/ApplicationCode/CommandFileInterface/RicfSetPlotWindowSize.h index 180440ec5a..fb122efcb1 100644 --- a/ApplicationCode/CommandFileInterface/RicfSetPlotWindowSize.h +++ b/ApplicationCode/CommandFileInterface/RicfSetPlotWindowSize.h @@ -34,7 +34,7 @@ class RicfSetPlotWindowSize : public RicfCommandObject public: RicfSetPlotWindowSize(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_height; diff --git a/ApplicationCode/CommandFileInterface/RicfSetStartDir.cpp b/ApplicationCode/CommandFileInterface/RicfSetStartDir.cpp index 4cc7e3b36a..776a686b88 100644 --- a/ApplicationCode/CommandFileInterface/RicfSetStartDir.cpp +++ b/ApplicationCode/CommandFileInterface/RicfSetStartDir.cpp @@ -21,6 +21,8 @@ #include "RiaApplication.h" #include "RiaLogging.h" +#include "cafPdmFieldIOScriptability.h" + #include CAF_PDM_SOURCE_INIT( RicfSetStartDir, "setStartDir" ); @@ -30,28 +32,28 @@ CAF_PDM_SOURCE_INIT( RicfSetStartDir, "setStartDir" ); //-------------------------------------------------------------------------------------------------- RicfSetStartDir::RicfSetStartDir() { - RICF_InitField( &m_path, "path", QString(), "Path", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_path, "path", QString(), "Path", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfSetStartDir::execute() +caf::PdmScriptResponse RicfSetStartDir::execute() { QDir directory( m_path ); if ( !directory.exists() ) { QString error = QString( "Path does not exist: %1" ).arg( m_path ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } if ( !directory.isReadable() ) { QString error = QString( "Path does not exist: %1" ).arg( m_path ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } RiaApplication::instance()->setStartDir( m_path ); - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } diff --git a/ApplicationCode/CommandFileInterface/RicfSetStartDir.h b/ApplicationCode/CommandFileInterface/RicfSetStartDir.h index 17965cd4ee..cff242d4d3 100644 --- a/ApplicationCode/CommandFileInterface/RicfSetStartDir.h +++ b/ApplicationCode/CommandFileInterface/RicfSetStartDir.h @@ -34,7 +34,7 @@ class RicfSetStartDir : public RicfCommandObject public: RicfSetStartDir(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_path; diff --git a/ApplicationCode/CommandFileInterface/RicfSetTimeStep.cpp b/ApplicationCode/CommandFileInterface/RicfSetTimeStep.cpp index fa39180d91..9f28feb12e 100644 --- a/ApplicationCode/CommandFileInterface/RicfSetTimeStep.cpp +++ b/ApplicationCode/CommandFileInterface/RicfSetTimeStep.cpp @@ -27,6 +27,8 @@ #include "RiaApplication.h" #include "RiaLogging.h" +#include "cafPdmFieldIOScriptability.h" + CAF_PDM_SOURCE_INIT( RicfSetTimeStep, "setTimeStep" ); //-------------------------------------------------------------------------------------------------- @@ -34,9 +36,9 @@ CAF_PDM_SOURCE_INIT( RicfSetTimeStep, "setTimeStep" ); //-------------------------------------------------------------------------------------------------- RicfSetTimeStep::RicfSetTimeStep() { - RICF_InitField( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); - RICF_InitField( &m_viewId, "viewId", -1, "View ID", "", "", "" ); - RICF_InitField( &m_timeStepIndex, "timeStep", -1, "Time Step Index", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_caseId, "caseId", -1, "Case ID", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_viewId, "viewId", -1, "View ID", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_timeStepIndex, "timeStep", -1, "Time Step Index", "", "", "" ); } //-------------------------------------------------------------------------------------------------- @@ -66,7 +68,7 @@ void RicfSetTimeStep::setTimeStepIndex( int timeStepIndex ) //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicfSetTimeStep::execute() +caf::PdmScriptResponse RicfSetTimeStep::execute() { RimCase* rimCase = nullptr; std::vector allCases; @@ -88,7 +90,7 @@ RicfCommandResponse RicfSetTimeStep::execute() { QString error = QString( "setTimeStep: Could not find case with ID %1" ).arg( m_caseId() ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } } @@ -100,7 +102,7 @@ RicfCommandResponse RicfSetTimeStep::execute() .arg( maxTimeStep ) .arg( m_caseId() ); RiaLogging::error( error ); - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, error ); } for ( Rim3dView* view : rimCase->views() ) @@ -112,5 +114,5 @@ RicfCommandResponse RicfSetTimeStep::execute() } } - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } diff --git a/ApplicationCode/CommandFileInterface/RicfSetTimeStep.h b/ApplicationCode/CommandFileInterface/RicfSetTimeStep.h index 0933f62ce6..f269035c9f 100644 --- a/ApplicationCode/CommandFileInterface/RicfSetTimeStep.h +++ b/ApplicationCode/CommandFileInterface/RicfSetTimeStep.h @@ -38,7 +38,7 @@ public: void setViewId( int viewId ); void setTimeStepIndex( int timeStepIndex ); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; private: caf::PdmField m_caseId; diff --git a/ApplicationCode/Commands/ApplicationCommands/RicSaveProjectAsFeature.cpp b/ApplicationCode/Commands/ApplicationCommands/RicSaveProjectAsFeature.cpp index 374465c038..fce15fa15c 100644 --- a/ApplicationCode/Commands/ApplicationCommands/RicSaveProjectAsFeature.cpp +++ b/ApplicationCode/Commands/ApplicationCommands/RicSaveProjectAsFeature.cpp @@ -23,6 +23,8 @@ #include "RicSaveProjectFeature.h" #include "Riu3DMainWindowTools.h" +#include "cafPdmFieldIOScriptability.h" + #include #include @@ -33,21 +35,21 @@ RICF_SOURCE_INIT( RicSaveProjectAsFeature, "RicSaveProjectAsFeature", "saveProje //-------------------------------------------------------------------------------------------------- RicSaveProjectAsFeature::RicSaveProjectAsFeature() { - RICF_InitFieldNoDefault( &m_filePath, "filePath", "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_filePath, "filePath", "", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicSaveProjectAsFeature::execute() +caf::PdmScriptResponse RicSaveProjectAsFeature::execute() { this->disableModelChangeContribution(); QString errorMessage; if ( !RiaApplication::instance()->saveProjectAs( m_filePath(), &errorMessage ) ) { - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, errorMessage ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, errorMessage ); } - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } //-------------------------------------------------------------------------------------------------- @@ -73,7 +75,7 @@ void RicSaveProjectAsFeature::onActionTriggered( bool isChecked ) } auto response = execute(); - if ( response.status() != RicfCommandResponse::COMMAND_OK ) + if ( response.status() != caf::PdmScriptResponse::COMMAND_OK ) { QString displayMessage = response.messages().join( "\n" ); if ( RiaGuiApplication::isRunning() ) diff --git a/ApplicationCode/Commands/ApplicationCommands/RicSaveProjectAsFeature.h b/ApplicationCode/Commands/ApplicationCommands/RicSaveProjectAsFeature.h index b2b25a44bc..974582a7c9 100644 --- a/ApplicationCode/Commands/ApplicationCommands/RicSaveProjectAsFeature.h +++ b/ApplicationCode/Commands/ApplicationCommands/RicSaveProjectAsFeature.h @@ -32,7 +32,7 @@ class RicSaveProjectAsFeature : public caf::CmdFeature, public RicfCommandObject public: RicSaveProjectAsFeature(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; protected: // Overrides diff --git a/ApplicationCode/Commands/ApplicationCommands/RicSaveProjectFeature.cpp b/ApplicationCode/Commands/ApplicationCommands/RicSaveProjectFeature.cpp index 947d5b7108..e0bfa72c68 100644 --- a/ApplicationCode/Commands/ApplicationCommands/RicSaveProjectFeature.cpp +++ b/ApplicationCode/Commands/ApplicationCommands/RicSaveProjectFeature.cpp @@ -38,7 +38,7 @@ RicSaveProjectFeature::RicSaveProjectFeature() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicSaveProjectFeature::execute() +caf::PdmScriptResponse RicSaveProjectFeature::execute() { this->disableModelChangeContribution(); @@ -55,10 +55,10 @@ RicfCommandResponse RicSaveProjectFeature::execute() if ( !worked ) { - return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, errorMessage ); + return caf::PdmScriptResponse( caf::PdmScriptResponse::COMMAND_ERROR, errorMessage ); } - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } //-------------------------------------------------------------------------------------------------- @@ -88,7 +88,7 @@ void RicSaveProjectFeature::onActionTriggered( bool isChecked ) } auto response = execute(); - if ( response.status() != RicfCommandResponse::COMMAND_OK ) + if ( response.status() != caf::PdmScriptResponse::COMMAND_OK ) { QString displayMessage = response.messages().join( "\n" ); if ( RiaGuiApplication::isRunning() ) diff --git a/ApplicationCode/Commands/ApplicationCommands/RicSaveProjectFeature.h b/ApplicationCode/Commands/ApplicationCommands/RicSaveProjectFeature.h index 61d0939e34..94ef52564b 100644 --- a/ApplicationCode/Commands/ApplicationCommands/RicSaveProjectFeature.h +++ b/ApplicationCode/Commands/ApplicationCommands/RicSaveProjectFeature.h @@ -32,7 +32,7 @@ class RicSaveProjectFeature : public caf::CmdFeature, public RicfCommandObject public: RicSaveProjectFeature(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; protected: // Overrides diff --git a/ApplicationCode/Commands/RicExportContourMapToTextFeature.cpp b/ApplicationCode/Commands/RicExportContourMapToTextFeature.cpp index 58435e5fd8..495b9d870e 100644 --- a/ApplicationCode/Commands/RicExportContourMapToTextFeature.cpp +++ b/ApplicationCode/Commands/RicExportContourMapToTextFeature.cpp @@ -36,6 +36,7 @@ #include "RiuViewer.h" #include "cafCmdFeatureManager.h" +#include "cafPdmFieldIOScriptability.h" #include "cafPdmUiPropertyViewDialog.h" #include "cafSelectionManager.h" #include "cafUtils.h" @@ -49,11 +50,11 @@ RICF_SOURCE_INIT( RicExportContourMapToTextFeature, "RicExportContourMapToTextFe RicExportContourMapToTextFeature::RicExportContourMapToTextFeature() { - RICF_InitFieldNoDefault( &m_exportFileName, "exportFileName", "", "", "", "" ); - RICF_InitFieldNoDefault( &m_exportLocalCoordinates, "exportLocalCoordinates", "", "", "", "" ); - RICF_InitFieldNoDefault( &m_undefinedValueLabel, "undefinedValueLabel", "", "", "", "" ); - RICF_InitFieldNoDefault( &m_excludeUndefinedValues, "excludeUndefinedValues", "", "", "", "" ); - RICF_InitField( &m_viewId, "viewId", -1, "View Id", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_exportFileName, "exportFileName", "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_exportLocalCoordinates, "exportLocalCoordinates", "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_undefinedValueLabel, "undefinedValueLabel", "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_excludeUndefinedValues, "excludeUndefinedValues", "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_viewId, "viewId", -1, "View Id", "", "", "" ); } //-------------------------------------------------------------------------------------------------- @@ -127,13 +128,13 @@ void RicExportContourMapToTextFeature::onActionTriggered( bool isChecked ) m_undefinedValueLabel = featureUi.undefinedValueLabel(); m_excludeUndefinedValues = featureUi.excludeUndefinedValues(); - RicfCommandResponse response = execute(); - QStringList messages = response.messages(); + caf::PdmScriptResponse response = execute(); + QStringList messages = response.messages(); if ( !messages.empty() ) { QString displayMessage = QString( "Problem exporting contour map:\n%2" ).arg( messages.join( "\n" ) ); - if ( response.status() == RicfCommandResponse::COMMAND_ERROR ) + if ( response.status() == caf::PdmScriptResponse::COMMAND_ERROR ) { RiaLogging::error( displayMessage ); } @@ -273,10 +274,10 @@ void RicExportContourMapToTextFeature::setupActionLook( QAction* actionToSetup ) //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicExportContourMapToTextFeature::execute() +caf::PdmScriptResponse RicExportContourMapToTextFeature::execute() { - RicfCommandResponse response; - QStringList errorMessages, warningMessages; + caf::PdmScriptResponse response; + QStringList errorMessages, warningMessages; RiaApplication* app = RiaApplication::instance(); @@ -297,7 +298,7 @@ RicfCommandResponse RicExportContourMapToTextFeature::execute() if ( !myView ) { - response.updateStatus( RicfCommandResponse::COMMAND_ERROR, "No contour map view found" ); + response.updateStatus( caf::PdmScriptResponse::COMMAND_ERROR, "No contour map view found" ); return response; } @@ -339,7 +340,7 @@ RicfCommandResponse RicExportContourMapToTextFeature::execute() for ( QString errorMessage : errorMessages ) { - response.updateStatus( RicfCommandResponse::COMMAND_ERROR, errorMessage ); + response.updateStatus( caf::PdmScriptResponse::COMMAND_ERROR, errorMessage ); } return response; diff --git a/ApplicationCode/Commands/RicExportContourMapToTextFeature.h b/ApplicationCode/Commands/RicExportContourMapToTextFeature.h index 9719bf02ce..09aa7c30da 100644 --- a/ApplicationCode/Commands/RicExportContourMapToTextFeature.h +++ b/ApplicationCode/Commands/RicExportContourMapToTextFeature.h @@ -39,7 +39,7 @@ class RicExportContourMapToTextFeature : public caf::CmdFeature, public RicfComm public: RicExportContourMapToTextFeature(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; protected: bool isCommandEnabled() override; diff --git a/ApplicationCode/Commands/RicNewMultiPlotFeature.cpp b/ApplicationCode/Commands/RicNewMultiPlotFeature.cpp index 9be6132f08..c453faa53b 100644 --- a/ApplicationCode/Commands/RicNewMultiPlotFeature.cpp +++ b/ApplicationCode/Commands/RicNewMultiPlotFeature.cpp @@ -47,7 +47,7 @@ RicNewMultiPlotFeature::RicNewMultiPlotFeature() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse RicNewMultiPlotFeature::execute() +caf::PdmScriptResponse RicNewMultiPlotFeature::execute() { RimProject* project = RiaApplication::instance()->project(); RimMultiPlotCollection* plotCollection = project->mainPlotCollection()->multiPlotCollection(); @@ -84,7 +84,7 @@ RicfCommandResponse RicNewMultiPlotFeature::execute() RiuPlotMainWindowTools::setExpanded( plotCollection, true ); RiuPlotMainWindowTools::selectAsCurrentItem( plotWindow, true ); - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/Commands/RicNewMultiPlotFeature.h b/ApplicationCode/Commands/RicNewMultiPlotFeature.h index 4edd9f9be0..7a8109d2a3 100644 --- a/ApplicationCode/Commands/RicNewMultiPlotFeature.h +++ b/ApplicationCode/Commands/RicNewMultiPlotFeature.h @@ -37,7 +37,7 @@ class RicNewMultiPlotFeature : public caf::CmdFeature, public RicfCommandObject public: RicNewMultiPlotFeature(); - virtual RicfCommandResponse execute() override; + virtual caf::PdmScriptResponse execute() override; protected: // Overrides diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryEnsembleCurveSetFeature.cpp b/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryEnsembleCurveSetFeature.cpp index f5830b34c5..a9f9b10acb 100644 --- a/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryEnsembleCurveSetFeature.cpp +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryEnsembleCurveSetFeature.cpp @@ -78,7 +78,8 @@ RimEnsembleCurveSet* RicNewSummaryEnsembleCurveSetFeature::addDefaultCurveSet( R //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RicNewSummaryEnsembleCurveSetFeature::createPlotForCurveSetsAndUpdate( std::vector ensembles ) +RimSummaryPlot* + RicNewSummaryEnsembleCurveSetFeature::createPlotForCurveSetsAndUpdate( std::vector ensembles ) { RiaGuiApplication* app = RiaGuiApplication::instance(); RimProject* proj = app->project(); @@ -102,6 +103,7 @@ void RicNewSummaryEnsembleCurveSetFeature::createPlotForCurveSetsAndUpdate( std: mainPlotWindow->selectAsCurrentItem( firstCurveSetCreated ); mainPlotWindow->updateSummaryPlotToolBar(); } + return plot; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryEnsembleCurveSetFeature.h b/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryEnsembleCurveSetFeature.h index e79dda2370..85606d572f 100644 --- a/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryEnsembleCurveSetFeature.h +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryEnsembleCurveSetFeature.h @@ -34,7 +34,7 @@ class RicNewSummaryEnsembleCurveSetFeature : public caf::CmdFeature CAF_CMD_HEADER_INIT; public: - static void createPlotForCurveSetsAndUpdate( std::vector ensembles ); + static RimSummaryPlot* createPlotForCurveSetsAndUpdate( std::vector ensembles ); protected: // Overrides diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryPlotFeature.cpp b/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryPlotFeature.cpp index 50a079c697..52992c3051 100644 --- a/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryPlotFeature.cpp +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryPlotFeature.cpp @@ -40,6 +40,8 @@ #include "RiuPlotMainWindow.h" +#include "cafPdmFieldIOScriptability.h" +#include "cafPdmFieldScriptability.h" #include "cafSelectionManagerTools.h" #include "cvfAssert.h" @@ -208,6 +210,29 @@ void extractPlotObjectsFromSelection( std::vector* se } } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RimSummaryPlot* RicNewDefaultSummaryPlotFeature::createFromSummaryCases( RimSummaryPlotCollection* plotCollection, + const std::vector& summaryCases ) +{ + RimSummaryPlot* newPlot = plotCollection->createSummaryPlotWithAutoTitle(); + + for ( RimSummaryCase* sumCase : summaryCases ) + { + RicSummaryPlotFeatureImpl::addDefaultCurvesToPlot( newPlot, sumCase ); + } + + newPlot->applyDefaultCurveAppearances(); + newPlot->loadDataAndUpdate(); + + plotCollection->updateConnectedEditors(); + + RiuPlotMainWindowTools::setExpanded( newPlot ); + RiuPlotMainWindowTools::selectAsCurrentItem( newPlot ); + return newPlot; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -234,20 +259,7 @@ void RicNewDefaultSummaryPlotFeature::onActionTriggered( bool isChecked ) { RimSummaryPlotCollection* sumPlotColl = RiaApplication::instance()->project()->mainPlotCollection()->summaryPlotCollection(); - RimSummaryPlot* newPlot = sumPlotColl->createSummaryPlotWithAutoTitle(); - - for ( RimSummaryCase* sumCase : selectedIndividualSummaryCases ) - { - RicSummaryPlotFeatureImpl::addDefaultCurvesToPlot( newPlot, sumCase ); - } - - newPlot->applyDefaultCurveAppearances(); - newPlot->loadDataAndUpdate(); - - sumPlotColl->updateConnectedEditors(); - - RiuPlotMainWindowTools::setExpanded( newPlot ); - RiuPlotMainWindowTools::selectAsCurrentItem( newPlot ); + createFromSummaryCases( sumPlotColl, selectedIndividualSummaryCases ); } else { @@ -276,3 +288,42 @@ void RicNewDefaultSummaryPlotFeature::setupActionLook( QAction* actionToSetup ) } actionToSetup->setIcon( QIcon( ":/SummaryPlotLight16x16.png" ) ); } + +CAF_PDM_OBJECT_METHOD_SOURCE_INIT( RimSummaryPlotCollection, RimSummaryPlotCollection_newSummaryPlot, "NewSummaryPlot" ); + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RimSummaryPlotCollection_newSummaryPlot::RimSummaryPlotCollection_newSummaryPlot( caf::PdmObjectHandle* self ) + : caf::PdmObjectMethod( self ) +{ + CAF_PDM_InitObject( "Create Summary Plot", "", "", "Create a new Summary Plot" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_summaryCases, "SummaryCases", "", "", "", "Summary Cases" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_ensembles, "Ensembles", "", "", "", "Ensembles" ); +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +caf::PdmObjectHandle* RimSummaryPlotCollection_newSummaryPlot::execute() +{ + if ( !m_summaryCases.empty() ) + { + return RicNewDefaultSummaryPlotFeature::createFromSummaryCases( self(), + m_summaryCases.ptrReferencedObjects() ); + } + else if ( !m_ensembles.empty() ) + { + return RicNewSummaryEnsembleCurveSetFeature::createPlotForCurveSetsAndUpdate( m_ensembles.ptrReferencedObjects() ); + } + + return nullptr; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +bool RimSummaryPlotCollection_newSummaryPlot::deleteObjectAfterReply() const +{ + return false; +} diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryPlotFeature.h b/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryPlotFeature.h index c2baaf9633..40f722c829 100644 --- a/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryPlotFeature.h +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicNewSummaryPlotFeature.h @@ -18,10 +18,14 @@ #pragma once +#include "RicfCommandObject.h" + #include "cafCmdFeature.h" +#include "cafPdmPtrArrayField.h" class RimSummaryPlotCollection; class RimSummaryCase; +class RimSummaryCaseCollection; class RimSummaryPlot; //================================================================================================== @@ -45,9 +49,31 @@ class RicNewDefaultSummaryPlotFeature : public caf::CmdFeature { CAF_CMD_HEADER_INIT; +public: + static RimSummaryPlot* createFromSummaryCases( RimSummaryPlotCollection* plotCollection, + const std::vector& summaryCases ); + protected: // Overrides bool isCommandEnabled() override; void onActionTriggered( bool isChecked ) override; void setupActionLook( QAction* actionToSetup ) override; }; + +//================================================================================================== +/// +//================================================================================================== +class RimSummaryPlotCollection_newSummaryPlot : public caf::PdmObjectMethod +{ + CAF_PDM_HEADER_INIT; + +public: + RimSummaryPlotCollection_newSummaryPlot( caf::PdmObjectHandle* self ); + + caf::PdmObjectHandle* execute(); + bool deleteObjectAfterReply() const override; + +private: + caf::PdmPtrArrayField m_summaryCases; + caf::PdmPtrArrayField m_ensembles; +}; diff --git a/ApplicationCode/Commands/WellPathCommands/RicImportWellPaths.cpp b/ApplicationCode/Commands/WellPathCommands/RicImportWellPaths.cpp index 205569b44a..2f18f98d5a 100644 --- a/ApplicationCode/Commands/WellPathCommands/RicImportWellPaths.cpp +++ b/ApplicationCode/Commands/WellPathCommands/RicImportWellPaths.cpp @@ -31,6 +31,8 @@ #include "Riu3DMainWindowTools.h" +#include "cafPdmFieldIOScriptability.h" + #include #include #include @@ -62,11 +64,11 @@ RICF_SOURCE_INIT( RicImportWellPaths, "RicWellPathsImportFileFeature", "importWe //-------------------------------------------------------------------------------------------------- RicImportWellPaths::RicImportWellPaths() { - RICF_InitFieldNoDefault( &m_wellPathFolder, "wellPathFolder", "", "", "", "" ); - RICF_InitFieldNoDefault( &m_wellPathFiles, "wellPathFiles", "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_wellPathFolder, "wellPathFolder", "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_wellPathFiles, "wellPathFiles", "", "", "", "" ); } -RicfCommandResponse RicImportWellPaths::execute() +caf::PdmScriptResponse RicImportWellPaths::execute() { QStringList errorMessages, warningMessages; QStringList wellPathFiles; @@ -115,7 +117,7 @@ RicfCommandResponse RicImportWellPaths::execute() } } - RicfCommandResponse response; + caf::PdmScriptResponse response; if ( !wellPathFiles.empty() ) { std::vector importedWellPaths = importWellPaths( wellPathFiles, &warningMessages ); @@ -137,12 +139,12 @@ RicfCommandResponse RicImportWellPaths::execute() for ( QString warningMessage : warningMessages ) { - response.updateStatus( RicfCommandResponse::COMMAND_WARNING, warningMessage ); + response.updateStatus( caf::PdmScriptResponse::COMMAND_WARNING, warningMessage ); } for ( QString errorMessage : errorMessages ) { - response.updateStatus( RicfCommandResponse::COMMAND_ERROR, errorMessage ); + response.updateStatus( caf::PdmScriptResponse::COMMAND_ERROR, errorMessage ); } return response; @@ -219,9 +221,9 @@ void RicImportWellPaths::onActionTriggered( bool isChecked ) if ( wellPathFilePaths.size() >= 1 ) { - m_wellPathFiles.v() = std::vector( wellPathFilePaths.begin(), wellPathFilePaths.end() ); - RicfCommandResponse response = execute(); - QStringList messages = response.messages(); + m_wellPathFiles.v() = std::vector( wellPathFilePaths.begin(), wellPathFilePaths.end() ); + caf::PdmScriptResponse response = execute(); + QStringList messages = response.messages(); if ( !messages.empty() ) { @@ -231,7 +233,7 @@ void RicImportWellPaths::onActionTriggered( bool isChecked ) { QMessageBox::warning( Riu3DMainWindowTools::mainWindowWidget(), "Well Path Loading", displayMessage ); } - if ( response.status() == RicfCommandResponse::COMMAND_ERROR ) + if ( response.status() == caf::PdmScriptResponse::COMMAND_ERROR ) { RiaLogging::error( displayMessage ); } diff --git a/ApplicationCode/Commands/WellPathCommands/RicImportWellPaths.h b/ApplicationCode/Commands/WellPathCommands/RicImportWellPaths.h index d0e1933432..7650f7330c 100644 --- a/ApplicationCode/Commands/WellPathCommands/RicImportWellPaths.h +++ b/ApplicationCode/Commands/WellPathCommands/RicImportWellPaths.h @@ -40,7 +40,7 @@ class RicImportWellPaths : public caf::CmdFeature, public RicfCommandObject public: RicImportWellPaths(); - RicfCommandResponse execute() override; + caf::PdmScriptResponse execute() override; protected: static std::vector importWellPaths( const QStringList& wellPathFilePaths, QStringList* errorMessages ); diff --git a/ApplicationCode/GrpcInterface/GrpcProtos/PdmObject.proto b/ApplicationCode/GrpcInterface/GrpcProtos/PdmObject.proto index e5ecf1976d..e64712c8c4 100644 --- a/ApplicationCode/GrpcInterface/GrpcProtos/PdmObject.proto +++ b/ApplicationCode/GrpcInterface/GrpcProtos/PdmObject.proto @@ -11,8 +11,9 @@ service PdmObjectService rpc GetAncestorPdmObject(PdmParentObjectRequest) returns (PdmObject) {} rpc CreateChildPdmObject(CreatePdmChildObjectRequest) returns (PdmObject) {} rpc UpdateExistingPdmObject(PdmObject) returns (Empty) {} - rpc CallPdmObjectGetMethod(PdmObjectMethodRequest) returns (stream PdmObjectGetMethodReply) {} - rpc CallPdmObjectSetMethod(stream PdmObjectSetMethodChunk) returns (ClientToServerStreamReply) {} + rpc CallPdmObjectGetter(PdmObjectGetterRequest) returns (stream PdmObjectGetterReply) {} + rpc CallPdmObjectSetter(stream PdmObjectSetterChunk) returns (ClientToServerStreamReply) {} + rpc CallPdmObjectMethod(PdmObjectMethodRequest) returns (PdmObject) {} } message PdmDescendantObjectRequest @@ -45,6 +46,7 @@ message PdmObject uint64 address = 2; map parameters = 3; bool visible = 4; + bool persistent = 5; // Does this object live on in ResInsight? } message PdmObjectArray @@ -52,26 +54,26 @@ message PdmObjectArray repeated PdmObject objects = 1; } -message PdmObjectMethodRequest +message PdmObjectGetterRequest { PdmObject object = 1; string method = 2; } -message PdmObjectSetMethodRequest +message PdmObjectSetterRequest { - PdmObjectMethodRequest request = 1; + PdmObjectGetterRequest request = 1; int32 data_count = 2; } -message PdmObjectSetMethodChunk +message PdmObjectSetterChunk { oneof data { - PdmObjectSetMethodRequest set_request = 1; - DoubleArray doubles = 2; - IntArray ints = 3; - StringArray strings = 4; + PdmObjectSetterRequest set_request = 1; + DoubleArray doubles = 2; + IntArray ints = 3; + StringArray strings = 4; } } @@ -91,7 +93,7 @@ message StringArray repeated string data = 1; } -message PdmObjectGetMethodReply +message PdmObjectGetterReply { oneof data { @@ -99,4 +101,11 @@ message PdmObjectGetMethodReply IntArray ints = 2; StringArray strings = 3; } -} \ No newline at end of file +} + +message PdmObjectMethodRequest +{ + PdmObject object = 1; + string method = 2; + PdmObject params = 3; +} diff --git a/ApplicationCode/GrpcInterface/Python/rips/PythonExamples/new_summary_plot.py b/ApplicationCode/GrpcInterface/Python/rips/PythonExamples/new_summary_plot.py new file mode 100644 index 0000000000..6e8a099c0d --- /dev/null +++ b/ApplicationCode/GrpcInterface/Python/rips/PythonExamples/new_summary_plot.py @@ -0,0 +1,13 @@ +# Load ResInsight Processing Server Client Library +import rips +# Connect to ResInsight instance +resinsight = rips.Instance.find() +# Example code +project = resinsight.project + +summary_cases = project.descendants(rips.SummaryCase) +summary_plot_collection = project.descendants(rips.SummaryPlotCollection)[0] + + + +summary_plot = summary_plot_collection.new_summary_plot(summary_cases=summary_cases) diff --git a/ApplicationCode/GrpcInterface/Python/rips/pdmobject.py b/ApplicationCode/GrpcInterface/Python/rips/pdmobject.py index f89eb31fc7..0d2ed58638 100644 --- a/ApplicationCode/GrpcInterface/Python/rips/pdmobject.py +++ b/ApplicationCode/GrpcInterface/Python/rips/pdmobject.py @@ -179,10 +179,12 @@ def __convert_to_grpc_value(self, value): if value: return "true" return "false" + if isinstance(value, PdmObject): + return value.__class__.__name__ + ":" + str(value.address()) if isinstance(value, list): list_of_strings = [] for val in value: - list_of_strings.append(self.__convert_to_grpc_value('\"' + val + '\"')) + list_of_strings.append('\"' + self.__convert_to_grpc_value(val) + '\"') return "[" + ", ".join(list_of_strings) + "]" return str(value) @@ -301,8 +303,8 @@ def ancestor(self, class_definition): @add_method(PdmObject) def _call_get_method_async(self, method_name): - request = PdmObject_pb2.PdmObjectMethodRequest(object=self._pb2_object, method=method_name) - for chunk in self._pdm_object_stub.CallPdmObjectGetMethod(request): + request = PdmObject_pb2.PdmObjectGetterRequest(object=self._pb2_object, method=method_name) + for chunk in self._pdm_object_stub.CallPdmObjectGetter(request): yield chunk @add_method(PdmObject) @@ -320,40 +322,48 @@ def __generate_set_method_chunks(self, array, method_request): index = -1 while index < len(array): - chunk = PdmObject_pb2.PdmObjectSetMethodChunk() + chunk = PdmObject_pb2.PdmObjectSetterChunk() if index is -1: - chunk.set_request.CopyFrom(PdmObject_pb2.PdmObjectSetMethodRequest(request=method_request, data_count=len(array))) + chunk.set_request.CopyFrom(PdmObject_pb2.PdmObjectSetterRequest(request=method_request, data_count=len(array))) index += 1 else: actual_chunk_size = min(len(array) - index + 1, self.__chunk_size) if isinstance(array[0], float): chunk.CopyFrom( - PdmObject_pb2.PdmObjectSetMethodChunk(doubles=PdmObject_pb2.DoubleArray(data=array[index:index + + PdmObject_pb2.PdmObjectSetterChunk(doubles=PdmObject_pb2.DoubleArray(data=array[index:index + actual_chunk_size]))) elif isinstance(array[0], int): chunk.CopyFrom( - PdmObject_pb2.PdmObjectSetMethodChunk(ints=PdmObject_pb2.IntArray(data=array[index:index + + PdmObject_pb2.PdmObjectSetterChunk(ints=PdmObject_pb2.IntArray(data=array[index:index + actual_chunk_size]))) elif isinstance(array[0], str): chunk.CopyFrom( - PdmObject_pb2.PdmObjectSetMethodChunk(strings=PdmObject_pb2.StringArray(data=array[index:index + + PdmObject_pb2.PdmObjectSetterChunk(strings=PdmObject_pb2.StringArray(data=array[index:index + actual_chunk_size]))) else: raise Exception("Wrong data type for set method") index += actual_chunk_size yield chunk # Final empty message to signal completion - chunk = PdmObject_pb2.PdmObjectSetMethodChunk() + chunk = PdmObject_pb2.PdmObjectSetterChunk() yield chunk @add_method(PdmObject) def _call_set_method(self, method_name, values): - method_request = PdmObject_pb2.PdmObjectMethodRequest(object=self._pb2_object, method=method_name) + method_request = PdmObject_pb2.PdmObjectGetterRequest(object=self._pb2_object, method=method_name) request_iterator = self.__generate_set_method_chunks(values, method_request) - reply = self._pdm_object_stub.CallPdmObjectSetMethod(request_iterator) + reply = self._pdm_object_stub.CallPdmObjectSetter(request_iterator) if reply.accepted_value_count < len(values): raise IndexError +@add_method(PdmObject) +def _call_pdm_method(self, method_name, **kwargs): + pb2_params = PdmObject_pb2.PdmObject(class_keyword=method_name) + for key, value in kwargs.items(): + pb2_params.parameters[snake_to_camel(key)] = self.__convert_to_grpc_value(value) + request = PdmObject_pb2.PdmObjectMethodRequest(object=self._pb2_object, method=method_name, params=pb2_params) + return self._pdm_object_stub.CallPdmObjectMethod(request) + @add_method(PdmObject) def update(self): """Sync all fields from the Python Object to ResInsight""" diff --git a/ApplicationCode/GrpcInterface/RiaGrpcCommandService.cpp b/ApplicationCode/GrpcInterface/RiaGrpcCommandService.cpp index a2f1e723f4..b18fde5aec 100644 --- a/ApplicationCode/GrpcInterface/RiaGrpcCommandService.cpp +++ b/ApplicationCode/GrpcInterface/RiaGrpcCommandService.cpp @@ -79,14 +79,14 @@ grpc::Status RiaGrpcCommandService::Execute( grpc::ServerContext* context, const } // Execute command - RicfCommandResponse response = commandHandle->execute(); + caf::PdmScriptResponse response = commandHandle->execute(); // Copy results - if ( response.status() == RicfCommandResponse::COMMAND_ERROR ) + if ( response.status() == caf::PdmScriptResponse::COMMAND_ERROR ) { return grpc::Status( grpc::FAILED_PRECONDITION, response.sanitizedResponseMessage().toStdString() ); } - else if ( response.status() == RicfCommandResponse::COMMAND_WARNING ) + else if ( response.status() == caf::PdmScriptResponse::COMMAND_WARNING ) { context->AddTrailingMetadata( "warning", response.sanitizedResponseMessage().toStdString() ); } diff --git a/ApplicationCode/GrpcInterface/RiaGrpcPdmObjectService.cpp b/ApplicationCode/GrpcInterface/RiaGrpcPdmObjectService.cpp index b103f74679..67f0794b6a 100644 --- a/ApplicationCode/GrpcInterface/RiaGrpcPdmObjectService.cpp +++ b/ApplicationCode/GrpcInterface/RiaGrpcPdmObjectService.cpp @@ -19,13 +19,14 @@ #include "RiaApplication.h" #include "RiaGrpcCallbacks.h" -#include "RicfObjectCapability.h" #include "Rim3dView.h" #include "RimEclipseResultDefinition.h" #include "RimProject.h" #include "cafPdmFieldScriptability.h" #include "cafPdmObject.h" +#include "cafPdmObjectMethod.h" +#include "cafPdmObjectScriptability.h" #include "cafPdmObjectScriptabilityRegister.h" using namespace rips; @@ -41,26 +42,26 @@ struct DataHolder : public AbstractDataHolder size_t dataCount() const override { return data.size(); } size_t dataSizeOf() const override { return sizeof( typename DataType::value_type ); } - void reserveReplyStorage( rips::PdmObjectGetMethodReply* reply ) const; - void addValueToReply( size_t valueIndex, rips::PdmObjectGetMethodReply* reply ) const; - size_t getValuesFromChunk( size_t startIndex, const rips::PdmObjectSetMethodChunk* chunk ); + void reserveReplyStorage( rips::PdmObjectGetterReply* reply ) const; + void addValueToReply( size_t valueIndex, rips::PdmObjectGetterReply* reply ) const; + size_t getValuesFromChunk( size_t startIndex, const rips::PdmObjectSetterChunk* chunk ); void applyValuesToProxyField( caf::PdmProxyFieldHandle* proxyField ); DataType data; }; template <> -void DataHolder>::reserveReplyStorage( rips::PdmObjectGetMethodReply* reply ) const +void DataHolder>::reserveReplyStorage( rips::PdmObjectGetterReply* reply ) const { reply->mutable_ints()->mutable_data()->Reserve( data.size() ); } template <> -void DataHolder>::addValueToReply( size_t valueIndex, rips::PdmObjectGetMethodReply* reply ) const +void DataHolder>::addValueToReply( size_t valueIndex, rips::PdmObjectGetterReply* reply ) const { reply->mutable_ints()->add_data( data[valueIndex] ); } template <> -size_t DataHolder>::getValuesFromChunk( size_t startIndex, const rips::PdmObjectSetMethodChunk* chunk ) +size_t DataHolder>::getValuesFromChunk( size_t startIndex, const rips::PdmObjectSetterChunk* chunk ) { size_t chunkSize = chunk->ints().data_size(); size_t currentIndex = startIndex; @@ -83,17 +84,17 @@ void DataHolder>::applyValuesToProxyField( caf::PdmProxyFieldHa } template <> -void DataHolder>::reserveReplyStorage( rips::PdmObjectGetMethodReply* reply ) const +void DataHolder>::reserveReplyStorage( rips::PdmObjectGetterReply* reply ) const { reply->mutable_doubles()->mutable_data()->Reserve( data.size() ); } template <> -void DataHolder>::addValueToReply( size_t valueIndex, rips::PdmObjectGetMethodReply* reply ) const +void DataHolder>::addValueToReply( size_t valueIndex, rips::PdmObjectGetterReply* reply ) const { reply->mutable_doubles()->add_data( data[valueIndex] ); } template <> -size_t DataHolder>::getValuesFromChunk( size_t startIndex, const rips::PdmObjectSetMethodChunk* chunk ) +size_t DataHolder>::getValuesFromChunk( size_t startIndex, const rips::PdmObjectSetterChunk* chunk ) { size_t chunkSize = chunk->doubles().data_size(); size_t currentIndex = startIndex; @@ -116,17 +117,17 @@ void DataHolder>::applyValuesToProxyField( caf::PdmProxyFiel } template <> -void DataHolder>::reserveReplyStorage( rips::PdmObjectGetMethodReply* reply ) const +void DataHolder>::reserveReplyStorage( rips::PdmObjectGetterReply* reply ) const { reply->mutable_strings()->mutable_data()->Reserve( data.size() ); } template <> -void DataHolder>::addValueToReply( size_t valueIndex, rips::PdmObjectGetMethodReply* reply ) const +void DataHolder>::addValueToReply( size_t valueIndex, rips::PdmObjectGetterReply* reply ) const { reply->mutable_strings()->add_data( data[valueIndex].toStdString() ); } template <> -size_t DataHolder>::getValuesFromChunk( size_t startIndex, const rips::PdmObjectSetMethodChunk* chunk ) +size_t DataHolder>::getValuesFromChunk( size_t startIndex, const rips::PdmObjectSetterChunk* chunk ) { size_t chunkSize = chunk->strings().data_size(); size_t currentIndex = startIndex; @@ -162,7 +163,7 @@ RiaPdmObjectMethodStateHandler::RiaPdmObjectMethodStateHandler( bool clientToSer //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -Status RiaPdmObjectMethodStateHandler::init( const rips::PdmObjectMethodRequest* request ) +Status RiaPdmObjectMethodStateHandler::init( const rips::PdmObjectGetterRequest* request ) { CAF_ASSERT( !m_clientToServerStreamer ); m_fieldOwner = RiaGrpcPdmObjectService::findCafObjectFromRipsObject( request->object() ); @@ -212,7 +213,7 @@ Status RiaPdmObjectMethodStateHandler::init( const rips::PdmObjectMethodRequest* //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -Status RiaPdmObjectMethodStateHandler::init( const rips::PdmObjectSetMethodChunk* chunk ) +Status RiaPdmObjectMethodStateHandler::init( const rips::PdmObjectSetterChunk* chunk ) { CAF_ASSERT( m_clientToServerStreamer ); CAF_ASSERT( chunk->has_set_request() ); @@ -262,7 +263,7 @@ Status RiaPdmObjectMethodStateHandler::init( const rips::PdmObjectSetMethodChunk //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -Status RiaPdmObjectMethodStateHandler::assignReply( rips::PdmObjectGetMethodReply* reply ) +Status RiaPdmObjectMethodStateHandler::assignReply( rips::PdmObjectGetterReply* reply ) { CAF_ASSERT( m_dataHolder ); const size_t packageSize = RiaGrpcServiceInterface::numberOfDataUnitsInPackage( m_dataHolder->dataSizeOf() ); @@ -285,8 +286,8 @@ Status RiaPdmObjectMethodStateHandler::assignReply( rips::PdmObjectGetMethodRepl //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -Status RiaPdmObjectMethodStateHandler::receiveRequest( const rips::PdmObjectSetMethodChunk* chunk, - rips::ClientToServerStreamReply* reply ) +Status RiaPdmObjectMethodStateHandler::receiveRequest( const rips::PdmObjectSetterChunk* chunk, + rips::ClientToServerStreamReply* reply ) { size_t valuesWritten = m_dataHolder->getValuesFromChunk( m_currentDataIndex, chunk ); m_currentDataIndex += valuesWritten; @@ -488,10 +489,10 @@ grpc::Status RiaGrpcPdmObjectService::CreateChildPdmObject( grpc::ServerContext* //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -grpc::Status RiaGrpcPdmObjectService::CallPdmObjectGetMethod( grpc::ServerContext* context, - const rips::PdmObjectMethodRequest* request, - rips::PdmObjectGetMethodReply* reply, - RiaPdmObjectMethodStateHandler* stateHandler ) +grpc::Status RiaGrpcPdmObjectService::CallPdmObjectGetter( grpc::ServerContext* context, + const rips::PdmObjectGetterRequest* request, + rips::PdmObjectGetterReply* reply, + RiaPdmObjectMethodStateHandler* stateHandler ) { return stateHandler->assignReply( reply ); } @@ -499,70 +500,115 @@ grpc::Status RiaGrpcPdmObjectService::CallPdmObjectGetMethod( grpc::ServerContex //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -grpc::Status RiaGrpcPdmObjectService::CallPdmObjectSetMethod( grpc::ServerContext* context, - const rips::PdmObjectSetMethodChunk* chunk, - rips::ClientToServerStreamReply* reply, - RiaPdmObjectMethodStateHandler* stateHandler ) +grpc::Status RiaGrpcPdmObjectService::CallPdmObjectSetter( grpc::ServerContext* context, + const rips::PdmObjectSetterChunk* chunk, + rips::ClientToServerStreamReply* reply, + RiaPdmObjectMethodStateHandler* stateHandler ) { return stateHandler->receiveRequest( chunk, reply ); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +grpc::Status RiaGrpcPdmObjectService::CallPdmObjectMethod( grpc::ServerContext* context, + const rips::PdmObjectMethodRequest* request, + rips::PdmObject* reply ) +{ + auto matchingObject = findCafObjectFromRipsObject( request->object() ); + if ( matchingObject ) + { + QString methodKeyword = QString::fromStdString( request->method() ); + + std::shared_ptr method = + caf::PdmObjectMethodFactory::instance()->createMethod( matchingObject, methodKeyword ); + if ( method ) + { + copyPdmObjectFromRipsToCaf( &( request->params() ), method.get() ); + + caf::PdmObjectHandle* result = method->execute(); + copyPdmObjectFromCafToRips( result, reply ); + if ( method->deleteObjectAfterReply() ) + { + delete result; + } + return grpc::Status::OK; + } + return grpc::Status( grpc::NOT_FOUND, "Could not find Method" ); + } + return grpc::Status( grpc::NOT_FOUND, "Could not find PdmObject" ); +} //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- std::vector RiaGrpcPdmObjectService::createCallbacks() { typedef RiaGrpcPdmObjectService Self; - return {new RiaGrpcUnaryCallback( this, - &Self::GetAncestorPdmObject, - &Self::RequestGetAncestorPdmObject ), - new RiaGrpcUnaryCallback( this, - &Self::GetDescendantPdmObjects, - &Self::RequestGetDescendantPdmObjects ), - new RiaGrpcUnaryCallback( this, - &Self::GetChildPdmObjects, - &Self::RequestGetChildPdmObjects ), - new RiaGrpcUnaryCallback( this, - &Self::UpdateExistingPdmObject, - &Self::RequestUpdateExistingPdmObject ), - new RiaGrpcUnaryCallback( this, - &Self::CreateChildPdmObject, - &Self::RequestCreateChildPdmObject ), - new RiaGrpcServerToClientStreamCallback( this, - &Self::CallPdmObjectGetMethod, - &Self::RequestCallPdmObjectGetMethod, - new RiaPdmObjectMethodStateHandler ), + return { + new RiaGrpcUnaryCallback( this, + &Self::GetAncestorPdmObject, + &Self::RequestGetAncestorPdmObject ), + new RiaGrpcUnaryCallback( this, + &Self::GetDescendantPdmObjects, + &Self::RequestGetDescendantPdmObjects ), + new RiaGrpcUnaryCallback( this, + &Self::GetChildPdmObjects, + &Self::RequestGetChildPdmObjects ), + new RiaGrpcUnaryCallback( this, + &Self::UpdateExistingPdmObject, + &Self::RequestUpdateExistingPdmObject ), + new RiaGrpcUnaryCallback( this, + &Self::CreateChildPdmObject, + &Self::RequestCreateChildPdmObject ), + new RiaGrpcServerToClientStreamCallback( this, + &Self::CallPdmObjectGetter, + &Self::RequestCallPdmObjectGetter, + new RiaPdmObjectMethodStateHandler ), - new RiaGrpcClientToServerStreamCallback( this, - &Self::CallPdmObjectSetMethod, - &Self::RequestCallPdmObjectSetMethod, - new RiaPdmObjectMethodStateHandler( - true ) )}; + new RiaGrpcClientToServerStreamCallback( this, + &Self::CallPdmObjectSetter, + &Self::RequestCallPdmObjectSetter, + new RiaPdmObjectMethodStateHandler( true ) ), + new RiaGrpcUnaryCallback( this, + &Self::CallPdmObjectMethod, + &Self::RequestCallPdmObjectMethod ), + + }; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- caf::PdmObject* RiaGrpcPdmObjectService::findCafObjectFromRipsObject( const rips::PdmObject& ripsObject ) +{ + QString scriptClassName = QString::fromStdString( ripsObject.class_keyword() ); + uint64_t address = ripsObject.address(); + return findCafObjectFromScriptNameAndAddress( scriptClassName, address ); +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +caf::PdmObject* RiaGrpcPdmObjectService::findCafObjectFromScriptNameAndAddress( const QString& scriptClassName, + uint64_t address ) { RimProject* project = RiaApplication::instance()->project(); std::vector objectsOfCurrentClass; - QString scriptClassName = QString::fromStdString( ripsObject.class_keyword() ); - QString classKeyword = caf::PdmObjectScriptabilityRegister::classKeywordFromScriptClassName( scriptClassName ); + QString classKeyword = caf::PdmObjectScriptabilityRegister::classKeywordFromScriptClassName( scriptClassName ); project->descendantsIncludingThisFromClassKeyword( classKeyword, objectsOfCurrentClass ); caf::PdmObject* matchingObject = nullptr; for ( caf::PdmObject* testObject : objectsOfCurrentClass ) { - if ( reinterpret_cast( testObject ) == ripsObject.address() ) + if ( reinterpret_cast( testObject ) == address ) { matchingObject = testObject; } diff --git a/ApplicationCode/GrpcInterface/RiaGrpcPdmObjectService.h b/ApplicationCode/GrpcInterface/RiaGrpcPdmObjectService.h index 1e18670331..7a41fc7693 100644 --- a/ApplicationCode/GrpcInterface/RiaGrpcPdmObjectService.h +++ b/ApplicationCode/GrpcInterface/RiaGrpcPdmObjectService.h @@ -30,13 +30,13 @@ class PdmProxyFieldHandle; struct AbstractDataHolder { - virtual size_t dataCount() const = 0; - virtual size_t dataSizeOf() const = 0; - virtual void reserveReplyStorage( rips::PdmObjectGetMethodReply* reply ) const = 0; - virtual void addValueToReply( size_t valueIndex, rips::PdmObjectGetMethodReply* reply ) const = 0; + virtual size_t dataCount() const = 0; + virtual size_t dataSizeOf() const = 0; + virtual void reserveReplyStorage( rips::PdmObjectGetterReply* reply ) const = 0; + virtual void addValueToReply( size_t valueIndex, rips::PdmObjectGetterReply* reply ) const = 0; - virtual size_t getValuesFromChunk( size_t startIndex, const rips::PdmObjectSetMethodChunk* chunk ) = 0; - virtual void applyValuesToProxyField( caf::PdmProxyFieldHandle* proxyField ) = 0; + virtual size_t getValuesFromChunk( size_t startIndex, const rips::PdmObjectSetterChunk* chunk ) = 0; + virtual void applyValuesToProxyField( caf::PdmProxyFieldHandle* proxyField ) = 0; }; //================================================================================================== @@ -51,10 +51,10 @@ class RiaPdmObjectMethodStateHandler public: RiaPdmObjectMethodStateHandler( bool clientToServerStreamer = false ); - Status init( const rips::PdmObjectMethodRequest* request ); - Status init( const rips::PdmObjectSetMethodChunk* chunk ); - Status assignReply( rips::PdmObjectGetMethodReply* reply ); - Status receiveRequest( const rips::PdmObjectSetMethodChunk* chunk, rips::ClientToServerStreamReply* reply ); + Status init( const rips::PdmObjectGetterRequest* request ); + Status init( const rips::PdmObjectSetterChunk* chunk ); + Status assignReply( rips::PdmObjectGetterReply* reply ); + Status receiveRequest( const rips::PdmObjectSetterChunk* chunk, rips::ClientToServerStreamReply* reply ); size_t streamedValueCount() const; size_t totalValueCount() const; void finish(); @@ -93,16 +93,20 @@ public: const rips::PdmObject* request, rips::Empty* response ) override; - grpc::Status CallPdmObjectGetMethod( grpc::ServerContext* context, - const rips::PdmObjectMethodRequest* request, - rips::PdmObjectGetMethodReply* reply, - RiaPdmObjectMethodStateHandler* stateHandler ); - grpc::Status CallPdmObjectSetMethod( grpc::ServerContext* context, - const rips::PdmObjectSetMethodChunk* chunk, - rips::ClientToServerStreamReply* reply, - RiaPdmObjectMethodStateHandler* stateHandler ); + grpc::Status CallPdmObjectGetter( grpc::ServerContext* context, + const rips::PdmObjectGetterRequest* request, + rips::PdmObjectGetterReply* reply, + RiaPdmObjectMethodStateHandler* stateHandler ); + grpc::Status CallPdmObjectSetter( grpc::ServerContext* context, + const rips::PdmObjectSetterChunk* chunk, + rips::ClientToServerStreamReply* reply, + RiaPdmObjectMethodStateHandler* stateHandler ); + grpc::Status CallPdmObjectMethod( grpc::ServerContext* context, + const rips::PdmObjectMethodRequest* request, + rips::PdmObject* reply ) override; std::vector createCallbacks() override; static caf::PdmObject* findCafObjectFromRipsObject( const rips::PdmObject& ripsObject ); + static caf::PdmObject* findCafObjectFromScriptNameAndAddress( const QString& scriptClassName, uint64_t address ); }; diff --git a/ApplicationCode/GrpcInterface/RiaGrpcServiceInterface.cpp b/ApplicationCode/GrpcInterface/RiaGrpcServiceInterface.cpp index d2b2f7f4e9..cea8115c91 100644 --- a/ApplicationCode/GrpcInterface/RiaGrpcServiceInterface.cpp +++ b/ApplicationCode/GrpcInterface/RiaGrpcServiceInterface.cpp @@ -21,13 +21,12 @@ #include "RimCase.h" #include "RimProject.h" -#include "RicfFieldHandle.h" -#include "RicfObjectCapability.h" - #include "cafPdmChildArrayField.h" #include "cafPdmChildField.h" #include "cafPdmDataValueField.h" +#include "cafPdmFieldScriptability.h" #include "cafPdmObject.h" +#include "cafPdmObjectScriptability.h" #include "cafPdmObjectScriptabilityRegister.h" #include "cafPdmProxyValueField.h" #include "cafPdmScriptIOMessages.h" @@ -99,7 +98,7 @@ void RiaGrpcServiceInterface::copyPdmObjectFromCafToRips( const caf::PdmObjectHa if ( pdmValueField ) { QString keyword = pdmValueField->keyword(); - auto ricfHandle = field->template capability(); + auto ricfHandle = field->template capability(); if ( ricfHandle != nullptr ) { auto pdmProxyField = dynamic_cast( field ); @@ -141,20 +140,16 @@ void RiaGrpcServiceInterface::copyPdmObjectFromRipsToCaf( const rips::PdmObject* auto parametersMap = source->parameters(); for ( auto field : fields ) { - auto pdmValueField = dynamic_cast( field ); - if ( pdmValueField ) + auto scriptability = field->template capability(); + if ( scriptability ) { - auto ricfHandle = pdmValueField->template capability(); - if ( ricfHandle ) - { - QString keyword = ricfHandle->scriptFieldName(); - QString value = QString::fromStdString( parametersMap[keyword.toStdString()] ); + QString keyword = scriptability->scriptFieldName(); + QString value = QString::fromStdString( parametersMap[keyword.toStdString()] ); - QVariant oldValue, newValue; - if ( assignFieldValue( value, pdmValueField, &oldValue, &newValue ) ) - { - destination->uiCapability()->fieldChangedByUi( field, oldValue, newValue ); - } + QVariant oldValue, newValue; + if ( assignFieldValue( value, field, &oldValue, &newValue ) ) + { + destination->uiCapability()->fieldChangedByUi( field, oldValue, newValue ); } } } @@ -163,21 +158,22 @@ void RiaGrpcServiceInterface::copyPdmObjectFromRipsToCaf( const rips::PdmObject* //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -bool RiaGrpcServiceInterface::assignFieldValue( const QString& stringValue, - caf::PdmValueField* field, - QVariant* oldValue, - QVariant* newValue ) +bool RiaGrpcServiceInterface::assignFieldValue( const QString& stringValue, + caf::PdmFieldHandle* field, + QVariant* oldValue, + QVariant* newValue ) { CAF_ASSERT( oldValue && newValue ); - auto ricfHandle = field->template capability(); - if ( field && ricfHandle != nullptr ) + auto scriptability = field->template capability(); + if ( field && scriptability != nullptr ) { + caf::PdmValueField* valueField = dynamic_cast( field ); QTextStream stream( stringValue.toLatin1() ); caf::PdmScriptIOMessages messages; - *oldValue = field->toQVariant(); - ricfHandle->writeToField( stream, nullptr, &messages, false ); - *newValue = field->toQVariant(); + if ( valueField ) *oldValue = valueField->toQVariant(); + scriptability->writeToField( stream, nullptr, &messages, false, RiaApplication::instance()->project() ); + if ( valueField ) *newValue = valueField->toQVariant(); return true; } return false; diff --git a/ApplicationCode/GrpcInterface/RiaGrpcServiceInterface.h b/ApplicationCode/GrpcInterface/RiaGrpcServiceInterface.h index 9fab7c6b9b..95c5870a87 100644 --- a/ApplicationCode/GrpcInterface/RiaGrpcServiceInterface.h +++ b/ApplicationCode/GrpcInterface/RiaGrpcServiceInterface.h @@ -28,9 +28,9 @@ namespace caf { class PdmChildArrayFieldHandle; class PdmChildFieldHandle; +class PdmFieldHandle; class PdmObject; class PdmObjectHandle; -class PdmValueField; } // namespace caf namespace rips @@ -58,7 +58,7 @@ public: static void copyPdmObjectFromRipsToCaf( const rips::PdmObject* source, caf::PdmObjectHandle* destination ); static bool - assignFieldValue( const QString& stringValue, caf::PdmValueField* field, QVariant* oldValue, QVariant* newValue ); + assignFieldValue( const QString& stringValue, caf::PdmFieldHandle* field, QVariant* oldValue, QVariant* newValue ); static caf::PdmObjectHandle* emplaceChildField( caf::PdmObject* parent, const QString& fieldLabel ); diff --git a/ApplicationCode/ProjectDataModel/Rim3dView.cpp b/ApplicationCode/ProjectDataModel/Rim3dView.cpp index fa72cfab77..b60d8cf7d5 100644 --- a/ApplicationCode/ProjectDataModel/Rim3dView.cpp +++ b/ApplicationCode/ProjectDataModel/Rim3dView.cpp @@ -51,6 +51,7 @@ #include "cafDisplayCoordTransform.h" #include "cafFrameAnimationControl.h" +#include "cafPdmFieldIOScriptability.h" #include "cvfCamera.h" #include "cvfModelBasicList.h" @@ -88,11 +89,11 @@ Rim3dView::Rim3dView( void ) CAF_PDM_InitObject( "3d View", "", "", "" ); - RICF_InitField( &m_id, "Id", -1, "View ID", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_id, "Id", -1, "View ID", "", "", "" ); m_id.registerKeywordAlias( "ViewId" ); m_id.uiCapability()->setUiReadOnly( true ); m_id.uiCapability()->setUiHidden( true ); - m_id.capability()->setIOWriteable( false ); + m_id.capability()->setIOWriteable( false ); m_id.xmlCapability()->setCopyable( false ); CAF_PDM_InitFieldNoDefault( &m_nameConfig, "NameConfig", "", "", "", "" ); @@ -107,13 +108,19 @@ Rim3dView::Rim3dView( void ) CAF_PDM_InitField( &m_cameraPointOfInterest, "CameraPointOfInterest", cvf::Vec3d::ZERO, "", "", "", "" ); m_cameraPointOfInterest.uiCapability()->setUiHidden( true ); - RICF_InitField( &isPerspectiveView, "PerspectiveProjection", true, "Perspective Projection", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &isPerspectiveView, "PerspectiveProjection", true, "Perspective Projection", "", "", "" ); double defaultScaleFactor = preferences->defaultScaleFactorZ(); - RICF_InitField( &scaleZ, "GridZScale", defaultScaleFactor, "Z Scale", "", "Scales the scene in the Z direction", "" ); + CAF_PDM_InitScriptableFieldWithIO( &scaleZ, + "GridZScale", + defaultScaleFactor, + "Z Scale", + "", + "Scales the scene in the Z direction", + "" ); cvf::Color3f defBackgColor = preferences->defaultViewerBackgroundColor(); - RICF_InitField( &m_backgroundColor, "BackgroundColor", defBackgColor, "Background", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_backgroundColor, "BackgroundColor", defBackgColor, "Background", "", "", "" ); m_backgroundColor.registerKeywordAlias( "ViewBackgroundColor" ); CAF_PDM_InitField( &maximumFrameRate, "MaximumFrameRate", 10, "Maximum Frame Rate", "", "", "" ); @@ -121,24 +128,24 @@ Rim3dView::Rim3dView( void ) CAF_PDM_InitField( &hasUserRequestedAnimation, "AnimationMode", false, "Animation Mode", "", "", "" ); hasUserRequestedAnimation.uiCapability()->setUiHidden( true ); - RICF_InitField( &m_currentTimeStep, "CurrentTimeStep", 0, "Current Time Step", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_currentTimeStep, "CurrentTimeStep", 0, "Current Time Step", "", "", "" ); m_currentTimeStep.uiCapability()->setUiHidden( true ); caf::AppEnum defaultMeshType = preferences->defaultMeshModeType(); CAF_PDM_InitField( &meshMode, "MeshMode", defaultMeshType, "Grid Lines", "", "", "" ); CAF_PDM_InitFieldNoDefault( &surfaceMode, "SurfaceMode", "Grid Surface", "", "", "" ); - RICF_InitField( &m_showGridBox, "ShowGridBox", true, "Show Grid Box", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_showGridBox, "ShowGridBox", true, "Show Grid Box", "", "", "" ); - RICF_InitField( &m_disableLighting, - "DisableLighting", - false, - "Disable Results Lighting", - "", - "Disable light model for scalar result colors", - "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_disableLighting, + "DisableLighting", + false, + "Disable Results Lighting", + "", + "Disable light model for scalar result colors", + "" ); - RICF_InitField( &m_showZScaleLabel, "ShowZScale", true, "Show Z Scale Label", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_showZScaleLabel, "ShowZScale", true, "Show Z Scale Label", "", "", "" ); CAF_PDM_InitFieldNoDefault( &m_comparisonView, "ComparisonView", "Comparison View", "", "", "" ); diff --git a/ApplicationCode/ProjectDataModel/RimCase.cpp b/ApplicationCode/ProjectDataModel/RimCase.cpp index 9e54235dd9..1f4315b36d 100644 --- a/ApplicationCode/ProjectDataModel/RimCase.cpp +++ b/ApplicationCode/ProjectDataModel/RimCase.cpp @@ -28,13 +28,15 @@ #include "RimProject.h" #include "RimTimeStepFilter.h" -#include "cafPdmObjectFactory.h" - #include "Rim2dIntersectionView.h" #include "Rim2dIntersectionViewCollection.h" #include "RimExtrudedCurveIntersection.h" #include "RimGridView.h" +#include "cafPdmFieldIOScriptability.h" +#include "cafPdmObjectFactory.h" +#include "cafPdmObjectScriptability.h" + CAF_PDM_XML_ABSTRACT_SOURCE_INIT( RimCase, "Case", "RimCase" ); //-------------------------------------------------------------------------------------------------- @@ -45,15 +47,15 @@ RimCase::RimCase() { CAF_PDM_InitScriptableObjectWithNameAndComment( "Case", ":/Case48x48.png", "", "", "Case", "The ResInsight base class for Cases" ); - RICF_InitField( &caseUserDescription, "Name", QString(), "Case Name", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &caseUserDescription, "Name", QString(), "Case Name", "", "", "" ); caseUserDescription.registerKeywordAlias( "CaseUserDescription" ); - RICF_InitField( &caseId, "Id", -1, "Case ID", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &caseId, "Id", -1, "Case ID", "", "", "" ); caseId.registerKeywordAlias( "CaseId" ); caseId.uiCapability()->setUiReadOnly( true ); - caseId.capability()->setIOWriteable( false ); + caseId.capability()->setIOWriteable( false ); - RICF_InitFieldNoDefault( &m_caseFileName, "FilePath", "Case File Name", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_caseFileName, "FilePath", "Case File Name", "", "", "" ); m_caseFileName.registerKeywordAlias( "CaseFileName" ); m_caseFileName.registerKeywordAlias( "GridFileName" ); diff --git a/ApplicationCode/ProjectDataModel/RimEclipseCase.cpp b/ApplicationCode/ProjectDataModel/RimEclipseCase.cpp index fda868f356..25586ce0a9 100644 --- a/ApplicationCode/ProjectDataModel/RimEclipseCase.cpp +++ b/ApplicationCode/ProjectDataModel/RimEclipseCase.cpp @@ -65,6 +65,8 @@ #include "RimWellPathCollection.h" #include "cafPdmDocument.h" +#include "cafPdmFieldIOScriptability.h" +#include "cafPdmObjectScriptability.h" #include "cafPdmUiTreeOrdering.h" #include "cafProgressInfo.h" diff --git a/ApplicationCode/ProjectDataModel/RimEclipseResultDefinition.cpp b/ApplicationCode/ProjectDataModel/RimEclipseResultDefinition.cpp index 3bc68e2f7d..1f65cb47a1 100644 --- a/ApplicationCode/ProjectDataModel/RimEclipseResultDefinition.cpp +++ b/ApplicationCode/ProjectDataModel/RimEclipseResultDefinition.cpp @@ -66,6 +66,7 @@ #include "RimWellLogExtractionCurve.h" #include "cafCategoryMapper.h" +#include "cafPdmFieldIOScriptability.h" #include "cafPdmUiListEditor.h" #include "cafPdmUiToolButtonEditor.h" #include "cafPdmUiTreeSelectionEditor.h" @@ -97,13 +98,19 @@ RimEclipseResultDefinition::RimEclipseResultDefinition( caf::PdmUiItemInfo::Labe { CAF_PDM_InitScriptableObjectWithNameAndComment( "Result Definition", "", "", "", "EclipseResult", "An eclipse result definition" ); - RICF_InitFieldNoDefault( &m_resultType, "ResultType", "Type", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_resultType, "ResultType", "Type", "", "", "" ); m_resultType.uiCapability()->setUiHidden( true ); - RICF_InitFieldNoDefault( &m_porosityModel, "PorosityModelType", "Porosity", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_porosityModel, "PorosityModelType", "Porosity", "", "", "" ); m_porosityModel.uiCapability()->setUiHidden( true ); - RICF_InitField( &m_resultVariable, "ResultVariable", RiaDefines::undefinedResultName(), "Variable", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_resultVariable, + "ResultVariable", + RiaDefines::undefinedResultName(), + "Variable", + "", + "", + "" ); m_resultVariable.uiCapability()->setUiHidden( true ); CAF_PDM_InitFieldNoDefault( &m_flowSolution, "FlowDiagSolution", "Solution", "", "", "" ); @@ -124,17 +131,27 @@ RimEclipseResultDefinition::RimEclipseResultDefinition( caf::PdmUiItemInfo::Labe CAF_PDM_InitFieldNoDefault( &m_selectedTracers_OBSOLETE, "SelectedTracers", "Tracers", "", "", "" ); m_selectedTracers_OBSOLETE.uiCapability()->setUiHidden( true ); - RICF_InitFieldNoDefault( &m_selectedInjectorTracers, "SelectedInjectorTracers", "Injector Tracers", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_selectedInjectorTracers, + "SelectedInjectorTracers", + "Injector Tracers", + "", + "", + "" ); m_selectedInjectorTracers.uiCapability()->setUiHidden( true ); - RICF_InitFieldNoDefault( &m_selectedProducerTracers, "SelectedProducerTracers", "Producer Tracers", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_selectedProducerTracers, + "SelectedProducerTracers", + "Producer Tracers", + "", + "", + "" ); m_selectedProducerTracers.uiCapability()->setUiHidden( true ); - RICF_InitFieldNoDefault( &m_selectedSouringTracers, "SelectedSouringTracers", "Tracers", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_selectedSouringTracers, "SelectedSouringTracers", "Tracers", "", "", "" ); m_selectedSouringTracers.uiCapability()->setUiHidden( true ); - RICF_InitFieldNoDefault( &m_flowTracerSelectionMode, "FlowTracerSelectionMode", "Tracers", "", "", "" ); - RICF_InitFieldNoDefault( &m_phaseSelection, "PhaseSelection", "Phases", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_flowTracerSelectionMode, "FlowTracerSelectionMode", "Tracers", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_phaseSelection, "PhaseSelection", "Phases", "", "", "" ); m_phaseSelection.uiCapability()->setUiLabelPosition( m_labelPosition ); // Ui only fields diff --git a/ApplicationCode/ProjectDataModel/RimEclipseStatisticsCase.cpp b/ApplicationCode/ProjectDataModel/RimEclipseStatisticsCase.cpp index 4b927394d6..8359d33081 100644 --- a/ApplicationCode/ProjectDataModel/RimEclipseStatisticsCase.cpp +++ b/ApplicationCode/ProjectDataModel/RimEclipseStatisticsCase.cpp @@ -38,6 +38,7 @@ #include "RiuMainWindow.h" +#include "cafPdmFieldIOScriptability.h" #include "cafPdmUiPushButtonEditor.h" #include "cafPdmUiTextEditor.h" #include "cafProgressInfo.h" @@ -76,20 +77,50 @@ RimEclipseStatisticsCase::RimEclipseStatisticsCase() m_selectionSummary.uiCapability()->setUiEditorTypeName( caf::PdmUiTextEditor::uiEditorTypeName() ); m_selectionSummary.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN ); - RICF_InitFieldNoDefault( &m_resultType, "ResultType", "Result Type", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_resultType, "ResultType", "Result Type", "", "", "" ); m_resultType.xmlCapability()->setIOWritable( false ); - RICF_InitFieldNoDefault( &m_porosityModel, "PorosityModel", "Porosity Model", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_porosityModel, "PorosityModel", "Porosity Model", "", "", "" ); m_porosityModel.xmlCapability()->setIOWritable( false ); - RICF_InitFieldNoDefault( &m_selectedDynamicProperties, "DynamicPropertiesToCalculate", "Dyn Prop", "", "", "" ); - RICF_InitFieldNoDefault( &m_selectedStaticProperties, "StaticPropertiesToCalculate", "Stat Prop", "", "", "" ); - RICF_InitFieldNoDefault( &m_selectedGeneratedProperties, "GeneratedPropertiesToCalculate", "", "", "", "" ); - RICF_InitFieldNoDefault( &m_selectedInputProperties, "InputPropertiesToCalculate", "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_selectedDynamicProperties, + "DynamicPropertiesToCalculate", + "Dyn Prop", + "", + "", + "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_selectedStaticProperties, + "StaticPropertiesToCalculate", + "Stat Prop", + "", + "", + "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_selectedGeneratedProperties, "GeneratedPropertiesToCalculate", "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_selectedInputProperties, "InputPropertiesToCalculate", "", "", "", "" ); - RICF_InitFieldNoDefault( &m_selectedFractureDynamicProperties, "FractureDynamicPropertiesToCalculate", "", "", "", "" ); - RICF_InitFieldNoDefault( &m_selectedFractureStaticProperties, "FractureStaticPropertiesToCalculate", "", "", "", "" ); - RICF_InitFieldNoDefault( &m_selectedFractureGeneratedProperties, "FractureGeneratedPropertiesToCalculate", "", "", "", "" ); - RICF_InitFieldNoDefault( &m_selectedFractureInputProperties, "FractureInputPropertiesToCalculate", "", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_selectedFractureDynamicProperties, + "FractureDynamicPropertiesToCalculate", + "", + "", + "", + "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_selectedFractureStaticProperties, + "FractureStaticPropertiesToCalculate", + "", + "", + "", + "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_selectedFractureGeneratedProperties, + "FractureGeneratedPropertiesToCalculate", + "", + "", + "", + "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_selectedFractureInputProperties, + "FractureInputPropertiesToCalculate", + "", + "", + "", + "" ); m_selectedDynamicProperties.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN ); m_selectedStaticProperties.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN ); @@ -101,28 +132,28 @@ RimEclipseStatisticsCase::RimEclipseStatisticsCase() m_selectedFractureGeneratedProperties.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN ); m_selectedFractureInputProperties.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN ); - RICF_InitField( &m_calculatePercentiles, "CalculatePercentiles", true, "Calculate Percentiles", "", "", "" ); - RICF_InitFieldNoDefault( &m_percentileCalculationType, "PercentileCalculationType", "Method", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_calculatePercentiles, "CalculatePercentiles", true, "Calculate Percentiles", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_percentileCalculationType, "PercentileCalculationType", "Method", "", "", "" ); - RICF_InitField( &m_lowPercentile, "LowPercentile", 10.0, "Low", "", "", "" ); - RICF_InitField( &m_midPercentile, "MidPercentile", 50.0, "Mid", "", "", "" ); - RICF_InitField( &m_highPercentile, "HighPercentile", 90.0, "High", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_lowPercentile, "LowPercentile", 10.0, "Low", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_midPercentile, "MidPercentile", 50.0, "Mid", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_highPercentile, "HighPercentile", 90.0, "High", "", "", "" ); - RICF_InitField( &m_wellDataSourceCase, - "WellDataSourceCase", - RiaDefines::undefinedResultName(), - "Well Data Source Case", - "", - "", - "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_wellDataSourceCase, + "WellDataSourceCase", + RiaDefines::undefinedResultName(), + "Well Data Source Case", + "", + "", + "" ); - RICF_InitField( &m_useZeroAsInactiveCellValue, - "UseZeroAsInactiveCellValue", - false, - "Use Zero as Inactive Cell Value", - "", - "", - "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_useZeroAsInactiveCellValue, + "UseZeroAsInactiveCellValue", + false, + "Use Zero as Inactive Cell Value", + "", + "", + "" ); m_populateSelectionAfterLoadingGrid = false; diff --git a/ApplicationCode/ProjectDataModel/RimEclipseView.cpp b/ApplicationCode/ProjectDataModel/RimEclipseView.cpp index b5e8a87046..142cc0ea8f 100644 --- a/ApplicationCode/ProjectDataModel/RimEclipseView.cpp +++ b/ApplicationCode/ProjectDataModel/RimEclipseView.cpp @@ -98,6 +98,8 @@ #include "cafDisplayCoordTransform.h" #include "cafFrameAnimationControl.h" #include "cafOverlayScalarMapperLegend.h" +#include "cafPdmFieldIOScriptability.h" +#include "cafPdmObjectScriptability.h" #include "cafPdmUiTreeOrdering.h" #include "cvfDrawable.h" diff --git a/ApplicationCode/ProjectDataModel/RimGeoMechCase.cpp b/ApplicationCode/ProjectDataModel/RimGeoMechCase.cpp index e788d5dbf8..0cc884ca73 100644 --- a/ApplicationCode/ProjectDataModel/RimGeoMechCase.cpp +++ b/ApplicationCode/ProjectDataModel/RimGeoMechCase.cpp @@ -49,6 +49,8 @@ #include "RimTools.h" #include "RimWellLogPlotCollection.h" +#include "cafPdmFieldIOScriptability.h" +#include "cafPdmObjectScriptability.h" #include "cafPdmUiPropertyViewDialog.h" #include "cafPdmUiPushButtonEditor.h" #include "cafPdmUiTreeOrdering.h" diff --git a/ApplicationCode/ProjectDataModel/RimIdenticalGridCaseGroup.cpp b/ApplicationCode/ProjectDataModel/RimIdenticalGridCaseGroup.cpp index ebfb230149..63449c5874 100644 --- a/ApplicationCode/ProjectDataModel/RimIdenticalGridCaseGroup.cpp +++ b/ApplicationCode/ProjectDataModel/RimIdenticalGridCaseGroup.cpp @@ -23,8 +23,6 @@ #include "RiaGuiApplication.h" #include "RiaLogging.h" -#include "RicfCommandObject.h" - #include "RigActiveCellInfo.h" #include "RigCaseCellResultsData.h" #include "RigEclipseCaseData.h" @@ -43,6 +41,8 @@ #include "Riu3DMainWindowTools.h" +#include "cafPdmFieldIOScriptability.h" +#include "cafPdmObjectScriptability.h" #include "cafProgressInfo.h" #include @@ -62,11 +62,11 @@ RimIdenticalGridCaseGroup::RimIdenticalGridCaseGroup() "GridCaseGroup", "A statistics case group" ); - RICF_InitField( &name, "UserDescription", QString( "Grid Case Group" ), "Name", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &name, "UserDescription", QString( "Grid Case Group" ), "Name", "", "", "" ); - RICF_InitField( &groupId, "GroupId", -1, "Case Group ID", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &groupId, "GroupId", -1, "Case Group ID", "", "", "" ); groupId.uiCapability()->setUiReadOnly( true ); - groupId.capability()->setIOWriteable( false ); + groupId.capability()->setIOWriteable( false ); CAF_PDM_InitFieldNoDefault( &statisticsCaseCollection, "StatisticsCaseCollection", diff --git a/ApplicationCode/ProjectDataModel/RimPlotWindow.cpp b/ApplicationCode/ProjectDataModel/RimPlotWindow.cpp index 07bd22d4d6..ea1c6ef498 100644 --- a/ApplicationCode/ProjectDataModel/RimPlotWindow.cpp +++ b/ApplicationCode/ProjectDataModel/RimPlotWindow.cpp @@ -26,6 +26,7 @@ #include "RimProject.h" #include "RiuMultiPlotPage.h" +#include "cafPdmFieldIOScriptability.h" #include "cafPdmUiComboBoxEditor.h" #include @@ -44,11 +45,11 @@ RimPlotWindow::RimPlotWindow() "PlotWindow", "The Abstract base class for all MDI Windows in the Plot Window" ); - RICF_InitField( &m_id, "Id", -1, "View ID", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_id, "Id", -1, "View ID", "", "", "" ); m_id.registerKeywordAlias( "ViewId" ); m_id.uiCapability()->setUiReadOnly( true ); m_id.uiCapability()->setUiHidden( true ); - m_id.capability()->setIOWriteable( false ); + m_id.capability()->setIOWriteable( false ); m_id.xmlCapability()->setCopyable( false ); CAF_PDM_InitField( &m_showPlotLegends, "ShowTrackLegends", true, "Show Legends", "", "", "" ); diff --git a/ApplicationCode/ProjectDataModel/RimSimWellInView.cpp b/ApplicationCode/ProjectDataModel/RimSimWellInView.cpp index 2a8221cd6a..edda0b7224 100644 --- a/ApplicationCode/ProjectDataModel/RimSimWellInView.cpp +++ b/ApplicationCode/ProjectDataModel/RimSimWellInView.cpp @@ -47,7 +47,9 @@ #include "RivReservoirViewPartMgr.h" +#include "cafPdmFieldIOScriptability.h" #include "cafPdmUiTreeOrdering.h" + #include "cvfMath.h" //-------------------------------------------------------------------------------------------------- @@ -69,7 +71,7 @@ RimSimWellInView::RimSimWellInView() "SimulationWell", "An Eclipse Simulation Well" ); - RICF_InitFieldNoDefault( &name, "Name", "Name", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &name, "Name", "Name", "", "", "" ); name.registerKeywordAlias( "WellName" ); CAF_PDM_InitField( &showWell, "ShowWell", true, "Show well ", "", "", "" ); diff --git a/ApplicationCode/ProjectDataModel/RimWbsParameters.cpp b/ApplicationCode/ProjectDataModel/RimWbsParameters.cpp index f9b0e888f7..e0d43f77c7 100644 --- a/ApplicationCode/ProjectDataModel/RimWbsParameters.cpp +++ b/ApplicationCode/ProjectDataModel/RimWbsParameters.cpp @@ -26,6 +26,8 @@ #include "RimWellLogFile.h" #include "RimWellPath.h" +#include "cafPdmFieldIOScriptability.h" + CAF_PDM_SOURCE_INIT( RimWbsParameters, "WbsParameters" ); //-------------------------------------------------------------------------------------------------- @@ -35,75 +37,109 @@ RimWbsParameters::RimWbsParameters() { CAF_PDM_InitScriptableObject( "Well Bore Stability Parameters", ":/WellLogPlot16x16.png", "", "" ); - RICF_InitFieldNoDefault( &m_porePressureSource, - "PorePressureReservoirSource", - "Reservoir Pore Pressure", - "", - "Data source for Pore Pressure in reservoir", - "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_porePressureSource, + "PorePressureReservoirSource", + "Reservoir Pore Pressure", + "", + "Data source for Pore Pressure in reservoir", + "" ); - RICF_InitFieldNoDefault( &m_porePressureNonReservoirSource, - "PorePressureNonReservoirSource", - "Non-Reservoir Pore Pressure", - "", - "Data source for Non-Reservoir Pore Pressure", - "" ); - RICF_InitField( &m_userDefinedPPShale, "UserPPNonReservoir", 1.05, " Multiplier of hydrostatic PP", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_porePressureNonReservoirSource, + "PorePressureNonReservoirSource", + "Non-Reservoir Pore Pressure", + "", + "Data source for Non-Reservoir Pore Pressure", + "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_userDefinedPPShale, + "UserPPNonReservoir", + 1.05, + " Multiplier of hydrostatic PP", + "", + "", + "" ); - RICF_InitFieldNoDefault( &m_poissonRatioSource, - "PoissionRatioSource", - "Poisson Ratio", - "", - "Data source for Poisson Ratio", - "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_poissonRatioSource, + "PoissionRatioSource", + "Poisson Ratio", + "", + "Data source for Poisson Ratio", + "" ); - RICF_InitFieldNoDefault( &m_ucsSource, "UcsSource", "Uniaxial Compressive Strength", "", "Data source for UCS", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_ucsSource, + "UcsSource", + "Uniaxial Compressive Strength", + "", + "Data source for UCS", + "" ); - RICF_InitFieldNoDefault( &m_OBG0Source, "OBG0Source", "Initial Overburden Gradient", "", "Data source for OBG0", "" ); - RICF_InitFieldNoDefault( &m_DFSource, "DFSource", "Depletion Factor (DF)", "", "Data source for Depletion Factor", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_OBG0Source, + "OBG0Source", + "Initial Overburden Gradient", + "", + "Data source for OBG0", + "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_DFSource, + "DFSource", + "Depletion Factor (DF)", + "", + "Data source for Depletion Factor", + "" ); - RICF_InitFieldNoDefault( &m_K0SHSource, - "K0SHSource", - "K0_SH", - "", - "SH from Matthews & Kelly = K0_SH * (OBG0-PP0) + PP0 + DF * (PP-PP0)\nK0_SH = " - "(SH - PP)/(OBG-PP)", - "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_K0SHSource, + "K0SHSource", + "K0_SH", + "", + "SH from Matthews & Kelly = K0_SH * (OBG0-PP0) + PP0 + DF * " + "(PP-PP0)\nK0_SH = " + "(SH - PP)/(OBG-PP)", + "" ); - RICF_InitFieldNoDefault( &m_FGShaleSource, "FGShaleSource", "FG in Shale Calculation", "", "", "" ); - RICF_InitFieldNoDefault( &m_K0FGSource, - "K0FGSource", - "K0_FG", - "", - "FG in shale = K0_FG * (OBG0-PP0)\nK0_FG = (FG-PP)/(OBG-PP)", - "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_FGShaleSource, "FGShaleSource", "FG in Shale Calculation", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_K0FGSource, + "K0FGSource", + "K0_FG", + "", + "FG in shale = K0_FG * (OBG0-PP0)\nK0_FG = (FG-PP)/(OBG-PP)", + "" ); CAF_PDM_InitFieldNoDefault( &m_waterDensitySource, "WaterDensitySource", "Water Density", "", "", "" ); m_waterDensitySource.uiCapability()->setUiHidden( true ); - RICF_InitField( &m_userDefinedPoissionRatio, - "UserPoissonRatio", - 0.35, - "User Defined Poisson Ratio", - "", - "User Defined Poisson Ratio", - "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_userDefinedPoissionRatio, + "UserPoissonRatio", + 0.35, + "User Defined Poisson Ratio", + "", + "User Defined Poisson Ratio", + "" ); // Typical UCS: http://ceae.colorado.edu/~amadei/CVEN5768/PDF/NOTES8.pdf // Typical UCS for Shale is 5 - 100 MPa -> 50 - 1000 bar. - RICF_InitField( &m_userDefinedUcs, "UserUcs", 100.0, "User Defined UCS [bar]", "", "User Defined UCS [bar]", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_userDefinedUcs, + "UserUcs", + 100.0, + "User Defined UCS [bar]", + "", + "User Defined UCS [bar]", + "" ); - RICF_InitField( &m_userDefinedDF, "UserDF", 0.7, "User Defined DF", "", "User Defined Depletion Factor", "" ); - RICF_InitField( &m_userDefinedK0FG, "UserK0FG", 0.75, "User Defined K0_FG", "", "", "" ); - RICF_InitField( &m_userDefinedK0SH, "UserK0SH", 0.65, "User Defined K0_SH", "", "", "" ); - RICF_InitField( &m_FGShaleMultiplier, - "FGMultiplier", - 1.05, - "SH Multiplier for FG in Shale", - "", - "FG in Shale = Multiplier * SH", - "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_userDefinedDF, "UserDF", 0.7, "User Defined DF", "", "User Defined Depletion Factor", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_userDefinedK0FG, "UserK0FG", 0.75, "User Defined K0_FG", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_userDefinedK0SH, "UserK0SH", 0.65, "User Defined K0_SH", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_FGShaleMultiplier, + "FGMultiplier", + 1.05, + "SH Multiplier for FG in Shale", + "", + "FG in Shale = Multiplier * SH", + "" ); - RICF_InitField( &m_userDefinedDensity, "WaterDensity", 1.03, "Density of Sea Water [g/cm^3]", "", "Units: g/cm^3", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_userDefinedDensity, + "WaterDensity", + 1.03, + "Density of Sea Water [g/cm^3]", + "", + "Units: g/cm^3", + "" ); CAF_PDM_InitFieldNoDefault( &m_geoMechCase, "GeoMechCase", "GeoMechCase", "", "", "" ); m_geoMechCase.uiCapability()->setUiHidden( true ); diff --git a/ApplicationCode/ProjectDataModel/RimWellBoreStabilityPlot.cpp b/ApplicationCode/ProjectDataModel/RimWellBoreStabilityPlot.cpp index b02093ce8a..9d5ac6dcb7 100644 --- a/ApplicationCode/ProjectDataModel/RimWellBoreStabilityPlot.cpp +++ b/ApplicationCode/ProjectDataModel/RimWellBoreStabilityPlot.cpp @@ -31,7 +31,9 @@ #include "RimWellLogFile.h" #include "cafPdmBase.h" +#include "cafPdmFieldIOScriptability.h" #include "cafPdmObject.h" +#include "cafPdmObjectScriptability.h" #include "cafPdmUiComboBoxEditor.h" #include "cafPdmUiGroup.h" diff --git a/ApplicationCode/ProjectDataModel/RimWellLogPlot.cpp b/ApplicationCode/ProjectDataModel/RimWellLogPlot.cpp index e2880cc58d..a68bad9aab 100644 --- a/ApplicationCode/ProjectDataModel/RimWellLogPlot.cpp +++ b/ApplicationCode/ProjectDataModel/RimWellLogPlot.cpp @@ -21,8 +21,6 @@ #include "RiaApplication.h" -#include "RicfCommandObject.h" - #include "RigWellLogCurveData.h" #include "RigWellPath.h" @@ -40,6 +38,8 @@ #include "RiuQwtPlotWidget.h" #include "RiuWellLogPlot.h" +#include "cafPdmFieldIOScriptability.h" +#include "cafPdmObjectScriptability.h" #include "cafPdmUiComboBoxEditor.h" #include "cafPdmUiDoubleValueEditor.h" #include "cvfAssert.h" @@ -87,24 +87,24 @@ RimWellLogPlot::RimWellLogPlot() m_commonDataSource.xmlCapability()->disableIO(); m_commonDataSource = new RimWellLogCurveCommonDataSource; - RICF_InitField( &m_showPlotWindowTitle, "ShowTitleInPlot", true, "Show Title", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_showPlotWindowTitle, "ShowTitleInPlot", true, "Show Title", "", "", "" ); CAF_PDM_InitField( &m_plotWindowTitle, "PlotDescription", QString( "" ), "Name", "", "", "" ); m_plotWindowTitle.xmlCapability()->setIOWritable( false ); caf::AppEnum depthType = RiaDefines::MEASURED_DEPTH; - RICF_InitField( &m_depthType, "DepthType", depthType, "Type", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_depthType, "DepthType", depthType, "Type", "", "", "" ); caf::AppEnum depthUnit = RiaDefines::UNIT_METER; - RICF_InitField( &m_depthUnit, "DepthUnit", depthUnit, "Unit", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_depthUnit, "DepthUnit", depthUnit, "Unit", "", "", "" ); - RICF_InitField( &m_minVisibleDepth, "MinimumDepth", 0.0, "Min", "", "", "" ); - RICF_InitField( &m_maxVisibleDepth, "MaximumDepth", 1000.0, "Max", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_minVisibleDepth, "MinimumDepth", 0.0, "Min", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_maxVisibleDepth, "MaximumDepth", 1000.0, "Max", "", "", "" ); m_minVisibleDepth.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleValueEditor::uiEditorTypeName() ); m_maxVisibleDepth.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleValueEditor::uiEditorTypeName() ); - RICF_InitFieldNoDefault( &m_depthAxisGridVisibility, "ShowDepthGridLines", "Show Grid Lines", "", "", "" ); - RICF_InitField( &m_isAutoScaleDepthEnabled, "AutoScaleDepthEnabled", true, "Auto Scale", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_depthAxisGridVisibility, "ShowDepthGridLines", "Show Grid Lines", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_isAutoScaleDepthEnabled, "AutoScaleDepthEnabled", true, "Auto Scale", "", "", "" ); m_isAutoScaleDepthEnabled.uiCapability()->setUiHidden( true ); CAF_PDM_InitFieldNoDefault( &m_nameConfig, "NameConfig", "", "", "", "" ); diff --git a/ApplicationCode/ProjectDataModel/RimWellPath.cpp b/ApplicationCode/ProjectDataModel/RimWellPath.cpp index 2e60eb1c8e..c8c0555a42 100644 --- a/ApplicationCode/ProjectDataModel/RimWellPath.cpp +++ b/ApplicationCode/ProjectDataModel/RimWellPath.cpp @@ -50,6 +50,7 @@ #include "RiuMainWindow.h" +#include "cafPdmFieldIOScriptability.h" #include "cafPdmUiTreeOrdering.h" #include "cafUtils.h" @@ -75,7 +76,7 @@ RimWellPath::RimWellPath() { CAF_PDM_InitScriptableObjectWithNameAndComment( "WellPath", ":/Well.png", "", "", "WellPath", "The Base class for Well Paths" ); - RICF_InitFieldNoDefault( &m_name, "Name", "Name", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_name, "Name", "Name", "", "", "" ); m_name.registerKeywordAlias( "WellPathName" ); m_name.uiCapability()->setUiReadOnly( true ); m_name.uiCapability()->setUiHidden( true ); diff --git a/ApplicationCode/ProjectDataModel/Summary/RimFileSummaryCase.cpp b/ApplicationCode/ProjectDataModel/Summary/RimFileSummaryCase.cpp index 74d8ddb03d..7dfa139edf 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimFileSummaryCase.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimFileSummaryCase.cpp @@ -27,6 +27,9 @@ #include "RimTools.h" +#include "cafPdmFieldIOScriptability.h" +#include "cafPdmObjectScriptability.h" + #include #include @@ -43,7 +46,7 @@ CAF_PDM_SOURCE_INIT( RimFileSummaryCase, "FileSummaryCase" ); RimFileSummaryCase::RimFileSummaryCase() { CAF_PDM_InitScriptableObject( "File Summary Case ", ":/SummaryCases16x16.png", "", "A Summary Case based on SMSPEC files" ); - CAF_PDM_InitField( &m_includeRestartFiles, "IncludeRestartFiles", false, "Include Restart Files", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_includeRestartFiles, "IncludeRestartFiles", false, "Include Restart Files", "", "", "" ); m_includeRestartFiles.uiCapability()->setUiHidden( true ); } diff --git a/ApplicationCode/ProjectDataModel/Summary/RimGridSummaryCase.cpp b/ApplicationCode/ProjectDataModel/Summary/RimGridSummaryCase.cpp index e5566318ef..0eae875b75 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimGridSummaryCase.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimGridSummaryCase.cpp @@ -25,6 +25,8 @@ #include "RimFileSummaryCase.h" #include "RimProject.h" +#include "cafPdmObjectScriptability.h" + #include //================================================================================================== diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCase.cpp b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCase.cpp index 3fdacd76e4..98c87009ce 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCase.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCase.cpp @@ -30,9 +30,12 @@ #include "RimSummaryCaseMainCollection.h" #include "RimSummaryPlotCollection.h" +#include "RimObservedSummaryData.h" + +#include "cafPdmFieldIOScriptability.h" + #include "cvfAssert.h" -#include "RimObservedSummaryData.h" #include CAF_PDM_ABSTRACT_SOURCE_INIT( RimSummaryCase, "SummaryCase" ); @@ -46,10 +49,15 @@ RimSummaryCase::RimSummaryCase() { CAF_PDM_InitScriptableObject( "Summary Case", ":/SummaryCase16x16.png", "", "The Base Class for all Summary Cases" ); - RICF_InitField( &m_shortName, "ShortName", QString( "Display Name" ), DEFAULT_DISPLAY_NAME, "", "", "" ); - RICF_InitField( &m_useAutoShortName, "AutoShortyName", false, "Use Auto Display Name", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_shortName, "ShortName", QString( "Display Name" ), DEFAULT_DISPLAY_NAME, "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_useAutoShortName, "AutoShortyName", false, "Use Auto Display Name", "", "", "" ); - RICF_InitFieldNoDefault( &m_summaryHeaderFilename, "SummaryHeaderFilename", "Summary Header File", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIONoDefault( &m_summaryHeaderFilename, + "SummaryHeaderFilename", + "Summary Header File", + "", + "", + "" ); m_summaryHeaderFilename.uiCapability()->setUiReadOnly( true ); m_isObservedData = false; diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.cpp b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.cpp index f8feb11f68..cdafc4606d 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.cpp @@ -54,6 +54,7 @@ #include "cvfColor3.h" +#include "cafPdmFieldIOScriptability.h" #include "cafPdmUiCheckBoxEditor.h" #include "cafPdmUiTreeOrdering.h" #include "cafSelectionManager.h" @@ -145,14 +146,20 @@ RimSummaryPlot::RimSummaryPlot() { CAF_PDM_InitScriptableObject( "Summary Plot", ":/SummaryPlotLight16x16.png", "", "A Summary Plot" ); - RICF_InitField( &m_showPlotTitle, "ShowPlotTitle", true, "Plot Title", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_showPlotTitle, "ShowPlotTitle", true, "Plot Title", "", "", "" ); m_showPlotTitle.xmlCapability()->setIOWritable( false ); - RICF_InitField( &m_useAutoPlotTitle, "IsUsingAutoName", true, "Auto Title", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_useAutoPlotTitle, "IsUsingAutoName", true, "Auto Title", "", "", "" ); - RICF_InitField( &m_description, "PlotDescription", QString( "Summary Plot" ), "Name", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_description, "PlotDescription", QString( "Summary Plot" ), "Name", "", "", "" ); - RICF_InitField( &m_normalizeCurveYValues, "normalizeCurveYValues", false, "Normalize all curves", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_normalizeCurveYValues, + "normalizeCurveYValues", + false, + "Normalize all curves", + "", + "", + "" ); CAF_PDM_InitFieldNoDefault( &m_summaryCurveCollection, "SummaryCurveCollection", "", "", "", "" ); m_summaryCurveCollection.uiCapability()->setUiTreeHidden( true ); diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlotCollection.cpp b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlotCollection.cpp index 659247b9c1..d4c5ef0809 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlotCollection.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlotCollection.cpp @@ -22,6 +22,9 @@ #include "RimProject.h" #include "RimSummaryPlot.h" +#include "cafPdmFieldScriptability.h" +#include "cafPdmObjectScriptability.h" + CAF_PDM_SOURCE_INIT( RimSummaryPlotCollection, "SummaryPlotCollection" ); //-------------------------------------------------------------------------------------------------- @@ -29,7 +32,7 @@ CAF_PDM_SOURCE_INIT( RimSummaryPlotCollection, "SummaryPlotCollection" ); //-------------------------------------------------------------------------------------------------- RimSummaryPlotCollection::RimSummaryPlotCollection() { - CAF_PDM_InitObject( "Summary Plots", ":/SummaryPlotsLight16x16.png", "", "" ); + CAF_PDM_InitScriptableObject( "Summary Plots", ":/SummaryPlotsLight16x16.png", "", "" ); CAF_PDM_InitFieldNoDefault( &summaryPlots, "SummaryPlots", "Summary Plots", "", "", "" ); summaryPlots.uiCapability()->setUiHidden( true ); diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlotCollection.h b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlotCollection.h index 04979f4e53..6d5971d01e 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlotCollection.h +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlotCollection.h @@ -20,6 +20,8 @@ #include "cafPdmChildArrayField.h" #include "cafPdmObject.h" +#include "cafPdmObjectMethod.h" +#include "cafPdmPtrArrayField.h" class RimSummaryPlot; diff --git a/ApplicationCode/UnitTests/RifcCommandCore-Test.cpp b/ApplicationCode/UnitTests/RifcCommandCore-Test.cpp index ad1164365b..d4e7fc3788 100644 --- a/ApplicationCode/UnitTests/RifcCommandCore-Test.cpp +++ b/ApplicationCode/UnitTests/RifcCommandCore-Test.cpp @@ -5,6 +5,7 @@ #include "RifcCommandFileReader.h" #include "cafPdmField.h" +#include "cafPdmFieldIOScriptability.h" #include "cafPdmScriptIOMessages.h" class TestCommand1 : public RicfCommandObject @@ -14,18 +15,18 @@ class TestCommand1 : public RicfCommandObject public: TestCommand1() { - RICF_InitField( &m_textArgument, "TextArgument", QString(), "TextArgument", "", "", "" ); - RICF_InitField( &m_doubleArgument, "DoubleArgument", 0.0, "DoubleArgument", "", "", "" ); - RICF_InitField( &m_intArgument, "IntArgument", 0, "IntArgument", "", "", "" ); - RICF_InitField( &m_boolArgument, "BoolArgument", false, "BoolArgument", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_textArgument, "TextArgument", QString(), "TextArgument", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_doubleArgument, "DoubleArgument", 0.0, "DoubleArgument", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_intArgument, "IntArgument", 0, "IntArgument", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_boolArgument, "BoolArgument", false, "BoolArgument", "", "", "" ); } - RicfCommandResponse execute() override + caf::PdmScriptResponse execute() override { std::cout << "TestCommand1::execute(" << "\"" << m_textArgument().toStdString() << "\", " << m_doubleArgument() << ", " << m_intArgument << ", " << m_boolArgument << ");" << std::endl; - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } caf::PdmField m_textArgument; @@ -43,18 +44,18 @@ class TC2 : public RicfCommandObject public: TC2() { - RICF_InitField( &m_textArgument, "ta", QString(), "TextArgument", "", "", "" ); - RICF_InitField( &m_doubleArgument, "da", 0.0, "DoubleArgument", "", "", "" ); - RICF_InitField( &m_intArgument, "ia", 0, "IntArgument", "", "", "" ); - RICF_InitField( &m_boolArgument, "ba", false, "BoolArgument", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_textArgument, "ta", QString(), "TextArgument", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_doubleArgument, "da", 0.0, "DoubleArgument", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_intArgument, "ia", 0, "IntArgument", "", "", "" ); + CAF_PDM_InitScriptableFieldWithIO( &m_boolArgument, "ba", false, "BoolArgument", "", "", "" ); } - RicfCommandResponse execute() override + caf::PdmScriptResponse execute() override { std::cout << "TC2::execute(" << "\"" << m_textArgument().toStdString() << "\", " << m_doubleArgument() << ", " << m_intArgument() << ", " << m_boolArgument() << ");" << std::endl; - return RicfCommandResponse(); + return caf::PdmScriptResponse(); } caf::PdmField m_textArgument; @@ -80,7 +81,7 @@ TEST( RicfCommands, Test1 ) // std::cout << commandString.toStdString() << std::endl; - QTextStream inputStream( &commandString ); + QTextStream inputStream( &commandString ); caf::PdmScriptIOMessages errors; auto objects = RicfCommandFileReader::readCommands( inputStream, caf::PdmDefaultObjectFactory::instance(), &errors ); @@ -138,7 +139,7 @@ TEST( RicfCommands, ErrorMessages ) std::cout << commandString.toStdString() << std::endl; - QTextStream inputStream( &commandString ); + QTextStream inputStream( &commandString ); caf::PdmScriptIOMessages errors; auto objects = RicfCommandFileReader::readCommands( inputStream, caf::PdmDefaultObjectFactory::instance(), &errors ); @@ -180,7 +181,7 @@ TEST( RicfCommands, EmptyArgumentList ) // Ensure no error messages when command with no arguments is read QString commandString( "TestCommand1()" ); - QTextStream inputStream( &commandString ); + QTextStream inputStream( &commandString ); caf::PdmScriptIOMessages errors; auto objects = RicfCommandFileReader::readCommands( inputStream, caf::PdmDefaultObjectFactory::instance(), &errors ); @@ -215,7 +216,7 @@ TEST( RicfCommands, TransformFileCommandObjectsToExecutableCommandObjects ) )"; - QTextStream inputStream( &commandString ); + QTextStream inputStream( &commandString ); caf::PdmScriptIOMessages errors; auto objects = RicfCommandFileReader::readCommands( inputStream, caf::PdmDefaultObjectFactory::instance(), &errors ); @@ -252,7 +253,7 @@ TEST( RicfCommands, IgnoreCommentLines ) )"; - QTextStream inputStream( &commandString ); + QTextStream inputStream( &commandString ); caf::PdmScriptIOMessages errors; auto objects = RicfCommandFileReader::readCommands( inputStream, caf::PdmDefaultObjectFactory::instance(), &errors ); @@ -283,7 +284,7 @@ TEST( RicfCommands, IgnoreCommentLinesShowErrorLine ) )"; - QTextStream inputStream( &commandString ); + QTextStream inputStream( &commandString ); caf::PdmScriptIOMessages errors; auto objects = RicfCommandFileReader::readCommands( inputStream, caf::PdmDefaultObjectFactory::instance(), &errors ); @@ -315,7 +316,7 @@ TEST( RicfCommands, WriteCommand ) } { - QTextStream inputStream( &commandString ); + QTextStream inputStream( &commandString ); caf::PdmScriptIOMessages errors; auto objects = diff --git a/Fwk/AppFwk/cafPdmScripting/.clang-format b/Fwk/AppFwk/cafPdmScripting/.clang-format new file mode 100644 index 0000000000..78ba6a0887 --- /dev/null +++ b/Fwk/AppFwk/cafPdmScripting/.clang-format @@ -0,0 +1,79 @@ +--- +Language: Cpp +# BasedOnStyle: LLVM +AccessModifierOffset: -4 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: true +AlignConsecutiveDeclarations: true +AlignEscapedNewlinesLeft: true +AlignOperands: true +AlignTrailingComments: false +AllowAllParametersOfDeclarationOnNextLine: false +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortIfStatementsOnASingleLine: true +AllowShortFunctionsOnASingleLine: InlineOnly +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: true +BinPackArguments: false +BinPackParameters: false +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Allman +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: true +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: true +ColumnLimit: 120 +CommentPragmas: '^ IWYU pragma:' +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +DisableFormat: false +ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + - Regex: '^(<|"(gtest|isl|json)/)' + Priority: 3 + - Regex: '.*' + Priority: 1 +IncludeIsMainRegex: '$' +IndentCaseLabels: true +IndentWidth: 4 +IndentWrappedFunctionNames: true +JavaScriptQuotes: Leave +KeepEmptyLinesAtTheStartOfBlocks: false +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: Inner +PenaltyBreakAssignment: 13 +PenaltyBreakBeforeFirstCallParameter: 10000 +PenaltyBreakComment: 20 +PenaltyBreakFirstLessLess: 12 +PenaltyBreakString: 100 +PenaltyExcessCharacter: 5 +PenaltyReturnTypeOnItsOwnLine: 30 +PointerAlignment: Left +ReflowComments: true +SortIncludes: true +SpaceAfterCStyleCast: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeParens: ControlStatements +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInContainerLiterals: false +SpacesInCStyleCastParentheses: false +SpacesInParentheses: true +SpacesInSquareBrackets: false +Standard: Cpp11 +TabWidth: 4 +UseTab: Never +... diff --git a/Fwk/AppFwk/cafPdmScripting/.clang-tidy b/Fwk/AppFwk/cafPdmScripting/.clang-tidy new file mode 100644 index 0000000000..8348d93169 --- /dev/null +++ b/Fwk/AppFwk/cafPdmScripting/.clang-tidy @@ -0,0 +1,5 @@ +--- +Checks: '-*,modernize-use-nullptr,modernize-use-override,modernize-deprecated-headers' +HeaderFilterRegex: '' +AnalyzeTemporaryDtors: false +... diff --git a/Fwk/AppFwk/cafPdmScripting/CMakeLists.txt b/Fwk/AppFwk/cafPdmScripting/CMakeLists.txt index 5112fa85c2..42b7d94a88 100644 --- a/Fwk/AppFwk/cafPdmScripting/CMakeLists.txt +++ b/Fwk/AppFwk/cafPdmScripting/CMakeLists.txt @@ -6,12 +6,20 @@ set( PROJECT_FILES cafPdmCodeGenerator.h cafPdmFieldScriptability.h cafPdmFieldScriptability.cpp + cafPdmFieldIOScriptability.h + cafPdmFieldIOScriptability.cpp + cafPdmObjectMethod.h + cafPdmObjectMethod.cpp cafPdmObjectScriptabilityRegister.h cafPdmObjectScriptabilityRegister.cpp cafPdmPythonGenerator.h cafPdmPythonGenerator.cpp cafPdmScriptIOMessages.h cafPdmScriptIOMessages.cpp + cafPdmObjectScriptability.h + cafPdmObjectScriptability.cpp + cafPdmScriptResponse.h + cafPdmScriptResponse.cpp ) @@ -24,7 +32,7 @@ target_include_directories(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR} ) -target_link_libraries( ${PROJECT_NAME} cafProjectDataModel ${QT_LIBRARIES} ) +target_link_libraries( ${PROJECT_NAME} LibCore cafProjectDataModel ${QT_LIBRARIES} ) source_group("" FILES ${PROJECT_FILES}) diff --git a/ApplicationCode/CommandFileInterface/Core/RicfFieldCapability.cpp b/Fwk/AppFwk/cafPdmScripting/cafPdmFieldIOScriptability.cpp similarity index 54% rename from ApplicationCode/CommandFileInterface/Core/RicfFieldCapability.cpp rename to Fwk/AppFwk/cafPdmScripting/cafPdmFieldIOScriptability.cpp index 991796333b..e7d9339e43 100644 --- a/ApplicationCode/CommandFileInterface/Core/RicfFieldCapability.cpp +++ b/Fwk/AppFwk/cafPdmScripting/cafPdmFieldIOScriptability.cpp @@ -1,34 +1,51 @@ -///////////////////////////////////////////////////////////////////////////////// +//################################################################################################## // -// Copyright (C) 2017 Statoil ASA +// Custom Visualization Core library +// Copyright (C) Ceetron Solutions 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. +// This library may be used under the terms of either the GNU General Public License or +// the GNU Lesser General Public License as follows: // -// 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. +// GNU General Public License Usage +// This library 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. // -// See the GNU General Public License at -// for more details. +// This library 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. // -///////////////////////////////////////////////////////////////////////////////// - -#include "RicfFieldCapability.h" - -#include "RiaColorTools.h" +// See the GNU General Public License at <> +// for more details. +// +// GNU Lesser General Public License Usage +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation; either version 2.1 of the License, or +// (at your option) any later version. +// +// This library 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 Lesser General Public License at <> +// for more details. +// +//################################################################################################## +#include "cafPdmFieldIOScriptability.h" #include +using namespace caf; + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RicfFieldIOHandler::writeToField( QString& fieldValue, - QTextStream& inputStream, - caf::PdmScriptIOMessages* errorMessageContainer, - bool stringsAreQuoted ) +void PdmFieldScriptabilityIOHandler::writeToField( QString& fieldValue, + QTextStream& inputStream, + caf::PdmScriptIOMessages* errorMessageContainer, + bool stringsAreQuoted ) { fieldValue = ""; @@ -98,10 +115,10 @@ void RicfFieldIOHandler::writeToField( QString& fieldV //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RicfFieldIOHandler::readFromField( const QString& fieldValue, - QTextStream& outputStream, - bool quoteStrings, - bool quoteNonBuiltin ) +void PdmFieldScriptabilityIOHandler::readFromField( const QString& fieldValue, + QTextStream& outputStream, + bool quoteStrings, + bool quoteNonBuiltin ) { outputStream << "\""; for ( int i = 0; i < fieldValue.size(); ++i ) @@ -118,10 +135,10 @@ void RicfFieldIOHandler::readFromField( const QString& fieldValue, //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RicfFieldIOHandler::writeToField( bool& fieldValue, - QTextStream& inputStream, - caf::PdmScriptIOMessages* errorMessageContainer, - bool stringsAreQuoted ) +void PdmFieldScriptabilityIOHandler::writeToField( bool& fieldValue, + QTextStream& inputStream, + caf::PdmScriptIOMessages* errorMessageContainer, + bool stringsAreQuoted ) { errorMessageContainer->skipWhiteSpaceWithLineNumberCount( inputStream ); QString accumulatedFieldValue; @@ -157,10 +174,10 @@ void RicfFieldIOHandler::writeToField( bool& fieldValu //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RicfFieldIOHandler::readFromField( const bool& fieldValue, - QTextStream& outputStream, - bool quoteStrings, - bool quoteNonBuiltin ) +void PdmFieldScriptabilityIOHandler::readFromField( const bool& fieldValue, + QTextStream& outputStream, + bool quoteStrings, + bool quoteNonBuiltin ) { // Lower-case true/false is used in the documentation. outputStream << ( fieldValue ? "true" : "false" ); @@ -169,30 +186,33 @@ void RicfFieldIOHandler::readFromField( const bool& fieldValue, //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RicfFieldIOHandler::writeToField( cvf::Color3f& fieldValue, - QTextStream& inputStream, - caf::PdmScriptIOMessages* errorMessageContainer, - bool stringsAreQuoted ) +void PdmFieldScriptabilityIOHandler::writeToField( cvf::Color3f& fieldValue, + QTextStream& inputStream, + caf::PdmScriptIOMessages* errorMessageContainer, + bool stringsAreQuoted ) { QString fieldStringValue; - RicfFieldIOHandler::writeToField( fieldStringValue, inputStream, errorMessageContainer, stringsAreQuoted ); + PdmFieldScriptabilityIOHandler::writeToField( fieldStringValue, + inputStream, + errorMessageContainer, + stringsAreQuoted ); QColor qColor( fieldStringValue ); if ( qColor.isValid() ) { - fieldValue = RiaColorTools::fromQColorTo3f( qColor ); + fieldValue = cvf::Color3f( qColor.redF(), qColor.greenF(), qColor.blueF() ); } } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RicfFieldIOHandler::readFromField( const cvf::Color3f& fieldValue, - QTextStream& outputStream, - bool quoteStrings, - bool quoteNonBuiltin ) +void PdmFieldScriptabilityIOHandler::readFromField( const cvf::Color3f& fieldValue, + QTextStream& outputStream, + bool quoteStrings, + bool quoteNonBuiltin ) { - QColor qColor = RiaColorTools::toQColor( fieldValue ); + QColor qColor( fieldValue.rByte(), fieldValue.gByte(), fieldValue.bByte() ); QString fieldStringValue = qColor.name(); - RicfFieldIOHandler::readFromField( fieldStringValue, outputStream, quoteStrings ); + PdmFieldScriptabilityIOHandler::readFromField( fieldStringValue, outputStream, quoteStrings ); } diff --git a/Fwk/AppFwk/cafPdmScripting/cafPdmFieldIOScriptability.h b/Fwk/AppFwk/cafPdmScripting/cafPdmFieldIOScriptability.h new file mode 100644 index 0000000000..66efd2def0 --- /dev/null +++ b/Fwk/AppFwk/cafPdmScripting/cafPdmFieldIOScriptability.h @@ -0,0 +1,529 @@ +//################################################################################################## +// +// Custom Visualization Core library +// Copyright (C) Ceetron Solutions AS +// +// This library may be used under the terms of either the GNU General Public License or +// the GNU Lesser General Public License as follows: +// +// GNU General Public License Usage +// This library 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. +// +// This library 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. +// +// GNU Lesser General Public License Usage +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation; either version 2.1 of the License, or +// (at your option) any later version. +// +// This library 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 Lesser General Public License at <> +// for more details. +// +//################################################################################################## +#pragma once + +#include "cafAppEnum.h" +#include "cafPdmFieldScriptability.h" +#include "cafPdmPtrArrayField.h" +#include "cafPdmPtrField.h" +#include "cafPdmScriptIOMessages.h" + +#include "cvfColor3.h" + +#include +#include +#include + +#define CAF_PDM_InitScriptableFieldWithIO( field, keyword, default, uiName, iconResourceName, toolTip, whatsThis ) \ + CAF_PDM_InitField( field, \ + keyword, \ + default, \ + uiName, \ + iconResourceName, \ + caf::PdmFieldScriptability::helpString( toolTip, keyword ), \ + whatsThis ); \ + caf::AddFieldIOScriptabilityToField( field, keyword ) + +#define CAF_PDM_InitScriptableFieldWithIONoDefault( field, keyword, uiName, iconResourceName, toolTip, whatsThis ) \ + CAF_PDM_InitFieldNoDefault( field, \ + keyword, \ + uiName, \ + iconResourceName, \ + caf::PdmFieldScriptability::helpString( toolTip, keyword ), \ + whatsThis ); \ + caf::AddFieldIOScriptabilityToField( field, keyword ) + +#define CAF_PDM_InitScriptableFieldWithIOAndScriptName( field, \ + keyword, \ + scriptKeyword, \ + default, \ + uiName, \ + iconResourceName, \ + toolTip, \ + whatsThis ) \ + CAF_PDM_InitField( field, \ + keyword, \ + default, \ + uiName, \ + iconResourceName, \ + caf::PdmFieldScriptability::helpString( toolTip, scriptKeyword ), \ + whatsThis ); \ + caf::AddFieldIOScriptabilityToField( field, scriptKeyword ) + +#define CAF_PDM_InitScriptableFieldWithIOAndScriptNameNoDefault( field, \ + keyword, \ + scriptKeyword, \ + uiName, \ + iconResourceName, \ + toolTip, \ + whatsThis ) \ + CAF_PDM_InitFieldNoDefault( field, \ + keyword, \ + uiName, \ + iconResourceName, \ + caf::PdmFieldScriptability::helpString( toolTip, scriptKeyword ), \ + whatsThis ); \ + caf::AddFieldIOScriptabilityToField( field, scriptKeyword ) + +namespace caf +{ +template +struct PdmFieldScriptabilityIOHandler +{ + static void writeToField( DataType& fieldValue, + QTextStream& inputStream, + PdmScriptIOMessages* errorMessageContainer, + bool stringsAreQuoted = true ) + { + inputStream >> fieldValue; + if ( inputStream.status() == QTextStream::ReadCorruptData ) + { + errorMessageContainer->addError( "Argument value is unreadable in the argument: \"" + + errorMessageContainer->currentArgument + "\" in the command: \"" + + errorMessageContainer->currentCommand + "\"" ); + + inputStream.setStatus( QTextStream::Ok ); + } + } + + static void readFromField( const DataType& fieldValue, + QTextStream& outputStream, + bool quoteStrings = true, + bool quoteNonBuiltins = false ) + { + outputStream << fieldValue; + } +}; + +template <> +struct PdmFieldScriptabilityIOHandler +{ + static void writeToField( QString& fieldValue, + QTextStream& inputStream, + PdmScriptIOMessages* errorMessageContainer, + bool stringsAreQuoted = true ); + static void readFromField( const QString& fieldValue, + QTextStream& outputStream, + bool quoteStrings = true, + bool quoteNonBuiltins = false ); +}; + +template <> +struct PdmFieldScriptabilityIOHandler +{ + static void writeToField( bool& fieldValue, + QTextStream& inputStream, + PdmScriptIOMessages* errorMessageContainer, + bool stringsAreQuoted = true ); + static void readFromField( const bool& fieldValue, + QTextStream& outputStream, + bool quoteStrings = true, + bool quoteNonBuiltins = false ); +}; + +template <> +struct PdmFieldScriptabilityIOHandler +{ + static void writeToField( cvf::Color3f& fieldValue, + QTextStream& inputStream, + PdmScriptIOMessages* errorMessageContainer, + bool stringsAreQuoted = true ); + static void readFromField( const cvf::Color3f& fieldValue, + QTextStream& outputStream, + bool quoteStrings = true, + bool quoteNonBuiltins = false ); +}; + +template +struct PdmFieldScriptabilityIOHandler> +{ + static void writeToField( AppEnum& fieldValue, + QTextStream& inputStream, + PdmScriptIOMessages* errorMessageContainer, + bool stringsAreQuoted = true ) + { + errorMessageContainer->skipWhiteSpaceWithLineNumberCount( inputStream ); + QString accumulatedFieldValue; + QChar nextChar; + QChar currentChar; + while ( !inputStream.atEnd() ) + { + nextChar = errorMessageContainer->peekNextChar( inputStream ); + if ( nextChar.isLetterOrNumber() || nextChar == QChar( '_' ) ) + { + currentChar = errorMessageContainer->readCharWithLineNumberCount( inputStream ); + accumulatedFieldValue += currentChar; + } + else + { + break; + } + } + if ( !fieldValue.setFromText( accumulatedFieldValue ) ) + { + // Unexpected enum value + // Error message + errorMessageContainer->addError( "Argument must be valid enum value. " + + errorMessageContainer->currentArgument + "\" argument of the command: \"" + + errorMessageContainer->currentCommand + "\"" ); + } + } + + static void readFromField( const AppEnum& fieldValue, + QTextStream& outputStream, + bool quoteStrings = true, + bool quoteNonBuiltins = false ) + { + if ( quoteNonBuiltins ) + { + outputStream << "\"" << fieldValue << "\""; + } + else + { + outputStream << fieldValue; + } + } +}; + +template +struct PdmFieldScriptabilityIOHandler> +{ + static void writeToField( std::vector& fieldValue, + QTextStream& inputStream, + PdmScriptIOMessages* errorMessageContainer, + bool stringsAreQuoted = true ) + { + errorMessageContainer->skipWhiteSpaceWithLineNumberCount( inputStream ); + QChar chr = errorMessageContainer->readCharWithLineNumberCount( inputStream ); + if ( chr == QChar( '[' ) ) + { + while ( !inputStream.atEnd() ) + { + errorMessageContainer->skipWhiteSpaceWithLineNumberCount( inputStream ); + QChar nextChar = errorMessageContainer->peekNextChar( inputStream ); + if ( nextChar == QChar( ']' ) ) + { + nextChar = errorMessageContainer->readCharWithLineNumberCount( inputStream ); + break; + } + else if ( nextChar == QChar( ',' ) ) + { + nextChar = errorMessageContainer->readCharWithLineNumberCount( inputStream ); + errorMessageContainer->skipWhiteSpaceWithLineNumberCount( inputStream ); + } + + T value; + PdmFieldScriptabilityIOHandler::writeToField( value, inputStream, errorMessageContainer, true ); + fieldValue.push_back( value ); + } + } + else + { + errorMessageContainer->addError( "Array argument is missing start '['. " + + errorMessageContainer->currentArgument + "\" argument of the command: \"" + + errorMessageContainer->currentCommand + "\"" ); + } + } + + static void readFromField( const std::vector& fieldValue, + QTextStream& outputStream, + bool quoteStrings = true, + bool quoteNonBuiltins = false ) + { + outputStream << "["; + for ( size_t i = 0; i < fieldValue.size(); ++i ) + { + PdmFieldScriptabilityIOHandler::readFromField( fieldValue[i], outputStream, quoteNonBuiltins ); + if ( i < fieldValue.size() - 1 ) + { + outputStream << ", "; + } + } + outputStream << "]"; + } +}; + +template +struct PdmFieldScriptabilityIOHandler> +{ + static void writeToField( std::vector& fieldValue, + const std::vector& allObjectsOfType, + QTextStream& inputStream, + PdmScriptIOMessages* errorMessageContainer ) + { + errorMessageContainer->skipWhiteSpaceWithLineNumberCount( inputStream ); + QChar chr = errorMessageContainer->readCharWithLineNumberCount( inputStream ); + if ( chr == QChar( '[' ) ) + { + while ( !inputStream.atEnd() ) + { + errorMessageContainer->skipWhiteSpaceWithLineNumberCount( inputStream ); + QChar nextChar = errorMessageContainer->peekNextChar( inputStream ); + if ( nextChar == QChar( ']' ) ) + { + nextChar = errorMessageContainer->readCharWithLineNumberCount( inputStream ); + break; + } + else if ( nextChar == QChar( ',' ) ) + { + nextChar = errorMessageContainer->readCharWithLineNumberCount( inputStream ); + errorMessageContainer->skipWhiteSpaceWithLineNumberCount( inputStream ); + } + + T* value; + PdmFieldScriptabilityIOHandler::writeToField( value, allObjectsOfType, inputStream, errorMessageContainer ); + fieldValue.push_back( value ); + } + } + else + { + errorMessageContainer->addError( "Array argument is missing start '['. " + + errorMessageContainer->currentArgument + "\" argument of the command: \"" + + errorMessageContainer->currentCommand + "\"" ); + } + } + + static void readFromField( const std::vector& fieldValue, + QTextStream& outputStream, + bool quoteStrings = true, + bool quoteNonBuiltins = false ) + { + outputStream << "["; + for ( size_t i = 0; i < fieldValue.size(); ++i ) + { + PdmFieldScriptabilityIOHandler::readFromField( fieldValue[i], outputStream, quoteNonBuiltins ); + if ( i < fieldValue.size() - 1 ) + { + outputStream << ", "; + } + } + outputStream << "]"; + } +}; + +template +struct PdmFieldScriptabilityIOHandler +{ + static void writeToField( DataType*& fieldValue, + const std::vector& allObjectsOfType, + QTextStream& inputStream, + PdmScriptIOMessages* errorMessageContainer ) + { + QString fieldString; + PdmFieldScriptabilityIOHandler::writeToField( fieldString, inputStream, errorMessageContainer, true ); + + if ( inputStream.status() == QTextStream::ReadCorruptData ) + { + errorMessageContainer->addError( "Argument value is unreadable in the argument: \"" + + errorMessageContainer->currentArgument + "\" in the command: \"" + + errorMessageContainer->currentCommand + "\"" ); + + inputStream.setStatus( QTextStream::Ok ); + return; + } + + QStringList classAndAddress = fieldString.split( ":" ); + CAF_ASSERT( classAndAddress.size() == 2 ); + + qulonglong address = classAndAddress[1].toULongLong(); + fieldValue = nullptr; + for ( DataType* object : allObjectsOfType ) + { + if ( reinterpret_cast( object ) == address ) + { + fieldValue = object; + break; + } + } + } + + static void readFromField( const DataType* fieldValue, + QTextStream& outputStream, + bool quoteStrings = true, + bool quoteNonBuiltins = false ) + { + outputStream + << QString( "%1:%2" ).arg( DataType::classKeywordStatic() ).arg( reinterpret_cast( fieldValue ) ); + } +}; + +//================================================================================================== +// +// +// +//================================================================================================== +template +class PdmFieldIOScriptability : public PdmFieldScriptability +{ +public: + PdmFieldIOScriptability( FieldType* field, const QString& fieldName, bool giveOwnership ) + : PdmFieldScriptability( field, fieldName, giveOwnership ) + { + m_field = field; + } + + // Xml Serializing +public: + void writeToField( QTextStream& inputStream, + PdmObjectFactory* objectFactory, + PdmScriptIOMessages* errorMessageContainer, + bool stringsAreQuoted = true, + caf::PdmObjectHandle* existingObjectsRoot = nullptr ) override + { + typename FieldType::FieldDataType value; + PdmFieldScriptabilityIOHandler::writeToField( value, + inputStream, + errorMessageContainer, + stringsAreQuoted ); + + if ( this->isIOWriteable() ) + { + m_field->setValue( value ); + } + } + + void readFromField( QTextStream& outputStream, bool quoteStrings = true, bool quoteNonBuiltins = false ) const override + { + PdmFieldScriptabilityIOHandler::readFromField( m_field->value(), + outputStream, + quoteStrings, + quoteNonBuiltins ); + } + +private: + FieldType* m_field; +}; + +template +class PdmFieldIOScriptability> : public PdmFieldScriptability +{ +public: + PdmFieldIOScriptability( PdmPtrField* field, const QString& fieldName, bool giveOwnership ) + : PdmFieldScriptability( field, fieldName, giveOwnership ) + { + m_field = field; + } + + // Xml Serializing +public: + void writeToField( QTextStream& inputStream, + PdmObjectFactory* objectFactory, + PdmScriptIOMessages* errorMessageContainer, + bool stringsAreQuoted = true, + caf::PdmObjectHandle* existingObjectsRoot = nullptr ) override + { + std::vector allObjectsOfType; + existingObjectsRoot->descendantsIncludingThisOfType( allObjectsOfType ); + + DataType* object; + PdmFieldScriptabilityIOHandler>::writeToField( object, + allObjectsOfType, + inputStream, + errorMessageContainer ); + + if ( this->isIOWriteable() ) + { + m_field->setValue( object ); + } + } + + void readFromField( QTextStream& outputStream, bool quoteStrings = true, bool quoteNonBuiltins = false ) const override + { + PdmFieldScriptabilityIOHandler::readFromField( m_field->value(), + outputStream, + quoteStrings, + quoteNonBuiltins ); + } + +private: + PdmPtrField* m_field; +}; + +template +class PdmFieldIOScriptability> : public PdmFieldScriptability +{ +public: + PdmFieldIOScriptability( PdmPtrArrayField* field, const QString& fieldName, bool giveOwnership ) + : PdmFieldScriptability( field, fieldName, giveOwnership ) + { + m_field = field; + } + + // Xml Serializing +public: + void writeToField( QTextStream& inputStream, + PdmObjectFactory* objectFactory, + PdmScriptIOMessages* errorMessageContainer, + bool stringsAreQuoted = true, + caf::PdmObjectHandle* existingObjectsRoot = nullptr ) override + { + std::vector allObjectsOfType; + existingObjectsRoot->descendantsIncludingThisOfType( allObjectsOfType ); + + std::vector objects; + PdmFieldScriptabilityIOHandler>::writeToField( objects, + allObjectsOfType, + inputStream, + errorMessageContainer ); + + if ( this->isIOWriteable() ) + { + m_field->setValue( objects ); + } + } + + void readFromField( QTextStream& outputStream, bool quoteStrings = true, bool quoteNonBuiltins = false ) const override + { + PdmFieldScriptabilityIOHandler>::readFromField( m_field->ptrReferencedObjects(), + outputStream, + quoteStrings, + quoteNonBuiltins ); + } + +private: + PdmPtrArrayField* m_field; +}; + +template +void AddFieldIOScriptabilityToField( FieldType* field, const QString& fieldName ) +{ + if ( field->template capability>() == nullptr ) + { + new PdmFieldIOScriptability( field, fieldName, true ); + } +} + +} // namespace caf diff --git a/Fwk/AppFwk/cafPdmScripting/cafPdmFieldScriptability.cpp b/Fwk/AppFwk/cafPdmScripting/cafPdmFieldScriptability.cpp index 23b705acaa..1f497ba364 100644 --- a/Fwk/AppFwk/cafPdmScripting/cafPdmFieldScriptability.cpp +++ b/Fwk/AppFwk/cafPdmScripting/cafPdmFieldScriptability.cpp @@ -36,19 +36,19 @@ #include "cafPdmFieldScriptability.h" #include "cafPdmFieldHandle.h" +#include "cafPdmPythonGenerator.h" using namespace caf; //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -PdmFieldScriptability::PdmFieldScriptability(caf::PdmFieldHandle* owner, const QString& scriptFieldName, bool giveOwnership) +PdmFieldScriptability::PdmFieldScriptability( caf::PdmFieldHandle* owner, const QString& scriptFieldName, bool giveOwnership ) { - m_IOWriteable = true; - m_owner = owner; + m_IOWriteable = true; + m_owner = owner; m_scriptFieldName = scriptFieldName; - owner->addCapability(this, giveOwnership); - + owner->addCapability( this, giveOwnership ); } //-------------------------------------------------------------------------------------------------- @@ -56,7 +56,6 @@ PdmFieldScriptability::PdmFieldScriptability(caf::PdmFieldHandle* owner, const Q //-------------------------------------------------------------------------------------------------- PdmFieldScriptability::~PdmFieldScriptability() { - } //-------------------------------------------------------------------------------------------------- @@ -78,7 +77,7 @@ bool PdmFieldScriptability::isIOWriteable() const //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void PdmFieldScriptability::setIOWriteable(bool writeable) +void PdmFieldScriptability::setIOWriteable( bool writeable ) { m_IOWriteable = writeable; } @@ -86,26 +85,43 @@ void PdmFieldScriptability::setIOWriteable(bool writeable) //-------------------------------------------------------------------------------------------------- /// Empty default implementation that doesn't offer any script IO for the field //-------------------------------------------------------------------------------------------------- -void PdmFieldScriptability::readFromField(QTextStream& outputStream, bool quoteStrings /*= true*/, bool quoteNonBuiltins /*= false*/) const +void PdmFieldScriptability::readFromField( QTextStream& outputStream, + bool quoteStrings /*= true*/, + bool quoteNonBuiltins /*= false*/ ) const { - } //-------------------------------------------------------------------------------------------------- /// Empty default implementation that doesn't offer any script IO for the field //-------------------------------------------------------------------------------------------------- -void PdmFieldScriptability::writeToField(QTextStream& inputStream, caf::PdmObjectFactory* objectFactory, caf::PdmScriptIOMessages* errorMessageContainer, bool stringsAreQuoted /*= true*/) +void PdmFieldScriptability::writeToField( QTextStream& inputStream, + caf::PdmObjectFactory* objectFactory, + caf::PdmScriptIOMessages* errorMessageContainer, + bool stringsAreQuoted /*= true*/, + caf::PdmObjectHandle* existingObjectsRoot /*= nullptr*/ ) { - } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void PdmFieldScriptability::addToField(caf::PdmFieldHandle* field, const QString& fieldName) +void PdmFieldScriptability::addToField( caf::PdmFieldHandle* field, const QString& fieldName ) { - if (field->template capability() == nullptr) + if ( field->template capability() == nullptr ) { - new PdmFieldScriptability(field, fieldName, true); + new PdmFieldScriptability( field, fieldName, true ); } } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +QString PdmFieldScriptability::helpString( const QString& existingTooltip, const QString& keyword ) +{ + QString snake_case = caf::PdmPythonGenerator::camelToSnakeCase( keyword ); + + QString helpString = QString( "Available through python/rips as the attribute '%1'" ).arg( snake_case ); + + if ( !existingTooltip.isEmpty() ) return existingTooltip + "\n\n" + helpString; + return helpString; +} diff --git a/Fwk/AppFwk/cafPdmScripting/cafPdmFieldScriptability.h b/Fwk/AppFwk/cafPdmScripting/cafPdmFieldScriptability.h index 4d9a9daf0b..5511f2395e 100644 --- a/Fwk/AppFwk/cafPdmScripting/cafPdmFieldScriptability.h +++ b/Fwk/AppFwk/cafPdmScripting/cafPdmFieldScriptability.h @@ -35,79 +35,81 @@ //################################################################################################## #pragma once -#include #include "cafPdmFieldCapability.h" +#include class QTextStream; -namespace caf { - +namespace caf +{ class PdmFieldHandle; class PdmObjectFactory; +class PdmObjectHandle; class PdmScriptIOMessages; #define CAF_PDM_InitScriptableField( field, keyword, default, uiName, iconResourceName, toolTip, whatsThis ) \ - CAF_PDM_InitField( field, \ - keyword, \ - default, \ - uiName, \ - iconResourceName, \ - caf::PdmPythonGenerator::pythonHelpString( toolTip, keyword ), \ - whatsThis ); \ + CAF_PDM_InitField( field, \ + keyword, \ + default, \ + uiName, \ + iconResourceName, \ + caf::PdmFieldScriptability::helpString( toolTip, keyword ), \ + whatsThis ); \ caf::PdmFieldScriptability::addToField( field, keyword ) #define CAF_PDM_InitScriptableFieldNoDefault( field, keyword, uiName, iconResourceName, toolTip, whatsThis ) \ - CAF_PDM_InitFieldNoDefault( field, \ - keyword, \ - uiName, \ - iconResourceName, \ - caf::PdmPythonGenerator::pythonHelpString( toolTip, keyword ), \ - whatsThis ); \ + CAF_PDM_InitFieldNoDefault( field, \ + keyword, \ + uiName, \ + iconResourceName, \ + caf::PdmFieldScriptability::helpString( toolTip, keyword ), \ + whatsThis ); \ caf::PdmFieldScriptability::addToField( field, keyword ) #define CAF_PDM_InitScriptableFieldWithKeyword( field, keyword, scriptKeyword, default, uiName, iconResourceName, toolTip, whatsThis ) \ - CAF_PDM_InitField( field, \ - keyword, \ - default, \ - uiName, \ - iconResourceName, \ - caf::PdmPythonGenerator::pythonHelpString( toolTip, scriptKeyword ), \ - whatsThis ); \ + CAF_PDM_InitField( field, \ + keyword, \ + default, \ + uiName, \ + iconResourceName, \ + caf::PdmFieldScriptability::helpString( toolTip, scriptKeyword ), \ + whatsThis ); \ caf::PdmFieldScriptability::addToField( field, scriptKeyword ) #define CAF_PDM_InitScriptableFieldWithKeywordNoDefault( field, keyword, scriptKeyword, uiName, iconResourceName, toolTip, whatsThis ) \ - CAF_PDM_InitFieldNoDefault( field, \ - keyword, \ - uiName, \ - iconResourceName, \ - caf::PdmPythonGenerator::pythonHelpString( toolTip, scriptKeyword ), \ - whatsThis ); \ + CAF_PDM_InitFieldNoDefault( field, \ + keyword, \ + uiName, \ + iconResourceName, \ + caf::PdmFieldScriptability::helpString( toolTip, scriptKeyword ), \ + whatsThis ); \ caf::PdmFieldScriptability::addToField( field, scriptKeyword ) class PdmFieldScriptability : public PdmFieldCapability { public: - PdmFieldScriptability(caf::PdmFieldHandle* owner, const QString& scriptFieldName, bool giveOwnership); + PdmFieldScriptability( caf::PdmFieldHandle* owner, const QString& scriptFieldName, bool giveOwnership ); virtual ~PdmFieldScriptability(); const QString scriptFieldName() const; bool isIOWriteable() const; - void setIOWriteable(bool writeable); + void setIOWriteable( bool writeable ); - virtual void readFromField(QTextStream& outputStream, bool quoteStrings = true, bool quoteNonBuiltins = false) const; - virtual void writeToField(QTextStream& inputStream, - caf::PdmObjectFactory* objectFactory, - caf::PdmScriptIOMessages* errorMessageContainer, - bool stringsAreQuoted = true); + virtual void readFromField( QTextStream& outputStream, bool quoteStrings = true, bool quoteNonBuiltins = false ) const; + virtual void writeToField( QTextStream& inputStream, + caf::PdmObjectFactory* objectFactory, + caf::PdmScriptIOMessages* errorMessageContainer, + bool stringsAreQuoted = true, + caf::PdmObjectHandle* existingObjectsRoot = nullptr ); - static void addToField(caf::PdmFieldHandle* field, const QString& fieldName); -private: - caf::PdmFieldHandle* m_owner; - QString m_scriptFieldName; - bool m_IOWriteable; + static void addToField( caf::PdmFieldHandle* field, const QString& fieldName ); + static QString helpString( const QString& existingTooltip, const QString& keyword ); + +protected: + PdmFieldHandle* m_owner; + QString m_scriptFieldName; + bool m_IOWriteable; }; - -} - +} // namespace caf diff --git a/Fwk/AppFwk/cafPdmScripting/cafPdmObjectMethod.cpp b/Fwk/AppFwk/cafPdmScripting/cafPdmObjectMethod.cpp new file mode 100644 index 0000000000..508bba4dae --- /dev/null +++ b/Fwk/AppFwk/cafPdmScripting/cafPdmObjectMethod.cpp @@ -0,0 +1,95 @@ +//################################################################################################## +// +// Custom Visualization Core library +// Copyright (C) Ceetron Solutions AS +// +// This library may be used under the terms of either the GNU General Public License or +// the GNU Lesser General Public License as follows: +// +// GNU General Public License Usage +// This library 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. +// +// This library 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. +// +// GNU Lesser General Public License Usage +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation; either version 2.1 of the License, or +// (at your option) any later version. +// +// This library 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 Lesser General Public License at <> +// for more details. +// +//################################################################################################## +#include "cafPdmObjectMethod.h" + +using namespace caf; + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +PdmObjectMethodFactory* PdmObjectMethodFactory::instance() +{ + static PdmObjectMethodFactory* factory = new PdmObjectMethodFactory; + return factory; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +std::shared_ptr PdmObjectMethodFactory::createMethod( PdmObjectHandle* self, const QString& methodName ) +{ + QString className = self->xmlCapability()->classKeyword(); + auto classIt = m_factoryMap.find( className ); + if ( classIt != m_factoryMap.end() ) + { + auto methodIt = classIt->second.find( methodName ); + if ( methodIt != classIt->second.end() ) + { + return methodIt->second->create( self ); + } + } + return std::shared_ptr(); +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +std::vector PdmObjectMethodFactory::registeredMethodNames( const PdmObjectHandle* self ) const +{ + std::vector methods; + + QString className = self->xmlCapability()->classKeyword(); + auto classIt = m_factoryMap.find( className ); + if ( classIt != m_factoryMap.end() ) + { + for ( auto methodPair : classIt->second ) + { + methods.push_back( methodPair.first ); + } + } + + return methods; +} + +CAF_PDM_XML_ABSTRACT_SOURCE_INIT( PdmObjectMethod, "PdmObjectMethod" ); + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +PdmObjectMethod::PdmObjectMethod( PdmObjectHandle* self ) + : m_self( self ) +{ +} diff --git a/Fwk/AppFwk/cafPdmScripting/cafPdmObjectMethod.h b/Fwk/AppFwk/cafPdmScripting/cafPdmObjectMethod.h new file mode 100644 index 0000000000..842d5a1b7c --- /dev/null +++ b/Fwk/AppFwk/cafPdmScripting/cafPdmObjectMethod.h @@ -0,0 +1,151 @@ +//################################################################################################## +// +// Custom Visualization Core library +// Copyright (C) Ceetron Solutions AS +// +// This library may be used under the terms of either the GNU General Public License or +// the GNU Lesser General Public License as follows: +// +// GNU General Public License Usage +// This library 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. +// +// This library 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. +// +// GNU Lesser General Public License Usage +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation; either version 2.1 of the License, or +// (at your option) any later version. +// +// This library 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 Lesser General Public License at <> +// for more details. +// +//################################################################################################## +#pragma once + +#include "cafAssert.h" +#include "cafPdmObject.h" +#include "cafPdmObjectFactory.h" +#include "cafPdmPointer.h" +#include "cafPdmScriptResponse.h" + +/// CAF_PDM_OBJECT_METHOD_SOURCE_INIT associates the self class keyword and the method keyword with the method factory +/// Place this in the cpp file, preferably above the constructor +#define CAF_PDM_OBJECT_METHOD_SOURCE_INIT( SelfClassName, MethodClassName, methodKeyword ) \ + CAF_PDM_XML_ABSTRACT_SOURCE_INIT( MethodClassName, methodKeyword ) \ + static bool PDM_OBJECT_STRING_CONCATENATE( method##MethodClassName, __LINE__ ) = \ + caf::PdmObjectMethodFactory::instance()->registerMethod() + +namespace caf +{ +//================================================================================================== +/// PdmObject script method +/// Sub-class and register to the PdmObject +/// Store arguments as member fields and set a return values in the return value for execute +//================================================================================================== +class PdmObjectMethod : public PdmObject +{ + CAF_PDM_HEADER_INIT; + +public: + PdmObjectMethod( PdmObjectHandle* self ); + // The returned object contains the results of the method and is the responsibility of the caller. + virtual PdmObjectHandle* execute() = 0; + virtual QString selfClassKeyword() const { return m_self->xmlCapability()->classKeyword(); } + + // False if object is a persistent project tree item. True if the object is to be deleted on completion. + virtual bool deleteObjectAfterReply() const = 0; + +protected: + // Basically the "this" pointer to the object the method belongs to + template + PdmObjectType* self() + { + PdmObjectType* object = dynamic_cast( m_self.p() ); + CAF_ASSERT( object ); + return object; + } + +private: + friend class PdmObjectScriptability; + PdmPointer m_self; +}; + +//================================================================================================== +/// PdmObject script method factory +/// Register methods with this factory to be able to create and call methods. +//================================================================================================== +class PdmObjectMethodFactory +{ +public: + static PdmObjectMethodFactory* instance(); + + std::shared_ptr createMethod( PdmObjectHandle* self, const QString& methodName ); + + template + bool registerMethod() + { + QString className = PdmObjectDerivative::classKeywordStatic(); + QString methodName = PdmObjectScriptMethodDerivative::classKeywordStatic(); + + auto classEntryIt = m_factoryMap.find( className ); + if ( classEntryIt != m_factoryMap.end() ) + { + auto methodEntryIt = classEntryIt->second.find( methodName ); + if ( methodEntryIt != classEntryIt->second.end() ) + { + CAF_ASSERT( methodName != methodEntryIt->first ); // classNameKeyword has already been used + CAF_ASSERT( false ); // To be sure .. + return false; // never hit; + } + } + m_factoryMap[className][methodName] = + std::shared_ptr( new PdmObjectMethodCreator() ); + return true; + } + + std::vector registeredMethodNames( const PdmObjectHandle* self ) const; + +private: + PdmObjectMethodFactory() = default; + ~PdmObjectMethodFactory() = default; + + // Internal helper classes + class PdmObjectMethodCreatorBase + { + public: + PdmObjectMethodCreatorBase() {} + virtual ~PdmObjectMethodCreatorBase() {} + virtual std::shared_ptr create( PdmObjectHandle* self ) = 0; + }; + + template + class PdmObjectMethodCreator : public PdmObjectMethodCreatorBase + { + public: + std::shared_ptr create( PdmObjectHandle* self ) override + { + return std::shared_ptr( new PdmObjectScriptMethodDerivative( self ) ); + } + }; + +private: + // Map to store factory + std::map>> m_factoryMap; + // Self pointer + +}; // namespace caf + +} // namespace caf diff --git a/ApplicationCode/CommandFileInterface/Core/RicfObjectCapability.cpp b/Fwk/AppFwk/cafPdmScripting/cafPdmObjectScriptability.cpp similarity index 68% rename from ApplicationCode/CommandFileInterface/Core/RicfObjectCapability.cpp rename to Fwk/AppFwk/cafPdmScripting/cafPdmObjectScriptability.cpp index 205fae53c5..c00726899e 100644 --- a/ApplicationCode/CommandFileInterface/Core/RicfObjectCapability.cpp +++ b/Fwk/AppFwk/cafPdmScripting/cafPdmObjectScriptability.cpp @@ -1,24 +1,41 @@ -///////////////////////////////////////////////////////////////////////////////// +//################################################################################################## // -// Copyright (C) 2017 Statoil ASA +// Custom Visualization Core library +// Copyright (C) Ceetron Solutions 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. +// This library may be used under the terms of either the GNU General Public License or +// the GNU Lesser General Public License as follows: // -// 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. +// GNU General Public License Usage +// This library 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. // -// See the GNU General Public License at -// for more details. +// This library 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. // -///////////////////////////////////////////////////////////////////////////////// - -#include "RicfObjectCapability.h" -#include "RicfFieldHandle.h" +// See the GNU General Public License at <> +// for more details. +// +// GNU Lesser General Public License Usage +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation; either version 2.1 of the License, or +// (at your option) any later version. +// +// This library 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 Lesser General Public License at <> +// for more details. +// +//################################################################################################## +#include "cafPdmObjectScriptability.h" +#include "cafPdmFieldScriptability.h" #include "cafPdmObject.h" #include "cafPdmObjectHandle.h" #include "cafPdmScriptIOMessages.h" @@ -26,10 +43,12 @@ #include +using namespace caf; + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfObjectCapability::RicfObjectCapability( caf::PdmObjectHandle* owner, bool giveOwnership ) +PdmObjectScriptability::PdmObjectScriptability( PdmObjectHandle* owner, bool giveOwnership ) : m_owner( owner ) { m_owner->addCapability( this, giveOwnership ); @@ -38,16 +57,16 @@ RicfObjectCapability::RicfObjectCapability( caf::PdmObjectHandle* owner, bool gi //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfObjectCapability::~RicfObjectCapability() +PdmObjectScriptability::~PdmObjectScriptability() { } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RicfObjectCapability::readFields( QTextStream& inputStream, - caf::PdmObjectFactory* objectFactory, - caf::PdmScriptIOMessages* errorMessageContainer ) +void PdmObjectScriptability::readFields( QTextStream& inputStream, + PdmObjectFactory* objectFactory, + PdmScriptIOMessages* errorMessageContainer ) { std::set readFields; bool isLastArgumentRead = false; @@ -127,16 +146,16 @@ void RicfObjectCapability::readFields( QTextStream& inputStream, { // Make field read its data - caf::PdmFieldHandle* fieldHandle = m_owner->findField( keyword ); - if ( fieldHandle && fieldHandle->xmlCapability() && fieldHandle->capability() ) + PdmFieldHandle* fieldHandle = m_owner->findField( keyword ); + if ( fieldHandle && fieldHandle->xmlCapability() && fieldHandle->capability() ) { - caf::PdmXmlFieldHandle* xmlFieldHandle = fieldHandle->xmlCapability(); - RicfFieldHandle* rcfField = fieldHandle->capability(); + PdmXmlFieldHandle* xmlFieldHandle = fieldHandle->xmlCapability(); + PdmFieldScriptability* scriptability = fieldHandle->capability(); if ( xmlFieldHandle->isIOReadable() ) { errorMessageContainer->currentArgument = keyword; - rcfField->writeToField( inputStream, objectFactory, errorMessageContainer ); + scriptability->writeToField( inputStream, objectFactory, errorMessageContainer ); errorMessageContainer->currentArgument = keyword; } } @@ -193,19 +212,19 @@ void RicfObjectCapability::readFields( QTextStream& inputStream, //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RicfObjectCapability::writeFields( QTextStream& outputStream ) const +void PdmObjectScriptability::writeFields( QTextStream& outputStream ) const { - std::vector fields; + std::vector fields; m_owner->fields( fields ); int writtenFieldCount = 0; for ( size_t it = 0; it < fields.size(); ++it ) { - const caf::PdmXmlFieldHandle* xmlField = fields[it]->xmlCapability(); - const RicfFieldHandle* rcfField = fields[it]->capability(); - if ( rcfField && xmlField && xmlField->isIOWritable() ) + const PdmXmlFieldHandle* xmlField = fields[it]->xmlCapability(); + const PdmFieldScriptability* scriptability = fields[it]->capability(); + if ( scriptability && xmlField && xmlField->isIOWritable() ) { QString keyword = xmlField->fieldHandle()->keyword(); - CAF_ASSERT( caf::PdmXmlObjectHandle::isValidXmlElementName( keyword ) ); + CAF_ASSERT( PdmXmlObjectHandle::isValidXmlElementName( keyword ) ); if ( writtenFieldCount >= 1 ) { @@ -213,7 +232,7 @@ void RicfObjectCapability::writeFields( QTextStream& outputStream ) const } outputStream << keyword << " = "; - rcfField->readFromField( outputStream ); + scriptability->readFromField( outputStream ); writtenFieldCount++; } diff --git a/Fwk/AppFwk/cafPdmScripting/cafPdmObjectScriptability.h b/Fwk/AppFwk/cafPdmScripting/cafPdmObjectScriptability.h new file mode 100644 index 0000000000..5e652ae990 --- /dev/null +++ b/Fwk/AppFwk/cafPdmScripting/cafPdmObjectScriptability.h @@ -0,0 +1,84 @@ +//################################################################################################## +// +// Custom Visualization Core library +// Copyright (C) Ceetron Solutions AS +// +// This library may be used under the terms of either the GNU General Public License or +// the GNU Lesser General Public License as follows: +// +// GNU General Public License Usage +// This library 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. +// +// This library 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. +// +// GNU Lesser General Public License Usage +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation; either version 2.1 of the License, or +// (at your option) any later version. +// +// This library 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 Lesser General Public License at <> +// for more details. +// +//################################################################################################## +#pragma once + +#include "cafPdmChildArrayField.h" +#include "cafPdmObjectCapability.h" +#include "cafPdmObjectMethod.h" +#include "cafPdmObjectScriptabilityRegister.h" + +#include + +#include +#include +#include + +class QTextStream; + +#define CAF_PDM_InitScriptableObject( uiName, iconResourceName, toolTip, whatsThis ) \ + CAF_PDM_InitObject( uiName, iconResourceName, toolTip, whatsThis ); \ + caf::PdmObjectScriptabilityRegister::registerScriptClassNameAndComment( classKeyword(), classKeyword(), whatsThis ); + +#define CAF_PDM_InitScriptableObjectWithNameAndComment( uiName, iconResourceName, toolTip, whatsThis, scriptClassName, scriptComment ) \ + CAF_PDM_InitObject( uiName, iconResourceName, toolTip, whatsThis ); \ + caf::PdmObjectScriptabilityRegister::registerScriptClassNameAndComment( classKeyword(), scriptClassName, scriptComment ); + +namespace caf +{ +class PdmObject; +class PdmObjectHandle; +class PdmObjectFactory; +class PdmScriptIOMessages; + +//================================================================================================== +// +// +// +//================================================================================================== +class PdmObjectScriptability : public PdmObjectCapability +{ +public: + PdmObjectScriptability( PdmObjectHandle* owner, bool giveOwnership ); + + ~PdmObjectScriptability() override; + + void readFields( QTextStream& inputStream, PdmObjectFactory* objectFactory, PdmScriptIOMessages* errorMessageContainer ); + void writeFields( QTextStream& outputStream ) const; + +private: + PdmObjectHandle* m_owner; +}; +} // namespace caf diff --git a/Fwk/AppFwk/cafPdmScripting/cafPdmObjectScriptabilityRegister.h b/Fwk/AppFwk/cafPdmScripting/cafPdmObjectScriptabilityRegister.h index 3d2ae96e20..56c0e08e69 100644 --- a/Fwk/AppFwk/cafPdmScripting/cafPdmObjectScriptabilityRegister.h +++ b/Fwk/AppFwk/cafPdmScripting/cafPdmObjectScriptabilityRegister.h @@ -39,16 +39,8 @@ #include - -#define CAF_PDM_InitScriptableObject( uiName, iconResourceName, toolTip, whatsThis ) \ - CAF_PDM_InitObject( uiName, iconResourceName, toolTip, whatsThis ); \ - caf::PdmObjectScriptabilityRegister::registerScriptClassNameAndComment( classKeyword(), classKeyword(), whatsThis ); - -#define CAF_PDM_InitScriptableObjectWithNameAndComment( uiName, iconResourceName, toolTip, whatsThis, scriptClassName, scriptComment ) \ - CAF_PDM_InitObject( uiName, iconResourceName, toolTip, whatsThis ); \ - caf::PdmObjectScriptabilityRegister::registerScriptClassNameAndComment( classKeyword(), scriptClassName, scriptComment ); - -namespace caf { +namespace caf +{ class PdmObject; //================================================================================================== @@ -57,14 +49,14 @@ class PdmObject; class PdmObjectScriptabilityRegister { public: - static void registerScriptClassNameAndComment(const QString& classKeyword, - const QString& scriptClassName, - const QString& scriptClassComment); - static QString scriptClassNameFromClassKeyword(const QString& classKeyword); - static QString classKeywordFromScriptClassName(const QString& scriptClassName); - static QString scriptClassComment(const QString& classKeyword); + static void registerScriptClassNameAndComment( const QString& classKeyword, + const QString& scriptClassName, + const QString& scriptClassComment ); + static QString scriptClassNameFromClassKeyword( const QString& classKeyword ); + static QString classKeywordFromScriptClassName( const QString& scriptClassName ); + static QString scriptClassComment( const QString& classKeyword ); - static bool isScriptable(const caf::PdmObject* object); + static bool isScriptable( const caf::PdmObject* object ); private: static std::map s_classKeywordToScriptClassName; @@ -72,4 +64,4 @@ private: static std::map s_scriptClassComments; }; -} \ No newline at end of file +} // namespace caf diff --git a/Fwk/AppFwk/cafPdmScripting/cafPdmPythonGenerator.cpp b/Fwk/AppFwk/cafPdmScripting/cafPdmPythonGenerator.cpp index 5b4e7e6253..d2c4f50f3f 100644 --- a/Fwk/AppFwk/cafPdmScripting/cafPdmPythonGenerator.cpp +++ b/Fwk/AppFwk/cafPdmScripting/cafPdmPythonGenerator.cpp @@ -40,6 +40,7 @@ #include "cafPdmFieldScriptability.h" #include "cafPdmObject.h" #include "cafPdmObjectFactory.h" +#include "cafPdmObjectMethod.h" #include "cafPdmObjectScriptabilityRegister.h" #include "cafPdmProxyValueField.h" #include "cafPdmXmlFieldHandle.h" @@ -53,186 +54,231 @@ using namespace caf; -CAF_PDM_CODE_GENERATOR_SOURCE_INIT(PdmPythonGenerator, "py"); +CAF_PDM_CODE_GENERATOR_SOURCE_INIT( PdmPythonGenerator, "py" ); //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -QString PdmPythonGenerator::generate(PdmObjectFactory* factory) const +QString PdmPythonGenerator::generate( PdmObjectFactory* factory ) const { QString generatedCode; - QTextStream out(&generatedCode); + QTextStream out( &generatedCode ); std::vector classKeywords = factory->classKeywords(); - std::vector> dummyObjects; - for (QString classKeyword : classKeywords) + std::vector> dummyObjects; + for ( QString classKeyword : classKeywords ) { - auto objectHandle = factory->create(classKeyword); - const PdmObject* object = dynamic_cast(objectHandle); - CAF_ASSERT(object); + auto objectHandle = factory->create( classKeyword ); + PdmObject* object = dynamic_cast( objectHandle ); + CAF_ASSERT( object ); - std::shared_ptr sharedObject(object); - if (PdmObjectScriptabilityRegister::isScriptable(sharedObject.get())) + std::shared_ptr sharedObject( object ); + if ( PdmObjectScriptabilityRegister::isScriptable( sharedObject.get() ) ) { - dummyObjects.push_back(sharedObject); + dummyObjects.push_back( sharedObject ); } } // Sort to make sure super classes get created before sub classes - std::sort(dummyObjects.begin(), - dummyObjects.end(), - [](std::shared_ptr lhs, std::shared_ptr rhs) { - if (lhs->inheritsClassWithKeyword(rhs->classKeyword())) - { - return false; - } - return lhs->classKeyword() < rhs->classKeyword(); - }); + std::sort( dummyObjects.begin(), dummyObjects.end(), []( std::shared_ptr lhs, std::shared_ptr rhs ) { + if ( lhs->inheritsClassWithKeyword( rhs->classKeyword() ) ) + { + return false; + } + return lhs->classKeyword() < rhs->classKeyword(); + } ); std::map>> classAttributesGenerated; std::map> classMethodsGenerated; std::map classCommentsGenerated; // First generate all attributes and comments to go into each object - for (std::shared_ptr object : dummyObjects) + for ( std::shared_ptr object : dummyObjects ) { const std::list& classInheritanceStack = object->classInheritanceStack(); - for (auto it = classInheritanceStack.begin(); it != classInheritanceStack.end(); ++it) + for ( auto it = classInheritanceStack.begin(); it != classInheritanceStack.end(); ++it ) { - const QString& classKeyword = *it; - QString scriptClassComment = PdmObjectScriptabilityRegister::scriptClassComment(classKeyword); + const QString& classKeyword = *it; + QString scriptClassComment = PdmObjectScriptabilityRegister::scriptClassComment( classKeyword ); std::map attributesGenerated; - if (!scriptClassComment.isEmpty()) classCommentsGenerated[classKeyword] = scriptClassComment; + if ( !scriptClassComment.isEmpty() ) classCommentsGenerated[classKeyword] = scriptClassComment; - if (classKeyword == object->classKeyword()) + if ( classKeyword == object->classKeyword() ) { std::vector fields; - object->fields(fields); - for (auto field : fields) + object->fields( fields ); + for ( auto field : fields ) { - auto scriptability = field->template capability(); - if (scriptability != nullptr) + auto scriptability = field->template capability(); + if ( scriptability != nullptr ) { - QString snake_field_name = camelToSnakeCase(scriptability->scriptFieldName()); + QString snake_field_name = camelToSnakeCase( scriptability->scriptFieldName() ); QString comment; { QStringList commentComponents; commentComponents << field->capability()->uiName(); commentComponents << field->capability()->uiWhatsThis(); - commentComponents.removeAll(QString("")); - comment = commentComponents.join(". "); + commentComponents.removeAll( QString( "" ) ); + comment = commentComponents.join( ". " ); } - auto pdmValueField = dynamic_cast(field); - auto pdmChildField = dynamic_cast(field); - auto pdmChildArrayField = dynamic_cast(field); - if (pdmValueField) + auto pdmValueField = dynamic_cast( field ); + auto pdmChildField = dynamic_cast( field ); + auto pdmChildArrayField = dynamic_cast( field ); + if ( pdmValueField ) { - QString dataType = PdmPythonGenerator::dataTypeString(field, true); - if (field->xmlCapability()->isVectorField()) + QString dataType = PdmPythonGenerator::dataTypeString( field, true ); + if ( field->xmlCapability()->isVectorField() ) { - dataType = QString("List of %1").arg(dataType); + dataType = QString( "List of %1" ).arg( dataType ); } bool shouldBeMethod = false; - auto proxyField = dynamic_cast(field); - if (proxyField && proxyField->isStreamingField()) shouldBeMethod = true; + auto proxyField = dynamic_cast( field ); + if ( proxyField && proxyField->isStreamingField() ) shouldBeMethod = true; - if (classAttributesGenerated[field->ownerClass()].count(snake_field_name)) continue; - if (classMethodsGenerated[field->ownerClass()].count(snake_field_name)) continue; + if ( classAttributesGenerated[field->ownerClass()].count( snake_field_name ) ) continue; + if ( classMethodsGenerated[field->ownerClass()].count( snake_field_name ) ) continue; QVariant valueVariant = pdmValueField->toQVariant(); - if (shouldBeMethod) + if ( shouldBeMethod ) { - if (proxyField->hasGetter()) + if ( proxyField->hasGetter() ) { QString fullComment = - QString(" \"\"\"%1\n Returns:\n %2\n \"\"\"") - .arg(comment) - .arg(dataType); + QString( " \"\"\"%1\n Returns:\n %2\n \"\"\"" ) + .arg( comment ) + .arg( dataType ); - QString fieldCode = QString(" def %1(self):\n%2\n return " - "self._call_get_method(\"%3\")\n") - .arg(snake_field_name) - .arg(fullComment) - .arg(scriptability->scriptFieldName()); + QString fieldCode = QString( " def %1(self):\n%2\n return " + "self._call_get_method(\"%3\")\n" ) + .arg( snake_field_name ) + .arg( fullComment ) + .arg( scriptability->scriptFieldName() ); classMethodsGenerated[field->ownerClass()][snake_field_name] = fieldCode; } - if (proxyField->hasSetter()) + if ( proxyField->hasSetter() ) { - QString fullComment = QString(" \"\"\"Set %1\n Arguments:\n" - " values (%2): data\n \"\"\"") - .arg(comment) - .arg(dataType); + QString fullComment = QString( " \"\"\"Set %1\n Arguments:\n" + " values (%2): data\n \"\"\"" ) + .arg( comment ) + .arg( dataType ); - QString fieldCode = QString(" def set_%1(self, values):\n%2\n " - "self._call_set_method(\"%3\", values)\n") - .arg(snake_field_name) - .arg(fullComment) - .arg(scriptability->scriptFieldName()); - classMethodsGenerated[field->ownerClass()][QString("set_%1").arg(snake_field_name)] = + QString fieldCode = QString( " def set_%1(self, values):\n%2\n " + "self._call_set_method(\"%3\", values)\n" ) + .arg( snake_field_name ) + .arg( fullComment ) + .arg( scriptability->scriptFieldName() ); + classMethodsGenerated[field->ownerClass()][QString( "set_%1" ).arg( snake_field_name )] = fieldCode; } } else - { - QString valueString; - QTextStream valueStream(&valueString); - scriptability->readFromField(valueStream, true, true); - if (valueString.isEmpty()) - valueString = QString("\"\""); - valueString = pythonifyDataValue(valueString); + { + QString valueString; + QTextStream valueStream( &valueString ); + scriptability->readFromField( valueStream, true, true ); + if ( valueString.isEmpty() ) valueString = QString( "\"\"" ); + valueString = pythonifyDataValue( valueString ); + + QString fieldCode = + QString( " self.%1 = %2\n" ).arg( snake_field_name ).arg( valueString ); - QString fieldCode = QString(" self.%1 = %2\n").arg(snake_field_name).arg(valueString); - QString fullComment = - QString("%1 (%2): %3\n").arg(snake_field_name).arg(dataType).arg(comment); + QString( "%1 (%2): %3\n" ).arg( snake_field_name ).arg( dataType ).arg( comment ); - classAttributesGenerated[field->ownerClass()][snake_field_name].first = fieldCode; + classAttributesGenerated[field->ownerClass()][snake_field_name].first = fieldCode; classAttributesGenerated[field->ownerClass()][snake_field_name].second = fullComment; } } - else if (pdmChildField || pdmChildArrayField) + else if ( pdmChildField || pdmChildArrayField ) { - QString dataType = PdmPythonGenerator::dataTypeString(field, false); - QString scriptDataType = PdmObjectScriptabilityRegister::scriptClassNameFromClassKeyword(dataType); + QString dataType = PdmPythonGenerator::dataTypeString( field, false ); + QString scriptDataType = + PdmObjectScriptabilityRegister::scriptClassNameFromClassKeyword( dataType ); - QString commentDataType = field->xmlCapability()->isVectorField() ? - QString("List of %1").arg(scriptDataType) : scriptDataType; + QString commentDataType = field->xmlCapability()->isVectorField() + ? QString( "List of %1" ).arg( scriptDataType ) + : scriptDataType; QString fullComment = - QString(" \"\"\"%1\n Returns:\n %2\n \"\"\"") - .arg(comment) - .arg(commentDataType); + QString( " \"\"\"%1\n Returns:\n %2\n \"\"\"" ) + .arg( comment ) + .arg( commentDataType ); - if (pdmChildField) + if ( pdmChildField ) { - QString fieldCode = QString(" def %1(self):\n%2\n children = " - "self.children(\"%3\", %4)\n return children[0] if len(children) > 0 else None\n") - .arg(snake_field_name) - .arg(fullComment) - .arg(scriptability->scriptFieldName()) - .arg(scriptDataType); + QString fieldCode = QString( " def %1(self):\n%2\n children = " + "self.children(\"%3\", %4)\n return children[0] if " + "len(children) > 0 else None\n" ) + .arg( snake_field_name ) + .arg( fullComment ) + .arg( scriptability->scriptFieldName() ) + .arg( scriptDataType ); classMethodsGenerated[field->ownerClass()][snake_field_name] = fieldCode; } else { - QString fieldCode = QString(" def %1(self):\n%2\n return " - "self.children(\"%3\", %4)\n") - .arg(snake_field_name) - .arg(fullComment) - .arg(scriptability->scriptFieldName()) - .arg(scriptDataType); + QString fieldCode = QString( " def %1(self):\n%2\n return " + "self.children(\"%3\", %4)\n" ) + .arg( snake_field_name ) + .arg( fullComment ) + .arg( scriptability->scriptFieldName() ) + .arg( scriptDataType ); classMethodsGenerated[field->ownerClass()][snake_field_name] = fieldCode; } } } + + for ( QString methodName : PdmObjectMethodFactory::instance()->registeredMethodNames( object.get() ) ) + { + std::shared_ptr method = + PdmObjectMethodFactory::instance()->createMethod( object.get(), methodName ); + std::vector arguments; + method->fields( arguments ); + + QString methodComment = method->uiCapability()->uiWhatsThis(); + + QString snake_method_name = camelToSnakeCase( methodName ); + QStringList inputArgumentStrings; + QStringList outputArgumentStrings; + QStringList argumentComments; + + outputArgumentStrings.push_back( QString( "\"%1\"" ).arg( methodName ) ); + for ( auto field : arguments ) + { + bool isList = field->xmlCapability()->isVectorField(); + QString defaultValue = isList ? "[]" : "None"; + auto scriptability = field->capability(); + auto argumentName = camelToSnakeCase( scriptability->scriptFieldName() ); + auto dataType = dataTypeString( field, false ); + if ( isList ) dataType = "List of " + dataType; + inputArgumentStrings.push_back( QString( "%1=%2" ).arg( argumentName ).arg( defaultValue ) ); + outputArgumentStrings.push_back( QString( "%1=%1" ).arg( argumentName ) ); + argumentComments.push_back( QString( "%1 (%2): %3" ) + .arg( argumentName ) + .arg( dataType ) + .arg( field->uiCapability()->uiWhatsThis() ) ); + } + QString fullComment = + QString( " \"\"\"\n %1\n Arguments:\n %2\n \"\"\"" ) + .arg( methodComment ) + .arg( argumentComments.join( "\n " ) ); + + QString methodCode = QString( " def %1(self, %2):\n%3\n return " + "self._call_pdm_method(%4)\n" ) + .arg( snake_method_name ) + .arg( inputArgumentStrings.join( ", " ) ) + .arg( fullComment ) + .arg( outputArgumentStrings.join( ", " ) ); + classMethodsGenerated[field->ownerClass()][snake_method_name] = methodCode; + } } } } @@ -240,42 +286,42 @@ QString PdmPythonGenerator::generate(PdmObjectFactory* factory) const // Write out classes std::set classesWritten; - for (std::shared_ptr object : dummyObjects) + for ( std::shared_ptr object : dummyObjects ) { const std::list& classInheritanceStack = object->classInheritanceStack(); std::list scriptSuperClassNames; - for (auto it = classInheritanceStack.begin(); it != classInheritanceStack.end(); ++it) + for ( auto it = classInheritanceStack.begin(); it != classInheritanceStack.end(); ++it ) { const QString& classKeyword = *it; - QString scriptClassName = PdmObjectScriptabilityRegister::scriptClassNameFromClassKeyword(classKeyword); - if (scriptClassName.isEmpty()) scriptClassName = classKeyword; + QString scriptClassName = PdmObjectScriptabilityRegister::scriptClassNameFromClassKeyword( classKeyword ); + if ( scriptClassName.isEmpty() ) scriptClassName = classKeyword; - if (!classesWritten.count(scriptClassName)) + if ( !classesWritten.count( scriptClassName ) ) { QString classCode; - if (scriptSuperClassNames.empty()) + if ( scriptSuperClassNames.empty() ) { - classCode = QString("class %1:\n").arg(scriptClassName); + classCode = QString( "class %1:\n" ).arg( scriptClassName ); } else { - classCode = QString("class %1(%2):\n").arg(scriptClassName).arg(scriptSuperClassNames.back()); + classCode = QString( "class %1(%2):\n" ).arg( scriptClassName ).arg( scriptSuperClassNames.back() ); } - if (!classCommentsGenerated[classKeyword].isEmpty() || !classAttributesGenerated[classKeyword].empty()) + if ( !classCommentsGenerated[classKeyword].isEmpty() || !classAttributesGenerated[classKeyword].empty() ) { classCode += " \"\"\"\n"; - if (!classCommentsGenerated[classKeyword].isEmpty()) + if ( !classCommentsGenerated[classKeyword].isEmpty() ) { - if (!classCommentsGenerated[classKeyword].isEmpty()) + if ( !classCommentsGenerated[classKeyword].isEmpty() ) { - classCode += QString(" %1\n\n").arg(classCommentsGenerated[classKeyword]); + classCode += QString( " %1\n\n" ).arg( classCommentsGenerated[classKeyword] ); } } - if (!classAttributesGenerated[classKeyword].empty()) + if ( !classAttributesGenerated[classKeyword].empty() ) { classCode += " Attributes\n"; - for (auto keyWordValuePair : classAttributesGenerated[classKeyword]) + for ( auto keyWordValuePair : classAttributesGenerated[classKeyword] ) { classCode += " " + keyWordValuePair.second.second; } @@ -283,27 +329,27 @@ QString PdmPythonGenerator::generate(PdmObjectFactory* factory) const classCode += " \"\"\"\n"; } classCode += - QString(" __custom_init__ = None #: Assign a custom init routine to be run at __init__\n\n"); + QString( " __custom_init__ = None #: Assign a custom init routine to be run at __init__\n\n" ); - classCode += QString(" def __init__(self, pb2_object=None, channel=None):\n"); - if (!scriptSuperClassNames.empty()) + classCode += QString( " def __init__(self, pb2_object=None, channel=None):\n" ); + if ( !scriptSuperClassNames.empty() ) { // Own attributes. This initializes a lot of attributes to None. // This means it has to be done before we set any values. - for (auto keyWordValuePair : classAttributesGenerated[classKeyword]) + for ( auto keyWordValuePair : classAttributesGenerated[classKeyword] ) { classCode += keyWordValuePair.second.first; } // Parent constructor classCode += - QString(" %1.__init__(self, pb2_object, channel)\n").arg(scriptSuperClassNames.back()); + QString( " %1.__init__(self, pb2_object, channel)\n" ).arg( scriptSuperClassNames.back() ); } - classCode += QString(" if %1.__custom_init__ is not None:\n").arg(scriptClassName); - classCode += QString(" %1.__custom_init__(self, pb2_object=pb2_object, channel=channel)\n") - .arg(scriptClassName); + classCode += QString( " if %1.__custom_init__ is not None:\n" ).arg( scriptClassName ); + classCode += QString( " %1.__custom_init__(self, pb2_object=pb2_object, channel=channel)\n" ) + .arg( scriptClassName ); - for (auto keyWordValuePair : classMethodsGenerated[classKeyword]) + for ( auto keyWordValuePair : classMethodsGenerated[classKeyword] ) { classCode += "\n"; classCode += keyWordValuePair.second; @@ -311,16 +357,16 @@ QString PdmPythonGenerator::generate(PdmObjectFactory* factory) const } out << classCode << "\n"; - classesWritten.insert(scriptClassName); + classesWritten.insert( scriptClassName ); } - scriptSuperClassNames.push_back(scriptClassName); + scriptSuperClassNames.push_back( scriptClassName ); } } out << "def class_dict():\n"; out << " classes = {}\n"; - for (QString classKeyword : classesWritten) + for ( QString classKeyword : classesWritten ) { - out << QString(" classes['%1'] = %1\n").arg(classKeyword); + out << QString( " classes['%1'] = %1\n" ).arg( classKeyword ); } out << " return classes\n\n"; @@ -336,71 +382,56 @@ QString PdmPythonGenerator::generate(PdmObjectFactory* factory) const //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -QString PdmPythonGenerator::camelToSnakeCase(const QString& camelString) +QString PdmPythonGenerator::camelToSnakeCase( const QString& camelString ) { - static QRegularExpression re1("(.)([A-Z][a-z]+)"); - static QRegularExpression re2("([a-z0-9])([A-Z])"); + static QRegularExpression re1( "(.)([A-Z][a-z]+)" ); + static QRegularExpression re2( "([a-z0-9])([A-Z])" ); QString snake_case = camelString; - snake_case.replace(re1, "\\1_\\2"); - snake_case.replace(re2, "\\1_\\2"); + snake_case.replace( re1, "\\1_\\2" ); + snake_case.replace( re2, "\\1_\\2" ); return snake_case.toLower(); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -QString PdmPythonGenerator::dataTypeString(const PdmFieldHandle* field, bool useStrForUnknownDataTypes) +QString PdmPythonGenerator::dataTypeString( const PdmFieldHandle* field, bool useStrForUnknownDataTypes ) { auto xmlObj = field->capability(); - + QString dataType = xmlObj->dataTypeName(); - std::map builtins = - { {QString::fromStdString(typeid(double).name()), "float"}, - {QString::fromStdString(typeid(float).name()), "float"}, - {QString::fromStdString(typeid(int).name()), "int"}, - {QString::fromStdString(typeid(QString).name()), "str"} - }; + std::map builtins = {{QString::fromStdString( typeid( double ).name() ), "float"}, + {QString::fromStdString( typeid( float ).name() ), "float"}, + {QString::fromStdString( typeid( int ).name() ), "int"}, + {QString::fromStdString( typeid( QString ).name() ), "str"}}; bool foundBuiltin = false; - for (auto builtin : builtins) + for ( auto builtin : builtins ) { - if (dataType == builtin.first) + if ( dataType == builtin.first ) { - dataType.replace(builtin.first, builtin.second); + dataType.replace( builtin.first, builtin.second ); foundBuiltin = true; } } - if (!foundBuiltin && useStrForUnknownDataTypes) + if ( !foundBuiltin && useStrForUnknownDataTypes ) { dataType = "str"; } - + return dataType; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -QString PdmPythonGenerator::pythonifyDataValue(const QString& dataValue) +QString PdmPythonGenerator::pythonifyDataValue( const QString& dataValue ) { QString outValue = dataValue; - outValue.replace("false", "False"); - outValue.replace("true", "True"); + outValue.replace( "false", "False" ); + outValue.replace( "true", "True" ); return outValue; } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -QString PdmPythonGenerator::pythonHelpString(const QString& existingTooltip, const QString& keyword) -{ - QString snake_case = caf::PdmPythonGenerator::camelToSnakeCase(keyword); - - QString helpString = QString("Available through python/rips as the attribute '%1'").arg(snake_case); - - if (!existingTooltip.isEmpty()) return existingTooltip + "\n\n" + helpString; - return helpString; -} diff --git a/Fwk/AppFwk/cafPdmScripting/cafPdmPythonGenerator.h b/Fwk/AppFwk/cafPdmScripting/cafPdmPythonGenerator.h index 1c4f47eb00..b646fb0d14 100644 --- a/Fwk/AppFwk/cafPdmScripting/cafPdmPythonGenerator.h +++ b/Fwk/AppFwk/cafPdmScripting/cafPdmPythonGenerator.h @@ -49,11 +49,10 @@ class PdmPythonGenerator : public PdmCodeGenerator CAF_PDM_CODE_GENERATOR_HEADER_INIT; public: QString generate(PdmObjectFactory* factory) const override; - static QString camelToSnakeCase(const QString& camelString); - static QString dataTypeString(const PdmFieldHandle* field, bool useStrForUnknownDataTypes); + static QString camelToSnakeCase( const QString& camelString ); + static QString dataTypeString( const PdmFieldHandle* field, bool useStrForUnknownDataTypes ); static QString pythonifyDataValue(const QString& dataValue); - static QString pythonHelpString(const QString& existingTooltip, const QString& keyword); }; diff --git a/ApplicationCode/CommandFileInterface/Core/RicfCommandResponse.cpp b/Fwk/AppFwk/cafPdmScripting/cafPdmScriptResponse.cpp similarity index 54% rename from ApplicationCode/CommandFileInterface/Core/RicfCommandResponse.cpp rename to Fwk/AppFwk/cafPdmScripting/cafPdmScriptResponse.cpp index 4ad84b2b13..481575646b 100644 --- a/ApplicationCode/CommandFileInterface/Core/RicfCommandResponse.cpp +++ b/Fwk/AppFwk/cafPdmScripting/cafPdmScriptResponse.cpp @@ -1,26 +1,46 @@ -///////////////////////////////////////////////////////////////////////////////// +//################################################################################################## // -// Copyright (C) 2019- Equinor ASA +// Custom Visualization Core library +// Copyright (C) Ceetron Solutions 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. +// This library may be used under the terms of either the GNU General Public License or +// the GNU Lesser General Public License as follows: // -// 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. +// GNU General Public License Usage +// This library 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. // -// See the GNU General Public License at -// for more details. +// This library 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. // -///////////////////////////////////////////////////////////////////////////////// -#include "RicfCommandResponse.h" +// See the GNU General Public License at <> +// for more details. +// +// GNU Lesser General Public License Usage +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation; either version 2.1 of the License, or +// (at your option) any later version. +// +// This library 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 Lesser General Public License at <> +// for more details. +// +//################################################################################################## +#include "cafPdmScriptResponse.h" + +using namespace caf; //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse::RicfCommandResponse( Status status, const QString& message ) +PdmScriptResponse::PdmScriptResponse( Status status, const QString& message ) : m_status( COMMAND_OK ) { updateStatus( status, message ); @@ -29,7 +49,7 @@ RicfCommandResponse::RicfCommandResponse( Status status, const QString& message //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse::RicfCommandResponse( caf::PdmObject* ok_result ) +PdmScriptResponse::PdmScriptResponse( PdmObject* ok_result ) : m_status( COMMAND_OK ) , m_result( ok_result ) { @@ -38,7 +58,7 @@ RicfCommandResponse::RicfCommandResponse( caf::PdmObject* ok_result ) //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicfCommandResponse::Status RicfCommandResponse::status() const +PdmScriptResponse::Status PdmScriptResponse::status() const { return m_status; } @@ -46,7 +66,7 @@ RicfCommandResponse::Status RicfCommandResponse::status() const //-------------------------------------------------------------------------------------------------- /// The resulting message is sent in HTTP metadata and must not have any newlines. //-------------------------------------------------------------------------------------------------- -QString RicfCommandResponse::sanitizedResponseMessage() const +QString PdmScriptResponse::sanitizedResponseMessage() const { QString completeMessage = m_messages.join( ";;" ); completeMessage.replace( '\n', ";;" ); @@ -56,7 +76,7 @@ QString RicfCommandResponse::sanitizedResponseMessage() const //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -QStringList RicfCommandResponse::messages() const +QStringList PdmScriptResponse::messages() const { return m_messages; } @@ -64,7 +84,7 @@ QStringList RicfCommandResponse::messages() const //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -caf::PdmObject* RicfCommandResponse::result() const +PdmObject* PdmScriptResponse::result() const { return m_result.get(); } @@ -72,7 +92,7 @@ caf::PdmObject* RicfCommandResponse::result() const //-------------------------------------------------------------------------------------------------- /// Takes ownership of the result object //-------------------------------------------------------------------------------------------------- -void RicfCommandResponse::setResult( caf::PdmObject* result ) +void PdmScriptResponse::setResult( PdmObject* result ) { m_result.reset( result ); } @@ -80,7 +100,7 @@ void RicfCommandResponse::setResult( caf::PdmObject* result ) //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RicfCommandResponse::updateStatus( Status status, const QString& message ) +void PdmScriptResponse::updateStatus( Status status, const QString& message ) { m_status = std::max( m_status, status ); if ( !message.isEmpty() ) @@ -92,7 +112,7 @@ void RicfCommandResponse::updateStatus( Status status, const QString& message ) //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -QString RicfCommandResponse::statusLabel( Status status ) +QString PdmScriptResponse::statusLabel( Status status ) { switch ( status ) { diff --git a/Fwk/AppFwk/cafPdmScripting/cafPdmScriptResponse.h b/Fwk/AppFwk/cafPdmScripting/cafPdmScriptResponse.h new file mode 100644 index 0000000000..482a586435 --- /dev/null +++ b/Fwk/AppFwk/cafPdmScripting/cafPdmScriptResponse.h @@ -0,0 +1,83 @@ +//################################################################################################## +// +// Custom Visualization Core library +// Copyright (C) Ceetron Solutions AS +// +// This library may be used under the terms of either the GNU General Public License or +// the GNU Lesser General Public License as follows: +// +// GNU General Public License Usage +// This library 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. +// +// This library 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. +// +// GNU Lesser General Public License Usage +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation; either version 2.1 of the License, or +// (at your option) any later version. +// +// This library 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 Lesser General Public License at <> +// for more details. +// +//################################################################################################## +#pragma once + +#include "cafPdmObject.h" +#include "cafPdmPointer.h" + +#include +#include + +#include + +namespace caf +{ +//================================================================================================== +// +// Command response which contains status and possibly a result +// +//================================================================================================== +class PdmScriptResponse +{ +public: + // Status in order of severity from ok to critical + enum Status + { + COMMAND_OK, + COMMAND_WARNING, + COMMAND_ERROR + }; + +public: + PdmScriptResponse( Status status = COMMAND_OK, const QString& message = "" ); + explicit PdmScriptResponse( PdmObject* ok_result ); + + Status status() const; + QString sanitizedResponseMessage() const; + QStringList messages() const; + PdmObject* result() const; + void setResult( PdmObject* result ); + void updateStatus( Status status, const QString& message ); + +private: + static QString statusLabel( Status status ); + +private: + Status m_status; + QStringList m_messages; + std::unique_ptr m_result; +}; +} // namespace caf diff --git a/Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafPdmPtrArrayField.h b/Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafPdmPtrArrayField.h index e9ef9f9f5e..65720a71b8 100644 --- a/Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafPdmPtrArrayField.h +++ b/Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafPdmPtrArrayField.h @@ -1,5 +1,6 @@ #pragma once +#include "cafAssert.h" #include "cafPdmFieldHandle.h" #include "cafPdmPointer.h" @@ -41,6 +42,8 @@ public: void setValue(const std::vector< PdmPointer >& fieldValue); const std::vector< PdmPointer >& value() const; + + void setValue(const std::vector< DataType* >& fieldValue); // Reimplementation of PdmPointersFieldHandle methods @@ -70,6 +73,8 @@ public: typename std::vector< PdmPointer >::const_iterator begin() const { return m_pointers.begin(); }; typename std::vector< PdmPointer >::const_iterator end() const { return m_pointers.end(); }; + std::vector ptrReferencedObjects() const; + // Child objects virtual void ptrReferencedObjects(std::vector*); diff --git a/Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafPdmPtrArrayField.inl b/Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafPdmPtrArrayField.inl index 39bad04251..0296caa6d7 100644 --- a/Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafPdmPtrArrayField.inl +++ b/Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafPdmPtrArrayField.inl @@ -39,6 +39,19 @@ const std::vector< PdmPointer >& PdmPtrArrayField::value() return m_pointers; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +template +void PdmPtrArrayField::setValue(const std::vector< DataType* >& fieldValue) +{ + this->clear(); + for (DataType* rawPtr : fieldValue) + { + this->push_back(PdmPointer(rawPtr)); + } +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -209,6 +222,23 @@ void PdmPtrArrayField::removePtr(PdmObjectHandle* object) } } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +template +std::vector PdmPtrArrayField::ptrReferencedObjects() const +{ + std::vector objects; + + size_t i; + for (i = 0; i < m_pointers.size(); ++i) + { + objects.push_back(m_pointers[i].p()); + } + + return objects; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/Fwk/AppFwk/cafProjectDataModel/cafPdmXml/cafInternalPdmXmlFieldCapability.h b/Fwk/AppFwk/cafProjectDataModel/cafPdmXml/cafInternalPdmXmlFieldCapability.h index 570f9221d9..8973dfcdbf 100644 --- a/Fwk/AppFwk/cafProjectDataModel/cafPdmXml/cafInternalPdmXmlFieldCapability.h +++ b/Fwk/AppFwk/cafProjectDataModel/cafPdmXml/cafInternalPdmXmlFieldCapability.h @@ -19,7 +19,7 @@ public: PdmFieldXmlCap(FieldType* field, bool giveOwnership) : PdmXmlFieldHandle(field, giveOwnership) { m_field = field; - m_dataTypeName = QString("%1").arg(typeid(FieldType).name()); + m_dataTypeName = QString("%1").arg(typeid(typename FieldType::FieldDataType).name()); } // Xml Serializing diff --git a/Fwk/AppFwk/cafProjectDataModel/cafPdmXml/cafPdmDefaultObjectFactory.h b/Fwk/AppFwk/cafProjectDataModel/cafPdmXml/cafPdmDefaultObjectFactory.h index 77ef8b01fb..332c7a63de 100644 --- a/Fwk/AppFwk/cafProjectDataModel/cafPdmXml/cafPdmDefaultObjectFactory.h +++ b/Fwk/AppFwk/cafProjectDataModel/cafPdmXml/cafPdmDefaultObjectFactory.h @@ -48,9 +48,6 @@ namespace caf { - - - //================================================================================================== /// "Private" class for implementation of a factory for PdmObjectBase derived objects /// Every PdmObject must register with this factory to be readable