From c5f2607482bf9174b79b9eefb481218be6b4f906 Mon Sep 17 00:00:00 2001 From: Manuel QuiƱones Date: Mon, 09 Apr 2012 13:12:46 +0000 Subject: Eraser mode Signed-off-by: Manuel QuiƱones --- 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/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() -- cgit v0.9.1