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