| 
									
										
										
										
											1999-01-02 21:28:54 +00:00
										 |  |  | # Sample extension: zoom a window to maximum height | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import re | 
					
						
							| 
									
										
										
										
											1999-01-03 00:47:07 +00:00
										 |  |  | import sys | 
					
						
							| 
									
										
										
										
											1999-01-02 21:28:54 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class ZoomHeight: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     menudefs = [ | 
					
						
							|  |  |  |         ('windows', [ | 
					
						
							|  |  |  |             ('_Zoom Height', '<<zoom-height>>'), | 
					
						
							|  |  |  |          ]) | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     windows_keydefs = { | 
					
						
							|  |  |  |         '<<zoom-height>>': ['<Alt-F2>'], | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     unix_keydefs = { | 
					
						
							| 
									
										
										
										
											1999-01-03 00:47:07 +00:00
										 |  |  |         '<<zoom-height>>': ['<Control-x><Control-z>'], | 
					
						
							| 
									
										
										
										
											1999-01-02 21:28:54 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def __init__(self, editwin): | 
					
						
							|  |  |  |         self.editwin = editwin | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def zoom_height_event(self, event): | 
					
						
							|  |  |  |         top = self.editwin.top | 
					
						
							| 
									
										
										
										
											1999-06-01 18:17:02 +00:00
										 |  |  |         zoom_height(top) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def zoom_height(top): | 
					
						
							|  |  |  |     geom = top.wm_geometry() | 
					
						
							|  |  |  |     m = re.match(r"(\d+)x(\d+)\+(-?\d+)\+(-?\d+)", geom) | 
					
						
							|  |  |  |     if not m: | 
					
						
							|  |  |  |         top.bell() | 
					
						
							|  |  |  |         return | 
					
						
							|  |  |  |     width, height, x, y = map(int, m.groups()) | 
					
						
							|  |  |  |     newheight = top.winfo_screenheight() | 
					
						
							|  |  |  |     if sys.platform == 'win32': | 
					
						
							|  |  |  |         newy = 0 | 
					
						
							|  |  |  |         newheight = newheight - 72 | 
					
						
							|  |  |  |     else: | 
					
						
							|  |  |  |         newy = 24 | 
					
						
							|  |  |  |         newheight = newheight - 96 | 
					
						
							|  |  |  |     if height >= newheight: | 
					
						
							|  |  |  |         newgeom = "" | 
					
						
							|  |  |  |     else: | 
					
						
							|  |  |  |         newgeom = "%dx%d+%d+%d" % (width, newheight, x, newy) | 
					
						
							|  |  |  |     top.wm_geometry(newgeom) |