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