Audacity 3.2.0
Public Member Functions | Static Public Member Functions | Public Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
AboutDialog Class Referencefinal

The AboutDialog shows the program version and developer credits. More...

#include <AboutDialog.h>

Inheritance diagram for AboutDialog:
[legend]
Collaboration diagram for AboutDialog:
[legend]

Public Member Functions

 AboutDialog (wxWindow *parent)
 
virtual ~AboutDialog ()
 
void OnOK (wxCommandEvent &event)
 
- Public Member Functions inherited from wxDialogWrapper
 wxDialogWrapper ()
 
 wxDialogWrapper (wxWindow *parent, wxWindowID id, const TranslatableString &title, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_DIALOG_STYLE, const TranslatableString &name=XO("Dialog"))
 
bool Create (wxWindow *parent, wxWindowID id, const TranslatableString &title, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_DIALOG_STYLE, const TranslatableString &name=XO("Dialog"))
 
void SetTitle (const TranslatableString &title)
 
void SetLabel (const TranslatableString &title)
 
void SetName (const TranslatableString &title)
 
void SetName ()
 
- Public Member Functions inherited from wxTabTraversalWrapper< wxDialog >
 wxTabTraversalWrapper (Args &&... args)
 
 wxTabTraversalWrapper (const wxTabTraversalWrapper &)=delete
 
 wxTabTraversalWrapper (wxTabTraversalWrapper &&)=delete
 
wxTabTraversalWrapperoperator= (const wxTabTraversalWrapper &)=delete
 
wxTabTraversalWrapperoperator= (wxTabTraversalWrapper &&)=delete
 

Static Public Member Functions

static AboutDialogActiveIntance ()
 

Public Attributes

wxStaticBitmap * icon
 

Private Types

enum  Role {
  roleTeamMember , roleEmeritusTeam , roleDeceased , roleContributor ,
  roleGraphics , roleLibrary , roleThanks
}
 

Private Member Functions

void PopulateAudacityPage (ShuttleGui &S)
 
void PopulateLicensePage (ShuttleGui &S)
 
void PopulateInformationPage (ShuttleGui &S)
 : Fills out the "Information" tab of the preferences dialogue More...
 
void CreateCreditsList ()
 
void AddCredit (const wxString &name, Role role)
 
void AddCredit (const wxString &name, TranslatableString format, Role role)
 
wxString GetCreditsByRole (AboutDialog::Role role)
 
void AddBuildinfoRow (wxTextOutputStream *str, const wxChar *libname, const TranslatableString &libdesc, const TranslatableString &status)
 Add a table row saying if a library is used or not. More...
 
void AddBuildinfoRow (wxTextOutputStream *str, const TranslatableString &description, const wxChar *spec)
 Add a table row saying if a library is used or not. More...
 

Private Attributes

AboutDialogCreditItemsList creditItems
 

Detailed Description

The AboutDialog shows the program version and developer credits.

It is a simple scrolling window with an 'OK... Audacious!' button to close it.

Definition at line 32 of file AboutDialog.h.

Member Enumeration Documentation

◆ Role

enum AboutDialog::Role
private
Enumerator
roleTeamMember 
roleEmeritusTeam 
roleDeceased 
roleContributor 
roleGraphics 
roleLibrary 
roleThanks 

Definition at line 48 of file AboutDialog.h.

Constructor & Destructor Documentation

◆ AboutDialog()

AboutDialog::AboutDialog ( wxWindow *  parent)

Definition at line 320 of file AboutDialog.cpp.

322 : wxDialogWrapper(parent, -1, XO("About %s").Format( ProgramName ),
323 wxDefaultPosition, wxDefaultSize,
324 wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
325{
326 wxASSERT(!sActiveInstance);
327 sActiveInstance = this;
328
329 SetName();
330 this->SetBackgroundColour(theTheme.Colour( clrAboutBoxBackground ));
331 //this->SetBackgroundColour(theTheme.Colour( clrMedium ));
332 icon = NULL;
333 ShuttleGui S( this, eIsCreating );
334 S.StartNotebook();
335 {
339 }
340 S.EndNotebook();
341
342 S.Id(wxID_OK)
343 .Prop(0)
344 .AddButton(XXO("OK"), wxALIGN_CENTER, true);
345
346 Layout();
347 Fit();
348 this->Centre();
349}
static const auto ProgramName
Definition: AboutDialog.cpp:75
XO("Cut/Copy/Paste")
XXO("&Cut/Copy/Paste Toolbar")
@ eIsCreating
Definition: ShuttleGui.h:37
THEME_API Theme theTheme
Definition: Theme.cpp:82
#define S(N)
Definition: ToChars.cpp:64
wxStaticBitmap * icon
Definition: AboutDialog.h:43
void PopulateInformationPage(ShuttleGui &S)
: Fills out the "Information" tab of the preferences dialogue
void PopulateLicensePage(ShuttleGui &S)
void PopulateAudacityPage(ShuttleGui &S)
Abstract base class used in importing a file.
Derived from ShuttleGuiBase, an Audacity specific class for shuttling data to and from GUI.
Definition: ShuttleGui.h:640
wxColour & Colour(int iIndex)

References ThemeBase::Colour(), eIsCreating, icon, PopulateAudacityPage(), PopulateInformationPage(), PopulateLicensePage(), S, anonymous_namespace{AboutDialog.cpp}::sActiveInstance, wxDialogWrapper::SetName(), theTheme, and XXO().

Here is the call graph for this function:

◆ ~AboutDialog()

AboutDialog::~AboutDialog ( )
virtual

Definition at line 903 of file AboutDialog.cpp.

904{
905 sActiveInstance = {};
906}

References anonymous_namespace{AboutDialog.cpp}::sActiveInstance.

Member Function Documentation

◆ ActiveIntance()

AboutDialog * AboutDialog::ActiveIntance ( )
static

Definition at line 315 of file AboutDialog.cpp.

316{
317 return sActiveInstance;
318}

References anonymous_namespace{AboutDialog.cpp}::sActiveInstance.

Referenced by AudacityApp::OnMenuAbout().

Here is the caller graph for this function:

◆ AddBuildinfoRow() [1/2]

void AboutDialog::AddBuildinfoRow ( wxTextOutputStream *  str,
const TranslatableString description,
const wxChar *  spec 
)
private

Add a table row saying if a library is used or not.

Used when creating the build information tab to show build dates and file paths

Definition at line 891 of file AboutDialog.cpp.

894{
895 *str
896 << wxT("<tr><td>")
897 << description
898 << wxT("</td><td>")
899 << spec
900 << wxT("</td></tr>");
901}
wxT("CloseDown"))
#define str(a)

References str, and wxT().

Here is the call graph for this function:

◆ AddBuildinfoRow() [2/2]

void AboutDialog::AddBuildinfoRow ( wxTextOutputStream *  str,
const wxChar *  libname,
const TranslatableString libdesc,
const TranslatableString status 
)
private

Add a table row saying if a library is used or not.

Used when creating the build information tab to show if each optional library is enabled or not, and what it does

Definition at line 873 of file AboutDialog.cpp.

876{
877 *str
878 << wxT("<tr><td>")
879 << libname
880 << wxT("</td><td>(")
881 << libdesc
882 << wxT(")</td><td>")
883 << status
884 << wxT("</td></tr>");
885}

References str, and wxT().

Referenced by PopulateInformationPage().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddCredit() [1/2]

void AboutDialog::AddCredit ( const wxString &  name,
Role  role 
)
private

Definition at line 835 of file AboutDialog.cpp.

836{
837 AddCredit( name, {}, role );
838}
wxString name
Definition: TagsEditor.cpp:166
void AddCredit(const wxString &name, Role role)

References AddCredit(), and name.

Referenced by AddCredit(), and CreateCreditsList().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddCredit() [2/2]

void AboutDialog::AddCredit ( const wxString &  name,
TranslatableString  format,
Role  role 
)
private

Definition at line 840 of file AboutDialog.cpp.

842{
843 auto str = format.empty()
844 ? Verbatim( name )
846 creditItems.emplace_back(std::move(str), role);
847}
TranslatableString Verbatim(wxString str)
Require calls to the one-argument constructor to go through this distinct global function name.
AboutDialogCreditItemsList creditItems
Definition: AboutDialog.h:58
Holds a msgid for the translation catalog; may also bind format arguments.

References creditItems, anonymous_namespace{ExportPCM.cpp}::format, name, str, and Verbatim().

Here is the call graph for this function:

◆ CreateCreditsList()

void AboutDialog::CreateCreditsList ( )
private

Definition at line 79 of file AboutDialog.cpp.

80{
81 const auto sysAdminFormat =
82 /* i18n-hint: For "About Audacity..." credits, substituting a person's proper name */
83 XO("%s, system administration");
84 const auto coFounderFormat =
85 /* i18n-hint: For "About Audacity..." credits, substituting a person's proper name */
86 XO("%s, co-founder and developer");
87 const auto designerFormat =
88 /* i18n-hint: For "About Audacity..." credits, substituting a person's proper name */
89 XO("%s, designer");
90 const auto developerFormat =
91 /* i18n-hint: For "About Audacity..." credits, substituting a person's proper name */
92 XO("%s, developer");
93 const auto developerAndSupprtFormat =
94 /* i18n-hint: For "About Audacity..." credits, substituting a person's proper name */
95 XO("%s, developer and support");
96 const auto documentationAndSupportFormat =
97 /* i18n-hint: For "About Audacity..." credits, substituting a person's proper name */
98 XO("%s, documentation and support");
99 const auto qaDocumentationAndSupportFormat =
100 /* i18n-hint: For "About Audacity..." credits, substituting a person's proper name */
101 XO("%s, QA tester, documentation and support");
102 const auto documentationAndSupportFrenchFormat =
103 /* i18n-hint: For "About Audacity..." credits, substituting a person's proper name */
104 XO("%s, documentation and support, French");
105 const auto qualityAssuranceFormat =
106 /* i18n-hint: For "About Audacity..." credits, substituting a person's proper name */
107 XO("%s, quality assurance");
108 const auto accessibilityAdvisorFormat =
109 /* i18n-hint: For "About Audacity..." credits, substituting a person's proper name */
110 XO("%s, accessibility advisor");
111 const auto graphicArtistFormat =
112 /* i18n-hint: For "About Audacity..." credits, substituting a person's proper name */
113 XO("%s, graphic artist");
114 const auto composerFormat =
115 /* i18n-hint: For "About Audacity..." credits, substituting a person's proper name */
116 XO("%s, composer");
117 const auto testerFormat =
118 /* i18n-hint: For "About Audacity..." credits, substituting a person's proper name */
119 XO("%s, tester");
120 const auto NyquistPluginsFormat =
121 /* i18n-hint: For "About Audacity..." credits, substituting a person's proper name */
122 XO("%s, Nyquist plug-ins");
123 const auto webDeveloperFormat =
124 /* i18n-hint: For "About Audacity..." credits, substituting a person's proper name */
125 XO("%s, web developer");
126 const auto graphicsFormat =
127 /* i18n-hint: For "About Audacity..." credits, substituting a person's proper name */
128 XO("%s, graphics");
129 const auto presetsFormat =
130 /* i18n-hint: For "About Audacity..." credits, substituting a person's proper name */
131 XO("%s, effects presets");
132
133 // The Audacity Team: developers and support
134 AddCredit(wxT("Antons \u010cinakovs"), testerFormat, roleTeamMember);
135 AddCredit(wxT("Matthieu Hodgkinson"), developerFormat, roleTeamMember);
136 AddCredit(wxT("Peter Jonas"), developerFormat, roleTeamMember);
137 AddCredit(wxT("Martin Keary"), roleTeamMember);
138 AddCredit(wxT("Sergey Lapysh"), testerFormat, roleTeamMember);
139 AddCredit(wxT("Yana Larina"), roleTeamMember);
140 AddCredit(wxT("Dilson's Pickles"), designerFormat, roleTeamMember);
141 AddCredit(wxT("Anita Sudan"), roleTeamMember);
142 AddCredit(wxT("Vitaly Sverchinsky"), developerFormat, roleTeamMember);
143 AddCredit(wxT("Leo Wattenberg"), designerFormat, roleTeamMember);
144 AddCredit(wxT("Jessica Williamson"), designerFormat, roleTeamMember);
145
146
147 // Emeritus: people who were "lead developers" or made an
148 // otherwise distinguished contribution, but who are no
149 // longer active.
150 AddCredit(wxT("Gale Andrews"), qualityAssuranceFormat, roleEmeritusTeam);
151 AddCredit(wxT("Richard Ash"), developerFormat, roleEmeritusTeam);
152 AddCredit(wxT("Christian Brochec"),
153 documentationAndSupportFrenchFormat, roleEmeritusTeam);
154 AddCredit(wxT("Matt Brubeck"), developerFormat, roleEmeritusTeam);
155 AddCredit(wxT("Arturo \"Buanzo\" Busleiman"), sysAdminFormat, roleEmeritusTeam);
156 AddCredit(wxT("Michael Chinen"), developerFormat, roleEmeritusTeam);
157 AddCredit(wxT("James Crook"), developerFormat, roleEmeritusTeam);
158 AddCredit(wxT("Roger Dannenberg"), coFounderFormat, roleEmeritusTeam);
159 AddCredit(wxT("Steve Daulton"), roleEmeritusTeam);
160 AddCredit(wxT("Al Dimond"), developerFormat, roleEmeritusTeam);
161 AddCredit(wxT("Benjamin Drung"), developerFormat, roleEmeritusTeam);
162 AddCredit(wxT("Joshua Haberman"), developerFormat, roleEmeritusTeam);
163 AddCredit(wxT("Ruslan Ijbulatov"), developerFormat, roleEmeritusTeam);
164 AddCredit(wxT("Vaughan Johnson"), developerFormat, roleEmeritusTeam);
165 AddCredit(wxT("Greg Kozikowski"), documentationAndSupportFormat, roleEmeritusTeam);
166 AddCredit(wxT("Paul Licameli"), developerFormat, roleEmeritusTeam);
167 AddCredit(wxT("Leland Lucius"), developerFormat, roleEmeritusTeam);
168 AddCredit(wxT("Dominic Mazzoni"), coFounderFormat, roleEmeritusTeam);
169 AddCredit(wxT("Markus Meyer"), developerFormat, roleEmeritusTeam);
170 AddCredit(wxT("Monty Montgomery"), developerFormat, roleEmeritusTeam);
171 AddCredit(wxT("Shane Mueller"), developerFormat, roleEmeritusTeam);
172 AddCredit(wxT("Tony Oetzmann"), documentationAndSupportFormat, roleEmeritusTeam);
173 AddCredit(wxT("Alexandre Prokoudine"), documentationAndSupportFormat, roleEmeritusTeam);
174 AddCredit(wxT("Peter Sampson"), qaDocumentationAndSupportFormat, roleEmeritusTeam);
175 AddCredit(wxT("Martyn Shaw"), developerFormat, roleEmeritusTeam);
176 AddCredit(wxT("Dmitry Vedenko"), developerFormat, roleEmeritusTeam);
177 AddCredit(wxT("Bill Wharrie"), documentationAndSupportFormat, roleEmeritusTeam);
178
179 // Contributors
180 AddCredit(wxT("Lynn Allan"), developerFormat, roleContributor);
181 AddCredit(wxT("Johan Althoff (teetow)"), designerFormat, roleContributor);
182 AddCredit(wxT("Brian Armstrong"), developerFormat, roleContributor);
183 AddCredit(wxT("David Avery"), developerFormat, roleContributor);
184 AddCredit(wxT("David Bailes"), accessibilityAdvisorFormat, roleContributor);
185 AddCredit(wxT("Brian Beard (Kurtsley)"), developerFormat, roleContributor);
186 AddCredit(wxT("William Bland"), developerFormat, roleContributor);
187 AddCredit(wxT("Sami Boukortt"), developerFormat, roleContributor);
188 AddCredit(wxT("Jeremy R. Brown"), developerFormat, roleContributor);
189 AddCredit(wxT("Alex S. Brown"), developerFormat, roleContributor);
190 AddCredit(wxT("David Bryant"), developerFormat, roleContributor);
191 AddCredit(wxT("Chris Cannam"), developerFormat, roleContributor);
192 AddCredit(wxT("Subhradeep Chakraborty"), developerFormat, roleContributor);
193 AddCredit(wxT("Cory Cook"), developerFormat, roleContributor);
194 AddCredit(wxT("Craig DeForest"), developerFormat, roleContributor);
195 AddCredit(wxT("Edgar Franke (Edgar-RFT)"), developerFormat, roleContributor);
196 AddCredit(wxT("Anton Gerasimov"), developerFormat, roleContributor);
197 AddCredit(wxT("Mitch Golden"), developerFormat, roleContributor);
198 AddCredit(wxT("Brian Gunlogson"), developerFormat, roleContributor);
199 AddCredit(wxT("Gonzalo Guzm\u00E1n"), documentationAndSupportFormat, roleContributor);
200 AddCredit(wxT("Andrew Hallendorff"), developerFormat, roleContributor);
201 AddCredit(wxT("Robert H\u00E4nggi"), developerFormat, roleContributor);
202 AddCredit(wxT("Jouni Helminen"), designerFormat, roleContributor);
203 AddCredit(wxT("Daniel Horgan"), developerFormat, roleContributor);
204 AddCredit(wxT("David Hostetler"), developerFormat, roleContributor);
205 AddCredit(wxT("Edward Hui"), developerFormat, roleContributor);
206 AddCredit(wxT("Vladislav Isaev"), presetsFormat, roleContributor);
207 AddCredit(wxT("Marek Iwaszkiewicz"), presetsFormat, roleContributor);
208 AddCredit(wxT("Steve Jolly"), developerFormat, roleContributor);
209 AddCredit(wxT("Steven Jones"), developerFormat, roleContributor);
210 AddCredit(wxT("Henric Jungheim"), developerFormat, roleContributor);
211 AddCredit(wxT("Myungchul Keum"), developerFormat, roleContributor);
212 AddCredit(wxT("Arun Kishore"), developerFormat, roleContributor);
213 AddCredit(wxT("Paul Livesey"), developerFormat, roleContributor);
214 AddCredit(wxT("Harvey Lubin"), graphicArtistFormat, roleContributor);
215 AddCredit(wxT("Max Maisel"), developerFormat, roleContributor);
216 AddCredit(wxT("Pietro Marcello"), developerFormat, roleContributor);
217 AddCredit(wxT("Greg Mekkes"), developerFormat, roleContributor);
218 AddCredit(wxT("Abe Milde"), developerFormat, roleContributor);
219 AddCredit(wxT("Ryan Miller"), testerFormat, roleContributor);
220 AddCredit(wxT("Paul Nasca"), developerFormat, roleContributor);
221 AddCredit(wxT("Clayton Otey"), developerFormat, roleContributor);
222 AddCredit(wxT("Pavel Penikov"), testerFormat, roleContributor);
223 AddCredit(wxT("Mark Phillips"), developerFormat, roleContributor);
224 AddCredit(wxT("Andr\u00E9 Pinto"), developerFormat, roleContributor);
225 AddCredit(wxT("Pokechu22"), developerFormat, roleContributor);
226 AddCredit(wxT("Jean Claude Risset"), composerFormat, roleContributor);
227 AddCredit(wxT("RuRo"), developerFormat, roleContributor);
228 AddCredit(wxT("Augustus Saunders"), developerFormat, roleContributor);
229 AddCredit(wxT("Benjamin Schwartz"), developerFormat, roleContributor);
230 AddCredit(wxT("Cliff Scott"), testerFormat, roleContributor);
231 AddCredit(wxT("David R. Sky"), NyquistPluginsFormat, roleContributor);
232 AddCredit(wxT("Joe Souza"), developerFormat, roleContributor);
233 AddCredit(wxT("K. Soze"), developerFormat, roleContributor);
234 AddCredit(wxT("Rob Sykes"), developerFormat, roleContributor);
235 AddCredit(wxT("Mike Underwood"), developerFormat, roleContributor);
236 AddCredit(wxT("Philip Van Baren"), developerFormat, roleContributor);
237 AddCredit(wxT("Salvo Ventura"), developerFormat, roleContributor);
238 AddCredit(wxT("Darrell Walisser"), developerFormat, roleContributor);
239 AddCredit(wxT("Jun Wan"), developerFormat, roleContributor);
240 AddCredit(wxT("Daniel Winzen"), developerFormat, roleContributor);
241 AddCredit(wxT("Tom Woodhams"), developerFormat, roleContributor);
242 AddCredit(wxT("Mark Young"), developerFormat, roleContributor);
243 AddCredit(wxT("Wing Yu"), developerFormat, roleContributor);
244
245 // Website and Graphics
246 AddCredit(wxT("Shinta Carolinasari"), webDeveloperFormat, roleGraphics);
247 AddCredit(wxT("Bayu Rizaldhan Rayes"), graphicsFormat, roleGraphics);
248
249 // Libraries
250
251 AddCredit(wxT("[[https://libexpat.github.io/|expat]]"), roleLibrary);
252 AddCredit(wxT("[[https://xiph.org/flac/|FLAC]]"), roleLibrary);
253 AddCredit(wxT("[[http://lame.sourceforge.net/|LAME]]"), roleLibrary);
254 AddCredit(wxT("[[http://www.mega-nerd.com/libsndfile/|libsndfile]]"), roleLibrary);
255 AddCredit(wxT("[[https://sourceforge.net/p/soxr/wiki/Home/|libsoxr]]"), roleLibrary);
256 AddCredit(
257 XO("%s (incorporating %s, %s, %s, %s and %s)")
258 .Format(
259 "[[http://lv2plug.in/|lv2]]",
260 "lilv",
261 "msinttypes",
262 "serd",
263 "sord",
264 "sratom"
265 ).Translation(),
267 AddCredit(wxT("[[https://www.cs.cmu.edu/~music/nyquist/|Nyquist]]"), roleLibrary);
268 AddCredit(wxT("[[https://xiph.org/vorbis/|Ogg Vorbis]]"), roleLibrary);
269 AddCredit(wxT("[[http://www.portaudio.com/|PortAudio]]"), roleLibrary);
270 AddCredit(wxT("[[http://www.portmedia.sourceforge.net/portmidi/|PortMidi]]"), roleLibrary);
271 AddCredit(wxT("[[https://sourceforge.net/p/portmedia/wiki/portsmf/|portsmf]]"), roleLibrary);
272 AddCredit(wxT("[[http://sbsms.sourceforge.net/|sbsms]]"), roleLibrary);
273 AddCredit(wxT("[[https://www.surina.net/soundtouch/|SoundTouch]]"), roleLibrary);
274 AddCredit(wxT("[[http://www.twolame.org/|TwoLAME]]"), roleLibrary);
275 AddCredit(wxT("[[http://www.vamp-plugins.org/|Vamp]]"), roleLibrary);
276 AddCredit(wxT("[[https://wxwidgets.org/|wxWidgets]]"), roleLibrary);
277
278 // Thanks
279
280 AddCredit(wxT("Dave Beydler"), roleThanks);
281 AddCredit(wxT("Brian Cameron"), roleThanks);
282 AddCredit(wxT("Jason Cohen"), roleThanks);
283 AddCredit(wxT("Dave Fancella"), roleThanks);
284 AddCredit(wxT("Steve Harris"), roleThanks);
285 AddCredit(wxT("Daniel James"), roleThanks);
286 AddCredit(wxT("Daniil Kolpakov"), roleThanks);
287 AddCredit(wxT("Robert Leidle"), roleThanks);
288 AddCredit(wxT("Logan Lewis"), roleThanks);
289 AddCredit(wxT("David Luff"), roleThanks);
290 AddCredit(wxT("Jason Pepas"), roleThanks);
291 AddCredit(wxT("Jonathan Ryshpan"), roleThanks);
292 AddCredit(wxT("Michael Schwendt"), roleThanks);
293 AddCredit(wxT("Patrick Shirkey"), roleThanks);
294 AddCredit(wxT("Tuomas Suutari"), roleThanks);
295 AddCredit(wxT("Mark Tomlinson"), roleThanks);
296 AddCredit(wxT("David Topper"), roleThanks);
297 AddCredit(wxT("Rudy Trubitt"), roleThanks);
298 AddCredit(wxT("StreetIQ.com"), roleThanks);
299 AddCredit(wxT("UmixIt Technologies, LLC"), roleThanks);
300 AddCredit(wxT("Verilogix, Inc."), roleThanks);
301}

References AddCredit(), roleContributor, roleEmeritusTeam, roleGraphics, roleLibrary, roleTeamMember, roleThanks, wxT(), and XO().

Referenced by PopulateAudacityPage().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetCreditsByRole()

wxString AboutDialog::GetCreditsByRole ( AboutDialog::Role  role)
private

Definition at line 849 of file AboutDialog.cpp.

850{
851 wxString s;
852
853 for (const auto &item : creditItems)
854 {
855 if (item.role == role)
856 {
857 s += item.description.Translation();
858 s += wxT("<br>");
859 }
860 }
861
862 // Strip last <br>, if any
863 if (s.Right(4) == wxT("<br>"))
864 s = s.Left(s.length() - 4);
865
866 return s;
867}

References creditItems, and wxT().

Referenced by PopulateAudacityPage().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ OnOK()

void AboutDialog::OnOK ( wxCommandEvent &  event)

Definition at line 908 of file AboutDialog.cpp.

909{
910#ifdef __WXMAC__
911 Destroy();
912#else
913 EndModal(wxID_OK);
914#endif
915}

◆ PopulateAudacityPage()

void AboutDialog::PopulateAudacityPage ( ShuttleGui S)
private

Definition at line 353 of file AboutDialog.cpp.

354{
356
357
358 /* i18n-hint: The translation of "translator_credits" will appear
359 * in the credits in the About Audacity window. Use this to add
360 * your own name(s) to the credits.
361 *
362 * For example: "English translation by Dominic Mazzoni." */
363 auto translatorCreditsMsgid = XO("translator_credits");
364 auto translatorCredits = translatorCreditsMsgid.Translation();
365 if ( translatorCredits == translatorCreditsMsgid.MSGID().GET() )
366 // We're in an English locale
367 translatorCredits.clear();
368 else
369 translatorCredits += wxT("<br>");
370
371 wxStringOutputStream o;
372 wxTextOutputStream informationStr( o ); // string to build up list of information in
373 informationStr
374 << wxT("<center>")
375 << XO("<h3>")
376 << ProgramName
377 << wxT(" ")
378 << wxString(AUDACITY_VERSION_STRING)
379 << wxT("</center></h3>")
380 /* i18n-hint: The program's name substitutes for %s */
381 << XO("%s the free, open source, cross-platform software for recording and editing sounds.")
382 .Format(ProgramName)
383
384 << wxT("<h3>")
385 << XO("Credits")
386 << wxT("</h3>")
387
388 << wxT("<p><b>")
389 /* i18n-hint: The program's name substitutes for %s */
390 << XO("%s Team Members").Format( ProgramName )
391 << wxT("</b><br>")
393
394 << wxT("<p><b> ")
395 << XO("Emeritus:")
396 << wxT("</b><br>")
397 /* i18n-hint: The program's name substitutes for %s */
398 << XO("Distinguished %s Team members, not currently active")
399 .Format( ProgramName )
400 << wxT("<br><br>")
402
403 << wxT("<p><b>")
404 << XO("Contributors")
405 << wxT("</b><br>")
407
408 << wxT("<p><b>")
409 << XO("Website and Graphics")
410 << wxT("</b><br>")
412 ;
413
414 if(!translatorCredits.empty()) informationStr
415 << wxT("<p><b>")
416 << XO("Translators")
417 << wxT("</b><br>")
418 << translatorCredits
419 ;
420
421 informationStr
422 << wxT("<p><b>")
423 << XO("Libraries")
424 << wxT("</b><br>")
425 /* i18n-hint: The program's name substitutes for %s */
426 << XO("%s includes code from the following projects:").Format( ProgramName )
427 << wxT("<br><br>")
429
430 << wxT("<p><b>")
431 << XO("Special thanks:")
432 << wxT("</b><br>")
434
435 << wxT("<p><br>")
436 /* i18n-hint: The program's name substitutes for %s */
437 << XO("%s website: ").Format( ProgramName )
438 << wxT("[[https://www.audacityteam.org/|https://www.audacityteam.org/]]")
439
440 << wxT("<p><br>&nbsp; &nbsp; ")
441 /* i18n-hint Audacity's name substitutes for first and third %s,
442 and a "copyright" symbol for the second */
443 << XO("%s software is copyright %s 1999-2024 %s Team.")
444 .Format(
445 Verbatim("<b>%s<sup>&reg;</sup></b>").Format( ProgramName ),
446 wxT("&copy;"),
448 << wxT("<br>")
449
450 << wxT("&nbsp; &nbsp; ")
451 /* i18n-hint Audacity's name substitutes for %s */
452 << XO("The name %s is a registered trademark.")
453 .Format( Verbatim("<b>%s</b>").Format( ProgramName ) )
454 << wxT("<br><br>")
455 << wxT("</center>")
456 ;
457
458 auto pPage = S.StartNotebookPage( ProgramName );
459 S.StartVerticalLay(1);
460 {
461 //v For now, change to AudacityLogoWithName via old-fashioned way, not Theme.
462 wxBitmap logo(AudacityLogoWithName_xpm); //v
463
464 //Setup to scale the logo larger and smaller as necessary
465 const float fScale = 1.0f;
466 wxImage RescaledImage(logo.ConvertToImage());
467 wxColour MainColour(
468 RescaledImage.GetRed(1,1),
469 RescaledImage.GetGreen(1,1),
470 RescaledImage.GetBlue(1,1));
471 pPage->SetBackgroundColour(MainColour);
472 // wxIMAGE_QUALITY_HIGH not supported by wxWidgets 2.6.1, or we would use it here.
473 RescaledImage.Rescale((int)(LOGOWITHNAME_WIDTH * fScale), (int)(LOGOWITHNAME_HEIGHT *fScale));
474 wxBitmap RescaledBitmap(RescaledImage);
475
476 icon =
477 safenew wxStaticBitmap(S.GetParent(), -1,
478 //*logo, //v
479 //v theTheme.Bitmap(bmpAudacityLogo), wxPoint(93, 10), wxSize(215, 190));
480 //v theTheme.Bitmap(bmpAudacityLogoWithName),
481 RescaledBitmap,
482 wxDefaultPosition,
483 wxSize((int)(LOGOWITHNAME_WIDTH*fScale), (int)(LOGOWITHNAME_HEIGHT*fScale)));
484 }
485 S.Prop(0).AddWindow( icon );
486
487 HtmlWindow *html = safenew LinkingHtmlWindow(S.GetParent(), -1,
488 wxDefaultPosition,
489 wxSize(ABOUT_DIALOG_WIDTH, 359),
490 wxHW_SCROLLBAR_AUTO);
491 html->SetPage( FormatHtmlText( o.GetString() ) );
492
493 /* locate the html renderer where it fits in the dialogue */
494 S.Prop(1).Position( wxEXPAND ).Focus()
495 .AddWindow( html );
496
497 S.EndVerticalLay();
498 S.EndNotebookPage();
499}
#define ABOUT_DIALOG_WIDTH
wxImage(22, 22)
#define LOGOWITHNAME_WIDTH
#define LOGOWITHNAME_HEIGHT
wxString FormatHtmlText(const wxString &Text)
Definition: HelpText.cpp:258
#define safenew
Definition: MemoryX.h:10
wxString GetCreditsByRole(AboutDialog::Role role)
void CreateCreditsList()
Definition: AboutDialog.cpp:79
HtmlWindow Class.
Definition: HtmlWindow.h:37
An HtmlWindow that handles linked clicked - usually the link will go to our own local copy of the man...
Definition: HelpSystem.h:126

References ABOUT_DIALOG_WIDTH, CreateCreditsList(), FormatHtmlText(), GetCreditsByRole(), icon, LOGOWITHNAME_HEIGHT, LOGOWITHNAME_WIDTH, ProgramName, roleContributor, roleEmeritusTeam, roleGraphics, roleLibrary, roleTeamMember, roleThanks, S, safenew, Verbatim(), wxImage(), wxT(), and XO().

Referenced by AboutDialog().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PopulateInformationPage()

void AboutDialog::PopulateInformationPage ( ShuttleGui S)
private

: Fills out the "Information" tab of the preferences dialogue

Provides as much information as possible about build-time options and the libraries used, to try and make Linux support easier. Basically anything about the build we might wish to know should be visible here

Definition at line 507 of file AboutDialog.cpp.

508{
509 wxStringOutputStream o;
510 wxTextOutputStream informationStr( o ); // string to build up list of information in
511 S.StartNotebookPage( XO("Build Information") ); // start the tab
512 S.StartVerticalLay(2); // create the window
513 HtmlWindow *html = safenew LinkingHtmlWindow(S.GetParent(), -1, wxDefaultPosition,
514 wxSize(ABOUT_DIALOG_WIDTH, 264),
515 wxHW_SCROLLBAR_AUTO );
516 // create a html pane in it to put the content in.
517 auto enabled = XO("Enabled");
518 auto disabled = XO("Disabled");
519 wxString blank;
520
521 /* this builds up the list of information to go in the window in the string
522 * informationStr */
523
524 informationStr
525 << wxT("<h3>")
526 /* i18n-hint: Information about when audacity was compiled follows */
527 << XO("The Build")
528 << wxT("</h3>\n<table>"); // start build info table
529
530 // Current date
531 AddBuildinfoRow(&informationStr, XO("Program build date:"), __TDATE__);
532 AddBuildinfoRow(&informationStr, XO("Commit Id:"), REV_IDENT );
533
534 auto buildType =
535#ifdef _DEBUG
536 XO("Debug build (debug level %d)").Format(wxDEBUG_LEVEL);
537#else
538 XO("Release build (debug level %d)").Format(wxDEBUG_LEVEL);
539#endif
540 ;
541 if( (sizeof(void*) == 8) ) {
542 buildType = XO("%s, 64 bits").Format( buildType );
543 } else {
544 buildType = XO("%s, 32 bits").Format( buildType );
545 }
546// Remove this once the transition to CMake is complete
547#if defined(CMAKE)
548 buildType = Verbatim("CMake %s").Format( buildType );
549#endif
550
551 AddBuildinfoRow(&informationStr, XO("Build type:"), buildType.Translation());
552
553#ifdef _MSC_FULL_VER
554 AddBuildinfoRow(&informationStr, XO("Compiler:"),
555 wxString::Format(wxT("MSVC %02d.%02d.%05d.%02d"), _MSC_VER / 100, _MSC_VER % 100, _MSC_FULL_VER % 100000, _MSC_BUILD));
556#endif
557
558#ifdef __GNUC_PATCHLEVEL__
559#ifdef __MINGW32__
560 AddBuildinfoRow(&informationStr, XO("Compiler:"), wxT("MinGW ") wxMAKE_VERSION_DOT_STRING_T(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__));
561#else
562 AddBuildinfoRow(&informationStr, XO("Compiler:"), wxT("GCC ") wxMAKE_VERSION_DOT_STRING_T(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__));
563#endif
564#endif
565
566#ifdef __clang_version__
567 AddBuildinfoRow(&informationStr, XO("Compiler:"), wxT("clang ") __clang_version__);
568#endif
569
570 // Install prefix
571#ifdef __WXGTK__
572 /* i18n-hint: The directory audacity is installed into (on *nix systems) */
573 AddBuildinfoRow(&informationStr, XO("Installation Prefix:"), \
574 wxT(INSTALL_PREFIX));
575#endif
576
577 // Location of cache
578 AddBuildinfoRow(&informationStr, XO("Cache folder:"), \
580 // Location of settings
581 AddBuildinfoRow(&informationStr, XO("Settings folder:"), \
583 // Location of data
584 AddBuildinfoRow(&informationStr, XO("Data folder:"), \
586 // Location of data
587 AddBuildinfoRow(&informationStr, XO("State folder:"), \
589
590 informationStr << wxT("</table>\n"); // end of build info table
591
592
593 informationStr
594 << wxT("<h3>")
595 /* i18n-hint: Libraries that are essential to audacity */
596 << XO("Core Libraries")
597 << wxT("</h3>\n<table>"); // start table of core libraries
598
599 AddBuildinfoRow(&informationStr, wxT("wxWidgets"),
600 XO("Cross-platform GUI library"), Verbatim(wxVERSION_NUM_DOT_STRING_T));
601
602 AddBuildinfoRow(&informationStr, wxT("PortAudio"),
603 XO("Audio playback and recording"), Verbatim(wxT("v19")));
604
605 AddBuildinfoRow(&informationStr, wxT("libsoxr"),
606 XO("Sample rate conversion"), enabled);
607
608 informationStr << wxT("</table>\n"); // end table of core libraries
609
610 informationStr
611 << wxT("<h3>")
612 << XO("File Format Support")
613 << wxT("</h3>\n<p>");
614
615 informationStr
616 << wxT("<table>"); // start table of file formats supported
617
618 #if defined(USE_LIBMPG123)
619 AddBuildinfoRow(&informationStr, wxT("libmpg123"), XO("MP3 Import"), enabled);
620 #else
621 AddBuildinfoRow(&informationStr, wxT("libmpg123"), XO("MP3 Import"), disabled);
622 #endif
623
624 #if USE_LIBMP3LAME
626 &informationStr, wxT("libmp3lame"),
627 /* i18n-hint: LAME is the codec name. This name should not be translated
628 */
629 XO("MP3 Export"), enabled);
630 #else
632 &informationStr, wxT("libopus"),
633 /* i18n-hint: Opus is the codec name. This name should not be translated
634 */
635 XO("Opus Import and Export"), disabled);
636 #endif
637
638 #ifdef USE_LIBVORBIS
639 AddBuildinfoRow(&informationStr, wxT("libvorbis"),
640 /* i18n-hint: Ogg is the container format. Vorbis is the compression codec.
641 * Both are proper nouns and shouldn't be translated */
642 XO("Ogg Vorbis Import and Export"), enabled);
643 #else
644 AddBuildinfoRow(&informationStr, wxT("libvorbis"),
645 XO("Ogg Vorbis Import and Export"), disabled);
646 #endif
647
648 #if USE_LIBVORBIS && USE_LIBOPUS && USE_OPUSFILE
650 &informationStr, wxT("libopus"),
651 /* i18n-hint: Opus is the codec name. This name should not be translated */
652 XO("Opus Import and Export"), enabled);
653 #else
655 &informationStr, wxT("libopus"),
656 /* i18n-hint: Opus is the codec name. This name should not be translated
657 */
658 XO("Opus Import and Export"), disabled);
659 #endif
660
661 #ifdef USE_LIBID3TAG
662 AddBuildinfoRow(&informationStr, wxT("libid3tag"), XO("ID3 tag support"),
663 enabled);
664 #else
665 AddBuildinfoRow(&informationStr, wxT("libid3tag"), XO("ID3 tag support"),
666 disabled);
667 #endif
668
669 # if USE_LIBFLAC
670 /* i18n-hint: FLAC stands for Free Lossless Audio Codec, but is effectively
671 * a proper noun and so shouldn't be translated */
672 AddBuildinfoRow(&informationStr, wxT("libflac"), XO("FLAC import and export"),
673 enabled);
674 # else
675 AddBuildinfoRow(&informationStr, wxT("libflac"), XO("FLAC import and export"),
676 disabled);
677 # endif
678
679 # if USE_LIBTWOLAME
680 AddBuildinfoRow(&informationStr, wxT("libtwolame"), XO("MP2 export"),
681 enabled);
682 # else
683 AddBuildinfoRow(&informationStr, wxT("libtwolame"), XO("MP2 export"),
684 disabled);
685 # endif
686
687 #ifdef USE_FFMPEG
688 AddBuildinfoRow(&informationStr, wxT("ffmpeg"), XO("FFmpeg Import/Export"), enabled);
689 #else
690 AddBuildinfoRow(&informationStr, wxT("ffmpeg"), XO("FFmpeg Import/Export"), disabled);
691 #endif
692
693 informationStr << wxT("</table>\n"); //end table of file formats supported
694
695 informationStr
696 << wxT("<h3>")
697 << XO("Features")
698 << wxT("</h3>\n<table>"); // start table of features
699
700 # if USE_NYQUIST
701 AddBuildinfoRow(&informationStr, wxT("Nyquist"), XO("Plug-in support"),
702 enabled);
703 # else
704 AddBuildinfoRow(&informationStr, wxT("Nyquist"), XO("Plug-in support"),
705 disabled);
706 # endif
707
708 # if USE_LADSPA
709 AddBuildinfoRow(&informationStr, wxT("LADSPA"), XO("Plug-in support"),
710 enabled);
711 # else
712 AddBuildinfoRow(&informationStr, wxT("LADSPA"), XO("Plug-in support"),
713 disabled);
714 # endif
715
716 # if USE_VAMP
717 AddBuildinfoRow(&informationStr, wxT("Vamp"), XO("Plug-in support"),
718 enabled);
719 # else
720 AddBuildinfoRow(&informationStr, wxT("Vamp"), XO("Plug-in support"),
721 disabled);
722 # endif
723
724 # if USE_AUDIO_UNITS
725 AddBuildinfoRow(&informationStr, wxT("Audio Units"), XO("Plug-in support"),
726 enabled);
727 # else
728 AddBuildinfoRow(&informationStr, wxT("Audio Units"), XO("Plug-in support"),
729 disabled);
730 # endif
731
732 # if USE_VST
733 AddBuildinfoRow(&informationStr, wxT("VST"), XO("Plug-in support"),
734 enabled);
735 # else
736 AddBuildinfoRow(&informationStr, wxT("VST"), XO("Plug-in support"),
737 disabled);
738 # endif
739
740 # if USE_LV2
741 AddBuildinfoRow(&informationStr, wxT("LV2"), XO("Plug-in support"),
742 enabled);
743 # else
744 AddBuildinfoRow(&informationStr, wxT("LV2"), XO("Plug-in support"),
745 disabled);
746 # endif
747
748 # if USE_PORTMIXER
749 AddBuildinfoRow(&informationStr, wxT("PortMixer"), XO("Sound card mixer support"),
750 enabled);
751 # else
752 AddBuildinfoRow(&informationStr, wxT("PortMixer"), XO("Sound card mixer support"),
753 disabled);
754 # endif
755
756 # if USE_SOUNDTOUCH
757 AddBuildinfoRow(&informationStr, wxT("SoundTouch"), XO("Pitch and Tempo Change support"),
758 enabled);
759 # else
760 AddBuildinfoRow(&informationStr, wxT("SoundTouch"), XO("Pitch and Tempo Change support"),
761 disabled);
762 # endif
763
764 # if USE_SBSMS
765 AddBuildinfoRow(&informationStr, wxT("SBSMS"), XO("Extreme Pitch and Tempo Change support"),
766 enabled);
767 # else
768 AddBuildinfoRow(&informationStr, wxT("SBSMS"), XO("Extreme Pitch and Tempo Change support"),
769 disabled);
770 # endif
771
772 informationStr << wxT("</table>\n"); // end of table of features
773
774 html->SetPage( FormatHtmlText( o.GetString() ) ); // push the page into the html renderer
775 S.Prop(2)
776 .Position( wxEXPAND )
777 .AddWindow( html ); // make it fill the page
778 // I think the 2 here goes with the StartVerticalLay() call above?
779 S.EndVerticalLay(); // end window
780 S.EndNotebookPage(); // end the tab
781}
#define REV_IDENT
Definition: AboutDialog.cpp:67
void AddBuildinfoRow(wxTextOutputStream *str, const wxChar *libname, const TranslatableString &libdesc, const TranslatableString &status)
Add a table row saying if a library is used or not.
TranslatableString & Format(Args &&...args) &
Capture variadic format arguments (by copy) when there is no plural.
FILES_API FilePath ConfigDir()
Audacity user config directory.
FILES_API FilePath StateDir()
Audacity user state directory.
FILES_API FilePath CacheDir()
Audacity user cache directory.
FILES_API FilePath DataDir()
Audacity user data directory.

References ABOUT_DIALOG_WIDTH, AddBuildinfoRow(), FileNames::CacheDir(), FileNames::ConfigDir(), FileNames::DataDir(), TranslatableString::Format(), FormatHtmlText(), REV_IDENT, S, safenew, FileNames::StateDir(), Verbatim(), wxT(), and XO().

Referenced by AboutDialog().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PopulateLicensePage()

void AboutDialog::PopulateLicensePage ( ShuttleGui S)
private

Definition at line 786 of file AboutDialog.cpp.

787{
788#if defined(HAS_PRIVACY_POLICY)
789 S.StartNotebookPage(XC("Legal", "about dialog"));
790#else
791 S.StartNotebookPage(XO("GPL License"));
792#endif
793
794#if defined(HAS_PRIVACY_POLICY)
795 S.Prop(0).StartPanel();
796 {
797 S.AddSpace(0, 8);
798 /* i18n-hint: For "About Audacity...": Title for Privacy Policy section */
799 S.AddVariableText(XC("PRIVACY POLICY", "about dialog"), true);
800
801 S.AddFixedText(
802 XO("App update checking and error reporting require network access. "
803 "These features are optional."));
804
805 /* i18n-hint: %s will be replaced with "our Privacy Policy" */
806 AccessibleLinksFormatter privacyPolicy(XO("See %s for more info."));
807
808 privacyPolicy.FormatLink(
809 /* i18n-hint: Title of hyperlink to the privacy policy. This is an object of "See". */
810 wxT("%s"), XO("our Privacy Policy"),
811 "https://www.audacityteam.org/about/desktop-privacy-notice/");
812
813 privacyPolicy.Populate(S);
814 }
815 S.EndPanel();
816
817 S.AddSpace(0, 8);
818#endif
819
820 S.Prop(1).StartPanel();
821 {
823 S.GetParent(), -1, wxDefaultPosition, wxSize(ABOUT_DIALOG_WIDTH, 264),
824 wxHW_SCROLLBAR_AUTO );
825
826 html->SetPage(FormatHtmlText(GPL_TEXT()));
827
828 S.Prop(1).Position(wxEXPAND).AddWindow( html );
829 }
830 S.EndPanel();
831
832 S.EndNotebookPage();
833}
const wxString GPL_TEXT()
#define XC(s, c)
Definition: Internat.h:37

References ABOUT_DIALOG_WIDTH, FormatHtmlText(), AccessibleLinksFormatter::FormatLink(), GPL_TEXT(), AccessibleLinksFormatter::Populate(), S, safenew, wxT(), XC, and XO().

Referenced by AboutDialog().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ creditItems

AboutDialogCreditItemsList AboutDialog::creditItems
private

Definition at line 58 of file AboutDialog.h.

Referenced by AddCredit(), and GetCreditsByRole().

◆ icon

wxStaticBitmap* AboutDialog::icon

Definition at line 43 of file AboutDialog.h.

Referenced by AboutDialog(), and PopulateAudacityPage().


The documentation for this class was generated from the following files: