mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +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 | ||
|  | 	# |