Mercurial > libervia-backend
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):