]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Issue #2590: Create validator for Field feature
authorvsv <vsv@opencascade.com>
Tue, 2 Oct 2018 12:51:49 +0000 (15:51 +0300)
committervsv <vsv@opencascade.com>
Tue, 2 Oct 2018 12:51:49 +0000 (15:51 +0300)
src/CollectionPlugin/CMakeLists.txt
src/CollectionPlugin/CollectionPlugin_Field.cpp
src/CollectionPlugin/CollectionPlugin_Plugin.cpp
src/CollectionPlugin/CollectionPlugin_Validators.cpp [new file with mode: 0644]
src/CollectionPlugin/CollectionPlugin_Validators.h [new file with mode: 0644]
src/CollectionPlugin/CollectionPlugin_msg_en.ts
src/CollectionPlugin/plugin-Collection.xml

index 488479132665a388cf72b2e808223720d334f62e..674ea7e083acd72af5fce5378bfa0a70f9553283 100644 (file)
@@ -35,6 +35,7 @@ SET(PROJECT_HEADERS
     CollectionPlugin_Field.h
     CollectionPlugin_WidgetCreator.h
     CollectionPlugin_WidgetField.h
+       CollectionPlugin_Validators.h
 )
 
 SET(PROJECT_MOC_HEADERS
@@ -47,6 +48,7 @@ SET(PROJECT_SOURCES
     CollectionPlugin_Field.cpp
     CollectionPlugin_WidgetCreator.cpp
     CollectionPlugin_WidgetField.cpp
+       CollectionPlugin_Validators.cpp
 )
 
 SET(XML_RESOURCES
index c80dc989561e4ca0e8e1f9a800644d3b2aaf7413..2e91e8d541c5007637b8dac627d98ffd1ad4176c 100644 (file)
@@ -37,7 +37,7 @@ CollectionPlugin_Field::CollectionPlugin_Field()
 void CollectionPlugin_Field::initAttributes()
 {
   data()->addAttribute(SELECTED_ID(), ModelAPI_AttributeSelectionList::typeId());
-  // for the whole part result it is not obligatory
+  // for the whole part result is not obligatory
   ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), SELECTED_ID());
 
   data()->addAttribute(COMPONENTS_NAMES_ID(), ModelAPI_AttributeStringArray::typeId());
index f593c7b7cecc81f17b7d54e173e08f2a76849a6e..9ef0bd736eded51dd68ea35738b17f59501db57c 100644 (file)
@@ -22,6 +22,7 @@
 
 #include <CollectionPlugin_Group.h>
 #include <CollectionPlugin_Field.h>
+#include <CollectionPlugin_Validators.h>
 #include <ModelAPI_Session.h>
 
 #include <ModuleBase_WidgetCreatorFactory.h>
@@ -41,6 +42,11 @@ CollectionPlugin_Plugin::CollectionPlugin_Plugin()
    std::shared_ptr<CollectionPlugin_WidgetCreator>(new CollectionPlugin_WidgetCreator()));
 
   SessionPtr aMgr = ModelAPI_Session::get();
+
+  ModelAPI_ValidatorsFactory* aFactory = aMgr->validators();
+  aFactory->registerValidator("CollectionPlugin_FieldValidator",
+    new CollectionPlugin_FieldValidator);
+
   // register this plugin
   ModelAPI_Session::get()->registerPlugin(this);
 }
diff --git a/src/CollectionPlugin/CollectionPlugin_Validators.cpp b/src/CollectionPlugin/CollectionPlugin_Validators.cpp
new file mode 100644 (file)
index 0000000..aaa9d6f
--- /dev/null
@@ -0,0 +1,47 @@
+// Copyright (C) 2014-2017  CEA/DEN, EDF R&D
+//
+// 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 for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or
+// email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+//
+
+#include "CollectionPlugin_Validators.h"
+#include "CollectionPlugin_Field.h"
+#include <ModelAPI_AttributeSelectionList.h>
+#include <Events_InfoMessage.h>
+
+
+bool CollectionPlugin_FieldValidator::isValid(const FeaturePtr& theFeature,
+  const std::list<std::string>& theArguments,
+  Events_InfoMessage& theError) const
+{
+  AttributeSelectionListPtr aSelList =
+    theFeature->selectionList(CollectionPlugin_Field::SELECTED_ID());
+  if (aSelList->isInitialized()) {
+    int aSize = aSelList->size();
+    std::string aTypeStr = aSelList->selectionType();
+    if (aTypeStr == "part")
+      return true;
+    else {
+      bool aIsDefined = aSize > 0;
+      if (!aIsDefined)
+        theError = "Selection list is not initialized";
+      return aIsDefined;
+    }
+  }
+  theError = "Selection list is not initialized";
+  return false;
+}
diff --git a/src/CollectionPlugin/CollectionPlugin_Validators.h b/src/CollectionPlugin/CollectionPlugin_Validators.h
new file mode 100644 (file)
index 0000000..8b0ef2f
--- /dev/null
@@ -0,0 +1,45 @@
+// Copyright (C) 2014-2017  CEA/DEN, EDF R&D
+//
+// 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 for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or
+// email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+//
+
+#ifndef CollectionPlugin_Validators_H
+#define CollectionPlugin_Validators_H
+
+#include "CollectionPlugin.h"
+#include <ModelAPI_FeatureValidator.h>
+
+/**\class SketchPlugin_SolverErrorValidator
+* \ingroup Validators
+* \brief Validator for the solver error.
+*
+* Simply checks that solver error attribute is empty. Returns the attribute value as an error.
+*/
+class CollectionPlugin_FieldValidator : public ModelAPI_FeatureValidator
+{
+public:
+  //! returns true if there are no solver errors
+  //! \param theFeature the checked feature
+  //! \param theArguments arguments of the feature (not used)
+  //! \param theError error message
+  virtual bool isValid(const FeaturePtr& theFeature,
+    const std::list<std::string>& theArguments,
+    Events_InfoMessage& theError) const;
+};
+
+#endif
\ No newline at end of file
index 8c403d24879132c34d2a600e08a88a7affd3406a..061f3923dee325bbad096d981a30234e417c17fb 100644 (file)
       <translation>Objects not selected.</translation>
     </message>
   </context>
+  <context>
+    <name>Field:Model_FeatureValidator</name>
+    <message>
+      <source>Attribute "components_names" is not initialized.</source>
+      <translation>Components are not selected</translation>
+    </message>
+  </context>
 
 </TS>
index 87d7d70efdf90a224f3a1c0a9cf65b6370f76c8e..4adfdf2184c477afe35492945954b6494b048e15 100644 (file)
@@ -40,6 +40,7 @@ email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com
           filter_points="false" >
           <validator id="GeomValidators_BodyShapes"/>
         </field-panel>
+        <validator id="CollectionPlugin_FieldValidator"/>
       </feature>
     </group>
   </workbench>