From: Vadim Zeitlin Date: Sat, 25 Jul 2009 22:53:23 +0000 (+0000) Subject: Allow setting long version field in About dialog. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/704006b381ff98a16a8ce122dd0ae30cad7a6fca Allow setting long version field in About dialog. Long version is constructed by concatenating "Version " with the short version but can be overridden for the platforms which use it (currently MSW and OS X). Closes 11027. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61534 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/docs/changes.txt b/docs/changes.txt index 394eb63f5d..0835fd93b7 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -384,6 +384,7 @@ All (GUI): - Added wxTextWrapper helper class useful for wrapping lines of text. - Added EVT_DATAVIEW_CACHE_HINT() event (Trigve). - Added wxLB_NO_SB style (implemented for MSW only; Dario Senic). +- Added long version field to wxAboutDialogInfo (Jeff Tupper). GTK: diff --git a/include/wx/aboutdlg.h b/include/wx/aboutdlg.h index 8a4ccb36a1..9c5a12ee03 100644 --- a/include/wx/aboutdlg.h +++ b/include/wx/aboutdlg.h @@ -36,10 +36,20 @@ public: wxString GetName() const { return m_name.empty() ? wxTheApp->GetAppDisplayName() : m_name; } - // version of the program, in free format (but without "version" word) - void SetVersion(const wxString& version) { m_version = version; } + // version should contain program version without "version" word (e.g., + // "1.2" or "RC2") while longVersion may contain the full version including + // "version" word (e.g., "Version 1.2" or "Release Candidate 2") + // + // if longVersion is empty, it is automatically constructed from version + // + // generic and gtk native: use short version only, as a suffix to the + // program name msw and osx native: use long version + void SetVersion(const wxString& version, + const wxString& longVersion = wxString()); + bool HasVersion() const { return !m_version.empty(); } const wxString& GetVersion() const { return m_version; } + const wxString& GetLongVersion() const { return m_longVersion; } // brief, but possibly multiline, description of the program void SetDescription(const wxString& desc) { m_description = desc; } @@ -135,6 +145,7 @@ public: private: wxString m_name, m_version, + m_longVersion, m_description, m_copyright, m_licence; diff --git a/interface/wx/aboutdlg.h b/interface/wx/aboutdlg.h index 44cd0df753..6db5903b8a 100644 --- a/interface/wx/aboutdlg.h +++ b/interface/wx/aboutdlg.h @@ -148,10 +148,19 @@ public: void SetTranslators(const wxArrayString& translators); /** - Set the version of the program. The version is in free format, i.e. not - necessarily in the @c x.y.z form but it shouldn't contain the "version" word. - */ - void SetVersion(const wxString& version); + Set the version of the program. The word "version" shouldn't be included + in @a version. Example @a version values: "1.2" and "RC2". In about dialogs + with more space set aside for version information, @a longVersion is used. + Example @a longVersion values: "Version 1.2" and "Release Candidate 2". + If @a version is non-empty but @a longVersion is empty, a long version + is constructed automatically, using @a version (by simply prepending + "Version " to @a version). + + The generic about dialog and native GTK+ dialog use @a version only, + as a suffix to the program name. The native MSW and OS X about dialogs + use the long version. + */ + void SetVersion(const wxString& version, const wxString& longVersion = wxString()); /** Set the web site for the program and its description (which defaults to @a url diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp index d81a728015..7d554673aa 100644 --- a/samples/dialogs/dialogs.cpp +++ b/samples/dialogs/dialogs.cpp @@ -1689,7 +1689,13 @@ void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) ) static void InitAboutInfoMinimal(wxAboutDialogInfo& info) { info.SetName(wxT("Dialogs Sample")); - info.SetVersion(wxVERSION_NUM_DOT_STRING_T); + info.SetVersion(wxVERSION_NUM_DOT_STRING, + wxString::Format + ( + "%s version %s", + wxMINOR_VERSION % 2 ? "Development" : "Stable", + wxVERSION_NUM_DOT_STRING + )); info.SetDescription(wxT("This sample shows different wxWidgets dialogs")); info.SetCopyright(wxT("(C) 1998-2006 wxWidgets dev team")); info.AddDeveloper(wxT("Vadim Zeitlin")); diff --git a/src/generic/aboutdlgg.cpp b/src/generic/aboutdlgg.cpp index 60f799b428..117dddf817 100644 --- a/src/generic/aboutdlgg.cpp +++ b/src/generic/aboutdlgg.cpp @@ -109,6 +109,29 @@ wxString wxAboutDialogInfo::GetCopyrightToDisplay() const return ret; } +void wxAboutDialogInfo::SetVersion(const wxString& version, + const wxString& longVersion) +{ + if ( version.empty() ) + { + m_version.clear(); + + wxASSERT_MSG( longVersion.empty(), + "long version should be empty if version is"); + + m_longVersion.clear(); + } + else // setting valid version + { + m_version = version; + + if ( longVersion.empty() ) + m_longVersion = _("Version ") + m_version; + else + m_longVersion = longVersion; + } +} + // ---------------------------------------------------------------------------- // wxGenericAboutDialog // ---------------------------------------------------------------------------- diff --git a/src/msw/aboutdlg.cpp b/src/msw/aboutdlg.cpp index 526552fd89..1259a214e7 100644 --- a/src/msw/aboutdlg.cpp +++ b/src/msw/aboutdlg.cpp @@ -51,7 +51,7 @@ void wxAboutBox(const wxAboutDialogInfo& info, wxWindow* parent) if ( info.HasVersion() ) { msg << wxT('\n'); - msg << wxString::Format(_("Version %s"), info.GetVersion()); + msg << info.GetLongVersion(); } msg << wxT("\n\n"); diff --git a/src/osx/carbon/aboutdlg.cpp b/src/osx/carbon/aboutdlg.cpp index bbe9f1f8f3..51b40889b0 100644 --- a/src/osx/carbon/aboutdlg.cpp +++ b/src/osx/carbon/aboutdlg.cpp @@ -69,10 +69,7 @@ void wxAboutBox(const wxAboutDialogInfo& info, wxWindow *parent) opts.Set(kHIAboutBoxNameKey, info.GetName()); if ( info.HasVersion() ) - { - opts.Set(kHIAboutBoxVersionKey, - wxString::Format(_("Version %s"), info.GetVersion())); - } + opts.Set(kHIAboutBoxVersionKey,info.GetLongVersion()); if ( info.HasCopyright() ) opts.Set(kHIAboutBoxCopyrightKey, info.GetCopyrightToDisplay()); diff --git a/src/osx/cocoa/aboutdlg.mm b/src/osx/cocoa/aboutdlg.mm index 9c1b0a664d..7d9d6f9cd4 100644 --- a/src/osx/cocoa/aboutdlg.mm +++ b/src/osx/cocoa/aboutdlg.mm @@ -87,8 +87,7 @@ void wxAboutBox(const wxAboutDialogInfo& info, wxWindow *parent) if ( info.HasVersion() ) { opts.Set(CFSTR("Version"),info.GetVersion()); - opts.Set(CFSTR("ApplicationVersion"), - wxString::Format(_("Version %s"), info.GetVersion())); + opts.Set(CFSTR("ApplicationVersion"),info.GetLongVersion()); } if ( info.HasCopyright() )