Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManuel Quiñones <manuq@laptop.org>2012-04-09 13:12:46 (GMT)
committer Manuel Quiñones <manuq@laptop.org>2012-04-09 13:12:46 (GMT)
commitc5f2607482bf9174b79b9eefb481218be6b4f906 (patch)
tree9d4eda4f4142c3be6a4b403a05e705202332f84b
parent241e468dfa610fc5a64ac9efb50661509de9b06e (diff)
Eraser mode
Signed-off-by: Manuel Quiñones <manuq@laptop.org>
-rw-r--r--icons/tool-eraser.svg18
-rw-r--r--toolbar.py35
2 files changed, 49 insertions, 4 deletions
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 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="55px"
+ height="55px" viewBox="0 0 55 55" enable-background="new 0 0 55 55" xml:space="preserve">
+
+<g id="Eraser" >
+ <g display="inline">
+ <path fill="#FFFFFF" d="M15.621,33.853c-1.1,0-1.424-0.691-0.721-1.536l14.249-17.109c0.704-0.845,2.18-1.537,3.28-1.537h7.805
+ c1.1,0,1.424,0.691,0.721,1.537L26.706,32.316c-0.704,0.845-2.18,1.536-3.28,1.536H15.621z"/>
+ <path fill="#FFFFFF" d="M24.709,41.155c-0.166,1.088-1.2,1.978-2.301,1.978h-8.525c-1.1,0-1.865-0.89-1.7-1.978l0.549-3.62
+ c0.165-1.088,1.2-1.978,2.3-1.978h8.525c1.101,0,1.865,0.89,1.701,1.978L24.709,41.155z"/>
+ <path fill="#FFFFFF" d="M40.446,23.333c-0.189,1.083-0.921,2.662-1.625,3.507L27.471,40.467c-0.705,0.846-1.125,0.65-0.936-0.434
+ l0.646-3.688c0.19-1.083,0.921-2.661,1.626-3.506l11.35-13.627c0.705-0.845,1.125-0.65,0.936,0.434L40.446,23.333z"/>
+ </g>
+</g>
+
+</svg>
diff --git a/toolbar.py b/toolbar.py
index 0f4800f..392fee1 100644
--- a/toolbar.py
+++ b/toolbar.py
@@ -28,14 +28,19 @@ from sugar.graphics.toolbarbox import ToolbarBox
from sugar.activity.widgets import ActivityToolbarButton
from sugar.activity.widgets import StopButton
from sugar.graphics.colorbutton import ColorToolButton
-from sugar.graphics.radiotoolbutton import RadioToolButton
+from sugar.graphics.toggletoolbutton import ToggleToolButton
from sugar.graphics.palette import Palette
from sugar.graphics.toolbutton import ToolButton
from mypaint.brushlib import brushsettings
-SETTING_NAMES = ['radius_logarithmic', 'slow_tracking', 'opaque', 'hardness']
+BASIC_SETTING_NAMES = ['radius_logarithmic', 'slow_tracking', 'opaque',
+ 'hardness']
+
+OTHER_SETTING_NAMES = ['eraser']
+
+SETTING_NAMES = BASIC_SETTING_NAMES + OTHER_SETTING_NAMES
class BrushesPalette(Palette):
@@ -124,7 +129,7 @@ class SettingsPalette(Palette):
return control
row = 0
- for setting_name in SETTING_NAMES:
+ for setting_name in BASIC_SETTING_NAMES:
control = create_control(setting_name, row)
self.controls[setting_name] = control
row += 1
@@ -169,6 +174,18 @@ class MyPaintToolbar(ToolbarBox):
self.toolbar.insert(settings_button, -1)
settings_button.show()
+ # Eraser mode:
+
+ separator = gtk.SeparatorToolItem()
+ self.toolbar.insert(separator, -1)
+ separator.show()
+
+ self._eraser_button = ToggleToolButton('tool-eraser')
+ self._eraser_button.set_active(False)
+ self._eraser_button.connect('clicked', self._eraser_clicked_cb)
+ self.toolbar.insert(self._eraser_button, -1)
+ self._eraser_button.show()
+
# Blank space (separator) and Stop button at the end:
separator = gtk.SeparatorToolItem()
@@ -189,7 +206,10 @@ class MyPaintToolbar(ToolbarBox):
self._update_buttons()
def _update_setting(self, setting_name, value):
- self._settings_palette.controls[setting_name].set_value(value)
+ if setting_name == 'eraser':
+ self._eraser_button.props.active = {1.0: True, 0.0: False}[value]
+ else:
+ self._settings_palette.controls[setting_name].set_value(value)
def _update_color_button(self, color):
color = gtk.gdk.Color(color)
@@ -218,6 +238,13 @@ class MyPaintToolbar(ToolbarBox):
if not self._skip_brushbuttons_update:
self._update_brushes_buttons(brush_name)
+ def _eraser_clicked_cb(self, widget):
+ setting_name = 'eraser'
+ self._skip_setting_update[setting_name] = True
+ value = {True: 1.0, False: 0.0}[widget.props.active]
+ self._drawing.set_setting(setting_name, value)
+ self._skip_setting_update[setting_name] = False
+
def _color_cb(self, widget):
self._skip_color_update = True
color = widget.get_color()