Salome HOME
CCAR: Modified Files:
[tools/eficas.git] / Ihm / I_MCLIST.py
1 from copy import copy
2
3 class MCList:
4   def isMCList(self):
5     """ 
6        Retourne 1 si self est une MCList (liste de mots-clés), 0 sinon (défaut) 
7     """
8     return 1
9
10   def get_index(self,objet):
11     """
12         Retourne la position d'objet dans la liste self
13     """
14     return self.data.index(objet)
15
16   def ajout_possible(self):
17     """ 
18         Méthode booléenne qui retourne 1 si on peut encore ajouter une occurrence
19         de l'élément que contient self, 0 sinon 
20     """
21     max = self.data[0].definition.max
22     if max == '**':
23       return 1
24     else:
25       if len(self) < max :
26         return 1
27       else:
28         return 0
29
30   def isoblig(self):
31     for i in self.data:
32       if i.isoblig():return 1
33     return 0
34
35   def liste_mc_presents(self):
36     return []
37
38   def delete_concept(self,sd):
39     """ 
40         Inputs :
41            sd=concept detruit
42         Fonction :
43            Mettre a jour les fils de l objet suite à la disparition 
44            du concept sd
45            Seuls les mots cles simples MCSIMP font un traitement autre 
46            que de transmettre aux fils
47     """
48     for child in self.data :
49       child.delete_concept(sd)
50
51   def copy(self):
52     """
53        Réalise la copie d'une MCList
54     """
55     liste = self.data[0].definition.list_instance()
56     # FR -->Il faut spécifier un parent pour la méthode init qui attend 2 arguments ...
57     liste.init(self.nom,self.parent)
58     for objet in self:
59       new_obj = objet.copy()
60       # Pour etre coherent avec le constructeur de mots cles facteurs N_FACT.__call__
61       # dans lequel le parent de l'element d'une MCList est le parent de la MCList
62       new_obj.reparent(self.parent)
63       liste.append(new_obj)
64     return liste
65
66   def get_docu(self):
67     return self.data[0].definition.get_docu()
68
69   def get_liste_mc_inconnus(self):
70      """
71      Retourne la liste des mots-clés inconnus dans self
72      """
73      l_mc = []
74      for mcfact in self.data :
75         if mcfact.isvalid() : continue
76         l_child = mcfact.get_liste_mc_inconnus()
77         if l_child :
78            l = [self]
79            l.extend(l_child)
80            l_mc.append(l)
81      return l_mc
82
83   def verif_condition_regles(self,liste_presents):
84     """
85         Retourne la liste des mots-clés à rajouter pour satisfaire les règles
86         en fonction de la liste des mots-clés présents
87     """
88     # Sans objet pour une liste de mots clés facteurs
89     return []
90
91   def verif_condition_bloc(self):
92     """ 
93         Evalue les conditions de tous les blocs fils possibles 
94         (en fonction du catalogue donc de la définition) de self et 
95         retourne deux listes :
96         - la première contient les noms des blocs à rajouter
97         - la seconde contient les noms des blocs à supprimer
98     """
99     # Sans objet pour une liste de mots clés facteurs
100     return [],[]
101
102   def init_modif(self):
103     """
104        Met l'état de l'objet à modified et propage au parent
105        qui vaut None s'il n'existe pas
106     """
107     self.state = 'modified'
108     if self.parent:
109       self.parent.init_modif()
110
111   def get_etape(self):
112      """
113         Retourne l'étape à laquelle appartient self
114         Un objet de la catégorie etape doit retourner self pour indiquer que
115         l'étape a été trouvée
116         XXX double emploi avec self.etape ???
117      """
118      if self.parent == None: return None
119      return self.parent.get_etape()
120
121   def get_genealogie(self):
122      """
123          Retourne la liste des noms des ascendants.
124          Un objet MCList n'est pas enregistré dans la genealogie.
125          XXX Meme si le MCFACT fils ne l'est pas lui non plus ????
126      """
127      if self.parent: 
128         return self.parent.get_genealogie()
129      else:
130         return []
131
132   def get_liste_mc_ordonnee_brute(self,liste,dico):
133      """
134          Retourne la liste ordonnée (suivant le catalogue) BRUTE des mots-clés
135          d'une entité composée dont le chemin complet est donné sous forme
136          d'une liste du type :ETAPE + MCFACT ou MCBLOC + ...
137      """
138      for arg in liste:
139         objet_cata = dico[arg]
140         dico=objet_cata.dico
141      return objet_cata.liste
142
143   def reparent(self,parent):
144      """
145          Cette methode sert a reinitialiser la parente de l'objet
146      """
147      self.parent=parent
148      self.jdc=parent.jdc
149      self.etape=etape
150      for mcfact in self.data:
151         mcfact.reparent(parent)
152