Mac users now see correct modifiers in the Key Binding Entry window.

This commit is contained in:
Tony Lownds 2002-09-29 00:23:08 +00:00
parent 6565b261b6
commit af7a302c78
1 changed files with 35 additions and 29 deletions

View File

@ -26,12 +26,12 @@ class GetKeysDialog(Toplevel):
self.result=''
self.keyString=StringVar(self)
self.keyString.set('')
self.keyCtrl=StringVar(self)
self.keyCtrl.set('')
self.keyAlt=StringVar(self)
self.keyAlt.set('')
self.keyShift=StringVar(self)
self.keyShift.set('')
self.SetModifiersForPlatform()
self.modifier_vars = []
for modifier in self.modifiers:
variable = StringVar(self)
variable.set('')
self.modifier_vars.append(variable)
self.CreateWidgets()
self.LoadFinalKeyList()
self.withdraw() #hide while setting geometry
@ -74,18 +74,16 @@ class GetKeysDialog(Toplevel):
labelKeysBasic = Label(self.frameKeySeqBasic,justify=LEFT,
textvariable=self.keyString,relief=GROOVE,borderwidth=2)
labelKeysBasic.pack(ipadx=5,ipady=5,fill=X)
checkCtrl=Checkbutton(self.frameControlsBasic,
self.modifier_checkbuttons = {}
column = 0
for modifier, variable in zip(self.modifiers, self.modifier_vars):
label = self.modifier_label.get(modifier, modifier)
check=Checkbutton(self.frameControlsBasic,
command=self.BuildKeyString,
text='Ctrl',variable=self.keyCtrl,onvalue='Control',offvalue='')
checkCtrl.grid(row=0,column=0,padx=2,sticky=W)
checkAlt=Checkbutton(self.frameControlsBasic,
command=self.BuildKeyString,
text='Alt',variable=self.keyAlt,onvalue='Alt',offvalue='')
checkAlt.grid(row=0,column=1,padx=2,sticky=W)
checkShift=Checkbutton(self.frameControlsBasic,
command=self.BuildKeyString,
text='Shift',variable=self.keyShift,onvalue='Shift',offvalue='')
checkShift.grid(row=0,column=3,padx=2,sticky=W)
text=label,variable=variable,onvalue=modifier,offvalue='')
check.grid(row=0,column=column,padx=2,sticky=W)
self.modifier_checkbuttons[modifier] = check
column += 1
labelFnAdvice=Label(self.frameControlsBasic,justify=LEFT,
text="Select the desired modifier\n"+
"keys above, and final key\n"+
@ -119,6 +117,21 @@ class GetKeysDialog(Toplevel):
"separated by a space, eg., <Alt-v> <Meta-v>." )
labelHelpAdvanced.grid(row=0,column=0,sticky=NSEW)
def SetModifiersForPlatform(self):
"""Determine list of names of key modifiers for this platform.
The names are used to build Tk bindings -- it doesn't matter if the
keyboard has these keys, it matters if Tk understands them. The
order is also important: key binding equality depends on it, so
config-keys.def must use the same ordering.
"""
import sys
if sys.platform == 'darwin' and sys.executable.count('.app'):
self.modifiers = ['Shift', 'Control', 'Option', 'Command']
else:
self.modifiers = ['Control', 'Alt', 'Shift']
self.modifier_label = {'Control': 'Ctrl'}
def ToggleLevel(self):
if self.buttonLevel.cget('text')[:8]=='Advanced':
self.ClearKeySeq()
@ -152,22 +165,15 @@ class GetKeysDialog(Toplevel):
self.keyString.set(keyStr)
def GetModifiers(self):
modList=[]
ctrl=self.keyCtrl.get()
alt=self.keyAlt.get()
shift=self.keyShift.get()
if ctrl: modList.append(ctrl)
if alt: modList.append(alt)
if shift: modList.append(shift)
return modList
modList = [variable.get() for variable in self.modifier_vars]
return filter(None, modList)
def ClearKeySeq(self):
self.listKeysFinal.select_clear(0,END)
self.listKeysFinal.yview(MOVETO, '0.0')
self.keyCtrl.set('')
self.keyAlt.set(''),
self.keyShift.set('')
self.keyString.set('')
for variable in self.modifier_vars:
variable.set('')
self.keyString.set('')
def LoadFinalKeyList(self):
#these tuples are also available for use in validity checks