From 019bec631bb27f0837556b11497b92c57115feff Mon Sep 17 00:00:00 2001 From: eficas <> Date: Tue, 23 Apr 2002 11:30:39 +0000 Subject: [PATCH] =?utf8?q?F.R:=20composimp.py=20:=20dans=20m=C3=A9thode=20?= =?utf8?q?select=5Fin=5Ffile,=20ajout=20d'un=20param=C3=A8tre=20manquant?= =?utf8?q?=20dans=20le=20F.R:=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?utf8?q?=20constructeur=20de=20FenetreDeSelection=20F.R:=20commande=5Fco?= =?utf8?q?mm.py=20:=20ajout=20de=20la=20m=C3=A9thode=20reparent=20F.R:=20I?= =?utf8?q?=5FETAPE.py=20:=20-=20test=20suppl=C3=A9mentaire=20dans=20le=20c?= =?utf8?q?as=20d'op=C3=A9rateur=20r=C3=A9entrant=20au=20niveau=20de=20nomm?= =?utf8?q?e=5Fsd=20:=20F.R:=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?utf8?q?=20lorsqu'on=20trouve=20une=20sd=20du=20nom=20donn=C3=A9=20par?= =?utf8?q?=20l'utilisateur,=20F.R:=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?utf8?q?=20=20=20il=20faut=20encore=20tester=20qu'elle=20est=20du=20type?= =?utf8?q?=20attendu=20!!!=20F.R:=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?utf8?q?=20-=20surcharge=20de=20Build=5Fsd=20du=20noyau=20en=20raison=20?= =?utf8?q?de=20l'absence=20de=20test=20F.R:=20=20=20=20=20=20=20=20=20=20?= =?utf8?q?=20=20=20=20=20=20de=20validit=C3=A9=20de=20l'=C3=A9tape=20avant?= =?utf8?q?=20la=20construction=20de=20la=20sd=20F.R:=20=20=20=20=20=20=20?= =?utf8?q?=20=20=20=20=20=20=20=20-->=20cette=20m=C3=A9thode=20devra=20dis?= =?utf8?q?para=C3=AEtre=20et=20la=20modif=20r=C3=A9percut=C3=A9e=20dans=20?= =?utf8?q?le=20noyau=20F.R:=20I=5FMCSIMP.py=20:=20ajout=20des=20m=C3=A9tho?= =?utf8?q?des=20get=5Ftype=20et=20get=5Fmin=5Fmax=20utilis=C3=A9es=20lorsq?= =?utf8?q?ue=20F.R:=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20l'on=20imp?= =?utf8?q?orte=20des=20valeurs=20depuis=20un=20fichier?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Editeur/composimp.py | 9 ++++-- Extensions/commande_comm.py | 16 ++++++++++ Ihm/I_ETAPE.py | 58 +++++++++++++++++++++++++++++++++++-- Ihm/I_MCSIMP.py | 13 ++++++++- 4 files changed, 90 insertions(+), 6 deletions(-) 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 -- 2.39.2