def __init__(self, parent): self.args = parent.args self.par = parent self.pattern = None gtk.DrawingArea.__init__(self) Interface.__init__(self, matrix_width, matrix_height, self.args.pixelSize) self.connect("expose-event", self.expose) self.matrixscreen = MatrixScreen(matrix_width, matrix_height, self.args.pixelSize, self) gtk.DrawingArea.set_size_request(self, self.width, self.height) # contains data from patterns in the form of a list of tuples of # format (r, g, b) colors. self.data = None # debug printing only once. self.hasprinted = False
class MatrixSimWidget(gtk.DrawingArea, Interface): def __init__(self, parent): self.args = parent.args self.par = parent self.pattern = None gtk.DrawingArea.__init__(self) Interface.__init__(self, matrix_width, matrix_height, self.args.pixelSize) self.connect("expose-event", self.expose) self.matrixscreen = MatrixScreen(matrix_width, matrix_height, self.args.pixelSize, self) gtk.DrawingArea.set_size_request(self, self.width, self.height) # contains data from patterns in the form of a list of tuples of # format (r, g, b) colors. self.data = None # debug printing only once. self.hasprinted = False def get_pattern(self): return self.pattern def set_pattern(self, pattern): self.pattern = pattern def color_convert_f(self, color, depth=8): temp = [] for c in color: temp.append(c / 255.) return tuple(temp) def get_target(self): return self.target def set_target(self, target): return self.target def get_data(self): return self.data def process(self): try: self.data = self.pattern.generate() self.matrixscreen.process_pixels(self.data) self.queue_draw() except Exception as e: if not self.hasprinted: l = get_trace() print >>self.par, ("%s:Wrong data Generated>> %s" % (l, e)) self.hasprinted = True return True def expose(self, widget, event): try: cr = widget.window.cairo_create() if len(self.matrixscreen.pixels): for pixel in self.matrixscreen.pixels: x, y, width, height = pixel.getRect() pixelcolor = pixel.getColor() r, g, b = self.color_convert_f(pixelcolor) cr.set_source_rgb(0.0, 0.0, 0.0) cr.rectangle(x, y, width, height) cr.stroke() cr.set_source_rgb(r, g, b) cr.rectangle(x + 1, y + 1, width - 2, height - 2) cr.fill() except Exception as e: if not self.hasprinted: print >>self.par, "%s:%s" % (get_trace(), e) self.hasprinted = True return