Salome HOME
This commit was generated by cvs2git to track changes on a CVS vendor
[tools/eficas.git] / Editeur / uiinfo.py
1 #            CONFIGURATION MANAGEMENT OF EDF VERSION
2 # ======================================================================
3 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
4 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
5 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
6 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
7 # (AT YOUR OPTION) ANY LATER VERSION.
8 #
9 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
10 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
11 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
12 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
13 #
14 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
15 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
16 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
17 #
18 #
19 # ======================================================================
20 """
21    Ce module sert à construire les structures de données porteuses 
22    des informations liées aux groupes de commandes
23 """
24 import types
25
26 class UIINFO:
27    """
28        Pour le moment la classe UIINFO ne sait traiter que des infos
29        portant sur la definition des groupes de commandes
30        Les autres informations sont ignorées
31    """
32    def __init__(self,parent,groupes=None,**args):
33       """
34          Initialiseur de la classe UIINFO.
35          Initialise a partir du dictionnaire UIinfo passé à
36          un objet ENTITE les attributs de la classe
37       """
38       # L'attribut parent stocke le lien vers l'objet ENTITE relié à UIINFO
39       self.parent=parent
40       self.groupes=groupes
41       if groupes == None:
42          # L'entite n'a pas de groupe associé. On lui associe le groupe "DEFAUT"
43          self.groupes=("DEFAUT",)
44       if type(self.groupes) != types.TupleType:
45          self.groupes=(self.groupes,)
46
47 def traite_commande(commande,niveau):
48     """
49         Cette fonction cree l'attribut UI de l'objet commande
50         à partir des informations contenues dans UIinfo
51     """
52     uiinfo=commande.UIinfo or {}
53     UI=UIINFO(commande,**uiinfo)
54     commande.UI=UI
55     if "CACHE" in UI.groupes:
56         # La commande est cachee aux utilisateurs
57         #niveau.dict_groupes["CACHE"].append(commande.nom)
58         pass
59     else:
60         # On ajoute la commande dans tous les groupes specifies
61         for grp in UI.groupes:
62             if not niveau.dict_groupes.has_key(grp): niveau.dict_groupes[grp]=[]
63             niveau.dict_groupes[grp].append(commande.nom)
64
65 def traite_niveau(niveau):
66    if niveau.l_niveaux == ():
67        # Il n'y a pas de sous niveaux. niveau.entites ne contient que des commandes
68        niveau.dict_groupes={}
69        for oper in niveau.entites:
70            traite_commande(oper,niveau)
71        # A la fin les cles du dictionnaire dict_groupes donnent la liste des groupes
72        # sans doublon
73        niveau.liste_groupes=niveau.dict_groupes.keys()
74        # On ordonne les listes alphabétiquement
75        niveau.liste_groupes.sort()
76        for v in niveau.dict_groupes.values():v.sort()
77        #print niveau.liste_groupes
78        #print niveau.dict_groupes
79    else:
80        for niv in niveau.l_niveaux:
81            traite_niveau(niv)
82
83 def traite_UIinfo(cata):
84    """
85       Cette fonction parcourt la liste des commandes d'un catalogue (cata)
86       construit les objets UIINFO à partir de l'attribut UIinfo de la commande
87       et construit la liste complète de tous les groupes présents
88    """
89    #dict_groupes["CACHE"]=[]
90    #XXX Ne doit pas marcher avec les niveaux
91    if cata.JdC.l_niveaux == ():
92        # Il n'y a pas de niveaux
93        # On stocke la liste des groupes et leur contenu dans le JdC
94        # dans les attributs liste_groupes et dict_groupes
95        cata.JdC.dict_groupes={}
96        for commande in cata.JdC.commandes:
97            traite_commande(commande,cata.JdC)
98        # A la fin les cles du dictionnaire dict_groupes donnent la liste des groupes
99        # sans doublon
100        cata.JdC.liste_groupes=cata.JdC.dict_groupes.keys()
101        # On ordonne les listes alphabétiquement
102        cata.JdC.liste_groupes.sort()
103        for v in cata.JdC.dict_groupes.values():v.sort()
104        #print cata.JdC.liste_groupes
105        #print cata.JdC.dict_groupes
106    else:
107        # Le catalogue de commandes contient des définitions de niveau
108        for niv in cata.JdC.l_niveaux:
109           traite_niveau(niv)
110
111
112
113