From 16424ccf036cce9be9a5472b1d889fc86fee5b72 Mon Sep 17 00:00:00 2001 From: Gonzalo Odiard Date: Wed, 09 Jun 2010 18:09:35 +0000 Subject: iplements OLPC #8865 - Slider bar should change brush and line width Connects XO-1 and XO-1.5 slider function keys to line size change for pencil, eraser, brush and rainbow. The size change is relative to current size. --- diff --git a/Area.py b/Area.py index 7b8c8b4..0ef5e8d 100644 --- a/Area.py +++ b/Area.py @@ -97,15 +97,13 @@ class Area(gtk.DrawingArea): gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK| gtk.gdk.EXPOSURE_MASK | - gtk.gdk.KEY_PRESS_MASK | - gtk.gdk.KEY_RELEASE_MASK) + gtk.gdk.KEY_PRESS_MASK) self.connect("expose_event",self.expose) self.connect("motion_notify_event", self.mousemove) self.connect("button_press_event", self.mousedown) self.connect("button_release_event", self.mouseup) self.connect("key_press_event", self.key_press) - self.connect("key_release_event", self.key_release) self.set_flags(gtk.CAN_FOCUS) self.grab_focus() @@ -1164,8 +1162,14 @@ class Area(gtk.DrawingArea): self.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.TCROSS)) widget.queue_draw() - def key_release(self,widget,event): - pass + def change_line_size(self, delta): + if self.tool['name'] in ['pencil','eraser','brush','rainbow']: + size = self.tool['line size'] + delta + if size < 1: + size = 1 + self.tool['line size'] = size + self.configure_line(size) + self.queue_draw() def _keep_selection_ratio(self, coords): def sign(x): diff --git a/OficinaActivity.py b/OficinaActivity.py index 332f198..c72576a 100644 --- a/OficinaActivity.py +++ b/OficinaActivity.py @@ -117,6 +117,8 @@ class OficinaActivity(activity.Activity): self.set_toolbox(toolbox) toolbox.show() + self.connect("key_press_event", self.key_press) + # setup self.area only once def map_cp(widget): @@ -131,6 +133,11 @@ class OficinaActivity(activity.Activity): self._setup_handle = self.connect('map', map_cp) + def key_press(self, widget, event): + sliders = {65474: -5, 65475: -1, 65476: 1, 65477: 5} + if event.keyval in sliders: + self.area.change_line_size(sliders[event.keyval]) + def read_file(self, file_path): '''Read file from Sugar Journal.''' -- cgit v0.9.1