Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bin/sugar-session2
-rw-r--r--configure.ac2
-rw-r--r--data/icons/Makefile.am16
-rw-r--r--data/icons/module-about_my_computer.svg (renamed from data/icons/module-about_my_xo.svg)0
-rw-r--r--extensions/cpsection/Makefile.am2
-rw-r--r--extensions/cpsection/aboutcomputer/Makefile.am6
-rw-r--r--extensions/cpsection/aboutcomputer/__init__.py (renamed from extensions/cpsection/aboutxo/__init__.py)6
-rw-r--r--extensions/cpsection/aboutcomputer/model.py (renamed from extensions/cpsection/aboutxo/model.py)9
-rw-r--r--extensions/cpsection/aboutcomputer/view.py (renamed from extensions/cpsection/aboutxo/view.py)2
-rw-r--r--extensions/cpsection/aboutxo/Makefile.am6
-rw-r--r--extensions/cpsection/network/model.py19
-rw-r--r--extensions/cpsection/network/view.py13
-rw-r--r--src/jarabe/controlpanel/gui.py2
-rw-r--r--src/jarabe/desktop/favoritesview.py10
-rw-r--r--src/jarabe/desktop/meshbox.py12
-rw-r--r--src/jarabe/journal/model.py2
-rw-r--r--src/jarabe/model/network.py39
17 files changed, 101 insertions, 47 deletions
diff --git a/bin/sugar-session b/bin/sugar-session
index fc10eb8..6a10a43 100644
--- a/bin/sugar-session
+++ b/bin/sugar-session
@@ -133,7 +133,7 @@ def main():
client = gconf.client_get_default()
timezone = client.get_string('/desktop/sugar/date/timezone')
- if timezone is not '':
+ if timezone is not None and timezone:
os.environ['TZ'] = timezone
start_ui_service()
diff --git a/configure.ac b/configure.ac
index 748657e..2223aae 100644
--- a/configure.ac
+++ b/configure.ac
@@ -53,7 +53,7 @@ data/icons/Makefile
extensions/Makefile
extensions/cpsection/Makefile
extensions/cpsection/aboutme/Makefile
-extensions/cpsection/aboutxo/Makefile
+extensions/cpsection/aboutcomputer/Makefile
extensions/cpsection/datetime/Makefile
extensions/cpsection/frame/Makefile
extensions/cpsection/language/Makefile
diff --git a/data/icons/Makefile.am b/data/icons/Makefile.am
index ac26247..ccf049a 100644
--- a/data/icons/Makefile.am
+++ b/data/icons/Makefile.am
@@ -1,13 +1,13 @@
sugardir = $(pkgdatadir)/data/icons
-sugar_DATA = \
- activity-journal.svg \
- module-about_me.svg \
- module-about_my_xo.svg \
- module-date_and_time.svg \
- module-frame.svg \
- module-language.svg \
- module-network.svg \
+sugar_DATA = \
+ activity-journal.svg \
+ module-about_me.svg \
+ module-about_my_computer.svg \
+ module-date_and_time.svg \
+ module-frame.svg \
+ module-language.svg \
+ module-network.svg \
module-power.svg
EXTRA_DIST = $(sugar_DATA)
diff --git a/data/icons/module-about_my_xo.svg b/data/icons/module-about_my_computer.svg
index cf3528e..cf3528e 100644
--- a/data/icons/module-about_my_xo.svg
+++ b/data/icons/module-about_my_computer.svg
diff --git a/extensions/cpsection/Makefile.am b/extensions/cpsection/Makefile.am
index 0e69fd1..73e5164 100644
--- a/extensions/cpsection/Makefile.am
+++ b/extensions/cpsection/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = aboutme aboutxo datetime frame language network power
+SUBDIRS = aboutme aboutcomputer datetime frame language network power
sugardir = $(pkgdatadir)/extensions/cpsection
sugar_PYTHON = __init__.py
diff --git a/extensions/cpsection/aboutcomputer/Makefile.am b/extensions/cpsection/aboutcomputer/Makefile.am
new file mode 100644
index 0000000..a3bdec8
--- /dev/null
+++ b/extensions/cpsection/aboutcomputer/Makefile.am
@@ -0,0 +1,6 @@
+sugardir = $(pkgdatadir)/extensions/cpsection/aboutcomputer
+
+sugar_PYTHON = \
+ __init__.py \
+ model.py \
+ view.py
diff --git a/extensions/cpsection/aboutxo/__init__.py b/extensions/cpsection/aboutcomputer/__init__.py
index 4dc2cb2..ceb515a 100644
--- a/extensions/cpsection/aboutxo/__init__.py
+++ b/extensions/cpsection/aboutcomputer/__init__.py
@@ -16,7 +16,7 @@
from gettext import gettext as _
-CLASS = 'AboutXO'
-ICON = 'module-about_my_xo'
-TITLE = _('About my XO')
+CLASS = 'AboutComputer'
+ICON = 'module-about_my_computer'
+TITLE = _('About my Computer')
diff --git a/extensions/cpsection/aboutxo/model.py b/extensions/cpsection/aboutcomputer/model.py
index 4b5b27e..5d53f54 100644
--- a/extensions/cpsection/aboutxo/model.py
+++ b/extensions/cpsection/aboutcomputer/model.py
@@ -21,16 +21,16 @@ import re
import subprocess
from gettext import gettext as _
-_logger = logging.getLogger('ControlPanel - AboutXO')
+_logger = logging.getLogger('ControlPanel - AboutComputer')
_not_available = _('Not available')
-def get_aboutxo():
+def get_aboutcomputer():
msg = 'Serial Number: %s \nBuild Number: %s \nFirmware Number: %s \n' \
% (get_serial_number(), get_build_number(), get_firmware_number())
return msg
-def print_aboutxo():
- print get_aboutxo()
+def print_aboutcomputer():
+ print get_aboutcomputer()
def get_serial_number():
serial_no = _read_file('/ofw/serial-number')
@@ -115,4 +115,3 @@ def get_license():
except IOError:
license_text = _not_available
return license_text
-
diff --git a/extensions/cpsection/aboutxo/view.py b/extensions/cpsection/aboutcomputer/view.py
index bd2f27f..f9dfe93 100644
--- a/extensions/cpsection/aboutxo/view.py
+++ b/extensions/cpsection/aboutcomputer/view.py
@@ -23,7 +23,7 @@ from sugar.graphics import style
from jarabe.controlpanel.sectionview import SectionView
-class AboutXO(SectionView):
+class AboutComputer(SectionView):
def __init__(self, model, alerts=None):
SectionView.__init__(self)
diff --git a/extensions/cpsection/aboutxo/Makefile.am b/extensions/cpsection/aboutxo/Makefile.am
deleted file mode 100644
index 3f71af0..0000000
--- a/extensions/cpsection/aboutxo/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-sugardir = $(pkgdatadir)/extensions/cpsection/aboutxo
-
-sugar_PYTHON = \
- __init__.py \
- model.py \
- view.py
diff --git a/extensions/cpsection/network/model.py b/extensions/cpsection/network/model.py
index bfd008a..bfb9686 100644
--- a/extensions/cpsection/network/model.py
+++ b/extensions/cpsection/network/model.py
@@ -44,7 +44,24 @@ def set_jabber(server):
"""
client = gconf.client_get_default()
client.set_string('/desktop/sugar/collaboration/jabber_server', server)
- return 1
+
+ self._restart_jabber()
+ return 0
+
+def _restart_jabber():
+ """Call Sugar Presence Service to restart Telepathy CMs.
+
+ This allows restarting the jabber server connection when we change it.
+ """
+ _PS_SERVICE = "org.laptop.Sugar.Presence"
+ _PS_INTERFACE = "org.laptop.Sugar.Presence"
+ _PS_PATH = "/org/laptop/Sugar/Presence"
+ bus = dbus.SessionBus()
+ try:
+ ps = dbus.Interface(bus.get_object(_PS_SERVICE, _PS_PATH), _PS_INTERFACE)
+ except dbus.DBusException:
+ raise ReadError('%s service not available', _PS_SERVICE)
+ ps.RestartServerConnection()
def get_radio():
bus = dbus.SystemBus()
diff --git a/extensions/cpsection/network/view.py b/extensions/cpsection/network/view.py
index 9a7f387..31a4f72 100644
--- a/extensions/cpsection/network/view.py
+++ b/extensions/cpsection/network/view.py
@@ -27,6 +27,8 @@ CLASS = 'Network'
ICON = 'module-network'
TITLE = _('Network')
+_APPLY_TIMEOUT = 3000
+
class Network(SectionView):
def __init__(self, model, alerts):
SectionView.__init__(self)
@@ -214,7 +216,7 @@ class Network(SectionView):
def __jabber_changed_cb(self, widget, data=None):
if self._jabber_sid:
gobject.source_remove(self._jabber_sid)
- self._jabber_sid = gobject.timeout_add(self._APPLY_TIMEOUT,
+ self._jabber_sid = gobject.timeout_add(_APPLY_TIMEOUT,
self.__jabber_timeout_cb, widget)
def __jabber_timeout_cb(self, widget):
@@ -223,17 +225,16 @@ class Network(SectionView):
return
try:
self._model.set_jabber(widget.get_text())
- except ValueError, detail:
+ except ReadError, detail:
self._jabber_alert.props.msg = detail
self._jabber_valid = False
+ self._jabber_alert.show()
+ self.restart_alerts.append('jabber')
else:
- self._jabber_alert.props.msg = self.restart_msg
self._jabber_valid = True
- self.needs_restart = True
- self.restart_alerts.append('jabber')
+ self._jabber_alert.hide()
self._validate()
- self._jabber_alert.show()
return False
def __network_configuration_reset_cb(self, widget):
diff --git a/src/jarabe/controlpanel/gui.py b/src/jarabe/controlpanel/gui.py
index 2f8da51..57f19f7 100644
--- a/src/jarabe/controlpanel/gui.py
+++ b/src/jarabe/controlpanel/gui.py
@@ -142,7 +142,7 @@ class ControlPanel(gtk.Window):
if option == 'aboutme':
self._table.attach(sectionicon, 0, 1, 0, 1)
- elif option == 'aboutxo':
+ elif option == 'aboutcomputer':
self._table.attach(sectionicon, 1, 2, 0, 1)
else:
self._table.attach(sectionicon,
diff --git a/src/jarabe/desktop/favoritesview.py b/src/jarabe/desktop/favoritesview.py
index 81f2730..9371858 100644
--- a/src/jarabe/desktop/favoritesview.py
+++ b/src/jarabe/desktop/favoritesview.py
@@ -41,6 +41,7 @@ from jarabe.model.buddy import BuddyModel
from jarabe.model import shell
from jarabe.model import bundleregistry
from jarabe import journal
+from jarabe.controlpanel.gui import ControlPanel
from jarabe.desktop import schoolserver
from jarabe.desktop.schoolserver import RegisterError
@@ -441,7 +442,14 @@ class ActivityIcon(CanvasIcon):
if error is not None:
logging.error('Error retrieving most recent activities: %r' % error)
- self._journal_entries = entries
+ # If there's a problem with the DS index, we may get entries not related
+ # to this activity.
+ checked_entries = []
+ for entry in entries:
+ if entry['activity'] == self.bundle_id:
+ checked_entries.append(entry)
+
+ self._journal_entries = checked_entries
self._update()
def _update(self):
diff --git a/src/jarabe/desktop/meshbox.py b/src/jarabe/desktop/meshbox.py
index e650ba7..ab7348c 100644
--- a/src/jarabe/desktop/meshbox.py
+++ b/src/jarabe/desktop/meshbox.py
@@ -222,6 +222,10 @@ class AccessPointView(CanvasPulsingIcon):
state = network.DEVICE_STATE_UNKNOWN
if state == network.DEVICE_STATE_ACTIVATED:
+ connection = network.find_connection(self._name)
+ if connection:
+ connection.set_connected()
+
icon_name = '%s-connected' % _ICON_NAME
else:
icon_name = _ICON_NAME
@@ -342,10 +346,10 @@ class AccessPointView(CanvasPulsingIcon):
wireless_security = self._get_security()
settings.wireless_security = wireless_security
- connection = network.add_connection(self._name, settings)
+ if wireless_security is not None:
+ settings.wireless.security = '802-11-wireless-security'
- if wireless_security is None:
- self._connection = connection
+ connection = network.add_connection(self._name, settings)
obj = self._bus.get_object(_NM_SERVICE, _NM_PATH)
netmgr = dbus.Interface(obj, _NM_IFACE)
@@ -357,8 +361,6 @@ class AccessPointView(CanvasPulsingIcon):
error_handler=self.__activate_error_cb)
def __activate_reply_cb(self, connection):
- if self._connection:
- self._connection.save()
logging.debug('Connection activated: %s', connection)
def __activate_error_cb(self, err):
diff --git a/src/jarabe/journal/model.py b/src/jarabe/journal/model.py
index b399ad6..663cb12 100644
--- a/src/jarabe/journal/model.py
+++ b/src/jarabe/journal/model.py
@@ -336,7 +336,7 @@ class InplaceResultSet(BaseResultSet):
self.progress.send(self)
except Exception:
- logging.error('Error reading file %r: %r' % \
+ logging.error('Error reading file %r: %s' % \
(full_path, traceback.format_exc()))
if self._pending_directories == 0:
diff --git a/src/jarabe/model/network.py b/src/jarabe/model/network.py
index 3900649..bd4b7d1 100644
--- a/src/jarabe/model/network.py
+++ b/src/jarabe/model/network.py
@@ -16,6 +16,7 @@
import logging
import os
+import time
import dbus
import ConfigParser
@@ -87,7 +88,6 @@ class WirelessSecurity(object):
def get_dict(self):
wireless_security = {}
-
if self.key_mgmt is not None:
wireless_security['key-mgmt'] = self.key_mgmt
if self.proto is not None:
@@ -96,26 +96,35 @@ class WirelessSecurity(object):
wireless_security['pairwise'] = self.pairwise
if self.group is not None:
wireless_security['group'] = self.group
-
return wireless_security
class Wireless(object):
def __init__(self):
self.ssid = None
+ self.security = None
def get_dict(self):
- return {'ssid': self.ssid}
+ wireless = {'ssid': self.ssid}
+ if self.security:
+ wireless['security'] = self.security
+ return wireless
class Connection(object):
def __init__(self):
self.id = None
self.uuid = None
self.type = None
+ self.autoconnect = False
+ self.timestamp = None
def get_dict(self):
- return {'id': self.id,
- 'uuid': self.uuid,
- 'type': self.type}
+ connection = {'id': self.id,
+ 'uuid': self.uuid,
+ 'type': self.type,
+ 'autoconnect': self.autoconnect}
+ if self.timestamp:
+ connection['timestamp'] = self.timestamp
+ return connection
class Settings(object):
def __init__(self):
@@ -205,6 +214,11 @@ class NMSettingsConnection(dbus.service.Object):
self._settings = settings
self._secrets = secrets
+ def set_connected(self):
+ self._settings.connection.autoconnect = True
+ self._settings.connection.timestamp = int(time.time())
+ self.save()
+
def set_secrets(self, secrets):
self._secrets = secrets
self.save()
@@ -229,6 +243,10 @@ class NMSettingsConnection(dbus.service.Object):
config.set(identifier, 'type', self._settings.connection.type)
config.set(identifier, 'ssid', self._settings.wireless.ssid)
config.set(identifier, 'uuid', self._settings.connection.uuid)
+ config.set(identifier, 'autoconnect',
+ self._settings.connection.autoconnect)
+ config.set(identifier, 'timestamp',
+ self._settings.connection.timestamp)
if self._settings.wireless_security is not None:
if self._settings.wireless_security.key_mgmt is not None:
@@ -243,6 +261,9 @@ class NMSettingsConnection(dbus.service.Object):
if self._settings.wireless_security.group is not None:
config.set(identifier, 'group',
self._settings.wireless_security.group)
+ if self._settings.wireless.security is not None:
+ config.set(identifier, 'security',
+ self._settings.wireless.security)
if self._secrets is not None:
if self._settings.wireless_security.key_mgmt == 'none':
config.set(identifier, 'key', self._secrets.wep_key)
@@ -339,6 +360,10 @@ def load_connections():
settings.connection.uuid = uuid
nmtype = config.get(section, 'type')
settings.connection.type = nmtype
+ autoconnect = bool(config.get(section, 'autoconnect'))
+ settings.connection.autoconnect = autoconnect
+ timestamp = int(config.get(section, 'timestamp'))
+ settings.connection.timestamp = timestamp
secrets = None
if config.has_option(section, 'key-mgmt'):
@@ -346,6 +371,8 @@ def load_connections():
settings.wireless_security = WirelessSecurity()
mgmt = config.get(section, 'key-mgmt')
settings.wireless_security.key_mgmt = mgmt
+ security = config.get(section, 'security')
+ settings.wireless.security = security
key = config.get(section, 'key')
if mgmt == 'none':
secrets.wep_key = key