From e80c8ba218516c564502b3a6c6f179c6e036cffd Mon Sep 17 00:00:00 2001 From: vsv Date: Tue, 2 Oct 2018 15:51:49 +0300 Subject: [PATCH] Issue #2590: Create validator for Field feature --- src/CollectionPlugin/CMakeLists.txt | 2 + .../CollectionPlugin_Field.cpp | 2 +- .../CollectionPlugin_Plugin.cpp | 6 +++ .../CollectionPlugin_Validators.cpp | 47 +++++++++++++++++++ .../CollectionPlugin_Validators.h | 45 ++++++++++++++++++ .../CollectionPlugin_msg_en.ts | 7 +++ src/CollectionPlugin/plugin-Collection.xml | 1 + 7 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 src/CollectionPlugin/CollectionPlugin_Validators.cpp create mode 100644 src/CollectionPlugin/CollectionPlugin_Validators.h diff --git a/src/CollectionPlugin/CMakeLists.txt b/src/CollectionPlugin/CMakeLists.txt index 488479132..674ea7e08 100644 --- a/src/CollectionPlugin/CMakeLists.txt +++ b/src/CollectionPlugin/CMakeLists.txt @@ -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 diff --git a/src/CollectionPlugin/CollectionPlugin_Field.cpp b/src/CollectionPlugin/CollectionPlugin_Field.cpp index c80dc9895..2e91e8d54 100644 --- a/src/CollectionPlugin/CollectionPlugin_Field.cpp +++ b/src/CollectionPlugin/CollectionPlugin_Field.cpp @@ -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()); diff --git a/src/CollectionPlugin/CollectionPlugin_Plugin.cpp b/src/CollectionPlugin/CollectionPlugin_Plugin.cpp index f593c7b7c..9ef0bd736 100644 --- a/src/CollectionPlugin/CollectionPlugin_Plugin.cpp +++ b/src/CollectionPlugin/CollectionPlugin_Plugin.cpp @@ -22,6 +22,7 @@ #include #include +#include #include #include @@ -41,6 +42,11 @@ CollectionPlugin_Plugin::CollectionPlugin_Plugin() std::shared_ptr(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 index 000000000..aaa9d6f84 --- /dev/null +++ b/src/CollectionPlugin/CollectionPlugin_Validators.cpp @@ -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 +// + +#include "CollectionPlugin_Validators.h" +#include "CollectionPlugin_Field.h" +#include +#include + + +bool CollectionPlugin_FieldValidator::isValid(const FeaturePtr& theFeature, + const std::list& 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 index 000000000..8b0ef2f6f --- /dev/null +++ b/src/CollectionPlugin/CollectionPlugin_Validators.h @@ -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 +// + +#ifndef CollectionPlugin_Validators_H +#define CollectionPlugin_Validators_H + +#include "CollectionPlugin.h" +#include + +/**\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& theArguments, + Events_InfoMessage& theError) const; +}; + +#endif \ No newline at end of file diff --git a/src/CollectionPlugin/CollectionPlugin_msg_en.ts b/src/CollectionPlugin/CollectionPlugin_msg_en.ts index 8c403d248..061f3923d 100644 --- a/src/CollectionPlugin/CollectionPlugin_msg_en.ts +++ b/src/CollectionPlugin/CollectionPlugin_msg_en.ts @@ -30,5 +30,12 @@ Objects not selected. + + Field:Model_FeatureValidator + + Attribute "components_names" is not initialized. + Components are not selected + + diff --git a/src/CollectionPlugin/plugin-Collection.xml b/src/CollectionPlugin/plugin-Collection.xml index 87d7d70ef..4adfdf218 100644 --- a/src/CollectionPlugin/plugin-Collection.xml +++ b/src/CollectionPlugin/plugin-Collection.xml @@ -40,6 +40,7 @@ email : webmaster.salome@opencascade.com + -- 2.39.2