sawine@7
|
1 |
import Tkinter as tk
|
sawine@7
|
2 |
from grid import Grid
|
sawine@7
|
3 |
|
sawine@7
|
4 |
class Render(object):
|
sawine@7
|
5 |
def __init__(self, title, width, height):
|
sawine@7
|
6 |
self.title = title
|
sawine@7
|
7 |
self.width = width
|
sawine@7
|
8 |
self.height = height
|
sawine@7
|
9 |
self.root = tk.Tk(className=title, sync=1)
|
sawine@7
|
10 |
self.canvas = tk.Canvas(width=self.width, height=self.height, bg="black")
|
sawine@7
|
11 |
self.canvas.pack(expand=tk.YES, fill=tk.BOTH)
|
sawine@7
|
12 |
def render(self, grid):
|
sawine@7
|
13 |
offset = (self.width / 2, self.height / 2)
|
sawine@7
|
14 |
size = 1
|
sawine@7
|
15 |
cell_ids = []
|
sawine@7
|
16 |
for pos in grid.cells.iterkeys():
|
sawine@7
|
17 |
x = pos[0] + offset[0]
|
sawine@7
|
18 |
y = pos[1] + offset[1]
|
sawine@7
|
19 |
cell_id = self.canvas.create_rectangle(x, y, x+size, y+size,
|
sawine@7
|
20 |
fill="yellow", width=0)
|
sawine@7
|
21 |
cell_ids.append(cell_id)
|
sawine@7
|
22 |
self.root.update()
|
sawine@7
|
23 |
for cell_id in cell_ids:
|
sawine@7
|
24 |
self.canvas.delete(cell_id)
|
sawine@7
|
25 |
|
sawine@7
|
26 |
import sys
|
sawine@7
|
27 |
import time
|
sawine@7
|
28 |
import gridmarshal as marshal
|
sawine@7
|
29 |
import os, stat
|
sawine@7
|
30 |
|
sawine@7
|
31 |
def main():
|
sawine@7
|
32 |
filename = sys.argv[1]
|
sawine@7
|
33 |
print "rendering ", filename
|
sawine@7
|
34 |
render = Render("hope", 800, 800)
|
sawine@7
|
35 |
mod_time = 0
|
sawine@7
|
36 |
while True:
|
sawine@7
|
37 |
current = os.stat(filename)[stat.ST_MTIME]
|
sawine@7
|
38 |
if current > mod_time:
|
sawine@7
|
39 |
mod_time = current
|
sawine@7
|
40 |
print "updating render"
|
sawine@7
|
41 |
try:
|
sawine@7
|
42 |
grid = marshal.loadGrid(filename)
|
sawine@7
|
43 |
render.render(grid)
|
sawine@7
|
44 |
except IndexError, ValueError:
|
sawine@7
|
45 |
print "loading error"
|
sawine@7
|
46 |
time.sleep(1)
|
sawine@7
|
47 |
|
sawine@7
|
48 |
if __name__ == "__main__":
|
sawine@7
|
49 |
main()
|