modes
This commit is contained in:
parent
04f8fc048c
commit
99d9fb7e70
4 changed files with 23 additions and 19 deletions
|
@ -44,7 +44,7 @@ En plus de la description, il est possible de préciser une aide complémentaire
|
||||||
|
|
||||||
## Mode de la famille
|
## 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.
|
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.
|
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
|
## 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.
|
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"/>
|
<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
|
## Variable invisible
|
||||||
|
|
||||||
Il est possible de cacher une variable.
|
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"/>
|
<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):
|
(variable.auto_save is True or variable.auto_freeze is True):
|
||||||
self._set_auto_mode(variable, modes_level[0])
|
self._set_auto_mode(variable, modes_level[0])
|
||||||
# mandatory variable without value is a basic variable
|
# 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') and \
|
||||||
not hasattr(variable, 'default_multi'):
|
not hasattr(variable, 'default_multi'):
|
||||||
self._set_auto_mode(variable, modes_level[0])
|
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'
|
msg = f'leader/followers "{follower.name}" could not be auto_freeze'
|
||||||
raise DictConsistencyError(_(msg), 30, leadership.xmlfiles)
|
raise DictConsistencyError(_(msg), 30, leadership.xmlfiles)
|
||||||
if leader_mode is not None:
|
if leader_mode is not None:
|
||||||
# leader's mode is minimum level
|
|
||||||
if modes[leader_mode] > modes[follower.mode]:
|
if modes[leader_mode] > modes[follower.mode]:
|
||||||
if self._has_mode(follower) and not self._has_mode(leadership.variable[0]):
|
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)
|
self._set_auto_mode(leadership.variable[0], follower.mode)
|
||||||
else:
|
else:
|
||||||
|
# leader's mode is minimum level
|
||||||
if self._has_mode(follower):
|
if self._has_mode(follower):
|
||||||
msg = _(f'the follower "{follower.name}" is in "{follower.mode}" mode '
|
msg = _(f'the follower "{follower.name}" is in "{follower.mode}" mode '
|
||||||
f'but leader have the higher mode "{leader_mode}"')
|
f'but leader have the higher mode "{leader_mode}"')
|
||||||
|
@ -219,7 +221,6 @@ class FamilyAnnotator(Walk):
|
||||||
def _change_variable_mode(self,
|
def _change_variable_mode(self,
|
||||||
variable,
|
variable,
|
||||||
family_mode: str,
|
family_mode: str,
|
||||||
is_follower=False,
|
|
||||||
) -> None:
|
) -> None:
|
||||||
# none basic variable in high level family has to be in high level
|
# none basic variable in high level family has to be in high level
|
||||||
if modes[variable.mode] < modes[family_mode]:
|
if modes[variable.mode] < modes[family_mode]:
|
||||||
|
@ -233,13 +234,10 @@ class FamilyAnnotator(Walk):
|
||||||
leadership,
|
leadership,
|
||||||
family_mode: str,
|
family_mode: str,
|
||||||
) -> None:
|
) -> None:
|
||||||
is_follower = False
|
|
||||||
for follower in leadership.variable:
|
for follower in leadership.variable:
|
||||||
self._change_variable_mode(follower,
|
self._change_variable_mode(follower,
|
||||||
family_mode,
|
family_mode,
|
||||||
is_follower,
|
|
||||||
)
|
)
|
||||||
is_follower = True
|
|
||||||
leadership.variable[0].mode = None
|
leadership.variable[0].mode = None
|
||||||
|
|
||||||
def dynamic_families(self):
|
def dynamic_families(self):
|
||||||
|
|
Loading…
Reference in a new issue