Salome HOME
F.R: - correction bug sur opérateur strictement réentrant (ex:DEFI_GROUP)
[tools/eficas.git] / Ihm / I_MCLIST.py
index c08a383493db0b9448b6767c156833671b4396d2..fc4afcf67cb224194193b4b1836c595ea7128582 100644 (file)
@@ -28,9 +28,13 @@ class MCList:
         return 0
 
   def isoblig(self):
-    for i in self.data:
-      if i.isoblig():return 1
-    return 0
+     """
+     Une MCList n'est jamais obligatoire (même si le MCFACT qu'elle représente l'est
+     """
+     return 0
+     #for i in self.data:
+     #  if i.isoblig():return 1
+     #return 0
 
   def liste_mc_presents(self):
     return []
@@ -49,11 +53,17 @@ class MCList:
       child.delete_concept(sd)
 
   def copy(self):
+    """
+       Réalise la copie d'une MCList
+    """
     liste = self.data[0].definition.list_instance()
-    # XXX Pas de parent ??
-    liste.init(self.nom)
+    # FR -->Il faut spécifier un parent pour la méthode init qui attend 2 arguments ...
+    liste.init(self.nom,self.parent)
     for objet in self:
       new_obj = objet.copy()
+      # Pour etre coherent avec le constructeur de mots cles facteurs N_FACT.__call__
+      # dans lequel le parent de l'element d'une MCList est le parent de la MCList
+      new_obj.reparent(self.parent)
       liste.append(new_obj)
     return liste
 
@@ -93,3 +103,61 @@ class MCList:
     # Sans objet pour une liste de mots clés facteurs
     return [],[]
 
+  def init_modif(self):
+    """
+       Met l'état de l'objet à modified et propage au parent
+       qui vaut None s'il n'existe pas
+    """
+    self.state = 'modified'
+    if self.parent:
+      self.parent.init_modif()
+
+  def get_etape(self):
+     """
+        Retourne l'étape à laquelle appartient self
+        Un objet de la catégorie etape doit retourner self pour indiquer que
+        l'étape a été trouvée
+        XXX double emploi avec self.etape ???
+     """
+     if self.parent == None: return None
+     return self.parent.get_etape()
+
+  def get_genealogie(self):
+     """
+         Retourne la liste des noms des ascendants.
+         Un objet MCList n'est pas enregistré dans la genealogie.
+         XXX Meme si le MCFACT fils ne l'est pas lui non plus ????
+     """
+     if self.parent: 
+        return self.parent.get_genealogie()
+     else:
+        return []
+
+  def get_liste_mc_ordonnee_brute(self,liste,dico):
+     """
+         Retourne la liste ordonnée (suivant le catalogue) BRUTE des mots-clés
+         d'une entité composée dont le chemin complet est donné sous forme
+         d'une liste du type :ETAPE + MCFACT ou MCBLOC + ...
+     """
+     for arg in liste:
+        objet_cata = dico[arg]
+        dico=objet_cata.dico
+     return objet_cata.liste
+
+  def reparent(self,parent):
+     """
+         Cette methode sert a reinitialiser la parente de l'objet
+     """
+     self.parent=parent
+     self.jdc=parent.jdc
+     self.etape=parent.etape
+     for mcfact in self.data:
+        mcfact.reparent(parent)
+
+  def verif_existence_sd(self):
+     """
+        Vérifie que les structures de données utilisées dans self existent bien dans le contexte
+       avant étape, sinon enlève la référence à ces concepts
+     """
+     for motcle in self.data :
+         motcle.verif_existence_sd()