[PATCH] implement OLPC #8865
Gonzalo Odiard
godiard at gmail.com
Wed Jun 2 00:59:54 EDT 2010
---
Area.py | 13 ++++++++-----
OficinaActivity.py | 15 +++++++++++++++
2 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/Area.py b/Area.py
index e81fcdc..8a5e523 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()
@@ -1163,8 +1161,13 @@ 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
+ 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 f7dd088..8259ca8 100644
--- a/OficinaActivity.py
+++ b/OficinaActivity.py
@@ -116,6 +116,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):
@@ -130,6 +132,19 @@ class OficinaActivity(activity.Activity):
self._setup_handle = self.connect('map', map_cp)
+
+ def key_press(self,widget,event):
+ if (event.keyval >= 65474) and (event.keyval <= 65477):
+ if event.keyval == 65474:
+ self.area.change_line_size(-5)
+ elif event.keyval == 65475:
+ self.area.change_line_size(-1)
+ elif event.keyval == 65476:
+ self.area.change_line_size(1)
+ elif event.keyval == 65477:
+ self.area.change_line_size(5)
+
+
def read_file(self, file_path):
'''Read file from Sugar Journal.'''
--
1.6.6.1
--
Gonzalo
--000e0cd48b14b5c97f048804fdc5
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Tomeu was right. Catching the key stokes in the activity works.<br><br>From=
08e0226731c13e74b993b59c1a2c8165e9ad3654 Mon Sep 17 00:00:00 2001<br>From:=
Gonzalo Odiard <<a href=3D"mailto:godiard at gmail.com">godiard at gmail.com<=
/a>><br>
Date: Wed, 2 Jun 2010 01:59:54 -0300<br>Subject: [PATCH] implement OLPC #88=
65<br><br>---<br>=A0Area.py=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 |=A0=A0 13 +++=
+++++-----<br>=A0OficinaActivity.py |=A0=A0 15 +++++++++++++++<br>=A02 file=
s changed, 23 insertions(+), 5 deletions(-)<br>
<br>diff --git a/Area.py b/Area.py<br>index e81fcdc..8a5e523 100644<br>--- =
a/Area.py<br>+++ b/Area.py<br>@@ -97,15 +97,13 @@ class Area(gtk.DrawingAre=
a):<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 gtk.gdk.BUTTON_PRES=
S_MASK |<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 gtk.gdk.BUTTON=
_RELEASE_MASK|<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 gtk.gdk.EXPOSURE_MASK |<br=
>-=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 gtk.gdk.KEY_PRESS_MASK |<br=
>-=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 gtk.gdk.KEY_RELEASE_MASK) <=
br>+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 gtk.gdk.KEY_PRESS_MASK) <=
br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 <br>=A0=A0=A0=A0=A0=A0=
=A0=A0 self.connect("expose_event",self.expose)<br>
=A0=A0=A0=A0=A0=A0=A0=A0 self.connect("motion_notify_event", self=
.mousemove)<br>=A0=A0=A0=A0=A0=A0=A0=A0 self.connect("button_press_eve=
nt", self.mousedown)<br>=A0=A0=A0=A0=A0=A0=A0=A0 self.connect("bu=
tton_release_event", self.mouseup)<br>=A0=A0=A0=A0=A0=A0=A0=A0 self.co=
nnect("key_press_event", self.key_press)<br>
-=A0=A0=A0=A0=A0=A0=A0 self.connect("key_release_event", self.key=
_release)<br>=A0<br>=A0=A0=A0=A0=A0=A0=A0=A0 self.set_flags(gtk.CAN_FOCUS)<=
br>=A0=A0=A0=A0=A0=A0=A0=A0 self.grab_focus()<br>@@ -1163,8 +1161,13 @@ cla=
ss Area(gtk.DrawingArea):<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0 self.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.TCROSS))<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 widget.queue_draw()<br>=A0<br>-=A0=A0=
=A0 def key_release(self,widget,event):<br>-=A0=A0=A0=A0=A0=A0=A0 pass<br>+=
=A0=A0=A0 def change_line_size(self, delta):<br>+=A0=A0=A0=A0=A0=A0=A0 if s=
elf.tool['name'] in ['pencil','eraser','brush&#=
39;,'rainbow']:<br>
+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 size =3D self.tool['line size'] =
+ delta<br>+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 self.tool['line size'=
] =3D size<br>+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 self.configure_line(size)<=
br>+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 self.queue_draw()<br>+<br>=A0<br>=A0=
=A0=A0=A0 def _keep_selection_ratio(self, coords):<br>
=A0=A0=A0=A0=A0=A0=A0=A0 def sign(x):<br>diff --git a/OficinaActivity.py b/=
OficinaActivity.py<br>index f7dd088..8259ca8 100644<br>--- a/OficinaActivit=
y.py<br>+++ b/OficinaActivity.py<br>@@ -116,6 +116,8 @@ class OficinaActivi=
ty(activity.Activity):<br>
=A0=A0=A0=A0=A0=A0=A0=A0 self.set_toolbox(toolbox)<br>=A0=A0=A0=A0=A0=A0=A0=
=A0 toolbox.show()<br>=A0<br>+=A0=A0=A0=A0=A0=A0=A0 self.connect("key_=
press_event", self.key_press)<br>+<br>=A0=A0=A0=A0=A0=A0=A0=A0 # setup=
self.area only once<br>=A0<br>=A0=A0=A0=A0=A0=A0=A0=A0 def map_cp(widget):=
<br>
@@ -130,6 +132,19 @@ class OficinaActivity(activity.Activity):<br>=A0<br>=
=A0=A0=A0=A0=A0=A0=A0=A0 self._setup_handle =3D self.connect('map',=
map_cp)<br>=A0<br>+<br>+=A0=A0=A0 def key_press(self,widget,event):<br>+=
=A0=A0=A0=A0=A0=A0=A0 if (event.keyval >=3D 65474) and (event.keyval <=
;=3D 65477):<br>
+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 if event.keyval =3D=3D 65474:<br>+=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 self.area.change_line_size(-5)<br>+=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 elif event.keyval =3D=3D 65475:<br>+=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 self.area.change_line_size(-1)<b=
r>+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 elif event.keyval =3D=3D 65476:<br>
+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 self.area.change_line_size(1=
)<br>+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 elif event.keyval =3D=3D 65477:<br>=
+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 self.area.change_line_size(5=
)<br>+<br>+<br>=A0=A0=A0=A0 def read_file(self, file_path):<br>=A0=A0=A0=A0=
=A0=A0=A0=A0 '''Read file from Sugar Journal.'''<br=
>
=A0<br>-- <br>1.6.6.1<br><br clear=3D"all"><br>-- <br>Gonzalo<br>
--000e0cd48b14b5c97f048804fdc5--
--000e0cd48b14b5c989048804fdc7
Content-Type: application/octet-stream;
name="0001-implement-OLPC-8865.patch"
Content-Disposition: attachment; filename="0001-implement-OLPC-8865.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_g9xozbv70
RnJvbSAwOGUwMjI2NzMxYzEzZTc0Yjk5M2I1OWMxYTJjODE2NWU5YWQzNjU0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHb256YWxvIE9kaWFyZCA8Z29kaWFyZEBnbWFpbC5jb20+CkRh
dGU6IFdlZCwgMiBKdW4gMjAxMCAwMTo1OTo1NCAtMDMwMApTdWJqZWN0OiBbUEFUQ0hdIGltcGxl
bWVudCBPTFBDICM4ODY1CgotLS0KIEFyZWEucHkgICAgICAgICAgICB8ICAgMTMgKysrKysrKyst
LS0tLQogT2ZpY2luYUFjdGl2aXR5LnB5IHwgICAxNSArKysrKysrKysrKysrKysKIDIgZmlsZXMg
Y2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9B
cmVhLnB5IGIvQXJlYS5weQppbmRleCBlODFmY2RjLi44YTVlNTIzIDEwMDY0NAotLS0gYS9BcmVh
LnB5CisrKyBiL0FyZWEucHkKQEAgLTk3LDE1ICs5NywxMyBAQCBjbGFzcyBBcmVhKGd0ay5EcmF3
aW5nQXJlYSk6CiAgICAgICAgICAgICAgICAgZ3RrLmdkay5CVVRUT05fUFJFU1NfTUFTSyB8CiAg
ICAgICAgICAgICAgICAgZ3RrLmdkay5CVVRUT05fUkVMRUFTRV9NQVNLfAogICAgICAgICAgICAg
ICAgIGd0ay5nZGsuRVhQT1NVUkVfTUFTSyB8Ci0gICAgICAgICAgICAgICAgZ3RrLmdkay5LRVlf
UFJFU1NfTUFTSyB8Ci0gICAgICAgICAgICAgICAgZ3RrLmdkay5LRVlfUkVMRUFTRV9NQVNLKSAK
KyAgICAgICAgICAgICAgICBndGsuZ2RrLktFWV9QUkVTU19NQVNLKSAKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgc2VsZi5jb25uZWN0KCJleHBvc2VfZXZlbnQiLHNlbGYuZXhwb3NlKQogICAg
ICAgICBzZWxmLmNvbm5lY3QoIm1vdGlvbl9ub3RpZnlfZXZlbnQiLCBzZWxmLm1vdXNlbW92ZSkK
ICAgICAgICAgc2VsZi5jb25uZWN0KCJidXR0b25fcHJlc3NfZXZlbnQiLCBzZWxmLm1vdXNlZG93
bikKICAgICAgICAgc2VsZi5jb25uZWN0KCJidXR0b25fcmVsZWFzZV9ldmVudCIsIHNlbGYubW91
c2V1cCkKICAgICAgICAgc2VsZi5jb25uZWN0KCJrZXlfcHJlc3NfZXZlbnQiLCBzZWxmLmtleV9w
cmVzcykKLSAgICAgICAgc2VsZi5jb25uZWN0KCJrZXlfcmVsZWFzZV9ldmVudCIsIHNlbGYua2V5
X3JlbGVhc2UpCiAKICAgICAgICAgc2VsZi5zZXRfZmxhZ3MoZ3RrLkNBTl9GT0NVUykKICAgICAg
ICAgc2VsZi5ncmFiX2ZvY3VzKCkKQEAgLTExNjMsOCArMTE2MSwxMyBAQCBjbGFzcyBBcmVhKGd0
ay5EcmF3aW5nQXJlYSk6CiAgICAgICAgICAgICAgICAgc2VsZi53aW5kb3cuc2V0X2N1cnNvcihn
dGsuZ2RrLkN1cnNvcihndGsuZ2RrLlRDUk9TUykpCiAgICAgICAgICAgICB3aWRnZXQucXVldWVf
ZHJhdygpCiAKLSAgICBkZWYga2V5X3JlbGVhc2Uoc2VsZix3aWRnZXQsZXZlbnQpOgotICAgICAg
ICBwYXNzCisgICAgZGVmIGNoYW5nZV9saW5lX3NpemUoc2VsZiwgZGVsdGEpOgorICAgICAgICBp
ZiBzZWxmLnRvb2xbJ25hbWUnXSBpbiBbJ3BlbmNpbCcsJ2VyYXNlcicsJ2JydXNoJywncmFpbmJv
dyddOgorICAgICAgICAgICAgc2l6ZSA9IHNlbGYudG9vbFsnbGluZSBzaXplJ10gKyBkZWx0YQor
ICAgICAgICAgICAgc2VsZi50b29sWydsaW5lIHNpemUnXSA9IHNpemUKKyAgICAgICAgICAgIHNl
bGYuY29uZmlndXJlX2xpbmUoc2l6ZSkKKyAgICAgICAgICAgIHNlbGYucXVldWVfZHJhdygpCisK
IAogICAgIGRlZiBfa2VlcF9zZWxlY3Rpb25fcmF0aW8oc2VsZiwgY29vcmRzKToKICAgICAgICAg
ZGVmIHNpZ24oeCk6CmRpZmYgLS1naXQgYS9PZmljaW5hQWN0aXZpdHkucHkgYi9PZmljaW5hQWN0
aXZpdHkucHkKaW5kZXggZjdkZDA4OC4uODI1OWNhOCAxMDA2NDQKLS0tIGEvT2ZpY2luYUFjdGl2
aXR5LnB5CisrKyBiL09maWNpbmFBY3Rpdml0eS5weQpAQCAtMTE2LDYgKzExNiw4IEBAIGNsYXNz
IE9maWNpbmFBY3Rpdml0eShhY3Rpdml0eS5BY3Rpdml0eSk6CiAgICAgICAgIHNlbGYuc2V0X3Rv
b2xib3godG9vbGJveCkKICAgICAgICAgdG9vbGJveC5zaG93KCkKIAorICAgICAgICBzZWxmLmNv
bm5lY3QoImtleV9wcmVzc19ldmVudCIsIHNlbGYua2V5X3ByZXNzKQorCiAgICAgICAgICMgc2V0
dXAgc2VsZi5hcmVhIG9ubHkgb25jZQogCiAgICAgICAgIGRlZiBtYXBfY3Aod2lkZ2V0KToKQEAg
LTEzMCw2ICsxMzIsMTkgQEAgY2xhc3MgT2ZpY2luYUFjdGl2aXR5KGFjdGl2aXR5LkFjdGl2aXR5
KToKIAogICAgICAgICBzZWxmLl9zZXR1cF9oYW5kbGUgPSBzZWxmLmNvbm5lY3QoJ21hcCcsIG1h
cF9jcCkKIAorCisgICAgZGVmIGtleV9wcmVzcyhzZWxmLHdpZGdldCxldmVudCk6CisgICAgICAg
IGlmIChldmVudC5rZXl2YWwgPj0gNjU0NzQpIGFuZCAoZXZlbnQua2V5dmFsIDw9IDY1NDc3KToK
KyAgICAgICAgICAgIGlmIGV2ZW50LmtleXZhbCA9PSA2NTQ3NDoKKyAgICAgICAgICAgICAgICBz
ZWxmLmFyZWEuY2hhbmdlX2xpbmVfc2l6ZSgtNSkKKyAgICAgICAgICAgIGVsaWYgZXZlbnQua2V5
dmFsID09IDY1NDc1OgorICAgICAgICAgICAgICAgIHNlbGYuYXJlYS5jaGFuZ2VfbGluZV9zaXpl
KC0xKQorICAgICAgICAgICAgZWxpZiBldmVudC5rZXl2YWwgPT0gNjU0NzY6CisgICAgICAgICAg
ICAgICAgc2VsZi5hcmVhLmNoYW5nZV9saW5lX3NpemUoMSkKKyAgICAgICAgICAgIGVsaWYgZXZl
bnQua2V5dmFsID09IDY1NDc3OgorICAgICAgICAgICAgICAgIHNlbGYuYXJlYS5jaGFuZ2VfbGlu
ZV9zaXplKDUpCisKKwogICAgIGRlZiByZWFkX2ZpbGUoc2VsZiwgZmlsZV9wYXRoKToKICAgICAg
ICAgJycnUmVhZCBmaWxlIGZyb20gU3VnYXIgSm91cm5hbC4nJycKIAotLSAKMS42LjYuMQoK
--000e0cd48b14b5c989048804fdc7--
More information about the Sugar-devel
mailing list