Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2006-10-16 11:34:43 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2006-10-16 11:34:43 (GMT)
commitbc0ee6d34c963de81f65d3319e99be0b1e13effc (patch)
treea0bc604b07fda04db0c8b5161b650a4e71a6de0d /sugar
parenta3be4492b2c910bd78ced7daf3208f69d0862005 (diff)
Refactor startup. In progress, give me a couple hours.
For now start sugar with "sugar-emulator shell/sugar-shell"
Diffstat (limited to 'sugar')
-rw-r--r--sugar/Makefile.am3
-rw-r--r--sugar/env.py27
-rw-r--r--sugar/profile.py43
-rw-r--r--sugar/session/DbusProcess.py37
-rw-r--r--sugar/session/Emulator.py87
-rw-r--r--sugar/session/Makefile.am9
-rw-r--r--sugar/session/MatchboxProcess.py35
-rw-r--r--sugar/session/Process.py36
-rw-r--r--sugar/session/TestSession.py26
-rw-r--r--sugar/session/UITestSession.py38
-rw-r--r--sugar/session/__init__.py0
11 files changed, 53 insertions, 288 deletions
diff --git a/sugar/Makefile.am b/sugar/Makefile.am
index 6f27a08..7e2b0d2 100644
--- a/sugar/Makefile.am
+++ b/sugar/Makefile.am
@@ -1,9 +1,10 @@
-SUBDIRS = activity chat graphics p2p presence session
+SUBDIRS = activity chat graphics p2p presence
sugardir = $(pythondir)/sugar
sugar_PYTHON = \
__init__.py \
__installed__.py \
+ emulator.py \
env.py \
logger.py \
setup.py \
diff --git a/sugar/env.py b/sugar/env.py
index 2d75737..a2dfa45 100644
--- a/sugar/env.py
+++ b/sugar/env.py
@@ -26,25 +26,8 @@ except ImportError:
import sugar.setup
-def setup_user(profile):
- os.environ['SUGAR_NICK_NAME'] = profile.get_nick_name()
- os.environ['SUGAR_COLOR'] = profile.get_color().to_string()
-
-def get_nick_name():
- if os.environ.has_key('SUGAR_NICK_NAME'):
- return os.environ['SUGAR_NICK_NAME']
- else:
- return None
-
-def get_color():
- if os.environ.has_key('SUGAR_COLOR'):
- return os.environ['SUGAR_COLOR']
- else:
- return None
-
def setup_python_path():
for path in sugar_python_path:
- sys.path.insert(0, path)
if os.environ.has_key('PYTHONPATH'):
old_path = os.environ['PYTHONPATH']
os.environ['PYTHONPATH'] = path + ':' + old_path
@@ -76,9 +59,15 @@ def get_profile_path():
profile_id = os.environ['SUGAR_PROFILE']
else:
profile_id = 'default'
- path = os.path.expanduser('~/.sugar')
- return os.path.join(path, profile_id)
+ path = os.path.join(os.path.expanduser('~/.sugar'), profile_id)
+ if not os.path.isdir(path):
+ try:
+ os.makedirs(path)
+ except OSError, exc:
+ print "Could not create user directory."
+
+ return path
def get_data_dir():
return sugar_data_dir
diff --git a/sugar/profile.py b/sugar/profile.py
new file mode 100644
index 0000000..12eb08b
--- /dev/null
+++ b/sugar/profile.py
@@ -0,0 +1,43 @@
+# Copyright (C) 2006, Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+import os
+from ConfigParser import ConfigParser
+
+from sugar import env
+from sugar.graphics.iconcolor import IconColor
+
+def get_nick_name():
+ return _nick_name
+
+def get_color():
+ return _color
+
+cp = ConfigParser()
+config_path = os.path.join(env.get_profile_path(), 'config')
+parsed = cp.read([config_path])
+
+if cp.has_option('Buddy', 'NickName'):
+ _nick_name = cp.get('Buddy', 'NickName')
+else:
+ _nick_name = None
+
+if cp.has_option('Buddy', 'Color'):
+ _color = IconColor(cp.get('Buddy', 'Color'))
+else:
+ _color = None
+
+del cp
diff --git a/sugar/session/DbusProcess.py b/sugar/session/DbusProcess.py
deleted file mode 100644
index fb3246e..0000000
--- a/sugar/session/DbusProcess.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2006, Red Hat, Inc.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the
-# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-import os
-
-from sugar.session.Process import Process
-from sugar import env
-
-class DbusProcess(Process):
- def __init__(self):
- config = env.get_dbus_config()
- cmd = "dbus-daemon --print-address --config-file %s" % config
- Process.__init__(self, cmd)
-
- def get_name(self):
- return 'Dbus'
-
- def start(self):
- Process.start(self, True)
- dbus_file = os.fdopen(self._stdout)
- addr = dbus_file.readline().strip()
- dbus_file.close()
- os.environ["DBUS_SESSION_BUS_ADDRESS"] = addr
diff --git a/sugar/session/Emulator.py b/sugar/session/Emulator.py
deleted file mode 100644
index 4468509..0000000
--- a/sugar/session/Emulator.py
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright (C) 2006, Red Hat, Inc.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the
-# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-import os
-import socket
-import sys
-
-from sugar.session.Process import Process
-import sugar.env
-
-def get_display_number():
- """Find a free display number trying to connect to 6000+ ports"""
- retries = 20
- display_number = 1
- display_is_free = False
-
- while not display_is_free and retries > 0:
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- try:
- s.connect(('127.0.0.1', 6000 + display_number))
- s.close()
-
- display_number += 1
- retries -= 1
- except:
- display_is_free = True
-
- if display_is_free:
- return display_number
- else:
- logging.error('Cannot find a free display.')
- sys.exit(0)
-
-class XephyrProcess(Process):
- def __init__(self):
- self._display = get_display_number()
- cmd = 'Xephyr :%d -ac -screen 800x600' % (self._display)
- Process.__init__(self, cmd)
-
- def get_name(self):
- return 'Xephyr'
-
- def start(self):
- Process.start(self)
- os.environ['DISPLAY'] = ":%d" % (self._display)
-
-class XnestProcess(Process):
- def __init__(self):
- self._display = get_display_number()
- cmd = 'Xnest :%d -ac -geometry 800x600' % (self._display)
- Process.__init__(self, cmd)
-
- def get_name(self):
- return 'Xnest'
-
- def start(self):
- Process.start(self)
- os.environ['DISPLAY'] = ":%d" % (self._display)
-
-class Emulator:
- """The OLPC emulator"""
- def start(self):
- try:
- process = XephyrProcess()
- process.start()
- except:
- try:
- process = XnestProcess()
- process.start()
- except:
- print 'Cannot run the emulator. You need to install \
- Xephyr or Xnest.'
- sys.exit(0)
diff --git a/sugar/session/Makefile.am b/sugar/session/Makefile.am
deleted file mode 100644
index 8c1e4f7..0000000
--- a/sugar/session/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-sugardir = $(pythondir)/sugar/session
-sugar_PYTHON = \
- __init__.py \
- DbusProcess.py \
- Emulator.py \
- MatchboxProcess.py \
- Process.py \
- TestSession.py \
- UITestSession.py
diff --git a/sugar/session/MatchboxProcess.py b/sugar/session/MatchboxProcess.py
deleted file mode 100644
index b6a7e35..0000000
--- a/sugar/session/MatchboxProcess.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2006, Red Hat, Inc.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the
-# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-import os
-
-from sugar.session.Process import Process
-from sugar import env
-
-class MatchboxProcess(Process):
- def __init__(self):
- kbd_config = os.path.join(env.get_data_dir(), 'kbdconfig')
- options = '-kbdconfig %s ' % kbd_config
-
- options += '-use_titlebar no '
- options += '-theme olpc '
-
- command = 'matchbox-window-manager %s ' % options
- Process.__init__(self, command)
-
- def get_name(self):
- return 'Matchbox'
diff --git a/sugar/session/Process.py b/sugar/session/Process.py
deleted file mode 100644
index 80bed1a..0000000
--- a/sugar/session/Process.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2006, Red Hat, Inc.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the
-# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-import logging
-
-import gobject
-
-class Process:
- """Object representing one of the session processes"""
-
- def __init__(self, command):
- self._command = command
-
- def get_name(self):
- return self._command
-
- def start(self, standard_output=False):
- args = self._command.split()
- flags = gobject.SPAWN_SEARCH_PATH
- result = gobject.spawn_async(args, flags=flags,
- standard_output=standard_output)
- self._stdout = result[2]
diff --git a/sugar/session/TestSession.py b/sugar/session/TestSession.py
deleted file mode 100644
index 2381548..0000000
--- a/sugar/session/TestSession.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright (C) 2006, Red Hat, Inc.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the
-# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-from sugar.session.DbusProcess import DbusProcess
-from sugar import env
-
-class TestSession:
- def start(self):
- env.setup_python_path()
-
- process = DbusProcess()
- process.start()
diff --git a/sugar/session/UITestSession.py b/sugar/session/UITestSession.py
deleted file mode 100644
index 1daf9d0..0000000
--- a/sugar/session/UITestSession.py
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2006, Red Hat, Inc.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the
-# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-import os
-
-from sugar.session.DbusProcess import DbusProcess
-from sugar.session.MatchboxProcess import MatchboxProcess
-from sugar.session.Emulator import Emulator
-from sugar import env
-
-class UITestSession:
- def start(self):
- env.setup_python_path()
-
- if os.environ.has_key('SUGAR_EMULATOR') and \
- os.environ['SUGAR_EMULATOR'] == 'yes':
- emulator = Emulator()
- emulator.start()
-
- process = MatchboxProcess()
- process.start()
-
- process = DbusProcess()
- process.start()
diff --git a/sugar/session/__init__.py b/sugar/session/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/sugar/session/__init__.py
+++ /dev/null