Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/cca/annotate/e56a5e838f37/Interface.py
Дата изменения: Unknown
Дата индексирования: Fri Feb 28 23:49:53 2014
Кодировка:
cca: Interface.py annotate

cca

annotate 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
rev   line source
Ilia@6 1 from Tkinter import *
Ilia@2 2
Ilia@2 3 class Handlers(object):
is_rusinov@5 4
is_rusinov@7 5 def __init__(self, cell_size, delay, offset_x, offset_y):# cell_size is size of cell, including line width, if there is it
is_rusinov@7 6 self.cell_size = cell_size
is_rusinov@7 7 self.delay = delay
Ilia@6 8 self.offset_x = offset_x
Ilia@6 9 self.offset_y = offset_y
is_rusinov@5 10 self.after_id = 0
is_rusinov@7 11 self.is_started = False
is_rusinov@5 12
is_rusinov@5 13 def start(self):
is_rusinov@7 14 if ! self.is_started:
is_rusinov@7 15 self.is_started = True
is_rusinov@7 16 self.next_step()
is_rusinov@7 17 self.after_id = canvas.after(self.delay, self.start)
is_rusinov@5 18
is_rusinov@5 19 def stop(self):
is_rusinov@5 20 self.canvas.after_cancel(self.after_id)
is_rusinov@7 21 self.is_started = False
is_rusinov@5 22
is_rusinov@5 23 def next_step(self):
is_rusinov@7 24 automata.next_step()
is_rusinov@5 25 self.draw()
is_rusinov@5 26
is_rusinov@5 27 def save_file():
Ilia@2 28 pass
is_rusinov@5 29
is_rusinov@5 30 def open_file():
Ilia@2 31 pass
is_rusinov@5 32
Ilia@2 33 def help():
Ilia@2 34 pass
is_rusinov@5 35
is_rusinov@5 36 def close_help_window
is_rusinov@5 37
is_rusinov@7 38 def zoom_in(self):
is_rusinov@7 39 if self.cell_size < 50:
is_rusinov@7 40 self.cell_size ++
is_rusinov@7 41 self.draw()
is_rusinov@5 42
is_rusinov@7 43 def zoom_out(self):
is_rusinov@7 44 if self.cell_size > 1:
is_rusinov@7 45 self.cell_size --
is_rusinov@7 46 self.draw()
is_rusinov@5 47
is_rusinov@7 48 def slower(self, speed_rate):
is_rusinov@7 49 self.delay = self.delay + speed_rate
is_rusinov@5 50
is_rusinov@7 51 def faster(self, speed_rate):
is_rusinov@7 52 if self.speed > speed_rate:
is_rusinov@7 53 self.delay = self.delay - speed_rate
is_rusinov@7 54 else:
is_rusinov@7 55 self.delay = 0
is_rusinov@5 56
is_rusinov@7 57 def change_size(x, y):
is_rusinov@7 58 automata.change_size(x, y)
is_rusinov@7 59 self.draw()
is_rusinov@5 60
Ilia@2 61 def draw():
Ilia@2 62 pass
is_rusinov@5 63
is_rusinov@7 64 def press1(self, event):# drawer
Ilia@2 65 pass
is_rusinov@5 66
is_rusinov@7 67 def motion1(self, event):# drawer
Ilia@2 68 pass
is_rusinov@5 69
is_rusinov@7 70 def press3(self, event):# drawer
Ilia@2 71 pass
is_rusinov@5 72
is_rusinov@7 73 def motion3(self, event):# drawer
Ilia@2 74 pass
is_rusinov@5 75
is_rusinov@7 76 def press_key1(self, event):# drawer+change_scale (B1+ctrl)
Ilia@2 77 pass
is_rusinov@5 78
is_rusinov@7 79 def motion_key1(self, event):# drawer+change_scale (B1+ctrl)
Ilia@2 80 pass
is_rusinov@5 81
is_rusinov@7 82 def press12(self, event):# zoom
Ilia@2 83 pass
is_rusinov@5 84
is_rusinov@7 85 def motion12(self, event):# zoom
Ilia@2 86 pass
is_rusinov@5 87
is_rusinov@7 88 def automata_frame():# show automata_frame
is_rusinov@7 89 frame1.pack(side="right", fill="y", expand="no", before=canvas)
is_rusinov@7 90
is_rusinov@7 91 def to_top():# replace choosen state to top
is_rusinov@7 92 index = symbols.get(state_list.get("active").split()[1])
is_rusinov@7 93 state = states[index]
is_rusinov@7 94 del states[index]
is_rusinov@7 95 states.insert(0, state)
is_rusinov@7 96
is_rusinov@7 97 def to_bottom():# replace choosen state to botton
is_rusinov@7 98 index = symbols.get(state_list.get("active").split()[1])
is_rusinov@7 99 state = states[index]
is_rusinov@7 100 del states[index]
is_rusinov@7 101 states.append(state)
is_rusinov@7 102
is_rusinov@7 103 def upwards():
is_rusinov@7 104 index = symbols.get(state_list.get("active").split()[1])
is_rusinov@7 105 state = states[index]
is_rusinov@7 106 del states[index]
is_rusinov@7 107 states.insert(index - 1, state)
is_rusinov@7 108
is_rusinov@7 109 def downwards():
is_rusinov@7 110 index = symbols.get(state_list.get("active").split()[1])
is_rusinov@7 111 state = states[index]
is_rusinov@7 112 del states[index]
is_rusinov@7 113 states.insert(index + 1, state)
is_rusinov@7 114
is_rusinov@7 115 def delete_state():# delete choosen state
is_rusinov@7 116 index = symbols.get(state_list.get("active").split()[1])
is_rusinov@7 117 del states[index]
is_rusinov@7 118
is_rusinov@7 119 def add():# add new state
Ilia@2 120 pass
is_rusinov@5 121
is_rusinov@7 122 def change():# change chosen state
Ilia@2 123 pass
is_rusinov@5 124
Ilia@6 125
Ilia@6 126
Ilia@6 127 root = Tk()
Ilia@6 128 root.title("Cyclyc Cell Automata")
Ilia@6 129
Ilia@6 130 canvas = Canvas(root, background="white")
Ilia@6 131 canvas.config(width=500, height=400)
Ilia@6 132 canvas.pack(fill="both", expand="yes")
Ilia@6 133
Ilia@6 134 automata = Automata()
Ilia@6 135 handlers = Handlers(1, 1, 0, 0)
Ilia@6 136
Ilia@6 137 states = []
Ilia@6 138 symboles = dict()
Ilia@6 139
Ilia@6 140 #infoPanel=Frame
Ilia@6 141 frame1=Frame(root, background="grey")
is_rusinov@7 142 state_list=Listbox(frame1, selectmode="extended")
Ilia@6 143 for state in states:
is_rusinov@7 144 state_list.insert("end", state)
is_rusinov@7 145 state_list.pack(side="top", fill="y")
Ilia@6 146 up = Button(frame1, text="Up", state="disable")
Ilia@6 147 up.config(bg="red")
Ilia@6 148 down = Button(frame1, text="Down", state="disable")
Ilia@6 149 down.config(bg="orange")
Ilia@6 150 to_top = Button(frame1, text="To Top", state="disable")
Ilia@6 151 to_top.config(bg="yellow")
Ilia@6 152 to_bottom = Button(frame1, text="To Bottom", state="disable")
Ilia@6 153 to_bottom.config(bg="green")
Ilia@6 154 hide = Button(frame1, text="hide", command=frame1.forget)
Ilia@6 155 hide.config(bg="cyan")
Ilia@6 156 up.pack(side="top", fill="x")
Ilia@6 157 down.pack(side="top", fill="x")
Ilia@6 158 to_top.pack(side="top", fill="x")
Ilia@6 159 to_bottom.pack(side="top", fill="x")
Ilia@6 160 hide.pack(side="bottom", fill="x")
Ilia@6 161
Ilia@6 162
Ilia@6 163 menubar = Menu(root)
Ilia@6 164 root.config(menu=menubar)
Ilia@6 165
Ilia@6 166 menu_file = Menu(menubar)
Ilia@6 167 menu_file.add_command(label="New")
Ilia@6 168 menu_file.add_command(label="Open...")
Ilia@6 169 menu_file.add_command(label="Save...")
Ilia@6 170 menu_file.add_separator()
Ilia@6 171 menu_file.add_command(label="Exit")
Ilia@6 172 menubar.add_cascade(label="File", menu=menu_file)
Ilia@6 173
Ilia@6 174 menu_action = Menu(menubar)
Ilia@6 175 menu_action.add_command(label="Start")
Ilia@6 176 menu_action.add_command(label="Stop")
Ilia@6 177 menu_action.add_command(label="Next Step")
Ilia@6 178 menu_action.add_command(label="Increase speed")
Ilia@6 179 menu_action.add_command(label="Decrease speed")
Ilia@6 180 menu_action.add_command(label="Zoom In")
Ilia@6 181 menu_action.add_command(label="Zoom Out")
Ilia@6 182 menu_action.add_command(label="Clean field")
Ilia@6 183 menu_action.add_command(label="Fill randomly")
Ilia@6 184 menubar.add_cascade(label="Action", menu=menu_action)
Ilia@6 185
is_rusinov@7 186 menubar.add_command(label="Automata", command=handlers.automata_frame)
Ilia@6 187
Ilia@6 188 menubar.add_command(label="Help")
Ilia@6 189
Ilia@6 190 root.mainloop()
Ilia@6 191