Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/cca/diff/eec51a7eb05c/Interface.py
Дата изменения: Unknown
Дата индексирования: Fri Feb 28 18:25:00 2014
Кодировка:
cca: Interface.py diff

cca

diff Interface.py @ 85:eec51a7eb05c

correct mistake in mouse draw fix #20
author is_rusinov
date Mon, 13 Dec 2010 01:28:02 +0300
parents cb24034a5494
children 8840a997ff75
line diff
     1.1 --- a/Interface.py	Mon Dec 13 01:01:55 2010 +0300
     1.2 +++ b/Interface.py	Mon Dec 13 01:28:02 2010 +0300
     1.3 @@ -12,15 +12,13 @@
     1.4  
     1.5  class Handlers(object):
     1.6  	
     1.7 -	def __init__(self, cell_size=8, line_width=1 ,delay=10, offset_x=0, offset_y=0):# cell_size is size of cell, including line width, if there is it
     1.8 +	def __init__(self, cell_size=8, line_width=1 ,delay=10, dx=0, dy=0):# cell_size is size of cell, including line width, if there is it
     1.9  		self.cell_size = cell_size
    1.10  		self.line_width = line_width
    1.11  		self.delay = delay
    1.12 -		self.offset_x = offset_x
    1.13 -		self.offset_y = offset_y
    1.14 +		self.dx = dx
    1.15 +		self.dy = dy
    1.16  		self.after_id = 0
    1.17 -		self.mouse_offset_x = 0
    1.18 -		self.mouse_offset_y = 0
    1.19  		self.mouse_zoom = 0
    1.20  		self.zoom_divisor = 1
    1.21  		self.selected_state = None
    1.22 @@ -143,8 +141,8 @@
    1.23  		canvas.delete("all")
    1.24  		self.cells = []
    1.25  		shift = self.cell_size + self.line_width
    1.26 -		left = -self.offset_x + self.line_width
    1.27 -		top = -self.offset_y + self.line_width
    1.28 +		left = self.line_width
    1.29 +		top = self.line_width
    1.30  		for row in range(automata.height):
    1.31  			self.cells.append([])
    1.32  			for col in range(automata.width):
    1.33 @@ -196,14 +194,17 @@
    1.34  		self.draw_cell(changed_cells)
    1.35  	
    1.36  	def press1(self, event):# drawer
    1.37 -		self.col1 = event.x / (self.cell_size + self.line_width) - self.offset_x
    1.38 -		self.row1 = event.y / (self.cell_size + self.line_width) - self.offset_y
    1.39 +		scr_reg = canvas.cget("scrollregion").split()
    1.40 +		self.dx = int(scroll_x.get()[0] * int(scr_reg[2]))
    1.41 +		self.dy = int(scroll_y.get()[0] * int(scr_reg[3]))
    1.42 +		self.col1 = (event.x + self.dx) / (self.cell_size + self.line_width)
    1.43 +		self.row1 = (event.y + self.dy) / (self.cell_size + self.line_width)
    1.44  		if self.col1 >= 0 and self.row1 >= 0:
    1.45  			self.new_state([(self.row1, self.col1)])
    1.46  	
    1.47  	def motion1(self, event):# drawer
    1.48 -		col = (event.x - self.offset_x * (self.cell_size + self.line_width)) / (self.cell_size + self.line_width)
    1.49 -		row = (event.y - self.offset_y * (self.cell_size + self.line_width)) / (self.cell_size + self.line_width)
    1.50 +		col = (event.x + self.dx) / (self.cell_size + self.line_width)
    1.51 +		row = (event.y + self.dy) / (self.cell_size + self.line_width)
    1.52  		if not (self.col1 == col and self.row1 == row):
    1.53  			if abs(self.col1 - col) <= 1 and abs(self.row1 - row) <= 1:
    1.54  				self.new_state([(row, col)])
    1.55 @@ -213,14 +214,17 @@
    1.56  			self.row1 = row
    1.57  	
    1.58  	def press3(self, event):# drawer
    1.59 -		self.col3 = event.x / (self.cell_size + self.line_width) - self.offset_x
    1.60 -		self.row3 = event.y / (self.cell_size + self.line_width) - self.offset_y
    1.61 +		scr_reg = canvas.cget("scrollregion").split()
    1.62 +		self.dx = int(scroll_x.get()[0] * int(scr_reg[2]))
    1.63 +		self.dy = int(scroll_y.get()[0] * int(scr_reg[3]))
    1.64 +		self.col3 = (event.x + self.dx) / (self.cell_size + self.line_width)
    1.65 +		self.row3 = (event.y + self.dy) / (self.cell_size + self.line_width)
    1.66  		if self.col1 >= 0 and self.row1 >= 0:
    1.67  			self.new_state([(self.row3, self.col3)], -1)
    1.68  	
    1.69  	def motion3(self, event):# drawer
    1.70 -		col = (event.x - self.offset_x * (self.cell_size + self.line_width)) / (self.cell_size + self.line_width)
    1.71 -		row = (event.y - self.offset_y * (self.cell_size + self.line_width)) / (self.cell_size + self.line_width)
    1.72 +		col = (event.x + self.dx) / (self.cell_size + self.line_width)
    1.73 +		row = (event.y + self.dy) / (self.cell_size + self.line_width)
    1.74  		if not (self.col3 == col and self.row3 == row):
    1.75  			if abs(self.col3 - col) <= 1 and abs(self.row3 - row) <= 1:
    1.76  				self.new_state([(row, col)], -1)
    1.77 @@ -235,32 +239,6 @@
    1.78  	def release_key(self, event):# drawer
    1.79  		self.char = None
    1.80  	
    1.81 -	def press1_ctrl(self, event):# change_offset (B1+ctrl)
    1.82 -		canvas.focus_set()
    1.83 -		self.mouse_offset_x = event.x
    1.84 -		self.mouse_offset_y = event.y
    1.85 -	
    1.86 -	def motion1_ctrl(self, event):# change_offset (B1+ctrl)
    1.87 -		self.offset_x = (event.x - self.mouse_offset_x) / (self.cell_size + self.line_width)
    1.88 -		self.offset_y = (event.y - self.mouse_offset_y) / (self.cell_size + self.line_width)
    1.89 -		self.mouse_offset_x = event.x
    1.90 -		self.mouse_offset_y = event.y
    1.91 -		self.draw()
    1.92 -	
    1.93 -	def press13(self, event):# zoom
    1.94 -		canvas.focus_set()
    1.95 -		self.mouse_zoom = event.y
    1.96 -	
    1.97 -	def motion13(self, event):# zoom
    1.98 -		delta = (event.y - self.mouse_zoom) / self.zoom_divisor
    1.99 -		self.cell_size = self.cell_size + delta
   1.100 -		if self.cell_size > 50:
   1.101 -			self.cell_size = 50
   1.102 -		if self.cell_size < 1:
   1.103 -			self.cell_size = 1
   1.104 -		self.mouse_zoom = event.y
   1.105 -		self.draw()
   1.106 -	
   1.107  	def to_top(self):# replace choosen state to top
   1.108  		selected = self.selected_state
   1.109  		if selected != None:
   1.110 @@ -518,10 +496,6 @@
   1.111  canvas.tag_bind("cell", "<B3-Motion>", handlers.motion3)
   1.112  canvas.bind_all("<KeyPress>", handlers.press_key)
   1.113  canvas.bind_all("<KeyRelease>", handlers.release_key)
   1.114 -#canvas.bind("<Control-ButtonPress-1>", handlers.press1_ctrl)
   1.115 -#canvas.bind("<Control-B1-Motion>", handlers.motion1_ctrl)
   1.116 -#canvas.bind("<Shift-ButtonPress-1>", handlers.press13)
   1.117 -#canvas.bind("<Shift-ButtonPress-1>", handlers.motion13)
   1.118  
   1.119  scroll_x=Scrollbar(root, orient="horizontal")
   1.120  scroll_y=Scrollbar(root, orient="vertical")