From 8361ca82ae89ce8b038a4faa8274b2b88cfe81a6 Mon Sep 17 00:00:00 2001 From: Simon Schampijer Date: Sat, 11 Oct 2008 16:19:59 +0000 Subject: Use gconf for the profile --- diff --git a/bin/sugar-session b/bin/sugar-session index ca1c02e..4f8dfa7 100644 --- a/bin/sugar-session +++ b/bin/sugar-session @@ -18,6 +18,7 @@ import sys import os import gettext +import gconf import gtk import gobject @@ -60,8 +61,11 @@ def main(): intro.check_profile() - if get_profile().timezone is not None: - os.environ['TZ'] = get_profile().timezone + client = gconf.client_get_default() + timezone = client.get_string('/desktop/sugar/date/timezone') + + if timezone is not '': + os.environ['TZ'] = timezone service.start_all() diff --git a/configure.ac b/configure.ac index ec6621c..181a085 100644 --- a/configure.ac +++ b/configure.ac @@ -12,7 +12,7 @@ AM_INIT_AUTOMAKE([1.9 foreign dist-bzip2 no-dist-gzip]) AM_PATH_PYTHON -PKG_CHECK_MODULES(SHELL, pygtk-2.0 gtk+-2.0) +PKG_CHECK_MODULES(SHELL, pygtk-2.0 gtk+-2.0 gconf-2.0) # Setup GETTEXT # @@ -29,6 +29,17 @@ AC_ARG_ENABLE(update-mimedb, enable_update_mimedb=yes) AM_CONDITIONAL(ENABLE_UPDATE_MIMEDB, test x$enable_update_mimedb = xyes) +# Verify that gconftool is installed +# +AC_PATH_PROG(GCONFTOOL, gconftool-2, no) + +if test "$GCONFTOOL" = no; then + AC_MSG_ERROR([gconftool-2 executable not found in your path - should be installed with GConf]) +fi + +AM_GCONF_SOURCE_2 + + AC_CONFIG_FILES([ bin/sugar src/jarabe/config.py @@ -49,6 +60,7 @@ extensions/cpsection/language/Makefile extensions/cpsection/network/Makefile extensions/cpsection/power/Makefile extensions/deviceicon/Makefile +schemas/Makefile src/Makefile src/jarabe/Makefile src/jarabe/controlpanel/Makefile diff --git a/extensions/cpsection/aboutme/__init__.py b/extensions/cpsection/aboutme/__init__.py index b683e28..98843e1 100644 --- a/extensions/cpsection/aboutme/__init__.py +++ b/extensions/cpsection/aboutme/__init__.py @@ -15,11 +15,14 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA from gettext import gettext as _ -from sugar import profile +import gconf + +from sugar.graphics.xocolor import XoColor CLASS = 'AboutMe' ICON = 'module-about_me' TITLE = _('About Me') -COLOR = profile.get_color() +client = gconf.client_get_default() +COLOR = XoColor(client.get_string('/desktop/sugar/user/color')) diff --git a/extensions/cpsection/aboutme/model.py b/extensions/cpsection/aboutme/model.py index 3818792..8500799 100644 --- a/extensions/cpsection/aboutme/model.py +++ b/extensions/cpsection/aboutme/model.py @@ -16,9 +16,7 @@ # from gettext import gettext as _ - -from sugar import profile -from sugar.graphics.xocolor import XoColor +import gconf _COLORS = {'red': {'dark':'#b20008', 'medium':'#e6000a', 'light':'#ffadce'}, 'orange': {'dark':'#9a5200', 'medium':'#c97e00', 'light':'#ffc169'}, @@ -31,7 +29,8 @@ _COLORS = {'red': {'dark':'#b20008', 'medium':'#e6000a', 'light':'#ffadce'}, _MODIFIERS = ('dark', 'medium', 'light') def get_nick(): - return profile.get_nick_name() + client = gconf.client_get_default() + return client.get_string("/desktop/sugar/user/nick") def print_nick(): print get_nick() @@ -42,18 +41,18 @@ def set_nick(nick): """ if not nick: raise ValueError(_("You must enter a name.")) - pro = profile.get_profile() if not isinstance(nick, unicode): nick = unicode(nick, 'utf-8') - pro.nick_name = nick - pro.save() + client = gconf.client_get_default() + client.set_string("/desktop/sugar/user/nick", nick) return 1 -def get_color(): - return profile.get_color() +def get_color(): + client = gconf.client_get_default() + return client.get_string("/desktop/sugar/user/color") def print_color(): - color_string = get_color().to_string() + color_string = get_color() tmp = color_string.split(',') stroke_tuple = None @@ -98,19 +97,19 @@ def set_color(stroke, fill, stroke_modifier='medium', fill_modifier='medium'): color = _COLORS[stroke][stroke_modifier] + ',' \ + _COLORS[fill][fill_modifier] - pro = profile.get_profile() - pro.color = XoColor(color) - pro.save() + + client = gconf.client_get_default() + client.set_string("/desktop/sugar/user/color", color) return 1 -def get_color_xo(): - return profile.get_color() +def get_color_xo(): + client = gconf.client_get_default() + return client.get_string("/desktop/sugar/user/color") def set_color_xo(color): """Set a color with an XoColor This method is used by the graphical user interface """ - pro = profile.get_profile() - pro.color = color - pro.save() + client = gconf.client_get_default() + client.set_string("/desktop/sugar/user/color", color) return 1 diff --git a/extensions/cpsection/aboutme/view.py b/extensions/cpsection/aboutme/view.py index fc4f351..cabd66a 100644 --- a/extensions/cpsection/aboutme/view.py +++ b/extensions/cpsection/aboutme/view.py @@ -21,16 +21,10 @@ from gettext import gettext as _ from sugar.graphics.icon import Icon from sugar.graphics import style from sugar.graphics.xocolor import XoColor -from sugar import profile from jarabe.controlpanel.sectionview import SectionView from jarabe.controlpanel.inlinealert import InlineAlert -CLASS = 'AboutMe' -ICON = 'module-about_me' -COLOR = profile.get_color() -TITLE = _('About Me') - class EventIcon(gtk.EventBox): __gtype_name__ = "SugarEventIcon" def __init__(self, **kwargs): @@ -49,7 +43,7 @@ class ColorPicker(EventIcon): __gsignals__ = { 'color-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([object])) + ([str])) } def __init__(self, xocolor=None): EventIcon.__init__(self) @@ -64,7 +58,7 @@ class ColorPicker(EventIcon): def _set_random_colors(self): xocolor = XoColor() self.icon.props.xo_color = xocolor - self.emit('color-changed', xocolor) + self.emit('color-changed', xocolor.to_string()) class AboutMe(SectionView): def __init__(self, model, alerts): @@ -160,7 +154,8 @@ class AboutMe(SectionView): def setup(self): self._nick_entry.set_text(self._model.get_nick()) - self._color_picker.icon.props.xo_color = self._model.get_color_xo() + color = XoColor(self._model.get_color_xo()) + self._color_picker.icon.props.xo_color = color self._color_valid = True self._nick_valid = True @@ -198,13 +193,12 @@ class AboutMe(SectionView): self._model.set_nick(widget.get_text()) except ValueError, detail: self._nick_alert.props.msg = detail - self._nick_valid = False + self._nick_valid = False else: self._nick_alert.props.msg = self.restart_msg - self._nick_valid = True + self._nick_valid = True self.needs_restart = True self.restart_alerts.append('nick') - self._validate() self._nick_alert.show() return False @@ -218,9 +212,4 @@ class AboutMe(SectionView): self._validate() self._color_alert.show() - - - - - - + return False diff --git a/extensions/cpsection/datetime/model.py b/extensions/cpsection/datetime/model.py index 4a4c560..76064e4 100644 --- a/extensions/cpsection/datetime/model.py +++ b/extensions/cpsection/datetime/model.py @@ -22,8 +22,7 @@ import os from gettext import gettext as _ - -from sugar import profile +import gconf _zone_tab = '/usr/share/zoneinfo/zone.tab' @@ -69,8 +68,8 @@ def read_all_timezones(fn=_zone_tab): return timezones def get_timezone(): - pro = profile.get_profile() - return pro.timezone + client = gconf.client_get_default() + return client.get_string('/desktop/sugar/date/timezone') def print_timezone(): print get_timezone() @@ -82,9 +81,8 @@ def set_timezone(timezone): timezones = read_all_timezones() if timezone in timezones: os.environ['TZ'] = timezone - pro = profile.get_profile() - pro.timezone = timezone - pro.save() + client = gconf.client_get_default() + client.set_string('/desktop/sugar/date/timezone', timezone) else: raise ValueError(_("Error timezone does not exist.")) return 1 diff --git a/extensions/cpsection/frame/model.py b/extensions/cpsection/frame/model.py index 0e19703..9eea9ad 100644 --- a/extensions/cpsection/frame/model.py +++ b/extensions/cpsection/frame/model.py @@ -16,12 +16,12 @@ # from gettext import gettext as _ - -from sugar import profile +import gconf def get_corner_delay(): - pro = profile.get_profile() - return pro.hot_corners_delay + client = gconf.client_get_default() + corner_delay = client.get_int('/desktop/sugar/frame/corner_delay') + return corner_delay def print_corner_delay(): print get_corner_delay() @@ -35,15 +35,15 @@ def set_corner_delay(delay): try: int(delay) except ValueError: - raise ValueError(_("Value must be an integer.")) - pro = profile.get_profile() - pro.hot_corners_delay = int(delay) - pro.save() - return 1 + raise ValueError(_("Value must be an integer.")) + client = gconf.client_get_default() + client.set_int('/desktop/sugar/frame/corner_delay', int(delay)) + return 0 def get_edge_delay(): - pro = profile.get_profile() - return pro.warm_edges_delay + client = gconf.client_get_default() + edge_delay = client.get_int('/desktop/sugar/frame/edge_delay') + return edge_delay def print_edge_delay(): print get_edge_delay() @@ -57,8 +57,7 @@ def set_edge_delay(delay): try: int(delay) except ValueError: - raise ValueError(_("Value must be an integer.")) - pro = profile.get_profile() - pro.warm_edges_delay = int(delay) - pro.save() - return 1 + raise ValueError(_("Value must be an integer.")) + client = gconf.client_get_default() + client.set_int('/desktop/sugar/frame/edge_delay', int(delay)) + return 0 diff --git a/extensions/cpsection/frame/view.py b/extensions/cpsection/frame/view.py index 7ab7bd2..cbe43bb 100644 --- a/extensions/cpsection/frame/view.py +++ b/extensions/cpsection/frame/view.py @@ -26,7 +26,7 @@ from jarabe.controlpanel.inlinealert import InlineAlert _never = _('never') _instantaneous = _('instantaneous') _seconds_label = _('%s seconds') -_MAX_DELAY = 1000.0 +_MAX_DELAY = 1000 class Frame(SectionView): def __init__(self, model, alerts): @@ -193,7 +193,7 @@ class Frame(SectionView): def __corner_delay_format_cb(self, scale, value): if value == _MAX_DELAY: return _never - elif value == 0.0: + elif value == 0: return _instantaneous else: return _seconds_label % (value / _MAX_DELAY) @@ -226,7 +226,7 @@ class Frame(SectionView): def __edge_delay_format_cb(self, scale, value): if value == _MAX_DELAY: return _never - elif value == 0.0: + elif value == 0: return _instantaneous else: return _seconds_label % (value / _MAX_DELAY) diff --git a/extensions/cpsection/network/model.py b/extensions/cpsection/network/model.py index 101297c..90a448f 100644 --- a/extensions/cpsection/network/model.py +++ b/extensions/cpsection/network/model.py @@ -17,8 +17,7 @@ import dbus from gettext import gettext as _ - -from sugar import profile +import gconf from jarabe.model.network import get_manager @@ -36,8 +35,8 @@ class ReadError(Exception): return repr(self.value) def get_jabber(): - pro = profile.get_profile() - return pro.jabber_server + client = gconf.client_get_default() + return client.get_string('/desktop/sugar/collaboration/jabber_server') def print_jabber(): print get_jabber() @@ -46,10 +45,9 @@ def set_jabber(server): """Set the jabber server server : e.g. 'olpc.collabora.co.uk' """ - pro = profile.get_profile() - pro.jabber_server = server - pro.jabber_registered = False - pro.save() + client = gconf.client_get_default() + client.set_string('/desktop/sugar/collaboration/jabber_server', server) + client.set_bool('/desktop/sugar/collaboration/jabber_registered', False) return 1 def get_radio(): @@ -87,9 +85,8 @@ def set_radio(state): def clear_registration(): """Clear the registration with the schoolserver """ - pro = profile.get_profile() - pro.backup1 = None - pro.save() + client = gconf.client_get_default() + client.set_string('/desktop/sugar/backup_url', '') return 1 def clear_networks(): diff --git a/extensions/cpsection/power/model.py b/extensions/cpsection/power/model.py index 47af483..c76035d 100644 --- a/extensions/cpsection/power/model.py +++ b/extensions/cpsection/power/model.py @@ -16,8 +16,8 @@ # from gettext import gettext as _ +import gconf -from sugar import profile import dbus OHM_SERVICE_NAME = 'org.freedesktop.ohm' @@ -31,9 +31,8 @@ class ReadError(Exception): return repr(self.value) def get_automatic_pm(): - pro = profile.get_profile() - ret = pro.automatic_pm - return ret + client = gconf.client_get_default() + return client.get_bool('/desktop/sugar/power/automatic') def print_automatic_pm(): print ('off', 'on')[get_automatic_pm()] @@ -54,15 +53,13 @@ def set_automatic_pm(enabled): else: raise ValueError(_("Error in automatic pm argument, use on/off.")) - pro = profile.get_profile() - pro.automatic_pm = enabled - pro.save() + client = gconf.client_get_default() + client.set_bool('/desktop/sugar/power/automatic', enabled) return 0 def get_extreme_pm(): - pro = profile.get_profile() - ret = pro.extreme_pm - return ret + client = gconf.client_get_default() + return client.get_bool('/desktop/sugar/power/extreme') def print_extreme_pm(): print ('off', 'on')[get_extreme_pm()] @@ -83,7 +80,6 @@ def set_extreme_pm(enabled): else: raise ValueError(_("Error in extreme pm argument, use on/off.")) - pro = profile.get_profile() - pro.extreme_pm = enabled - pro.save() + client = gconf.client_get_default() + client.set_bool('/desktop/sugar/power/extreme', enabled) return 0 diff --git a/extensions/deviceicon/battery.py b/extensions/deviceicon/battery.py index 37691b4..c9d621e 100644 --- a/extensions/deviceicon/battery.py +++ b/extensions/deviceicon/battery.py @@ -16,12 +16,12 @@ import logging from gettext import gettext as _ +import gconf import gobject import gtk import dbus -from sugar import profile from sugar.graphics import style from sugar.graphics.icon import get_icon_state from sugar.graphics.tray import TrayIcon @@ -45,8 +45,10 @@ class DeviceView(TrayIcon): FRAME_POSITION_RELATIVE = 1000 def __init__(self, udi): - TrayIcon.__init__(self, icon_name=_ICON_NAME, - xo_color=profile.get_color()) + client = gconf.client_get_default() + self._color = XoColor(client.get_string('/desktop/sugar/user/color')) + + TrayIcon.__init__(self, icon_name=_ICON_NAME, xo_color=self._color) self._model = DeviceModel(udi) self.palette = BatteryPalette(_('My Battery')) @@ -65,7 +67,7 @@ class DeviceView(TrayIcon): def _update_info(self): name = _ICON_NAME current_level = self._model.props.level - xo_color = profile.get_color() + xo_color = self._color badge_name = None if self._model.props.charging: diff --git a/extensions/deviceicon/speaker.py b/extensions/deviceicon/speaker.py index b62ae65..5497873 100644 --- a/extensions/deviceicon/speaker.py +++ b/extensions/deviceicon/speaker.py @@ -15,11 +15,11 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA from gettext import gettext as _ +import gconf import gobject import gtk -from sugar import profile from sugar.graphics import style from sugar.graphics.icon import get_icon_state, Icon from sugar.graphics.menuitem import MenuItem @@ -37,9 +37,10 @@ class DeviceView(TrayIcon): FRAME_POSITION_RELATIVE = 800 def __init__(self): - TrayIcon.__init__(self, - icon_name=_ICON_NAME, - xo_color=profile.get_color()) + client = gconf.client_get_default() + self._color = XoColor(client.get_string('/desktop/sugar/user/color')) + + TrayIcon.__init__(self, icon_name=_ICON_NAME, xo_color=self._color) self._model = DeviceModel() self.palette = SpeakerPalette(_('My Speakers'), model=self._model) @@ -59,7 +60,7 @@ class DeviceView(TrayIcon): def _update_info(self): name = _ICON_NAME current_level = self._model.props.level - xo_color = profile.get_color() + xo_color = self._color if self._model.props.muted: name += '-muted' diff --git a/extensions/deviceicon/wireless.py b/extensions/deviceicon/wireless.py index 1544526..dcaffd3 100644 --- a/extensions/deviceicon/wireless.py +++ b/extensions/deviceicon/wireless.py @@ -17,15 +17,16 @@ import logging from gettext import gettext as _ +import gconf import gobject import gtk from sugar.graphics.icon import get_icon_state +from sugar.graphics.xocolor import XoColor from sugar.graphics.tray import TrayIcon from sugar.graphics import style from sugar.graphics.palette import Palette -from sugar import profile from jarabe.model import network from jarabe.frame.frameinvoker import FrameWidgetInvoker @@ -169,6 +170,10 @@ class MeshDeviceView(TrayIcon): self.model.connect('notify::state', self._state_changed_cb) self.model.connect('notify::activation-stage', self._state_changed_cb) + + client = gconf.client_get_default() + self._color = XoColor(client.get_string('/desktop/sugar/user/color')) + self._update_state() def _state_changed_cb(self, model, pspec): @@ -183,7 +188,7 @@ class MeshDeviceView(TrayIcon): self.icon.props.fill_color = style.COLOR_INACTIVE_FILL.get_svg() self.icon.props.stroke_color = style.COLOR_INACTIVE_STROKE.get_svg() elif state == STATE_ACTIVATED: - self.icon.props.xo_color = profile.get_color() + self.icon.props.xo_color = self._color elif state == STATE_INACTIVE: self.icon.props.fill_color = style.COLOR_INACTIVE_FILL.get_svg() self.icon.props.stroke_color = style.COLOR_INACTIVE_STROKE.get_svg() diff --git a/schemas/Makefile.am b/schemas/Makefile.am new file mode 100644 index 0000000..0614031 --- /dev/null +++ b/schemas/Makefile.am @@ -0,0 +1,20 @@ +@INTLTOOL_SCHEMAS_RULE@ + +schemadir = $(GCONF_SCHEMA_FILE_DIR) +schema_in_files = sugar.schemas.in +schema_DATA = $(schema_in_files:.schemas.in=.schemas) + +install-data-local: $(schema_DATA) +if GCONF_SCHEMAS_INSTALL + if test -z "$(DESTDIR)" ; then \ + for p in $^ ; do \ + GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $$p 2>&1 > /dev/null; \ + done \ + fi +endif + +EXTRA_DIST = \ + $(schema_in_files) + +DISTCLEANFILES = \ + $(schema_in_files:.schemas.in=.schemas) diff --git a/schemas/sugar.schemas.in b/schemas/sugar.schemas.in new file mode 100644 index 0000000..5cdff4d --- /dev/null +++ b/schemas/sugar.schemas.in @@ -0,0 +1,159 @@ + + + + + /schemas/desktop/sugar/user/nick + /desktop/sugar/user/nick + sugar + string + + + User Name + User name that is used throughout the desktop. + + + + /schemas/desktop/sugar/user/color + /desktop/sugar/user/color + sugar + string + + + User Color + Color for the XO icon that is used throughout the + desktop. The string is composed of the stroke color and fill + color, format is that of rbg colors. Example: #AC32FF,#9A5200 + + + + + + /schemas/desktop/sugar/sound/volume + /desktop/sugar/sound/volume + sugar + int + 80 + + Volume Level + Volume level for the sound device. + + + + /schemas/desktop/sugar/sound/mute + /desktop/sugar/sound/mute + sugar + bool + false + + Sound Muted + Setting for muting the sound device. + + + + + /schemas/desktop/sugar/backup_url + /desktop/sugar/backup_url + sugar + string + + + Backup URL + Url where the backup is saved to. + + + + + /schemas/desktop/sugar/date/timezone + /desktop/sugar/date/timezone + sugar + string + "UTC" + + Timezone + Timezone setting for the system. + + + + + /schemas/desktop/sugar/desktop/favorites_layout + /desktop/sugar/desktop/favorites_layout + sugar + string + "ring-layout" + + Favorites Layout + Layout of the favorites view. + + + + + /schemas/desktop/sugar/frame/edge_delay + /desktop/sugar/frame/edge_delay + sugar + int + 1000 + + Edge Delay + Delay for the activation of the frame using the edges. + + + + /schemas/desktop/sugar/frame/corner_delay + /desktop/sugar/frame/corner_delay + sugar + int + 0 + + Corner Delay + Delay for the activation of the frame using the corners. + + + + + /schemas/desktop/sugar/collaboration/jabber_server + /desktop/sugar/collaboration/jabber_server + sugar + string + "" + + Jabber Server + Url of the jabber server to use. + + + + /schemas/desktop/sugar/collaboration/jabber_registered + /desktop/sugar/collaboration/jabber_registered + sugar + bool + false + + Jabber Registered + Flag to keep track of the registration status with the jabber server. + + + + + /schemas/desktop/sugar/power/automatic + /desktop/sugar/power/automatic + sugar + bool + false + + Power Automatic + Power Automatic. + + + + /schemas/desktop/sugar/power/extreme + /desktop/sugar/power/extreme + sugar + bool + false + + Power Extreme + Power Extreme. + + + + + diff --git a/src/jarabe/desktop/activitieslist.py b/src/jarabe/desktop/activitieslist.py index a7997cc..db88c47 100644 --- a/src/jarabe/desktop/activitieslist.py +++ b/src/jarabe/desktop/activitieslist.py @@ -17,11 +17,12 @@ import gobject import gtk import hippo +import gconf -from sugar import profile from sugar import util from sugar.graphics import style from sugar.graphics.icon import CanvasIcon +from sugar.graphics.xocolor import XoColor from sugar.activity import activityfactory from jarabe.model import bundleregistry @@ -135,6 +136,9 @@ class ActivityIcon(CanvasIcon): self.connect('hovering-changed', self.__hovering_changed_event_cb) self.connect('button-release-event', self.__button_release_event_cb) + client = gconf.client_get_default() + self._xocolor = XoColor(client.get_string("/desktop/sugar/user/color")) + def create_palette(self): palette = ActivityPalette(self._activity_info) palette.connect('erase-activated', self.__erase_activated_cb) @@ -144,7 +148,7 @@ class ActivityIcon(CanvasIcon): self.emit('erase-activated', self._activity_info.get_bundle_id()) def _color(self): - self.props.xo_color = profile.get_color() + self.props.xo_color = self._xocolor def _uncolor(self): self.props.stroke_color = style.COLOR_BUTTON_GREY.get_svg() @@ -160,7 +164,6 @@ class ActivityIcon(CanvasIcon): self.palette.popdown(immediate=True) self._uncolor() - class ActivityEntry(hippo.CanvasBox, hippo.CanvasItem): __gtype_name__ = 'SugarActivityEntry' @@ -278,7 +281,9 @@ class FavoriteIcon(CanvasIcon): self._favorite = favorite if favorite: - self.props.xo_color = profile.get_color() + client = gconf.client_get_default() + color = XoColor(client.get_string('/desktop/sugar/user/color')) + self.props.xo_color = color else: self.props.stroke_color = style.COLOR_BUTTON_GREY.get_svg() self.props.fill_color = style.COLOR_WHITE.get_svg() diff --git a/src/jarabe/desktop/favoritesview.py b/src/jarabe/desktop/favoritesview.py index 87e0f92..4ffa7fe 100644 --- a/src/jarabe/desktop/favoritesview.py +++ b/src/jarabe/desktop/favoritesview.py @@ -17,6 +17,7 @@ import logging from gettext import gettext as _ +import gconf import gobject import gtk @@ -27,7 +28,7 @@ from sugar.graphics.palette import Palette from sugar.graphics.icon import Icon, CanvasIcon from sugar.graphics.menuitem import MenuItem from sugar.graphics.alert import Alert -from sugar.profile import get_profile +from sugar.graphics.xocolor import XoColor from sugar.activity import activityfactory from jarabe.view.palettes import JournalPalette @@ -331,6 +332,9 @@ class ActivityIcon(CanvasIcon): self.connect('hovering-changed', self.__hovering_changed_event_cb) self.connect('button-release-event', self.__button_release_event_cb) + client = gconf.client_get_default() + self._xocolor = XoColor(client.get_string("/desktop/sugar/user/color")) + def create_palette(self): palette = ActivityPalette(self._activity_info) palette.connect('erase-activated', self.__erase_activated_cb) @@ -340,7 +344,7 @@ class ActivityIcon(CanvasIcon): self.emit('erase-activated', self._activity_info.get_bundle_id()) def _color(self): - self.props.xo_color = get_profile().color + self.props.xo_color = self._xocolor def _uncolor(self): self.props.stroke_color = style.COLOR_BUTTON_GREY.get_svg() @@ -413,16 +417,17 @@ class _MyIcon(MyIcon): MyIcon.__init__(self, scale) self._power_manager = None - self._profile = get_profile() self.register_menu = None def enable_palette(self): + client = gconf.client_get_default() + nick = client.get_string("/desktop/sugar/user/nick") + color = XoColor(client.get_string("/desktop/sugar/user/color")) + palette_icon = Icon(icon_name='computer-xo', icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR, - xo_color=self._profile.color) - palette = Palette(self._profile.nick_name, - #secondary_text='Sample secondary label', - icon=palette_icon) + xo_color=color) + palette = Palette(nick, icon=palette_icon) item = MenuItem(_('Settings'), 'preferences-system') item.connect('activate', self.__controlpanel_activate_cb) @@ -439,11 +444,12 @@ class _MyIcon(MyIcon): palette.menu.append(item) item.show() - if not self._profile.is_registered(): + backup_url = client.get_string('/desktop/sugar/backup_url') + if not backup_url: self.register_menu = MenuItem(_('Register'), 'media-record') palette.menu.append(self.register_menu) self.register_menu.show() - + self.set_palette(palette) def _reboot_activate_cb(self, menuitem): diff --git a/src/jarabe/desktop/groupbox.py b/src/jarabe/desktop/groupbox.py index 75173ff..5f4bdf2 100644 --- a/src/jarabe/desktop/groupbox.py +++ b/src/jarabe/desktop/groupbox.py @@ -17,11 +17,12 @@ import gobject import gtk import hippo +import gconf -from sugar import profile from sugar.graphics import style from sugar.graphics.icon import CanvasIcon, Icon from sugar.graphics.palette import Palette +from sugar.graphics.xocolor import XoColor from jarabe.model import friends from jarabe.desktop.friendview import FriendView @@ -41,14 +42,19 @@ class GroupBox(hippo.Canvas): self._layout = SpreadLayout() self._box.set_layout(self._layout) + client = gconf.client_get_default() + color = XoColor(client.get_string("/desktop/sugar/user/color")) + self._owner_icon = CanvasIcon(icon_name='computer-xo', cache=True, - xo_color=profile.get_color()) + xo_color=color) self._owner_icon.props.size = style.LARGE_ICON_SIZE palette_icon = Icon(icon_name='computer-xo', - xo_color=profile.get_color()) + xo_color=color) palette_icon.props.icon_size = gtk.ICON_SIZE_LARGE_TOOLBAR - palette = Palette(None, primary_text=profile.get_nick_name(), - icon=palette_icon) + + nick = client.get_string("/desktop/sugar/user/nick") + palette = Palette(None, primary_text=nick, icon=palette_icon) + self._owner_icon.set_palette(palette) self._layout.add(self._owner_icon) @@ -86,4 +92,3 @@ class GroupBox(hippo.Canvas): self._layout.move(self._owner_icon, x, y) hippo.Canvas.do_size_allocate(self, allocation) - diff --git a/src/jarabe/desktop/homebox.py b/src/jarabe/desktop/homebox.py index 337555d..999fede 100644 --- a/src/jarabe/desktop/homebox.py +++ b/src/jarabe/desktop/homebox.py @@ -17,6 +17,7 @@ from gettext import gettext as _ import logging import os +import gconf import gobject import gtk @@ -26,7 +27,6 @@ from sugar.graphics import iconentry from sugar.graphics.radiotoolbutton import RadioToolButton from sugar.graphics.alert import Alert from sugar.graphics.icon import Icon -from sugar import profile from jarabe.model import bundleregistry from jarabe.desktop import favoritesview @@ -34,6 +34,7 @@ from jarabe.desktop.activitieslist import ActivitiesList _FAVORITES_VIEW = 0 _LIST_VIEW = 1 +_FAVORITES_KEY = "/desktop/sugar/desktop/favorites_layout" _AUTOSEARCH_TIMEOUT = 1000 @@ -65,8 +66,9 @@ class HomeBox(gtk.VBox): self.pack_start(self._toolbar, expand=False) self._toolbar.show() - profile_layout_constant = profile.get_profile().favorites_layout - layout = _convert_layout_constant(profile_layout_constant) + client = gconf.client_get_default() + layout_constant = client.get_string(_FAVORITES_KEY) + layout = _convert_layout_constant(layout_constant) self._set_view(_FAVORITES_VIEW, layout) def __erase_activated_cb(self, view, bundle_id): @@ -160,11 +162,12 @@ class HomeBox(gtk.VBox): def __toolbar_view_changed_cb(self, toolbar, view, layout): self._set_view(view, layout) if layout is not None: - current_profile = profile.get_profile() + client = gconf.client_get_default() + layout_profile = client.get_string(_FAVORITES_KEY) + layout = _convert_layout_constant(layout_profile) profile_key = favoritesview.LAYOUT_MAP[layout].profile_key - if profile_key != current_profile.favorites_layout: - current_profile.favorites_layout = profile_key - current_profile.save() + if profile_key != layout: + client.set_string(_FAVORITES_KEY, profile_key) else: logging.warning('Incorrect layout requested: %r' % layout) @@ -325,8 +328,9 @@ class FavoritesButton(RadioToolButton): self.props.accelerator = _('1') self.props.group = None - profile_layout_constant = profile.get_profile().favorites_layout - self._layout = _convert_layout_constant(profile_layout_constant) + client = gconf.client_get_default() + layout_constant = client.get_string(_FAVORITES_KEY) + self._layout = _convert_layout_constant(layout_constant) self._update_icon() # someday, this will be a gtk.Table() diff --git a/src/jarabe/desktop/meshbox.py b/src/jarabe/desktop/meshbox.py index 8f0587b..3170d35 100644 --- a/src/jarabe/desktop/meshbox.py +++ b/src/jarabe/desktop/meshbox.py @@ -16,6 +16,7 @@ from gettext import gettext as _ import logging +import gconf import hippo import gobject @@ -30,7 +31,6 @@ from sugar.graphics import iconentry from sugar.graphics.menuitem import MenuItem from sugar.activity.activityhandle import ActivityHandle from sugar.activity import activityfactory -from sugar import profile from jarabe.model import accesspoint from jarabe.model import neighborhood @@ -258,7 +258,9 @@ class MeshDeviceView(CanvasPulsingIcon): self.props.pulsing = False self.props.base_color = XoColor('#D5D5D5,#D5D5D5') else: - self.props.base_color = profile.get_color() + client = gconf.client_get_default() + color = XoColor(client.get_string('/desktop/sugar/user/color')) + self.props.base_color = color def set_filter(self, query): self._greyed_out = (query != '') diff --git a/src/jarabe/desktop/myicon.py b/src/jarabe/desktop/myicon.py index af0f6ce..4a4ad95 100644 --- a/src/jarabe/desktop/myicon.py +++ b/src/jarabe/desktop/myicon.py @@ -14,11 +14,15 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +import gconf + from sugar.graphics.icon import CanvasIcon -from sugar import profile +from sugar.graphics.xocolor import XoColor class MyIcon(CanvasIcon): def __init__(self, size): + client = gconf.client_get_default() + color = XoColor(client.get_string("/desktop/sugar/user/color")) CanvasIcon.__init__(self, size=size, icon_name='computer-xo', - xo_color=profile.get_color()) + xo_color=color) diff --git a/src/jarabe/desktop/schoolserver.py b/src/jarabe/desktop/schoolserver.py index a9ed60b..db58778 100644 --- a/src/jarabe/desktop/schoolserver.py +++ b/src/jarabe/desktop/schoolserver.py @@ -4,7 +4,7 @@ from xmlrpclib import ServerProxy, Error import socket import os -from sugar.profile import get_profile +from sugar import profile REGISTER_URL = 'http://schoolserver:8080/' @@ -21,11 +21,12 @@ def register_laptop(url=REGISTER_URL): sn = sn or 'SHF00000000' uuid = uuid or '00000000-0000-0000-0000-000000000000' - profile = get_profile() + client = gconf.client_get_default() + nick = client.get_string('/desktop/sugar/user/nick') server = ServerProxy(url) try: - data = server.register(sn, profile.nick_name, uuid, profile.pubkey) + data = server.register(sn, nick, uuid, profile.pubkey) except (Error, socket.error), e: logging.error('Registration: cannot connect to server: %s' % e) raise RegisterError(_('Cannot connect to the server.')) @@ -35,9 +36,9 @@ def register_laptop(url=REGISTER_URL): data['error']) raise RegisterError(_('The server could not complete the request.')) - profile.jabber_server = data['jabberserver'] - profile.backup1 = data['backupurl'] - profile.save() + client.set_string('/desktop/sugar/collaboration/jabber_server', + data['jabberserver']) + client.set_string('/desktop/sugar/backup_url', data['backupurl']) return True diff --git a/src/jarabe/frame/activitiestray.py b/src/jarabe/frame/activitiestray.py index 157d73e..dc37bf3 100644 --- a/src/jarabe/frame/activitiestray.py +++ b/src/jarabe/frame/activitiestray.py @@ -17,6 +17,8 @@ import logging from gettext import gettext as _ +import gconf + import gtk from sugar.graphics import style @@ -29,7 +31,6 @@ from sugar.graphics.palette import Palette, WidgetInvoker from sugar.graphics.menuitem import MenuItem from sugar.activity.activityhandle import ActivityHandle from sugar.activity import activityfactory -from sugar import profile from jarabe.model import shell from jarabe.model import neighborhood @@ -164,7 +165,10 @@ class PrivateInviteButton(BaseInviteButton): self._private_channel = invite.get_private_channel() self._bundle_id = invite.get_bundle_id() - self._icon.props.xo_color = profile.get_color() + client = gconf.client_get_default() + color = XoColor(client.get_string('/desktop/sugar/user/color')) + + self._icon.props.xo_color = color registry = bundleregistry.get_registry() self._bundle = registry.get_bundle(self._bundle_id) @@ -180,7 +184,7 @@ class PrivateInviteButton(BaseInviteButton): palette.set_group_id('frame') self.set_palette(palette) - self._notif_icon.props.xo_color = profile.get_color() + self._notif_icon.props.xo_color = color if self._bundle: self._notif_icon.props.icon_filename = self._bundle.get_icon() diff --git a/src/jarabe/frame/clipboardicon.py b/src/jarabe/frame/clipboardicon.py index 6c744ca..f67ec1f 100644 --- a/src/jarabe/frame/clipboardicon.py +++ b/src/jarabe/frame/clipboardicon.py @@ -16,12 +16,13 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import logging +import gconf + import gtk from sugar.graphics.radiotoolbutton import RadioToolButton from sugar.graphics.icon import Icon from sugar.graphics.xocolor import XoColor -from sugar import profile from jarabe.frame import clipboard from jarabe.frame.clipboardmenu import ClipboardMenu @@ -42,7 +43,9 @@ class ClipboardIcon(RadioToolButton): self._current_percent = None self._icon = Icon() - self._icon.props.xo_color = profile.get_color() + client = gconf.client_get_default() + color = XoColor(client.get_string('/desktop/sugar/user/color')) + self._icon.props.xo_color = color self.set_icon_widget(self._icon) self._icon.show() @@ -139,4 +142,3 @@ class ClipboardIcon(RadioToolButton): for format_type in self._cb_object.get_formats().keys(): targets.append((format_type, 0, 0)) return targets - diff --git a/src/jarabe/frame/clipboardmenu.py b/src/jarabe/frame/clipboardmenu.py index a6b256a..266dc81 100644 --- a/src/jarabe/frame/clipboardmenu.py +++ b/src/jarabe/frame/clipboardmenu.py @@ -19,15 +19,16 @@ import tempfile import urlparse import os import logging +import gconf import gtk from sugar.graphics.palette import Palette from sugar.graphics.menuitem import MenuItem from sugar.graphics.icon import Icon +from sugar.graphics.xocolor import XoColor from sugar.datastore import datastore from sugar import mime -from sugar import profile from jarabe.frame import clipboard from jarabe.journal import misc @@ -59,8 +60,10 @@ class ClipboardMenu(Palette): self._open_item.show() self._journal_item = MenuItem(_('Keep')) - icon = Icon(icon_name='document-save', icon_size=gtk.ICON_SIZE_MENU, - xo_color=profile.get_color()) + client = gconf.client_get_default() + color = XoColor(client.get_string('/desktop/sugar/user/color')) + icon = Icon(icon_name='document-save', icon_size=gtk.ICON_SIZE_MENU, + xo_color=color) self._journal_item.set_image(icon) self._journal_item.connect('activate', self._journal_item_activate_cb) @@ -229,10 +232,11 @@ class ClipboardMenu(Palette): jobject.metadata['keep'] = '0' jobject.metadata['buddies'] = '' jobject.metadata['preview'] = '' - jobject.metadata['icon-color'] = profile.get_color().to_string() + client = gconf.client_get_default() + color = client.get_string('/desktop/sugar/user/color') + jobject.metadata['icon-color'] = color jobject.metadata['mime_type'] = mime_type jobject.file_path = file_path datastore.write(jobject, transfer_ownership=transfer_ownership) return jobject - diff --git a/src/jarabe/frame/eventarea.py b/src/jarabe/frame/eventarea.py index 0eba150..5b31b24 100644 --- a/src/jarabe/frame/eventarea.py +++ b/src/jarabe/frame/eventarea.py @@ -17,8 +17,7 @@ import gtk import gobject import wnck - -from sugar import profile +import gconf _MAX_DELAY = 1000 @@ -36,43 +35,47 @@ class EventArea(gobject.GObject): self._windows = [] self._hover = False self._sids = {} - pro = profile.get_profile() - self._hot_delay = int(pro.hot_corners_delay) - self._warm_delay = int(pro.warm_edges_delay) + client = gconf.client_get_default() + self._edge_delay = client.get_int('/desktop/sugar/frame/edge_delay') + self._corner_delay = client.get_int('/desktop/sugar/frame/corner_delay') right = gtk.gdk.screen_width() - 1 bottom = gtk.gdk.screen_height() -1 width = gtk.gdk.screen_width() - 2 height = gtk.gdk.screen_height() - 2 - if self._warm_delay != _MAX_DELAY: - invisible = self._create_invisible(1, 0, width, 1, self._warm_delay) + if self._edge_delay != _MAX_DELAY: + invisible = self._create_invisible(1, 0, width, 1, + self._edge_delay) self._windows.append(invisible) invisible = self._create_invisible(1, bottom, width, 1, - self._warm_delay) + self._edge_delay) self._windows.append(invisible) invisible = self._create_invisible(0, 1, 1, height, - self._warm_delay) + self._edge_delay) self._windows.append(invisible) invisible = self._create_invisible(right, 1, 1, height, - self._warm_delay) + self._edge_delay) self._windows.append(invisible) - if self._hot_delay != _MAX_DELAY: - invisible = self._create_invisible(0, 0, 1, 1, self._hot_delay) + if self._corner_delay != _MAX_DELAY: + invisible = self._create_invisible(0, 0, 1, 1, + self._corner_delay) self._windows.append(invisible) - invisible = self._create_invisible(right, 0, 1, 1, self._hot_delay) + invisible = self._create_invisible(right, 0, 1, 1, + self._corner_delay) self._windows.append(invisible) - invisible = self._create_invisible(0, bottom, 1, 1, self._hot_delay) + invisible = self._create_invisible(0, bottom, 1, 1, + self._corner_delay) self._windows.append(invisible) invisible = self._create_invisible(right, bottom, 1, 1, - self._hot_delay) + self._corner_delay) self._windows.append(invisible) screen = wnck.screen_get_default() diff --git a/src/jarabe/intro/__init__.py b/src/jarabe/intro/__init__.py index 6f875d5..204f686 100644 --- a/src/jarabe/intro/__init__.py +++ b/src/jarabe/intro/__init__.py @@ -2,17 +2,20 @@ import os import gtk +from sugar import env from sugar.profile import get_profile from jarabe.intro.window import IntroWindow from jarabe.intro.window import create_profile def check_profile(): - if not get_profile().is_valid(): - if 'SUGAR_PROFILE_NAME' in os.environ: - create_profile(os.environ['SUGAR_PROFILE_NAME']) - else: - win = IntroWindow() - win.show_all() - gtk.main() + profile = get_profile() + path = os.path.join(env.get_profile_path(), 'config') + if os.path.exists(path): + profile.convert_profile() + + if not profile.is_valid(): + win = IntroWindow() + win.show_all() + gtk.main() diff --git a/src/jarabe/intro/window.py b/src/jarabe/intro/window.py index be1a963..3975900 100644 --- a/src/jarabe/intro/window.py +++ b/src/jarabe/intro/window.py @@ -17,6 +17,7 @@ import os import logging from gettext import gettext as _ +import gconf import gtk import gobject @@ -27,7 +28,6 @@ from sugar.graphics import style from sugar.graphics.icon import Icon from sugar.graphics.entry import CanvasEntry from sugar.graphics.xocolor import XoColor -from sugar.profile import get_profile from jarabe.intro import colorpicker @@ -44,10 +44,9 @@ def create_profile(name, color=None, pixbuf=None): icon_path = os.path.join(env.get_profile_path(), "buddy-icon.jpg") pixbuf.save(icon_path, "jpeg", {"quality":"85"}) - profile = get_profile() - profile.nick_name = name - profile.color = color - profile.save() + client = gconf.client_get_default() + client.set_string("/desktop/sugar/user/nick", name) + client.set_string("/desktop/sugar/user/color", color.to_string()) # Generate keypair import commands diff --git a/src/jarabe/journal/journaltoolbox.py b/src/jarabe/journal/journaltoolbox.py index 383cec0..7e2709f 100644 --- a/src/jarabe/journal/journaltoolbox.py +++ b/src/jarabe/journal/journaltoolbox.py @@ -18,6 +18,7 @@ from gettext import gettext as _ import logging from datetime import datetime, timedelta import os +import gconf import gobject import gtk @@ -28,9 +29,9 @@ from sugar.graphics.toolbutton import ToolButton from sugar.graphics.combobox import ComboBox from sugar.graphics.menuitem import MenuItem from sugar.graphics.icon import Icon +from sugar.graphics.xocolor import XoColor from sugar.graphics import iconentry from sugar.graphics import style -from sugar import profile from sugar import mime from sugar.datastore import datastore @@ -318,7 +319,9 @@ class EntryToolbar(gtk.Toolbar): self._copy = ToolButton() - icon = Icon(icon_name='edit-copy', xo_color=profile.get_color()) + client = gconf.client_get_default() + color = XoColor(client.get_string('/desktop/sugar/user/color')) + icon = Icon(icon_name='edit-copy', xo_color=color) self._copy.set_icon_widget(icon) icon.show() @@ -417,4 +420,3 @@ class EntryToolbar(gtk.Toolbar): activity_info.get_bundle_id()) palette.menu.append(menu_item) menu_item.show() - diff --git a/src/jarabe/journal/keepicon.py b/src/jarabe/journal/keepicon.py index 8a86c83..c6dc470 100644 --- a/src/jarabe/journal/keepicon.py +++ b/src/jarabe/journal/keepicon.py @@ -16,10 +16,11 @@ import gobject import hippo +import gconf from sugar.graphics.icon import CanvasIcon from sugar.graphics import style -from sugar import profile +from sugar.graphics.xocolor import XoColor class KeepIcon(CanvasIcon): def __init__(self, keep): @@ -27,7 +28,7 @@ class KeepIcon(CanvasIcon): box_width=style.GRID_CELL_SIZE * 3 / 5, size=style.SMALL_ICON_SIZE) self.connect('motion-notify-event', self.__motion_notify_event_cb) - + self._keep = None self.set_keep(keep) @@ -37,7 +38,9 @@ class KeepIcon(CanvasIcon): self._keep = keep if keep: - self.props.xo_color = profile.get_color() + client = gconf.client_get_default() + color = XoColor(client.get_string('/desktop/sugar/user/color')) + self.props.xo_color = color else: self.props.stroke_color = style.COLOR_BUTTON_GREY.get_svg() self.props.fill_color = style.COLOR_TRANSPARENT.get_svg() @@ -54,4 +57,3 @@ class KeepIcon(CanvasIcon): icon.props.fill_color = style.COLOR_BUTTON_GREY.get_svg() elif event.detail == hippo.MOTION_DETAIL_LEAVE: icon.props.fill_color = style.COLOR_TRANSPARENT.get_svg() - diff --git a/src/jarabe/journal/modalalert.py b/src/jarabe/journal/modalalert.py index 6c7bce9..a5a86ab 100644 --- a/src/jarabe/journal/modalalert.py +++ b/src/jarabe/journal/modalalert.py @@ -16,10 +16,11 @@ import gtk from gettext import gettext as _ +import gconf from sugar.graphics.icon import Icon from sugar.graphics import style -from sugar import profile +from sugar.graphics.xocolor import XoColor class ModalAlert(gtk.Window): @@ -47,9 +48,12 @@ class ModalAlert(gtk.Window): self._main_view.add(self._vbox) self._vbox.show() + client = gconf.client_get_default() + color = XoColor(client.get_string('/desktop/sugar/user/color')) + icon = Icon(icon_name='activity-journal', pixel_size=style.XLARGE_ICON_SIZE, - xo_color=profile.get_color()) + xo_color=color) self._vbox.pack_start(icon, False) icon.show() diff --git a/src/jarabe/journal/palettes.py b/src/jarabe/journal/palettes.py index 501e4fb..9ca1190 100644 --- a/src/jarabe/journal/palettes.py +++ b/src/jarabe/journal/palettes.py @@ -16,10 +16,10 @@ from gettext import gettext as _ import logging +import gconf import gtk -from sugar import profile from sugar.graphics import style from sugar.graphics.palette import Palette from sugar.graphics.menuitem import MenuItem @@ -65,8 +65,10 @@ class ObjectPalette(Palette): # TODO: Add "Start with" menu item + client = gconf.client_get_default() + color = XoColor(client.get_string('/desktop/sugar/user/color')) menu_item = MenuItem(_('Copy')) - icon = Icon(icon_name='edit-copy', xo_color=profile.get_color(), + icon = Icon(icon_name='edit-copy', xo_color=color, icon_size=gtk.ICON_SIZE_MENU) menu_item.set_image(icon) menu_item.connect('activate', self.__copy_activate_cb) @@ -102,7 +104,6 @@ class ObjectPalette(Palette): registry.uninstall(bundle) datastore.delete(self._jobject.object_id) - class BuddyPalette(Palette): def __init__(self, buddy): self._buddy = buddy diff --git a/src/jarabe/journal/volumesmanager.py b/src/jarabe/journal/volumesmanager.py index b2ef08d..b7e1e37 100644 --- a/src/jarabe/journal/volumesmanager.py +++ b/src/jarabe/journal/volumesmanager.py @@ -16,11 +16,12 @@ import logging from gettext import gettext as _ +import gconf import gobject import dbus -from sugar import profile +from sugar.graphics.xocolor import XoColor from sugar.datastore import datastore HAL_SERVICE_NAME = 'org.freedesktop.Hal' @@ -52,10 +53,13 @@ class VolumesManager(gobject.GObject): self._volumes = [] + client = gconf.client_get_default() + color = XoColor(client.get_string('/desktop/sugar/user/color')) + # Internal flash is not in HAL internal_fash_id = datastore.mounts()[0]['id'] self._volumes.append(Volume(internal_fash_id, _('Journal'), - 'activity-journal', profile.get_color(), + 'activity-journal', color, None, False)) bus = dbus.SystemBus() @@ -227,10 +231,12 @@ class VolumesManager(gobject.GObject): volume_name = device.GetProperty('volume.label') if not volume_name: volume_name = device.GetProperty('volume.uuid') + client = gconf.client_get_default() + color = XoColor(client.get_string('/desktop/sugar/user/color')) volume = Volume(mount_id, volume_name, self._get_icon_for_volume(udi), - profile.get_color(), + color, udi, True) self._volumes.append(volume) diff --git a/src/jarabe/journal/volumestoolbar.py b/src/jarabe/journal/volumestoolbar.py index f4f21db..4e5f5db 100644 --- a/src/jarabe/journal/volumestoolbar.py +++ b/src/jarabe/journal/volumestoolbar.py @@ -23,6 +23,7 @@ import gtk from sugar.datastore import datastore from sugar.graphics.radiotoolbutton import RadioToolButton from sugar.graphics.palette import Palette +from sugar.graphics.xocolor import XoColor from jarabe.journal import volumesmanager @@ -134,4 +135,3 @@ class VolumeButton(RadioToolButton): info, timestamp): jobject = datastore.get(selection_data.data) datastore.copy(jobject, self.volume.id) - diff --git a/src/jarabe/model/owner.py b/src/jarabe/model/owner.py index 73beba8..bdfd9a8 100644 --- a/src/jarabe/model/owner.py +++ b/src/jarabe/model/owner.py @@ -18,11 +18,11 @@ import gobject import os import cjson +import gconf from telepathy.interfaces import CHANNEL_TYPE_TEXT from sugar import env -from sugar import profile from sugar.presence import presenceservice from sugar import util from jarabe.model.invites import Invites @@ -46,7 +46,8 @@ class Owner(gobject.GObject): def __init__(self): gobject.GObject.__init__(self) - self._nick = profile.get_nick_name() + client = gconf.client_get_default() + self._nick = client.get_string("/desktop/sugar/user/nick") self._icon = None self._icon_hash = "" diff --git a/src/jarabe/model/shell.py b/src/jarabe/model/shell.py index 334cff8..5c7c8e0 100644 --- a/src/jarabe/model/shell.py +++ b/src/jarabe/model/shell.py @@ -19,6 +19,7 @@ import logging import time import os +import gconf import wnck import gobject import gtk @@ -27,7 +28,6 @@ import dbus from sugar import wm from sugar.graphics.xocolor import XoColor from sugar.presence import presenceservice -from sugar import profile from jarabe.model.bundleregistry import get_registry from jarabe import config @@ -135,8 +135,7 @@ class Activity(gobject.GObject): Uses activity_id to index into the PresenceService's set of activity colours, if the PresenceService does not have an entry (implying that this is not a Sugar-shared application) - uses the local user's profile.get_color() to determine the - colour for the icon. + uses the local user's profile colour for the icon. """ pservice = presenceservice.get_instance() @@ -151,7 +150,8 @@ class Activity(gobject.GObject): if activity != None: return XoColor(activity.props.color) else: - return profile.get_color() + client = gconf.client_get_default() + return XoColor(client.get_string("/desktop/sugar/user/color")) def get_activity_id(self): """Retrieve the "activity_id" passed in to our constructor diff --git a/src/jarabe/model/sound.py b/src/jarabe/model/sound.py index c6cb75f..65090a4 100644 --- a/src/jarabe/model/sound.py +++ b/src/jarabe/model/sound.py @@ -14,7 +14,8 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -from sugar.profile import get_profile +import gconf + from sugar import env from sugar import _sugarext from sugar import dispatch @@ -46,13 +47,12 @@ def set_muted(new_state): def save(): if env.is_emulator() is False: - profile = get_profile() - profile.sound_volume = get_volume() - profile.save() + client = gconf.client_get_default() + client.set_int('/desktop/sugar/sound/volume', get_volume()) def restore(): if env.is_emulator() is False: - profile = get_profile() - set_volume(profile.sound_volume) + client = gconf.client_get_default() + set_volume(client.get_int('/desktop/sugar/sound/volume')) _volume = _sugarext.VolumeAlsa() diff --git a/src/jarabe/view/keyhandler.py b/src/jarabe/view/keyhandler.py index 1c33f44..1e9a890 100644 --- a/src/jarabe/view/keyhandler.py +++ b/src/jarabe/view/keyhandler.py @@ -22,13 +22,13 @@ import errno import tempfile import time from gettext import gettext as _ +import gconf import dbus import gtk import wnck from sugar._sugarext import KeyGrabber -from sugar import profile from sugar.datastore import datastore from jarabe.model import screen @@ -211,13 +211,17 @@ class KeyHandler(object): screenshot.get_from_drawable(window, window.get_colormap(), x_orig, y_orig, 0, 0, width, height) screenshot.save(file_path, "png") + + client = gconf.client_get_default() + color = client.get_string('/desktop/sugar/user/color') + jobject = datastore.create() try: jobject.metadata['title'] = _('Screenshot') jobject.metadata['keep'] = '0' jobject.metadata['buddies'] = '' - jobject.metadata['preview'] = '' - jobject.metadata['icon-color'] = profile.get_color().to_string() + jobject.metadata['preview'] = '' + jobject.metadata['icon-color'] = color jobject.metadata['mime_type'] = 'image/png' jobject.file_path = file_path datastore.write(jobject, transfer_ownership=True) diff --git a/src/jarabe/view/palettes.py b/src/jarabe/view/palettes.py index 72326c4..fc383c8 100644 --- a/src/jarabe/view/palettes.py +++ b/src/jarabe/view/palettes.py @@ -17,12 +17,12 @@ import os import statvfs from gettext import gettext as _ +import gconf import gobject import gtk from sugar import env -from sugar import profile from sugar.graphics.palette import Palette from sugar.graphics.menuitem import MenuItem from sugar.graphics.icon import Icon @@ -90,8 +90,10 @@ class ActivityPalette(Palette): } def __init__(self, activity_info): + client = gconf.client_get_default() + color = XoColor(client.get_string("/desktop/sugar/user/color")) activity_icon = Icon(file=activity_info.get_icon(), - xo_color=profile.get_color(), + xo_color=color, icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR) Palette.__init__(self, primary_text=activity_info.get_name(), @@ -144,7 +146,8 @@ class ActivityPalette(Palette): style.COLOR_TRANSPARENT.get_svg())) else: label.set_text(_('Make favorite')) - xo_color = profile.get_color() + client = gconf.client_get_default() + xo_color = XoColor(client.get_string("/desktop/sugar/user/color")) self._favorite_icon.props.xo_color = xo_color -- cgit v0.9.1