cau/render.py
author Eugen Sawin <sawine@me73.com>
Fri, 31 Dec 2010 02:56:40 +0100
changeset 8 0db344245ac2
child 11 a131769728f1
permissions -rw-r--r--
Streamlined program interface.
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()