Salome HOME
PN résolution de la fiche AO2004-191
authoreficas <>
Fri, 23 Jul 2004 10:09:25 +0000 (10:09 +0000)
committereficas <>
Fri, 23 Jul 2004 10:09:25 +0000 (10:09 +0000)
les paramétres composés de plusieurs paramétres ne sont pas reconnus

Editeur/composimp.py
Editeur/fonctionpanel.py
Editeur/plusieursbasepanel.py
Validation/V_MCSIMP.py

index b1d4bbdb412e75c1565adda05236bdcd03326c28..dc64fe519cdf51f492682a51e65df8047adc835a 100644 (file)
@@ -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
         
index b3f1a4c9d1d9ddc6901c28acd8f2f1ffe7f70cb1..3751ec66f191e053b97fffd0e1553cb9631e245f 100644 (file)
@@ -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)
+
index c3757605f5547f4fea5e63e2cadb58b52c3fc80f..97dac858a642907e73318a28195553ce8fcef75d 100644 (file)
@@ -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
index 83cb03be6e03950b5eda84d6ce984e81c586fd3f..dba51b6aa0b0ec3c5c0d7ee0ce23a7d83ff4b285 100644 (file)
@@ -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