Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/rpms/sugar/0026-accessibility_0003_cp_accessibility_contrast.patch.patch
diff options
context:
space:
mode:
Diffstat (limited to 'rpms/sugar/0026-accessibility_0003_cp_accessibility_contrast.patch.patch')
-rw-r--r--rpms/sugar/0026-accessibility_0003_cp_accessibility_contrast.patch.patch429
1 files changed, 429 insertions, 0 deletions
diff --git a/rpms/sugar/0026-accessibility_0003_cp_accessibility_contrast.patch.patch b/rpms/sugar/0026-accessibility_0003_cp_accessibility_contrast.patch.patch
new file mode 100644
index 0000000..7659473
--- /dev/null
+++ b/rpms/sugar/0026-accessibility_0003_cp_accessibility_contrast.patch.patch
@@ -0,0 +1,429 @@
+From 5e5effd135a455a3d18c02dc8c24248497a7cf57 Mon Sep 17 00:00:00 2001
+From: Unknown <unknown@unknown.org>
+Date: Mon, 1 Nov 2010 18:20:13 +0100
+Subject: [PATCH sugar 26/74] accessibility_0003_cp_accessibility_contrast.patch
+
+[fix shell syntax]
+Signed-off-by: Sascha Silbe <sascha-pgp@silbe.org>
+---
+ bin/sugar.in | 13 +++-
+ data/Makefile.am | 14 +++-
+ data/gtkrc-contrast.em | 12 +++
+ extensions/cpsection/accessibility/model.py | 16 +++-
+ extensions/cpsection/accessibility/view.py | 116 ++++++++++++++++++++++-----
+ src/jarabe/controlpanel/gui.py | 3 +-
+ src/jarabe/desktop/activitieslist.py | 3 +-
+ src/jarabe/desktop/favoritesview.py | 5 +-
+ src/jarabe/model/accessibility.py | 20 ++++-
+ 9 files changed, 167 insertions(+), 35 deletions(-)
+ create mode 100644 data/gtkrc-contrast.em
+
+diff --git a/bin/sugar.in b/bin/sugar.in
+index d6295bf..ed24561 100644
+--- a/bin/sugar.in
++++ b/bin/sugar.in
+@@ -45,7 +45,18 @@ if test -z "$SUGAR_SCALING"; then
+ export SUGAR_SCALING=100
+ fi
+
+-export GTK2_RC_FILES="@prefix@/share/sugar/data/sugar-$SUGAR_SCALING.gtkrc"
++if gconftool-2 --dir-exists=/desktop/sugar/interface ; then
++ THEME="$(gconftool-2 --get /desktop/sugar/interface/gtk_theme)"
++ if [ "$THEME" = 'sugar-contrast' ]; then
++ GTK2_THEME="sugar-$SUGAR_SCALING-contrast"
++ else
++ GTK2_THEME="sugar-$SUGAR_SCALING"
++ fi
++else
++ GTK2_THEME="sugar-$SUGAR_SCALING"
++fi
++
++export GTK2_RC_FILES="@prefix@/share/sugar/data/$GTK2_THEME.gtkrc"
+
+ # Needed for executing wpa_passphrase
+ export PATH="$PATH":/sbin:/usr/sbin
+diff --git a/data/Makefile.am b/data/Makefile.am
+index 6a62d23..2a92ce1 100644
+--- a/data/Makefile.am
++++ b/data/Makefile.am
+@@ -8,6 +8,14 @@ sugar-100.gtkrc: gtkrc.em
+ $(srcdir)/em.py -D scaling=\'100\' $(srcdir)/gtkrc.em > \
+ $(top_builddir)/data/sugar-100.gtkrc
+
++sugar-100-contrast.gtkrc: gtkrc-contrast.em
++ $(srcdir)/em.py -D scaling=\'100\' $(srcdir)/gtkrc-contrast.em > \
++ $(top_builddir)/data/sugar-100-contrast.gtkrc
++
++sugar-72-contrast.gtkrc: gtkrc-contrast.em
++ $(srcdir)/em.py -D scaling=\'100\' $(srcdir)/gtkrc-contrast.em > \
++ $(top_builddir)/data/sugar-72-contrast.gtkrc
++
+ sugardir = $(pkgdatadir)/data
+ sugar_DATA = \
+ activities.defaults \
+@@ -18,7 +26,9 @@ sugar_DATA = \
+
+ GTKRC_FILES = \
+ sugar-72.gtkrc \
+- sugar-100.gtkrc
++ sugar-100.gtkrc \
++ sugar-100-contrast.gtkrc \
++ sugar-72-contrast.gtkrc
+
+ xsessionsdir = $(datadir)/xsessions
+ xsessions_DATA = sugar.desktop
+@@ -64,5 +74,5 @@ endif
+ icondir = $(datadir)/icons/hicolor/scalable/apps
+ icon_DATA = sugar-xo.svg
+
+-EXTRA_DIST = $(sugar_DATA) $(xsessions_DATA) $(nmservice_DATA) $(mime_xml_in_files) em.py gtkrc.em $(schema_in_files) $(icon_DATA)
++EXTRA_DIST = $(sugar_DATA) $(xsessions_DATA) $(nmservice_DATA) $(mime_xml_in_files) em.py gtkrc.em gtkrc-contrast.em $(schema_in_files) $(icon_DATA)
+ CLEANFILES = $(GTKRC_FILES) $(mime_xml_files) $(schema_DATA)
+diff --git a/data/gtkrc-contrast.em b/data/gtkrc-contrast.em
+new file mode 100644
+index 0000000..dceb103
+--- /dev/null
++++ b/data/gtkrc-contrast.em
+@@ -0,0 +1,12 @@
++@{
++if scaling == '72':
++ icon_sizes = 'gtk-large-toolbar=40,40'
++else:
++ icon_sizes = 'gtk-large-toolbar=55,55'
++}@
++gtk-theme-name = "sugar-@scaling-contrast"
++gtk-icon-theme-name = "sugar"
++gtk-cursor-theme-name = "sugar"
++gtk-toolbar-style = GTK_TOOLBAR_ICONS
++gtk-icon-sizes = "@icon_sizes"
++gtk-cursor-blink-timeout = 3
+diff --git a/extensions/cpsection/accessibility/model.py b/extensions/cpsection/accessibility/model.py
+index 5136460..8769d24 100644
+--- a/extensions/cpsection/accessibility/model.py
++++ b/extensions/cpsection/accessibility/model.py
+@@ -17,15 +17,12 @@
+ # 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()
++screen = accessibility.Screen()
+
+-KEYWORDS = ['mouse_keys', 'sticky_keys', 'bounce_keys']
++KEYWORDS = ['mouse_keys', 'sticky_keys', 'bounce_keys', 'contrast']
+
+ def get_mouse_keys():
+ return keyboard.get_mouse_keys()
+@@ -53,3 +50,12 @@ def set_bounce_keys(activar):
+
+ def print_bounce_keys():
+ print str(get_bounce_keys())
++
++def get_contrast():
++ return screen.get_contrast()
++
++def set_contrast(activar):
++ screen.set_contrast(activar)
++
++def print_contrast():
++ print str(get_contrast())
+\ No newline at end of file
+diff --git a/extensions/cpsection/accessibility/view.py b/extensions/cpsection/accessibility/view.py
+index 9f291ac..bae14dc 100644
+--- a/extensions/cpsection/accessibility/view.py
++++ b/extensions/cpsection/accessibility/view.py
+@@ -23,7 +23,6 @@
+
+ from sugar.graphics import style
+
+-from jarabe import config
+ from jarabe.controlpanel.sectionview import SectionView
+ from jarabe.controlpanel.inlinealert import InlineAlert
+
+@@ -32,29 +31,73 @@ def __init__(self, model, alerts=None):
+ SectionView.__init__(self)
+
+ self._model = model
++ self.restart_alerts = alerts
+ 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()
++ scrollwindow = gtk.ScrolledWindow()
++ scrollwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
++ self.pack_start(scrollwindow, expand=True)
++ scrollwindow.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._vbox_section = gtk.VBox()
++ scrollwindow.add_with_viewport(self._vbox_section)
++ self._vbox_section.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._zone_alert_box = gtk.HBox(spacing=style.DEFAULT_SPACING)
++ self.pack_start(self._zone_alert_box, False)
++
++ self._zone_alert = InlineAlert()
++ self._zone_alert_box.pack_start(self._zone_alert)
++ if 'zone' in self.restart_alerts:
++ self._zone_alert.props.msg = self.restart_msg
++ self._zone_alert.show()
++ self._zone_alert_box.show()
++
++ self.needs_restart = False
++
++ self._view_keyboard_options()
++ self._view_screen_options()
++
++
++ def _view_keyboard_options(self):
++ separator_pm_keyboard = gtk.HSeparator()
++ self._vbox_section.pack_start(separator_pm_keyboard, expand=False)
++ separator_pm_keyboard.show()
++
++ label_pm_keyboard = gtk.Label(_('Keyboard'))
++ label_pm_keyboard.set_alignment(0, 0)
++ self._vbox_section.pack_start(label_pm_keyboard, expand=False)
++ label_pm_keyboard.show()
++
++ self.box_pm_keyboard = gtk.VBox()
++ self.box_pm_keyboard.set_border_width(style.DEFAULT_SPACING * 2)
++ self.box_pm_keyboard.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()
++ self._vbox_section.pack_start(self.box_pm_keyboard, expand=False)
++ self.box_pm_keyboard.show()
++
++ def _view_screen_options(self):
++ separator_pm_screen = gtk.HSeparator()
++ self._vbox_section.pack_start(separator_pm_screen, expand=False)
++ separator_pm_screen.show()
++
++ label_pm_screen = gtk.Label(_('Screen'))
++ label_pm_screen.set_alignment(0, 0)
++ self._vbox_section.pack_start(label_pm_screen, expand=False)
++ label_pm_screen.show()
++
++ self.box_pm_screen = gtk.VBox()
++ self.box_pm_screen.set_border_width(style.DEFAULT_SPACING * 2)
++ self.box_pm_screen.set_spacing(style.DEFAULT_SPACING)
++
++ self._view_contrast()
++
++ self._vbox_section.pack_start(self.box_pm_screen, expand=False)
++ self.box_pm_screen.show()
+
+ def _set_mouse_keys(self, widget):
+ state = widget.get_active()
+@@ -68,22 +111,35 @@ def _set_bounce_keys(self, widget):
+ state = widget.get_active()
+ self._model.set_bounce_keys(state)
+
++ def _set_contrast(self, widget):
++ state = widget.get_active()
++ self._model.set_contrast(state)
++ self.restart_alerts.append('zone')
++ self.needs_restart = True
++ self._zone_alert.props.msg = self.restart_msg
++ self._zone_alert.show()
++
+ 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)
+
++ self._model.set_contrast(self.init_state_contrast)
++ self.btn_contrast.set_active(self.init_state_contrast)
++ self.needs_restart = False
++ self._zone_alert.hide()
++
+ 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.box_pm_keyboard.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)
++ self.box_pm_keyboard.pack_start(lbl_mouse, True, True, 2)
+ lbl_mouse.show()
+
+ def _view_sticky_keys(self):
+@@ -91,13 +147,13 @@ def _view_sticky_keys(self):
+ 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.box_pm_keyboard.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)
++ self.box_pm_keyboard.pack_start(lbl_sticky, True, True, 2)
+ lbl_sticky.show()
+
+ def _view_bounce_keys(self):
+@@ -105,10 +161,28 @@ def _view_bounce_keys(self):
+ 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.box_pm_keyboard.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)
++ self.box_pm_keyboard.pack_start(lbl_bounce, True, True, 2)
+ lbl_bounce.show()
++
++ def _view_contrast(self):
++ self.btn_contrast = gtk.CheckButton(_('Contrast'))
++ self._contrast_pm_change_handler = self.btn_contrast.connect("toggled", self._set_contrast)
++ self.init_state_contrast = self._model.get_contrast()
++ if self.init_state_contrast:
++ self.btn_contrast.handler_block(self._contrast_pm_change_handler)
++ self.btn_contrast.set_active(True)
++ self.btn_contrast.handler_unblock(self._contrast_pm_change_handler)
++ else:
++ self.btn_contrast.set_active(False)
++ self.box_pm_screen.pack_start(self.btn_contrast, True, True, 2)
++ self.btn_contrast.show()
++
++ lbl_contrast = gtk.Label(_('Enables the color contrast of the graphic interface.'))
++ lbl_contrast.set_alignment(0, 0)
++ self.box_pm_screen.pack_start(lbl_contrast, True, True, 2)
++ lbl_contrast.show()
+diff --git a/src/jarabe/controlpanel/gui.py b/src/jarabe/controlpanel/gui.py
+index 46810aa..61520e0 100644
+--- a/src/jarabe/controlpanel/gui.py
++++ b/src/jarabe/controlpanel/gui.py
+@@ -1,4 +1,5 @@
+ # Copyright (C) 2008 One Laptop Per Child
++# Copyright (C) 2010 Plan Ceibal <comunidad@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
+@@ -242,7 +243,7 @@ def show_section_view(self, option):
+ self._section_view.connect('request-close',
+ self.__close_request_cb)
+ self._main_view.modify_bg(gtk.STATE_NORMAL,
+- style.COLOR_WHITE.get_gdk_color())
++ style.COLOR_BG_CP.get_gdk_color())
+
+ def set_section_view_auto_close(self):
+ """Automatically close the control panel if there is "nothing to do"
+diff --git a/src/jarabe/desktop/activitieslist.py b/src/jarabe/desktop/activitieslist.py
+index 44b0725..e34abd6 100644
+--- a/src/jarabe/desktop/activitieslist.py
++++ b/src/jarabe/desktop/activitieslist.py
+@@ -1,5 +1,6 @@
+ # Copyright (C) 2008 One Laptop Per Child
+ # Copyright (C) 2009 Tomeu Vizoso
++# Copyright (C) 2010 Plan Ceibal <comunidad@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
+@@ -269,7 +270,7 @@ def __init__(self, tree_view):
+ self.props.width = style.GRID_CELL_SIZE
+ self.props.height = style.GRID_CELL_SIZE
+ self.props.size = style.STANDARD_ICON_SIZE
+- self.props.stroke_color = style.COLOR_BUTTON_GREY.get_svg()
++ self.props.stroke_color = style.COLOR_DESKTOP_ICON.get_svg()
+ self.props.fill_color = style.COLOR_TRANSPARENT.get_svg()
+ self.props.mode = gtk.CELL_RENDERER_MODE_ACTIVATABLE
+
+diff --git a/src/jarabe/desktop/favoritesview.py b/src/jarabe/desktop/favoritesview.py
+index 75795cd..c2ff370 100644
+--- a/src/jarabe/desktop/favoritesview.py
++++ b/src/jarabe/desktop/favoritesview.py
+@@ -1,5 +1,6 @@
+ # Copyright (C) 2006-2007 Red Hat, Inc.
+ # Copyright (C) 2008 One Laptop Per Child
++# Copyright (C) 2010 Plan Ceibal <comunidad@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
+@@ -427,7 +428,7 @@ def __get_last_activity_error_handler_cb(self, error):
+ def _update(self):
+ self.palette = None
+ if not self._resume_mode or not self._journal_entries:
+- xo_color = XoColor('%s,%s' % (style.COLOR_BUTTON_GREY.get_svg(),
++ xo_color = XoColor('%s,%s' % (style.COLOR_DESKTOP_ICON.get_svg(),
+ style.COLOR_TRANSPARENT.get_svg()))
+ else:
+ xo_color = misc.get_icon_color(self._journal_entries[0])
+@@ -536,7 +537,7 @@ def __init__(self, activity_info, journal_entries):
+ ActivityPalette.__init__(self, activity_info)
+
+ if not journal_entries:
+- xo_color = XoColor('%s,%s' % (style.COLOR_BUTTON_GREY.get_svg(),
++ xo_color = XoColor('%s,%s' % (style.COLOR_WHITE.get_svg(),
+ style.COLOR_TRANSPARENT.get_svg()))
+ else:
+ xo_color = misc.get_icon_color(journal_entries[0])
+diff --git a/src/jarabe/model/accessibility.py b/src/jarabe/model/accessibility.py
+index b851b3c..0324495 100644
+--- a/src/jarabe/model/accessibility.py
++++ b/src/jarabe/model/accessibility.py
+@@ -20,8 +20,6 @@
+ import subprocess
+ import gconf
+
+-from gettext import gettext as _
+-
+ class Keyboard:
+
+ def get_mouse_keys(self):
+@@ -67,6 +65,24 @@ def run_config_keyboard(self):
+ cmd += ['-mousekeys', 'mousemaxspeed', '3000', 'mousetimetomax', '1000', '+timeout', '+repeatkeys']
+ subprocess.call(cmd)
+
++class Screen:
++
++ CONTRAST_THEME="sugar-contrast"
++ DEFAULT_THEME="sugar"
++
++ def get_contrast(self):
++ client = gconf.client_get_default()
++ value = client.get_string("/desktop/sugar/interface/gtk_theme")
++ return value==self.CONTRAST_THEME
++
++ def set_contrast(self, activar):
++ client = gconf.client_get_default()
++ if (activar):
++ client.set_string("/desktop/sugar/interface/gtk_theme", self.CONTRAST_THEME)
++ else:
++ client.set_string("/desktop/sugar/interface/gtk_theme", self.DEFAULT_THEME)
++
++
+ class AccessibilityManager:
+ def setup_accessibility(self):
+ client = gconf.client_get_default()
+--
+1.7.6
+