+# -*- coding: utf-8 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
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
Crée la page de saisie d'une liste de valeurs à priori quelconques,
cad qui ne sont pas à choisir dans une liste prédéfinie
"""
+ genea=self.node.item.get_genealogie()
+ if "VALE" in genea:
+ self.nb_valeurs=2
+ if "VALE_C" in genea:
+ self.nb_valeurs=3
# On récupère la bulle d'aide du panneau, l'objet, l'aide,min et max (cardinalité de la liste),
# et la liste des valeurs déjà affectées à l'objet courant
bulle_aide=self.get_bulle_aide()
# 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)")
but.pack(side='left',padx=5)
+ def afficheValeurListe(self,name):
+ self.display_valeur(name)
+
def decoupeListeValeurs(self,liste):
- #decoupe la liste des valeurs en 2 ( les x puis les y)
+ #decoupe la liste des valeurs en n ( les x puis les y)
+ nb=self.nb_valeurs
l_valeurs=[]
- for i in range(len(liste)/2) :
- t=(liste[i*2], liste[i*2+1])
+ 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])
+ else:
+ t=(liste[i*nb], liste[i*nb+1], liste[i*nb+2])
l_valeurs.append(t)
return l_valeurs
doublevaleur_entree=doublevaleur_entree[0:-2]
val1=doublevaleur_entree.split(',')[0]
val2=doublevaleur_entree.split(',')[1]
+ saisie=(val1,val2)
+ if (self.nb_valeurs==3):
+ val3=doublevaleur_entree.split(',')[2]
+ saisie=(val1,val2,val3)
except :
commentaire = "%s n est pas un tuple de la forme (x,y)" %`doublevaleur_entree`
+ if (self.nb_valeurs==3):
+ commentaire = "%s n est pas un tuple de la forme (x,y,z)" %`doublevaleur_entree`
self.parent.appli.affiche_infos(commentaire)
return
# et seulement d un tuple
try:
- val3=doublevaleur_entree.split(',')[2]
+ val=doublevaleur_entree.split(',')[self.nb_valeurs]
commentaire = "%s n est pas un tuple de la forme (x,y)" %`doublevaleur_entree`
+ if (self.nb_valeurs==3):
+ commentaire = "%s n est pas un tuple de la forme (x,y,z)" %`doublevaleur_entree`
+ self.parent.appli.affiche_infos(commentaire)
self.parent.appli.affiche_infos(commentaire)
return
except :
pass
# on verifie la validite des valeurs sont correctes
- valeur,validite=self.node.item.eval_valeur((val1,val2))
+ valeur,validite=self.node.item.eval_valeur(saisie)
if not validite :
commentaire = "impossible d'évaluer : %s " %`doublevaleur_entree`
self.parent.appli.affiche_infos(commentaire)
# sinon on ajoute la valeur à la fin
if (self.Liste_valeurs.selection != None):
ligne=self.Liste_valeurs.cherche_selected_item()
- l1_valeurs.insert(ligne,(valeur[0],valeur[1]))
+ if self.nb_valeurs==2:
+ l1_valeurs.insert(ligne,(valeur[0],valeur[1]))
+ else :
+ l1_valeurs.insert(ligne,(valeur[0],valeur[1],valeur[2]))
else :
- l1_valeurs.append((valeur[0],valeur[1]))
+ if self.nb_valeurs==2:
+ 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)
+