Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/cca/diff/e56a5e838f37/Interface.py
Дата изменения: Unknown
Дата индексирования: Sun Feb 3 10:49:16 2013
Кодировка: Windows-1251
cca: Interface.py diff

cca

diff Interface.py @ 7:e56a5e838f37

+ zoom, speed and state order manipulations
author is_rusinov
date Sat, 04 Dec 2010 00:50:50 +0300
parents 721fdbb815c8
children cda6324b8518
line diff
     1.1 --- a/Interface.py	Fri Dec 03 23:05:02 2010 +0300
     1.2 +++ b/Interface.py	Sat Dec 04 00:50:50 2010 +0300
     1.3 @@ -2,22 +2,26 @@
     1.4  
     1.5  class Handlers(object):
     1.6  	
     1.7 -	def __init__(self, scale, speed, offset_x, offset_y):
     1.8 -		self.scale = scale
     1.9 -		self.speed = speed
    1.10 +	def __init__(self, cell_size, delay, offset_x, offset_y):# cell_size is size of cell, including line width, if there is it
    1.11 +		self.cell_size = cell_size
    1.12 +		self.delay = delay
    1.13  		self.offset_x = offset_x
    1.14  		self.offset_y = offset_y
    1.15  		self.after_id = 0
    1.16 +		self.is_started = False
    1.17  	
    1.18  	def start(self):
    1.19 -		self.nextStep()
    1.20 -		self.after_id = canvas.after(self.speed, self.start)
    1.21 +		if ! self.is_started:
    1.22 +			self.is_started = True
    1.23 +			self.next_step()
    1.24 +			self.after_id = canvas.after(self.delay, self.start)
    1.25  	
    1.26  	def stop(self):
    1.27  		self.canvas.after_cancel(self.after_id)
    1.28 +		self.is_started = False
    1.29  	
    1.30  	def next_step(self):
    1.31 -		automata.nextStep()
    1.32 +		automata.next_step()
    1.33  		self.draw()
    1.34  	
    1.35  	def save_file():
    1.36 @@ -31,87 +35,93 @@
    1.37  	
    1.38  	def close_help_window
    1.39  		
    1.40 -	def zoom_in():
    1.41 -		pass
    1.42 +	def zoom_in(self):
    1.43 +		if self.cell_size < 50:
    1.44 +			self.cell_size ++
    1.45 +			self.draw()
    1.46  	
    1.47 -	def zoom_out():
    1.48 -		pass
    1.49 +	def zoom_out(self):
    1.50 +		if self.cell_size > 1:
    1.51 +			self.cell_size --
    1.52 +			self.draw()
    1.53  	
    1.54 -	def slower():
    1.55 -		pass
    1.56 +	def slower(self, speed_rate):
    1.57 +		self.delay = self.delay + speed_rate
    1.58  	
    1.59 -	def faster():
    1.60 -		pass
    1.61 +	def faster(self, speed_rate):
    1.62 +		if self.speed > speed_rate:
    1.63 +			self.delay = self.delay - speed_rate
    1.64 +		else:
    1.65 +			self.delay = 0
    1.66  	
    1.67 -	def change_size():
    1.68 -		pass
    1.69 +	def change_size(x, y):
    1.70 +		automata.change_size(x, y)
    1.71 +		self.draw()
    1.72  	
    1.73  	def draw():
    1.74  		pass
    1.75  	
    1.76 -	def press1():# рисовалка
    1.77 +	def press1(self, event):# drawer
    1.78  		pass
    1.79  	
    1.80 -	def motion1():# рисовалка
    1.81 +	def motion1(self, event):# drawer
    1.82  		pass
    1.83  	
    1.84 -	def press3():# рисовалка
    1.85 +	def press3(self, event):# drawer
    1.86  		pass
    1.87  	
    1.88 -	def motion3():# рисовалка
    1.89 +	def motion3(self, event):# drawer
    1.90  		pass
    1.91  	
    1.92 -	def press_key1():# рисовалка+перемещение по полю (левая+ctrl)
    1.93 +	def press_key1(self, event):# drawer+change_scale (B1+ctrl)
    1.94  		pass
    1.95  	
    1.96 -	def motion_key1():# рисовалка+перемещение по полю (левая+ctrl)
    1.97 +	def motion_key1(self, event):# drawer+change_scale (B1+ctrl)
    1.98  		pass
    1.99  	
   1.100 -	def press12():# zoom
   1.101 +	def press12(self, event):# zoom
   1.102  		pass
   1.103  	
   1.104 -	def motion12():# zoom
   1.105 +	def motion12(self, event):# zoom
   1.106  		pass
   1.107  	
   1.108 -	def change_states():# появление окошка для изменения порядка состояний: список параметров, можно выбрать один или два и есть три кнопки: toTop toBottom switch delete
   1.109 +	def automata_frame():# show automata_frame
   1.110 +		frame1.pack(side="right", fill="y", expand="no", before=canvas)
   1.111 +	
   1.112 +	def to_top():# replace choosen state to top
   1.113 +		index = symbols.get(state_list.get("active").split()[1])
   1.114 +		state = states[index]
   1.115 +		del states[index]
   1.116 +		states.insert(0, state)
   1.117 +	
   1.118 +	def to_bottom():# replace choosen state to botton
   1.119 +		index = symbols.get(state_list.get("active").split()[1])
   1.120 +		state = states[index]
   1.121 +		del states[index]
   1.122 +		states.append(state)
   1.123 +	
   1.124 +	def upwards():
   1.125 +		index = symbols.get(state_list.get("active").split()[1])
   1.126 +		state = states[index]
   1.127 +		del states[index]
   1.128 +		states.insert(index - 1, state)
   1.129 +	
   1.130 +	def downwards():
   1.131 +		index = symbols.get(state_list.get("active").split()[1])
   1.132 +		state = states[index]
   1.133 +		del states[index]
   1.134 +		states.insert(index + 1, state)
   1.135 +	
   1.136 +	def delete_state():# delete choosen state
   1.137 +		index = symbols.get(state_list.get("active").split()[1])
   1.138 +		del states[index]
   1.139 +	
   1.140 +	def add():# add new state
   1.141  		pass
   1.142  	
   1.143 -	def to_top():# отправляет один элемент списка в начало
   1.144 +	def change():# change chosen state
   1.145  		pass
   1.146  	
   1.147 -	def to_bottom():# отправляет один элемент списка в конец
   1.148 -		pass
   1.149 -	
   1.150 -	def switch():# меняет два выбранных элемента местами
   1.151 -		pass
   1.152 -	
   1.153 -	def delete_state():
   1.154 -		pass
   1.155 -	
   1.156 -	def close_change_window():# закрывает окно изменения порядка состояний
   1.157 -		pass
   1.158 -	
   1.159 -	def add_state():# открытие окошка добавления, две кнопки: add close
   1.160 -		pass
   1.161 -	
   1.162 -	def add():
   1.163 -		pass
   1.164 -	
   1.165 -	def close_add_window():
   1.166 -		pass
   1.167 -	
   1.168 -	def change_state_parameters():# появление окошка, в котором есть список состояний, облавти ввода текста с подписями, которые самозаполняются при выделении элементов списка, есть кнопки OK close delete
   1.169 -		pass
   1.170 -	
   1.171 -	def ok():
   1.172 -		pass
   1.173 -	#deleteState уже есть
   1.174 -	
   1.175 -	def close_state_window():
   1.176 -		pass
   1.177 -	
   1.178 -	def show_frame():
   1.179 -		frame1.pack(side="right", fill="y", expand="no", before=canvas)
   1.180  
   1.181  
   1.182  root = Tk()
   1.183 @@ -129,10 +139,10 @@
   1.184  
   1.185  #infoPanel=Frame
   1.186  frame1=Frame(root, background="grey")
   1.187 -statelist=Listbox(frame1, selectmode="extended")
   1.188 +state_list=Listbox(frame1, selectmode="extended")
   1.189  for state in states:
   1.190 -	statelist.insert("end", state)
   1.191 -statelist.pack(side="top", fill="y")
   1.192 +	state_list.insert("end", state)
   1.193 +state_list.pack(side="top", fill="y")
   1.194  up = Button(frame1, text="Up", state="disable")
   1.195  up.config(bg="red")
   1.196  down = Button(frame1, text="Down", state="disable")
   1.197 @@ -173,7 +183,7 @@
   1.198  menu_action.add_command(label="Fill randomly")
   1.199  menubar.add_cascade(label="Action", menu=menu_action)
   1.200  
   1.201 -menubar.add_command(label="Automata", command=handlers.show_frame)
   1.202 +menubar.add_command(label="Automata", command=handlers.automata_frame)
   1.203  
   1.204  menubar.add_command(label="Help")
   1.205