diff --git a/.gitattributes b/.gitattributes index 50ca329f2..bbdbb3b93 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,112 @@ +# Handle line endings automatically for files detected as text +# and leave all files detected as binary untouched. +* text=auto + +# +# The above will handle all files NOT found below +# +# These files are text and should be normalized (Convert crlf => lf) + +# Source files +*.c text +*.cc text +*.cxx text +*.cpp text +*.c++ text +*.hpp text +*.h text +*.h++ text +*.hh text +*.lua text +*.pxd text +*.py text +*.py3 text +*.pyw text +*.pyx text +*.pl text +*.pm text +*.sln text eol=crlf +*.csproj text eol=crlf +*.vbproj text eol=crlf +*.vcxproj text eol=crlf +*.vcproj text eol=crlf +*.dbproj text eol=crlf +*.fsproj text eol=crlf +*.lsproj text eol=crlf +*.wixproj text eol=crlf +*.modelproj text eol=crlf +*.sqlproj text eol=crlf +*.wmaproj text eol=crlf +*.xproj text eol=crlf +*.props text eol=crlf +*.filters text eol=crlf +*.vcxitems text eol=crlf *.sh eol=lf + +# Compiled Object files +*.slo binary +*.lo binary +*.o binary +*.obj binary + +# Precompiled Headers +*.gch binary +*.pch binary + +# Compiled Dynamic libraries +*.so binary +*.dylib binary +*.dll binary + +# Compiled Static libraries +*.lai binary +*.la binary +*.a binary +*.lib binary + +# Executables +*.exe binary +*.out binary +*.app binary + +# Binary files +*.db binary +*.p binary +*.pkl binary +*.pyc binary +*.pyd binary +*.pyo binary + +# Documents +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain +*.md text +*.adoc text +*.textile text +*.mustache text +*.csv text +*.tab text +*.tsv text +*.sql text + +# Graphics +*.png binary +*.jpg binary +*.jpeg binary +*.gif binary +*.tif binary +*.tiff binary +*.ico binary +# SVG treated as an asset (binary) by default. If you want to treat it as text, +# comment-out the following line and uncomment the line after. +*.svg binary +#*.svg text +*.eps binary diff --git a/CMakeLists.txt b/CMakeLists.txt index 08f836bbe..f5629bc2d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ set(VERSION_REVISION "0") set(VERSION_SUFFIX $ENV{OPENTX_VERSION_SUFFIX}) set(VERSION_FAMILY ${VERSION_MAJOR}.${VERSION_MINOR}) set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}${VERSION_SUFFIX}) -set(SDCARD_REVISION "0008") +set(SDCARD_REVISION "0010") set(SDCARD_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}V${SDCARD_REVISION}) cmake_minimum_required(VERSION 2.8) @@ -21,6 +21,9 @@ endif() if(POLICY CMP0054) cmake_policy(SET CMP0054 NEW) endif() +if(POLICY CMP0058) + cmake_policy(SET CMP0058 NEW) # for ninja +endif() set(CMAKE_COLOR_MAKEFILE ON) @@ -59,6 +62,7 @@ if(WIN32) list(APPEND CMAKE_PREFIX_PATH "${WIN_EXTRA_LIBS_PATH}" "${WIN_EXTRA_LIBS_PATH}/SDL") # hints for FindSDL endif() +find_package(Qt5Core) find_package(Qt5Widgets) find_package(Qt5Xml) find_package(Qt5LinguistTools) @@ -66,11 +70,37 @@ find_package(Qt5PrintSupport) find_package(Qt5Multimedia) find_package(Qt5Svg) -if(Qt5Widgets_FOUND) - message(STATUS "Qt Version: ${Qt5Widgets_VERSION}") +if(Qt5Core_FOUND) + message(STATUS "Qt Version: ${Qt5Core_VERSION}") + + ### Get locations of Qt binary executables & libs (libs are for distros, not for linking) + # first set up some hints + get_target_property(QtCore_LOCATION Qt5::Core LOCATION) + get_filename_component(qt_core_path ${QtCore_LOCATION} PATH) + if(APPLE) + get_filename_component(qt_core_path "${qt_core_path}/.." ABSOLUTE) + endif() + + set(QT_LIB_DIR ${qt_core_path} CACHE PATH "Path to Qt libraries (.dll|.framework|.so).") + find_path(QT_BIN_DIR NAMES "qmake" "qmake.exe" HINTS "${CMAKE_PREFIX_PATH}/bin" "${qt_core_path}/../bin" "${qt_core_path}" DOC "Path to Qt binaries (qmake, lupdate, etc.).") + find_program(QT_QMAKE_EXECUTABLE qmake HINTS "${QT_BIN_DIR}" DOC "Location of qmake program.") + find_program(QT_LUPDATE_EXECUTABLE lupdate HINTS "${QT_BIN_DIR}" DOC "Location of Qt's 'lupdate' program for updating translation files.") + + # Try to find Qt translations + if(QT_QMAKE_EXECUTABLE) + execute_process( + COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_TRANSLATIONS + OUTPUT_VARIABLE qt_translations_hint + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + endif() + find_path(QT_TRANSLATIONS_DIR NAMES "qt_en.qm" HINTS "${qt_translations_hint}" DOC "Path to prebuilt Qt translations (qt_*.qm).") + + ### Common definitions for the Qt-based apps list(APPEND APP_COMMON_DEFINES -DSIMU) list(APPEND APP_COMMON_DEFINES -DQXT_STATIC) list(APPEND APP_COMMON_DEFINES -DQT_USE_QSTRINGBUILDER) # more efficient QString construction using % operator + if(APP_CUSTOM_DBG_HANDLER) # provide full qDebug log context to our custom handler. This may also affect libsimulator, which is why it is here list(APPEND APP_COMMON_DEFINES -DQT_MESSAGELOGCONTEXT) @@ -84,6 +114,7 @@ if(Qt5Widgets_FOUND) else() list(APPEND APP_COMMON_DEFINES -DAPP_DBG_HANDLER_ENABLE=0) endif() + else() message(WARNING "Qt not found! Companion and Simulator builds disabled.") endif() @@ -97,7 +128,7 @@ if(NOT WIN32) endif() endif() -if(Qt5Widgets_FOUND OR FOX_FOUND) +if(Qt5Core_FOUND OR FOX_FOUND) set(SDL_BUILDING_LIBRARY YES) # this prevents FindSDL from appending SDLmain lib to the results, which we don't want find_package("SDL") if(SDL_FOUND) @@ -136,6 +167,6 @@ endif() add_subdirectory(${RADIO_SRC_DIRECTORY}) -if(Qt5Widgets_FOUND) +if(Qt5Core_FOUND) add_subdirectory(${COMPANION_SRC_DIRECTORY}) endif() diff --git a/CREDITS.txt b/CREDITS.txt index 202b88a8a..0335dc652 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1,3 +1,4 @@ +[Main developers] Bertrand Songis (bsongis) André Bernet (kilrah) Michael Blandford @@ -5,7 +6,13 @@ Damjan Adamic (projectkk2glider) Franck Aguerre (jivarofad) Romolo Manfredini (romoloman) Martin Hotař (mhotar) +Maxim (Max) Paperno (mpaperno) +Arne Schwabe (schwabe) +[Translators] +[fr] Sebastien Charpentier (LapinFou) + +[Other contributors] Rob Thomson Bryan J. Rentoul (gruvin) Cameron Weeks (th9xer) @@ -17,3 +24,1195 @@ Karl Szmutny Michal Hlavinka Pat Mackenzie Michael Byrne + +[Companies and projects who have donated to OpenTX] +FrSky (monthly) +Aloft Hobbies +Jonathan Modellismo +WsTech +Aviomotive +BoltRC +Aerial Tech Hobbies +LitePilots +David Ankers (OpenPilot) +3D Robotics +RC Studio (monthly) +Craft & Theory (monthly) +OpenTX Manuals by Lothar Thole + +[People who have donated to OpenTX] +Mario Sette +Felice Baratto +Alessandro Mari +Gianpiero Spontina +Ingo Kuzniak +Hans-Åke Rahm +Tamas Varga +Thomas Gregg +Didier Christien +Alain Pinard +Sergio Melas +Paul Montenot +Chris Guy +Adrien Gravouille +Thomas Black +Marc Lucht +Zdenek Trojanek +Martin Hotar +Stefan Grundevik +Fabio Eboli +Federico Zotti +Albin Esbjörnsson +Kilian Hüttenhofer +Stephen Stough +Adilson Oliveira +Robert Saint Marie +Tad Leake +Andreas Weitl +Chan Lofland +Dirk Kasten +Denisov Alexander +Timo Varppee +Ondrej Hatapka +Valérie Billon +R. Scott Page +Johan Cronje +Renato Aranghelovici +Jeffrey Irvin +Kenneth Crump +Damjan Adamic +Martin Wilson +John Holdsworth +Daniel Schwartz +Dean Church (monthly) +Michael Halse +David Mark +Ted Moss +Jim Wagner +Nicola Porzi +Michael Halse +Chewytm +Espen Solbu +Mike Frizell +Bruce Jones +Stefano Airaghi +Dan Eeckhout +Alex Calderhead +Leonard MacKey +Heung Jin Choi +Mike Retterer +Keith Wood +Viljo Liukku +Eric Beier +Burt Pickard-Richardson +Helmut Renz +Rick Harms +Vincenzo Vavala +Patricia Martin +Harald Klein +Carl Petersen +Douglas Burkett +Clifford Evans +Teodor Yantchev +Jarad Berkman +Christian Schulz +Gregory J Shepherd +Michael Shellim +Ming Wang +Bernard Lukaschek +Nigel Chippindale +Mike Perkins +Ted Hammond +David Beanland +Bernd Koehler +Frédéric Duflos +Dave Fasken +Heinrich Illig +Michael Collins +Michael Manning +Craig Lorentz +André Lasseret +Felipe Alexandre de Oliveira +Brian Harris +Philippe Herbots +Rainer Nelte +Franck Bernhard +Erhard Werner +Stig Jøran Moen +Keith Hertzog +Christophe Dauvergne +Tauno Rautakorpi +Sven Assmus +Paul Dittman +Mike Matheny +Cheryl Wynne +Emay Toha +Don Nolder +André Lasseret +Filip Lowette +Arnaldo Gabella +Fiorenzo Agnelli +Michele Villa +Christophe Rodriguez +Larisa Filocamo +Hartmut Sahm +Åke Brodin +Ted Moss +Filippos Tigarakis +Chewytm +Eric Burdis +Nigel Chippindale +Michael Deasy +Stephen Stough +Kenneth Lilja (monthly) +Robert Jero +Gary Bancroft +Robert Cotsford +NorthSide +George Constandinides +Robert Schonk Jr +Kevin Berkefeld +Peter Webster +Mike Matheny +Martin Sniedze +Fernando Rimoldi +Sidney Fisher +John Rodgers +Ed Pare +Thomas Kilduff +Robert Ferguson +Bryan Green +Kevin Berkefeld +Julien Michel +Krittikun Chiraphanda +Douglas Law +Alberto Scotti +Oliver Kunkel +D. Joseph Frazier +Heiko Polig +Andrew Fernie +Marco Lange +Nick McMillan +Michel Baily (monthly) +Patrick Mullen +Scott Campbell +Erich Roeder +Wayne Davy +Michael Fontenot +Willie Swanepoel +Satoru Sasaki +Tyler Darby +Nicholas Crego +Johan Moelich +Timo Esser +Brian Paddock +Jean Pierre Parisy +Norbert Martsch +Jean-Marie Guitard +Tilman Baumann +Fred Larssen +Ari Aalto +Robert Sams +Kirk Robertson +John Koontz +Jeffery Golias +Paul Robinson +Dave Matison +Mike Matheny +Pino Agostino +Graham Boucher +Nelson Noura +Joel Allamy +Philip David Martin +Sean Stephen +Bruce Mackay +Blake Spilman +Timothy Pelletier +Glen Roe (ShowMaster) +Jan Van Ooteghem +Lawrence Christensen +Leo Duflou +Bruce Wood +Arnd Feige +Tauno Rautakorpi +Steve Coley +Stefan Kiendl +Gregory Nuspel +Mitchell Brenner +Ronnnie DePrez +Ferenc Koller +Robert Sessler +Didier Lanot +Rodney Hunt +Steve Bernard +Paul Nazaroff +Gordon Ernenputsch +Ksamak +Marc Gittelman +David Poole +Ralph Sauer +Karl-Heinz Gansel +Michels Bernhard +Thomas Demmelbauer +Felice Baratto +Michael Halse +Horst Kampen +Ian Gough +Matthew Brett +Lexington S Morley +Clemens Drews +Axel Stöckle +Roberto Orsello +Richard Ruck +Hugh Caldwell +Christian Marauli +Albin Esbjörnsson +Per Esbjörnsson +Bernd Hohmann +Sławomir Juszczak +Stephen Henderson +David Morgan +Aloft Hobbies +Netanel Hobara +Cameron Galipo +Doug Schafer +Pietro Rossin +Earl Killingsworth +Victor B Wright +Terry McKinley +Марков Алексей +Offer Shmuely +Ian Lobley +Stéphane Fortas +Peter Mitrik +Thomas Majewski +ANF King +Henrik Hammarström +Kenneth Lilja +R Wells +Uwe Jordt +Harald Wilczak +Bernhard Lohmann +Ferenc Koller +Robert Ferguson +Daniel Byers +Tyler Darby +Miguel Villalpando +Kim Dong Hoon +Terry McKinley +Walter Bell +Clinton Linck +Josep Clodas Sola +Thierry Martin +Peter Mauro +Mitchell Brenner +Yak +Lluis Bullich Rañe +Steffen Rohr +Eric Jacquin +Harvest Lane +Ville Kuvaja +DK-System +Heinz Vogel +Heung Jin Choi +MMJS van der Helm +Dan Neelands +Yashiro Masayuki +Isaac Sloan +Harold Baird +Roy Bender +Bradley Murchie +Maximilian Süß +Dean Jansa +Ronald Donker +Paul Oldenkamp +Dietmar Drees +Bradley Murchie +Richard Fahie +James Kaufman +Henry Deucker +Christian Fuchs +Arold Reinders +Robert Miller +Mark Gaskievicz +Roland Müller +Frank Gewalt +Remi Viard +Reginald H Millsom +Pierluigi Sommaruga +A Harris +Stefan Grunenberg +Francisco Gutierrez Muñoz +Steve Coley +Sean Cull +Roberto Orsello +David Finger +Jean-Marie Oddo +Mike Matheny +Glen Roe (Showmaster) +Arron Bates +Tim Spurr +Daniel Morgan +Trent Ready +Mark Maskiell +Robert Crockford +Mark Illum +David McGuire +Martyn Coles +Jose Sobral +Heung Jin Choi +Tomasz Janiak +Fabien Gagné +Micha Ronen +Albert Blondin +Klaus Schuebel +Evening Shade Pottery +Thomas Kilduff +Sven Assmus +Markus Eberl +Nicholas Field +Harald Wilczak +John Grepps +Anthony Burbidge +Sherba Baine +Gordon Evans +Fred Figge +Uwe Kuehn +David Beatty +Aaron Stringer +Alan J Wasserman +Wolfgang Rauser +Samuel Cook +Friedrich Ipolt +Barrington Cole +Charles Lakins +Thos. O'Meara Photography +Adam Chevalier +Mike Mulligan +Serge Michaux +Robert Young +Wilco Hijink +Roy Nixon +Lexington S Morley +Daryl Dacko +Beat Zurflueh +Piotr Kundu +Kevin Berkefeld +Tomasz Klys +Mirco Didone' +Christoph Schroeter +Zdenek Trojanek +Bryan Anderson +Kamco Enterprises +Robert Bates +Robert Brown +Dennis Marinus +Ronald Van Putte +Thomas Kvitle Jenssen +Patrick Tuxbury +Istvan Magi +Sasaki Satoru +David Laburthe +Vit Jelinek +Pablo Gomez Martinez +Alan Thoren +Jack Clodfelter +William Simon +James Houck +Peter Fithern +Thomas Svedman +TechFixPros +Rafael Eric Suarez Nordlow +Colin Rycroft +Emanuel Stassar +Michael Gregory +Robert Russell +Felix Kaiser +Joshua Bardwell +Davd Goodall +Leonard MacKey +Miles Kelly +Sergio Robledo +Mikael Wallbäck +Daniel Malcman +Paul Dittman +Attilio Rausse +Sidney Gates +Andrea Montefusco +Paul Luby +Donald L Webster +Kenneth Frehafer +Matthias Hase +Markus Wolf +Andrew Fazio +Stefan Künst +Stephen Adams +Tauno Rautakorpi +Frank Houvenaghel +George Neusse +Andreja Rusjakovski +Axel Stöckle +Erwin Störrle +Rodger Hopper +Fernando Cesar +Jonathan Gillis +DK-System +Lexington S Morley +Bernd Koehler +Davis RC +Pete Johnson +Patricia Martin +Florian Tschacher +Brian Spearing +Craig Hall +Joseph Case +Harald Klein +Robert Crockford +Chris Boultinghouse +Kitsew +Georgios Papadopoulos +Fourmost Products +Dennis Miller +Dave Matison +Maximilian Radig +Juan Rodriguez +Robert Sessler +John Murray +Martin Sniedze +David Poole +Manfred Delakowitz +Martijn Kruissen +Jörgen Norman +Nathan Kinney +John Godden +Larry Roper +Mike Frizell +Daniel Pospolita +Peter Herz +Don Mondrik +Paul Fram +Charles Knight +Matthew Adams +Kenneth Reed +Gary Wild +Christof Ramm +Bruno Bedard +Salih Samim Aydin +Alexander Pils +Andrew Scerbina +Donovan Bodishbaugh +Ray Dunn +Burt Pickard-Richardson +Robert Ferguson +CY Enterprise +Michel Stathakis Neto +Beat Zurflueh +Portstate Pty Ltd +Jens Hoffmann +Ricardo Santos +Jean-Francois Le Breton +Michael Deasy +Anindya Mukerjee +Emay Toha +Kamco Enterprises +Peter Mueller +Giovanni Trentini +Cecil Porter +Robert Canavan +Greg Higginbottom +Tim Walker +Spis Ltd/TurboNote +Patricia Cox +Matthew Lukes +Sabine Witte +Phillip Perry +Beat Zurflueh +Russell Stutzman +Dietmar Drees +Kenneth Ward +Jens Lochmüller +Anthony Witham +Peter Hauke +Arizona Action Photos +Francis F Dale +Willie Swanepoel +Edward Hauser +Adilson Oliveira +Joseph Ordille +Michael Shellim +Teddie Holmes +Alexandre Rault +Eric Albin +Lukas Kliment +Bernard Philippe +Bernard Delpy +Didier Klein +Arnaldo Guedes +Cyberauto Systems +John Alsbrooks +John Kearney +Christopher Borden +Marc Virgilio Ricci +Frederick Davie +Jürgen Enders +Terrence Pitts +Thomas Sandner +Marco Coltorti +Harald Wilczak +Rodney Lorimor +Richard Davis +Stephen Palmer +Michael Napolitan +Joshua Bardwell +Fred Dawson +Jim Wagner +Peter Johnson +Fredrik Lewerth +Arvin Stenersen +Daniel Morgan +Roy Nixon +Joachim Blunck +Karl-Heinz Gansel +Monrovia Mountain Enterprises +Alessandro Villa +Jan-Åke Nilsson +Matthias Rei +DVR Solutions BV +Bertrand Condevaux Lanloy +Henri Mirra +Aurélien Planiol +Kevin Caldwell +Andrew Garello +Tomasz Maziarz +Russell Flack +Fernando Rimoldi +Greg Reid +Dietmar Drees +Holger Landwehr +Arno Loehdorf +Boon Sripattha +Patrik Åkerfeldt +Alonzo Fretwell +Renjith Chandrasekharan +Ruben Gomez Hernandez +Michael Gardner +Judith Green +Timo Ruppell +John Lipscomb +Norbert Wenke +Erik Frieberg +Raimo Ruotsalainen +Brian Harris +Sebastian Blüml +Efisio Maxia +Jeff Theobald +Anthony Rizzo +Rodney Huddleston +Dietmar Drees +Jürgen Monden +David Morgan +Andrew Fernie +Donald Burke +Ronald Donker +Fredie Singh +Patrizio Simoncini +Harald Gabler +Michael Brown +Julien Gérard +Alexandre d'Alton +Peter Mergaerts +Jan Houwers +Christian Grandjean +Roger Bergevin +NorthSide +Sigmund Martinsen +Lionel Lafraise +Gisli Ofeigsson +The Gruvin9x Project +Manuel McLure +Fernando Rimoldi +Hiltenkamp Stephan +Sandeep Kishore Jain +Greg Parker +Norman Maaß +Adriano Del Ben +Justin Poole +Kenneth Harrison +Eugene LaFaille +John O'Shaughnessy +Uwe Jordt +Stuart Olson +Frédéric Devillard +Cheung Leo +Peter Webster +Jean-Claude Bachetta +Delfin Perena +Sae-wook Yoon +Focus on Excellence +Jeffery Golias +Nick Milton +Paul Zasso +Reidar Johannes Lillebotn +Handley William +Luke Williams +Michael Shellim +Brian Spearing +Derek Foster +Pasi Pitkänen +Lexington S Morley +Jeff Roberson +Volkov Victor +Bryan Anderson +Daniel Garber +Pavel Stein +Ravi Gupta +Patrick Tuxbury +Mark Deverell +John Capell +Neil McVean +Matthew Elyash +Kerry Cochrell +Willem Aandewiel +Reg Bell +Jean Chenoz +Philippe Grand +Tauno Rautakorpi +Jeff Dillingham +Brad Kelley +Shaun Currier +Danilo Schiara +John Hennig +RK Custom Homes +James Houck +Piet Teekens +Tommy Widenflycht +Johan Petrus Theophilus +Maria van Melis +Ralph Gustafson +Paul Luby +Andrew Duncan +Stephen Crowther +Edward Glover +Kelly Byrd +Brad Curtis +Wolfgang Kuhl +John Beidl +Roy Nixon +Glen Roe +CY Enterprise +Evening Shade Pottery +Gilles Dando +Patrick Richard +Justin Altemeier +Constant Dupuis +Tony Kenward +Pierre Rondel +Ernest Luguera Sanchez +Adam Brackney +Joe Baker +单 雷平 +Ben Fay +Chris Monk +Stan von Miller +Christian Krebs +Michel Motte +Graziano Rampinelli +Joe Baker +Jean-Philippe Laurent +Romain Rouzaud +Michel Garbarino +Henri Mirra +Otto Fröhlich +Thomas Cramer +Anthony Trombetta +Fernando Rimoldi +Dietmar Drees +Michal Kowalski +Ivan Correa +Modellbau +Massimo Luigi Stara +Graham Baldwin +Tomasz Rejman +Wolfgang Lang +John Greenwood +Till von Reumont +Paul Pereira Brunner +Donald L Singer +Junsun Lee +Guy Lamaison +Erwin Dulken +Mike H Dailey +Jon Cammarata +Martin Krueger +Adolfo Perogio +Sylvain Techer +Wes Warner +Kevin Caldwell +Ali Ersan Gur +Hans-Rudolf Riniker +Sébastien Boutard +Jean Chessé +Mike H Dailey +Don Polk +Roberto Orsello +Borovikov Dmitriy +John Lipscomb +Peter Glassey +Joseph Kramer +F.Javier Martinez Velasco +Claudio Piccinini +John Jackson +John Beech +Rene TraaJohn Jackson +Sebastien Charpentier (monthly) +Nigel Hendriks +Frédéric Devillard +Albert Herzog +Anindya Mukerjee +Kenny Stanberry +Tauno Rautakorpi +Mathias Krapp +Fernando Rimoldi +Wolfgang Rauser +Richard Shagam +Stephen Bailey +DK-System +Casa Kuxtal +Christopher Potts +Douglas George +Michael Banks +Jon Wiltshire +David Green +Guy Willems +Xavier Mestelan Pinon +Maik Gottschalk +Scott Sparks +John Dunning +RAD51 +Ron Powell +Alain Labonne +Carol Sills +Franck Aßmann +Larry Anderson +Mikael Wallbäck +Wes Warner +Christoffer H Henni +Donna Bayer +Garry Ogilvie +Karlheinz Sirsch +Fred Larssen +Rob Coppock +Franz Josef Hahn +Serge Ribault +Tanguy Le Moign +Barrett Powell +Patrice Lafeuille +Martin Blume +Marek Kopyto +Marco Lange +Gary Nix +Jack Oliphant +John Lever +Adolphe Montefiore +Steven De Weerdt +Håkan Berggen +Ayelet Egosi +Jean-Frederic Gaudreault +Jim Wagner +Lee Scott +Roger Keatley +Sherman Lovell +Hugh Caldwell +JB Fisher Company +Michels Bernhard +Pietro Rossin +Carsten Wache +Brock White +Steven Poretz +David Huelster +Gordon Stahl (monthly) +John Mathison +Richard Duczmal +Gregory Barron +Marcel Fischer +Klas Mälman +Viljo Liukku +Eric Smith +Sven Assmus +Luke Mole +NorthSide +Hannes Mössler +James Kaufman +Ravi Gupta +Lexington S Morley +Ralph Segar +Frédéric Devillard +Cory Theurer +Valentinos Zachariou +Garrett Paquette +Heung Jin Choi +Kerry Cochrell +Doug Miller +Andrzej Weydmann +Chair-man.nl +Eric Beier +Jay Warren +Marian Matej +Alastair Smith +Timothy Senecal +Dietmar Drees +Bruce Jones +Adil Busaidy +Herman Hofman +Jean Paul Michel +Peter McHenry +Julien lecoquierre +Jean-Marie Clay +Robert Nicoll +Dan Nixon +Ewald Moehring +Giovanni Carnesecchi +Paul Dumsday +Tadeusz Adamowski +Andrew Newton +Neil Horne +Kerstin Appelqvist +John Curran +Gerald Thiel +Jürg Bingisser +George Emer +Jerzy Manarczyk +Gerard Braakhuis +Nicolas Leblond +Burt Pickard-Richardson +Jiri Petrzelka +RK Custom Homes +David Semeria +Philip Lewis +William Kim +Dean Berg +Tim Spurr +Clifton Hipsher +Mike Frizell +Oliver Jacob +Pawel Stepien +Thomas Kilduff +Barry Fox +Anatoly Bakalenko +Bruce Anderson +Jeremy Cowgar +Edward Hauser +Stuart Brown +Anton Glock +Roger Ritchie +George Carnie +Philippe Stofleth +Tim Dzugan +Illia Izotov +Richard Miles (monthly) +Attila Kapolnai +Gilles Dando +Denis Roussille +Olivier Anken +Michel Motte +David McDonald +Tauno Rautakorpi +Carsten Schlassa +Angel de la Dehesa Calles +Michel Garbarin +Algirdas Tamosiunas +Petr Kysela +Pascal Roux +Robert Whitfield +InTheTubeDeep +Jaromir Malek +Joe Street +Regin Poulsen +Hervé Laveyssiere +Walter Fowler +Richard Wagner +Kevin Hyman +Herald Reichel +Frederic Rouyre +David Libby +Hans Timmermans +Adrian De Zee +John Hanagan +Didier van Steensel +Julius Vicze +Cristiano Merighi +James Holley +Chris Merry +Jiri Fojtasek +Thierry Laligand +Hassouna Cherif +Fred Thijssen +Andrew Gardiner +Christian Niß +Douglas Penney +Starck Associates +Johannes Wollenweber +Fred Page +Jean Trouche +Patrick Blanc +Jean-Louis Tonnellier +Masoud +Mustafa Güven +William Waters +Joël Allamy +William Mckinstry +Jean-Jacques Pointel +Frédéric Rouyre +Jonathan Pruett +Jörg Zieren +Christopher Rhodes +Marco Strack +Stefano Boggia +Dwayne Myers +Stavros Papathanasiou +Roland Nittby +Courtney Puskas +NorthSide +Martin Polák +Ulf Reinhardt +Wolfgang Renisch +Trevor Hinze +Mohammad Zargari +Dr. Willutzki +Jean Pierre Bernard +Patrick Castellan +Udo Tödter +Marc J Merlin +Paul Chitonu +Wolfgang Rauser +Emmanuel Dallery +James Lyons +Tauno Rautakorpi +Gerald Peklar +Fabien Gagné +David Cox +Philip Cork +Kevin Wright +John Scott +Yves Berger +Otto Fröhlich +Kenneth Lilja +Benjamin Johnson +Brad Kelley +Michel Biancki +Lynn Laycock +Claude Godefroy +Gérald Joubert +Wayne J Podaima +Philippe Peyron +Julien Kieffer +Gregor Walter +Carlos Viegas +Roberto Orsello +Steve Murray (monthly) +Marcel Schäfer +Sean Cull +Holger Bothmer +Michael Manning +Martin Risik +ZEN Computer Services +Egbert Stohlmann +Martin Peryea +Nathan James +Luis Suarez +Artur Uzieblo +InTheTubeDeep +Jaap Greve +Peter Glassey +David Reynolds +David Frazier +Donald L Singer +George Carnie +Susan Holbert +Richard Garrett +Paco Galván +Matthew Sylvester +Robert Bates +Hans-Peter Endres +Axel Stöckle +Leonard MacKey +Andrew Fernie +Mark McCoy +Damir Pooshs +Jeff Dillingham +Brent Hampton +Arkadiusz Milewski +Garry Ogilvie +Donald Porter +William Simon +Thomas Sandner +Pascal Pochard +Helmut Renz +T S Pung +Jorge Trinidad +Yeo Jonathan +David Olivier +Thierry Martin +Udo Nowakowski +Philippe Stofleth +Alain Labonne +Atam Gangaram Panday +Sajjad Rahman +Giovanni Carnesecchi +Lorenzo Frassy +Reinaldo Perez +Christian Aussillou +Christopher Potts +Eric Tremblet +Bernard Hunt +Evening Shade Pottery +Brian Cole +George McGinnis +Egid Schabl +Harold Henn +Chris VanCaeseele +Denis Novomlintsev +Pascal Amidey +Hermann Klampferer +Philippe Faure +Dean Berg +Sven Assmus +Gary Potter +Moritz Suerdieck +Eric Olivi +Jean-Jacques Pointel +Vianney Levesque +Fred Carlisle +Pierre Duvezin-Caubet +Pascal Dugué +Burt Pickard-Richardson +Robert Wilhelm +Thomas Kilduff +Hans-Rudolf Riniker +Arkadiusz Milewski +Kenneth Frehafer +Jens Ziegler +Peter Arnold +Jason Cole +Richard Vollkommer +Sherwood Drumheller +Jean-Christophe Gardaz +Igor Pongrac +James Mare +Kerry Cochrell +Florian Derriennic +HLL Vogels +Gordon Evans +Gaines Smith +Daniel Vogel +RCdiy +Joseph S Robinson +Jack Dunkley +Hannes Niethammer +Thierry Laligand +Pierre Duvezin-Caubet +Hannes Mössler +Petr Kysela +Calvin McCarthy +Piet Bomberg +Arne Johan Helle +Cees de Greef +Marc Gittelman +Scott Pritchett +Konstantinos Katsaklis +William Tortorello +Mark Maskiell +Gerald Peklar +Sidney Gates +Jörg Zander +Bryan Anderson +Stephane Monfette +Paul Poschen +Marco Lange +Peter Foto +Antonio Munuera +Vasil Petrov +Robert Wilhelm +Richard Hodgson +Manny Tau +Leonard MacKey +Johannes Wollenweber +Rodney Huddleston +Glen Roe +Chad Cranford +Tom Figge +Joerg-Dieter Rothfuchs +David Lorenzo +Chris Conroy +Fernando Wascheck +Martin Schoitsch +André Curci +Lukas Fischer +Larry Truesdale +Bernd Koehler +David Newton +Stephen Lesage +Mona Sturgis +Russell G Shanks +CY Enterprise +William Tortorello +André Lasseret +Lothar Thole +Stuart Olson +Paweł Stróż +Tim Buss +Christian Schaefer +Willyp +David Owens (monthly) +Willem Reij +Arthur Costerus +Martin Oldershaw +Robin Wienke +Jeffrey Johnson +Franz Josef Hahn +Burt Gray +Daniel Dupont +Felix Kaiser +Nicola Claudio Rossi +Gary Clayton +John Bitzer +Scott Campbell +Martin Polák +Jonathan Pruett +Charles Nowell +Randy Melton +Jo Jung +Chris Monk +Alvin Burke +Georges d'Haussy +Philippe Lhomme +Carsten Ullerup +Wolfgang Schneider-Reif +Anselm Schopplick +Georgios Papadopoulos +Thorsten Weber +Alexander Röhlich +Karl-Heinz Behn +Stefan Köhler +Jochen Kaphengst +Hans-Jüergen Duwe +Christoph Dalloz +Alexander Wimmer +Horst Efftinge +Nektarios Ntikmpasanis +Derek Gates +John Alsbrooks +Jürgen Deininger +Bruce Jones +Meinhard Schöll +Rolf Lemb +Casey Layton +Robert Bates +Udo Nowakowski +William Hallman +Paul Stein +Nurflügel & Modelltechnik +Gary Wild +James A Davey +Marco Giuseppe Colturi + diff --git a/DONATIONS.txt b/DONATIONS.txt deleted file mode 100644 index 0105cfd13..000000000 --- a/DONATIONS.txt +++ /dev/null @@ -1,852 +0,0 @@ -FrSky (monthly) -Aloft Hobbies -Jonathan Modellismo -WsTech -Aviomotive -BoltRC -Aerial Tech Hobbies -LitePilots -David Ankers (OpenPilot) -3D Robotics -RC Studio (monthly) - -Mario Sette -Felice Baratto -Alessandro Mari -Gianpiero Spontina -Ingo Kuzniak -Hans-Åke Rahm -Tamas Varga -Thomas Gregg -Didier Christien -Alain Pinard -Sergio Melas -Paul Montenot -Chris Guy -Adrien Gravouille -Thomas Black -Marc Lucht -Zdenek Trojanek -Martin Hotar -Stefan Grundevik -Fabio Eboli -Federico Zotti -Albin Esbjörnsson -Kilian Hüttenhofer -Stephen Stough -Adilson Oliveira -Robert Saint Marie -Tad Leake -Andreas Weitl -Chan Lofland -Dirk Kasten -Denisov Alexander -Timo Varppee -Ondrej Hatapka -Valérie Billon -R. Scott Page -Johan Cronje -Renato Aranghelovici -Jeffrey Irvin -John Rodgers -Kenneth Crump -Damjan Adamic -Martin Wilson -Joe Street -John Holdsworth -Daniel Schwartz -Dean Church (monthly) -Michael Halse -David Mark -Ted Moss -Jim Wagner -Nicola Porzi -Michael Halse -Chewytm -Espen Solbu -Mike Frizell -Bruce Jones -Stefano Airaghi -Dan Eeckhout -Alex Calderhead -Leonard MacKey -Heung Jin Choi -Mike Retterer -Keith Wood -Viljo Liukku -Eric Beier -Burt Pickard-Richardson -Helmut Renz -Rick Harms -Vincenzo Vavala -Patricia Martin -Harald Klein -Carl Petersen -Douglas Burkett -Clifford Evans -Teodor Yantchev -Jarad Berkman -Christian Schulz -Gregory J Shepherd -Michael Shellim -Ming Wang -Bernard Lukaschek -Nigel Chippindale -Mike Perkins -Ted Hammond -David Beanland -Bernd Koehler -Frédéric Duflos -Dave Fasken -Heinrich Illig -Michael Collins -Michael Manning -Craig Lorentz -André Lasseret -Felipe Alexandre de Oliveira -Brian Harris -Philippe Herbots -Rainer Nelte -Franck Bernhard -Erhard Werner -Stig Jøran Moen -Keith Hertzog -Christophe Dauvergne -Tauno Rautakorpi -Sven Assmus -Paul Dittman -Mike Matheny -Cheryl Wynne -Emay Toha -Don Nolder -André Lasseret -Filip Lowette -Arnaldo Gabella -Fiorenzo Agnelli -Michele Villa -Christophe Rodriguez -Larisa Filocamo -Hartmut Sahm -Åke Brodin -Ted Moss -Filippos Tigarakis -Chewytm -Eric Burdis -Nigel Chippindale -Michael Deasy -Stephen Stough -Kenneth Lilja (monthly) -Robert Jero -Gary Bancroft -Robert Cotsford -NorthSide -George Constandinides -Robert Schonk Jr -Kevin Berkefeld -Peter Webster -Mike Matheny -Martin Sniedze -Fernando Rimoldi -Sidney Fisher -Bruce Anderson -John Rodgers -Ed Pare -Thomas Kilduff -Robert Ferguson -Bryan Green -Kevin Berkefeld -Julien Michel -Krittikun Chiraphanda -Douglas Law -Alberto Scotti -Oliver Kunkel -D. Joseph Frazier -Heiko Polig -Andrew Fernie -Marco Lange -Nick McMillan -Michel Baily (monthly) -Patrick Mullen -Scott Campbell -Erich Roeder -Wayne Davy -Michael Fontenot -Willie Swanepoel -Satoru Sasaki -Tyler Darby -Nicholas Crego -Johan Moelich -Timo Esser -Brian Paddock -Jean Pierre Parisy -Norbert Martsch -Jean-Marie Guitard -Tilman Baumann -Fred Larssen -Ari Aalto -Robert Sams -Kirk Robertson -John Koontz -Jeffery Golias -Paul Robinson -Dave Matison -Mike Matheny -Pino Agostino -Graham Boucher -Nelson Noura -Joel Allamy -Philip David Martin -Sean Stephen -Bruce Mackay -Blake Spilman -Timothy Pelletier -Glen Roe (ShowMaster) -Jan Van Ooteghem -Lawrence Christensen -Leo Duflou -Bruce Wood -Arnd Feige -Tauno Rautakorpi -Steve Coley -Stefan Kiendl -Gregory Nuspel -Mitchell Brenner -Ronnnie DePrez -Ferenc Koller -Robert Sessler -Didier Lanot -Rodney Hunt -Steve Bernard -Paul Nazaroff -Gordon Ernenputsch -Ksamak -Marc Gittelman -David Poole -Ralph Sauer -Karl-Heinz Gansel -Michels Bernhard -Thomas Demmelbauer -Felice Baratto -Michael Halse -Horst Kampen -Ian Gough -Matthew Brett -Lexington S Morley -Clemens Drews -Axel Stöckle -Roberto Orsello -Richard Ruck -Hugh Caldwell -Christian Marauli -Albin Esbjörnsson -Per Esbjörnsson -Bernd Hohmann -Sławomir Juszczak -Stephen Henderson -David Morgan -Aloft Hobbies -Netanel Hobara -Cameron Galipo -Doug Schafer -Pietro Rossin -Earl Killingsworth -Victor B Wright -Terry McKinley -Марков Алексей -Offer Shmuely -Ian Lobley -Stéphane Fortas -Peter Mitrik -Thomas Majewski -ANF King -Henrik Hammarström -Kenneth Lilja -R Wells -Uwe Jordt -Harald Wilczak -Bernhard Lohmann -Ferenc Koller -Robert Ferguson -Daniel Byers -Tyler Darby -Miguel Villalpando -Kim Dong Hoon -Terry McKinley -Walter Bell -Clinton Linck -Josep Clodas Sola -Thierry Martin -Peter Mauro -Mitchell Brenner -Yak -Lluis Bullich Rañe -Steffen Rohr -Eric Jacquin -Harvest Lane -Ville Kuvaja -DK-System -Heinz Vogel -Heung Jin Choi -MMJS van der Helm -Dan Neelands -Yashiro Masayuki -Isaac Sloan -Harold Baird -Roy Bender -Bradley Murchie -Maximilian Süß -Dean Jansa -Ronald Donker -Paul Oldenkamp -Dietmar Drees -Bradley Murchie -Richard Fahie -James Kaufman -Henry Deucker -Christian Fuchs -Arold Reinders -Robert Miller -Mark Gaskievicz -Roland Müller -Frank Gewalt -Remi Viard -Reginald H Millsom -Pierluigi Sommaruga -A Harris -Stefan Grunenberg -Francisco Gutierrez Muñoz -Steve Coley -Sean Cull -Roberto Orsello -David Finger -Jean-Marie Oddo -Mike Matheny -Glen Roe (Showmaster) -Arron Bates -Tim Spurr -Daniel Morgan -Trent Ready -Mark Maskiell -Robert Crockford -Mark Illum -David McGuire -Martyn Coles -Jose Sobral -Heung Jin Choi -Tomasz Janiak -Fabien Gagné -Joe Street -Micha Ronen -Albert Blondin -Klaus Schuebel -Evening Shade Pottery -Thomas Kilduff -Sven Assmus -Markus Eberl -Nicholas Field -Harald Wilczak -John Grepps -Anthony Burbidge -Sherba Baine -Gordon Evans -Fred Figge -Uwe Kuehn -David Beatty -Aaron Stringer -Alan J Wasserman -Wolfgang Rauser -Samuel Cook -Friedrich Ipolt -Barrington Cole -Charles Lakins -Thos. O'Meara Photography -Adam Chevalier -Mike Mulligan -Serge Michaux -Robert Young -Wilco Hijink -Roy Nixon -Lexington S Morley -Daryl Dacko -Beat Zurflueh -Piotr Kundu -Kevin Berkefeld -Tomasz Klys -Mirco Didone' -Christoph Schroeter -Zdenek Trojanek -Bryan Anderson -Kamco Enterprises -Robert Bates -Robert Brown -Dennis Marinus -Ronald Van Putte -Thomas Kvitle Jenssen -Patrick Tuxbury -Istvan Magi -Sasaki Satoru -David Laburthe -Vit Jelinek -Pablo Gomez Martinez -Alan Thoren -Jack Clodfelter -William Simon -James Houck -Peter Fithern -Thomas Svedman -TechFixPros -Rafael Eric Suarez Nordlow -Colin Rycroft -Emanuel Stassar -Michael Gregory -Robert Russell -Felix Kaiser -Joshua Bardwell -Davd Goodall -Leonard MacKey -Miles Kelly -Sergio Robledo -Mikael Wallbäck -Daniel Malcman -Paul Dittman -Attilio Rausse -Sidney Gates -Andrea Montefusco -Paul Luby -Donald L Webster -Kenneth Frehafer -Matthias Hase -Markus Wolf -Andrew Fazio -Stefan Künst -Stephen Adams -Tauno Rautakorpi -Frank Houvenaghel -George Neusse -Andreja Rusjakovski -Axel Stöckle -Erwin Störrle -Rodger Hopper -Fernando Cesar -Jonathan Gillis -DK-System -Lexington S Morley -Bernd Koehler -Davis RC -Pete Johnson -Patricia Martin -Florian Tschacher -Brian Spearing -Craig Hall -Joseph Case -Harald Klein -Robert Crockford -Chris Boultinghouse -Kitsew -Georgios Papadopoulos -Fourmost Products -Dennis Miller -Dave Matison -Maximilian Radig -Juan Rodriguez -Robert Sessler -John Murray -Martin Sniedze -David Poole -Manfred Delakowitz -Martijn Kruissen -Jörgen Norman -Nathan Kinney -John Godden -Larry Roper -Mike Frizell -Daniel Pospolita -Peter Herz -Don Mondrik -Paul Fram -Charles Knight -Matthew Adams -Kenneth Reed -Gary Wild -Christof Ramm -Bruno Bedard -Salih Samim Aydin -Alexander Pils -Andrew Scerbina -Donovan Bodishbaugh -Ray Dunn -Burt Pickard-Richardson -Robert Ferguson -CY Enterprise -Michel Stathakis Neto -Beat Zurflueh -Portstate Pty Ltd -Jens Hoffmann -Ricardo Santos -Jean-Francois Le Breton -Michael Deasy -Anindya Mukerjee -Emay Toha -Kamco Enterprises -Peter Mueller -Giovanni Trentini -Cecil Porter -Robert Canavan -Greg Higginbottom -Tim Walker -Spis Ltd/TurboNote -Patricia Cox -Matthew Lukes -Sabine Witte -Phillip Perry -Beat Zurflueh -Russell Stutzman -Dietmar Drees -Kenneth Ward -Jens Lochmüller -Anthony Witham -Peter Hauke -Arizona Action Photos -Francis F Dale -Willie Swanepoel -Edward Hauser -Adilson Oliveira -Joseph Ordille -Michael Shellim -Teddie Holmes -Alexandre Rault -Eric Albin -Lukas Kliment -Bernard Philippe -Bernard Delpy -Didier Klein -Arnaldo Guedes -Cyberauto Systems -John Alsbrooks -John Kearney -Christopher Borden -Marc Virgilio Ricci -Frederick Davie -Jürgen Enders -Terrence Pitts -Thomas Sandner -Marco Coltorti -Harald Wilczak -Rodney Lorimor -Richard Davis -Stephen Palmer -Michael Napolitan -Joshua Bardwell -Fred Dawson -Jim Wagner -Peter Johnson -Fredrik Lewerth -Arvin Stenersen -Daniel Morgan -Roy Nixon -Joachim Blunck -Karl-Heinz Gansel -Monrovia Mountain Enterprises -Alessandro Villa -Jan-Åke Nilsson -Matthias Rei -DVR Solutions BV -Bertrand Condevaux Lanloy -Henri Mirra -Aurélien Planiol -Kevin Caldwell -Andrew Garello -Tomasz Maziarz -Russell Flack -Fernando Rimoldi -Greg Reid -Dietmar Drees -Holger Landwehr -Arno Loehdorf -Boon Sripattha -Patrik Åkerfeldt -Alonzo Fretwell -Renjith Chandrasekharan -Ruben Gomez Hernandez -Michael Gardner -Judith Green -Timo Ruppell -John Lipscomb -Norbert Wenke -Erik Frieberg -Raimo Ruotsalainen -Brian Harris -Sebastian Blüml -Efisio Maxia -Jeff Theobald -Anthony Rizzo -Rodney Huddleston -Dietmar Drees -Jürgen Monden -David Morgan -Andrew Fernie -Donald Burke -Ronald Donker -Fredie Singh -Patrizio Simoncini -Harald Gabler -Michael Brown -Julien Gérard -Alexandre d'Alton -Peter Mergaerts -Jan Houwers -Christian Grandjean -Roger Bergevin -NorthSide -Sigmund Martinsen -Lionel Lafraise -Gisli Ofeigsson -The Gruvin9x Project -Manuel McLure -Fernando Rimoldi -Hiltenkamp Stephan -Sandeep Kishore Jain -Greg Parker -Norman Maaß -Adriano Del Ben -Justin Poole -Kenneth Harrison -Eugene LaFaille -John O'Shaughnessy -Uwe Jordt -Stuart Olson -Frédéric Devillard -Cheung Leo -Peter Webster -Jean-Claude Bachetta -Delfin Perena -Sae-wook Yoon -Focus on Excellence -Jeffery Golias -Nick Milton -Paul Zasso -Reidar Johannes Lillebotn -Handley William -Luke Williams -Michael Shellim -Brian Spearing -Derek Foster -Pasi Pitkänen -Lexington S Morley -Jeff Roberson -Volkov Victor -Bryan Anderson -Daniel Garber -Pavel Stein -Ravi Gupta -Patrick Tuxbury -Mark Deverell -John Capell -Neil McVean -Matthew Elyash -Kerry Cochrell -Willem Aandewiel -Reg Bell -Jean Chenoz -Philippe Grand -Tauno Rautakorpi -Jeff Dillingham -Brad Kelley -Shaun Currier -Danilo Schiara -John Hennig -RK Custom Homes -James Houck -Piet Teekens -Tommy Widenflycht -Johan Petrus Theophilus -Maria van Melis -Ralph Gustafson -Paul Luby -Andrew Duncan -Stephen Crowther -Edward Glover -Kelly Byrd -Brad Curtis -Wolfgang Kuhl -John Beidl -Roy Nixon -Glen Roe -CY Enterprise -Evening Shade Pottery -Gilles Dando -Patrick Richard -Justin Altemeier -Constant Dupuis -Tony Kenward -Pierre Rondel -Ernest Luguera Sanchez -Adam Brackney -Joe Baker -单 雷平 -Ben Fay -Chris Monk -Stan von Miller -Christian Krebs -Michel Motte -Graziano Rampinelli -Joe Baker -Jean-Philippe Laurent -Romain Rouzaud -Michel Garbarino -Henri Mirra -Otto Fröhlich -Thomas Cramer -Anthony Trombetta -Fernando Rimoldi -Dietmar Drees -Michal Kowalski -Ivan Correa -Modellbau -Massimo Luigi Stara -Graham Baldwin -Tomasz Rejman -Wolfgang Lang -John Greenwood -Till von Reumont -Paul Pereira Brunner -Donald L Singer -Junsun Lee -Guy Lamaison -Erwin Dulken -Mike H Dailey -Jon Cammarata -Martin Krueger -Adolfo Perogio -Sylvain Techer -Wes Warner -Kevin Caldwell -Ali Ersan Gur -Hans-Rudolf Riniker -Sébastien Boutard -Jean Chessé -Mike H Dailey -Don Polk -Roberto Orsello -Borovikov Dmitriy -John Lipscomb -Peter Glassey -Joseph Kramer -F.Javier Martinez Velasco -Claudio Piccinini -John Jackson -John Beech -Rene TraaJohn Jackson -Sebastien Charpentier (monthly) -Nigel Hendriks -Frédéric Devillard -Albert Herzog -Anindya Mukerjee -Kenny Stanberry -Tauno Rautakorpi -Mathias Krapp -Fernando Rimoldi -Wolfgang Rauser -Richard Shagam -Stephen Bailey -DK-System -Casa Kuxtal -Christopher Potts -Douglas George -Michael Banks -Jon Wiltshire -David Green -Guy Willems -Xavier Mestelan Pinon -Maik Gottschalk -Scott Sparks -John Dunning -RAD51 -Ron Powell -Alain Labonne -Carol Sills -Franck Aßmann -Larry Anderson -Mikael Wallbäck -Wes Warner -Christoffer H Henni -Donna Bayer -Garry Ogilvie -Karlheinz Sirsch -Fred Larssen -Rob Coppock -Franz Josef Hahn -Serge Ribault -Tanguy Le Moign -Barrett Powell -Patrice Lafeuille -Martin Blume -Marek Kopyto -Marco Lange -Gary Nix -Jack Oliphant -John Lever -Adolphe Montefiore -Steven De Weerdt -Håkan Berggen -Ayelet Egosi -Jean-Frederic Gaudreault -Jim Wagner -Lee Scott -Roger Keatley -Sherman Lovell -Hugh Caldwell -JB Fisher Company -Michels Bernhard -Pietro Rossin -Carsten Wache -Brock White -Steven Poretz -David Huelster -Gordon Stahl (monthly) -John Mathison -Richard Duczmal -Gregory Barron -Marcel Fischer -Klas Mälman -Viljo Liukku -Eric Smith -Sven Assmus -Luke Mole -NorthSide -Hannes Mössler -James Kaufman -Ravi Gupta -Lexington S Morley -Ralph Segar -Frédéric Devillard -Cory Theurer -Valentinos Zachariou -Garrett Paquette -Heung Jin Choi -Kerry Cochrell -Doug Miller -Andrzej Weydmann -Chair-man.nl -Eric Beier -Jay Warren -Marian Matej -Alastair Smith -Timothy Senecal -Dietmar Drees -Bruce Jones -Adil Busaidy -Herman Hofman -Jean Paul Michel -Peter McHenry -Julien lecoquierre -Jean-Marie Clay -Robert Nicoll -Dan Nixon -Ewald Moehring -Giovanni Carnesecchi -Paul Dumsday -Tadeusz Adamowski -Andrew Newton -Neil Horne -Kerstin Appelqvist diff --git a/README.md b/README.md index b217e85fe..c7ff45315 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -##OpenTX 2.2 Branch +## OpenTX 2.2 Branch [![Build Status](https://travis-ci.org/opentx/opentx.svg?branch=next)](https://travis-ci.org/opentx/opentx) [![Coverity Scan Build Status](https://scan.coverity.com/projects/11787/badge.svg)](https://scan.coverity.com/projects/opentx-opentx) @@ -7,4 +7,11 @@ The ongoing development on 2.2.x is done in this branch. -Refer to the opentx.wiki for information about setting up the tool chains for building OpenTX and OpenTX Companion as well as other development related issues. +Refer to the [OpenTX wiki](https://github.com/opentx/opentx/wiki) for information about setting up the tool chains for building OpenTX and OpenTX Companion as well as other development related issues. + +Useful links: + * OpenTX Blog http://blog.open-tx.org/ + * OpenTX Main Site http://www.open-tx.org/ + * OpenTx University http://open-txu.org/ + * OpenTX User Manual https://www.gitbook.com/book/opentx/opentx-taranis-manual/details + * OpenTX Lua Reference Guide https://www.gitbook.com/book/opentx/opentx-lua-reference-guide/details diff --git a/cmake/FindLupdate.cmake b/cmake/FindLupdate.cmake deleted file mode 100644 index 0caf0ba30..000000000 --- a/cmake/FindLupdate.cmake +++ /dev/null @@ -1,17 +0,0 @@ -# Locate lupdate binary from QT - -# This module defines -# LUPDATE_EXECUTABLE, where is QT lupdate -# LUPDATE_FOUND, if false, don't try to use lupdate - -FIND_PROGRAM( LUPDATE_EXECUTABLE - NAMES - lupdate lupdate-qt4 -) - -# if the program is found then we have it -IF( LUPDATE_EXECUTABLE ) - SET( LUPDATE_FOUND "YES" ) -ENDIF( LUPDATE_EXECUTABLE ) - -MARK_AS_ADVANCED( LUPDATE_EXECUTABLE ) diff --git a/cmake/FindXercesC.cmake b/cmake/FindXercesC.cmake index cb28a49d9..4431cbdf5 100644 --- a/cmake/FindXercesC.cmake +++ b/cmake/FindXercesC.cmake @@ -1,68 +1,68 @@ -# Find Xerces-C -# The following setings are defined -# XERCESC_ROOT_DIR, the root of the include and lib directory -# XERCESC_INCLUDE_DIR, the full path of the include dir (ADVANCED) -# XERCESC_LIBRARIES, the name of the xerces-c library (ADVANCED) - -# Look for a root installation -IF( MSVC ) -SET( XERCES_WINDIR C:/Programs/xerces-vc ) -ELSE( ) -SET( XERCES_WINDIR C:/Programs/xerces ) -ENDIF( ) - -FIND_PATH(XERCESC_ROOT_DIR include/xercesc/parsers/SAXParser.hpp - ${XERCES_WINDIR} - "C:/mingw/msys/1.0/local" - "C:/Program Files/CodeSynthesis XSD 3.2" - /usr - /usr/local - "C:/MinGW" - $ENV{CODESYNTH} - DOC "The root of an installed xerces-c installation" -) - -# try to find the header -FIND_PATH(XERCESC_INCLUDE_DIR xercesc/parsers/SAXParser.hpp - ${XERCESC_ROOT_DIR}/include - /usr/include - /usr/local/include -) - -# Find the library -FIND_LIBRARY(XERCESC_LIBRARY - NAMES xerces-c xerces-c_3 - PATHS - ${XERCESC_ROOT_DIR}/lib - ${XERCESC_ROOT_DIR}/lib/vc-9.0 - ${XERCESC_ROOT_DIR}/lib64/vc-9.0 - /usr/lib - /usr/local/lib - DOC "The name of the xerces-c library" -) - -IF (XERCESC_ROOT_DIR) - IF (XERCESC_INCLUDE_DIR AND XERCESC_LIBRARY) - SET (XERCESC_FOUND TRUE) - SET (XERCESC_LIBRARIES "${XERCESC_LIBRARY}") - # FIXME: There should be a better way of handling this? - # FIXME: How can we test to see if the lib dir isn't - # FIXME: one of the default dirs? - LINK_DIRECTORIES(${XERCESC_ROOT_DIR}/lib) - ENDIF (XERCESC_INCLUDE_DIR AND XERCESC_LIBRARY) -ENDIF (XERCESC_ROOT_DIR) - -IF (XERCESC_FOUND) - IF (NOT XERCESC_FIND_QUIETLY) - MESSAGE (STATUS " found xerces-c: ${XERCESC_LIBRARY}") - ENDIF (NOT XERCESC_FIND_QUIETLY) -ELSE (XERCESC_FOUND) - IF (XERCESC_FIND_REQUIRED) - MESSAGE(FATAL_ERROR "Could not find Xerces-C") - ENDIF (XERCESC_FIND_REQUIRED) -ENDIF (XERCESC_FOUND) - -MARK_AS_ADVANCED( - XERCESC_INCLUDE_DIR - XERCESC_LIBRARY +# Find Xerces-C +# The following setings are defined +# XERCESC_ROOT_DIR, the root of the include and lib directory +# XERCESC_INCLUDE_DIR, the full path of the include dir (ADVANCED) +# XERCESC_LIBRARIES, the name of the xerces-c library (ADVANCED) + +# Look for a root installation +IF( MSVC ) +SET( XERCES_WINDIR C:/Programs/xerces-vc ) +ELSE( ) +SET( XERCES_WINDIR C:/Programs/xerces ) +ENDIF( ) + +FIND_PATH(XERCESC_ROOT_DIR include/xercesc/parsers/SAXParser.hpp + ${XERCES_WINDIR} + "C:/mingw/msys/1.0/local" + "C:/Program Files/CodeSynthesis XSD 3.2" + /usr + /usr/local + "C:/MinGW" + $ENV{CODESYNTH} + DOC "The root of an installed xerces-c installation" +) + +# try to find the header +FIND_PATH(XERCESC_INCLUDE_DIR xercesc/parsers/SAXParser.hpp + ${XERCESC_ROOT_DIR}/include + /usr/include + /usr/local/include +) + +# Find the library +FIND_LIBRARY(XERCESC_LIBRARY + NAMES xerces-c xerces-c_3 + PATHS + ${XERCESC_ROOT_DIR}/lib + ${XERCESC_ROOT_DIR}/lib/vc-9.0 + ${XERCESC_ROOT_DIR}/lib64/vc-9.0 + /usr/lib + /usr/local/lib + DOC "The name of the xerces-c library" +) + +IF (XERCESC_ROOT_DIR) + IF (XERCESC_INCLUDE_DIR AND XERCESC_LIBRARY) + SET (XERCESC_FOUND TRUE) + SET (XERCESC_LIBRARIES "${XERCESC_LIBRARY}") + # FIXME: There should be a better way of handling this? + # FIXME: How can we test to see if the lib dir isn't + # FIXME: one of the default dirs? + LINK_DIRECTORIES(${XERCESC_ROOT_DIR}/lib) + ENDIF (XERCESC_INCLUDE_DIR AND XERCESC_LIBRARY) +ENDIF (XERCESC_ROOT_DIR) + +IF (XERCESC_FOUND) + IF (NOT XERCESC_FIND_QUIETLY) + MESSAGE (STATUS " found xerces-c: ${XERCESC_LIBRARY}") + ENDIF (NOT XERCESC_FIND_QUIETLY) +ELSE (XERCESC_FOUND) + IF (XERCESC_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find Xerces-C") + ENDIF (XERCESC_FIND_REQUIRED) +ENDIF (XERCESC_FOUND) + +MARK_AS_ADVANCED( + XERCESC_INCLUDE_DIR + XERCESC_LIBRARY ) \ No newline at end of file diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index 40dd6ce2b..e0b4ed601 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -1,6 +1,6 @@ set(SIMULATOR_INSTALL_PREFIX "" CACHE STRING "Alternative simulator library search path") -if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") +if(${CMAKE_SYSTEM_NAME} MATCHES "(Linux|FreeBSD)") set(C9X_NAME_SUFFIX ${VERSION_MAJOR}${VERSION_MINOR}) set(COMPANION_NAME "companion${C9X_NAME_SUFFIX}") set(SIMULATOR_NAME "simulator${C9X_NAME_SUFFIX}") @@ -11,10 +11,10 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") endif() message(STATUS "Simulators library search path: " ${SIMULATOR_LIB_PATH}) set(SIMULATOR_LIB_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/lib/companion${C9X_NAME_SUFFIX}) -else(${CMAKE_SYSTEM_NAME} MATCHES "Linux") +else() set(COMPANION_NAME "companion") set(SIMULATOR_NAME "simulator") -endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") +endif() # This the name that the user will see in the generated DMG and what the application # will be called under /Applications. We include the version string to make installing @@ -100,15 +100,104 @@ use_cxx11() # ensure gnu++11 in CXX_FLAGS with CMake < 3.1 include_directories( ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_SOURCE_DIR} ${COMPANION_SRC_DIRECTORY} ${COMPANION_SRC_DIRECTORY}/shared ${SIMU_SRC_DIRECTORY} - ${COMPANION_SRC_DIRECTORY}/thirdparty/qxtcommandoptions ${COMPANION_SRC_DIRECTORY}/thirdparty/qcustomplot ${COMPANION_SRC_DIRECTORY}/thirdparty/miniz ${COMPANION_SRC_DIRECTORY}/storage ) +############# Do macro replacements on input files ############# +configure_file(${COMPANION_SRC_DIRECTORY}/version.h.in ${CMAKE_BINARY_DIR}/version.h @ONLY) +configure_file(${COMPANION_SRC_DIRECTORY}/companion.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/companion.desktop @ONLY) +configure_file(${COMPANION_SRC_DIRECTORY}/simulator.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/simulator.desktop @ONLY) + +############# Translations ############### + +### Generate .qm files and assemble resource (qrc) file. + +# available Companion translations (src/translations/*.ts) +set(LANGUAGES cs de en es fi fr it pl sv zh_CN) +foreach(language ${LANGUAGES}) + list(APPEND companion_TS translations/companion_${language}.ts) +endforeach(language) +# .ts -> .qm +qt5_add_translation(companion_QM ${companion_TS}) + +# add Qt translations if found +if(QT_TRANSLATIONS_DIR) + # Some languages have all translations in one qt_*.qm file and others break them up into modules, in which case we need qt_base_*.qm + file(GLOB qtbase_QM "${QT_TRANSLATIONS_DIR}/qtbase_*.qm") + file(GLOB qt_QM "${QT_TRANSLATIONS_DIR}/qt_??.qm") # don't want to match "qt_help_*.qm" + list(APPEND qt_QM "${QT_TRANSLATIONS_DIR}/qt_zh_CN.qm" "${QT_TRANSLATIONS_DIR}/qt_zh_TW.qm") # exceptions not matched by the GLOB +else() + message(STATUS "QT_TRANSLATIONS_DIR not found, unable to package pre-built Qt translations with application.") +endif() + +set(TRANSLATIONS_QRC "${CMAKE_CURRENT_BINARY_DIR}/translations.qrc") + +# Dynamically create translations.qrc file (XML) from all collected translation files. +foreach(qm_file ${companion_QM} ${qt_QM} ${qtbase_QM}) + get_filename_component(qm_file_name ${qm_file} NAME) + # Add file with full path and file name (w/out path) as alias to be used in actual code + set(TRANSLATION_FILES_LIST "${TRANSLATION_FILES_LIST} ${qm_file}\n") +endforeach() +configure_file(${COMPANION_SRC_DIRECTORY}/translations.qrc.in ${TRANSLATIONS_QRC} @ONLY) + +### Add optional "translations" target for updating .ts files +if(QT_LUPDATE_EXECUTABLE) + add_custom_target(translations + WORKING_DIRECTORY ${COMPANION_SRC_DIRECTORY} + COMMAND ${QT_LUPDATE_EXECUTABLE} ${CMAKE_SOURCE_DIR} -no-obsolete -ts ${companion_TS} + ) +else() + message(STATUS "Qt lupdate not found, 'translations' target will not be availabe.") +endif() + +############# Common lib ############### + +set(common_SRCS + appdebugmessagehandler.cpp + boards.cpp + customdebug.cpp + eeprominterface.cpp + helpers.cpp + radiodata.cpp + translations.cpp + firmwares/er9x/er9xeeprom.cpp + firmwares/er9x/er9xinterface.cpp + firmwares/ersky9x/ersky9xeeprom.cpp + firmwares/ersky9x/ersky9xinterface.cpp + firmwares/opentx/opentxeeprom.cpp + firmwares/opentx/opentxinterface.cpp + modeledit/node.cpp # used in simulator + modeledit/edge.cpp # used by node + ) + +set(common_MOC_HDRS + appdebugmessagehandler.h + helpers.h + modeledit/node.h + ) + +set(common_RESOURCES + companion.qrc + ${TRANSLATIONS_QRC} + ) + +qt5_wrap_cpp(common_SRCS ${common_MOC_HDRS}) +qt5_add_resources(common_RCC ${common_RESOURCES}) +#add_custom_target(gen_qrc DEPENDS ${common_RCC} ${companion_QM}) + +add_library(common ${common_SRCS} ${common_RCC}) +qt5_use_modules(common Core Xml Widgets) +target_link_libraries(common PRIVATE simulation) +#add_dependencies(common gen_qrc) + +set(CPN_COMMON_LIB common) + ############# Supporting libraries ############### add_subdirectory(shared) @@ -117,36 +206,10 @@ add_subdirectory(generaledit) add_subdirectory(simulation) add_subdirectory(storage) add_subdirectory(thirdparty/qcustomplot) -add_subdirectory(thirdparty/qxtcommandoptions) - -############# Common lib ############### - -set(common_SRCS - appdebugmessagehandler.cpp - boards.cpp - eeprominterface.cpp - radiodata.cpp - firmwares/er9x/er9xeeprom.cpp - firmwares/er9x/er9xinterface.cpp - firmwares/ersky9x/ersky9xeeprom.cpp - firmwares/ersky9x/ersky9xinterface.cpp - firmwares/opentx/opentxeeprom.cpp - firmwares/opentx/opentxinterface.cpp - ) - -set(common_MOC_HDRS - appdebugmessagehandler.h - ) - -qt5_wrap_cpp(common_SRCS ${common_MOC_HDRS}) - -add_library(common ${common_SRCS}) -qt5_use_modules(common Core Xml Widgets) ############# Companion ############### set(companion_SRCS - helpers.cpp helpers_html.cpp mdichild.cpp modelslist.cpp @@ -155,7 +218,7 @@ set(companion_SRCS burnconfigdialog.cpp multimodelprinter.cpp comparedialog.cpp - contributorsdialog.cpp + creditsdialog.cpp releasenotesdialog.cpp releasenotesfirmwaredialog.cpp customizesplashdialog.cpp @@ -189,7 +252,7 @@ set(companion_MOC_HDRS printdialog.h fusesdialog.h logsdialog.h - contributorsdialog.h + creditsdialog.h releasenotesdialog.h releasenotesfirmwaredialog.h customizesplashdialog.h @@ -206,7 +269,6 @@ set(companion_MOC_HDRS mdichild.h mainwindow.h radionotfound.h - helpers.h wizarddialog.h modelprinter.h multimodelprinter.h @@ -233,80 +295,25 @@ set(companion_UIS radionotfound.ui ) -set(companion_RESOURCES - companion.qrc - ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc - ) - -configure_file(${COMPANION_SRC_DIRECTORY}/version.h.in ${CMAKE_BINARY_DIR}/version.h @ONLY) -configure_file(${COMPANION_SRC_DIRECTORY}/translations.qrc.in ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc @ONLY) -configure_file(${COMPANION_SRC_DIRECTORY}/companion.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/companion.desktop @ONLY) -configure_file(${COMPANION_SRC_DIRECTORY}/simulator.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/simulator.desktop @ONLY) - if(WIN32) - list(APPEND companion_SRCS icon.rc) + set(icon_RC icon.rc) endif() -include_directories(${CMAKE_BINARY_DIR}) -include_directories(${CMAKE_SOURCE_DIR}) - -set(LANGUAGES pl de fr es it sv cs fi zh) -foreach(language ${LANGUAGES}) - list(APPEND companion_TS translations/companion_${language}.ts) -endforeach(language) - qt5_wrap_ui(companion_SRCS ${companion_UIS}) qt5_wrap_cpp(companion_SRCS ${companion_MOC_HDRS}) -qt5_add_translation(companion_QM ${companion_TS}) -qt5_add_resources(companion_RCC ${companion_RESOURCES}) -add_custom_target(gen_qrc DEPENDS ${companion_RCC}) -add_executable(${COMPANION_NAME} MACOSX_BUNDLE ${WIN_EXECUTABLE_TYPE} ${companion_SRCS} ${companion_RCC} ${companion_QM}) - -add_dependencies(${COMPANION_NAME} gen_qrc) +add_executable(${COMPANION_NAME} MACOSX_BUNDLE ${WIN_EXECUTABLE_TYPE} ${companion_SRCS} ${icon_RC}) qt5_use_modules(${COMPANION_NAME} Core Widgets Network) - -target_link_libraries(${COMPANION_NAME} PRIVATE generaledit modeledit simulation common qcustomplot shared storage ${PTHREAD_LIBRARY} ${SDL_LIBRARY} ${WIN_LINK_LIBRARIES}) +target_link_libraries(${COMPANION_NAME} PRIVATE generaledit modeledit simulation ${CPN_COMMON_LIB} qcustomplot shared storage ${PTHREAD_LIBRARY} ${SDL_LIBRARY} ${WIN_LINK_LIBRARIES}) PrintTargetReport("${COMPANION_NAME}") ############# Standalone simulator ############### -set(simu_SRCS - modeledit/node.cpp - modeledit/edge.cpp - helpers.cpp - simulator.cpp - ) +set(simu_SRCS simulator.cpp ) -set(simu_MOC_HDRS - modeledit/node.h - helpers.h - ) - -qt5_wrap_cpp(simu_SRCS ${simu_MOC_HDRS} ) - -if(WIN32) - list(APPEND simu_SRCS icon.rc) -endif() - -add_executable(${SIMULATOR_NAME} MACOSX_BUNDLE ${WIN_EXECUTABLE_TYPE} ${simu_SRCS} ${companion_RCC}) -add_dependencies(${SIMULATOR_NAME} gen_qrc) - -target_link_libraries(${SIMULATOR_NAME} PRIVATE simulation common shared storage qxtcommandoptions ${PTHREAD_LIBRARY} ${SDL_LIBRARY} ${WIN_LINK_LIBRARIES}) - -############# Translations #################### - -find_package(Lupdate) -if(LUPDATE_FOUND) - message(STATUS "Qt lupdate: " ${LUPDATE_EXECUTABLE}) - add_custom_target(translations - WORKING_DIRECTORY ${COMPANION_SRC_DIRECTORY} - COMMAND ${LUPDATE_EXECUTABLE} ${CMAKE_SOURCE_DIR} -no-obsolete -ts ${companion_TS} - ) -else() - message(STATUS "Qt lupdate not found, 'translations' target will not be availabe.") -endif() +add_executable(${SIMULATOR_NAME} MACOSX_BUNDLE ${WIN_EXECUTABLE_TYPE} ${simu_SRCS} ${icon_RC}) +target_link_libraries(${SIMULATOR_NAME} PRIVATE simulation ${CPN_COMMON_LIB} storage ${PTHREAD_LIBRARY} ${SDL_LIBRARY} ${WIN_LINK_LIBRARIES}) ############# Install #################### @@ -348,8 +355,7 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") elseif(WIN32) - get_target_property(QtCore_LOCATION Qt5::Core LOCATION) - get_filename_component(QT_DLL_DIR ${QtCore_LOCATION} PATH) + set(QT_DLL_DIR ${QT_LIB_DIR}) set(INSTALL_TEMP_QTDLL_FILES Qt5Core Qt5Gui Qt5Widgets Qt5Xml Qt5Network Qt5PrintSupport Qt5Multimedia Qt5Svg) set(INSTALL_TEMP_ICUDLL_FILES icudt54.dll icuin54.dll icuuc54.dll) if(CMAKE_BUILD_TYPE STREQUAL "Debug") @@ -428,7 +434,7 @@ if(WIN32) set(SYSDIR "$ENV{windir}/system32") configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../targets/windows/${COMPANION_NSI_IN_FILE} ${PROJECT_BINARY_DIR}/companion/companion.nsi @ONLY) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../targets/windows/${SIMULATOR_NSI_IN_FILE} ${PROJECT_BINARY_DIR}/companion/simulator.nsi @ONLY) + #configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../targets/windows/${SIMULATOR_NSI_IN_FILE} ${PROJECT_BINARY_DIR}/companion/simulator.nsi @ONLY) find_program(NSIS_EXE makensis.exe PATHS "C:/Program Files/NSIS" @@ -441,16 +447,16 @@ if(WIN32) DEPENDS companion simulator opentx-simulators ${PROJECT_BINARY_DIR}/companion/companion.nsi COMMENT "Companion Windows NSIS Installer") - add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/companion/simulator-install.exe - COMMAND "${NSIS_EXE}" ARGS ${PROJECT_BINARY_DIR}/companion/simulator.nsi - DEPENDS simulator ${PROJECT_BINARY_DIR}/companion/simulator.nsi - COMMENT "Simulator Windows NSIS Installer") +# add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/companion/simulator-install.exe +# COMMAND "${NSIS_EXE}" ARGS ${PROJECT_BINARY_DIR}/companion/simulator.nsi +# DEPENDS simulator ${PROJECT_BINARY_DIR}/companion/simulator.nsi +# COMMENT "Simulator Windows NSIS Installer") add_custom_target(installer DEPENDS ${PROJECT_BINARY_DIR}/companion/companion-windows.exe - DEPENDS ${PROJECT_BINARY_DIR}/companion/simulator-windows.exe +# DEPENDS ${PROJECT_BINARY_DIR}/companion/simulator-windows.exe SOURCES ${PROJECT_BINARY_DIR}/companion/companion.nsi - SOURCES ${PROJECT_BINARY_DIR}/companion/simulator.nsi +# SOURCES ${PROJECT_BINARY_DIR}/companion/simulator.nsi ) endif() @@ -520,11 +526,6 @@ IF(APPLE) install(PROGRAMS ${DFU_UTIL_ABSOLUTE_PATH} ${AVRDUDE_ABSOLUTE_PATH} DESTINATION ${companion_res_dir} COMPONENT Runtime) set(bundle_tools_path "\${CMAKE_INSTALL_PREFIX}/${companion_res_dir}/dfu-util;\${CMAKE_INSTALL_PREFIX}/${companion_res_dir}/avrdude") - # These needs to be relative to CMAKE_INSTALL_PREFIX - get_target_property(QT_LIBRARY_DIR Qt5::Core LOCATION) - get_filename_component(QT_LIBRARY_DIR ${QT_LIBRARY_DIR} PATH) - get_filename_component(QT_LIBRARY_DIR "${QT_LIBRARY_DIR}/.." ABSOLUTE) - # Include depencies (adding frameworks, fixing the embbeded libraries) # I get write errors without setting BU_CHMOD_BUNDLE_ITEMS even though it is # technically a hack (that is already is in the Bundle library ...) @@ -532,7 +533,7 @@ IF(APPLE) include(BundleUtilities) file(GLOB bundle_simulator_libs \"\${CMAKE_INSTALL_PREFIX}/${companion_res_dir}/libopentx-*${CMAKE_SHARED_LIBRARY_SUFFIX}\") set(BU_CHMOD_BUNDLE_ITEMS on) - fixup_bundle(\"${APPS}\" \"\${bundle_simulator_libs};${bundle_qt_libs};${bundle_tools_path}\" \"${QT_LIBRARY_DIR}\") + fixup_bundle(\"${APPS}\" \"\${bundle_simulator_libs};${bundle_qt_libs};${bundle_tools_path}\" \"${QT_LIB_DIR}\") file(RENAME \"\${CMAKE_INSTALL_PREFIX}/${COMPANION_NAME}.app\" \"\${CMAKE_INSTALL_PREFIX}/${COMPANION_OSX_APP_BUNDLE_NAME}.app\") " COMPONENT Runtime) endif() diff --git a/companion/src/appdebugmessagehandler.cpp b/companion/src/appdebugmessagehandler.cpp index 816ad2057..ab2ee3858 100644 --- a/companion/src/appdebugmessagehandler.cpp +++ b/companion/src/appdebugmessagehandler.cpp @@ -98,7 +98,7 @@ void AppDebugMessageHandler::messageHandler(QtMsgType type, const QMessageLogCon qSetMessagePattern(msgPattern); - if (!m_defaultHandler || receivers(SIGNAL(messageOutput(quint8, const QString &, const QMessageLogContext &)))) { + if (!m_defaultHandler || receivers(SIGNAL(messageOutput(quint8, const QString &)))) { #if (QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)) msgPattern = qFormatLogMessage(type, context, msg); #else @@ -111,7 +111,7 @@ void AppDebugMessageHandler::messageHandler(QtMsgType type, const QMessageLogCon } #endif - emit messageOutput(lvl, msgPattern, context); + emit messageOutput(lvl, msgPattern); } // if (QThread::currentThread() == qApp->thread()) // gui thread diff --git a/companion/src/appdebugmessagehandler.h b/companion/src/appdebugmessagehandler.h index 1e79ef63e..648090b16 100644 --- a/companion/src/appdebugmessagehandler.h +++ b/companion/src/appdebugmessagehandler.h @@ -127,7 +127,7 @@ class AppDebugMessageHandler : public QObject bool m_showFunctionDeclarations; signals: - void messageOutput(quint8 level, const QString & msg, const QMessageLogContext & context); + void messageOutput(quint8 level, const QString & msg); }; // Message handler which is installed using qInstallMessageHandler. This needs to be global. diff --git a/companion/src/apppreferencesdialog.cpp b/companion/src/apppreferencesdialog.cpp index 8b46cd41e..c68d44332 100644 --- a/companion/src/apppreferencesdialog.cpp +++ b/companion/src/apppreferencesdialog.cpp @@ -67,7 +67,8 @@ void AppPreferencesDialog::writeValues() g.autoCheckFw(ui->autoCheckFirmware->isChecked()); g.showSplash(ui->showSplash->isChecked()); g.simuSW(ui->simuSW->isChecked()); - g.useWizard(ui->modelWizard_CB->isChecked()); + g.removeModelSlots(ui->opt_removeBlankSlots->isChecked()); + g.newModelAction(ui->opt_newMdl_useWizard->isChecked() ? 1 : ui->opt_newMdl_useEditor->isChecked() ? 2 : 0); g.historySize(ui->historySize->value()); g.backLight(ui->backLightColor->currentIndex()); g.profile[g.id()].volumeGain(round(ui->volumeGain->value() * 10.0)); @@ -77,7 +78,7 @@ void AppPreferencesDialog::writeValues() g.enableBackup(ui->backupEnable->isChecked()); if (ui->joystickChkB ->isChecked() && ui->joystickCB->isEnabled()) { - g.jsSupport(ui->joystickChkB ->isChecked()); + g.jsSupport(ui->joystickChkB ->isChecked()); g.jsCtrl(ui->joystickCB ->currentIndex()); } else { @@ -100,12 +101,13 @@ void AppPreferencesDialog::writeValues() g.profile[g.id()].name(ui->profileNameLE->text()); // If a new fw type has been choosen, several things need to reset - current_firmware_variant = getFirmwareVariant(); - QString id = current_firmware_variant->getId(); + Firmware::setCurrentVariant(getFirmwareVariant()); + QString id = Firmware::getCurrentVariant()->getId(); if (g.profile[g.id()].fwType() != id) { g.profile[g.id()].fwName(""); g.profile[g.id()].initFwVariables(); g.profile[g.id()].fwType(id); + emit firmwareProfileChanged(g.id()); } } @@ -148,7 +150,10 @@ void AppPreferencesDialog::initSettings() } ui->simuSW->setChecked(g.simuSW()); - ui->modelWizard_CB->setChecked(g.useWizard()); + ui->opt_removeBlankSlots->setChecked(g.removeModelSlots()); + ui->opt_newMdl_useNone->setChecked(g.newModelAction() == 0); + ui->opt_newMdl_useWizard->setChecked(g.newModelAction() == 1); + ui->opt_newMdl_useEditor->setChecked(g.newModelAction() == 2); ui->libraryPath->setText(g.libDir()); ui->ge_lineedit->setText(g.gePath()); @@ -193,7 +198,7 @@ void AppPreferencesDialog::initSettings() ui->joystickCB->setDisabled(true); ui->joystickcalButton->setDisabled(true); } -#endif +#endif // Profile Tab Inits ui->channelorderCB->setCurrentIndex(g.profile[g.id()].channelOrder()); ui->stickmodeCB->setCurrentIndex(g.profile[g.id()].defaultMode()); @@ -213,7 +218,6 @@ void AppPreferencesDialog::initSettings() } ui->profileNameLE->setText(g.profile[g.id()].name()); - ui->SplashFileName->setText(g.profile[g.id()].splashFile()); QString hwSettings; if (g.profile[g.id()].stickPotCalib() == "" ) { @@ -228,31 +232,14 @@ void AppPreferencesDialog::initSettings() } ui->lblGeneralSettings->setText(hwSettings); - Firmware * current_firmware = getCurrentFirmware(); - - if (!IS_HORUS(current_firmware->getBoard())) { - displayImage(g.profile[g.id()].splashFile()); - } - // TODO: Remove once splash replacement supported on Horus - // NOTE: 480x272 image causes issues on screens <800px high, needs a solution like scrolling once reinstated - else { - ui->imageLabel->hide(); - ui->splashLabel->hide(); - ui->SplashFileName->hide(); - ui->SplashSelect->hide(); - ui->SplashSelect->setEnabled(false); - ui->clearImageButton->hide(); - ui->clearImageButton->setEnabled(false); - ui->splashSeparator->hide(); - } - - foreach(Firmware * firmware, firmwares) { + QString currType = QStringList(g.profile[g.id()].fwType().split('-').mid(0, 2)).join('-'); + foreach(Firmware * firmware, Firmware::getRegisteredFirmwares()) { ui->downloadVerCB->addItem(firmware->getName(), firmware->getId()); - if (current_firmware->getFirmwareBase() == firmware) { + if (currType == firmware->getId()) { ui->downloadVerCB->setCurrentIndex(ui->downloadVerCB->count() - 1); } } - + baseFirmwareChanged(); } @@ -306,7 +293,7 @@ void AppPreferencesDialog::on_ge_pathButton_clicked() ui->ge_lineedit->setText(fileName); } } - + #if defined(JOYSTICKS) void AppPreferencesDialog::on_joystickChkB_clicked() { if (ui->joystickChkB->isChecked()) { @@ -350,27 +337,18 @@ void AppPreferencesDialog::on_sdPathButton_clicked() } } -void AppPreferencesDialog::on_removeProfileButton_clicked() -{ - if ( g.id() == 0 ) { - QMessageBox::information(this, tr("Not possible to remove profile"), tr("The default profile can not be removed.")); - } - else { - g.profile[g.id()].remove(); - g.id( 0 ); - initSettings(); - } -} - bool AppPreferencesDialog::displayImage(const QString & fileName) { // Start by clearing the label ui->imageLabel->clear(); - QImage image(fileName); - if (image.isNull()) + if (fileName.isEmpty()) return false; - + + QImage image(fileName); + if (image.isNull()) + return false; + ui->imageLabel->setPixmap(makePixMap(image)); ui->imageLabel->setFixedSize(getCurrentFirmware()->getCapability(LcdWidth), getCurrentFirmware()->getCapability(LcdHeight)); return true; @@ -388,7 +366,7 @@ void AppPreferencesDialog::on_SplashSelect_clicked() if (!fileName.isEmpty()){ g.imagesDir(QFileInfo(fileName).dir().absolutePath()); - + displayImage(fileName); ui->SplashFileName->setText(fileName); } @@ -405,14 +383,13 @@ void AppPreferencesDialog::showVoice(bool show) { ui->voiceLabel->setVisible(show); ui->voiceCombo->setVisible(show); - QTimer::singleShot(0, this, SLOT(shrink())); } void AppPreferencesDialog::baseFirmwareChanged() { - QVariant selected_firmware = ui->downloadVerCB->itemData(ui->downloadVerCB->currentIndex()); + QString selected_firmware = ui->downloadVerCB->currentData().toString(); - foreach(Firmware * firmware, firmwares) { + foreach(Firmware * firmware, Firmware::getRegisteredFirmwares()) { if (firmware->getId() == selected_firmware) { populateFirmwareOptions(firmware); break; @@ -422,31 +399,31 @@ void AppPreferencesDialog::baseFirmwareChanged() Firmware * AppPreferencesDialog::getFirmwareVariant() { - QVariant selected_firmware = ui->downloadVerCB->itemData(ui->downloadVerCB->currentIndex()); + QString selected_firmware = ui->downloadVerCB->currentData().toString(); - foreach(Firmware * firmware, firmwares) { + foreach(Firmware * firmware, Firmware::getRegisteredFirmwares()) { QString id = firmware->getId(); if (id == selected_firmware) { foreach(QCheckBox *cb, optionsCheckBoxes) { if (cb->isChecked()) { - id += QString("-") + cb->text(); + id += "-" + cb->text(); } } if (voice && voice->isChecked()) { - id += QString("-tts") + ui->voiceCombo->currentText(); + id += "-tts" + ui->voiceCombo->currentText(); } if (ui->langCombo->count()) { - id += QString("-") + ui->langCombo->currentText(); + id += "-" + ui->langCombo->currentText(); } - return getFirmware(id); + return Firmware::getFirmwareForId(id); } } // Should never occur... - return default_firmware_variant; + return Firmware::getDefaultVariant(); } void AppPreferencesDialog::firmwareOptionChanged(bool state) @@ -457,8 +434,8 @@ void AppPreferencesDialog::firmwareOptionChanged(bool state) } Firmware * firmware=NULL; if (cb && state) { - QVariant selected_firmware = ui->downloadVerCB->itemData(ui->downloadVerCB->currentIndex()); - foreach(firmware, firmwares) { + QVariant selected_firmware = ui->downloadVerCB->currentData(); + foreach(firmware, Firmware::getRegisteredFirmwares()) { if (firmware->getId() == selected_firmware) { foreach(QList