Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/cca/rev/f411a1e0a5cb
Дата изменения: Unknown
Дата индексирования: Mon Oct 1 23:01:57 2012
Кодировка:
cca: f411a1e0a5cb

cca

changeset 51:f411a1e0a5cb

corections in mouse handlers
author is_rusinov
date Mon, 06 Dec 2010 16:02:35 +0300
parents 94406d1874a2
children 6630f82e4675
files Interface.py
diffstat 1 files changed, 21 insertions(+), 20 deletions(-) [+]
line diff
     1.1 --- a/Interface.py	Mon Dec 06 12:36:59 2010 +0300
     1.2 +++ b/Interface.py	Mon Dec 06 16:02:35 2010 +0300
     1.3 @@ -13,8 +13,10 @@
     1.4  		self.offset_x = offset_x
     1.5  		self.offset_y = offset_y
     1.6  		self.after_id = 0
     1.7 -		self.mouse_x = 0
     1.8 -		self.mouse_y = 0
     1.9 +		self.mouse_col=0
    1.10 +		self.mouse_row=0
    1.11 +		self.mouse_offset_x = 0
    1.12 +		self.mouse_offset_y = 0
    1.13  		self.mouse_zoom = 0
    1.14  		self.zoom_divisor = 10
    1.15  		self.is_started = False
    1.16 @@ -115,52 +117,52 @@
    1.17  		row = (event.y - self.offset_y * (self.cell_size + self.line_width)) / (self.cell_size + self.line_width)
    1.18  		index = (automata.symbols[automata.field[row][column]] + 1) % len(automata.states)
    1.19  		automata.field[row][column] = automata.states[index].symbol
    1.20 -		self.draw()
    1.21 +		self.draw_cell(tuple([column, row]))
    1.22  	
    1.23  	def motion1(self, event):# drawer
    1.24  		column = (event.x - self.offset_x * (self.cell_size + self.line_width)) / (self.cell_size + self.line_width)
    1.25  		row = (event.y - self.offset_y * (self.cell_size + self.line_width)) / (self.cell_size + self.line_width)
    1.26  		index = (automata.symbols[automata.field[row][column]] + 1) % len(automata.states)
    1.27  		automata.field[row][column] = automata.states[index].symbol
    1.28 -		self.draw()
    1.29 +		self.draw_cell(tuple([column, row]))
    1.30  	
    1.31  	def press3(self, event):# drawer
    1.32  		column = (event.x - self.offset_x * (self.cell_size + self.line_width)) / (self.cell_size + self.line_width)
    1.33  		row = (event.y - self.offset_y * (self.cell_size + self.line_width)) / (self.cell_size + self.line_width)
    1.34  		index = (automata.symbols[automata.field[row][column]] + len(automata.states) - 1) % len(automata.states)
    1.35  		automata.field[row][column] = automata.states[index].symbol
    1.36 -		self.draw()
    1.37 +		self.draw_cell(tuple([column, row]))
    1.38  	
    1.39  	def motion3(self, event):# drawer
    1.40  		column = (event.x - self.offset_x * (self.cell_size + self.line_width)) / (self.cell_size + self.line_width)
    1.41  		row = (event.y - self.offset_y * (self.cell_size + self.line_width)) / (self.cell_size + self.line_width)
    1.42  		index = (automata.symbols[automata.field[row][column]] + len(automata.states) - 1) % len(automata.states)
    1.43  		automata.field[row][column] = automata.states[index].symbol
    1.44 -		self.draw()
    1.45 +		self.draw_cell(tuple([column, row]))
    1.46  	
    1.47  	def press1_key(self, event):# drawer
    1.48  		if keys.has_key(event.char):
    1.49  			column = (event.x - self.offset_x * (self.cell_size + self.line_width)) / (self.cell_size + self.line_width)
    1.50  			row = (event.y - self.offset_y * (self.cell_size + self.line_width)) / (self.cell_size + self.line_width)
    1.51  			automata.field[row][column] = automata.states[keys[event.char]].symbol
    1.52 -			self.draw()
    1.53 +			self.draw_cell(tuple([column, row]))
    1.54  	
    1.55  	def motion1_key(self, event):# drawer
    1.56  		if keys.has_key(event.char):
    1.57  			column = (event.x - self.offset_x * (self.cell_size + self.line_width)) / (self.cell_size + self.line_width)
    1.58  			row = (event.y - self.offset_y * (self.cell_size + self.line_width)) / (self.cell_size + self.line_width)
    1.59  			automata.field[row][column] = automata.states[keys[event.char]].symbol
    1.60 -			self.draw()
    1.61 +			self.draw_cell(tuple([column, row]))
    1.62  	
    1.63  	def press1_ctrl(self, event):# change_offset (B1+ctrl)
    1.64 -		self.mouse_x = event.x
    1.65 -		self.mouse_y = event.y
    1.66 +		self.mouse_offset_x = event.x
    1.67 +		self.mouse_offset_y = event.y
    1.68  	
    1.69  	def motion1_ctrl(self, event):# change_offset (B1+ctrl)
    1.70 -		self.offset_x = (event.x - self.mouse_x) / (self.cell_size + self.line_width)
    1.71 -		self.offset_y = (event.y - self.mouse_y) / (self.cell_size + self.line_width)
    1.72 -		self.mouse_x = event.x
    1.73 -		self.mouse_y = event.y
    1.74 +		self.offset_x = (event.x - self.mouse_offset_x) / (self.cell_size + self.line_width)
    1.75 +		self.offset_y = (event.y - self.mouse_offset_y) / (self.cell_size + self.line_width)
    1.76 +		self.mouse_offset_x = event.x
    1.77 +		self.mouse_offset_y = event.y
    1.78  		self.draw()
    1.79  	
    1.80  	def press13(self, event):# zoom
    1.81 @@ -180,35 +182,34 @@
    1.82  		automata_frame.pack(side="right", fill="y", expand="no", before=canvas)
    1.83  	
    1.84  	def to_top(self):# replace choosen state to top
    1.85 -		index = automata.symbols.get(state_list.get("active").split()[1])
    1.86 +		index = automata.symbols.get(state_list.get("active").split()[0])
    1.87  		state = automata.states[index]
    1.88  		del automata.states[index]
    1.89  		automata.states.insert(0, state)
    1.90  	
    1.91  	def to_bottom(self):# replace choosen state to botton
    1.92 -		index = automata.symbols.get(state_list.get("active").split()[1])
    1.93 +		index = automata.symbols.get(state_list.get("active").split()[0])
    1.94  		state = automata.states[index]
    1.95  		del automata.states[index]
    1.96  		automata.states.append(state)
    1.97  	
    1.98  	def upwards(self):
    1.99 -		index = automata.symbols.get(state_list.get("active").split()[1])
   1.100 +		index = automata.symbols.get(state_list.get("active").split()[0])
   1.101  		state = automata.states[index]
   1.102  		del automata.states[index]
   1.103  		automata.states.insert(index - 1, state)
   1.104  	
   1.105  	def downwards(self):
   1.106 -		index = automata.symbols.get(state_list.get("active").split()[1])
   1.107 +		index = automata.symbols.get(state_list.get("active").split()[0])
   1.108  		state = automata.states[index]
   1.109  		del automata.states[index]
   1.110  		automata.states.insert(index + 1, state)
   1.111  	
   1.112  	def delete_state(self):# delete choosen state
   1.113 -		index = automata.symbols.get(state_list.get("active").split()[1])
   1.114 +		index = automata.symbols.get(state_list.get("active").split()[0])
   1.115  		del automata.states[index]
   1.116  	
   1.117  	def add(self):# add new state
   1.118 -		pass
   1.119  		name = state_name.get()
   1.120  		symbol = state_symbol.get()
   1.121  		key = lower(state_key.get())