Salome HOME
0e94235158bfc99495e7c390efb8b3cfc8d1c730
[modules/gui.git] / src / DDS / DDS_DicItem.h
1 // Copyright (C) 2005  CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA 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.
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/
18 //
19 #ifndef DDS_DICITEM_H
20 #define DDS_DICITEM_H
21
22 #include "DDS.h"
23
24 #include <MMgt_TShared.hxx>
25
26 #include <TCollection_AsciiString.hxx>
27
28 #include <TColStd_HArray1OfInteger.hxx>
29 #include <TColStd_HArray1OfExtendedString.hxx>
30
31 #include <NCollection_DataMap.hxx>
32 #include <NCollection_DefineIndexedDataMap.hxx>
33
34 class LDOM_Element;
35 class DDS_Dictionary;
36 class TColStd_MapOfReal;
37 class TColStd_SequenceOfInteger;
38 class TColStd_SequenceOfAsciiString;
39 class TColStd_SequenceOfExtendedString;
40
41 //  Class, containing all information about one parameter:
42 //  unique    : id
43 //  obligative: label, type, short description, required
44 //  optional  : format, units,
45 //              min value, max value, default value.
46
47 class DDS_DicItem : public MMgt_TShared
48 {
49 public:
50   enum Type { String, Float, Integer, List, Unknown };
51   enum Data { MinValue = 0x01, MaxValue = 0x02, DefaultValue = 0x04 };
52
53   // This struct is intended for map of Format, Units, Precision and Scale
54   struct UnitData
55   {
56     Standard_Real           myZero;
57     Standard_Real           myScale;
58     TCollection_AsciiString myUnits;
59     TCollection_AsciiString myFormat;
60     Standard_Integer        myPrecision;
61   };
62
63   typedef TCollection_AsciiString UnitSystem;
64
65 public:
66   DDS_DicItem();
67
68   Standard_EXPORT TCollection_AsciiString    GetId() const;
69   // to access Type of the parameter
70
71   Standard_EXPORT DDS_DicItem::Type          GetType() const;
72   // to access Type of the parameter
73
74   Standard_EXPORT TCollection_ExtendedString GetLabel() const;
75   // to access Label (name) of the parameter
76
77   Standard_EXPORT TCollection_ExtendedString GetFilter() const;
78   // to access filter (regexp) for the parameter values
79
80   Standard_EXPORT TCollection_ExtendedString GetRequired() const;
81   // to access Required of the parameter
82
83   Standard_EXPORT DDS_MsgType                GetWarningLevel() const;
84   // to access wrong value warning level of the parameter
85
86   Standard_EXPORT TCollection_ExtendedString GetLongDescription() const;
87   // to access Long Description of the parameter
88
89   Standard_EXPORT TCollection_ExtendedString GetShortDescription() const;
90   // to access Short Description of the parameter
91
92   Standard_EXPORT TCollection_AsciiString    GetComponent() const;
93
94   Standard_EXPORT TCollection_AsciiString    GetUnits() const;
95   Standard_EXPORT TCollection_AsciiString    GetUnits( const UnitSystem& ) const;
96   // returns units for indicated unit systems
97
98   Standard_EXPORT TCollection_ExtendedString GetDefaultValue() const;
99   Standard_EXPORT TCollection_ExtendedString GetDefaultValue( const UnitSystem& ) const;
100   // to access Default Value of the parameter
101
102   Standard_EXPORT Standard_Real              GetMinValue() const;
103   Standard_EXPORT Standard_Real              GetMinValue( const UnitSystem& ) const;
104   // get Min Value of the parameter, either in specified unit system or in internal units (basic SI)
105
106   Standard_EXPORT Standard_Real              GetMaxValue() const;
107   Standard_EXPORT Standard_Real              GetMaxValue( const UnitSystem& ) const;
108   // get Max Value of the parameter, either in specified unit system or in internal units (basic SI)
109
110   Standard_EXPORT Standard_Integer           GetPrecision() const;
111   Standard_EXPORT Standard_Integer           GetPrecision( const UnitSystem& ) const;
112   // returns precision for indicated unit systems
113
114   Standard_EXPORT TCollection_AsciiString    GetFormat( const Standard_Boolean = Standard_True ) const;
115   Standard_EXPORT TCollection_AsciiString    GetFormat( const UnitSystem&,
116                                                         const Standard_Boolean = Standard_True ) const;
117   // returns format for indicated unit systems
118
119   Standard_EXPORT TCollection_ExtendedString GetNameOfValues() const;
120   // to access valueList:name of the parameter.
121   // This string is void if the list is not defined - then use other properties:
122   //    Type, DefaultValue, MaxValue, MinValue
123
124   Standard_EXPORT Standard_Boolean           GetListOfValues( Handle(TColStd_HArray1OfExtendedString)&,
125                                                               Handle(TColStd_HArray1OfInteger)& ) const;
126   // to access valueList of the parameter
127   // This sequence is empty if the list not defined - then use other properties:
128   //    Type, DefaultValue, MaxValue, MinValue
129
130   Standard_EXPORT Standard_Boolean           GetListOfValues( Handle(TColStd_HArray1OfExtendedString)&,
131                                                               Handle(TColStd_HArray1OfInteger)&,
132                                                               Handle(TColStd_HArray1OfExtendedString)& ) const;
133   // to access valueList of the parameter
134   // This sequence is empty if the list not defined - then use other properties:
135   //    Type, DefaultValue, MaxValue, MinValue
136
137   Standard_EXPORT Standard_Boolean           GetSpecialValues( TColStd_MapOfReal& ) const;
138   // get values from specVal
139
140   Standard_EXPORT Standard_Real              GetMinZoom() const;
141   // get Min Value of lateral zooming
142
143   Standard_EXPORT Standard_Real              GetMaxZoom() const;
144   // get Max Value of lateral zooming
145
146   Standard_EXPORT Standard_Real              GetZoomOrder() const;
147   // get Order of lateral zooming
148
149   Standard_EXPORT Standard_Real ToSI( const Standard_Real ) const;
150   Standard_EXPORT Standard_Real FromSI( const Standard_Real ) const;
151
152   Standard_EXPORT Standard_Real ToSI( const Standard_Real, const UnitSystem& ) const;
153   Standard_EXPORT Standard_Real FromSI( const Standard_Real, const UnitSystem& ) const;
154   // convert value to and from default SI units according to current units
155
156   Standard_EXPORT Standard_Boolean           HasData( const Standard_Integer ) const;
157
158 private:
159   DDS_DicItem( const DDS_DicItem& );
160   // Copy constructor
161
162   void                                       operator=( const DDS_DicItem& );
163   // Assignment operator
164
165   void                                       FillDataMap( TCollection_AsciiString, const LDOM_Element&,
166                                                           const LDOM_Element&, const LDOM_Element&,
167                                                           const TColStd_SequenceOfAsciiString& );
168   // prepares formants for each unit systems
169
170
171   void                                       PrepareFormats( const TCollection_AsciiString& );
172   // prepares three formats for each unit systems
173
174   void                                       GetDefaultFormat();
175   // returns three default formants for each unit systems
176
177   UnitSystem                                 GetActiveUnitSystem() const;
178
179   void                                       GetStringFormat( const TCollection_AsciiString&,
180                                                               const TCollection_AsciiString&,
181                                                               const TCollection_AsciiString&,
182                                                               const TCollection_AsciiString&,
183                                                               TCollection_AsciiString& );
184   // returns format for the string
185
186   void                                       GetIntegerFormat( const TCollection_AsciiString&,
187                                                                const TCollection_AsciiString&,
188                                                                const TCollection_AsciiString&,
189                                                                const TCollection_AsciiString&,
190                                                                const Standard_Character,
191                                                                TCollection_AsciiString& );
192   // returns format for the integer
193
194   void                                       GetFloatFormat( const TCollection_AsciiString&,
195                                                              const TCollection_AsciiString&,
196                                                              const TCollection_AsciiString&,
197                                                              const TCollection_AsciiString&,
198                                                              const Standard_Character,
199                                                              TCollection_AsciiString& );
200   // returns format for the float
201
202   void                                       Split( const TCollection_AsciiString&,
203                                                     Handle(TColStd_HArray1OfExtendedString)& );
204
205   UnitData*                                  GetUnitData( const UnitSystem& ) const;
206
207 private:
208   TCollection_AsciiString                    myId;
209   TCollection_ExtendedString                 myLabel;
210   TCollection_ExtendedString                 myFilter;
211   TCollection_ExtendedString                 myRequired;
212
213   Standard_Integer                           myType;
214   Standard_Integer                           myWarnLevel;
215
216   TCollection_ExtendedString                 myLongDescr;
217   TCollection_ExtendedString                 myShortDescr;
218
219   Standard_Real                              myMax;
220   Standard_Real                              myMin;
221   Standard_Real                              myDefValue;
222   TCollection_ExtendedString                 myDefString;
223
224   Standard_Integer                           myData;
225
226   // valueList
227   TCollection_ExtendedString                 myListName;
228
229   Handle(TColStd_HArray1OfExtendedString)    myListRef;
230   Handle(TColStd_HArray1OfInteger)           myListRefID;
231   Handle(TColStd_HArray1OfExtendedString)    myListRefIcons;
232
233   // presentation
234   Standard_Real                              myMinZoom;
235   Standard_Real                              myMaxZoom;
236   Standard_Real                              myZoomOrder;
237
238   Handle(Standard_Transient)                 myComponent;
239
240   // unitData
241   NCollection_DataMap<UnitSystem, UnitData>  myUnitData;
242
243   friend class DDS_DicGroup;
244
245 public:
246   // Declaration of CASCADE RTTI
247   DEFINE_STANDARD_RTTI(DDS_DicItem)
248 };
249
250 // Definition of HANDLE object using Standard_DefineHandle.hxx
251 DEFINE_STANDARD_HANDLE(DDS_DicItem, MMgt_TShared)
252
253 // Container class XMLTools_IndexedDataMapOfDicItems (map of handles)
254 DEFINE_BASECOLLECTION(DDS_BaseCollectionOfDicItems, Handle(DDS_DicItem))
255 DEFINE_INDEXEDDATAMAP(DDS_IndexedDataMapOfDicItems, DDS_BaseCollectionOfDicItems,
256                       TCollection_AsciiString, Handle(DDS_DicItem))
257
258 #endif