mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	- Use a flag (self.quitting) as preferred method of exiting mainloop
- Added optional "nomenubar" argument to Application.__init__
This commit is contained in:
		
							parent
							
								
									29a3355ab9
								
							
						
					
					
						commit
						647535d390
					
				
					 1 changed files with 18 additions and 4 deletions
				
			
		|  | @ -93,8 +93,12 @@ class Application: | |||
| 	 | ||||
| 	"Application framework -- your application should be a derived class" | ||||
| 	 | ||||
| 	def __init__(self): | ||||
| 	def __init__(self, nomenubar=0): | ||||
| 		self.quitting = 0 | ||||
| 		self._windows = {} | ||||
| 		if nomenubar: | ||||
| 			self.menubar = None | ||||
| 		else: | ||||
| 			self.makemenubar() | ||||
| 	 | ||||
| 	def makemenubar(self): | ||||
|  | @ -107,7 +111,7 @@ def makeusermenus(self): | |||
| 		self._quititem = MenuItem(m, "Quit", "Q", self._quit) | ||||
| 	 | ||||
| 	def _quit(self, *args): | ||||
| 		raise self | ||||
| 		self.quitting = 1 | ||||
| 		 | ||||
| 	def appendwindow(self, wid, window): | ||||
| 		self._windows[wid] = window | ||||
|  | @ -131,12 +135,16 @@ def do_about(self, id, item, window, event): | |||
| 	# way to define the mask and wait time passed to WaitNextEvent.) | ||||
| 	 | ||||
| 	def mainloop(self, mask = everyEvent, wait = 0): | ||||
| 		self.quitting = 0 | ||||
| 		saveyield = MacOS.EnableAppswitch(self.yield) | ||||
| 		try: | ||||
| 			while 1: | ||||
| 			while not self.quitting: | ||||
| 				try: | ||||
| 					self.do1event(mask, wait) | ||||
| 				except (Application, SystemExit): | ||||
| 					# Note: the raising of "self" is old-fashioned idiom to | ||||
| 					# exit the mainloop. Calling _quit() is better for new | ||||
| 					# applications. | ||||
| 					break | ||||
| 		finally: | ||||
| 			MacOS.EnableAppswitch(saveyield) | ||||
|  | @ -222,6 +230,9 @@ def do_inDesk(self, partcode, window, event): | |||
| 		MacOS.HandleEvent(event) | ||||
| 	 | ||||
| 	def do_inMenuBar(self, partcode, window, event): | ||||
| 		if not self.menubar: | ||||
| 			MacOS.HandleEvent(event) | ||||
| 			return | ||||
| 		(what, message, when, where, modifiers) = event | ||||
| 		result = MenuSelect(where) | ||||
| 		id = (result>>16) & 0xffff	# Hi word | ||||
|  | @ -263,6 +274,9 @@ def do_key(self, event): | |||
| 			if c == '.': | ||||
| 				raise self | ||||
| 			else: | ||||
| 				if not self.menubar: | ||||
| 					MacOS.HandleEvent(event) | ||||
| 					return | ||||
| 				result = MenuKey(ord(c)) | ||||
| 				id = (result>>16) & 0xffff	# Hi word | ||||
| 				item = result & 0xffff		# Lo word | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jack Jansen
						Jack Jansen