mirror of
				https://github.com/python/cpython.git
				synced 2025-10-23 01:43:53 +00:00 
			
		
		
		
	 89a78697b8
			
		
	
	
		89a78697b8
		
	
	
	
	
		
			
			* Many modules: fixes for new, stricter, argument passing rules (most changes were automatic ones -- not all of this is tested!). * gwin.py: now uses mainloop.py for its main loop and window admin. * mainloop.py: always call dispatch() with event as a tuple! * Fix bug in pdb's 'clear' command -- don't set the bpt but clear it!
		
			
				
	
	
		
			58 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # A FormSplit lets you place its children exactly where you want them
 | |
| # (including silly places!).
 | |
| # It does no explicit geometry management except moving its children
 | |
| # when it is moved.
 | |
| # The interface to place children is as follows.
 | |
| # Before you add a child, you may specify its (left, top) position
 | |
| # relative to the FormSplit.  If you don't specify a position for
 | |
| # a child, it goes right below the previous child; the first child
 | |
| # goes to (0, 0) by default.
 | |
| # NB: This places data attributes named form_* on its children.
 | |
| # XXX Yes, I know, there should be options to do all sorts of relative
 | |
| # placement, but for now this will do.
 | |
| 
 | |
| from Split import Split
 | |
| 
 | |
| class FormSplit(Split):
 | |
| 	#
 | |
| 	def create(self, parent):
 | |
| 		self.next_left = self.next_top = 0
 | |
| 		self.last_child = None
 | |
| 		return Split.create(self, parent)
 | |
| 	#
 | |
| 	def getminsize(self, m, sugg_size):
 | |
| 		max_width, max_height = 0, 0
 | |
| 		for c in self.children:
 | |
| 			c.form_width, c.form_height = c.getminsize(m, (0, 0))
 | |
| 			max_width = max(max_width, c.form_width + c.form_left)
 | |
| 			max_height = max(max_height, \
 | |
| 					 c.form_height + c.form_top)
 | |
| 		return max_width, max_height
 | |
| 	#
 | |
| 	def getbounds(self):
 | |
| 		return self.bounds
 | |
| 	#
 | |
| 	def setbounds(self, bounds):
 | |
| 		self.bounds = bounds
 | |
| 		fleft, ftop = bounds[0]
 | |
| 		for c in self.children:
 | |
| 			left, top = c.form_left + fleft, c.form_top + ftop
 | |
| 			right, bottom = left + c.form_width, top + c.form_height
 | |
| 			c.setbounds(((left, top), (right, bottom)))
 | |
| 	#
 | |
| 	def placenext(self, left, top):
 | |
| 		self.next_left = left
 | |
| 		self.next_top = top
 | |
| 		self.last_child = None
 | |
| 	#
 | |
| 	def addchild(self, child):
 | |
| 		if self.last_child:
 | |
| 			width, height = \
 | |
| 			    self.last_child.getminsize(self.beginmeasuring(), \
 | |
| 			    			       (0, 0))
 | |
| 			self.next_top = self.next_top + height
 | |
| 		child.form_left = self.next_left
 | |
| 		child.form_top = self.next_top
 | |
| 		Split.addchild(self, child)
 | |
| 		self.last_child = child
 | |
| 	#
 |