Salome HOME
CCAR: ajout du repertoire Doc qui contient un Makefile pour générer une doc
[tools/eficas.git] / Ihm / I_MCLIST.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 from copy import copy
21
22 class MCList:
23   def isMCList(self):
24     """ 
25        Retourne 1 si self est une MCList (liste de mots-clés), 0 sinon (défaut) 
26     """
27     return 1
28
29   def get_index(self,objet):
30     """
31         Retourne la position d'objet dans la liste self
32     """
33     return self.data.index(objet)
34
35   def ajout_possible(self):
36     """ 
37         Méthode booléenne qui retourne 1 si on peut encore ajouter une occurrence
38         de l'élément que contient self, 0 sinon 
39     """
40     max = self.data[0].definition.max
41     if max == '**':
42       return 1
43     else:
44       if len(self) < max :
45         return 1
46       else:
47         return 0
48
49   def isoblig(self):
50      """
51      Une MCList n'est jamais obligatoire (même si le MCFACT qu'elle représente l'est
52      """
53      return 0
54      #for i in self.data:
55      #  if i.isoblig():return 1
56      #return 0
57
58   def liste_mc_presents(self):
59     return []
60
61   def delete_concept(self,sd):
62     """ 
63         Inputs :
64            - sd=concept detruit
65         Fonction : Mettre a jour les fils de l objet suite à la disparition 
66         du concept sd
67         Seuls les mots cles simples MCSIMP font un traitement autre 
68         que de transmettre aux fils
69     """
70     for child in self.data :
71       child.delete_concept(sd)
72
73   def replace_concept(self,old_sd,sd):
74     """
75         Inputs :
76            - old_sd=concept remplacé
77            - sd=nouveau concept
78         Fonction : Mettre a jour les fils de l objet suite au remplacement 
79         du concept old_sd
80     """
81     for child in self.data :
82       child.replace_concept(old_sd,sd)
83
84   def copy(self):
85     """
86        Réalise la copie d'une MCList
87     """
88     liste = self.data[0].definition.list_instance()
89     # FR -->Il faut spécifier un parent pour la méthode init qui attend 2 arguments ...
90     liste.init(self.nom,self.parent)
91     for objet in self:
92       new_obj = objet.copy()
93       # Pour etre coherent avec le constructeur de mots cles facteurs N_FACT.__call__
94       # dans lequel le parent de l'element d'une MCList est le parent de la MCList
95       new_obj.reparent(self.parent)
96       liste.append(new_obj)
97     return liste
98
99   def get_docu(self):
100     return self.data[0].definition.get_docu()
101
102   def get_liste_mc_inconnus(self):
103      """
104      Retourne la liste des mots-clés inconnus dans self
105      """
106      l_mc = []
107      for mcfact in self.data :
108         if mcfact.isvalid() : continue
109         l_child = mcfact.get_liste_mc_inconnus()
110         for mc in l_child:
111            l = [self]
112            l.extend(mc)
113            l_mc.append(l)
114      return l_mc
115
116   def verif_condition_regles(self,liste_presents):
117     """
118         Retourne la liste des mots-clés à rajouter pour satisfaire les règles
119         en fonction de la liste des mots-clés présents
120     """
121     # Sans objet pour une liste de mots clés facteurs
122     return []
123
124   def verif_condition_bloc(self):
125     """ 
126         Evalue les conditions de tous les blocs fils possibles 
127         (en fonction du catalogue donc de la définition) de self et 
128         retourne deux listes :
129            - la première contient les noms des blocs à rajouter
130            - la seconde contient les noms des blocs à supprimer
131     """
132     # Sans objet pour une liste de mots clés facteurs
133     return [],[]
134
135   def init_modif(self):
136     """
137        Met l'état de l'objet à modified et propage au parent
138        qui vaut None s'il n'existe pas
139     """
140     self.state = 'modified'
141     if self.parent:
142       self.parent.init_modif()
143
144   def get_etape(self):
145      """
146         Retourne l'étape à laquelle appartient self
147         Un objet de la catégorie etape doit retourner self pour indiquer que
148         l'étape a été trouvée
149         XXX double emploi avec self.etape ???
150      """
151      if self.parent == None: return None
152      return self.parent.get_etape()
153
154   def get_genealogie(self):
155      """
156          Retourne la liste des noms des ascendants.
157          Un objet MCList n'est pas enregistré dans la genealogie.
158          XXX Meme si le MCFACT fils ne l'est pas lui non plus ????
159      """
160      if self.parent: 
161         return self.parent.get_genealogie()
162      else:
163         return []
164
165   def get_liste_mc_ordonnee_brute(self,liste,dico):
166      """
167          Retourne la liste ordonnée (suivant le catalogue) BRUTE des mots-clés
168          d'une entité composée dont le chemin complet est donné sous forme
169          d'une liste du type :ETAPE + MCFACT ou MCBLOC + ...
170      """
171      for arg in liste:
172         objet_cata = dico[arg]
173         dico=objet_cata.entites
174      return objet_cata.ordre_mc
175
176   def reparent(self,parent):
177      """
178          Cette methode sert a reinitialiser la parente de l'objet
179      """
180      self.parent=parent
181      self.jdc=parent.jdc
182      self.etape=parent.etape
183      for mcfact in self.data:
184         mcfact.reparent(parent)
185
186   def verif_existence_sd(self):
187      """
188         Vérifie que les structures de données utilisées dans self existent bien dans le contexte
189         avant étape, sinon enlève la référence à ces concepts
190      """
191      for motcle in self.data :
192          motcle.verif_existence_sd()
193
194   def get_sd_utilisees(self):
195     """
196         Retourne la liste des concepts qui sont utilisés à l'intérieur de self
197         ( comme valorisation d'un MCS)
198     """
199     l=[]
200     for motcle in self.data:
201       l.extend(motcle.get_sd_utilisees())
202     return l
203
204   def get_fr(self):
205      """
206          Retourne la chaine d'aide contenue dans le catalogue
207          en tenant compte de la langue
208      """
209      try :
210         return self.data[0].get_fr()
211      except:
212         return ''
213