From 5c6e0a1a0cac0b918e2a6ed7573db49cf6d0f6a5 Mon Sep 17 00:00:00 2001 From: "Kurt B. Kaiser" Date: Tue, 22 Nov 2005 21:09:37 +0000 Subject: 1. Made advanced keybinding dialog functional. 2. Allow binding of movement keys --- Lib/idlelib/NEWS.txt | 9 ++++++++- Lib/idlelib/keybindingDialog.py | 31 +++++++++++++++++++------------ 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt index 7450e2b..bbe9878 100644 --- a/Lib/idlelib/NEWS.txt +++ b/Lib/idlelib/NEWS.txt @@ -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 diff --git a/Lib/idlelib/keybindingDialog.py b/Lib/idlelib/keybindingDialog.py index 200936a..ea57958 100644 --- a/Lib/idlelib/keybindingDialog.py +++ b/Lib/idlelib/keybindingDialog.py @@ -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 -- cgit v0.12