]> granicus.if.org Git - python/commitdiff
further work on dynamic reconfiguration;
authorSteven M. Gava <elguavas@python.net>
Mon, 18 Mar 2002 02:38:44 +0000 (02:38 +0000)
committerSteven M. Gava <elguavas@python.net>
Mon, 18 Mar 2002 02:38:44 +0000 (02:38 +0000)
keybindings

Lib/idlelib/EditorWindow.py
Lib/idlelib/configDialog.py

index 99f40a7694372a44776936d74d1f121483e28e99..49f98693324b8cb14710f4e0ae9f42e72cdc128f 100644 (file)
@@ -492,6 +492,39 @@ class EditorWindow:
                 idleConf.GetOption('main','EditorWindow','font-size'),
                 fontWeight))
 
+    def ResetKeybindings(self):
+        #this function is called from configDialog.py
+        #to update the keybindings if they are changed
+        self.Bindings.default_keydefs=idleConf.GetCurrentKeySet()
+        keydefs = self.Bindings.default_keydefs
+        for event, keylist in keydefs.items():
+            self.text.event_delete(event)
+        self.apply_bindings()
+        #update menu accelerators
+        menuEventDict={}
+        for menu in self.Bindings.menudefs:
+            menuEventDict[menu[0]]={}
+            for item in menu[1]:
+                if item:
+                    menuEventDict[menu[0]][prepstr(item[0])[1]]=item[1]
+        for menubarItem in self.menudict.keys():
+            menu=self.menudict[menubarItem]
+            end=menu.index(END)+1
+            for index in range(0,end):
+                if menu.type(index)=='command':
+                    accel=menu.entrycget(index,'accelerator')
+                    if accel:
+                        itemName=menu.entrycget(index,'label')
+                        event=''
+                        if menuEventDict.has_key(menubarItem):
+                            if menuEventDict[menubarItem].has_key(itemName):
+                                event=menuEventDict[menubarItem][itemName]
+                        if event:
+                            #print 'accel was:',accel
+                            accel=get_accelerator(keydefs, event)
+                            menu.entryconfig(index,accelerator=accel)
+                            #print 'accel now:',accel,'\n'
+
     def saved_change_hook(self):
         short = self.short_title()
         long = self.long_title()
index a7ad53014ad8e3ea1b5b0dcadcf2b8db0c2cf6ea..bff86d9036db212f34b1907e1d0097e7828405f0 100644 (file)
@@ -1096,6 +1096,7 @@ class ConfigDialog(Toplevel):
         for instance in winInstances:
             instance.ResetColorizer()
             instance.ResetFont()
+            instance.ResetKeybindings()
         
     def Cancel(self):
         self.destroy()