diff options
author | Manuel 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) |
commit | c5f2607482bf9174b79b9eefb481218be6b4f906 (patch) | |
tree | 9d4eda4f4142c3be6a4b403a05e705202332f84b | |
parent | 241e468dfa610fc5a64ac9efb50661509de9b06e (diff) |
Eraser mode
Signed-off-by: Manuel Quiñones <manuq@laptop.org>
-rw-r--r-- | icons/tool-eraser.svg | 18 | ||||
-rw-r--r-- | toolbar.py | 35 |
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>
@@ -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() |