From d7f8dbae7874388c182e100c6d39495da987c835 Mon Sep 17 00:00:00 2001 From: eficas <> Date: Fri, 25 Feb 2005 11:41:21 +0000 Subject: [PATCH] PN pour prise en compte du retour chariot --- Editeur/panels.py | 8 +++---- Editeur/treewidget.py | 30 +++++++++++++++++++++++--- Editeur/widgets.py | 49 +++++++++++++++++++++++++++++++++++++------ 3 files changed, 74 insertions(+), 13 deletions(-) diff --git a/Editeur/panels.py b/Editeur/panels.py index ca8867a5..1229e74b 100644 --- a/Editeur/panels.py +++ b/Editeur/panels.py @@ -352,13 +352,13 @@ class OngletPanel(Panel) : 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") + filtre='oui',titre = "Commandes",optionReturn="oui") else: liste_groupes=self.node.item.object.niveau.definition.liste_groupes dict_groupes=self.node.item.object.niveau.definition.dict_groupes Liste = ListeChoixParGroupes(self,frame2,liste_groupes,dict_groupes, liste_commandes = liste_commandes, - filtre='oui',titre = "Commandes") + filtre='oui',titre = "Commandes",optionReturn="oui") Liste.affiche_liste() self.command_entry=Liste.entry # aide associée au panneau @@ -376,13 +376,13 @@ class OngletPanel(Panel) : 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") + filtre='oui',titre = "Commandes",optionReturn="oui") else: liste_groupes=self.node.item.object.niveau.definition.liste_groupes dict_groupes=self.node.item.object.niveau.definition.dict_groupes Liste = ListeChoixParGroupes(self,page,liste_groupes,dict_groupes, liste_commandes = liste_commandes, - filtre='oui',titre = "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""" diff --git a/Editeur/treewidget.py b/Editeur/treewidget.py index d2f6e361..50c6efb5 100644 --- a/Editeur/treewidget.py +++ b/Editeur/treewidget.py @@ -27,7 +27,7 @@ import images # __version__="$Name: $" -__Id__="$Id: treewidget.py,v 1.17 2004/11/15 14:01:36 eficas Exp $" +__Id__="$Id: treewidget.py,v 1.18 2004/11/17 16:08:34 eficas Exp $" # Fonte_Standard = fontes.standard @@ -41,6 +41,8 @@ class Tree : self.canvas.bind("", self.page_down) self.canvas.bind("", self.unit_up) self.canvas.bind("", self.unit_down) + self.canvas.bind("", self.mot_up) + self.canvas.bind("", self.mot_down) self.canvas.bind("<1>", self.canvas_select) self.tree = self self.command = command @@ -63,6 +65,14 @@ class Tree : def unit_down(self,event): event.widget.yview_scroll(1, "unit") + def mot_down(self,event): + self.select_next(None) + self.canvas.focus_set() + + def mot_up(self,event): + self.node_selected.select_mot_previous() + self.canvas.focus_set() + def build_children(self): """ Construit la liste des enfants de self """ self.children = [] @@ -104,6 +114,7 @@ class Tree : def select_next(self,event): self.node_selected.select_next() + self.canvas.focus_set() def select_previous(self,event): self.node_selected.select_previous() @@ -227,14 +238,27 @@ class Node : self.children[ind].select() else : index = self.parent.children.index(self) + 1 - if isinstance(self.parent,TREE) : + try : + if isinstance(self.parent,TREE) : try: self.children[ind].select() except: self.children[0].select() - else : + else : + self.parent.select_next(index) + except : self.parent.select_next(index) + def select_mot_previous(self): + index = self.parent.children.index(self) - 1 + try : + if index > 0 : + self.parent.children[index].select() + else : + self.parent.select() + except: + self.parent.select() + def select_previous(self): """ on doit d'abord sélectionner(dans l'ordre) : - son frère aîné diff --git a/Editeur/widgets.py b/Editeur/widgets.py index 040db014..9817573c 100644 --- a/Editeur/widgets.py +++ b/Editeur/widgets.py @@ -668,7 +668,7 @@ class Formulaire: class ListeChoix : """ Cette classe est utilisée pour afficher une liste de choix passée en paramètre en passant les commandes à lancer suivant différents bindings """ - def __init__(self,parent,page,liste,liste_commandes=[],liste_marques =[],active ='oui',filtre='non',titre=''): + def __init__(self,parent,page,liste,liste_commandes=[],liste_marques =[],active ='oui',filtre='non',titre='',optionReturn=None): self.parent = parent self.page = page self.liste = liste @@ -680,6 +680,7 @@ class ListeChoix : self.active = active self.titre = titre self.filtre = filtre + self.optionReturn = optionReturn self.init() def init(self): @@ -716,6 +717,7 @@ class ListeChoix : self.MCbox.pack(fill='y',expand=1,padx=2,pady=2) self.MCbox.configure(yscrollcommand=self.MCscroll.set) + def affiche_liste(self): """ Affiche la liste dans la fenêtre""" liste_labels=[] @@ -736,11 +738,11 @@ class ListeChoix : mot="(" premier=1 for val in objet: - if (not premier): - mot=mot+"," - else: - premier=0 - mot=mot+str(val) + if (not premier): + mot=mot+"," + else: + premier=0 + mot=mot+str(val) mot=mot+")" else: mot=`objet` @@ -753,6 +755,9 @@ class ListeChoix : window=label, stretch = 1) self.MCbox.insert(END,'\n') + if self.optionReturn != None : + label.bind("",lambda e,s=self,c=self.liste_commandes[2][1],x=objet,l=label : s.chooseitemsurligne(x,l,c)) + label.bind("",lambda e,s=self,x=objet,l=label : s.selectNextItem(x,l)) if self.active == 'oui': label.bind(self.liste_commandes[0][0],lambda e,s=self,c=self.liste_commandes[0][1],x=objet,l=label : s.selectitem(x,l,c)) label.bind(self.liste_commandes[1][0],lambda e,s=self,c=self.liste_commandes[1][1],x=objet,l=label : s.deselectitem(l,x,c)) @@ -781,6 +786,15 @@ class ListeChoix : except: pass + def chooseitemsurligne(self,mot,label,commande): + """ Active la méthode de choix passée en argument""" + try: + mot=self.arg_selected + commande(mot) + except AsException,e: + raison=str(e) + showerror(raison.split('\n')[0],raison) + def chooseitem(self,mot,label,commande): """ Active la méthode de choix passée en argument""" try: @@ -789,6 +803,24 @@ class ListeChoix : raison=str(e) showerror(raison.split('\n')[0],raison) + def selectNextItem(self,mot,label): + try : + index=self.liste.index(mot) + indexsuivant=index+1 + motsuivant=self.liste[indexsuivant] + labelsuivant=self.dico_labels[motsuivant] + self.clear_marque() + if self.selection != None : + self.deselectitem(self.selection[1],self.selection[0],self.selection[2],) + self.selection = (mot,label,self.selection[2]) + self.highlightitem(labelsuivant) + self.arg_selected=motsuivant + labelsuivant.focus_set() + # PN il faut faire quelque chose pour être dans la fenetre + except: + pass + + def selectitem(self,mot,label,commande) : """ Met l'item sélectionné (représenté par son label) en surbrillance et lance la commande associée au double-clic""" @@ -838,6 +870,10 @@ class ListeChoix : self.MCbox.see(index) self.arg_selected = arg break + try : + self.dico_labels[self.arg_selected].focus_set() + except : + pass def get_liste_old(self): return self.liste @@ -1090,6 +1126,7 @@ class ListeChoixParGroupes(ListeChoix) : lambda e,s=self,c=self.liste_commandes[1][1],x=cmd,l=label : s.deselectitem(l,x,c)) label.bind(self.liste_commandes[2][0], lambda e,s=self,c=self.liste_commandes[2][1],x=cmd,l=label : s.chooseitem(x,l,c)) + label.bind("", self.selectNextItem(event)) for marque in self.liste_marques: try: -- 2.39.2