]> SALOME platform Git repositories - tools/eficas.git/blob - Ihm/I_MCLIST.py
Salome HOME
ajout pour accepter les accents sous python 2.3
[tools/eficas.git] / Ihm / I_MCLIST.py
1 # -*- coding: utf-8 -*-
2 #            CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
9 #
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
14 #
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
18 #
19 #
20 # ======================================================================
21 from copy import copy
22
23 class MCList:
24   def isMCList(self):
25     """ 
26        Retourne 1 si self est une MCList (liste de mots-clés), 0 sinon (défaut) 
27     """
28     return 1
29
30   def get_index(self,objet):
31     """
32         Retourne la position d'objet dans la liste self
33     """
34     return self.data.index(objet)
35
36   def ajout_possible(self):
37     """ 
38         Méthode booléenne qui retourne 1 si on peut encore ajouter une occurrence
39         de l'élément que contient self, 0 sinon 
40     """
41     max = self.data[0].definition.max
42     if max == '**':
43       return 1
44     else:
45       if len(self) < max :
46         return 1
47       else:
48         return 0
49
50   def isoblig(self):
51      """
52      Une MCList n'est jamais obligatoire (même si le MCFACT qu'elle représente l'est
53      """
54      return 0
55
56   def liste_mc_presents(self):
57     return []
58
59   def delete_concept(self,sd):
60     """ 
61         Inputs :
62            - sd=concept detruit
63         Fonction : Mettre a jour les fils de l objet suite à la disparition 
64         du concept sd
65         Seuls les mots cles simples MCSIMP font un traitement autre 
66         que de transmettre aux fils
67     """
68     for child in self.data :
69       child.delete_concept(sd)
70
71   def replace_concept(self,old_sd,sd):
72     """
73         Inputs :
74            - old_sd=concept remplacé
75            - sd=nouveau concept
76         Fonction : Mettre a jour les fils de l objet suite au remplacement 
77         du concept old_sd
78     """
79     for child in self.data :
80       child.replace_concept(old_sd,sd)
81
82   def get_docu(self):
83     return self.data[0].definition.get_docu()
84
85   def get_liste_mc_inconnus(self):
86      """
87      Retourne la liste des mots-clés inconnus dans self
88      """
89      l_mc = []
90      for mcfact in self.data :
91         if mcfact.isvalid() : continue
92         l_child = mcfact.get_liste_mc_inconnus()
93         for mc in l_child:
94            l = [self]
95            l.extend(mc)
96            l_mc.append(l)
97      return l_mc
98
99   def verif_condition_regles(self,liste_presents):
100     """
101         Retourne la liste des mots-clés à rajouter pour satisfaire les règles
102         en fonction de la liste des mots-clés présents
103     """
104     # Sans objet pour une liste de mots clés facteurs
105     return []
106
107   def verif_condition_bloc(self):
108     """ 
109         Evalue les conditions de tous les blocs fils possibles 
110         (en fonction du catalogue donc de la définition) de self et 
111         retourne deux listes :
112            - la première contient les noms des blocs à rajouter
113            - la seconde contient les noms des blocs à supprimer
114     """
115     # Sans objet pour une liste de mots clés facteurs
116     return [],[]
117
118   def init_modif(self):
119     """
120        Met l'état de l'objet à modified et propage au parent
121        qui vaut None s'il n'existe pas
122     """
123     self.state = 'modified'
124     if self.parent:
125       self.parent.init_modif()
126
127   def get_genealogie(self):
128      """
129          Retourne la liste des noms des ascendants.
130          Un objet MCList n'est pas enregistré dans la genealogie.
131          XXX Meme si le MCFACT fils ne l'est pas lui non plus ????
132      """
133      if self.parent: 
134         return self.parent.get_genealogie()
135      else:
136         return []
137
138   def get_liste_mc_ordonnee_brute(self,liste,dico):
139      """
140          Retourne la liste ordonnée (suivant le catalogue) BRUTE des mots-clés
141          d'une entité composée dont le chemin complet est donné sous forme
142          d'une liste du type :ETAPE + MCFACT ou MCBLOC + ...
143      """
144      for arg in liste:
145         objet_cata = dico[arg]
146         dico=objet_cata.entites
147      return objet_cata.ordre_mc
148
149   def verif_existence_sd(self):
150      """
151         Vérifie que les structures de données utilisées dans self existent bien dans le contexte
152         avant étape, sinon enlève la référence à ces concepts
153      """
154      for motcle in self.data :
155          motcle.verif_existence_sd()
156
157   def get_fr(self):
158      """
159          Retourne la chaine d'aide contenue dans le catalogue
160          en tenant compte de la langue
161      """
162      try :
163         return self.data[0].get_fr()
164      except:
165         return ''
166