X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=Ihm%2FI_MCLIST.py;h=f15824cb6d2f74d8c0c00a673679e9e62236d5b0;hb=36ca867c4099d6a804374b8f6a2b897d9ea69a09;hp=428abd318e31449ccb01e31f2fa9415cc8cca557;hpb=7949edc0190c5f01f9cb19c4f8ea3894354b6bdf;p=tools%2Feficas.git diff --git a/Ihm/I_MCLIST.py b/Ihm/I_MCLIST.py index 428abd31..f15824cb 100644 --- a/Ihm/I_MCLIST.py +++ b/Ihm/I_MCLIST.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -17,7 +18,9 @@ # # # ====================================================================== +import types,traceback from copy import copy +import CONNECTOR class MCList: def isMCList(self): @@ -46,14 +49,65 @@ class MCList: 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 - #for i in self.data: - # if i.isoblig():return 1 - #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 [] @@ -81,21 +135,6 @@ class MCList: for child in self.data : child.replace_concept(old_sd,sd) - def copy(self): - """ - Réalise la copie d'une MCList - """ - liste = self.data[0].definition.list_instance() - # 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 - def get_docu(self): return self.data[0].definition.get_docu() @@ -121,6 +160,16 @@ class MCList: # 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 @@ -129,7 +178,7 @@ class MCList: - 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): @@ -141,15 +190,15 @@ class MCList: 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 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): """ @@ -173,16 +222,6 @@ class MCList: dico=objet_cata.entites return objet_cata.ordre_mc - 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 @@ -191,16 +230,6 @@ class MCList: for motcle in self.data : motcle.verif_existence_sd() - def get_sd_utilisees(self): - """ - Retourne la liste des concepts qui sont utilisés à l'intérieur de self - ( comme valorisation d'un MCS) - """ - l=[] - for motcle in self.data: - l.extend(motcle.get_sd_utilisees()) - return l - def get_fr(self): """ Retourne la chaine d'aide contenue dans le catalogue