Salome HOME
Parameters creation error processing
authorvsv <vsv@opencascade.com>
Mon, 28 May 2018 14:53:56 +0000 (17:53 +0300)
committervsv <vsv@opencascade.com>
Mon, 28 May 2018 14:53:56 +0000 (17:53 +0300)
src/ModuleBase/ModuleBase_ParamSpinBox.cpp
src/ModuleBase/ModuleBase_WidgetDoubleValue.cpp

index 6c5ce02bb9e7539fce01e833cd9a6a37bbb5dbbf..b718998df21da169c20a39222f0dfc6a8bfbbfa5 100644 (file)
@@ -273,7 +273,6 @@ void ModuleBase_ParamSpinBox::keyReleaseEvent(QKeyEvent* e)
   switch (e->key()) {
   case Qt::Key_Return:
   case Qt::Key_Enter:
-  case Qt::Key_Tab:
   {
     if (myCompleter->popup()->isVisible()) {
       myCompleter->popup()->hide();
index a2ad6b25596c5c5d43daf2f892bc8c74702440bd..62aa739f332cad3f7d72cb8554b446ad50c5c616 100644 (file)
@@ -162,6 +162,15 @@ bool ModuleBase_WidgetDoubleValue::storeValueCustom()
     if (aText.contains('=')) {
       if (!myParameter.get()) {
         myParameter = createParameter(aText);
+        if (!myParameter.get()) {
+          aReal->setExpressionError("Parameter cannot be created");
+          aReal->setExpressionInvalid(true);
+          mySpinBox->setText(aReal->text().c_str());
+          return false;
+        } else if (aReal->expressionInvalid()) {
+          aReal->setExpressionError("");
+          aReal->setExpressionInvalid(false);
+        }
       } else {
         editParameter(aText);
       }
@@ -192,9 +201,12 @@ bool ModuleBase_WidgetDoubleValue::restoreValueCustom()
     if (aText.endsWith('=')) {
       if (!myParameter.get()) {
         QString aName = aText.left(aText.indexOf('=')).trimmed();
-        std::string aa = aName.toStdString();
         myParameter = findParameter(aName);
       }
+      /// If myParameter is empty then it was not created because of an error
+      if (!myParameter.get())
+        return false;
+
       AttributeStringPtr aExprAttr = myParameter->string("expression");
       aText += aExprAttr->value().c_str();
     }
@@ -232,6 +244,9 @@ FeaturePtr ModuleBase_WidgetDoubleValue::createParameter(const QString& theText)
 {
   FeaturePtr aParameter;
   QStringList aList = theText.split("=");
+  if (aList.count() != 2) {
+    return aParameter;
+  }
   QString aParamName = aList.at(0).trimmed();
 
   if (isNameExist(aParamName)) {