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 310 of file AboutDialog.cpp.

312 : wxDialogWrapper(parent, -1, XO("About %s").Format( ProgramName ),
313 wxDefaultPosition, wxDefaultSize,
314 wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
315{
316 wxASSERT(!sActiveInstance);
317 sActiveInstance = this;
318
319 SetName();
320 this->SetBackgroundColour(theTheme.Colour( clrAboutBoxBackground ));
321 //this->SetBackgroundColour(theTheme.Colour( clrMedium ));
322 icon = NULL;
323 ShuttleGui S( this, eIsCreating );
324 S.StartNotebook();
325 {
329 }
330 S.EndNotebook();
331
332 S.Id(wxID_OK)
333 .Prop(0)
334 .AddButton(XXO("OK"), wxALIGN_CENTER, true);
335
336 Layout();
337 Fit();
338 this->Centre();
339}
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:630
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 893 of file AboutDialog.cpp.

894{
895 sActiveInstance = {};
896}

References anonymous_namespace{AboutDialog.cpp}::sActiveInstance.

Member Function Documentation

◆ ActiveIntance()

AboutDialog * AboutDialog::ActiveIntance ( )
static

Definition at line 305 of file AboutDialog.cpp.

306{
307 return sActiveInstance;
308}

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 881 of file AboutDialog.cpp.

884{
885 *str
886 << wxT("<tr><td>")
887 << description
888 << wxT("</td><td>")
889 << spec
890 << wxT("</td></tr>");
891}
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 863 of file AboutDialog.cpp.

866{
867 *str
868 << wxT("<tr><td>")
869 << libname
870 << wxT("</td><td>(")
871 << libdesc
872 << wxT(")</td><td>")
873 << status
874 << wxT("</td></tr>");
875}

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 825 of file AboutDialog.cpp.

826{
827 AddCredit( name, {}, role );
828}
const TranslatableString name
Definition: Distortion.cpp:76
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 830 of file AboutDialog.cpp.

832{
833 auto str = format.empty()
834 ? Verbatim( name )
836 creditItems.emplace_back(std::move(str), role);
837}
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
130 // The Audacity Team: developers and support
131 AddCredit(wxT("Matthieu Hodgkinson"), developerFormat, roleTeamMember);
132 AddCredit(wxT("Peter Jonas"), developerFormat, roleTeamMember);
133 AddCredit(wxT("Martin Keary"), roleTeamMember);
134 AddCredit(wxT("Sergey Lapysh"), testerFormat, roleTeamMember);
135 AddCredit(wxT("Yana Larina"), roleTeamMember);
136 AddCredit(wxT("Paul Licameli"), developerFormat, roleTeamMember);
137 AddCredit(wxT("Dilson's Pickles"), designerFormat, roleTeamMember);
138 AddCredit(wxT("K. Soze"), developerFormat, roleTeamMember);
139 AddCredit(wxT("Anita Sudan"), roleTeamMember);
140 AddCredit(wxT("Vitaly Sverchinsky"), developerFormat, roleTeamMember);
141 AddCredit(wxT("Dmitry Vedenko"), developerFormat, roleTeamMember);
142 AddCredit(wxT("Leo Wattenberg"), designerFormat, roleTeamMember);
143 AddCredit(wxT("Jessica Williamson"), designerFormat, roleTeamMember);
144
145 // Emeritus: people who were "lead developers" or made an
146 // otherwise distinguished contribution, but who are no
147 // longer active.
148 AddCredit(wxT("Gale Andrews"), qualityAssuranceFormat, roleEmeritusTeam);
149 AddCredit(wxT("Richard Ash"), developerFormat, roleEmeritusTeam);
150 AddCredit(wxT("Christian Brochec"),
151 documentationAndSupportFrenchFormat, roleEmeritusTeam);
152 AddCredit(wxT("Matt Brubeck"), developerFormat, roleEmeritusTeam);
153 AddCredit(wxT("Arturo \"Buanzo\" Busleiman"), sysAdminFormat, roleEmeritusTeam);
154 AddCredit(wxT("Michael Chinen"), developerFormat, roleEmeritusTeam);
155 AddCredit(wxT("James Crook"), developerFormat, roleEmeritusTeam);
156 AddCredit(wxT("Roger Dannenberg"), coFounderFormat, roleEmeritusTeam);
157 AddCredit(wxT("Steve Daulton"), roleEmeritusTeam);
158 AddCredit(wxT("Al Dimond"), developerFormat, roleEmeritusTeam);
159 AddCredit(wxT("Benjamin Drung"), developerFormat, roleEmeritusTeam);
160 AddCredit(wxT("Joshua Haberman"), developerFormat, roleEmeritusTeam);
161 AddCredit(wxT("Ruslan Ijbulatov"), developerFormat, roleEmeritusTeam);
162 AddCredit(wxT("Vaughan Johnson"), developerFormat, roleEmeritusTeam);
163 AddCredit(wxT("Greg Kozikowski"), documentationAndSupportFormat, roleEmeritusTeam);
164 AddCredit(wxT("Leland Lucius"), developerFormat, roleEmeritusTeam);
165 AddCredit(wxT("Dominic Mazzoni"), coFounderFormat, roleEmeritusTeam);
166 AddCredit(wxT("Markus Meyer"), developerFormat, roleEmeritusTeam);
167 AddCredit(wxT("Monty Montgomery"), developerFormat, roleEmeritusTeam);
168 AddCredit(wxT("Shane Mueller"), developerFormat, roleEmeritusTeam);
169 AddCredit(wxT("Tony Oetzmann"), documentationAndSupportFormat, roleEmeritusTeam);
170 AddCredit(wxT("Alexandre Prokoudine"), documentationAndSupportFormat, roleEmeritusTeam);
171 AddCredit(wxT("Peter Sampson"), qaDocumentationAndSupportFormat, roleEmeritusTeam);
172 AddCredit(wxT("Martyn Shaw"), developerFormat, roleEmeritusTeam);
173 AddCredit(wxT("Bill Wharrie"), documentationAndSupportFormat, roleEmeritusTeam);
174
175 // Contributors
176 AddCredit(wxT("Lynn Allan"), developerFormat, roleContributor);
177 AddCredit(wxT("Brian Armstrong"), developerFormat, roleContributor);
178 AddCredit(wxT("David Avery"), developerFormat, roleContributor);
179 AddCredit(wxT("David Bailes"), accessibilityAdvisorFormat, roleContributor);
180 AddCredit(wxT("William Bland"), developerFormat, roleContributor);
181 AddCredit(wxT("Sami Boukortt"), developerFormat, roleContributor);
182 AddCredit(wxT("Jeremy R. Brown"), developerFormat, roleContributor);
183 AddCredit(wxT("Alex S. Brown"), developerFormat, roleContributor);
184 AddCredit(wxT("David Bryant"), developerFormat, roleContributor);
185 AddCredit(wxT("Chris Cannam"), developerFormat, roleContributor);
186 AddCredit(wxT("Subhradeep Chakraborty"), developerFormat, roleContributor);
187 AddCredit(wxT("Cory Cook"), developerFormat, roleContributor);
188 AddCredit(wxT("Craig DeForest"), developerFormat, roleContributor);
189 AddCredit(wxT("Edgar Franke (Edgar-RFT)"), developerFormat, roleContributor);
190 AddCredit(wxT("Anton Gerasimov"), developerFormat, roleContributor);
191 AddCredit(wxT("Mitch Golden"), developerFormat, roleContributor);
192 AddCredit(wxT("Brian Gunlogson"), developerFormat, roleContributor);
193 AddCredit(wxT("Gonzalo Guzm\u00E1n"), documentationAndSupportFormat, roleContributor);
194 AddCredit(wxT("Andrew Hallendorff"), developerFormat, roleContributor);
195 AddCredit(wxT("Robert H\u00E4nggi"), developerFormat, roleContributor);
196 AddCredit(wxT("Jouni Helminen"), designerFormat, roleContributor);
197 AddCredit(wxT("Daniel Horgan"), developerFormat, roleContributor);
198 AddCredit(wxT("David Hostetler"), developerFormat, roleContributor);
199 AddCredit(wxT("Edward Hui"), developerFormat, roleContributor);
200 AddCredit(wxT("Steve Jolly"), developerFormat, roleContributor);
201 AddCredit(wxT("Steven Jones"), developerFormat, roleContributor);
202 AddCredit(wxT("Henric Jungheim"), developerFormat, roleContributor);
203 AddCredit(wxT("Myungchul Keum"), developerFormat, roleContributor);
204 AddCredit(wxT("Arun Kishore"), developerFormat, roleContributor);
205 AddCredit(wxT("Paul Livesey"), developerFormat, roleContributor);
206 AddCredit(wxT("Harvey Lubin"), graphicArtistFormat, roleContributor);
207 AddCredit(wxT("Max Maisel"), developerFormat, roleContributor);
208 AddCredit(wxT("Pietro Marcello"), developerFormat, roleContributor);
209 AddCredit(wxT("Greg Mekkes"), developerFormat, roleContributor);
210 AddCredit(wxT("Abe Milde"), developerFormat, roleContributor);
211 AddCredit(wxT("Ryan Miller"), testerFormat, roleContributor);
212 AddCredit(wxT("Paul Nasca"), developerFormat, roleContributor);
213 AddCredit(wxT("Clayton Otey"), developerFormat, roleContributor);
214 AddCredit(wxT("Pavel Penikov"), testerFormat, roleContributor);
215 AddCredit(wxT("Mark Phillips"), developerFormat, roleContributor);
216 AddCredit(wxT("Andr\u00E9 Pinto"), developerFormat, roleContributor);
217 AddCredit(wxT("Pokechu22"), developerFormat, roleContributor);
218 AddCredit(wxT("Jean Claude Risset"), composerFormat, roleContributor);
219 AddCredit(wxT("RuRo"), developerFormat, roleContributor);
220 AddCredit(wxT("Augustus Saunders"), developerFormat, roleContributor);
221 AddCredit(wxT("Benjamin Schwartz"), developerFormat, roleContributor);
222 AddCredit(wxT("Cliff Scott"), testerFormat, roleContributor);
223 AddCredit(wxT("David R. Sky"), NyquistPluginsFormat, roleContributor);
224 AddCredit(wxT("Rob Sykes"), developerFormat, roleContributor);
225 AddCredit(wxT("Mike Underwood"), developerFormat, roleContributor);
226 AddCredit(wxT("Philip Van Baren"), developerFormat, roleContributor);
227 AddCredit(wxT("Salvo Ventura"), developerFormat, roleContributor);
228 AddCredit(wxT("Darrell Walisser"), developerFormat, roleContributor);
229 AddCredit(wxT("Jun Wan"), developerFormat, roleContributor);
230 AddCredit(wxT("Daniel Winzen"), developerFormat, roleContributor);
231 AddCredit(wxT("Tom Woodhams"), developerFormat, roleContributor);
232 AddCredit(wxT("Mark Young"), developerFormat, roleContributor);
233 AddCredit(wxT("Wing Yu"), developerFormat, roleContributor);
234
235 // Website and Graphics
236 AddCredit(wxT("Shinta Carolinasari"), webDeveloperFormat, roleGraphics);
237 AddCredit(wxT("Bayu Rizaldhan Rayes"), graphicsFormat, roleGraphics);
238
239 // Libraries
240
241 AddCredit(wxT("[[https://libexpat.github.io/|expat]]"), roleLibrary);
242 AddCredit(wxT("[[https://xiph.org/flac/|FLAC]]"), roleLibrary);
243 AddCredit(wxT("[[http://lame.sourceforge.net/|LAME]]"), roleLibrary);
244 AddCredit(wxT("[[http://www.mega-nerd.com/libsndfile/|libsndfile]]"), roleLibrary);
245 AddCredit(wxT("[[https://sourceforge.net/p/soxr/wiki/Home/|libsoxr]]"), roleLibrary);
246 AddCredit(
247 XO("%s (incorporating %s, %s, %s, %s and %s)")
248 .Format(
249 "[[http://lv2plug.in/|lv2]]",
250 "lilv",
251 "msinttypes",
252 "serd",
253 "sord",
254 "sratom"
255 ).Translation(),
257 AddCredit(wxT("[[https://www.cs.cmu.edu/~music/nyquist/|Nyquist]]"), roleLibrary);
258 AddCredit(wxT("[[https://xiph.org/vorbis/|Ogg Vorbis]]"), roleLibrary);
259 AddCredit(wxT("[[http://www.portaudio.com/|PortAudio]]"), roleLibrary);
260 AddCredit(wxT("[[http://www.portmedia.sourceforge.net/portmidi/|PortMidi]]"), roleLibrary);
261 AddCredit(wxT("[[https://sourceforge.net/p/portmedia/wiki/portsmf/|portsmf]]"), roleLibrary);
262 AddCredit(wxT("[[http://sbsms.sourceforge.net/|sbsms]]"), roleLibrary);
263 AddCredit(wxT("[[https://www.surina.net/soundtouch/|SoundTouch]]"), roleLibrary);
264 AddCredit(wxT("[[http://www.twolame.org/|TwoLAME]]"), roleLibrary);
265 AddCredit(wxT("[[http://www.vamp-plugins.org/|Vamp]]"), roleLibrary);
266 AddCredit(wxT("[[https://wxwidgets.org/|wxWidgets]]"), roleLibrary);
267
268 // Thanks
269
270 AddCredit(wxT("Dave Beydler"), roleThanks);
271 AddCredit(wxT("Brian Cameron"), roleThanks);
272 AddCredit(wxT("Jason Cohen"), roleThanks);
273 AddCredit(wxT("Dave Fancella"), roleThanks);
274 AddCredit(wxT("Steve Harris"), roleThanks);
275 AddCredit(wxT("Daniel James"), roleThanks);
276 AddCredit(wxT("Daniil Kolpakov"), roleThanks);
277 AddCredit(wxT("Robert Leidle"), roleThanks);
278 AddCredit(wxT("Logan Lewis"), roleThanks);
279 AddCredit(wxT("David Luff"), roleThanks);
280 AddCredit(wxT("Jason Pepas"), roleThanks);
281 AddCredit(wxT("Jonathan Ryshpan"), roleThanks);
282 AddCredit(wxT("Michael Schwendt"), roleThanks);
283 AddCredit(wxT("Patrick Shirkey"), roleThanks);
284 AddCredit(wxT("Tuomas Suutari"), roleThanks);
285 AddCredit(wxT("Mark Tomlinson"), roleThanks);
286 AddCredit(wxT("David Topper"), roleThanks);
287 AddCredit(wxT("Rudy Trubitt"), roleThanks);
288 AddCredit(wxT("StreetIQ.com"), roleThanks);
289 AddCredit(wxT("UmixIt Technologies, LLC"), roleThanks);
290 AddCredit(wxT("Verilogix, Inc."), roleThanks);
291}

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 839 of file AboutDialog.cpp.

840{
841 wxString s;
842
843 for (const auto &item : creditItems)
844 {
845 if (item.role == role)
846 {
847 s += item.description.Translation();
848 s += wxT("<br>");
849 }
850 }
851
852 // Strip last <br>, if any
853 if (s.Right(4) == wxT("<br>"))
854 s = s.Left(s.length() - 4);
855
856 return s;
857}

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 898 of file AboutDialog.cpp.

899{
900#ifdef __WXMAC__
901 Destroy();
902#else
903 EndModal(wxID_OK);
904#endif
905}

◆ PopulateAudacityPage()

void AboutDialog::PopulateAudacityPage ( ShuttleGui S)
private

Definition at line 343 of file AboutDialog.cpp.

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

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

777{
778#if defined(HAS_PRIVACY_POLICY)
779 S.StartNotebookPage(XC("Legal", "about dialog"));
780#else
781 S.StartNotebookPage(XO("GPL License"));
782#endif
783
784#if defined(HAS_PRIVACY_POLICY)
785 S.Prop(0).StartPanel();
786 {
787 S.AddSpace(0, 8);
788 /* i18n-hint: For "About Audacity...": Title for Privacy Policy section */
789 S.AddVariableText(XC("PRIVACY POLICY", "about dialog"), true);
790
791 S.AddFixedText(
792 XO("App update checking and error reporting require network access. "
793 "These features are optional."));
794
795 /* i18n-hint: %s will be replaced with "our Privacy Policy" */
796 AccessibleLinksFormatter privacyPolicy(XO("See %s for more info."));
797
798 privacyPolicy.FormatLink(
799 /* i18n-hint: Title of hyperlink to the privacy policy. This is an object of "See". */
800 wxT("%s"), XO("our Privacy Policy"),
801 "https://www.audacityteam.org/about/desktop-privacy-notice/");
802
803 privacyPolicy.Populate(S);
804 }
805 S.EndPanel();
806
807 S.AddSpace(0, 8);
808#endif
809
810 S.Prop(1).StartPanel();
811 {
813 S.GetParent(), -1, wxDefaultPosition, wxSize(ABOUT_DIALOG_WIDTH, 264),
814 wxHW_SCROLLBAR_AUTO | wxSUNKEN_BORDER);
815
816 html->SetPage(FormatHtmlText(GPL_TEXT()));
817
818 S.Prop(1).Position(wxEXPAND).AddWindow( html );
819 }
820 S.EndPanel();
821
822 S.EndNotebookPage();
823}
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: