primitivus, jp: dynamic bridge + fixed D-Bus bridge:
Primitivus and jp can now load the bridge specified in sat.conf, but they are only working with D-Bus so far (need to change all sync calls to async).
Exit code 3 is used for Bridge init error.
This commit is contained in:
parent
be8d681be7
commit
0a5fd6f3f4
1 changed files with 114 additions and 29 deletions
|
|
@ -28,7 +28,6 @@ from sat.tools import config as sat_config
|
|||
import urwid
|
||||
from urwid.util import is_wide_char
|
||||
from urwid_satext import sat_widgets
|
||||
from sat_frontends.bridge.dbus_bridge import Bridge
|
||||
from sat_frontends.quick_frontend.quick_app import QuickApp
|
||||
from sat_frontends.quick_frontend import quick_utils
|
||||
from sat_frontends.quick_frontend import quick_chat
|
||||
|
|
@ -41,9 +40,17 @@ from sat_frontends.primitivus.notify import Notify
|
|||
from sat_frontends.primitivus.keys import action_key_map as a_key
|
||||
from sat_frontends.primitivus import config
|
||||
from sat_frontends.tools.misc import InputHistory
|
||||
from sat.tools.common import dynamic_import
|
||||
from sat_frontends.tools import jid
|
||||
import signal
|
||||
import sys
|
||||
## bridge handling
|
||||
# we get bridge name from conf and initialise the right class accordingly
|
||||
main_config = sat_config.parseMainConf()
|
||||
bridge_name = sat_config.getConfig(main_config, '', 'bridge', 'dbus')
|
||||
if 'dbus' not in bridge_name:
|
||||
print(u"only D-Bus bridge is currently supported")
|
||||
sys.exit(3)
|
||||
|
||||
|
||||
class EditBar(sat_widgets.ModalEdit):
|
||||
|
|
@ -276,11 +283,18 @@ class PrimitivusApp(QuickApp, InputHistory):
|
|||
AVATAR_HANDLER = False
|
||||
|
||||
def __init__(self):
|
||||
QuickApp.__init__(self, create_bridge=Bridge, xmlui=xmlui, check_options=quick_utils.check_options)
|
||||
|
||||
bridge_module = dynamic_import.bridge(bridge_name, 'sat_frontends.bridge')
|
||||
if bridge_module is None:
|
||||
log.error(u"Can't import {} bridge".format(bridge_name))
|
||||
sys.exit(3)
|
||||
else:
|
||||
log.debug(u"Loading {} bridge".format(bridge_name))
|
||||
QuickApp.__init__(self, bridge_factory=bridge_module.Bridge, xmlui=xmlui, check_options=quick_utils.check_options, connect_bridge=False)
|
||||
## main loop setup ##
|
||||
self.main_widget = ProfileManager(self)
|
||||
self.loop = urwid.MainLoop(self.main_widget, C.PALETTE, event_loop=urwid.GLibEventLoop(), input_filter=self.inputFilter, unhandled_input=self.keyHandler)
|
||||
event_loop = urwid.GLibEventLoop if 'dbus' in bridge_name else urwid.TwistedEventLoop
|
||||
self.loop = urwid.MainLoop(urwid.SolidFill(), C.PALETTE, event_loop=event_loop(), input_filter=self.inputFilter, unhandled_input=self.keyHandler)
|
||||
|
||||
def onBridgeConnected(self):
|
||||
|
||||
##misc setup##
|
||||
self._visible_widgets = set()
|
||||
|
|
@ -302,6 +316,9 @@ class PrimitivusApp(QuickApp, InputHistory):
|
|||
sys.stdout.write("\033[?2004h")
|
||||
self._bracketed_mode_set = True
|
||||
|
||||
self.loop.widget = self.main_widget = ProfileManager(self)
|
||||
self.postInit()
|
||||
|
||||
@property
|
||||
def visible_widgets(self):
|
||||
return self._visible_widgets
|
||||
|
|
@ -343,8 +360,7 @@ class PrimitivusApp(QuickApp, InputHistory):
|
|||
pass
|
||||
|
||||
def start(self):
|
||||
self.i = 0
|
||||
self.loop.set_alarm_in(0,lambda a,b: self.postInit())
|
||||
self.connectBridge()
|
||||
self.loop.run()
|
||||
|
||||
def postInit(self):
|
||||
|
|
@ -813,5 +829,5 @@ class PrimitivusApp(QuickApp, InputHistory):
|
|||
else:
|
||||
log.warning(u"No ContactList widget found for profile {}".format(profile))
|
||||
|
||||
sat = PrimitivusApp()
|
||||
sat.start()
|
||||
primitivus = PrimitivusApp()
|
||||
primitivus.start()
|
||||
|
|
|
|||
Loading…
Reference in a new issue