Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/cca/raw-rev/eec51a7eb05c
Дата изменения: Unknown
Дата индексирования: Tue Oct 2 04:18:54 2012
Кодировка:

# HG changeset patch
# User is_rusinov
# Date 1292192882 -10800
# Node ID eec51a7eb05c96ca83672f68e5c9ac599f14ae85
# Parent 06eceec874e426fd2f677bcafdd1daa108a72a2b
correct mistake in mouse draw fix #20

diff -r 06eceec874e4 -r eec51a7eb05c Interface.py
--- a/Interface.py Mon Dec 13 01:01:55 2010 +0300
+++ b/Interface.py Mon Dec 13 01:28:02 2010 +0300
@@ -12,15 +12,13 @@

class Handlers(object):

- 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
+ 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
self.cell_size = cell_size
self.line_width = line_width
self.delay = delay
- self.offset_x = offset_x
- self.offset_y = offset_y
+ self.dx = dx
+ self.dy = dy
self.after_id = 0
- self.mouse_offset_x = 0
- self.mouse_offset_y = 0
self.mouse_zoom = 0
self.zoom_divisor = 1
self.selected_state = None
@@ -143,8 +141,8 @@
canvas.delete("all")
self.cells = []
shift = self.cell_size + self.line_width
- left = -self.offset_x + self.line_width
- top = -self.offset_y + self.line_width
+ left = self.line_width
+ top = self.line_width
for row in range(automata.height):
self.cells.append([])
for col in range(automata.width):
@@ -196,14 +194,17 @@
self.draw_cell(changed_cells)

def press1(self, event):# drawer
- self.col1 = event.x / (self.cell_size + self.line_width) - self.offset_x
- self.row1 = event.y / (self.cell_size + self.line_width) - self.offset_y
+ scr_reg = canvas.cget("scrollregion").split()
+ self.dx = int(scroll_x.get()[0] * int(scr_reg[2]))
+ self.dy = int(scroll_y.get()[0] * int(scr_reg[3]))
+ self.col1 = (event.x + self.dx) / (self.cell_size + self.line_width)
+ self.row1 = (event.y + self.dy) / (self.cell_size + self.line_width)
if self.col1 >= 0 and self.row1 >= 0:
self.new_state([(self.row1, self.col1)])

def motion1(self, event):# drawer
- col = (event.x - self.offset_x * (self.cell_size + self.line_width)) / (self.cell_size + self.line_width)
- row = (event.y - self.offset_y * (self.cell_size + self.line_width)) / (self.cell_size + self.line_width)
+ col = (event.x + self.dx) / (self.cell_size + self.line_width)
+ row = (event.y + self.dy) / (self.cell_size + self.line_width)
if not (self.col1 == col and self.row1 == row):
if abs(self.col1 - col) <= 1 and abs(self.row1 - row) <= 1:
self.new_state([(row, col)])
@@ -213,14 +214,17 @@
self.row1 = row

def press3(self, event):# drawer
- self.col3 = event.x / (self.cell_size + self.line_width) - self.offset_x
- self.row3 = event.y / (self.cell_size + self.line_width) - self.offset_y
+ scr_reg = canvas.cget("scrollregion").split()
+ self.dx = int(scroll_x.get()[0] * int(scr_reg[2]))
+ self.dy = int(scroll_y.get()[0] * int(scr_reg[3]))
+ self.col3 = (event.x + self.dx) / (self.cell_size + self.line_width)
+ self.row3 = (event.y + self.dy) / (self.cell_size + self.line_width)
if self.col1 >= 0 and self.row1 >= 0:
self.new_state([(self.row3, self.col3)], -1)

def motion3(self, event):# drawer
- col = (event.x - self.offset_x * (self.cell_size + self.line_width)) / (self.cell_size + self.line_width)
- row = (event.y - self.offset_y * (self.cell_size + self.line_width)) / (self.cell_size + self.line_width)
+ col = (event.x + self.dx) / (self.cell_size + self.line_width)
+ row = (event.y + self.dy) / (self.cell_size + self.line_width)
if not (self.col3 == col and self.row3 == row):
if abs(self.col3 - col) <= 1 and abs(self.row3 - row) <= 1:
self.new_state([(row, col)], -1)
@@ -235,32 +239,6 @@
def release_key(self, event):# drawer
self.char = None

- def press1_ctrl(self, event):# change_offset (B1+ctrl)
- canvas.focus_set()
- self.mouse_offset_x = event.x
- self.mouse_offset_y = event.y
-
- def motion1_ctrl(self, event):# change_offset (B1+ctrl)
- self.offset_x = (event.x - self.mouse_offset_x) / (self.cell_size + self.line_width)
- self.offset_y = (event.y - self.mouse_offset_y) / (self.cell_size + self.line_width)
- self.mouse_offset_x = event.x
- self.mouse_offset_y = event.y
- self.draw()
-
- def press13(self, event):# zoom
- canvas.focus_set()
- self.mouse_zoom = event.y
-
- def motion13(self, event):# zoom
- delta = (event.y - self.mouse_zoom) / self.zoom_divisor
- self.cell_size = self.cell_size + delta
- if self.cell_size > 50:
- self.cell_size = 50
- if self.cell_size < 1:
- self.cell_size = 1
- self.mouse_zoom = event.y
- self.draw()
-
def to_top(self):# replace choosen state to top
selected = self.selected_state
if selected != None:
@@ -518,10 +496,6 @@
canvas.tag_bind("cell", "", handlers.motion3)
canvas.bind_all("", handlers.press_key)
canvas.bind_all("", handlers.release_key)
-#canvas.bind("", handlers.press1_ctrl)
-#canvas.bind("", handlers.motion1_ctrl)
-#canvas.bind("", handlers.press13)
-#canvas.bind("", handlers.motion13)

scroll_x=Scrollbar(root, orient="horizontal")
scroll_y=Scrollbar(root, orient="vertical")