modes
This commit is contained in:
parent
04f8fc048c
commit
99d9fb7e70
|
@ -44,7 +44,7 @@ En plus de la description, il est possible de préciser une aide complémentaire
|
|||
|
||||
## Mode de la famille
|
||||
|
||||
Le [mode](../mode.md) par défaut d'une famille correspond au [mode](../mode.md) le plus petite des variables ou des familles qui sont contenu dans cette famille.
|
||||
Le [mode](../mode.md) par défaut d'une famille correspond au [mode](../mode.md) du mode le plus petit entre la famille parente, les variables enfants ou des familles enfants qui sont contenu dans cette famille.
|
||||
|
||||
Changer le [mode](../mode.md) d'une famille permet de définir le [mode](../mode.md) par défaut des variables ou des familles inclusent dans cette famille.
|
||||
|
||||
|
|
|
@ -8,6 +8,8 @@ Une variable meneuse est une [variable](simple.md) qui est obligatoirement de ty
|
|||
|
||||
Une variable meneuse peut être obligatoire.
|
||||
|
||||
Le [mode](../mode.md) par défaut correspond au plus petit mode définit par l'utilisateur des variables suiveuses.
|
||||
|
||||
## Variable suiveuse
|
||||
|
||||
Une variable suiveuse est une variable donc la longueur n'est pas déterminé par elle-même, mais est identique à celle de la variable meneuse dont elle dépend.
|
||||
|
|
|
@ -74,18 +74,6 @@ Pour définir une variable à valeur multiple :
|
|||
<variable name="my_variable" multi="True"/>
|
||||
```
|
||||
|
||||
## Mode de la variable
|
||||
|
||||
Le [mode](../mode.md) par défaut d'une variable correspond au [mode](../mode.md) de la [famille](../family/README.md).
|
||||
|
||||
Si la variable n'est pas dans une famille, la variable aura le mode "normal" par défaut.
|
||||
|
||||
Pour définir le [mode](../mode.md) :
|
||||
|
||||
```
|
||||
<variable name="my_variable" mode="expert"/>
|
||||
```
|
||||
|
||||
## Variable invisible
|
||||
|
||||
Il est possible de cacher une variable.
|
||||
|
@ -236,3 +224,19 @@ Il est possible de préciser plusieurs valeurs avec le séparateur "|" :
|
|||
```
|
||||
<variable name="my_variable" test="yes|no"/>
|
||||
```
|
||||
|
||||
## Mode de la variable
|
||||
|
||||
Le [mode](../mode.md) par défaut d'une variable correspond au [mode](../mode.md) de la [famille](../family/README.md).
|
||||
|
||||
Cas particuliers :
|
||||
|
||||
- une variable à valeur automatiquement modifiée ou une variable en lecture seule automatique est par défaut en mode "basic".
|
||||
- si la variable n'est pas dans une famille, la variable aura le mode "normal" par défaut.
|
||||
- une variable obligatoire sans valeur par défaut (calculer ou non) aura le mode "basic".
|
||||
|
||||
Pour définir le [mode](../mode.md) :
|
||||
|
||||
```
|
||||
<variable name="my_variable" mode="expert"/>
|
||||
```
|
||||
|
|
|
@ -145,7 +145,8 @@ class FamilyAnnotator(Walk):
|
|||
(variable.auto_save is True or variable.auto_freeze is True):
|
||||
self._set_auto_mode(variable, modes_level[0])
|
||||
# mandatory variable without value is a basic variable
|
||||
elif variable.mandatory is True and \
|
||||
elif not self._has_mode(variable) and \
|
||||
variable.mandatory is True and \
|
||||
not hasattr(variable, 'default') and \
|
||||
not hasattr(variable, 'default_multi'):
|
||||
self._set_auto_mode(variable, modes_level[0])
|
||||
|
@ -170,11 +171,12 @@ class FamilyAnnotator(Walk):
|
|||
msg = f'leader/followers "{follower.name}" could not be auto_freeze'
|
||||
raise DictConsistencyError(_(msg), 30, leadership.xmlfiles)
|
||||
if leader_mode is not None:
|
||||
# leader's mode is minimum level
|
||||
if modes[leader_mode] > modes[follower.mode]:
|
||||
if self._has_mode(follower) and not self._has_mode(leadership.variable[0]):
|
||||
# if follower has mode but not the leader
|
||||
self._set_auto_mode(leadership.variable[0], follower.mode)
|
||||
else:
|
||||
# leader's mode is minimum level
|
||||
if self._has_mode(follower):
|
||||
msg = _(f'the follower "{follower.name}" is in "{follower.mode}" mode '
|
||||
f'but leader have the higher mode "{leader_mode}"')
|
||||
|
@ -219,7 +221,6 @@ class FamilyAnnotator(Walk):
|
|||
def _change_variable_mode(self,
|
||||
variable,
|
||||
family_mode: str,
|
||||
is_follower=False,
|
||||
) -> None:
|
||||
# none basic variable in high level family has to be in high level
|
||||
if modes[variable.mode] < modes[family_mode]:
|
||||
|
@ -233,13 +234,10 @@ class FamilyAnnotator(Walk):
|
|||
leadership,
|
||||
family_mode: str,
|
||||
) -> None:
|
||||
is_follower = False
|
||||
for follower in leadership.variable:
|
||||
self._change_variable_mode(follower,
|
||||
family_mode,
|
||||
is_follower,
|
||||
)
|
||||
is_follower = True
|
||||
leadership.variable[0].mode = None
|
||||
|
||||
def dynamic_families(self):
|
||||
|
|
Loading…
Reference in New Issue