sawine@0: import algorithm sawine@0: sawine@0: models = {} sawine@0: sawine@0: def createModel(name): sawine@0: models[name] = Model(name) sawine@0: sawine@0: def addModel(model): sawine@0: models[model.name] = model sawine@0: sawine@0: def deleteModel(name): sawine@0: if name in models: sawine@0: del models[name] sawine@0: return True sawine@0: return False sawine@0: sawine@0: # event = (type,value) sawine@0: eventTypes = ("view", "model", "server") sawine@0: sawine@0: class Model(object): sawine@0: def __init__(self, name): sawine@0: self.name = name sawine@0: self.cells = {} sawine@0: self.observers = {} sawine@0: for t in eventTypes: sawine@0: self.observers[t] = [] sawine@0: self.resolution = (0,0) sawine@0: self.range = (complex(0,0), complex(0,0)) sawine@0: def dispatch(self, event): sawine@0: for o in self.observers: sawine@0: o[0].sendto("%s" % (event), o[1]) sawine@0: def register(self, socket, observer, eventType): sawine@0: self.observers[eventType].append((socket, observer)) sawine@0: def setResolution(self, x, y): sawine@0: self.resolution = (x,y) sawine@0: def setRange(self, begin, end): sawine@0: self.range = (begin, end) sawine@0: def update(self, max_iter): sawine@0: m = algorithm.Mandelbrot(self.range, self.resolution) sawine@0: self.cells = m.resolve(max_iter) sawine@0: sawine@0: