return icon;
}
+wxString wxAboutDialogInfo::GetCopyrightToDisplay() const
+{
+ wxString ret = m_copyright;
+
+#if wxUSE_UNICODE
+ const wxString copyrightSign = wxString::FromUTF8("\xc2\xa9");
+ ret.Replace("(c)", copyrightSign);
+ ret.Replace("(C)", copyrightSign);
+#endif // wxUSE_UNICODE
+
+ return ret;
+}
+
// ----------------------------------------------------------------------------
// wxGenericAboutDialog
// ----------------------------------------------------------------------------
-bool wxGenericAboutDialog::Create(const wxAboutDialogInfo& info)
+bool wxGenericAboutDialog::Create(const wxAboutDialogInfo& info, wxWindow* parent)
{
- // TODO: should we use main frame as parent by default here?
- if ( !wxDialog::Create(NULL, wxID_ANY, _("About ") + info.GetName(),
+ if ( !wxDialog::Create(parent, wxID_ANY, _("About ") + info.GetName(),
wxDefaultPosition, wxDefaultSize, wxRESIZE_BORDER|wxDEFAULT_DIALOG_STYLE) )
return false;
m_sizerText->Add(label, wxSizerFlags().Centre().Border());
m_sizerText->AddSpacer(5);
- AddText(info.GetCopyright());
+ AddText(info.GetCopyrightToDisplay());
AddText(info.GetDescription());
if ( info.HasWebSite() )
#if wxUSE_COLLPANE
if ( info.HasLicence() )
- AddCollapsiblePane(wxT("License"), info.GetLicence());
+ AddCollapsiblePane(_("License"), info.GetLicence());
if ( info.HasDevelopers() )
- AddCollapsiblePane(wxT("Developers"),
+ AddCollapsiblePane(_("Developers"),
AllAsString(info.GetDevelopers()));
if ( info.HasDocWriters() )
- AddCollapsiblePane(wxT("Documentation writers"),
+ AddCollapsiblePane(_("Documentation writers"),
AllAsString(info.GetDocWriters()));
if ( info.HasArtists() )
- AddCollapsiblePane(wxT("Artists"),
+ AddCollapsiblePane(_("Artists"),
AllAsString(info.GetArtists()));
if ( info.HasTranslators() )
- AddCollapsiblePane(wxT("Translators"),
+ AddCollapsiblePane(_("Translators"),
AllAsString(info.GetTranslators()));
#endif // wxUSE_COLLPANE
wxSizer *sizerTop = new wxBoxSizer(wxVERTICAL);
sizerTop->Add(sizerIconAndText, wxSizerFlags(1).Expand().Border());
+// Mac typically doesn't use OK buttons just for dismissing dialogs.
+#if !defined(__WXMAC__)
wxSizer *sizerBtns = CreateButtonSizer(wxOK);
if ( sizerBtns )
{
sizerTop->Add(sizerBtns, wxSizerFlags().Expand().Border());
}
+#endif
SetSizerAndFit(sizerTop);
- CentreOnScreen();
+ CentreOnParent();
return true;
}
// public functions
// ----------------------------------------------------------------------------
-void wxGenericAboutBox(const wxAboutDialogInfo& info)
+void wxGenericAboutBox(const wxAboutDialogInfo& info, wxWindow* parent)
{
- wxGenericAboutDialog dlg(info);
+#if !defined(__WXGTK__) && !defined(__WXMAC__)
+ wxGenericAboutDialog dlg(info, parent);
dlg.ShowModal();
+#else
+ wxGenericAboutDialog* dlg = new wxGenericAboutDialog(info, parent);
+ dlg->Show();
+#endif
}
// currently wxAboutBox is implemented natively only under these platforms, for
// the others we provide a generic fallback here
#if !defined(__WXMSW__) && !defined(__WXMAC__) && !defined(__WXGTK26__)
-void wxAboutBox(const wxAboutDialogInfo& info)
+void wxAboutBox(const wxAboutDialogInfo& info, wxWindow* parent)
{
- wxGenericAboutBox(info);
+ wxGenericAboutBox(info, parent);
}
#endif // platforms without native about dialog