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

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

902{
903 sActiveInstance = {};
904}

References anonymous_namespace{AboutDialog.cpp}::sActiveInstance.

Member Function Documentation

◆ ActiveIntance()

AboutDialog * AboutDialog::ActiveIntance ( )
static

Definition at line 313 of file AboutDialog.cpp.

314{
315 return sActiveInstance;
316}

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

892{
893 *str
894 << wxT("<tr><td>")
895 << description
896 << wxT("</td><td>")
897 << spec
898 << wxT("</td></tr>");
899}
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 871 of file AboutDialog.cpp.

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

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

834{
835 AddCredit( name, {}, role );
836}
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 838 of file AboutDialog.cpp.

840{
841 auto str = format.empty()
842 ? Verbatim( name )
844 creditItems.emplace_back(std::move(str), role);
845}
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("William Bland"), developerFormat, roleContributor);
186 AddCredit(wxT("Sami Boukortt"), developerFormat, roleContributor);
187 AddCredit(wxT("Jeremy R. Brown"), developerFormat, roleContributor);
188 AddCredit(wxT("Alex S. Brown"), developerFormat, roleContributor);
189 AddCredit(wxT("David Bryant"), developerFormat, roleContributor);
190 AddCredit(wxT("Chris Cannam"), developerFormat, roleContributor);
191 AddCredit(wxT("Subhradeep Chakraborty"), developerFormat, roleContributor);
192 AddCredit(wxT("Cory Cook"), developerFormat, roleContributor);
193 AddCredit(wxT("Craig DeForest"), developerFormat, roleContributor);
194 AddCredit(wxT("Edgar Franke (Edgar-RFT)"), developerFormat, roleContributor);
195 AddCredit(wxT("Anton Gerasimov"), developerFormat, roleContributor);
196 AddCredit(wxT("Mitch Golden"), developerFormat, roleContributor);
197 AddCredit(wxT("Brian Gunlogson"), developerFormat, roleContributor);
198 AddCredit(wxT("Gonzalo Guzm\u00E1n"), documentationAndSupportFormat, roleContributor);
199 AddCredit(wxT("Andrew Hallendorff"), developerFormat, roleContributor);
200 AddCredit(wxT("Robert H\u00E4nggi"), developerFormat, roleContributor);
201 AddCredit(wxT("Jouni Helminen"), designerFormat, roleContributor);
202 AddCredit(wxT("Daniel Horgan"), developerFormat, roleContributor);
203 AddCredit(wxT("David Hostetler"), developerFormat, roleContributor);
204 AddCredit(wxT("Edward Hui"), developerFormat, roleContributor);
205 AddCredit(wxT("Vladislav Isaev"), presetsFormat, roleContributor);
206 AddCredit(wxT("Marek Iwaszkiewicz"), presetsFormat, roleContributor);
207 AddCredit(wxT("Steve Jolly"), developerFormat, roleContributor);
208 AddCredit(wxT("Steven Jones"), developerFormat, roleContributor);
209 AddCredit(wxT("Henric Jungheim"), developerFormat, roleContributor);
210 AddCredit(wxT("Myungchul Keum"), developerFormat, roleContributor);
211 AddCredit(wxT("Arun Kishore"), developerFormat, roleContributor);
212 AddCredit(wxT("Paul Livesey"), developerFormat, roleContributor);
213 AddCredit(wxT("Harvey Lubin"), graphicArtistFormat, roleContributor);
214 AddCredit(wxT("Max Maisel"), developerFormat, roleContributor);
215 AddCredit(wxT("Pietro Marcello"), developerFormat, roleContributor);
216 AddCredit(wxT("Greg Mekkes"), developerFormat, roleContributor);
217 AddCredit(wxT("Abe Milde"), developerFormat, roleContributor);
218 AddCredit(wxT("Ryan Miller"), testerFormat, roleContributor);
219 AddCredit(wxT("Paul Nasca"), developerFormat, roleContributor);
220 AddCredit(wxT("Clayton Otey"), developerFormat, roleContributor);
221 AddCredit(wxT("Pavel Penikov"), testerFormat, roleContributor);
222 AddCredit(wxT("Mark Phillips"), developerFormat, roleContributor);
223 AddCredit(wxT("Andr\u00E9 Pinto"), developerFormat, roleContributor);
224 AddCredit(wxT("Pokechu22"), developerFormat, roleContributor);
225 AddCredit(wxT("Jean Claude Risset"), composerFormat, roleContributor);
226 AddCredit(wxT("RuRo"), developerFormat, roleContributor);
227 AddCredit(wxT("Augustus Saunders"), developerFormat, roleContributor);
228 AddCredit(wxT("Benjamin Schwartz"), developerFormat, roleContributor);
229 AddCredit(wxT("Cliff Scott"), testerFormat, roleContributor);
230 AddCredit(wxT("David R. Sky"), NyquistPluginsFormat, roleContributor);
231 AddCredit(wxT("K. Soze"), developerFormat, roleContributor);
232 AddCredit(wxT("Rob Sykes"), developerFormat, roleContributor);
233 AddCredit(wxT("Mike Underwood"), developerFormat, roleContributor);
234 AddCredit(wxT("Philip Van Baren"), developerFormat, roleContributor);
235 AddCredit(wxT("Salvo Ventura"), developerFormat, roleContributor);
236 AddCredit(wxT("Darrell Walisser"), developerFormat, roleContributor);
237 AddCredit(wxT("Jun Wan"), developerFormat, roleContributor);
238 AddCredit(wxT("Daniel Winzen"), developerFormat, roleContributor);
239 AddCredit(wxT("Tom Woodhams"), developerFormat, roleContributor);
240 AddCredit(wxT("Mark Young"), developerFormat, roleContributor);
241 AddCredit(wxT("Wing Yu"), developerFormat, roleContributor);
242
243 // Website and Graphics
244 AddCredit(wxT("Shinta Carolinasari"), webDeveloperFormat, roleGraphics);
245 AddCredit(wxT("Bayu Rizaldhan Rayes"), graphicsFormat, roleGraphics);
246
247 // Libraries
248
249 AddCredit(wxT("[[https://libexpat.github.io/|expat]]"), roleLibrary);
250 AddCredit(wxT("[[https://xiph.org/flac/|FLAC]]"), roleLibrary);
251 AddCredit(wxT("[[http://lame.sourceforge.net/|LAME]]"), roleLibrary);
252 AddCredit(wxT("[[http://www.mega-nerd.com/libsndfile/|libsndfile]]"), roleLibrary);
253 AddCredit(wxT("[[https://sourceforge.net/p/soxr/wiki/Home/|libsoxr]]"), roleLibrary);
254 AddCredit(
255 XO("%s (incorporating %s, %s, %s, %s and %s)")
256 .Format(
257 "[[http://lv2plug.in/|lv2]]",
258 "lilv",
259 "msinttypes",
260 "serd",
261 "sord",
262 "sratom"
263 ).Translation(),
265 AddCredit(wxT("[[https://www.cs.cmu.edu/~music/nyquist/|Nyquist]]"), roleLibrary);
266 AddCredit(wxT("[[https://xiph.org/vorbis/|Ogg Vorbis]]"), roleLibrary);
267 AddCredit(wxT("[[http://www.portaudio.com/|PortAudio]]"), roleLibrary);
268 AddCredit(wxT("[[http://www.portmedia.sourceforge.net/portmidi/|PortMidi]]"), roleLibrary);
269 AddCredit(wxT("[[https://sourceforge.net/p/portmedia/wiki/portsmf/|portsmf]]"), roleLibrary);
270 AddCredit(wxT("[[http://sbsms.sourceforge.net/|sbsms]]"), roleLibrary);
271 AddCredit(wxT("[[https://www.surina.net/soundtouch/|SoundTouch]]"), roleLibrary);
272 AddCredit(wxT("[[http://www.twolame.org/|TwoLAME]]"), roleLibrary);
273 AddCredit(wxT("[[http://www.vamp-plugins.org/|Vamp]]"), roleLibrary);
274 AddCredit(wxT("[[https://wxwidgets.org/|wxWidgets]]"), roleLibrary);
275
276 // Thanks
277
278 AddCredit(wxT("Dave Beydler"), roleThanks);
279 AddCredit(wxT("Brian Cameron"), roleThanks);
280 AddCredit(wxT("Jason Cohen"), roleThanks);
281 AddCredit(wxT("Dave Fancella"), roleThanks);
282 AddCredit(wxT("Steve Harris"), roleThanks);
283 AddCredit(wxT("Daniel James"), roleThanks);
284 AddCredit(wxT("Daniil Kolpakov"), roleThanks);
285 AddCredit(wxT("Robert Leidle"), roleThanks);
286 AddCredit(wxT("Logan Lewis"), roleThanks);
287 AddCredit(wxT("David Luff"), roleThanks);
288 AddCredit(wxT("Jason Pepas"), roleThanks);
289 AddCredit(wxT("Jonathan Ryshpan"), roleThanks);
290 AddCredit(wxT("Michael Schwendt"), roleThanks);
291 AddCredit(wxT("Patrick Shirkey"), roleThanks);
292 AddCredit(wxT("Tuomas Suutari"), roleThanks);
293 AddCredit(wxT("Mark Tomlinson"), roleThanks);
294 AddCredit(wxT("David Topper"), roleThanks);
295 AddCredit(wxT("Rudy Trubitt"), roleThanks);
296 AddCredit(wxT("StreetIQ.com"), roleThanks);
297 AddCredit(wxT("UmixIt Technologies, LLC"), roleThanks);
298 AddCredit(wxT("Verilogix, Inc."), roleThanks);
299}

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

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

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

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

◆ PopulateAudacityPage()

void AboutDialog::PopulateAudacityPage ( ShuttleGui S)
private

Definition at line 351 of file AboutDialog.cpp.

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

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

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