| # Test FrameWork scrollbars | 
 | # Draw a window in which the user can type. | 
 | # | 
 | # This test expects Win, Evt and FrameWork (and anything used by those) | 
 | # to work. | 
 | # | 
 | # Actually, it is more a test of FrameWork by now.... | 
 |  | 
 | from FrameWork import * | 
 | import Win | 
 | import Qd | 
 | import TE | 
 | import os | 
 |  | 
 | class MyWindow(ScrolledWindow): | 
 | 	def open(self, name): | 
 | 		r = (40, 40, 400, 300) | 
 | 		w = Win.NewWindow(r, name, 1, 0, -1, 1, 0x55555555) | 
 | 		self.ourrect = 0, 0, 360-SCROLLBARWIDTH-1, 260-SCROLLBARWIDTH-1 | 
 | 		Qd.SetPort(w) | 
 | 		w.DrawGrowIcon() | 
 | 		self.wid = w | 
 | 		self.do_postopen() | 
 | 		self.vx = self.vy = 0 | 
 | 		self.scrollbars() | 
 | 		 | 
 | 	def getscrollbarvalues(self): | 
 | 		return self.vx, self.vy | 
 | 		 | 
 | 	def scrollbar_callback(self, which, what, value): | 
 | 		if what == '-': | 
 | 			delta = -1 | 
 | 		elif what == '--': | 
 | 			delta = -100 | 
 | 		elif what == '+': | 
 | 			delta = 1 | 
 | 		elif what == '++': | 
 | 			delta = 100 | 
 | 			 | 
 | 		if which == 'x': | 
 | 			if value: | 
 | 				self.vx = value | 
 | 			else: | 
 | 				self.vx = self.vx + delta | 
 | 		else: | 
 | 			if value: | 
 | 				self.vy = value | 
 | 			else: | 
 | 				self.vy = self.vy + delta | 
 | 		Win.InvalRect(self.ourrect) | 
 |  | 
 | 	def do_update(self, wid, event): | 
 | 		Qd.EraseRect(self.ourrect) | 
 | 		Qd.MoveTo(40, 40) | 
 | 		Qd.DrawString("x=%d, y=%d"%(self.vx, self.vy)) | 
 |  | 
 | class TestSW(Application): | 
 | 	def __init__(self): | 
 | 		Application.__init__(self) | 
 | 		self.num = 0 | 
 | 		self.listoflists = [] | 
 | 		 | 
 | 	def makeusermenus(self): | 
 | 		self.filemenu = m = Menu(self.menubar, "File") | 
 | 		self.newitem = MenuItem(m, "New window...", "O", self.open) | 
 | 		self.quititem = MenuItem(m, "Quit", "Q", self.quit) | 
 | 	 | 
 | 	def open(self, *args): | 
 | 		w = MyWindow(self) | 
 | 		w.open('Window %d'%self.num) | 
 | 		self.num = self.num + 1 | 
 | 		self.listoflists.append(w) | 
 | 		 | 
 | 	def quit(self, *args): | 
 | 		raise self | 
 |  | 
 | 	def do_about(self, id, item, window, event): | 
 | 		EasyDialogs.Message("""Test scrolling FrameWork windows""") | 
 |  | 
 | def main(): | 
 | 	App = TestSW() | 
 | 	App.mainloop() | 
 | 	 | 
 | if __name__ == '__main__': | 
 | 	main() | 
 | 	 |