aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2011-07-07 00:14:22 +0200
committerGuido Günther <agx@sigxcpu.org>2011-07-07 00:16:40 +0200
commit337321839f63d7c4d96407b21b9a5430f6a0bbd8 (patch)
treeb74f4f552822ba39065893c6c2ea27fd8b6d9a2c /src
parent407c322971dc68ff4f75038c7fe4b8c47451aaa3 (diff)
Use GDBus
Diffstat (limited to 'src')
-rw-r--r--src/ppm/modemproxy.py86
-rwxr-xr-xsrc/prepaid-manager-applet.py13
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)