grid.py
changeset 0 fb00185487d4
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/grid.py	Thu May 27 17:14:56 2010 +0200
     1.3 @@ -0,0 +1,37 @@
     1.4 +grids = {}
     1.5 +
     1.6 +def createGrid(name):
     1.7 +	grids[name] = Grid(name)
     1.8 +
     1.9 +class Cell(object):
    1.10 +
    1.11 +	def __init__(self, id, value):
    1.12 +		self.id = id
    1.13 +		self.value = value
    1.14 +
    1.15 +	def __str__(self):
    1.16 +		return "(id:%s value:%s)" % (self.id, self.value)
    1.17 +		
    1.18 +class Grid(object):
    1.19 +
    1.20 +	def __init__(self, name):
    1.21 +		self.name = name
    1.22 +		self.cells = {}
    1.23 +		self.observers = []
    1.24 +			
    1.25 +	def set(self, cellId, value):		
    1.26 +		if value and cellId not in self.cells:	
    1.27 +			self.cells[cellId] = Cell(cellId, value)
    1.28 +			self.dispatch(Cell(cellId, 0), self.cells[cellId])
    1.29 +		elif not value and cellId in self.cells:
    1.30 +			self.dispatch(self.cells[cellId], Cell(cellId, 0))
    1.31 +			del self.cells[cellId]			
    1.32 +	
    1.33 +	def dispatch(self, old, new):
    1.34 +		for o in self.observers:
    1.35 +			o[0].sendto("old: %s\nnew: %s\n" % (old, new), o[1])
    1.36 +
    1.37 +	def addObserver(self, socket, observer):
    1.38 +		self.observers.append((socket, observer))
    1.39 +		
    1.40 +