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

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

897{
898 sActiveInstance = {};
899}

References anonymous_namespace{AboutDialog.cpp}::sActiveInstance.

Member Function Documentation

◆ ActiveIntance()

AboutDialog * AboutDialog::ActiveIntance ( )
static

Definition at line 308 of file AboutDialog.cpp.

309{
310 return sActiveInstance;
311}

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

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

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

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

829{
830 AddCredit( name, {}, role );
831}
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 833 of file AboutDialog.cpp.

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

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

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

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

902{
903#ifdef __WXMAC__
904 Destroy();
905#else
906 EndModal(wxID_OK);
907#endif
908}

◆ PopulateAudacityPage()

void AboutDialog::PopulateAudacityPage ( ShuttleGui S)
private

Definition at line 346 of file AboutDialog.cpp.

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

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

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