changeset 165:8a2053de6f8c

Frontends: management of unlaunched SàT Backend (information message and exit) DBus Bridge Frontend: added an exception to manage unlaunched SàT Backend (BridgeExceptionNoService) Quick App, jp: a message is print when the previous exception is launched
author Goffi <goffi@goffi.org>
date Mon, 09 Aug 2010 21:36:31 +0800
parents 5d7a011d78ba
children b318d2b58887
files frontends/jp/jp frontends/quick_frontend/quick_app.py frontends/sat_bridge_frontend/DBus.py
diffstat 3 files changed, 29 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/frontends/jp/jp	Mon Aug 09 19:09:43 2010 +0800
+++ b/frontends/jp/jp	Mon Aug 09 21:36:31 2010 +0800
@@ -55,7 +55,7 @@
 import pdb
 from tools.jid import JID
 import gobject
-from sat_bridge_frontend.DBus import DBusBridgeFrontend
+from sat_bridge_frontend.DBus import DBusBridgeFrontend,BridgeExceptionNoService
 import tarfile
 try:
     from progressbar import ProgressBar, Percentage, Bar, ETA, FileTransferSpeed
@@ -69,7 +69,12 @@
 
 class JP():
     def __init__(self):
-        self.bridge=DBusBridgeFrontend()
+        try:
+            self.bridge=DBusBridgeFrontend()
+        except BridgeExceptionNoService:
+            print(_(u"Can't connect to SàT backend, are you sure it's launched ?"))
+            import sys
+            sys.exit(1)
         self.transfert_id = None
 
     def check_options(self):
--- a/frontends/quick_frontend/quick_app.py	Mon Aug 09 19:09:43 2010 +0800
+++ b/frontends/quick_frontend/quick_app.py	Mon Aug 09 21:36:31 2010 +0800
@@ -21,7 +21,7 @@
 
 from logging import debug, info, error
 from tools.jid  import JID
-from sat_bridge_frontend.DBus import DBusBridgeFrontend
+from sat_bridge_frontend.DBus import DBusBridgeFrontend,BridgeExceptionNoService
 from optparse import OptionParser
 import pdb
 
@@ -38,7 +38,12 @@
         self.check_options()
         
         ## bridge ##
-        self.bridge=DBusBridgeFrontend()
+        try:
+            self.bridge=DBusBridgeFrontend()
+        except BridgeExceptionNoService:
+            print(_(u"Can't connect to SàT backend, are you sure it's launched ?"))
+            import sys
+            sys.exit(1)
         self.bridge.register("connected", self.connected)
         self.bridge.register("disconnected", self.disconnected)
         self.bridge.register("newContact", self.newContact)
--- a/frontends/sat_bridge_frontend/DBus.py	Mon Aug 09 19:09:43 2010 +0800
+++ b/frontends/sat_bridge_frontend/DBus.py	Mon Aug 09 21:36:31 2010 +0800
@@ -22,16 +22,24 @@
 from bridge_frontend import BridgeFrontend
 import dbus, dbus.glib
 
+class BridgeExceptionNoService(Exception):
+    pass
 
 class DBusBridgeFrontend(BridgeFrontend):
     def __init__(self):
-        self.sessions_bus = dbus.SessionBus()
-        self.db_object = self.sessions_bus.get_object('org.goffi.SAT',
-                              '/org/goffi/SAT/bridge')
-        self.db_comm_iface = dbus.Interface(self.db_object,
-                            dbus_interface='org.goffi.SAT.communication')
-        self.db_req_iface = dbus.Interface(self.db_object,
-                            dbus_interface='org.goffi.SAT.request')
+        try:
+            self.sessions_bus = dbus.SessionBus()
+            self.db_object = self.sessions_bus.get_object('org.goffi.SAT',
+                                '/org/goffi/SAT/bridge')
+            self.db_comm_iface = dbus.Interface(self.db_object,
+                                dbus_interface='org.goffi.SAT.communication')
+            self.db_req_iface = dbus.Interface(self.db_object,
+                                dbus_interface='org.goffi.SAT.request')
+        except dbus.exceptions.DBusException,e:
+            if e._dbus_error_name=='org.freedesktop.DBus.Error.ServiceUnknown':
+                raise BridgeExceptionNoService
+            else:
+                raise e
         #props = self.db_comm_iface.getProperties()
 
     def register(self, functionName, handler, iface="communication"):