Salome HOME
*** empty log message ***
[tools/eficas.git] / Editeur / plusieursbasepanel.py
index b9ead4d1f5bbc0fadfc68e9854bf898bc5e91041..93c84d6c63c9f90414201f4d40ca5f3eb07e3091 100644 (file)
@@ -34,6 +34,7 @@ from widgets import showinfo
 from widgets import askopenfilename
 from widgets import ListeChoix
 from widgets import FenetreDeSelection
+from widgets import FenetreDeParametre
 
 from Noyau.N_CR import justify_text
 from utils import substract_list
@@ -76,9 +77,9 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel):
       self.frame_boutons_fleches = Frame(self.frame_right)
       self.frame_boutons_fleches.place(relx=0.,rely=0.2,relwidth=0.2,relheight=0.5)
       self.frame_choix = Frame(self.frame_right)
-      self.frame_choix.place(relx=0.2,rely=0.2,relwidth=0.7,relheight=0.5)
+      self.frame_choix.place(relx=0.2,rely=0.2,relwidth=0.7,relheight=0.8)
       self.frame_aide = Frame(self.frame_right)
-      self.frame_aide.place(relx=0.1,rely=0.7,relwidth=0.8,relheight=0.3)
+      self.frame_aide.place(relx=0.1,rely=0.8,relwidth=0.8,relheight=0.2)
       self.frame_boutons = Frame(self.frame2)
       self.frame_boutons.place(relx=0.35,rely=0.,relwidth=0.3,relheight=1.)
       for fram in (self.frame1,self.frame2,self.frame_right,self.frame_valeurs,
@@ -94,16 +95,18 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel):
                                       titre="Valeur(s) actuelle(s)")
 
       # Création de l'entry ou de la liste des SD
-      self.label = Label(self.frame_choix,text="Valeur :")
       # PN : pour ajouter les validators
+      self.label = Label(self.frame_choix,text="Valeur :")
       self.make_entry(frame = self.frame_choix,command = self.add_valeur_plusieurs_base)
-      self.label.place(relx=0.05,rely=0.5)
+      self.label.place(relx=0.05,rely=0.3)
 
-      # Création d'un bouton "Importer ..." sur le panel.
+      # Création d'un bouton "Importer ..." et d'un bouton "Paramatres" sur le panel.
       bouton_valeurs_fichier = Button(self.frame_choix,
-                                      text="Importer ...",
+                                      text="Importer",
                                       command=self.select_in_file)
-      bouton_valeurs_fichier.place(relx=0.28,rely=0.7,relwidth=0.6)
+      bouton_valeurs_fichier.place(relx=0.28,rely=0.4,relwidth=0.6)
+      bouton_parametres = Button(self.frame_choix, text="Parametres", command=self.affiche_parametre)
+      bouton_parametres.place(relx=0.28,rely=0.6,relwidth=0.6)
       self.ajout_valeurs = None
 
       # boutons Ajouter et Supprimer
@@ -124,6 +127,9 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel):
                        wraplength=int(self.frame_aide.winfo_width()*0.8))
       self.aide.place(relx=0.5,rely=0.5,anchor='center',relwidth=1)
       self.Liste_valeurs.affiche_liste()
+      if len(l_valeurs) > 0 :
+          liste_marque=l_valeurs[-1]
+          self.Liste_valeurs.surligne(liste_marque)
       # boutons Accepter et Annuler
       bouton_accepter = Button(self.frame_boutons,
                                text='Valider',
@@ -134,6 +140,23 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel):
       for but in (bouton_accepter,bouton_annuler):
           but.pack(side='left',padx=5)
 
+  def affiche_parametre(self) :
+      if self.node.item.get_liste_param_possible() != [ ]:
+         txtparam=""
+        for param in self.node.item.get_liste_param_possible():
+           txtparam=txtparam+repr(param)+"\n"
+        if txtparam=="":
+           showerror("Aucun parametre ","Pas de parametre de ce type")
+        else :
+           try :
+               self.self.fenetreparam.destroy()
+           except:
+               pass
+           self.fenetreparam=FenetreDeParametre( self, self.node.item, self.parent.appli, txtparam)
+
+  def valid_valeur(self):
+      self.add_valeur_plusieurs_base()
+
   def add_valeur_plusieurs_base(self,name=None):
       if name != None :
          valeur = name
@@ -143,12 +166,20 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel):
             self.parent.appli.affiche_infos(commentaire)
             return
 
-      encorevalide=self.node.item.valide_item(valeur)
-      if encorevalide :
-         listecourante=self.Liste_valeurs.get_liste()
-         encorevalide=self.node.item.valide_liste_partielle(valeur,listecourante)
-         if not encorevalide : encorevalide = -1
-      self.add_valeur_sans_into(valeur,encorevalide)
+      atraiter=[]
+      try :
+         for v in valeur:
+           atraiter.append(v)
+      except :
+         atraiter.append(valeur)
+
+      for valeur in atraiter :
+         encorevalide=self.node.item.valide_item(valeur)
+         if encorevalide :
+            listecourante=self.Liste_valeurs.get_liste()
+            encorevalide=self.node.item.valide_liste_partielle(valeur,listecourante)
+            if not encorevalide : encorevalide = -1
+         self.add_valeur_sans_into(valeur,encorevalide)
     
   def select_in_file(self):
       """ Permet d'ouvrir un fichier choisi par l'utilisateur. """
@@ -229,7 +260,7 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel):
           self.entry1.focus()
       else:
           self.entry = Entry(frame,relief='sunken')
-          self.entry.place(relx=0.28,rely=0.5,relwidth=0.6)
+          self.entry.place(relx=0.28,rely=0.2,relwidth=0.6)
           self.entry.bind("<Return>",lambda e,c=command:c())
           self.entry.focus()
 
@@ -240,7 +271,20 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel):
       if hasattr(self,'entry'):
          # Traitement d'une entree unique
          valeurentree = self.entry.get()
-         valeur,validite=self.node.item.eval_valeur(valeurentree)
+        if (valeurentree == None or valeurentree ==""):
+           return None,0,""
+        if (valeurentree[0] != "(") and (valeurentree.find(',') < len(valeurentree)):
+           valeurs=[]
+           for v in valeurentree.split(','):
+             vsimple,validite=self.node.item.eval_valeur(v)
+             if validite :
+                valeurs.append(vsimple)
+             else:
+                commentaire = "impossible d'évaluer : %s " %`valeurentree`
+                break
+           valeur=valeurs
+         else: 
+            valeur,validite=self.node.item.eval_valeur(valeurentree)
          if not validite :
             commentaire = "impossible d'évaluer : %s " %`valeurentree`
          else: