Cleanup the profile code and rename the Server section to Jabber.
This commit is contained in:
parent
ecb8816bc9
commit
30edb542b1
@ -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
|
||||||
|
@ -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 = ""
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
124
sugar/profile.py
124
sugar/profile.py
@ -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()
|
|
||||||
|
Loading…
Reference in New Issue
Block a user