X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=Editeur%2Fpanels.py;h=b6a97e9f81a8986672883fd3ea2f35dda49e5582;hb=36ca867c4099d6a804374b8f6a2b897d9ea69a09;hp=5999c6c9d143bc3a99dc5225c0fd51f277f87e02;hpb=58b5829ebf53f3e8fd09707bb5abcdb154107d47;p=tools%2Feficas.git diff --git a/Editeur/panels.py b/Editeur/panels.py index 5999c6c9..b6a97e9f 100644 --- a/Editeur/panels.py +++ b/Editeur/panels.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -21,8 +22,14 @@ import string import os from Tkinter import * import Pmw +import time +import traceback +import widgets from widgets import ListeChoix +from widgets import ListeChoixParGroupes +import prefs +import options SEPARATEUR = '-'*30 @@ -33,6 +40,9 @@ class Panel(Frame) : Elle est toujours dérivée. """ def __init__(self,parent,panneau,node) : + # Le parent d'un panel est un objet de la classe JDCDISPLAY ou derivee + # ou un objet qui a les attributs : appli (de classe APPLI ou derivee), + # modified et la methode init_modif self.parent=parent self.panneau = panneau self.node=node @@ -41,6 +51,10 @@ class Panel(Frame) : self.creer_boutons() self.init() + def __del__(self): + """ appele a la destruction du panel """ + #print "PANEL DETRUIT" + def destroy(self): Frame.destroy(self) self.panneau=None @@ -54,7 +68,7 @@ class Panel(Frame) : self.bouton_doc=None self.bouton_com=None self.bouton_sup=None - self.frame_eval=None + #self.frame_eval=None self.label=None self.frame_boutons=None self.frame_comment=None @@ -95,8 +109,8 @@ class Panel(Frame) : self.bouton_cata.place(relx=0.5,rely = 0.5,relheight = 0.8,anchor='center') self.bouton_doc.place(relx=0.75,rely = 0.5,relheight = 0.8,anchor='center') else: - self.bouton_sup.place(relx=0.3,rely = 0.5,relheight = 0.8,anchor='center') - self.bouton_doc.place(relx=0.7,rely = 0.5,relheight = 0.8,anchor='center') + self.bouton_sup.place(relx=0.25,rely = 0.5,relheight = 0.8,anchor='center') + self.bouton_doc.place(relx=0.5,rely = 0.5,relheight = 0.8,anchor='center') def show_catalogue(self): try: @@ -147,21 +161,21 @@ class Panel(Frame) : if self.parent.modified == 'n' : self.parent.init_modif() return self.node.append_child("PARAMETRE",'first') - def ajout_parametre_eval(self,ind='after'): - """ - Ajoute un paramètre EVAL à l'intérieur du JDC : - - si ind='after' : l'ajoute après l'objet courant - - si ind='before' : l'ajoute avant. - """ - if self.parent.modified == 'n' : self.parent.init_modif() - return self.node.append_brother("PARAMETRE_EVAL",ind) +# def ajout_parametre_eval(self,ind='after'): +# """ +# Ajoute un paramètre EVAL à l'intérieur du JDC : +# - si ind='after' : l'ajoute après l'objet courant +# - si ind='before' : l'ajoute avant. +# """ +# if self.parent.modified == 'n' : self.parent.init_modif() +# return self.node.append_brother("PARAMETRE_EVAL",ind) - def ajout_parametre_eval_first(self): - """ - Ajoute un paramètre EVAL en début de JDC - """ - if self.parent.modified == 'n' : self.parent.init_modif() - return self.node.append_child("PARAMETRE_EVAL",'first') +# def ajout_parametre_eval_first(self): +# """ +# Ajoute un paramètre EVAL en début de JDC +# """ +# if self.parent.modified == 'n' : self.parent.init_modif() +# return self.node.append_child("PARAMETRE_EVAL",'first') # ------------------------------------------------------------------------ @@ -187,8 +201,8 @@ class Panel(Frame) : """ Suppression du noeud courant """ + # On signale au parent du panel (le JDCDisplay) une modification if self.parent.modified == 'n' : self.parent.init_modif() - pere = self.node.parent self.node.delete() def affiche(self): @@ -201,10 +215,9 @@ class Panel(Frame) : texte_infos = '' for e in cmd.entites.keys() : if e == name : - texte_infos=cmd.entites[e].fr + texte_infos=getattr(cmd.entites[e],prefs.lang) break if texte_infos == '' : texte_infos="Pas d'infos disponibles" - #EFICAS.affiche_infos(texte_infos) self.parent.appli.affiche_infos(texte_infos) def defMC(self,name): @@ -219,9 +232,8 @@ class Panel(Frame) : def selectCmd(self,name): """ On retrouve la commande sous le curseur pour affichage du fr """ if name != 'COMMENTAIRE' and name != SEPARATEUR: - #EFICAS.affiche_infos(self.parent.appli.cataitem.d_fils[name].fr) - #self.parent.appli.affiche_infos(self.parent.appli.cataitem.d_fils[name].fr) - self.parent.appli.affiche_infos(self.parent.jdc.get_cmd(name).fr) + texte_infos=getattr(self.parent.jdc.get_cmd(name),prefs.lang) + self.parent.appli.affiche_infos(texte_infos) def defCmd(self,name): """ @@ -231,6 +243,9 @@ class Panel(Frame) : if name == SEPARATEUR:return if self.parent.modified == 'n' : self.parent.init_modif() if name != "COMMENTAIRE": + #parent=self.node.parent + #new_obj = parent.item.append_child(name,self.node.item.getObject()) + #parent.children[parent.children.index(self.node)+1].select() new_node = self.node.append_brother(name,'after') else : new_node = self.ajout_commentaire() @@ -240,6 +255,8 @@ class Panel(Frame) : if name == SEPARATEUR:return if self.parent.modified == 'n' : self.parent.init_modif() if name != "COMMENTAIRE": + #new_obj = self.node.item.append_child(name,'first') + #self.node.children[0].select() new_node = self.node.append_child(name,'first') else : new_node = self.ajout_commentaire_first() @@ -255,11 +272,24 @@ class OngletPanel(Panel) : self._any.focus() except: pass + elif page == 'Commande': + try: + self.command_entry.component('entry').focus() + except: + pass + def affiche(self): page=self.nb.getcurselection() self.nb.page(page).focus_set() - if page == 'Concept':self._any.component('entry').focus_set() + if page == 'Concept': + try: +# _any est un pointeur sur entry +# component est une methode de pmw +# a priori, jamais ok + self._any.component('entry').focus_set() + except: + pass self.tkraise() # ------------------------------------------------------------------------ @@ -285,7 +315,7 @@ class OngletPanel(Panel) : self._any.focus() # aide associée au panneau bulle_aide="""Tapez dans la zone de saisie le nom que vous voulez donner - au concept retoruné par l'opérateur courant et pressez pour valider""" + au concept retounré par l'opérateur courant et pressez pour valider""" page.bind("", lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a)) page.bind("",self.parent.appli.efface_aide) @@ -317,18 +347,30 @@ class OngletPanel(Panel) : but_apres.grid(column = 1,row =3) def makeCommandePage(self,page): + """ + Cree l'onglet + """ frame1 = Frame(page,height = 20) frame1.pack(side='top',fill='x') label = Label(frame1,text ="La commande choisie sera ajoutée\n APRES la commande courante") label.pack(side='top') frame2 = Frame(page) frame2.pack(side='top',fill='both',expand=1) - liste_cmd = self.get_liste_cmd() liste_commandes = (("",self.selectCmd), ("",self.deselectCmd), ("",self.defCmd)) - Liste = ListeChoix(self,frame2,liste_cmd,liste_commandes = liste_commandes,filtre='oui',titre = "Commandes") + if options.affichage_commandes == "alphabetic": + liste_cmd = self.get_liste_cmd() + Liste = ListeChoix(self,frame2,liste_cmd,liste_commandes = liste_commandes, + filtre='oui',titre = "Commandes",optionReturn="oui") + else: + liste_commandes=liste_commandes+(("",self.defCmd),) + liste_groupes,dict_groupes=self.get_groups() + Liste = ListeChoixParGroupes(self,frame2,liste_groupes,dict_groupes, + liste_commandes = liste_commandes, + filtre='oui',titre = "Commandes",optionReturn="oui") Liste.affiche_liste() + self.command_entry=Liste.entry # aide associée au panneau bulle_aide="""Double-cliquez sur la commande que vous voulez ajouter au jeu de commandes""" Liste.MCbox.bind("", lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a)) @@ -338,11 +380,19 @@ class OngletPanel(Panel) : """ Crée la page correspondant à un objet de type JDC """ - liste_cmd = self.get_liste_cmd() liste_commandes = (("",self.selectCmd), ("",self.deselectCmd), ("",self.defCmdFirst)) - Liste = ListeChoix(self,page,liste_cmd,liste_commandes = liste_commandes,filtre='oui',titre = "Commandes") + if options.affichage_commandes == "alphabetic": + liste_cmd = self.get_liste_cmd() + Liste = ListeChoix(self,page,liste_cmd,liste_commandes = liste_commandes, + filtre='oui',titre = "Commandes",optionReturn="oui") + else: + liste_commandes=liste_commandes+(("",self.defCmd),) + liste_groupes,dict_groupes=self.get_groups() + Liste = ListeChoixParGroupes(self,page,liste_groupes,dict_groupes, + liste_commandes = liste_commandes, + filtre='oui',titre = "Commandes",optionReturn="oui") Liste.affiche_liste() # aide associée au panneau bulle_aide="""Double-cliquez sur la commande que vous voulez ajouter au jeu de commandes""" @@ -386,11 +436,11 @@ class OngletPanel(Panel) : # les frame ... self.frame_comment = Frame(page,bd=1,relief='raised') self.frame_param = Frame(page,bd=1,relief='raised') - self.frame_eval = Frame(page,bd=1,relief='raised') + #self.frame_eval = Frame(page,bd=1,relief='raised') self.frame_boutons = Frame(page,bd=1,relief='raised') - self.frame_comment.place(relx=0,rely=0,relwidth=1,relheight=0.28) - self.frame_param.place(relx=0,rely=0.28,relwidth=1,relheight=0.28) - self.frame_eval.place(relx=0,rely=0.56,relwidth=1,relheight=0.28) + self.frame_comment.place(relx=0,rely=0,relwidth=1,relheight=0.40) + self.frame_param.place(relx=0,rely=0.40,relwidth=1,relheight=0.40) + #self.frame_eval.place(relx=0,rely=0.56,relwidth=1,relheight=0.28) self.frame_boutons.place(relx=0,rely=0.84,relwidth=1,relheight=0.16) # remplissage de la frame commentaire Label(self.frame_comment,text = "Insérer un commentaire :").place(relx=0.1,rely=0.5,anchor='w') @@ -413,35 +463,39 @@ class OngletPanel(Panel) : but_param_avant.place(relx=0.6,rely=0.3,anchor='w',relwidth=0.3) but_param_apres.place(relx=0.6,rely=0.7,anchor='w',relwidth=0.3) # remplissage de la frame eval - Label(self.frame_eval,text="Insérer un paramètre EVAL :").place(relx=0.1,rely=0.5,anchor='w') + #Label(self.frame_eval,text="Insérer un paramètre EVAL :").place(relx=0.1,rely=0.5,anchor='w') #Label(self.frame_eval,text='Non encore disponible').place(relx=0.6,rely=0.5,anchor='w') - but_eval_avant = Button(self.frame_eval, - text = "AVANT "+self.node.item.get_nom(), - command = lambda s=self :s.ajout_parametre_eval(ind = 'before')) - but_eval_apres = Button(self.frame_eval, - text = "APRES "+self.node.item.get_nom(), - command = self.ajout_parametre_eval) - but_eval_avant.place(relx=0.6,rely=0.3,anchor='w',relwidth=0.3) - but_eval_apres.place(relx=0.6,rely=0.7,anchor='w',relwidth=0.3) + #but_eval_avant = Button(self.frame_eval, + # text = "AVANT "+self.node.item.get_nom(), + # command = lambda s=self :s.ajout_parametre_eval(ind = 'before')) + #but_eval_apres = Button(self.frame_eval, + # text = "APRES "+self.node.item.get_nom(), + # command = self.ajout_parametre_eval) + #but_eval_avant.place(relx=0.6,rely=0.3,anchor='w',relwidth=0.3) + #but_eval_apres.place(relx=0.6,rely=0.7,anchor='w',relwidth=0.3) # remplissage de la frame boutons Button(self.frame_boutons, text="Commentariser toute la commande", command = self.comment_commande).place(relx=0.5,rely=0.5,anchor='center') def deselectMC(self,name): - #EFICAS.affiche_infos('') self.parent.appli.affiche_infos('') - def get_liste_cmd_old(self): + def get_liste_cmd_BAK(self): listeCmd = self.cata.listCmd() return listeCmd + def get_groups(self): + jdc=self.node.item.object.get_jdc_root() + return jdc.get_groups() + def get_liste_cmd(self): - listeCmd = self.node.item.object.niveau.definition.get_liste_cmd() + #print "get_liste_cmd",self.node.item.object + jdc=self.node.item.object.get_jdc_root() + listeCmd = jdc.get_liste_cmd() return listeCmd def deselectCmd(self,name): - #EFICAS.affiche_infos('') self.parent.appli.affiche_infos('') def execConcept(self): @@ -455,12 +509,10 @@ class OngletPanel(Panel) : nom = string.strip(nom) if nom == '' : return # si pas de nom, on ressort sans rien faire ... if self.parent.modified == 'n' : self.parent.init_modif() - # Pourquoi node.etape ??? - #test,mess = self.node.etape.item.nomme_sd(nom) test,mess = self.node.item.nomme_sd(nom) - #EFICAS.affiche_infos(mess) + #self.node.verif() + #self.node.racine.update() self.parent.appli.affiche_infos(mess) - self.node.racine.update() def changed(self): pass @@ -469,10 +521,18 @@ class OngletPanel(Panel) : """ Cette méthode a pour but de commentariser la commande pointée par self.node """ - commande_comment = self.node.item.get_objet_commentarise() - #XXX il faudrait ici aussi eviter l'appel à EFICAS - self.parent.appli.bureau.JDCDisplay_courant.ReplaceObjectNode(self.node,commande_comment,None) - #EFICAS.JDCDisplay_courant.ReplaceObjectNode(self.node,commande_comment,None) + # On traite par une exception le cas où l'utilisateur final cherche à désactiver + # (commentariser) un commentaire. + try : + pos=self.node.parent.children.index(self.node) + commande_comment = self.node.item.get_objet_commentarise() + self.node.parent.children[pos].select() + #self.parent.appli.bureau.JDCDisplay_courant.ReplaceObjectNode(self.node,commande_comment,None) + except Exception,e: + traceback.print_exc() + widgets.showerror("TOO BAD",str(e)) + return + class Panel_Inactif(Panel): """ @@ -500,3 +560,4 @@ class Panel_Inactif(Panel): self.bouton_sup.place(relx=0.5,rely=0.8,anchor='center') +if __name__ == "__main__" : pass