From: eficas <> Date: Tue, 23 Apr 2002 11:30:39 +0000 (+0000) Subject: F.R: composimp.py : dans méthode select_in_file, ajout d'un paramètre manquant dans le X-Git-Tag: CC_param_poursuite~419 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=019bec631bb27f0837556b11497b92c57115feff;p=modules%2Feficas.git F.R: composimp.py : dans méthode select_in_file, ajout d'un paramètre manquant dans le F.R: constructeur de FenetreDeSelection F.R: commande_comm.py : ajout de la méthode reparent F.R: I_ETAPE.py : - test supplémentaire dans le cas d'opérateur réentrant au niveau de nomme_sd : F.R: lorsqu'on trouve une sd du nom donné par l'utilisateur, F.R: il faut encore tester qu'elle est du type attendu !!! F.R: - surcharge de Build_sd du noyau en raison de l'absence de test F.R: de validité de l'étape avant la construction de la sd F.R: --> cette méthode devra disparaître et la modif répercutée dans le noyau F.R: I_MCSIMP.py : ajout des méthodes get_type et get_min_max utilisées lorsque F.R: l'on importe des valeurs depuis un fichier --- diff --git a/Editeur/composimp.py b/Editeur/composimp.py index f0368965..837fa925 100644 --- a/Editeur/composimp.py +++ b/Editeur/composimp.py @@ -472,10 +472,13 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel): f = open(nom_fichier, "rb") selection_texte = f.read() f.close() - self.ajout_valeurs = FenetreDeSelection(self, self.node.item, - titre="Sélection de valeurs", - texte=selection_texte) + self.ajout_valeurs = FenetreDeSelection(self, + self.node.item, + self.parent.appli, + titre="Sélection de valeurs", + texte=selection_texte) except: + traceback.print_exc() showinfo("Erreur de fichier","impossible d'ouvir le fichier "+nom_fichier) def get_bulle_aide(self): diff --git a/Extensions/commande_comm.py b/Extensions/commande_comm.py index adbf3bab..7e622720 100644 --- a/Extensions/commande_comm.py +++ b/Extensions/commande_comm.py @@ -217,3 +217,19 @@ class COMMANDE_COMM: """ return [] + def reparent(self,parent): + """ + Cette methode sert a reinitialiser la parente de l'objet + """ + self.parent=parent + self.jdc=parent.get_jdc_root() + self.etape=self + + 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 + --> sans objet pour les commandes commentarisées + """ + pass + diff --git a/Ihm/I_ETAPE.py b/Ihm/I_ETAPE.py index dc0c0b51..b5665280 100644 --- a/Ihm/I_ETAPE.py +++ b/Ihm/I_ETAPE.py @@ -93,8 +93,12 @@ class ETAPE(I_MCCOMPO.MCCOMPO): if self.definition.reentrant == 'f' : sd = self.jdc.get_sd_avant_etape(nom,self) if sd != None : - self.sd = self.reuse = sd - return 1,"Opérateur facultativement réentrant et concept existant trouvé" + # FR : il faut tester que la sd trouvée est du bon type !!!!!!!!!!!!!!!!! + if isinstance(sd,self.get_type_produit()) : + self.sd = self.reuse = sd + return 1,"Opérateur facultativement réentrant et concept existant trouvé" + else: + return 0,"Concept déjà existant et de mauvais type" else : # il faut éventuellement enlever le lien vers une SD existante car si on passe ici # cela signifie que l'opérateur n'est pas utilisé en mode réentrant. @@ -300,6 +304,56 @@ class ETAPE(I_MCCOMPO.MCCOMPO): for motcle in self.mc_liste : motcle.verif_existence_sd() + def Build_sd(self,nom): + """ + Construit le concept produit de l'opérateur. Deux cas + peuvent se présenter : + + - le parent n'est pas défini. Dans ce cas, l'étape prend en charge la création + et le nommage du concept. + + - le parent est défini. Dans ce cas, l'étape demande au parent la création et + le nommage du concept. + + """ + if not self.isactif():return + # FR : attention cette méthode ne devrait pas se trouver là car elle surcharge celle qui + # se trouve dans N_ETAPE.py et elle est partie intégrante du noyau, mais, suite à l'absence de + # test de validité de l'opérateur avant d'essayer de déterminer la sd produite, on n'arrivait + # pas à relire avec EFICAS un fichier contenant une étape encore incomplète du style : + # sansnom = AFFE_CHAR_CINE(MODELE=None) + # Suite à la stabilisation du noyau d'Aster, je n'ai pas eu d'autre solution que de surcharger + # cette méthode ici en rajoutant le test manquant ... + if not self.isvalid(sd='non') : return + try: + if self.parent: + sd= self.parent.create_sdprod(self,nom) + if type(self.definition.op_init) == types.FunctionType: + apply(self.definition.op_init,(self,self.parent.g_context)) + else: + sd=self.get_sd_prod() + # On n'utilise pas self.definition.op_init car self.parent + # n'existe pas + if sd != None and self.reuse == None: + # On ne nomme le concept que dans le cas de non reutilisation + # d un concept + sd.nom=nom + if self.jdc and self.jdc.par_lot == "NON" : + self.Execute() + return sd + except AsException,e: + raise AsException("Etape ",self.nom,'ligne : ',self.appel[0], + 'fichier : ',self.appel[1],e) + except EOFError: + # XXX Normalement le contexte courant doit etre le parent. + # Il n'y a pas de raison de remettre le contexte au parent + #self.reset_current_step() + raise + except : + l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2]) + raise AsException("Etape ",self.nom,'ligne : ',self.appel[0], + 'fichier : ',self.appel[1]+'\n', + string.join(l)) diff --git a/Ihm/I_MCSIMP.py b/Ihm/I_MCSIMP.py index 840c5934..b1709703 100644 --- a/Ihm/I_MCSIMP.py +++ b/Ihm/I_MCSIMP.py @@ -348,7 +348,18 @@ class MCSIMP(I_OBJECT.OBJECT): self.init_modif() - + def get_min_max(self): + """ + Retourne les valeurs min et max admissibles pour la valeur de self + """ + return self.definition.min,self.definition.max + + + def get_type(self): + """ + Retourne le type attendu par le mot-clé simple + """ + return self.definition.type