The chooser widget and Python interface of the
                          Model object are described in this section. They
                          are needed when a database contains several meshes or several sets of
                          coordinates. When this is not the case, this section can be skipped.
                          It is worth mentioning that the chooser for the
                          Model object is very similar to the chooser of the
                          Field object.
               
The chooser is a sub-object of the Model
                          object permitting to select or rather choose among the various models
                          and their meshes that may be present in the Model
                          object's database. The chooser can be understood as a sequence of
                          key-value pairs, with the keys being the Model
                          enumerators, and the values being the selected enumerator values. It
                          permits to select which mesh should be loaded.
               
The keys-value pairs are arranged in a sequence to represent a
                          desired hierarchy (for instance, first the
                          (optimization-)GENERATION, then the
                          (per-generation) VARIANT, then the (computational)
                          DISCIPLINE. This will allow to enumerate the
                          different meshes in that order. Usually, the default hierarchy is
                          sufficient.
               
The chooser widget, which is found on the "Load" page of the
                          Model editor is the graphical interface to the
                          chooser sub-object.
               
The chooser widget allows for defining the enumerator hierarchy and for selecting enumerator values.
Depending on
- 
                        
The datasets present in the database,
 - 
                        
And the enumerator hierarchy,
 
the possible enumerator values are determined by the chooser. These values are available in the drop-down combo boxes. The chooser will always allow to select any of the currently possible enumerator values. However, it is not possible to select a non-existent enumerator value. Thus, the choice presented and allowed by the chooser will always be a valid one.
The display level can be set using the drop-down combo box at the upper right of the widget. There are the following display levels:
- 
                        
Level 1: Only display those enumerators that allow for choosing between multiple values. This level is the default.
 - 
                        
Level 2: Additionally display those enumerators allowing for a single value which is not "None".
 - 
                        
Level 3: Display all enumerators.
 
We assume that the variable "m" references a
                          Model object. To obtain the current hierarchy and
                          enumerator values of the chooser sub-object, enter 
               
>>> m.ch
[('GENERATION', 'Iter_001'), ('VARIANT', 'Var_014'), 
 ('DISCIPLINE', 'Wela'), ('MESHCYCLE', None), ('COORCYCLE', None)]or
for item in m.ch:
    print item.name    # The enumerator name (key).
    print item.value   # The enumerator value.
    print item.names   # The list of possible names at this level.
    print item.values  # The list of possible values.Thus, the chooser consists of a sequence of so-called items. These items can be accessed
- 
                        
By index:
>>> print m.ch[2] ('DISCIPLINE', 'Wela')and
>>> for i in range(len(m.ch)): ... print m.ch[i] ... ('GENERATION', 'Iter_001') ('VARIANT', 'Var_014') ('DISCIPLINE', 'Wela') ('MESHCYCLE', None) ('COORCYCLE', None) - 
                        
By name:
>>> print m.ch['DISCIPLINE'] ('DISCIPLINE', 'Wela') 
On an item, the name and value can be changed:
- 
                        
Setting the value can be done:
>>> m.ch['DISCIPLINE'].value = 'WT'
If the value of "WT" is not a valid one, an exception will be raised.
For enumerators known to baspl++, there is a shortcut:
>>> m.ch.discipline = 'WT'
 
For more information on the Python interface of chooser objects, see also Section 4.3.
When a change is made to the chooser, this change is by default
                          not immediately reflected on the Model object's
                          data (for performance reasons). It is thus possible to reset the
                          chooser to the previously selected values by pressing the "Reset"
                          button. To make the changes take effect, the "Apply" button in the
                          chooser widget must be pressed, or in the Python environment, assuming
                          that "f" references the mesh object, 
               
f.load()
has the same effect.
When stepping through different meshes, it can be convenient to
                          have the Model object re-loading automatically when
                          the cycle changes. This is achieved by ticking the
                          Synchronized check box in the chooser widget. From
                          the Python environment: 
               
f.ch.synchronized = True
                          The Model object will now be re-loaded
                          automatically each time a value of the chooser's enumerators is
                          changed, and it is no longer necessary to call the
                          load() function.
               


