diff options
Diffstat (limited to 'sugar/chat/sketchpad/SketchPad.py')
-rw-r--r-- | sugar/chat/sketchpad/SketchPad.py | 170 |
1 files changed, 85 insertions, 85 deletions
diff --git a/sugar/chat/sketchpad/SketchPad.py b/sugar/chat/sketchpad/SketchPad.py index 33327f0..e15e435 100644 --- a/sugar/chat/sketchpad/SketchPad.py +++ b/sugar/chat/sketchpad/SketchPad.py @@ -23,101 +23,101 @@ from SVGdraw import drawing from SVGdraw import svg class SketchPad(gtk.DrawingArea): - __gsignals__ = { - 'new-user-sketch':(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([gobject.TYPE_PYOBJECT])) - } + __gsignals__ = { + 'new-user-sketch':(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, + ([gobject.TYPE_PYOBJECT])) + } - def __init__(self, bgcolor=(0.6, 1, 0.4)): - gtk.DrawingArea.__init__(self) + def __init__(self, bgcolor=(0.6, 1, 0.4)): + gtk.DrawingArea.__init__(self) - self._active_sketch = None - self._rgb = (0.0, 0.0, 0.0) - self._bgcolor = bgcolor - self._sketches = [] + self._active_sketch = None + self._rgb = (0.0, 0.0, 0.0) + self._bgcolor = bgcolor + self._sketches = [] - self.add_events(gtk.gdk.BUTTON_PRESS_MASK | - gtk.gdk.BUTTON_RELEASE_MASK | - gtk.gdk.BUTTON1_MOTION_MASK) - self.connect("button-press-event", self._button_press_cb) - self.connect("button-release-event", self._button_release_cb) - self.connect("motion-notify-event", self._motion_notify_cb) - self.connect('expose_event', self.expose) - - def clear(self): - self._sketches = [] - self.window.invalidate_rect(None, False) + self.add_events(gtk.gdk.BUTTON_PRESS_MASK | + gtk.gdk.BUTTON_RELEASE_MASK | + gtk.gdk.BUTTON1_MOTION_MASK) + self.connect("button-press-event", self._button_press_cb) + self.connect("button-release-event", self._button_release_cb) + self.connect("motion-notify-event", self._motion_notify_cb) + self.connect('expose_event', self.expose) + + def clear(self): + self._sketches = [] + self.window.invalidate_rect(None, False) - def expose(self, widget, event): - """Draw the background of the sketchpad.""" - rect = self.get_allocation() - ctx = widget.window.cairo_create() - - ctx.set_source_rgb(self._bgcolor[0], self._bgcolor[1], self._bgcolor[2]) - ctx.rectangle(0, 0, rect.width, rect.height) - ctx.fill_preserve() - - ctx.set_source_rgb(0, 0.3, 0.2) - ctx.stroke() - - for sketch in self._sketches: - sketch.draw(ctx) - - return False + def expose(self, widget, event): + """Draw the background of the sketchpad.""" + rect = self.get_allocation() + ctx = widget.window.cairo_create() + + ctx.set_source_rgb(self._bgcolor[0], self._bgcolor[1], self._bgcolor[2]) + ctx.rectangle(0, 0, rect.width, rect.height) + ctx.fill_preserve() + + ctx.set_source_rgb(0, 0.3, 0.2) + ctx.stroke() + + for sketch in self._sketches: + sketch.draw(ctx) + + return False - def set_color(self, color): - """Sets the current drawing color of the sketchpad. - color agument should be 3-item tuple of rgb values between 0 and 1.""" - self._rgb = color + def set_color(self, color): + """Sets the current drawing color of the sketchpad. + color agument should be 3-item tuple of rgb values between 0 and 1.""" + self._rgb = color - def add_sketch(self, sketch): - """Add a sketch to the the pad. Mostly for subclasses and clients.""" - self._sketches.append(sketch) - self.window.invalidate_rect(None, False) + def add_sketch(self, sketch): + """Add a sketch to the the pad. Mostly for subclasses and clients.""" + self._sketches.append(sketch) + self.window.invalidate_rect(None, False) - def add_point(self, event): - if not self._active_sketch: - return - self._active_sketch.add_point(event.x, event.y) - self.window.invalidate_rect(None, False) - - def _button_press_cb(self, widget, event): - self._active_sketch = Sketch(self._rgb) - self._sketches.append(self._active_sketch) - self.add_point(event) - - def _button_release_cb(self, widget, event): - self.add_point(event) - self.emit('new-user-sketch', self._active_sketch) - self._active_sketch = None - - def _motion_notify_cb(self, widget, event): - self.add_point(event) - - def to_svg(self): - """Return a string containing an SVG representation of this sketch.""" - d = drawing() - s = svg() - for sketch in self._sketches: - s.addElement(sketch.draw_to_svg()) - d.setSVG(s) - return d.toXml() + def add_point(self, event): + if not self._active_sketch: + return + self._active_sketch.add_point(event.x, event.y) + self.window.invalidate_rect(None, False) + + def _button_press_cb(self, widget, event): + self._active_sketch = Sketch(self._rgb) + self._sketches.append(self._active_sketch) + self.add_point(event) + + def _button_release_cb(self, widget, event): + self.add_point(event) + self.emit('new-user-sketch', self._active_sketch) + self._active_sketch = None + + def _motion_notify_cb(self, widget, event): + self.add_point(event) + + def to_svg(self): + """Return a string containing an SVG representation of this sketch.""" + d = drawing() + s = svg() + for sketch in self._sketches: + s.addElement(sketch.draw_to_svg()) + d.setSVG(s) + return d.toXml() def test_quit(w, skpad): - print skpad.to_svg() - gtk.main_quit() + print skpad.to_svg() + gtk.main_quit() if __name__ == "__main__": - window = gtk.Window() - window.set_default_size(400, 300) - window.connect("destroy", lambda w: gtk.main_quit()) + window = gtk.Window() + window.set_default_size(400, 300) + window.connect("destroy", lambda w: gtk.main_quit()) - sketchpad = SketchPad() - window.add(sketchpad) - sketchpad.show() - - window.show() - - window.connect("destroy", test_quit, sketchpad) + sketchpad = SketchPad() + window.add(sketchpad) + sketchpad.show() + + window.show() + + window.connect("destroy", test_quit, sketchpad) - gtk.main() + gtk.main() |