# HG changeset patch # User Goffi # Date 1481667041 -3600 # Node ID af4f986d86f0f8e468c11551c203ca088d0b67e1 # Parent 1922506846bed32e18911c3c6c20127d65acfc66 core: pb bridge implementation: - media_dir is now gotten directly from config - replaced sync bridge calls by async ones - pb is now the bridge used in sat.conf for Android diff -r 1922506846be -r af4f986d86f0 src/cagou/core/cagou_main.py --- a/src/cagou/core/cagou_main.py Sun Dec 04 21:34:30 2016 +0100 +++ b/src/cagou/core/cagou_main.py Tue Dec 13 23:10:41 2016 +0100 @@ -34,12 +34,13 @@ import kivy kivy.require('1.9.1') import kivy.support -bridge_name = config.getConfig(config.parseMainConf(), '', 'bridge', 'dbus') +main_config = config.parseMainConf() +bridge_name = config.getConfig(main_config, '', 'bridge', 'dbus') # FIXME: event loop is choosen according to bridge_name, a better way should be used -if bridge_name == 'embedded': +if 'dbus' in bridge_name: + kivy.support.install_gobject_iteration() +elif bridge_name in ('pb', 'embedded'): kivy.support.install_twisted_reactor() -else: - kivy.support.install_gobject_iteration() from kivy.app import App from kivy.lang import Builder from kivy import properties @@ -60,7 +61,6 @@ import glob import cagou.plugins import cagou.kv -from sat.core import sat_main from kivy import utils as kivy_utils import sys if kivy_utils.platform == "android": @@ -232,6 +232,7 @@ def __init__(self): if bridge_name == 'embedded': + from sat.core import sat_main self.sat = sat_main.SAT() bridge_module = dynamic_import.bridge(bridge_name, 'sat_frontends.bridge') if bridge_module is None: @@ -239,11 +240,11 @@ sys.exit(1) else: log.info(u"Loading {} bridge".format(bridge_name)) - super(Cagou, self).__init__(create_bridge=bridge_module.Bridge, xmlui=xmlui, check_options=quick_utils.check_options) + super(Cagou, self).__init__(bridge_factory=bridge_module.Bridge, xmlui=xmlui, check_options=quick_utils.check_options, connect_bridge=False) self._import_kv() self.app = CagouApp() self.app.host = self - self.media_dir = self.app.media_dir = self.bridge.getConfig("", "media_dir") + self.media_dir = self.app.media_dir = config.getConfig(main_config, '', 'media_dir') self.app.default_avatar = os.path.join(self.media_dir, "misc/default_avatar.png") self._plg_wids = [] # widget plugins self._import_plugins() @@ -255,8 +256,12 @@ for w in w_list: yield w + def _bridgeCb(self): + super(Cagou, self)._bridgeCb() + self.bridge.getReady(self.onBackendReady) + def run(self): - self.bridge.getReady(self.onBackendReady) + self.connectBridge() self.app.bind(on_stop=self.onStop) self.app.run() diff -r 1922506846be -r af4f986d86f0 src/cagou/core/profile_manager.py --- a/src/cagou/core/profile_manager.py Sun Dec 04 21:34:30 2016 +0100 +++ b/src/cagou/core/profile_manager.py Tue Dec 13 23:10:41 2016 +0100 @@ -132,10 +132,8 @@ def __init__(self, pm): self.pm = pm - profiles = G.host.bridge.getProfilesList() - profiles.sort() self.list_adapter = ProfileListAdapter(pm, - data=profiles, + data=[], cls=ProfileItem, args_converter=self.converter, selection_mode='multiple', @@ -145,6 +143,11 @@ self.layout.add_widget(listview.ListView(adapter=self.list_adapter)) connect_btn = ConnectButton(self) self.layout.add_widget(connect_btn) + self.reload() + + def _getProfilesListCb(self, profiles): + profiles.sort() + self.list_adapter.data = profiles def converter(self, row_idx, obj): return {'text': obj, @@ -153,9 +156,7 @@ def reload(self): """Reload profiles list""" - profiles = G.host.bridge.getProfilesList() - profiles.sort() - self.list_adapter.data = profiles + G.host.bridge.getProfilesList(callback=self._getProfilesListCb) class ProfileManager(QuickProfileManager, BoxLayout): diff -r 1922506846be -r af4f986d86f0 src/sat.conf --- a/src/sat.conf Sun Dec 04 21:34:30 2016 +0100 +++ b/src/sat.conf Tue Dec 13 23:10:41 2016 +0100 @@ -1,5 +1,5 @@ [DEFAULT] -bridge = embedded +bridge = pb log_level = debug log_fmt = [%%(levelname)s][%%(name)s] %%(message)s