- if ( info.HasDevelopers() )
- gtk_about_dialog_set_authors(dlg, GtkArray(info.GetDevelopers()));
- if ( info.HasDocWriters() )
- gtk_about_dialog_set_documenters(dlg, GtkArray(info.GetDocWriters()));
- if ( info.HasArtists() )
- gtk_about_dialog_set_artists(dlg, GtkArray(info.GetArtists()));
+void wxAboutBox(const wxAboutDialogInfo& info, wxWindow* WXUNUSED(parent))
+{
+ // don't create another dialog if one is already present
+ if ( !gs_aboutDialog )
+ gs_aboutDialog = GTK_ABOUT_DIALOG(gtk_about_dialog_new());
+
+ GtkAboutDialog * const dlg = gs_aboutDialog;
+ gtk_about_dialog_set_program_name(dlg, wxGTK_CONV_SYS(info.GetName()));
+ if ( info.HasVersion() )
+ gtk_about_dialog_set_version(dlg, wxGTK_CONV_SYS(info.GetVersion()));
+ else
+ gtk_about_dialog_set_version(dlg, NULL);
+ if ( info.HasCopyright() )
+ gtk_about_dialog_set_copyright(dlg, wxGTK_CONV_SYS(info.GetCopyrightToDisplay()));
+ else
+ gtk_about_dialog_set_copyright(dlg, NULL);
+ if ( info.HasDescription() )
+ gtk_about_dialog_set_comments(dlg, wxGTK_CONV_SYS(info.GetDescription()));
+ else
+ gtk_about_dialog_set_comments(dlg, NULL);
+ if ( info.HasLicence() )
+ gtk_about_dialog_set_license(dlg, wxGTK_CONV_SYS(info.GetLicence()));
+ else
+ gtk_about_dialog_set_license(dlg, NULL);
+
+ wxIcon icon = info.GetIcon();
+ if ( icon.IsOk() )
+ gtk_about_dialog_set_logo(dlg, info.GetIcon().GetPixbuf());
+
+ if ( info.HasWebSite() )
+ {
+#ifdef __WXGTK3__
+ g_signal_connect(dlg, "activate-link", G_CALLBACK(activate_link), dlg);
+#else
+ // NB: must be called before gtk_about_dialog_set_website() as
+ // otherwise it has no effect (although GTK+ docs don't mention
+ // this...)
+ gtk_about_dialog_set_url_hook(wxGtkAboutDialogOnLink, NULL, NULL);
+#endif
+
+ gtk_about_dialog_set_website(dlg, wxGTK_CONV_SYS(info.GetWebSiteURL()));
+ gtk_about_dialog_set_website_label
+ (
+ dlg,
+ wxGTK_CONV_SYS(info.GetWebSiteDescription())
+ );
+ }
+ else
+ {
+ gtk_about_dialog_set_website(dlg, NULL);
+ gtk_about_dialog_set_website_label(dlg, NULL);
+#ifdef __WXGTK3__
+ g_signal_connect(dlg, "activate-link", G_CALLBACK(activate_link), NULL);
+#else
+ gtk_about_dialog_set_url_hook(NULL, NULL, NULL);
+#endif
+ }