cau/render.py
author Eugen Sawin <sawine@me73.com>
Mon, 18 Jul 2011 00:51:04 +0200
changeset 11 a131769728f1
parent 7 95ea605276a3
permissions -rw-r--r--
Added header.
     1 """
     2 Description: Renderer for grid configuration based on Tkinter.
     3 Author: Eugen Sawin <sawine@me73.com>
     4 """
     5 
     6 import Tkinter as tk
     7 from grid import Grid
     8 
     9 class Render(object):
    10 	def __init__(self, title, width, height):
    11 		self.title = title		
    12 		self.width = width
    13 		self.height = height
    14 		self.root = tk.Tk(className=title, sync=1)
    15 		self.canvas = tk.Canvas(width=self.width, height=self.height, bg="black")
    16 		self.canvas.pack(expand=tk.YES, fill=tk.BOTH)
    17 	def render(self, grid):
    18 		offset = (self.width / 2, self.height / 2)
    19 		size = 1
    20 		cell_ids = []
    21 		for pos in grid.cells.iterkeys():
    22 			x = pos[0] + offset[0]
    23 			y = pos[1] + offset[1]
    24 			cell_id = self.canvas.create_rectangle(x, y, x+size, y+size, 
    25 					fill="yellow", width=0)
    26 			cell_ids.append(cell_id)
    27 		self.root.update()
    28 		for cell_id in cell_ids:
    29 			self.canvas.delete(cell_id)
    30 
    31 import sys
    32 import time
    33 import gridmarshal as marshal
    34 import os, stat
    35 
    36 def main():
    37 	filename = sys.argv[1]
    38 	print "rendering ", filename	
    39 	render = Render("hope", 800, 800)
    40 	mod_time = 0
    41 	while True:
    42 		current = os.stat(filename)[stat.ST_MTIME]
    43 		if current > mod_time:
    44 			mod_time = current
    45 			print "updating render"
    46 			try:
    47 				grid = marshal.loadGrid(filename)
    48 				render.render(grid)
    49 			except IndexError, ValueError:
    50 				print "loading error"
    51 		time.sleep(1)
    52 
    53 if __name__ == "__main__":
    54 	main()