sawine@7: import Tkinter as tk sawine@7: from grid import Grid sawine@7: sawine@7: class Render(object): sawine@7: def __init__(self, title, width, height): sawine@7: self.title = title sawine@7: self.width = width sawine@7: self.height = height sawine@7: self.root = tk.Tk(className=title, sync=1) sawine@7: self.canvas = tk.Canvas(width=self.width, height=self.height, bg="black") sawine@7: self.canvas.pack(expand=tk.YES, fill=tk.BOTH) sawine@7: def render(self, grid): sawine@7: offset = (self.width / 2, self.height / 2) sawine@7: size = 1 sawine@7: cell_ids = [] sawine@7: for pos in grid.cells.iterkeys(): sawine@7: x = pos[0] + offset[0] sawine@7: y = pos[1] + offset[1] sawine@7: cell_id = self.canvas.create_rectangle(x, y, x+size, y+size, sawine@7: fill="yellow", width=0) sawine@7: cell_ids.append(cell_id) sawine@7: self.root.update() sawine@7: for cell_id in cell_ids: sawine@7: self.canvas.delete(cell_id) sawine@7: sawine@7: import sys sawine@7: import time sawine@7: import gridmarshal as marshal sawine@7: import os, stat sawine@7: sawine@7: def main(): sawine@7: filename = sys.argv[1] sawine@7: print "rendering ", filename sawine@7: render = Render("hope", 800, 800) sawine@7: mod_time = 0 sawine@7: while True: sawine@7: current = os.stat(filename)[stat.ST_MTIME] sawine@7: if current > mod_time: sawine@7: mod_time = current sawine@7: print "updating render" sawine@7: try: sawine@7: grid = marshal.loadGrid(filename) sawine@7: render.render(grid) sawine@7: except IndexError, ValueError: sawine@7: print "loading error" sawine@7: time.sleep(1) sawine@7: sawine@7: if __name__ == "__main__": sawine@7: main()