From fd27c38037ee9c07a594b6727c99965322d9f9bc Mon Sep 17 00:00:00 2001 From: eficas <> Date: Fri, 10 Sep 2004 16:15:18 +0000 Subject: [PATCH] PN report du patch V1_6p2 --- Editeur/fonctionpanel.py | 27 +++++++++++++++++++++++++++ Editeur/plusieursassdpanel.py | 6 +++--- Editeur/widgets.py | 21 ++++++++++++++++++++- 3 files changed, 50 insertions(+), 4 deletions(-) diff --git a/Editeur/fonctionpanel.py b/Editeur/fonctionpanel.py index 07a6b60e..3a9fdd2a 100644 --- a/Editeur/fonctionpanel.py +++ b/Editeur/fonctionpanel.py @@ -32,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 @@ -138,6 +140,9 @@ class FONCTION_Panel(PLUSIEURS_BASE_Panel): #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]) @@ -259,3 +264,25 @@ class FONCTION_Panel(PLUSIEURS_BASE_Panel): 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) + diff --git a/Editeur/plusieursassdpanel.py b/Editeur/plusieursassdpanel.py index 4032fa60..e4695827 100644 --- a/Editeur/plusieursassdpanel.py +++ b/Editeur/plusieursassdpanel.py @@ -111,9 +111,9 @@ class PLUSIEURS_ASSD_Panel(PLUSIEURS_Panel): valeurentree = self.get_valeur() valeur,validite=self.node.item.eval_valeur(valeurentree) if not validite : - commentaire = "impossible d'évaluer : %s " %`valeurentree` - self.parent.appli.affiche_infos(commentaire) - return + commentaire = "impossible d'évaluer : %s " %`valeurentree` + self.parent.appli.affiche_infos(commentaire) + return self.add_valeur_sans_into(valeur) def get_bulle_aide(self): diff --git a/Editeur/widgets.py b/Editeur/widgets.py index 17c5faf9..003d759c 100644 --- a/Editeur/widgets.py +++ b/Editeur/widgets.py @@ -185,8 +185,9 @@ class FenetreDeSelection(Fenetre): """ Classe dérivée de Fenêtre permettant la récupération d'une zone de texte sélectionnée. Cette classe est utilisée pour affecter une liste de valeurs à un mot-clé. """ - def __init__(self,panel,item,appli,titre="",texte=""): + def __init__(self,panel,item,appli,titre="",texte="",cardinal=1): Fenetre.__init__(self,appli,titre=titre,texte=texte) + self.cardinal=cardinal self.fenetre.configure(width = 320,height=400) centerwindow(self.fenetre) self.panel = panel @@ -248,6 +249,24 @@ class FenetreDeSelection(Fenetre): if self.test_probleme(message,"Vérifiez le domaine des valeurs") == 0: return # Ajoute les valeurs dans la liste de valeurs du mot-clé + if self.cardinal != 1 : + nb=self.cardinal + l_valeurs=[] + # a ameliorer + if (len(liste_valeurs)%nb != 0): + message="La cardinalité n'est pas correcte" + self.test_probleme(message,"On attend des tuples") + return + for i in range(len(liste_valeurs)/nb) : + if (nb==2): + t=(liste_valeurs[i*nb], liste_valeurs[i*nb+1]) + elif (nb ==3): + t=(liste_valeurs[i*nb], liste_valeurs[i*nb+1], liste_valeurs[i*nb+2]) + else : + print "probleme : prevenir la maintenance Eficas" + return + l_valeurs.append(t) + liste_valeurs=l_valeurs self.ajouter_valeurs(liste_valeurs) self.appli.affiche_infos("Liste de valeurs acceptée") -- 2.39.2