diff frontends/src/wix/main_window.py @ 759:93bd868b8fb6

backend, frontends: callbacks refactoring: - launchAction is now async, and return a dictionary for its result - no more action_id, actionResult* are deprecated - callback system is about to be unified
author Goffi <goffi@goffi.org>
date Tue, 24 Dec 2013 15:19:08 +0100
parents e3ad48a2aab2
children bfabeedbf32e
line wrap: on
line diff
--- a/frontends/src/wix/main_window.py	Tue Dec 24 15:19:08 2013 +0100
+++ b/frontends/src/wix/main_window.py	Tue Dec 24 15:19:08 2013 +0100
@@ -238,6 +238,39 @@
             self.tools.Disable()
         return
 
+    def launchAction(self, callback_id, data=None, profile_key="@NONE@"):
+        """ Launch a dynamic action
+        @param callback_id: id of the action to launch
+        @param data: data needed only for certain actions
+        @param profile_key: %(doc_profile_key)s
+
+        """
+        if data is None:
+            data = dict()
+        def action_cb(data):
+            if not data:
+                # action was a one shot, nothing to do
+                pass
+            elif "xmlui" in data:
+                debug (_("XML user interface received"))
+                XMLUI(self, xml_data = data['xmlui'])
+            else:
+                dlg = wx.MessageDialog(self, _(u"Unmanaged action result"),
+                                       _('Error'),
+                                       wx.OK | wx.ICON_ERROR
+                                      )
+                dlg.ShowModal()
+                dlg.Destroy()
+        def action_eb(failure):
+            dlg = wx.MessageDialog(self, unicode(failure),
+                                   _('Error'),
+                                   wx.OK | wx.ICON_ERROR
+                                  )
+            dlg.ShowModal()
+            dlg.Destroy()
+
+        self.bridge.launchAction(callback_id, data, profile_key, callback=action_cb, errback=action_eb)
+
     def askConfirmation(self, confirmation_id, confirmation_type, data, profile):
         #TODO: refactor this in QuickApp
         if not self.check_profile(profile):