Salome HOME
CCAR : Suppression des surcharges de methodes faites pour Eficas1.5
[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
55   def liste_mc_presents(self):
56     return []
57
58   def delete_concept(self,sd):
59     """ 
60         Inputs :
61            - sd=concept detruit
62         Fonction : Mettre a jour les fils de l objet suite à la disparition 
63         du concept sd
64         Seuls les mots cles simples MCSIMP font un traitement autre 
65         que de transmettre aux fils
66     """
67     for child in self.data :
68       child.delete_concept(sd)
69
70   def replace_concept(self,old_sd,sd):
71     """
72         Inputs :
73            - old_sd=concept remplacé
74            - sd=nouveau concept
75         Fonction : Mettre a jour les fils de l objet suite au remplacement 
76         du concept old_sd
77     """
78     for child in self.data :
79       child.replace_concept(old_sd,sd)
80
81   def get_docu(self):
82     return self.data[0].definition.get_docu()
83
84   def get_liste_mc_inconnus(self):
85      """
86      Retourne la liste des mots-clés inconnus dans self
87      """
88      l_mc = []
89      for mcfact in self.data :
90         if mcfact.isvalid() : continue
91         l_child = mcfact.get_liste_mc_inconnus()
92         for mc in l_child:
93            l = [self]
94            l.extend(mc)
95            l_mc.append(l)
96      return l_mc
97
98   def verif_condition_regles(self,liste_presents):
99     """
100         Retourne la liste des mots-clés à rajouter pour satisfaire les règles
101         en fonction de la liste des mots-clés présents
102     """
103     # Sans objet pour une liste de mots clés facteurs
104     return []
105
106   def verif_condition_bloc(self):
107     """ 
108         Evalue les conditions de tous les blocs fils possibles 
109         (en fonction du catalogue donc de la définition) de self et 
110         retourne deux listes :
111            - la première contient les noms des blocs à rajouter
112            - la seconde contient les noms des blocs à supprimer
113     """
114     # Sans objet pour une liste de mots clés facteurs
115     return [],[]
116
117   def init_modif(self):
118     """
119        Met l'état de l'objet à modified et propage au parent
120        qui vaut None s'il n'existe pas
121     """
122     self.state = 'modified'
123     if self.parent:
124       self.parent.init_modif()
125
126   def get_genealogie(self):
127      """
128          Retourne la liste des noms des ascendants.
129          Un objet MCList n'est pas enregistré dans la genealogie.
130          XXX Meme si le MCFACT fils ne l'est pas lui non plus ????
131      """
132      if self.parent: 
133         return self.parent.get_genealogie()
134      else:
135         return []
136
137   def get_liste_mc_ordonnee_brute(self,liste,dico):
138      """
139          Retourne la liste ordonnée (suivant le catalogue) BRUTE des mots-clés
140          d'une entité composée dont le chemin complet est donné sous forme
141          d'une liste du type :ETAPE + MCFACT ou MCBLOC + ...
142      """
143      for arg in liste:
144         objet_cata = dico[arg]
145         dico=objet_cata.entites
146      return objet_cata.ordre_mc
147
148   def verif_existence_sd(self):
149      """
150         Vérifie que les structures de données utilisées dans self existent bien dans le contexte
151         avant étape, sinon enlève la référence à ces concepts
152      """
153      for motcle in self.data :
154          motcle.verif_existence_sd()
155
156   def get_fr(self):
157      """
158          Retourne la chaine d'aide contenue dans le catalogue
159          en tenant compte de la langue
160      """
161      try :
162         return self.data[0].get_fr()
163      except:
164         return ''
165