summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorKurt B. Kaiser <kbk@shore.net>2005-11-22 21:09:37 (GMT)
committerKurt B. Kaiser <kbk@shore.net>2005-11-22 21:09:37 (GMT)
commit5c6e0a1a0cac0b918e2a6ed7573db49cf6d0f6a5 (patch)
tree6ed66decbd02aebf74ed805651e18aa0b0357e0e /Lib
parente3faaeb1d68af9794f740ee0e491da2624390492 (diff)
downloadcpython-5c6e0a1a0cac0b918e2a6ed7573db49cf6d0f6a5.zip
cpython-5c6e0a1a0cac0b918e2a6ed7573db49cf6d0f6a5.tar.gz
cpython-5c6e0a1a0cac0b918e2a6ed7573db49cf6d0f6a5.tar.bz2
1. Made advanced keybinding dialog functional.
2. Allow binding of movement keys
Diffstat (limited to 'Lib')
-rw-r--r--Lib/idlelib/NEWS.txt9
-rw-r--r--Lib/idlelib/keybindingDialog.py31
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