From 8ec0e742ee265879a5ada93f01b183ea09c79d03 Mon Sep 17 00:00:00 2001 From: Sayamindu Dasgupta Date: Sat, 21 Nov 2009 20:00:23 +0000 Subject: Implement erase support --- diff --git a/icons/tool-eraser.svg b/icons/tool-eraser.svg new file mode 100644 index 0000000..41fc143 --- /dev/null +++ b/icons/tool-eraser.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/scribbleactivity.py b/scribbleactivity.py index f1e69fd..20e51cb 100644 --- a/scribbleactivity.py +++ b/scribbleactivity.py @@ -66,10 +66,22 @@ class ScribbleActivity(Activity): rectbtn.connect('toggled', self._rect_cb) rectbtn.set_group(circlebtn) + sep = gtk.SeparatorToolItem() + sep.set_expand(False) + sep.set_draw(True) + + erasebtn = sugar.graphics.radiotoolbutton.RadioToolButton() + erasebtn.set_named_icon('tool-eraser') + erasebtn.set_tooltip(_("Erase")) + erasebtn.connect('toggled', self._erase_cb) + erasebtn.set_group(rectbtn) + toolbar = gtk.Toolbar() toolbar.insert(pencilbtn, -1) toolbar.insert(circlebtn, -1) toolbar.insert(rectbtn, -1) + toolbar.insert(sep, -1) + toolbar.insert(erasebtn, -1) sep = gtk.SeparatorToolItem() sep.set_expand(True) @@ -122,6 +134,10 @@ class ScribbleActivity(Activity): if button.props.active: self._scribblewidget.set_tool('rect') + def _erase_cb(self, button): + if button.props.active: + self._scribblewidget.set_tool('eraser') + def export(self, file_path, mimetype, options): window = self._scribblewidget.window width, height = window.get_size() diff --git a/scribblewidget.py b/scribblewidget.py index 3406890..5932a60 100644 --- a/scribblewidget.py +++ b/scribblewidget.py @@ -93,6 +93,8 @@ class ScribbleWidget(goocanvas.Canvas): self.item = goocanvas.Polyline(parent=self._root, \ points=goocanvas.Points(self.line_points), \ stroke_color_rgba = self._stroke_color, title=self.item_id) + elif self.tool == 'eraser': + self.item = self.get_item_at(x, y, True) else: pass @@ -121,6 +123,10 @@ class ScribbleWidget(goocanvas.Canvas): self.item.props.points = goocanvas.Points(self.line_points) self.item_orig_x = x self.item_orig_y = y + elif self.tool == 'eraser': + self.item = self.get_item_at(x, y, True) + else: + pass self.prev_time = time @@ -130,7 +136,7 @@ class ScribbleWidget(goocanvas.Canvas): def get_cmd_list(self): return self.cmd_list - def process_item_finalize(self): + def process_item_finalize(self, x, y): if self.tool == 'circle': self.cmd = "goocanvas.Ellipse(parent=self._root, center_x=%d, \ center_y=%d, radius_x = %d, radius_y = %d, \ @@ -151,6 +157,13 @@ class ScribbleWidget(goocanvas.Canvas): points=goocanvas.Points(%s), stroke_color_rgba = %d, \ title = '%s')" % (str(self.line_points), self._stroke_color, \ self.item_id) + elif self.tool == 'eraser': + if self.item is not None: + self.item.remove() + # Maybe we can use the item title (uuid) and use it instead + self.cmd = "self.get_item_at(%f, %f, True).remove()" % (x, y) + else: + pass #print self.cmd @@ -182,7 +195,7 @@ class ScribbleWidget(goocanvas.Canvas): def on_button_release(self, canvas, event): canvas.pointer_ungrab(self.item, event.time) - self.process_item_finalize() + self.process_item_finalize(event.x, event.y) return True def on_motion(self, canvas, event): -- cgit v0.9.1