[Sugar-devel] #1669 UNSP: Accessibility - keyboard

Walter Bender walter.bender at gmail.com
Wed Jun 23 14:18:13 EDT 2010


Please consider exporting your SVG from Inkscape as simple SVG so that
the Inkscape-specific fields don't clutter your code. They are ignored
by the SVG renderer.

-walter

On Wed, Jun 23, 2010 at 1:24 PM, Esteban Arias
<earias at plan.ceibal.edu.uy> wrote:
> diff -u -r -N sugar-0.88.1.original.con.parches/bin/sugar-session
> sugar-0.88.1/bin/sugar-session
> --- sugar-0.88.1.original.con.parches/bin/sugar-session    2010-06-02
> 09:33:43.000000000 -0300
> +++ sugar-0.88.1/bin/sugar-session    2010-06-21 11:48:06.837182011 -0300
> @@ -1,6 +1,7 @@
>  #!/usr/bin/env python
>  # Copyright (C) 2006, Red Hat, Inc.
>  # Copyright (C) 2009, One Laptop Per Child Association Inc
> +# Copyright (C) 2010, Plan Ceibal <comunidad at plan.ceibal.edu.uy>
>  #
>  # This program is free software; you can redistribute it and/or modify
>  # it under the terms of the GNU General Public License as published by
> @@ -190,6 +191,7 @@
>      gobject.idle_add(setup_notification_service_cb)
>      gobject.idle_add(setup_file_transfer_cb)
>      gobject.idle_add(show_software_updates_cb)
> +    gobject.idle_add(setup_accessibility_cb)
>
>      if sys.modules.has_key('xklavier'):
>          gobject.idle_add(setup_keyboard_cb)
> @@ -201,6 +203,11 @@
>      settings = gtk.settings_get_default()
>      settings.set_property("gtk-font-name", "%s %f" % (face, size))
>
> +def setup_accessibility_cb():
> +    from jarabe.model import accessibility
> +    accessibility_manager = accessibility.AccessibilityManager()
> +    accessibility_manager.setup_accessibility()
> +
>  def main():
>      try:
>          from sugar import env
> diff -u -r -N sugar-0.88.1.original.con.parches/configure.ac
> sugar-0.88.1/configure.ac
> --- sugar-0.88.1.original.con.parches/configure.ac    2010-06-21
> 11:39:19.902054000 -0300
> +++ sugar-0.88.1/configure.ac    2010-06-21 11:44:16.697208930 -0300
> @@ -50,6 +50,7 @@
>  data/Makefile
>  data/sugar-emulator.desktop
>  extensions/cpsection/aboutcomputer/Makefile
> +extensions/cpsection/accessibility/Makefile
>  extensions/cpsection/aboutme/Makefile
>  extensions/cpsection/datetime/Makefile
>  extensions/cpsection/frame/Makefile
> diff -u -r -N sugar-0.88.1.original.con.parches/data/icons/Makefile.am
> sugar-0.88.1/data/icons/Makefile.am
> --- sugar-0.88.1.original.con.parches/data/icons/Makefile.am    2010-06-21
> 11:39:19.902054000 -0300
> +++ sugar-0.88.1/data/icons/Makefile.am    2010-06-21 11:54:27.040055731
> -0300
> @@ -3,6 +3,7 @@
>  sugar_DATA =                        \
>      module-about_me.svg             \
>      module-about_my_computer.svg    \
> +    module-accessibility.svg        \
>      module-date_and_time.svg        \
>      module-frame.svg                \
>      module-journalmanagement.svg    \
> diff -u -r -N
> sugar-0.88.1.original.con.parches/data/icons/module-accessibility.svg
> sugar-0.88.1/data/icons/module-accessibility.svg
> --- sugar-0.88.1.original.con.parches/data/icons/module-accessibility.svg
> 1969-12-31 21:00:00.000000000 -0300
> +++ sugar-0.88.1/data/icons/module-accessibility.svg    2010-06-02
> 14:57:19.214840000 -0300
> @@ -0,0 +1,279 @@
> +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
> +<!-- Created with Inkscape (http://www.inkscape.org/) -->
> +
> +<svg
> +   xmlns:dc="http://purl.org/dc/elements/1.1/"
> +   xmlns:cc="http://creativecommons.org/ns#"
> +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
> +   xmlns:svg="http://www.w3.org/2000/svg"
> +   xmlns="http://www.w3.org/2000/svg"
> +   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
> +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
> +   width="55"
> +   height="55"
> +   id="svg795"
> +   sodipodi:version="0.32"
> +   inkscape:version="0.46+devel"
> +   version="1.0"
> +   sodipodi:docname="acc79.svg"
> +   inkscape:output_extension="org.inkscape.output.svg.inkscape">
> +  <defs
> +     id="defs797">
> +    <inkscape:perspective
> +       sodipodi:type="inkscape:persp3d"
> +       inkscape:vp_x="0 : 526.18109 : 1"
> +       inkscape:vp_y="0 : 1000 : 0"
> +       inkscape:vp_z="744.09448 : 526.18109 : 1"
> +       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
> +       id="perspective803" />
> +    <inkscape:perspective
> +       id="perspective813"
> +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
> +       inkscape:vp_z="1 : 0.5 : 1"
> +       inkscape:vp_y="0 : 1000 : 0"
> +       inkscape:vp_x="0 : 0.5 : 1"
> +       sodipodi:type="inkscape:persp3d" />
> +    <inkscape:perspective
> +       id="perspective813-2"
> +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
> +       inkscape:vp_z="1 : 0.5 : 1"
> +       inkscape:vp_y="0 : 1000 : 0"
> +       inkscape:vp_x="0 : 0.5 : 1"
> +       sodipodi:type="inkscape:persp3d" />
> +    <inkscape:perspective
> +       id="perspective1380"
> +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
> +       inkscape:vp_z="1 : 0.5 : 1"
> +       inkscape:vp_y="0 : 1000 : 0"
> +       inkscape:vp_x="0 : 0.5 : 1"
> +       sodipodi:type="inkscape:persp3d" />
> +    <inkscape:perspective
> +       id="perspective1380-3"
> +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
> +       inkscape:vp_z="1 : 0.5 : 1"
> +       inkscape:vp_y="0 : 1000 : 0"
> +       inkscape:vp_x="0 : 0.5 : 1"
> +       sodipodi:type="inkscape:persp3d" />
> +    <inkscape:perspective
> +       id="perspective1448"
> +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
> +       inkscape:vp_z="1 : 0.5 : 1"
> +       inkscape:vp_y="0 : 1000 : 0"
> +       inkscape:vp_x="0 : 0.5 : 1"
> +       sodipodi:type="inkscape:persp3d" />
> +    <inkscape:perspective
> +       id="perspective1448-2"
> +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
> +       inkscape:vp_z="1 : 0.5 : 1"
> +       inkscape:vp_y="0 : 1000 : 0"
> +       inkscape:vp_x="0 : 0.5 : 1"
> +       sodipodi:type="inkscape:persp3d" />
> +    <inkscape:perspective
> +       id="perspective1479"
> +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
> +       inkscape:vp_z="1 : 0.5 : 1"
> +       inkscape:vp_y="0 : 1000 : 0"
> +       inkscape:vp_x="0 : 0.5 : 1"
> +       sodipodi:type="inkscape:persp3d" />
> +    <inkscape:perspective
> +       id="perspective1501"
> +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
> +       inkscape:vp_z="1 : 0.5 : 1"
> +       inkscape:vp_y="0 : 1000 : 0"
> +       inkscape:vp_x="0 : 0.5 : 1"
> +       sodipodi:type="inkscape:persp3d" />
> +    <inkscape:perspective
> +       id="perspective1523"
> +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
> +       inkscape:vp_z="1 : 0.5 : 1"
> +       inkscape:vp_y="0 : 1000 : 0"
> +       inkscape:vp_x="0 : 0.5 : 1"
> +       sodipodi:type="inkscape:persp3d" />
> +    <inkscape:perspective
> +       id="perspective1545"
> +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
> +       inkscape:vp_z="1 : 0.5 : 1"
> +       inkscape:vp_y="0 : 1000 : 0"
> +       inkscape:vp_x="0 : 0.5 : 1"
> +       sodipodi:type="inkscape:persp3d" />
> +    <inkscape:perspective
> +       id="perspective1567"
> +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
> +       inkscape:vp_z="1 : 0.5 : 1"
> +       inkscape:vp_y="0 : 1000 : 0"
> +       inkscape:vp_x="0 : 0.5 : 1"
> +       sodipodi:type="inkscape:persp3d" />
> +    <inkscape:perspective
> +       id="perspective1589"
> +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
> +       inkscape:vp_z="1 : 0.5 : 1"
> +       inkscape:vp_y="0 : 1000 : 0"
> +       inkscape:vp_x="0 : 0.5 : 1"
> +       sodipodi:type="inkscape:persp3d" />
> +    <inkscape:perspective
> +       id="perspective1617"
> +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
> +       inkscape:vp_z="1 : 0.5 : 1"
> +       inkscape:vp_y="0 : 1000 : 0"
> +       inkscape:vp_x="0 : 0.5 : 1"
> +       sodipodi:type="inkscape:persp3d" />
> +    <inkscape:perspective
> +       id="perspective51"
> +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
> +       inkscape:vp_z="1 : 0.5 : 1"
> +       inkscape:vp_y="0 : 1000 : 0"
> +       inkscape:vp_x="0 : 0.5 : 1"
> +       sodipodi:type="inkscape:persp3d" />
> +    <inkscape:perspective
> +       id="perspective97"
> +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
> +       inkscape:vp_z="1 : 0.5 : 1"
> +       inkscape:vp_y="0 : 1000 : 0"
> +       inkscape:vp_x="0 : 0.5 : 1"
> +       sodipodi:type="inkscape:persp3d" />
> +    <inkscape:perspective
> +       id="perspective53"
> +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
> +       inkscape:vp_z="1 : 0.5 : 1"
> +       inkscape:vp_y="0 : 1000 : 0"
> +       inkscape:vp_x="0 : 0.5 : 1"
> +       sodipodi:type="inkscape:persp3d" />
> +  </defs>
> +  <sodipodi:namedview
> +     id="base"
> +     pagecolor="#ffffff"
> +     bordercolor="#666666"
> +     borderopacity="1.0"
> +     inkscape:pageopacity="0.0"
> +     inkscape:pageshadow="2"
> +     inkscape:zoom="7.9195959"
> +     inkscape:cx="39.65323"
> +     inkscape:cy="29.255214"
> +     inkscape:document-units="px"
> +     inkscape:current-layer="layer1"
> +     showgrid="false"
> +     inkscape:object-paths="true"
> +     inkscape:snap-nodes="true"
> +     inkscape:object-nodes="false"
> +     inkscape:snap-bbox="true"
> +     inkscape:snap-global="false"
> +     showguides="true"
> +     inkscape:guide-bbox="true"
> +     inkscape:window-width="1440"
> +     inkscape:window-height="829"
> +     inkscape:window-x="0"
> +     inkscape:window-y="25">
> +    <sodipodi:guide
> +       orientation="0,1"
> +       position="27.021581,50.002551"
> +       id="guide1605" />
> +    <sodipodi:guide
> +       orientation="0,1"
> +       position="27.021581,6.0609153"
> +       id="guide1607" />
> +  </sodipodi:namedview>
> +  <metadata
> +     id="metadata800">
> +    <rdf:RDF>
> +      <cc:Work
> +         rdf:about="">
> +        <dc:format>image/svg+xml</dc:format>
> +        <dc:type
> +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
> +        <dc:title></dc:title>
> +      </cc:Work>
> +    </rdf:RDF>
> +  </metadata>
> +  <g
> +     inkscape:label="Capa 1"
> +     inkscape:groupmode="layer"
> +     id="layer1">
> +    <path
> +       sodipodi:type="arc"
> +       style="fill:none;stroke:#ffffff"
> +       id="path12"
> +       sodipodi:cx="-32.640553"
> +       sodipodi:cy="30.440666"
> +       sodipodi:rx="8.901969"
> +       sodipodi:ry="11.301082"
> +       d="m -23.738584,30.440666 a 8.901969,11.301082 0 1 1 -17.803937,0
> 8.901969,11.301082 0 1 1 17.803937,0 z"
> +       transform="matrix(1.2765958,0,0,1.0558659,19.192898,-13.127946)" />
> +    <path
> +
> style="fill:none;stroke:#ffffff;stroke-width:1.44962609;stroke-opacity:1"
> +       d="m 30.145644,37.823484 c -0.583589,6.659344 -6.7511,11.52268
> -13.775517,10.862567 C 9.3457054,48.02594 4.1243814,42.092348
> 4.7079694,35.433004 5.2915594,28.773661 20.67887,20.597949
> 14.885997,24.011638 -12.777062,40.313232 24.43362,62.068174
> 30.145644,37.823484 z"
> +       id="path1405-0"
> +       sodipodi:nodetypes="csssc" />
> +    <rect
> +
> style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.50547338;stroke-opacity:1"
> +       id="rect1438-8"
> +       width="2.916333"
> +       height="21.188446"
> +       x="18.332197"
> +       y="13.76814"
> +       ry="1.3939767" />
> +    <rect
> +
> style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.41987956;stroke-opacity:1"
> +       id="rect1438-1-87"
> +       width="2.8716421"
> +       height="19.140917"
> +       x="-35.091366"
> +       y="-38.207035"
> +       ry="1.259271"
> +       transform="matrix(0,-1,-1,0,0,0)" />
> +    <rect
> +
> style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.21988189;stroke-opacity:1"
> +       id="rect1438-0-4"
> +       width="2.5733202"
> +       height="15.766372"
> +       x="-5.4068875"
> +       y="-65.997124"
> +       ry="1.0372615"
> +
> transform="matrix(-0.55477829,0.83199823,-0.68762037,-0.72607041,0,0)" />
> +    <rect
> +
> style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.98759735;stroke-opacity:1"
> +       id="rect1438-0-1-8"
> +       width="2.0588"
> +       height="12.916228"
> +       x="6.7647386"
> +       y="-38.278324"
> +       ry="0.84975183"
> +
> transform="matrix(-0.21998034,0.97550431,-0.88967727,-0.45658992,0,0)" />
> +    <rect
> +
> style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.69142139;stroke-opacity:1"
> +       id="rect1438-1-8-5"
> +       width="0.98179615"
> +       height="13.275604"
> +       x="-30.243309"
> +       y="-41.495876"
> +       ry="0.87339497"
> +       transform="matrix(0,-1,-1,0,0,0)" />
> +    <rect
> +
> style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.64177793;stroke-opacity:1"
> +       id="rect1438-1-8-0-0"
> +       width="0.97070193"
> +       height="11.568416"
> +       x="50.822704"
> +       y="-8.6089849"
> +       ry="0.76108003"
> +       transform="matrix(0.89791652,0.44016579,0.56230073,-0.82693282,0,0)"
> />
> +    <rect
> +
> style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.68172067;stroke-opacity:1"
> +       id="rect1438-0-1-7-7"
> +       width="1.6299056"
> +       height="7.7739253"
> +       x="72.759727"
> +       y="35.364716"
> +       ry="0.51144254"
> +       transform="matrix(0.9888174,0.14913131,-0.60877492,0.79334299,0,0)"
> />
> +    <path
> +       sodipodi:type="arc"
> +
> style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-opacity:1"
> +       id="path1603-2"
> +       sodipodi:cx="76.392784"
> +       sodipodi:cy="18.634508"
> +       sodipodi:rx="3.2829957"
> +       sodipodi:ry="3.0304577"
> +       d="m 79.67578,18.634508 a 3.2829957,3.0304577 0 1 1 -6.565992,0
> 3.2829957,3.0304577 0 1 1 6.565992,0 z"
> +       transform="matrix(1.5397454,0,0,1.4719643,-97.932275,-17.750188)" />
> +  </g>
> +</svg>
> diff -u -r -N
> sugar-0.88.1.original.con.parches/extensions/cpsection/accessibility/__init__.py
> sugar-0.88.1/extensions/cpsection/accessibility/__init__.py
> ---
> sugar-0.88.1.original.con.parches/extensions/cpsection/accessibility/__init__.py
> 1969-12-31 21:00:00.000000000 -0300
> +++ sugar-0.88.1/extensions/cpsection/accessibility/__init__.py
> 2010-06-02 15:00:27.328970000 -0300
> @@ -0,0 +1,25 @@
> +# Copyright (C) 2010 Plan Ceibal
> +#
> +# Author: Esteban Arias <earias at plan.ceibal.edu.uy>
> +# Contact information: comunidad at plan.ceibal.edu.uy
> +# Plan Ceibal http://www.ceibal.edu.uy
> +#
> +# This program is free software: you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation, either version 3 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
> +
> +from gettext import gettext as _
> +
> +CLASS = 'accessibility'
> +ICON = 'module-accessibility'
> +TITLE = _('Accessibility')
> +
> diff -u -r -N
> sugar-0.88.1.original.con.parches/extensions/cpsection/accessibility/Makefile.am
> sugar-0.88.1/extensions/cpsection/accessibility/Makefile.am
> ---
> sugar-0.88.1.original.con.parches/extensions/cpsection/accessibility/Makefile.am
> 1969-12-31 21:00:00.000000000 -0300
> +++ sugar-0.88.1/extensions/cpsection/accessibility/Makefile.am
> 2010-06-02 15:00:27.329800000 -0300
> @@ -0,0 +1,6 @@
> +sugardir = $(pkgdatadir)/extensions/cpsection/accessibility
> +
> +sugar_PYTHON =         \
> +    __init__.py    \
> +    model.py    \
> +    view.py
> diff -u -r -N
> sugar-0.88.1.original.con.parches/extensions/cpsection/accessibility/Makefile.in
> sugar-0.88.1/extensions/cpsection/accessibility/Makefile.in
> ---
> sugar-0.88.1.original.con.parches/extensions/cpsection/accessibility/Makefile.in
> 1969-12-31 21:00:00.000000000 -0300
> +++ sugar-0.88.1/extensions/cpsection/accessibility/Makefile.in
> 2010-06-02 15:00:27.306799000 -0300
> @@ -0,0 +1,423 @@
> +# Makefile.in generated by automake 1.11 from Makefile.am.
> +# @configure_input@
> +
> +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
> +# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
> +# Inc.
> +# This Makefile.in is free software; the Free Software Foundation
> +# gives unlimited permission to copy and/or distribute it,
> +# with or without modifications, as long as this notice is preserved.
> +
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
> +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
> +# PARTICULAR PURPOSE.
> +
> + at SET_MAKE@
> +VPATH = @srcdir@
> +pkgdatadir = $(datadir)/@PACKAGE@
> +pkgincludedir = $(includedir)/@PACKAGE@
> +pkglibdir = $(libdir)/@PACKAGE@
> +pkglibexecdir = $(libexecdir)/@PACKAGE@
> +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
> +install_sh_DATA = $(install_sh) -c -m 644
> +install_sh_PROGRAM = $(install_sh) -c
> +install_sh_SCRIPT = $(install_sh) -c
> +INSTALL_HEADER = $(INSTALL_DATA)
> +transform = $(program_transform_name)
> +NORMAL_INSTALL = :
> +PRE_INSTALL = :
> +POST_INSTALL = :
> +NORMAL_UNINSTALL = :
> +PRE_UNINSTALL = :
> +POST_UNINSTALL = :
> +subdir = extensions/cpsection/accessibility
> +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
> +    $(sugar_PYTHON)
> +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
> +am__aclocal_m4_deps = $(top_srcdir)/configure.ac
> +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
> +    $(ACLOCAL_M4)
> +mkinstalldirs = $(install_sh) -d
> +CONFIG_CLEAN_FILES =
> +CONFIG_CLEAN_VPATH_FILES =
> +SOURCES =
> +DIST_SOURCES =
> +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
> +am__vpath_adj = case $$p in \
> +    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
> +    *) f=$$p;; \
> +  esac;
> +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
> +am__install_max = 40
> +am__nobase_strip_setup = \
> +  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
> +am__nobase_strip = \
> +  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
> +am__nobase_list = $(am__nobase_strip_setup); \
> +  for p in $$list; do echo "$$p $$p"; done | \
> +  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' |
> \
> +  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
> +    if (++n[$$2] == $(am__install_max)) \
> +      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
> +    END { for (dir in files) print dir, files[dir] }'
> +am__base_list = \
> +  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
> +  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
> +am__installdirs = "$(DESTDIR)$(sugardir)"
> +py_compile = $(top_srcdir)/py-compile
> +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
> +ACLOCAL = @ACLOCAL@
> +ALL_LINGUAS = @ALL_LINGUAS@
> +AMTAR = @AMTAR@
> +AUTOCONF = @AUTOCONF@
> +AUTOHEADER = @AUTOHEADER@
> +AUTOMAKE = @AUTOMAKE@
> +AWK = @AWK@
> +CATALOGS = @CATALOGS@
> +CATOBJEXT = @CATOBJEXT@
> +CC = @CC@
> +CCDEPMODE = @CCDEPMODE@
> +CFLAGS = @CFLAGS@
> +CPP = @CPP@
> +CPPFLAGS = @CPPFLAGS@
> +CYGPATH_W = @CYGPATH_W@
> +DATADIRNAME = @DATADIRNAME@
> +DEFS = @DEFS@
> +DEPDIR = @DEPDIR@
> +ECHO_C = @ECHO_C@
> +ECHO_N = @ECHO_N@
> +ECHO_T = @ECHO_T@
> +EGREP = @EGREP@
> +EXEEXT = @EXEEXT@
> +GCONFTOOL = @GCONFTOOL@
> +GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
> +GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
> +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
> +GMOFILES = @GMOFILES@
> +GMSGFMT = @GMSGFMT@
> +GREP = @GREP@
> +INSTALL = @INSTALL@
> +INSTALL_DATA = @INSTALL_DATA@
> +INSTALL_PROGRAM = @INSTALL_PROGRAM@
> +INSTALL_SCRIPT = @INSTALL_SCRIPT@
> +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
> +INSTOBJEXT = @INSTOBJEXT@
> +INTLLIBS = @INTLLIBS@
> +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
> +INTLTOOL_MERGE = @INTLTOOL_MERGE@
> +INTLTOOL_PERL = @INTLTOOL_PERL@
> +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
> +LDFLAGS = @LDFLAGS@
> +LIBOBJS = @LIBOBJS@
> +LIBS = @LIBS@
> +LTLIBOBJS = @LTLIBOBJS@
> +MAINT = @MAINT@
> +MAKEINFO = @MAKEINFO@
> +MKDIR_P = @MKDIR_P@
> +MKINSTALLDIRS = @MKINSTALLDIRS@
> +MSGFMT = @MSGFMT@
> +MSGFMT_OPTS = @MSGFMT_OPTS@
> +MSGMERGE = @MSGMERGE@
> +OBJEXT = @OBJEXT@
> +PACKAGE = @PACKAGE@
> +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
> +PACKAGE_NAME = @PACKAGE_NAME@
> +PACKAGE_STRING = @PACKAGE_STRING@
> +PACKAGE_TARNAME = @PACKAGE_TARNAME@
> +PACKAGE_VERSION = @PACKAGE_VERSION@
> +PATH_SEPARATOR = @PATH_SEPARATOR@
> +PKG_CONFIG = @PKG_CONFIG@
> +POFILES = @POFILES@
> +POSUB = @POSUB@
> +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
> +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
> +PYTHON = @PYTHON@
> +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
> +PYTHON_PLATFORM = @PYTHON_PLATFORM@
> +PYTHON_PREFIX = @PYTHON_PREFIX@
> +PYTHON_VERSION = @PYTHON_VERSION@
> +SET_MAKE = @SET_MAKE@
> +SHELL = @SHELL@
> +SHELL_CFLAGS = @SHELL_CFLAGS@
> +SHELL_LIBS = @SHELL_LIBS@
> +STRIP = @STRIP@
> +SUCROSE_VERSION = @SUCROSE_VERSION@
> +USE_NLS = @USE_NLS@
> +VERSION = @VERSION@
> +XGETTEXT = @XGETTEXT@
> +abs_builddir = @abs_builddir@
> +abs_srcdir = @abs_srcdir@
> +abs_top_builddir = @abs_top_builddir@
> +abs_top_srcdir = @abs_top_srcdir@
> +ac_ct_CC = @ac_ct_CC@
> +am__include = @am__include@
> +am__leading_dot = @am__leading_dot@
> +am__quote = @am__quote@
> +am__tar = @am__tar@
> +am__untar = @am__untar@
> +bindir = @bindir@
> +build_alias = @build_alias@
> +builddir = @builddir@
> +datadir = @datadir@
> +datarootdir = @datarootdir@
> +docdir = @docdir@
> +dvidir = @dvidir@
> +exec_prefix = @exec_prefix@
> +host_alias = @host_alias@
> +htmldir = @htmldir@
> +includedir = @includedir@
> +infodir = @infodir@
> +install_sh = @install_sh@
> +libdir = @libdir@
> +libexecdir = @libexecdir@
> +localedir = @localedir@
> +localstatedir = @localstatedir@
> +mandir = @mandir@
> +mkdir_p = @mkdir_p@
> +oldincludedir = @oldincludedir@
> +pdfdir = @pdfdir@
> +pkgpyexecdir = @pkgpyexecdir@
> +pkgpythondir = @pkgpythondir@
> +prefix = @prefix@
> +program_transform_name = @program_transform_name@
> +psdir = @psdir@
> +pyexecdir = @pyexecdir@
> +pythondir = @pythondir@
> +sbindir = @sbindir@
> +sharedstatedir = @sharedstatedir@
> +srcdir = @srcdir@
> +sysconfdir = @sysconfdir@
> +target_alias = @target_alias@
> +top_build_prefix = @top_build_prefix@
> +top_builddir = @top_builddir@
> +top_srcdir = @top_srcdir@
> +sugardir = $(pkgdatadir)/extensions/cpsection/accessibility
> +sugar_PYTHON = \
> +    __init__.py    \
> +    model.py    \
> +    view.py
> +
> +all: all-am
> +
> +.SUFFIXES:
> +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am
> $(am__configure_deps)
> +    @for dep in $?; do \
> +      case '$(am__configure_deps)' in \
> +        *$$dep*) \
> +          ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
> +            && { if test -f $@; then exit 0; else break; fi; }; \
> +          exit 1;; \
> +      esac; \
> +    done; \
> +    echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign
> extensions/cpsection/accessibility/Makefile'; \
> +    $(am__cd) $(top_srcdir) && \
> +      $(AUTOMAKE) --foreign extensions/cpsection/accessibility/Makefile
> +.PRECIOUS: Makefile
> +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
> +    @case '$?' in \
> +      *config.status*) \
> +        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
> +      *) \
> +        echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
> $(am__depfiles_maybe)'; \
> +        cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
> $(am__depfiles_maybe);; \
> +    esac;
> +
> +$(top_builddir)/config.status: $(top_srcdir)/configure
> $(CONFIG_STATUS_DEPENDENCIES)
> +    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
> +
> +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
> +    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
> +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
> +    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
> +$(am__aclocal_m4_deps):
> +install-sugarPYTHON: $(sugar_PYTHON)
> +    @$(NORMAL_INSTALL)
> +    test -z "$(sugardir)" || $(MKDIR_P) "$(DESTDIR)$(sugardir)"
> +    @list='$(sugar_PYTHON)'; dlist=; list2=; test -n "$(sugardir)" ||
> list=; \
> +    for p in $$list; do \
> +      if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
> +      if test -f $$b$$p; then \
> +        $(am__strip_dir) \
> +        dlist="$$dlist $$f"; \
> +        list2="$$list2 $$b$$p"; \
> +      else :; fi; \
> +    done; \
> +    for file in $$list2; do echo $$file; done | $(am__base_list) | \
> +    while read files; do \
> +      echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(sugardir)'"; \
> +      $(INSTALL_DATA) $$files "$(DESTDIR)$(sugardir)" || exit $$?; \
> +    done || exit $$?; \
> +    if test -n "$$dlist"; then \
> +      if test -z "$(DESTDIR)"; then \
> +        PYTHON=$(PYTHON) $(py_compile) --basedir "$(sugardir)" $$dlist; \
> +      else \
> +        PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir
> "$(sugardir)" $$dlist; \
> +      fi; \
> +    else :; fi
> +
> +uninstall-sugarPYTHON:
> +    @$(NORMAL_UNINSTALL)
> +    @list='$(sugar_PYTHON)'; test -n "$(sugardir)" || list=; \
> +    files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
> +    test -n "$$files" || exit 0; \
> +    filesc=`echo "$$files" | sed 's|$$|c|'`; \
> +    fileso=`echo "$$files" | sed 's|$$|o|'`; \
> +    echo " ( cd '$(DESTDIR)$(sugardir)' && rm -f" $$files ")"; \
> +    cd "$(DESTDIR)$(sugardir)" && rm -f $$files || exit $$?; \
> +    echo " ( cd '$(DESTDIR)$(sugardir)' && rm -f" $$filesc ")"; \
> +    cd "$(DESTDIR)$(sugardir)" && rm -f $$filesc || exit $$?; \
> +    echo " ( cd '$(DESTDIR)$(sugardir)' && rm -f" $$fileso ")"; \
> +    cd "$(DESTDIR)$(sugardir)" && rm -f $$fileso
> +tags: TAGS
> +TAGS:
> +
> +ctags: CTAGS
> +CTAGS:
> +
> +
> +distdir: $(DISTFILES)
> +    @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
> +    topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
> +    list='$(DISTFILES)'; \
> +      dist_files=`for file in $$list; do echo $$file; done | \
> +      sed -e "s|^$$srcdirstrip/||;t" \
> +          -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
> +    case $$dist_files in \
> +      */*) $(MKDIR_P) `echo "$$dist_files" | \
> +               sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
> +               sort -u` ;; \
> +    esac; \
> +    for file in $$dist_files; do \
> +      if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi;
> \
> +      if test -d $$d/$$file; then \
> +        dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
> +        if test -d "$(distdir)/$$file"; then \
> +          find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx
> {} \;; \
> +        fi; \
> +        if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
> +          cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
> +          find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx
> {} \;; \
> +        fi; \
> +        cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
> +      else \
> +        test -f "$(distdir)/$$file" \
> +        || cp -p $$d/$$file "$(distdir)/$$file" \
> +        || exit 1; \
> +      fi; \
> +    done
> +check-am: all-am
> +check: check-am
> +all-am: Makefile
> +installdirs:
> +    for dir in "$(DESTDIR)$(sugardir)"; do \
> +      test -z "$$dir" || $(MKDIR_P) "$$dir"; \
> +    done
> +install: install-am
> +install-exec: install-exec-am
> +install-data: install-data-am
> +uninstall: uninstall-am
> +
> +install-am: all-am
> +    @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
> +
> +installcheck: installcheck-am
> +install-strip:
> +    $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
> +      install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
> +      `test -z '$(STRIP)' || \
> +        echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
> +mostlyclean-generic:
> +
> +clean-generic:
> +
> +distclean-generic:
> +    -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
> +    -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f
> $(CONFIG_CLEAN_VPATH_FILES)
> +
> +maintainer-clean-generic:
> +    @echo "This command is intended for maintainers to use"
> +    @echo "it deletes files that may require special tools to rebuild."
> +clean: clean-am
> +
> +clean-am: clean-generic mostlyclean-am
> +
> +distclean: distclean-am
> +    -rm -f Makefile
> +distclean-am: clean-am distclean-generic
> +
> +dvi: dvi-am
> +
> +dvi-am:
> +
> +html: html-am
> +
> +html-am:
> +
> +info: info-am
> +
> +info-am:
> +
> +install-data-am: install-sugarPYTHON
> +
> +install-dvi: install-dvi-am
> +
> +install-dvi-am:
> +
> +install-exec-am:
> +
> +install-html: install-html-am
> +
> +install-html-am:
> +
> +install-info: install-info-am
> +
> +install-info-am:
> +
> +install-man:
> +
> +install-pdf: install-pdf-am
> +
> +install-pdf-am:
> +
> +install-ps: install-ps-am
> +
> +install-ps-am:
> +
> +installcheck-am:
> +
> +maintainer-clean: maintainer-clean-am
> +    -rm -f Makefile
> +maintainer-clean-am: distclean-am maintainer-clean-generic
> +
> +mostlyclean: mostlyclean-am
> +
> +mostlyclean-am: mostlyclean-generic
> +
> +pdf: pdf-am
> +
> +pdf-am:
> +
> +ps: ps-am
> +
> +ps-am:
> +
> +uninstall-am: uninstall-sugarPYTHON
> +
> +.MAKE: install-am install-strip
> +
> +.PHONY: all all-am check check-am clean clean-generic distclean \
> +    distclean-generic distdir dvi dvi-am html html-am info info-am \
> +    install install-am install-data install-data-am install-dvi \
> +    install-dvi-am install-exec install-exec-am install-html \
> +    install-html-am install-info install-info-am install-man \
> +    install-pdf install-pdf-am install-ps install-ps-am \
> +    install-strip install-sugarPYTHON installcheck installcheck-am \
> +    installdirs maintainer-clean maintainer-clean-generic \
> +    mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
> +    uninstall-am uninstall-sugarPYTHON
> +
> +
> +# Tell versions [3.59,3.63) of GNU make to not export all variables.
> +# Otherwise a system limit (for SysV at least) may be exceeded.
> +.NOEXPORT:
> diff -u -r -N
> sugar-0.88.1.original.con.parches/extensions/cpsection/accessibility/model.py
> sugar-0.88.1/extensions/cpsection/accessibility/model.py
> ---
> sugar-0.88.1.original.con.parches/extensions/cpsection/accessibility/model.py
> 1969-12-31 21:00:00.000000000 -0300
> +++ sugar-0.88.1/extensions/cpsection/accessibility/model.py    2010-06-03
> 11:12:50.057315000 -0300
> @@ -0,0 +1,55 @@
> +# Copyright (C) 2010 Plan Ceibal
> +#
> +# Author: Esteban Arias <earias at plan.ceibal.edu.uy>
> +# Contact information: comunidad at plan.ceibal.edu.uy
> +# Plan Ceibal http://www.ceibal.edu.uy
> +#
> +# This program is free software: you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation, either version 3 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
> +
> +import subprocess
> +import gconf
> +
> +from gettext import gettext as _
> +from jarabe.model import accessibility
> +
> +keyboard = accessibility.Keyboard()
> +
> +KEYWORDS = ['mouse_keys', 'sticky_keys', 'bounce_keys']
> +
> +def get_mouse_keys():
> +    return keyboard.get_mouse_keys()
> +
> +def set_mouse_keys(activar):
> +    keyboard.set_mouse_keys(activar)
> +
> +def print_mouse_keys():
> +    print str(get_mouse_keys())
> +
> +def get_sticky_keys():
> +    return keyboard.get_sticky_keys()
> +
> +def set_sticky_keys(activar):
> +    keyboard.set_sticky_keys(activar)
> +
> +def print_sticky_keys():
> +    print str(get_sticky_keys())
> +
> +def get_bounce_keys():
> +    return keyboard.get_bounce_keys()
> +
> +def set_bounce_keys(activar):
> +    keyboard.set_bounce_keys(activar)
> +
> +def print_bounce_keys():
> +    print str(get_bounce_keys())
> diff -u -r -N
> sugar-0.88.1.original.con.parches/extensions/cpsection/accessibility/view.py
> sugar-0.88.1/extensions/cpsection/accessibility/view.py
> ---
> sugar-0.88.1.original.con.parches/extensions/cpsection/accessibility/view.py
> 1969-12-31 21:00:00.000000000 -0300
> +++ sugar-0.88.1/extensions/cpsection/accessibility/view.py    2010-06-02
> 15:00:27.316801000 -0300
> @@ -0,0 +1,114 @@
> +# Copyright (C) 2010 Plan Ceibal
> +#
> +# Author: Esteban Arias <earias at plan.ceibal.edu.uy>
> +# Contact information: comunidad at plan.ceibal.edu.uy
> +# Plan Ceibal http://www.ceibal.edu.uy
> +#
> +# This program is free software: you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation, either version 3 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
> +
> +
> +import gtk
> +from gettext import gettext as _
> +
> +from sugar.graphics import style
> +
> +from jarabe import config
> +from jarabe.controlpanel.sectionview import SectionView
> +from jarabe.controlpanel.inlinealert import InlineAlert
> +
> +class accessibility(SectionView):
> +    def __init__(self, model, alerts=None):
> +        SectionView.__init__(self)
> +
> +        self._model = model
> +        self.set_border_width(style.DEFAULT_SPACING * 2)
> +        self.set_spacing(style.DEFAULT_SPACING)
> +        group = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL)
> +
> +        separator_pm = gtk.HSeparator()
> +        self.pack_start(separator_pm, expand=False)
> +        separator_pm.show()
> +
> +        label_pm_teclado = gtk.Label(_('Keyboard'))
> +        label_pm_teclado.set_alignment(0, 0)
> +        self.pack_start(label_pm_teclado, expand=False)
> +        label_pm_teclado.show()
> +
> +        self.box_pm = gtk.VBox()
> +        self.box_pm.set_border_width(style.DEFAULT_SPACING * 2)
> +        self.box_pm.set_spacing(style.DEFAULT_SPACING)
> +
> +        self._view_mouse_keys()
> +        self._view_sticky_keys()
> +        self._view_bounce_keys()
> +
> +        self.pack_start(self.box_pm, expand=False)
> +        self.box_pm.show()
> +
> +    def _set_mouse_keys(self, widget):
> +        state = widget.get_active()
> +        self._model.set_mouse_keys(state)
> +
> +    def _set_sticky_keys(self, widget):
> +        state = widget.get_active()
> +        self._model.set_sticky_keys(state)
> +
> +    def _set_bounce_keys(self, widget):
> +        state = widget.get_active()
> +        self._model.set_bounce_keys(state)
> +
> +    def undo(self):
> +        self._model.set_mouse_keys(self.init_state_mouse_keys)
> +        self._model.set_sticky_keys(self.init_state_sticky_keys)
> +        self._model.set_bounce_keys(self.init_state_bounce_keys)
> +
> +    def _view_mouse_keys(self):
> +        self.btn_mouse_keys = gtk.CheckButton(_('Mouse Keys'))
> +        self._mouse_pm_change_handler =
> self.btn_mouse_keys.connect("toggled", self._set_mouse_keys)
> +        self.init_state_mouse_keys = self._model.get_mouse_keys()
> +
> self.btn_mouse_keys.set_active(self.init_state_mouse_keys)
> +        self.box_pm.pack_start(self.btn_mouse_keys, True, True, 2)
> +        self.btn_mouse_keys.show()
> +
> +        lbl_mouse = gtk.Label(_('Move the mouse pointer with keyboard
> number.'))
> +        lbl_mouse.set_alignment(0, 0)
> +        self.box_pm.pack_start(lbl_mouse, True, True, 2)
> +        lbl_mouse.show()
> +
> +    def _view_sticky_keys(self):
> +        self.btn_sticky_keys = gtk.CheckButton(_('Sticky Keys'))
> +        self._sticky_pm_change_handler =
> self.btn_sticky_keys.connect("toggled", self._set_sticky_keys)
> +        self.init_state_sticky_keys = self._model.get_sticky_keys()
> +        self.btn_sticky_keys.set_active(self.init_state_sticky_keys)
> +        self.box_pm.pack_start(self.btn_sticky_keys, True, True, 2)
> +        self.btn_sticky_keys.show()
> +
> +        lbl_sticky = gtk.Label(_('Instead of having to press two keys at
> once (such as CTRL + Q), you can press one key at a time.'))
> +        lbl_sticky.set_line_wrap(True)
> +        lbl_sticky.set_alignment(0, 0)
> +        self.box_pm.pack_start(lbl_sticky, True, True, 2)
> +        lbl_sticky.show()
> +
> +    def _view_bounce_keys(self):
> +        self.btn_bounce_keys = gtk.CheckButton(_('Bounce Keys'))
> +        self._bounce_pm_change_handler =
> self.btn_bounce_keys.connect("toggled", self._set_bounce_keys)
> +        self.init_state_bounce_keys = self._model.get_bounce_keys()
> +        self.btn_bounce_keys.set_active(self.init_state_bounce_keys)
> +        self.box_pm.pack_start(self.btn_bounce_keys, True, True, 2)
> +        self.btn_bounce_keys.show()
> +
> +        lbl_bounce = gtk.Label(_('Ignore rapid, repeated keypresses of the
> same key.'))
> +        lbl_bounce.set_alignment(0, 0)
> +        self.box_pm.pack_start(lbl_bounce, True, True, 2)
> +        lbl_bounce.show()
> diff -u -r -N
> sugar-0.88.1.original.con.parches/extensions/cpsection/Makefile.am
> sugar-0.88.1/extensions/cpsection/Makefile.am
> --- sugar-0.88.1.original.con.parches/extensions/cpsection/Makefile.am
> 2010-06-21 11:39:19.903055000 -0300
> +++ sugar-0.88.1/extensions/cpsection/Makefile.am    2010-06-21
> 13:17:52.794055895 -0300
> @@ -1,6 +1,7 @@
>  SUBDIRS = \
>      aboutme \
>      aboutcomputer \
> +    accessibility \
>      datetime \
>      frame \
>      journalmanagement \
> diff -u -r -N sugar-0.88.1.original.con.parches/po/es.po
> sugar-0.88.1/po/es.po
> --- sugar-0.88.1.original.con.parches/po/es.po    2010-06-21
> 11:38:52.234179000 -0300
> +++ sugar-0.88.1/po/es.po    2010-06-21 12:14:22.363180560 -0300
> @@ -1313,6 +1313,33 @@
>  "Para aplicar la restauración del Diario, se requiere reiniciar. \n\n"
>  "Se restaurará el respado realizado para este equipo "
>
> +#: ../extensions/cpsection/accessibility/__init__.py:24
> +msgid "Accessibility"
> +msgstr "Accesibilidad"
> +
> +#: ../extensions/cpsection/accessibility/view.py:77
> +msgid "Mouse Keys"
> +msgstr "Teclas del ratón"
> +
> +#: ../extensions/cpsection/accessibility/view.py:84
> +msgid "Move the mouse pointer with keyboard number."
> +msgstr "Mover el puntero del ratón con un teclado numérico o con las teclas
> de juego."
> +
> +#: ../extensions/cpsection/accessibility/view.py:90
> +msgid "Sticky Keys"
> +msgstr "Teclas pegajosas"
> +
> +#: ../extensions/cpsection/accessibility/view.py:97
> +msgid "Instead of having to press two keys at once (such as CTRL + Q), you
> can press one key at a time."
> +msgstr "En lugar de tener que pulsar dos teclas a la vez (por ejemplo, CTRL
> + Q), permite pulsar una tecla a la vez."
> +
> +#: ../extensions/cpsection/accessibility/view.py:104
> +msgid "Bounce Keys"
> +msgstr "Teclas de rebote"
> +
> +#: ../extensions/cpsection/accessibility/view.py:111
> +msgid "Ignore rapid, repeated keypresses of the same key."
> +msgstr "Ignora la presión rápida y repetida de una tecla."
>
>  #~ msgid "Cannot obtain data needed for registration."
>  #~ msgstr "No se puede obtener datos necesarios para el registro"
> diff -u -r -N
> sugar-0.88.1.original.con.parches/src/jarabe/model/accessibility.py
> sugar-0.88.1/src/jarabe/model/accessibility.py
> --- sugar-0.88.1.original.con.parches/src/jarabe/model/accessibility.py
> 1969-12-31 21:00:00.000000000 -0300
> +++ sugar-0.88.1/src/jarabe/model/accessibility.py    2010-06-03
> 11:12:48.819190000 -0300
> @@ -0,0 +1,76 @@
> +# Copyright (C) 2010 Plan Ceibal
> +#
> +# Author: Esteban Arias <earias at plan.ceibal.edu.uy>
> +# Contact information: comunidad at plan.ceibal.edu.uy
> +# Plan Ceibal http://www.ceibal.edu.uy
> +#
> +# This program is free software: you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation, either version 3 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
> +
> +import subprocess
> +import gconf
> +
> +from gettext import gettext as _
> +
> +class Keyboard:
> +
> +    def get_mouse_keys(self):
> +        client = gconf.client_get_default()
> +        return
> client.get_bool("/desktop/gnome/accessibility/keyboard/mousekeys_enable")
> +
> +    def set_mouse_keys(self, activar):
> +        client = gconf.client_get_default()
> +
> client.set_bool("/desktop/gnome/accessibility/keyboard/mousekeys_enable",
> activar)
> +        self.run_config_keyboard()
> +
> +    def get_sticky_keys(self):
> +        client = gconf.client_get_default()
> +        return
> client.get_bool("/desktop/gnome/accessibility/keyboard/stickykeys_enable")
> +
> +    def set_sticky_keys(self, activar):
> +        client = gconf.client_get_default()
> +
> client.set_bool("/desktop/gnome/accessibility/keyboard/stickykeys_enable",
> activar)
> +        self.run_config_keyboard()
> +
> +    def get_bounce_keys(self):
> +        client = gconf.client_get_default()
> +        return
> client.get_bool("/desktop/gnome/accessibility/keyboard/bouncekeys_enable")
> +
> +    def set_bounce_keys(self, activar):
> +        client = gconf.client_get_default()
> +
> client.set_bool("/desktop/gnome/accessibility/keyboard/bouncekeys_enable",
> activar)
> +        self.run_config_keyboard()
> +
> +    def run_config_keyboard(self):
> +        cmd = ['ax']
> +        if self.get_sticky_keys():
> +            cmd.append('+stickykeys')
> +        else:
> +            cmd.append('-stickykeys')
> +        if self.get_bounce_keys():
> +            cmd.append('+bouncekeys')
> +        else:
> +            cmd.append('-bouncekeys')
> +        if self.get_mouse_keys():
> +            cmd += ['+mousekeys', 'mousemaxspeed', '3000',
> 'mousetimetomax', '1000', '-timeout', '-repeatkeys']
> +        else:
> +            cmd += ['-mousekeys', 'mousemaxspeed', '3000',
> 'mousetimetomax', '1000', '+timeout', '+repeatkeys']
> +        subprocess.call(cmd)
> +
> +class AccessibilityManager:
> +    def setup_accessibility(self):
> +        client = gconf.client_get_default()
> +        is_accessibility =
> client.dir_exists("/desktop/gnome/accessibility")
> +        if is_accessibility:
> +            keyboard = Keyboard()
> +        keyboard.run_config_keyboard()
> diff -u -r -N sugar-0.88.1.original.con.parches/src/jarabe/model/Makefile.am
> sugar-0.88.1/src/jarabe/model/Makefile.am
> --- sugar-0.88.1.original.con.parches/src/jarabe/model/Makefile.am
> 2010-06-21 11:38:48.943180000 -0300
> +++ sugar-0.88.1/src/jarabe/model/Makefile.am    2010-06-21
> 11:45:58.165181239 -0300
> @@ -1,6 +1,7 @@
>  sugardir = $(pythondir)/jarabe/model
>  sugar_PYTHON =            \
>      __init__.py        \
> +    accessibility.py        \
>      buddy.py        \
>      bundleregistry.py    \
>      filetransfer.py        \
>
> ----------------------------------------------
> Dependency: http://koji.fedoraproject.org/koji/taskinfo?taskID=2268468
>
>
>
>
> _______________________________________________
> Sugar-devel mailing list
> Sugar-devel at lists.sugarlabs.org
> http://lists.sugarlabs.org/listinfo/sugar-devel
>
>



-- 
Walter Bender
Sugar Labs
http://www.sugarlabs.org


More information about the Sugar-devel mailing list