public static int PopupMessage(Widget sender, MessageType type, String errorMessage, CustomizeDialog customize = null) { Window toplevel; int ret; if (sender != null) { toplevel = sender.Toplevel as Window; } else { toplevel = null; } MessageDialog md = new MessageDialog(toplevel, DialogFlags.Modal, type, ButtonsType.Ok, errorMessage); md.Icon = Misc.LoadIcon(App.Current.SoftwareIconName, Gtk.IconSize.Dialog, 0); try { var vbox = md.MessageDialogGetMessageArea(); var label = (Label)vbox.Children [0]; label.SetLinkHandler(url => { try { App.Current.NetworkManager.OpenURL(url); } catch (Exception ex) { Log.WarningFormat("Could not spawn process for url {0}\n{1}", url, ex); } }); } catch (Exception ex) { Log.WarningFormat("Could not set link handler for Message Dialog\n{0}", ex); } if (customize != null) { customize(md); } ret = md.Run(); md.Destroy(); return(ret); }