KiCad PCB EDA Suite
AboutDialog_main.cpp File Reference
#include <boost/version.hpp>
#include <wx/aboutdlg.h>
#include <wx/arrimpl.cpp>
#include <wx/textctrl.h>
#include <wx/utils.h>
#include <bitmaps.h>
#include <build_version.h>
#include <common.h>
#include <kiplatform/app.h>
#include <pgm_base.h>
#include <eda_base_frame.h>
#include "aboutinfo.h"
#include "dialog_about.h"

Go to the source code of this file.

Macros

#define LEAD_DEV   _( "Lead Development Team" )
 
#define FORMER_DEV   _( "Lead Development Alumni" )
 
#define CONTRIB_DEV   _( "Additional Contributions By")
 
#define OTHERS_IN_TRANSLATION   _( "Others" )
 
#define LIBRARIANS   _( "KiCad Librarian Team" )
 
#define MODELS_3D_CONTRIBUTION   _( "3D models by" )
 
#define SYMBOL_LIB_CONTRIBUTION   _( "Symbols by" )
 
#define FOOTPRINT_LIB_CONTRIBUTION   _( "Footprints by" )
 
#define ICON_CONTRIBUTION   _( "Icons by" )
 

Functions

static wxString HtmlHyperlink (const wxString &aUrl, const wxString &aDescription)
 Helper functions. More...
 
static wxString HtmlNewline (const unsigned int aCount)
 Create an HTML newline character sequence of aCount. More...
 
static void buildKicadAboutBanner (EDA_BASE_FRAME *aParent, ABOUT_APP_INFO &aInfo)
 Initializes the ABOUT_APP_INFO object with application specific information. More...
 
void ShowAboutDialog (EDA_BASE_FRAME *aParent)
 

Macro Definition Documentation

◆ CONTRIB_DEV

#define CONTRIB_DEV   _( "Additional Contributions By")

◆ FOOTPRINT_LIB_CONTRIBUTION

#define FOOTPRINT_LIB_CONTRIBUTION   _( "Footprints by" )

◆ FORMER_DEV

#define FORMER_DEV   _( "Lead Development Alumni" )

◆ ICON_CONTRIBUTION

#define ICON_CONTRIBUTION   _( "Icons by" )

◆ LEAD_DEV

#define LEAD_DEV   _( "Lead Development Team" )

◆ LIBRARIANS

#define LIBRARIANS   _( "KiCad Librarian Team" )

◆ MODELS_3D_CONTRIBUTION

#define MODELS_3D_CONTRIBUTION   _( "3D models by" )

◆ OTHERS_IN_TRANSLATION

#define OTHERS_IN_TRANSLATION   _( "Others" )

◆ SYMBOL_LIB_CONTRIBUTION

#define SYMBOL_LIB_CONTRIBUTION   _( "Symbols by" )

Function Documentation

◆ buildKicadAboutBanner()

static void buildKicadAboutBanner ( EDA_BASE_FRAME aParent,
ABOUT_APP_INFO aInfo 
)
static

Initializes the ABOUT_APP_INFO object with application specific information.

This is the object which holds all information about the application

Definition at line 58 of file AboutDialog_main.cpp.

59 {
60  // Set application specific icon
61  aInfo.SetAppIcon( aParent->GetIcon() );
62 
63  /* Set title */
64  aInfo.SetAppName( Pgm().App().GetAppName() );
65 
66  /* Copyright information */
67  aInfo.SetCopyright( "(C) 1992-2021 KiCad Developers Team" );
68 
69  /* KiCad build version */
70  wxString version;
71  version << ( KIPLATFORM::APP::IsOperatingSystemUnsupported() ? "(UNSUPPORTED)"
72  : GetBuildVersion() )
73 #ifdef DEBUG
74  << ", debug"
75 #else
76  << ", release"
77 #endif
78  << " build";
79 
80  aInfo.SetBuildVersion( version );
81  aInfo.SetBuildDate( GetBuildDate() );
82 
83  /* wxWidgets version */
84  wxString libVersion;
85  libVersion << wxGetLibraryVersionInfo().GetVersionString();
86 
87  /* Unicode or ANSI version */
88 #if wxUSE_UNICODE
89  libVersion << wxT( " Unicode " );
90 #else
91  libVersion << wxT( " ANSI " );
92 #endif
93 
94  // Just in case someone builds KiCad with the platform native of Boost instead of
95  // the version included with the KiCad source.
96  libVersion << "and Boost " << ( BOOST_VERSION / 100000 ) << "."
97  << ( BOOST_VERSION / 100 % 1000 ) << "." << ( BOOST_VERSION % 100 )
98  << "\n";
99 
100  // Operating System Information
101 
102  wxPlatformInfo platformInfo;
103 
104  libVersion << "Platform: " << wxGetOsDescription() << ", "
105 // TODO (ISM): Readd conditional once our wx fork and flatpaks are running released 3.1.5
106 #if 0 && wxCHECK_VERSION( 3, 1, 5 )
107  << platformInfo.GetBitnessName();
108 #else
109  << platformInfo.GetArchName();
110 #endif
111 
112  aInfo.SetLibVersion( libVersion );
113 
114 
115  /* info/description part HTML formatted */
116 
117  wxString description;
118 
119  /* short description */
120  description << "<p>";
121  description << "<b><u>"
122  << _( "Description" )
123  << "</u></b>"; // bold & underlined font for caption
124 
125  description << "<p>"
126  << _( "The KiCad EDA Suite is a set of open source applications for the "
127  "creation of electronic schematics and printed circuit boards." )
128  << "</p>";
129 
130  description << "</p>";
131 
132  /* websites */
133  description << "<p><b><u>"
134  << _( "KiCad on the web" )
135  << "</u></b>"; // bold & underlined font for caption
136 
137  // bullet-ed list with some http links
138  description << "<ul>";
139  description << "<li>"
140  << _( "The official KiCad website - " )
141  << HtmlHyperlink( "http://www.kicad.org" )
142  << "</li>";
143  description << "<li>"
144  << _( "Developer website - " )
145  << HtmlHyperlink( "https://go.kicad.org/dev" )
146  << "</li>";
147 
148  description << "<li>"
149  << _("Official KiCad library repositories - " )
150  << HtmlHyperlink( "https://go.kicad.org/libraries" )
151  << "</li>";
152 
153  description << "</ul></p>";
154 
155  description << "<p><b><u>"
156  << _( "Bug tracker" )
157  << "</u></b>"; // bold & underlined font caption
158 
159  // bullet-ed list with some http links
160  description << "<ul>";
161  description << "<li>"
162  << _( "Report or examine bugs - " )
163  << HtmlHyperlink( "https://go.kicad.org/bugs" )
164  << "</li>";
165  description << "</ul></p>";
166 
167  description << "<p><b><u>"
168  << _( "KiCad users group and community" )
169  << "</u></b>"; // bold & underlined font caption
170 
171  description << "<ul>";
172  description << "<li>"
173  << _( "KiCad forum - " )
174  << HtmlHyperlink( "https://go.kicad.org/forum" )
175  << "</li>";
176 
177  description << "</ul></p>";
178 
179  aInfo.SetDescription( description );
180 
181 
182  // License information also HTML formatted:
183  wxString license;
184  license
185  << "<div align='center'>"
186  << HtmlNewline( 4 )
187  << _( "The complete KiCad EDA Suite is released under the" ) << HtmlNewline( 2 )
188  << HtmlHyperlink( "http://www.gnu.org/licenses",
189  _( "GNU General Public License (GPL) version 3 or any later version" ) )
190  << "</div>";
191 
192  aInfo.SetLicense( license );
193 
194 
195  /* A contributor consists of the following information:
196  * Mandatory:
197  * - Name
198  * Optional:
199  * - EMail address
200  * - Category
201  * - Category specific icon
202  *
203  * All contributors of the same category will be enumerated under this category
204  * which should be represented by the same icon.
205  */
206 
207  // The core developers
208 #define LEAD_DEV _( "Lead Development Team" )
209 #define FORMER_DEV _( "Lead Development Alumni" )
210 #define CONTRIB_DEV _( "Additional Contributions By")
211  aInfo.AddDeveloper( new CONTRIBUTOR( "Jean-Pierre Charras", LEAD_DEV, nullptr ) );
212  aInfo.AddDeveloper( new CONTRIBUTOR( "Wayne Stambaugh", LEAD_DEV, nullptr ) );
213 
214  // Alphabetical after the first two
215  aInfo.AddDeveloper( new CONTRIBUTOR( "Jon Evans", LEAD_DEV, nullptr ) );
216  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Roberto Fernandez Bautista" ), LEAD_DEV, nullptr ) );
217  aInfo.AddDeveloper( new CONTRIBUTOR( "Seth Hillbrand", LEAD_DEV, nullptr ) );
218  aInfo.AddDeveloper( new CONTRIBUTOR( "Ian McInerney", LEAD_DEV, nullptr ) );
219  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Orson (Maciej Sumiński)" ), LEAD_DEV, nullptr ) );
220  aInfo.AddDeveloper( new CONTRIBUTOR( "Mark Roszko", LEAD_DEV, nullptr ) );
221  aInfo.AddDeveloper( new CONTRIBUTOR( "Thomas Pointhuber", LEAD_DEV, nullptr ) );
222  aInfo.AddDeveloper( new CONTRIBUTOR( "Tomasz Wlostowski", LEAD_DEV, nullptr ) );
223  aInfo.AddDeveloper( new CONTRIBUTOR( "Jeff Young", LEAD_DEV, nullptr ) );
224 
225  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "John Beard" ), FORMER_DEV, nullptr ) );
226  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Dick Hollenbeck" ), FORMER_DEV, nullptr ) );
227  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alexis Lockwood" ), FORMER_DEV, nullptr ) );
228  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Brian Sidebotham" ), FORMER_DEV, nullptr ) );
229 
230  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Martin Aberg" ), CONTRIB_DEV, nullptr ) );
231  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Rohan Agrawal" ), CONTRIB_DEV, nullptr ) );
232  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Johannes Agricola" ), CONTRIB_DEV, nullptr ) );
233  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Nabeel Ahmad" ), CONTRIB_DEV, nullptr ) );
234  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Werner Almesberger" ), CONTRIB_DEV, nullptr ) );
235  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Shawn Anastasio" ), CONTRIB_DEV, nullptr ) );
236  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Collin Anderson" ), CONTRIB_DEV, nullptr ) );
237  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Tom Andrews" ), CONTRIB_DEV, nullptr ) );
238  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mikael Arguedas" ), CONTRIB_DEV, nullptr ) );
239  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Lachlan Audas" ), CONTRIB_DEV, nullptr ) );
240  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jean-Noel Avila" ), CONTRIB_DEV, nullptr ) );
241 
242  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Pascal Baerten" ), CONTRIB_DEV, nullptr ) );
243  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Konstantin Baranovskiy" ), CONTRIB_DEV, nullptr ) );
244  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Roman Bashkov" ), CONTRIB_DEV, nullptr ) );
245  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Michael Beardsworth" ), CONTRIB_DEV, nullptr ) );
246  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Matthew Beckler" ), CONTRIB_DEV, nullptr ) );
247  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Konrad Beckmann" ), CONTRIB_DEV, nullptr ) );
248  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "David Beinder" ), CONTRIB_DEV, nullptr ) );
249  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Frank Bennett" ), CONTRIB_DEV, nullptr ) );
250  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Roman Beranek" ), CONTRIB_DEV, nullptr ) );
251  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Gustav Bergquist" ), CONTRIB_DEV, nullptr ) );
252  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Cirilo Bernardo" ), CONTRIB_DEV, nullptr ) );
253  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Joël Bertrand" ), CONTRIB_DEV, nullptr ) );
254  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Andreas Beutling" ), CONTRIB_DEV, nullptr ) );
255  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Brian F. G. Bidulock" ), CONTRIB_DEV, nullptr ) );
256  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Anton Blanchard" ), CONTRIB_DEV, nullptr ) );
257  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Blair Bonnett" ), CONTRIB_DEV, nullptr ) );
258  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Stefan Brüns" ), CONTRIB_DEV, nullptr ) );
259  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Andreas Buhr" ), CONTRIB_DEV, nullptr ) );
260  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ryan Bunch" ), CONTRIB_DEV, nullptr ) );
261  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Emery Burhan" ), CONTRIB_DEV, nullptr ) );
262 
263  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Phinitnan Chanasabaeng" ), CONTRIB_DEV, nullptr ) );
264  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Shivpratap Chauhan" ), CONTRIB_DEV, nullptr ) );
265  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Kevin Cozens" ), CONTRIB_DEV, nullptr ) );
266  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Joseph Y. Chen" ), CONTRIB_DEV, nullptr ) );
267  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alexey Chernov" ), CONTRIB_DEV, nullptr ) );
268  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Marco Ciampa" ), CONTRIB_DEV, nullptr ) );
269  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Marcus Comstedt" ), CONTRIB_DEV, nullptr ) );
270  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Diogo Condeco" ), CONTRIB_DEV, nullptr ) );
271  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Colin Cooper" ), CONTRIB_DEV, nullptr ) );
272  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Fabien Corona" ), CONTRIB_DEV, nullptr ) );
273  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Garth Corral" ), CONTRIB_DEV, nullptr ) );
274  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Kevin Cozens" ), CONTRIB_DEV, nullptr ) );
275  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Dan Cross" ), CONTRIB_DEV, nullptr ) );
276 
277  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jonas Diemer" ), CONTRIB_DEV, nullptr ) );
278  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Andrew D'Addesio" ), CONTRIB_DEV, nullptr ) );
279  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Martin d'Allens" ), CONTRIB_DEV, nullptr ) );
280  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Camille Delbegue" ), CONTRIB_DEV, nullptr ) );
281  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ruben De Smet" ), CONTRIB_DEV, nullptr ) );
282  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ben Dooks" ), CONTRIB_DEV, nullptr ) );
283  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Andrew Downing" ), CONTRIB_DEV, nullptr ) );
284  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jan Dubiec" ), CONTRIB_DEV, nullptr ) );
285 
286  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Gerd Egidy" ), CONTRIB_DEV, nullptr ) );
287  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jean Philippe Eimer" ), CONTRIB_DEV, nullptr ) );
288  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ben Ellis" ), CONTRIB_DEV, nullptr ) );
289  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Oleg Endo" ), CONTRIB_DEV, nullptr ) );
290  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Damien Espitallier" ), CONTRIB_DEV, nullptr ) );
291  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Paul Ewing" ), CONTRIB_DEV, nullptr ) );
292 
293  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Andrey Fedorushkov" ), CONTRIB_DEV, nullptr ) );
294  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Julian Fellinger" ), CONTRIB_DEV, nullptr ) );
295  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Joe Ferner" ), CONTRIB_DEV, nullptr ) );
296  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Thomas Figueroa" ), CONTRIB_DEV, nullptr ) );
297  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Drew Fustini" ), CONTRIB_DEV, nullptr ) );
298 
299  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ronnie Gaensli" ), CONTRIB_DEV, nullptr ) );
300  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Christian Gagneraud" ), CONTRIB_DEV, nullptr ) );
301  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ben Gamari" ), CONTRIB_DEV, nullptr ) );
302  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ashutosh Gangwar" ), CONTRIB_DEV, nullptr ) );
303  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alessandro Gatti" ), CONTRIB_DEV, nullptr ) );
304  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Hal Gentz" ), CONTRIB_DEV, nullptr ) );
305  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Michael Geselbracht" ), CONTRIB_DEV, nullptr ) );
306  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alexander Golubev" ), CONTRIB_DEV, nullptr ) );
307  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Angus Gratton" ), CONTRIB_DEV, nullptr ) );
308  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Element Green" ), CONTRIB_DEV, nullptr ) );
309  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mathias Grimmberger" ), CONTRIB_DEV, nullptr ) );
310  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Hildo Guillardi Júnior" ), CONTRIB_DEV, nullptr ) );
311  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Niki Guldbrand" ), CONTRIB_DEV, nullptr ) );
312 
313  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jonathan Haas" ), CONTRIB_DEV, nullptr ) );
314  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Stefan Hamminga" ), CONTRIB_DEV, nullptr ) );
315  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ben Harris" ), CONTRIB_DEV, nullptr ) );
316  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Lukas F. Hartmann" ), CONTRIB_DEV, nullptr ) );
317  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Aylons Hazzud" ), CONTRIB_DEV, nullptr ) );
318  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Stefan Helmert" ), CONTRIB_DEV, nullptr ) );
319  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Hartmut Henkel" ), CONTRIB_DEV, nullptr ) );
320  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Brian Henning" ), CONTRIB_DEV, nullptr ) );
321  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Paulo Henrique Silva" ), CONTRIB_DEV, nullptr ) );
322  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Hans Henry von Tresckow" ), CONTRIB_DEV, nullptr ) );
323  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Diego Herranz" ), CONTRIB_DEV, nullptr ) );
324  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Marco Hess" ), CONTRIB_DEV, nullptr ) );
325  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mario Hros" ), CONTRIB_DEV, nullptr ) );
326  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Matt Huszagh" ), CONTRIB_DEV, nullptr ) );
327  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Torsten Hüter" ), CONTRIB_DEV, nullptr ) );
328 
329  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "José Ignacio Romero" ), CONTRIB_DEV, nullptr ) );
330  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Marco Inacio" ), CONTRIB_DEV, nullptr ) );
331  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Kinichiro Inoguchi" ), CONTRIB_DEV, nullptr ) );
332  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Fabián Inostroza" ), CONTRIB_DEV, nullptr ) );
333  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Vlad Ivanov" ), CONTRIB_DEV, nullptr ) );
334 
335  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jerry Jacobs" ), CONTRIB_DEV, nullptr ) );
336  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Christian Jacobsen" ), CONTRIB_DEV, nullptr ) );
337  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Michal Jahelka" ), CONTRIB_DEV, nullptr ) );
338  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Martin Janitschke" ), CONTRIB_DEV, nullptr ) );
339  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jonathan Jara-Almonte" ), CONTRIB_DEV, nullptr ) );
340  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Gilbert J.M. Forkel" ), CONTRIB_DEV, nullptr ) );
341  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "José Jorge Enríquez" ), CONTRIB_DEV, nullptr ) );
342  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Franck Jullien" ), CONTRIB_DEV, nullptr ) );
343 
344  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Eeli Kaikkonen" ), CONTRIB_DEV, nullptr ) );
345  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Lajos Kamocsay" ), CONTRIB_DEV, nullptr ) );
346  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Povilas Kanapickas" ), CONTRIB_DEV, nullptr ) );
347  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mikhail Karpenko" ), CONTRIB_DEV, nullptr ) );
348  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Kerusey Karyu" ), CONTRIB_DEV, nullptr ) );
349  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Michael Kavanagh" ), CONTRIB_DEV, nullptr ) );
350  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Graham Keeth" ), CONTRIB_DEV, nullptr ) );
351  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Yury Khalyavin" ), CONTRIB_DEV, nullptr ) );
352  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Eldar Khayrullin" ), CONTRIB_DEV, nullptr ) );
353  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ingo Kletti" ), CONTRIB_DEV, nullptr ) );
354  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Sylwester Kocjan" ), CONTRIB_DEV, nullptr ) );
355  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Clemens Koller" ), CONTRIB_DEV, nullptr ) );
356  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jakub Kozdon" ), CONTRIB_DEV, nullptr ) );
357  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Simon Kueppers" ), CONTRIB_DEV, nullptr ) );
358  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Martijn Kuipers" ), CONTRIB_DEV, nullptr ) );
359 
360  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Robbert Lagerweij" ), CONTRIB_DEV, nullptr ) );
361  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Dimitris Lampridis" ), CONTRIB_DEV, nullptr ) );
362  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Kevin Lannen" ), CONTRIB_DEV, nullptr ) );
363  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ludovic Léau-mercier" ), CONTRIB_DEV, nullptr ) );
364  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Paul LeoNerd Evens" ), CONTRIB_DEV, nullptr ) );
365  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jonatan Liljedahl" ), CONTRIB_DEV, nullptr ) );
366  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alexander Lunev" ), CONTRIB_DEV, nullptr ) );
367  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mario Luzeiro" ), CONTRIB_DEV, nullptr ) );
368 
369  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Johannes Maibaum" ), CONTRIB_DEV, nullptr ) );
370  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mateusz Majchrzycki" ), CONTRIB_DEV, nullptr ) );
371  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Daniel Majewski" ), CONTRIB_DEV, nullptr ) );
372  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Lorenzo Marcantonio" ), CONTRIB_DEV, nullptr ) );
373  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Marco Mattila" ), CONTRIB_DEV, nullptr ) );
374  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Maui" ), CONTRIB_DEV, nullptr ) );
375  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Kirill Mavreshko" ), CONTRIB_DEV, nullptr ) );
376  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Miles McCoo" ), CONTRIB_DEV, nullptr ) );
377  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Charles McDowell" ), CONTRIB_DEV, nullptr ) );
378  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Moses McKnight" ), CONTRIB_DEV, nullptr ) );
379  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Martin McNamara" ), CONTRIB_DEV, nullptr ) );
380  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ievgenii Meshcheriakov" ), CONTRIB_DEV, nullptr ) );
381  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ashley Mills" ), CONTRIB_DEV, nullptr ) );
382  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Peter Montgomery" ), CONTRIB_DEV, nullptr ) );
383  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alejandro García Montoro" ), CONTRIB_DEV, nullptr ) );
384  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Felix Morgner" ), CONTRIB_DEV, nullptr ) );
385  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jan Mrázek" ), CONTRIB_DEV, nullptr ) );
386  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Michael Narigon" ), CONTRIB_DEV, nullptr ) );
387  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jon Neal" ), CONTRIB_DEV, nullptr ) );
388  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Bastian Neumann" ), CONTRIB_DEV, nullptr ) );
389  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Kristian Nielsen" ), CONTRIB_DEV, nullptr ) );
390  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Henrik Nyberg" ), CONTRIB_DEV, nullptr ) );
391 
392  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Kristoffer Ödmark" ), CONTRIB_DEV, nullptr ) );
393  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Russell Oliver" ), CONTRIB_DEV, nullptr ) );
394  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jason Oster" ), CONTRIB_DEV, nullptr ) );
395 
396  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Miguel Angel Ajo Pelayo" ), CONTRIB_DEV, nullptr ) );
397  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Patrick Pereira" ), CONTRIB_DEV, nullptr ) );
398  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jacobo Aragunde Perez" ), CONTRIB_DEV, nullptr ) );
399  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Matthew Petroff" ), CONTRIB_DEV, nullptr ) );
400  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Johannes Pfister" ), CONTRIB_DEV, nullptr ) );
401  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Brian Piccioni" ), CONTRIB_DEV, nullptr ) );
402  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Nicolas Planel" ), CONTRIB_DEV, nullptr ) );
403  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Carl Poirier" ), CONTRIB_DEV, nullptr ) );
404  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Reece Pollack" ), CONTRIB_DEV, nullptr ) );
405  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alain Portal" ), CONTRIB_DEV, nullptr ) );
406  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Andrei Pozolotin" ), CONTRIB_DEV, nullptr ) );
407  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Antia Puentes" ), CONTRIB_DEV, nullptr ) );
408  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Heikki Pulkkinen" ), CONTRIB_DEV, nullptr ) );
409 
410  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Morgan Quigley" ), CONTRIB_DEV, nullptr ) );
411 
412  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Urja Rannikko" ), CONTRIB_DEV, nullptr ) );
413  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Joshua Redstone" ), CONTRIB_DEV, nullptr ) );
414  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Michele Renda" ), CONTRIB_DEV, nullptr ) );
415  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jean-Samuel Reynaud" ), CONTRIB_DEV, nullptr ) );
416  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Dmitry Rezvanov" ), CONTRIB_DEV, nullptr ) );
417  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Simon Richter" ), CONTRIB_DEV, nullptr ) );
418  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Christoph Riehl" ), CONTRIB_DEV, nullptr ) );
419  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Thiadmer Riemersma" ), CONTRIB_DEV, nullptr ) );
420  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Gregor Riepl" ), CONTRIB_DEV, nullptr ) );
421  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Lubomir Rintel" ), CONTRIB_DEV, nullptr ) );
422  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Érico Rolim" ), CONTRIB_DEV, nullptr ) );
423  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Heiko Rosemann" ), CONTRIB_DEV, nullptr ) );
424  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Fabio Rossi" ), CONTRIB_DEV, nullptr ) );
425  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ian Roth" ), CONTRIB_DEV, nullptr ) );
426 
427  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "J. Morio Sakaguchi" ), CONTRIB_DEV, nullptr ) );
428  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ross Schlaikjer" ), CONTRIB_DEV, nullptr ) );
429  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Julius Schmidt" ), CONTRIB_DEV, nullptr ) );
430  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Marvin Schmidt" ), CONTRIB_DEV, nullptr ) );
431  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Carsten Schoenert" ), CONTRIB_DEV, nullptr ) );
432  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Simon Schubert" ), CONTRIB_DEV, nullptr ) );
433  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Adrian Scripca" ), CONTRIB_DEV, nullptr ) );
434  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Marco Serantoni" ), CONTRIB_DEV, nullptr ) );
435  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Frank Severinsen" ), CONTRIB_DEV, nullptr ) );
436  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Cheng Sheng" ), CONTRIB_DEV, nullptr ) );
437  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alexander Shuklin" ), CONTRIB_DEV, nullptr ) );
438  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Marco Serantoni" ), CONTRIB_DEV, nullptr ) );
439  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Guillaume Simard" ), CONTRIB_DEV, nullptr ) );
440  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Martin Sivak" ), CONTRIB_DEV, nullptr ) );
441  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mateusz Skowroński" ), CONTRIB_DEV, nullptr ) );
442  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Blake Smith" ), CONTRIB_DEV, nullptr ) );
443  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Rafael Sokolowski" ), CONTRIB_DEV, nullptr ) );
444  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Vesa Solonen" ), CONTRIB_DEV, nullptr ) );
445  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ronald Sousa" ), CONTRIB_DEV, nullptr ) );
446  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Craig Southeren" ), CONTRIB_DEV, nullptr ) );
447  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Thomas Spindler" ), CONTRIB_DEV, nullptr ) );
448  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Seppe Stas" ), CONTRIB_DEV, nullptr ) );
449  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Bernhard Stegmaier" ), CONTRIB_DEV, nullptr ) );
450  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Michael Steinberg" ), CONTRIB_DEV, nullptr ) );
451  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Marco Sterbik" ), CONTRIB_DEV, nullptr ) );
452  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alexander Stock" ), CONTRIB_DEV, nullptr ) );
453  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Martin Stoilov" ), CONTRIB_DEV, nullptr ) );
454  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Hiroki Suenaga" ), CONTRIB_DEV, nullptr ) );
455 
456  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Karl Thorén" ), CONTRIB_DEV, nullptr ) );
457 
458  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Vladimir Ur" ), CONTRIB_DEV, nullptr ) );
459  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Matthias Urlichs" ), CONTRIB_DEV, nullptr ) );
460  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Vladimir Uryvaev" ), CONTRIB_DEV, nullptr ) );
461 
462  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Henri Valta" ), CONTRIB_DEV, nullptr ) );
463  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Dave Vandenbout" ), CONTRIB_DEV, nullptr ) );
464  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Edwin van den Oetelaar" ), CONTRIB_DEV, nullptr ) );
465  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mark van Doesburg" ), CONTRIB_DEV, nullptr ) );
466  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Fabio Varesano" ), CONTRIB_DEV, nullptr ) );
467  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Benjamin Vernoux" ), CONTRIB_DEV, nullptr ) );
468  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Frank Villaro-Dixon" ), CONTRIB_DEV, nullptr ) );
469  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Forrest Voight" ), CONTRIB_DEV, nullptr ) );
470  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Tormod Volden" ), CONTRIB_DEV, nullptr ) );
471 
472  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Johannes Wågen" ), CONTRIB_DEV, nullptr ) );
473  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Oliver Walters" ), CONTRIB_DEV, nullptr ) );
474  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jonathan Warner" ), CONTRIB_DEV, nullptr ) );
475  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Dan Weatherill" ), CONTRIB_DEV, nullptr ) );
476  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Simon Wells" ), CONTRIB_DEV, nullptr ) );
477  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Dominik Wernberger" ), CONTRIB_DEV, nullptr ) );
478  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mikołaj Wielgus" ), CONTRIB_DEV, nullptr ) );
479  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Nick Winters" ), CONTRIB_DEV, nullptr ) );
480  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Adam Wolf" ), CONTRIB_DEV, nullptr ) );
481  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Andrzej Wolski" ), CONTRIB_DEV, nullptr ) );
482  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Damian Wrobel" ), CONTRIB_DEV, nullptr ) );
483  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Andrew Wygle" ), CONTRIB_DEV, nullptr ) );
484 
485  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jiaxun Yang" ), CONTRIB_DEV, nullptr ) );
486  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Robert Yates" ), CONTRIB_DEV, nullptr ) );
487  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Yegor Yefremov" ), CONTRIB_DEV, nullptr ) );
488  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Kenta Yonekura" ), CONTRIB_DEV, nullptr ) );
489 
490  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alexander Zakamaldin" ), CONTRIB_DEV, nullptr ) );
491  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Henner Zeller" ), CONTRIB_DEV, nullptr ) );
492  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Andrew Zonenberg" ), CONTRIB_DEV, nullptr ) );
493  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Karl Zeilhofer" ), CONTRIB_DEV, nullptr ) );
494  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Kevin Zheng" ), CONTRIB_DEV, nullptr ) );
495 
496  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Nick Østergaard" ), CONTRIB_DEV, nullptr ) );
497 
498  // The document writers
499  aInfo.AddDocWriter( new CONTRIBUTOR( "Jean-Pierre Charras" ) );
500  aInfo.AddDocWriter( new CONTRIBUTOR( "Marco Ciampa" ) );
501  aInfo.AddDocWriter( new CONTRIBUTOR( "Dick Hollenbeck" ) );
502  aInfo.AddDocWriter( new CONTRIBUTOR( "Igor Plyatov" ) );
503  aInfo.AddDocWriter( new CONTRIBUTOR( "Wayne Stambaugh" ) );
504  aInfo.AddDocWriter( new CONTRIBUTOR( "Fabrizio Tappero" ) );
505 
506  /* The translators
507  * As category the language to which the translation was done is used
508  */
509  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Martin Kratoška" ),
510  wxEmptyString,
511  wxEmptyString,
512  "Czech (CZ)" ) );
513  aInfo.AddTranslator( new CONTRIBUTOR( "Jonathan Haas",
514  wxEmptyString,
515  wxEmptyString,
516  "German (DE)" ) );
517  aInfo.AddTranslator( new CONTRIBUTOR( "Rafael Sokolowski",
518  wxEmptyString,
519  wxEmptyString,
520  "German (DE)" ) );
521  aInfo.AddTranslator( new CONTRIBUTOR( "Manolis Stefanis",
522  wxEmptyString,
523  wxEmptyString,
524  "Greek (el_GR)" ) );
525  aInfo.AddTranslator( new CONTRIBUTOR( "Athanasios Vlastos",
526  wxEmptyString,
527  wxEmptyString,
528  "Greek (el_GR)" ) );
529  aInfo.AddTranslator( new CONTRIBUTOR( "Milonas Kostas",
530  wxEmptyString,
531  wxEmptyString,
532  "Greek (el_GR)" ) );
533  aInfo.AddTranslator( new CONTRIBUTOR( "Michail Misirlis",
534  wxEmptyString,
535  wxEmptyString,
536  "Greek (el_GR)" ) );
537  aInfo.AddTranslator( new CONTRIBUTOR( "Pedro Martin del Valle",
538  wxEmptyString,
539  wxEmptyString,
540  "Spanish (ES)" ) );
541  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Iñigo Zuluaga" ),
542  wxEmptyString,
543  wxEmptyString,
544  "Spanish (ES)" ) );
545  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Iñigo Figuero" ),
546  wxEmptyString,
547  wxEmptyString,
548  "Spanish (ES)" ) );
549  aInfo.AddTranslator( new CONTRIBUTOR( "Vesa Solonen",
550  wxEmptyString,
551  wxEmptyString,
552  "Finnish (FI)" ) );
553  aInfo.AddTranslator( new CONTRIBUTOR( "Jean-Pierre Charras",
554  wxEmptyString,
555  wxEmptyString,
556  "French (FR)" ) );
557  aInfo.AddTranslator( new CONTRIBUTOR( "Massimo Cioce",
558  wxEmptyString,
559  wxEmptyString,
560  "Italian (IT)" ) );
561  aInfo.AddTranslator( new CONTRIBUTOR( "Marco Ciampa",
562  wxEmptyString,
563  wxEmptyString,
564  "Italian (IT)" ) );
565  aInfo.AddTranslator( new CONTRIBUTOR( "Hiroshi Tokita",
566  wxEmptyString,
567  wxEmptyString,
568  "Japanese (JA)" ) );
569  aInfo.AddTranslator( new CONTRIBUTOR( "Kenta Yonekura",
570  wxEmptyString,
571  wxEmptyString,
572  "Japanese (JA)" ) );
573  aInfo.AddTranslator( new CONTRIBUTOR( "Hidemichi Gotou",
574  wxEmptyString,
575  wxEmptyString,
576  "Japanese (JA)" ) );
577  aInfo.AddTranslator( new CONTRIBUTOR( "Kaoru Zenyouji",
578  wxEmptyString,
579  wxEmptyString,
580  "Japanese (JA)" ) );
581  aInfo.AddTranslator( new CONTRIBUTOR( "Kinichiro Inoguchi",
582  wxEmptyString,
583  wxEmptyString,
584  "Japanese (JA)" ) );
585  aInfo.AddTranslator( new CONTRIBUTOR( "Norio Suzuki",
586  wxEmptyString,
587  wxEmptyString,
588  "Japanese (JA)" ) );
589  aInfo.AddTranslator( new CONTRIBUTOR( "starfort-jp",
590  wxEmptyString,
591  wxEmptyString,
592  "Japanese (JA)" ) );
593  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "킴슨김랑기" ),
594  wxEmptyString,
595  wxEmptyString,
596  "Korean (KO)" ) );
597  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Ji Yoon Choi" ),
598  wxEmptyString,
599  wxEmptyString,
600  "Korean (KO)" ) );
601  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "jeongsuAn" ),
602  wxEmptyString,
603  wxEmptyString,
604  "Korean (KO)" ) );
605  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "이상수" ),
606  wxEmptyString,
607  wxEmptyString,
608  "Korean (KO)" ) );
609  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "jehunseo" ),
610  wxEmptyString,
611  wxEmptyString,
612  "Korean (KO)" ) );
613  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Uibeom Jung" ),
614  wxEmptyString,
615  wxEmptyString,
616  "Korean (KO)" ) );
617  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "박준언" ),
618  wxEmptyString,
619  wxEmptyString,
620  "Korean (KO)" ) );
621  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "방준영" ),
622  wxEmptyString,
623  wxEmptyString,
624  "Korean (KO)" ) );
625  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "박기정" ),
626  wxEmptyString,
627  wxEmptyString,
628  "Korean (KO)" ) );
629  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "hokim" ),
630  wxEmptyString,
631  wxEmptyString,
632  "Korean (KO)" ) );
633  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "강명구" ),
634  wxEmptyString,
635  wxEmptyString,
636  "Korean (KO)" ) );
637  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "서범기" ),
638  wxEmptyString,
639  wxEmptyString,
640  "Korean (KO)" ) );
641  aInfo.AddTranslator( new CONTRIBUTOR( "Jerry Jacobs",
642  wxEmptyString,
643  wxEmptyString,
644  "Dutch (NL)" ) );
645  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Mateusz Skowroński" ),
646  wxEmptyString,
647  wxEmptyString,
648  "Polish (PL)" ) );
649  aInfo.AddTranslator( new CONTRIBUTOR( "Kerusey Karyu",
650  wxEmptyString,
651  wxEmptyString,
652  "Polish (PL)" ) );
653  aInfo.AddTranslator( new CONTRIBUTOR( "Mark Roszko",
654  wxEmptyString,
655  wxEmptyString,
656  "Polish (PL)" ) );
657  aInfo.AddTranslator( new CONTRIBUTOR( "ZbeeGin",
658  wxEmptyString,
659  wxEmptyString,
660  "Polish (PL)" ) );
661  aInfo.AddTranslator( new CONTRIBUTOR( "Renie Marquet",
662  wxEmptyString,
663  wxEmptyString,
664  "Portuguese (PT)" ) );
665  aInfo.AddTranslator( new CONTRIBUTOR( "Igor Plyatov",
666  wxEmptyString,
667  wxEmptyString,
668  "Russian (RU)" ) );
669  aInfo.AddTranslator( new CONTRIBUTOR( "Andrey Fedorushkov",
670  wxEmptyString,
671  wxEmptyString,
672  "Russian (RU)" ) );
673  aInfo.AddTranslator( new CONTRIBUTOR( "Eldar Khayrullin",
674  wxEmptyString,
675  wxEmptyString,
676  "Russian (RU)" ) );
677  aInfo.AddTranslator( new CONTRIBUTOR( "Konstantin Baranovskiy",
678  wxEmptyString,
679  wxEmptyString,
680  "Russian (RU)" ) );
681  aInfo.AddTranslator( new CONTRIBUTOR( "Boonchai Kingrungped",
682  wxEmptyString,
683  wxEmptyString,
684  "Thai (TH)" ) );
685  aInfo.AddTranslator( new CONTRIBUTOR( "Liu Guang",
686  wxEmptyString,
687  wxEmptyString,
688  "Simplified Chinese (zh_CN)" ) );
689  aInfo.AddTranslator( new CONTRIBUTOR( "Taotieren",
690  wxEmptyString,
691  wxEmptyString,
692  "Simplified Chinese (zh_CN)" ) );
693 
694  // Maintainer who helper in translations, but not in a specific translation
695  #define OTHERS_IN_TRANSLATION _( "Others" )
696  aInfo.AddTranslator( new CONTRIBUTOR( "Remy Halvick",
697  wxEmptyString,
698  wxEmptyString,
700  aInfo.AddTranslator( new CONTRIBUTOR( "David J S Briscoe",
701  wxEmptyString,
702  wxEmptyString,
704  aInfo.AddTranslator( new CONTRIBUTOR( "Dominique Laigle",
705  wxEmptyString,
706  wxEmptyString,
708  aInfo.AddTranslator( new CONTRIBUTOR( "Paul Burke",
709  wxEmptyString,
710  wxEmptyString,
712 
713 
714  // Program credits for 3d models
715  #define LIBRARIANS _( "KiCad Librarian Team" )
716  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Christian Schlüter"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
717  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Rene Poeschl"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
718  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Antonio Vázquez Blanco "), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
719  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "cpresser"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
720  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Daniel Giesbrecht"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
721  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Otavio Augusto Gomes"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
722  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "herostrat"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
723  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Diego Herranz"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
724  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Joel Guittet"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
725  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Aristeidis Kimirtzis"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
726  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Chris Morgan"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
727  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Thomas Pointhuber"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
728  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Evan Shultz"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
729 
730  #define MODELS_3D_CONTRIBUTION _( "3D models by" )
731  aInfo.AddLibrarian( new CONTRIBUTOR( "Scripts by Maui",
732  "https://github.com/easyw",
733  "https://gitlab.com/kicad/libraries/kicad-packages3D-generator",
735  aInfo.CreateKiBitmap( BITMAPS::three_d ) ) );
736  aInfo.AddLibrarian( new CONTRIBUTOR( "GitLab contributors",
737  wxEmptyString,
738  "https://gitlab.com/kicad/libraries/kicad-packages3D/-/graphs/master",
740  aInfo.CreateKiBitmap( BITMAPS::three_d ) ) );
741 
742  #define SYMBOL_LIB_CONTRIBUTION _( "Symbols by" )
743  aInfo.AddLibrarian( new CONTRIBUTOR( "GitLab contributors",
744  wxEmptyString,
745  "https://gitlab.com/kicad/libraries/kicad-symbols/-/graphs/master",
748 
749  #define FOOTPRINT_LIB_CONTRIBUTION _( "Footprints by" )
750  aInfo.AddLibrarian( new CONTRIBUTOR( "Scripts by Thomas Pointhuber",
751  wxEmptyString,
752  "https://gitlab.com/kicad/libraries/kicad-footprint-generator",
754  aInfo.CreateKiBitmap( BITMAPS::module ) ) );
755  aInfo.AddLibrarian( new CONTRIBUTOR( "GitLab contributors",
756  wxEmptyString,
757  "https://gitlab.com/kicad/libraries/kicad-footprints/-/graphs/master",
759  aInfo.CreateKiBitmap( BITMAPS::module ) ) );
760 
761  // Program credits for icons
762  #define ICON_CONTRIBUTION _( "Icons by" )
763  aInfo.AddArtist( new CONTRIBUTOR( wxT( "Aleksandr Zyrianov" ),
764  wxEmptyString,
765  wxEmptyString,
766  ICON_CONTRIBUTION ) );
767  aInfo.AddArtist( new CONTRIBUTOR( wxT( "Iñigo Zuluaga" ),
768  wxEmptyString,
769  wxEmptyString,
770  ICON_CONTRIBUTION ) );
771  aInfo.AddArtist( new CONTRIBUTOR( "Fabrizio Tappero",
772  wxEmptyString,
773  wxEmptyString,
774  ICON_CONTRIBUTION ) );
775 
776  // Program credits for package developers.
777  aInfo.AddPackager( new CONTRIBUTOR( "Steven Falco" ) );
778  aInfo.AddPackager( new CONTRIBUTOR( "Jean-Samuel Reynaud" ) );
779  aInfo.AddPackager( new CONTRIBUTOR( "Bernhard Stegmaier" ) );
780  aInfo.AddPackager( new CONTRIBUTOR( "Adam Wolf" ) );
781  aInfo.AddPackager( new CONTRIBUTOR( wxT( "Nick Østergaard" ) ) );
782 }
bool IsOperatingSystemUnsupported()
Checks if the Operating System is explicitly unsupported and we want to prevent users from sending bu...
Definition: gtk/app.cpp:51
void SetCopyright(const wxString &text)
Definition: aboutinfo.h:99
#define ICON_CONTRIBUTION
#define LIBRARIANS
void AddTranslator(const CONTRIBUTOR *translator)
Definition: aboutinfo.h:74
#define OTHERS_IN_TRANSLATION
void AddDocWriter(const CONTRIBUTOR *docwriter)
Definition: aboutinfo.h:56
static wxString HtmlNewline(const unsigned int amount=1)
Create an HTML newline character sequence of aCount.
void SetAppIcon(const wxIcon &aIcon)
Definition: aboutinfo.h:114
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:106
#define SYMBOL_LIB_CONTRIBUTION
#define CONTRIB_DEV
void SetBuildVersion(const wxString &version)
Definition: aboutinfo.h:105
void SetDescription(const wxString &text)
Definition: aboutinfo.h:93
wxString GetBuildVersion()
Get the full KiCad version string.
void SetLibVersion(const wxString &version)
Definition: aboutinfo.h:111
#define MODELS_3D_CONTRIBUTION
#define _(s)
#define LEAD_DEV
void AddArtist(const CONTRIBUTOR *artist)
Definition: aboutinfo.h:68
void SetLicense(const wxString &text)
Definition: aboutinfo.h:96
static wxString HtmlHyperlink(const wxString &url, const wxString &description=wxEmptyString)
Helper functions.
wxString GetBuildDate()
Get the build date as a string.
void SetBuildDate(const wxString &date)
Definition: aboutinfo.h:108
A contributor, a person which was involved in the development of the application or which has contrib...
Definition: aboutinfo.h:160
wxBitmap * CreateKiBitmap(BITMAPS aBitmap)
Definition: aboutinfo.h:118
void AddPackager(const CONTRIBUTOR *packager)
Definition: aboutinfo.h:80
void AddDeveloper(const CONTRIBUTOR *developer)
Definition: aboutinfo.h:50
void AddLibrarian(const CONTRIBUTOR *aLibrarian)
Definition: aboutinfo.h:62
#define FOOTPRINT_LIB_CONTRIBUTION
void SetAppName(const wxString &name)
Definition: aboutinfo.h:102
#define FORMER_DEV

References _, add_component, ABOUT_APP_INFO::AddArtist(), ABOUT_APP_INFO::AddDeveloper(), ABOUT_APP_INFO::AddDocWriter(), ABOUT_APP_INFO::AddLibrarian(), ABOUT_APP_INFO::AddPackager(), ABOUT_APP_INFO::AddTranslator(), CONTRIB_DEV, ABOUT_APP_INFO::CreateKiBitmap(), FOOTPRINT_LIB_CONTRIBUTION, FORMER_DEV, GetBuildDate(), GetBuildVersion(), HtmlHyperlink(), HtmlNewline(), ICON_CONTRIBUTION, KIPLATFORM::APP::IsOperatingSystemUnsupported(), LEAD_DEV, LIBRARIANS, library, MODELS_3D_CONTRIBUTION, module, OTHERS_IN_TRANSLATION, Pgm(), ABOUT_APP_INFO::SetAppIcon(), ABOUT_APP_INFO::SetAppName(), ABOUT_APP_INFO::SetBuildDate(), ABOUT_APP_INFO::SetBuildVersion(), ABOUT_APP_INFO::SetCopyright(), ABOUT_APP_INFO::SetDescription(), ABOUT_APP_INFO::SetLibVersion(), ABOUT_APP_INFO::SetLicense(), SYMBOL_LIB_CONTRIBUTION, and three_d.

Referenced by ShowAboutDialog().

◆ HtmlHyperlink()

static wxString HtmlHyperlink ( const wxString &  aUrl,
const wxString &  aDescription 
)
static

Helper functions.

Wrap aUrl with a HTML anchor tag containing a hyperlink text reference to form a HTML hyperlink.

Parameters
aUrlthe url that will be embedded in an anchor tag containing a hyperlink reference
aDescriptionthe optional describing text that will be represented as a hyperlink. If not specified the url will be used as hyperlink.
Returns
a HTML conform hyperlink like description

Definition at line 808 of file AboutDialog_main.cpp.

809 {
810  wxString hyperlink = wxEmptyString;
811 
812  if( aDescription.IsEmpty() )
813  hyperlink << "<a href='" << aUrl << "'>" << aUrl << "</a>";
814  else
815  hyperlink << "<a href='" << aUrl << "'>" << aDescription << "</a>";
816 
817  return hyperlink;
818 }

Referenced by buildKicadAboutBanner().

◆ HtmlNewline()

static wxString HtmlNewline ( const unsigned int  aCount)
static

Create an HTML newline character sequence of aCount.

Parameters
aCountthe number of HTML newline tags to concatenate, default is to return just one
tag.
Returns
the concatenated amount of HTML newline tag(s)

Definition at line 828 of file AboutDialog_main.cpp.

829 {
830  wxString newlineTags = wxEmptyString;
831 
832  for( size_t i = 0; i<aCount; ++i )
833  newlineTags << "<br>";
834 
835  return newlineTags;
836 }

Referenced by buildKicadAboutBanner().

◆ ShowAboutDialog()

void ShowAboutDialog ( EDA_BASE_FRAME aParent)

Definition at line 785 of file AboutDialog_main.cpp.

786 {
788  buildKicadAboutBanner( aParent, info );
789 
790  DIALOG_ABOUT dlg( aParent, info );
791  dlg.ShowModal();
792 }
An object of this class is meant to be used to store application specific information like who has co...
Definition: aboutinfo.h:44
static void buildKicadAboutBanner(EDA_BASE_FRAME *aParent, ABOUT_APP_INFO &aInfo)
Initializes the ABOUT_APP_INFO object with application specific information.
About dialog to show application specific information.
Definition: dialog_about.h:53

References buildKicadAboutBanner(), and info.

Referenced by EDA_BASE_FRAME::OnKicadAbout().