Salome HOME
Merge remote-tracking branch 'remotes/origin/Dev_FolderFeature'
[modules/shaper.git] / src / Config / Config_Prop.h
1 // Copyright (C) 2014-2017  CEA/DEN, EDF R&D
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
18 // email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
19 //
20
21 #ifndef CONFIG_PROP_H
22 #define CONFIG_PROP_H
23
24 #include "Config_def.h"
25
26 #include <string>
27 #include <list>
28
29 static const char* SKETCH_TAB_NAME = "Sketch";
30
31 /*!
32  * \class Config_Prop
33  * \brief Class which describes a one property
34  * \ingroup Config
35  */
36 class Config_Prop
37 {
38  public:
39
40   /// Type of stored property
41   enum PropType
42   {
43     Disabled,
44     Space,
45     Boolean,
46     Color,
47     String,
48     Selector,
49     DblSpin,
50     IntSpin,
51     Double,
52     Integer,
53     GroupBox,
54     Tab,
55     Frame,
56     Font,
57     DirList,
58     File,
59     Slider,
60     Shortcut,
61     ShortcutTree,
62     BiColor,
63     Background,
64     Directory
65   };
66
67   /** 
68    * Creates a one property
69    * \param theSection - name of section (domain of using) of the property.
70    * \param theName - name (title) of the value.
71    * \param theTitle - title of the value
72    * \param theType - type of the value.
73    * \param theDefaultValue - default value of the property. This is an initial property value
74    */
75   Config_Prop(const std::string& theSection, const std::string& theName,
76               const std::string& theTitle, PropType theType, const std::string& theDefaultValue)
77   {
78     mySection = theSection;
79     myName = theName;
80     myTitle = theTitle;
81     myType = theType;
82     myValue = theDefaultValue;
83     myDefaultValue = theDefaultValue;
84   }
85
86   /// Get name of section
87   std::string section() const
88   {
89     return mySection;
90   }
91   /// Get name of property
92   std::string name() const
93   {
94     return myName;
95   }
96   /// Get title of property
97   std::string title() const
98   {
99     return myTitle;
100   }
101   /// Set title of property
102   void setTitle(const std::string& theTitle)
103   {
104     myTitle = theTitle;
105   }
106   /// Get type of property
107   PropType type() const
108   {
109     return myType;
110   }
111   /// Set type of property
112   void setType(PropType theType)
113   {
114     myType = theType;
115   }
116   /// Get property's value in string format
117   std::string value() const
118   {
119     return myValue;
120   }
121   /// Set property's value in string format
122   CONFIG_EXPORT void setValue(const std::string& theValue);
123   /// Get default value of property
124   std::string defaultValue() const
125   {
126     return myDefaultValue;
127   }
128   /// Set default value of property
129   CONFIG_EXPORT void setDefaultValue(const std::string& theValue);
130   /// Alows to compare Config_Prop with each other
131   bool operator==(const Config_Prop* theProp) const
132   {
133     return (mySection == theProp->section()) && (myName == theProp->name());
134   }
135
136  private:
137   std::string mySection; ///< Name of section
138   std::string myName; ///< Name of property
139   std::string myTitle; ///< Title of property
140   PropType myType; ///< Type of property
141   std::string myValue; // Value in string format
142   std::string myDefaultValue; // Default value
143 };
144
145 typedef std::list<Config_Prop*> Config_Properties;
146
147 #endif