KiCad PCB EDA Suite
Loading...
Searching...
No Matches
AboutDialog_main.cpp
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2010 Rafael Sokolowski <[email protected]>
5 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
19 */
20
21#include <boost/version.hpp>
22#include <wx/aboutdlg.h>
23#include <wx/arrimpl.cpp>
24#include <wx/textctrl.h>
25#include <wx/utils.h>
26
27/* Used icons:
28 * show_3d_xpm; // 3D icon
29 * module_xpm;
30 * icon_kicad_xpm; // Icon of the application
31 */
32#include <bitmaps.h>
33#include <build_version.h>
34#include <common.h>
35#include <kiplatform/app.h>
36#include <pgm_base.h>
37#include <eda_base_frame.h>
38
39#include "aboutinfo.h"
40#include "dialog_about.h"
41
42
43WX_DEFINE_OBJARRAY( CONTRIBUTORS )
44
45// Helper functions:
46static wxString HtmlHyperlink( const wxString& url, const wxString& description = wxEmptyString );
47static wxString HtmlNewline( const unsigned int amount = 1 );
48
49
57
58
67
68
70{
71 const wxChar* m_Name;
73};
74
75
77{
78 const wxChar* m_Name;
79 const wxChar* m_Language;
80};
81
82
84{
85 const wxChar* m_Name;
87 const wxChar* m_Url = nullptr;
88};
89
90
91static const DEVELOPER s_developers[] = {
92 { wxT( "Jean-Pierre Charras" ), LEAD_DEV },
93 { wxT( "Wayne Stambaugh" ), LEAD_DEV },
94
95 // Alphabetical after the first two
96 { wxT( "John Beard" ), LEAD_DEV },
97 { wxT( "Jon Evans" ), LEAD_DEV },
98 { wxT( "Roberto Fernandez Bautista" ), LEAD_DEV },
99 { wxT( "Ethan Chien" ), LEAD_DEV },
100 { wxT( "Fabien Corona" ), LEAD_DEV },
101 { wxT( "Seth Hillbrand" ), LEAD_DEV },
102 { wxT( "James Jackson" ), LEAD_DEV },
103 { wxT( "Ian McInerney" ), LEAD_DEV },
104 { wxT( "Mark Roszko" ), LEAD_DEV },
105 { wxT( "Alex Shvartzkop" ), LEAD_DEV },
106 { wxT( "Mike Williams" ), LEAD_DEV },
107 { wxT( "Tomasz Wlostowski" ), LEAD_DEV },
108 { wxT( "Jeff Young" ), LEAD_DEV },
109 { wxT( "Eric Zhuang" ), LEAD_DEV },
110
111 { wxT( "Dick Hollenbeck" ), FORMER_DEV },
112 { wxT( "Alexis Lockwood" ), FORMER_DEV },
113 { wxT( "Thomas Pointhuber" ), FORMER_DEV },
114 { wxT( "Brian Sidebotham" ), FORMER_DEV },
115 { wxT( "Orson (Maciej Sumiński)" ), FORMER_DEV },
116 { wxT( "Mikolaj Wielgus" ), FORMER_DEV },
117
118 { wxT( "Martin Aberg" ), CONTRIB_DEV },
119 { wxT( "Yüksel Açikgöz" ), CONTRIB_DEV },
120 { wxT( "Rohan Agrawal" ), CONTRIB_DEV },
121 { wxT( "Johannes Agricola" ), CONTRIB_DEV },
122 { wxT( "Erik Agsjö" ), CONTRIB_DEV },
123 { wxT( "Nabeel Ahmad" ), CONTRIB_DEV },
124 { wxT( "Christopher Alexander" ), CONTRIB_DEV },
125 { wxT( "Werner Almesberger" ), CONTRIB_DEV },
126 { wxT( "Shawn Anastasio" ), CONTRIB_DEV },
127 { wxT( "Collin Anderson" ), CONTRIB_DEV },
128 { wxT( "Tom Andrews" ), CONTRIB_DEV },
129 { wxT( "Subaru Arai" ), CONTRIB_DEV },
130 { wxT( "Mikael Arguedas" ), CONTRIB_DEV },
131 { wxT( "Lachlan Audas" ), CONTRIB_DEV },
132 { wxT( "Jean-Noel Avila" ), CONTRIB_DEV },
133
134 { wxT( "Pascal Baerten" ), CONTRIB_DEV },
135 { wxT( "Konstantin Baranovskiy" ), CONTRIB_DEV },
136 { wxT( "Roman Bashkov" ), CONTRIB_DEV },
137 { wxT( "Michael Beardsworth" ), CONTRIB_DEV },
138 { wxT( "Markus Becker" ), CONTRIB_DEV },
139 { wxT( "Matthew Beckler" ), CONTRIB_DEV },
140 { wxT( "Konrad Beckmann" ), CONTRIB_DEV },
141 { wxT( "Eduardo Behr" ), CONTRIB_DEV },
142 { wxT( "David Beinder" ), CONTRIB_DEV },
143 { wxT( "Frank Bennett" ), CONTRIB_DEV },
144 { wxT( "Roman Beranek" ), CONTRIB_DEV },
145 { wxT( "Francois Berder" ), CONTRIB_DEV },
146 { wxT( "Martin Berglund" ), CONTRIB_DEV },
147 { wxT( "Gustav Bergquist" ), CONTRIB_DEV },
148 { wxT( "Cirilo Bernardo" ), CONTRIB_DEV },
149 { wxT( "Joël Bertrand" ), CONTRIB_DEV },
150 { wxT( "Harry Best" ), CONTRIB_DEV },
151 { wxT( "Andreas Beutling" ), CONTRIB_DEV },
152 { wxT( "Brian F. G. Bidulock" ), CONTRIB_DEV },
153 { wxT( "Anton Blanchard" ), CONTRIB_DEV },
154 { wxT( "Alexander Boehm" ), CONTRIB_DEV },
155 { wxT( "Steve Bollinger" ), CONTRIB_DEV },
156 { wxT( "Markus Bonk" ), CONTRIB_DEV },
157 { wxT( "Blair Bonnett" ), CONTRIB_DEV },
158 { wxT( "Franck Bourdonnec" ), CONTRIB_DEV },
159 { wxT( "Kevin Bralten" ), CONTRIB_DEV },
160 { wxT( "Carlo Bramini" ), CONTRIB_DEV },
161 { wxT( "Matthias Breithaupt" ), CONTRIB_DEV },
162 { wxT( "Stefan Brüns" ), CONTRIB_DEV },
163 { wxT( "Andreas Buhr" ), CONTRIB_DEV },
164 { wxT( "Ryan Bunch" ), CONTRIB_DEV },
165 { wxT( "Emery Burhan" ), CONTRIB_DEV },
166
167 { wxT( "Matt Campbell" ), CONTRIB_DEV },
168 { wxT( "Scott Candey" ), CONTRIB_DEV },
169 { wxT( "Phinitnan Chanasabaeng" ), CONTRIB_DEV },
170 { wxT( "Shivpratap Chauhan" ), CONTRIB_DEV },
171 { wxT( "Joseph Y. Chen" ), CONTRIB_DEV },
172 { wxT( "Alexey Chernov" ), CONTRIB_DEV },
173 { wxT( "Marco Ciampa" ), CONTRIB_DEV },
174 { wxT( "Marcus Comstedt" ), CONTRIB_DEV },
175 { wxT( "Diogo Condeco" ), CONTRIB_DEV },
176 { wxT( "Colin Cooper" ), CONTRIB_DEV },
177 { wxT( "Emile Cormier" ), CONTRIB_DEV },
178 { wxT( "Garth Corral" ), CONTRIB_DEV },
179 { wxT( "Sergio Costas" ), CONTRIB_DEV },
180 { wxT( "Kevin Cozens" ), CONTRIB_DEV },
181 { wxT( "Dan Cross" ), CONTRIB_DEV },
182
183 { wxT( "Andrew D'Addesio" ), CONTRIB_DEV },
184 { wxT( "Martin d'Allens" ), CONTRIB_DEV },
185 { wxT( "Greg Davill" ), CONTRIB_DEV },
186 { wxT( "Camille Delbegue" ), CONTRIB_DEV },
187 { wxT( "Okan Demir" ), CONTRIB_DEV },
188 { wxT( "Albin Dennevi" ), CONTRIB_DEV },
189 { wxT( "Troy Denton" ), CONTRIB_DEV },
190 { wxT( "Alexander Dewing" ), CONTRIB_DEV },
191 { wxT( "Jonas Diemer" ), CONTRIB_DEV },
192 { wxT( "Ben Dooks" ), CONTRIB_DEV },
193 { wxT( "Jan Dorniak" ), CONTRIB_DEV },
194 { wxT( "Pavel Dovgalyuk" ), CONTRIB_DEV },
195 { wxT( "Andrew Downing" ), CONTRIB_DEV },
196 { wxT( "Jan Dubiec" ), CONTRIB_DEV },
197 { wxT( "Lucas Dumont" ), CONTRIB_DEV },
198 { wxT( "Ruben De Smet" ), CONTRIB_DEV },
199
200 { wxT( "Gerd Egidy" ), CONTRIB_DEV },
201 { wxT( "Jean Philippe Eimer" ), CONTRIB_DEV },
202 { wxT( "Ben Ellis" ), CONTRIB_DEV },
203 { wxT( "Oleg Endo" ), CONTRIB_DEV },
204 { wxT( "Damien Espitallier" ), CONTRIB_DEV },
205 { wxT( "Paul Ewing" ), CONTRIB_DEV },
206
207 { wxT( "Steven A. Falco" ), CONTRIB_DEV },
208 { wxT( "Andrey Fedorushkov" ), CONTRIB_DEV },
209 { wxT( "Julian Fellinger" ), CONTRIB_DEV },
210 { wxT( "Joe Ferner" ), CONTRIB_DEV },
211 { wxT( "Brian Fiete" ), CONTRIB_DEV },
212 { wxT( "Thomas Figueroa" ), CONTRIB_DEV },
213 { wxT( "Gilbert J.M. Forkel" ), CONTRIB_DEV },
214 { wxT( "Vincenzo Fortunato" ), CONTRIB_DEV },
215 { wxT( "Quentin Freimanis" ), CONTRIB_DEV },
216 { wxT( "Dominique Fuchs" ), CONTRIB_DEV },
217 { wxT( "Drew Fustini" ), CONTRIB_DEV },
218
219 { wxT( "Ronnie Gaensli" ), CONTRIB_DEV },
220 { wxT( "Christian Gagneraud" ), CONTRIB_DEV },
221 { wxT( "Kamil Galik" ), CONTRIB_DEV },
222 { wxT( "Ben Gamari" ), CONTRIB_DEV },
223 { wxT( "Thomas Gambier" ), CONTRIB_DEV },
224 { wxT( "Ashutosh Gangwar" ), CONTRIB_DEV },
225 { wxT( "Adrián García" ), CONTRIB_DEV },
226 { wxT( "Alessandro Gatti" ), CONTRIB_DEV },
227 { wxT( "Zenn Geeraerts" ), CONTRIB_DEV },
228 { wxT( "Hal Gentz" ), CONTRIB_DEV },
229 { wxT( "Lucas Gerads" ), CONTRIB_DEV },
230 { wxT( "Davide Gerhard" ), CONTRIB_DEV },
231 { wxT( "Michael Geselbracht" ), CONTRIB_DEV },
232 { wxT( "Giulio Girardi" ), CONTRIB_DEV },
233 { wxT( "Jeff Glass" ), CONTRIB_DEV },
234 { wxT( "Alexander Golubev" ), CONTRIB_DEV },
235 { wxT( "Paweł Gorgoń" ), CONTRIB_DEV },
236 { wxT( "Connor Goss" ), CONTRIB_DEV },
237 { wxT( "Angus Gratton" ), CONTRIB_DEV },
238 { wxT( "Andrea Greco" ), CONTRIB_DEV },
239 { wxT( "Element Green" ), CONTRIB_DEV },
240 { wxT( "Mathias Grimmberger" ), CONTRIB_DEV },
241 { wxT( "Johan Grip" ), CONTRIB_DEV },
242 { wxT( "Michal Grzegorzek" ), CONTRIB_DEV },
243 { wxT( "Niki Guldbrand" ), CONTRIB_DEV },
244 { wxT( "Tanay Gupta" ), CONTRIB_DEV },
245 { wxT( "Alexander Guy" ), CONTRIB_DEV },
246 { wxT( "Zoltan Gyarmati" ), CONTRIB_DEV },
247 { wxT( "Hildo Guillardi Júnior" ), CONTRIB_DEV },
248
249 { wxT( "Jonathan Haas" ), CONTRIB_DEV },
250 { wxT( "Mark Hämmerling" ), CONTRIB_DEV },
251 { wxT( "Stefan Hamminga" ), CONTRIB_DEV },
252 { wxT( "Ma Han" ), CONTRIB_DEV },
253 { wxT( "Scott Hanson" ), CONTRIB_DEV },
254 { wxT( "Ben Harris" ), CONTRIB_DEV },
255 { wxT( "Lukas F. Hartmann" ), CONTRIB_DEV },
256 { wxT( "Jakob Haufe" ), CONTRIB_DEV },
257 { wxT( "Aylons Hazzud" ), CONTRIB_DEV },
258 { wxT( "Stefan Helmert" ), CONTRIB_DEV },
259 { wxT( "Hartmut Henkel" ), CONTRIB_DEV },
260 { wxT( "Brian Henning" ), CONTRIB_DEV },
261 { wxT( "Diego Herranz" ), CONTRIB_DEV },
262 { wxT( "Marco Hess" ), CONTRIB_DEV },
263 { wxT( "Brendan Hickey" ), CONTRIB_DEV },
264 { wxT( "Petri Hodju" ), CONTRIB_DEV },
265 { wxT( "David Holdeman" ), CONTRIB_DEV },
266 { wxT( "Laurens Holst" ), CONTRIB_DEV },
267 { wxT( "Yang Hongbo" ), CONTRIB_DEV },
268 { wxT( "Mario Hros" ), CONTRIB_DEV },
269 { wxT( "Josue Huaroto" ), CONTRIB_DEV },
270 { wxT( "Eli Hughes" ), CONTRIB_DEV },
271 { wxT( "Matt Huszagh" ), CONTRIB_DEV },
272 { wxT( "Torsten Hüter" ), CONTRIB_DEV },
273 { wxT( "Paulo Henrique Silva" ), CONTRIB_DEV },
274 { wxT( "Hans Henry von Tresckow" ), CONTRIB_DEV },
275
276 { wxT( "Marco Inacio" ), CONTRIB_DEV },
277 { wxT( "Kinichiro Inoguchi" ), CONTRIB_DEV },
278 { wxT( "Fabián Inostroza" ), CONTRIB_DEV },
279 { wxT( "Vlad Ivanov" ), CONTRIB_DEV },
280 { wxT( "Andre Iwers" ), CONTRIB_DEV },
281 { wxT( "José Ignacio Romero" ), CONTRIB_DEV },
282
283 { wxT( "José Jorge Enríquez" ), CONTRIB_DEV },
284 { wxT( "Hasan Jaafar" ), CONTRIB_DEV },
285 { wxT( "Jerry Jacobs" ), CONTRIB_DEV },
286 { wxT( "Christian Jacobsen" ), CONTRIB_DEV },
287 { wxT( "Michal Jahelka" ), CONTRIB_DEV },
288 { wxT( "Martin Janitschke" ), CONTRIB_DEV },
289 { wxT( "Jonathan Jara-Almonte" ), CONTRIB_DEV },
290 { wxT( "Zhuang Jiezhi" ), CONTRIB_DEV },
291 { wxT( "Franck Jullien" ), CONTRIB_DEV },
292
293 { wxT( "Eeli Kaikkonen" ), CONTRIB_DEV },
294 { wxT( "Lajos Kamocsay" ), CONTRIB_DEV },
295 { wxT( "Povilas Kanapickas" ), CONTRIB_DEV },
296 { wxT( "Mikhail Karpenko" ), CONTRIB_DEV },
297 { wxT( "Kerusey Karyu" ), CONTRIB_DEV },
298 { wxT( "Michael Kavanagh" ), CONTRIB_DEV },
299 { wxT( "Tom Keddie" ), CONTRIB_DEV },
300 { wxT( "Graham Keeth" ), CONTRIB_DEV },
301 { wxT( "Yury Khalyavin" ), CONTRIB_DEV },
302 { wxT( "Eldar Khayrullin" ), CONTRIB_DEV },
303 { wxT( "Lenny Khazan" ), CONTRIB_DEV },
304 { wxT( "Georges Khaznadar" ), CONTRIB_DEV },
305 { wxT( "Gary Kim" ), CONTRIB_DEV },
306 { wxT( "Aristeidis Kimirtzis" ), CONTRIB_DEV },
307 { wxT( "Bernhard Kirchen" ), CONTRIB_DEV },
308 { wxT( "Ingo Kletti" ), CONTRIB_DEV },
309 { wxT( "Kliment" ), CONTRIB_DEV },
310 { wxT( "Sylwester Kocjan" ), CONTRIB_DEV },
311 { wxT( "Uli Köhler" ), CONTRIB_DEV },
312 { wxT( "Clemens Koller" ), CONTRIB_DEV },
313 { wxT( "Asuki Kono" ), CONTRIB_DEV },
314 { wxT( "Matt Kosman" ), CONTRIB_DEV },
315 { wxT( "Jakub Kozdon" ), CONTRIB_DEV },
316 { wxT( "Hajo Nils Krabbenhöft" ), CONTRIB_DEV },
317 { wxT( "Andrej Krpic" ), CONTRIB_DEV },
318 { wxT( "Simon Kueppers" ), CONTRIB_DEV },
319 { wxT( "Martijn Kuipers" ), CONTRIB_DEV },
320 { wxT( "Dhinesh Kumar" ), CONTRIB_DEV },
321 { wxT( "Eric Kuzmenko" ), CONTRIB_DEV },
322
323 { wxT( "Paul LeoNerd Evens" ), CONTRIB_DEV },
324 { wxT( "Robbert Lagerweij" ), CONTRIB_DEV },
325 { wxT( "Mika Laitio" ), CONTRIB_DEV },
326 { wxT( "Floris Lambrechts" ), CONTRIB_DEV },
327 { wxT( "Dimitris Lampridis" ), CONTRIB_DEV },
328 { wxT( "Marco Langer" ), CONTRIB_DEV },
329 { wxT( "Kevin Lannen" ), CONTRIB_DEV },
330 { wxT( "lê văn lập" ), CONTRIB_DEV },
331 { wxT( "Denis Latyshev" ), CONTRIB_DEV },
332 { wxT( "Anton Lazarev" ), CONTRIB_DEV },
333 { wxT( "Ludovic Léau-mercier" ), CONTRIB_DEV },
334 { wxT( "Dag Lem" ), CONTRIB_DEV },
335 { wxT( "Jonatan Liljedahl" ), CONTRIB_DEV },
336 { wxT( "Huanyin Liu" ), CONTRIB_DEV },
337 { wxT( "Brian Lu" ), CONTRIB_DEV },
338 { wxT( "Magnus Lundmark" ), CONTRIB_DEV },
339 { wxT( "Alexander Lunev" ), CONTRIB_DEV },
340 { wxT( "Andrew Lutsenko" ), CONTRIB_DEV },
341 { wxT( "Mario Luzeiro" ), CONTRIB_DEV },
342
343 { wxT( "Mojca Miklavec Groenhuis" ), CONTRIB_DEV },
344 { wxT( "Johannes Maibaum" ), CONTRIB_DEV },
345 { wxT( "Philippe Maire" ), CONTRIB_DEV },
346 { wxT( "Mateusz Majchrzycki" ), CONTRIB_DEV },
347 { wxT( "Daniel Majewski" ), CONTRIB_DEV },
348 { wxT( "Rachel Mant" ), CONTRIB_DEV },
349 { wxT( "Lorenzo Marcantonio" ), CONTRIB_DEV },
350 { wxT( "Miklós Márton" ), CONTRIB_DEV },
351 { wxT( "Marco Mattila" ), CONTRIB_DEV },
352 { wxT( "Steffen Mauch" ), CONTRIB_DEV },
353 { wxT( "Maui" ), CONTRIB_DEV },
354 { wxT( "Kirill Mavreshko" ), CONTRIB_DEV },
355 { wxT( "Brian Mayton" ), CONTRIB_DEV },
356 { wxT( "Miles McCoo" ), CONTRIB_DEV },
357 { wxT( "Charles McDowell" ), CONTRIB_DEV },
358 { wxT( "Ian McKernan" ), CONTRIB_DEV },
359 { wxT( "Moses McKnight" ), CONTRIB_DEV },
360 { wxT( "Martin McNamara" ), CONTRIB_DEV },
361 { wxT( "Cameron McQuinn" ), CONTRIB_DEV },
362 { wxT( "Ievgenii Meshcheriakov" ), CONTRIB_DEV },
363 { wxT( "Yiannis Michael" ), CONTRIB_DEV },
364 { wxT( "Ashley Mills" ), CONTRIB_DEV },
365 { wxT( "Christoph Moench-Tegeder" ), CONTRIB_DEV },
366 { wxT( "Sean Mollet" ), CONTRIB_DEV },
367 { wxT( "Peter Montgomery" ), CONTRIB_DEV },
368 { wxT( "Alejandro García Montoro" ), CONTRIB_DEV },
369 { wxT( "Chris Morgan" ), CONTRIB_DEV },
370 { wxT( "Felix Morgner" ), CONTRIB_DEV },
371 { wxT( "Jan Mrázek" ), CONTRIB_DEV },
372 { wxT( "Frank Muenstermann" ), CONTRIB_DEV },
373
374 { wxT( "Michael Narigon" ), CONTRIB_DEV },
375 { wxT( "Jon Neal" ), CONTRIB_DEV },
376 { wxT( "Bastian Neumann" ), CONTRIB_DEV },
377 { wxT( "Kristian Nielsen" ), CONTRIB_DEV },
378 { wxT( "Daniil Nikolaev" ), CONTRIB_DEV },
379 { wxT( "Érico Nogueira" ), CONTRIB_DEV },
380 { wxT( "Allan Nordhøy" ), CONTRIB_DEV },
381 { wxT( "Henrik Nyberg" ), CONTRIB_DEV },
382
383 { wxT( "Kristoffer Ödmark" ), CONTRIB_DEV },
384 { wxT( "Russell Oliver" ), CONTRIB_DEV },
385 { wxT( "Jason Oster" ), CONTRIB_DEV },
386 { wxT( "Juho Ovaska" ), CONTRIB_DEV },
387
388 { wxT( "Frank Palazzolo" ), CONTRIB_DEV },
389 { wxT( "Sven Pauli" ), CONTRIB_DEV },
390 { wxT( "Matus Pavelek" ), CONTRIB_DEV },
391 { wxT( "luz paz" ), CONTRIB_DEV },
392 { wxT( "Miguel Angel Ajo Pelayo" ), CONTRIB_DEV },
393 { wxT( "Patrick Pereira" ), CONTRIB_DEV },
394 { wxT( "Jacobo Aragunde Perez" ), CONTRIB_DEV },
395 { wxT( "Matthew Petroff" ), CONTRIB_DEV },
396 { wxT( "Johannes Pfister" ), CONTRIB_DEV },
397 { wxT( "Fabian Pflug" ), CONTRIB_DEV },
398 { wxT( "Christian Pfluger" ), CONTRIB_DEV },
399 { wxT( "Brian Piccioni" ), CONTRIB_DEV },
400 { wxT( "Mathieu Pilato" ), CONTRIB_DEV },
401 { wxT( "Nicolas Planel" ), CONTRIB_DEV },
402 { wxT( "Carl Poirier" ), CONTRIB_DEV },
403 { wxT( "Reece Pollack" ), CONTRIB_DEV },
404 { wxT( "Alain Portal" ), CONTRIB_DEV },
405 { wxT( "Andrei Pozolotin" ), CONTRIB_DEV },
406 { wxT( "Damjan Prerad" ), CONTRIB_DEV },
407 { wxT( "Antia Puentes" ), CONTRIB_DEV },
408 { wxT( "Heikki Pulkkinen" ), CONTRIB_DEV },
409 { wxT( "Zoltan Puskas" ), CONTRIB_DEV },
410 { wxT( "Paweł Płóciennik" ), CONTRIB_DEV },
411
412 { wxT( "Morgan Quigley" ), CONTRIB_DEV },
413
414 { wxT( "Zlatan Radovanovic" ), CONTRIB_DEV },
415 { wxT( "Barabas Raffai" ), CONTRIB_DEV },
416 { wxT( "Urja Rannikko" ), CONTRIB_DEV },
417 { wxT( "Alexander Rauth" ), CONTRIB_DEV },
418 { wxT( "Hendrik v. Raven" ), CONTRIB_DEV },
419 { wxT( "Joshua Redstone" ), CONTRIB_DEV },
420 { wxT( "David Rees" ), CONTRIB_DEV },
421 { wxT( "Michele Renda" ), CONTRIB_DEV },
422 { wxT( "Jean-Samuel Reynaud" ), CONTRIB_DEV },
423 { wxT( "Dmitry Rezvanov" ), CONTRIB_DEV },
424 { wxT( "Simon Richter" ), CONTRIB_DEV },
425 { wxT( "Christoph Riehl" ), CONTRIB_DEV },
426 { wxT( "Thiadmer Riemersma" ), CONTRIB_DEV },
427 { wxT( "Gregor Riepl" ), CONTRIB_DEV },
428 { wxT( "RigoLigoRLC" ), CONTRIB_DEV },
429 { wxT( "Ola Rinta-Koski" ), CONTRIB_DEV },
430 { wxT( "Lubomir Rintel" ), CONTRIB_DEV },
431 { wxT( "Érico Rolim" ), CONTRIB_DEV },
432 { wxT( "Marcus A. Romer" ), CONTRIB_DEV },
433 { wxT( "Heiko Rosemann" ), CONTRIB_DEV },
434 { wxT( "Fabio Rossi" ), CONTRIB_DEV },
435 { wxT( "Ian Roth" ), CONTRIB_DEV },
436 { wxT( "Huang Rui" ), CONTRIB_DEV },
437
438 { wxT( "Clément Saccoccio" ), CONTRIB_DEV },
439 { wxT( "J. Morio Sakaguchi" ), CONTRIB_DEV },
440 { wxT( "Simon Schaak" ), CONTRIB_DEV },
441 { wxT( "Olliver Schinagl" ), CONTRIB_DEV },
442 { wxT( "Ross Schlaikjer" ), CONTRIB_DEV },
443 { wxT( "Julius Schmidt" ), CONTRIB_DEV },
444 { wxT( "Marvin Schmidt" ), CONTRIB_DEV },
445 { wxT( "Felix Schneider" ), CONTRIB_DEV },
446 { wxT( "David Schneider" ), CONTRIB_DEV },
447 { wxT( "Carsten Schoenert" ), CONTRIB_DEV },
448 { wxT( "Armin Schoisswohl" ), CONTRIB_DEV },
449 { wxT( "Simon Schubert" ), CONTRIB_DEV },
450 { wxT( "Michal Schulz" ), CONTRIB_DEV },
451 { wxT( "Adrian Scripca" ), CONTRIB_DEV },
452 { wxT( "Pradeepa Senanayake" ), CONTRIB_DEV },
453 { wxT( "Alihossein Sepahvand" ), CONTRIB_DEV },
454 { wxT( "Marco Serantoni" ), CONTRIB_DEV },
455 { wxT( "Julien Serin" ), CONTRIB_DEV },
456 { wxT( "Frank Severinsen" ), CONTRIB_DEV },
457 { wxT( "Cheng Sheng" ), CONTRIB_DEV },
458 { wxT( "Yang Sheng" ), CONTRIB_DEV },
459 { wxT( "Chetan Shinde" ), CONTRIB_DEV },
460 { wxT( "Alexander Shuklin" ), CONTRIB_DEV },
461 { wxT( "Guillaume Simard" ), CONTRIB_DEV },
462 { wxT( "Adam Simpkins" ), CONTRIB_DEV },
463 { wxT( "Slawomir Siudym" ), CONTRIB_DEV },
464 { wxT( "Martin Sivak" ), CONTRIB_DEV },
465 { wxT( "Mateusz Skowroński" ), CONTRIB_DEV },
466 { wxT( "Dominik Sliwa" ), CONTRIB_DEV },
467 { wxT( "Blake Smith" ), CONTRIB_DEV },
468 { wxT( "Ikoma So" ), CONTRIB_DEV },
469 { wxT( "Michal Sojka" ), CONTRIB_DEV },
470 { wxT( "Rafael Sokolowski" ), CONTRIB_DEV },
471 { wxT( "Vesa Solonen" ), CONTRIB_DEV },
472 { wxT( "Ronald Sousa" ), CONTRIB_DEV },
473 { wxT( "Craig Southeren" ), CONTRIB_DEV },
474 { wxT( "Thomas Spindler" ), CONTRIB_DEV },
475 { wxT( "Seppe Stas" ), CONTRIB_DEV },
476 { wxT( "Bernhard Stegmaier" ), CONTRIB_DEV },
477 { wxT( "Michael Steinberg" ), CONTRIB_DEV },
478 { wxT( "Marco Sterbik" ), CONTRIB_DEV },
479 { wxT( "Alexander Stock" ), CONTRIB_DEV },
480 { wxT( "Martin Stoilov" ), CONTRIB_DEV },
481 { wxT( "Michal Suchánek" ), CONTRIB_DEV },
482 { wxT( "Hiroki Suenaga" ), CONTRIB_DEV },
483 { wxT( "Kuba Sunderland-Ober" ), CONTRIB_DEV },
484 { wxT( "Kacper Słomiński" ), CONTRIB_DEV },
485
486 { wxT( "Nimish Telang" ), CONTRIB_DEV },
487 { wxT( "Martin Thierer" ), CONTRIB_DEV },
488 { wxT( "Karl Thorén" ), CONTRIB_DEV },
489 { wxT( "Hiroshi Tokita" ), CONTRIB_DEV },
490 { wxT( "Daniel Treffenstädt" ), CONTRIB_DEV },
491 { wxT( "Salvador E. Tropea" ), CONTRIB_DEV },
492
493 { wxT( "Vladimir Ur" ), CONTRIB_DEV },
494 { wxT( "Yon Uriarte" ), CONTRIB_DEV },
495 { wxT( "Matthias Urlichs" ), CONTRIB_DEV },
496 { wxT( "Vladimir Uryvaev" ), CONTRIB_DEV },
497
498 { wxT( "Mark van Doesburg" ), CONTRIB_DEV },
499 { wxT( "Edwin van den Oetelaar" ), CONTRIB_DEV },
500 { wxT( "Julie Vairai" ), CONTRIB_DEV },
501 { wxT( "Andrej Valek" ), CONTRIB_DEV },
502 { wxT( "Henri Valta" ), CONTRIB_DEV },
503 { wxT( "Dave Vandenbout" ), CONTRIB_DEV },
504 { wxT( "Raman Varabets" ), CONTRIB_DEV },
505 { wxT( "Fabio Varesano" ), CONTRIB_DEV },
506 { wxT( "Akhil Velagapudi" ), CONTRIB_DEV },
507 { wxT( "Emmanuel Vera" ), CONTRIB_DEV },
508 { wxT( "Benjamin Vernoux" ), CONTRIB_DEV },
509 { wxT( "Frank Villaro-Dixon" ), CONTRIB_DEV },
510 { wxT( "Mark Visser" ), CONTRIB_DEV },
511 { wxT( "Forrest Voight" ), CONTRIB_DEV },
512 { wxT( "Tormod Volden" ), CONTRIB_DEV },
513 { wxT( "Nils van Zuijlen" ), CONTRIB_DEV },
514
515 { wxT( "Bartek Wacławik" ), CONTRIB_DEV },
516 { wxT( "Johannes Wågen" ), CONTRIB_DEV },
517 { wxT( "Oliver Walters" ), CONTRIB_DEV },
518 { wxT( "Jonathan Warner" ), CONTRIB_DEV },
519 { wxT( "Dan Weatherill" ), CONTRIB_DEV },
520 { wxT( "Stefan Weber" ), CONTRIB_DEV },
521 { wxT( "Christian Weickhmann" ), CONTRIB_DEV },
522 { wxT( "Bevan Weiss" ), CONTRIB_DEV },
523 { wxT( "Simon Wells" ), CONTRIB_DEV },
524 { wxT( "Dominik Wernberger" ), CONTRIB_DEV },
525 { wxT( "Martin Whitaker" ), CONTRIB_DEV },
526 { wxT( "Addo White" ), CONTRIB_DEV },
527 { wxT( "Jan Wichmann" ), CONTRIB_DEV },
528 { wxT( "Bernhard M. Wiedemann" ), CONTRIB_DEV },
529 { wxT( "Nick Winters" ), CONTRIB_DEV },
530 { wxT( "Adam Wolf" ), CONTRIB_DEV },
531 { wxT( "Andrzej Wolski" ), CONTRIB_DEV },
532 { wxT( "Céleste Wouters" ), CONTRIB_DEV },
533 { wxT( "Damian Wrobel" ), CONTRIB_DEV },
534 { wxT( "Andrew Wygle" ), CONTRIB_DEV },
535 { wxT( "Adam Wysocki" ), CONTRIB_DEV },
536
537 { wxT( "xx" ), CONTRIB_DEV },
538
539 { wxT( "Jiaxun Yang" ), CONTRIB_DEV },
540 { wxT( "Robert Yates" ), CONTRIB_DEV },
541 { wxT( "Yegor Yefremov" ), CONTRIB_DEV },
542 { wxT( "Kenta Yonekura" ), CONTRIB_DEV },
543
544 { wxT( "Alexander Zakamaldin" ), CONTRIB_DEV },
545 { wxT( "Frank Zeeman" ), CONTRIB_DEV },
546 { wxT( "Karl Zeilhofer" ), CONTRIB_DEV },
547 { wxT( "Henner Zeller" ), CONTRIB_DEV },
548 { wxT( "Kevin Zheng" ), CONTRIB_DEV },
549 { wxT( "Andrew Zonenberg" ), CONTRIB_DEV },
550
551 { wxT( "wh201906" ), CONTRIB_DEV },
552 { wxT( "Nick Østergaard" ), CONTRIB_DEV },
553 { wxT( "木 王" ), CONTRIB_DEV },
554};
555
556
557static const wxChar* const s_docWriters[] = {
558 wxT( "Scott Candey" ),
559 wxS( "Jean-Pierre Charras" ),
560 wxS( "Marco Ciampa" ),
561 wxS( "Jon Evans" ),
562 wxS( "Dick Hollenbeck" ),
563 wxS( "James Jackson" ),
564 wxS( "Graham Keeth" ),
565 wxS( "Igor Plyatov" ),
566 wxS( "Wayne Stambaugh" ),
567 wxS( "Fabrizio Tappero" ),
568 wxS( "taotieren" ),
569};
570
571
572static const TRANSLATOR s_translators[] = {
573 { wxT( "Radovan Blažek" ), wxS( "Czech (CS)" ) },
574 { wxT( "Ondřej Čertík" ), wxS( "Czech (CS)" ) },
575 { wxT( "Martin Kratoška" ), wxS( "Czech (CS)" ) },
576 { wxT( "Michal Kundrát" ), wxS( "Czech (CS)" ) },
577 { wxT( "Radek Kuznik" ), wxS( "Czech (CS)" ) },
578 { wxT( "Roman Ondráček" ), wxS( "Czech (CS)" ) },
579 { wxT( "Petr Pazourek" ), wxS( "Czech (CS)" ) },
580 { wxT( "René Široký" ), wxS( "Czech (CS)" ) },
581 { wxT( "Hynek Štětina" ), wxS( "Czech (CS)" ) },
582 { wxT( "Jan Straka" ), wxS( "Czech (CS)" ) },
583 { wxT( "Andrej Valek" ), wxS( "Czech (CS)" ) },
584 { wxT( "Jan Vykydal" ), wxS( "Czech (CS)" ) },
585
586 { wxS( "Mads Dyrmann" ), wxS( "Danish (DA)" ) },
587 { wxS( "Henrik Kauhanen" ), wxS( "Danish (DA)" ) },
588 { wxS( "Nick Østergaard" ), wxS( "Danish (DA)" ) },
589
590 { wxS( "Ettore Atalan" ), wxS( "German (DE)" ) },
591 { wxS( "Ivan Chuba" ), wxS( "German (DE)" ) },
592 { wxS( "Julian Daube" ), wxS( "German (DE)" ) },
593 { wxS( "Benedikt Freisen" ), wxS( "German (DE)" ) },
594 { wxS( "Jonathan Haas" ), wxS( "German (DE)" ) },
595 { wxT( "Mark Hämmerling" ), wxS( "German (DE)" ) },
596 { wxT( "Henrik Kauhanen" ), wxS( "German (DE)" ) },
597 { wxT( "Johannes Maibaum" ), wxS( "German (DE)" ) },
598 { wxT( "Mathias Neumann" ), wxS( "German (DE)" ) },
599 { wxT( "Ken Ovo" ), wxS( "German (DE)" ) },
600 { wxT( "Christian Schlüter" ), wxS( "German (DE)" ) },
601 { wxT( "Karl Schuh" ), wxS( "German (DE)" ) },
602 { wxT( "Frank Sonnenberg" ), wxS( "German (DE)" ) },
603 { wxT( "Lauritz Tieste" ), wxS( "German (DE)" ) },
604 { wxT( "Dominik Wernberger" ), wxS( "German (DE)" ) },
605
606 { wxT( "Theodoros Asimakopoulos" ), wxS( "Greek (el_GR)" ) },
607 { wxS( "Aristeidis Kimirtzis" ), wxS( "Greek (el_GR)" ) },
608 { wxS( "Milonas Kostas" ), wxS( "Greek (el_GR)" ) },
609 { wxS( "Michail Misirlis" ), wxS( "Greek (el_GR)" ) },
610 { wxS( "Manolis Stefanis" ), wxS( "Greek (el_GR)" ) },
611 { wxS( "Athanasios Vlastos" ), wxS( "Greek (el_GR)" ) },
612
613 { wxT( "Adolfo Jayme Barrientos" ), wxS( "Spanish (ES)" ) },
614 { wxT( "Roberto Fernandez Bautista" ), wxS( "Spanish (ES)" ) },
615 { wxT( "Pablo Bianchi" ), wxS( "Spanish (ES)" ) },
616 { wxT( "Echedey" ), wxS( "Spanish (ES)" ) },
617 { wxT( "Iñigo Figuero" ), wxS( "Spanish (ES)" ) },
618 { wxT( "Augusto Fraga Giachero" ), wxS( "Spanish (ES)" ) },
619 { wxT( "Ulices Avila Hernandez" ), wxS( "Spanish (ES)" ) },
620 { wxS( "Gabriel Martinez" ), wxS( "Spanish (ES)" ) },
621 { wxT( "Tomás Mora" ), wxS( "Spanish (ES)" ) },
622 { wxT( "Gallego Novato" ), wxS( "Spanish (ES)" ) },
623 { wxT( "Jose Perez" ), wxS( "Spanish (ES)" ) },
624 { wxT( "Francisco Jose Rey" ), wxS( "Spanish (ES)" ) },
625 { wxT( "Gaston Schelotto" ), wxS( "Spanish (ES)" ) },
626 { wxT( "uLe" ), wxS( "Spanish (ES)" ) },
627 { wxS( "Pedro Martin del Valle" ), wxS( "Spanish (ES)" ) },
628 { wxT( "VicSanRoPe" ), wxS( "Spanish (ES)" ) },
629 { wxT( "Iñigo Zuluaga" ), wxS( "Spanish (ES)" ) },
630
631 { wxT( "Ulices Avila Hernandez" ), wxS( "Spanish - Latin American (ES)" ) },
632 { wxT( "lylythechosenone" ), wxS( "Spanish - Latin American (ES)" ) },
633 { wxT( "uLe" ), wxS( "Spanish - Latin American (ES)" ) },
634 { wxT( "VicSanRoPe" ), wxS( "Spanish - Latin American (ES)" ) },
635
636 { wxT( "Alex Gellen" ), wxS( "Finnish (FI)" ) },
637 { wxT( "Henrik Kauhanen" ), wxS( "Finnish (FI)" ) },
638 { wxT( "Purkka Koodari" ), wxS( "Finnish (FI)" ) },
639 { wxT( "Toni Laiho" ), wxS( "Finnish (FI)" ) },
640 { wxT( "J. Lavoie" ), wxS( "Finnish (FI)" ) },
641 { wxT( "Simo Mattila" ), wxS( "Finnish (FI)" ) },
642 { wxT( "Petri Niemelä" ), wxS( "Finnish (FI)" ) },
643 { wxT( "Ola Rinta-Koski" ), wxS( "Finnish (FI)" ) },
644 { wxT( "Vesa Solonen" ), wxS( "Finnish (FI)" ) },
645 { wxT( "Ricky Tigg" ), wxS( "Finnish (FI)" ) },
646 { wxT( "Riku Viitanen" ), wxS( "Finnish (FI)" ) },
647
648 { wxT( "Jean-Pierre Charras" ), wxS( "French (FR)" ) },
649
650 { wxT( "Boromyr" ), wxS( "Italian (IT)" ) },
651 { wxT( "Marco Ciampa" ), wxS( "Italian (IT)" ) },
652 { wxT( "Luca Mattii" ), wxS( "Italian (IT)" ) },
653
654 { wxT( "2tama3" ), wxS( "Japanese (JA)" ) },
655 { wxT( "Subaru Arai" ), wxS( "Japanese (JA)" ) },
656 { wxT( "Ji Yoon Choi" ), wxS( "Japanese (JA)" ) },
657 { wxT( "Hidemichi Gotou" ), wxS( "Japanese (JA)" ) },
658 { wxT( "Kinichiro Inoguchi" ), wxS( "Japanese (JA)" ) },
659 { wxT( "co8 j" ), wxS( "Japanese (JA)" ) },
660 { wxT( "Keisuke Nakao" ), wxS( "Japanese (JA)" ) },
661 { wxT( "starfort-jp" ), wxS( "Japanese (JA)" ) },
662 { wxT( "Norio Suzuki" ), wxS( "Japanese (JA)" ) },
663 { wxT( "Hiroshi Tokita" ), wxS( "Japanese (JA)" ) },
664 { wxT( "Yutaro Urata" ), wxS( "Japanese (JA)" ) },
665 { wxT( "Kenta Yonekura" ), wxS( "Japanese (JA)" ) },
666 { wxT( "Kaoru Zenyouji" ), wxS( "Japanese (JA)" ) },
667
668 { wxT( "Minsu Kim (0xGabriel)" ), wxS( "Korean (KO)" ) },
669 { wxT( "Ji Yoon Choi" ), wxS( "Korean (KO)" ) },
670 { wxT( "DevAny" ), wxS( "Korean (KO)" ) },
671 { wxT( "hokim" ), wxS( "Korean (KO)" ) },
672 { wxT( "jehunseo" ), wxS( "Korean (KO)" ) },
673 { wxT( "jeong-sangwon" ), wxS( "Korean (KO)" ) },
674 { wxT( "jeongsuAn" ), wxS( "Korean (KO)" ) },
675 { wxT( "Uibeom Jung" ), wxS( "Korean (KO)" ) },
676 { wxT( "kmn4555" ), wxS( "Korean (KO)" ) },
677 { wxT( "KwonHyeokbeom" ), wxS( "Korean (KO)" ) },
678 { wxT( "Pedro Moreira" ), wxS( "Korean (KO)" ) },
679 { wxT( "Jason Son" ), wxS( "Korean (KO)" ) },
680 { wxT( "YunJiSang" ), wxS( "Korean (KO)" ) },
681 { wxT( "강명구" ), wxS( "Korean (KO)" ) },
682 { wxT( "김낙환" ), wxS( "Korean (KO)" ) },
683 { wxT( "김랑기" ), wxS( "Korean (KO)" ) },
684 { wxT( "김세영" ), wxS( "Korean (KO)" ) },
685 { wxT( "김용재" ), wxS( "Korean (KO)" ) },
686 { wxT( "김유진" ), wxS( "Korean (KO)" ) },
687 { wxT( "김인수" ), wxS( "Korean (KO)" ) },
688 { wxT( "김호진" ), wxS( "Korean (KO)" ) },
689 { wxT( "남우근" ), wxS( "Korean (KO)" ) },
690 { wxT( "박기정" ), wxS( "Korean (KO)" ) },
691 { wxT( "박세훈" ), wxS( "Korean (KO)" ) },
692 { wxT( "박준언" ), wxS( "Korean (KO)" ) },
693 { wxT( "방준영" ), wxS( "Korean (KO)" ) },
694 { wxT( "서범기" ), wxS( "Korean (KO)" ) },
695 { wxT( "이기형" ), wxS( "Korean (KO)" ) },
696 { wxT( "이상수" ), wxS( "Korean (KO)" ) },
697 { wxT( "이윤성" ), wxS( "Korean (KO)" ) },
698 { wxT( "킴슨김랑기" ), wxS( "Korean (KO)" ) },
699
700 { wxT( "Ignas Brašiškis" ), wxS( "Lithuanian (LT)" ) },
701 { wxT( "Henrik Kauhanen" ), wxS( "Lithuanian (LT)" ) },
702 { wxT( "Dainius Mazuika" ), wxS( "Lithuanian (LT)" ) },
703 { wxT( "WhiteChairFromIkea" ), wxS( "Lithuanian (LT)" ) },
704
705 { wxT( "Arend-Jan van Hilten" ), wxS( "Dutch (NL)" ) },
706 { wxT( "CJ van der Hoeven" ), wxS( "Dutch (NL)" ) },
707 { wxT( "Laurens Holst" ), wxS( "Dutch (NL)" ) },
708 { wxT( "Pim Jansen" ), wxS( "Dutch (NL)" ) },
709 { wxT( "Robin Janssens" ), wxS( "Dutch (NL)" ) },
710 { wxT( "johanneswilkens" ), wxS( "Dutch (NL)" ) },
711 { wxT( "Henrik Kauhanen" ), wxS( "Dutch (NL)" ) },
712 { wxT( "Tom Niesse" ), wxS( "Dutch (NL)" ) },
713 { wxT( "Christiaan Nieuwlaat" ), wxS( "Dutch (NL)" ) },
714 { wxT( "Stefan De Raedemaeker" ), wxS( "Dutch (NL)" ) },
715 { wxT( "Ranforingus" ), wxS( "Dutch (NL)" ) },
716 { wxT( "Herman van der Vaart" ), wxS( "Dutch (NL)" ) },
717 { wxT( "Bas Wijnen" ), wxS( "Dutch (NL)" ) },
718
719 { wxT( "Jarl Gjessing" ), wxS( "Norwegian (NO)" ) },
720 { wxT( "Henrik Kauhanen" ), wxS( "Norwegian (NO)" ) },
721 { wxT( "Stian Kristensen" ), wxS( "Norwegian (NO)" ) },
722 { wxT( "Allan Nordhøy" ), wxS( "Norwegian (NO)" ) },
723 { wxT( "Petter Reinholdtsen" ), wxS( "Norwegian (NO)" ) },
724 { wxT( "Håvard Syslak" ), wxS( "Norwegian (NO)" ) },
725
726 { wxT( "Ivan Chuba" ), wxS( "Polish (PL)" ) },
727 { wxT( "Czam Ciał" ), wxS( "Polish (PL)" ) },
728 { wxT( "Kerusey Karyu" ), wxS( "Polish (PL)" ) },
729 { wxT( "Krzysztof Kawa" ), wxS( "Polish (PL)" ) },
730 { wxT( "J Kolod" ), wxS( "Polish (PL)" ) },
731 { wxT( "maksz42" ), wxS( "Polish (PL)" ) },
732 { wxT( "Eryk Michalak" ), wxS( "Polish (PL)" ) },
733 { wxT( "Filip Piękoś" ), wxS( "Polish (PL)" ) },
734 { wxT( "Pomian" ), wxS( "Polish (PL)" ) },
735 { wxT( "Mark Roszko" ), wxS( "Polish (PL)" ) },
736 { wxT( "Mateusz Skowroński" ), wxS( "Polish (PL)" ) },
737 { wxT( "Jan Sobków" ), wxS( "Polish (PL)" ) },
738 { wxT( "szumsky" ), wxS( "Polish (PL)" ) },
739 { wxT( "Grzegorz Szymaszek" ), wxS( "Polish (PL)" ) },
740 { wxT( "ZbeeGin" ), wxS( "Polish (PL)" ) },
741
742 { wxT( "brunofaus" ), wxS( "Brazilian Portuguese (PT_BR)" ) },
743 { wxT( "Augusto Fraga Giachero" ), wxS( "Brazilian Portuguese (PT_BR)" ) },
744 { wxT( "Hildo Guillardi Júnior" ), wxS( "Brazilian Portuguese (PT_BR)" ) },
745 { wxT( "Pedro Moreira" ), wxS( "Brazilian Portuguese (PT_BR)" ) },
746 { wxT( "soldado-do-wolfenstein" ), wxS( "Brazilian Portuguese (PT_BR)" ) },
747 { wxT( "Wellington Terumi Uemura" ), wxS( "Brazilian Portuguese (PT_BR)" ) },
748
749 { wxT( "Julio Dias" ), wxS( "Portuguese (PT)" ) },
750 { wxT( "Augusto Fraga Giachero" ), wxS( "Portuguese (PT)" ) },
751 { wxT( "Hildo Guillardi Júnior" ), wxS( "Portuguese (PT)" ) },
752 { wxT( "leonardokr" ), wxS( "Portuguese (PT)" ) },
753 { wxT( "Renie Marquet" ), wxS( "Portuguese (PT)" ) },
754 { wxT( "Rafael Silva" ), wxS( "Portuguese (PT)" ) },
755 { wxT( "Manuela Silva" ), wxS( "Portuguese (PT)" ) },
756 { wxT( "ssantos" ), wxS( "Portuguese (PT)" ) },
757
758 { wxT( "Konstantin Baranovskiy" ), wxS( "Russian (RU)" ) },
759 { wxT( "Ivan Chuba" ), wxS( "Russian (RU)" ) },
760 { wxT( "Andrey Fedorushkov" ), wxS( "Russian (RU)" ) },
761 { wxT( "Free_squire" ), wxS( "Russian (RU)" ) },
762 { wxT( "Alevtina Karashokova" ), wxS( "Russian (RU)" ) },
763 { wxT( "Eldar Khayrullin" ), wxS( "Russian (RU)" ) },
764 { wxT( "Alex Life" ), wxS( "Russian (RU)" ) },
765 { wxT( "Dmitry Mikhirev" ), wxS( "Russian (RU)" ) },
766 { wxT( "Igor Plyatov" ), wxS( "Russian (RU)" ) },
767 { wxT( "sergio" ), wxS( "Russian (RU)" ) },
768 { wxT( "xXx" ), wxS( "Russian (RU)" ) },
769 { wxT( "Дмитрий Дёмин" ), wxS( "Russian (RU)" ) },
770 { wxT( "МАН69К" ), wxS( "Russian (RU)" ) },
771
772 { wxT( "Hanna Breisand" ), wxS( "Swedish (SV)" ) },
773 { wxT( "Stefan Bjornelund the Gnome" ), wxS( "Swedish (SV)" ) },
774 { wxT( "Johan Heikkilä" ), wxS( "Swedish (SV)" ) },
775 { wxT( "Axel Henriksson" ), wxS( "Swedish (SV)" ) },
776 { wxT( "Richard Jonsson" ), wxS( "Swedish (SV)" ) },
777 { wxT( "Henrik Kauhanen" ), wxS( "Swedish (SV)" ) },
778 { wxT( "Joakim Lundborg" ), wxS( "Swedish (SV)" ) },
779 { wxT( "Allan Nordhøy" ), wxS( "Swedish (SV)" ) },
780 { wxT( "Elias Sjögreen" ), wxS( "Swedish (SV)" ) },
781
782 { wxT( "Boonchai Kingrungped" ), wxS( "Thai (TH)" ) },
783
784 { wxT( "Artem" ), wxS( "Ukrainian (UK)" ) },
785 { wxT( "Ivan Chuba" ), wxS( "Ukrainian (UK)" ) },
786 { wxT( "Stanislav Kaliuk" ), wxS( "Ukrainian (UK)" ) },
787 { wxT( "Alexsandr Kuzemko" ), wxS( "Ukrainian (UK)" ) },
788 { wxT( "Andrii Shelestov" ), wxS( "Ukrainian (UK)" ) },
789 { wxT( "Максим Горпиніч" ), wxS( "Ukrainian (UK)" ) },
790
791 { wxT( "CharlieYu" ), wxS( "Simplified Chinese (zh_CN)" ) },
792 { wxT( "David Chen" ), wxS( "Simplified Chinese (zh_CN)" ) },
793 { wxT( "Dingzhong Chen" ), wxS( "Simplified Chinese (zh_CN)" ) },
794 { wxT( "CloverGit" ), wxS( "Simplified Chinese (zh_CN)" ) },
795 { wxT( "Eric" ), wxS( "Simplified Chinese (zh_CN)" ) },
796 { wxT( "Liu Guang" ), wxS( "Simplified Chinese (zh_CN)" ) },
797 { wxT( "HalfSweet" ), wxS( "Simplified Chinese (zh_CN)" ) },
798 { wxT( "Hubert Hu" ), wxS( "Simplified Chinese (zh_CN)" ) },
799 { wxT( "aisuneko icecat" ), wxS( "Simplified Chinese (zh_CN)" ) },
800 { wxT( "Pinpang Liao" ), wxS( "Simplified Chinese (zh_CN)" ) },
801 { wxT( "Rigo Ligo" ), wxS( "Simplified Chinese (zh_CN)" ) },
802 { wxT( "Huanyin Liu" ), wxS( "Simplified Chinese (zh_CN)" ) },
803 { wxT( "Zhen Sun" ), wxS( "Simplified Chinese (zh_CN)" ) },
804 { wxT( "Jason Tan" ), wxS( "Simplified Chinese (zh_CN)" ) },
805 { wxT( "Taotieren" ), wxS( "Simplified Chinese (zh_CN)" ) },
806 { wxT( "yangyangdaji" ), wxS( "Simplified Chinese (zh_CN)" ) },
807 { wxT( "Li Yi" ), wxS( "Simplified Chinese (zh_CN)" ) },
808 { wxT( "Li Yidong" ), wxS( "Simplified Chinese (zh_CN)" ) },
809 { wxT( "Tian Yunhao" ), wxS( "Simplified Chinese (zh_CN)" ) },
810 { wxT( "Lao Zhu" ), wxS( "Simplified Chinese (zh_CN)" ) },
811 { wxT( "yanzhen zhu" ), wxS( "Simplified Chinese (zh_CN)" ) },
812 { wxT( "zly20129" ), wxS( "Simplified Chinese (zh_CN)" ) },
813 { wxT( "向阳阳" ), wxS( "Simplified Chinese (zh_CN)" ) },
814 { wxT( "欠陥電気" ), wxS( "Simplified Chinese (zh_CN)" ) },
815
816 { wxT( "David Chen" ), wxS( "Traditional Chinese (zh_TW)" ) },
817 { wxT( "kai chiao chuang" ), wxS( "Traditional Chinese (zh_TW)" ) },
818 { wxT( "pon dahai" ), wxS( "Traditional Chinese (zh_TW)" ) },
819 { wxT( "Shuwn Hsu" ), wxS( "Traditional Chinese (zh_TW)" ) },
820 { wxT( "Poming Lee" ), wxS( "Traditional Chinese (zh_TW)" ) },
821 { wxT( "William Lin" ), wxS( "Traditional Chinese (zh_TW)" ) },
822 { wxT( "Oliver0804" ), wxS( "Traditional Chinese (zh_TW)" ) },
823 { wxT( "reimu105" ), wxS( "Traditional Chinese (zh_TW)" ) },
824 { wxT( "Che-Hsien Su" ), wxS( "Traditional Chinese (zh_TW)" ) },
825 { wxT( "Taotieren" ), wxS( "Traditional Chinese (zh_TW)" ) },
826 { wxT( "Li Yidong" ), wxS( "Traditional Chinese (zh_TW)" ) },
827 { wxT( "撒景賢" ), wxS( "Traditional Chinese (zh_TW)" ) },
828
829 { wxT( "Hesham Eina Abdalla" ), wxS( "Arabic (AR)" ) },
830 { wxT( "Djamel Dellaa" ), wxS( "Arabic (AR)" ) },
831 { wxT( "Ahmed Elswah" ), wxS( "Arabic (AR)" ) },
832 { wxT( "HADJAISSA" ), wxS( "Arabic (AR)" ) },
833 { wxT( "Morad Tamer" ), wxS( "Arabic (AR)" ) },
834
835 { wxT( "Adolfo Jayme Barrientos" ), wxS( "Catalan (CA)" ) },
836 { wxT( "Marc de Miguel" ), wxS( "Catalan (CA)" ) },
837 { wxT( "Rafael Serrano" ), wxS( "Catalan (CA)" ) },
838 { wxT( "Arnau Llovet Vidal" ), wxS( "Catalan (CA)" ) },
839
840 { wxT( "Ivan Chuba" ), wxS( "Estonian (ET)" ) },
841
842 { wxT( "Temuri Doghonadze" ), wxS( "Georgian (KA)" ) },
843
844 { wxT( "Viktor Döme" ), wxS( "Hungarian (HU)" ) },
845 { wxT( "István Farkas" ), wxS( "Hungarian (HU)" ) },
846 { wxT( "Flórián Fuszkó" ), wxS( "Hungarian (HU)" ) },
847 { wxT( "Sárkány Lőrinc" ), wxS( "Hungarian (HU)" ) },
848 { wxT( "Miklós Márton" ), wxS( "Hungarian (HU)" ) },
849 { wxT( "Balázs Meskó" ), wxS( "Hungarian (HU)" ) },
850 { wxT( "Hajdu Norbert" ), wxS( "Hungarian (HU)" ) },
851 { wxT( "Elek Zoltán" ), wxS( "Hungarian (HU)" ) },
852
853 { wxT( "Reza Almanda" ), wxS( "Indonesian (ID)" ) },
854 { wxT( "Jacque Fresco" ), wxS( "Indonesian (ID)" ) },
855 { wxT( "Neko Nekowazarashi" ), wxS( "Indonesian (ID)" ) },
856 { wxT( "Triyan W. Nugroho" ), wxS( "Indonesian (ID)" ) },
857
858 { wxT( "Rihards Skuja" ), wxS( "Latvian (LV)" ) },
859
860 { wxT( "Mahdi Ahmadzadeh" ), wxS( "Persian (FA)" ) },
861
862 { wxT( "Nicoara Alex" ), wxS( "Romanian (RO)" ) },
863 { wxT( "Tatu Bogdan" ), wxS( "Romanian (RO)" ) },
864 { wxT( "Alex Gellen" ), wxS( "Romanian (RO)" ) },
865 { wxT( "Adrian Scripcă" ), wxS( "Romanian (RO)" ) },
866
867 { wxT( "Luka Borkovic" ), wxS( "Serbian (SR)" ) },
868
869 { wxT( "David Chorváth" ), wxS( "Slovak (SK)" ) },
870 { wxT( "Marcel Hecko" ), wxS( "Slovak (SK)" ) },
871 { wxT( "Jakub Janek" ), wxS( "Slovak (SK)" ) },
872 { wxT( "Andrej Valek" ), wxS( "Slovak (SK)" ) },
873
874 { wxT( "Sašo Domadenik" ), wxS( "Slovenian (SI)" ) },
875 { wxT( "Vitan Košpenda" ), wxS( "Slovenian (SI)" ) },
876 { wxT( "Mitja Nemec" ), wxS( "Slovenian (SI)" ) },
877
878 { wxT( "தமிழ்நேரம்" ), wxS( "Tamil (TA)" ) },
879
880 { wxT( "YÜKSEL AÇIKGÖZ" ), wxS( "Turkish (TR)" ) },
881 { wxT( "Argeolog" ), wxS( "Turkish (TR)" ) },
882 { wxT( "Mahsum Aslan" ), wxS( "Turkish (TR)" ) },
883 { wxT( "Tevfik Bagcivan" ), wxS( "Turkish (TR)" ) },
884 { wxT( "Bahtiyar Bayram" ), wxS( "Turkish (TR)" ) },
885 { wxT( "Marine Biologist" ), wxS( "Turkish (TR)" ) },
886 { wxT( "Mustafa Selçuk ÇAVDAR" ), wxS( "Turkish (TR)" ) },
887 { wxT( "dogukansahil" ), wxS( "Turkish (TR)" ) },
888 { wxT( "Erkan" ), wxS( "Turkish (TR)" ) },
889 { wxT( "Oğuz Ersen" ), wxS( "Turkish (TR)" ) },
890 { wxT( "İclal Gör" ), wxS( "Turkish (TR)" ) },
891 { wxT( "Mert Gülsoy" ), wxS( "Turkish (TR)" ) },
892 { wxT( "Mert Kalkancı" ), wxS( "Turkish (TR)" ) },
893 { wxT( "metin kiruc" ), wxS( "Turkish (TR)" ) },
894 { wxT( "Gökhan Koçmarlı" ), wxS( "Turkish (TR)" ) },
895 { wxT( "Niyazi" ), wxS( "Turkish (TR)" ) },
896 { wxT( "Ahmet Saygın ÖĞÜLMÜŞ" ), wxS( "Turkish (TR)" ) },
897 { wxT( "Ertuğrul Reisoğlu" ), wxS( "Turkish (TR)" ) },
898 { wxT( "Murat Ursavaş" ), wxS( "Turkish (TR)" ) },
899 { wxT( "VEDAT YAMAN" ), wxS( "Turkish (TR)" ) },
900
901 { wxT( "Nguyen Van Dien" ), wxS( "Vietnamese (VI)" ) },
902 { wxT( "Trần Phi Hải" ), wxS( "Vietnamese (VI)" ) },
903 { wxT( "Nguyễn Ngọc Khánh" ), wxS( "Vietnamese (VI)" ) },
904 { wxT( "lê văn lập" ), wxS( "Vietnamese (VI)" ) },
905 { wxT( "Bế Trọng Nghĩa" ), wxS( "Vietnamese (VI)" ) },
906 { wxT( "An Nguyen" ), wxS( "Vietnamese (VI)" ) },
907 { wxT( "Phạm Minh Tấn" ), wxS( "Vietnamese (VI)" ) },
908
909 { wxS( "David J S Briscoe" ), wxS( "Other" ) },
910 { wxS( "Paul Burke" ), wxS( "Other" ) },
911 { wxT( "Remy Halvick" ), wxS( "Other" ) },
912 { wxS( "Dominique Laigle" ), wxS( "Other" ) },
913};
914
915
916static const LIBRARIAN s_librarians[] = {
917 // Lead librarians
918 { wxT( "Carsten Presser"), LIBRARIAN_TEAM },
919 // Librarian trainining/recruiting
920 { wxT( "Kliment Yanev" ), LIBRARIAN_TEAM },
921
922 // Active librarians (last 2 years)
923 { wxT( "Geries AbuAkel" ), LIBRARIAN_TEAM },
924 { wxT( "Patrick Baus" ), LIBRARIAN_TEAM },
925 { wxT( "John Beard" ), LIBRARIAN_TEAM },
926 { wxT( "Jeremy Boynes" ), LIBRARIAN_TEAM },
927 { wxT( "Greg Cormier" ), LIBRARIAN_TEAM },
928 { wxT( "Tobias Falk" ), LIBRARIAN_TEAM },
929 { wxT( "Simon Fivat" ), LIBRARIAN_TEAM },
930 { wxT( "Ferrum" ), LIBRARIAN_TEAM },
931 { wxT( "Jan Sebastian Götte (jaseg)" ), LIBRARIAN_TEAM },
932 { wxT( "Petr Hodina" ), LIBRARIAN_TEAM },
933 { wxT( "Mikkel Jeppesen" ), LIBRARIAN_TEAM },
934 { wxT( "McDowell Johnson" ), LIBRARIAN_TEAM },
935 { wxT( "Graham Keeth" ), LIBRARIAN_TEAM },
936 { wxT( "Aristeidis Kimirtzis" ), LIBRARIAN_TEAM },
937 { wxT( "Brandon Kirisaki" ), LIBRARIAN_TEAM },
938 { wxT( "Thea Krug" ), LIBRARIAN_TEAM },
939 { wxT( "Uli Köhler" ), LIBRARIAN_TEAM },
940 { wxT( "Andrew Lutsenko" ), LIBRARIAN_TEAM },
941 { wxT( "Mojca Miklavec Groenhuis" ), LIBRARIAN_TEAM },
942 { wxT( "Peniel Mubita" ), LIBRARIAN_TEAM },
943 { wxT( "Jorge Neiva" ), LIBRARIAN_TEAM },
944 { wxT( "Carlos Nieves Ónega" ), LIBRARIAN_TEAM },
945 { wxT( "Lynn Ochs" ), LIBRARIAN_TEAM },
946 { wxT( "Ed Peguillan" ), LIBRARIAN_TEAM },
947 { wxT( "Dash Peters" ), LIBRARIAN_TEAM },
948 { wxT( "Sergio Rocha" ), LIBRARIAN_TEAM },
949 { wxT( "Benjamin Reynier" ), LIBRARIAN_TEAM },
950 { wxT( "Armin Schoisswohl" ), LIBRARIAN_TEAM },
951 { wxT( "Joel Schulz-Andres" ), LIBRARIAN_TEAM },
952 { wxT( "Frank Severinsen" ), LIBRARIAN_TEAM },
953 { wxT( "Martin Sotirov" ), LIBRARIAN_TEAM },
954 { wxT( "Philipp Swoboda" ), LIBRARIAN_TEAM },
955 { wxT( "Christoph Werner" ), LIBRARIAN_TEAM },
956
957 // Previously active librarians
958 { wxT( "Christian Schlüter" ), LIBRARIAN_TEAM },
959 { wxT( "Rene Poeschl" ), LIBRARIAN_TEAM },
960 { wxT( "Antonio Vázquez Blanco " ), LIBRARIAN_TEAM },
961 { wxT( "Daniel Giesbrecht" ), LIBRARIAN_TEAM },
962 { wxT( "Otavio Augusto Gomes" ), LIBRARIAN_TEAM },
963 { wxT( "herostrat" ), LIBRARIAN_TEAM },
964 { wxT( "Diego Herranz" ), LIBRARIAN_TEAM },
965 { wxT( "Joel Guittet" ), LIBRARIAN_TEAM },
966 { wxT( "Chris Morgan" ), LIBRARIAN_TEAM },
967 { wxT( "Thomas Pointhuber" ), LIBRARIAN_TEAM },
968 { wxT( "Evan Shultz" ), LIBRARIAN_TEAM },
969 { wxT( "Bob Cousins" ), LIBRARIAN_TEAM },
970 { wxT( "Nick Østergaard" ), LIBRARIAN_TEAM },
971 { wxT( "Oliver Walters" ), LIBRARIAN_TEAM },
972
973 { wxS( "Scripts by Maui" ), MODELS_3D_CONTRIBUTION, wxS( "https://github.com/easyw" ) },
974 { wxS( "Hasan Yavuz Özderya" ), MODELS_3D_CONTRIBUTION,
975 wxS( "https://bitbucket.org/hyOzd/freecad-macros/src/master/" ) },
976 { wxS( "GitHub contributors" ), MODELS_3D_CONTRIBUTION,
977 wxS( "https://github.com/easyw/kicad-3d-models-in-freecad/graphs/contributors" ) },
978 { wxS( "GitLab contributors" ), MODELS_3D_CONTRIBUTION,
979 wxS( "https://gitlab.com/kicad/libraries/kicad-packages3D/-/graphs/master" ) },
980
981 { wxS( "GitLab contributors" ), SYMBOL_LIB_CONTRIBUTION,
982 wxS( "https://gitlab.com/kicad/libraries/kicad-symbols/-/graphs/master" ) },
983
984 { wxS( "Scripts by Thomas Pointhuber" ), FOOTPRINT_LIB_CONTRIBUTION,
985 wxS( "https://gitlab.com/kicad/libraries/kicad-footprint-generator" ) },
986 { wxS( "GitLab contributors" ), FOOTPRINT_LIB_CONTRIBUTION,
987 wxS( "https://gitlab.com/kicad/libraries/kicad-footprints/-/graphs/master" ) },
988};
989
990
991static const wxChar* const s_artists[] = {
992 wxT( "Aleksandr Zyrianov" ),
993 wxT( "Anda Subero" ),
994 wxT( "Iñigo Zuluaga" ),
995 wxS( "Fabrizio Tappero" ),
996};
997
998
999static const wxChar* const s_packagers[] = {
1000 wxS( "Steven Falco" ),
1001 wxS( "Johannes Maibaum" ),
1002 wxS( "Jean-Samuel Reynaud" ),
1003 wxS( "Bernhard Stegmaier" ),
1004 wxS( "Adam Wolf" ),
1005 wxT( "Nick Østergaard" ),
1006};
1007
1008
1014{
1015 // Set application specific icon
1016 aInfo.SetAppIcon( aParent->GetIcon() );
1017
1018 /* Set title */
1019 aInfo.SetAppName( Pgm().App().GetAppName() );
1020
1021 /* KiCad build version */
1022 wxString version;
1023 version << ( KIPLATFORM::APP::IsOperatingSystemUnsupported() ? wxString( wxS( "(UNSUPPORTED)" ) )
1024 : GetBuildVersion() )
1025#ifdef DEBUG
1026 << wxT( ", debug" )
1027#else
1028 << wxT( ", release" )
1029#endif
1030 << wxT( " build" );
1031
1032 aInfo.SetBuildVersion( version );
1033 aInfo.SetBuildDate( GetBuildDate() );
1034
1035 /* wxWidgets version */
1036 wxString libVersion;
1037 libVersion << wxGetLibraryVersionInfo().GetVersionString();
1038
1039 /* Unicode or ANSI version */
1040#if wxUSE_UNICODE
1041 libVersion << wxT( " Unicode " );
1042#else
1043 libVersion << wxT( " ANSI " );
1044#endif
1045
1046 // Just in case someone builds KiCad with the platform native of Boost instead of
1047 // the version included with the KiCad source.
1048 libVersion << wxT( "and Boost " ) << ( BOOST_VERSION / 100000 ) << wxT( "." )
1049 << ( BOOST_VERSION / 100 % 1000 ) << wxT( "." ) << ( BOOST_VERSION % 100 )
1050 << wxT( "\n" );
1051
1052 // Operating System Information
1053
1054 wxPlatformInfo platformInfo;
1055
1056 libVersion << wxT( "Platform: " ) << wxGetOsDescription() << wxT( ", " )
1058
1059 aInfo.SetLibVersion( libVersion );
1060
1061 // info/description part HTML formatted:
1062 wxString description;
1063
1064 /* short description */
1065 description << wxT( "<p>" );
1066 description << wxT( "<b><u>" )
1067 << _( "Description" )
1068 << wxT( "</u></b>" ); // bold & underlined font for caption
1069
1070 description << wxT( "<p>" )
1071 << _( "The KiCad EDA Suite is a set of open source applications for the "
1072 "creation of electronic schematics and printed circuit boards." )
1073 << wxT( "</p>" );
1074
1075 description << wxT( "</p>" );
1076
1077 /* websites */
1078 description << wxT( "<p><b><u>" )
1079 << _( "KiCad on the web" )
1080 << wxT( "</u></b>" ); // bold & underlined font for caption
1081
1082 // bullet-ed list with some http links
1083 description << wxT( "<ul>" );
1084 description << wxT( "<li>" )
1085 << _( "The official KiCad website - " )
1086 << HtmlHyperlink( wxS( "http://www.kicad.org" ) )
1087 << wxT( "</li>" );
1088 description << wxT( "<li>" )
1089 << _( "Developer website - " )
1090 << HtmlHyperlink( wxS( "https://go.kicad.org/dev" ) )
1091 << wxT( "</li>" );
1092
1093 description << wxT( "<li>" )
1094 << _("Official KiCad library repositories - " )
1095 << HtmlHyperlink( wxS( "https://go.kicad.org/libraries" ) )
1096 << wxT( "</li>" );
1097
1098 description << wxT( "</ul></p>" );
1099
1100 description << wxT( "<p><b><u>" )
1101 << _( "Bug tracker" )
1102 << wxT( "</u></b>" ); // bold & underlined font caption
1103
1104 // bullet-ed list with some http links
1105 description << wxT( "<ul>" );
1106 description << wxT( "<li>" )
1107 << _( "Report or examine bugs - " )
1108 << HtmlHyperlink( wxS( "https://go.kicad.org/bugs" ) )
1109 << wxT( "</li>" );
1110 description << wxT( "</ul></p>" );
1111
1112 description << wxT( "<p><b><u>" )
1113 << _( "KiCad users group and community" )
1114 << wxT( "</u></b>" ); // bold & underlined font caption
1115
1116 description << wxT( "<ul>" );
1117 description << wxT( "<li>" )
1118 << _( "KiCad forum - " )
1119 << HtmlHyperlink( wxS( "https://go.kicad.org/forum" ) )
1120 << wxT( "</li>" );
1121
1122 description << wxT( "</ul></p>" );
1123
1124 aInfo.SetDescription( description );
1125
1126
1127 // License information also HTML formatted:
1128 wxString license;
1129 license
1130 << wxT( "<div align='center'>" )
1131 << HtmlNewline( 4 )
1132 << _( "The complete KiCad EDA Suite is released under the" ) << HtmlNewline( 2 )
1133 << HtmlHyperlink( wxS( "http://www.gnu.org/licenses" ),
1134 _( "GNU General Public License (GPL) version 3 or any later version" ) )
1135 << wxT( "</div>" );
1136
1137 aInfo.SetLicense( license );
1138
1139
1140 /* A contributor consists of the following information:
1141 * Mandatory:
1142 * - Name
1143 * Optional:
1144 * - EMail address
1145 * - Category
1146 * - Category specific icon
1147 *
1148 * All contributors of the same category will be enumerated under this category
1149 * which should be represented by the same icon.
1150 */
1151
1152 // The core developers
1153 const wxString devCategories[DEV_CATEGORY_COUNT] = { _( "Lead Development Team" ),
1154 _( "Lead Development Alumni" ),
1155 _( "Additional Contributions By" ) };
1156
1157 for( const DEVELOPER& dev : s_developers )
1158 aInfo.AddDeveloper( new CONTRIBUTOR( dev.m_Name, devCategories[dev.m_Category] ) );
1159
1160 // The document writers
1161 const wxString docTeam = _( "Documentation Team" );
1162
1163 for( const wxChar* name : s_docWriters )
1164 aInfo.AddDocWriter( new CONTRIBUTOR( name, docTeam ) );
1165
1166 // The translators
1167 for( const TRANSLATOR& translator : s_translators )
1168 aInfo.AddTranslator( new CONTRIBUTOR( translator.m_Name, translator.m_Language ) );
1169
1170 // Program credits for library team
1171 const wxString librarianCategories[LIBRARIAN_CATEGORY_COUNT] = { _( "Librarian Team" ),
1172 _( "3D models" ),
1173 _( "Symbols" ),
1174 _( "Footprints" ) };
1175
1176 for( const LIBRARIAN& librarian : s_librarians )
1177 {
1178 aInfo.AddLibrarian( new CONTRIBUTOR( librarian.m_Name,
1179 librarianCategories[librarian.m_Category],
1180 librarian.m_Url ? librarian.m_Url : wxT( "" ) ) );
1181 }
1182
1183 // Program credits for icons
1184 const wxString iconContribution = _( "Icons" );
1185
1186 for( const wxChar* name : s_artists )
1187 aInfo.AddArtist( new CONTRIBUTOR( name, iconContribution ) );
1188
1189 // Program credits for package developers.
1190 const wxString packageDevs = _( "Package Developers" );
1191
1192 for( const wxChar* name : s_packagers )
1193 aInfo.AddPackager( new CONTRIBUTOR( name, packageDevs ) );
1194}
1195
1196
1198{
1200 buildKicadAboutBanner( aParent, info );
1201
1202 DIALOG_ABOUT dlg( aParent, info );
1203 dlg.ShowModal();
1204}
1205
1206
1210
1220static wxString HtmlHyperlink( const wxString& aUrl, const wxString& aDescription )
1221{
1222 wxString hyperlink = wxEmptyString;
1223
1224 if( aDescription.IsEmpty() )
1225 hyperlink << wxS( "<a href='" ) << aUrl << wxS( "'>" ) << aUrl << wxS( "</a>" );
1226 else
1227 hyperlink << wxS( "<a href='" )<< aUrl << wxS( "'>" ) << aDescription << wxS( "</a>" );
1228
1229 return hyperlink;
1230}
1231
1232
1240static wxString HtmlNewline( const unsigned int aCount )
1241{
1242 wxString newlineTags = wxEmptyString;
1243
1244 for( size_t i = 0; i<aCount; ++i )
1245 newlineTags << wxS( "<br>" );
1246
1247 return newlineTags;
1248}
static wxString HtmlNewline(const unsigned int amount=1)
Create an HTML newline character sequence of aCount.
static wxString HtmlHyperlink(const wxString &url, const wxString &description=wxEmptyString)
Helper functions.
@ CONTRIB_DEV
@ FORMER_DEV
@ DEV_CATEGORY_COUNT
@ LEAD_DEV
static const wxChar *const s_artists[]
static const DEVELOPER s_developers[]
static const LIBRARIAN s_librarians[]
void ShowAboutDialog(EDA_BASE_FRAME *aParent)
static void buildKicadAboutBanner(EDA_BASE_FRAME *aParent, ABOUT_APP_INFO &aInfo)
Initializes the ABOUT_APP_INFO object with application specific information.
static const TRANSLATOR s_translators[]
static const wxChar *const s_docWriters[]
static const wxChar *const s_packagers[]
LIBRARIAN_CATEGORY
@ SYMBOL_LIB_CONTRIBUTION
@ MODELS_3D_CONTRIBUTION
@ LIBRARIAN_TEAM
@ FOOTPRINT_LIB_CONTRIBUTION
@ LIBRARIAN_CATEGORY_COUNT
const char * name
wxString GetBuildVersion()
Get the full KiCad version string.
wxString GetPlatformGetBitnessName()
wxString GetBuildDate()
Get the build date as a string.
An object of this class is meant to be used to store application specific information like who has co...
Definition aboutinfo.h:41
void AddDocWriter(const CONTRIBUTOR *docwriter)
Definition aboutinfo.h:52
void SetBuildDate(const wxString &date)
Definition aboutinfo.h:101
void AddTranslator(const CONTRIBUTOR *translator)
Definition aboutinfo.h:70
void AddDeveloper(const CONTRIBUTOR *developer)
Definition aboutinfo.h:46
void SetAppName(const wxString &name)
Definition aboutinfo.h:95
void SetDescription(const wxString &text)
Definition aboutinfo.h:89
void SetLibVersion(const wxString &version)
Definition aboutinfo.h:104
void AddArtist(const CONTRIBUTOR *artist)
Definition aboutinfo.h:64
void SetBuildVersion(const wxString &version)
Definition aboutinfo.h:98
void SetAppIcon(const wxIcon &aIcon)
Definition aboutinfo.h:107
void SetLicense(const wxString &text)
Definition aboutinfo.h:92
void AddLibrarian(const CONTRIBUTOR *aLibrarian)
Definition aboutinfo.h:58
void AddPackager(const CONTRIBUTOR *packager)
Definition aboutinfo.h:76
A contributor, a person which was involved in the development of the application or which has contrib...
Definition aboutinfo.h:153
About dialog to show application specific information.
The base frame for deriving all KiCad main window classes.
#define _(s)
Base window classes and related definitions.
bool IsOperatingSystemUnsupported()
Checks if the Operating System is explicitly unsupported and we want to prevent users from sending bu...
Definition unix/app.cpp:70
PGM_BASE & Pgm()
The global program "get" accessor.
see class PGM_BASE
DEV_CATEGORY m_Category
const wxChar * m_Name
LIBRARIAN_CATEGORY m_Category
const wxChar * m_Name
const wxChar * m_Url
const wxChar * m_Name
const wxChar * m_Language