Fonctionnement des directives optionnelles
==========================================

.. glossary::

   directive optionnelle
       directive activable ou désactivable 


Les directives sont  optionnelles si elles ont l'attribut ``tag``. 

Cet attribut tag n'est pas obligatoire, mais au niveau du code deux constantes sont utilisées::

    DIRECTIVE_OPTIONAL = 1
    DIRECTIVE_ACTIVE = 2

dans la classe Directive de fwobjects.py, il faut regarder l'attribut attrs. 

Si directive.attrs = 0, alors la directive n'est ni optionnelle, ni active.

La liste des tags pendant le lancement de l'application est stockée dans le library store.


Pour savoir si une directive est optionnelle ou active, faire un ``directive.is_active()`` ou un ``directive.is_optional()``.

* attrs=0 : pas optionnelle
* attrs=1 : optionnelle mais pas active
* attrs=3 : optionnelle et active

Attention : la valeur 2 correspond à non optionnelle mais active, ce qui n'a pas de sens. Les valeurs autorisées sont donc [0,1,3] 

activation depuis un fichier externe
------------------------------------

typiquement, les directives sont activées depuis l'ead

l'affectation de ``attrs`` se fait après l'action d'un visiteur qui modifie le ``library_store``

::

    if self.attrs !=0 and libray_store.tags[self.tag]:
        self.attrs = 3


liste des attributs
-------------------

les attributs possibles dans le xml des directives sont::

    attrs="0"
    attrs="1"
    attrs="3"

..    attrs="17"

