]> granicus.if.org Git - python/commitdiff
1. Made advanced keybinding dialog functional.
authorKurt B. Kaiser <kbk@shore.net>
Tue, 22 Nov 2005 21:09:37 +0000 (21:09 +0000)
committerKurt B. Kaiser <kbk@shore.net>
Tue, 22 Nov 2005 21:09:37 +0000 (21:09 +0000)
2. Allow binding of movement keys

Lib/idlelib/NEWS.txt
Lib/idlelib/keybindingDialog.py

index 7450e2baaa06f082fee921003912aa4426b4ef6c..bbe98786585c6eec210d69390c1677085e365ea2 100644 (file)
@@ -1,7 +1,14 @@
 What's New in IDLE 1.2a0?
 =======================
 
-*Release date: XX-XXX-2005*
+*Release date: XX-XXX-2006*
+
+- Options / Keys / Advanced dialog made functional.  Also, allow binding
+  of 'movement' keys.
+
+- 'syntax' patch adds improved calltips and a new class attribute listbox.
+  MultiCall module allows binding multiple actions to an event.
+  Patch 906702 Noam Raphael
 
 - Better indentation after first line of string continuation.
   IDLEfork Patch 681992, Noam Raphael
index 200936ac1cc1d1a99cb3329ad4f757f46b173184..ea5795832ebf0d0d545f474ceb6e4268f074a0d8 100644 (file)
@@ -26,12 +26,13 @@ class GetKeysDialog(Toplevel):
         self.result=''
         self.keyString=StringVar(self)
         self.keyString.set('')
-        self.SetModifiersForPlatform()
+        self.SetModifiersForPlatform() # set self.modifiers, self.modifier_label
         self.modifier_vars = []
         for modifier in self.modifiers:
             variable = StringVar(self)
             variable.set('')
             self.modifier_vars.append(variable)
+        self.advanced = False
         self.CreateWidgets()
         self.LoadFinalKeyList()
         self.withdraw() #hide while setting geometry
@@ -136,7 +137,7 @@ class GetKeysDialog(Toplevel):
             self.modifiers = ['Shift', 'Control', 'Option', 'Command']
         else:
             self.modifiers = ['Control', 'Alt', 'Shift']
-        self.modifier_label = {'Control': 'Ctrl'}
+        self.modifier_label = {'Control': 'Ctrl'} # short name
 
     def ToggleLevel(self):
         if  self.buttonLevel.cget('text')[:8]=='Advanced':
@@ -145,11 +146,13 @@ class GetKeysDialog(Toplevel):
             self.frameKeySeqAdvanced.lift()
             self.frameHelpAdvanced.lift()
             self.entryKeysAdvanced.focus_set()
+            self.advanced = True
         else:
             self.ClearKeySeq()
             self.buttonLevel.config(text='Advanced Key Binding Entry >>')
             self.frameKeySeqBasic.lift()
             self.frameControlsBasic.lift()
+            self.advanced = False
 
     def FinalKeySelected(self,event):
         self.BuildKeyString()
@@ -208,7 +211,7 @@ class GetKeysDialog(Toplevel):
         return key
 
     def OK(self, event=None):
-        if self.KeysOK():
+        if self.advanced or self.KeysOK():  # doesn't check advanced string yet
             self.result=self.keyString.get()
             self.destroy()
 
@@ -217,7 +220,12 @@ class GetKeysDialog(Toplevel):
         self.destroy()
 
     def KeysOK(self):
-        "Validity check on user's keybinding selection"
+        '''Validity check on user's 'basic' keybinding selection.
+
+        Doesn't check the string produced by the advanced dialog because
+        'modifiers' isn't set.
+
+        '''
         keys = self.keyString.get()
         keys.strip()
         finalKey = self.listKeysFinal.get(ANCHOR)
@@ -232,20 +240,19 @@ class GetKeysDialog(Toplevel):
         elif not keys.endswith('>'):
             tkMessageBox.showerror(title=title, parent=self,
                                    message='Missing the final Key')
-        elif not modifiers and finalKey not in self.functionKeys:
+        elif (not modifiers
+              and finalKey not in self.functionKeys + self.moveKeys):
             tkMessageBox.showerror(title=title, parent=self,
                                    message='No modifier key(s) specified.')
         elif (modifiers == ['Shift']) \
                  and (finalKey not in
-                      self.functionKeys + ('Tab', 'Space')):
-            msg = 'The shift modifier by itself may not be used with' \
-                  ' this key symbol; only with F1-F12, Tab, or Space'
-            tkMessageBox.showerror(title=title, parent=self,
-                                   message=msg)
+                      self.functionKeys + self.moveKeys + ('Tab', 'Space')):
+            msg = 'The shift modifier by itself may not be used with'\
+                  ' this key symbol.'
+            tkMessageBox.showerror(title=title, parent=self, message=msg)
         elif keySequence in self.currentKeySequences:
             msg = 'This key combination is already in use.'
-            tkMessageBox.showerror(title=title, parent=self,
-                                   message=msg)
+            tkMessageBox.showerror(title=title, parent=self, message=msg)
         else:
             keysOK = True
         return keysOK