changeset 63:af4f986d86f0

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
author Goffi <goffi@goffi.org>
date Tue, 13 Dec 2016 23:10:41 +0100
parents 1922506846be
children 8e16abcadbb8
files src/cagou/core/cagou_main.py src/cagou/core/profile_manager.py src/sat.conf
diffstat 3 files changed, 21 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- 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()
 
--- 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):
--- 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