From: eficas <> Date: Thu, 16 Sep 2004 08:39:51 +0000 (+0000) Subject: PN : modification pour présentation automatique des paramètres X-Git-Tag: CC_param_poursuite~248 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=3e9d0381e340266ceaa2b7cebc141778f5a45897;p=modules%2Feficas.git PN : modification pour présentation automatique des paramètres --- diff --git a/Editeur/composimp.py b/Editeur/composimp.py index b7d82f61..353082a2 100644 --- a/Editeur/composimp.py +++ b/Editeur/composimp.py @@ -262,6 +262,21 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): listevalideliste=listevalideitem return listevalideliste + def get_liste_param_possible(self): + # + liste_param=[] + for param in self.object.jdc.params: + encorevalide=self.valide_item(param.valeur) + if encorevalide: + type_param=param.valeur.__class__.__name__ + for typ in self.definition.type: + if typ=='R' and type_param=='float': + liste_param.append(param) + if typ=='I' and type_param=='int': + liste_param.append(param) + if typ=='TXM' and type_param=='str': + liste_param.append(repr(param)) + return liste_param #-------------------------------------------------- # diff --git a/Editeur/plusieursbasepanel.py b/Editeur/plusieursbasepanel.py index b9ead4d1..b7e82901 100644 --- a/Editeur/plusieursbasepanel.py +++ b/Editeur/plusieursbasepanel.py @@ -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 @@ -133,6 +134,16 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel): command = self.annule_modifs_valeur) for but in (bouton_accepter,bouton_annuler): but.pack(side='left',padx=5) + # traitement de la fenetre des parametres + if self.node.item.get_liste_param_possible() != [ ]: + txtparam="" + for param in self.node.item.get_liste_param_possible(): + txtparam=txtparam+repr(param)+"\n" + self.fenetreparam=FenetreDeParametre( self, + self.node.item, + self.parent.appli, + txtparam) + def add_valeur_plusieurs_base(self,name=None): if name != None : diff --git a/Editeur/uniquebasepanel.py b/Editeur/uniquebasepanel.py index 49c4ae8b..e49de52a 100644 --- a/Editeur/uniquebasepanel.py +++ b/Editeur/uniquebasepanel.py @@ -21,6 +21,7 @@ # Modules Python import string,types,os from Tkinter import * +from Tkinter import Widget import Pmw from copy import copy,deepcopy import traceback @@ -30,8 +31,7 @@ import Objecttreeitem import prefs import panels import images -from widgets import ListeChoix -from widgets import FenetreDeSelection +from widgets import FenetreDeParametre from Noyau.N_CR import justify_text from utils import substract_list @@ -66,7 +66,6 @@ class UNIQUE_BASE_Panel(UNIQUE_Panel): self.entry = Entry(self.frame_valeur,relief='sunken') self.entry.place(relx=0.28,rely=0.5,relwidth=0.6) self.entry.bind("",lambda e,c=self.valid_valeur:c()) - self.entry.focus() # aide associée au panneau self.frame_valeur.update() self.aide = Label(self.frame_valeur, @@ -76,6 +75,22 @@ class UNIQUE_BASE_Panel(UNIQUE_Panel): self.aide.place(relx=0.5,rely=0.7,anchor='n') # affichage de la valeur du MCS self.display_valeur() + # traitement de la fenetre des parametres + if self.node.item.get_liste_param_possible() != [ ]: + txtparam="" + for param in self.node.item.get_liste_param_possible(): + txtparam=txtparam+repr(param)+"\n" + self.fenetreparam=FenetreDeParametre( self, + self.node.item, + self.parent.appli, + txtparam) + + def destroy(self): + try : + self.fenetreparam.destroy() + except : + pass + Widget.destroy(self) def get_aide(self): """ diff --git a/Editeur/widgets.py b/Editeur/widgets.py index 003d759c..228a5480 100644 --- a/Editeur/widgets.py +++ b/Editeur/widgets.py @@ -137,6 +137,12 @@ class Fenetre : else: showinfo("Sauvegarde effectuée","Sauvegarde effectuée dans le fichier %s" %file) + def destroy(self): + try : + self.fenetre.destroy() + except : + pass + class FenetreYesNo(Fenetre): def __init__(self,appli,titre="",texte="",yes="Yes",no="No"): self.appli=appli @@ -212,6 +218,7 @@ class FenetreDeSelection(Fenetre): self.but_save.place_forget() self.but_save.place(relx=0.6,rely=0.5,anchor='center') self.but_quit.place(relx=0.8,rely=0.5,anchor='center') + def get_separateurs_autorises(self): """ @@ -382,6 +389,52 @@ class FenetreDeSelection(Fenetre): liste.extend(liste_valeurs) self.panel.Liste_valeurs.put_liste(liste) +class FenetreDeParametre(Fenetre) : + def __init__(self,parent,item,appli,texte): + self.parent=parent + self.appli=appli + self.fenetre = Toplevel() + self.fenetre.configure(width = 250,height=100) + self.fenetre.protocol("WM_DELETE_WINDOW", self.quit) + self.fenetre.title("Parametres") + self.titre = "Parametres" + self.texte = string.replace(texte,'\r\n','\n') + fonte=fontes.standardcourier10 + + # définition des frames + self.frame_texte = Frame(self.fenetre) + self.frame_texte.place(relx=0,rely=0,relwidth=1,relheight=0.9) + # définition de la zone texte et du scrollbar + self.zone_texte = Text(self.frame_texte,font=fonte) + self.zone_texte.bind("", self.page_up) + self.zone_texte.bind("", self.page_down) + self.zone_texte.bind("", self.unit_up) + self.zone_texte.bind("", self.unit_down) + self.zone_texte.bind("", self.OnButton3doubleclick) + self.scroll_v = Scrollbar (self.frame_texte,command = self.zone_texte.yview) + self.scroll_v.pack(side='right',fill ='y') + self.zone_texte.pack(side='top',fill='both',expand=1,padx=5,pady=10) + self.zone_texte.configure(yscrollcommand=self.scroll_v.set) + # affichage du texte + self.affiche_texte(self.texte) + self.zone_texte.config(state="disabled") + + def OnButton3doubleclick(self,event): + try: + selection=self.zone_texte.selection_get() + except: + showerror("Pas de donnée sélectionnée", + "Selectionner un parametre") + l_param = "" + for param in selection.splitlines(): + nomparam=param[0:param.find("=")-1] + if nomparam != '' : + l_param=l_param+nomparam+',' + self.parent.entry.delete(0,Tkinter.END) + self.parent.entry.insert(0,l_param[0:-1]) + self.parent.valid_valeur() + self.quit() + class Formulaire: """ Cette classe permet de créer une boîte Dialog dans laquelle