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