diff --git a/ApplicationCode/CommandFileInterface/Core/RicfFieldCapability.cpp b/ApplicationCode/CommandFileInterface/Core/RicfFieldCapability.cpp index 0b503b6496..d226852067 100644 --- a/ApplicationCode/CommandFileInterface/Core/RicfFieldCapability.cpp +++ b/ApplicationCode/CommandFileInterface/Core/RicfFieldCapability.cpp @@ -23,19 +23,29 @@ #include - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RicfFieldReader::readFieldData(QString& fieldValue, QTextStream& inputStream, RicfMessages* errorMessageContainer) +void RicfFieldReader::readFieldData(QString& fieldValue, QTextStream& inputStream, RicfMessages* errorMessageContainer, bool stringsAreQuoted) { fieldValue = ""; errorMessageContainer->skipWhiteSpaceWithLineNumberCount(inputStream); QString accumulatedFieldValue; + QChar currentChar; - currentChar = errorMessageContainer->readCharWithLineNumberCount(inputStream); - if ( currentChar == QChar('"') ) + bool validStringStart = !stringsAreQuoted; + bool validStringEnd = !stringsAreQuoted; + if (stringsAreQuoted) + { + currentChar = errorMessageContainer->readCharWithLineNumberCount(inputStream); + if (currentChar == QChar('"')) + { + validStringStart = true; + } + } + + if (validStringStart) { while ( !inputStream.atEnd() ) { @@ -45,6 +55,7 @@ void RicfFieldReader::readFieldData(QString& fieldValue, QTextStream& i if ( currentChar == QChar('"') ) // End Quote { // Reached end of string + validStringEnd = true; break; } else @@ -59,7 +70,7 @@ void RicfFieldReader::readFieldData(QString& fieldValue, QTextStream& i } } } - else + if (!validStringStart) { // Unexpected start of string, Missing '"' // Error message @@ -68,6 +79,15 @@ void RicfFieldReader::readFieldData(QString& fieldValue, QTextStream& i + errorMessageContainer->currentCommand + "\"" ); // Could interpret as unquoted text } + else if (!validStringEnd) + { + // Unexpected end of string, Missing '"' + // Error message + errorMessageContainer->addError("String argument does not seem to be quoted. Missing the end '\"' in the \"" + + errorMessageContainer->currentArgument + "\" argument of the command: \"" + + errorMessageContainer->currentCommand + "\""); + // Could interpret as unquoted text + } fieldValue = accumulatedFieldValue; } @@ -75,7 +95,7 @@ void RicfFieldReader::readFieldData(QString& fieldValue, QTextStream& i //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RicfFieldWriter::writeFieldData(const QString& fieldValue, QTextStream& outputStream) +void RicfFieldWriter::writeFieldData(const QString& fieldValue, QTextStream& outputStream, bool quoteStrings) { outputStream << "\""; for ( int i = 0; i < fieldValue.size(); ++i ) @@ -92,7 +112,7 @@ void RicfFieldWriter::writeFieldData(const QString& fieldValue, QTextSt //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RicfFieldReader::readFieldData(bool& fieldValue, QTextStream& inputStream, RicfMessages* errorMessageContainer) +void RicfFieldReader::readFieldData(bool& fieldValue, QTextStream& inputStream, RicfMessages* errorMessageContainer, bool stringsAreQuoted) { errorMessageContainer->skipWhiteSpaceWithLineNumberCount(inputStream); QString accumulatedFieldValue; @@ -127,7 +147,7 @@ void RicfFieldReader::readFieldData(bool& fieldValue, QTextStream& inputSt //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RicfFieldWriter::writeFieldData(const bool& fieldValue, QTextStream& outputStream) +void RicfFieldWriter::writeFieldData(const bool& fieldValue, QTextStream& outputStream, bool quoteStrings) { // Lower-case true/false is used in the documentation. outputStream << (fieldValue ? "true" : "false"); @@ -136,10 +156,10 @@ void RicfFieldWriter::writeFieldData(const bool& fieldValue, QTextStream& //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RicfFieldReader::readFieldData(cvf::Color3f& fieldValue, QTextStream& inputStream, RicfMessages* errorMessageContainer) +void RicfFieldReader::readFieldData(cvf::Color3f& fieldValue, QTextStream& inputStream, RicfMessages* errorMessageContainer, bool stringsAreQuoted) { QString fieldStringValue; - RicfFieldReader::readFieldData(fieldStringValue, inputStream, errorMessageContainer); + RicfFieldReader::readFieldData(fieldStringValue, inputStream, errorMessageContainer, stringsAreQuoted); QColor qColor(fieldStringValue); if (qColor.isValid()) @@ -151,9 +171,9 @@ void RicfFieldReader::readFieldData(cvf::Color3f& fieldValue, QTex //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RicfFieldWriter::writeFieldData(const cvf::Color3f& fieldValue, QTextStream& outputStream) +void RicfFieldWriter::writeFieldData(const cvf::Color3f& fieldValue, QTextStream& outputStream, bool quoteStrings) { QColor qColor = RiaColorTools::toQColor(fieldValue); QString fieldStringValue = qColor.name(); - RicfFieldWriter::writeFieldData(fieldStringValue, outputStream); + RicfFieldWriter::writeFieldData(fieldStringValue, outputStream, quoteStrings); } \ No newline at end of file diff --git a/ApplicationCode/CommandFileInterface/Core/RicfFieldCapability.h b/ApplicationCode/CommandFileInterface/Core/RicfFieldCapability.h index 7b4e454a8a..6b4964701c 100644 --- a/ApplicationCode/CommandFileInterface/Core/RicfFieldCapability.h +++ b/ApplicationCode/CommandFileInterface/Core/RicfFieldCapability.h @@ -32,7 +32,7 @@ template struct RicfFieldReader { - static void readFieldData(DataType & fieldValue, QTextStream& inputStream, RicfMessages* errorMessageContainer) + static void readFieldData(DataType & fieldValue, QTextStream& inputStream, RicfMessages* errorMessageContainer, bool stringsAreQuoted = true) { inputStream >> fieldValue; if (inputStream.status() == QTextStream::ReadCorruptData) @@ -49,7 +49,7 @@ struct RicfFieldReader template struct RicfFieldWriter { - static void writeFieldData(const DataType & fieldValue, QTextStream& outputStream) + static void writeFieldData(const DataType & fieldValue, QTextStream& outputStream, bool quoteStrings = true) { outputStream << fieldValue; } @@ -58,43 +58,43 @@ struct RicfFieldWriter template <> struct RicfFieldReader { - static void readFieldData(QString & fieldValue, QTextStream& inputStream, RicfMessages* errorMessageContainer); + static void readFieldData(QString & fieldValue, QTextStream& inputStream, RicfMessages* errorMessageContainer, bool stringsAreQuoted = true); }; template <> struct RicfFieldWriter { - static void writeFieldData(const QString & fieldValue, QTextStream& outputStream); + static void writeFieldData(const QString & fieldValue, QTextStream& outputStream, bool quoteStrings = true); }; template <> struct RicfFieldReader { - static void readFieldData(bool& fieldValue, QTextStream& inputStream, RicfMessages* errorMessageContainer); + static void readFieldData(bool& fieldValue, QTextStream& inputStream, RicfMessages* errorMessageContainer, bool stringsAreQuoted = true); }; template <> struct RicfFieldWriter { - static void writeFieldData(const bool& fieldValue, QTextStream& outputStream); + static void writeFieldData(const bool& fieldValue, QTextStream& outputStream, bool quoteStrings = true); }; template<> struct RicfFieldReader { - static void readFieldData(cvf::Color3f& fieldValue, QTextStream& inputStream, RicfMessages* errorMessageContainer); + static void readFieldData(cvf::Color3f& fieldValue, QTextStream& inputStream, RicfMessages* errorMessageContainer, bool stringsAreQuoted = true); }; template<> struct RicfFieldWriter { - static void writeFieldData(const cvf::Color3f& fieldValue, QTextStream& outputStream); + static void writeFieldData(const cvf::Color3f& fieldValue, QTextStream& outputStream, bool quoteStrings = true); }; template struct RicfFieldReader< caf::AppEnum > { - static void readFieldData(caf::AppEnum& fieldValue, QTextStream& inputStream, RicfMessages* errorMessageContainer) + static void readFieldData(caf::AppEnum& fieldValue, QTextStream& inputStream, RicfMessages* errorMessageContainer, bool stringsAreQuoted = true) { errorMessageContainer->skipWhiteSpaceWithLineNumberCount(inputStream); QString accumulatedFieldValue; @@ -127,7 +127,7 @@ struct RicfFieldReader< caf::AppEnum > template struct RicfFieldWriter< caf::AppEnum > { - static void writeFieldData(const caf::AppEnum& fieldValue, QTextStream& outputStream) + static void writeFieldData(const caf::AppEnum& fieldValue, QTextStream& outputStream, bool quoteStrings = true) { outputStream << fieldValue; } @@ -136,7 +136,7 @@ struct RicfFieldWriter< caf::AppEnum > template struct RicfFieldReader< std::vector > { - static void readFieldData(std::vector& fieldValue, QTextStream& inputStream, RicfMessages* errorMessageContainer) + static void readFieldData(std::vector& fieldValue, QTextStream& inputStream, RicfMessages* errorMessageContainer, bool stringsAreQuoted = true) { errorMessageContainer->skipWhiteSpaceWithLineNumberCount(inputStream); QChar chr = errorMessageContainer->readCharWithLineNumberCount(inputStream); @@ -157,7 +157,7 @@ struct RicfFieldReader< std::vector > } T value; - RicfFieldReader::readFieldData(value, inputStream, errorMessageContainer); + RicfFieldReader::readFieldData(value, inputStream, errorMessageContainer, true); fieldValue.push_back(value); } } @@ -172,7 +172,7 @@ struct RicfFieldReader< std::vector > template struct RicfFieldWriter< std::vector > { - static void writeFieldData(const std::vector& fieldValue, QTextStream& outputStream) + static void writeFieldData(const std::vector& fieldValue, QTextStream& outputStream, bool quoteStrings = true) { outputStream << "["; for (size_t i = 0; i < fieldValue.size(); ++i) @@ -202,10 +202,10 @@ public: // Xml Serializing public: - void readFieldData (QTextStream& inputStream, caf::PdmObjectFactory* objectFactory, RicfMessages* errorMessageContainer) override + void readFieldData (QTextStream& inputStream, caf::PdmObjectFactory* objectFactory, RicfMessages* errorMessageContainer, bool stringsAreQuoted = true) override { typename FieldType::FieldDataType value; - RicfFieldReader::readFieldData(value, inputStream, errorMessageContainer); + RicfFieldReader::readFieldData(value, inputStream, errorMessageContainer, stringsAreQuoted); if (this->isIOWriteable()) { @@ -213,9 +213,9 @@ public: } } - void writeFieldData(QTextStream& outputStream) const override + void writeFieldData(QTextStream& outputStream, bool quoteStrings = true) const override { - RicfFieldWriter::writeFieldData(m_field->value(), outputStream); + RicfFieldWriter::writeFieldData(m_field->value(), outputStream, quoteStrings); } private: diff --git a/ApplicationCode/CommandFileInterface/Core/RicfFieldHandle.h b/ApplicationCode/CommandFileInterface/Core/RicfFieldHandle.h index 3e48f984e5..7e25a40977 100644 --- a/ApplicationCode/CommandFileInterface/Core/RicfFieldHandle.h +++ b/ApplicationCode/CommandFileInterface/Core/RicfFieldHandle.h @@ -19,6 +19,8 @@ #pragma once #include "cafPdmFieldCapability.h" +#include + namespace caf { class PdmObjectFactory; @@ -52,8 +54,9 @@ public: virtual void readFieldData (QTextStream& inputStream, caf::PdmObjectFactory* objectFactory, - RicfMessages* errorMessageContainer ) = 0; - virtual void writeFieldData(QTextStream& outputStream) const = 0; + RicfMessages* errorMessageContainer, + bool stringsAreQuoted = true) = 0; + virtual void writeFieldData(QTextStream& outputStream, bool quoteStrings = true) const = 0; private: caf::PdmFieldHandle* m_owner; diff --git a/ApplicationCode/GrpcInterface/Python/rips/PdmObject.py b/ApplicationCode/GrpcInterface/Python/rips/PdmObject.py index 806525e0ab..ac7d9aac0a 100644 --- a/ApplicationCode/GrpcInterface/Python/rips/PdmObject.py +++ b/ApplicationCode/GrpcInterface/Python/rips/PdmObject.py @@ -56,8 +56,6 @@ class PdmObject: for val in value: listofstrings.append(self.__fromValue(val)) return "[" + ", ".join(listofstrings) + "]" - elif isinstance(value, str): - return "\"" + str(value) + "\"" else: return str(value) diff --git a/ApplicationCode/GrpcInterface/Python/rips/examples/SetCellResult.py b/ApplicationCode/GrpcInterface/Python/rips/examples/SetCellResult.py new file mode 100644 index 0000000000..2414744387 --- /dev/null +++ b/ApplicationCode/GrpcInterface/Python/rips/examples/SetCellResult.py @@ -0,0 +1,14 @@ +import rips + +resInsight = rips.Instance.find() + +view = resInsight.project.view(0) + +cellResult = view.cellResult() + +cellResult.printObjectInfo() + +cellResult.setValue("ResultType", "FLOW_DIAGNOSTICS") +cellResult.setValue("ResultVariable", "TOF") + +cellResult.update() \ No newline at end of file diff --git a/ApplicationCode/GrpcInterface/RiaGrpcServiceInterface.cpp b/ApplicationCode/GrpcInterface/RiaGrpcServiceInterface.cpp index 0a8f7a61f0..935a521980 100644 --- a/ApplicationCode/GrpcInterface/RiaGrpcServiceInterface.cpp +++ b/ApplicationCode/GrpcInterface/RiaGrpcServiceInterface.cpp @@ -85,7 +85,7 @@ void RiaGrpcServiceInterface::copyPdmObjectFromCafToRips(const caf::PdmObject* s { QString text; QTextStream outStream(&text); - ricfHandle->writeFieldData(outStream); + ricfHandle->writeFieldData(outStream, false); (*parametersMap)[keyword.toStdString()] = text.toStdString(); } } @@ -127,7 +127,7 @@ void RiaGrpcServiceInterface::assignFieldValue(const QString& stringValue, caf:: { QTextStream stream(stringValue.toLatin1()); RicfMessages messages; - ricfHandle->readFieldData(stream, nullptr, &messages); + ricfHandle->readFieldData(stream, nullptr, &messages, false); } }