kicad/common/dialog_about/AboutDialog_main.cpp

935 lines
44 KiB
C++
Raw Normal View History

/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2010 Rafael Sokolowski <Rafael.Sokolowski@web.de>
2024-01-20 14:46:40 +00:00
* Copyright (C) 2010-2024 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <boost/version.hpp>
2010-09-03 14:33:09 +00:00
#include <wx/aboutdlg.h>
#include <wx/arrimpl.cpp>
2010-09-03 14:33:09 +00:00
#include <wx/textctrl.h>
#include <wx/utils.h>
2010-09-03 14:33:09 +00:00
/* Used icons:
* show_3d_xpm; // 3D icon
* module_xpm;
* icon_kicad_xpm; // Icon of the application
2010-09-03 14:33:09 +00:00
*/
#include <bitmaps.h>
#include <build_version.h>
#include <common.h>
#include <kiplatform/app.h>
* KIWAY Milestone A): Make major modules into DLL/DSOs. ! The initial testing of this commit should be done using a Debug build so that all the wxASSERT()s are enabled. Also, be sure and keep enabled the USE_KIWAY_DLLs option. The tree won't likely build without it. Turning it off is senseless anyways. If you want stable code, go back to a prior version, the one tagged with "stable". * Relocate all functionality out of the wxApp derivative into more finely targeted purposes: a) DLL/DSO specific b) PROJECT specific c) EXE or process specific d) configuration file specific data e) configuration file manipulations functions. All of this functionality was blended into an extremely large wxApp derivative and that was incompatible with the desire to support multiple concurrently loaded DLL/DSO's ("KIFACE")s and multiple concurrently open projects. An amazing amount of organization come from simply sorting each bit of functionality into the proper box. * Switch to wxConfigBase from wxConfig everywhere except instantiation. * Add classes KIWAY, KIFACE, KIFACE_I, SEARCH_STACK, PGM_BASE, PGM_KICAD, PGM_SINGLE_TOP, * Remove "Return" prefix on many function names. * Remove obvious comments from CMakeLists.txt files, and from else() and endif()s. * Fix building boost for use in a DSO on linux. * Remove some of the assumptions in the CMakeLists.txt files that windows had to be the host platform when building windows binaries. * Reduce the number of wxStrings being constructed at program load time via static construction. * Pass wxConfigBase* to all SaveSettings() and LoadSettings() functions so that these functions are useful even when the wxConfigBase comes from another source, as is the case in the KICAD_MANAGER_FRAME. * Move the setting of the KIPRJMOD environment variable into class PROJECT, so that it can be moved into a project variable soon, and out of FP_LIB_TABLE. * Add the KIWAY_PLAYER which is associated with a particular PROJECT, and all its child wxFrames and wxDialogs now have a Kiway() member function which returns a KIWAY& that that window tree branch is in support of. This is like wxWindows DNA in that child windows get this member with proper value at time of construction. * Anticipate some of the needs for milestones B) and C) and make code adjustments now in an effort to reduce work in those milestones. * No testing has been done for python scripting, since milestone C) has that being largely reworked and re-thought-out.
2014-03-20 00:42:08 +00:00
#include <pgm_base.h>
2018-01-29 15:39:40 +00:00
#include <eda_base_frame.h>
#include "aboutinfo.h"
#include "dialog_about.h"
2010-09-03 14:33:09 +00:00
WX_DEFINE_OBJARRAY( CONTRIBUTORS )
2010-09-03 14:33:09 +00:00
// Helper functions:
static wxString HtmlHyperlink( const wxString& url, const wxString& description = wxEmptyString );
static wxString HtmlNewline( const unsigned int amount = 1 );
/**
* Initializes the <code>ABOUT_APP_INFO</code> object with application specific information.
* This is the object which holds all information about the application
2010-09-03 14:33:09 +00:00
*/
static void buildKicadAboutBanner( EDA_BASE_FRAME* aParent, ABOUT_APP_INFO& aInfo )
2010-09-03 14:33:09 +00:00
{
// Set application specific icon
aInfo.SetAppIcon( aParent->GetIcon() );
2010-09-03 14:33:09 +00:00
/* Set title */
aInfo.SetAppName( Pgm().App().GetAppName() );
2010-09-03 14:33:09 +00:00
/* Copyright information */
2023-12-31 23:12:59 +00:00
aInfo.SetCopyright( wxT( "(C) 1992-2024 KiCad Developers Team" ) );
2010-09-03 14:33:09 +00:00
/* KiCad build version */
wxString version;
2023-01-16 01:22:17 +00:00
version << ( KIPLATFORM::APP::IsOperatingSystemUnsupported() ? wxString( wxS( "(UNSUPPORTED)" ) )
: GetBuildVersion() )
#ifdef DEBUG
2023-01-17 12:42:30 +00:00
<< wxT( ", debug" )
#else
2023-01-17 12:42:30 +00:00
<< wxT( ", release" )
#endif
2023-01-17 12:42:30 +00:00
<< wxT( " build" );
aInfo.SetBuildVersion( version );
aInfo.SetBuildDate( GetBuildDate() );
2010-09-03 14:33:09 +00:00
/* wxWidgets version */
wxString libVersion;
libVersion << wxGetLibraryVersionInfo().GetVersionString();
2010-09-03 14:33:09 +00:00
/* Unicode or ANSI version */
2010-09-03 14:33:09 +00:00
#if wxUSE_UNICODE
libVersion << wxT( " Unicode " );
2010-09-03 14:33:09 +00:00
#else
libVersion << wxT( " ANSI " );
2010-09-03 14:33:09 +00:00
#endif
// Just in case someone builds KiCad with the platform native of Boost instead of
// the version included with the KiCad source.
2023-01-17 12:42:30 +00:00
libVersion << wxT( "and Boost " ) << ( BOOST_VERSION / 100000 ) << wxT( "." )
<< ( BOOST_VERSION / 100 % 1000 ) << wxT( "." ) << ( BOOST_VERSION % 100 )
<< wxT( "\n" );
// Operating System Information
2010-09-03 14:33:09 +00:00
wxPlatformInfo platformInfo;
2010-09-03 14:33:09 +00:00
2023-01-17 12:42:30 +00:00
libVersion << wxT( "Platform: " ) << wxGetOsDescription() << wxT( ", " )
<< GetPlatformGetBitnessName();
2010-09-03 14:33:09 +00:00
aInfo.SetLibVersion( libVersion );
2010-09-03 14:33:09 +00:00
// info/description part HTML formatted:
2010-09-03 14:33:09 +00:00
wxString description;
/* short description */
2023-01-17 12:42:30 +00:00
description << wxT( "<p>" );
description << wxT( "<b><u>" )
<< _( "Description" )
2023-01-17 12:42:30 +00:00
<< wxT( "</u></b>" ); // bold & underlined font for caption
2010-09-03 14:33:09 +00:00
2023-01-17 12:42:30 +00:00
description << wxT( "<p>" )
<< _( "The KiCad EDA Suite is a set of open source applications for the "
"creation of electronic schematics and printed circuit boards." )
2023-01-17 12:42:30 +00:00
<< wxT( "</p>" );
2010-09-03 14:33:09 +00:00
2023-01-17 12:42:30 +00:00
description << wxT( "</p>" );
2010-09-03 14:33:09 +00:00
/* websites */
2023-01-17 12:42:30 +00:00
description << wxT( "<p><b><u>" )
<< _( "KiCad on the web" )
2023-01-17 12:42:30 +00:00
<< wxT( "</u></b>" ); // bold & underlined font for caption
2010-09-03 14:33:09 +00:00
// bullet-ed list with some http links
2023-01-17 12:42:30 +00:00
description << wxT( "<ul>" );
description << wxT( "<li>" )
<< _( "The official KiCad website - " )
2023-01-22 14:41:33 +00:00
<< HtmlHyperlink( wxS( "http://www.kicad.org" ) )
2023-01-17 12:42:30 +00:00
<< wxT( "</li>" );
description << wxT( "<li>" )
2020-10-20 21:47:32 +00:00
<< _( "Developer website - " )
2023-01-22 14:41:33 +00:00
<< HtmlHyperlink( wxS( "https://go.kicad.org/dev" ) )
2023-01-17 12:42:30 +00:00
<< wxT( "</li>" );
2017-01-03 15:01:47 +00:00
2023-01-17 12:42:30 +00:00
description << wxT( "<li>" )
<< _("Official KiCad library repositories - " )
2023-01-22 14:41:33 +00:00
<< HtmlHyperlink( wxS( "https://go.kicad.org/libraries" ) )
2023-01-17 12:42:30 +00:00
<< wxT( "</li>" );
2023-01-17 12:42:30 +00:00
description << wxT( "</ul></p>" );
2010-09-03 14:33:09 +00:00
2023-01-17 12:42:30 +00:00
description << wxT( "<p><b><u>" )
<< _( "Bug tracker" )
2023-01-17 12:42:30 +00:00
<< wxT( "</u></b>" ); // bold & underlined font caption
2010-09-03 14:33:09 +00:00
// bullet-ed list with some http links
2023-01-17 12:42:30 +00:00
description << wxT( "<ul>" );
description << wxT( "<li>" )
<< _( "Report or examine bugs - " )
2023-01-22 14:41:33 +00:00
<< HtmlHyperlink( wxS( "https://go.kicad.org/bugs" ) )
2023-01-17 12:42:30 +00:00
<< wxT( "</li>" );
description << wxT( "</ul></p>" );
2023-01-17 12:42:30 +00:00
description << wxT( "<p><b><u>" )
2020-10-20 21:47:32 +00:00
<< _( "KiCad users group and community" )
2023-01-17 12:42:30 +00:00
<< wxT( "</u></b>" ); // bold & underlined font caption
2023-01-17 12:42:30 +00:00
description << wxT( "<ul>" );
description << wxT( "<li>" )
<< _( "KiCad forum - " )
2023-01-22 14:41:33 +00:00
<< HtmlHyperlink( wxS( "https://go.kicad.org/forum" ) )
2023-01-17 12:42:30 +00:00
<< wxT( "</li>" );
2023-01-17 12:42:30 +00:00
description << wxT( "</ul></p>" );
2010-09-03 14:33:09 +00:00
aInfo.SetDescription( description );
2010-09-03 14:33:09 +00:00
// License information also HTML formatted:
2010-09-03 14:33:09 +00:00
wxString license;
license
2023-01-17 12:42:30 +00:00
<< wxT( "<div align='center'>" )
2010-09-03 14:33:09 +00:00
<< HtmlNewline( 4 )
<< _( "The complete KiCad EDA Suite is released under the" ) << HtmlNewline( 2 )
2023-01-22 14:41:33 +00:00
<< HtmlHyperlink( wxS( "http://www.gnu.org/licenses" ),
_( "GNU General Public License (GPL) version 3 or any later version" ) )
2023-01-17 12:42:30 +00:00
<< wxT( "</div>" );
2010-09-03 14:33:09 +00:00
aInfo.SetLicense( license );
2010-09-03 14:33:09 +00:00
/* A contributor consists of the following information:
* Mandatory:
* - Name
* Optional:
* - EMail address
2010-09-03 14:33:09 +00:00
* - Category
* - Category specific icon
*
* All contributors of the same category will be enumerated under this category
* which should be represented by the same icon.
*/
// The core developers
#define ADD_DEV( name, category ) aInfo.AddDeveloper( new CONTRIBUTOR( name, category ) )
#define LEAD_DEV _( "Lead Development Team" )
#define FORMER_DEV _( "Lead Development Alumni" )
#define CONTRIB_DEV _( "Additional Contributions By")
ADD_DEV( wxT( "Jean-Pierre Charras" ), LEAD_DEV );
ADD_DEV( wxT( "Wayne Stambaugh" ), LEAD_DEV );
// Alphabetical after the first two
ADD_DEV( wxT( "John Beard" ), LEAD_DEV );
ADD_DEV( wxT( "Jon Evans" ), LEAD_DEV );
ADD_DEV( wxT( "Roberto Fernandez Bautista" ), LEAD_DEV );
ADD_DEV( wxT( "Seth Hillbrand" ), LEAD_DEV );
ADD_DEV( wxT( "Ian McInerney" ), LEAD_DEV );
ADD_DEV( wxT( "Mark Roszko" ), LEAD_DEV );
ADD_DEV( wxT( "Thomas Pointhuber" ), LEAD_DEV );
ADD_DEV( wxT( "Alex Shvartzkop" ), LEAD_DEV );
ADD_DEV( wxT( "Mike Williams" ), LEAD_DEV );
ADD_DEV( wxT( "Tomasz Wlostowski" ), LEAD_DEV );
ADD_DEV( wxT( "Jeff Young" ), LEAD_DEV );
ADD_DEV( wxT( "Fabien Corona" ), FORMER_DEV );
ADD_DEV( wxT( "Dick Hollenbeck" ), FORMER_DEV );
ADD_DEV( wxT( "Alexis Lockwood" ), FORMER_DEV );
ADD_DEV( wxT( "Brian Sidebotham" ), FORMER_DEV );
ADD_DEV( wxT( "Orson (Maciej Sumiński)" ), FORMER_DEV );
ADD_DEV( wxT( "Mikolaj Wielgus" ), FORMER_DEV );
ADD_DEV( wxT( "Martin Aberg" ), CONTRIB_DEV );
ADD_DEV( wxT( "Yüksel Açikgöz" ), CONTRIB_DEV );
ADD_DEV( wxT( "Rohan Agrawal" ), CONTRIB_DEV );
ADD_DEV( wxT( "Johannes Agricola" ), CONTRIB_DEV );
ADD_DEV( wxT( "Erik Agsjö" ), CONTRIB_DEV );
ADD_DEV( wxT( "Nabeel Ahmad" ), CONTRIB_DEV );
ADD_DEV( wxT( "Werner Almesberger" ), CONTRIB_DEV );
ADD_DEV( wxT( "Shawn Anastasio" ), CONTRIB_DEV );
ADD_DEV( wxT( "Collin Anderson" ), CONTRIB_DEV );
ADD_DEV( wxT( "Tom Andrews" ), CONTRIB_DEV );
ADD_DEV( wxT( "Subaru Arai" ), CONTRIB_DEV );
ADD_DEV( wxT( "Mikael Arguedas" ), CONTRIB_DEV );
ADD_DEV( wxT( "Lachlan Audas" ), CONTRIB_DEV );
ADD_DEV( wxT( "Jean-Noel Avila" ), CONTRIB_DEV );
ADD_DEV( wxT( "Pascal Baerten" ), CONTRIB_DEV );
ADD_DEV( wxT( "Konstantin Baranovskiy" ), CONTRIB_DEV );
ADD_DEV( wxT( "Roman Bashkov" ), CONTRIB_DEV );
ADD_DEV( wxT( "Michael Beardsworth" ), CONTRIB_DEV );
ADD_DEV( wxT( "Matthew Beckler" ), CONTRIB_DEV );
ADD_DEV( wxT( "Konrad Beckmann" ), CONTRIB_DEV );
ADD_DEV( wxT( "Eduardo Behr" ), CONTRIB_DEV );
ADD_DEV( wxT( "David Beinder" ), CONTRIB_DEV );
ADD_DEV( wxT( "Frank Bennett" ), CONTRIB_DEV );
ADD_DEV( wxT( "Roman Beranek" ), CONTRIB_DEV );
ADD_DEV( wxT( "Francois Berder" ), CONTRIB_DEV );
ADD_DEV( wxT( "Martin Berglund" ), CONTRIB_DEV );
ADD_DEV( wxT( "Gustav Bergquist" ), CONTRIB_DEV );
ADD_DEV( wxT( "Cirilo Bernardo" ), CONTRIB_DEV );
ADD_DEV( wxT( "Joël Bertrand" ), CONTRIB_DEV );
ADD_DEV( wxT( "Andreas Beutling" ), CONTRIB_DEV );
ADD_DEV( wxT( "Brian F. G. Bidulock" ), CONTRIB_DEV );
ADD_DEV( wxT( "Anton Blanchard" ), CONTRIB_DEV );
ADD_DEV( wxT( "Steve Bollinger" ), CONTRIB_DEV );
ADD_DEV( wxT( "Blair Bonnett" ), CONTRIB_DEV );
ADD_DEV( wxT( "Markus Bonk" ), CONTRIB_DEV );
ADD_DEV( wxT( "Franck Bourdonnec" ), CONTRIB_DEV );
ADD_DEV( wxT( "Carlo Bramini" ), CONTRIB_DEV );
ADD_DEV( wxT( "Matthias Breithaupt" ), CONTRIB_DEV );
ADD_DEV( wxT( "Stefan Brüns" ), CONTRIB_DEV );
ADD_DEV( wxT( "Andreas Buhr" ), CONTRIB_DEV );
ADD_DEV( wxT( "Ryan Bunch" ), CONTRIB_DEV );
ADD_DEV( wxT( "Emery Burhan" ), CONTRIB_DEV );
ADD_DEV( wxT( "Scott Candey" ), CONTRIB_DEV );
ADD_DEV( wxT( "Phinitnan Chanasabaeng" ), CONTRIB_DEV );
ADD_DEV( wxT( "Shivpratap Chauhan" ), CONTRIB_DEV );
ADD_DEV( wxT( "Kevin Cozens" ), CONTRIB_DEV );
ADD_DEV( wxT( "Joseph Y. Chen" ), CONTRIB_DEV );
ADD_DEV( wxT( "Alexey Chernov" ), CONTRIB_DEV );
ADD_DEV( wxT( "Marco Ciampa" ), CONTRIB_DEV );
ADD_DEV( wxT( "Marcus Comstedt" ), CONTRIB_DEV );
ADD_DEV( wxT( "Diogo Condeco" ), CONTRIB_DEV );
ADD_DEV( wxT( "Colin Cooper" ), CONTRIB_DEV );
ADD_DEV( wxT( "Emile Cormier" ), CONTRIB_DEV );
ADD_DEV( wxT( "Garth Corral" ), CONTRIB_DEV );
ADD_DEV( wxT( "Sergio Costas" ), CONTRIB_DEV );
ADD_DEV( wxT( "Kevin Cozens" ), CONTRIB_DEV );
ADD_DEV( wxT( "Dan Cross" ), CONTRIB_DEV );
ADD_DEV( wxT( "Andrew D'Addesio" ), CONTRIB_DEV );
ADD_DEV( wxT( "Martin d'Allens" ), CONTRIB_DEV );
ADD_DEV( wxT( "Greg Davill" ), CONTRIB_DEV );
ADD_DEV( wxT( "Camille Delbegue" ), CONTRIB_DEV );
ADD_DEV( wxT( "Albin Dennevi" ), CONTRIB_DEV );
ADD_DEV( wxT( "Ruben De Smet" ), CONTRIB_DEV );
ADD_DEV( wxT( "Alexander Dewing" ), CONTRIB_DEV );
ADD_DEV( wxT( "Okan Demir" ), CONTRIB_DEV );
ADD_DEV( wxT( "Jonas Diemer" ), CONTRIB_DEV );
ADD_DEV( wxT( "Ben Dooks" ), CONTRIB_DEV );
ADD_DEV( wxT( "Pavel Dovgalyuk" ), CONTRIB_DEV );
ADD_DEV( wxT( "Andrew Downing" ), CONTRIB_DEV );
ADD_DEV( wxT( "Jan Dubiec" ), CONTRIB_DEV );
ADD_DEV( wxT( "Lucas Dumont" ), CONTRIB_DEV );
ADD_DEV( wxT( "Gerd Egidy" ), CONTRIB_DEV );
ADD_DEV( wxT( "Jean Philippe Eimer" ), CONTRIB_DEV );
ADD_DEV( wxT( "Ben Ellis" ), CONTRIB_DEV );
ADD_DEV( wxT( "Oleg Endo" ), CONTRIB_DEV );
ADD_DEV( wxT( "Damien Espitallier" ), CONTRIB_DEV );
ADD_DEV( wxT( "Paul Ewing" ), CONTRIB_DEV );
ADD_DEV( wxT( "Andrey Fedorushkov" ), CONTRIB_DEV );
ADD_DEV( wxT( "Julian Fellinger" ), CONTRIB_DEV );
ADD_DEV( wxT( "Joe Ferner" ), CONTRIB_DEV );
ADD_DEV( wxT( "Brian Fiete" ), CONTRIB_DEV );
ADD_DEV( wxT( "Thomas Figueroa" ), CONTRIB_DEV );
ADD_DEV( wxT( "Gilbert J.M. Forkel" ), CONTRIB_DEV );
ADD_DEV( wxT( "Vincenzo Fortunato" ), CONTRIB_DEV );
ADD_DEV( wxT( "Drew Fustini" ), CONTRIB_DEV );
ADD_DEV( wxT( "Ronnie Gaensli" ), CONTRIB_DEV );
ADD_DEV( wxT( "Christian Gagneraud" ), CONTRIB_DEV );
ADD_DEV( wxT( "Ben Gamari" ), CONTRIB_DEV );
ADD_DEV( wxT( "Ashutosh Gangwar" ), CONTRIB_DEV );
ADD_DEV( wxT( "Alessandro Gatti" ), CONTRIB_DEV );
ADD_DEV( wxT( "Hal Gentz" ), CONTRIB_DEV );
ADD_DEV( wxT( "Davide Gerhard" ), CONTRIB_DEV );
ADD_DEV( wxT( "Michael Geselbracht" ), CONTRIB_DEV );
ADD_DEV( wxT( "Giulio Girardi" ), CONTRIB_DEV );
ADD_DEV( wxT( "Jeff Glass" ), CONTRIB_DEV );
ADD_DEV( wxT( "Alexander Golubev" ), CONTRIB_DEV );
ADD_DEV( wxT( "Angus Gratton" ), CONTRIB_DEV );
ADD_DEV( wxT( "Andrea Greco" ), CONTRIB_DEV );
ADD_DEV( wxT( "Element Green" ), CONTRIB_DEV );
ADD_DEV( wxT( "Mathias Grimmberger" ), CONTRIB_DEV );
ADD_DEV( wxT( "Johan Grip" ), CONTRIB_DEV );
ADD_DEV( wxT( "Hildo Guillardi Júnior" ), CONTRIB_DEV );
ADD_DEV( wxT( "Niki Guldbrand" ), CONTRIB_DEV );
ADD_DEV( wxT( "Tanay Gupta" ), CONTRIB_DEV );
ADD_DEV( wxT( "Alexander Guy" ), CONTRIB_DEV );
ADD_DEV( wxT( "Zoltan Gyarmati" ), CONTRIB_DEV );
ADD_DEV( wxT( "Jonathan Haas" ), CONTRIB_DEV );
ADD_DEV( wxT( "Mark Hämmerling" ), CONTRIB_DEV );
ADD_DEV( wxT( "Stefan Hamminga" ), CONTRIB_DEV );
ADD_DEV( wxT( "Ma Han" ), CONTRIB_DEV );
ADD_DEV( wxT( "Scott Hanson" ), CONTRIB_DEV );
ADD_DEV( wxT( "Ben Harris" ), CONTRIB_DEV );
ADD_DEV( wxT( "Lukas F. Hartmann" ), CONTRIB_DEV );
ADD_DEV( wxT( "Jakob Haufe" ), CONTRIB_DEV );
ADD_DEV( wxT( "Aylons Hazzud" ), CONTRIB_DEV );
ADD_DEV( wxT( "Stefan Helmert" ), CONTRIB_DEV );
ADD_DEV( wxT( "Hartmut Henkel" ), CONTRIB_DEV );
ADD_DEV( wxT( "Brian Henning" ), CONTRIB_DEV );
ADD_DEV( wxT( "Paulo Henrique Silva" ), CONTRIB_DEV );
ADD_DEV( wxT( "Hans Henry von Tresckow" ), CONTRIB_DEV );
ADD_DEV( wxT( "Diego Herranz" ), CONTRIB_DEV );
ADD_DEV( wxT( "Marco Hess" ), CONTRIB_DEV );
ADD_DEV( wxT( "David Holdeman" ), CONTRIB_DEV );
ADD_DEV( wxT( "Laurens Holst" ), CONTRIB_DEV );
ADD_DEV( wxT( "Yang Hongbo" ), CONTRIB_DEV );
ADD_DEV( wxT( "Mario Hros" ), CONTRIB_DEV );
ADD_DEV( wxT( "Josue Huaroto" ), CONTRIB_DEV );
ADD_DEV( wxT( "Matt Huszagh" ), CONTRIB_DEV );
ADD_DEV( wxT( "Torsten Hüter" ), CONTRIB_DEV );
ADD_DEV( wxT( "José Ignacio Romero" ), CONTRIB_DEV );
ADD_DEV( wxT( "Marco Inacio" ), CONTRIB_DEV );
ADD_DEV( wxT( "Kinichiro Inoguchi" ), CONTRIB_DEV );
ADD_DEV( wxT( "Fabián Inostroza" ), CONTRIB_DEV );
ADD_DEV( wxT( "Vlad Ivanov" ), CONTRIB_DEV );
ADD_DEV( wxT( "Andre Iwers" ), CONTRIB_DEV );
ADD_DEV( wxT( "Hasan Jaafar" ), CONTRIB_DEV );
ADD_DEV( wxT( "James Jackson" ), CONTRIB_DEV );
ADD_DEV( wxT( "Jerry Jacobs" ), CONTRIB_DEV );
ADD_DEV( wxT( "Christian Jacobsen" ), CONTRIB_DEV );
ADD_DEV( wxT( "Michal Jahelka" ), CONTRIB_DEV );
ADD_DEV( wxT( "Martin Janitschke" ), CONTRIB_DEV );
ADD_DEV( wxT( "Jonathan Jara-Almonte" ), CONTRIB_DEV );
ADD_DEV( wxT( "Zhuang Jiezhi" ), CONTRIB_DEV );
ADD_DEV( wxT( "José Jorge Enríquez" ), CONTRIB_DEV );
ADD_DEV( wxT( "Franck Jullien" ), CONTRIB_DEV );
ADD_DEV( wxT( "Eeli Kaikkonen" ), CONTRIB_DEV );
ADD_DEV( wxT( "Lajos Kamocsay" ), CONTRIB_DEV );
ADD_DEV( wxT( "Povilas Kanapickas" ), CONTRIB_DEV );
ADD_DEV( wxT( "Mikhail Karpenko" ), CONTRIB_DEV );
ADD_DEV( wxT( "Kerusey Karyu" ), CONTRIB_DEV );
ADD_DEV( wxT( "Michael Kavanagh" ), CONTRIB_DEV );
ADD_DEV( wxT( "Tom Keddie" ), CONTRIB_DEV );
ADD_DEV( wxT( "Graham Keeth" ), CONTRIB_DEV );
ADD_DEV( wxT( "Yury Khalyavin" ), CONTRIB_DEV );
ADD_DEV( wxT( "Eldar Khayrullin" ), CONTRIB_DEV );
ADD_DEV( wxT( "Georges Khaznadar" ), CONTRIB_DEV );
ADD_DEV( wxT( "Gary Kim" ), CONTRIB_DEV );
ADD_DEV( wxT( "Aristeidis Kimirtzis" ), CONTRIB_DEV );
ADD_DEV( wxT( "Ingo Kletti" ), CONTRIB_DEV );
ADD_DEV( wxT( "Kliment" ), CONTRIB_DEV );
ADD_DEV( wxT( "Sylwester Kocjan" ), CONTRIB_DEV );
ADD_DEV( wxT( "Clemens Koller" ), CONTRIB_DEV );
ADD_DEV( wxT( "Asuki Kono" ), CONTRIB_DEV );
ADD_DEV( wxT( "Jakub Kozdon" ), CONTRIB_DEV );
ADD_DEV( wxT( "Hajo Nils Krabbenhöft" ), CONTRIB_DEV );
ADD_DEV( wxT( "Simon Kueppers" ), CONTRIB_DEV );
ADD_DEV( wxT( "Martijn Kuipers" ), CONTRIB_DEV );
ADD_DEV( wxT( "Robbert Lagerweij" ), CONTRIB_DEV );
ADD_DEV( wxT( "Dimitris Lampridis" ), CONTRIB_DEV );
ADD_DEV( wxT( "Marco Langer" ), CONTRIB_DEV );
ADD_DEV( wxT( "Kevin Lannen" ), CONTRIB_DEV );
ADD_DEV( wxT( "Mika Laitio" ), CONTRIB_DEV );
ADD_DEV( wxT( "Floris Lambrechts" ), CONTRIB_DEV );
ADD_DEV( wxT( "lê văn lập" ), CONTRIB_DEV );
ADD_DEV( wxT( "Anton Lazarev" ), CONTRIB_DEV );
ADD_DEV( wxT( "Dag Lem" ), CONTRIB_DEV );
ADD_DEV( wxT( "Ludovic Léau-mercier" ), CONTRIB_DEV );
ADD_DEV( wxT( "Paul LeoNerd Evens" ), CONTRIB_DEV );
ADD_DEV( wxT( "Jonatan Liljedahl" ), CONTRIB_DEV );
ADD_DEV( wxT( "Huanyin Liu" ), CONTRIB_DEV );
ADD_DEV( wxT( "Alexander Lunev" ), CONTRIB_DEV );
ADD_DEV( wxT( "Andrew Lutsenko" ), CONTRIB_DEV );
ADD_DEV( wxT( "Mario Luzeiro" ), CONTRIB_DEV );
ADD_DEV( wxT( "Johannes Maibaum" ), CONTRIB_DEV );
ADD_DEV( wxT( "Mateusz Majchrzycki" ), CONTRIB_DEV );
ADD_DEV( wxT( "Daniel Majewski" ), CONTRIB_DEV );
ADD_DEV( wxT( "Rachel Mant" ), CONTRIB_DEV );
ADD_DEV( wxT( "Lorenzo Marcantonio" ), CONTRIB_DEV );
ADD_DEV( wxT( "Miklós Márton" ), CONTRIB_DEV );
ADD_DEV( wxT( "Marco Mattila" ), CONTRIB_DEV );
ADD_DEV( wxT( "Steffen Mauch" ), CONTRIB_DEV );
ADD_DEV( wxT( "Brian Mayton" ), CONTRIB_DEV );
ADD_DEV( wxT( "Maui" ), CONTRIB_DEV );
ADD_DEV( wxT( "Kirill Mavreshko" ), CONTRIB_DEV );
ADD_DEV( wxT( "Miles McCoo" ), CONTRIB_DEV );
ADD_DEV( wxT( "Charles McDowell" ), CONTRIB_DEV );
ADD_DEV( wxT( "Moses McKnight" ), CONTRIB_DEV );
ADD_DEV( wxT( "Martin McNamara" ), CONTRIB_DEV );
ADD_DEV( wxT( "Cameron McQuinn" ), CONTRIB_DEV );
ADD_DEV( wxT( "Ievgenii Meshcheriakov" ), CONTRIB_DEV );
ADD_DEV( wxT( "Ashley Mills" ), CONTRIB_DEV );
ADD_DEV( wxT( "Christoph Moench-Tegeder" ), CONTRIB_DEV );
ADD_DEV( wxT( "Peter Montgomery" ), CONTRIB_DEV );
ADD_DEV( wxT( "Alejandro García Montoro" ), CONTRIB_DEV );
ADD_DEV( wxT( "Chris Morgan" ), CONTRIB_DEV );
ADD_DEV( wxT( "Felix Morgner" ), CONTRIB_DEV );
ADD_DEV( wxT( "Jan Mrázek" ), CONTRIB_DEV );
ADD_DEV( wxT( "Michael Narigon" ), CONTRIB_DEV );
ADD_DEV( wxT( "Jon Neal" ), CONTRIB_DEV );
ADD_DEV( wxT( "Bastian Neumann" ), CONTRIB_DEV );
ADD_DEV( wxT( "Daniil Nikolaev" ), CONTRIB_DEV );
ADD_DEV( wxT( "Kristian Nielsen" ), CONTRIB_DEV );
ADD_DEV( wxT( "Érico Nogueira" ), CONTRIB_DEV );
ADD_DEV( wxT( "Allan Nordhøy" ), CONTRIB_DEV );
ADD_DEV( wxT( "Henrik Nyberg" ), CONTRIB_DEV );
ADD_DEV( wxT( "Kristoffer Ödmark" ), CONTRIB_DEV );
ADD_DEV( wxT( "Russell Oliver" ), CONTRIB_DEV );
ADD_DEV( wxT( "Jason Oster" ), CONTRIB_DEV );
ADD_DEV( wxT( "Frank Palazzolo" ), CONTRIB_DEV );
ADD_DEV( wxT( "Matus Pavelek" ), CONTRIB_DEV );
ADD_DEV( wxT( "luz paz" ), CONTRIB_DEV );
ADD_DEV( wxT( "Miguel Angel Ajo Pelayo" ), CONTRIB_DEV );
ADD_DEV( wxT( "Patrick Pereira" ), CONTRIB_DEV );
ADD_DEV( wxT( "Jacobo Aragunde Perez" ), CONTRIB_DEV );
ADD_DEV( wxT( "Matthew Petroff" ), CONTRIB_DEV );
ADD_DEV( wxT( "Johannes Pfister" ), CONTRIB_DEV );
ADD_DEV( wxT( "Fabian Pflug" ), CONTRIB_DEV );
ADD_DEV( wxT( "Christian Pfluger" ), CONTRIB_DEV );
ADD_DEV( wxT( "Brian Piccioni" ), CONTRIB_DEV );
ADD_DEV( wxT( "Nicolas Planel" ), CONTRIB_DEV );
ADD_DEV( wxT( "Paweł Płóciennik" ), CONTRIB_DEV );
ADD_DEV( wxT( "Carl Poirier" ), CONTRIB_DEV );
ADD_DEV( wxT( "Reece Pollack" ), CONTRIB_DEV );
ADD_DEV( wxT( "Alain Portal" ), CONTRIB_DEV );
ADD_DEV( wxT( "Andrei Pozolotin" ), CONTRIB_DEV );
ADD_DEV( wxT( "Antia Puentes" ), CONTRIB_DEV );
ADD_DEV( wxT( "Zoltan Puskas" ), CONTRIB_DEV );
ADD_DEV( wxT( "Heikki Pulkkinen" ), CONTRIB_DEV );
ADD_DEV( wxT( "Morgan Quigley" ), CONTRIB_DEV );
ADD_DEV( wxT( "Barabas Raffai" ), CONTRIB_DEV );
ADD_DEV( wxT( "Urja Rannikko" ), CONTRIB_DEV );
ADD_DEV( wxT( "Hendrik v. Raven" ), CONTRIB_DEV );
ADD_DEV( wxT( "Joshua Redstone" ), CONTRIB_DEV );
ADD_DEV( wxT( "Michele Renda" ), CONTRIB_DEV );
ADD_DEV( wxT( "Jean-Samuel Reynaud" ), CONTRIB_DEV );
ADD_DEV( wxT( "Dmitry Rezvanov" ), CONTRIB_DEV );
ADD_DEV( wxT( "Simon Richter" ), CONTRIB_DEV );
ADD_DEV( wxT( "Christoph Riehl" ), CONTRIB_DEV );
ADD_DEV( wxT( "Thiadmer Riemersma" ), CONTRIB_DEV );
ADD_DEV( wxT( "Gregor Riepl" ), CONTRIB_DEV );
ADD_DEV( wxT( "RigoLigoRLC" ), CONTRIB_DEV );
ADD_DEV( wxT( "Ola Rinta-Koski" ), CONTRIB_DEV );
ADD_DEV( wxT( "Lubomir Rintel" ), CONTRIB_DEV );
ADD_DEV( wxT( "Érico Rolim" ), CONTRIB_DEV );
ADD_DEV( wxT( "Marcus A. Romer" ), CONTRIB_DEV );
ADD_DEV( wxT( "Heiko Rosemann" ), CONTRIB_DEV );
ADD_DEV( wxT( "Fabio Rossi" ), CONTRIB_DEV );
ADD_DEV( wxT( "Ian Roth" ), CONTRIB_DEV );
ADD_DEV( wxT( "Clément Saccoccio" ), CONTRIB_DEV );
ADD_DEV( wxT( "J. Morio Sakaguchi" ), CONTRIB_DEV );
ADD_DEV( wxT( "Simon Schaak" ), CONTRIB_DEV );
ADD_DEV( wxT( "Ross Schlaikjer" ), CONTRIB_DEV );
ADD_DEV( wxT( "Julius Schmidt" ), CONTRIB_DEV );
ADD_DEV( wxT( "Felix Schneider" ), CONTRIB_DEV );
ADD_DEV( wxT( "Marvin Schmidt" ), CONTRIB_DEV );
ADD_DEV( wxT( "Carsten Schoenert" ), CONTRIB_DEV );
ADD_DEV( wxT( "Simon Schubert" ), CONTRIB_DEV );
ADD_DEV( wxT( "Michal Schulz" ), CONTRIB_DEV );
ADD_DEV( wxT( "Adrian Scripca" ), CONTRIB_DEV );
ADD_DEV( wxT( "Pradeepa Senanayake" ), CONTRIB_DEV );
ADD_DEV( wxT( "Marco Serantoni" ), CONTRIB_DEV );
ADD_DEV( wxT( "Frank Severinsen" ), CONTRIB_DEV );
ADD_DEV( wxT( "Cheng Sheng" ), CONTRIB_DEV );
ADD_DEV( wxT( "Yang Sheng" ), CONTRIB_DEV );
ADD_DEV( wxT( "Chetan Shinde" ), CONTRIB_DEV );
ADD_DEV( wxT( "Alexander Shuklin" ), CONTRIB_DEV );
ADD_DEV( wxT( "Adam Simpkins" ), CONTRIB_DEV );
ADD_DEV( wxT( "Slawomir Siudym" ), CONTRIB_DEV );
ADD_DEV( wxT( "Marco Serantoni" ), CONTRIB_DEV );
ADD_DEV( wxT( "Guillaume Simard" ), CONTRIB_DEV );
ADD_DEV( wxT( "Martin Sivak" ), CONTRIB_DEV );
ADD_DEV( wxT( "Mateusz Skowroński" ), CONTRIB_DEV );
ADD_DEV( wxT( "Dominik Sliwa" ), CONTRIB_DEV );
ADD_DEV( wxT( "Blake Smith" ), CONTRIB_DEV );
ADD_DEV( wxT( "Michal Sojka" ), CONTRIB_DEV );
ADD_DEV( wxT( "Rafael Sokolowski" ), CONTRIB_DEV );
ADD_DEV( wxT( "Vesa Solonen" ), CONTRIB_DEV );
ADD_DEV( wxT( "Ronald Sousa" ), CONTRIB_DEV );
ADD_DEV( wxT( "Craig Southeren" ), CONTRIB_DEV );
ADD_DEV( wxT( "Thomas Spindler" ), CONTRIB_DEV );
ADD_DEV( wxT( "Seppe Stas" ), CONTRIB_DEV );
ADD_DEV( wxT( "Bernhard Stegmaier" ), CONTRIB_DEV );
ADD_DEV( wxT( "Michael Steinberg" ), CONTRIB_DEV );
ADD_DEV( wxT( "Marco Sterbik" ), CONTRIB_DEV );
ADD_DEV( wxT( "Alexander Stock" ), CONTRIB_DEV );
ADD_DEV( wxT( "Martin Stoilov" ), CONTRIB_DEV );
ADD_DEV( wxT( "Hiroki Suenaga" ), CONTRIB_DEV );
ADD_DEV( wxT( "Kuba Sunderland-Ober" ), CONTRIB_DEV );
ADD_DEV( wxT( "Nimish Telang" ), CONTRIB_DEV );
ADD_DEV( wxT( "Martin Thierer" ), CONTRIB_DEV );
ADD_DEV( wxT( "Karl Thorén" ), CONTRIB_DEV );
ADD_DEV( wxT( "Hiroshi Tokita" ), CONTRIB_DEV );
ADD_DEV( wxT( "Vladimir Ur" ), CONTRIB_DEV );
ADD_DEV( wxT( "Yon Uriarte" ), CONTRIB_DEV );
ADD_DEV( wxT( "Matthias Urlichs" ), CONTRIB_DEV );
ADD_DEV( wxT( "Vladimir Uryvaev" ), CONTRIB_DEV );
ADD_DEV( wxT( "Henri Valta" ), CONTRIB_DEV );
ADD_DEV( wxT( "Dave Vandenbout" ), CONTRIB_DEV );
ADD_DEV( wxT( "Edwin van den Oetelaar" ), CONTRIB_DEV );
ADD_DEV( wxT( "Mark van Doesburg" ), CONTRIB_DEV );
ADD_DEV( wxT( "Nils van Zuijlen" ), CONTRIB_DEV );
ADD_DEV( wxT( "Fabio Varesano" ), CONTRIB_DEV );
ADD_DEV( wxT( "Benjamin Vernoux" ), CONTRIB_DEV );
ADD_DEV( wxT( "Frank Villaro-Dixon" ), CONTRIB_DEV );
ADD_DEV( wxT( "Mark Visser" ), CONTRIB_DEV );
ADD_DEV( wxT( "Forrest Voight" ), CONTRIB_DEV );
ADD_DEV( wxT( "Tormod Volden" ), CONTRIB_DEV );
ADD_DEV( wxT( "Bartek Wacławik" ), CONTRIB_DEV );
ADD_DEV( wxT( "Johannes Wågen" ), CONTRIB_DEV );
ADD_DEV( wxT( "Oliver Walters" ), CONTRIB_DEV );
ADD_DEV( wxT( "Jonathan Warner" ), CONTRIB_DEV );
ADD_DEV( wxT( "Dan Weatherill" ), CONTRIB_DEV );
ADD_DEV( wxT( "Stefan Weber" ), CONTRIB_DEV );
ADD_DEV( wxT( "Christian Weickhmann" ), CONTRIB_DEV );
ADD_DEV( wxT( "Bevan Weiss" ), CONTRIB_DEV );
ADD_DEV( wxT( "Simon Wells" ), CONTRIB_DEV );
ADD_DEV( wxT( "Dominik Wernberger" ), CONTRIB_DEV );
ADD_DEV( wxT( "Jan Wichmann" ), CONTRIB_DEV );
ADD_DEV( wxT( "Nick Winters" ), CONTRIB_DEV );
ADD_DEV( wxT( "Adam Wolf" ), CONTRIB_DEV );
ADD_DEV( wxT( "Andrzej Wolski" ), CONTRIB_DEV );
ADD_DEV( wxT( "Damian Wrobel" ), CONTRIB_DEV );
ADD_DEV( wxT( "Andrew Wygle" ), CONTRIB_DEV );
ADD_DEV( wxT( "Jiaxun Yang" ), CONTRIB_DEV );
ADD_DEV( wxT( "Robert Yates" ), CONTRIB_DEV );
ADD_DEV( wxT( "Yegor Yefremov" ), CONTRIB_DEV );
ADD_DEV( wxT( "Kenta Yonekura" ), CONTRIB_DEV );
ADD_DEV( wxT( "Alexander Zakamaldin" ), CONTRIB_DEV );
ADD_DEV( wxT( "Frank Zeeman" ), CONTRIB_DEV );
ADD_DEV( wxT( "Henner Zeller" ), CONTRIB_DEV );
ADD_DEV( wxT( "Andrew Zonenberg" ), CONTRIB_DEV );
ADD_DEV( wxT( "Karl Zeilhofer" ), CONTRIB_DEV );
ADD_DEV( wxT( "Kevin Zheng" ), CONTRIB_DEV );
ADD_DEV( wxT( "Nick Østergaard" ), CONTRIB_DEV );
ADD_DEV( wxT( "木 王" ), CONTRIB_DEV );
// The document writers
#define DOC_TEAM _( "Documentation Team" )
#define ADD_WRITER( name, category ) aInfo.AddDocWriter( new CONTRIBUTOR( name, category ) )
ADD_WRITER( wxS( "Jean-Pierre Charras" ), DOC_TEAM );
ADD_WRITER( wxS( "Marco Ciampa" ), DOC_TEAM );
ADD_WRITER( wxS( "Jon Evans" ), DOC_TEAM );
ADD_WRITER( wxS( "Dick Hollenbeck" ), DOC_TEAM );
ADD_WRITER( wxS( "Graham Keeth" ), DOC_TEAM );
ADD_WRITER( wxS( "Igor Plyatov" ), DOC_TEAM );
ADD_WRITER( wxS( "Wayne Stambaugh" ), DOC_TEAM );
ADD_WRITER( wxS( "Fabrizio Tappero" ), DOC_TEAM );
2010-09-03 14:33:09 +00:00
/* The translators
* As category the language to which the translation was done is used
*/
#define ADD_TRANSLATOR( name, category ) aInfo.AddTranslator( new CONTRIBUTOR( name, category ) )
ADD_TRANSLATOR( wxT( "Ondřej Čertík" ), wxS( "Czech (CS)" ) );
ADD_TRANSLATOR( wxT( "Martin Kratoška" ), wxS( "Czech (CS)" ) );
ADD_TRANSLATOR( wxT( "Radek Kuznik" ), wxS( "Czech (CS)" ) );
ADD_TRANSLATOR( wxT( "Roman Ondráček" ), wxS( "Czech (CS)" ) );
ADD_TRANSLATOR( wxT( "René Široký" ), wxS( "Czech (CS)" ) );
ADD_TRANSLATOR( wxT( "Jan Straka" ), wxS( "Czech (CS)" ) );
ADD_TRANSLATOR( wxT( "Jan Vykydal" ), wxS( "Czech (CS)" ) );
ADD_TRANSLATOR( wxS( "Mads Dyrmann" ), wxS( "Danish (DA)" ) );
ADD_TRANSLATOR( wxS( "Henrik Kauhanen" ), wxS( "Danish (DA)" ) );
ADD_TRANSLATOR( wxS( "Nick Østergaard" ), wxS( "Danish (DA)" ) );
ADD_TRANSLATOR( wxS( "Ettore Atalan" ), wxS( "German (DE)" ) );
ADD_TRANSLATOR( wxS( "Ivan Chuba" ), wxS( "German (DE)" ) );
ADD_TRANSLATOR( wxS( "Julian Daube" ), wxS( "German (DE)" ) );
ADD_TRANSLATOR( wxS( "Benedikt Freisen" ), wxS( "German (DE)" ) );
ADD_TRANSLATOR( wxS( "Jonathan Haas" ), wxS( "German (DE)" ) );
ADD_TRANSLATOR( wxT( "Mark Hämmerling" ), wxS( "German (DE)" ) );
ADD_TRANSLATOR( wxT( "Johannes Maibaum" ), wxS( "German (DE)" ) );
ADD_TRANSLATOR( wxT( "Henrik Kauhanen" ), wxS( "German (DE)" ) );
ADD_TRANSLATOR( wxT( "Mathias Neumann" ), wxS( "German (DE)" ) );
ADD_TRANSLATOR( wxT( "Ken Ovo" ), wxS( "German (DE)" ) );
ADD_TRANSLATOR( wxT( "Karl Schuh" ), wxS( "German (DE)" ) );
ADD_TRANSLATOR( wxT( "Dominik Wernberger" ), wxS( "German (DE)" ) );
ADD_TRANSLATOR( wxS( "Manolis Stefanis" ), wxS( "Greek (el_GR)" ) );
ADD_TRANSLATOR( wxS( "Athanasios Vlastos" ), wxS( "Greek (el_GR)" ) );
ADD_TRANSLATOR( wxS( "Milonas Kostas" ), wxS( "Greek (el_GR)" ) );
ADD_TRANSLATOR( wxS( "Michail Misirlis" ), wxS( "Greek (el_GR)" ) );
ADD_TRANSLATOR( wxS( "Aristeidis Kimirtzis" ), wxS( "Greek (el_GR)" ) );
ADD_TRANSLATOR( wxT( "Adolfo Jayme Barrientos" ), wxS( "Spanish (ES)" ) );
ADD_TRANSLATOR( wxT( "Roberto Fernandez Bautista" ), wxS( "Spanish (ES)" ) );
ADD_TRANSLATOR( wxT( "Iñigo Figuero" ), wxS( "Spanish (ES)" ) );
ADD_TRANSLATOR( wxT( "Augusto Fraga Giachero" ), wxS( "Spanish (ES)" ) );
ADD_TRANSLATOR( wxS( "Pedro Martin del Valle" ), wxS( "Spanish (ES)" ) );
ADD_TRANSLATOR( wxS( "Gabriel Martinez" ), wxS( "Spanish (ES)" ) );
ADD_TRANSLATOR( wxT( "Jose Perez" ), wxS( "Spanish (ES)" ) );
ADD_TRANSLATOR( wxT( "Iñigo Zuluaga" ), wxS( "Spanish (ES)" ) );
ADD_TRANSLATOR( wxT( "VicSanRoPe" ), wxS( "Spanish - Latin American (ES)" ) );
ADD_TRANSLATOR( wxT( "Ulices Avila Hernandez" ), wxS( "Spanish - Latin American (ES)" ) );
ADD_TRANSLATOR( wxT( "Vesa Solonen" ), wxS( "Finnish (FI)" ) );
ADD_TRANSLATOR( wxT( "Alex Gellen" ), wxS( "Finnish (FI)" ) );
ADD_TRANSLATOR( wxT( "Toni Laiho" ), wxS( "Finnish (FI)" ) );
ADD_TRANSLATOR( wxT( "Henrik Kauhanen" ), wxS( "Finnish (FI)" ) );
ADD_TRANSLATOR( wxT( "Toni Laiho" ), wxS( "Finnish (FI)" ) );
ADD_TRANSLATOR( wxT( "J. Lavoie" ), wxS( "Finnish (FI)" ) );
ADD_TRANSLATOR( wxT( "Purkka Koodari" ), wxS( "Finnish (FI)" ) );
ADD_TRANSLATOR( wxT( "Simo Mattila" ), wxS( "Finnish (FI)" ) );
ADD_TRANSLATOR( wxT( "Petri Niemelä" ), wxS( "Finnish (FI)" ) );
ADD_TRANSLATOR( wxT( "Ola Rinta-Koski" ), wxS( "Finnish (FI)" ) );
ADD_TRANSLATOR( wxT( "Riku Viitanen" ), wxS( "Finnish (FI)" ) );
ADD_TRANSLATOR( wxT( "Jean-Pierre Charras" ), wxS( "French (FR)" ) );
ADD_TRANSLATOR( wxT( "Marco Ciampa" ), wxS( "Italian (IT)" ) );
ADD_TRANSLATOR( wxT( "Subaru Arai" ), wxS( "Japanese (JA)" ) );
ADD_TRANSLATOR( wxT( "Ji Yoon Choi" ), wxS( "Japanese (JA)" ) );
ADD_TRANSLATOR( wxT( "Hidemichi Gotou" ), wxS( "Japanese (JA)" ) );
ADD_TRANSLATOR( wxT( "Kinichiro Inoguchi" ), wxS( "Japanese (JA)" ) );
ADD_TRANSLATOR( wxT( "Keisuke Nakao" ), wxS( "Japanese (JA)" ) );
ADD_TRANSLATOR( wxT( "Norio Suzuki" ), wxS( "Japanese (JA)" ) );
ADD_TRANSLATOR( wxT( "starfort-jp" ), wxS( "Japanese (JA)" ) );
ADD_TRANSLATOR( wxT( "Hiroshi Tokita" ), wxS( "Japanese (JA)" ) );
ADD_TRANSLATOR( wxT( "Kenta Yonekura" ), wxS( "Japanese (JA)" ) );
ADD_TRANSLATOR( wxT( "Kaoru Zenyouji" ), wxS( "Japanese (JA)" ) );
ADD_TRANSLATOR( wxT( "킴슨김랑기" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "Ji Yoon Choi" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "jeongsuAn" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "이상수" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "jehunseo" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "Uibeom Jung" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "박준언" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "방준영" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "박기정" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "hokim" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "김낙환" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "이기형" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "남우근" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "강명구" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "김용재" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "서범기" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "김세영" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "이윤성" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "김랑기" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "KwonHyeokbeom" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "Minsu Kim (0xGabriel)" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "pedrolinharesmoreira" ), wxS( "Korean (KO)" ) );
ADD_TRANSLATOR( wxT( "Henrik Kauhanen" ), wxS( "Lithuanian (LT)" ) );
ADD_TRANSLATOR( wxT( "Dainius Mazuika" ), wxS( "Lithuanian (LT)" ) );
ADD_TRANSLATOR( wxT( "Arend-Jan van Hilten" ), wxS( "Dutch (NL)" ) );
ADD_TRANSLATOR( wxT( "CJ van der Hoeven" ), wxS( "Dutch (NL)" ) );
ADD_TRANSLATOR( wxT( "Laurens Holst" ), wxS( "Dutch (NL)" ) );
ADD_TRANSLATOR( wxT( "Pim Jansen" ), wxS( "Dutch (NL)" ) );
ADD_TRANSLATOR( wxT( "Henrik Kauhanen" ), wxS( "Dutch (NL)" ) );
ADD_TRANSLATOR( wxT( "Tom Niesse" ), wxS( "Dutch (NL)" ) );
ADD_TRANSLATOR( wxT( "Christiaan Nieuwlaat" ), wxS( "Dutch (NL)" ) );
ADD_TRANSLATOR( wxT( "Arend-Jan van Hilten" ), wxS( "Dutch (NL)" ) );
ADD_TRANSLATOR( wxT( "Bas Wijnen" ), wxS( "Dutch (NL)" ) );
ADD_TRANSLATOR( wxT( "Jarl Gjessing" ), wxS( "Norwegian (NO)" ) );
ADD_TRANSLATOR( wxT( "Henrik Kauhanen" ), wxS( "Norwegian (NO)" ) );
ADD_TRANSLATOR( wxT( "Allan Nordhøy" ), wxS( "Norwegian (NO)" ) );
ADD_TRANSLATOR( wxT( "Petter Reinholdtsen" ), wxS( "Norwegian (NO)" ) );
ADD_TRANSLATOR( wxT( "Håvard Syslak" ), wxS( "Norwegian (NO)" ) );
ADD_TRANSLATOR( wxT( "Ivan Chuba" ), wxS( "Polish (PL)" ) );
ADD_TRANSLATOR( wxT( "Kerusey Karyu" ), wxS( "Polish (PL)" ) );
ADD_TRANSLATOR( wxT( "Krzysztof Kawa" ), wxS( "Polish (PL)" ) );
ADD_TRANSLATOR( wxT( "Eryk Michalak" ), wxS( "Polish (PL)" ) );
ADD_TRANSLATOR( wxT( "Filip Piękoś" ), wxS( "Polish (PL)" ) );
ADD_TRANSLATOR( wxT( "Mark Roszko" ), wxS( "Polish (PL)" ) );
ADD_TRANSLATOR( wxT( "Mateusz Skowroński" ), wxS( "Polish (PL)" ) );
ADD_TRANSLATOR( wxT( "Jan Sobków" ), wxS( "Polish (PL)" ) );
ADD_TRANSLATOR( wxT( "Grzegorz Szymaszek" ), wxS( "Polish (PL)" ) );
ADD_TRANSLATOR( wxT( "ZbeeGin" ), wxS( "Polish (PL)" ) );
ADD_TRANSLATOR( wxT( "Augusto Fraga Giachero" ), wxS( "Brazilian Portuguese (PT_BR)" ) );
ADD_TRANSLATOR( wxT( "Wellington Terumi Uemura" ), wxS( "Brazilian Portuguese (PT_BR)" ) );
ADD_TRANSLATOR( wxT( "Augusto Fraga Giachero" ), wxS( "Portuguese (PT)" ) );
ADD_TRANSLATOR( wxT( "Renie Marquet" ), wxS( "Portuguese (PT)" ) );
ADD_TRANSLATOR( wxT( "Rafael Silva" ), wxS( "Portuguese (PT)" ) );
ADD_TRANSLATOR( wxT( "ssantos" ), wxS( "Portuguese (PT)" ) );
ADD_TRANSLATOR( wxT( "Igor Plyatov" ), wxS( "Russian (RU)" ) );
ADD_TRANSLATOR( wxT( "Дмитрий Дёмин" ), wxS( "Russian (RU)" ) );
ADD_TRANSLATOR( wxT( "Andrey Fedorushkov" ), wxS( "Russian (RU)" ) );
ADD_TRANSLATOR( wxT( "Eldar Khayrullin" ), wxS( "Russian (RU)" ) );
ADD_TRANSLATOR( wxT( "Konstantin Baranovskiy" ), wxS( "Russian (RU)" ) );
ADD_TRANSLATOR( wxT( "Hanna Breisand" ), wxS( "Swedish (SV)" ) );
ADD_TRANSLATOR( wxT( "Axel Henriksson" ), wxS( "Swedish (SV)" ) );
ADD_TRANSLATOR( wxT( "Richard Jonsson" ), wxS( "Swedish (SV)" ) );
ADD_TRANSLATOR( wxT( "Henrik Kauhanen" ), wxS( "Swedish (SV)" ) );
ADD_TRANSLATOR( wxT( "Allan Nordhøy" ), wxS( "Swedish (SV)" ) );
ADD_TRANSLATOR( wxT( "Elias Sjögreen" ), wxS( "Swedish (SV)" ) );
ADD_TRANSLATOR( wxT( "Boonchai Kingrungped" ), wxS( "Thai (TH)" ) );
ADD_TRANSLATOR( wxT( "Artem" ), wxS( "Ukrainian (UK)" ) );
ADD_TRANSLATOR( wxT( "Ivan Chuba" ), wxS( "Ukrainian (UK)" ) );
ADD_TRANSLATOR( wxT( "Stanislav Kaliuk" ), wxS( "Ukrainian (UK)" ) );
ADD_TRANSLATOR( wxT( "Alexsandr Kuzemko" ), wxS( "Ukrainian (UK)" ) );
ADD_TRANSLATOR( wxT( "Andrii Shelestov" ), wxS( "Ukrainian (UK)" ) );
ADD_TRANSLATOR( wxT( "向阳阳" ), wxS( "Simplified Chinese (zh_CN)" ) );
ADD_TRANSLATOR( wxT( "欠陥電気" ), wxS( "Simplified Chinese (zh_CN)" ) );
ADD_TRANSLATOR( wxT( "Liu Guang" ), wxS( "Simplified Chinese (zh_CN)" ) );
ADD_TRANSLATOR( wxT( "Taotieren" ), wxS( "Simplified Chinese (zh_CN)" ) );
ADD_TRANSLATOR( wxT( "Dingzhong Chen" ), wxS( "Simplified Chinese (zh_CN)" ) );
ADD_TRANSLATOR( wxT( "David Chen" ), wxS( "Simplified Chinese (zh_CN)" ) );
ADD_TRANSLATOR( wxT( "Eric" ), wxS( "Simplified Chinese (zh_CN)" ) );
ADD_TRANSLATOR( wxT( "Hubert Hu" ), wxS( "Simplified Chinese (zh_CN)" ) );
ADD_TRANSLATOR( wxT( "Pinpang Liao" ), wxS( "Simplified Chinese (zh_CN)" ) );
ADD_TRANSLATOR( wxT( "Rigo Ligo" ), wxS( "Simplified Chinese (zh_CN)" ) );
ADD_TRANSLATOR( wxT( "Huanyin Liu" ), wxS( "Simplified Chinese (zh_CN)" ) );
ADD_TRANSLATOR( wxT( "Zhen Sun" ), wxS( "Simplified Chinese (zh_CN)" ) );
ADD_TRANSLATOR( wxT( "Jason Tan" ), wxS( "Simplified Chinese (zh_CN)" ) );
ADD_TRANSLATOR( wxT( "yangyangdaji" ), wxS( "Simplified Chinese (zh_CN)" ) );
ADD_TRANSLATOR( wxT( "Li Yidong" ), wxS( "Simplified Chinese (zh_CN)" ) );
ADD_TRANSLATOR( wxT( "Tian Yunhao" ), wxS( "Simplified Chinese (zh_CN)" ) );
ADD_TRANSLATOR( wxT( "Lao Zhu" ), wxS( "Simplified Chinese (zh_CN)" ) );
ADD_TRANSLATOR( wxT( "撒景賢" ), wxS( "Traditional Chinese (zh_TW)" ) );
ADD_TRANSLATOR( wxT( "David Chen" ), wxS( "Traditional Chinese (zh_TW)" ) );
ADD_TRANSLATOR( wxT( "pon dahai" ), wxS( "Traditional Chinese (zh_TW)" ) );
ADD_TRANSLATOR( wxT( "kai chiao chuang" ), wxS( "Traditional Chinese (zh_TW)" ) );
ADD_TRANSLATOR( wxT( "William Lin" ), wxS( "Traditional Chinese (zh_TW)" ) );
ADD_TRANSLATOR( wxT( "Taotieren" ), wxS( "Traditional Chinese (zh_TW)" ) );
ADD_TRANSLATOR( wxT( "Li Yidong" ), wxS( "Traditional Chinese (zh_TW)" ) );
ADD_TRANSLATOR( wxT( "Remy Halvick" ), wxS( "Other" ) );
ADD_TRANSLATOR( wxS( "David J S Briscoe" ), wxS( "Other" ) );
ADD_TRANSLATOR( wxS( "Dominique Laigle" ), wxS( "Other" ) );
ADD_TRANSLATOR( wxS( "Paul Burke" ), wxS( "Other" ) );
2023-01-19 16:28:31 +00:00
// Program credits for library team
2024-01-20 14:46:40 +00:00
#define LIBRARIANS _( "Librarian Team" )
#define ADD_LIBRARIAN( name ) aInfo.AddLibrarian( new CONTRIBUTOR( name, LIBRARIANS ) )
2024-01-20 14:46:40 +00:00
2023-01-19 16:28:31 +00:00
// Lead librarians
ADD_LIBRARIAN( wxT( "Carsten Presser") );
2023-01-19 16:28:31 +00:00
// Active librarians
ADD_LIBRARIAN( wxT( "Geries AbuAkel" ) );
ADD_LIBRARIAN( wxT( "Patrick Baus" ) );
ADD_LIBRARIAN( wxT( "John Beard" ) );
ADD_LIBRARIAN( wxT( "Jeremy Boynes" ) );
ADD_LIBRARIAN( wxT( "Greg Cormier" ) );
ADD_LIBRARIAN( wxT( "Jan Sebastian Götte (jaseg)" ) );
ADD_LIBRARIAN( wxT( "Petr Hodina" ) );
ADD_LIBRARIAN( wxT( "Mikkel Jeppesen" ) );
ADD_LIBRARIAN( wxT( "Aristeidis Kimirtzis" ) );
ADD_LIBRARIAN( wxT( "Brandon Kirisaki" ) );
ADD_LIBRARIAN( wxT( "Uli Köhler" ) );
ADD_LIBRARIAN( wxT( "Andrew Lutsenko" ) );
ADD_LIBRARIAN( wxT( "Jorge Neiva" ) );
ADD_LIBRARIAN( wxT( "Valentin Ochs" ) );
ADD_LIBRARIAN( wxT( "Carlos Nieves Ónega" ) );
ADD_LIBRARIAN( wxT( "Dash Peters" ) );
ADD_LIBRARIAN( wxT( "Armin Schoisswohl" ) );
ADD_LIBRARIAN( wxT( "Martin Sotirov" ) );
ADD_LIBRARIAN( wxT( "Kliment Yanev" ) );
2023-01-19 16:28:31 +00:00
// Former librarians
ADD_LIBRARIAN( wxT( "Christian Schlüter" ) );
ADD_LIBRARIAN( wxT( "Rene Poeschl" ) );
ADD_LIBRARIAN( wxT( "Antonio Vázquez Blanco " ) );
ADD_LIBRARIAN( wxT( "Daniel Giesbrecht" ) );
ADD_LIBRARIAN( wxT( "Otavio Augusto Gomes" ) );
ADD_LIBRARIAN( wxT( "herostrat" ) );
ADD_LIBRARIAN( wxT( "Diego Herranz" ) );
ADD_LIBRARIAN( wxT( "Joel Guittet" ) );
ADD_LIBRARIAN( wxT( "Chris Morgan" ) );
ADD_LIBRARIAN( wxT( "Thomas Pointhuber" ) );
ADD_LIBRARIAN( wxT( "Evan Shultz" ) );
ADD_LIBRARIAN( wxT( "Bob Cousins" ) );
ADD_LIBRARIAN( wxT( "Nick Østergaard" ) );
ADD_LIBRARIAN( wxT( "Oliver Walters" ) );
#define MODELS_3D_CONTRIBUTION _( "3D models" )
#define SYMBOL_LIB_CONTRIBUTION _( "Symbols" )
#define FOOTPRINT_LIB_CONTRIBUTION _( "Footprints" )
2023-01-17 12:42:30 +00:00
aInfo.AddLibrarian( new CONTRIBUTOR( wxS( "Scripts by Maui" ),
2024-01-20 14:46:40 +00:00
MODELS_3D_CONTRIBUTION,
wxS( "https://gitlab.com/kicad/libraries/kicad-packages3D-generator" ) ) );
2023-01-17 12:42:30 +00:00
aInfo.AddLibrarian( new CONTRIBUTOR( wxS( "GitLab contributors" ),
2024-01-20 14:46:40 +00:00
MODELS_3D_CONTRIBUTION,
wxS( "https://gitlab.com/kicad/libraries/kicad-packages3D/-/graphs/master" ) ) );
2023-01-17 12:42:30 +00:00
aInfo.AddLibrarian( new CONTRIBUTOR( wxS( "GitLab contributors" ),
2024-01-20 14:46:40 +00:00
SYMBOL_LIB_CONTRIBUTION,
wxS( "https://gitlab.com/kicad/libraries/kicad-symbols/-/graphs/master" ) ) );
2023-01-17 12:42:30 +00:00
aInfo.AddLibrarian( new CONTRIBUTOR( wxS( "Scripts by Thomas Pointhuber" ),
2024-01-20 14:46:40 +00:00
FOOTPRINT_LIB_CONTRIBUTION,
wxS( "https://gitlab.com/kicad/libraries/kicad-footprint-generator" ) ) );
2023-01-17 12:42:30 +00:00
aInfo.AddLibrarian( new CONTRIBUTOR( wxS( "GitLab contributors" ),
2024-01-20 14:46:40 +00:00
FOOTPRINT_LIB_CONTRIBUTION,
wxS( "https://gitlab.com/kicad/libraries/kicad-footprints/-/graphs/master" ) ) );
// Program credits for icons
#define ICON_CONTRIBUTION _( "Icons" )
aInfo.AddArtist( new CONTRIBUTOR( wxT( "Aleksandr Zyrianov" ), ICON_CONTRIBUTION ) );
aInfo.AddArtist( new CONTRIBUTOR( wxT( "Anda Subero" ), ICON_CONTRIBUTION ) );
aInfo.AddArtist( new CONTRIBUTOR( wxT( "Iñigo Zuluaga" ), ICON_CONTRIBUTION ) );
aInfo.AddArtist( new CONTRIBUTOR( wxS( "Fabrizio Tappero" ), ICON_CONTRIBUTION ) );
// Program credits for package developers.
2024-01-20 14:46:40 +00:00
#define PACKAGE_DEVS _( "Package Developers" )
aInfo.AddPackager( new CONTRIBUTOR( wxS( "Steven Falco" ), PACKAGE_DEVS ) );
aInfo.AddPackager( new CONTRIBUTOR( wxS( "Johannes Maibaum" ), PACKAGE_DEVS ) );
aInfo.AddPackager( new CONTRIBUTOR( wxS( "Jean-Samuel Reynaud" ), PACKAGE_DEVS ) );
aInfo.AddPackager( new CONTRIBUTOR( wxS( "Bernhard Stegmaier" ), PACKAGE_DEVS ) );
aInfo.AddPackager( new CONTRIBUTOR( wxS( "Adam Wolf" ) , PACKAGE_DEVS ) );
aInfo.AddPackager( new CONTRIBUTOR( wxT( "Nick Østergaard" ), PACKAGE_DEVS ) );
2010-09-03 14:33:09 +00:00
}
void ShowAboutDialog( EDA_BASE_FRAME* aParent )
2010-09-03 14:33:09 +00:00
{
ABOUT_APP_INFO info;
buildKicadAboutBanner( aParent, info );
2010-09-03 14:33:09 +00:00
DIALOG_ABOUT dlg( aParent, info );
dlg.ShowModal();
2010-09-03 14:33:09 +00:00
}
///////////////////////////////////////////////////////////////////////////////
/// Helper functions
///////////////////////////////////////////////////////////////////////////////
/**
* Wrap \a aUrl with a HTML anchor tag containing a hyperlink text reference
2010-09-03 14:33:09 +00:00
* to form a HTML hyperlink.
*
* @param aUrl the url that will be embedded in an anchor tag containing a hyperlink reference
* @param aDescription the optional describing text that will be represented as a hyperlink.
2010-09-03 14:33:09 +00:00
* If not specified the url will be used as hyperlink.
* @return a HTML conform hyperlink like <a href='url'>description</a>
*/
static wxString HtmlHyperlink( const wxString& aUrl, const wxString& aDescription )
2010-09-03 14:33:09 +00:00
{
wxString hyperlink = wxEmptyString;
if( aDescription.IsEmpty() )
2023-01-17 12:42:30 +00:00
hyperlink << wxS( "<a href='" ) << aUrl << wxS( "'>" ) << aUrl << wxS( "</a>" );
2010-09-03 14:33:09 +00:00
else
2023-01-17 12:42:30 +00:00
hyperlink << wxS( "<a href='" )<< aUrl << wxS( "'>" ) << aDescription << wxS( "</a>" );
2010-09-03 14:33:09 +00:00
return hyperlink;
}
/**
* Create an HTML newline character sequence of \a aCount.
2010-09-03 14:33:09 +00:00
*
* @param aCount the number of HTML newline tags to concatenate, default is to return just
* one <br> tag.
2010-09-03 14:33:09 +00:00
* @return the concatenated amount of HTML newline tag(s) <br>
*/
static wxString HtmlNewline( const unsigned int aCount )
2010-09-03 14:33:09 +00:00
{
wxString newlineTags = wxEmptyString;
for( size_t i = 0; i<aCount; ++i )
2023-01-17 12:42:30 +00:00
newlineTags << wxS( "<br>" );
2010-09-03 14:33:09 +00:00
return newlineTags;
}