diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ppm/modemproxy.py | 86 | ||||
-rwxr-xr-x | src/prepaid-manager-applet.py | 13 |
2 files changed, 55 insertions, 44 deletions
diff --git a/src/ppm/modemproxy.py b/src/ppm/modemproxy.py index 6d2e32f..fa06dd5 100644 --- a/src/ppm/modemproxy.py +++ b/src/ppm/modemproxy.py @@ -16,10 +16,10 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -import dbus -import dbus.glib -import dbus.service +import glib from gi.repository import GObject +from gi.repository import GLib +from gi.repository import Gio class ModemError(Exception): @@ -58,7 +58,7 @@ class ModemManagerProxy(GObject.GObject): def __init__(self): self.__gobject_init__() - self.bus = dbus.SystemBus() + self.bus = Gio.bus_get_sync(Gio.BusType.SYSTEM, None) self.request = None self.reply_func = None self.error_func = None @@ -67,7 +67,6 @@ class ModemManagerProxy(GObject.GObject): def set_modem(self, modem): self.modem = modem - self.obj = self.bus.get_object(self.MM_DBUS_SERVICE, self.modem) def mm_request(func): def wrapped_f( self, *args, **kw) : @@ -77,8 +76,7 @@ class ModemManagerProxy(GObject.GObject): if kw.has_key('error_func'): self.error_func = kw['error_func'] self.emit('request-started', self) - ret = func(self, *args, **kw) - return ret + func(self, *args, **kw) wrapped_f.__name__= func.__name__ wrapped_f.__doc__= func.__doc__ return wrapped_f @@ -102,33 +100,41 @@ class ModemManagerProxy(GObject.GObject): return False @mm_request_done - def handle_dbus_reply(self, *args): - if self.reply_func: - self.reply_func(*args) - - @mm_request_done - def handle_dbus_error(self, e): - if self.error_func: - me = ModemError("%s failed: %s" % (self.request, e)) - self.error_func(me) + def handle_dbus_reply(self, obj, result, user_data): + try: + res = obj.call_finish(result) + if self.reply_func: + self.reply_func(res, user_data) + except glib.GError as err: + if self.error_func: + me = ModemError("%s failed: %s" % (self.request, err)) + self.error_func(me) def get_modems(self): - modems = [] - proxy = self.bus.get_object(self.MM_DBUS_SERVICE, - self.MM_DBUS_OBJECT_MODEM_MANAGER) - mm = dbus.Interface(proxy, - dbus_interface=self.MM_DBUS_INTERFACE_MODEM_MANAGER) + modems = [] + mm = Gio.DBusProxy.new_sync(self.bus, + Gio.DBusProxyFlags.NONE, + None, + self.MM_DBUS_SERVICE, + self.MM_DBUS_OBJECT_MODEM_MANAGER, + self.MM_DBUS_INTERFACE_MODEM_MANAGER, + None) ret = mm.EnumerateDevices() for modem in ret: modems.append(modem) return modems def get_imsi(self): - card = dbus.Interface(self.obj, - dbus_interface=self.MM_DBUS_INTERFACE_MODEM_GSM_CARD) + card = Gio.DBusProxy.new_sync(self.bus, + Gio.DBusProxyFlags.NONE, + None, + self.MM_DBUS_SERVICE, + self.modem, + self.MM_DBUS_INTERFACE_MODEM_GSM_CARD, + None) try: return card.GetImsi() - except dbus.exceptions.DBusException as msg: + except glib.GError as msg: raise ModemError("Getting IMSI failed: %s" % msg) def get_network_id(self): @@ -139,20 +145,30 @@ class ModemManagerProxy(GObject.GObject): @mm_request def ussd_initiate(self, command, reply_func=None, error_func=None): - ussd = dbus.Interface(self.obj, - dbus_interface=self.MM_DBUS_INTERFACE_MODEM_GSM_USSD) - return ussd.Initiate(command, - reply_handler=self.handle_dbus_reply, - error_handler=self.handle_dbus_error) + ussd = Gio.DBusProxy.new_sync(self.bus, + Gio.DBusProxyFlags.NONE, + None, + self.MM_DBUS_SERVICE, + self.modem, + self.MM_DBUS_INTERFACE_MODEM_GSM_USSD, + None) + ussd.call("Initiate", GLib.Variant('(s)', (command,)), + Gio.DBusCallFlags.NO_AUTO_START, 5000, None, + self.handle_dbus_reply, None) @mm_request def _modem__enable(self, enable, reply_func=None, error_func=None): - ussd = dbus.Interface(self.obj, - dbus_interface=self.MM_DBUS_INTERFACE_MODEM) - ussd.Enable(enable, - reply_handler=self.handle_dbus_reply, - error_handler=self.handle_dbus_error) - + ussd = Gio.DBusProxy.new_sync(self.bus, + Gio.DBusProxyFlags.NONE, + None, + self.MM_DBUS_SERVICE, + self.modem, + self.MM_DBUS_INTERFACE_MODEM, + None) + ussd.call("Enable", GLib.Variant('(b)', (enable,)), + Gio.DBusCallFlags.NO_AUTO_START, 1000, None, + self.handle_dbus_reply, None) + def modem_enable(self, reply_func=None, error_func=None): self._modem__enable(True) diff --git a/src/prepaid-manager-applet.py b/src/prepaid-manager-applet.py index 860e8e6..722fbf3 100755 --- a/src/prepaid-manager-applet.py +++ b/src/prepaid-manager-applet.py @@ -18,8 +18,6 @@ # -import dbus -import dbus.mainloop.glib import gettext from gi.repository import GObject import glib @@ -216,12 +214,14 @@ class PPMController(GObject.GObject): logging.debug("Finished modem request") self.view.close_modem_response() - def on_balance_info_fetched(self, balance, *args): + def on_balance_info_fetched(self, var, user_data): """Callback for succesful MM fetch balance info call""" + balance = var.unpack()[0] self.emit('balance-info-changed', balance) - def on_balance_topped_up(self, reply): + def on_balance_topped_up(self, var, user_data): """Callback for succesful MM topup balance call""" + reply = var.unpack()[0] self.view.update_top_up_information(reply) def on_modem_error(self, e): @@ -640,10 +640,6 @@ def setup_i18n(): logging.debug('Using locale: %s', locale.getlocale()) -def setup_dbus(): - dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) - - def setup_schemas(): """If we're running from the source tree add our gsettings schema to the list of schema dirs""" @@ -681,7 +677,6 @@ def main(args): setup_i18n() setup_prgname() setup_schemas() - setup_dbus() controller = PPMController() main_dialog = PPMDialog(controller) |