From e7846850530ea4ca7e0c97fadb77dc4d8a949c46 Mon Sep 17 00:00:00 2001 From: eficas <> Date: Tue, 31 Aug 2004 15:57:32 +0000 Subject: [PATCH] PN : correction du bug d import de tuple a partir d ' un fichier --- Editeur/fonctionpanel.py | 29 +++++++++++++++++++++++++++++ Editeur/widgets.py | 21 ++++++++++++++++++++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/Editeur/fonctionpanel.py b/Editeur/fonctionpanel.py index b3f1a4c9..3897e2b3 100644 --- a/Editeur/fonctionpanel.py +++ b/Editeur/fonctionpanel.py @@ -31,6 +31,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 @@ -137,6 +139,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]) @@ -231,3 +236,27 @@ class FONCTION_Panel(PLUSIEURS_BASE_Panel): else : l1_valeurs.append((valeur[0],valeur[1],valeur[2])) self.Liste_valeurs.put_liste(l1_valeurs) + + +# 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/widgets.py b/Editeur/widgets.py index ccbd0b2c..78cffaf9 100644 --- a/Editeur/widgets.py +++ b/Editeur/widgets.py @@ -184,8 +184,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 @@ -247,6 +248,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