]> SALOME platform Git repositories - tools/eficas.git/blob - Editeur/uiinfo.py
Salome HOME
Merge branch 'master' into V9_merge
[tools/eficas.git] / Editeur / uiinfo.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2021   EDF R&D
3 #
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License.
8 #
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Lesser General Public License for more details.
13 #
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20 """
21    Ce module sert a construire les structures de donnees porteuses
22    des informations liees aux groupes de commandes
23 """
24 from __future__ import absolute_import
25 import types
26
27 class UIINFO:
28     """
29         Pour le moment la classe UIINFO ne sait traiter que des infos
30         portant sur la definition des groupes de commandes
31         Les autres informations sont ignorees
32     """
33     def __init__(self,parent,groupes=None,**args):
34         """
35            Initialiseur de la classe UIINFO.
36            Initialise a partir du dictionnaire UIinfo passe a
37            un objet ENTITE les attributs de la classe
38         """
39         # L'attribut parent stocke le lien vers l'objet ENTITE relie a UIINFO
40         self.parent=parent
41         self.groupes=groupes
42         if groupes == None:
43             # L'entite n'a pas de groupe associe. On lui associe le groupe "DEFAUT"
44             self.groupes=("DEFAUT",)
45         if type(self.groupes) != tuple:
46             self.groupes=(self.groupes,)
47
48 def traiteCommande(commande,niveau):
49     """
50         Cette fonction cree l'attribut UI de l'objet commande
51         a partir des informations contenues dans UIinfo
52     """
53     uiinfo=commande.UIinfo or {}
54     UI=UIINFO(commande,**uiinfo)
55     commande.UI=UI
56     #if "CACHE" in UI.groupes:
57         # La commande est cachee aux utilisateurs
58         #niveau.dict_groupes["CACHE"].append(commande.nom)
59         #pass
60     #else:
61         # On ajoute la commande dans tous les groupes specifies
62     for grp in UI.groupes:
63         if not grp in niveau.dict_groupes: niveau.dict_groupes[grp]=[]
64         niveau.dict_groupes[grp].append(commande.nom)
65
66 def traiteNiveau(niveau):
67     if niveau.l_niveaux == ():
68         # Il n'y a pas de sous niveaux. niveau.entites ne contient que des commandes
69         niveau.dict_groupes={}
70         for oper in niveau.entites:
71             traiteCommande(oper,niveau)
72         # A la fin les cles du dictionnaire dict_groupes donnent la liste des groupes
73         # sans doublon
74         niveau.liste_groupes=list(niveau.dict_groupes.keys())
75         # On ordonne les listes alphabetiquement
76         niveau.liste_groupes.sort()
77         for v in niveau.dict_groupes.values():v.sort()
78         #print niveau.liste_groupes
79         #print niveau.dict_groupes
80     else:
81         for niv in niveau.l_niveaux:
82             traiteNiveau(niv)
83
84 def traite_UIinfo(cata):
85     """
86        Cette fonction parcourt la liste des commandes d'un catalogue (cata)
87        construit les objets UIINFO a partir de l'attribut UIinfo de la commande
88        et construit la liste complete de tous les groupes presents
89     """
90     #dict_groupes["CACHE"]=[]
91     #XXX Ne doit pas marcher avec les niveaux
92     if cata.JdC.l_niveaux == ():
93         # Il n'y a pas de niveaux
94         # On stocke la liste des groupes et leur contenu dans le JdC
95         # dans les attributs liste_groupes et dict_groupes
96         cata.JdC.dict_groupes={}
97         for commande in cata.JdC.commandes:
98             traiteCommande(commande,cata.JdC)
99         # A la fin les cles du dictionnaire dict_groupes donnent la liste des groupes
100         # sans doublon
101         cata.JdC.liste_groupes=list(cata.JdC.dict_groupes.keys())
102         # On ordonne les listes alphabetiquement
103         cata.JdC.liste_groupes.sort()
104         for v in cata.JdC.dict_groupes.values():v.sort()
105         #print cata.JdC.liste_groupes
106         #print cata.JdC.dict_groupes
107     else:
108         # Le catalogue de commandes contient des definitions de niveau
109         for niv in cata.JdC.l_niveaux:
110             traiteNiveau(niv)