1 ///////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/aboutdlg.h
3 // Purpose:     declaration of wxAboutDialog class
4 // Author:      Vadim Zeitlin
5 // Created:     2006-10-07
6 // Copyright:   (c) 2006 Vadim Zeitlin <vadim@wxwindows.org>
7 // Licence:     wxWindows licence
8 ///////////////////////////////////////////////////////////////////////////////
9 
10 #ifndef _WX_ABOUTDLG_H_
11 #define _WX_ABOUTDLG_H_
12 
13 #include "wx/defs.h"
14 
15 #if wxUSE_ABOUTDLG
16 
17 #include "wx/app.h"
18 #include "wx/icon.h"
19 
20 // ----------------------------------------------------------------------------
21 // wxAboutDialogInfo: information shown by the standard "About" dialog
22 // ----------------------------------------------------------------------------
23 
24 class WXDLLIMPEXP_ADV wxAboutDialogInfo
25 {
26 public:
27     // all fields are initially uninitialized
wxAboutDialogInfo()28     wxAboutDialogInfo() { }
29 
30     // accessors for various simply fields
31     // -----------------------------------
32 
33     // name of the program, if not used defaults to wxApp::GetAppDisplayName()
SetName(const wxString & name)34     void SetName(const wxString& name) { m_name = name; }
GetName()35     wxString GetName() const
36         { return m_name.empty() ? wxTheApp->GetAppDisplayName() : m_name; }
37 
38     // version should contain program version without "version" word (e.g.,
39     // "1.2" or "RC2") while longVersion may contain the full version including
40     // "version" word (e.g., "Version 1.2" or "Release Candidate 2")
41     //
42     // if longVersion is empty, it is automatically constructed from version
43     //
44     // generic and gtk native: use short version only, as a suffix to the
45     // program name msw and osx native: use long version
46     void SetVersion(const wxString& version,
47                     const wxString& longVersion = wxString());
48 
HasVersion()49     bool HasVersion() const { return !m_version.empty(); }
GetVersion()50     const wxString& GetVersion() const { return m_version; }
GetLongVersion()51     const wxString& GetLongVersion() const { return m_longVersion; }
52 
53     // brief, but possibly multiline, description of the program
SetDescription(const wxString & desc)54     void SetDescription(const wxString& desc) { m_description = desc; }
HasDescription()55     bool HasDescription() const { return !m_description.empty(); }
GetDescription()56     const wxString& GetDescription() const { return m_description; }
57 
58     // short string containing the program copyright information
SetCopyright(const wxString & copyright)59     void SetCopyright(const wxString& copyright) { m_copyright = copyright; }
HasCopyright()60     bool HasCopyright() const { return !m_copyright.empty(); }
GetCopyright()61     const wxString& GetCopyright() const { return m_copyright; }
62 
63     // long, multiline string containing the text of the program licence
SetLicence(const wxString & licence)64     void SetLicence(const wxString& licence) { m_licence = licence; }
SetLicense(const wxString & licence)65     void SetLicense(const wxString& licence) { m_licence = licence; }
HasLicence()66     bool HasLicence() const { return !m_licence.empty(); }
GetLicence()67     const wxString& GetLicence() const { return m_licence; }
68 
69     // icon to be shown in the dialog, defaults to the main frame icon
SetIcon(const wxIcon & icon)70     void SetIcon(const wxIcon& icon) { m_icon = icon; }
HasIcon()71     bool HasIcon() const { return m_icon.IsOk(); }
72     wxIcon GetIcon() const;
73 
74     // web site for the program and its description (defaults to URL itself if
75     // empty)
76     void SetWebSite(const wxString& url, const wxString& desc = wxEmptyString)
77     {
78         m_url = url;
79         m_urlDesc = desc.empty() ? url : desc;
80     }
81 
HasWebSite()82     bool HasWebSite() const { return !m_url.empty(); }
83 
GetWebSiteURL()84     const wxString& GetWebSiteURL() const { return m_url; }
GetWebSiteDescription()85     const wxString& GetWebSiteDescription() const { return m_urlDesc; }
86 
87     // accessors for the arrays
88     // ------------------------
89 
90     // the list of developers of the program
SetDevelopers(const wxArrayString & developers)91     void SetDevelopers(const wxArrayString& developers)
92         { m_developers = developers; }
AddDeveloper(const wxString & developer)93     void AddDeveloper(const wxString& developer)
94         { m_developers.push_back(developer); }
95 
HasDevelopers()96     bool HasDevelopers() const { return !m_developers.empty(); }
GetDevelopers()97     const wxArrayString& GetDevelopers() const { return m_developers; }
98 
99     // the list of documentation writers
SetDocWriters(const wxArrayString & docwriters)100     void SetDocWriters(const wxArrayString& docwriters)
101         { m_docwriters = docwriters; }
AddDocWriter(const wxString & docwriter)102     void AddDocWriter(const wxString& docwriter)
103         { m_docwriters.push_back(docwriter); }
104 
HasDocWriters()105     bool HasDocWriters() const { return !m_docwriters.empty(); }
GetDocWriters()106     const wxArrayString& GetDocWriters() const { return m_docwriters; }
107 
108     // the list of artists for the program art
SetArtists(const wxArrayString & artists)109     void SetArtists(const wxArrayString& artists)
110         { m_artists = artists; }
AddArtist(const wxString & artist)111     void AddArtist(const wxString& artist)
112         { m_artists.push_back(artist); }
113 
HasArtists()114     bool HasArtists() const { return !m_artists.empty(); }
GetArtists()115     const wxArrayString& GetArtists() const { return m_artists; }
116 
117     // the list of translators
SetTranslators(const wxArrayString & translators)118     void SetTranslators(const wxArrayString& translators)
119         { m_translators = translators; }
AddTranslator(const wxString & translator)120     void AddTranslator(const wxString& translator)
121         { m_translators.push_back(translator); }
122 
HasTranslators()123     bool HasTranslators() const { return !m_translators.empty(); }
GetTranslators()124     const wxArrayString& GetTranslators() const { return m_translators; }
125 
126 
127     // implementation only
128     // -------------------
129 
130     // "simple" about dialog shows only textual information (with possibly
131     // default icon but without hyperlink nor any long texts such as the
132     // licence text)
IsSimple()133     bool IsSimple() const
134         { return !HasWebSite() && !HasIcon() && !HasLicence(); }
135 
136     // get the description and credits (i.e. all of developers, doc writers,
137     // artists and translators) as a one long multiline string
138     wxString GetDescriptionAndCredits() const;
139 
140     // returns the copyright with the (C) string substituted by the Unicode
141     // character U+00A9
142     wxString GetCopyrightToDisplay() const;
143 
144 private:
145     wxString m_name,
146              m_version,
147              m_longVersion,
148              m_description,
149              m_copyright,
150              m_licence;
151 
152     wxIcon m_icon;
153 
154     wxString m_url,
155              m_urlDesc;
156 
157     wxArrayString m_developers,
158                   m_docwriters,
159                   m_artists,
160                   m_translators;
161 };
162 
163 // functions to show the about dialog box
164 WXDLLIMPEXP_ADV void wxAboutBox(const wxAboutDialogInfo& info, wxWindow* parent = NULL);
165 
166 #endif // wxUSE_ABOUTDLG
167 
168 #endif // _WX_ABOUTDLG_H_
169 
170