diff options
author | Aleksey Lim <alsroot@sugarlabs.org> | 2012-07-24 20:16:43 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@sugarlabs.org> | 2012-07-24 20:16:43 (GMT) |
commit | 3f9d5bb5ab150ed1d9c7d4a2f8ddf55aef07e645 (patch) | |
tree | 7a3302aa9b3f966ae6bfd5554c2b6046ada3b570 /plugin/__init__.py | |
parent | c869ea9e4b0f0d2a35174e727b563bfc9160b81b (diff) |
Move CP section to sweets-desktop; add binding file to start DBus services
Diffstat (limited to 'plugin/__init__.py')
-rw-r--r-- | plugin/__init__.py | 73 |
1 files changed, 47 insertions, 26 deletions
diff --git a/plugin/__init__.py b/plugin/__init__.py index 61ede76..83d1a69 100644 --- a/plugin/__init__.py +++ b/plugin/__init__.py @@ -18,26 +18,22 @@ import logging import subprocess from gettext import gettext as _ +import gtk import dbus import gobject from sugar.graphics.alert import NotifyAlert, ErrorAlert from sugar_network import sugar, api_url, server_mode from active_toolkit.options import Option +from jarabe import plugins ORDER = 5 +TITLE = _('Sugar Network integration') SN_BROWSER_NAME = 'sugar-network-browser' - SN_MASER_URL = 'http://api-testing.network.sugarlabs.org' -sugar_network = Option( - 'enable Sugar Network support in Sugar Shell', - default=False, type_cast=Option.bool_cast, - action='store_true', name='sugar-network') - - _ALERT_SEVERITIES = { # severity: (alert_class, alert_message) 'error': (ErrorAlert, _('Sugar Network error')), @@ -50,21 +46,20 @@ _launcher = None _client = None _browser = None -Option.seek('sweets', [sugar_network]) Option.seek('local', [api_url, server_mode]) def init(): global _bundleregistry - if not sugar_network.value: - return - if api_url.value and api_url.value != SN_MASER_URL: # For now, keep only global SN server to make testing more relibale api_url.value = SN_MASER_URL Option.save() + # Activities are assumed to be handled by SN + plugins.blacklist('cpsection', 'updater') + import jarabe.model.bundleregistry from .bundleregistry import BundleRegistry @@ -76,15 +71,12 @@ def init(): from .browser import Palette Activity.get_bundle_path = _get_bundle_path - palettes.predefined[SN_BROWSER_NAME] = Palette + #palettes.predefined[SN_BROWSER_NAME] = Palette -def enable(): +def start(): global _launcher - if not sugar_network.value: - return - _bundleregistry.populate() from jarabe.journal import misc @@ -108,8 +100,44 @@ def enable(): shell.connect('activity-added', activity_added_cb) -def disable(): - pass +def control_panel_section(): + section = gtk.VBox() + + server_box = gtk.VBox() + section.pack_start(server_box) + master_button = gtk.RadioButton() + master_button.props.label = _('Connect to master server') + server_box.pack_start(master_button, expand=False) + discover_button = gtk.RadioButton(master_button) + discover_button.props.label = _('Auto discover server in local network') + server_box.pack_start(discover_button, expand=False) + + if api_url.value: + master_button.props.active = True + else: + discover_button.props.active = True + + server_mode_button = gtk.CheckButton() + server_mode_button.props.label = _('Behave as a Sugar Network server ' \ + 'providing data from mounted device') + server_mode_button.props.active = server_mode.value + section.pack_start(server_mode_button, expand=False) + + def master_toggled_cb(button, url): + api_url.value = url + Option.save() + + master_button.connect('toggled', master_toggled_cb, SN_MASER_URL) + discover_button.connect('toggled', master_toggled_cb, '') + + def server_mode_toggled_cb(button): + server_mode.value = button.props.active + Option.save() + + server_mode_button.connect('toggled', server_mode_toggled_cb) + + section.show_all() + return section def get_registry(): @@ -128,9 +156,6 @@ def get_client(): def get_browser(): global _browser - if not sugar_network.value: - return - if _browser is None: from .browser import Browser _browser = Browser() @@ -139,11 +164,7 @@ def get_browser(): def add_alert(severity, callback=None, **kwargs): - if sugar_network.value: - window = get_browser() - else: - from jarabe.journal.journalactivity import get_journal - window = get_journal() + window = get_browser() def response_cb(alert, response_id): window.remove_alert(alert) |