Salome HOME
Update from BR_V5_DEV 13Feb2009
[modules/gui.git] / src / DDS / DDS_DicItem.h
1 //  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 //  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 //  This library is free software; you can redistribute it and/or
7 //  modify it under the terms of the GNU Lesser General Public
8 //  License as published by the Free Software Foundation; either
9 //  version 2.1 of the License.
10 //
11 //  This library is distributed in the hope that it will be useful,
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 //  Lesser General Public License for more details.
15 //
16 //  You should have received a copy of the GNU Lesser General Public
17 //  License along with this library; if not, write to the Free Software
18 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 #ifndef DDS_DICITEM_H
23 #define DDS_DICITEM_H
24
25 #include "DDS.h"
26
27 #include <MMgt_TShared.hxx>
28
29 #include <TCollection_AsciiString.hxx>
30
31 #include <TColStd_HArray1OfInteger.hxx>
32 #include <TColStd_HArray1OfExtendedString.hxx>
33
34 #include <NCollection_DataMap.hxx>
35 #include <NCollection_DefineIndexedDataMap.hxx>
36
37 class LDOM_Element;
38 class DDS_Dictionary;
39 class TColStd_MapOfReal;
40 class TColStd_SequenceOfInteger;
41 class TColStd_SequenceOfAsciiString;
42 class TColStd_SequenceOfExtendedString;
43
44 //  Class, containing all information about one parameter:
45 //  unique    : id
46 //  obligative: label, type, short description, required
47 //  optional  : format, units,
48 //              min value, max value, default value.
49
50 class DDS_DicItem : public MMgt_TShared
51 {
52 public:
53   /*! Enum describes type of datum value */
54   enum Type
55   {
56     String,  //!< String type of value
57     Float,   //!< Real (double) numeric type of value
58     Integer, //!< Integer (int) numeric type of value
59     List,    //!< List type of enumerable value
60     Unknown  //!< Unknown or undefined type of value
61   };
62
63   /*! Enum describes the flags for existance of domain data */
64   enum Data
65   {
66     MinValue = 0x01,    //!< Flag of minimum value definition existence
67     MaxValue = 0x02,    //!< Flag of maximum value definition existence
68     DefaultValue = 0x04 //!< Flag of default value definition existence
69   };
70
71   // This struct is intended for map of Format, Units, Precision and Scale
72   struct UnitData
73   {
74     Standard_Real           myZero;
75     Standard_Real           myScale;
76     TCollection_AsciiString myUnits;
77     TCollection_AsciiString myFormat;
78     Standard_Integer        myPrecision;
79   };
80
81   typedef TCollection_AsciiString UnitSystem;
82
83 public:
84   DDS_DicItem();
85
86   Standard_EXPORT TCollection_AsciiString    GetId() const;
87   Standard_EXPORT DDS_DicItem::Type          GetType() const;
88   Standard_EXPORT TCollection_ExtendedString GetLabel() const;
89   Standard_EXPORT TCollection_ExtendedString GetFilter() const;
90   Standard_EXPORT TCollection_ExtendedString GetRequired() const;
91   Standard_EXPORT DDS_MsgType                GetWarningLevel() const;
92   Standard_EXPORT TCollection_ExtendedString GetLongDescription() const;
93   Standard_EXPORT TCollection_ExtendedString GetShortDescription() const;
94   Standard_EXPORT TCollection_AsciiString    GetComponent() const;
95
96   Standard_EXPORT TCollection_AsciiString    GetUnits() const;
97   Standard_EXPORT TCollection_AsciiString    GetUnits( const UnitSystem& ) const;
98
99   Standard_EXPORT TCollection_ExtendedString GetDefaultValue() const;
100   Standard_EXPORT TCollection_ExtendedString GetDefaultValue( const UnitSystem& ) const;
101
102   Standard_EXPORT Standard_Real              GetMinValue() const;
103   Standard_EXPORT Standard_Real              GetMinValue( const UnitSystem& ) const;
104
105   Standard_EXPORT Standard_Real              GetMaxValue() const;
106   Standard_EXPORT Standard_Real              GetMaxValue( const UnitSystem& ) const;
107
108   Standard_EXPORT Standard_Integer           GetPrecision() const;
109   Standard_EXPORT Standard_Integer           GetPrecision( const UnitSystem& ) const;
110
111   Standard_EXPORT TCollection_AsciiString    GetFormat( const Standard_Boolean = Standard_True ) const;
112   Standard_EXPORT TCollection_AsciiString    GetFormat( const UnitSystem&,
113                                                         const Standard_Boolean = Standard_True ) const;
114   Standard_EXPORT TCollection_ExtendedString GetNameOfValues() const;
115   Standard_EXPORT Standard_Boolean           GetListOfValues( Handle(TColStd_HArray1OfExtendedString)&,
116                                                               Handle(TColStd_HArray1OfInteger)& ) const;
117   Standard_EXPORT Standard_Boolean           GetListOfValues( Handle(TColStd_HArray1OfExtendedString)&,
118                                                               Handle(TColStd_HArray1OfInteger)&,
119                                                               Handle(TColStd_HArray1OfExtendedString)& ) const;
120   Standard_EXPORT Standard_Boolean           GetSpecialValues( TColStd_MapOfReal& ) const;
121
122   Standard_EXPORT Standard_Real              GetMinZoom() const;
123   Standard_EXPORT Standard_Real              GetMaxZoom() const;
124   Standard_EXPORT Standard_Real              GetZoomOrder() const;
125
126   Standard_EXPORT Standard_Real              ToSI( const Standard_Real ) const;
127   Standard_EXPORT Standard_Real              FromSI( const Standard_Real ) const;
128
129   Standard_EXPORT Standard_Real              ToSI( const Standard_Real, const UnitSystem& ) const;
130   Standard_EXPORT Standard_Real              FromSI( const Standard_Real, const UnitSystem& ) const;
131
132   Standard_EXPORT Standard_Boolean           HasData( const Standard_Integer ) const;
133
134   Standard_EXPORT TCollection_ExtendedString GetOption( const TCollection_AsciiString& ) const;
135   Standard_EXPORT Standard_Boolean           GetOptionNames( TColStd_SequenceOfAsciiString& ) const;
136
137 private:
138   DDS_DicItem( const DDS_DicItem& );
139   void                                       operator=( const DDS_DicItem& );
140   void                                       FillDataMap( TCollection_AsciiString, const LDOM_Element&,
141                                                           const LDOM_Element&, const LDOM_Element&,
142                                                           const TColStd_SequenceOfAsciiString& );
143   void                                       PrepareFormats( const TCollection_AsciiString& );
144   void                                       GetDefaultFormat();
145   UnitSystem                                 GetActiveUnitSystem() const;
146
147   void                                       GetStringFormat( const TCollection_AsciiString&,
148                                                               const TCollection_AsciiString&,
149                                                               const TCollection_AsciiString&,
150                                                               const TCollection_AsciiString&,
151                                                               TCollection_AsciiString& );
152   void                                       GetIntegerFormat( const TCollection_AsciiString&,
153                                                                const TCollection_AsciiString&,
154                                                                const TCollection_AsciiString&,
155                                                                const TCollection_AsciiString&,
156                                                                const Standard_Character,
157                                                                TCollection_AsciiString& );
158   void                                       GetFloatFormat( const TCollection_AsciiString&,
159                                                              const TCollection_AsciiString&,
160                                                              const TCollection_AsciiString&,
161                                                              const TCollection_AsciiString&,
162                                                              const Standard_Character,
163                                                              TCollection_AsciiString& );
164   void                                       Split( const TCollection_AsciiString&,
165                                                     Handle(TColStd_HArray1OfExtendedString)& );
166
167   UnitData*                                  GetUnitData( const UnitSystem& ) const;
168
169 private:
170   typedef NCollection_DataMap<TCollection_AsciiString, TCollection_ExtendedString> OptionsMap;
171
172 private:
173   TCollection_AsciiString                    myId;
174   TCollection_ExtendedString                 myLabel;
175   TCollection_ExtendedString                 myFilter;
176   TCollection_ExtendedString                 myRequired;
177
178   Standard_Integer                           myType;
179   Standard_Integer                           myWarnLevel;
180
181   TCollection_ExtendedString                 myLongDescr;
182   TCollection_ExtendedString                 myShortDescr;
183
184   Standard_Real                              myMax;
185   Standard_Real                              myMin;
186   Standard_Real                              myDefValue;
187   TCollection_ExtendedString                 myDefString;
188
189   Standard_Integer                           myData;
190
191   // valueList
192   TCollection_ExtendedString                 myListName;
193
194   Handle(TColStd_HArray1OfExtendedString)    myListRef;
195   Handle(TColStd_HArray1OfInteger)           myListRefID;
196   Handle(TColStd_HArray1OfExtendedString)    myListRefIcons;
197
198   // presentation
199   Standard_Real                              myMinZoom;
200   Standard_Real                              myMaxZoom;
201   Standard_Real                              myZoomOrder;
202
203   Handle(Standard_Transient)                 myComponent;
204
205   OptionsMap                                 myOptions;
206   // unitData
207   NCollection_DataMap<UnitSystem, UnitData>  myUnitData;
208
209   friend class DDS_DicGroup;
210
211 public:
212   // Declaration of CASCADE RTTI
213   DEFINE_STANDARD_RTTI(DDS_DicItem)
214 };
215
216 DEFINE_STANDARD_HANDLE(DDS_DicItem, MMgt_TShared)
217
218 DEFINE_BASECOLLECTION(DDS_BaseCollectionOfDicItems, Handle(DDS_DicItem))
219 DEFINE_INDEXEDDATAMAP(DDS_IndexedDataMapOfDicItems, DDS_BaseCollectionOfDicItems,
220                       TCollection_AsciiString, Handle(DDS_DicItem))
221
222 #endif