diff options
Diffstat (limited to 'Lib/idlelib/keybindingDialog.py')
-rw-r--r-- | Lib/idlelib/keybindingDialog.py | 31 |
1 files changed, 19 insertions, 12 deletions
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 |