Salome HOME
Issue #1343 Fixes for creating extrusion on vertex
[modules/shaper.git] / src / FeaturesPlugin / FeaturesPlugin_Validators.h
index 2e0978b910ac0baea874ac7f85335901626b8f4b..e02b2ee63c2c15055cfb440472066c34ea5cedc2 100644 (file)
 #include <ModelAPI_AttributeValidator.h>
 #include <ModelAPI_FeatureValidator.h>
 
-/// \class FeaturesPlugin_PipeLocationsValidator
+/// \class FeaturesPlugin_ValidatorPipeLocations
 /// \ingroup Validators
 /// \brief Validator for the pipe locations.
-class FeaturesPlugin_PipeLocationsValidator : public ModelAPI_FeatureValidator
+class FeaturesPlugin_ValidatorPipeLocations: public ModelAPI_FeatureValidator
 {
  public:
   //! \return true if number of selected locations the same as number of selected bases, or empty.
@@ -32,7 +32,7 @@ class FeaturesPlugin_PipeLocationsValidator : public ModelAPI_FeatureValidator
 /// \ingroup Validators
 /// \brief A validator for selection base for generation. Allows to select faces on sketch,
 /// whole sketch(if it has at least one face), and following objects: vertex, edge, wire, face.
-class FeaturesPlugin_ValidatorBaseForGeneration : public ModelAPI_AttributeValidator
+class FeaturesPlugin_ValidatorBaseForGeneration: public ModelAPI_AttributeValidator
 {
 public:
   //! Returns true if attribute has selection type listed in the parameter arguments.
@@ -45,7 +45,47 @@ public:
 
 private:
   bool isValidAttribute(const AttributePtr& theAttribute,
+                        const std::list<std::string>& theArguments,
+                        std::string& theError) const;
+};
+
+/// \class FeaturesPlugin_ValidatorCompositeLauncher
+/// \ingroup Validators
+/// \brief A validator for selection at composite feature start
+class FeaturesPlugin_ValidatorCompositeLauncher: public ModelAPI_AttributeValidator
+{
+public:
+  //! Returns true if attribute has selection type listed in the parameter arguments.
+  //! \param[in] theAttribute the checked attribute.
+  //! \param[in] theArguments arguments of the attribute.
+  //! \param[out] theError error message.
+   virtual bool isValid(const AttributePtr& theAttribute,
+                        const std::list<std::string>& theArguments,
                         std::string& theError) const;
 };
 
+/// \class FeaturesPlugin_ValidatorCanBeEmpty
+/// \ingroup Validators
+/// \brief A validator for extrusion direction attribute and bounding planes for extrusion and
+///        revolution. Allows them to be empty if base objects are planar and do not contain
+///        vertices and edges.
+class FeaturesPlugin_ValidatorCanBeEmpty: public ModelAPI_FeatureValidator
+{
+public:
+  //! Returns true if attribute listed in the parameter arguments are planar.
+  //! \param[in] theFeature the checked feature.
+  //! \param[in] theArguments arguments of the attribute.
+  //! \param[out] theError error message.
+  virtual bool isValid(const std::shared_ptr<ModelAPI_Feature>& theFeature,
+                       const std::list<std::string>& theArguments,
+                       std::string& theError) const;
+
+  /// Returns true if the attribute in feature is not obligatory for the feature execution
+  virtual bool isNotObligatory(std::string theFeature, std::string theAttribute);
+
+private:
+  bool isShapesCanBeEmpty(const AttributePtr& theAttribute,
+                          std::string& theError) const;
+};
+
 #endif