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

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

891{
892 sActiveInstance = {};
893}

References anonymous_namespace{AboutDialog.cpp}::sActiveInstance.

Member Function Documentation

◆ ActiveIntance()

AboutDialog * AboutDialog::ActiveIntance ( )
static

Definition at line 304 of file AboutDialog.cpp.

305{
306 return sActiveInstance;
307}

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

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

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

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

823{
824 AddCredit( name, {}, role );
825}
const TranslatableString name
Definition: Distortion.cpp:74
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 827 of file AboutDialog.cpp.

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

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

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

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

896{
897#ifdef __WXMAC__
898 Destroy();
899#else
900 EndModal(wxID_OK);
901#endif
902}

◆ PopulateAudacityPage()

void AboutDialog::PopulateAudacityPage ( ShuttleGui S)
private

Definition at line 342 of file AboutDialog.cpp.

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

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

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