mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	Mac users now see correct modifiers in the Key Binding Entry window.
This commit is contained in:
		
							parent
							
								
									6565b261b6
								
							
						
					
					
						commit
						af7a302c78
					
				
					 1 changed files with 35 additions and 29 deletions
				
			
		|  | @ -26,12 +26,12 @@ def __init__(self,parent,title,action,currentKeySequences): | ||||||
|         self.result='' |         self.result='' | ||||||
|         self.keyString=StringVar(self) |         self.keyString=StringVar(self) | ||||||
|         self.keyString.set('') |         self.keyString.set('') | ||||||
|         self.keyCtrl=StringVar(self) |         self.SetModifiersForPlatform() | ||||||
|         self.keyCtrl.set('') |         self.modifier_vars = [] | ||||||
|         self.keyAlt=StringVar(self) |         for modifier in self.modifiers: | ||||||
|         self.keyAlt.set('') |             variable = StringVar(self) | ||||||
|         self.keyShift=StringVar(self) |             variable.set('') | ||||||
|         self.keyShift.set('') |             self.modifier_vars.append(variable) | ||||||
|         self.CreateWidgets() |         self.CreateWidgets() | ||||||
|         self.LoadFinalKeyList() |         self.LoadFinalKeyList() | ||||||
|         self.withdraw() #hide while setting geometry |         self.withdraw() #hide while setting geometry | ||||||
|  | @ -74,18 +74,16 @@ def CreateWidgets(self): | ||||||
|         labelKeysBasic = Label(self.frameKeySeqBasic,justify=LEFT, |         labelKeysBasic = Label(self.frameKeySeqBasic,justify=LEFT, | ||||||
|                 textvariable=self.keyString,relief=GROOVE,borderwidth=2) |                 textvariable=self.keyString,relief=GROOVE,borderwidth=2) | ||||||
|         labelKeysBasic.pack(ipadx=5,ipady=5,fill=X) |         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, |                 command=self.BuildKeyString, | ||||||
|                 text='Ctrl',variable=self.keyCtrl,onvalue='Control',offvalue='') |                 text=label,variable=variable,onvalue=modifier,offvalue='') | ||||||
|         checkCtrl.grid(row=0,column=0,padx=2,sticky=W) |             check.grid(row=0,column=column,padx=2,sticky=W) | ||||||
|         checkAlt=Checkbutton(self.frameControlsBasic, |             self.modifier_checkbuttons[modifier] = check | ||||||
|                 command=self.BuildKeyString, |             column += 1 | ||||||
|                 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) |  | ||||||
|         labelFnAdvice=Label(self.frameControlsBasic,justify=LEFT, |         labelFnAdvice=Label(self.frameControlsBasic,justify=LEFT, | ||||||
|                 text="Select the desired modifier\n"+ |                 text="Select the desired modifier\n"+ | ||||||
|                      "keys above, and final key\n"+ |                      "keys above, and final key\n"+ | ||||||
|  | @ -119,6 +117,21 @@ def CreateWidgets(self): | ||||||
|                  "separated by a space, eg., <Alt-v> <Meta-v>." ) |                  "separated by a space, eg., <Alt-v> <Meta-v>." ) | ||||||
|         labelHelpAdvanced.grid(row=0,column=0,sticky=NSEW) |         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): |     def ToggleLevel(self): | ||||||
|         if  self.buttonLevel.cget('text')[:8]=='Advanced': |         if  self.buttonLevel.cget('text')[:8]=='Advanced': | ||||||
|             self.ClearKeySeq() |             self.ClearKeySeq() | ||||||
|  | @ -152,22 +165,15 @@ def BuildKeyString(self): | ||||||
|         self.keyString.set(keyStr) |         self.keyString.set(keyStr) | ||||||
|          |          | ||||||
|     def GetModifiers(self): |     def GetModifiers(self): | ||||||
|         modList=[] |         modList = [variable.get() for variable in self.modifier_vars] | ||||||
|         ctrl=self.keyCtrl.get() |         return filter(None, modList) | ||||||
|         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 |  | ||||||
| 
 | 
 | ||||||
|     def ClearKeySeq(self): |     def ClearKeySeq(self): | ||||||
|         self.listKeysFinal.select_clear(0,END) |         self.listKeysFinal.select_clear(0,END) | ||||||
|         self.listKeysFinal.yview(MOVETO, '0.0') |         self.listKeysFinal.yview(MOVETO, '0.0') | ||||||
|         self.keyCtrl.set('') |         for variable in self.modifier_vars: | ||||||
|         self.keyAlt.set(''), |             variable.set('') | ||||||
|         self.keyShift.set('') |         self.keyString.set('') | ||||||
|         self.keyString.set('')     |  | ||||||
|      |      | ||||||
|     def LoadFinalKeyList(self): |     def LoadFinalKeyList(self): | ||||||
|         #these tuples are also available for use in validity checks |         #these tuples are also available for use in validity checks | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Tony Lownds
						Tony Lownds