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