#
#
# ======================================================================
+import types,traceback
from copy import copy
+import CONNECTOR
class MCList:
def isMCList(self):
else:
return 0
+ def isrepetable(self):
+ """
+ Indique si l'objet est répétable.
+ Retourne 1 si le mot-clé facteur self peut être répété
+ Retourne 0 dans le cas contraire
+ """
+ if self.data[0].definition.max > 1:
+ # marche avec '**'
+ return 1
+ else :
+ return 0
+
def isoblig(self):
"""
Une MCList n'est jamais obligatoire (même si le MCFACT qu'elle représente l'est
"""
- return 0
+ return self.data[0].definition.statut=='o'
+
+ def suppentite(self,obj):
+ """
+ Supprime le mot cle facteur obj de la MCLIST
+ """
+ self.init_modif()
+ self.remove(obj)
+ CONNECTOR.Emit(self,"supp",obj)
+ self.fin_modif()
+ return 1
+
+ def addentite(self,obj,pos=None):
+ """
+ Ajoute le mot cle facteur obj a la MCLIST a la position pos
+ Retourne None si l'ajout est impossible
+ """
+ if type(obj)==types.StringType :
+ # on est en mode création d'un motcle
+ raise "traitement non prevu"
+
+ if not self.ajout_possible():
+ self.jdc.send_message("L'objet %s ne peut pas être ajouté" % obj.nom)
+ return None
+
+ if self.nom != obj.nom:
+ return None
+
+ if obj.isMCList():
+ obj=obj.data[0]
+
+ # Traitement du copier coller seulement
+ # Les autres cas d'ajout sont traites dans MCFACT
+ self.init_modif()
+ obj.verif_existence_sd()
+ obj.reparent(self.parent)
+ if pos is None:
+ self.append(obj)
+ else:
+ self.insert(pos,obj)
+ CONNECTOR.Emit(self,"add",obj)
+ self.fin_modif()
+ return obj
def liste_mc_presents(self):
return []
+ def update_concept(self,sd):
+ for child in self.data :
+ child.update_concept(sd)
+
def delete_concept(self,sd):
"""
Inputs :
# Sans objet pour une liste de mots clés facteurs
return []
+ def deep_update_condition_bloc(self):
+ """
+ Parcourt l'arborescence des mcobject et realise l'update
+ des blocs conditionnels par appel de la methode update_condition_bloc
+ """
+
+ #print "deep_update_condition_bloc",self
+ for mcfact in self.data :
+ mcfact.deep_update_condition_bloc()
+
def verif_condition_bloc(self):
"""
Evalue les conditions de tous les blocs fils possibles
- la première contient les noms des blocs à rajouter
- la seconde contient les noms des blocs à supprimer
"""
- # Sans objet pour une liste de mots clés facteurs
+ # Sans objet pour une liste de mots clés facteurs (a voir !!!)
return [],[]
def init_modif(self):
if self.parent:
self.parent.init_modif()
+ def fin_modif(self):
+ """
+ Méthode appelée après qu'une modification a été faite afin de déclencher
+ d'éventuels traitements post-modification
+ """
+ #print "fin_modif",self
+ CONNECTOR.Emit(self,"valid")
+ if self.parent:
+ self.parent.fin_modif()
+
def get_genealogie(self):
"""
Retourne la liste des noms des ascendants.