[kupfer] gwibber: Use async error reporting



commit 904639870aae3fccd5386075c22cbaefc256a32b
Author: Ulrik Sverdrup <ulrik sverdrup gmail com>
Date:   Mon Feb 28 18:24:34 2011 +0100

    gwibber: Use async error reporting

 kupfer/plugin/gwibber.py |   21 ++++++++++++---------
 1 files changed, 12 insertions(+), 9 deletions(-)
---
diff --git a/kupfer/plugin/gwibber.py b/kupfer/plugin/gwibber.py
index 1e18047..08c8097 100644
--- a/kupfer/plugin/gwibber.py
+++ b/kupfer/plugin/gwibber.py
@@ -11,6 +11,7 @@ __author__ = ""
 import dbus
 
 from kupfer.objects import Action, TextLeaf, OperationError
+from kupfer import commandexec
 from kupfer import plugin_support
 from kupfer import pretty
 
@@ -40,22 +41,24 @@ def _get_interface(activate=False):
 		return
 	return dbus.Interface(proxyobj, IFACE_NAME)
 
-# callback function for async callbacks
-def success():
-	pretty.print_debug(__name__, "Successful D-Bus method call")
-
-def error(exc):
-	pretty.print_error(__name__, "Encountered error in D-Bus method call:")
-	pretty.print_error(__name__, exc)
-
 class SendUpdate (Action):
 	def __init__(self):
 		Action.__init__(self, _("Send Update"))
 	def activate(self, leaf):
+		ctx = commandexec.DefaultActionExecutionContext()
+		token = ctx.get_async_token()
+
+		def success_cb():
+			pretty.print_debug(__name__, "Successful D-Bus method call")
+
+		def err_cb(exc):
+			exc_info = (type(exc), exc, None)
+			ctx.register_late_error(token, exc_info)
+
 		gwibber = _get_interface(True)
 		if gwibber:
 			gwibber.SendMessage(leaf.object,
-			                    reply_handler=success, error_handler=error)
+			                    reply_handler=success_cb, error_handler=err_cb)
 		else:
 			pretty.print_error(__name__, "Gwibber Service not found as:",
 			                   (SERVICE_NAME, OBJ_NAME, IFACE_NAME))



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]