Simple profile support. First time dialog (ugly and only nick atm).
This commit is contained in:
parent
3e51b086df
commit
511fec421f
@ -16,12 +16,6 @@ class ShellOwner(object):
|
|||||||
self._nick = env.get_nick_name()
|
self._nick = env.get_nick_name()
|
||||||
user_dir = env.get_user_dir()
|
user_dir = env.get_user_dir()
|
||||||
|
|
||||||
try:
|
|
||||||
os.makedirs(user_dir)
|
|
||||||
except OSError, exc:
|
|
||||||
if exc[0] != 17: # file exists
|
|
||||||
print "Could not create user directory %s: (%d) %s" % (user_dir, exc[0], exc[1])
|
|
||||||
|
|
||||||
self._icon = None
|
self._icon = None
|
||||||
for fname in os.listdir(user_dir):
|
for fname in os.listdir(user_dir):
|
||||||
if not fname.startswith("buddy-icon."):
|
if not fname.startswith("buddy-icon."):
|
||||||
|
@ -11,11 +11,12 @@ from home.HomeWindow import HomeWindow
|
|||||||
from home.HomeModel import HomeModel
|
from home.HomeModel import HomeModel
|
||||||
from sugar import env
|
from sugar import env
|
||||||
from Owner import ShellOwner
|
from Owner import ShellOwner
|
||||||
from sugar.presence.PresenceService import PresenceService
|
from sugar.presence import PresenceService
|
||||||
from ActivityHost import ActivityHost
|
from ActivityHost import ActivityHost
|
||||||
from ChatController import ChatController
|
from ChatController import ChatController
|
||||||
from sugar.activity import ActivityFactory
|
from sugar.activity import ActivityFactory
|
||||||
from sugar.activity import Activity
|
from sugar.activity import Activity
|
||||||
|
from FirstTimeDialog import FirstTimeDialog
|
||||||
from sugar import conf
|
from sugar import conf
|
||||||
import sugar.logger
|
import sugar.logger
|
||||||
|
|
||||||
@ -64,13 +65,33 @@ class Shell(gobject.GObject):
|
|||||||
|
|
||||||
self._screen = wnck.screen_get_default()
|
self._screen = wnck.screen_get_default()
|
||||||
self._hosts = {}
|
self._hosts = {}
|
||||||
self._zoom_level = Shell.ZOOM_HOME
|
|
||||||
|
self._home_window = HomeWindow(self)
|
||||||
|
self._home_window.show()
|
||||||
|
|
||||||
|
self._screen.connect('window-opened', self.__window_opened_cb)
|
||||||
|
self._screen.connect('window-closed', self.__window_closed_cb)
|
||||||
|
self._screen.connect("showing_desktop_changed",
|
||||||
|
self.__showing_desktop_changed_cb)
|
||||||
|
|
||||||
|
if env.get_nick_name() == None:
|
||||||
|
dialog = FirstTimeDialog()
|
||||||
|
dialog.connect('destroy', self.__first_time_dialog_destroy_cb)
|
||||||
|
dialog.set_transient_for(self._home_window)
|
||||||
|
dialog.show()
|
||||||
|
else:
|
||||||
|
self.start()
|
||||||
|
|
||||||
|
def __first_time_dialog_destroy_cb(self, dialog):
|
||||||
|
self.start()
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
session_bus = dbus.SessionBus()
|
session_bus = dbus.SessionBus()
|
||||||
bus_name = dbus.service.BusName('com.redhat.Sugar.Shell', bus=session_bus)
|
bus_name = dbus.service.BusName('com.redhat.Sugar.Shell', bus=session_bus)
|
||||||
ShellDbusService(self, bus_name)
|
ShellDbusService(self, bus_name)
|
||||||
|
|
||||||
|
PresenceService.start()
|
||||||
|
|
||||||
self._owner = ShellOwner()
|
self._owner = ShellOwner()
|
||||||
self._owner.announce()
|
self._owner.announce()
|
||||||
|
|
||||||
@ -78,13 +99,8 @@ class Shell(gobject.GObject):
|
|||||||
self._chat_controller.listen()
|
self._chat_controller.listen()
|
||||||
|
|
||||||
home_model = HomeModel()
|
home_model = HomeModel()
|
||||||
self._home_window = HomeWindow(self, home_model)
|
self._home_window.set_model(home_model)
|
||||||
self._home_window.show()
|
self._set_zoom_level(Shell.ZOOM_HOME)
|
||||||
|
|
||||||
self._screen.connect('window-opened', self.__window_opened_cb)
|
|
||||||
self._screen.connect('window-closed', self.__window_closed_cb)
|
|
||||||
self._screen.connect("showing_desktop_changed",
|
|
||||||
self.__showing_desktop_changed_cb)
|
|
||||||
|
|
||||||
def set_console(self, console):
|
def set_console(self, console):
|
||||||
self._console = console
|
self._console = console
|
||||||
@ -102,11 +118,11 @@ class Shell(gobject.GObject):
|
|||||||
def __window_closed_cb(self, screen, window):
|
def __window_closed_cb(self, screen, window):
|
||||||
if window.get_window_type() == wnck.WINDOW_NORMAL:
|
if window.get_window_type() == wnck.WINDOW_NORMAL:
|
||||||
xid = window.get_xid()
|
xid = window.get_xid()
|
||||||
|
if self._hosts.has_key(xid):
|
||||||
|
host = self._hosts[xid]
|
||||||
|
self.emit('activity-closed', host)
|
||||||
|
|
||||||
host = self._hosts[xid]
|
del self._hosts[xid]
|
||||||
self.emit('activity-closed', host)
|
|
||||||
|
|
||||||
del self._hosts[xid]
|
|
||||||
|
|
||||||
def get_activity(self, activity_id):
|
def get_activity(self, activity_id):
|
||||||
for host in self._hosts.values():
|
for host in self._hosts.values():
|
||||||
@ -154,7 +170,7 @@ class Shell(gobject.GObject):
|
|||||||
if activity:
|
if activity:
|
||||||
activity.present()
|
activity.present()
|
||||||
else:
|
else:
|
||||||
pservice = PresenceService()
|
pservice = PresenceService.PresenceService()
|
||||||
activity_ps = pservice.get_activity(activity_id)
|
activity_ps = pservice.get_activity(activity_id)
|
||||||
|
|
||||||
if activity_ps:
|
if activity_ps:
|
||||||
|
@ -9,8 +9,9 @@ class HomeWindow(gtk.Window):
|
|||||||
FRIENDS_VIEW = 1
|
FRIENDS_VIEW = 1
|
||||||
MESH_VIEW = 2
|
MESH_VIEW = 2
|
||||||
|
|
||||||
def __init__(self, shell, model):
|
def __init__(self, shell):
|
||||||
gtk.Window.__init__(self)
|
gtk.Window.__init__(self)
|
||||||
|
self._shell = shell
|
||||||
|
|
||||||
self.connect('realize', self.__realize_cb)
|
self.connect('realize', self.__realize_cb)
|
||||||
|
|
||||||
@ -18,24 +19,25 @@ class HomeWindow(gtk.Window):
|
|||||||
self._nb.set_show_tabs(False)
|
self._nb.set_show_tabs(False)
|
||||||
self._nb.set_show_border(False)
|
self._nb.set_show_border(False)
|
||||||
|
|
||||||
home_view = HomeView(shell)
|
self.add(self._nb)
|
||||||
|
self._nb.show()
|
||||||
|
|
||||||
|
def set_model(self, model):
|
||||||
|
home_view = HomeView(self._shell)
|
||||||
self._nb.append_page(home_view)
|
self._nb.append_page(home_view)
|
||||||
self._setup_canvas(home_view)
|
self._setup_canvas(home_view)
|
||||||
home_view.show()
|
home_view.show()
|
||||||
|
|
||||||
friends_view = FriendsView(shell, model.get_friends())
|
friends_view = FriendsView(self._shell, model.get_friends())
|
||||||
self._nb.append_page(friends_view)
|
self._nb.append_page(friends_view)
|
||||||
self._setup_canvas(friends_view)
|
self._setup_canvas(friends_view)
|
||||||
friends_view.show()
|
friends_view.show()
|
||||||
|
|
||||||
mesh_view = MeshView(shell, model.get_mesh())
|
mesh_view = MeshView(self._shell, model.get_mesh())
|
||||||
self._setup_canvas(mesh_view)
|
self._setup_canvas(mesh_view)
|
||||||
self._nb.append_page(mesh_view)
|
self._nb.append_page(mesh_view)
|
||||||
mesh_view.show()
|
mesh_view.show()
|
||||||
|
|
||||||
self.add(self._nb)
|
|
||||||
self._nb.show()
|
|
||||||
|
|
||||||
def set_view(self, view):
|
def set_view(self, view):
|
||||||
self._nb.set_current_page(view)
|
self._nb.set_current_page(view)
|
||||||
|
|
||||||
|
@ -4,7 +4,6 @@ import gobject
|
|||||||
import time
|
import time
|
||||||
import re
|
import re
|
||||||
|
|
||||||
from sugar.presence import PresenceService
|
|
||||||
from Shell import Shell
|
from Shell import Shell
|
||||||
from ConsoleWindow import ConsoleWindow
|
from ConsoleWindow import ConsoleWindow
|
||||||
from session.Process import Process
|
from session.Process import Process
|
||||||
@ -27,9 +26,6 @@ class Session:
|
|||||||
"""Takes care of running the shell and all the sugar processes"""
|
"""Takes care of running the shell and all the sugar processes"""
|
||||||
def start(self):
|
def start(self):
|
||||||
"""Start the session"""
|
"""Start the session"""
|
||||||
|
|
||||||
PresenceService.start()
|
|
||||||
|
|
||||||
process = MatchboxProcess()
|
process = MatchboxProcess()
|
||||||
process.start()
|
process.start()
|
||||||
|
|
||||||
@ -38,7 +34,6 @@ class Session:
|
|||||||
|
|
||||||
shell = Shell()
|
shell = Shell()
|
||||||
shell.set_console(console)
|
shell.set_console(console)
|
||||||
shell.start()
|
|
||||||
|
|
||||||
from sugar import TracebackUtils
|
from sugar import TracebackUtils
|
||||||
tbh = TracebackUtils.TracebackHelper()
|
tbh = TracebackUtils.TracebackHelper()
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
from sugar.conf.ActivityRegistry import ActivityRegistry
|
from sugar.conf.ActivityRegistry import ActivityRegistry
|
||||||
|
from sugar.conf.Profile import Profile
|
||||||
|
|
||||||
__registry = ActivityRegistry()
|
__registry = ActivityRegistry()
|
||||||
|
__profile = Profile()
|
||||||
|
|
||||||
def get_activity_registry():
|
def get_activity_registry():
|
||||||
return __registry
|
return __registry
|
||||||
|
|
||||||
|
def get_profile():
|
||||||
|
return __profile
|
||||||
|
19
sugar/env.py
19
sugar/env.py
@ -44,18 +44,19 @@ def setup():
|
|||||||
registry = sugar.conf.get_activity_registry()
|
registry = sugar.conf.get_activity_registry()
|
||||||
registry.scan_directory(get_activities_dir())
|
registry.scan_directory(get_activities_dir())
|
||||||
|
|
||||||
def get_user_dir():
|
profile = sugar.conf.get_profile()
|
||||||
if os.environ.has_key('SUGAR_NICK_NAME'):
|
if os.environ.has_key('SUGAR_PROFILE'):
|
||||||
nick = get_nick_name()
|
profile.read(os.environ['SUGAR_PROFILE'])
|
||||||
return os.path.expanduser('~/.sugar-%s/' % nick)
|
|
||||||
else:
|
else:
|
||||||
return os.path.expanduser('~/.sugar')
|
profile.read('default')
|
||||||
|
|
||||||
|
def get_user_dir():
|
||||||
|
profile = sugar.conf.get_profile()
|
||||||
|
return profile.get_path()
|
||||||
|
|
||||||
def get_nick_name():
|
def get_nick_name():
|
||||||
if os.environ.has_key('SUGAR_NICK_NAME'):
|
profile = sugar.conf.get_profile()
|
||||||
return os.environ['SUGAR_NICK_NAME']
|
return profile.get_nick_name()
|
||||||
else:
|
|
||||||
return pwd.getpwuid(os.getuid())[0]
|
|
||||||
|
|
||||||
def get_data_dir():
|
def get_data_dir():
|
||||||
return sugar_data_dir
|
return sugar_data_dir
|
||||||
|
Loading…
Reference in New Issue
Block a user