]> SALOME platform Git repositories - modules/eficas.git/commitdiff
Salome HOME
PN pour prise en compte du retour chariot
authoreficas <>
Fri, 25 Feb 2005 11:41:21 +0000 (11:41 +0000)
committereficas <>
Fri, 25 Feb 2005 11:41:21 +0000 (11:41 +0000)
Editeur/panels.py
Editeur/treewidget.py
Editeur/widgets.py

index ca8867a521e8b76ce7b10f6b044b184d5048f205..1229e74b8374e1b5472c76ef977105eb327e4929 100644 (file)
@@ -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"""
index d2f6e361b197aa30cb5dc94afe65ac1466bdc635..50c6efb5d57b40853d20153907e1749b90ebbc58 100644 (file)
@@ -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("<Key-Next>", self.page_down)
         self.canvas.bind("<Key-Up>", self.unit_up)
         self.canvas.bind("<Key-Down>", self.unit_down)             
+        self.canvas.bind("<Key-Left>", self.mot_up)
+        self.canvas.bind("<Key-Right>", 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é
index 040db01413264836a345ef7bb7fb3f2341fc9651..9817573c1ff85544798105303d4b2c9d7b09d231 100644 (file)
@@ -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("<Return>",lambda e,s=self,c=self.liste_commandes[2][1],x=objet,l=label : s.chooseitemsurligne(x,l,c))
+          label.bind("<Key-Right>",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("<Key-Down>", self.selectNextItem(event))
 
         for marque in self.liste_marques:
            try: