diff frontends/primitivus/primitivus @ 182:556c2bd7c344

Primitivus now implement showDialog + new "newAlert" bridge method to show a dialog from core
author Goffi <goffi@goffi.org>
date Wed, 18 Aug 2010 12:45:48 +0800
parents a566f654929e
children 9ee4a1d0d7fb
line wrap: on
line diff
--- a/frontends/primitivus/primitivus	Mon Aug 16 21:59:52 2010 +0800
+++ b/frontends/primitivus/primitivus	Wed Aug 18 12:45:48 2010 +0800
@@ -312,6 +312,34 @@
         if JID(self.contactList.selected).short != sender.short:
             self.contactList.putAlert(sender)
 
+    def _dialogOkCb(self, widget, data):
+        self.removePopUp()
+        answer_cb = data[0]
+        answer_data = [data[1]] if data[1] else []
+        answer_cb(True, *answer_data)
+
+    def _dialogCancelCb(self, widget, data):
+        self.removePopUp()
+        answer_cb = data[0]
+        answer_data = [data[1]] if data[1] else []
+        answer_cb(False, *answer_data)
+        
+
+    def showDialog(self, message, title="", type="info", answer_cb = None, answer_data = None):
+        if type == 'info':
+            popup = custom_widgets.Alert(unicode(title), unicode(message), ok_cb=answer_cb or self.removePopUp) #FIXME: remove unicode here when DBus Bridge will no return dbus.String anymore 
+            flags = wx.OK | wx.ICON_INFORMATION
+        elif type == 'error':
+            popup = custom_widgets.Alert(unicode(title), unicode(message), ok_cb=answer_cb or self.removePopUp) #FIXME: remove unicode here when DBus Bridge will no return dbus.String anymore 
+        elif type == 'yes/no':
+            popup = custom_widgets.ConfirmDialog(unicode(message),
+                    yes_cb=self._dialogOkCb, yes_value = (answer_cb, answer_data),
+                    no_cb=self._dialogCancelCb, no_value = (answer_cb, answer_data))
+        else:
+            popup = custom_widgets.Alert(unicode(title), unicode(message), ok_cb=answer_cb or self.removePopUp) #FIXME: remove unicode here when DBus Bridge will no return dbus.String anymore 
+            error(_('unmanaged dialog type: %s'), type)
+        self.showPopUp(popup)
+    
     def onNotification(self, notBar):
         """Called when a new notification has been received"""
         if not isinstance(self.main_widget, custom_widgets.FocusFrame):