Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--shell/Owner.py6
-rwxr-xr-xshell/Shell.py44
-rw-r--r--shell/home/HomeWindow.py16
-rw-r--r--shell/session/Session.py5
-rwxr-xr-xshell/sugar2
-rw-r--r--sugar/conf/__init__.py5
-rw-r--r--sugar/env.py19
7 files changed, 55 insertions, 42 deletions
diff --git a/shell/Owner.py b/shell/Owner.py
index d411eac..16310f9 100644
--- a/shell/Owner.py
+++ b/shell/Owner.py
@@ -16,12 +16,6 @@ class ShellOwner(object):
self._nick = env.get_nick_name()
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
for fname in os.listdir(user_dir):
if not fname.startswith("buddy-icon."):
diff --git a/shell/Shell.py b/shell/Shell.py
index 171ae13..08890df 100755
--- a/shell/Shell.py
+++ b/shell/Shell.py
@@ -11,11 +11,12 @@ from home.HomeWindow import HomeWindow
from home.HomeModel import HomeModel
from sugar import env
from Owner import ShellOwner
-from sugar.presence.PresenceService import PresenceService
+from sugar.presence import PresenceService
from ActivityHost import ActivityHost
from ChatController import ChatController
from sugar.activity import ActivityFactory
from sugar.activity import Activity
+from FirstTimeDialog import FirstTimeDialog
from sugar import conf
import sugar.logger
@@ -64,13 +65,33 @@ class Shell(gobject.GObject):
self._screen = wnck.screen_get_default()
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):
session_bus = dbus.SessionBus()
bus_name = dbus.service.BusName('com.redhat.Sugar.Shell', bus=session_bus)
ShellDbusService(self, bus_name)
+ PresenceService.start()
+
self._owner = ShellOwner()
self._owner.announce()
@@ -78,13 +99,8 @@ class Shell(gobject.GObject):
self._chat_controller.listen()
home_model = HomeModel()
- self._home_window = HomeWindow(self, home_model)
- 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)
+ self._home_window.set_model(home_model)
+ self._set_zoom_level(Shell.ZOOM_HOME)
def set_console(self, console):
self._console = console
@@ -102,11 +118,11 @@ class Shell(gobject.GObject):
def __window_closed_cb(self, screen, window):
if window.get_window_type() == wnck.WINDOW_NORMAL:
xid = window.get_xid()
+ if self._hosts.has_key(xid):
+ host = self._hosts[xid]
+ self.emit('activity-closed', host)
- host = self._hosts[xid]
- self.emit('activity-closed', host)
-
- del self._hosts[xid]
+ del self._hosts[xid]
def get_activity(self, activity_id):
for host in self._hosts.values():
@@ -154,7 +170,7 @@ class Shell(gobject.GObject):
if activity:
activity.present()
else:
- pservice = PresenceService()
+ pservice = PresenceService.PresenceService()
activity_ps = pservice.get_activity(activity_id)
if activity_ps:
diff --git a/shell/home/HomeWindow.py b/shell/home/HomeWindow.py
index 86c83ab..6b1fc20 100644
--- a/shell/home/HomeWindow.py
+++ b/shell/home/HomeWindow.py
@@ -9,8 +9,9 @@ class HomeWindow(gtk.Window):
FRIENDS_VIEW = 1
MESH_VIEW = 2
- def __init__(self, shell, model):
+ def __init__(self, shell):
gtk.Window.__init__(self)
+ self._shell = shell
self.connect('realize', self.__realize_cb)
@@ -18,24 +19,25 @@ class HomeWindow(gtk.Window):
self._nb.set_show_tabs(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._setup_canvas(home_view)
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._setup_canvas(friends_view)
friends_view.show()
- mesh_view = MeshView(shell, model.get_mesh())
+ mesh_view = MeshView(self._shell, model.get_mesh())
self._setup_canvas(mesh_view)
self._nb.append_page(mesh_view)
mesh_view.show()
- self.add(self._nb)
- self._nb.show()
-
def set_view(self, view):
self._nb.set_current_page(view)
diff --git a/shell/session/Session.py b/shell/session/Session.py
index 28da29a..1019851 100644
--- a/shell/session/Session.py
+++ b/shell/session/Session.py
@@ -4,7 +4,6 @@ import gobject
import time
import re
-from sugar.presence import PresenceService
from Shell import Shell
from ConsoleWindow import ConsoleWindow
from session.Process import Process
@@ -27,9 +26,6 @@ class Session:
"""Takes care of running the shell and all the sugar processes"""
def start(self):
"""Start the session"""
-
- PresenceService.start()
-
process = MatchboxProcess()
process.start()
@@ -38,7 +34,6 @@ class Session:
shell = Shell()
shell.set_console(console)
- shell.start()
from sugar import TracebackUtils
tbh = TracebackUtils.TracebackHelper()
diff --git a/shell/sugar b/shell/sugar
index da0b7b3..7486c88 100755
--- a/shell/sugar
+++ b/shell/sugar
@@ -25,7 +25,7 @@ if os.environ.has_key('SUGAR_EMULATOR') and \
os.environ['SUGAR_EMULATOR'] == 'yes':
emulator = Emulator()
emulator.start()
-
+
from session.Session import Session
session = Session()
diff --git a/sugar/conf/__init__.py b/sugar/conf/__init__.py
index 6032837..08532b2 100644
--- a/sugar/conf/__init__.py
+++ b/sugar/conf/__init__.py
@@ -1,6 +1,11 @@
from sugar.conf.ActivityRegistry import ActivityRegistry
+from sugar.conf.Profile import Profile
__registry = ActivityRegistry()
+__profile = Profile()
def get_activity_registry():
return __registry
+
+def get_profile():
+ return __profile
diff --git a/sugar/env.py b/sugar/env.py
index 0caf198..4db74e8 100644
--- a/sugar/env.py
+++ b/sugar/env.py
@@ -44,18 +44,19 @@ def setup():
registry = sugar.conf.get_activity_registry()
registry.scan_directory(get_activities_dir())
-def get_user_dir():
- if os.environ.has_key('SUGAR_NICK_NAME'):
- nick = get_nick_name()
- return os.path.expanduser('~/.sugar-%s/' % nick)
+ profile = sugar.conf.get_profile()
+ if os.environ.has_key('SUGAR_PROFILE'):
+ profile.read(os.environ['SUGAR_PROFILE'])
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():
- if os.environ.has_key('SUGAR_NICK_NAME'):
- return os.environ['SUGAR_NICK_NAME']
- else:
- return pwd.getpwuid(os.getuid())[0]
+ profile = sugar.conf.get_profile()
+ return profile.get_nick_name()
def get_data_dir():
return sugar_data_dir