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( "Seth Hillbrand", LEAD_DEV, nullptr ) );
217  aInfo.AddDeveloper( new CONTRIBUTOR( "Ian McInerney", LEAD_DEV, nullptr ) );
218  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Orson (Maciej Sumiński)" ), LEAD_DEV, nullptr ) );
219  aInfo.AddDeveloper( new CONTRIBUTOR( "Mark Roszko", LEAD_DEV, nullptr ) );
220  aInfo.AddDeveloper( new CONTRIBUTOR( "Thomas Pointhuber", LEAD_DEV, nullptr ) );
221  aInfo.AddDeveloper( new CONTRIBUTOR( "Tomasz Wlostowski", LEAD_DEV, nullptr ) );
222  aInfo.AddDeveloper( new CONTRIBUTOR( "Jeff Young", LEAD_DEV, nullptr ) );
223 
224  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "John Beard" ), FORMER_DEV, nullptr ) );
225  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Dick Hollenbeck" ), FORMER_DEV, nullptr ) );
226  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alexis Lockwood" ), FORMER_DEV, nullptr ) );
227  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Brian Sidebotham" ), FORMER_DEV, nullptr ) );
228 
229  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Martin Aberg" ), CONTRIB_DEV, nullptr ) );
230  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Rohan Agrawal" ), CONTRIB_DEV, nullptr ) );
231  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Johannes Agricola" ), CONTRIB_DEV, nullptr ) );
232  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Nabeel Ahmad" ), CONTRIB_DEV, nullptr ) );
233  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Werner Almesberger" ), CONTRIB_DEV, nullptr ) );
234  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Shawn Anastasio" ), CONTRIB_DEV, nullptr ) );
235  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Collin Anderson" ), CONTRIB_DEV, nullptr ) );
236  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Tom Andrews" ), CONTRIB_DEV, nullptr ) );
237  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mikael Arguedas" ), CONTRIB_DEV, nullptr ) );
238  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Lachlan Audas" ), CONTRIB_DEV, nullptr ) );
239  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jean-Noel Avila" ), CONTRIB_DEV, nullptr ) );
240 
241  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Pascal Baerten" ), CONTRIB_DEV, nullptr ) );
242  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Konstantin Baranovskiy" ), CONTRIB_DEV, nullptr ) );
243  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Roman Bashkov" ), CONTRIB_DEV, nullptr ) );
244  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Roberto Fernandez Bautista" ), 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  * and as icon the national flag of the corresponding country.
509  */
510  aInfo.AddTranslator( new CONTRIBUTOR( "Robert Buj",
511  wxEmptyString,
512  wxEmptyString,
513  "Catalan (CA)" ) );
514  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Martin Kratoška" ),
515  wxEmptyString,
516  wxEmptyString,
517  "Czech (CZ)" ) );
518  aInfo.AddTranslator( new CONTRIBUTOR( "Jerry Jacobs",
519  wxEmptyString,
520  wxEmptyString,
521  "Dutch (NL)" ) );
522  aInfo.AddTranslator( new CONTRIBUTOR( "Vesa Solonen",
523  wxEmptyString,
524  wxEmptyString,
525  "Finnish (FI)" ) );
526  aInfo.AddTranslator( new CONTRIBUTOR( "Jean-Pierre Charras",
527  wxEmptyString,
528  wxEmptyString,
529  "French (FR)" ) );
530  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Mateusz Skowroński" ),
531  wxEmptyString,
532  wxEmptyString,
533  "Polish (PL)" ) );
534  aInfo.AddTranslator( new CONTRIBUTOR( "Kerusey Karyu",
535  wxEmptyString,
536  wxEmptyString,
537  "Polish (PL)" ) );
538  aInfo.AddTranslator( new CONTRIBUTOR( "Renie Marquet",
539  wxEmptyString,
540  wxEmptyString,
541  "Portuguese (PT)" ) );
542  aInfo.AddTranslator( new CONTRIBUTOR( "Igor Plyatov",
543  wxEmptyString,
544  wxEmptyString,
545  "Russian (RU)" ) );
546  aInfo.AddTranslator( new CONTRIBUTOR( "Andrey Fedorushkov",
547  wxEmptyString,
548  wxEmptyString,
549  "Russian (RU)" ) );
550  aInfo.AddTranslator( new CONTRIBUTOR( "Eldar Khayrullin",
551  wxEmptyString,
552  wxEmptyString,
553  "Russian (RU)" ) );
554  aInfo.AddTranslator( new CONTRIBUTOR( "Konstantin Baranovskiy",
555  wxEmptyString,
556  wxEmptyString,
557  "Russian (RU)" ) );
558  aInfo.AddTranslator( new CONTRIBUTOR( "Pedro Martin del Valle",
559  wxEmptyString,
560  wxEmptyString,
561  "Spanish (ES)" ) );
562  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Iñigo Zuluaga" ),
563  wxEmptyString,
564  wxEmptyString,
565  "Spanish (ES)" ) );
566  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Iñigo Figuero" ),
567  wxEmptyString,
568  wxEmptyString,
569  "Spanish (ES)" ) );
570  aInfo.AddTranslator( new CONTRIBUTOR( "Jonathan Haas",
571  wxEmptyString,
572  wxEmptyString,
573  "German (DE)" ) );
574  aInfo.AddTranslator( new CONTRIBUTOR( "Rafael Sokolowski",
575  wxEmptyString,
576  wxEmptyString,
577  "German (DE)" ) );
578  aInfo.AddTranslator( new CONTRIBUTOR( "Hiroshi Tokita",
579  wxEmptyString,
580  wxEmptyString,
581  "Japanese (JA)" ) );
582  aInfo.AddTranslator( new CONTRIBUTOR( "Kenta Yonekura",
583  wxEmptyString,
584  wxEmptyString,
585  "Japanese (JA)" ) );
586  aInfo.AddTranslator( new CONTRIBUTOR( "Manolis Stefanis",
587  wxEmptyString,
588  wxEmptyString,
589  "Greek (el_GR)" ) );
590  aInfo.AddTranslator( new CONTRIBUTOR( "Athanasios Vlastos",
591  wxEmptyString,
592  wxEmptyString,
593  "Greek (el_GR)" ) );
594  aInfo.AddTranslator( new CONTRIBUTOR( "Milonas Kostas",
595  wxEmptyString,
596  wxEmptyString,
597  "Greek (el_GR)" ) );
598  aInfo.AddTranslator( new CONTRIBUTOR( "Michail Misirlis",
599  wxEmptyString,
600  wxEmptyString,
601  "Greek (el_GR)" ) );
602  aInfo.AddTranslator( new CONTRIBUTOR( "Massimo Cioce",
603  wxEmptyString,
604  wxEmptyString,
605  "Italian (IT)" ) );
606  aInfo.AddTranslator( new CONTRIBUTOR( "Marco Ciampa",
607  wxEmptyString,
608  wxEmptyString,
609  "Italian (IT)" ) );
610  aInfo.AddTranslator( new CONTRIBUTOR( "Evgeniy Ivanov",
611  wxEmptyString,
612  wxEmptyString,
613  "Bulgarian (BG)" ) );
614  aInfo.AddTranslator( new CONTRIBUTOR( "Liu Guang",
615  wxEmptyString,
616  wxEmptyString,
617  "Simplified Chinese (zh_CN)" ) );
618  aInfo.AddTranslator( new CONTRIBUTOR( "Taotieren",
619  wxEmptyString,
620  wxEmptyString,
621  "Simplified Chinese (zh_CN)" ) );
622 
623  // Maintainer who helper in translations, but not in a specific translation
624  #define OTHERS_IN_TRANSLATION _( "Others" )
625  aInfo.AddTranslator( new CONTRIBUTOR( "Remy Halvick",
626  wxEmptyString,
627  wxEmptyString,
629  aInfo.AddTranslator( new CONTRIBUTOR( "David J S Briscoe",
630  wxEmptyString,
631  wxEmptyString,
633  aInfo.AddTranslator( new CONTRIBUTOR( "Dominique Laigle",
634  wxEmptyString,
635  wxEmptyString,
637  aInfo.AddTranslator( new CONTRIBUTOR( "Paul Burke",
638  wxEmptyString,
639  wxEmptyString,
641 
642 
643  // Program credits for 3d models
644  #define LIBRARIANS _( "KiCad Librarian Team" )
645  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Christian Schlüter"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
646  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Rene Poeschl"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
647  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Antonio Vázquez Blanco "), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
648  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "cpresser"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
649  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Daniel Giesbrecht"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
650  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Otavio Augusto Gomes"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
651  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "herostrat"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
652  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Diego Herranz"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
653  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Joel Guittet"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
654  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Aristeidis Kimirtzis"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
655  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Chris Morgan"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
656  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Thomas Pointhuber"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
657  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Evan Shultz"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
658 
659  #define MODELS_3D_CONTRIBUTION _( "3D models by" )
660  aInfo.AddLibrarian( new CONTRIBUTOR( "Scripts by Maui",
661  "https://github.com/easyw",
662  "https://gitlab.com/kicad/libraries/kicad-packages3D-generator",
664  aInfo.CreateKiBitmap( BITMAPS::three_d ) ) );
665  aInfo.AddLibrarian( new CONTRIBUTOR( "GitLab contributors",
666  wxEmptyString,
667  "https://gitlab.com/kicad/libraries/kicad-packages3D/-/graphs/master",
669  aInfo.CreateKiBitmap( BITMAPS::three_d ) ) );
670 
671  #define SYMBOL_LIB_CONTRIBUTION _( "Symbols by" )
672  aInfo.AddLibrarian( new CONTRIBUTOR( "GitLab contributors",
673  wxEmptyString,
674  "https://gitlab.com/kicad/libraries/kicad-symbols/-/graphs/master",
677 
678  #define FOOTPRINT_LIB_CONTRIBUTION _( "Footprints by" )
679  aInfo.AddLibrarian( new CONTRIBUTOR( "Scripts by Thomas Pointhuber",
680  wxEmptyString,
681  "https://gitlab.com/kicad/libraries/kicad-footprint-generator",
683  aInfo.CreateKiBitmap( BITMAPS::module ) ) );
684  aInfo.AddLibrarian( new CONTRIBUTOR( "GitLab contributors",
685  wxEmptyString,
686  "https://gitlab.com/kicad/libraries/kicad-footprints/-/graphs/master",
688  aInfo.CreateKiBitmap( BITMAPS::module ) ) );
689 
690  // Program credits for icons
691  #define ICON_CONTRIBUTION _( "Icons by" )
692  aInfo.AddArtist( new CONTRIBUTOR( wxT( "Aleksandr Zyrianov" ),
693  wxEmptyString,
694  wxEmptyString,
695  ICON_CONTRIBUTION ) );
696  aInfo.AddArtist( new CONTRIBUTOR( wxT( "Iñigo Zuluaga" ),
697  wxEmptyString,
698  wxEmptyString,
699  ICON_CONTRIBUTION ) );
700  aInfo.AddArtist( new CONTRIBUTOR( "Fabrizio Tappero",
701  wxEmptyString,
702  wxEmptyString,
703  ICON_CONTRIBUTION ) );
704 
705  // Program credits for package developers.
706  aInfo.AddPackager( new CONTRIBUTOR( "Steven Falco" ) );
707  aInfo.AddPackager( new CONTRIBUTOR( "Jean-Samuel Reynaud" ) );
708  aInfo.AddPackager( new CONTRIBUTOR( "Bernhard Stegmaier" ) );
709  aInfo.AddPackager( new CONTRIBUTOR( "Adam Wolf" ) );
710  aInfo.AddPackager( new CONTRIBUTOR( wxT( "Nick Østergaard" ) ) );
711 }
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 737 of file AboutDialog_main.cpp.

738 {
739  wxString hyperlink = wxEmptyString;
740 
741  if( aDescription.IsEmpty() )
742  hyperlink << "<a href='" << aUrl << "'>" << aUrl << "</a>";
743  else
744  hyperlink << "<a href='" << aUrl << "'>" << aDescription << "</a>";
745 
746  return hyperlink;
747 }

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 757 of file AboutDialog_main.cpp.

758 {
759  wxString newlineTags = wxEmptyString;
760 
761  for( size_t i = 0; i<aCount; ++i )
762  newlineTags << "<br>";
763 
764  return newlineTags;
765 }

Referenced by buildKicadAboutBanner().

◆ ShowAboutDialog()

void ShowAboutDialog ( EDA_BASE_FRAME aParent)

Definition at line 714 of file AboutDialog_main.cpp.

715 {
717  buildKicadAboutBanner( aParent, info );
718 
719  DIALOG_ABOUT dlg( aParent, info );
720  dlg.ShowModal();
721 }
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().