0024157: Parallelization of assembly part of BO
[occt.git] / src / IFSelect / IFSelect_Editor.cdl
1 -- Created on: 1998-02-23
2 -- Created by: Christian CAILLET
3 -- Copyright (c) 1998-1999 Matra Datavision
4 -- Copyright (c) 1999-2012 OPEN CASCADE SAS
5 --
6 -- The content of this file is subject to the Open CASCADE Technology Public
7 -- License Version 6.5 (the "License"). You may not use the content of this file
8 -- except in compliance with the License. Please obtain a copy of the License
9 -- at http://www.opencascade.org and read it completely before using this file.
10 --
11 -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12 -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 --
14 -- The Original Code and all software distributed under the License is
15 -- distributed on an "AS IS" basis, without warranty of any kind, and the
16 -- Initial Developer hereby disclaims all such warranties, including without
17 -- limitation, any warranties of merchantability, fitness for a particular
18 -- purpose or non-infringement. Please see the License for the specific terms
19 -- and conditions governing the rights and limitations under the License.
20
21
22
23 deferred class Editor  from IFSelect    inherits TShared
24
25     ---Purpose : An Editor defines a set of values and a way to edit them, on
26     --           an entity or on the model (e.g. on its header)
27     --           
28     --           Each Value is controlled by a TypedValue, with a number (it is
29     --           an Integer) and a name under two forms (complete and short)
30     --           and an edit mode
31
32 uses CString, Messenger from Message,
33      AsciiString from TCollection, HAsciiString from TCollection,
34      Array1OfTransient from TColStd, Array1OfAsciiString from TColStd,
35      Array1OfInteger from TColStd,   DictionaryOfInteger from Dico,
36      HSequenceOfHAsciiString from TColStd,
37      InterfaceModel from Interface,
38      TypedValue from Interface, EditValue from IFSelect,
39      EditForm from IFSelect, ListEditor from IFSelect
40
41 raises OutOfRange from Standard
42
43 is
44
45     Initialize (nbval : Integer);
46     ---Purpose : Prepares the list of Typed Values (gives its count)
47     --           This count can be tuned later, to a LOWER value, this allows
48     --           to initialize with a "maximum reservation" then cut the extra
49
50     SetNbValues (me : mutable; nbval : Integer)
51     ---Purpose : Adjusts the true count of values. It can be LOWER or equal to
52     --           the initial size (which then acts as a reservation), but never
53     --           greater
54         raises OutOfRange  is protected;
55     --           Error if <nbval> exceeds the initial reservation
56
57     SetValue (me : mutable; num : Integer;
58               typval : TypedValue;
59               shortname : CString = "";
60               accessmode : EditValue = IFSelect_Editable);
61     ---Purpose : Sets a Typed Value for a given ident and short name, with an
62     --           Edit Mode
63
64     SetList  (me : mutable; num : Integer; max : Integer = 0);
65     ---Purpose : Sets a parameter to be a List
66     --           max < 0 : not for a list (set when starting)
67     --           max = 0 : list with no length limit (default for SetList)
68     --           max > 0 : list limited to <max> items
69
70     NbValues (me) returns Integer;
71     ---Purpose : Returns the count of Typed Values
72
73     TypedValue (me; num : Integer) returns TypedValue;
74     ---Purpose : Returns a Typed Value from its ident
75
76     IsList (me; num : Integer) returns Boolean;
77     ---Purpose : Tells if a parameter is a list
78
79     MaxList (me; num : Integer) returns Integer;
80     ---Purpose : Returns max length allowed for a list
81     --           = 0 means : list with no limit
82     --           < 0 means : not a list
83
84     Name  (me; num : Integer; isshort : Boolean = Standard_False) returns CString;
85     ---Purpose : Returns the name of a Value (complete or short) from its ident
86     --           Short Name can be empty
87
88     EditMode (me; num : Integer) returns EditValue;
89     ---Purpose : Returns the edit mode of a Value
90
91     NameNumber   (me; name : CString) returns Integer;
92     ---Purpose : Returns the number (ident) of a Value, from its name, short or
93     --           complete. If not found, returns 0
94
95         -- Printings
96
97     PrintNames (me; S : Messenger from Message);
98
99     PrintDefs  (me; S : Messenger from Message; labels : Boolean = Standard_False);
100
101     MaxNameLength (me; what : Integer) returns Integer;
102     ---Purpose : Returns the MaxLength of, according to what :
103     --           <what> = -1 : length of short names
104     --           <what> =  0 : length of complete names
105     --           <what> =  1 : length of values labels
106
107         -- Specific methods
108
109     Label (me) returns AsciiString  is deferred;
110     ---Purpose : Returns the specific label
111
112     Form  (me; readonly : Boolean; undoable : Boolean = Standard_True)
113         returns EditForm  is virtual;
114     ---Purpose : Builds and Returns an EditForm, empty (no data yet)
115     --           Can be redefined to return a specific type of EditForm
116
117     Recognize (me; form : EditForm) returns Boolean  is deferred;
118     ---Purpose : Tells if this Editor can work on this EditForm and its content
119     --           (model, entity ?)
120
121     StringValue (me; form : EditForm;  num : Integer)
122         returns HAsciiString from TCollection  is deferred;
123     ---Purpose : Returns the value of an EditForm, for a given item
124     --           (if not a list. for a list, a Null String may be returned)
125
126     ListEditor  (me; num : Integer) returns ListEditor  is virtual;
127     ---Purpose : Returns a ListEditor for a parameter which is a List
128     --           Default returns a basic ListEditor for a List, a Null Handle
129     --           if <num> is not for a List. Can be redefined
130
131     ListValue   (me; form : EditForm;  num : Integer)
132         returns HSequenceOfHAsciiString from TColStd  is virtual;
133     ---Purpose : Returns the value of an EditForm as a List, for a given item
134     --           If not a list, a Null Handle should be returned
135     --           Default returns a Null Handle, because many Editors have
136     --           no list to edit. To be redefined as required
137
138     Load  (me; form : mutable EditForm; ent : Transient; model : InterfaceModel)
139         returns Boolean  is deferred;
140     ---Purpose : Loads original values from some data, to an EditForm
141     --           Remark: <ent> may be Null, this means all <model> is concerned
142     --           Also <model> may be Null, if no context applies for <ent>
143     --           And both <ent> and <model> may be Null, for a full static
144     --           editor
145
146     Update (me; form : mutable EditForm; num : Integer;
147             newval : HAsciiString; enforce : Boolean)
148         returns Boolean  is virtual;
149     ---Purpose : Updates the EditForm when a parameter is modified
150     --           I.E.  default does nothing, can be redefined, as follows :
151     --           Returns True when done (even if does nothing), False in case
152     --           of refuse (for instance, if the new value is not suitable)
153     --           <num> is the rank of the parameter for the EDITOR itself
154     --           <enforce> True means that protected parameters can be touched
155     --           
156     --           If a parameter commands the value of other ones, when it is
157     --           modified, it is necessary to touch them by Touch from EditForm
158
159     UpdateList (me; form : mutable EditForm; num : Integer;
160             newlist : HSequenceOfHAsciiString; enforce : Boolean)
161         returns Boolean  is virtual;
162     ---Purpose : Acts as Update, but when the value is a list
163
164     Apply (me; form : EditForm; ent : Transient; model : InterfaceModel)
165         returns Boolean  is deferred;
166     ---Purpose : Applies modified values of the EditForm with some data
167     --           Remark: <ent> may be Null, this means all <model> is concerned
168     --           Also <model> may be Null, if no context applies for <ent>
169     --           And both <ent> and <model> may be Null, for a full static
170     --           editor
171
172 fields
173
174     thenbval : Integer;
175     themaxsh : Integer;
176     themaxco : Integer;
177     themaxla : Integer;
178     thenames  : DictionaryOfInteger;
179     thevalues : Array1OfTransient;
180     theshorts : Array1OfAsciiString;
181     themodes  : Array1OfInteger;
182     thelists  : Array1OfInteger;
183
184 end Editor;