From ad319a03401b27fa92ad8b287c78c198b4cd5427 Mon Sep 17 00:00:00 2001 From: MinyazevR Date: Sun, 23 Mar 2025 02:38:06 +0300 Subject: [PATCH 1/3] Add multiplication operation to xml fields --- .../src/engine/constraints/details/constraintsParser.cpp | 6 +++++- .../src/engine/constraints/details/valuesFactory.cpp | 6 ++++++ .../src/engine/constraints/details/valuesFactory.h | 4 ++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/plugins/robots/common/twoDModel/src/engine/constraints/details/constraintsParser.cpp b/plugins/robots/common/twoDModel/src/engine/constraints/details/constraintsParser.cpp index 5c98d6f3b4..1212f8c4e2 100644 --- a/plugins/robots/common/twoDModel/src/engine/constraints/details/constraintsParser.cpp +++ b/plugins/robots/common/twoDModel/src/engine/constraints/details/constraintsParser.cpp @@ -605,6 +605,10 @@ Value ConstraintsParser::parseBinaryValueTag(const QDomElement &element) return mValues.sum(leftValue, rightValue); } + if (operation == "mul") { + return mValues.mul(leftValue, rightValue); + } + if (operation.startsWith("difference")) { return mValues.difference(leftValue, rightValue); } @@ -687,7 +691,7 @@ Value ConstraintsParser::parseValue(const QDomElement &element) return parseUnaryValueTag(element); } - if (tag == "sum" || tag == "difference" || tag == "min" || tag == "max" || tag == "distance") { + if (tag == "mul" || tag == "sum" || tag == "difference" || tag == "min" || tag == "max" || tag == "distance") { return parseBinaryValueTag(element); } diff --git a/plugins/robots/common/twoDModel/src/engine/constraints/details/valuesFactory.cpp b/plugins/robots/common/twoDModel/src/engine/constraints/details/valuesFactory.cpp index f4369a6fa4..382392072d 100644 --- a/plugins/robots/common/twoDModel/src/engine/constraints/details/valuesFactory.cpp +++ b/plugins/robots/common/twoDModel/src/engine/constraints/details/valuesFactory.cpp @@ -133,6 +133,12 @@ Value ValuesFactory::sum(const Value &left, const Value &right) const return [left, right]() { return left().toInt() + right().toInt(); }; } +Value ValuesFactory::mul(const Value &left, const Value &right) const +{ + return [left, right]() { return left().toInt() * right().toInt(); }; +} + + Value ValuesFactory::difference(const Value &left, const Value &right) const { return [left, right]() { return left().toInt() - right().toInt(); }; diff --git a/plugins/robots/common/twoDModel/src/engine/constraints/details/valuesFactory.h b/plugins/robots/common/twoDModel/src/engine/constraints/details/valuesFactory.h index 02cbf9ad9f..5136021789 100644 --- a/plugins/robots/common/twoDModel/src/engine/constraints/details/valuesFactory.h +++ b/plugins/robots/common/twoDModel/src/engine/constraints/details/valuesFactory.h @@ -74,6 +74,10 @@ class ValuesFactory /// If values cannot be implicitly converted to integers 0 will be returned. Value sum(const Value &left, const Value &right) const; + /// Produces functor that returns a multiplication of two given integer values + /// If values cannot be implicitly converted to integers 0 will be returned. + Value mul(const Value &left, const Value &right) const; + /// Produces functor that returns a difference of two given numeric values. /// If values cannot be implicitly converted to integers 0 will be returned. Value difference(const Value &left, const Value &right) const; From 9bd657b776e6a5a4af0bdc5f31ffde55b976d6a7 Mon Sep 17 00:00:00 2001 From: MinyazevR Date: Sun, 23 Mar 2025 03:00:38 +0300 Subject: [PATCH 2/3] Lupdate --- qrtranslations/fr/plugins/robots/twoDModel_fr.ts | 4 ++-- qrtranslations/ru/plugins/robots/twoDModel_ru.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/qrtranslations/fr/plugins/robots/twoDModel_fr.ts b/qrtranslations/fr/plugins/robots/twoDModel_fr.ts index d2a9c2fa65..96c82cad93 100644 --- a/qrtranslations/fr/plugins/robots/twoDModel_fr.ts +++ b/qrtranslations/fr/plugins/robots/twoDModel_fr.ts @@ -84,7 +84,7 @@ - + Unknown value "%1". Valeur inconnue "%1". @@ -144,7 +144,7 @@ - + Unknown type of object "%1" diff --git a/qrtranslations/ru/plugins/robots/twoDModel_ru.ts b/qrtranslations/ru/plugins/robots/twoDModel_ru.ts index 14ba892480..5f91fc4e94 100644 --- a/qrtranslations/ru/plugins/robots/twoDModel_ru.ts +++ b/qrtranslations/ru/plugins/robots/twoDModel_ru.ts @@ -253,7 +253,7 @@ В выражении "using" должен иметься тэг "return". - + Unknown value "%1". Неизвестное значение "%1". @@ -350,7 +350,7 @@ Путь до объекта пуст! - + Unknown type of object "%1" Неизвестный тип объекта "%1" From 2f752466e83591c5a1359c0b9139625de009eb3a Mon Sep 17 00:00:00 2001 From: MinyazevR Date: Mon, 21 Apr 2025 06:28:01 +0300 Subject: [PATCH 3/3] Minor fixes --- .../src/engine/constraints/details/constraintsParser.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/robots/common/twoDModel/src/engine/constraints/details/constraintsParser.cpp b/plugins/robots/common/twoDModel/src/engine/constraints/details/constraintsParser.cpp index 1212f8c4e2..455c2cae6e 100644 --- a/plugins/robots/common/twoDModel/src/engine/constraints/details/constraintsParser.cpp +++ b/plugins/robots/common/twoDModel/src/engine/constraints/details/constraintsParser.cpp @@ -609,7 +609,7 @@ Value ConstraintsParser::parseBinaryValueTag(const QDomElement &element) return mValues.mul(leftValue, rightValue); } - if (operation.startsWith("difference")) { + if (operation == "difference") { return mValues.difference(leftValue, rightValue); } @@ -625,7 +625,7 @@ Value ConstraintsParser::parseBinaryValueTag(const QDomElement &element) return mValues.distance(leftValue, rightValue); } - return mValues.sum(leftValue, rightValue); + qFatal("Unknown operator: %s\n", qPrintable(operation)); } Trigger ConstraintsParser::parseEventSetDropTag(const QDomElement &element)