1 // Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
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.
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.
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
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
27 #include <MMgt_TShared.hxx>
29 #include <TCollection_AsciiString.hxx>
31 #include <TColStd_HArray1OfInteger.hxx>
32 #include <TColStd_HArray1OfExtendedString.hxx>
34 #include <NCollection_DataMap.hxx>
35 #include <NCollection_DefineIndexedDataMap.hxx>
39 class TColStd_MapOfReal;
40 class TColStd_SequenceOfInteger;
41 class TColStd_SequenceOfAsciiString;
42 class TColStd_SequenceOfExtendedString;
44 // Class, containing all information about one parameter:
46 // obligative: label, type, short description, required
47 // optional : format, units,
48 // min value, max value, default value.
50 class DDS_DicItem : public MMgt_TShared
53 /*! Enum describes type of datum value */
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
63 /*! Enum describes the flags for existance of domain data */
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
71 // This struct is intended for map of Format, Units, Precision and Scale
75 Standard_Real myScale;
76 TCollection_AsciiString myUnits;
77 TCollection_AsciiString myFormat;
78 Standard_Integer myPrecision;
81 typedef TCollection_AsciiString UnitSystem;
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;
96 Standard_EXPORT TCollection_AsciiString GetUnits() const;
97 Standard_EXPORT TCollection_AsciiString GetUnits( const UnitSystem& ) const;
99 Standard_EXPORT TCollection_ExtendedString GetDefaultValue() const;
100 Standard_EXPORT TCollection_ExtendedString GetDefaultValue( const UnitSystem& ) const;
102 Standard_EXPORT Standard_Real GetMinValue() const;
103 Standard_EXPORT Standard_Real GetMinValue( const UnitSystem& ) const;
105 Standard_EXPORT Standard_Real GetMaxValue() const;
106 Standard_EXPORT Standard_Real GetMaxValue( const UnitSystem& ) const;
108 Standard_EXPORT Standard_Integer GetPrecision() const;
109 Standard_EXPORT Standard_Integer GetPrecision( const UnitSystem& ) const;
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;
122 Standard_EXPORT Standard_Real GetMinZoom() const;
123 Standard_EXPORT Standard_Real GetMaxZoom() const;
124 Standard_EXPORT Standard_Real GetZoomOrder() const;
126 Standard_EXPORT Standard_Real ToSI( const Standard_Real ) const;
127 Standard_EXPORT Standard_Real FromSI( const Standard_Real ) const;
129 Standard_EXPORT Standard_Real ToSI( const Standard_Real, const UnitSystem& ) const;
130 Standard_EXPORT Standard_Real FromSI( const Standard_Real, const UnitSystem& ) const;
132 Standard_EXPORT Standard_Boolean HasData( const Standard_Integer ) const;
134 Standard_EXPORT TCollection_ExtendedString GetOption( const TCollection_AsciiString& ) const;
135 Standard_EXPORT Standard_Boolean GetOptionNames( TColStd_SequenceOfAsciiString& ) const;
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;
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)& );
167 UnitData* GetUnitData( const UnitSystem& ) const;
170 typedef NCollection_DataMap<TCollection_AsciiString, TCollection_ExtendedString> OptionsMap;
173 TCollection_AsciiString myId;
174 TCollection_ExtendedString myLabel;
175 TCollection_ExtendedString myFilter;
176 TCollection_ExtendedString myRequired;
178 Standard_Integer myType;
179 Standard_Integer myWarnLevel;
181 TCollection_ExtendedString myLongDescr;
182 TCollection_ExtendedString myShortDescr;
186 Standard_Real myDefValue;
187 TCollection_ExtendedString myDefString;
189 Standard_Integer myData;
192 TCollection_ExtendedString myListName;
194 Handle(TColStd_HArray1OfExtendedString) myListRef;
195 Handle(TColStd_HArray1OfInteger) myListRefID;
196 Handle(TColStd_HArray1OfExtendedString) myListRefIcons;
199 Standard_Real myMinZoom;
200 Standard_Real myMaxZoom;
201 Standard_Real myZoomOrder;
203 Handle(Standard_Transient) myComponent;
205 OptionsMap myOptions;
207 NCollection_DataMap<UnitSystem, UnitData> myUnitData;
209 friend class DDS_DicGroup;
212 // Declaration of CASCADE RTTI
213 DEFINE_STANDARD_RTTI(DDS_DicItem)
216 DEFINE_STANDARD_HANDLE(DDS_DicItem, MMgt_TShared)
218 DEFINE_BASECOLLECTION(DDS_BaseCollectionOfDicItems, Handle(DDS_DicItem))
219 DEFINE_INDEXEDDATAMAP(DDS_IndexedDataMapOfDicItems, DDS_BaseCollectionOfDicItems,
220 TCollection_AsciiString, Handle(DDS_DicItem))