X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSetPlugin%2FPartSetPlugin_Part.h;h=242848300acf36be66efb857f624a8c8d6fc9a62;hb=4fc2dc9fdc0c14fab5f2780598eccdc1368d81b9;hp=cd656b18e76fa9c3a6f98ae849cfde264936abd6;hpb=036ba4eb4c2df048fd651a54f68882a01769eb08;p=modules%2Fshaper.git diff --git a/src/PartSetPlugin/PartSetPlugin_Part.h b/src/PartSetPlugin/PartSetPlugin_Part.h index cd656b18e..242848300 100644 --- a/src/PartSetPlugin/PartSetPlugin_Part.h +++ b/src/PartSetPlugin/PartSetPlugin_Part.h @@ -1,39 +1,42 @@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D + // File: PartSetPlugin_Part.h // Created: 27 Mar 2014 // Author: Mikhail PONIKAROV -#ifndef PartSetPlugin_Part_HeaderFile -#define PartSetPlugin_Part_HeaderFile +#ifndef PartSetPlugin_Part_H_ +#define PartSetPlugin_Part_H_ #include "PartSetPlugin.h" -#include +#include /**\class PartSetPlugin_Part - * \ingroup DataModel + * \ingroup Plugins * \brief Feature for creation of the new part in PartSet. + * All sub-features are sub-elements of composite feature. */ -class PartSetPlugin_Part: public ModelAPI_Feature +class PartSetPlugin_Part : public ModelAPI_CompositeFeature { -public: + public: /// Part kind inline static const std::string& ID() { static const std::string MY_PART_KIND("Part"); return MY_PART_KIND; } - /// part reference attribute - inline static const std::string& DOC_REF() + /// Returns the kind of a feature + PARTSETPLUGIN_EXPORT virtual const std::string& getKind() { - static const std::string MY_DOC_REF("PartDocument"); - return MY_DOC_REF; + static std::string MY_KIND = PartSetPlugin_Part::ID(); + return MY_KIND; } - /// Returns the kind of a feature - PARTSETPLUGIN_EXPORT virtual const std::string& getKind() - {static std::string MY_KIND = PartSetPlugin_Part::ID(); return MY_KIND;} /// Returns to which group in the document must be added feature - PARTSETPLUGIN_EXPORT virtual const std::string& getGroup() - {static std::string MY_GROUP = "Parts"; return MY_GROUP;} + PARTSETPLUGIN_EXPORT virtual const std::string& getGroup() + { + static std::string MY_GROUP = "Parts"; + return MY_GROUP; + } /// Creates a new part document if needed PARTSETPLUGIN_EXPORT virtual void execute(); @@ -41,10 +44,29 @@ public: /// Request for initialization of data model of the feature: adding all attributes PARTSETPLUGIN_EXPORT virtual void initAttributes(); - PARTSETPLUGIN_EXPORT virtual boost::shared_ptr documentToAdd(); + /// Part must be added only to PartSet + PARTSETPLUGIN_EXPORT virtual const std::string& documentToAdd(); + + // composite feature methods + + /// Adds feature to its document + virtual std::shared_ptr addFeature(std::string theID); + + /// Returns the number of sub-features of the document + virtual int numberOfSubs(bool forTree = false) const; + + /// Returns the sub-feature by zero-base index + virtual std::shared_ptr subFeature(const int theIndex, bool forTree = false); + + /// Returns the sub-feature unique identifier in this composite feature by zero-base index + virtual int subFeatureId(const int theIndex) const; + + /// Returns true if feature or reuslt belong to this composite feature as subs + virtual bool isSub(ObjectPtr theObject) const; - /// Returns true if this feature must be displayed in the history (top level of Part tree) - PARTSETPLUGIN_EXPORT virtual bool isInHistory() {return false;} + /// This method to inform that sub-feature is removed and must be removed from the internal data + /// structures of the owner (the remove from the document will be done outside just after) + virtual void removeFeature(std::shared_ptr theFeature); /// Use plugin manager for features creation PartSetPlugin_Part();