From: eficas <> Date: Wed, 4 Feb 2004 16:26:56 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: CC01mar04fin~7 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=bb57828fe0f289a241a9eaf444043e1ae9f88b79;p=tools%2Feficas.git *** empty log message *** --- diff --git a/Editeur/fonctionpanel.py b/Editeur/fonctionpanel.py new file mode 100644 index 00000000..c57e8948 --- /dev/null +++ b/Editeur/fonctionpanel.py @@ -0,0 +1,203 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== +# Modules Python +import string,types,os +from Tkinter import * +import Pmw +from tkFileDialog import * +from tkMessageBox import showinfo +from copy import copy,deepcopy +import traceback + +# Modules Eficas +import Objecttreeitem +import prefs +import panels +import images +from widgets import ListeChoix +from widgets import FenetreDeSelection + +from Noyau.N_CR import justify_text +from utils import substract_list +from plusieursbasepanel import PLUSIEURS_BASE_Panel + + +class FONCTION_Panel(PLUSIEURS_BASE_Panel): + def makeValeurPage(self,page): + """ + 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 + """ + # 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() + objet_mc = self.node.item.get_definition() + aide = self.get_aide() + aide = justify_text(texte=aide) + min,max = self.node.item.GetMinMax() + l_valeurs = self.node.item.GetListeValeurs() + l2_valeurs=self.decoupeListeValeurs(l_valeurs) + + # création des frames globales + self.frame1 = Frame(page,relief='groove',bd=2) + self.frame2 = Frame(page) + self.frame1.place(relx=0.,rely=0.,relwidth=1.,relheight=0.85) + self.frame2.place(relx=0.,rely=0.85,relwidth=1,relheight=0.15) + self.frame_right = Frame(self.frame1) + self.frame_right.place(relx=0.35,rely=0.,relwidth=0.65,relheight=1.) + + # création des frames internes + self.frame_valeurs = Frame(self.frame1) + self.frame_valeurs.place(relx=0.02,rely=0.05,relwidth=0.35,relheight=0.95) + 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_aide = Frame(self.frame_right) + self.frame_aide.place(relx=0.1,rely=0.7,relwidth=0.8,relheight=0.3) + 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, + self.frame_boutons_fleches,self.frame_choix,self.frame_aide,self.frame_boutons): + fram.bind("",lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a)) + fram.bind("",self.parent.appli.efface_aide) + + # création des objets dans les frames + liste_commandes_valeurs = (("",self.selectValeur), + ("",self.deselectValeur), + ("",self.sup_valeur_sans_into)) + self.Liste_valeurs = ListeChoix(self,self.frame_valeurs,l2_valeurs,liste_commandes = liste_commandes_valeurs, + titre="Valeur(s) actuelle(s)") + + # Création de l'entry ou de la liste des SD + self.label = Label(self.frame_choix,text="Valeur :") + self.make_entry(frame = self.frame_choix,command = self. +) + self.label.place(relx=0.05,rely=0.5) + + # Création d'un bouton "Importer ..." sur le panel. + bouton_valeurs_fichier = Button(self.frame_choix, + text="Importer ...", + command=self.select_in_file) + bouton_valeurs_fichier.place(relx=0.28,rely=0.7,relwidth=0.6) + self.ajout_valeurs = None + + # boutons Ajouter et Supprimer + bouton_add = Button(self.frame_boutons_fleches, + image = images.get_image('arrow_left'), + #command = self.add_valeur_plusieurs_base) + command = self.add_double_valeur_plusieurs_base) + bouton_sup = Button(self.frame_boutons_fleches, + image = images.get_image('arrow_right'), + command = self.sup_valeur_sans_into) + bouton_add.place(relx=0.3,rely=0.35) + bouton_sup.place(relx=0.3,rely=0.65) + # affichage de l'aide + self.frame_aide.update() + self.aide = Label(self.frame_aide, + text = aide, + justify='center', + anchor='center', + 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() + # boutons Accepter et Annuler + bouton_accepter = Button(self.frame_boutons, + text='Valider', + command = lambda s=self,m=min,M=max : s.accepte_modifs_valeur_recolle(m,M)) + bouton_annuler = Button(self.frame_boutons, + text = 'Annuler', + command = self.annule_modifs_valeur) + for but in (bouton_accepter,bouton_annuler): + but.pack(side='left',padx=5) + + + def decoupeListeValeurs(self,liste): + #decoupe la liste des valeurs en 2 ( les x puis les y) + l_valeurs=[] + for i in range(len(liste)/2) : + t=(liste[i*2], liste[i*2+1]) + l_valeurs.append(t) + return l_valeurs + + + def accepte_modifs_valeur_recolle(self,min,max): + l_valeurs=[] + l1_valeurs = self.Liste_valeurs.get_liste() + for val in l1_valeurs : + for item in val : + l_valeurs.append(item) + self.accepte_modifs_valeur(min,max,l_valeurs) + + def add_double_valeur_plusieurs_base(self): + print "FFFFFFFFFFFFFFFFFF" + # on verifie qu'il s agit bien d un tuple + # on enleve les parentheses eventuelles + doublevaleur_entree=self.get_valeur() + try: + if doublevaleur_entree[0]=='(' : + doublevaleur_entree=doublevaleur_entree[1:-1] + if doublevaleur_entree[-1]==')' : + doublevaleur_entree=doublevaleur_entree[0:-2] + val1=doublevaleur_entree.split(',')[0] + val2=doublevaleur_entree.split(',')[1] + except : + commentaire = "%s n est pas un tuple de la forme (x,y)" %`doublevaleur_entree` + self.parent.appli.affiche_infos(commentaire) + return + + # et seulement d un tuple + try: + val3=doublevaleur_entree.split(',')[2] + commentaire = "%s n est pas un tuple de la forme (x,y)" %`doublevaleur_entree` + self.parent.appli.affiche_infos(commentaire) + return + except : + # c est la le cas normal + pass + + # on verifie la validite des valeurs sont correctes + valeur,validite=self.node.item.eval_valeur((val1,val2)) + if not validite : + commentaire = "impossible d'évaluer : %s " %`doublevaleur_entree` + self.parent.appli.affiche_infos(commentaire) + return + + # on verifie la validite de la liste + liste=[] + l1_valeurs = self.Liste_valeurs.get_liste() + for val in l1_valeurs : + for item in val : + liste.append(item) + print liste + validite_liste=self.node.item.valide_liste_partielle(valeur[0],liste) + if not validite_liste: + commentaire = "impossible d'ajouter %s a la liste " %`doublevaleur_entree` + self.parent.appli.affiche_infos(commentaire) + return + validite_liste=self.node.item.valide_liste_partielle(valeur[1],liste) + if not validite_liste: + commentaire = "impossible d'ajouter %s a la liste " %`doublevaleur_entree` + self.parent.appli.affiche_infos(commentaire) + return + + # si on est la on ajoute le tuple + l1_valeurs.append((valeur[0],valeur[1])) + self.Liste_valeurs.put_liste(l1_valeurs)