Salome HOME
updated copyright message
[modules/shaper.git] / src / ModelAPI / ModelAPI_Folder.h
1 // Copyright (C) 2014-2023  CEA, EDF
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19
20 #ifndef ModelAPI_Folder_H_
21 #define ModelAPI_Folder_H_
22
23 #include <ModelAPI.h>
24 #include <ModelAPI_Object.h>
25
26 /**\class ModelAPI_Folder
27  * \ingroup DataModel
28  * \brief Folder feature (groups the features).
29  */
30 class ModelAPI_Folder : public ModelAPI_Object
31 {
32 public:
33   MODELAPI_EXPORT ModelAPI_Folder();
34   /// To virtually destroy the fields of successors
35   MODELAPI_EXPORT virtual ~ModelAPI_Folder();
36
37   /// Folder feature ID
38   static const std::string& ID()
39   {
40     static const std::string MY_FOLDER_ID("Folder");
41     return MY_FOLDER_ID;
42   }
43
44   /// Returns the group identifier of all features
45   inline static std::string group()
46   {
47     static std::string MY_GROUP = "Folders";
48     return MY_GROUP;
49   }
50
51   /// Returns the group identifier of this result
52   virtual std::string groupName()
53   {
54     return group();
55   }
56
57   /// Attribute referring first feature in the folder
58   static const std::string& FIRST_FEATURE_ID()
59   {
60     static const std::string MY_FIRST_FEATURE_ID("first_feature");
61     return MY_FIRST_FEATURE_ID;
62   }
63
64   /// Attribute referring last feature in the folder
65   static const std::string& LAST_FEATURE_ID()
66   {
67     static const std::string MY_LAST_FEATURE_ID("last_feature");
68     return MY_LAST_FEATURE_ID;
69   }
70
71   /// Request for initialization of data model of the object: adding all attributes
72   MODELAPI_EXPORT virtual void initAttributes();
73
74   /// Computes or recomputes the results
75   MODELAPI_EXPORT virtual void execute();
76
77   /// Returns the feature is disabled or not.
78   virtual bool isDisabled()
79   { return false; }
80
81   //
82   // Helper methods, aliases for data()->method()
83   // -----------------------------------------------------------------------------------------------
84   /// Returns the name stored in the attribute
85   inline std::wstring name()
86   {
87     return data()->name();
88   }
89   /// Returns the reference attribute by the identifier
90   inline std::shared_ptr<ModelAPI_AttributeReference> reference(const std::string& theID)
91   {
92     return data()->reference(theID);
93   }
94
95   /// Returns the last visible feature in the folder, passing through invisible,
96   /// that may appear as the last ones.
97   MODELAPI_EXPORT std::shared_ptr<ModelAPI_Feature> lastVisibleFeature();
98
99 protected:
100   /// This method is called just after creation of the object: it must initialize
101   /// all fields, normally initialized in the constructor
102   MODELAPI_EXPORT virtual void init();
103 };
104
105 //! Pointer on a folder object
106 typedef std::shared_ptr<ModelAPI_Folder> FolderPtr;
107
108 #endif