1 // Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
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.
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.
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
17 // See http://www.salome-platform.org/
24 #include <MMgt_TShared.hxx>
26 #include <TCollection_AsciiString.hxx>
28 #include <TColStd_HArray1OfInteger.hxx>
29 #include <TColStd_HArray1OfExtendedString.hxx>
31 #include <NCollection_DataMap.hxx>
32 #include <NCollection_DefineIndexedDataMap.hxx>
36 class TColStd_MapOfReal;
37 class TColStd_SequenceOfInteger;
38 class TColStd_SequenceOfAsciiString;
39 class TColStd_SequenceOfExtendedString;
41 // Class, containing all information about one parameter:
43 // obligative: label, type, short description, required
44 // optional : format, units,
45 // min value, max value, default value.
47 class DDS_DicItem : public MMgt_TShared
50 enum Type { String, Float, Integer, List, Unknown };
51 enum Data { MinValue = 0x01, MaxValue = 0x02, DefaultValue = 0x04 };
53 // This struct is intended for map of Format, Units, Precision and Scale
57 Standard_Real myScale;
58 TCollection_AsciiString myUnits;
59 TCollection_AsciiString myFormat;
60 Standard_Integer myPrecision;
63 typedef TCollection_AsciiString UnitSystem;
68 Standard_EXPORT TCollection_AsciiString GetId() const;
69 // to access Type of the parameter
71 Standard_EXPORT DDS_DicItem::Type GetType() const;
72 // to access Type of the parameter
74 Standard_EXPORT TCollection_ExtendedString GetLabel() const;
75 // to access Label (name) of the parameter
77 Standard_EXPORT TCollection_ExtendedString GetFilter() const;
78 // to access filter (regexp) for the parameter values
80 Standard_EXPORT TCollection_ExtendedString GetRequired() const;
81 // to access Required of the parameter
83 Standard_EXPORT DDS_MsgType GetWarningLevel() const;
84 // to access wrong value warning level of the parameter
86 Standard_EXPORT TCollection_ExtendedString GetLongDescription() const;
87 // to access Long Description of the parameter
89 Standard_EXPORT TCollection_ExtendedString GetShortDescription() const;
90 // to access Short Description of the parameter
92 Standard_EXPORT TCollection_AsciiString GetComponent() const;
94 Standard_EXPORT TCollection_AsciiString GetUnits() const;
95 Standard_EXPORT TCollection_AsciiString GetUnits( const UnitSystem& ) const;
96 // returns units for indicated unit systems
98 Standard_EXPORT TCollection_ExtendedString GetDefaultValue() const;
99 Standard_EXPORT TCollection_ExtendedString GetDefaultValue( const UnitSystem& ) const;
100 // to access Default Value of the parameter
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)
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)
110 Standard_EXPORT Standard_Integer GetPrecision() const;
111 Standard_EXPORT Standard_Integer GetPrecision( const UnitSystem& ) const;
112 // returns precision for indicated unit systems
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
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
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
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
137 Standard_EXPORT Standard_Boolean GetSpecialValues( TColStd_MapOfReal& ) const;
138 // get values from specVal
140 Standard_EXPORT Standard_Real GetMinZoom() const;
141 // get Min Value of lateral zooming
143 Standard_EXPORT Standard_Real GetMaxZoom() const;
144 // get Max Value of lateral zooming
146 Standard_EXPORT Standard_Real GetZoomOrder() const;
147 // get Order of lateral zooming
149 Standard_EXPORT Standard_Real ToSI( const Standard_Real ) const;
150 Standard_EXPORT Standard_Real FromSI( const Standard_Real ) const;
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
156 Standard_EXPORT Standard_Boolean HasData( const Standard_Integer ) const;
159 DDS_DicItem( const DDS_DicItem& );
162 void operator=( const DDS_DicItem& );
163 // Assignment operator
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
171 void PrepareFormats( const TCollection_AsciiString& );
172 // prepares three formats for each unit systems
174 void GetDefaultFormat();
175 // returns three default formants for each unit systems
177 UnitSystem GetActiveUnitSystem() const;
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
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
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
202 void Split( const TCollection_AsciiString&,
203 Handle(TColStd_HArray1OfExtendedString)& );
205 UnitData* GetUnitData( const UnitSystem& ) const;
208 TCollection_AsciiString myId;
209 TCollection_ExtendedString myLabel;
210 TCollection_ExtendedString myFilter;
211 TCollection_ExtendedString myRequired;
213 Standard_Integer myType;
214 Standard_Integer myWarnLevel;
216 TCollection_ExtendedString myLongDescr;
217 TCollection_ExtendedString myShortDescr;
221 Standard_Real myDefValue;
222 TCollection_ExtendedString myDefString;
224 Standard_Integer myData;
227 TCollection_ExtendedString myListName;
229 Handle(TColStd_HArray1OfExtendedString) myListRef;
230 Handle(TColStd_HArray1OfInteger) myListRefID;
231 Handle(TColStd_HArray1OfExtendedString) myListRefIcons;
234 Standard_Real myMinZoom;
235 Standard_Real myMaxZoom;
236 Standard_Real myZoomOrder;
238 Handle(Standard_Transient) myComponent;
241 NCollection_DataMap<UnitSystem, UnitData> myUnitData;
243 friend class DDS_DicGroup;
246 // Declaration of CASCADE RTTI
247 DEFINE_STANDARD_RTTI(DDS_DicItem)
250 // Definition of HANDLE object using Standard_DefineHandle.hxx
251 DEFINE_STANDARD_HANDLE(DDS_DicItem, MMgt_TShared)
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))