Cleanup the profile code and rename the Server section to Jabber.

This commit is contained in:
Marco Pesenti Gritti 2007-09-17 13:53:10 +02:00
parent ecb8816bc9
commit 30edb542b1
6 changed files with 64 additions and 97 deletions

View File

@ -28,6 +28,7 @@ from sugar import env
from sugar.graphics import style from sugar.graphics import style
from sugar.graphics.button import CanvasButton from sugar.graphics.button import CanvasButton
from sugar.graphics.entry import CanvasEntry from sugar.graphics.entry import CanvasEntry
from sugar.profile import get_profile
import colorpicker import colorpicker
@ -233,27 +234,10 @@ class IntroWindow(gtk.Window):
scaled = pixbuf.scale_simple(200, 200, gtk.gdk.INTERP_BILINEAR) scaled = pixbuf.scale_simple(200, 200, gtk.gdk.INTERP_BILINEAR)
pixbuf.save(icon_path, "jpeg", {"quality":"85"}) pixbuf.save(icon_path, "jpeg", {"quality":"85"})
cp = ConfigParser() profile = get_profile()
section = 'Buddy' profile.name = name
if not cp.has_section(section): profile.color = color
cp.add_section(section) profile.save()
# encode nickname to ascii-safe characters
cp.set(section, 'NickName', name.encode("utf-8"))
cp.set(section, 'Color', color.to_string())
section = 'Server'
if not cp.has_section(section):
cp.add_section(section)
if env.is_emulator():
cp.set(section, 'Server', 'olpc.collabora.co.uk')
else:
cp.set(section, 'Server', '')
cp.set(section, 'Registered', 'False')
config_path = os.path.join(env.get_profile_path(), 'config')
f = open(config_path, 'w')
cp.write(f)
f.close()
# Generate keypair # Generate keypair
import commands import commands

View File

@ -46,7 +46,7 @@ class ShellOwner(gobject.GObject):
def __init__(self): def __init__(self):
gobject.GObject.__init__(self) gobject.GObject.__init__(self)
self._nick = profile.get_nick_name() self._nick = profile.get_name()
self._icon = None self._icon = None
self._icon_hash = "" self._icon_hash = ""

View File

@ -26,8 +26,8 @@ import gtk
import gobject import gobject
from sugar import logger from sugar import logger
from sugar import profile
from sugar import env from sugar import env
from sugar.profile import get_profile
logger.cleanup() logger.cleanup()
logger.start('shell') logger.start('shell')
@ -95,11 +95,10 @@ def main():
_setup_translations() _setup_translations()
# Do initial setup if needed # Do initial setup if needed
if not profile.is_valid(): if not get_profile().is_valid():
win = intro.IntroWindow() win = intro.IntroWindow()
win.show_all() win.show_all()
gtk.main() gtk.main()
profile.update()
if os.environ.has_key("SUGAR_TP_DEBUG"): if os.environ.has_key("SUGAR_TP_DEBUG"):
# Allow the user time to start up telepathy connection managers # Allow the user time to start up telepathy connection managers

View File

@ -41,7 +41,7 @@ class FriendsBox(hippo.CanvasBox):
self._owner_icon = CanvasIcon(icon_name='computer-xo', cache=True, self._owner_icon = CanvasIcon(icon_name='computer-xo', cache=True,
xo_color=profile.get_color()) xo_color=profile.get_color())
self._owner_icon.props.size = style.LARGE_ICON_SIZE self._owner_icon.props.size = style.LARGE_ICON_SIZE
palette = Palette(profile.get_nick_name()) palette = Palette(profile.get_name())
self._owner_icon.set_palette(palette) self._owner_icon.set_palette(palette)
self._layout.add_center(self._owner_icon) self._layout.add_center(self._owner_icon)

View File

@ -149,7 +149,7 @@ class HomeMyIcon(MyIcon):
self._shell = shell self._shell = shell
def enable_palette(self): def enable_palette(self):
palette = Palette(profile.get_nick_name()) palette = Palette(profile.get_name())
reboot_menu_item = gtk.MenuItem(_('Reboot')) reboot_menu_item = gtk.MenuItem(_('Reboot'))
reboot_menu_item.connect('activate', self._reboot_activate_cb) reboot_menu_item.connect('activate', self._reboot_activate_cb)

View File

@ -24,7 +24,16 @@ from sugar import env
from sugar import util from sugar import util
from sugar.graphics.xocolor import XoColor from sugar.graphics.xocolor import XoColor
class _Profile(object): DEFAULT_JABBER_SERVER = 'olpc.collabora.co.uk'
_profile = None
def _set_key(cp, section, key, value):
if not cp.has_section(section):
cp.add_section(section)
cp.set(section, key, value)
class Profile(object):
"""Local user's current options/profile information """Local user's current options/profile information
User settings are stored in an INI-style configuration User settings are stored in an INI-style configuration
@ -48,28 +57,46 @@ class _Profile(object):
pubkey -- public ssh key pubkey -- public ssh key
privkey_hash -- SHA has of the child's public key privkey_hash -- SHA has of the child's public key
""" """
def __init__(self): def __init__(self, path):
self.valid = True
self.name = None self.name = None
self.color = None self.color = None
self.pubkey = None self.pubkey = None
self.privkey_hash = None self.privkey_hash = None
self.server = None self.jabber_server = DEFAULT_JABBER_SERVER
self.server_registered = False self.jabber_registered = False
self.backup1 = None self.backup1 = None
self._config_path = os.path.join(env.get_profile_path(), 'config') self._config_path = path
self._load()
def update(self):
self._load()
def _load(self):
self._load_config() self._load_config()
self._load_pubkey() self._load_pubkey()
self._hash_private_key() self._hash_private_key()
def is_valid(self):
return self.name is not None and \
self.color is not None and \
self.pubkey is not None and \
self.privkey_hash is not None
def save(self):
cp = ConfigParser()
parsed = cp.read([self._config_path])
if self.name:
_set_key(cp, 'Buddy', 'NickName', self.name)
if self.color:
_set_key(cp, 'Buddy', 'Color', self.color.to_string())
if self.backup1:
_set_key(cp, 'Server', 'Backup1', self.backup1)
if self.jabber_server:
_set_key(cp, 'Jabber', 'Server', self.jabber_server)
_set_key(cp, 'Jabber', 'Registered', self.jabber_registered)
f = open(self._config_path, 'w')
cp.write(f)
f.close()
def _load_config(self): def _load_config(self):
cp = ConfigParser() cp = ConfigParser()
parsed = cp.read([self._config_path]) parsed = cp.read([self._config_path])
@ -78,20 +105,14 @@ class _Profile(object):
name = cp.get('Buddy', 'NickName') name = cp.get('Buddy', 'NickName')
# decode nickname from ascii-safe chars to unicode # decode nickname from ascii-safe chars to unicode
self.name = name.decode("utf-8") self.name = name.decode("utf-8")
else:
self.valid = False
if cp.has_option('Buddy', 'Color'): if cp.has_option('Buddy', 'Color'):
self.color = XoColor(cp.get('Buddy', 'Color')) self.color = XoColor(cp.get('Buddy', 'Color'))
if cp.has_option('Jabber', 'Server'):
if cp.has_option('Server', 'Server'): self.jabber_server = cp.get('Jabber', 'Server')
self.server = cp.get('Server', 'Server') if cp.has_option('Jabber', 'Registered'):
registered = cp.get('Jabber', 'Registered')
if cp.has_option('Server', 'Registered'):
registered = cp.get('Server', 'Registered')
if registered.lower() == "true": if registered.lower() == "true":
self.server_registered = True self.jabber_registered = True
if cp.has_option('Server', 'Backup1'): if cp.has_option('Server', 'Backup1'):
self.backup1 = cp.get('Server', 'Backup1') self.backup1 = cp.get('Server', 'Backup1')
@ -147,56 +168,19 @@ class _Profile(object):
key_hash = util._sha_data(key) key_hash = util._sha_data(key)
self.privkey_hash = util.printable_hash(key_hash) self.privkey_hash = util.printable_hash(key_hash)
def set_key(self, section, key, value): def get_profile():
cp = ConfigParser() global _profile
parsed = cp.read([self._config_path])
if not cp.has_section(section): if not _profile:
cp.add_section(section) path = os.path.join(env.get_profile_path(), 'config')
cp.set(section, key, value) _profile = Profile(path)
f = open(self._config_path, 'w') return _profile
cp.write(f)
f.close()
del cp # Convenience methods for frequently used properties
self._load_config() def get_name():
return get_profile().name
def is_valid():
return _profile.valid
def get_nick_name():
return _profile.name
def get_color(): def get_color():
return _profile.color return get_profile().color
def get_pubkey():
return _profile.pubkey
def get_private_key_hash():
return _profile.privkey_hash
def get_server():
return _profile.server
def set_server(server):
_profile.set_key('Server', 'server', server)
def get_trial2_backup():
return _profile.backup1
def set_trial2_backup(backup_info):
_profile.set_key('Server', 'backup1', backup_info)
def get_server_registered():
return _profile.server_registered
def set_server_registered():
_profile.set_key('Server', 'Registered', True)
def update():
_profile.update()
_profile = _Profile()