]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
Pn pour tests ancien parseur
authoreficas <>
Mon, 24 Apr 2006 14:35:53 +0000 (14:35 +0000)
committereficas <>
Mon, 24 Apr 2006 14:35:53 +0000 (14:35 +0000)
Editeur/TroisDPal.py
Editeur/appli.py
Editeur/configuration.py
Editeur/options.py
Editeur/widgets.py
convert/convert_python.py
generator/generator_vers3DSalome.py

index 28a92944e423060ae99eea6c91b0cf546907f721..c0cc0d075233a0df8450b6018f09ba622fb7a125 100644 (file)
@@ -38,6 +38,7 @@ class TroisDPilote:
       if generator.plugins.has_key(format):
          # Le generateur existe on l'utilise
          g=generator.plugins[format]()
+         g.init_jdc(self.node.get_jdc())
          texte=g.gener(self.node)
       else:
          print "Le generateur n a pas ete trouvé"
index e72113d7fc8cf307e1e14c0ffd4fa564ecb6217a..c7551ae4e7546498fdb9fcf841d1293a4d084952 100644 (file)
@@ -119,6 +119,7 @@ class APPLI:
          splash._splash.configure(text = "Chargement des paramètres utilisateur")
       import configuration
       self.CONFIGURATION = configuration.make_config(self,prefs.REPINI)
+      self.CONFIGStyle = configuration.make_config_style(self,prefs.REPINI)
 
   def cree_composants_graphiques(self):
       """
index 1596562efbbb3569cda7a655cddcc8239cd3376b..c748a61f6523d06d4f9e6d3c239aa1d880278b1b 100644 (file)
@@ -29,191 +29,134 @@ import traceback
 from widgets import showinfo,showerror,askretrycancel
 import utils
 
-class CONFIG:
-  def __init__(self,appli,rep_ini):
-      # si appli == None on est en mode commande (hors EFICAS)
+class CONFIGbase:
+
+  #-----------------------------------
+  def __init__(self,appli):
+  #-----------------------------------
+
+  # Classe de base permettant de lire, afficher
+  # et sauvegarder les fichiers utilisateurs editeur.ini
+  # et style.py
+  # Classe Mere de : class CONFIG(CONFIGbase)
+  #                  class CONFIGStyle(CONFIGbase):
+
       self.appli = appli  
-      if self.appli:self.parent=appli.top
-      else:self.parent=None
-      self.rep_ini = rep_ini
+      if self.appli:
+         self.parent=appli.top
+      else:
+         self.parent=None
       self.rep_user = utils.get_rep_user()
-      self.lecture_parametres()
-
-  def lecture_parametres(self):
-      """
-         Cette méthode teste l'existence du fichier editeur.ini au bon endroit et lance
-         son interprétation
-      """
-      fic_ini = os.path.join(self.rep_ini,'editeur.ini')
-      if not os.path.exists(fic_ini) or not os.path.isfile(fic_ini):
-        if self.appli :
-          showerror("Erreur","Impossible de trouver le fichier %s ! \n Prévenez la maintenance ..." %fic_ini)
-        else:
-          print "Impossible de trouver le fichier %s ! \n Prévenez la maintenance ..." %fic_ini
-        sys.exit(0)
-      self.fic_ini = fic_ini
-      self.init_liste_param()
       self.lecture_fichier_ini_standard()
       self.lecture_fichier_ini_utilisateur()
-
+      self.init_liste_param()
+  
+  #--------------------------------------
   def lecture_fichier_ini_standard(self):
-      """
-      Relit les paramètres du fichier eficas.ini
-      """
-      txt = utils.read_file(self.fic_ini)
-      d={}
+  #--------------------------------------
+  # Verifie l'existence du fichier "standard"
+  # appelle la lecture de ce fichier
+      if not os.path.isfile(self.fic_ini):
+          showerror("Erreur","Pas de fichier de configuration" + self.fic_ini+"\n"+string.join(l[2:]))
+          print "Erreur à la lecture du fichier de configuration : %s" % fic
+          sys.exit(0)
+      self.lecture_fichier(self.fic_ini)
+
+  #-----------------------------
+  def lecture_fichier(self,fic):
+  #------------------------------
+  # lit les paramètres du fichier eficas.ini ou style.py
+  # les transforme en attribut de l 'objet  
+  # utilisation du dictionnaire local pour récuperer style
+      txt = utils.read_file(fic)
+      from styles import style
+      d=locals()
       try:
          exec txt in d
       except:
          l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
-         showerror("Erreur","Une erreur s'est produite dans la relecture du fichier de configuration : "
-                       + self.fic_ini+"\n"+string.join(l[2:]))
-         print "Erreur à la lecture du fichier de configuration : %s" % self.fic_ini 
-         print string.join(l[2:])
+         showerror("Erreur","Une erreur s'est produite lors de la lecture du fichier : " + fic + "\n")
+         print "Erreur à la lecture du fichier de configuration : %s" % fic
          sys.exit()
-      for attr in self.l_nom_param:
-          nom_attr,statut,defaut = attr
-          #valeur = d.get(nom_attr,None)
-          valeur = d.get(nom_attr,defaut)
-          if not valeur and statut=='o':
-              showerror("Erreur","Une erreur s'est produite dans la relecture du fichier de configuration : "
-                       + self.fic_ini+"\n EFICAS va vous demander les nouveaux paramètres")
-              return
-          setattr(self,nom_attr,valeur)
-      self.init_liste_param()
 
+      for k in d.keys() :
+          if  k in self.labels.keys()  :
+             setattr(self,k,d[k])
+      
+      for k in d['style'].__dict__.keys() :
+          setattr(self,k,d['style'].__dict__[k])
+   
+  #--------------------------------------
   def lecture_fichier_ini_utilisateur(self):
-      """
-      Surcharge les paramètres standards par les paramètres utilisateur s'ils existent
-      """
-      self.fic_ini_utilisateur = os.path.join(self.rep_user,'eficas.ini')
+  #--------------------------------------
+  # Surcharge les paramètres standards par les paramètres utilisateur s'ils existent
+      self.fic_ini_utilisateur = os.path.join(self.rep_user,self.fichier)
       if not os.path.isfile(self.fic_ini_utilisateur):
-          # pas de fichier de configuration utilisateur --> on passe
-          return
-      txt = utils.read_file(self.fic_ini_utilisateur)
-      d={}
-      try:
-          exec txt in d
-      except :
-          showinfo("Erreur","Impossible d'interpréter le fichier de configuration utilisateur : %s" %self.fic_ini_utilisateur)
-          traceback.print_exc()
           return
-      for attr in self.l_nom_param:
-          nom_attr,statut,defaut = attr
-          valeur = d.get(nom_attr,None)
-          if valeur :
-              setattr(self,nom_attr,valeur)
-      self.init_liste_param()
+      self.lecture_fichier(self.fic_ini_utilisateur)
 
-  def init_liste_param(self):
-      """
-      Génère la liste des paramètres
-      l_param est une liste de tuples où chaque tuple est de la forme :
-      (label,nature,nom_var,defaut)
-      """
-      self.l_param=[]
-      # répertoire initial pour OPEN/SAVE des fichiers de commande
-      # Par defaut, EFICAS utilise le repertoire utilisateur $HOME/Eficas_install
-      # Il est possible de specifier dans editeur.ini ou eficas.ini un autre chemin
-      # Ce peut etre un chemin absolu ou le repertoire courant (os.curdir)
-      if hasattr(self,'initialdir'):
-          self.l_param.append(("Répertoire initial pour Open/save des fichiers de commande",'rep','initialdir',self.initialdir))
-      else:
-          self.l_param.append(("Répertoire initial pour Open/save des fichiers de commande",'rep','initialdir',self.rep_user))
-      # répertoire de travail
-      if hasattr(self,'rep_travail'):
-          self.l_param.append(("Répertoire de travail",'rep','rep_travail',self.rep_travail))
-      else:
-          self.l_param.append(("Répertoire de travail",'rep','rep_travail',
-                               os.path.join(self.rep_user,'uaster','tmp_eficas')))
-      # répertoire des catalogues matériaux
-      if hasattr(self,'rep_mat'):
-          self.l_param.append(("Répertoire materiaux",'rep','rep_mat',self.rep_mat))
-      else:
-          self.l_param.append(("Répertoire materiaux",'rep','rep_mat','/aster/v4/materiau'))
-      # chemin d'accès exécutable acrobat reader
-      if hasattr(self,'exec_acrobat'):
-          self.l_param.append(("Ligne de commande Acrobat Reader",'file','exec_acrobat',self.exec_acrobat))
-      else:
-          self.l_param.append(("Ligne de commande Acrobat Reader",'file','exec_acrobat',self.rep_user))
-      # répertoire contenant la doc Aster
-      if hasattr(self,'path_doc'):
-          self.l_param.append(("Chemin d'accès à la doc Aster",'rep','path_doc',self.path_doc))
-      else:
-          self.l_param.append(("Chemin d'accès à la doc Aster",'rep','path_doc',self.rep_user))
-      # chemin(s) d'accès au(x) catalogue(s)
-      if hasattr(self,'catalogues'):
-          self.l_param.append(("Versions du code ",'cata','catalogues',self.catalogues))
-      else:
-          self.l_param.append(("Versions du code ",'cata','catalogues',os.path.join(self.rep_ini,'..','Cata/cata.py')))
-      # attribut développeur
-      if hasattr(self,'isdeveloppeur'):
-      #    self.l_param.append(("Etes-vous développeur ?",'YesNo','isdeveloppeur',self.isdeveloppeur))
-           self.l_param.append(("Niveau de message ",'YesNo','isdeveloppeur',self.isdeveloppeur,'Deboggage','Utilisation'))
-      else:
-      #    self.l_param.append(("Etes-vous développeur ?",'YesNo','isdeveloppeur','NON'))
-           self.l_param.append(("Niveau de message ",'YesNo','isdeveloppeur','NON','Deboggage','Utilisation'))
-      # répertoire où sont contenus les catalogues développeurs
-      if hasattr(self,'path_cata_dev') and hasattr(self,'isdeveloppeur') and self.isdeveloppeur == 'OUI':
-          self.l_param.append(("Chemin d'accès aux catalogues développeurs",'rep','path_cata_dev',self.path_cata_dev))
-      else:
-          self.l_param.append(("Chemin d'accès aux catalogues développeurs",'rep','path_cata_dev',
-                               os.path.join(self.rep_user,'cata')))
-      self.l_param = tuple(self.l_param)
-      self.l_nom_param=[]
-      statut='o'
-      for tup in self.l_param:
-          if tup[1] == 'YesNo':
-              # les paramètres suivant tup sont facultatifs ...
-              statut='f'
-          self.l_nom_param.append((tup[2],statut,tup[3])) # nom,statut,defaut
 
+  #--------------------------------------
   def affichage_fichier_ini(self):
+  #--------------------------------------
       """
       Affichage des valeurs des paramètres relus par Eficas
       """
       import widgets
       result = widgets.Formulaire(self.parent,
                                   obj_pere = self,
-                                  titre = "Paramètres nécessaires à la configuration d'EFICAS",
-                                  texte = "Voici les paramètres que requiert Eficas",
+                                  titre = self.titre,
+                                  texte = self.texte_ini,
                                   items = self.l_param,
                                   mode='display',
-                                  commande=('Modifier',self.creation_fichier_ini_si_possible))
+                                  commande=('Modifier',self.commande))
       if result.resultat :
-          print 'on sauvegarde les nouveaux paramètres :',result.resultat
+          #print 'on sauvegarde les nouveaux paramètres :',result.resultat
           self.save_param_ini(result.resultat)
 
+  #--------------------------------------
   def save_param_ini(self,dico):
-      """
-      Sauvegarde les nouveaux paramètres dans le fichier de configuration utilisateur
-      """
+  #--------------------------------------
+  # sauvegarde
+  # les nouveaux paramètres dans le fichier de configuration utilisateur
+  #
       f=open(self.fic_ini_utilisateur,'w+')
       for k,v in dico.items():
-         if k == 'catalogues' :
+         if self.types[k] in ('mot2','mot3','mot4'): 
+            v1=v[1:-1]
+            val=v1.split(",")
+            p = "(" 
+            listeval=""
+            for valeur in val:
+              listeval = listeval+ p + str(valeur) 
+              p=" , "
+            listeval = listeval + ")"
+            f.write(str(self.pref)+str(k) + '=' + str(listeval) + '\n') 
+         elif k == 'catalogues' :
             f.write(k + '\t=\t' + str(v) + '\n')
          else:
-            f.write(k + '\t=\t"' + str(v) + '"\n')
+            f.write(str(self.pref)+str(k) + '\t=\t"' + str(v) + '"\n')
       f.close()
       self.lecture_fichier_ini_utilisateur()
 
+  #-------------------------------------------
   def creation_fichier_ini_si_possible(self):
+  #-------------------------------------------
       return self.creation_fichier_ini(mode='ignorer_annuler')
 
+  #--------------------------------------------------------
   def creation_fichier_ini(self,mode='considerer_annuler'):
-      """
-      Récupération des valeurs des paramétres requis pour la création du fichier
-      eficas.ini
-      """
+  #---------------------------------------------------------
+  # Récupération des valeurs des paramétres requis pour la création du fichier
+  # eficas.ini
+  #
       import widgets
-      texte = "EFICAS a besoin de certains renseignements pour se configurer\n"+\
-              "Veuillez remplir TOUS les champs ci-dessous et appuyer sur 'Valider'\n"+\
-              "Si vous annulez, EFICAS ne se lancera pas !!"
       items = self.l_param
       result = widgets.Formulaire(self.parent,
                                   obj_pere = self,
                                   titre = "Saisie des données indispensables à la configuration d'EFICAS",
-                                  texte = texte,
+                                  texte = self.texte,
                                   items = items,
                                   mode='query')
       if not result.resultat :
@@ -230,7 +173,119 @@ class CONFIG:
           self.save_param_ini(result.resultat)
           return result.resultat
 
+  #--------------------------
+  def init_liste_param (self):
+  #--------------------------
+  # construit self.l_param 
+  # a partir de self.labels et des attributs 
+  # de l objet (mis a jour lors de la lecture du fichier)
+  # l_param est une liste de tuples où chaque tuple est de la forme :
+  #           (label,nature,nom_var,defaut)
+
+      self.l_param=[]
+      for k in self.labels.keys()  :
+          if hasattr(self,k) :
+             if k in self.YesNo.keys():
+                self.l_param.append((self.labels[k],self.types[k],k,self.__dict__[k],
+                                     self.YesNo[k][0],self.YesNo[k][1]))
+             else :
+                self.l_param.append((self.labels[k],self.types[k],k,self.__dict__[k]))
+      self.l_param = tuple(self.l_param)
+
+
+class CONFIG(CONFIGbase):
+  def __init__(self,appli,rep_ini):
+      self.texte = "EFICAS a besoin de certains renseignements pour se configurer\n"+\
+              "Veuillez remplir TOUS les champs ci-dessous et appuyer sur 'Valider'\n"+\
+              "Si vous annulez, EFICAS ne se lancera pas !!"
+      self.fichier="editeur.ini"
+      self.rep_ini = rep_ini
+      self.fic_ini = os.path.join(self.rep_ini,self.fichier)
+      self.titre = "Paramètres nécessaires à la configuration d'EFICAS"
+      self.texte_ini = "Voici les paramètres que requiert Eficas"
+      self.commande = self.creation_fichier_ini_si_possible
+      self.pref=""
+      self.labels={"initialdir"    : "Répertoire initial pour Open/Save des fichiers",
+                   "rep_travail"   : "Répertoire de travail",
+                   "rep_mat"       : "Répertoire materiaux",
+                   "path_doc"      : "Chemin d'accès à la doc Aster",
+                   "exec_acrobat"  : "Ligne de commande Acrobat Reader",
+                   "catalogues"    : "Versions du code ",
+                   "isdeveloppeur" : "Niveau de message ",
+                   "path_cata_dev" : "Chemin d'accès aux catalogues développeurs"}
+                   
+      self.types ={"initialdir":"rep", "rep_travail":"rep","rep_mat":"rep",
+                   "path_doc": "rep","exec_acrobat":"file","exec_acrobat":"file",
+                   "catalogues" :"cata","isdeveloppeur":"YesNo","path_cata_dev":"rep"}
+
+      self.YesNo={}
+      self.YesNo['isdeveloppeur']=('Deboggage','Utilisation')
+
+      # Valeurs par defaut
+      self.rep_user = utils.get_rep_user()
+      self.initialdir=self.rep_user
+      self.rep_travail=os.path.join(self.rep_user,'uaster','tmp_eficas')
+      self.rep_mat='/aster/v7/materiau'
+      self.path_doc=self.rep_user
+      self.exec_acrobat=self.rep_user
+      self.catalogues= os.path.join(self.rep_ini,'..','Cata/cata.py')
+      self.isdeveloppeur='NON'
+      self.path_cata_dev=os.path.join(self.rep_user,'cata')
+
+      CONFIGbase.__init__ (self,appli)
+
+
+class CONFIGStyle(CONFIGbase):
+  def __init__(self,appli,rep_ini):
+      self.texte = "Pour prendre en compte les modifications \n"+\
+                   "     RELANCER EFICAS"
+      self.fichier="style.py"
+      self.rep_ini = rep_ini
+      self.fic_ini = os.path.join(self.rep_ini,self.fichier)
+      self.titre = "Paramètres d affichage"
+      self.texte_ini = "Voici les paramètres configurables :  "
+      self.commande = self.creation_fichier_ini_si_possible
+      self.pref="style."
+      self.labels={"background":"couleur du fonds", 
+                   "foreground":"couleur de la police standard" ,
+                   "standard":" police et taille standard",
+                   "standard_italique":"police utilisée pour l'arbre ",
+                   "standard_gras_souligne":"police utilisée pour le gras souligné",
+                   "canvas_italique":"police italique",
+                   "standard_gras":"gras",
+                   #"canvas":"police",
+                   #"canvas_gras":"police gras",
+                   #"canvas_gras_italique":"police gras italique",
+                   #"standard12":"police 12",
+                   #"standard12_gras":"police 12 gras",
+                   #"standard12_gras_italique":"police 12 gras italique",
+                   #"standardcourier10":"courrier "
+                  }
+      self.types ={"background":"mot", 
+                   "foreground":"mot" ,
+                   "standard":"mot2",
+                   "standard_italique":"mot3",
+                   "standard_gras":"mot3",
+                   "standard_gras_souligne":"mot4",
+                   "canvas":"mot2",
+                   "canvas_italique":"mot3",
+                   "canvas_gras":"mot3",
+                   "canvas_gras_italique":"mot4",
+                   "standard12":"mot2",
+                   "standard12_gras":"mot3",
+                   "standard12_gras_italique":"mot4",
+                   "standardcourier10":"mot2"}
+      self.YesNo={}
+      self.l_param=[]
+      CONFIGbase.__init__ (self,appli)
+
+  def affichage_style_ini(self):
+      self.affichage_fichier_ini()
+
 def make_config(appli,rep):
     return CONFIG(appli,rep)
 
+def make_config_style(appli,rep):
+    return CONFIGStyle(appli,rep)
+
 
index 5093ee33af7da13551a34c1862708c6e91d71788..9d0da1e46e3c9856929a93484d310bdb965c6e8b 100644 (file)
@@ -38,6 +38,7 @@ class OPTIONS:
                    #("Couleur",(("fond",'change_fond'),("barre",'change_barre'))),
                    # ("Catalogue développeur",'choix_cata_developpeur'),
                    ('Paramètres Eficas','affichage_fichier_ini'),
+                   ('Paramètres Affichage','affichage_style_ini'),
                       
                    ]
         )
@@ -124,4 +125,8 @@ class OPTIONS:
 
 
    def affichage_fichier_ini(self):
-       self.appli.bureau.affichage_fichier_ini()
+       self.appli.CONFIGURATION.affichage_fichier_ini()
+
+
+   def affichage_style_ini(self):
+       self.appli.CONFIGStyle.affichage_style_ini()
index 34d9bff3b765080868b7ab2b9b10bd8ef3daa36b..2341457973ac9c4503107d49944ffac3ff0db904 100644 (file)
@@ -476,6 +476,7 @@ class Formulaire:
     on affiche un formulaire à remplir par l'utilisateur
     """
     def __init__(self,fen_pere,obj_pere=None,titre="",texte="",items=(),mode='query',commande=None):
+        self.resultat=0
         if items in ((),[]) : return
         self.items = items
         self.titre = titre
@@ -501,6 +502,10 @@ class Formulaire:
         self.d_validateurs['rep']  = self.repvalidator
         self.d_validateurs['file'] = self.filevalidator
         self.d_validateurs['cata']= self.catavalidator
+        self.d_validateurs['mot']= self.motvalidator
+        self.d_validateurs['mot2']= self.mot2validator
+        self.d_validateurs['mot3']= self.mot3validator
+        self.d_validateurs['mot4']= self.mot4validator
         
     def init_fenetre(self):
         """
@@ -550,12 +555,13 @@ class Formulaire:
                chaine2="No"
             else :
                label,nature,nom_var,defaut,chaine,chaine2 = item
+          
             # création de la frame
             fr_item = Frame(window,height=40,width=700)
             fr_item.pack(side='top',fill='x',expand=1)
             # création du label
             Label(fr_item,text = label).place(relx=0.05,rely=0.4)
-            if nature in ('rep','file','cata'):
+            if nature in ('rep','file','cata','mot','mot2','mot3','mot4'):
                 # création de l'entry
                 e_item = Entry(fr_item) 
                 e_item.place(relx=0.5,rely=0.4,relwidth=0.45)
@@ -608,6 +614,27 @@ class Formulaire:
 #       Validateurs des noms de répertoire, de fichiers et de catalogues
 # -------------------------------------------------------------------------------
 
+    def motvalidator(self,text):
+        text2="("+text+")"
+        return self.motlongueurvalidator(text2,1) 
+
+    def mot2validator(self,text):
+        return self.motlongueurvalidator(text,2) 
+
+    def mot3validator(self,text):
+        return self.motlongueurvalidator(text,3) 
+
+    def mot4validator(self,text):
+        return self.motlongueurvalidator(text,4) 
+
+    def motlongueurvalidator(self,text,longueur):
+        try :
+          if ((text[0] != "(") or (text[-1] != ")")) : return 0
+          if len(text.split(",")) != longueur : return 0
+          return 1
+        except :
+          return 0
+
     def repvalidator(self,text):
         """
         Teste si text peut faire référence à un répertoire ou non
index 995984f72a2074026f6b7a22dff784232eb2aef1..999dac50291dd84bf325bd5f6777256349e5277b 100644 (file)
@@ -50,7 +50,7 @@
 """
 import sys,string,traceback
 
-from autre_parseur import PARSEUR_PYTHON
+import parseur_python
 from Noyau import N_CR
 
 def entryPoint():
@@ -103,21 +103,18 @@ class PythonParser:
          self.cr.fatal("Impossible ouvrir fichier %s" % filename)
          return
    
-   def settext(self,texte) :
-      self.text=texte
-
    def convert(self,outformat,appli=None):
       if outformat == 'exec':
          try:
-            return PARSEUR_PYTHON(self.text).get_texte(appli)
+            return parseur_python.PARSEUR_PYTHON(self.text).get_texte(appli)
          except:
             # Erreur lors de la conversion
             l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],
                                          sys.exc_info()[2])
-            self.cr.exception("Impossible de convertir le fichier python 
-                              "qui doit contenir des erreurs.\n" 
-                              "On retourne le fichier non converti.\n" 
-                              "Prévenir la maintenance. \n" + string.join(l))
+            self.cr.exception("Impossible de convertir le fichier python \
+                               qui doit contenir des erreurs.\n \
+                               On retourne le fichier non converti \n \
+                               Prévenir la maintenance. \n" + string.join(l))
             # On retourne néanmoins le source initial non converti (au cas où)
             return self.text
       elif outformat == 'execnoparseur':
index 3ead9a958593c44aee3bbab16b8eba7ed67662ea..21de10c6c183359cf49ed3023ad64f4d2f3d2018 100644 (file)
@@ -79,6 +79,9 @@ class vers3DSalomeGenerator(PythonGenerator):
 
       self.init_ligne() 
 
+   def init_jdc(self,jdc) :
+      self.jdc=jdc
+
    def init_ligne (self) :
       self.boolGpMa = 0
       self.commande = ""
@@ -176,15 +179,24 @@ class vers3DSalomeGenerator(PythonGenerator):
           self.clefs=(obj.val,)
 
    def VALE(self,obj) :
+       atraiter=obj.val
        if len(self.clefs) > 1 :
-           assert (len(obj.val) == len(self.clefs))
+           assert (len(atraiter) == len(self.clefs))
        else :
-           obj.val=(obj.val,)
-       for k in range(len(obj.val)) :
+           atraiter=(atraiter,)
+       for k in range(len(atraiter)) :
            clef=self.clefs[k]
-           val =obj.val[k] 
+           val =atraiter[k] 
            if isinstance (val, Extensions.parametre.PARAMETRE):
               val=val.valeur
+              print val.__class__
+              context={}
+              if type(val) == type("aaa") :
+                 for p in self.jdc.params:
+                     context[p.nom]=eval(p.val,self.jdc.const_context, context)
+                     print context[p.nom]
+                 res=eval(val,self.jdc.const_context, context)
+                 val=res
            self.dict_attributs[clef]=val
 
    def ANGL_REP(self,obj) :