Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar/chat/sketchpad
diff options
context:
space:
mode:
Diffstat (limited to 'sugar/chat/sketchpad')
-rw-r--r--sugar/chat/sketchpad/Sketch.py66
-rw-r--r--sugar/chat/sketchpad/SketchPad.py170
-rw-r--r--sugar/chat/sketchpad/Toolbox.py94
3 files changed, 165 insertions, 165 deletions
diff --git a/sugar/chat/sketchpad/Sketch.py b/sugar/chat/sketchpad/Sketch.py
index 0ddfb3c..ac0a865 100644
--- a/sugar/chat/sketchpad/Sketch.py
+++ b/sugar/chat/sketchpad/Sketch.py
@@ -18,37 +18,37 @@
from SVGdraw import path
class Sketch:
- def __init__(self, rgb):
- self._points = []
- self._rgb = (float(rgb[0]), float(rgb[1]), float(rgb[2]))
-
- def add_point(self, x, y):
- self._points.append((x, y))
+ def __init__(self, rgb):
+ self._points = []
+ self._rgb = (float(rgb[0]), float(rgb[1]), float(rgb[2]))
+
+ def add_point(self, x, y):
+ self._points.append((x, y))
- def get_points(self):
- return self._points
-
- def draw(self, ctx):
- start = True
- for (x, y) in self._points:
- if start:
- ctx.move_to(x, y)
- start = False
- else:
- ctx.line_to(x, y)
- ctx.set_source_rgb(self._rgb[0], self._rgb[1], self._rgb[2])
- ctx.stroke()
-
- def draw_to_svg(self):
- i = 0
- for (x, y) in self._points:
- coords = str(x) + ' ' + str(y) + ' '
- if i == 0:
- path_data = 'M ' + coords
- elif i == 1:
- path_data += 'L ' + coords
- else:
- path_data += coords
- i += 1
- color = "#%02X%02X%02X" % (255 * self._rgb[0], 255 * self._rgb[1], 255 * self._rgb[2])
- return path(path_data, fill = 'none', stroke = color)
+ def get_points(self):
+ return self._points
+
+ def draw(self, ctx):
+ start = True
+ for (x, y) in self._points:
+ if start:
+ ctx.move_to(x, y)
+ start = False
+ else:
+ ctx.line_to(x, y)
+ ctx.set_source_rgb(self._rgb[0], self._rgb[1], self._rgb[2])
+ ctx.stroke()
+
+ def draw_to_svg(self):
+ i = 0
+ for (x, y) in self._points:
+ coords = str(x) + ' ' + str(y) + ' '
+ if i == 0:
+ path_data = 'M ' + coords
+ elif i == 1:
+ path_data += 'L ' + coords
+ else:
+ path_data += coords
+ i += 1
+ color = "#%02X%02X%02X" % (255 * self._rgb[0], 255 * self._rgb[1], 255 * self._rgb[2])
+ return path(path_data, fill = 'none', stroke = color)
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()
diff --git a/sugar/chat/sketchpad/Toolbox.py b/sugar/chat/sketchpad/Toolbox.py
index 0ae4e29..b142f98 100644
--- a/sugar/chat/sketchpad/Toolbox.py
+++ b/sugar/chat/sketchpad/Toolbox.py
@@ -19,59 +19,59 @@ import gtk
import gobject
class ColorButton(gtk.RadioButton):
- def __init__(self, group, rgb):
- gtk.RadioButton.__init__(self, group)
-
- self._rgb = rgb
-
- self.set_mode(False)
- self.set_relief(gtk.RELIEF_NONE)
-
- drawing_area = gtk.DrawingArea()
- drawing_area.set_size_request(24, 24)
- drawing_area.connect_after('expose_event', self.expose)
- self.add(drawing_area)
- drawing_area.show()
+ def __init__(self, group, rgb):
+ gtk.RadioButton.__init__(self, group)
+
+ self._rgb = rgb
+
+ self.set_mode(False)
+ self.set_relief(gtk.RELIEF_NONE)
+
+ drawing_area = gtk.DrawingArea()
+ drawing_area.set_size_request(24, 24)
+ drawing_area.connect_after('expose_event', self.expose)
+ self.add(drawing_area)
+ drawing_area.show()
- def color(self):
- return self._rgb
+ def color(self):
+ return self._rgb
- def expose(self, widget, event):
- rect = widget.get_allocation()
- ctx = widget.window.cairo_create()
+ def expose(self, widget, event):
+ rect = widget.get_allocation()
+ ctx = widget.window.cairo_create()
- ctx.set_source_rgb(self._rgb[0], self._rgb[1] , self._rgb[2])
- ctx.rectangle(4, 4, rect.width - 8, rect.height - 8)
- ctx.fill()
-
- return False
+ ctx.set_source_rgb(self._rgb[0], self._rgb[1] , self._rgb[2])
+ ctx.rectangle(4, 4, rect.width - 8, rect.height - 8)
+ ctx.fill()
+
+ return False
class Toolbox(gtk.HBox):
- __gsignals__ = {
- 'color-selected': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
- ([gobject.TYPE_PYOBJECT]))
- }
+ __gsignals__ = {
+ 'color-selected': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
+ ([gobject.TYPE_PYOBJECT]))
+ }
- def __init__(self):
- gtk.HBox.__init__(self, False, 6)
-
- self._colors_group = None
-
- self._add_color([0, 0, 0])
- self._add_color([1, 0, 0])
- self._add_color([0, 1, 0])
- self._add_color([0, 0, 1])
-
- def _add_color(self, rgb):
- color = ColorButton(self._colors_group, rgb)
- color.unset_flags(gtk.CAN_FOCUS)
- color.connect('clicked', self.__color_clicked_cb, rgb)
- self.pack_start(color, False)
+ def __init__(self):
+ gtk.HBox.__init__(self, False, 6)
+
+ self._colors_group = None
+
+ self._add_color([0, 0, 0])
+ self._add_color([1, 0, 0])
+ self._add_color([0, 1, 0])
+ self._add_color([0, 0, 1])
+
+ def _add_color(self, rgb):
+ color = ColorButton(self._colors_group, rgb)
+ color.unset_flags(gtk.CAN_FOCUS)
+ color.connect('clicked', self.__color_clicked_cb, rgb)
+ self.pack_start(color, False)
- if self._colors_group == None:
- self._colors_group = color
+ if self._colors_group == None:
+ self._colors_group = color
- color.show()
+ color.show()
- def __color_clicked_cb(self, button, rgb):
- self.emit("color-selected", button.color())
+ def __color_clicked_cb(self, button, rgb):
+ self.emit("color-selected", button.color())