From 923729eecb8942c601a8c3fd9743b0b7d67e3c1a Mon Sep 17 00:00:00 2001 From: eficas <> Date: Fri, 23 Jul 2004 10:09:25 +0000 Subject: [PATCH] =?utf8?q?PN=20r=C3=A9solution=20de=20la=20fiche=20AO2004-?= =?utf8?q?191=20les=20param=C3=A9tres=20compos=C3=A9s=20de=20plusieurs=20p?= =?utf8?q?aram=C3=A9tres=20ne=20sont=20pas=20reconnus?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Editeur/composimp.py | 11 ++++++++++- Editeur/fonctionpanel.py | 27 +++++++++++++++++++++++++++ Editeur/plusieursbasepanel.py | 2 -- Validation/V_MCSIMP.py | 24 +++++++++++++++++++++++- 4 files changed, 60 insertions(+), 4 deletions(-) diff --git a/Editeur/composimp.py b/Editeur/composimp.py index b1d4bbdb..dc64fe51 100644 --- a/Editeur/composimp.py +++ b/Editeur/composimp.py @@ -563,6 +563,12 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): if valeur.__class__.__name__ == 'CO':return 1 return 0 + def is_param(self,valeur) : + for param in self.jdc.params: + if (repr(param) == valeur): + return 1 + return 0 + def traite_reel(self,valeur): """ Cette fonction a pour but de rajouter le '.' en fin de chaîne pour un réel @@ -579,7 +585,10 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): return valeur if string.find(valeur,'.') == -1 : # aucun '.' n'a été trouvé dans valeur --> on en rajoute un à la fin - return valeur+'.' + if (self.is_param(valeur)): + return valeur + else: + return valeur+'.' else: return valeur diff --git a/Editeur/fonctionpanel.py b/Editeur/fonctionpanel.py index b3f1a4c9..3751ec66 100644 --- a/Editeur/fonctionpanel.py +++ b/Editeur/fonctionpanel.py @@ -231,3 +231,30 @@ class FONCTION_Panel(PLUSIEURS_BASE_Panel): else : l1_valeurs.append((valeur[0],valeur[1],valeur[2])) self.Liste_valeurs.put_liste(l1_valeurs) + + + def display_valeur(self,val=None): + """ + Affiche la valeur passée en argument dans l'entry de saisie. + Par défaut affiche la valeur du mot-clé simple + Doit être redéfinie pour un pb avec les parametres dans un tuple + """ + if not val : + valeur = self.node.item.object.getval() + else: + valeur = val + if not valeur : return + + try: + affiche="(" + separe="" + for val in valeur: + print str(val) + affiche=affiche+separe+str(val) + separe="," + affiche=affiche+")" + self.entry.delete(0,END) + self.entry.insert(0,affiche) + except : + self.entry.delete(0,END) + diff --git a/Editeur/plusieursbasepanel.py b/Editeur/plusieursbasepanel.py index c3757605..97dac858 100644 --- a/Editeur/plusieursbasepanel.py +++ b/Editeur/plusieursbasepanel.py @@ -274,8 +274,6 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel): Par défaut affiche la valeur du mot-clé simple """ if not val : - #valeur = self.node.item.getval() - #valeur = self.node.item.get_valeur() valeur = self.node.item.object.getval() else: valeur = val diff --git a/Validation/V_MCSIMP.py b/Validation/V_MCSIMP.py index 83cb03be..dba51b6a 100644 --- a/Validation/V_MCSIMP.py +++ b/Validation/V_MCSIMP.py @@ -171,7 +171,29 @@ class MCSIMP: for type_permis in self.definition.type: if self.compare_type(valeur,type_permis) : return 1 - # si on sort de la boucle précédente par ici c'est que l'on n'a trouvé aucun type valable --> valeur refusée + # si on sort de la boucle précédente par ici c'est qu'on n'a trouvé aucun type valable --> valeur refusée + # on essaie d evaluer si c est un parametre tordu : exemple a*b ou a et b sont definis + if valeur.__class__.__name__ in ('PARAMETRE_EVAL','PARAMETRE'): + try : + + # On crée un dictionnaire qui servira de contexte aux evaluations + # Ce dictionnaire sera initialisé avec les paramètres du JDC + d={} + for param in self.jdc.params : + expression = param.nom+'='+repr(param.valeur) + # ici on enrichit le dictionnaire d + exec expression in d + + obj=eval( valeur.valeur,d) + + for type_permis in self.definition.type: + if self.compare_type(obj,type_permis) : + return 1 + except Exception,e : + print "AAAAAAAAAAAAA" + print "e = ",str(e) + pass + if cr =='oui': self.cr.fatal("%s n'est pas d'un type autorisé" %`valeur`) return 0 -- 2.39.2