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 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" )

◆ 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-2022 KiCad Developers Team" );
68 
69  /* KiCad build version */
70  wxString version;
71  version << ( KIPLATFORM::APP::IsOperatingSystemUnsupported() ? wxT( "(UNSUPPORTED)" )
72  : GetBuildVersion() )
73 #ifdef DEBUG
74  << wxT( ", debug" )
75 #else
76  << wxT( ", release" )
77 #endif
78  << wxT( " 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 << wxT( "and Boost " ) << ( BOOST_VERSION / 100000 ) << wxT( "." )
97  << ( BOOST_VERSION / 100 % 1000 ) << wxT( "." ) << ( BOOST_VERSION % 100 )
98  << wxT( "\n" );
99 
100  // Operating System Information
101 
102  wxPlatformInfo platformInfo;
103 
104  libVersion << wxT( "Platform: " ) << wxGetOsDescription() << wxT( ", " )
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 << wxT( "<p>" );
121  description << wxT( "<b><u>" )
122  << _( "Description" )
123  << wxT( "</u></b>" ); // bold & underlined font for caption
124 
125  description << wxT( "<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  << wxT( "</p>" );
129 
130  description << wxT( "</p>" );
131 
132  /* websites */
133  description << wxT( "<p><b><u>" )
134  << _( "KiCad on the web" )
135  << wxT( "</u></b>" ); // bold & underlined font for caption
136 
137  // bullet-ed list with some http links
138  description << wxT( "<ul>" );
139  description << wxT( "<li>" )
140  << _( "The official KiCad website - " )
141  << HtmlHyperlink( wxT( "http://www.kicad.org" ) )
142  << wxT( "</li>" );
143  description << wxT( "<li>" )
144  << _( "Developer website - " )
145  << HtmlHyperlink( wxT( "https://go.kicad.org/dev" ) )
146  << wxT( "</li>" );
147 
148  description << wxT( "<li>" )
149  << _("Official KiCad library repositories - " )
150  << HtmlHyperlink( wxT( "https://go.kicad.org/libraries" ) )
151  << wxT( "</li>" );
152 
153  description << wxT( "</ul></p>" );
154 
155  description << wxT( "<p><b><u>" )
156  << _( "Bug tracker" )
157  << wxT( "</u></b>" ); // bold & underlined font caption
158 
159  // bullet-ed list with some http links
160  description << wxT( "<ul>" );
161  description << wxT( "<li>" )
162  << _( "Report or examine bugs - " )
163  << HtmlHyperlink( wxT( "https://go.kicad.org/bugs" ) )
164  << wxT( "</li>" );
165  description << wxT( "</ul></p>" );
166 
167  description << wxT( "<p><b><u>" )
168  << _( "KiCad users group and community" )
169  << wxT( "</u></b>" ); // bold & underlined font caption
170 
171  description << wxT( "<ul>" );
172  description << wxT( "<li>" )
173  << _( "KiCad forum - " )
174  << HtmlHyperlink( wxT( "https://go.kicad.org/forum" ) )
175  << wxT( "</li>" );
176 
177  description << wxT( "</ul></p>" );
178 
179  aInfo.SetDescription( description );
180 
181 
182  // License information also HTML formatted:
183  wxString license;
184  license
185  << wxT( "<div align='center'>" )
186  << HtmlNewline( 4 )
187  << _( "The complete KiCad EDA Suite is released under the" ) << HtmlNewline( 2 )
188  << HtmlHyperlink( wxT( "http://www.gnu.org/licenses" ),
189  _( "GNU General Public License (GPL) version 3 or any later version" ) )
190  << wxT( "</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( wxT( "Jean-Pierre Charras" ), LEAD_DEV, nullptr ) );
212  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Wayne Stambaugh" ), LEAD_DEV, nullptr ) );
213 
214  // Alphabetical after the first two
215  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jon Evans" ), LEAD_DEV, nullptr ) );
216  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Roberto Fernandez Bautista" ), LEAD_DEV, nullptr ) );
217  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Seth Hillbrand" ), LEAD_DEV, nullptr ) );
218  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ian McInerney" ), LEAD_DEV, nullptr ) );
219  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Orson (Maciej Sumiński)" ), LEAD_DEV, nullptr ) );
220  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mark Roszko" ), LEAD_DEV, nullptr ) );
221  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Thomas Pointhuber" ), LEAD_DEV, nullptr ) );
222  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mikolaj Wielgus" ), LEAD_DEV, nullptr ) );
223  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Tomasz Wlostowski" ), LEAD_DEV, nullptr ) );
224  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jeff Young" ), LEAD_DEV, nullptr ) );
225 
226  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "John Beard" ), FORMER_DEV, nullptr ) );
227  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Dick Hollenbeck" ), FORMER_DEV, nullptr ) );
228  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alexis Lockwood" ), FORMER_DEV, nullptr ) );
229  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Brian Sidebotham" ), FORMER_DEV, nullptr ) );
230 
231  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Martin Aberg" ), CONTRIB_DEV, nullptr ) );
232  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Rohan Agrawal" ), CONTRIB_DEV, nullptr ) );
233  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Johannes Agricola" ), CONTRIB_DEV, nullptr ) );
234  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Nabeel Ahmad" ), CONTRIB_DEV, nullptr ) );
235  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Werner Almesberger" ), CONTRIB_DEV, nullptr ) );
236  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Shawn Anastasio" ), CONTRIB_DEV, nullptr ) );
237  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Collin Anderson" ), CONTRIB_DEV, nullptr ) );
238  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Tom Andrews" ), CONTRIB_DEV, nullptr ) );
239  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mikael Arguedas" ), CONTRIB_DEV, nullptr ) );
240  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Lachlan Audas" ), CONTRIB_DEV, nullptr ) );
241  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jean-Noel Avila" ), CONTRIB_DEV, nullptr ) );
242 
243  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Pascal Baerten" ), CONTRIB_DEV, nullptr ) );
244  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Konstantin Baranovskiy" ), CONTRIB_DEV, nullptr ) );
245  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Roman Bashkov" ), CONTRIB_DEV, nullptr ) );
246  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Michael Beardsworth" ), CONTRIB_DEV, nullptr ) );
247  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Matthew Beckler" ), CONTRIB_DEV, nullptr ) );
248  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Konrad Beckmann" ), CONTRIB_DEV, nullptr ) );
249  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "David Beinder" ), CONTRIB_DEV, nullptr ) );
250  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Frank Bennett" ), CONTRIB_DEV, nullptr ) );
251  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Roman Beranek" ), CONTRIB_DEV, nullptr ) );
252  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Gustav Bergquist" ), CONTRIB_DEV, nullptr ) );
253  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Cirilo Bernardo" ), CONTRIB_DEV, nullptr ) );
254  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Joël Bertrand" ), CONTRIB_DEV, nullptr ) );
255  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Andreas Beutling" ), CONTRIB_DEV, nullptr ) );
256  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Brian F. G. Bidulock" ), CONTRIB_DEV, nullptr ) );
257  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Anton Blanchard" ), CONTRIB_DEV, nullptr ) );
258  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Blair Bonnett" ), CONTRIB_DEV, nullptr ) );
259  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Carlo Bramini" ), CONTRIB_DEV, nullptr ) );
260  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Stefan Brüns" ), CONTRIB_DEV, nullptr ) );
261  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Andreas Buhr" ), CONTRIB_DEV, nullptr ) );
262  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ryan Bunch" ), CONTRIB_DEV, nullptr ) );
263  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Emery Burhan" ), CONTRIB_DEV, nullptr ) );
264 
265  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Phinitnan Chanasabaeng" ), CONTRIB_DEV, nullptr ) );
266  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Shivpratap Chauhan" ), CONTRIB_DEV, nullptr ) );
267  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Kevin Cozens" ), CONTRIB_DEV, nullptr ) );
268  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Joseph Y. Chen" ), CONTRIB_DEV, nullptr ) );
269  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alexey Chernov" ), CONTRIB_DEV, nullptr ) );
270  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Marco Ciampa" ), CONTRIB_DEV, nullptr ) );
271  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Marcus Comstedt" ), CONTRIB_DEV, nullptr ) );
272  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Diogo Condeco" ), CONTRIB_DEV, nullptr ) );
273  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Colin Cooper" ), CONTRIB_DEV, nullptr ) );
274  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Fabien Corona" ), CONTRIB_DEV, nullptr ) );
275  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Garth Corral" ), CONTRIB_DEV, nullptr ) );
276  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Kevin Cozens" ), CONTRIB_DEV, nullptr ) );
277  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Dan Cross" ), CONTRIB_DEV, nullptr ) );
278 
279  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jonas Diemer" ), CONTRIB_DEV, nullptr ) );
280  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Andrew D'Addesio" ), CONTRIB_DEV, nullptr ) );
281  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Martin d'Allens" ), CONTRIB_DEV, nullptr ) );
282  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Camille Delbegue" ), CONTRIB_DEV, nullptr ) );
283  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Albin Dennevi" ), CONTRIB_DEV, nullptr ) );
284  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ruben De Smet" ), CONTRIB_DEV, nullptr ) );
285  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ben Dooks" ), CONTRIB_DEV, nullptr ) );
286  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Andrew Downing" ), CONTRIB_DEV, nullptr ) );
287  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jan Dubiec" ), CONTRIB_DEV, nullptr ) );
288 
289  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Gerd Egidy" ), CONTRIB_DEV, nullptr ) );
290  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jean Philippe Eimer" ), CONTRIB_DEV, nullptr ) );
291  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ben Ellis" ), CONTRIB_DEV, nullptr ) );
292  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Oleg Endo" ), CONTRIB_DEV, nullptr ) );
293  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Damien Espitallier" ), CONTRIB_DEV, nullptr ) );
294  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Paul Ewing" ), CONTRIB_DEV, nullptr ) );
295 
296  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Andrey Fedorushkov" ), CONTRIB_DEV, nullptr ) );
297  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Julian Fellinger" ), CONTRIB_DEV, nullptr ) );
298  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Joe Ferner" ), CONTRIB_DEV, nullptr ) );
299  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Thomas Figueroa" ), CONTRIB_DEV, nullptr ) );
300  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Drew Fustini" ), CONTRIB_DEV, nullptr ) );
301 
302  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ronnie Gaensli" ), CONTRIB_DEV, nullptr ) );
303  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Christian Gagneraud" ), CONTRIB_DEV, nullptr ) );
304  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ben Gamari" ), CONTRIB_DEV, nullptr ) );
305  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ashutosh Gangwar" ), CONTRIB_DEV, nullptr ) );
306  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alessandro Gatti" ), CONTRIB_DEV, nullptr ) );
307  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Hal Gentz" ), CONTRIB_DEV, nullptr ) );
308  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Michael Geselbracht" ), CONTRIB_DEV, nullptr ) );
309  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Giulio Girardi" ), CONTRIB_DEV, nullptr ) );
310  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jeff Glass" ), CONTRIB_DEV, nullptr ) );
311  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alexander Golubev" ), CONTRIB_DEV, nullptr ) );
312  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Angus Gratton" ), CONTRIB_DEV, nullptr ) );
313  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Element Green" ), CONTRIB_DEV, nullptr ) );
314  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mathias Grimmberger" ), CONTRIB_DEV, nullptr ) );
315  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Johan Grip" ), CONTRIB_DEV, nullptr ) );
316  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Hildo Guillardi Júnior" ), CONTRIB_DEV, nullptr ) );
317  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Niki Guldbrand" ), CONTRIB_DEV, nullptr ) );
318  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alexander Guy" ), CONTRIB_DEV, nullptr ) );
319  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Zoltan Gyarmati" ), CONTRIB_DEV, nullptr ) );
320 
321  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jonathan Haas" ), CONTRIB_DEV, nullptr ) );
322  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mark Hämmerling" ), CONTRIB_DEV, nullptr ) );
323  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Stefan Hamminga" ), CONTRIB_DEV, nullptr ) );
324  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ben Harris" ), CONTRIB_DEV, nullptr ) );
325  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Lukas F. Hartmann" ), CONTRIB_DEV, nullptr ) );
326  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jakob Haufe" ), CONTRIB_DEV, nullptr ) );
327  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Aylons Hazzud" ), CONTRIB_DEV, nullptr ) );
328  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Stefan Helmert" ), CONTRIB_DEV, nullptr ) );
329  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Hartmut Henkel" ), CONTRIB_DEV, nullptr ) );
330  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Brian Henning" ), CONTRIB_DEV, nullptr ) );
331  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Paulo Henrique Silva" ), CONTRIB_DEV, nullptr ) );
332  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Hans Henry von Tresckow" ), CONTRIB_DEV, nullptr ) );
333  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Diego Herranz" ), CONTRIB_DEV, nullptr ) );
334  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Marco Hess" ), CONTRIB_DEV, nullptr ) );
335  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mario Hros" ), CONTRIB_DEV, nullptr ) );
336  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Matt Huszagh" ), CONTRIB_DEV, nullptr ) );
337  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Torsten Hüter" ), CONTRIB_DEV, nullptr ) );
338 
339  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "José Ignacio Romero" ), CONTRIB_DEV, nullptr ) );
340  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Marco Inacio" ), CONTRIB_DEV, nullptr ) );
341  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Kinichiro Inoguchi" ), CONTRIB_DEV, nullptr ) );
342  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Fabián Inostroza" ), CONTRIB_DEV, nullptr ) );
343  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Vlad Ivanov" ), CONTRIB_DEV, nullptr ) );
344 
345  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "James Jackson" ), CONTRIB_DEV, nullptr ) );
346  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jerry Jacobs" ), CONTRIB_DEV, nullptr ) );
347  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Christian Jacobsen" ), CONTRIB_DEV, nullptr ) );
348  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Michal Jahelka" ), CONTRIB_DEV, nullptr ) );
349  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Martin Janitschke" ), CONTRIB_DEV, nullptr ) );
350  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jonathan Jara-Almonte" ), CONTRIB_DEV, nullptr ) );
351  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Gilbert J.M. Forkel" ), CONTRIB_DEV, nullptr ) );
352  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "José Jorge Enríquez" ), CONTRIB_DEV, nullptr ) );
353  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Franck Jullien" ), CONTRIB_DEV, nullptr ) );
354 
355  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Eeli Kaikkonen" ), CONTRIB_DEV, nullptr ) );
356  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Lajos Kamocsay" ), CONTRIB_DEV, nullptr ) );
357  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Povilas Kanapickas" ), CONTRIB_DEV, nullptr ) );
358  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mikhail Karpenko" ), CONTRIB_DEV, nullptr ) );
359  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Kerusey Karyu" ), CONTRIB_DEV, nullptr ) );
360  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Michael Kavanagh" ), CONTRIB_DEV, nullptr ) );
361  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Graham Keeth" ), CONTRIB_DEV, nullptr ) );
362  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Yury Khalyavin" ), CONTRIB_DEV, nullptr ) );
363  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Eldar Khayrullin" ), CONTRIB_DEV, nullptr ) );
364  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ingo Kletti" ), CONTRIB_DEV, nullptr ) );
365  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Sylwester Kocjan" ), CONTRIB_DEV, nullptr ) );
366  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Clemens Koller" ), CONTRIB_DEV, nullptr ) );
367  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Asuki Kono" ), CONTRIB_DEV, nullptr ) );
368  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jakub Kozdon" ), CONTRIB_DEV, nullptr ) );
369  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Hajo Nils Krabbenhöft" ), CONTRIB_DEV, nullptr ) );
370  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Simon Kueppers" ), CONTRIB_DEV, nullptr ) );
371  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Martijn Kuipers" ), CONTRIB_DEV, nullptr ) );
372 
373  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Robbert Lagerweij" ), CONTRIB_DEV, nullptr ) );
374  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Dimitris Lampridis" ), CONTRIB_DEV, nullptr ) );
375  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Kevin Lannen" ), CONTRIB_DEV, nullptr ) );
376  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mika Laitio" ), CONTRIB_DEV, nullptr ) );
377  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Floris Lambrechts" ), CONTRIB_DEV, nullptr ) );
378  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "lê văn lập" ), CONTRIB_DEV, nullptr ) );
379  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Anton Lazarev" ), CONTRIB_DEV, nullptr ) );
380  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ludovic Léau-mercier" ), CONTRIB_DEV, nullptr ) );
381  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Paul LeoNerd Evens" ), CONTRIB_DEV, nullptr ) );
382  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jonatan Liljedahl" ), CONTRIB_DEV, nullptr ) );
383  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alexander Lunev" ), CONTRIB_DEV, nullptr ) );
384  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Andrew Lutsenko" ), CONTRIB_DEV, nullptr ) );
385  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mario Luzeiro" ), CONTRIB_DEV, nullptr ) );
386 
387  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Johannes Maibaum" ), CONTRIB_DEV, nullptr ) );
388  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mateusz Majchrzycki" ), CONTRIB_DEV, nullptr ) );
389  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Daniel Majewski" ), CONTRIB_DEV, nullptr ) );
390  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Rachel Mant" ), CONTRIB_DEV, nullptr ) );
391  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Lorenzo Marcantonio" ), CONTRIB_DEV, nullptr ) );
392  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Marco Mattila" ), CONTRIB_DEV, nullptr ) );
393  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Maui" ), CONTRIB_DEV, nullptr ) );
394  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Kirill Mavreshko" ), CONTRIB_DEV, nullptr ) );
395  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Miles McCoo" ), CONTRIB_DEV, nullptr ) );
396  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Charles McDowell" ), CONTRIB_DEV, nullptr ) );
397  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Moses McKnight" ), CONTRIB_DEV, nullptr ) );
398  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Martin McNamara" ), CONTRIB_DEV, nullptr ) );
399  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Cameron McQuinn" ), CONTRIB_DEV, nullptr ) );
400  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ievgenii Meshcheriakov" ), CONTRIB_DEV, nullptr ) );
401  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ashley Mills" ), CONTRIB_DEV, nullptr ) );
402  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Christoph Moench-Tegeder" ), CONTRIB_DEV, nullptr ) );
403  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Peter Montgomery" ), CONTRIB_DEV, nullptr ) );
404  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alejandro García Montoro" ), CONTRIB_DEV, nullptr ) );
405  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Felix Morgner" ), CONTRIB_DEV, nullptr ) );
406  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jan Mrázek" ), CONTRIB_DEV, nullptr ) );
407 
408  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Michael Narigon" ), CONTRIB_DEV, nullptr ) );
409  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jon Neal" ), CONTRIB_DEV, nullptr ) );
410  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Bastian Neumann" ), CONTRIB_DEV, nullptr ) );
411  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Kristian Nielsen" ), CONTRIB_DEV, nullptr ) );
412  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Érico Nogueira" ), CONTRIB_DEV, nullptr ) );
413  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Allan Nordhøy" ), CONTRIB_DEV, nullptr ) );
414  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Henrik Nyberg" ), CONTRIB_DEV, nullptr ) );
415 
416  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Kristoffer Ödmark" ), CONTRIB_DEV, nullptr ) );
417  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Russell Oliver" ), CONTRIB_DEV, nullptr ) );
418  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jason Oster" ), CONTRIB_DEV, nullptr ) );
419 
420  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "luz paz" ), CONTRIB_DEV, nullptr ) );
421  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Miguel Angel Ajo Pelayo" ), CONTRIB_DEV, nullptr ) );
422  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Patrick Pereira" ), CONTRIB_DEV, nullptr ) );
423  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jacobo Aragunde Perez" ), CONTRIB_DEV, nullptr ) );
424  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Matthew Petroff" ), CONTRIB_DEV, nullptr ) );
425  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Johannes Pfister" ), CONTRIB_DEV, nullptr ) );
426  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Christian Pfluger" ), CONTRIB_DEV, nullptr ) );
427  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Brian Piccioni" ), CONTRIB_DEV, nullptr ) );
428  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Nicolas Planel" ), CONTRIB_DEV, nullptr ) );
429  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Carl Poirier" ), CONTRIB_DEV, nullptr ) );
430  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Reece Pollack" ), CONTRIB_DEV, nullptr ) );
431  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alain Portal" ), CONTRIB_DEV, nullptr ) );
432  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Andrei Pozolotin" ), CONTRIB_DEV, nullptr ) );
433  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Antia Puentes" ), CONTRIB_DEV, nullptr ) );
434  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Heikki Pulkkinen" ), CONTRIB_DEV, nullptr ) );
435 
436  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Morgan Quigley" ), CONTRIB_DEV, nullptr ) );
437 
438  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Barabas Raffai" ), CONTRIB_DEV, nullptr ) );
439  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Urja Rannikko" ), CONTRIB_DEV, nullptr ) );
440  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Joshua Redstone" ), CONTRIB_DEV, nullptr ) );
441  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Michele Renda" ), CONTRIB_DEV, nullptr ) );
442  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jean-Samuel Reynaud" ), CONTRIB_DEV, nullptr ) );
443  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Dmitry Rezvanov" ), CONTRIB_DEV, nullptr ) );
444  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Simon Richter" ), CONTRIB_DEV, nullptr ) );
445  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Christoph Riehl" ), CONTRIB_DEV, nullptr ) );
446  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Thiadmer Riemersma" ), CONTRIB_DEV, nullptr ) );
447  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Gregor Riepl" ), CONTRIB_DEV, nullptr ) );
448  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "RigoLigoRLC" ), CONTRIB_DEV, nullptr ) );
449  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ola Rinta-Koski" ), CONTRIB_DEV, nullptr ) );
450  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Lubomir Rintel" ), CONTRIB_DEV, nullptr ) );
451  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Érico Rolim" ), CONTRIB_DEV, nullptr ) );
452  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Marcus A. Romer" ), CONTRIB_DEV, nullptr ) );
453  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Heiko Rosemann" ), CONTRIB_DEV, nullptr ) );
454  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Fabio Rossi" ), CONTRIB_DEV, nullptr ) );
455  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ian Roth" ), CONTRIB_DEV, nullptr ) );
456 
457  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "J. Morio Sakaguchi" ), CONTRIB_DEV, nullptr ) );
458  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Simon Schaak" ), CONTRIB_DEV, nullptr ) );
459  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ross Schlaikjer" ), CONTRIB_DEV, nullptr ) );
460  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Julius Schmidt" ), CONTRIB_DEV, nullptr ) );
461  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Marvin Schmidt" ), CONTRIB_DEV, nullptr ) );
462  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Carsten Schoenert" ), CONTRIB_DEV, nullptr ) );
463  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Simon Schubert" ), CONTRIB_DEV, nullptr ) );
464  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Michal Schulz" ), CONTRIB_DEV, nullptr ) );
465  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Adrian Scripca" ), CONTRIB_DEV, nullptr ) );
466  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Pradeepa Senanayake" ), CONTRIB_DEV, nullptr ) );
467  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Marco Serantoni" ), CONTRIB_DEV, nullptr ) );
468  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Frank Severinsen" ), CONTRIB_DEV, nullptr ) );
469  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Cheng Sheng" ), CONTRIB_DEV, nullptr ) );
470  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alexander Shuklin" ), CONTRIB_DEV, nullptr ) );
471  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Slawomir Siudym" ), CONTRIB_DEV, nullptr ) );
472  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Marco Serantoni" ), CONTRIB_DEV, nullptr ) );
473  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Guillaume Simard" ), CONTRIB_DEV, nullptr ) );
474  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Martin Sivak" ), CONTRIB_DEV, nullptr ) );
475  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mateusz Skowroński" ), CONTRIB_DEV, nullptr ) );
476  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Dominik Sliwa" ), CONTRIB_DEV, nullptr ) );
477  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Blake Smith" ), CONTRIB_DEV, nullptr ) );
478  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Rafael Sokolowski" ), CONTRIB_DEV, nullptr ) );
479  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Vesa Solonen" ), CONTRIB_DEV, nullptr ) );
480  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Ronald Sousa" ), CONTRIB_DEV, nullptr ) );
481  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Craig Southeren" ), CONTRIB_DEV, nullptr ) );
482  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Thomas Spindler" ), CONTRIB_DEV, nullptr ) );
483  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Seppe Stas" ), CONTRIB_DEV, nullptr ) );
484  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Bernhard Stegmaier" ), CONTRIB_DEV, nullptr ) );
485  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Michael Steinberg" ), CONTRIB_DEV, nullptr ) );
486  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Marco Sterbik" ), CONTRIB_DEV, nullptr ) );
487  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alexander Stock" ), CONTRIB_DEV, nullptr ) );
488  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Martin Stoilov" ), CONTRIB_DEV, nullptr ) );
489  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Hiroki Suenaga" ), CONTRIB_DEV, nullptr ) );
490 
491  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Karl Thorén" ), CONTRIB_DEV, nullptr ) );
492  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Hiroshi Tokita" ), CONTRIB_DEV, nullptr ) );
493 
494  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Vladimir Ur" ), CONTRIB_DEV, nullptr ) );
495  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Matthias Urlichs" ), CONTRIB_DEV, nullptr ) );
496  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Vladimir Uryvaev" ), CONTRIB_DEV, nullptr ) );
497 
498  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Henri Valta" ), CONTRIB_DEV, nullptr ) );
499  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Dave Vandenbout" ), CONTRIB_DEV, nullptr ) );
500  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Edwin van den Oetelaar" ), CONTRIB_DEV, nullptr ) );
501  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mark van Doesburg" ), CONTRIB_DEV, nullptr ) );
502  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Fabio Varesano" ), CONTRIB_DEV, nullptr ) );
503  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Benjamin Vernoux" ), CONTRIB_DEV, nullptr ) );
504  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Frank Villaro-Dixon" ), CONTRIB_DEV, nullptr ) );
505  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Forrest Voight" ), CONTRIB_DEV, nullptr ) );
506  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Tormod Volden" ), CONTRIB_DEV, nullptr ) );
507 
508  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Johannes Wågen" ), CONTRIB_DEV, nullptr ) );
509  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Oliver Walters" ), CONTRIB_DEV, nullptr ) );
510  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jonathan Warner" ), CONTRIB_DEV, nullptr ) );
511  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Dan Weatherill" ), CONTRIB_DEV, nullptr ) );
512  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Stefan Weber" ), CONTRIB_DEV, nullptr ) );
513  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Simon Wells" ), CONTRIB_DEV, nullptr ) );
514  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Dominik Wernberger" ), CONTRIB_DEV, nullptr ) );
515  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Mike Williams" ), CONTRIB_DEV, nullptr ) );
516  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Nick Winters" ), CONTRIB_DEV, nullptr ) );
517  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Adam Wolf" ), CONTRIB_DEV, nullptr ) );
518  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Andrzej Wolski" ), CONTRIB_DEV, nullptr ) );
519  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Damian Wrobel" ), CONTRIB_DEV, nullptr ) );
520  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Andrew Wygle" ), CONTRIB_DEV, nullptr ) );
521 
522  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Jiaxun Yang" ), CONTRIB_DEV, nullptr ) );
523  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Robert Yates" ), CONTRIB_DEV, nullptr ) );
524  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Yegor Yefremov" ), CONTRIB_DEV, nullptr ) );
525  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Kenta Yonekura" ), CONTRIB_DEV, nullptr ) );
526 
527  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Alexander Zakamaldin" ), CONTRIB_DEV, nullptr ) );
528  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Henner Zeller" ), CONTRIB_DEV, nullptr ) );
529  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Andrew Zonenberg" ), CONTRIB_DEV, nullptr ) );
530  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Karl Zeilhofer" ), CONTRIB_DEV, nullptr ) );
531  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Kevin Zheng" ), CONTRIB_DEV, nullptr ) );
532 
533  aInfo.AddDeveloper( new CONTRIBUTOR( wxT( "Nick Østergaard" ), CONTRIB_DEV, nullptr ) );
534 
535  // The document writers
536  aInfo.AddDocWriter( new CONTRIBUTOR( wxT( "Jean-Pierre Charras" ) ) );
537  aInfo.AddDocWriter( new CONTRIBUTOR( wxT( "Marco Ciampa" ) ) );
538  aInfo.AddDocWriter( new CONTRIBUTOR( wxT( "Jon Evans" ) ) );
539  aInfo.AddDocWriter( new CONTRIBUTOR( wxT( "Dick Hollenbeck" ) ) );
540  aInfo.AddDocWriter( new CONTRIBUTOR( wxT( "Igor Plyatov" ) ) );
541  aInfo.AddDocWriter( new CONTRIBUTOR( wxT( "Wayne Stambaugh" ) ) );
542  aInfo.AddDocWriter( new CONTRIBUTOR( wxT( "Fabrizio Tappero" ) ) );
543 
544  /* The translators
545  * As category the language to which the translation was done is used
546  */
547  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Martin Kratoška" ),
548  wxEmptyString,
549  wxEmptyString,
550  wxT( "Czech (CS)" ) ) );
551  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Radek Kuznik" ),
552  wxEmptyString,
553  wxEmptyString,
554  wxT( "Czech (CS)" ) ) );
555  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Roman Ondráček" ),
556  wxEmptyString,
557  wxEmptyString,
558  wxT( "Czech (CS)" ) ) );
559  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Jan Straka" ),
560  wxEmptyString,
561  wxEmptyString,
562  wxT( "Czech (CS)" ) ) );
563  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Jan Vykydal" ),
564  wxEmptyString,
565  wxEmptyString,
566  wxT( "Czech (CS)" ) ) );
567  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Jonathan Haas" ),
568  wxEmptyString,
569  wxEmptyString,
570  wxT( "German (DE)" ) ) );
571  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Mark Hämmerling" ),
572  wxEmptyString,
573  wxEmptyString,
574  wxT( "German (DE)" ) ) );
575  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Mathias Neumann" ),
576  wxEmptyString,
577  wxEmptyString,
578  wxT( "German (DE)" ) ) );
579  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Dominik Wernberger" ),
580  wxEmptyString,
581  wxEmptyString,
582  wxT( "German (DE)" ) ) );
583  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Manolis Stefanis" ),
584  wxEmptyString,
585  wxEmptyString,
586  wxT( "Greek (el_GR)" ) ) );
587  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Athanasios Vlastos" ),
588  wxEmptyString,
589  wxEmptyString,
590  wxT( "Greek (el_GR)" ) ) );
591  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Milonas Kostas" ),
592  wxEmptyString,
593  wxEmptyString,
594  wxT( "Greek (el_GR)" ) ) );
595  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Michail Misirlis" ),
596  wxEmptyString,
597  wxEmptyString,
598  wxT( "Greek (el_GR)" ) ) );
599  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Adolfo Jayme Barrientos" ),
600  wxEmptyString,
601  wxEmptyString,
602  wxT( "Spanish (ES)" ) ) );
603  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Roberto Fernandez Bautista" ),
604  wxEmptyString,
605  wxEmptyString,
606  wxT( "Spanish (ES)" ) ) );
607  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Augusto Fraga Giachero" ),
608  wxEmptyString,
609  wxEmptyString,
610  wxT( "Spanish (ES)" ) ) );
611  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Pedro Martin del Valle" ),
612  wxEmptyString,
613  wxEmptyString,
614  wxT( "Spanish (ES)" ) ) );
615  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Iñigo Figuero" ),
616  wxEmptyString,
617  wxEmptyString,
618  wxT( "Spanish (ES)" ) ) );
619  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Iñigo Zuluaga" ),
620  wxEmptyString,
621  wxEmptyString,
622  wxT( "Spanish (ES)" ) ) );
623  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Vesa Solonen" ),
624  wxEmptyString,
625  wxEmptyString,
626  wxT( "Finnish (FI)" ) ) );
627  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Alex Gellen" ),
628  wxEmptyString,
629  wxEmptyString,
630  wxT( "Finnish (FI)" ) ) );
631  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "J. Lavoie" ),
632  wxEmptyString,
633  wxEmptyString,
634  wxT( "Finnish (FI)" ) ) );
635  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Purkka Koodari" ),
636  wxEmptyString,
637  wxEmptyString,
638  wxT( "Finnish (FI)" ) ) );
639  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Ola Rinta-Koski" ),
640  wxEmptyString,
641  wxEmptyString,
642  wxT( "Finnish (FI)" ) ) );
643  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Riku Viitanen" ),
644  wxEmptyString,
645  wxEmptyString,
646  wxT( "Finnish (FI)" ) ) );
647  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Simo Mattila" ),
648  wxEmptyString,
649  wxEmptyString,
650  wxT( "Finnish (FI)" ) ) );
651  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Jean-Pierre Charras" ),
652  wxEmptyString,
653  wxEmptyString,
654  wxT( "French (FR)" ) ) );
655  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Marco Ciampa" ),
656  wxEmptyString,
657  wxEmptyString,
658  wxT( "Italian (IT)" ) ) );
659  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Hiroshi Tokita" ),
660  wxEmptyString,
661  wxEmptyString,
662  wxT( "Japanese (JA)" ) ) );
663  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Kenta Yonekura" ),
664  wxEmptyString,
665  wxEmptyString,
666  wxT( "Japanese (JA)" ) ) );
667  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Ji Yoon Choi" ),
668  wxEmptyString,
669  wxEmptyString,
670  wxT( "Japanese (JA)" ) ) );
671  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Hidemichi Gotou" ),
672  wxEmptyString,
673  wxEmptyString,
674  wxT( "Japanese (JA)" ) ) );
675  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Kaoru Zenyouji" ),
676  wxEmptyString,
677  wxEmptyString,
678  wxT( "Japanese (JA)" ) ) );
679  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Kinichiro Inoguchi" ),
680  wxEmptyString,
681  wxEmptyString,
682  wxT( "Japanese (JA)" ) ) );
683  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Norio Suzuki" ),
684  wxEmptyString,
685  wxEmptyString,
686  wxT( "Japanese (JA)" ) ) );
687  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "starfort-jp" ),
688  wxEmptyString,
689  wxEmptyString,
690  wxT( "Japanese (JA)" ) ) );
691  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "킴슨김랑기" ),
692  wxEmptyString,
693  wxEmptyString,
694  wxT( "Korean (KO)" ) ) );
695  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Ji Yoon Choi" ),
696  wxEmptyString,
697  wxEmptyString,
698  wxT( "Korean (KO)" ) ) );
699  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "jeongsuAn" ),
700  wxEmptyString,
701  wxEmptyString,
702  wxT( "Korean (KO)" ) ) );
703  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "이상수" ),
704  wxEmptyString,
705  wxEmptyString,
706  wxT( "Korean (KO)" ) ) );
707  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "jehunseo" ),
708  wxEmptyString,
709  wxEmptyString,
710  wxT( "Korean (KO)" ) ) );
711  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Uibeom Jung" ),
712  wxEmptyString,
713  wxEmptyString,
714  wxT( "Korean (KO)" ) ) );
715  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "박준언" ),
716  wxEmptyString,
717  wxEmptyString,
718  wxT( "Korean (KO)" ) ) );
719  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "방준영" ),
720  wxEmptyString,
721  wxEmptyString,
722  wxT( "Korean (KO)" ) ) );
723  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "박기정" ),
724  wxEmptyString,
725  wxEmptyString,
726  wxT( "Korean (KO)" ) ) );
727  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "hokim" ),
728  wxEmptyString,
729  wxEmptyString,
730  wxT( "Korean (KO)" ) ) );
731  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "강명구" ),
732  wxEmptyString,
733  wxEmptyString,
734  wxT( "Korean (KO)" ) ) );
735  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "서범기" ),
736  wxEmptyString,
737  wxEmptyString,
738  wxT( "Korean (KO)" ) ) );
739  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Arend-Jan van Hilten" ),
740  wxEmptyString,
741  wxEmptyString,
742  wxT( "Dutch (NL)" ) ) );
743  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "CJ van der Hoeven" ),
744  wxEmptyString,
745  wxEmptyString,
746  wxT( "Dutch (NL)" ) ) );
747  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Pim Jansen" ),
748  wxEmptyString,
749  wxEmptyString,
750  wxT( "Dutch (NL)" ) ) );
751  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Allan Nordhøy" ),
752  wxEmptyString,
753  wxEmptyString,
754  wxT( "Norwegian (NO)" ) ) );
755  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Mateusz Skowroński" ),
756  wxEmptyString,
757  wxEmptyString,
758  wxT( "Polish (PL)" ) ) );
759  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Kerusey Karyu" ),
760  wxEmptyString,
761  wxEmptyString,
762  wxT( "Polish (PL)" ) ) );
763  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Mark Roszko" ),
764  wxEmptyString,
765  wxEmptyString,
766  wxT( "Polish (PL)" ) ) );
767  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "ZbeeGin" ),
768  wxEmptyString,
769  wxEmptyString,
770  wxT( "Polish (PL)" ) ) );
771  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Augusto Fraga Giachero" ),
772  wxEmptyString,
773  wxEmptyString,
774  wxT( "Brazilian Portuguese (PT_BR)" ) ) );
775  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Wellington Terumi Uemura" ),
776  wxEmptyString,
777  wxEmptyString,
778  wxT( "Brazilian Portuguese (PT_BR)" ) ) );
779  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Augusto Fraga Giachero" ),
780  wxEmptyString,
781  wxEmptyString,
782  wxT( "Portuguese (PT)" ) ) );
783  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Renie Marquet" ),
784  wxEmptyString,
785  wxEmptyString,
786  wxT( "Portuguese (PT)" ) ) );
787  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Rafael Silva" ),
788  wxEmptyString,
789  wxEmptyString,
790  wxT( "Portuguese (PT)" ) ) );
791  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Igor Plyatov" ),
792  wxEmptyString,
793  wxEmptyString,
794  wxT( "Russian (RU)" ) ) );
795  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Дмитрий Дёмин" ),
796  wxEmptyString,
797  wxEmptyString,
798  wxT( "Russian (RU)" ) ) );
799  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Andrey Fedorushkov" ),
800  wxEmptyString,
801  wxEmptyString,
802  wxT( "Russian (RU)" ) ) );
803  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Eldar Khayrullin" ),
804  wxEmptyString,
805  wxEmptyString,
806  wxT( "Russian (RU)" ) ) );
807  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Konstantin Baranovskiy" ),
808  wxEmptyString,
809  wxEmptyString,
810  wxT( "Russian (RU)" ) ) );
811  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Axel Henriksson" ),
812  wxEmptyString,
813  wxEmptyString,
814  wxT( "Swedish (SV)" ) ) );
815  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Richard Jonsson" ),
816  wxEmptyString,
817  wxEmptyString,
818  wxT( "Swedish (SV)" ) ) );
819  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Allan Nordhøy" ),
820  wxEmptyString,
821  wxEmptyString,
822  wxT( "Swedish (SV)" ) ) );
823  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Boonchai Kingrungped" ),
824  wxEmptyString,
825  wxEmptyString,
826  wxT( "Thai (TH)" ) ) );
827  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Liu Guang" ),
828  wxEmptyString,
829  wxEmptyString,
830  wxT( "Simplified Chinese (zh_CN)" ) ) );
831  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Taotieren" ),
832  wxEmptyString,
833  wxEmptyString,
834  wxT( "Simplified Chinese (zh_CN)" ) ) );
835  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Dingzhong Chen" ),
836  wxEmptyString,
837  wxEmptyString,
838  wxT( "Simplified Chinese (zh_CN)" ) ) );
839  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "David Chen" ),
840  wxEmptyString,
841  wxEmptyString,
842  wxT( "Simplified Chinese (zh_CN)" ) ) );
843  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Rigo Ligo" ),
844  wxEmptyString,
845  wxEmptyString,
846  wxT( "Simplified Chinese (zh_CN)" ) ) );
847  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Tian Yunhao" ),
848  wxEmptyString,
849  wxEmptyString,
850  wxT( "Simplified Chinese (zh_CN)" ) ) );
851  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "David Chen" ),
852  wxEmptyString,
853  wxEmptyString,
854  wxT( "Traditional Chinese (zh_TW)" ) ) );
855  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "kai chiao chuang" ),
856  wxEmptyString,
857  wxEmptyString,
858  wxT( "Traditional Chinese (zh_TW)" ) ) );
859  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Taotieren" ),
860  wxEmptyString,
861  wxEmptyString,
862  wxT( "Traditional Chinese (zh_TW)" ) ) );
863 
864  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Remy Halvick" ),
865  wxEmptyString,
866  wxEmptyString,
867  wxT( "Other" ) ) );
868 
869  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "David J S Briscoe" ),
870  wxEmptyString,
871  wxEmptyString,
872  wxT( "Other" ) ) );
873 
874  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Dominique Laigle" ),
875  wxEmptyString,
876  wxEmptyString,
877  wxT( "Other" ) ) );
878 
879  aInfo.AddTranslator( new CONTRIBUTOR( wxT( "Paul Burke" ),
880  wxEmptyString,
881  wxEmptyString,
882  wxT( "Other" ) ) );
883 
884 
885  // Program credits for 3d models
886  #define LIBRARIANS _( "KiCad Librarian Team" )
887  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Christian Schlüter"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
888  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Rene Poeschl"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
889  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Antonio Vázquez Blanco "), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
890  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "cpresser"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
891  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Daniel Giesbrecht"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
892  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Otavio Augusto Gomes"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
893  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "herostrat"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
894  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Diego Herranz"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
895  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Joel Guittet"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
896  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Aristeidis Kimirtzis"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
897  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Chris Morgan"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
898  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Thomas Pointhuber"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
899  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Evan Shultz"), LIBRARIANS, aInfo.CreateKiBitmap( BITMAPS::library ) ) );
900 
901  #define MODELS_3D_CONTRIBUTION _( "3D models by" )
902  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Scripts by Maui" ),
903  wxT( "https://github.com/easyw" ),
904  wxT( "https://gitlab.com/kicad/libraries/kicad-packages3D-generator" ),
906  aInfo.CreateKiBitmap( BITMAPS::three_d ) ) );
907  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "GitLab contributors" ),
908  wxEmptyString,
909  wxT( "https://gitlab.com/kicad/libraries/kicad-packages3D/-/graphs/master" ),
911  aInfo.CreateKiBitmap( BITMAPS::three_d ) ) );
912 
913  #define SYMBOL_LIB_CONTRIBUTION _( "Symbols by" )
914  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "GitLab contributors" ),
915  wxEmptyString,
916  wxT( "https://gitlab.com/kicad/libraries/kicad-symbols/-/graphs/master" ),
919 
920  #define FOOTPRINT_LIB_CONTRIBUTION _( "Footprints by" )
921  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "Scripts by Thomas Pointhuber" ),
922  wxEmptyString,
923  wxT( "https://gitlab.com/kicad/libraries/kicad-footprint-generator" ),
925  aInfo.CreateKiBitmap( BITMAPS::module ) ) );
926  aInfo.AddLibrarian( new CONTRIBUTOR( wxT( "GitLab contributors" ),
927  wxEmptyString,
928  wxT( "https://gitlab.com/kicad/libraries/kicad-footprints/-/graphs/master" ),
930  aInfo.CreateKiBitmap( BITMAPS::module ) ) );
931 
932  // Program credits for icons
933  #define ICON_CONTRIBUTION _( "Icons by" )
934  aInfo.AddArtist( new CONTRIBUTOR( wxT( "Aleksandr Zyrianov" ),
935  wxEmptyString,
936  wxEmptyString,
937  ICON_CONTRIBUTION ) );
938  aInfo.AddArtist( new CONTRIBUTOR( wxT( "Iñigo Zuluaga" ),
939  wxEmptyString,
940  wxEmptyString,
941  ICON_CONTRIBUTION ) );
942  aInfo.AddArtist( new CONTRIBUTOR( wxT( "Fabrizio Tappero" ),
943  wxEmptyString,
944  wxEmptyString,
945  ICON_CONTRIBUTION ) );
946 
947  // Program credits for package developers.
948  aInfo.AddPackager( new CONTRIBUTOR( wxT( "Steven Falco" ) ) );
949  aInfo.AddPackager( new CONTRIBUTOR( wxT( "Jean-Samuel Reynaud" ) ) );
950  aInfo.AddPackager( new CONTRIBUTOR( wxT( "Bernhard Stegmaier" ) ) );
951  aInfo.AddPackager( new CONTRIBUTOR( wxT( "Adam Wolf" ) ) );
952  aInfo.AddPackager( new CONTRIBUTOR( wxT( "Nick Østergaard" ) ) );
953 }
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
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, 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 979 of file AboutDialog_main.cpp.

980 {
981  wxString hyperlink = wxEmptyString;
982 
983  if( aDescription.IsEmpty() )
984  hyperlink << wxT( "<a href='" ) << aUrl << wxT( "'>" ) << aUrl << wxT( "</a>" );
985  else
986  hyperlink << wxT( "<a href='" ) << aUrl << wxT( "'>" ) << aDescription << wxT( "</a>" );
987 
988  return hyperlink;
989 }

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

1000 {
1001  wxString newlineTags = wxEmptyString;
1002 
1003  for( size_t i = 0; i<aCount; ++i )
1004  newlineTags << wxT( "<br>" );
1005 
1006  return newlineTags;
1007 }

Referenced by buildKicadAboutBanner().

◆ ShowAboutDialog()

void ShowAboutDialog ( EDA_BASE_FRAME aParent)

Definition at line 956 of file AboutDialog_main.cpp.

957 {
959  buildKicadAboutBanner( aParent, info );
960 
961  DIALOG_ABOUT dlg( aParent, info );
962  dlg.ShowModal();
963 }
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().