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")