mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	
		
			
	
	
		
			61 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			61 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								# Define menu operations for GL stdwin
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import gl
							 | 
						||
| 
								 | 
							
								from glstdwin import key2code
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class MenuObject:
							 | 
						||
| 
								 | 
							
									#
							 | 
						||
| 
								 | 
							
									def _init(self, (win, title)):
							 | 
						||
| 
								 | 
							
										self._win = win
							 | 
						||
| 
								 | 
							
										self._title = title
							 | 
						||
| 
								 | 
							
										self._items = []
							 | 
						||
| 
								 | 
							
										return self
							 | 
						||
| 
								 | 
							
									#
							 | 
						||
| 
								 | 
							
									def close(self):
							 | 
						||
| 
								 | 
							
										self._win.remove(self)
							 | 
						||
| 
								 | 
							
										del self._win
							 | 
						||
| 
								 | 
							
									#
							 | 
						||
| 
								 | 
							
									def additem(self, arg):
							 | 
						||
| 
								 | 
							
										if type(arg) == type(()):
							 | 
						||
| 
								 | 
							
											text, shortcut = arg
							 | 
						||
| 
								 | 
							
										else:
							 | 
						||
| 
								 | 
							
											text, shortcut = arg, None
							 | 
						||
| 
								 | 
							
										self._items.append([text, shortcut, 1, 0])
							 | 
						||
| 
								 | 
							
									#
							 | 
						||
| 
								 | 
							
									def setitem(self, (i, text)):
							 | 
						||
| 
								 | 
							
										self._items[i][0] = text
							 | 
						||
| 
								 | 
							
									#
							 | 
						||
| 
								 | 
							
									def enable(self, (i, flag)):
							 | 
						||
| 
								 | 
							
										self._items[i][2] = flag
							 | 
						||
| 
								 | 
							
									#
							 | 
						||
| 
								 | 
							
									def check(self, (i, flag)):
							 | 
						||
| 
								 | 
							
										self._items[i][3] = flag
							 | 
						||
| 
								 | 
							
									#
							 | 
						||
| 
								 | 
							
									def _makepup(self, firstitem):
							 | 
						||
| 
								 | 
							
										pup = gl.newpup()
							 | 
						||
| 
								 | 
							
										if self._title:
							 | 
						||
| 
								 | 
							
											gl.addtopup(pup, self._title + '%t', 0)
							 | 
						||
| 
								 | 
							
										for item in self._items:
							 | 
						||
| 
								 | 
							
											text = item[0]
							 | 
						||
| 
								 | 
							
											if not item[2]: # Disabled
							 | 
						||
| 
								 | 
							
												text = ' ( ' + text + ' )%x-1'
							 | 
						||
| 
								 | 
							
											else:
							 | 
						||
| 
								 | 
							
												if item[3]: # Check mark
							 | 
						||
| 
								 | 
							
													text = '-> ' + text
							 | 
						||
| 
								 | 
							
												else:
							 | 
						||
| 
								 | 
							
													text = '    ' + text
							 | 
						||
| 
								 | 
							
												if key2code.has_key(item[1]):
							 | 
						||
| 
								 | 
							
													text = text + '  [Alt-' + item[1] + ']'
							 | 
						||
| 
								 | 
							
												text = text + '%x' + `firstitem`
							 | 
						||
| 
								 | 
							
											gl.addtopup(pup, text, 0)
							 | 
						||
| 
								 | 
							
											firstitem = firstitem + 1
							 | 
						||
| 
								 | 
							
										return pup
							 | 
						||
| 
								 | 
							
									#
							 | 
						||
| 
								 | 
							
									def _checkshortcut(self, char):
							 | 
						||
| 
								 | 
							
										for i in range(len(self._items)):
							 | 
						||
| 
								 | 
							
											item = self._items[i]
							 | 
						||
| 
								 | 
							
											if item[2] and item[1] == char:
							 | 
						||
| 
								 | 
							
												return i
							 | 
						||
| 
								 | 
							
										return -1
							 | 
						||
| 
								 | 
							
									#
							 |