Salome HOME
*** empty log message ***
[tools/eficas.git] / Editeur / fonctionpanel.py
index a9c6908dda22f08226fda77fd1a82483e4256904..6b038397cfd6595973b2454922e881dd7f937a0a 100644 (file)
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -31,6 +32,8 @@ import panels
 import images
 from widgets import ListeChoix
 from widgets import FenetreDeSelection
+from widgets import askopenfilename
+from widgets import showinfo
 
 from Noyau.N_CR import justify_text
 from utils import substract_list
@@ -85,7 +88,7 @@ class FONCTION_Panel(PLUSIEURS_BASE_Panel):
       # création des objets dans les frames
       liste_commandes_valeurs = (("<Button-1>",self.selectValeur),
                                  ("<Button-3>",self.deselectValeur),
-                                 ("<Double-Button-1>",self.sup_valeur_sans_into))
+                                 ("<Double-Button-1>",self.afficheValeurListe))
       self.Liste_valeurs = ListeChoix(self,self.frame_valeurs,l2_valeurs,liste_commandes = liste_commandes_valeurs,
                                       titre="Valeur(s) actuelle(s)")
 
@@ -130,10 +133,16 @@ class FONCTION_Panel(PLUSIEURS_BASE_Panel):
           but.pack(side='left',padx=5)
 
 
+  def afficheValeurListe(self,name):
+      self.display_valeur(name)
+
   def decoupeListeValeurs(self,liste):
       #decoupe la liste des valeurs en n ( les x puis les y)
       nb=self.nb_valeurs
       l_valeurs=[]
+      if (len(liste)%nb != 0):
+          message="La cardinalité n'est pas correcte, la dernière valeur est ignorée"
+          showinfo("Problème",message)
       for i in range(len(liste)/nb) :
           if (nb==2):
               t=(liste[i*nb], liste[i*nb+1])
@@ -227,4 +236,57 @@ class FONCTION_Panel(PLUSIEURS_BASE_Panel):
             l1_valeurs.append((valeur[0],valeur[1]))
          else :
             l1_valeurs.append((valeur[0],valeur[1],valeur[2]))
+      i = 0
+      while i < self.nb_valeurs : 
+         self.set_valeur_texte(saisie[i])
+         i=i+1
       self.Liste_valeurs.put_liste(l1_valeurs)
+      self.Liste_valeurs.affiche_liste()
+
+
+  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:
+           affiche=affiche+separe+str(val)
+           separe=","
+        affiche=affiche+")"
+        self.entry.delete(0,END)
+       self.entry.insert(0,affiche)
+      except :
+       self.entry.delete(0,END)
+
+# Surcharge de select in file pour prendre en compte la saisie de tuple
+  def select_in_file(self):
+      """ Permet d'ouvrir un fichier choisi par l'utilisateur. """
+      nom_fichier = askopenfilename(title="Choix fichier :")
+
+      if not nom_fichier:
+          return
+
+      try:
+          f = open(nom_fichier, "rb")
+          selection_texte = f.read()
+          f.close()
+          self.add_double_valeur_plusieurs_base = FenetreDeSelection(self,
+                                                  self.node.item,
+                                                  self.parent.appli,
+                                                  titre="Sélection de valeurs",
+                                                  texte=selection_texte,
+                                                  cardinal = self.nb_valeurs)
+      except:
+          traceback.print_exc()
+          showinfo("Erreur de fichier","impossible d'ouvir le fichier "+nom_fichier)
+