diff -u -r -N sugar-0.88.1.original/bin/sugar.in sugar-0.88.1/bin/sugar.in --- sugar-0.88.1.original/bin/sugar.in 2010-07-16 13:18:04.013303378 -0300 +++ sugar-0.88.1/bin/sugar.in 2010-07-16 13:18:11.155046440 -0300 @@ -40,7 +40,21 @@ export SUGAR_SCALING=100 fi -export GTK2_RC_FILES="@prefix@/share/sugar/data/sugar-$SUGAR_SCALING.gtkrc" +# Set theme +gconftool-2 --dir-exists=/desktop/sugar/interface +EXIST_GCONF_SUGAR_CONFIG=$(echo $?) +if [[ $EXIST_GCONF_SUGAR_CONFIG == 0 ]]; 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 -u -r -N sugar-0.88.1.original/data/gtkrc-contrast.em sugar-0.88.1/data/gtkrc-contrast.em --- sugar-0.88.1.original/data/gtkrc-contrast.em 1969-12-31 21:00:00.000000000 -0300 +++ sugar-0.88.1/data/gtkrc-contrast.em 2010-07-20 16:41:40.709583181 -0300 @@ -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 -u -r -N sugar-0.88.1.original/data/Makefile.am sugar-0.88.1/data/Makefile.am --- sugar-0.88.1.original/data/Makefile.am 2010-07-16 13:18:02.492051920 -0300 +++ sugar-0.88.1/data/Makefile.am 2010-07-20 16:39:19.075582765 -0300 @@ -8,6 +8,14 @@ $(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 @@ 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 @@ 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 -u -r -N sugar-0.88.1.original/data/sugar-100-contrast.gtkrc sugar-0.88.1/data/sugar-100-contrast.gtkrc --- sugar-0.88.1.original/data/sugar-100-contrast.gtkrc 1969-12-31 21:00:00.000000000 -0300 +++ sugar-0.88.1/data/sugar-100-contrast.gtkrc 2010-07-16 13:18:08.653046556 -0300 @@ -0,0 +1,6 @@ +gtk-theme-name = "sugar-100-contrast" +gtk-icon-theme-name = "sugar" +gtk-cursor-theme-name = "sugar" +gtk-toolbar-style = GTK_TOOLBAR_ICONS +gtk-icon-sizes = "gtk-large-toolbar=55,55" +gtk-cursor-blink-timeout = 3 diff -u -r -N sugar-0.88.1.original/data/sugar-72-contrast.gtkrc sugar-0.88.1/data/sugar-72-contrast.gtkrc --- sugar-0.88.1.original/data/sugar-72-contrast.gtkrc 1969-12-31 21:00:00.000000000 -0300 +++ sugar-0.88.1/data/sugar-72-contrast.gtkrc 2010-07-20 16:45:49.308583315 -0300 @@ -0,0 +1,6 @@ +gtk-theme-name = "sugar-72-contrast" +gtk-icon-theme-name = "sugar" +gtk-cursor-theme-name = "sugar" +gtk-toolbar-style = GTK_TOOLBAR_ICONS +gtk-icon-sizes = "gtk-large-toolbar=40,40" +gtk-cursor-blink-timeout = 3 diff -u -r -N sugar-0.88.1.original/extensions/cpsection/accessibility/model.py sugar-0.88.1/extensions/cpsection/accessibility/model.py --- sugar-0.88.1.original/extensions/cpsection/accessibility/model.py 2010-07-16 13:18:04.307107086 -0300 +++ sugar-0.88.1/extensions/cpsection/accessibility/model.py 2010-07-16 13:18:11.600145984 -0300 @@ -17,15 +17,12 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -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 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 hay ningún carácter de nueva línea al final del fichero diff -u -r -N sugar-0.88.1.original/extensions/cpsection/accessibility/view.py sugar-0.88.1/extensions/cpsection/accessibility/view.py --- sugar-0.88.1.original/extensions/cpsection/accessibility/view.py 2010-07-16 13:18:04.312046331 -0300 +++ sugar-0.88.1/extensions/cpsection/accessibility/view.py 2010-07-20 16:44:14.613583366 -0300 @@ -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 @@ 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() - - 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) + scrollwindow = gtk.ScrolledWindow() + scrollwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) + self.pack_start(scrollwindow, expand=True) + scrollwindow.show() + + self._vbox_section = gtk.VBox() + scrollwindow.add_with_viewport(self._vbox_section) + self._vbox_section.show() + + 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 @@ 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 @@ 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 @@ 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 -u -r -N sugar-0.88.1.original/src/jarabe/controlpanel/gui.py sugar-0.88.1/src/jarabe/controlpanel/gui.py --- sugar-0.88.1.original/src/jarabe/controlpanel/gui.py 2010-07-16 13:18:03.606047116 -0300 +++ sugar-0.88.1/src/jarabe/controlpanel/gui.py 2010-07-16 13:18:10.422201719 -0300 @@ -1,4 +1,5 @@ # Copyright (C) 2008 One Laptop Per Child +# Copyright (C) 2010 Plan Ceibal # # 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 @@ -224,7 +225,7 @@ 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 -u -r -N sugar-0.88.1.original/src/jarabe/desktop/activitieslist.py sugar-0.88.1/src/jarabe/desktop/activitieslist.py --- sugar-0.88.1.original/src/jarabe/desktop/activitieslist.py 2010-07-16 13:18:03.809045695 -0300 +++ sugar-0.88.1/src/jarabe/desktop/activitieslist.py 2010-07-16 13:18:10.755297149 -0300 @@ -1,5 +1,6 @@ # Copyright (C) 2008 One Laptop Per Child # Copyright (C) 2009 Tomeu Vizoso +# Copyright (C) 2010 Plan Ceibal # # 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 @@ -271,7 +272,7 @@ 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 -u -r -N sugar-0.88.1.original/src/jarabe/desktop/favoritesview.py sugar-0.88.1/src/jarabe/desktop/favoritesview.py --- sugar-0.88.1.original/src/jarabe/desktop/favoritesview.py 2010-07-16 13:18:03.899048832 -0300 +++ sugar-0.88.1/src/jarabe/desktop/favoritesview.py 2010-07-16 13:18:10.933046702 -0300 @@ -1,5 +1,6 @@ # Copyright (C) 2006-2007 Red Hat, Inc. # Copyright (C) 2008 One Laptop Per Child +# Copyright (C) 2010 Plan Ceibal # # 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 @@ -411,7 +412,7 @@ 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]) @@ -528,7 +529,7 @@ 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 -u -r -N sugar-0.88.1.original/src/jarabe/model/accessibility.py sugar-0.88.1/src/jarabe/model/accessibility.py --- sugar-0.88.1.original/src/jarabe/model/accessibility.py 2010-07-16 13:18:03.679239241 -0300 +++ sugar-0.88.1/src/jarabe/model/accessibility.py 2010-07-16 13:18:10.506046670 -0300 @@ -20,8 +20,6 @@ import subprocess import gconf -from gettext import gettext as _ - class Keyboard: def get_mouse_keys(self): @@ -67,6 +65,24 @@ 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()