diff --git a/.gitmodules b/.gitmodules
index a761ef67a..284113d48 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,6 @@
[submodule "radio/src/thirdparty/GCS_MAVLink/include_v1.0"]
path = radio/src/thirdparty/GCS_MAVLink/include_v1.0
url = https://github.com/mavlink/c_library_v1.git
+[submodule "radio/src/thirdparty/libopenui"]
+ path = radio/src/thirdparty/libopenui
+ url = git@github.com:opentx/libopenui.git
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b7a0a982f..75f96175e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -34,6 +34,7 @@ set(RADIO_DIRECTORY ${PROJECT_SOURCE_DIR}/radio)
set(RADIO_SRC_DIRECTORY ${RADIO_DIRECTORY}/src)
set(COMPANION_SRC_DIRECTORY ${PROJECT_SOURCE_DIR}/companion/src)
set(SIMU_SRC_DIRECTORY ${COMPANION_SRC_DIRECTORY}/simulation)
+set(TOOLS_DIRECTORY ${PROJECT_SOURCE_DIR}/tools)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
@@ -44,7 +45,7 @@ today(DATE)
now(TIME)
git_id(GIT_STR)
-message(STATUS "OpenTX ${VERSION} @${GIT_STR}")
+message(STATUS "OpenTX ${VERSION} @ ${GIT_STR}")
# options shared by all targets
diff --git a/cmake/Bitmaps.cmake b/cmake/Bitmaps.cmake
index df61adde4..65387b6d1 100644
--- a/cmake/Bitmaps.cmake
+++ b/cmake/Bitmaps.cmake
@@ -14,12 +14,14 @@ macro(add_bitmaps_target targetname filter width format)
add_custom_target(${targetname} DEPENDS ${bitmaps_files})
endmacro()
-macro(add_truetype_font_target name font size offset)
+macro(add_truetype_font_target name size subset font offset cn_font cn_offset)
set(target ${RADIO_SRC_DIRECTORY}/fonts/truetype/font_${name})
- add_custom_target(truetype_font_${name}
- COMMAND ${PYTHON_EXECUTABLE} ${RADIO_DIRECTORY}/util/font2png.py ${font} ${size} ${offset} ${target}
+ add_custom_command(
+ OUTPUT ${target}.png ${target}.specs
+ COMMAND ${PYTHON_EXECUTABLE} ${TOOLS_DIRECTORY}/build-font-bitmap.py --subset ${subset} --size ${size} --font ${font}:${offset} --cn-font ${cn_font}:${cn_offset} --output ${target}
WORKING_DIRECTORY ${RADIO_SRC_DIRECTORY}
- DEPENDS ${RADIO_DIRECTORY}/util/font2png.py
+ DEPENDS ${TOOLS_DIRECTORY}/build-font-bitmap.py ${TOOLS_DIRECTORY}/charset.py ${RADIO_SRC_DIRECTORY}/translations/cn.h.txt
)
+ add_custom_target(truetype_font_${name} DEPENDS ${target}.png ${target}.specs)
set(truetype_fonts_targets ${truetype_fonts_targets} truetype_font_${name})
endmacro()
diff --git a/companion/src/translations/companion_cs.ts b/companion/src/translations/companion_cs.ts
index d309f5076..ed4e492d8 100644
--- a/companion/src/translations/companion_cs.ts
+++ b/companion/src/translations/companion_cs.ts
@@ -93,41 +93,97 @@
AppPreferencesDialog
+
+
+
+
+
+
+
Edit Settings
Upravit nastavení předvoleb
+
+
+
+
+
+
+
Radio Profile
Profil rádia
+
+
+
+
+
+
+
Default Channel Order
Výchozí pořadí kanálů
+
+
+
+
+
+
+
Build Options
Volby sestavení firmware
+
+
+
+
+
+
+
Menu Language
Jazyk menu
+
+
+
+
+
+
+
Default Stick Mode
Výchozí mód vysílačky
+
+
+
+
+
+
+
Select Image
Vybrat obrázek
+
+
+
+
+
+
+
Mode selection:
Mode 1:
@@ -169,172 +225,417 @@ Mode 4:
+
+
+
+
+
+
+
Mode 1 (RUD ELE THR AIL)
Mód1 (Směr.Výšk.Plyn.Křid)
+
+
+
+
+
+
+
Mode 2 (RUD THR ELE AIL)
Mód2 (Směr.Plyn.Výšk.Křid)
+
+
+
+
+
+
+
Mode 3 (AIL ELE THR RUD)
Mód3 (Křid.Výšk.Plyn.Směr)
+
+
+
+
+
+
+
Mode 4 (AIL THR ELE RUD)
Mód4 (Křid.Plyn.Výšk.Směr)
+
+
+
+
+
+
+
Splash Screen
Úvodní logo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The profile specific folder, if set, will override general Backup folder
Specifická složka profilu, pokud je nastavena, bude použita místo výchozí složky z nastavení aplikace
+
+
+
+
+
+
+
Backup folder
Složka pro zálohy
+
+
+
+
+
+
+
If set it will override the application general setting
Pokud je nastavena, bude použita místo výchozí složky z nastavení aplikace
+
+
+
+
+
+
+
if set, will override general backup enable
Pokud je nastaveno, bude použito místo výchozí volby z nastavení aplikace
+
+
+
+
+
+
+
<html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html>
<html><head/><body><p>Pořadí kanálů</p><p><br/></p><p>Definuje výchozí pořadí kanálů použité při vytvoření nového modelu.</p></body></html>
+
+
+
+
+
+
+
R E T A
S V P K
+
+
+
+
+
+
+
R E A T
S V K P
+
+
+
+
+
+
+
R T E A
S P V K
+
+
+
+
+
+
+
R T A E
S P K V
+
+
+
+
+
+
+
R A E T
S K V P
+
+
+
+
+
+
+
R A T E
S K P V
+
+
+
+
+
+
+
E R T A
V S P K
+
+
+
+
+
+
+
E R A T
V S K P
+
+
+
+
+
+
+
E T R A
V P S K
+
+
+
+
+
+
+
E T A R
V P K S
+
+
+
+
+
+
+
E A R T
V K S P
+
+
+
+
+
+
+
E A T R
V K P S
+
+
+
+
+
+
+
T R E A
P S V K
+
+
+
+
+
+
+
T R A E
P S K V
+
+
+
+
+
+
+
T E R A
P V S K
+
+
+
+
+
+
+
T E A R
P V K S
+
+
+
+
+
+
+
T A R E
P K S V
+
+
+
+
+
+
+
T A E R
P K V S
+
+
+
+
+
+
+
A R E T
K S V P
+
+
+
+
+
+
+
A R T E
K S P V
+
+
+
+
+
+
+
A E R T
K V S P
+
+
+
+
+
+
+
A E T R
K V P S
+
+
+
+
+
+
+
A T R E
K P S V
+
+
+
+
+
+
+
A T E R
K P V S
@@ -345,272 +646,680 @@ Mode 4:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Select Folder
Vybrat složku
+
+
+
+
+
+
+
Select Executable
Vybrat
+
+
+
+
Release channel
+
+
+
+
Releases (stable)
+
+
+
+
Release candidates (testing)
+
+
+
+
Nightly builds (unstable)
+
+
+
+
+
+
+
Simulator Volume Gain
Zisk hlasitosti simulátoru
+
+
+
+
+
+
+
Profile Name
Název profilu
+
+
+
+
+
+
+
Clear Image
Odstranit
+
+
+
+
+
+
+
Append version number to FW file name
Přidat číslo verze do názvu souboru staženého firmwaru
+
+
+
+
+
+
+
Offer to write FW to Tx after download
Po stažení firmwaru nabídnout okamžité zapsání do rádia
+
+
+
+
+
+
+
Radio Type
Typ rádia
+
+
+
+
+
+
+
Other Settings
Ostatní volby
+
+
+
+
+
+
+
General Settings
Obecná nastavení
+
+
+
+
+
+
+
SD Structure path
Cesta k obsahu SD karty
+
+
+
+
+
+
+
Application Settings
Nastavení aplikace
+
+
+
+
+
+
+
Show splash screen when Companion starts
Zobrazit úvodní logo Companion
+
+
+
+
+
+
+
Automatic check for Companion updates
Automatická kontrola aktualizací Companion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Enable automatic backup before writing firmware
Automatická záloha před zápisem firmwaru
+
+
+
+
+
+
+
Automatic check for OpenTX firmware updates
Automatická kontrola aktualizací OpenTX firmwaru
+
+
+
+
+
+
+
Splash Screen Library
Knihovna s úvodními logy
+
+
+
+
+
+
+
Google Earth Executable
Spustitelný soubor Google Earth
+
+
+
+
+
+
+
Only show user splash images
Zobrazit jen vlastní loga
+
+
+
+
+
+
+
Show user and companion splash images
Zobrazit vlastní loga i loga Companion
+
+
+
+
+
+
+
User Splash Screens
Cesta k vlastním souborům
+
+
+
+
+
+
+
Automatic Backup Folder
Složka pro automatické zálohy
+
+
+
+
+
+
+
Simulator Settings
Nastavení simulátoru
+
+
+
+
+
+
+
Simulator BackLight
Barva podsvětlení Simu
+
+
+
+
+
+
+
Enable
Povolit
+
+
+
+
+
+
+
Action on New Model
Vytvoření nového modelu
+
+
+
+
+
+
+
<html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html>
<html><head/><body><p>Tato možnost zachovává chování ze starších verzí OpenTx, kde jsou prázdné pozice modelů zachovány při vymazání nebo přesunutí modelu.</p></body></html>
+
+
+
+
+
+
+
most recently used files
+
+
+
+
+
+
+
Startup Settings
+
+
+
+
+
+
+
Remember
+
+
+
+
+
+
+
Output Logs Folder
+
+
+
+
+
+
+
Remove empty model slots when deleting models (only applies for radios w/out categories)
Odstranění prázdných pozic při mazání modelů (pouze pro rádia bez kategorií)
+
+
+
+
+
+
+
Use model wizard
Použít průvodce
+
+
+
+
+
+
+
Open model editor
Otevřít editor modelu
+
+
+
+
+
+
+
Just create the model
Jen vytvořit model
+
+
+
+
+
+
+
Debug Output Logging
+
+
+
+
+
+
+
<html><head/><body><p>Keep a log of all debugging messages generated by the desktop Companion/Simulator applications. An OpenTX developer may request this to help diagnose an issue.</p></body></html>
+
+
+
+
+
+
+
Application (Companion/Simulator)
+
+
+
+
+
+
+
<html><head/><body><p>Keep a log of all messages generated by the radio firmware when running in Simulator. This is the same information one would also see in the Simulator <span style=" font-style:italic;">Debug Output</span> window.</p></body></html>
+
+
+
+
+
+
+
Radio Firmware (in Simulator)
+
+
+
+
+
+
+
Blue
Modrá
+
+
+
+
+
+
+
Green
Zelená
+
+
+
+
+
+
+
Red
Červená
+
+
+
+
+
+
+
Orange
Oranžová
+
+
+
+
+
+
+
Yellow
Žlutá
+
+
+
+
+
+
+
Screenshot capture folder
+
+
+
+
+
+
+
Joystick
+
+
+
+
+
+
+
Calibrate
Kalibrovat
+
+
+
+
+
+
+
Only capture to clipboard
Kopírovat pouze do schránky
+
+
+
+
+
+
+
Remember simulator switch values
Pamatovat si polohy přepínačů v simulátoru
@@ -691,6 +1400,31 @@ Mode 4:
Images (%1)
Obrázky (%1)
+
+
+
+
+ Use releases (stable)
+
+
+
+
+ Use release candidates (testing)
+
+
+
+
+
+
+ Use nightly builds (unstable)
+
+
+
+
+
+ Use releases and release candidates (testing)
+
+
BinEepromFormat
@@ -910,36 +1644,85 @@ Mode 4:
ChecklistDialog
+
+
+
+
+
+
+
Edit Checklist
+
+
+
+
+
+
+
Line nn, Col nn
+
+
+
+
+
+
+
&Import...
+
+
+
+
+
+
+
&Cancel
+
+
+
+
+
+
+
&OK
+
+
+
+
+
+
+
Please note, the maximum width displayable is radio model limited. Also, renaming the model will break the link to this checklist file.
+
+
+
+
+
+
+
File: unknown
@@ -1185,31 +1968,73 @@ If you have a settings backup file, you may import that instead.
CompareDialog
+
+
+
+
+
+
+
Compare Models
+
+
+
+
+
+
+
To compare models, drag and drop them anywhere in this window.
Chcete-li porovnat modely, přetáhněte je do tohoto okna.
+
+
+
+
+
+
+
Close
Zavřít
+
+
+
+
+
+
+
Style
+
+
+
+
+
+
+
Print
Tisk
+
+
+
+
+
+
+
Print to file
Tisk do souboru
@@ -1367,87 +2192,213 @@ Thomasi Hustererovi (th9x) a také Erazovi Ravivovi(er9x a eePe)
Curves
+
+
+
+
+
+
+
Fixed X
Rastr-X
+
+
+
+
+
+
+
Custom X
Volná-XY
+
+
+
+
+
+
+
Lines
Čáry
+
+
+
+
+
+
+
Smooth
Hladká
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Curve type
Typ křivky
+
+
+
+
+
+
+
Curve Creator
Generátor křivek
+
+
+
+
+
+
+
Y at X=0
Y v X=0
+
+
+
+
+
+
+
Point size
+
+
+
+
+
+
+
Y at X=100
Y v X=100
+
+
+
+
+
+
+
Both
Obě
+
+
+
+
+
+
+
x>0
+
+
+
+
+
+
+
x<0
+
+
+
+
+
+
+
Apply
Vygenerovat
+
+
+
+
+
+
+
Side
Strana
+
+
+
+
+
+
+
Y at X=-100
Y v X=-100
+
+
+
+
+
+
+
Coefficient
Koeficient
+
+
+
+
+
+
+
Curve name
Název křivky
@@ -1861,42 +2812,133 @@ Thomasi Hustererovi (th9x) a také Erazovi Ravivovi(er9x a eePe)
CustomizeSplashDialog
+
+
+
+
+
+
+
Transmitter Splash Screen Editor
Editor úvodního loga rádia
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Invert
Invertovat
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load FW
Otevřít FW
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load Pict
Otevřít obrázek
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load Profile
Otevřít profil
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Save
Uložit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Open Splash Library
Otevřít knihovnu s logy
@@ -1905,6 +2947,34 @@ Thomasi Hustererovi (th9x) a také Erazovi Ravivovi(er9x a eePe)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
@@ -2020,48 +3090,48 @@ Thomasi Hustererovi (th9x) a také Erazovi Ravivovi(er9x a eePe)
-
+
Switch
Spínač
-
+
Switch
Spínač
-
+
cannot be exported on this board!
-na této desce nelze exportovat!
-
+
Source
Zdroj
-
+
Source %1 cannot be exported on this board!
Zdroj %1 nelze na této desce exportovat!
-
+
OpenTX only accepts %1 points in all curves
V OpenTX je možné zadat pouze %1 bodů dohromady ve všech křivkách
-
+
OpenTx only accepts %1 points in all curves
V OpenTX je možné zadat pouze %1 bodů dohromady ve všech křivkách
-
-
+
+
OpenTX on this board doesn't accept this function
OpenTX nepodporuje tuto funkci na této zákl. desce
-
+
OpenTX doesn't accept this radio protocol
OpenTX nepodporuje tento protokol
@@ -2070,25 +3140,57 @@ Thomasi Hustererovi (th9x) a také Erazovi Ravivovi(er9x a eePe)
DebugOutput
-
+
+
+
+
+
+
+
+
+
Debug Output
Výstup ladění
-
+
+
+
+
+
+
+
+
+
<html><head/><body><p>Enable or disable the filter. If the button won't stay enabled, it is likely there is a syntax error in the Regular Expression entered.</p></body></html>
<html><head/><body><p>Povolí nebo zakaže filtr. Pokud tlačítko nezůstane zapnuto, je pravděpodobné, že byla zadána chyba syntaxe v zadaném regulárním výrazu.</p></body></html>
-
+
+
+
+
+
+
+
+
+
Filter:
Filtr:
-
+
+
+
+
+
+
+
+
+
<html><head/><body><p>Enter filter text here. Click the help/info button for details about using the filter. </p><p>
To <b>remove a remembered entry</b> from the filter list, first choose it, and then press <code>Shift-Delete</code> (or <code>Shift-Backspace</code>) key combination.</p></body></html>
<html><head/><body><p>Zde vložte text filtru. Klikněte na tlačítko nápovědy / info pro podrobnosti o použití filtru.</p><p>
@@ -2096,61 +3198,141 @@ Pro <b>odstranění uloženého záznamu</b> ze seznamu filtrů, zá
-
+
+
+
+
+
+
+
+
+
Buffer:
-
+
+
+
+
+
+
+
+
+
Number of lines to keep in display.
Počet řádků, které mají být zobrazeny.
-
+
+
+
+
+
+
+
+
+
Filter &Help
&Nápověda Filtru
-
+
+
+
+
+
+
+
+
+
Show information about using the filter.
Zobrazí informace o použití filtru.
-
+
+
+
+
+
+
+
+
+
Word &Wrap
&Zalamování textu
-
+
+
+
+
+
+
+
+
+
Toggle word wrapping on/off.
Zapne / vypne zalamování textu.
-
+
+
+
+
+
+
+
+
+
&Clear
&Vymazat
-
+
+
+
+
+
+
+
+
+
Clear the output window of all text.
Vymaže veškerý text ve výstupním okně.
-
+
+
+
+
+
+
+
+
+
Enable &Filter
Povolit &Filtr
-
+
+
+
+
+
+
+
+
+
Turn the filter on/off.
Zapne / vypne filtr.
@@ -2169,6 +3351,13 @@ Pro <b>odstranění uloženého záznamu</b> ze seznamu filtrů, zá
DownloadDialog
+
+
+
+
+
+
+
Downloading:
Stahuji:
@@ -2312,26 +3501,61 @@ Pro <b>odstranění uloženého záznamu</b> ze seznamu filtrů, zá
ExpoDialog
+
+
+
+
+
+
+
Weight
Váha
+
+
+
+
+
+
+
Curve
Křivka
+
+
+
+
+
+
+
Offset
Ofset
+
+
+
+
+
+
+
The source for the mixer
Zdroj pro mix
+
+
+
+
+
+
+
Input name
Název
@@ -2339,61 +3563,159 @@ Pro <b>odstranění uloženého záznamu</b> ze seznamu filtrů, zá
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
GV
GP
+
+
+
+
+
+
+
Flight modes
Letové režimy
+
+
+
+
+
+
+
Switch
Spínač
+
+
+
+
+
+
+
Scale
Měřítko
+
+
+
+
+
+
+
Include Trim
Použít trim
+
+
+
+
+
+
+
No
Ne
+
+
+
+
+
+
+
Yes
Ano
+
+
+
+
+
+
+
Source
Zdroj
+
+
+
+
+
+
+
Line name
Popis
+
+
+
+
+
+
+
Stick Side
Strana páky
+
+
+
+
+
+
+
Source for the mixer.
Zdroj pro mixer.
+
+
+
+
+
+
+
Switch used to enable the line.
If blank then the input is considered to be "ON" all the time.
Spínač aktivující tento vstup.
@@ -2401,21 +3723,49 @@ Pokud není použito, vstup je AKTIVNÍ stále.
+
+
+
+
+
+
+
NEG
x<0(Negativní)
+
+
+
+
+
+
+
POS
x>0(Pozitivní)
+
+
+
+
+
+
+
ALL
Obě
+
+
+
+
+
+
+
Curve applied to the source.
Křivka která se aplikuje na zdroj.
@@ -3076,31 +4426,73 @@ zobrazeny normálním písmem
FirmwarePreferencesDialog
+
+
+
+
+
+
+
Downloads
+
+
+
+
+
+
+
Check for updates
Zkontrolovat aktualizace
+
+
+
+
+
+
+
Firmware
+
+
+
+
+
+
+
Download firmware
Stáhnout firmware
+
+
+
+
+
+
+
Download SD contents
Stáhnout obsah SD karty
+
+
+
+
+
+
+
Latest Download
Naposledy staženo
@@ -3142,67 +4534,158 @@ zobrazeny normálním písmem
FlashEEpromDialog
+
+
+
+
+
+
+
Write Models and Settings to Radio
Zapsat modely a nastavení do rádia
+
+
+
+
+
+
+
Load...
Otevřít...
+
+
+
+
+
+
+
Current Profile
Současný profil
+
+
+
+
+
+
+
Allows Companion to write to older version of the firmware
Umožní Companion zapisovat do starší verze firmware
+
+
+
+
+
+
+
Check Firmware compatibility
Zkontrolovat kompatibilitu firmware
+
+
+
+
+
+
+
<html><head/><body><p>Saves a dated copy of your eeprom to the backup folder you specified in the Companion settings before writing the current model to the radio.</p></body></html>
<html><head/><body><p>Uloží datovanou kopii vaší eeprom do složky pro zálohování, kterou jste zadali v nastavení Companion, před zapsáním aktuálního modelu do rádia.</p></body></html>
+
+
+
+
+
+
+
Backup before Write
Zálohovat před zápisem
+
+
+
+
+
+
+
<html><head/><body><p>Modify calibration parameters using settings from current profile</p></body></html>
<html><head/><body><p>Upraví hodnoty kalibrace použitím parametrů ze současného profilu</p></body></html>
+
+
+
+
+
+
+
Patch calibration setting from profile
Zaměnit hodnoty kalibrace za hodnoty z profilu
+
+
+
+
+
+
+
<html><head/><body><p>Modify HW parameters using settings from current profile</p></body></html>
<html><head/><body><p>Upraví HW parametery pomocí nastavení současného profilu</p></body></html>
+
+
+
+
+
+
+
Patch HW settings from profile
Zaměnit hodnoty HW nastavení za hodnoty z profilu
+
+
+
+
+
+
+
Cancel
Zrušit
+
+
+
+
+
+
+
Write to TX
Zapsat do rádia
@@ -3260,71 +4743,169 @@ zobrazeny normálním písmem
FlashFirmwareDialog
+
+
+
+
+
+
+
Flash Firmware
Zápis firmware
+
+
+
+
+
+
+
Load...
Otevřít...
+
+
+
+
+
+
+
Date & Time
Datum a čas
+
+
+
+
+
+
+
Variant
Varianta
+
+
+
+
+
+
+
Version
Verze
+
+
+
+
+
+
+
Use profile start screen
Použít logo z nastavení profilu
+
+
+
+
+
+
+
Use firmware start screen
Použít logo z firmwaru
+
+
+
+
+
+
+
Use library start screen
Použít logo z knihovny
+
+
+
+
+
+
+
Use another start screen
Použít jiné logo
+
+
+
+
+
+
+
Allows Companion to write to older version of the firmware
Umožní Companion zapisovat do starší verze firmware
+
+
+
+
+
+
+
Check Hardware compatibility
Zkontrolovat hardwarovou kompatibilitu rádia
+
+
+
+
+
+
+
Backup and restore Models and Settings
Zálohovat a obnovit data modelů a nastavení
+
+
+
+
+
+
+
Cancel
Zrušit
+
+
+
+
+
+
+
Write to TX
Zapsat do rádia
@@ -3524,21 +5105,49 @@ Nyní používáte:
FlightMode
+
+
+
+
+
+
+
Fade In
Přechod při aktivaci
+
+
+
+
+
+
+
Fade Out
Přechod při deaktivaci
+
+
+
+
+
+
+
Name
Název
+
+
+
+
+
+
+
Switch
Spínač
@@ -3728,11 +5337,25 @@ Nyní používáte:
FusesDialog
+
+
+
+
+
+
+
Fuses
Pojistky mikrokontroléru
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3750,11 +5373,25 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Read Fuses
Načíst konfiguraci pojistek
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3774,6 +5411,13 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Reset Fuses
EEPROM - PROTECT
Nastavení pojistek
@@ -3781,6 +5425,13 @@ EEPROM - CHRÁNIT
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3800,6 +5451,13 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Reset Fuses
EEPROM - DELETE
Nastavení pojistek
@@ -3807,6 +5465,13 @@ EEPROM - SMAZAT
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3883,21 +5548,49 @@ p, li { white-space: pre-wrap; }
GeneralEdit
+
+
+
+
+
+
+
Store calib. and hw settings in selected profile
Uložit kalibraci a HW nastavení do vybraného profilu
+
+
+
+
+
+
+
Retrieve calib. and hw settings from profile
Získat kalibraci a HW nastavení z profilu
+
+
+
+
+
+
+
Radio settings
Nastavení rádia
+
+
+
+
+
+
+
General settings used throught the transmitter.
These will be relevant for all models in the same EEPROM.
Obecná nastavení rádia.
@@ -3966,127 +5659,309 @@ Tyto volby jsou platné pro všechny modely v jedné EEPROM.
GeneralSetup
+
+
+
+
+
+
+
Form
+
+
+
+
+
+
+
Readonly Unlock
+
+
+
+
+
+
+
SC
+
+
+
+
+
+
+
SE
+
+
+
+
+
+
+
SA
+
+
+
+
+
+
+
SF
+
+
+
+
+
+
+
SH
+
+
+
+
+
+
+
SD
+
+
+
+
+
+
+
SB
+
+
+
+
+
+
+
SG
+
+
+
+
+
+
+
Timeshift from UTC
Časový posun od UTC
+
+
+
+
+
+
+
Voice Language
Jazyk hlasových zpráv
+
+
+
+
+
+
+
Country Code
Kód země
+
+
+
+
+
+
+
Stick reverse
Revers os kniplů
+
+
+
+
+
+
+
FAI Mode
FAI mód
+
+
+
+
+
+
+
Adjust RTC
Nastavit RTC
+
+
+
+
+
+
+
Vario pitch at max
Tón varia na maximu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Hz
+
+
+
+
+
+
+
Speaker Volume
Hlasitost reproduktoru
+
+
+
+
+
+
+
Backlight Switch
Spínač podsvětlení
+
+
+
+
+
+
+
Sound Mode
Mód zvuku
+
+
+
+
+
+
+
Color 1
Barva 1
+
+
+
+
+
+
+
Color 2
Barva 2
+
+
+
+
+
+
+
Speaker Pitch (spkr only)
Tón zvuku (pouze spkr)
+
+
+
+
+
+
+
If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds.
Pokud tato hodnota není nula, každé stisknutí klávesy zapne podsvétlení a vypne ho až po uplynutí nastaveného počtu sekund.
@@ -4094,82 +5969,209 @@ Tyto volby jsou platné pro všechny modely v jedné EEPROM.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
sec
s
+
+
+
+
+
+
+
Backlight color
Barva podsvětlení
+
+
+
+
+
+
+
Beeper
Bzučák
+
+
+
+
+
+
+
Speaker
Reproduktor
+
+
+
+
+
+
+
BeeperVoice
Bzučák+Hlas
+
+
+
+
+
+
+
SpeakerVoice
Repro+Hlas
+
+
+
+
+
+
+
Beep volume
Upozornění
+
+
+
+
+
+
+
Wav volume
Wav soubor
+
+
+
+
+
+
+
Vario volume
Vario
+
+
+
+
+
+
+
Background volume
Zvuk v pozadí
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ms
+
+
+
+
+
+
+
Backlight Auto OFF after
Auto. vypnutí podsvětlení po
+
+
+
+
+
+
+
Backlight flash on alarm
Blik. podsvětlením při alarmu
+
+
+
+
+
+
+
Vario pitch at zero
Tón varia na nule
+
+
+
+
+
+
+
Vario repeat at zero
Opakování varia na nule
+
+
+
+
+
+
+
This is the switch selectrion for turning on the backlight (if installed).
@@ -4178,6 +6180,20 @@ Tyto volby jsou platné pro všechny modely v jedné EEPROM.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -4193,41 +6209,97 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Backlight Brightness
Jas podsvětlení
+
+
+
+
+
+
+
RotEnc Navigation
Navigace otočným enkodérem
+
+
+
+
+
+
+
Automatically adjust the radio's clock if a GPS is connected to telemetry.
Automaticky nastaví hodiny rádia, pokud je k telemetrii připojen GPS.
+
+
+
+
+
+
+
America
Amerika
+
+
+
+
+
+
+
Japan
Japonsko
+
+
+
+
+
+
+
Europe
Evropa
+
+
+
+
+
+
+
Backlight OFF Brightness
Jas vypnutého podsvětlení
+
+
+
+
+
+
+
Mode selection:
Mode 1:
@@ -4269,346 +6341,845 @@ Mode 4:
+
+
+
+
+
+
+
Mode 1 (RUD ELE THR AIL)
Mód1 (Směr.Výšk.Plyn.Křid)
+
+
+
+
+
+
+
Mode 2 (RUD THR ELE AIL)
Mód2 (Směr.Plyn.Výšk.Křid)
+
+
+
+
+
+
+
Mode 3 (AIL ELE THR RUD)
Mód3 (Křid.Výšk.Plyn.Směr)
+
+
+
+
+
+
+
Mode 4 (AIL THR ELE RUD)
Mód4 (Křid.Plyn.Výšk.Směr)
+
+
+
+
+
+
+
<html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html>
<html><head/><body><p>Pořadí kanálů</p><p><br/></p><p>Definuje výchozí pořadí kanálů použité při vytvoření nového modelu.</p></body></html>
+
+
+
+
+
+
+
If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio.
+
+
+
+
+
+
+
RSSI Poweroff Warning
+
+
+
+
+
+
+
Low EEPROM Warning
+
+
+
+
Owner Registration ID
+
+
+
+
aaaaaaAA
+
+
+
+
+
+
+
R E T A
S V P K
+
+
+
+
+
+
+
R E A T
S V K P
+
+
+
+
+
+
+
R T E A
S P V K
+
+
+
+
+
+
+
R T A E
S P K V
+
+
+
+
+
+
+
R A E T
S K V P
+
+
+
+
+
+
+
R A T E
S K P V
+
+
+
+
+
+
+
E R T A
V S P K
+
+
+
+
+
+
+
E R A T
V S K P
+
+
+
+
+
+
+
E T R A
V P S K
+
+
+
+
+
+
+
E T A R
V P K S
+
+
+
+
+
+
+
E A R T
V K S P
+
+
+
+
+
+
+
E A T R
V K P S
+
+
+
+
+
+
+
T R E A
P S V K
+
+
+
+
+
+
+
T R A E
P S K V
+
+
+
+
+
+
+
T E R A
P V S K
+
+
+
+
+
+
+
T E A R
P V K S
+
+
+
+
+
+
+
T A R E
P K S V
+
+
+
+
+
+
+
T A E R
P K V S
+
+
+
+
+
+
+
A R E T
K S V P
+
+
+
+
+
+
+
A R T E
K S P V
+
+
+
+
+
+
+
A E R T
K V S P
+
+
+
+
+
+
+
A E T R
K V P S
+
+
+
+
+
+
+
A T R E
K P S V
+
+
+
+
+
+
+
A T E R
K P V S
+
+
+
+
Power On Delay
+
+
+
+
+
+
+
Jack Mode
+
+
+
+
+
+
+
Audio
+
+
+
+
+
+
+
Trainer
Trenér
+
+
+
+
+
+
+
DMS
+
+
+
+
+
+
+
USB Mode
+
+
+
+
Power Off Delay
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Ask on Connect
+
+
+
+
+
+
+
Joystick (HID)
+
+
+
+
+
+
+
USB Mass Storage
+
+
+
+
+
+
+
USB Serial (CDC)
+
+
+
+
+
+
+
Stick Mode
Výchozí mód vysílačky
+
+
+
+
+
+
+
Metric
Metrické
+
+
+
+
+
+
+
Imperial
Imperiální
+
+
+
+
+
+
+
Default Channel Order
Výchozí pořadí kanálů
+
+
+
+
+
+
+
GPS Coordinates
Souřadnice GPS
+
+
+
+
+
+
+
Min
+
+
+
+
+
+
+
+
+
+
+
+
+
+
v
V
+
+
+
+
+
+
+
Max
+
+
+
+
+
+
+
Inactivity Timer
Časovač nečinnosti
+
+
+
+
+
+
+
Show Splash Screen on Startup
Zobrazit úvodní logo
+
+
+
+
+
+
+
Contrast
Kontrast
+
+
+
+
+
+
+
Battery Meter Range
Rozsah ukazatele baterie
+
+
+
+
+
+
+
Haptic Strength
Síla vibrací
+
+
+
+
+
+
+
LCD Display Type
Typ LCD zobrazovače
+
+
+
+
+
+
+
"No Sound" Warning
Upozornění na vypnutý zvuk
+
+
+
+
+
+
+
Battery Warning
Alarm baterie
+
+
+
+
+
+
+
Haptic Length
Délka vibrací
+
+
+
+
+
+
+
MAVLink Baud Rate
Přenosová rychlost MAVLink
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Quiet
Tichý
+
+
+
+
+
+
+
Only Alarms
Jen alarm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
No Keys
Bez kláves
+
+
+
+
+
+
+
+
+
+
+
+
+
+
All
Vše
+
+
+
+
+
+
+
Battery warning voltage.
This is the threashhold where the battery warning sounds.
@@ -4618,107 +7189,261 @@ Použitelné hodnoty jsou 5v..10v
+
+
+
+
+
+
+
Standard
+
+
+
+
+
+
+
Optrex
+
+
+
+
+
+
+
If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes.
Pokud není nastaveno na nulu, bude zapnuto zvukové upozornění, že jste rádio nechali bez povšimnutí nastavený počet minut.
+
+
+
+
+
+
+
min
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Show splash screen on startup
Zobrazit úvodní logo při zapnutí vysílčky
+
+
+
+
+
+
+
---
+
+
+
+
+
+
+
2s
+
+
+
+
+
+
+
3s
+
+
+
+
+
+
+
4s
+
+
+
+
+
+
+
6s
+
+
+
+
+
+
+
8s
+
+
+
+
+
+
+
10s
+
+
+
+
+
+
+
15s
+
+
+
+
+
+
+
4800 Baud
+
+
+
+
+
+
+
9600 Baud
+
+
+
+
+
+
+
14400 Baud
+
+
+
+
+
+
+
19200 Baud
+
+
+
+
+
+
+
38400 Baud
+
+
+
+
+
+
+
57600 Baud
+
+
+
+
+
+
+
76800 Baud
+
+
+
+
+
+
+
115200 Baud
@@ -4726,6 +7451,27 @@ Použitelné hodnoty jsou 5v..10v
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -4742,65 +7488,184 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
X-Short
Extra krátký
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Short
Krátký
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Normal
Normální
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Long
Dlouhý
+
+
+
+
+
+
+
+
+
+
+
+
+
+
X-Long
Extra dlouhý
+
+
+
+
+
+
+
NMEA
+
+
+
+
+
+
+
Play Delay (switch mid position)
Filtr poloh přepínače
+
+
+
+
+
+
+
Measurement Units
Měrné jednotky
+
+
+
+
+
+
+
Haptic Mode
Mód vibrací
+
+
+
+
+
+
+
Beeper Length
Délka zvuku
+
+
+
+
+
+
+
Beeper Mode
Mód zvuku
+
+
+
+
+
+
+
Beeper volume
0 - Quiet. No beeps at all.
@@ -4818,9 +7683,26 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Alarms Only
Jen alarmy
+
+
+ Power On Speed
+
+
+
+
+ Power Off Speed
+
+
GeneralSetupPanel
@@ -4974,251 +7856,595 @@ Are you sure ?
Hardware
+
+
+
+
+
+
+
Form
+
+
+
+
+
+
+
SQ
+
+
+
+
+
+
+
SR
+
+
+
+
+
+
+
LS2
+
+
+
+
+
+
+
SP
+
+
+
+
+
+
+
SO
+
+
+
+
+
+
+
S4
S4
+
+
+
+
+
+
+
RS
+
+
+
+
+
+
+
SB
+
+
+
+
+
+
+
PPM 2
+
+
+
+
+
+
+
OFF
Vypnuto
+
+
+
+
+
+
+
S-Port Mirror
Zrcadlit S-Port
+
+
+
+
+
+
+
Telemetry
Telemetrie
+
+
+
+
+
+
+
SBUS Trainer
SBUS trenér
+
+
+
+
+
+
+
Debug
+
+
+
+
+
+
+
Rud
Směrovka
+
+
+
+
+
+
+
PPM 3
+
+
+
+
+
+
+
S1
S1
+
+
+
+
+
+
+
S2
S2
+
+
+
+
+
+
+
S3
S3
+
+
+
+
+
+
+
PPM 1
+
+
+
+
+
+
+
Serial Port
Seriový port
+
+
+
+
+
+
+
v
+
+
+
+
+
+
+
PPM Multiplier
PPM Násobič
+
+
+
+
+
+
+
Current Offset
Ofset proudu
+
+
+
+
+
+
+
PPM 4
+
+
+
+
+
+
+
SA
+
+
+
+
+
+
+
Ele
Výškovka
+
+
+
Antenna
Anténa
+
+
+
+
+
S5
S5
+
+
+
+
+
+
+
Ail
Křidélka
+
+
+
+
+
+
+
Thr
Plyn
+
+
+
+
+
+
+
SC
+
+
+
+
+
+
+
LS
+
+
+
+
+
+
+
SD
+
+
+
+
+
+
+
Battery Offset
Ofset baterie
+
+
+
+
+
+
+
SE
+
+
+
+
+
+
+
SF
+
+
+
+
+
+
+
SG
+
+
+
+
+
+
+
SH
+
+
+
+
+
+
+
SI
+
+
+
+
+
+
+
SJ
+
+
+
+
+
+
+
SK
+
+
+
+
+
+
+
SL
+
+
+
+
+
+
+
SM
+
+
+
+
+
+
+
SN
+
+
+
+
+
+
+
RS2
+
+
+
+
+
+
+
Bluetooth
+
+
+
+
+
+
+
ADC Filter
ADC filtr
+
+
+
+
+
+
+
Device Name:
Název zařízení:
@@ -5317,71 +8543,169 @@ Are you sure ?
Heli
+
+
+
+
+
+
+
Invert Elevator
Invertovat výškovku
+
+
+
+
+
+
+
Invert Aileron
Invertovat křidélka
+
+
+
+
+
+
+
Invert Collective
Invertovat kolektiv
+
+
+
+
+
+
+
Invert
Invertovat
+
+
+
+
+
+
+
Off
Vypnuto
+
+
+
+
+
+
+
120
+
+
+
+
+
+
+
120X
+
+
+
+
+
+
+
140
+
+
+
+
+
+
+
90
+
+
+
+
+
+
+
Long. cyc
+
+
+
+
+
+
+
Lateral cyc
+
+
+
+
+
+
+
Collective
Kolektiv
+
+
+
+
+
+
+
Swash Type
Typ cykliky
+
+
+
+
+
+
+
Swash Ring
Cyklika
@@ -5774,46 +9098,109 @@ Are you sure ?
LogsDialog
+
+
+
+
+
+
+
Companion Log Viewer
Prohlížeč logu
+
+
+
+
+
+
+
Filename
Soubor
+
+
+
+
+
+
+
Open LogFile
Otevřít
+
+
+
+
+
+
+
Zoom
+
+
+
+
+
+
+
Save session CSV
+
+
+
+
+
+
+
X
+
+
+
+
+
+
+
Y
+
+
+
+
+
+
+
Reset
+
+
+
+
+
+
+
Fly sessions
Lety
@@ -7317,11 +10704,23 @@ Chcete změny uložit?
MixerDialog
+
+
+
+
+
Dialog
+
+
+
+
+
+
+
Source
Zdroj
@@ -7330,21 +10729,70 @@ Chcete změny uložit?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The source for the mixer
Zdroj pro mix
+
+
+
+
+
+
+
Weight
Váha
+
+
+
+
+
+
+
Offset
Ofset
+
+
+
+
+
+
+
Include Trim
Použít trim
@@ -7352,31 +10800,87 @@ Chcete změny uložit?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
GV
GP
+
+
+
+
+
+
+
No
Ne
+
+
+
+
+
+
+
Yes
Ano
+
+
+
+
+
+
+
Curve
Křivka
+
+
+
+
+
+
+
The curve used by the mix
Křivka použitá pro mix
+
+
+
+
+
+
+
Switch used by the mix.
If blank then the mix is considered to be "ON" all the time.
Spínač aktivující mix.
@@ -7384,16 +10888,37 @@ Pokud není uveden je mix aktivní pořád.
+
+
+
+
+
+
+
Switch
Spínač
+
+
+
+
+
+
+
Warning
Varování
+
+
+
+
+
+
+
Mixer warning.
Setting this value will cause a beep to be emmitted when this value is active.
Zvukové upozornění mixu.
@@ -7401,31 +10926,73 @@ Pokud je tato volba aktivní bude na aktivaci mixu upozorněno zvukovým signál
+
+
+
+
+
+
+
OFF
Vypnuto
+
+
+
+
+
+
+
1 Beep
1x pípnutí
+
+
+
+
+
+
+
2 Beep
2x pípnutí
+
+
+
+
+
+
+
3 Beep
3x pípnutí
+
+
+
+
+
+
+
Multiplex
Matematická operace
+
+
+
+
+
+
+
Multiplexer
This determines how mixer values are added.
@@ -7443,51 +11010,121 @@ Toto určuje, jak bude hodnota mixu přidána.
+
+
+
+
+
+
+
ADD
Sečíst
+
+
+
+
+
+
+
MULTIPLY
Násobit
+
+
+
+
+
+
+
REPLACE
Zaměnit
+
+
+
+
+
+
+
Name
Název
+
+
+
+
+
+
+
Flight modes
Letové režimy
+
+
+
+
+
+
+
Include DR/Expo
Použít DR/Expo
+
+
+
+
+
+
+
Delay
Zpoždění
+
+
+
+
+
+
+
Slow
Zpomalení
+
+
+
+
+
+
+
Up
Při zapnutí mixu / (+)
+
+
+
+
+
+
+
Down
Při vypnutí mixu / (-)
@@ -7496,6 +11133,34 @@ Toto určuje, jak bude hodnota mixu přidána.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -7544,6 +11209,12 @@ p, li { white-space: pre-wrap; }
Invert All
Invertovat vše
+
+
+
+ FullScreenDialog
+
+
MixersListWidget
@@ -7717,11 +11388,23 @@ p, li { white-space: pre-wrap; }
ModelEdit
+
+
+
+
+
Dialog
+
+
+
+
+
+
+
Simulate
Simulace
@@ -7775,6 +11458,12 @@ p, li { white-space: pre-wrap; }
Telemetry
Telemetrie
+
+
+
+ FullScreenDialog
+
+
ModelPrinter
@@ -8593,138 +12282,324 @@ p, li { white-space: pre-wrap; }
Module
+
+
+
+
+
+
+
Failsafe Mode
Režim Failsafe
+
+
+
+
+
+
+
Start
První kanál
+
+
+
+
+
+
+
PPM delay
PPM zpoždění
+
+
+
+
+
+
+
Negative
Negativní
+
+
+
+
+
+
+
Positive
Pozitivní
+
+
+
+
+
+
+
Polarity
Polarita
+
+
+
+
+
+
+
Trainer Mode
Mód trenér
+
+
+
+
+
+
+
PPM Frame Length
Délka PPM rámce
+
+
+
+
+
+
+
CH
+
+
+
+
+
+
+
Antenna
Anténa
+
+
+
+
+
+
+
Option value
Volitelná hodnota
+
+
+
+
+
+
+
Bind on startup
Bind při spuštění
+
+
+
+
+
+
+
RF Output Power
+
+
+
+
+
+
+
Low Power
Nízký výkon
+
+
+
+
+
+
+
us
+
+
+
+
+
+
+
Multi Radio Protocol
Multi Rádio protokol
+
+
+
+
+
+
+
Sub Type
+
+
+
+
+
+
+
Master/Jack
Učitel/Jack konektor
+
+
+
+
+
+
+
Slave/Jack
Žák/Jack konektor
+
+
+
+
+
+
+
Master/SBUS Module
Učitel/SBUS modul
+
+
+
+
+
+
+
Master/CPPM Module
Učitel/CPPM modul
+
+
+
+
+
+
+
Master/SBUS in battery compartment
Učitel/SBUS konektor v šachtě baterie
+
+
+
+
+
+
+
Show values in:
Zobrazit hodnoty v:
+
+
+
+
+
+
+
%
abbreviation for percent
+
+
+
+
+
+
+
μs
abbreviation for microseconds
+
+
+
+
+
+
+
ms
+
+
+
+
Receiver 1
@@ -8732,94 +12607,232 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
+
+
+
+
+
X
+
+
+
+
Receiver 2
+
+
+
+
Receiver 3
+
+
+
+
+
+
+
WARNING: changing RF Output Power needs RE-BIND
+
+
+
+
+
+
+
Channels
Počet kanálů
+
+
+
+
Registration ID
+
+
+
+
+
+
+
WARNING: Requires non-certified firmware!
+
+
+
+
+
+
+
Not set
Nenastaveno
+
+
+
+
+
+
+
Hold
Držet hodnotu
+
+
+
+
+
+
+
Custom
Vlastní
+
+
+
+
+
+
+
No Pulses
Žádné pulzy
+
+
+
+
+
+
+
Receiver
Dle nastavení přijímače
+
+
+
+
+
+
+
Failsafe Positions
Pozice Failsafe
+
+
+
+
+
+
+
Protocol
Protokol
+
+
+
+
+
+
+
Receiver No.
Číslo přijímače
+
+
+
+
+
+
+
Output type
Typ řízení výstupu
+
+
+
+
+
+
+
Open Drain
+
+
+
+
+
+
+
Push Pull
+
+
+
+
+
+ Internal
+ Interní
+
+
+
+
+
+
+ Ext. + Int.
+
+
ModuleData
@@ -9558,21 +13571,49 @@ p, li { white-space: pre-wrap; }
PrintDialog
+
+
+
+
+
+
+
Close
Zavřít
+
+
+
+
+
+
+
Style
+
+
+
+
+
+
+
Print
Tisk
+
+
+
+
+
+
+
Print to file
Tisk do souboru
@@ -9596,11 +13637,25 @@ p, li { white-space: pre-wrap; }
ProgressDialog
+
+
+
+
+
+
+
Flash Firmware
Zápis firmware
+
+
+
+
+
+
+
Close
Zavřít
@@ -9615,6 +13670,13 @@ p, li { white-space: pre-wrap; }
ProgressWidget
+
+
+
+
+
+
+
Show Details
Zobrazit podrobnosti
@@ -9768,16 +13830,37 @@ p, li { white-space: pre-wrap; }
RadioNotFoundDialog
+
+
+
+
+
+
+
No Radio Found
Rádio nebylo nalezeno
+
+
+
+
+
+
+
<html><head/><body><p>No Radio was found!</p><p>Make sure that you hold the lower trim buttons towards the center while you turn it on.</p><p>Then connect the USB wire.</p><p><span style=" font-family:'arial,sans-serif'; font-size:13px; font-style:italic; color:#222222; background-color:#ffffff;">Note: if you have a Taranis that has not had the firmware upgraded to 2.0 then this version of Companion will not work.</span></p></body></html>
<html><head/><body><p>Rádio nebylo nalezeno!</p><p>Ujistěte se, že během zapínání rádia držíte spodní trimy proti sobě.</p><p>Až poté připojte USB kabel..</p><p><span style=" font-family:'arial,sans-serif'; font-size:13px; font-style:italic; color:#222222; background-color:#ffffff;">Pozor: pokud máte Taranis který ještě nebyl aktualizován na verzi alespoň 2.0, potom tato verze Companion nebude fungovat.</span></p></body></html>
+
+
+
+
+
+
+
OK
@@ -9786,43 +13869,99 @@ p, li { white-space: pre-wrap; }
RadioOutputsWidget
-
+
+
+
+
+
+
+
+
+
Form
-
+
+
+
+
+
+
+
+
+
View:
Zobrazení:
-
+
+
+
+
+
+
+
+
+
Logical Switches
Logické spínače
-
+
+
+
+
+
+
+
+
+
Global Variables
Globální proměnné
-
+
+
+
+
+
+
+
+
+
Channel Outputs
Výstupy kanálů
-
+
+
+
+
+
+
+
+
+
Mix Outputs
-
+
+
+
+
+
+
+
+
+
L
o
g
@@ -9832,7 +13971,15 @@ c
-
+
+
+
+
+
+
+
+
+
G
l
o
@@ -9843,7 +13990,15 @@ l
-
+
+
+
+
+
+
+
+
+
C
h
a
@@ -9856,7 +14011,15 @@ s
-
+
+
+
+
+
+
+
+
+
M
i
x
@@ -10695,161 +14858,385 @@ s
Setup
+
+
+
+
+
+
+
Center beep
Zvuk ve středové poloze
+
+
+
+
+
+
+
OFF
Vypnuto
+
+
+
+
+
+
+
Model Image
Obrázek modelu
+
+
+
+
+
+
+
Exponential
Exponenciální
+
+
+
+
+
+
+
Throttle Trim Idle Only
Trim volnoběhu plynu
+
+
+
+
+
+
+
Timer 3
Stopky3
+
+
+
+
+
+
+
Extra Fine
Extra jemný
+
+
+
+
+
+
+
Fine
Jemný
+
+
+
+
+
+
+
Medium
Střední
+
+
+
+
+
+
+
Coarse
Hrubý
+
+
+
+
+
+
+
Display Checklist
Zobrazit poznámky
+
+
+
+
+
+
+
Timer 2
Stopky2
+
+
+
+
+
+
+
Timer 1
Stopky1
+
+
+
+
+
+
+
Never
Nikdy
+
+
+
+
+
+
+
On change
Při změně
+
+
+
+
+
+
+
Always
Vždy
+
+
+
+
+
+
+
Global Functions
Globální funkce
+
+
+
+
+
+
+
Edit Checklist...
+
+
+
+
+
+
+
Throttle Source
Stopa plynu
+
+
+
+
+
+
+
Trim Step
Krok trimu
+
+
+
+
+
+
+
Trims Display
Číselné zobrazení trimu
+
+
+
+
+
+
+
Warnings
Předletová kontrola
+
+
+
+
+
+
+
Top LCD Timer
Stopky na horním LCD
+
+
+
+
+
+
+
Switch Warnings
Polohy spínačů
+
+
+
+
+
+
+
Pot Warnings
Hodnoty potenciometrů
+
+
+
+
+
+
+
Manual
+
+
+
+
+
+
+
Auto
+
+
+
+
+
+
+
Model
+
+
+
+
+
+
+
Extended Limits
Rozšířené limity (125%)
+
+
+
+
+
+
+
Extended Trims
Rozšířený rozsah trimů
+
+
+
+
+
+
+
Throttle Warning
Alarm plynu
+
+
+
+
+
+
+
Reverse throttle operation.
If this is checked the throttle will be reversed. Idle will be forward, trim will also be reversed and the throttle warning will be reversed as well.
@@ -10862,6 +15249,13 @@ Funkce trimu bude opačná, stejně tak i varování polohy páky plynu.
+
+
+
+
+
+
+
Reverse Throttle
Revers plynu
@@ -11233,181 +15627,421 @@ Profil ID: [%1]; Rádio ID: [%2]
SimulatorMainWindow
-
+
+
+
+
+
+
+
+
+
OpenTx Simulator
-
+
+
+
+
+
+
+
+
+
View
-
+
+
+
+
+
+
+
+
+
Radio Window
-
+
+
+
+
+
+
+
+
+
Reload...
-
+
+
+
+
+
+
+
+
+
Tools
-
+
+
+
+
+
+
+
+
+
Toolbar
-
+
+
+
+
+
+
+
+
+
Reload Lua Scripts
-
+
+
+
+
+
+
+
+
+
Reload the Lua environment on the simulated radio.
-
+
+
+
+
+
+
+
+
+
F7
-
+
+
+
+
+
+
+
+
+
Reload Radio Data
-
+
+
+
+
+
+
+
+
+
Reload all radio data without restarting the simulator.
-
+
+
+
+
+
+
+
+
+
F9
-
+
+
+
+
+
+
+
+
+
Key Mapping
-
+
+
+
+
+
+
+
+
+
Show keyboard maping reference.
-
+
+
+
+
+
+
+
+
+
F1
-
+
+
+
+
+
+
+
+
+
Joystick Settings
-
+
+
+
+
+
+
+
+
+
Open joystick configuration settings dialog.
-
+
+
+
+
+
+
+
+
+
F3
-
+
+
+
+
+
+
+
+
+
LCD Screenshot
-
+
+
+
+
+
+
+
+
+
Save a screenshot of the current simulated LCD screen.
-
+
+
+
+
+
+
+
+
+
F8
-
+
+
+
+
+
+
+
+
+
Dock In Main Window
-
+
+
+
+
+
+
+
+
+
Show the radio in the main window or as a separate "floating" window.
-
+
+
+
+
+
+
+
+
+
Menu Bar
-
+
+
+
+
+
+
+
+
+
Show or hide the top menu bar.
-
+
+
+
+
+
+
+
+
+
Alt+M
-
+
+
+
+
+
+
+
+
+
Constrain Width
-
+
+
+
+
+
+
+
+
+
Set radio widget width to be a fixed size.
-
+
+
+
+
+
+
+
+
+
Constrain Height
-
+
+
+
+
+
+
+
+
+
Set radio widget height to be a fixed size.
@@ -11488,76 +16122,172 @@ Profil ID: [%1]; Rádio ID: [%2]
SimulatorStartupDialog
-
+
+
+
+
+
+
+
+
+
OpenTX Simulator - Startup Options
OpenTX Simulator - Možnosti spuštění
-
+
+
+
+
+
+
+
+
+
Simulator Startup Options:
Možnosti spuštění simulátoru:
-
+
+
+
+
+
+
+
+
+
Radio Profile:
Profil rádia:
-
+
+
+
+
+
+
+
+
+
Existing radio profiles are shown here.<br />
Create or edit profiles using the Companion application.
-
+
+
+
+
+
+
+
+
+
Radio Type:
Typ rádia:
-
+
+
+
+
+
+
+
+
+
Existing radio simulators are shown here.<br />
The radio type specified in the selected profile is used by default.
-
+
+
+
+
+
+
+
+
+
Data Source:
Zdroj dat:
-
+
+
+
+
+
+
+
+
+
Data File:
Datový soubor:
-
+
+
+
+
+
+
+
+
+
Data Folder:
Složka dat:
-
+
+
+
+
+
+
+
+
+
SD Image Path:
Cesta k obsahu SD:
-
+
+
+
+
+
+
+
+
+
Radio data (.bin/.eeprom/.otx) image file to use. A new file with a default image will be created if necessary.<br />
<b>NOTE</b>: any existing EEPROM data incompatible with the selected radio type may be overwritten!
-
+
+
+
+
+
+
+
+
+
Select data file...
@@ -11565,59 +16295,147 @@ The radio type specified in the selected profile is used by default.
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
-
+
+
+
+
+
+
+
+
+
Directory containing RADIO and MODELS folders to use.<br />
New folder(s) with default radio/model will be created here if necessary.
-
+
+
+
+
+
+
+
+
+
Select data folder...
-
+
+
+
+
+
+
+
+
+
Directory containing the SD card image to use.<br/>
The default is configured in the chosen Radio Profile.
-
+
+
+
+
+
+
+
+
+
Select SD card image folder...
-
+
+
+
+
+
+
+
+
+
Select which of the data sources (File/Folder/SD Card) you would like to start the simulator with.
-
+
+
+
+
+
+
+
+
+
File
Soubor
-
+
+
+
+
+
+
+
+
+
Folder
-
+
+
+
+
+
+
+
+
+
SD Path
@@ -11646,7 +16464,15 @@ The default is configured in the chosen Radio Profile.
SimulatorWidget
-
+
+
+
+
+
+
+
+
+
Companion Simulator
Companion Simulátor
@@ -11734,6 +16560,20 @@ The default is configured in the chosen Radio Profile.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
@@ -11773,6 +16613,13 @@ The default is configured in the chosen Radio Profile.
StyleEditDialog
+
+
+
+
+
+
+
@@ -11781,21 +16628,49 @@ The default is configured in the chosen Radio Profile.
+
+
+
+
+
+
+
&Reset to default
+
+
+
+
+
+
+
&Cancel
+
+
+
+
+
+
+
&OK
+
+
+
+
+
+
+
This feature does not validate your changes and assumes you are familiar with CSS syntax for QT.
@@ -12053,190 +16928,475 @@ Too many errors, giving up.
Telemetry
+
+
+
+
+
+
+
A1
Telem. vstup A1
+
+
+
+
+
+
+
A2
Telem. vstup A2
+
+
+
+
+
+
+
RSSI
+
+
+
+
+
+
+
Alarm 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Yellow
Žlutá
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Orange
Oranžová
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Red
Červená
+
+
+
+
+
+
+
Alarm 2
+
+
+
+
+
+
+
Disable telemetry audio warnings
+
+
+
+
+
Source
Zdroj
+
+
+
+
+
+
+
Center Silent
Tichý střed
+
+
+
+
+
+
+
Altitude source
Zdroj výšky
+
+
+
+
+
+
+
Volts source
Zdroj napětí
+
+
+
+
+
+
+
Top Bar
Hodnoty na horní liště
+
+
+
+
+
+
+
Serial Protocol
Sériový protokol
+
+
+
+
+
+
+
Sensors
Senzory
+
+
+
+
+
+
+
Disable multi sensor handling
Ignoruj chyby ID senzorů (znemožní násobné užití týž senzorů)
+
+
+
+
+
+
+
Volt source
Snímač napětí
+
+
+
+
+
+
+
Current source
Snímač proudu
+
+
+
+
+
+
+
Protocol
Protokol
+
+
+
+
+
+
+
None
Žádný
+
+
+
+
+
+
+
FrSky Sensor Hub
FrSky Senzor Hub
+
+
+
+
+
+
+
Blades
Počet listů vrtule
+
+
+
+
+
+
+
Sink Max
Klesání Max
+
+
+
+
+
+
+
Climb Max
Stoupání Max
+
+
+
+
+
+
+
Sink Min
Klesání Min
+
+
+
+
+
+
+
Climb Min
Stoupání Min
+
+
+
+
+
+
+
Vario source
Vario senzor
+
+
+
+
+
+
+
Vario limits
Rozsah varia
+
+
+
+
+
+
+
Altimetry
+
+
+
+
+
+
+
mAh
+
+
+
+
+
+
+
A
+
+
+
+
+
+
+
Various
Různé
+
+
+
+
+
+
+
mAh count
Počet mAh
+
+
+
+
+
+
+
FAS Offset
Ofset FAS
+
+
+
+
+
+
+
Persistent mAh
Ukládat hodnoty
@@ -12245,107 +17405,289 @@ Too many errors, giving up.
TelemetryAnalog
+
+
+
+
+
+
+
Unit
Jednotky
+
+
+
+
+
+
+
Max Value
Maximim
+
+
+
+
+
+
+
Alarm 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Yellow
Žlutá
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Orange
Oranžová
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Red
Červená
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<
+
+
+
+
+
+
+
+
+
+
+
+
+
+
>
+
+
+
+
+
+
+
Alarm 2
+
+
+
+
+
+
+
Offset
Ofset
+
+
+
+
+
+
+
Volts (V)
Volty (V)
+
+
+
+
+
+
+
Amps (A)
Ampéry (A)
+
+
+
+
+
+
+
Speed (m/s or ft/s)
Rychlost (m/s nebo ft/s)
+
+
+
+
+
+
+
Raw (-)
Jednotky (-)
+
+
+
+
+
+
+
Speed (km/h or miles/h)
Rychlost (km/h nebo míle/h)
+
+
+
+
+
+
+
Meters (m or ft)
Vzdálenost (m nebo ft)
+
+
+
+
+
+
+
Temp (°)
Teplota (°)
+
+
+
+
+
+
+
Fuel (%)
Palivo (%)
+
+
+
+
+
+
+
mAmps (mA)
MiliAmpéry (mA)
@@ -12359,6 +17701,13 @@ Too many errors, giving up.
TelemetryCustomScreen
+
+
+
+
+
+
+
Custom Screen Type
Typ panelu
@@ -12384,21 +17733,49 @@ Too many errors, giving up.
+
+
+
+
+
+
+
Min
+
+
+
+
+
+
+
Source
Zdroj
+
+
+
+
+
+
+
Gauge
Ukazatel
+
+
+
+
+
+
+
Max
@@ -12512,86 +17889,199 @@ Too many errors, giving up.
TelemetrySensor
+
+
+
+
+
+
+
Form
+
+
+
+
+
+
+
Custom
Vlastní
+
+
+
+
+
+
+
Calculated
Vypočtený
+
+
+
+
+
+
+
Id
+
+
+
+
+
+
+
Instance
+
+
+
+
Rx
+
+
+
+
Mod.
+
+
+
+
+
+
+
Add
Součet
+
+
+
+
+
+
+
Average
Průměr
+
+
+
+
+
+
+
Min
+
+
+
+
+
+
+
Max
+
+
+
+
+
+
+
Multiply
Násobení
+
+
+
+
+
+
+
Totalize
+
+
+
+
+
+
+
Cell
Článek
+
+
+
+
+
+
+
Consumption
Spotřeba
+
+
+
+
+
+
+
Dist
Vzdálenost
+
+
+
+
+
+
+
Cells Sensor :
Senzor článků :
@@ -12604,191 +18094,506 @@ Too many errors, giving up.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
---
+
+
+
+
+
+
+
GPS Sensor :
GPS Senzor :
+
+
+
+
+
+
+
Alt. Sensor :
Senzor výšky :
+
+
+
+
+
+
+
Sensor :
Senzor :
+
+
+
+
+
+
+
V
+
+
+
+
+
+
+
A
+
+
+
+
+
+
+
mA
+
+
+
+
+
+
+
kt
+
+
+
+
+
+
+
m/s
+
+
+
+
+
+
+
ft/s
+
+
+
+
+
+
+
km/h
+
+
+
+
+
+
+
mph
+
+
+
+
+
+
+
m
+
+
+
+
+
+
+
ft
+
+
+
+
+
+
+
°C
+
+
+
+
+
+
+
°F
+
+
+
+
+
+
+
%
+
+
+
+
+
+
+
mAh
+
+
+
+
+
+
+
W
+
+
+
+
+
+
+
mW
+
+
+
+
+
+
+
dBm
+
+
+
+
+
+
+
g
+
+
+
+
+
+
+
°
+
+
+
+
+
+
+
Rad
+
+
+
+
+
+
+
mL
+
+
+
+
+
+
+
US fl.Oz.
+
+
+
+
+
+
+
Raw (-)
Jednotky (-)
+
+
+
+
+
+
+
RPM
Otáčky (ot/min)
+
+
+
+
+
+
+
Precision
Přesnost
+
+
+
+
+
+
+
Ratio
+
+
+
+
+
+
+
Blades
Listy vrtule
+
+
+
+
+
+
+
Offset
Ofset
+
+
+
+
+
+
+
Multiplier
Násobitel
+
+
+
+
+
+
+
Auto Offset
Auto ofset
+
+
+
+
+
+
+
Filter
Filtr
+
+
+
+
+
+
+
Persistent
Trvalé
+
+
+
+
+
+
+
Positive
Pozitivní
+
+
+
+
+
+
+
Logs
Logovat
@@ -12820,116 +18625,268 @@ Too many errors, giving up.
TelemetrySimulator
-
+
+
+
+
+
+
+
+
+
Telemetry Simulator
-
+
+
+
+
+
+
+
+
+
VFAS
-
+
+
+
+
+
+
+
+
+
RSSI
-
+
+
+
+
+
+
+
+
+
A1
Telem. vstup A1
-
+
+
+
+
+
+
+
+
+
A2
Telem. vstup A2
-
+
+
+
+
+
+
+
+
+
Simulate
Simulace
-
+
+
+
+
+
+
+
+
+
Replay SD Log File
-
+
+
+
+
+
+
+
+
+
Replay rate
-
+
+
+
+
+
+
+
+
+
Load
-
+
+
+
+
+
+
+
+
+
|>
-
+
+
+
+
+
+
+
+
+
<|
-
+
+
+
+
+
+
+
+
+
>
-
+
+
+
+
+
+
+
+
+
<-
-
+
+
+
+
+
+
+
+
+
X
-
+
+
+
+
+
+
+
+
+
Row #
Timestamp
-
+
+
+
+
+
+
+
+
+
1/5x
-
+
+
+
+
+
+
+
+
+
5x
-
+
+
+
+
+
+
+
+
+
No Log File Currently Loaded
-
+
+
+
+
+
+
+
+
+
RAS
@@ -12937,21 +18894,61 @@ Timestamp
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
V / ratio
-
+
+
+
+
+
+
+
+
+
Db
-
+
+
+
+
+
+
+
+
+
RxBt
@@ -12969,121 +18966,377 @@ Timestamp
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<html><head/><body><p><br/></p></body></html>
-
+
+
+
+
+
+
+
+
+
Tmp1
-
+
+
+
+
+
+
+
+
+
A3
Telem. vstup A3
-
+
+
+
+
+
+
+
+
+
A4
Telem. vstup A4
-
+
+
+
+
+
+
+
+
+
Tmp2
-
+
+
+
+
+
+
+
+
+
Fuel
Palivo
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
°C
-
+
+
+
+
+
+
+
+
+
ml
-
+
+
+
+
+
+
+
+
+
%
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Meters
-
+
+
+
+
+
+
+
+
+
Alt
Výška
-
+
+
+
+
+
+
+
+
+
VSpd
-
+
+
+
+
+
+
+
+
+
m/s
-
+
+
+
+
+
+
+
+
+
Fuel Qty
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
km/h
-
+
+
+
+
+
+
+
+
+
Hdg
-
+
+
+
+
+
+
+
+
+
ASpd
@@ -13091,135 +19344,335 @@ Timestamp
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
G
-
+
+
+
+
+
+
+
+
+
GPS
-
+
+
+
+
+
+
+
+
+
Lat,Lon
(dec.deg.)
-
+
+
+
+
+
+
+
+
+
AccX
-
+
+
+
+
+
+
+
+
+
dd-MM-yyyy
hh:mm:ss
-
+
+
+
+
+
+
+
+
+
Date
-
+
+
+
+
+
+
+
+
+
Amps
-
+
+
+
+
+
+
+
+
+
AccZ
-
+
+
+
+
+
+
+
+
+
GAlt
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Volts
-
+
+
+
+
+
+
+
+
+
Cels
-
+
+
+
+
+
+
+
+
+
Curr
Proud
-
+
+
+
+
+
+
+
+
+
AccY
-
+
+
+
+
+
+
+
+
+
GSpd
-
+
+
+
+
+
+
+
+
+
Degrees
-
+
+
+
+
+
+
+
+
+
Setting RSSI to zero simulates telemetry and radio link loss.
-
+
+
+
+
+
+
+
+
+
Set RSSI to zero when paused.
-
+
+
+
+
+
+
+
+
+
Stop sending telemetry data when the Telemetry Simulator window is hidden.
-
+
+
+
+
+
+
+
+
+
Pause simulation when hidden.
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
RPM
Otáčky (ot/min)
-
+
+
+
+
+
+
+
+
+
When enabled, sends any non-blank values as simulated telemetry data.
@@ -13261,11 +19714,25 @@ hh:mm:ss
Timer
+
+
+
+
+
+
+
Countdown
Odečítat
+
+
+
+
+
+
+
Minute Call
Oznamovat minuty
@@ -13349,26 +19816,61 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
Trainer
+
+
+
+
+
+
+
Form
+
+
+
+
+
+
+
Mode
Mód
+
+
+
+
+
+
+
Input
Vstup
+
+
+
+
+
+
+
Weight
Váha
+
+
+
+
+
+
+
Rud
Směrovka
@@ -13381,6 +19883,62 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Beeper volume
0 - Quiet. No beeps at all.
@@ -13401,6 +19959,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Off
Vypnuto
@@ -13409,6 +19995,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+= (Sum)
+= (Sečíst)
@@ -13417,6 +20031,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
:= (Replace)
:= (Nahradit)
@@ -13425,6 +20067,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn1
Kanál 1
@@ -13433,6 +20103,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn2
Kanál 2
@@ -13441,6 +20139,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn3
Kanál 3
@@ -13449,21 +20175,70 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn4
Kanál 4
+
+
+
+
+
+
+
Ele
Výškovka
+
+
+
+
+
+
+
Thr
Plyn
+
+
+
+
+
+
+
Ail
Křidélka
@@ -13472,7 +20247,15 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
TrainerSimulator
-
+
+
+
+
+
+
+
+
+
Trainer simulator
@@ -13897,12 +20680,26 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
burnConfigDialog
+
+
+
+
+
+
+
Programmer Configuration
Configuration AVRDUDE / SAM-BA
Konfigurace programátoru
+
+
+
+
+
+
+
Location of AVRDUDE executable
Cesta k binárce AVRDUDE
@@ -13911,11 +20708,46 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The location of the AVRDUDE executable.
Cesta k binárce AVRDUDE.
+
+
+
+
+
+
+
DFU-Util Location
Cesta k DFU Util
@@ -13923,6 +20755,27 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Use this button to browse and look for the AVRDUDE executable file.
Použijte toto tlačítko k vyhledání binárky AVRDUDE.
@@ -13930,39 +20783,116 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Browse...
Procházet ...
+
+
+
+
+
+
+
Programmer
Typ programátoru
+
+
+
+
+
+
+
Programmer used for communicating with the controller.
Please consult the programmer's documentation and the AVRDUDE documentation to select the appropriate programmer.
Programátor použitý pro komunikaci s mikrokontrolérem.
+
+
+
+
+
+
+
List all available programmers.
Seznam použitelných programátorů.
+
+
+
+
+
+
+
List Available
Vypsat vše
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Extra arguments that will be passed to AVRDUDE on every call
Vlastní parametry které budou předány AVRDUDE při každém volání
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Extra arguments used in AVRDUDE.
This can be used for providing extra information to AVRDUDE.
@@ -13975,21 +20905,49 @@ Můžete poškodit váš mikrokontrolér.
+
+
+
+
+
+
+
Extra Arguments
Vlastní parametry
+
+
+
+
+
+
+
Show AVRDUDE help
Zobrazit nápovědu AVRDUDE
+
+
+
+
+
+
+
Show Help
Nápověda
+
+
+
+
+
+
+
Communication port to the programmer.
Komunikační port programátoru.
@@ -13998,33 +20956,96 @@ Můžete poškodit váš mikrokontrolér.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Port
Port programátoru
+
+
+
+
+
+
+
AVRDUDE Location
Cesta k AVRDUDE
+
+
+
+
+
+
+
at91sam3s8-9xr
+
+
+
+
+
+
+
Use advanced controls
Rozšířené volby
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CPU of your TX
Procesor/mikrokontrolér vašeho rádia
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CPU present on your 9x radio
Should be m64 for stock radios
m2560 for v4.1 boards
@@ -14034,32 +21055,81 @@ m2560 pro V4 desky
+
+
+
+
+
+
+
SAM-BA Location
Cesta k SAM-BA
+
+
+
+
+
+
+
Alternate device
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Location of sam-ba executable
Cesta k binárce sam-ba
+
+
+
+
+
+
+
MCU
Typ procesoru CPU/MCU
+
+
+
+
+
+
+
ARM MCU
+
+
+
+
+
+
+
sam-ba serial port
sériový port sam-ba
@@ -14105,85 +21175,197 @@ m2560 pro V4 desky
joystickDialog
-
+
+
+
+
+
+
+
+
+
Configure Joystick
Nastavte joystick
-
+
+
+
+
+
+
+
+
+
Ch2
-
+
+
+
+
+
+
+
+
+
Ch1
-
+
+
+
+
+
+
+
+
+
Ch4
-
+
+
+
+
+
+
+
+
+
Ch6
-
+
+
+
+
+
+
+
+
+
Ch3
-
+
+
+
+
+
+
+
+
+
Ch5
-
+
+
+
+
+
+
+
+
+
Ch7
-
+
+
+
+
+
+
+
+
+
Ch8
-
+
+
+
+
+
+
+
+
+
Instructions
Instrukce
-
+
+
+
+
+
+
+
+
+
Enable
Povolit
-
+
+
+
+
+
+
+
+
+
Cancel
Zrušit
-
+
+
+
+
+
+
+
+
+
Back
-
+
+
+
+
+
+
+
+
+
Start
První kanál
@@ -14194,7 +21376,15 @@ m2560 pro V4 desky
-
+
+
+
+
+
+
+
+
+
Ok
OK
diff --git a/companion/src/translations/companion_de.ts b/companion/src/translations/companion_de.ts
index ebf605eff..e5485ebfb 100644
--- a/companion/src/translations/companion_de.ts
+++ b/companion/src/translations/companion_de.ts
@@ -93,41 +93,97 @@
AppPreferencesDialog
+
+
+
+
+
+
+
Edit Settings
Editiere Einstellungen
+
+
+
+
+
+
+
Radio Profile
Sender Profil
+
+
+
+
+
+
+
Default Channel Order
Voreingest. Kanalordnung
+
+
+
+
+
+
+
Build Options
Software zusammenstellen
+
+
+
+
+
+
+
Menu Language
Menüsprache
+
+
+
+
+
+
+
Default Stick Mode
Standard Knüppelmodus
+
+
+
+
+
+
+
Select Image
Wähle Bild
+
+
+
+
+
+
+
Mode selection:
Mode 1:
@@ -169,172 +225,417 @@ Mode 4:
+
+
+
+
+
+
+
Mode 1 (RUD ELE THR AIL)
Mode 1 (Seite Höhe Gas Quer)
+
+
+
+
+
+
+
Mode 2 (RUD THR ELE AIL)
Mode 2 (Seite Gas Höhe Quer)
+
+
+
+
+
+
+
Mode 3 (AIL ELE THR RUD)
Mode 3 (Quer Höhe Gas Seite)
+
+
+
+
+
+
+
Mode 4 (AIL THR ELE RUD)
Mode 4 (Quer, Gas, Höhe, Seite)
+
+
+
+
+
+
+
Splash Screen
Splash Screen
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The profile specific folder, if set, will override general Backup folder
+
+
+
+
+
+
+
Backup folder
Backup Verzeichnis
+
+
+
+
+
+
+
If set it will override the application general setting
+
+
+
+
+
+
+
if set, will override general backup enable
+
+
+
+
+
+
+
<html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html>
<html><head/><body><p>Kanalreihenfolge</p><p><br/></p><p>Definiert die Reihenfolge der Mischer wenn ein neues Modell erzeugt wird.</p></body></html>
+
+
+
+
+
+
+
R E T A
S H G Q
+
+
+
+
+
+
+
R E A T
S H Q G
+
+
+
+
+
+
+
R T E A
S G H Q
+
+
+
+
+
+
+
R T A E
S G Q H
+
+
+
+
+
+
+
R A E T
S Q H G
+
+
+
+
+
+
+
R A T E
S Q G H
+
+
+
+
+
+
+
E R T A
H S G Q
+
+
+
+
+
+
+
E R A T
H S Q G
+
+
+
+
+
+
+
E T R A
H G S Q
+
+
+
+
+
+
+
E T A R
H G Q S
+
+
+
+
+
+
+
E A R T
H Q S G
+
+
+
+
+
+
+
E A T R
H Q G S
+
+
+
+
+
+
+
T R E A
G S H Q
+
+
+
+
+
+
+
T R A E
G S Q H
+
+
+
+
+
+
+
T E R A
G H S Q
+
+
+
+
+
+
+
T E A R
G H Q S
+
+
+
+
+
+
+
T A R E
G Q S H
+
+
+
+
+
+
+
T A E R
G Q H S
+
+
+
+
+
+
+
A R E T
Q S H G
+
+
+
+
+
+
+
A R T E
Q S G H
+
+
+
+
+
+
+
A E R T
Q H S G
+
+
+
+
+
+
+
A E T R
Q H G S
+
+
+
+
+
+
+
A T R E
Q G S H
+
+
+
+
+
+
+
A T E R
Q G H S
@@ -345,272 +646,680 @@ Mode 4:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Select Folder
Wähle Verzeichnis
+
+
+
+
+
+
+
Select Executable
Wähle ausführbare Datei (Programm)
+
+
+
+
Release channel
+
+
+
+
Releases (stable)
+
+
+
+
Release candidates (testing)
+
+
+
+
Nightly builds (unstable)
+
+
+
+
+
+
+
Simulator Volume Gain
Simulator Lautstärke
+
+
+
+
+
+
+
Profile Name
Profil Name
+
+
+
+
+
+
+
Clear Image
Lösche Bild
+
+
+
+
+
+
+
Append version number to FW file name
Versionsnummer an die Bezeichnung des Firmware-Files anhängen
+
+
+
+
+
+
+
Offer to write FW to Tx after download
Firmware nach dem Download in den Sender schreiben
+
+
+
+
+
+
+
Radio Type
Sender Typ
+
+
+
+
+
+
+
Other Settings
Andere Einstellungen
+
+
+
+
+
+
+
General Settings
Sender Grundeinstellungen
+
+
+
+
+
+
+
SD Structure path
SD Verzeichnis Pfad
+
+
+
+
+
+
+
Application Settings
Anwendungs-Einstellungen
+
+
+
+
+
+
+
Show splash screen when Companion starts
Zeigt das Startbild wenn Companion startet
+
+
+
+
+
+
+
Automatic check for Companion updates
Automatisches Prüfen auf Companion Updates
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Enable automatic backup before writing firmware
Erstelle automatische Backups, bevor neue Firmware in den Sender geschrieben wird
+
+
+
+
+
+
+
Automatic check for OpenTX firmware updates
Automatisches Prüfen auf OpenTX Firmware Updates
+
+
+
+
+
+
+
Splash Screen Library
Splash Screen Verzeichnis
+
+
+
+
+
+
+
Google Earth Executable
Ausführbare Datei Google Earth
+
+
+
+
+
+
+
Only show user splash images
Nur das Benutzter-Bild zeigen
+
+
+
+
+
+
+
Show user and companion splash images
Zeige Benutzer-und CompanionBild
+
+
+
+
+
+
+
User Splash Screens
Verwende Startbild
+
+
+
+
+
+
+
Automatic Backup Folder
Autom. Backup Verzeichnis
+
+
+
+
+
+
+
Simulator Settings
Simulator Einstellungen
+
+
+
+
+
+
+
Simulator BackLight
Simulator LCD-Beleuchtung
+
+
+
+
+
+
+
Enable
Freigabe
+
+
+
+
+
+
+
most recently used files
Zuletzt verwendete Dateien
+
+
+
+
+
+
+
Startup Settings
Starteinstellungen
+
+
+
+
+
+
+
Remember
Merke
+
+
+
+
+
+
+
Output Logs Folder
+
+
+
+
+
+
+
<html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html>
+
+
+
+
+
+
+
Remove empty model slots when deleting models (only applies for radios w/out categories)
Leere Speicherplätze beim Löschen eines Modells entfernen (gilt nur für Sender ohne Kategorien)
+
+
+
+
+
+
+
Use model wizard
Benutze den Modellwizard
+
+
+
+
+
+
+
Open model editor
Öffne den Modelleditor
+
+
+
+
+
+
+
Just create the model
Leeres Modell erzeugen
+
+
+
+
+
+
+
Debug Output Logging
+
+
+
+
+
+
+
<html><head/><body><p>Keep a log of all debugging messages generated by the desktop Companion/Simulator applications. An OpenTX developer may request this to help diagnose an issue.</p></body></html>
+
+
+
+
+
+
+
Application (Companion/Simulator)
Anwendung (Companion/Simulator)
+
+
+
+
+
+
+
<html><head/><body><p>Keep a log of all messages generated by the radio firmware when running in Simulator. This is the same information one would also see in the Simulator <span style=" font-style:italic;">Debug Output</span> window.</p></body></html>
+
+
+
+
+
+
+
Radio Firmware (in Simulator)
Senderfirmware (im Simulator)
+
+
+
+
+
+
+
Action on New Model
Aktion die beim Anlegen eines neuen Modells ausgeführt werden soll
+
+
+
+
+
+
+
Blue
Blau
+
+
+
+
+
+
+
Green
Grün
+
+
+
+
+
+
+
Red
Rot
+
+
+
+
+
+
+
Orange
Orange
+
+
+
+
+
+
+
Yellow
Gelb
+
+
+
+
+
+
+
Screenshot capture folder
Screenshot Verzeichnis
+
+
+
+
+
+
+
Joystick
Joystick
+
+
+
+
+
+
+
Calibrate
Kalibrieren
+
+
+
+
+
+
+
Only capture to clipboard
Hardcopy nur in die Zwischenablage speichern
+
+
+
+
+
+
+
Remember simulator switch values
Schalterstellungen im Simulator merken
@@ -691,6 +1400,31 @@ Mode 4:
Images (%1)
Bilder (%1)
+
+
+
+
+ Use releases (stable)
+
+
+
+
+ Use release candidates (testing)
+
+
+
+
+
+
+ Use nightly builds (unstable)
+
+
+
+
+
+ Use releases and release candidates (testing)
+
+
BinEepromFormat
@@ -911,36 +1645,85 @@ Mode 4:
ChecklistDialog
+
+
+
+
+
+
+
Edit Checklist
Editiere Checkliste
+
+
+
+
+
+
+
Line nn, Col nn
+
+
+
+
+
+
+
&Import...
+
+
+
+
+
+
+
&Cancel
+
+
+
+
+
+
+
&OK
+
+
+
+
+
+
+
Please note, the maximum width displayable is radio model limited. Also, renaming the model will break the link to this checklist file.
+
+
+
+
+
+
+
File: unknown
Datei: unbekannt
@@ -1188,31 +1971,73 @@ If you have a settings backup file, you may import that instead.
CompareDialog
+
+
+
+
+
+
+
Compare Models
Vergleiche Modelle
+
+
+
+
+
+
+
To compare models, drag and drop them anywhere in this window.
Um Modelle zu vergleichen, Drag und Drop sie in dieses Fenster.
+
+
+
+
+
+
+
Close
Schliessen
+
+
+
+
+
+
+
Style
+
+
+
+
+
+
+
Print
Drucken
+
+
+
+
+
+
+
Print to file
Druck in Datei
@@ -1370,87 +2195,213 @@ If you have a settings backup file, you may import that instead.
Curves
+
+
+
+
+
+
+
Fixed X
Feste X-Werte
+
+
+
+
+
+
+
Custom X
Var X und Y
+
+
+
+
+
+
+
Lines
Linien
+
+
+
+
+
+
+
Smooth
Verrunden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Curve type
Kurven Typ
+
+
+
+
+
+
+
Curve Creator
Kurve erzeugen
+
+
+
+
+
+
+
Y at X=0
Y bei X=0
+
+
+
+
+
+
+
Point size
+
+
+
+
+
+
+
Y at X=100
Y bei X=100
+
+
+
+
+
+
+
Both
Beide
+
+
+
+
+
+
+
x>0
x>0
+
+
+
+
+
+
+
x<0
x<0
+
+
+
+
+
+
+
Apply
Anwenden
+
+
+
+
+
+
+
Side
Seite
+
+
+
+
+
+
+
Y at X=-100
Y bei X=-100
+
+
+
+
+
+
+
Coefficient
Expo-Faktor
+
+
+
+
+
+
+
Curve name
Kurven Name
@@ -1863,42 +2814,133 @@ If you have a settings backup file, you may import that instead.
CustomizeSplashDialog
+
+
+
+
+
+
+
Transmitter Splash Screen Editor
Sender Startbild-Editor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Invert
Invertieren
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load FW
Lade FW
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load Pict
Lade Bild
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load Profile
Lade Profil
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Save
speichern
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Open Splash Library
Splash Bibliothek öffnen
@@ -1907,6 +2949,34 @@ If you have a settings backup file, you may import that instead.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
...
@@ -2022,48 +3092,48 @@ If you have a settings backup file, you may import that instead.
Übersetzungsfehler im Feld %1
-
+
Switch
Schalter
-
+
Switch
Schalter
-
+
cannot be exported on this board!
Kann nicht in dieses Board übertagen werden!
-
+
Source
Quelle
-
+
Source %1 cannot be exported on this board!
-
+
OpenTX only accepts %1 points in all curves
OpenTX unterstützt nur maximal %1 Stützstellen für alle Kurven
-
+
OpenTx only accepts %1 points in all curves
-
-
+
+
OpenTX on this board doesn't accept this function
OpenTX unterstützt diese Funktion für dieses Board nicht
-
+
OpenTX doesn't accept this radio protocol
OpenTx kennt dieses Sendeprotokoll nicht
@@ -2072,86 +3142,198 @@ If you have a settings backup file, you may import that instead.
DebugOutput
-
+
+
+
+
+
+
+
+
+
Debug Output
Debug Ausgabe
-
+
+
+
+
+
+
+
+
+
<html><head/><body><p>Enable or disable the filter. If the button won't stay enabled, it is likely there is a syntax error in the Regular Expression entered.</p></body></html>
-
+
+
+
+
+
+
+
+
+
Filter:
Filter:
-
+
+
+
+
+
+
+
+
+
<html><head/><body><p>Enter filter text here. Click the help/info button for details about using the filter. </p><p>
To <b>remove a remembered entry</b> from the filter list, first choose it, and then press <code>Shift-Delete</code> (or <code>Shift-Backspace</code>) key combination.</p></body></html>
-
+
+
+
+
+
+
+
+
+
Buffer:
Buffer:
-
+
+
+
+
+
+
+
+
+
Number of lines to keep in display.
-
+
+
+
+
+
+
+
+
+
Filter &Help
Filter &Hilfe
-
+
+
+
+
+
+
+
+
+
Show information about using the filter.
-
+
+
+
+
+
+
+
+
+
Word &Wrap
-
+
+
+
+
+
+
+
+
+
Toggle word wrapping on/off.
-
+
+
+
+
+
+
+
+
+
&Clear
&Löschen
-
+
+
+
+
+
+
+
+
+
Clear the output window of all text.
-
+
+
+
+
+
+
+
+
+
Enable &Filter
Freigabe &Filter
-
+
+
+
+
+
+
+
+
+
Turn the filter on/off.
Filter Ein/Aus.
@@ -2170,6 +3352,13 @@ To <b>remove a remembered entry</b> from the filter list, first cho
DownloadDialog
+
+
+
+
+
+
+
Downloading:
Herunterladen:
@@ -2313,6 +3502,13 @@ To <b>remove a remembered entry</b> from the filter list, first cho
ExpoDialog
+
+
+
+
+
+
+
Weight
Gewichtung
@@ -2320,102 +3516,256 @@ To <b>remove a remembered entry</b> from the filter list, first cho
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
GV
GV
+
+
+
+
+
+
+
Offset
Offset
+
+
+
+
+
+
+
The source for the mixer
Die Mischerquelle
+
+
+
+
+
+
+
Input name
Input Name
+
+
+
+
+
+
+
Flight modes
Flugphasen
+
+
+
+
+
+
+
Switch
Schalter
+
+
+
+
+
+
+
Source
Quelle
+
+
+
+
+
+
+
Line name
Info Name
+
+
+
+
+
+
+
Stick Side
Knüppel Seite
+
+
+
+
+
+
+
Scale
Skalierung
+
+
+
+
+
+
+
Include Trim
Trimmung einschliessen
+
+
+
+
+
+
+
No
Nein
+
+
+
+
+
+
+
Yes
Ja
+
+
+
+
+
+
+
Curve
Kurve
+
+
+
+
+
+
+
Curve applied to the source.
Kurve die auf die Quelle angewendet wird.
+
+
+
+
+
+
+
NEG
NEG
+
+
+
+
+
+
+
Source for the mixer.
Quelle für den Mischer.
+
+
+
+
+
+
+
Switch used to enable the line.
If blank then the input is considered to be "ON" all the time.
Schalter mit dem der Input freigegeben wird Steht nichts drinnen ist er immer "EIN".
+
+
+
+
+
+
+
POS
POS
+
+
+
+
+
+
+
ALL
BEIDE
@@ -3058,31 +4408,73 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FirmwarePreferencesDialog
+
+
+
+
+
+
+
Downloads
Downloads
+
+
+
+
+
+
+
Check for updates
Prüfe auf Updates
+
+
+
+
+
+
+
Firmware
Firmware
+
+
+
+
+
+
+
Download firmware
Download Firmware
+
+
+
+
+
+
+
Download SD contents
Download SD-Karteninhalt
+
+
+
+
+
+
+
Latest Download
Letztes Download
@@ -3124,67 +4516,158 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FlashEEpromDialog
+
+
+
+
+
+
+
Write Models and Settings to Radio
Schreibe Modelle und Einstellungen in den Sender
+
+
+
+
+
+
+
Load...
Laden...
+
+
+
+
+
+
+
Current Profile
Aktuelles Profil
+
+
+
+
+
+
+
Allows Companion to write to older version of the firmware
+
+
+
+
+
+
+
Check Firmware compatibility
Firmware Kompatibilität prüfen
+
+
+
+
+
+
+
<html><head/><body><p>Saves a dated copy of your eeprom to the backup folder you specified in the Companion settings before writing the current model to the radio.</p></body></html>
+
+
+
+
+
+
+
Backup before Write
Sichern vor schreiben
+
+
+
+
+
+
+
<html><head/><body><p>Modify calibration parameters using settings from current profile</p></body></html>
+
+
+
+
+
+
+
Patch calibration setting from profile
+
+
+
+
+
+
+
<html><head/><body><p>Modify HW parameters using settings from current profile</p></body></html>
+
+
+
+
+
+
+
Patch HW settings from profile
+
+
+
+
+
+
+
Cancel
Abbrechen
+
+
+
+
+
+
+
Write to TX
Schreibe in Sender
@@ -3242,71 +4725,169 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FlashFirmwareDialog
+
+
+
+
+
+
+
Flash Firmware
Flashe Firmware
+
+
+
+
+
+
+
Load...
Laden...
+
+
+
+
+
+
+
Date & Time
Datum & Uhrzeit
+
+
+
+
+
+
+
Variant
Variante
+
+
+
+
+
+
+
Version
Version
+
+
+
+
+
+
+
Use profile start screen
Verwende das Profil Startbild
+
+
+
+
+
+
+
Use firmware start screen
Verwende den Firmware Startscrenn
+
+
+
+
+
+
+
Use library start screen
Verwende den Bibliothek Startscreen
+
+
+
+
+
+
+
Use another start screen
Verwende einen anderen Start Screen
+
+
+
+
+
+
+
Allows Companion to write to older version of the firmware
+
+
+
+
+
+
+
Check Hardware compatibility
Prüfe die Hardware-kompatibilität
+
+
+
+
+
+
+
Backup and restore Models and Settings
+
+
+
+
+
+
+
Cancel
Abbrechen
+
+
+
+
+
+
+
Write to TX
Schreibe in Sender
@@ -3505,21 +5086,49 @@ You are currently using:
FlightMode
+
+
+
+
+
+
+
Fade In
Fade In
+
+
+
+
+
+
+
Fade Out
Fade Out
+
+
+
+
+
+
+
Name
Name
+
+
+
+
+
+
+
Switch
Schalter
@@ -3709,11 +5318,25 @@ You are currently using:
FusesDialog
+
+
+
+
+
+
+
Fuses
Fuses
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3731,11 +5354,25 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Read Fuses
Lese Fuses
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3755,12 +5392,26 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Reset Fuses
EEPROM - PROTECT
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3780,12 +5431,26 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Reset Fuses
EEPROM - DELETE
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3855,11 +5520,25 @@ p, li { white-space: pre-wrap; }
GeneralEdit
+
+
+
+
+
+
+
Radio settings
Sender Grundeinstellungen
+
+
+
+
+
+
+
General settings used throught the transmitter.
These will be relevant for all models in the same EEPROM.
Sender Grundeinstellungen.
@@ -3877,11 +5556,25 @@ Dieses sind für alle Modelle im gleichen EEPROM gültig.
+
+
+
+
+
+
+
Store calib. and hw settings in selected profile
Sichere Kal.-und HW-Einstllungen im ausgew. Profil
+
+
+
+
+
+
+
Retrieve calib. and hw settings from profile
Verwende Kal-und HW Einstellungen aus dem Profil
@@ -3938,127 +5631,309 @@ Dieses sind für alle Modelle im gleichen EEPROM gültig.
GeneralSetup
+
+
+
+
+
+
+
Form
Form
+
+
+
+
+
+
+
Readonly Unlock
Schreibschutz freigeben
+
+
+
+
+
+
+
SC
SC
+
+
+
+
+
+
+
SE
SE
+
+
+
+
+
+
+
SA
SA
+
+
+
+
+
+
+
SF
SF
+
+
+
+
+
+
+
SH
SH
+
+
+
+
+
+
+
SD
SD
+
+
+
+
+
+
+
SB
SB
+
+
+
+
+
+
+
SG
SG
+
+
+
+
+
+
+
Timeshift from UTC
Zeitverschiebung von UTC
+
+
+
+
+
+
+
Voice Language
Ansagesprache
+
+
+
+
+
+
+
Country Code
Ländercode
+
+
+
+
+
+
+
Stick reverse
Knüppel umkehren
+
+
+
+
+
+
+
FAI Mode
FAI Modus
+
+
+
+
+
+
+
Adjust RTC
Uhr einstellen
+
+
+
+
+
+
+
Vario pitch at max
Vario Tonhöhe bei Max-Steig
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Hz
Hz
+
+
+
+
+
+
+
Speaker Volume
Gesamtlautstärke
+
+
+
+
+
+
+
Backlight Switch
LCD-Beleuchtung EIN mit
+
+
+
+
+
+
+
Sound Mode
Sound Modus
+
+
+
+
+
+
+
Color 1
Farbe 1
+
+
+
+
+
+
+
Color 2
Farbe2
+
+
+
+
+
+
+
Speaker Pitch (spkr only)
Lautstärke (Spkr Mod)
+
+
+
+
+
+
+
If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds.
Wenn dieser Wert ungleich 0 ist, wird die Hintergrundbeleuchtung nach irgendeinem Tastendruck eingeschaltet
und nach einer eingestellten Zeit in Sekunden ausgeschaltet.
@@ -4067,82 +5942,209 @@ und nach einer eingestellten Zeit in Sekunden ausgeschaltet.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
sec
sek
+
+
+
+
+
+
+
Backlight color
LCD-Beleuchtung Farbe
+
+
+
+
+
+
+
Beeper
Piepser
+
+
+
+
+
+
+
Speaker
Lautsprecher
+
+
+
+
+
+
+
BeeperVoice
Beeper Sound
+
+
+
+
+
+
+
SpeakerVoice
Sprecher Stimme
+
+
+
+
+
+
+
Beep volume
Piepser Lautstärke
+
+
+
+
+
+
+
Wav volume
Wav Lautstärke
+
+
+
+
+
+
+
Vario volume
Vario Lautstärke
+
+
+
+
+
+
+
Background volume
Hintergrundlautstärke
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ms
ms
+
+
+
+
+
+
+
Backlight Auto OFF after
LCD-Beleuchtung AUS nach
+
+
+
+
+
+
+
Backlight flash on alarm
LCD-Beleuchtung an bei Alarm
+
+
+
+
+
+
+
Vario pitch at zero
Vario Tonhöhe bei Min-Sink
+
+
+
+
+
+
+
Vario repeat at zero
Vario Ton Wiederholrate
+
+
+
+
+
+
+
This is the switch selectrion for turning on the backlight (if installed).
@@ -4153,6 +6155,20 @@ und nach einer eingestellten Zeit in Sekunden ausgeschaltet.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -4164,41 +6180,97 @@ Die Werte können sein
+
+
+
+
+
+
+
Backlight Brightness
LCD-Beleuchtung Helligkeit
+
+
+
+
+
+
+
RotEnc Navigation
Drehgeber Navigation
+
+
+
+
+
+
+
Automatically adjust the radio's clock if a GPS is connected to telemetry.
Automatisches Einstellen der Uhr im Sender wenn GPS mit der Telemetrie verbunden.
+
+
+
+
+
+
+
America
Amerika
+
+
+
+
+
+
+
Japan
Japan
+
+
+
+
+
+
+
Europe
Europa
+
+
+
+
+
+
+
Backlight OFF Brightness
Resthelligkeit wenn Beleuchtung AUS
+
+
+
+
+
+
+
Mode selection:
Mode 1:
@@ -4240,346 +6312,845 @@ Mode 4:
+
+
+
+
+
+
+
Mode 1 (RUD ELE THR AIL)
Mode 1 (Sei Höh Gas Qur)
+
+
+
+
+
+
+
Mode 2 (RUD THR ELE AIL)
Mode 2 (Sei Gas Höh Qur)
+
+
+
+
+
+
+
Mode 3 (AIL ELE THR RUD)
Mode 3 (Qur Höh Gas Sei)
+
+
+
+
+
+
+
Mode 4 (AIL THR ELE RUD)
Mode 4 (Qur Gas Höh Sei)
+
+
+
+
+
+
+
<html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html>
<html><head/><body><p>Kanalreihenfolge</p><p><br/></p><p>Definiert die Reihenfolge der Mischer wenn ein neues Modell erzeugt wird.</p></body></html>
+
+
+
+
+
+
+
If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio.
Wenn man FAI auswählt gibt es nur noch RSSI und RxBat Werte. Diese Funktion kann dann im Sendern nicht mehr deaktiviert werden.
+
+
+
+
+
+
+
RSSI Poweroff Warning
RSSI Poweroff Warnung
+
+
+
+
+
+
+
Low EEPROM Warning
Low EEPROM Warnung
+
+
+
+
Owner Registration ID
+
+
+
+
aaaaaaAA
+
+
+
+
+
+
+
R E T A
S H G Q
+
+
+
+
+
+
+
R E A T
S H Q G
+
+
+
+
+
+
+
R T E A
S G H Q
+
+
+
+
+
+
+
R T A E
S G Q H
+
+
+
+
+
+
+
R A E T
S Q H G
+
+
+
+
+
+
+
R A T E
S Q G H
+
+
+
+
+
+
+
E R T A
H S G Q
+
+
+
+
+
+
+
E R A T
H S Q G
+
+
+
+
+
+
+
E T R A
H G S Q
+
+
+
+
+
+
+
E T A R
H G Q S
+
+
+
+
+
+
+
E A R T
H Q S G
+
+
+
+
+
+
+
E A T R
H Q G S
+
+
+
+
+
+
+
T R E A
G S H Q
+
+
+
+
+
+
+
T R A E
G S Q H
+
+
+
+
+
+
+
T E R A
G H S Q
+
+
+
+
+
+
+
T E A R
G H Q S
+
+
+
+
+
+
+
T A R E
G Q S H
+
+
+
+
+
+
+
T A E R
G Q H S
+
+
+
+
+
+
+
A R E T
Q S H G
+
+
+
+
+
+
+
A R T E
Q S G H
+
+
+
+
+
+
+
A E R T
Q H S G
+
+
+
+
+
+
+
A E T R
Q H G S
+
+
+
+
+
+
+
A T R E
Q G S H
+
+
+
+
+
+
+
A T E R
Q G H S
+
+
+
+
Power On Delay
+
+
+
+
+
+
+
Jack Mode
+
+
+
+
+
+
+
Audio
+
+
+
+
+
+
+
Trainer
Schüler Signaleingang
+
+
+
+
+
+
+
DMS
+
+
+
+
+
+
+
USB Mode
+
+
+
+
Power Off Delay
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Ask on Connect
Nachfragen beim Verbinden
+
+
+
+
+
+
+
Joystick (HID)
+
+
+
+
+
+
+
USB Mass Storage
+
+
+
+
+
+
+
USB Serial (CDC)
USB Serial (CDC)
+
+
+
+
+
+
+
Stick Mode
Knüppelmodus
+
+
+
+
+
+
+
Metric
Metrisch
+
+
+
+
+
+
+
Imperial
Zöllig
+
+
+
+
+
+
+
Default Channel Order
Voreingest. Kanalordnung
+
+
+
+
+
+
+
GPS Coordinates
GPS Koordinaten
+
+
+
+
+
+
+
Min
Min
+
+
+
+
+
+
+
+
+
+
+
+
+
+
v
V
+
+
+
+
+
+
+
Max
Max
+
+
+
+
+
+
+
Inactivity Timer
Inaktivitätstimer
+
+
+
+
+
+
+
Show Splash Screen on Startup
Zeige Startbild an
+
+
+
+
+
+
+
Contrast
LCD Kontrast
+
+
+
+
+
+
+
Battery Meter Range
Akku Ladestand
+
+
+
+
+
+
+
Haptic Strength
Haptik Stärke
+
+
+
+
+
+
+
LCD Display Type
LCD Display Typ
+
+
+
+
+
+
+
"No Sound" Warning
Keine Sound Warnung
+
+
+
+
+
+
+
Battery Warning
Sender Akkuwarnung
+
+
+
+
+
+
+
Haptic Length
Haptik Länge
+
+
+
+
+
+
+
MAVLink Baud Rate
Mav Link Baudrate
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Quiet
Stumm
+
+
+
+
+
+
+
Only Alarms
Nur Alarme
+
+
+
+
+
+
+
+
+
+
+
+
+
+
No Keys
Kein Tastenpieps
+
+
+
+
+
+
+
+
+
+
+
+
+
+
All
Alles
+
+
+
+
+
+
+
Battery warning voltage.
This is the threashhold where the battery warning sounds.
@@ -4591,107 +7162,261 @@ Werte liegen zwischen 5-10V
+
+
+
+
+
+
+
Standard
Standard
+
+
+
+
+
+
+
Optrex
Optrex LCD
+
+
+
+
+
+
+
If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes.
Falls ungleich 0 ertönt ein Piepston wenn der Sender für eine bestimmte Anzahl Minuten nicht bedient wurde.
+
+
+
+
+
+
+
min
Min
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Show splash screen on startup
Zeige Startbild an
+
+
+
+
+
+
+
---
---
+
+
+
+
+
+
+
2s
2s
+
+
+
+
+
+
+
3s
3s
+
+
+
+
+
+
+
4s
4s
+
+
+
+
+
+
+
6s
6s
+
+
+
+
+
+
+
8s
8s
+
+
+
+
+
+
+
10s
10s
+
+
+
+
+
+
+
15s
15s
+
+
+
+
+
+
+
4800 Baud
4800 Baud
+
+
+
+
+
+
+
9600 Baud
115200 Baud {9600 ?}
+
+
+
+
+
+
+
14400 Baud
14400 Baud
+
+
+
+
+
+
+
19200 Baud
19200 Baud
+
+
+
+
+
+
+
38400 Baud
38400 Baud
+
+
+
+
+
+
+
57600 Baud
57600 Baud
+
+
+
+
+
+
+
76800 Baud
76800 Baud
+
+
+
+
+
+
+
115200 Baud
115200 Baud
@@ -4699,6 +7424,27 @@ Werte liegen zwischen 5-10V
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -4721,65 +7467,184 @@ Warnung stummer Betrieb - Wird angezeigt, wenn der Piepser komplett ausgeschalte
+
+
+
+
+
+
+
+
+
+
+
+
+
+
X-Short
X-kurz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Short
Kurz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Normal
Normal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Long
Lang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
X-Long
X-lang
+
+
+
+
+
+
+
NMEA
NMEA
+
+
+
+
+
+
+
Play Delay (switch mid position)
Schalter Mittenpos. verzögern
+
+
+
+
+
+
+
Measurement Units
Maßeinheiten
+
+
+
+
+
+
+
Haptic Mode
Haptik Modus
+
+
+
+
+
+
+
Beeper Length
Piepser Länge
+
+
+
+
+
+
+
Beeper Mode
Modus Piepser
+
+
+
+
+
+
+
Beeper volume
0 - Quiet. No beeps at all.
@@ -4797,9 +7662,26 @@ Warnung stummer Betrieb - Wird angezeigt, wenn der Piepser komplett ausgeschalte
+
+
+
+
+
+
+
Alarms Only
Nur Alarme
+
+
+ Power On Speed
+
+
+
+
+ Power Off Speed
+
+
GeneralSetupPanel
@@ -4955,251 +7837,595 @@ Sind Sie sicher?
Hardware
+
+
+
+
+
+
+
Form
Tabelle
+
+
+
+
+
+
+
SQ
SQ
+
+
+
+
+
+
+
SR
SR
+
+
+
+
+
+
+
LS2
LS2
+
+
+
+
+
+
+
SP
SP
+
+
+
+
+
+
+
SO
SO
+
+
+
+
+
+
+
S4
S4
+
+
+
+
+
+
+
RS
RS
+
+
+
+
+
+
+
SB
SB
+
+
+
+
+
+
+
PPM 2
PPM 2
+
+
+
+
+
+
+
OFF
AUS
+
+
+
+
+
+
+
S-Port Mirror
S_Port Ausgang
+
+
+
+
+
+
+
Telemetry
Telemetrie
+
+
+
+
+
+
+
SBUS Trainer
SBus Schüler
+
+
+
+
+
+
+
Debug
Debugmode
+
+
+
+
+
+
+
Rud
Sei
+
+
+
+
+
+
+
PPM 3
PPM 3
+
+
+
+
+
+
+
S1
S1
+
+
+
+
+
+
+
S2
S2
+
+
+
+
+
+
+
S3
S3
+
+
+
+
+
+
+
PPM 1
PPM 1
+
+
+
+
+
+
+
Serial Port
Serielle Schnittstelle
+
+
+
+
+
+
+
v
V
+
+
+
+
+
+
+
PPM Multiplier
PPM Multiplikator
+
+
+
+
+
+
+
Current Offset
Strom Offset
+
+
+
+
+
+
+
PPM 4
PPM 4
+
+
+
+
+
+
+
SA
SA
+
+
+
+
+
+
+
Ele
Höh
+
+
+
Antenna
Antenne
+
+
+
+
+
S5
S5
+
+
+
+
+
+
+
Ail
Qur
+
+
+
+
+
+
+
Thr
Gas
+
+
+
+
+
+
+
SC
SC
+
+
+
+
+
+
+
LS
LS
+
+
+
+
+
+
+
SD
SD
+
+
+
+
+
+
+
Battery Offset
Akku Offset
+
+
+
+
+
+
+
SE
SE
+
+
+
+
+
+
+
SF
SF
+
+
+
+
+
+
+
SG
SG
+
+
+
+
+
+
+
SH
SH
+
+
+
+
+
+
+
SI
SI
+
+
+
+
+
+
+
SJ
SJ
+
+
+
+
+
+
+
SK
SK
+
+
+
+
+
+
+
SL
SL
+
+
+
+
+
+
+
SM
SM
+
+
+
+
+
+
+
SN
SN
+
+
+
+
+
+
+
RS2
RS2
+
+
+
+
+
+
+
Bluetooth
Bluetooth
+
+
+
+
+
+
+
ADC Filter
ADC-Filter
+
+
+
+
+
+
+
Device Name:
Gerätename:
@@ -5298,71 +8524,169 @@ Sind Sie sicher?
Heli
+
+
+
+
+
+
+
Invert Elevator
Nick invertieren
+
+
+
+
+
+
+
Invert Aileron
Roll invertieren
+
+
+
+
+
+
+
Invert Collective
Kollective Pitch invertieren
+
+
+
+
+
+
+
Invert
Invertieren
+
+
+
+
+
+
+
Off
Aus
+
+
+
+
+
+
+
120
120
+
+
+
+
+
+
+
120X
120X
+
+
+
+
+
+
+
140
140
+
+
+
+
+
+
+
90
90
+
+
+
+
+
+
+
Long. cyc
Nick cyc u Gew
+
+
+
+
+
+
+
Lateral cyc
Roll cyc u. Gew
+
+
+
+
+
+
+
Collective
Kollektiv Pitch-Quelle u. Gew
+
+
+
+
+
+
+
Swash Type
Taumelscheiben Typ
+
+
+
+
+
+
+
Swash Ring
Ringtaumelscheibe Grad
@@ -5755,46 +9079,109 @@ Sind Sie sicher?
LogsDialog
+
+
+
+
+
+
+
Companion Log Viewer
Companion Log ansehen
+
+
+
+
+
+
+
Filename
Dateiname
+
+
+
+
+
+
+
Open LogFile
Öffne LogDatei
+
+
+
+
+
+
+
Zoom
Zoom
+
+
+
+
+
+
+
Save session CSV
Speichere Session als CSV
+
+
+
+
+
+
+
X
X
+
+
+
+
+
+
+
Y
Y
+
+
+
+
+
+
+
Reset
Reset
+
+
+
+
+
+
+
Fly sessions
Flugdaten
@@ -7286,11 +10673,23 @@ Sollen die Änderungen gespeichert werden?
MixerDialog
+
+
+
+
+
Dialog
Dialog
+
+
+
+
+
+
+
Source
Quelle
@@ -7299,36 +10698,106 @@ Sollen die Änderungen gespeichert werden?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The source for the mixer
Die Mischerquelle
+
+
+
+
+
+
+
Weight
Gewichtung
+
+
+
+
+
+
+
Offset
Offset
+
+
+
+
+
+
+
Include Trim
Trimmung einschliessen
+
+
+
+
+
+
+
Curve
Kurve
+
+
+
+
+
+
+
The curve used by the mix
Die Mischerkurve
+
+
+
+
+
+
+
Switch
Schalter
@@ -7336,51 +10805,135 @@ Sollen die Änderungen gespeichert werden?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
GV
GV
+
+
+
+
+
+
+
Yes
Ja
+
+
+
+
+
+
+
No
Nein
+
+
+
+
+
+
+
Warning
Warnung
+
+
+
+
+
+
+
Name
Name
+
+
+
+
+
+
+
OFF
AUS
+
+
+
+
+
+
+
1 Beep
1 Piepston
+
+
+
+
+
+
+
2 Beep
2 Piepstöne
+
+
+
+
+
+
+
3 Beep
3 Piepstöne
+
+
+
+
+
+
+
Multiplex
Mixer verrechnen
@@ -7389,6 +10942,34 @@ Sollen die Änderungen gespeichert werden?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -7404,12 +10985,26 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Mixer warning.
Setting this value will cause a beep to be emmitted when this value is active.
+
+
+
+
+
+
+
Multiplexer
This determines how mixer values are added.
@@ -7427,52 +11022,122 @@ Diese Einstellung bestimmt wie die Mischerwerte behandelt werden.
+
+
+
+
+
+
+
ADD
ADDIEREN
+
+
+
+
+
+
+
MULTIPLY
MULTIPLIZIEREN
+
+
+
+
+
+
+
REPLACE
ERSETZEN
+
+
+
+
+
+
+
Switch used by the mix.
If blank then the mix is considered to be "ON" all the time.
Mischerschalter. Wenn leer ist der Mischer immer aktiv.
+
+
+
+
+
+
+
Flight modes
Flugphasen
+
+
+
+
+
+
+
Include DR/Expo
DR/Expo einschliessen
+
+
+
+
+
+
+
Delay
Verzögerung
+
+
+
+
+
+
+
Slow
Langsam
+
+
+
+
+
+
+
Up
Nach oben
+
+
+
+
+
+
+
Down
Nach unten
@@ -7501,6 +11166,12 @@ If blank then the mix is considered to be "ON" all the time.
Invert All
Alles invertieren
+
+
+
+ FullScreenDialog
+
+
MixersListWidget
@@ -7674,6 +11345,11 @@ If blank then the mix is considered to be "ON" all the time.
ModelEdit
+
+
+
+
+
Dialog
Dialog
@@ -7709,6 +11385,13 @@ If blank then the mix is considered to be "ON" all the time.
+
+
+
+
+
+
+
Simulate
Simulation
@@ -7732,6 +11415,12 @@ If blank then the mix is considered to be "ON" all the time.
Curves
Kurven
+
+
+
+ FullScreenDialog
+
+
ModelPrinter
@@ -8550,138 +12239,324 @@ If blank then the mix is considered to be "ON" all the time.
Module
+
+
+
+
+
+
+
Failsafe Mode
Failsafe Mode
+
+
+
+
+
+
+
Start
Start
+
+
+
+
+
+
+
PPM delay
PPM Puls
+
+
+
+
+
+
+
Negative
Negativ
+
+
+
+
+
+
+
Positive
Positiv
+
+
+
+
+
+
+
Polarity
Polarität
+
+
+
+
+
+
+
Trainer Mode
Trainer Mode
+
+
+
+
+
+
+
PPM Frame Length
PPM Frame Länge
+
+
+
+
+
+
+
CH
CH
+
+
+
+
+
+
+
Antenna
Antenne
+
+
+
+
+
+
+
Option value
Optionswert
+
+
+
+
+
+
+
Bind on startup
Binden beim Starten
+
+
+
+
+
+
+
RF Output Power
HF Sendeleistung
+
+
+
+
+
+
+
Low Power
Low Power
+
+
+
+
+
+
+
us
us
+
+
+
+
+
+
+
Multi Radio Protocol
MultiModul Sendeprotokoll
+
+
+
+
+
+
+
Sub Type
Subtyp
+
+
+
+
+
+
+
Master/Jack
Lehrer/Buchse
+
+
+
+
+
+
+
Slave/Jack
Schüler/Buchse
+
+
+
+
+
+
+
Master/SBUS Module
Lehrer/SBus Module
+
+
+
+
+
+
+
Master/CPPM Module
Lehrer/CPPM Module
+
+
+
+
+
+
+
Master/SBUS in battery compartment
Lehrer/SBus im Akkufach
+
+
+
+
+
+
+
Show values in:
Zeig Werte in:
+
+
+
+
+
+
+
%
abbreviation for percent
%
+
+
+
+
+
+
+
μs
abbreviation for microseconds
+
+
+
+
+
+
+
ms
ms
+
+
+
+
Receiver 1
@@ -8689,94 +12564,232 @@ If blank then the mix is considered to be "ON" all the time.
+
+
+
+
+
+
+
+
+
+
+
+
X
X
+
+
+
+
Receiver 2
+
+
+
+
Receiver 3
+
+
+
+
+
+
+
WARNING: changing RF Output Power needs RE-BIND
+
+
+
+
+
+
+
Channels
Kanäle
+
+
+
+
Registration ID
+
+
+
+
+
+
+
WARNING: Requires non-certified firmware!
+
+
+
+
+
+
+
Not set
Nicht eingestellt
+
+
+
+
+
+
+
Hold
Halte Servopos
+
+
+
+
+
+
+
Custom
Frei einstellbar
+
+
+
+
+
+
+
No Pulses
Keine PPM Pulse
+
+
+
+
+
+
+
Receiver
Empfänger
+
+
+
+
+
+
+
Failsafe Positions
Failsafe Positionen
+
+
+
+
+
+
+
Protocol
Protokoll
+
+
+
+
+
+
+
Receiver No.
Empfänger Nr.
+
+
+
+
+
+
+
Output type
Ausgangstyp
+
+
+
+
+
+
+
Open Drain
Open Drain
+
+
+
+
+
+
+
Push Pull
Push Pull
+
+
+
+
+
+ Internal
+ Interne
+
+
+
+
+
+
+ Ext. + Int.
+
+
ModuleData
@@ -9517,21 +13530,49 @@ If blank then the mix is considered to be "ON" all the time.
PrintDialog
+
+
+
+
+
+
+
Close
Schliessen
+
+
+
+
+
+
+
Style
+
+
+
+
+
+
+
Print
Drucken
+
+
+
+
+
+
+
Print to file
Druck in Datei
@@ -9555,11 +13596,25 @@ If blank then the mix is considered to be "ON" all the time.
ProgressDialog
+
+
+
+
+
+
+
Flash Firmware
Flashe Firmware
+
+
+
+
+
+
+
Close
Schliessen
@@ -9574,6 +13629,13 @@ If blank then the mix is considered to be "ON" all the time.
ProgressWidget
+
+
+
+
+
+
+
Show Details
Zeige Details
@@ -9727,16 +13789,37 @@ If blank then the mix is considered to be "ON" all the time.
RadioNotFoundDialog
+
+
+
+
+
+
+
No Radio Found
Keinen Sender gefunden
+
+
+
+
+
+
+
<html><head/><body><p>No Radio was found!</p><p>Make sure that you hold the lower trim buttons towards the center while you turn it on.</p><p>Then connect the USB wire.</p><p><span style=" font-family:'arial,sans-serif'; font-size:13px; font-style:italic; color:#222222; background-color:#ffffff;">Note: if you have a Taranis that has not had the firmware upgraded to 2.0 then this version of Companion will not work.</span></p></body></html>
+
+
+
+
+
+
+
OK
OK
@@ -9745,43 +13828,99 @@ If blank then the mix is considered to be "ON" all the time.
RadioOutputsWidget
-
+
+
+
+
+
+
+
+
+
Form
Werte
-
+
+
+
+
+
+
+
+
+
View:
Anzeige:
-
+
+
+
+
+
+
+
+
+
Logical Switches
Logische Schalter
-
+
+
+
+
+
+
+
+
+
Global Variables
Globale Variablen
-
+
+
+
+
+
+
+
+
+
Channel Outputs
Kanalwerte
-
+
+
+
+
+
+
+
+
+
Mix Outputs
Mischerwerte
-
+
+
+
+
+
+
+
+
+
L
o
g
@@ -9795,7 +13934,15 @@ k
-
+
+
+
+
+
+
+
+
+
G
l
o
@@ -9811,7 +13958,15 @@ l
-
+
+
+
+
+
+
+
+
+
C
h
a
@@ -9829,7 +13984,15 @@ e
-
+
+
+
+
+
+
+
+
+
M
i
x
@@ -10674,36 +14837,85 @@ r
Setup
+
+
+
+
+
+
+
Center beep
Zentrierpiepston
+
+
+
+
+
+
+
OFF
AUS
+
+
+
+
+
+
+
Model Image
Modellbild
+
+
+
+
+
+
+
Exponential
Exponential
+
+
+
+
+
+
+
Throttle Trim Idle Only
Gas Leerlauftrim
+
+
+
+
+
+
+
Timer 3
Timer 3
+
+
+
+
+
+
+
Reverse throttle operation.
If this is checked the throttle will be reversed. Idle will be forward, trim will also be reversed and the throttle warning will be reversed as well.
@@ -10715,131 +14927,313 @@ umgedreht und ist dann vorne.
+
+
+
+
+
+
+
Extra Fine
Sehr fein
+
+
+
+
+
+
+
Fine
Fein
+
+
+
+
+
+
+
Medium
Mittel
+
+
+
+
+
+
+
Coarse
Grob
+
+
+
+
+
+
+
Display Checklist
Anzeige Checkliste
+
+
+
+
+
+
+
Timer 2
Timer 2
+
+
+
+
+
+
+
Timer 1
Timer 1
+
+
+
+
+
+
+
Never
Nie
+
+
+
+
+
+
+
On change
Kurz bei Änderung
+
+
+
+
+
+
+
Always
Immer
+
+
+
+
+
+
+
Global Functions
Globale Funktionen
+
+
+
+
+
+
+
Edit Checklist...
Edit Checkliste...
+
+
+
+
+
+
+
Throttle Source
GasTimer Quelle
+
+
+
+
+
+
+
Trim Step
Trim Auflösung
+
+
+
+
+
+
+
Trims Display
Trimmwerte anzeigen
+
+
+
+
+
+
+
Warnings
Warnungen
+
+
+
+
+
+
+
Top LCD Timer
Obere Zeile Timer
+
+
+
+
+
+
+
Switch Warnings
Schalter Warnungen
+
+
+
+
+
+
+
Pot Warnings
Poti Warnungen
+
+
+
+
+
+
+
Manual
Manuell
+
+
+
+
+
+
+
Auto
Automatisch
+
+
+
+
+
+
+
Model
Model
+
+
+
+
+
+
+
Extended Limits
Erw. Wege 100% --> 150%
+
+
+
+
+
+
+
Extended Trims
Erw. Trim 25%--> 100%
+
+
+
+
+
+
+
Throttle Warning
Gas Warnung
+
+
+
+
+
+
+
Reverse Throttle
Vollgas hinten
@@ -11207,181 +15601,421 @@ Profile ID: [%1]; Radio ID: [%2]
SimulatorMainWindow
-
+
+
+
+
+
+
+
+
+
OpenTx Simulator
OpenTX Simulator
-
+
+
+
+
+
+
+
+
+
View
-
+
+
+
+
+
+
+
+
+
Radio Window
-
+
+
+
+
+
+
+
+
+
Reload...
-
+
+
+
+
+
+
+
+
+
Tools
-
+
+
+
+
+
+
+
+
+
Toolbar
-
+
+
+
+
+
+
+
+
+
Reload Lua Scripts
-
+
+
+
+
+
+
+
+
+
Reload the Lua environment on the simulated radio.
-
+
+
+
+
+
+
+
+
+
F7
F7
-
+
+
+
+
+
+
+
+
+
Reload Radio Data
-
+
+
+
+
+
+
+
+
+
Reload all radio data without restarting the simulator.
-
+
+
+
+
+
+
+
+
+
F9
F9
-
+
+
+
+
+
+
+
+
+
Key Mapping
-
+
+
+
+
+
+
+
+
+
Show keyboard maping reference.
-
+
+
+
+
+
+
+
+
+
F1
F1
-
+
+
+
+
+
+
+
+
+
Joystick Settings
-
+
+
+
+
+
+
+
+
+
Open joystick configuration settings dialog.
-
+
+
+
+
+
+
+
+
+
F3
F3
-
+
+
+
+
+
+
+
+
+
LCD Screenshot
-
+
+
+
+
+
+
+
+
+
Save a screenshot of the current simulated LCD screen.
-
+
+
+
+
+
+
+
+
+
F8
F8
-
+
+
+
+
+
+
+
+
+
Dock In Main Window
-
+
+
+
+
+
+
+
+
+
Show the radio in the main window or as a separate "floating" window.
-
+
+
+
+
+
+
+
+
+
Menu Bar
-
+
+
+
+
+
+
+
+
+
Show or hide the top menu bar.
-
+
+
+
+
+
+
+
+
+
Alt+M
-
+
+
+
+
+
+
+
+
+
Constrain Width
-
+
+
+
+
+
+
+
+
+
Set radio widget width to be a fixed size.
-
+
+
+
+
+
+
+
+
+
Constrain Height
-
+
+
+
+
+
+
+
+
+
Set radio widget height to be a fixed size.
@@ -11462,76 +16096,172 @@ Profile ID: [%1]; Radio ID: [%2]
SimulatorStartupDialog
-
+
+
+
+
+
+
+
+
+
OpenTX Simulator - Startup Options
-
+
+
+
+
+
+
+
+
+
Simulator Startup Options:
-
+
+
+
+
+
+
+
+
+
Radio Profile:
-
+
+
+
+
+
+
+
+
+
Existing radio profiles are shown here.<br />
Create or edit profiles using the Companion application.
-
+
+
+
+
+
+
+
+
+
Radio Type:
-
+
+
+
+
+
+
+
+
+
Existing radio simulators are shown here.<br />
The radio type specified in the selected profile is used by default.
-
+
+
+
+
+
+
+
+
+
Data Source:
-
+
+
+
+
+
+
+
+
+
Data File:
-
+
+
+
+
+
+
+
+
+
Data Folder:
-
+
+
+
+
+
+
+
+
+
SD Image Path:
-
+
+
+
+
+
+
+
+
+
Radio data (.bin/.eeprom/.otx) image file to use. A new file with a default image will be created if necessary.<br />
<b>NOTE</b>: any existing EEPROM data incompatible with the selected radio type may be overwritten!
-
+
+
+
+
+
+
+
+
+
Select data file...
@@ -11539,59 +16269,147 @@ The radio type specified in the selected profile is used by default.
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
...
-
+
+
+
+
+
+
+
+
+
Directory containing RADIO and MODELS folders to use.<br />
New folder(s) with default radio/model will be created here if necessary.
-
+
+
+
+
+
+
+
+
+
Select data folder...
-
+
+
+
+
+
+
+
+
+
Directory containing the SD card image to use.<br/>
The default is configured in the chosen Radio Profile.
-
+
+
+
+
+
+
+
+
+
Select SD card image folder...
-
+
+
+
+
+
+
+
+
+
Select which of the data sources (File/Folder/SD Card) you would like to start the simulator with.
-
+
+
+
+
+
+
+
+
+
File
Datei
-
+
+
+
+
+
+
+
+
+
Folder
-
+
+
+
+
+
+
+
+
+
SD Path
@@ -11620,7 +16438,15 @@ The default is configured in the chosen Radio Profile.
SimulatorWidget
-
+
+
+
+
+
+
+
+
+
Companion Simulator
Companion Simulator
@@ -11708,6 +16534,20 @@ The default is configured in the chosen Radio Profile.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
...
@@ -11747,6 +16587,13 @@ The default is configured in the chosen Radio Profile.
StyleEditDialog
+
+
+
+
+
+
+
@@ -11755,21 +16602,49 @@ The default is configured in the chosen Radio Profile.
+
+
+
+
+
+
+
&Reset to default
+
+
+
+
+
+
+
&Cancel
+
+
+
+
+
+
+
&OK
+
+
+
+
+
+
+
This feature does not validate your changes and assumes you are familiar with CSS syntax for QT.
@@ -12027,190 +16902,475 @@ Too many errors, giving up.
Telemetry
+
+
+
+
+
+
+
A1
A1
+
+
+
+
+
+
+
A2
A2
+
+
+
+
+
+
+
RSSI
RSSI
+
+
+
+
+
+
+
Alarm 1
Alarm 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
----
----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Yellow
Gelb
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Orange
Orange
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Red
Rot
+
+
+
+
+
+
+
Alarm 2
Alarm 2
+
+
+
+
+
+
+
Serial Protocol
Serielles Protokoll
+
+
+
+
+
+
+
Volt source
Spg Quelle
+
+
+
+
+
+
+
Current source
Strom Quelle
+
+
+
+
+
+
+
Protocol
Protokoll
+
+
+
+
+
+
+
None
Kein
+
+
+
+
+
+
+
FrSky Sensor Hub
FrSky Sensor Hub
+
+
+
+
+
+
+
Blades
Rotorblätter
+
+
+
+
+
+
+
Sink Max
Sink Max
+
+
+
+
+
+
+
Climb Max
Steig Max
+
+
+
+
+
+
+
Sink Min
Sink Min
+
+
+
+
+
+
+
Climb Min
Steig Min
+
+
+
+
+
+
+
Center Silent
Mitte Ruhig
+
+
+
+
+
+
+
Vario source
Vario Quelle
+
+
+
+
+
+
+
Vario limits
Vario Grenzen
+
+
+
+
+
+
+
Disable telemetry audio warnings
Keine Telemetrie Warnungsansage
+
+
+
+
+
Source
Quelle
+
+
+
+
+
+
+
Altimetry
Höhenanzeige
+
+
+
+
+
+
+
Altitude source
Höhe Quelle
+
+
+
+
+
+
+
Volts source
Spannung Quelle
+
+
+
+
+
+
+
Top Bar
obere Infozeile am Sender
+
+
+
+
+
+
+
mAh
mAh
+
+
+
+
+
+
+
A
A
+
+
+
+
+
+
+
Various
Verschiedenes
+
+
+
+
+
+
+
Sensors
Sensor
+
+
+
+
+
+
+
Disable multi sensor handling
Kein Multisensor Handling
+
+
+
+
+
+
+
mAh count
mAh zählen
+
+
+
+
+
+
+
FAS Offset
FAS Offset
+
+
+
+
+
+
+
Persistent mAh
Speichern der mAh
@@ -12219,107 +17379,289 @@ Too many errors, giving up.
TelemetryAnalog
+
+
+
+
+
+
+
Unit
Einheit
+
+
+
+
+
+
+
Max Value
Max Wert
+
+
+
+
+
+
+
Alarm 1
Alarm 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
----
----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Yellow
Gelb
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Orange
Orange
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Red
Rot
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<
<
+
+
+
+
+
+
+
+
+
+
+
+
+
+
>
>
+
+
+
+
+
+
+
Alarm 2
Alarm 2
+
+
+
+
+
+
+
Offset
Offset
+
+
+
+
+
+
+
Volts (V)
Volt(V)
+
+
+
+
+
+
+
Amps (A)
Amp (A)
+
+
+
+
+
+
+
Speed (m/s or ft/s)
Speed (m/s or ft/s)
+
+
+
+
+
+
+
Raw (-)
Roh (-)
+
+
+
+
+
+
+
Speed (km/h or miles/h)
Speed (km/h oder miles/h)
+
+
+
+
+
+
+
Meters (m or ft)
Meter (m or ft)
+
+
+
+
+
+
+
Temp (°)
Temp(°)
+
+
+
+
+
+
+
Fuel (%)
Füllst(%)
+
+
+
+
+
+
+
mAmps (mA)
mAmp (mA)
@@ -12333,6 +17675,13 @@ Too many errors, giving up.
TelemetryCustomScreen
+
+
+
+
+
+
+
Custom Screen Type
Telemetrie Anzeige als
@@ -12358,21 +17707,49 @@ Too many errors, giving up.
+
+
+
+
+
+
+
Min
Min
+
+
+
+
+
+
+
Source
Quelle
+
+
+
+
+
+
+
Gauge
Balken
+
+
+
+
+
+
+
Max
Max
@@ -12486,86 +17863,199 @@ Too many errors, giving up.
TelemetrySensor
+
+
+
+
+
+
+
Form
Form
+
+
+
+
+
+
+
Custom
Eigene
+
+
+
+
+
+
+
Calculated
Berechnung
+
+
+
+
+
+
+
Id
ID
+
+
+
+
+
+
+
Instance
SubID
+
+
+
+
Rx
+
+
+
+
Mod.
+
+
+
+
+
+
+
Add
Add
+
+
+
+
+
+
+
Average
Mittelwert
+
+
+
+
+
+
+
Min
Min
+
+
+
+
+
+
+
Max
Max
+
+
+
+
+
+
+
Multiply
Multiplizeren
+
+
+
+
+
+
+
Totalize
Gesamt
+
+
+
+
+
+
+
Cell
Zelle
+
+
+
+
+
+
+
Consumption
Verbrauch
+
+
+
+
+
+
+
Dist
Dist
+
+
+
+
+
+
+
Cells Sensor :
Zellensensor:
@@ -12578,191 +18068,506 @@ Too many errors, giving up.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
---
---
+
+
+
+
+
+
+
GPS Sensor :
GPS-Sensor:
+
+
+
+
+
+
+
Alt. Sensor :
Höhensensor:
+
+
+
+
+
+
+
Sensor :
Sensor:
+
+
+
+
+
+
+
V
V
+
+
+
+
+
+
+
A
A
+
+
+
+
+
+
+
mA
mA
+
+
+
+
+
+
+
kt
+
+
+
+
+
+
+
m/s
m/s
+
+
+
+
+
+
+
ft/s
+
+
+
+
+
+
+
km/h
km/h
+
+
+
+
+
+
+
mph
mph
+
+
+
+
+
+
+
m
m
+
+
+
+
+
+
+
ft
ft
+
+
+
+
+
+
+
°C
°C
+
+
+
+
+
+
+
°F
+
+
+
+
+
+
+
%
%
+
+
+
+
+
+
+
mAh
mAh
+
+
+
+
+
+
+
W
W
+
+
+
+
+
+
+
mW
+
+
+
+
+
+
+
dBm
+
+
+
+
+
+
+
g
g
+
+
+
+
+
+
+
°
°
+
+
+
+
+
+
+
Rad
+
+
+
+
+
+
+
mL
+
+
+
+
+
+
+
US fl.Oz.
+
+
+
+
+
+
+
Raw (-)
Roh (-)
+
+
+
+
+
+
+
RPM
Drehz
+
+
+
+
+
+
+
Precision
Precision
+
+
+
+
+
+
+
Ratio
+
+
+
+
+
+
+
Blades
Rotorblätter
+
+
+
+
+
+
+
Offset
Offset
+
+
+
+
+
+
+
Multiplier
Muliplikator
+
+
+
+
+
+
+
Auto Offset
Auto Offset
+
+
+
+
+
+
+
Filter
Filter
+
+
+
+
+
+
+
Persistent
Dauerhaft
+
+
+
+
+
+
+
Positive
Positiv
+
+
+
+
+
+
+
Logs
Log Daten
@@ -12794,116 +18599,268 @@ Too many errors, giving up.
TelemetrySimulator
-
+
+
+
+
+
+
+
+
+
Telemetry Simulator
Telemetrie Simulator
-
+
+
+
+
+
+
+
+
+
VFAS
VFAS
-
+
+
+
+
+
+
+
+
+
RSSI
RSSI
-
+
+
+
+
+
+
+
+
+
A1
A1
-
+
+
+
+
+
+
+
+
+
A2
A2
-
+
+
+
+
+
+
+
+
+
Simulate
Simulation
-
+
+
+
+
+
+
+
+
+
Replay SD Log File
-
+
+
+
+
+
+
+
+
+
Replay rate
-
+
+
+
+
+
+
+
+
+
Load
Lade
-
+
+
+
+
+
+
+
+
+
|>
-
+
+
+
+
+
+
+
+
+
<|
-
+
+
+
+
+
+
+
+
+
>
>
-
+
+
+
+
+
+
+
+
+
<-
-
+
+
+
+
+
+
+
+
+
X
X
-
+
+
+
+
+
+
+
+
+
Row #
Timestamp
-
+
+
+
+
+
+
+
+
+
1/5x
1/5x
-
+
+
+
+
+
+
+
+
+
5x
5x
-
+
+
+
+
+
+
+
+
+
No Log File Currently Loaded
-
+
+
+
+
+
+
+
+
+
RAS
@@ -12911,21 +18868,61 @@ Timestamp
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
V / ratio
-
+
+
+
+
+
+
+
+
+
Db
dB
-
+
+
+
+
+
+
+
+
+
RxBt
@@ -12943,121 +18940,377 @@ Timestamp
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<html><head/><body><p><br/></p></body></html>
-
+
+
+
+
+
+
+
+
+
Tmp1
-
+
+
+
+
+
+
+
+
+
A3
A3
-
+
+
+
+
+
+
+
+
+
A4
A4
-
+
+
+
+
+
+
+
+
+
Tmp2
-
+
+
+
+
+
+
+
+
+
Fuel
Fuel
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
°C
°C
-
+
+
+
+
+
+
+
+
+
ml
-
+
+
+
+
+
+
+
+
+
%
%
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Meters
Meter
-
+
+
+
+
+
+
+
+
+
Alt
Alt
-
+
+
+
+
+
+
+
+
+
VSpd
V-Speed
-
+
+
+
+
+
+
+
+
+
m/s
m/s
-
+
+
+
+
+
+
+
+
+
Fuel Qty
Füllstand
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
km/h
km/h
-
+
+
+
+
+
+
+
+
+
Hdg
-
+
+
+
+
+
+
+
+
+
ASpd
@@ -13065,135 +19318,335 @@ Timestamp
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
G
-
+
+
+
+
+
+
+
+
+
GPS
GPS
-
+
+
+
+
+
+
+
+
+
Lat,Lon
(dec.deg.)
-
+
+
+
+
+
+
+
+
+
AccX
AccX
-
+
+
+
+
+
+
+
+
+
dd-MM-yyyy
hh:mm:ss
-
+
+
+
+
+
+
+
+
+
Date
Datum
-
+
+
+
+
+
+
+
+
+
Amps
Ampere
-
+
+
+
+
+
+
+
+
+
AccZ
AccZ
-
+
+
+
+
+
+
+
+
+
GAlt
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Volts
Volt
-
+
+
+
+
+
+
+
+
+
Cels
Zellen
-
+
+
+
+
+
+
+
+
+
Curr
Strom
-
+
+
+
+
+
+
+
+
+
AccY
AccY
-
+
+
+
+
+
+
+
+
+
GSpd
-
+
+
+
+
+
+
+
+
+
Degrees
Grad
-
+
+
+
+
+
+
+
+
+
Setting RSSI to zero simulates telemetry and radio link loss.
-
+
+
+
+
+
+
+
+
+
Set RSSI to zero when paused.
-
+
+
+
+
+
+
+
+
+
Stop sending telemetry data when the Telemetry Simulator window is hidden.
-
+
+
+
+
+
+
+
+
+
Pause simulation when hidden.
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
RPM
RPM
-
+
+
+
+
+
+
+
+
+
When enabled, sends any non-blank values as simulated telemetry data.
@@ -13235,11 +19688,25 @@ hh:mm:ss
Timer
+
+
+
+
+
+
+
Countdown
Count Down
+
+
+
+
+
+
+
Minute Call
Jede Minute
@@ -13323,26 +19790,61 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
Trainer
+
+
+
+
+
+
+
Form
Form
+
+
+
+
+
+
+
Mode
Modus
+
+
+
+
+
+
+
Input
Eingang
+
+
+
+
+
+
+
Weight
Gewichtung
+
+
+
+
+
+
+
Rud
Sei
@@ -13355,6 +19857,62 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Beeper volume
0 - Quiet. No beeps at all.
@@ -13375,6 +19933,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Off
Aus
@@ -13383,6 +19969,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+= (Sum)
+= (Add)
@@ -13391,6 +20005,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
:= (Replace)
:= (Ersetzen)
@@ -13399,6 +20041,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn1
Kanal 1
@@ -13407,6 +20077,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn2
Kanal 2
@@ -13415,6 +20113,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn3
Kanal 3
@@ -13423,21 +20149,70 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn4
Kanal 4
+
+
+
+
+
+
+
Ele
Höh
+
+
+
+
+
+
+
Thr
Gas
+
+
+
+
+
+
+
Ail
Qur
@@ -13446,7 +20221,15 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
TrainerSimulator
-
+
+
+
+
+
+
+
+
+
Trainer simulator
Trainer Simulator
@@ -13876,6 +20659,13 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
Location of AVRDUDE executable
Speicherplatz der AVRDUDE Anwendung
@@ -13884,18 +20674,60 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The location of the AVRDUDE executable.
The location of the AVRDUDE.EXE executable.
Speicherort der AVRDUDE Anwendung.
+
+
+
+
+
+
+
Programmer Configuration
Configuration AVRDUDE / SAM-BA
Programmer Konfiguration
+
+
+
+
+
+
+
DFU-Util Location
DFU-Util Location
@@ -13903,6 +20735,27 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Use this button to browse and look for the AVRDUDE executable file.
@@ -13910,16 +20763,51 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Browse...
Suchen...
+
+
+
+
+
+
+
Programmer
Programmiergerät
+
+
+
+
+
+
+
Programmer used for communicating with the controller.
Please consult the programmer's documentation and the AVRDUDE documentation to select the appropriate programmer.
Programmiergerät für die Kommunikation mit dem Chip.
@@ -13927,49 +20815,126 @@ Bitte konsultiere das Handbuch des Programmiergerätes und die Dokumentation von
+
+
+
+
+
+
+
List all available programmers.
Auflistung aller möglichen Programmiergeräte.
+
+
+
+
+
+
+
List Available
Auflistung möglicher
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Extra arguments that will be passed to AVRDUDE on every call
Zusätzliche Argumente welche an AVRDUDE bei jedem Programmstart weitergeleitet werden
+
+
+
+
+
+
+
Extra Arguments
Zusätzliche Argumente
+
+
+
+
+
+
+
Show AVRDUDE help
Zeige AVRDUDE Hilfe
+
+
+
+
+
+
+
Show Help
Zeige Hilfe
+
+
+
+
+
+
+
Communication port to the programmer.
Schnittstelle zum Programmiergerät.
+
+
+
+
+
+
+
MCU
MCU
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CPU present on your 9x radio
Should be m64 for stock radios
m2560 for v4.1 boards
@@ -13977,28 +20942,77 @@ m2560 for v4.1 boards
+
+
+
+
+
+
+
at91sam3s8-9xr
at91sam3s8-9xr
+
+
+
+
+
+
+
Alternate device
Alternate device
+
+
+
+
+
+
+
Use advanced controls
Use advanced controls
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Port
Schnittstelle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Extra arguments used in AVRDUDE.
This can be used for providing extra information to AVRDUDE.
@@ -14007,27 +21021,69 @@ Please only use this if you know what you are doing. There are no error checks
+
+
+
+
+
+
+
AVRDUDE Location
AVRDUDE Speicherort
+
+
+
+
+
+
+
SAM-BA Location
SAM-BA Location
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Location of sam-ba executable
Location of sam-ba executable
+
+
+
+
+
+
+
ARM MCU
ARM MCU
+
+
+
+
+
+
+
sam-ba serial port
sam-ba serialer port
@@ -14066,6 +21122,20 @@ Please only use this if you know what you are doing. There are no error checks
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CPU of your TX
CPU des Senders
@@ -14074,13 +21144,29 @@ Please only use this if you know what you are doing. There are no error checks
joystickDialog
-
+
+
+
+
+
+
+
+
+
Configure Joystick
Joystick konfigurieren
-
+
+
+
+
+
+
+
+
+
Ch2
Ch2
@@ -14150,73 +21236,169 @@ Cancel zum abbrechen der Joystickkalibrierung ohne speichern.
-
+
+
+
+
+
+
+
+
+
Ch1
Ch1
-
+
+
+
+
+
+
+
+
+
Ch4
Ch4
-
+
+
+
+
+
+
+
+
+
Ch6
Ch6
-
+
+
+
+
+
+
+
+
+
Ch3
Ch3
-
+
+
+
+
+
+
+
+
+
Ch5
Ch5
-
+
+
+
+
+
+
+
+
+
Ch7
Ch7
-
+
+
+
+
+
+
+
+
+
Ch8
Ch8
-
+
+
+
+
+
+
+
+
+
Instructions
Anweisungen
-
+
+
+
+
+
+
+
+
+
Enable
Freigabe
-
+
+
+
+
+
+
+
+
+
Cancel
abbrechen
-
+
+
+
+
+
+
+
+
+
Back
Zurück
-
+
+
+
+
+
+
+
+
+
Start
Start
@@ -14227,7 +21409,15 @@ Cancel zum abbrechen der Joystickkalibrierung ohne speichern.
-
+
+
+
+
+
+
+
+
+
Ok
Ok
diff --git a/companion/src/translations/companion_en.ts b/companion/src/translations/companion_en.ts
index 582291683..da324f7b6 100644
--- a/companion/src/translations/companion_en.ts
+++ b/companion/src/translations/companion_en.ts
@@ -93,88 +93,221 @@
AppPreferencesDialog
+
+
+
+
+
+
+
Edit Settings
+
+
+
+
+
+
+
Radio Profile
+
+
+
+
+
+
+
Profile Name
+
+
+
+
+
+
+
Radio Type
+
+
+
+
+
+
+
Menu Language
+
+
+
+
+
+
+
Build Options
+
+
+
+
+
+
+
Splash Screen
+
+
+
+
+
+
+
Other Settings
+
+
+
+
+
+
+
SD Structure path
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The profile specific folder, if set, will override general Backup folder
+
+
+
+
+
+
+
Backup folder
+
+
+
+
+
+
+
If set it will override the application general setting
+
+
+
+
+
+
+
if set, will override general backup enable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Enable automatic backup before writing firmware
+
+
+
+
+
+
+
General Settings
+
+
+
+
+
+
+
Default Stick Mode
+
+
+
+
+
+
+
Mode selection:
Mode 1:
@@ -198,181 +331,433 @@ Mode 4:
+
+
+
+
+
+
+
Mode 1 (RUD ELE THR AIL)
+
+
+
+
+
+
+
Mode 2 (RUD THR ELE AIL)
+
+
+
+
+
+
+
Mode 3 (AIL ELE THR RUD)
+
+
+
+
+
+
+
Mode 4 (AIL THR ELE RUD)
+
+
+
+
+
+
+
Default Channel Order
+
+
+
+
+
+
+
<html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html>
+
+
+
+
+
+
+
R E T A
+
+
+
+
+
+
+
R E A T
+
+
+
+
+
+
+
R T E A
+
+
+
+
+
+
+
R T A E
+
+
+
+
+
+
+
R A E T
+
+
+
+
+
+
+
R A T E
+
+
+
+
+
+
+
E R T A
+
+
+
+
+
+
+
E R A T
+
+
+
+
+
+
+
E T R A
+
+
+
+
+
+
+
E T A R
+
+
+
+
+
+
+
E A R T
+
+
+
+
+
+
+
E A T R
+
+
+
+
+
+
+
T R E A
+
+
+
+
+
+
+
T R A E
+
+
+
+
+
+
+
T E R A
+
+
+
+
+
+
+
T E A R
+
+
+
+
+
+
+
T A R E
+
+
+
+
+
+
+
T A E R
+
+
+
+
+
+
+
A R E T
+
+
+
+
+
+
+
A R T E
+
+
+
+
+
+
+
A E R T
+
+
+
+
+
+
+
A E T R
+
+
+
+
+
+
+
A T R E
+
+
+
+
+
+
+
A T E R
+
+
+
+
+
+
+
Append version number to FW file name
+
+
+
+
+
+
+
Offer to write FW to Tx after download
+
+
+
+
+
+
+
Action on New Model
+
+
+
+
+
+
+
Screenshot capture folder
+
+
+
+
+
+
+
Clear Image
+
+
+
+
+
+
+
Select Image
@@ -383,216 +768,540 @@ Mode 4:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Select Folder
+
+
+
+
+
+
+
Application Settings
+
+
+
+
+
+
+
Automatic check for Companion updates
+
+
+
+
+
+
+
most recently used files
+
+
+
+
+
+
+
Startup Settings
+
+
+
+
+
+
+
Remember
+
+
+
+
+
+
+
Show splash screen when Companion starts
+
+
+
+
+
+
+
Automatic check for OpenTX firmware updates
+
+
+
+
+
+
+
Output Logs Folder
+
+
+
+
+
+
+
<html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html>
+
+
+
+
+
+
+
Remove empty model slots when deleting models (only applies for radios w/out categories)
+
+
+
+
+
+
+
Use model wizard
+
+
+
+
+
+
+
Open model editor
+
+
+
+
+
+
+
Just create the model
+
+
+
+
+
+
+
Debug Output Logging
+
+
+
+
+
+
+
<html><head/><body><p>Keep a log of all debugging messages generated by the desktop Companion/Simulator applications. An OpenTX developer may request this to help diagnose an issue.</p></body></html>
+
+
+
+
+
+
+
Application (Companion/Simulator)
+
+
+
+
+
+
+
<html><head/><body><p>Keep a log of all messages generated by the radio firmware when running in Simulator. This is the same information one would also see in the Simulator <span style=" font-style:italic;">Debug Output</span> window.</p></body></html>
+
+
+
+
+
+
+
Radio Firmware (in Simulator)
+
+
+
+
+
+
+
Splash Screen Library
+
+
+
+
+
+
+
Google Earth Executable
+
+
+
+
+
+
+
User Splash Screens
+
+
+
+
+
+
+
Automatic Backup Folder
+
+
+
+
+
+
+
Only show user splash images
+
+
+
+
+
+
+
Show user and companion splash images
+
+
+
+
+
+
+
Select Executable
+
+
+
+
Release channel
+
+
+
+
Releases (stable)
+
+
+
+
Release candidates (testing)
+
+
+
+
Nightly builds (unstable)
+
+
+
+
+
+
+
Simulator Settings
+
+
+
+
+
+
+
Calibrate
+
+
+
+
+
+
+
Blue
+
+
+
+
+
+
+
Green
+
+
+
+
+
+
+
Red
+
+
+
+
+
+
+
Orange
+
+
+
+
+
+
+
Yellow
+
+
+
+
+
+
+
Only capture to clipboard
+
+
+
+
+
+
+
Enable
+
+
+
+
+
+
+
Joystick
+
+
+
+
+
+
+
Simulator BackLight
+
+
+
+
+
+
+
Remember simulator switch values
+
+
+
+
+
+
+
Simulator Volume Gain
@@ -673,6 +1382,31 @@ Mode 4:
Images (%1)
+
+
+
+
+ Use releases (stable)
+
+
+
+
+ Use release candidates (testing)
+
+
+
+
+
+
+ Use nightly builds (unstable)
+
+
+
+
+
+ Use releases and release candidates (testing)
+
+
BinEepromFormat
@@ -891,36 +1625,85 @@ Mode 4:
ChecklistDialog
+
+
+
+
+
+
+
Edit Checklist
+
+
+
+
+
+
+
Line nn, Col nn
+
+
+
+
+
+
+
&Import...
+
+
+
+
+
+
+
&Cancel
+
+
+
+
+
+
+
&OK
+
+
+
+
+
+
+
Please note, the maximum width displayable is radio model limited. Also, renaming the model will break the link to this checklist file.
+
+
+
+
+
+
+
File: unknown
@@ -1165,31 +1948,73 @@ If you have a settings backup file, you may import that instead.
CompareDialog
+
+
+
+
+
+
+
Compare Models
+
+
+
+
+
+
+
To compare models, drag and drop them anywhere in this window.
+
+
+
+
+
+
+
Close
+
+
+
+
+
+
+
Style
+
+
+
+
+
+
+
Print
+
+
+
+
+
+
+
Print to file
@@ -1346,87 +2171,213 @@ If you have a settings backup file, you may import that instead.
Curves
+
+
+
+
+
+
+
Curve name
+
+
+
+
+
+
+
Fixed X
+
+
+
+
+
+
+
Custom X
+
+
+
+
+
+
+
Lines
+
+
+
+
+
+
+
Smooth
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Curve type
+
+
+
+
+
+
+
Curve Creator
+
+
+
+
+
+
+
Y at X=0
+
+
+
+
+
+
+
Point size
+
+
+
+
+
+
+
Y at X=100
+
+
+
+
+
+
+
Both
+
+
+
+
+
+
+
x>0
+
+
+
+
+
+
+
x<0
+
+
+
+
+
+
+
Apply
+
+
+
+
+
+
+
Side
+
+
+
+
+
+
+
Y at X=-100
+
+
+
+
+
+
+
Coefficient
@@ -1839,18 +2790,53 @@ If you have a settings backup file, you may import that instead.
CustomizeSplashDialog
+
+
+
+
+
+
+
Transmitter Splash Screen Editor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Invert
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Open Splash Library
@@ -1859,30 +2845,114 @@ If you have a settings backup file, you may import that instead.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load Profile
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load FW
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load Pict
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Save
@@ -1998,48 +3068,48 @@ If you have a settings backup file, you may import that instead.
-
+
Switch
-
+
Switch
-
+
cannot be exported on this board!
-
+
Source
-
+
Source %1 cannot be exported on this board!
-
+
OpenTX only accepts %1 points in all curves
-
+
OpenTx only accepts %1 points in all curves
-
-
+
+
OpenTX on this board doesn't accept this function
-
+
OpenTX doesn't accept this radio protocol
@@ -2048,86 +3118,198 @@ If you have a settings backup file, you may import that instead.
DebugOutput
-
+
+
+
+
+
+
+
+
+
Debug Output
-
+
+
+
+
+
+
+
+
+
<html><head/><body><p>Enable or disable the filter. If the button won't stay enabled, it is likely there is a syntax error in the Regular Expression entered.</p></body></html>
-
+
+
+
+
+
+
+
+
+
Filter:
-
+
+
+
+
+
+
+
+
+
<html><head/><body><p>Enter filter text here. Click the help/info button for details about using the filter. </p><p>
To <b>remove a remembered entry</b> from the filter list, first choose it, and then press <code>Shift-Delete</code> (or <code>Shift-Backspace</code>) key combination.</p></body></html>
-
+
+
+
+
+
+
+
+
+
Buffer:
-
+
+
+
+
+
+
+
+
+
Number of lines to keep in display.
-
+
+
+
+
+
+
+
+
+
Filter &Help
-
+
+
+
+
+
+
+
+
+
Show information about using the filter.
-
+
+
+
+
+
+
+
+
+
Word &Wrap
-
+
+
+
+
+
+
+
+
+
Toggle word wrapping on/off.
-
+
+
+
+
+
+
+
+
+
&Clear
-
+
+
+
+
+
+
+
+
+
Clear the output window of all text.
-
+
+
+
+
+
+
+
+
+
Enable &Filter
-
+
+
+
+
+
+
+
+
+
Turn the filter on/off.
@@ -2146,6 +3328,13 @@ To <b>remove a remembered entry</b> from the filter list, first cho
DownloadDialog
+
+
+
+
+
+
+
Downloading:
@@ -2289,11 +3478,25 @@ To <b>remove a remembered entry</b> from the filter list, first cho
ExpoDialog
+
+
+
+
+
+
+
Flight modes
+
+
+
+
+
+
+
Input name
@@ -2301,97 +3504,244 @@ To <b>remove a remembered entry</b> from the filter list, first cho
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
GV
+
+
+
+
+
+
+
Source for the mixer.
+
+
+
+
+
+
+
Weight
+
+
+
+
+
+
+
Switch
+
+
+
+
+
+
+
Switch used to enable the line.
If blank then the input is considered to be "ON" all the time.
+
+
+
+
+
+
+
Stick Side
+
+
+
+
+
+
+
NEG
+
+
+
+
+
+
+
POS
+
+
+
+
+
+
+
ALL
+
+
+
+
+
+
+
Scale
+
+
+
+
+
+
+
Include Trim
+
+
+
+
+
+
+
No
No
+
+
+
+
+
+
+
Yes
+
+
+
+
+
+
+
Curve
+
+
+
+
+
+
+
Curve applied to the source.
+
+
+
+
+
+
+
Source
+
+
+
+
+
+
+
Line name
+
+
+
+
+
+
+
Offset
+
+
+
+
+
+
+
The source for the mixer
@@ -3034,31 +4384,73 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FirmwarePreferencesDialog
+
+
+
+
+
+
+
Downloads
+
+
+
+
+
+
+
Check for updates
+
+
+
+
+
+
+
Firmware
+
+
+
+
+
+
+
Download firmware
+
+
+
+
+
+
+
Download SD contents
+
+
+
+
+
+
+
Latest Download
@@ -3100,67 +4492,158 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FlashEEpromDialog
+
+
+
+
+
+
+
Write Models and Settings to Radio
+
+
+
+
+
+
+
Load...
+
+
+
+
+
+
+
Current Profile
+
+
+
+
+
+
+
Allows Companion to write to older version of the firmware
+
+
+
+
+
+
+
Check Firmware compatibility
+
+
+
+
+
+
+
<html><head/><body><p>Saves a dated copy of your eeprom to the backup folder you specified in the Companion settings before writing the current model to the radio.</p></body></html>
+
+
+
+
+
+
+
Backup before Write
+
+
+
+
+
+
+
<html><head/><body><p>Modify calibration parameters using settings from current profile</p></body></html>
+
+
+
+
+
+
+
Patch calibration setting from profile
+
+
+
+
+
+
+
<html><head/><body><p>Modify HW parameters using settings from current profile</p></body></html>
+
+
+
+
+
+
+
Patch HW settings from profile
+
+
+
+
+
+
+
Cancel
+
+
+
+
+
+
+
Write to TX
@@ -3216,71 +4699,169 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FlashFirmwareDialog
+
+
+
+
+
+
+
Flash Firmware
+
+
+
+
+
+
+
Load...
+
+
+
+
+
+
+
Date & Time
+
+
+
+
+
+
+
Variant
+
+
+
+
+
+
+
Version
+
+
+
+
+
+
+
Use profile start screen
+
+
+
+
+
+
+
Use firmware start screen
+
+
+
+
+
+
+
Use library start screen
+
+
+
+
+
+
+
Use another start screen
+
+
+
+
+
+
+
Allows Companion to write to older version of the firmware
+
+
+
+
+
+
+
Check Hardware compatibility
+
+
+
+
+
+
+
Backup and restore Models and Settings
+
+
+
+
+
+
+
Cancel
+
+
+
+
+
+
+
Write to TX
@@ -3474,21 +5055,49 @@ You are currently using:
FlightMode
+
+
+
+
+
+
+
Fade In
+
+
+
+
+
+
+
Fade Out
+
+
+
+
+
+
+
Name
+
+
+
+
+
+
+
Switch
@@ -3678,11 +5287,25 @@ You are currently using:
FusesDialog
+
+
+
+
+
+
+
Fuses
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3700,11 +5323,25 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Read Fuses
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3724,12 +5361,26 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Reset Fuses
EEPROM - PROTECT
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3749,12 +5400,26 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Reset Fuses
EEPROM - DELETE
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3824,21 +5489,49 @@ p, li { white-space: pre-wrap; }
GeneralEdit
+
+
+
+
+
+
+
Radio settings
+
+
+
+
+
+
+
Retrieve calib. and hw settings from profile
+
+
+
+
+
+
+
Store calib. and hw settings in selected profile
+
+
+
+
+
+
+
General settings used throught the transmitter.
These will be relevant for all models in the same EEPROM.
@@ -3906,117 +5599,285 @@ These will be relevant for all models in the same EEPROM.
GeneralSetup
+
+
+
+
+
+
+
Form
+
+
+
+
+
+
+
Readonly Unlock
+
+
+
+
+
+
+
SC
+
+
+
+
+
+
+
SE
+
+
+
+
+
+
+
SA
+
+
+
+
+
+
+
SF
+
+
+
+
+
+
+
SH
+
+
+
+
+
+
+
SD
+
+
+
+
+
+
+
SB
+
+
+
+
+
+
+
SG
+
+
+
+
+
+
+
Stick reverse
+
+
+
+
+
+
+
Country Code
+
+
+
+
+
+
+
FAI Mode
+
+
+
+
+
+
+
Automatically adjust the radio's clock if a GPS is connected to telemetry.
+
+
+
+
+
+
+
Adjust RTC
+
+
+
+
+
+
+
Speaker Volume
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Hz
+
+
+
+
+
+
+
Vario pitch at max
+
+
+
+
+
+
+
Backlight Switch
+
+
+
+
+
+
+
Color 1
+
+
+
+
+
+
+
Color 2
+
+
+
+
+
+
+
Sound Mode
+
+
+
+
+
+
+
If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds.
@@ -4024,87 +5885,221 @@ These will be relevant for all models in the same EEPROM.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
sec
+
+
+
+
+
+
+
Backlight color
+
+
+
+
+
+
+
Speaker Pitch (spkr only)
+
+
+
+
+
+
+
Beeper
+
+
+
+
+
+
+
Speaker
+
+
+
+
+
+
+
BeeperVoice
+
+
+
+
+
+
+
SpeakerVoice
+
+
+
+
+
+
+
Beep volume
+
+
+
+
+
+
+
Wav volume
+
+
+
+
+
+
+
Vario volume
+
+
+
+
+
+
+
Background volume
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ms
+
+
+
+
+
+
+
Backlight flash on alarm
+
+
+
+
+
+
+
Vario pitch at zero
+
+
+
+
+
+
+
Vario repeat at zero
+
+
+
+
+
+
+
Backlight Auto OFF after
+
+
+
+
+
+
+
This is the switch selectrion for turning on the backlight (if installed).
@@ -4113,6 +6108,20 @@ These will be relevant for all models in the same EEPROM.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -4123,56 +6132,133 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
RotEnc Navigation
+
+
+
+
+
+
+
Backlight Brightness
+
+
+
+
+
+
+
America
+
+
+
+
+
+
+
Japan
+
+
+
+
+
+
+
Europe
+
+
+
+
+
+
+
Voice Language
+
+
+
+
+
+
+
Timeshift from UTC
+
+
+
+
+
+
+
Backlight OFF Brightness
+
+
+
+
+
+
+
RSSI Poweroff Warning
+
+
+
+
+
+
+
Low EEPROM Warning
+
+
+
+
+
+
+
Mode selection:
Mode 1:
@@ -4196,336 +6282,821 @@ Mode 4:
+
+
+
+
+
+
+
Mode 1 (RUD ELE THR AIL)
+
+
+
+
+
+
+
Mode 2 (RUD THR ELE AIL)
+
+
+
+
+
+
+
Mode 3 (AIL ELE THR RUD)
+
+
+
+
+
+
+
Mode 4 (AIL THR ELE RUD)
+
+
+
+
+
+
+
USB Mode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Ask on Connect
+
+
+
+
+
+
+
Joystick (HID)
+
+
+
+
+
+
+
USB Mass Storage
+
+
+
+
+
+
+
USB Serial (CDC)
+
+
+
+
+
+
+
<html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html>
+
+
+
+
+
+
+
If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio.
+
+
+
+
Owner Registration ID
+
+
+
+
aaaaaaAA
+
+
+
+
+
+
+
R E T A
+
+
+
+
+
+
+
R E A T
+
+
+
+
+
+
+
R T E A
+
+
+
+
+
+
+
R T A E
+
+
+
+
+
+
+
R A E T
+
+
+
+
+
+
+
R A T E
+
+
+
+
+
+
+
E R T A
+
+
+
+
+
+
+
E R A T
+
+
+
+
+
+
+
E T R A
+
+
+
+
+
+
+
E T A R
+
+
+
+
+
+
+
E A R T
+
+
+
+
+
+
+
E A T R
+
+
+
+
+
+
+
T R E A
+
+
+
+
+
+
+
T R A E
+
+
+
+
+
+
+
T E R A
+
+
+
+
+
+
+
T E A R
+
+
+
+
+
+
+
T A R E
+
+
+
+
+
+
+
T A E R
+
+
+
+
+
+
+
A R E T
+
+
+
+
+
+
+
A R T E
+
+
+
+
+
+
+
A E R T
+
+
+
+
+
+
+
A E T R
+
+
+
+
+
+
+
A T R E
+
+
+
+
+
+
+
A T E R
+
+
+
+
Power On Delay
+
+
+
+
+
+
+
Jack Mode
+
+
+
+
+
+
+
Audio
+
+
+
+
+
+
+
Trainer
+
+
+
+
+
+
+
DMS
+
+
+
+
+
+
+
Stick Mode
+
+
+
+
Power Off Delay
+
+
+
+
+
+
+
Metric
+
+
+
+
+
+
+
Imperial
+
+
+
+
+
+
+
Default Channel Order
+
+
+
+
+
+
+
GPS Coordinates
+
+
+
+
+
+
+
Min
+
+
+
+
+
+
+
+
+
+
+
+
+
+
v
+
+
+
+
+
+
+
Max
+
+
+
+
+
+
+
Inactivity Timer
+
+
+
+
+
+
+
Show Splash Screen on Startup
+
+
+
+
+
+
+
Contrast
+
+
+
+
+
+
+
Battery Meter Range
+
+
+
+
+
+
+
Haptic Strength
+
+
+
+
+
+
+
LCD Display Type
+
+
+
+
+
+
+
"No Sound" Warning
+
+
+
+
+
+
+
Battery Warning
+
+
+
+
+
+
+
Haptic Length
+
+
+
+
+
+
+
MAVLink Baud Rate
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Quiet
+
+
+
+
+
+
+
Only Alarms
+
+
+
+
+
+
+
+
+
+
+
+
+
+
No Keys
+
+
+
+
+
+
+
+
+
+
+
+
+
+
All
+
+
+
+
+
+
+
Battery warning voltage.
This is the threashhold where the battery warning sounds.
@@ -4534,107 +7105,261 @@ Acceptable values are 5v..10v
+
+
+
+
+
+
+
Standard
+
+
+
+
+
+
+
Optrex
+
+
+
+
+
+
+
If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes.
+
+
+
+
+
+
+
min
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Show splash screen on startup
+
+
+
+
+
+
+
---
+
+
+
+
+
+
+
2s
+
+
+
+
+
+
+
3s
+
+
+
+
+
+
+
4s
+
+
+
+
+
+
+
6s
+
+
+
+
+
+
+
8s
+
+
+
+
+
+
+
10s
+
+
+
+
+
+
+
15s
+
+
+
+
+
+
+
4800 Baud
+
+
+
+
+
+
+
9600 Baud
+
+
+
+
+
+
+
14400 Baud
+
+
+
+
+
+
+
19200 Baud
+
+
+
+
+
+
+
38400 Baud
+
+
+
+
+
+
+
57600 Baud
+
+
+
+
+
+
+
76800 Baud
+
+
+
+
+
+
+
115200 Baud
@@ -4642,6 +7367,27 @@ Acceptable values are 5v..10v
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -4658,65 +7404,184 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
X-Short
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Short
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Normal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Long
+
+
+
+
+
+
+
+
+
+
+
+
+
+
X-Long
+
+
+
+
+
+
+
NMEA
+
+
+
+
+
+
+
Play Delay (switch mid position)
+
+
+
+
+
+
+
Measurement Units
+
+
+
+
+
+
+
Haptic Mode
+
+
+
+
+
+
+
Beeper Length
+
+
+
+
+
+
+
Beeper Mode
+
+
+
+
+
+
+
Beeper volume
0 - Quiet. No beeps at all.
@@ -4728,9 +7593,26 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Alarms Only
+
+
+ Power On Speed
+
+
+
+
+ Power Off Speed
+
+
GeneralSetupPanel
@@ -4884,251 +7766,595 @@ Are you sure ?
Hardware
+
+
+
+
+
+
+
Form
+
+
+
+
+
+
+
SQ
+
+
+
+
+
+
+
SR
+
+
+
+
+
+
+
LS2
+
+
+
+
+
+
+
SP
+
+
+
+
+
+
+
SO
+
+
+
+
+
+
+
S4
+
+
+
+
+
+
+
RS
+
+
+
+
+
+
+
SB
+
+
+
+
+
+
+
PPM 2
+
+
+
+
+
+
+
OFF
+
+
+
+
+
+
+
S-Port Mirror
+
+
+
+
+
+
+
Telemetry
+
+
+
+
+
+
+
SBUS Trainer
+
+
+
+
+
+
+
Debug
+
+
+
+
+
+
+
Rud
+
+
+
+
+
+
+
PPM 3
+
+
+
+
+
+
+
S1
+
+
+
+
+
+
+
S2
+
+
+
+
+
+
+
S3
+
+
+
+
+
+
+
PPM 1
+
+
+
+
+
+
+
Serial Port
+
+
+
+
+
+
+
v
+
+
+
+
+
+
+
PPM Multiplier
+
+
+
+
+
+
+
Current Offset
+
+
+
+
+
+
+
PPM 4
+
+
+
+
+
+
+
SA
+
+
+
+
+
+
+
Ele
+
+
+
Antenna
+
+
+
+
+
S5
+
+
+
+
+
+
+
Ail
+
+
+
+
+
+
+
Thr
+
+
+
+
+
+
+
SC
+
+
+
+
+
+
+
LS
+
+
+
+
+
+
+
SD
+
+
+
+
+
+
+
Battery Offset
+
+
+
+
+
+
+
SE
+
+
+
+
+
+
+
SF
+
+
+
+
+
+
+
SG
+
+
+
+
+
+
+
SH
+
+
+
+
+
+
+
SI
+
+
+
+
+
+
+
SJ
+
+
+
+
+
+
+
SK
+
+
+
+
+
+
+
SL
+
+
+
+
+
+
+
SM
+
+
+
+
+
+
+
SN
+
+
+
+
+
+
+
RS2
+
+
+
+
+
+
+
Bluetooth
+
+
+
+
+
+
+
ADC Filter
+
+
+
+
+
+
+
Device Name:
@@ -5227,71 +8453,169 @@ Are you sure ?
Heli
+
+
+
+
+
+
+
Off
+
+
+
+
+
+
+
120
+
+
+
+
+
+
+
120X
+
+
+
+
+
+
+
140
+
+
+
+
+
+
+
90
+
+
+
+
+
+
+
Invert Elevator
+
+
+
+
+
+
+
Invert Aileron
+
+
+
+
+
+
+
Invert Collective
+
+
+
+
+
+
+
Long. cyc
+
+
+
+
+
+
+
Invert
+
+
+
+
+
+
+
Swash Ring
+
+
+
+
+
+
+
Swash Type
+
+
+
+
+
+
+
Lateral cyc
+
+
+
+
+
+
+
Collective
@@ -5682,46 +9006,109 @@ Are you sure ?
LogsDialog
+
+
+
+
+
+
+
Companion Log Viewer
+
+
+
+
+
+
+
Fly sessions
+
+
+
+
+
+
+
Save session CSV
+
+
+
+
+
+
+
Zoom
+
+
+
+
+
+
+
X
+
+
+
+
+
+
+
Y
+
+
+
+
+
+
+
Reset
+
+
+
+
+
+
+
Filename
+
+
+
+
+
+
+
Open LogFile
@@ -7206,26 +10593,59 @@ Do you want to save your changes?
MixerDialog
+
+
+
+
+
Dialog
+
+
+
+
+
+
+
Delay
+
+
+
+
+
+
+
Slow
+
+
+
+
+
+
+
Up
+
+
+
+
+
+
+
Down
@@ -7234,6 +10654,34 @@ Do you want to save your changes?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -7249,92 +10697,218 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Include Trim
+
+
+
+
+
+
+
Offset
+
+
+
+
+
+
+
Weight
+
+
+
+
+
+
+
Name
+
+
+
+
+
+
+
Source
+
+
+
+
+
+
+
Multiplex
+
+
+
+
+
+
+
Warning
+
+
+
+
+
+
+
The curve used by the mix
+
+
+
+
+
+
+
Include DR/Expo
+
+
+
+
+
+
+
Flight modes
+
+
+
+
+
+
+
Switch
+
+
+
+
+
+
+
Mixer warning.
Setting this value will cause a beep to be emmitted when this value is active.
+
+
+
+
+
+
+
OFF
+
+
+
+
+
+
+
1 Beep
+
+
+
+
+
+
+
2 Beep
+
+
+
+
+
+
+
3 Beep
+
+
+
+
+
+
+
No
No
+
+
+
+
+
+
+
Yes
@@ -7342,6 +10916,27 @@ Setting this value will cause a beep to be emmitted when this value is active.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
GV
@@ -7350,11 +10945,46 @@ Setting this value will cause a beep to be emmitted when this value is active.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The source for the mixer
+
+
+
+
+
+
+
Multiplexer
This determines how mixer values are added.
@@ -7366,26 +10996,61 @@ This determines how mixer values are added.
+
+
+
+
+
+
+
ADD
+
+
+
+
+
+
+
MULTIPLY
+
+
+
+
+
+
+
REPLACE
+
+
+
+
+
+
+
Curve
+
+
+
+
+
+
+
Switch used by the mix.
If blank then the mix is considered to be "ON" all the time.
@@ -7415,6 +11080,12 @@ If blank then the mix is considered to be "ON" all the time.
Invert All
+
+
+
+ FullScreenDialog
+
+
MixersListWidget
@@ -7588,11 +11259,23 @@ If blank then the mix is considered to be "ON" all the time.
ModelEdit
+
+
+
+
+
Dialog
+
+
+
+
+
+
+
Simulate
@@ -7646,6 +11329,12 @@ If blank then the mix is considered to be "ON" all the time.
Telemetry
+
+
+
+ FullScreenDialog
+
+
ModelPrinter
@@ -8464,31 +12153,70 @@ If blank then the mix is considered to be "ON" all the time.
Module
+
+
+
+
+
+
+
Start
+
+
+
+
+
+
+
CH
+
+
+
+
+
+
+
Polarity
+
+
+
+
+
+
+
Negative
+
+
+
+
+
+
+
Positive
+
+
+
+
Receiver 1
@@ -8496,201 +12224,486 @@ If blank then the mix is considered to be "ON" all the time.
+
+
+
+
+
+
+
+
+
+
+
+
X
+
+
+
+
Receiver 2
+
+
+
+
Receiver 3
+
+
+
+
+
+
+
WARNING: changing RF Output Power needs RE-BIND
+
+
+
+
+
+
+
Antenna
+
+
+
+
+
+
+
Output type
+
+
+
+
+
+
+
Open Drain
+
+
+
+
+
+
+
Push Pull
+
+
+
+
+
+
+
Option value
+
+
+
+
+
+
+
Channels
+
+
+
+
+
+
+
Receiver No.
+
+
+
+
+
+
+
RF Output Power
+
+
+
+
+
+
+
Bind on startup
+
+
+
+
+
+
+
Low Power
+
+
+
+
+
+
+
PPM delay
+
+
+
+
+
+
+
us
+
+
+
+
+
+
+
PPM Frame Length
+
+
+
+
+
+
+
ms
+
+
+
+
+
+
+
Protocol
+
+
+
+
Registration ID
+
+
+
+
+
+
+
Multi Radio Protocol
+
+
+
+
+
+
+
Sub Type
+
+
+
+
+
+
+
WARNING: Requires non-certified firmware!
+
+
+
+
+
+
+
Failsafe Mode
+
+
+
+
+
+
+
Not set
+
+
+
+
+
+
+
Hold
+
+
+
+
+
+
+
Custom
+
+
+
+
+
+
+
No Pulses
+
+
+
+
+
+
+
Receiver
+
+
+
+
+
+
+
Trainer Mode
+
+
+
+
+
+
+
Master/Jack
+
+
+
+
+
+
+
Slave/Jack
+
+
+
+
+
+
+
Master/SBUS Module
+
+
+
+
+
+
+
Master/CPPM Module
+
+
+
+
+
+
+
Master/SBUS in battery compartment
+
+
+
+
+
+
+
Failsafe Positions
+
+
+
+
+
+
+
Show values in:
+
+
+
+
+
+
+
%
abbreviation for percent
+
+
+
+
+
+
+
μs
abbreviation for microseconds
+
+
+
+
+
+ Internal
+
+
+
+
+
+
+
+ Ext. + Int.
+
+
ModuleData
@@ -9427,21 +13440,49 @@ If blank then the mix is considered to be "ON" all the time.
PrintDialog
+
+
+
+
+
+
+
Close
+
+
+
+
+
+
+
Style
+
+
+
+
+
+
+
Print
+
+
+
+
+
+
+
Print to file
@@ -9465,11 +13506,25 @@ If blank then the mix is considered to be "ON" all the time.
ProgressDialog
+
+
+
+
+
+
+
Flash Firmware
+
+
+
+
+
+
+
Close
@@ -9484,6 +13539,13 @@ If blank then the mix is considered to be "ON" all the time.
ProgressWidget
+
+
+
+
+
+
+
Show Details
@@ -9636,16 +13698,37 @@ If blank then the mix is considered to be "ON" all the time.
RadioNotFoundDialog
+
+
+
+
+
+
+
No Radio Found
+
+
+
+
+
+
+
<html><head/><body><p>No Radio was found!</p><p>Make sure that you hold the lower trim buttons towards the center while you turn it on.</p><p>Then connect the USB wire.</p><p><span style=" font-family:'arial,sans-serif'; font-size:13px; font-style:italic; color:#222222; background-color:#ffffff;">Note: if you have a Taranis that has not had the firmware upgraded to 2.0 then this version of Companion will not work.</span></p></body></html>
+
+
+
+
+
+
+
OK
@@ -9654,43 +13737,99 @@ If blank then the mix is considered to be "ON" all the time.
RadioOutputsWidget
-
+
+
+
+
+
+
+
+
+
Form
-
+
+
+
+
+
+
+
+
+
View:
-
+
+
+
+
+
+
+
+
+
Logical Switches
-
+
+
+
+
+
+
+
+
+
Global Variables
-
+
+
+
+
+
+
+
+
+
Channel Outputs
-
+
+
+
+
+
+
+
+
+
Mix Outputs
-
+
+
+
+
+
+
+
+
+
L
o
g
@@ -9700,7 +13839,15 @@ c
-
+
+
+
+
+
+
+
+
+
G
l
o
@@ -9711,7 +13858,15 @@ l
-
+
+
+
+
+
+
+
+
+
C
h
a
@@ -9724,7 +13879,15 @@ s
-
+
+
+
+
+
+
+
+
+
M
i
x
@@ -10562,81 +14725,193 @@ s
Setup
+
+
+
+
+
+
+
Timer 1
+
+
+
+
+
+
+
Top LCD Timer
+
+
+
+
+
+
+
Model Image
+
+
+
+
+
+
+
Warnings
+
+
+
+
+
+
+
Switch Warnings
+
+
+
+
+
+
+
Pot Warnings
+
+
+
+
+
+
+
OFF
+
+
+
+
+
+
+
Manual
+
+
+
+
+
+
+
Auto
+
+
+
+
+
+
+
Model
+
+
+
+
+
+
+
Center beep
+
+
+
+
+
+
+
Edit Checklist...
+
+
+
+
+
+
+
Extended Trims
+
+
+
+
+
+
+
Display Checklist
+
+
+
+
+
+
+
Extended Limits
+
+
+
+
+
+
+
Reverse throttle operation.
If this is checked the throttle will be reversed. Idle will be forward, trim will also be reversed and the throttle warning will be reversed as well.
@@ -10645,86 +14920,205 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi
+
+
+
+
+
+
+
Reverse Throttle
+
+
+
+
+
+
+
Throttle Trim Idle Only
+
+
+
+
+
+
+
Throttle Warning
+
+
+
+
+
+
+
Exponential
+
+
+
+
+
+
+
Extra Fine
+
+
+
+
+
+
+
Fine
+
+
+
+
+
+
+
Medium
+
+
+
+
+
+
+
Coarse
+
+
+
+
+
+
+
Never
+
+
+
+
+
+
+
On change
+
+
+
+
+
+
+
Always
+
+
+
+
+
+
+
Global Functions
+
+
+
+
+
+
+
Throttle Source
+
+
+
+
+
+
+
Trim Step
+
+
+
+
+
+
+
Trims Display
+
+
+
+
+
+
+
Timer 2
+
+
+
+
+
+
+
Timer 3
@@ -11092,181 +15486,421 @@ Profile ID: [%1]; Radio ID: [%2]
SimulatorMainWindow
-
+
+
+
+
+
+
+
+
+
OpenTx Simulator
-
+
+
+
+
+
+
+
+
+
View
-
+
+
+
+
+
+
+
+
+
Radio Window
-
+
+
+
+
+
+
+
+
+
Reload...
-
+
+
+
+
+
+
+
+
+
Tools
-
+
+
+
+
+
+
+
+
+
Toolbar
-
+
+
+
+
+
+
+
+
+
Reload Lua Scripts
-
+
+
+
+
+
+
+
+
+
Reload the Lua environment on the simulated radio.
-
+
+
+
+
+
+
+
+
+
F7
-
+
+
+
+
+
+
+
+
+
Reload Radio Data
-
+
+
+
+
+
+
+
+
+
Reload all radio data without restarting the simulator.
-
+
+
+
+
+
+
+
+
+
F9
-
+
+
+
+
+
+
+
+
+
Key Mapping
-
+
+
+
+
+
+
+
+
+
Show keyboard maping reference.
-
+
+
+
+
+
+
+
+
+
F1
-
+
+
+
+
+
+
+
+
+
Joystick Settings
-
+
+
+
+
+
+
+
+
+
Open joystick configuration settings dialog.
-
+
+
+
+
+
+
+
+
+
F3
-
+
+
+
+
+
+
+
+
+
LCD Screenshot
-
+
+
+
+
+
+
+
+
+
Save a screenshot of the current simulated LCD screen.
-
+
+
+
+
+
+
+
+
+
F8
-
+
+
+
+
+
+
+
+
+
Dock In Main Window
-
+
+
+
+
+
+
+
+
+
Show the radio in the main window or as a separate "floating" window.
-
+
+
+
+
+
+
+
+
+
Menu Bar
-
+
+
+
+
+
+
+
+
+
Show or hide the top menu bar.
-
+
+
+
+
+
+
+
+
+
Alt+M
-
+
+
+
+
+
+
+
+
+
Constrain Width
-
+
+
+
+
+
+
+
+
+
Set radio widget width to be a fixed size.
-
+
+
+
+
+
+
+
+
+
Constrain Height
-
+
+
+
+
+
+
+
+
+
Set radio widget height to be a fixed size.
@@ -11347,76 +15981,172 @@ Profile ID: [%1]; Radio ID: [%2]
SimulatorStartupDialog
-
+
+
+
+
+
+
+
+
+
OpenTX Simulator - Startup Options
-
+
+
+
+
+
+
+
+
+
Simulator Startup Options:
-
+
+
+
+
+
+
+
+
+
Radio Profile:
-
+
+
+
+
+
+
+
+
+
Existing radio profiles are shown here.<br />
Create or edit profiles using the Companion application.
-
+
+
+
+
+
+
+
+
+
Radio Type:
-
+
+
+
+
+
+
+
+
+
Existing radio simulators are shown here.<br />
The radio type specified in the selected profile is used by default.
-
+
+
+
+
+
+
+
+
+
Data Source:
-
+
+
+
+
+
+
+
+
+
Data File:
-
+
+
+
+
+
+
+
+
+
Data Folder:
-
+
+
+
+
+
+
+
+
+
SD Image Path:
-
+
+
+
+
+
+
+
+
+
Radio data (.bin/.eeprom/.otx) image file to use. A new file with a default image will be created if necessary.<br />
<b>NOTE</b>: any existing EEPROM data incompatible with the selected radio type may be overwritten!
-
+
+
+
+
+
+
+
+
+
Select data file...
@@ -11424,59 +16154,147 @@ The radio type specified in the selected profile is used by default.
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
-
+
+
+
+
+
+
+
+
+
Directory containing RADIO and MODELS folders to use.<br />
New folder(s) with default radio/model will be created here if necessary.
-
+
+
+
+
+
+
+
+
+
Select data folder...
-
+
+
+
+
+
+
+
+
+
Directory containing the SD card image to use.<br/>
The default is configured in the chosen Radio Profile.
-
+
+
+
+
+
+
+
+
+
Select SD card image folder...
-
+
+
+
+
+
+
+
+
+
Select which of the data sources (File/Folder/SD Card) you would like to start the simulator with.
-
+
+
+
+
+
+
+
+
+
File
-
+
+
+
+
+
+
+
+
+
Folder
-
+
+
+
+
+
+
+
+
+
SD Path
@@ -11505,7 +16323,15 @@ The default is configured in the chosen Radio Profile.
SimulatorWidget
-
+
+
+
+
+
+
+
+
+
Companion Simulator
@@ -11593,6 +16419,20 @@ The default is configured in the chosen Radio Profile.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
@@ -11632,6 +16472,13 @@ The default is configured in the chosen Radio Profile.
StyleEditDialog
+
+
+
+
+
+
+
@@ -11640,21 +16487,49 @@ The default is configured in the chosen Radio Profile.
+
+
+
+
+
+
+
&Reset to default
+
+
+
+
+
+
+
&Cancel
+
+
+
+
+
+
+
&OK
+
+
+
+
+
+
+
This feature does not validate your changes and assumes you are familiar with CSS syntax for QT.
@@ -11912,190 +16787,475 @@ Too many errors, giving up.
Telemetry
+
+
+
+
+
+
+
Protocol
+
+
+
+
+
+
+
Alarm 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Yellow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Orange
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Red
+
+
+
+
+
+
+
Alarm 2
+
+
+
+
+
+
+
RSSI
+
+
+
+
+
+
+
Disable telemetry audio warnings
+
+
+
+
+
Source
+
+
+
+
+
+
+
A1
+
+
+
+
+
+
+
A2
+
+
+
+
+
+
+
Sink Max
+
+
+
+
+
+
+
Climb Max
+
+
+
+
+
+
+
Sink Min
+
+
+
+
+
+
+
Climb Min
+
+
+
+
+
+
+
Center Silent
+
+
+
+
+
+
+
Vario limits
+
+
+
+
+
+
+
Vario source
+
+
+
+
+
+
+
Altimetry
+
+
+
+
+
+
+
Altitude source
+
+
+
+
+
+
+
Volts source
+
+
+
+
+
+
+
Top Bar
+
+
+
+
+
+
+
Volt source
+
+
+
+
+
+
+
Current source
+
+
+
+
+
+
+
Blades
+
+
+
+
+
+
+
mAh count
+
+
+
+
+
+
+
mAh
+
+
+
+
+
+
+
A
+
+
+
+
+
+
+
FAS Offset
+
+
+
+
+
+
+
Persistent mAh
+
+
+
+
+
+
+
Various
+
+
+
+
+
+
+
Serial Protocol
+
+
+
+
+
+
+
None
+
+
+
+
+
+
+
FrSky Sensor Hub
+
+
+
+
+
+
+
Sensors
+
+
+
+
+
+
+
Disable multi sensor handling
@@ -12104,107 +17264,289 @@ Too many errors, giving up.
TelemetryAnalog
+
+
+
+
+
+
+
Unit
+
+
+
+
+
+
+
Max Value
+
+
+
+
+
+
+
Alarm 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Yellow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Orange
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Red
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<
+
+
+
+
+
+
+
+
+
+
+
+
+
+
>
+
+
+
+
+
+
+
Alarm 2
+
+
+
+
+
+
+
Offset
+
+
+
+
+
+
+
Volts (V)
+
+
+
+
+
+
+
Amps (A)
+
+
+
+
+
+
+
Speed (m/s or ft/s)
+
+
+
+
+
+
+
Raw (-)
+
+
+
+
+
+
+
Speed (km/h or miles/h)
+
+
+
+
+
+
+
Meters (m or ft)
+
+
+
+
+
+
+
Temp (°)
+
+
+
+
+
+
+
Fuel (%)
+
+
+
+
+
+
+
mAmps (mA)
@@ -12218,26 +17560,61 @@ Too many errors, giving up.
TelemetryCustomScreen
+
+
+
+
+
+
+
Custom Screen Type
+
+
+
+
+
+
+
Min
+
+
+
+
+
+
+
Source
+
+
+
+
+
+
+
Gauge
+
+
+
+
+
+
+
Max
@@ -12371,86 +17748,199 @@ Too many errors, giving up.
TelemetrySensor
+
+
+
+
+
+
+
Form
+
+
+
+
+
+
+
Custom
+
+
+
+
+
+
+
Calculated
+
+
+
+
+
+
+
Id
+
+
+
+
+
+
+
Instance
+
+
+
+
Rx
+
+
+
+
Mod.
+
+
+
+
+
+
+
Add
+
+
+
+
+
+
+
Average
+
+
+
+
+
+
+
Min
+
+
+
+
+
+
+
Max
+
+
+
+
+
+
+
Multiply
+
+
+
+
+
+
+
Totalize
+
+
+
+
+
+
+
Cell
+
+
+
+
+
+
+
Consumption
+
+
+
+
+
+
+
Dist
+
+
+
+
+
+
+
Cells Sensor :
@@ -12463,191 +17953,506 @@ Too many errors, giving up.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
---
+
+
+
+
+
+
+
GPS Sensor :
+
+
+
+
+
+
+
Alt. Sensor :
+
+
+
+
+
+
+
Sensor :
+
+
+
+
+
+
+
Raw (-)
+
+
+
+
+
+
+
V
+
+
+
+
+
+
+
A
+
+
+
+
+
+
+
mA
+
+
+
+
+
+
+
kt
+
+
+
+
+
+
+
m/s
+
+
+
+
+
+
+
ft/s
+
+
+
+
+
+
+
km/h
+
+
+
+
+
+
+
mph
+
+
+
+
+
+
+
m
+
+
+
+
+
+
+
ft
+
+
+
+
+
+
+
°C
+
+
+
+
+
+
+
°F
+
+
+
+
+
+
+
%
+
+
+
+
+
+
+
mAh
+
+
+
+
+
+
+
W
+
+
+
+
+
+
+
mW
+
+
+
+
+
+
+
dBm
+
+
+
+
+
+
+
RPM
+
+
+
+
+
+
+
g
+
+
+
+
+
+
+
°
+
+
+
+
+
+
+
Rad
+
+
+
+
+
+
+
mL
+
+
+
+
+
+
+
US fl.Oz.
+
+
+
+
+
+
+
Precision
+
+
+
+
+
+
+
Ratio
+
+
+
+
+
+
+
Blades
+
+
+
+
+
+
+
Offset
+
+
+
+
+
+
+
Multiplier
+
+
+
+
+
+
+
Auto Offset
+
+
+
+
+
+
+
Filter
+
+
+
+
+
+
+
Persistent
+
+
+
+
+
+
+
Positive
+
+
+
+
+
+
+
Logs
@@ -12679,104 +18484,240 @@ Too many errors, giving up.
TelemetrySimulator
-
+
+
+
+
+
+
+
+
+
Telemetry Simulator
-
+
+
+
+
+
+
+
+
+
When enabled, sends any non-blank values as simulated telemetry data.
-
+
+
+
+
+
+
+
+
+
Simulate
-
+
+
+
+
+
+
+
+
+
Replay SD Log File
-
+
+
+
+
+
+
+
+
+
Replay rate
-
+
+
+
+
+
+
+
+
+
Load
-
+
+
+
+
+
+
+
+
+
|>
-
+
+
+
+
+
+
+
+
+
<|
-
+
+
+
+
+
+
+
+
+
>
-
+
+
+
+
+
+
+
+
+
<-
-
+
+
+
+
+
+
+
+
+
X
-
+
+
+
+
+
+
+
+
+
Row #
Timestamp
-
+
+
+
+
+
+
+
+
+
1/5x
-
+
+
+
+
+
+
+
+
+
5x
-
+
+
+
+
+
+
+
+
+
No Log File Currently Loaded
-
+
+
+
+
+
+
+
+
+
RAS
-
+
+
+
+
+
+
+
+
+
A2
@@ -12784,27 +18725,75 @@ Timestamp
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
V / ratio
-
+
+
+
+
+
+
+
+
+
Db
-
+
+
+
+
+
+
+
+
+
RxBt
-
+
+
+
+
+
+
+
+
+
A1
@@ -12822,141 +18811,429 @@ Timestamp
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<html><head/><body><p><br/></p></body></html>
-
+
+
+
+
+
+
+
+
+
Tmp1
-
+
+
+
+
+
+
+
+
+
A3
-
+
+
+
+
+
+
+
+
+
A4
-
+
+
+
+
+
+
+
+
+
RSSI
-
+
+
+
+
+
+
+
+
+
Tmp2
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
RPM
-
+
+
+
+
+
+
+
+
+
Fuel
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
°C
-
+
+
+
+
+
+
+
+
+
ml
-
+
+
+
+
+
+
+
+
+
%
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Meters
-
+
+
+
+
+
+
+
+
+
Alt
-
+
+
+
+
+
+
+
+
+
VSpd
-
+
+
+
+
+
+
+
+
+
m/s
-
+
+
+
+
+
+
+
+
+
Fuel Qty
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
km/h
-
+
+
+
+
+
+
+
+
+
VFAS
-
+
+
+
+
+
+
+
+
+
Hdg
-
+
+
+
+
+
+
+
+
+
ASpd
@@ -12964,121 +19241,297 @@ Timestamp
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
G
-
+
+
+
+
+
+
+
+
+
GPS
-
+
+
+
+
+
+
+
+
+
Lat,Lon
(dec.deg.)
-
+
+
+
+
+
+
+
+
+
AccX
-
+
+
+
+
+
+
+
+
+
dd-MM-yyyy
hh:mm:ss
-
+
+
+
+
+
+
+
+
+
Date
-
+
+
+
+
+
+
+
+
+
Amps
-
+
+
+
+
+
+
+
+
+
AccZ
-
+
+
+
+
+
+
+
+
+
GAlt
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Volts
-
+
+
+
+
+
+
+
+
+
Cels
-
+
+
+
+
+
+
+
+
+
Curr
-
+
+
+
+
+
+
+
+
+
AccY
-
+
+
+
+
+
+
+
+
+
GSpd
-
+
+
+
+
+
+
+
+
+
Degrees
-
+
+
+
+
+
+
+
+
+
Setting RSSI to zero simulates telemetry and radio link loss.
-
+
+
+
+
+
+
+
+
+
Set RSSI to zero when paused.
-
+
+
+
+
+
+
+
+
+
Stop sending telemetry data when the Telemetry Simulator window is hidden.
-
+
+
+
+
+
+
+
+
+
Pause simulation when hidden.
@@ -13120,11 +19573,25 @@ hh:mm:ss
Timer
+
+
+
+
+
+
+
Countdown
+
+
+
+
+
+
+
Minute Call
@@ -13208,26 +19675,61 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
Trainer
+
+
+
+
+
+
+
Form
+
+
+
+
+
+
+
Mode
+
+
+
+
+
+
+
Input
+
+
+
+
+
+
+
Weight
+
+
+
+
+
+
+
Rud
@@ -13240,6 +19742,62 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Beeper volume
0 - Quiet. No beeps at all.
@@ -13254,6 +19812,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Off
@@ -13262,6 +19848,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+= (Sum)
@@ -13270,6 +19884,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
:= (Replace)
@@ -13278,6 +19920,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn1
@@ -13286,6 +19956,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn2
@@ -13294,6 +19992,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn3
@@ -13302,21 +20028,70 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn4
+
+
+
+
+
+
+
Ele
+
+
+
+
+
+
+
Thr
+
+
+
+
+
+
+
Ail
@@ -13325,7 +20100,15 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
TrainerSimulator
-
+
+
+
+
+
+
+
+
+
Trainer simulator
@@ -13750,12 +20533,33 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
burnConfigDialog
+
+
+
+
+
+
+
Programmer Configuration
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Location of sam-ba executable
@@ -13764,16 +20568,58 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The location of the AVRDUDE executable.
+
+
+
+
+
+
+
DFU-Util Location
+
+
+
+
+
+
+
Location of AVRDUDE executable
@@ -13781,6 +20627,27 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Use this button to browse and look for the AVRDUDE executable file.
@@ -13788,39 +20655,116 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Browse...
+
+
+
+
+
+
+
Programmer
+
+
+
+
+
+
+
Programmer used for communicating with the controller.
Please consult the programmer's documentation and the AVRDUDE documentation to select the appropriate programmer.
+
+
+
+
+
+
+
List all available programmers.
+
+
+
+
+
+
+
List Available
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Extra arguments that will be passed to AVRDUDE on every call
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Extra arguments used in AVRDUDE.
This can be used for providing extra information to AVRDUDE.
@@ -13829,21 +20773,49 @@ Please only use this if you know what you are doing. There are no error checks
+
+
+
+
+
+
+
Extra Arguments
+
+
+
+
+
+
+
Show AVRDUDE help
+
+
+
+
+
+
+
Show Help
+
+
+
+
+
+
+
Communication port to the programmer.
@@ -13851,28 +20823,84 @@ Please only use this if you know what you are doing. There are no error checks
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Port
+
+
+
+
+
+
+
AVRDUDE Location
+
+
+
+
+
+
+
MCU
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CPU of your TX
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CPU present on your 9x radio
Should be m64 for stock radios
m2560 for v4.1 boards
@@ -13880,31 +20908,73 @@ m2560 for v4.1 boards
+
+
+
+
+
+
+
at91sam3s8-9xr
+
+
+
+
+
+
+
SAM-BA Location
+
+
+
+
+
+
+
ARM MCU
+
+
+
+
+
+
+
sam-ba serial port
+
+
+
+
+
+
+
Alternate device
+
+
+
+
+
+
+
Use advanced controls
@@ -13950,91 +21020,211 @@ m2560 for v4.1 boards
joystickDialog
-
+
+
+
+
+
+
+
+
+
Configure Joystick
-
+
+
+
+
+
+
+
+
+
Ch2
-
+
+
+
+
+
+
+
+
+
Ch1
-
+
+
+
+
+
+
+
+
+
Ch4
-
+
+
+
+
+
+
+
+
+
Ch6
-
+
+
+
+
+
+
+
+
+
Ch3
-
+
+
+
+
+
+
+
+
+
Ch5
-
+
+
+
+
+
+
+
+
+
Ch7
-
+
+
+
+
+
+
+
+
+
Ch8
-
+
+
+
+
+
+
+
+
+
Instructions
-
+
+
+
+
+
+
+
+
+
Enable
-
+
+
+
+
+
+
+
+
+
Cancel
-
+
+
+
+
+
+
+
+
+
Back
-
+
+
+
+
+
+
+
+
+
Start
-
+
+
+
+
+
+
+
+
+
Ok
diff --git a/companion/src/translations/companion_es.ts b/companion/src/translations/companion_es.ts
index 7e1cf51d6..61d6368a0 100644
--- a/companion/src/translations/companion_es.ts
+++ b/companion/src/translations/companion_es.ts
@@ -93,41 +93,97 @@
AppPreferencesDialog
+
+
+
+
+
+
+
Edit Settings
Editar Ajustes
+
+
+
+
+
+
+
Radio Profile
Perfil de Radio
+
+
+
+
+
+
+
Default Channel Order
Orden Prederterminado Canales
+
+
+
+
+
+
+
Build Options
Opciones Firmware
+
+
+
+
+
+
+
Menu Language
Lenguaje Menú
+
+
+
+
+
+
+
Default Stick Mode
Modo Prederterminado Sticks
+
+
+
+
+
+
+
Select Image
Seleccionar Imagen
+
+
+
+
+
+
+
Mode selection:
Mode 1:
@@ -169,172 +225,417 @@ Modo 4:
+
+
+
+
+
+
+
Mode 1 (RUD ELE THR AIL)
Modo 1 (RUD ELE THR AIL)
+
+
+
+
+
+
+
Mode 2 (RUD THR ELE AIL)
Modo 2 (RUD THR ELE AIL)
+
+
+
+
+
+
+
Mode 3 (AIL ELE THR RUD)
Modo 3 (AIL ELE THR RUD)
+
+
+
+
+
+
+
Mode 4 (AIL THR ELE RUD)
Modo 4 (AIL THR ELE RUD)
+
+
+
+
+
+
+
Splash Screen
Pantalla de Inicio
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The profile specific folder, if set, will override general Backup folder
+
+
+
+
+
+
+
Backup folder
+
+
+
+
+
+
+
If set it will override the application general setting
+
+
+
+
+
+
+
if set, will override general backup enable
+
+
+
+
+
+
+
<html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html>
<html><head/><body><p>Orden de los canales</p><p><br/></p><p>Define el orden por defecto de las mezclas en un nuevo modelo</p></body></html>
+
+
+
+
+
+
+
R E T A
R E T A
+
+
+
+
+
+
+
R E A T
R E A T
+
+
+
+
+
+
+
R T E A
R T E A
+
+
+
+
+
+
+
R T A E
R T A E
+
+
+
+
+
+
+
R A E T
R A E T
+
+
+
+
+
+
+
R A T E
R A T E
+
+
+
+
+
+
+
E R T A
E R T A
+
+
+
+
+
+
+
E R A T
E R A T
+
+
+
+
+
+
+
E T R A
E T R A
+
+
+
+
+
+
+
E T A R
E T A R
+
+
+
+
+
+
+
E A R T
E A R T
+
+
+
+
+
+
+
E A T R
E A T R
+
+
+
+
+
+
+
T R E A
T R E A
+
+
+
+
+
+
+
T R A E
T R A E
+
+
+
+
+
+
+
T E R A
T E R A
+
+
+
+
+
+
+
T E A R
T E A R
+
+
+
+
+
+
+
T A R E
T A R E
+
+
+
+
+
+
+
T A E R
T A E R
+
+
+
+
+
+
+
A R E T
A R E T
+
+
+
+
+
+
+
A R T E
A R T E
+
+
+
+
+
+
+
A E R T
A E R T
+
+
+
+
+
+
+
A E T R
A E T R
+
+
+
+
+
+
+
A T R E
A T R E
+
+
+
+
+
+
+
A T E R
A T E R
@@ -345,272 +646,680 @@ Modo 4:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Select Folder
+
+
+
+
+
+
+
Select Executable
+
+
+
+
Release channel
+
+
+
+
Releases (stable)
+
+
+
+
Release candidates (testing)
+
+
+
+
Nightly builds (unstable)
+
+
+
+
+
+
+
Simulator Volume Gain
+
+
+
+
+
+
+
Profile Name
Nombre de Perfil
+
+
+
+
+
+
+
Clear Image
Limpiar Imagen
+
+
+
+
+
+
+
Append version number to FW file name
Agregar el número de version al nombre de archivo de Firmware
+
+
+
+
+
+
+
Offer to write FW to Tx after download
Ofrecer grabar el firmware al Tx después de la descarga
+
+
+
+
+
+
+
Radio Type
Tipo de Radio
+
+
+
+
+
+
+
Other Settings
Otros Ajustes
+
+
+
+
+
+
+
General Settings
Ajustes Generales
+
+
+
+
+
+
+
SD Structure path
Estructura de archivos SD
+
+
+
+
+
+
+
Application Settings
Ajustes Aplicación
+
+
+
+
+
+
+
Show splash screen when Companion starts
Mostrar pantalla de inicion cuando Companion comience
+
+
+
+
+
+
+
Automatic check for Companion updates
Comprobar automáticamente actualizaciones de Companion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Enable automatic backup before writing firmware
Activar copia de seguridad automática antes de escribir el firmware
+
+
+
+
+
+
+
Automatic check for OpenTX firmware updates
Comprobar auromaticamente actualizaciones del firmware OpenTX
+
+
+
+
+
+
+
Splash Screen Library
Libreria de pantallas de inicio
+
+
+
+
+
+
+
Google Earth Executable
Ejecutable Google Earth
+
+
+
+
+
+
+
Only show user splash images
Mostrar solo pantallas de inicio del usuario
+
+
+
+
+
+
+
Show user and companion splash images
Mostrar pantallas de inicio del usuario y companion
+
+
+
+
+
+
+
User Splash Screens
Pantallas de Inicio del Usuario
+
+
+
+
+
+
+
Automatic Backup Folder
Carpeta copia de seguridad Automática
+
+
+
+
+
+
+
Simulator Settings
Ajustes Simulador
+
+
+
+
+
+
+
Simulator BackLight
Luz de fondo del simulador
+
+
+
+
+
+
+
Enable
Activado
+
+
+
+
+
+
+
most recently used files
+
+
+
+
+
+
+
Startup Settings
+
+
+
+
+
+
+
Remember
+
+
+
+
+
+
+
Output Logs Folder
+
+
+
+
+
+
+
<html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html>
+
+
+
+
+
+
+
Remove empty model slots when deleting models (only applies for radios w/out categories)
+
+
+
+
+
+
+
Use model wizard
+
+
+
+
+
+
+
Open model editor
+
+
+
+
+
+
+
Just create the model
+
+
+
+
+
+
+
Debug Output Logging
+
+
+
+
+
+
+
<html><head/><body><p>Keep a log of all debugging messages generated by the desktop Companion/Simulator applications. An OpenTX developer may request this to help diagnose an issue.</p></body></html>
+
+
+
+
+
+
+
Application (Companion/Simulator)
+
+
+
+
+
+
+
<html><head/><body><p>Keep a log of all messages generated by the radio firmware when running in Simulator. This is the same information one would also see in the Simulator <span style=" font-style:italic;">Debug Output</span> window.</p></body></html>
+
+
+
+
+
+
+
Radio Firmware (in Simulator)
+
+
+
+
+
+
+
Action on New Model
+
+
+
+
+
+
+
Blue
Azul
+
+
+
+
+
+
+
Green
Verde
+
+
+
+
+
+
+
Red
Rojo
+
+
+
+
+
+
+
Orange
Naranja
+
+
+
+
+
+
+
Yellow
Amarillo
+
+
+
+
+
+
+
Screenshot capture folder
+
+
+
+
+
+
+
Joystick
Joystick
+
+
+
+
+
+
+
Calibrate
Calibrar
+
+
+
+
+
+
+
Only capture to clipboard
Solo capturar a portapapeles
+
+
+
+
+
+
+
Remember simulator switch values
Recordar los valores de los switch en el simulador
@@ -691,6 +1400,31 @@ Modo 4:
Images (%1)
Imagenes (%1)
+
+
+
+
+ Use releases (stable)
+
+
+
+
+ Use release candidates (testing)
+
+
+
+
+
+
+ Use nightly builds (unstable)
+
+
+
+
+
+ Use releases and release candidates (testing)
+
+
BinEepromFormat
@@ -910,36 +1644,85 @@ Modo 4:
ChecklistDialog
+
+
+
+
+
+
+
Edit Checklist
+
+
+
+
+
+
+
Line nn, Col nn
+
+
+
+
+
+
+
&Import...
+
+
+
+
+
+
+
&Cancel
+
+
+
+
+
+
+
&OK
+
+
+
+
+
+
+
Please note, the maximum width displayable is radio model limited. Also, renaming the model will break the link to this checklist file.
+
+
+
+
+
+
+
File: unknown
@@ -1185,31 +1968,73 @@ If you have a settings backup file, you may import that instead.
CompareDialog
+
+
+
+
+
+
+
Compare Models
+
+
+
+
+
+
+
To compare models, drag and drop them anywhere in this window.
+
+
+
+
+
+
+
Close
Cerrar
+
+
+
+
+
+
+
Style
+
+
+
+
+
+
+
Print
Imprimir
+
+
+
+
+
+
+
Print to file
Imprimir a archivo
@@ -1366,87 +2191,213 @@ If you have a settings backup file, you may import that instead.
Curves
+
+
+
+
+
+
+
Fixed X
X Fija
+
+
+
+
+
+
+
Custom X
X A medida
+
+
+
+
+
+
+
Lines
Lineas
+
+
+
+
+
+
+
Smooth
Suave
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Curve type
Tipo de Curva
+
+
+
+
+
+
+
Curve Creator
Creador de curva
+
+
+
+
+
+
+
Y at X=0
Y a X=0
+
+
+
+
+
+
+
Point size
+
+
+
+
+
+
+
Y at X=100
Y a X=100
+
+
+
+
+
+
+
Both
Ambos
+
+
+
+
+
+
+
x>0
x>0
+
+
+
+
+
+
+
x<0
x<0
+
+
+
+
+
+
+
Apply
Aplicar
+
+
+
+
+
+
+
Side
Cara
+
+
+
+
+
+
+
Y at X=-100
Y a X=-100
+
+
+
+
+
+
+
Coefficient
Coeficiente
+
+
+
+
+
+
+
Curve name
Nombre de la curva
@@ -1859,42 +2810,133 @@ If you have a settings backup file, you may import that instead.
CustomizeSplashDialog
+
+
+
+
+
+
+
Transmitter Splash Screen Editor
Editor de la pantalla de inicio del transmisor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Invert
Invertir
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load FW
Cargar FW
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load Pict
Cargar Imag
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load Profile
Cargar Perfil
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Save
Guardar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Open Splash Library
Abrir libreria de pantallas de inicio
@@ -1903,6 +2945,34 @@ If you have a settings backup file, you may import that instead.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
@@ -2018,48 +3088,48 @@ If you have a settings backup file, you may import that instead.
-
+
Switch
-
+
Switch
-
+
cannot be exported on this board!
-
+
Source
-
+
Source %1 cannot be exported on this board!
-
+
OpenTX only accepts %1 points in all curves
OpenTx solo aceta %1 puntos en todas las curvas
-
+
OpenTx only accepts %1 points in all curves
OpenTx solo aceta %1 puntos en todas las curvas
-
-
+
+
OpenTX on this board doesn't accept this function
OpenTX en esta placa no acepta esa función
-
+
OpenTX doesn't accept this radio protocol
OpenTX en esta placa no acepta este protocolo de radio
@@ -2068,86 +3138,198 @@ If you have a settings backup file, you may import that instead.
DebugOutput
-
+
+
+
+
+
+
+
+
+
Debug Output
-
+
+
+
+
+
+
+
+
+
<html><head/><body><p>Enable or disable the filter. If the button won't stay enabled, it is likely there is a syntax error in the Regular Expression entered.</p></body></html>
-
+
+
+
+
+
+
+
+
+
Filter:
-
+
+
+
+
+
+
+
+
+
<html><head/><body><p>Enter filter text here. Click the help/info button for details about using the filter. </p><p>
To <b>remove a remembered entry</b> from the filter list, first choose it, and then press <code>Shift-Delete</code> (or <code>Shift-Backspace</code>) key combination.</p></body></html>
-
+
+
+
+
+
+
+
+
+
Buffer:
-
+
+
+
+
+
+
+
+
+
Number of lines to keep in display.
-
+
+
+
+
+
+
+
+
+
Filter &Help
-
+
+
+
+
+
+
+
+
+
Show information about using the filter.
-
+
+
+
+
+
+
+
+
+
Word &Wrap
-
+
+
+
+
+
+
+
+
+
Toggle word wrapping on/off.
-
+
+
+
+
+
+
+
+
+
&Clear
-
+
+
+
+
+
+
+
+
+
Clear the output window of all text.
-
+
+
+
+
+
+
+
+
+
Enable &Filter
-
+
+
+
+
+
+
+
+
+
Turn the filter on/off.
@@ -2166,6 +3348,13 @@ To <b>remove a remembered entry</b> from the filter list, first cho
DownloadDialog
+
+
+
+
+
+
+
Downloading:
Descargando:
@@ -2309,6 +3498,13 @@ To <b>remove a remembered entry</b> from the filter list, first cho
ExpoDialog
+
+
+
+
+
+
+
Weight
Peso
@@ -2316,91 +3512,231 @@ To <b>remove a remembered entry</b> from the filter list, first cho
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
GV
GV
+
+
+
+
+
+
+
Input name
Nombre entrada
+
+
+
+
+
+
+
Flight modes
Modos de vuelo
+
+
+
+
+
+
+
Switch
Switch
+
+
+
+
+
+
+
Source
Origen
+
+
+
+
+
+
+
Line name
Nombre de linea
+
+
+
+
+
+
+
Stick Side
Lado Stick
+
+
+
+
+
+
+
Scale
Escala
+
+
+
+
+
+
+
Include Trim
Incluir Trim
+
+
+
+
+
+
+
No
No
+
+
+
+
+
+
+
Yes
Si
+
+
+
+
+
+
+
Curve
Curva
+
+
+
+
+
+
+
Curve applied to the source.
Curva aplicada al origen.
+
+
+
+
+
+
+
Offset
Offset
+
+
+
+
+
+
+
The source for the mixer
El origen de la mezcla
+
+
+
+
+
+
+
NEG
NEG
+
+
+
+
+
+
+
Source for the mixer.
Origen para la mezcla.
+
+
+
+
+
+
+
Switch used to enable the line.
If blank then the input is considered to be "ON" all the time.
Switch usado para activar la linea.
@@ -2408,11 +3744,25 @@ Si está en blanco entonces las entradas son consideradas como ON todo el tiempo
+
+
+
+
+
+
+
POS
POS
+
+
+
+
+
+
+
ALL
TODO
@@ -3055,31 +4405,73 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FirmwarePreferencesDialog
+
+
+
+
+
+
+
Downloads
Descargas
+
+
+
+
+
+
+
Check for updates
Comprobar Actualizaciones
+
+
+
+
+
+
+
Firmware
Firmware
+
+
+
+
+
+
+
Download firmware
+
+
+
+
+
+
+
Download SD contents
+
+
+
+
+
+
+
Latest Download
Última Descarga
@@ -3121,67 +4513,158 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FlashEEpromDialog
+
+
+
+
+
+
+
Write Models and Settings to Radio
Escribir Modelos y Ajustes a la Radio
+
+
+
+
+
+
+
Load...
+
+
+
+
+
+
+
Current Profile
Perfil Actual
+
+
+
+
+
+
+
Allows Companion to write to older version of the firmware
Permitir a Companion escribir a las versiones viejas de firmware
+
+
+
+
+
+
+
Check Firmware compatibility
Comprobar la compatibilidad del firmware
+
+
+
+
+
+
+
<html><head/><body><p>Saves a dated copy of your eeprom to the backup folder you specified in the Companion settings before writing the current model to the radio.</p></body></html>
+
+
+
+
+
+
+
Backup before Write
+
+
+
+
+
+
+
<html><head/><body><p>Modify calibration parameters using settings from current profile</p></body></html>
<html><head/><body><p>Modificar los parámetros de calibración utilizando la configuración de perfil actual</p></body></html>
+
+
+
+
+
+
+
Patch calibration setting from profile
Arreglar los ajustes de calibración desde el perfil
+
+
+
+
+
+
+
<html><head/><body><p>Modify HW parameters using settings from current profile</p></body></html>
<html><head/><body><p>Modificar los parámetros de HW usando los ajustes del perfil actual</p></body></html>
+
+
+
+
+
+
+
Patch HW settings from profile
+
+
+
+
+
+
+
Cancel
Cancelar
+
+
+
+
+
+
+
Write to TX
Escribir al TX
@@ -3239,71 +4722,169 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FlashFirmwareDialog
+
+
+
+
+
+
+
Flash Firmware
+
+
+
+
+
+
+
Load...
+
+
+
+
+
+
+
Date & Time
Fecha & Hora
+
+
+
+
+
+
+
Variant
Variante
+
+
+
+
+
+
+
Version
+
+
+
+
+
+
+
Use profile start screen
Usar la pantala de inicio del perfil
+
+
+
+
+
+
+
Use firmware start screen
Usar la pantalla de inicio del firmware
+
+
+
+
+
+
+
Use library start screen
Usar la libreria de pantalla de inicio
+
+
+
+
+
+
+
Use another start screen
Usar otra pantalla de inicio
+
+
+
+
+
+
+
Allows Companion to write to older version of the firmware
Permitir a Companion escribir a las versiones viejas de firmware
+
+
+
+
+
+
+
Check Hardware compatibility
+
+
+
+
+
+
+
Backup and restore Models and Settings
Copia de seguridad y restauración de Modelos y Ajustes
+
+
+
+
+
+
+
Cancel
Cancelar
+
+
+
+
+
+
+
Write to TX
Escribir al TX
@@ -3503,21 +5084,49 @@ Actualmente estás usando:
FlightMode
+
+
+
+
+
+
+
Fade In
+
+
+
+
+
+
+
Fade Out
+
+
+
+
+
+
+
Name
Nombre
+
+
+
+
+
+
+
Switch
Switch
@@ -3707,11 +5316,25 @@ Actualmente estás usando:
FusesDialog
+
+
+
+
+
+
+
Fuses
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3729,11 +5352,25 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Read Fuses
Leer Fuses
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3753,6 +5390,13 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Reset Fuses
EEPROM - PROTECT
Resetear Fuses
@@ -3760,6 +5404,13 @@ EEPROM - PROTEGIDA
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3779,12 +5430,26 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Reset Fuses
EEPROM - DELETE
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3854,11 +5519,25 @@ p, li { white-space: pre-wrap; }
GeneralEdit
+
+
+
+
+
+
+
Radio settings
+
+
+
+
+
+
+
General settings used throught the transmitter.
These will be relevant for all models in the same EEPROM.
Ajustes generales usados a través del transmisor.
@@ -3876,11 +5555,25 @@ Estos puede ser relevantes para todos los modelos en el mismo EEPROM.
+
+
+
+
+
+
+
Store calib. and hw settings in selected profile
Guardar calib. y los ajustes de hw en el perfil seleccionado
+
+
+
+
+
+
+
Retrieve calib. and hw settings from profile
Recuperar calib. y los ajustes de hw de un perfil
@@ -3937,127 +5630,309 @@ Estos puede ser relevantes para todos los modelos en el mismo EEPROM.GeneralSetup
+
+
+
+
+
+
+
Form
+
+
+
+
+
+
+
Readonly Unlock
Desactivar solo lectura
+
+
+
+
+
+
+
SC
+
+
+
+
+
+
+
SE
+
+
+
+
+
+
+
SA
+
+
+
+
+
+
+
SF
SF
+
+
+
+
+
+
+
SH
+
+
+
+
+
+
+
SD
+
+
+
+
+
+
+
SB
+
+
+
+
+
+
+
SG
+
+
+
+
+
+
+
Timeshift from UTC
Zona horaria UTC
+
+
+
+
+
+
+
Voice Language
Lenguaje de las Voces
+
+
+
+
+
+
+
Country Code
Codigo País
+
+
+
+
+
+
+
Stick reverse
+
+
+
+
+
+
+
FAI Mode
Modo FAI
+
+
+
+
+
+
+
Adjust RTC
+
+
+
+
+
+
+
Vario pitch at max
Tono de vario al max
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Hz
+
+
+
+
+
+
+
Speaker Volume
Volumen Altavoz
+
+
+
+
+
+
+
Backlight Switch
Switch de pantalla
+
+
+
+
+
+
+
Sound Mode
Modo sonido
+
+
+
+
+
+
+
Color 1
+
+
+
+
+
+
+
Color 2
+
+
+
+
+
+
+
Speaker Pitch (spkr only)
Tono del altavoz (solo altavoz)
+
+
+
+
+
+
+
If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds.
Si este valor no es 0, cualquier pulsación encenderá la pantalla y se apagará despues de un número determinado de segundos.
@@ -4065,82 +5940,209 @@ Estos puede ser relevantes para todos los modelos en el mismo EEPROM.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
sec
seg
+
+
+
+
+
+
+
Backlight color
Color de pantalla
+
+
+
+
+
+
+
Beeper
+
+
+
+
+
+
+
Speaker
Altavoz
+
+
+
+
+
+
+
BeeperVoice
BeeperVoz
+
+
+
+
+
+
+
SpeakerVoice
VozAltavoz
+
+
+
+
+
+
+
Beep volume
Volumen Beep
+
+
+
+
+
+
+
Wav volume
Volumen Wav
+
+
+
+
+
+
+
Vario volume
Volumen Vario
+
+
+
+
+
+
+
Background volume
Volumen de Fondo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ms
+
+
+
+
+
+
+
Backlight Auto OFF after
Apagado automático de pantalla después
+
+
+
+
+
+
+
Backlight flash on alarm
Pantalla parpadea con una alarma
+
+
+
+
+
+
+
Vario pitch at zero
Tono de vario a cero
+
+
+
+
+
+
+
Vario repeat at zero
Vario repite a cero
+
+
+
+
+
+
+
This is the switch selectrion for turning on the backlight (if installed).
@@ -4151,6 +6153,20 @@ Estos puede ser relevantes para todos los modelos en el mismo EEPROM.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -4166,41 +6182,97 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Backlight Brightness
Brillo pantalla
+
+
+
+
+
+
+
RotEnc Navigation
Navegación RotEnc
+
+
+
+
+
+
+
Automatically adjust the radio's clock if a GPS is connected to telemetry.
+
+
+
+
+
+
+
America
+
+
+
+
+
+
+
Japan
Japón
+
+
+
+
+
+
+
Europe
Europa
+
+
+
+
+
+
+
Backlight OFF Brightness
+
+
+
+
+
+
+
Mode selection:
Mode 1:
@@ -4242,346 +6314,845 @@ Modo 4:
+
+
+
+
+
+
+
Mode 1 (RUD ELE THR AIL)
Modo 1 (RUD ELE THR AIL)
+
+
+
+
+
+
+
Mode 2 (RUD THR ELE AIL)
Modo 2 (RUD THR ELE AIL)
+
+
+
+
+
+
+
Mode 3 (AIL ELE THR RUD)
Modo 3 (AIL ELE THR RUD)
+
+
+
+
+
+
+
Mode 4 (AIL THR ELE RUD)
Modo 4 (AIL THR ELE RUD)
+
+
+
+
+
+
+
<html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html>
<html><head/><body><p>Orden de los canales</p><p><br/></p><p>Define el orden por defecto de las mezclas en un nuevo modelo</p></body></html>
+
+
+
+
+
+
+
If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio.
+
+
+
+
+
+
+
RSSI Poweroff Warning
+
+
+
+
+
+
+
Low EEPROM Warning
+
+
+
+
Owner Registration ID
+
+
+
+
aaaaaaAA
+
+
+
+
+
+
+
R E T A
R E T A
+
+
+
+
+
+
+
R E A T
R E A T
+
+
+
+
+
+
+
R T E A
R T E A
+
+
+
+
+
+
+
R T A E
R T A E
+
+
+
+
+
+
+
R A E T
R A E T
+
+
+
+
+
+
+
R A T E
R A T E
+
+
+
+
+
+
+
E R T A
E R T A
+
+
+
+
+
+
+
E R A T
E R A T
+
+
+
+
+
+
+
E T R A
E T R A
+
+
+
+
+
+
+
E T A R
E T A R
+
+
+
+
+
+
+
E A R T
E A R T
+
+
+
+
+
+
+
E A T R
E A T R
+
+
+
+
+
+
+
T R E A
T R E A
+
+
+
+
+
+
+
T R A E
T R A E
+
+
+
+
+
+
+
T E R A
T E R A
+
+
+
+
+
+
+
T E A R
T E A R
+
+
+
+
+
+
+
T A R E
T A R E
+
+
+
+
+
+
+
T A E R
T A E R
+
+
+
+
+
+
+
A R E T
A R E T
+
+
+
+
+
+
+
A R T E
A R T E
+
+
+
+
+
+
+
A E R T
A E R T
+
+
+
+
+
+
+
A E T R
A E T R
+
+
+
+
+
+
+
A T R E
A T R E
+
+
+
+
+
+
+
A T E R
A T E R
+
+
+
+
Power On Delay
+
+
+
+
+
+
+
Jack Mode
+
+
+
+
+
+
+
Audio
+
+
+
+
+
+
+
Trainer
Trainer
+
+
+
+
+
+
+
DMS
+
+
+
+
+
+
+
USB Mode
+
+
+
+
Power Off Delay
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Ask on Connect
+
+
+
+
+
+
+
Joystick (HID)
+
+
+
+
+
+
+
USB Mass Storage
+
+
+
+
+
+
+
USB Serial (CDC)
+
+
+
+
+
+
+
Stick Mode
Modo Stick
+
+
+
+
+
+
+
Metric
Métrico
+
+
+
+
+
+
+
Imperial
+
+
+
+
+
+
+
Default Channel Order
Orden Prederterminado Canales
+
+
+
+
+
+
+
GPS Coordinates
Coordenadas GPS
+
+
+
+
+
+
+
Min
+
+
+
+
+
+
+
+
+
+
+
+
+
+
v
+
+
+
+
+
+
+
Max
+
+
+
+
+
+
+
Inactivity Timer
Tiempo de inactividad
+
+
+
+
+
+
+
Show Splash Screen on Startup
Mostrar Pantalla de Inicio al Enceder
+
+
+
+
+
+
+
Contrast
Contraste
+
+
+
+
+
+
+
Battery Meter Range
+
+
+
+
+
+
+
Haptic Strength
Fuerza de Haptic
+
+
+
+
+
+
+
LCD Display Type
Tipo de Pantalla LCD
+
+
+
+
+
+
+
"No Sound" Warning
Aviso "Sin Sonido"
+
+
+
+
+
+
+
Battery Warning
Aviso de Bateria
+
+
+
+
+
+
+
Haptic Length
Longitud Haptic
+
+
+
+
+
+
+
MAVLink Baud Rate
Transferencia Baud MAVLink
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Quiet
Silencio
+
+
+
+
+
+
+
Only Alarms
Solo Alarmas
+
+
+
+
+
+
+
+
+
+
+
+
+
+
No Keys
Sin teclas
+
+
+
+
+
+
+
+
+
+
+
+
+
+
All
Todo
+
+
+
+
+
+
+
Battery warning voltage.
This is the threashhold where the battery warning sounds.
@@ -4593,107 +7164,261 @@ Los valores aceptables son 5v..10v
+
+
+
+
+
+
+
Standard
Estandar
+
+
+
+
+
+
+
Optrex
+
+
+
+
+
+
+
If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes.
Si no es cero emitirá sonidos si el transmisor de deja sin pulsaciones surante el numero específico de minutos.
+
+
+
+
+
+
+
min
min
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Show splash screen on startup
Mostrar pantalla de inicio al encender
+
+
+
+
+
+
+
---
---
+
+
+
+
+
+
+
2s
2s
+
+
+
+
+
+
+
3s
3s
+
+
+
+
+
+
+
4s
4s
+
+
+
+
+
+
+
6s
6s
+
+
+
+
+
+
+
8s
8s
+
+
+
+
+
+
+
10s
10s
+
+
+
+
+
+
+
15s
15s
+
+
+
+
+
+
+
4800 Baud
+
+
+
+
+
+
+
9600 Baud
+
+
+
+
+
+
+
14400 Baud
+
+
+
+
+
+
+
19200 Baud
+
+
+
+
+
+
+
38400 Baud
+
+
+
+
+
+
+
57600 Baud
+
+
+
+
+
+
+
76800 Baud
+
+
+
+
+
+
+
115200 Baud
@@ -4701,6 +7426,27 @@ Los valores aceptables son 5v..10v
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -4727,65 +7473,184 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
X-Short
X-Corto
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Short
Corto
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Normal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Long
Largo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
X-Long
X-Largo
+
+
+
+
+
+
+
NMEA
+
+
+
+
+
+
+
Play Delay (switch mid position)
Retardo de Play (switch en posición media)
+
+
+
+
+
+
+
Measurement Units
Unidades de Medida
+
+
+
+
+
+
+
Haptic Mode
Modo Haptic
+
+
+
+
+
+
+
Beeper Length
Longitud del beeper
+
+
+
+
+
+
+
Beeper Mode
Modo Beeper
+
+
+
+
+
+
+
Beeper volume
0 - Quiet. No beeps at all.
@@ -4803,9 +7668,26 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Alarms Only
Solo Alarmas
+
+
+ Power On Speed
+
+
+
+
+ Power Off Speed
+
+
GeneralSetupPanel
@@ -4959,251 +7841,595 @@ Are you sure ?
Hardware
+
+
+
+
+
+
+
Form
+
+
+
+
+
+
+
SQ
+
+
+
+
+
+
+
SR
+
+
+
+
+
+
+
LS2
+
+
+
+
+
+
+
SP
+
+
+
+
+
+
+
SO
+
+
+
+
+
+
+
S4
+
+
+
+
+
+
+
RS
+
+
+
+
+
+
+
SB
+
+
+
+
+
+
+
PPM 2
PPM 2
+
+
+
+
+
+
+
OFF
+
+
+
+
+
+
+
S-Port Mirror
S-Port Espejo
+
+
+
+
+
+
+
Telemetry
Telemetría
+
+
+
+
+
+
+
SBUS Trainer
+
+
+
+
+
+
+
Debug
Depurar
+
+
+
+
+
+
+
Rud
Rud
+
+
+
+
+
+
+
PPM 3
PPM 3
+
+
+
+
+
+
+
S1
+
+
+
+
+
+
+
S2
+
+
+
+
+
+
+
S3
+
+
+
+
+
+
+
PPM 1
PPM 1
+
+
+
+
+
+
+
Serial Port
Puerto Serie
+
+
+
+
+
+
+
v
+
+
+
+
+
+
+
PPM Multiplier
Multiplicador PPM
+
+
+
+
+
+
+
Current Offset
+
+
+
+
+
+
+
PPM 4
PPM 4
+
+
+
+
+
+
+
SA
+
+
+
+
+
+
+
Ele
Ele
+
+
+
Antenna
+
+
+
+
+
S5
+
+
+
+
+
+
+
Ail
Ail
+
+
+
+
+
+
+
Thr
Thr
+
+
+
+
+
+
+
SC
+
+
+
+
+
+
+
LS
LS
+
+
+
+
+
+
+
SD
+
+
+
+
+
+
+
Battery Offset
+
+
+
+
+
+
+
SE
+
+
+
+
+
+
+
SF
SF
+
+
+
+
+
+
+
SG
+
+
+
+
+
+
+
SH
+
+
+
+
+
+
+
SI
+
+
+
+
+
+
+
SJ
+
+
+
+
+
+
+
SK
+
+
+
+
+
+
+
SL
+
+
+
+
+
+
+
SM
+
+
+
+
+
+
+
SN
+
+
+
+
+
+
+
RS2
+
+
+
+
+
+
+
Bluetooth
+
+
+
+
+
+
+
ADC Filter
+
+
+
+
+
+
+
Device Name:
@@ -5302,71 +8528,169 @@ Are you sure ?
Heli
+
+
+
+
+
+
+
Invert Elevator
Invertir Elevador
+
+
+
+
+
+
+
Invert Aileron
Invertir Aleron
+
+
+
+
+
+
+
Invert Collective
Invertir Colectivo
+
+
+
+
+
+
+
Invert
Invertir
+
+
+
+
+
+
+
Off
+
+
+
+
+
+
+
120
+
+
+
+
+
+
+
120X
+
+
+
+
+
+
+
140
+
+
+
+
+
+
+
90
+
+
+
+
+
+
+
Long. cyc
+
+
+
+
+
+
+
Lateral cyc
+
+
+
+
+
+
+
Collective
Colectivo
+
+
+
+
+
+
+
Swash Type
Tipo de Plato
+
+
+
+
+
+
+
Swash Ring
@@ -5758,46 +9082,109 @@ Are you sure ?
LogsDialog
+
+
+
+
+
+
+
Companion Log Viewer
Visor de registros de Companion
+
+
+
+
+
+
+
Filename
Nombre Archivo
+
+
+
+
+
+
+
Open LogFile
Abrir archivo Registros
+
+
+
+
+
+
+
Zoom
+
+
+
+
+
+
+
Save session CSV
+
+
+
+
+
+
+
X
+
+
+
+
+
+
+
Y
+
+
+
+
+
+
+
Reset
Resetear
+
+
+
+
+
+
+
Fly sessions
Sesiones de vuelo
@@ -7287,11 +10674,23 @@ Do you want to save your changes?
MixerDialog
+
+
+
+
+
Dialog
Mezclas
+
+
+
+
+
+
+
Source
Fuente
@@ -7300,11 +10699,46 @@ Do you want to save your changes?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The source for the mixer
LA fuente de la mezcla
+
+
+
+
+
+
+
Weight
Carga
@@ -7312,11 +10746,39 @@ Do you want to save your changes?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
GV
+
+
+
+
+
+
+
Switch used by the mix.
If blank then the mix is considered to be "ON" all the time.
The value of the mixer is multiplied by this value and divided by 100.
@@ -7325,46 +10787,109 @@ Si está en blanco entonces la mezcla se considera que está activa todo el tiem
+
+
+
+
+
+
+
Offset
+
+
+
+
+
+
+
Include Trim
Incluir Trim
+
+
+
+
+
+
+
Curve
Curva
+
+
+
+
+
+
+
The curve used by the mix
La curva usada por la mezcla
+
+
+
+
+
+
+
Switch
+
+
+
+
+
+
+
Yes
Si
+
+
+
+
+
+
+
No
No
+
+
+
+
+
+
+
Warning
Aviso
+
+
+
+
+
+
+
Name
Nombre
@@ -7373,6 +10898,34 @@ Si está en blanco entonces la mezcla se considera que está activa todo el tiem
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -7388,6 +10941,13 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Mixer warning.
Setting this value will cause a beep to be emmitted when this value is active.
Sellecionar este valor provocará un beep emitido cuando este activo.
@@ -7396,32 +10956,74 @@ Setting this value will cause a beep to be emmitted when this value is active.
+
+
+
+
+
+
+
OFF
APAGADO
+
+
+
+
+
+
+
1 Beep
+
+
+
+
+
+
+
2 Beep
2 Beeo
+
+
+
+
+
+
+
3 Beep
+
+
+
+
+
+
+
Multiplex
Opciones
+
+
+
+
+
+
+
Multiplexer
This determines how mixer values are added.
@@ -7439,46 +11041,109 @@ Esto determina como los valores de mezcla son añadidos.
+
+
+
+
+
+
+
ADD
AÑADIR
+
+
+
+
+
+
+
MULTIPLY
MULTIPLICAR
+
+
+
+
+
+
+
REPLACE
REEMPLAZAR
+
+
+
+
+
+
+
Flight modes
Modos de vuelo
+
+
+
+
+
+
+
Include DR/Expo
Incluye DR/Expo
+
+
+
+
+
+
+
Delay
Retardo
+
+
+
+
+
+
+
Slow
Lento
+
+
+
+
+
+
+
Up
Arriba
+
+
+
+
+
+
+
Down
Abajo
@@ -7507,6 +11172,12 @@ Esto determina como los valores de mezcla son añadidos.
Invert All
+
+
+
+ FullScreenDialog
+
+
MixersListWidget
@@ -7680,6 +11351,11 @@ Esto determina como los valores de mezcla son añadidos.
ModelEdit
+
+
+
+
+
Dialog
Mensaje
@@ -7735,9 +11411,22 @@ Esto determina como los valores de mezcla son añadidos.
+
+
+
+
+
+
+
Simulate
Simular
+
+
+
+ FullScreenDialog
+
+
ModelPrinter
@@ -8556,138 +12245,324 @@ Esto determina como los valores de mezcla son añadidos.
Module
+
+
+
+
+
+
+
Failsafe Mode
Modo Failsafe
+
+
+
+
+
+
+
Start
Comenzar
+
+
+
+
+
+
+
PPM delay
Retardo PPM
+
+
+
+
+
+
+
Negative
Negativo
+
+
+
+
+
+
+
Positive
Positivo
+
+
+
+
+
+
+
Polarity
Polaridad
+
+
+
+
+
+
+
Trainer Mode
Modo Entrenador
+
+
+
+
+
+
+
PPM Frame Length
Longitud Trama PPM
+
+
+
+
+
+
+
CH
+
+
+
+
+
+
+
Antenna
+
+
+
+
+
+
+
Option value
+
+
+
+
+
+
+
Bind on startup
+
+
+
+
+
+
+
RF Output Power
+
+
+
+
+
+
+
Low Power
+
+
+
+
+
+
+
us
+
+
+
+
+
+
+
Multi Radio Protocol
+
+
+
+
+
+
+
Sub Type
+
+
+
+
+
+
+
Master/Jack
+
+
+
+
+
+
+
Slave/Jack
+
+
+
+
+
+
+
Master/SBUS Module
+
+
+
+
+
+
+
Master/CPPM Module
+
+
+
+
+
+
+
Master/SBUS in battery compartment
+
+
+
+
+
+
+
Show values in:
+
+
+
+
+
+
+
%
abbreviation for percent
+
+
+
+
+
+
+
μs
abbreviation for microseconds
+
+
+
+
+
+
+
ms
+
+
+
+
Receiver 1
@@ -8695,94 +12570,232 @@ Esto determina como los valores de mezcla son añadidos.
+
+
+
+
+
+
+
+
+
+
+
+
X
+
+
+
+
Receiver 2
+
+
+
+
Receiver 3
+
+
+
+
+
+
+
WARNING: changing RF Output Power needs RE-BIND
+
+
+
+
+
+
+
Channels
Canales
+
+
+
+
Registration ID
+
+
+
+
+
+
+
WARNING: Requires non-certified firmware!
+
+
+
+
+
+
+
Not set
+
+
+
+
+
+
+
Hold
Esperar
+
+
+
+
+
+
+
Custom
A medida
+
+
+
+
+
+
+
No Pulses
Sin Pulsos
+
+
+
+
+
+
+
Receiver
Receptor
+
+
+
+
+
+
+
Failsafe Positions
Posiciones Failsafe
+
+
+
+
+
+
+
Protocol
Protocolo
+
+
+
+
+
+
+
Receiver No.
Receptor Nº.
+
+
+
+
+
+
+
Output type
+
+
+
+
+
+
+
Open Drain
+
+
+
+
+
+
+
Push Pull
+
+
+
+
+
+ Internal
+
+
+
+
+
+
+
+ Ext. + Int.
+
+
ModuleData
@@ -9521,21 +13534,49 @@ Esto determina como los valores de mezcla son añadidos.
PrintDialog
+
+
+
+
+
+
+
Close
Cerrar
+
+
+
+
+
+
+
Style
+
+
+
+
+
+
+
Print
Imprimir
+
+
+
+
+
+
+
Print to file
Imprimir a archivo
@@ -9559,11 +13600,25 @@ Esto determina como los valores de mezcla son añadidos.
ProgressDialog
+
+
+
+
+
+
+
Flash Firmware
+
+
+
+
+
+
+
Close
Cerrar
@@ -9578,6 +13633,13 @@ Esto determina como los valores de mezcla son añadidos.
ProgressWidget
+
+
+
+
+
+
+
Show Details
Mostrar detalles
@@ -9731,16 +13793,37 @@ Esto determina como los valores de mezcla son añadidos.
RadioNotFoundDialog
+
+
+
+
+
+
+
No Radio Found
No se ha encontrado la Radio
+
+
+
+
+
+
+
<html><head/><body><p>No Radio was found!</p><p>Make sure that you hold the lower trim buttons towards the center while you turn it on.</p><p>Then connect the USB wire.</p><p><span style=" font-family:'arial,sans-serif'; font-size:13px; font-style:italic; color:#222222; background-color:#ffffff;">Note: if you have a Taranis that has not had the firmware upgraded to 2.0 then this version of Companion will not work.</span></p></body></html>
+
+
+
+
+
+
+
OK
@@ -9749,43 +13832,99 @@ Esto determina como los valores de mezcla son añadidos.
RadioOutputsWidget
-
+
+
+
+
+
+
+
+
+
Form
-
+
+
+
+
+
+
+
+
+
View:
-
+
+
+
+
+
+
+
+
+
Logical Switches
Switches lógicos
-
+
+
+
+
+
+
+
+
+
Global Variables
Variables globales
-
+
+
+
+
+
+
+
+
+
Channel Outputs
-
+
+
+
+
+
+
+
+
+
Mix Outputs
-
+
+
+
+
+
+
+
+
+
L
o
g
@@ -9795,7 +13934,15 @@ c
-
+
+
+
+
+
+
+
+
+
G
l
o
@@ -9806,7 +13953,15 @@ l
-
+
+
+
+
+
+
+
+
+
C
h
a
@@ -9819,7 +13974,15 @@ s
-
+
+
+
+
+
+
+
+
+
M
i
x
@@ -10658,161 +14821,385 @@ s
Setup
+
+
+
+
+
+
+
Center beep
Centro beep
+
+
+
+
+
+
+
OFF
OFF
+
+
+
+
+
+
+
Model Image
Imagen del modelo
+
+
+
+
+
+
+
Exponential
Exponencial
+
+
+
+
+
+
+
Throttle Trim Idle Only
Trim de acelerador ajuste de ralentí
+
+
+
+
+
+
+
Extra Fine
Extra Fino
+
+
+
+
+
+
+
Fine
Fino
+
+
+
+
+
+
+
Medium
Medio
+
+
+
+
+
+
+
Coarse
Duro
+
+
+
+
+
+
+
Display Checklist
Lista verificación pantalla
+
+
+
+
+
+
+
Timer 2
Temporizador 2
+
+
+
+
+
+
+
Timer 1
Temporizador1
+
+
+
+
+
+
+
Timer 3
Temporizador3
+
+
+
+
+
+
+
Never
+
+
+
+
+
+
+
Top LCD Timer
+
+
+
+
+
+
+
On change
+
+
+
+
+
+
+
Always
+
+
+
+
+
+
+
Global Functions
+
+
+
+
+
+
+
Edit Checklist...
+
+
+
+
+
+
+
Throttle Source
Fuente del acelerador
+
+
+
+
+
+
+
Trim Step
Pasos de Trim
+
+
+
+
+
+
+
Trims Display
+
+
+
+
+
+
+
Warnings
Avisos
+
+
+
+
+
+
+
Switch Warnings
Avisos palancas (Switch)
+
+
+
+
+
+
+
Pot Warnings
Avisos Potenciómetros
+
+
+
+
+
+
+
Manual
+
+
+
+
+
+
+
Auto
+
+
+
+
+
+
+
Model
Modelo
+
+
+
+
+
+
+
Extended Limits
Límites extendidos
+
+
+
+
+
+
+
Extended Trims
Trims extendidos
+
+
+
+
+
+
+
Throttle Warning
Aviso acelerador
+
+
+
+
+
+
+
Reverse throttle operation.
If this is checked the throttle will be reversed. Idle will be forward, trim will also be reversed and the throttle warning will be reversed as well.
@@ -10824,6 +15211,13 @@ Si está marcado el acelerador será invertido. El ralentí será delante, el t
+
+
+
+
+
+
+
Reverse Throttle
Invertir acelerador (Throttle)
@@ -11191,181 +15585,421 @@ Profile ID: [%1]; Radio ID: [%2]
SimulatorMainWindow
-
+
+
+
+
+
+
+
+
+
OpenTx Simulator
-
+
+
+
+
+
+
+
+
+
View
-
+
+
+
+
+
+
+
+
+
Radio Window
-
+
+
+
+
+
+
+
+
+
Reload...
-
+
+
+
+
+
+
+
+
+
Tools
-
+
+
+
+
+
+
+
+
+
Toolbar
-
+
+
+
+
+
+
+
+
+
Reload Lua Scripts
-
+
+
+
+
+
+
+
+
+
Reload the Lua environment on the simulated radio.
-
+
+
+
+
+
+
+
+
+
F7
-
+
+
+
+
+
+
+
+
+
Reload Radio Data
-
+
+
+
+
+
+
+
+
+
Reload all radio data without restarting the simulator.
-
+
+
+
+
+
+
+
+
+
F9
-
+
+
+
+
+
+
+
+
+
Key Mapping
-
+
+
+
+
+
+
+
+
+
Show keyboard maping reference.
-
+
+
+
+
+
+
+
+
+
F1
-
+
+
+
+
+
+
+
+
+
Joystick Settings
-
+
+
+
+
+
+
+
+
+
Open joystick configuration settings dialog.
-
+
+
+
+
+
+
+
+
+
F3
-
+
+
+
+
+
+
+
+
+
LCD Screenshot
-
+
+
+
+
+
+
+
+
+
Save a screenshot of the current simulated LCD screen.
-
+
+
+
+
+
+
+
+
+
F8
-
+
+
+
+
+
+
+
+
+
Dock In Main Window
-
+
+
+
+
+
+
+
+
+
Show the radio in the main window or as a separate "floating" window.
-
+
+
+
+
+
+
+
+
+
Menu Bar
-
+
+
+
+
+
+
+
+
+
Show or hide the top menu bar.
-
+
+
+
+
+
+
+
+
+
Alt+M
-
+
+
+
+
+
+
+
+
+
Constrain Width
-
+
+
+
+
+
+
+
+
+
Set radio widget width to be a fixed size.
-
+
+
+
+
+
+
+
+
+
Constrain Height
-
+
+
+
+
+
+
+
+
+
Set radio widget height to be a fixed size.
@@ -11446,76 +16080,172 @@ Profile ID: [%1]; Radio ID: [%2]
SimulatorStartupDialog
-
+
+
+
+
+
+
+
+
+
OpenTX Simulator - Startup Options
-
+
+
+
+
+
+
+
+
+
Simulator Startup Options:
-
+
+
+
+
+
+
+
+
+
Radio Profile:
-
+
+
+
+
+
+
+
+
+
Existing radio profiles are shown here.<br />
Create or edit profiles using the Companion application.
-
+
+
+
+
+
+
+
+
+
Radio Type:
-
+
+
+
+
+
+
+
+
+
Existing radio simulators are shown here.<br />
The radio type specified in the selected profile is used by default.
-
+
+
+
+
+
+
+
+
+
Data Source:
-
+
+
+
+
+
+
+
+
+
Data File:
-
+
+
+
+
+
+
+
+
+
Data Folder:
-
+
+
+
+
+
+
+
+
+
SD Image Path:
-
+
+
+
+
+
+
+
+
+
Radio data (.bin/.eeprom/.otx) image file to use. A new file with a default image will be created if necessary.<br />
<b>NOTE</b>: any existing EEPROM data incompatible with the selected radio type may be overwritten!
-
+
+
+
+
+
+
+
+
+
Select data file...
@@ -11523,59 +16253,147 @@ The radio type specified in the selected profile is used by default.
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
-
+
+
+
+
+
+
+
+
+
Directory containing RADIO and MODELS folders to use.<br />
New folder(s) with default radio/model will be created here if necessary.
-
+
+
+
+
+
+
+
+
+
Select data folder...
-
+
+
+
+
+
+
+
+
+
Directory containing the SD card image to use.<br/>
The default is configured in the chosen Radio Profile.
-
+
+
+
+
+
+
+
+
+
Select SD card image folder...
-
+
+
+
+
+
+
+
+
+
Select which of the data sources (File/Folder/SD Card) you would like to start the simulator with.
-
+
+
+
+
+
+
+
+
+
File
Archivo
-
+
+
+
+
+
+
+
+
+
Folder
-
+
+
+
+
+
+
+
+
+
SD Path
@@ -11604,7 +16422,15 @@ The default is configured in the chosen Radio Profile.
SimulatorWidget
-
+
+
+
+
+
+
+
+
+
Companion Simulator
Simulador Companion
@@ -11692,6 +16518,20 @@ The default is configured in the chosen Radio Profile.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
@@ -11731,6 +16571,13 @@ The default is configured in the chosen Radio Profile.
StyleEditDialog
+
+
+
+
+
+
+
@@ -11739,21 +16586,49 @@ The default is configured in the chosen Radio Profile.
+
+
+
+
+
+
+
&Reset to default
+
+
+
+
+
+
+
&Cancel
+
+
+
+
+
+
+
&OK
+
+
+
+
+
+
+
This feature does not validate your changes and assumes you are familiar with CSS syntax for QT.
@@ -12011,190 +16886,475 @@ Too many errors, giving up.
Telemetry
+
+
+
+
+
+
+
A1
+
+
+
+
+
+
+
A2
+
+
+
+
+
+
+
RSSI
+
+
+
+
+
+
+
Alarm 1
Alarma 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Yellow
Amarillo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Orange
Naranja
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Red
Rojo
+
+
+
+
+
+
+
Alarm 2
Alarma 2
+
+
+
+
+
+
+
Disable telemetry audio warnings
+
+
+
+
+
Source
+
+
+
+
+
+
+
Center Silent
+
+
+
+
+
+
+
Altitude source
+
+
+
+
+
+
+
Volts source
+
+
+
+
+
+
+
Top Bar
+
+
+
+
+
+
+
Serial Protocol
Protocolo Serie
+
+
+
+
+
+
+
Sensors
+
+
+
+
+
+
+
Disable multi sensor handling
+
+
+
+
+
+
+
Volt source
Fuente Voltaje
+
+
+
+
+
+
+
Current source
Fuente Actual
+
+
+
+
+
+
+
Protocol
Protocolo
+
+
+
+
+
+
+
None
Ninguno
+
+
+
+
+
+
+
FrSky Sensor Hub
+
+
+
+
+
+
+
Blades
Palas
+
+
+
+
+
+
+
Sink Max
Descenso Máximo
+
+
+
+
+
+
+
Climb Max
Máximo Ascenso
+
+
+
+
+
+
+
Sink Min
Descenso Mínimo
+
+
+
+
+
+
+
Climb Min
Mínimo Ascenso
+
+
+
+
+
+
+
Vario source
Fuente Variómetro
+
+
+
+
+
+
+
Vario limits
Límites Variómetro
+
+
+
+
+
+
+
Altimetry
Altímetro
+
+
+
+
+
+
+
mAh
+
+
+
+
+
+
+
A
+
+
+
+
+
+
+
Various
Varios
+
+
+
+
+
+
+
mAh count
Valor mAh
+
+
+
+
+
+
+
FAS Offset
+
+
+
+
+
+
+
Persistent mAh
mAh Constantes
@@ -12203,107 +17363,289 @@ Too many errors, giving up.
TelemetryAnalog
+
+
+
+
+
+
+
Unit
Unidad
+
+
+
+
+
+
+
Max Value
Valor Máximo
+
+
+
+
+
+
+
Alarm 1
Alarma 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Yellow
Amarillo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Orange
Naranja
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Red
Rojo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<
+
+
+
+
+
+
+
+
+
+
+
+
+
+
>
+
+
+
+
+
+
+
Alarm 2
Alarma 2
+
+
+
+
+
+
+
Offset
Offset
+
+
+
+
+
+
+
Volts (V)
Voltios (V)
+
+
+
+
+
+
+
Amps (A)
Amperios (A)
+
+
+
+
+
+
+
Speed (m/s or ft/s)
Velocidad (m/s o pies/s)
+
+
+
+
+
+
+
Raw (-)
+
+
+
+
+
+
+
Speed (km/h or miles/h)
Velocidad (km/h o millas/h)
+
+
+
+
+
+
+
Meters (m or ft)
Metros (m o pies)
+
+
+
+
+
+
+
Temp (°)
Temp (°)
+
+
+
+
+
+
+
Fuel (%)
Combustible (%)
+
+
+
+
+
+
+
mAmps (mA)
miliAmperios (mA)
@@ -12317,6 +17659,13 @@ Too many errors, giving up.
TelemetryCustomScreen
+
+
+
+
+
+
+
Custom Screen Type
Personalizar tipo pantalla
@@ -12342,21 +17691,49 @@ Too many errors, giving up.
+
+
+
+
+
+
+
Min
Mínimo
+
+
+
+
+
+
+
Source
Fuente
+
+
+
+
+
+
+
Gauge
Medida
+
+
+
+
+
+
+
Max
Máximo
@@ -12470,86 +17847,199 @@ Too many errors, giving up.
TelemetrySensor
+
+
+
+
+
+
+
Form
+
+
+
+
+
+
+
Custom
A medida
+
+
+
+
+
+
+
Calculated
+
+
+
+
+
+
+
Id
+
+
+
+
+
+
+
Instance
+
+
+
+
Rx
+
+
+
+
Mod.
+
+
+
+
+
+
+
Add
+
+
+
+
+
+
+
Average
+
+
+
+
+
+
+
Min
+
+
+
+
+
+
+
Max
+
+
+
+
+
+
+
Multiply
+
+
+
+
+
+
+
Totalize
+
+
+
+
+
+
+
Cell
+
+
+
+
+
+
+
Consumption
+
+
+
+
+
+
+
Dist
+
+
+
+
+
+
+
Cells Sensor :
@@ -12562,191 +18052,506 @@ Too many errors, giving up.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
---
---
+
+
+
+
+
+
+
GPS Sensor :
+
+
+
+
+
+
+
Alt. Sensor :
+
+
+
+
+
+
+
Sensor :
+
+
+
+
+
+
+
V
+
+
+
+
+
+
+
A
+
+
+
+
+
+
+
mA
+
+
+
+
+
+
+
kt
+
+
+
+
+
+
+
m/s
+
+
+
+
+
+
+
ft/s
+
+
+
+
+
+
+
km/h
+
+
+
+
+
+
+
mph
+
+
+
+
+
+
+
m
+
+
+
+
+
+
+
ft
+
+
+
+
+
+
+
°C
+
+
+
+
+
+
+
°F
+
+
+
+
+
+
+
%
+
+
+
+
+
+
+
mAh
+
+
+
+
+
+
+
W
+
+
+
+
+
+
+
mW
+
+
+
+
+
+
+
dBm
+
+
+
+
+
+
+
g
+
+
+
+
+
+
+
°
+
+
+
+
+
+
+
Rad
+
+
+
+
+
+
+
mL
+
+
+
+
+
+
+
US fl.Oz.
+
+
+
+
+
+
+
Raw (-)
+
+
+
+
+
+
+
RPM
+
+
+
+
+
+
+
Precision
+
+
+
+
+
+
+
Ratio
+
+
+
+
+
+
+
Blades
Palas
+
+
+
+
+
+
+
Offset
Offset
+
+
+
+
+
+
+
Multiplier
+
+
+
+
+
+
+
Auto Offset
+
+
+
+
+
+
+
Filter
+
+
+
+
+
+
+
Persistent
+
+
+
+
+
+
+
Positive
Positivo
+
+
+
+
+
+
+
Logs
@@ -12778,116 +18583,268 @@ Too many errors, giving up.
TelemetrySimulator
-
+
+
+
+
+
+
+
+
+
Telemetry Simulator
-
+
+
+
+
+
+
+
+
+
VFAS
-
+
+
+
+
+
+
+
+
+
RSSI
-
+
+
+
+
+
+
+
+
+
A1
-
+
+
+
+
+
+
+
+
+
A2
-
+
+
+
+
+
+
+
+
+
Simulate
Simular
-
+
+
+
+
+
+
+
+
+
Replay SD Log File
-
+
+
+
+
+
+
+
+
+
Replay rate
-
+
+
+
+
+
+
+
+
+
Load
-
+
+
+
+
+
+
+
+
+
|>
-
+
+
+
+
+
+
+
+
+
<|
-
+
+
+
+
+
+
+
+
+
>
-
+
+
+
+
+
+
+
+
+
<-
-
+
+
+
+
+
+
+
+
+
X
-
+
+
+
+
+
+
+
+
+
Row #
Timestamp
-
+
+
+
+
+
+
+
+
+
1/5x
1/5x
-
+
+
+
+
+
+
+
+
+
5x
5x
-
+
+
+
+
+
+
+
+
+
No Log File Currently Loaded
-
+
+
+
+
+
+
+
+
+
RAS
@@ -12895,21 +18852,61 @@ Timestamp
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
V / ratio
-
+
+
+
+
+
+
+
+
+
Db
-
+
+
+
+
+
+
+
+
+
RxBt
@@ -12927,121 +18924,377 @@ Timestamp
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<html><head/><body><p><br/></p></body></html>
-
+
+
+
+
+
+
+
+
+
Tmp1
-
+
+
+
+
+
+
+
+
+
A3
-
+
+
+
+
+
+
+
+
+
A4
-
+
+
+
+
+
+
+
+
+
Tmp2
-
+
+
+
+
+
+
+
+
+
Fuel
Combustible
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
°C
-
+
+
+
+
+
+
+
+
+
ml
-
+
+
+
+
+
+
+
+
+
%
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Meters
-
+
+
+
+
+
+
+
+
+
Alt
-
+
+
+
+
+
+
+
+
+
VSpd
-
+
+
+
+
+
+
+
+
+
m/s
-
+
+
+
+
+
+
+
+
+
Fuel Qty
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
km/h
-
+
+
+
+
+
+
+
+
+
Hdg
-
+
+
+
+
+
+
+
+
+
ASpd
@@ -13049,135 +19302,335 @@ Timestamp
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
G
-
+
+
+
+
+
+
+
+
+
GPS
-
+
+
+
+
+
+
+
+
+
Lat,Lon
(dec.deg.)
-
+
+
+
+
+
+
+
+
+
AccX
-
+
+
+
+
+
+
+
+
+
dd-MM-yyyy
hh:mm:ss
-
+
+
+
+
+
+
+
+
+
Date
-
+
+
+
+
+
+
+
+
+
Amps
-
+
+
+
+
+
+
+
+
+
AccZ
-
+
+
+
+
+
+
+
+
+
GAlt
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Volts
-
+
+
+
+
+
+
+
+
+
Cels
-
+
+
+
+
+
+
+
+
+
Curr
-
+
+
+
+
+
+
+
+
+
AccY
-
+
+
+
+
+
+
+
+
+
GSpd
-
+
+
+
+
+
+
+
+
+
Degrees
-
+
+
+
+
+
+
+
+
+
Setting RSSI to zero simulates telemetry and radio link loss.
-
+
+
+
+
+
+
+
+
+
Set RSSI to zero when paused.
-
+
+
+
+
+
+
+
+
+
Stop sending telemetry data when the Telemetry Simulator window is hidden.
-
+
+
+
+
+
+
+
+
+
Pause simulation when hidden.
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
RPM
-
+
+
+
+
+
+
+
+
+
When enabled, sends any non-blank values as simulated telemetry data.
@@ -13219,11 +19672,25 @@ hh:mm:ss
Timer
+
+
+
+
+
+
+
Countdown
Cuenta Atrás
+
+
+
+
+
+
+
Minute Call
Cada Minuto
@@ -13307,26 +19774,61 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
Trainer
+
+
+
+
+
+
+
Form
+
+
+
+
+
+
+
Mode
Modo
+
+
+
+
+
+
+
Input
Entrada
+
+
+
+
+
+
+
Weight
+
+
+
+
+
+
+
Rud
Rud
@@ -13339,6 +19841,62 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Beeper volume
0 - Quiet. No beeps at all.
@@ -13359,6 +19917,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Off
Apagado
@@ -13367,6 +19953,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+= (Sum)
@@ -13375,6 +19989,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
:= (Replace)
:= (Reemplazar)
@@ -13383,6 +20025,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn1
@@ -13391,6 +20061,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn2
@@ -13399,6 +20097,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn3
@@ -13407,21 +20133,70 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn4
+
+
+
+
+
+
+
Ele
Ele
+
+
+
+
+
+
+
Thr
Thr
+
+
+
+
+
+
+
Ail
Ail
@@ -13430,7 +20205,15 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
TrainerSimulator
-
+
+
+
+
+
+
+
+
+
Trainer simulator
@@ -13855,17 +20638,38 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
burnConfigDialog
+
+
+
+
+
+
+
AVRDUDE Location
Localización AVRDUDE
+
+
+
+
+
+
+
Location of AVRDUDE executable
Locatioon of AVRDUDE executable
Localización del ejecutable AVRDUDE
+
+
+
+
+
+
+
Programmer Configuration
Configuration AVRDUDE / SAM-BA
Configuración del programador
@@ -13875,12 +20679,47 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The location of the AVRDUDE executable.
The location of the AVRDUDE.EXE executable.
La localización del ejecutable AVRDUDE.
+
+
+
+
+
+
+
DFU-Util Location
Localización de la utilidad DFU
@@ -13888,6 +20727,27 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Use this button to browse and look for the AVRDUDE executable file.
Usa este botón para explorar y mirar el archivo ejecutable de AVRDUDE.
@@ -13895,16 +20755,51 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Browse...
Explorar...
+
+
+
+
+
+
+
Programmer
Programador
+
+
+
+
+
+
+
Programmer used for communicating with the controller.
Please consult the programmer's documentation and the AVRDUDE documentation to select the appropriate programmer.
Programador usado para la comunicación con el controlador.
@@ -13912,23 +20807,65 @@ Por favor consulta la documentacion del programador y la documentación de AVRDU
+
+
+
+
+
+
+
List all available programmers.
Lista todos los programadores disponibles.
+
+
+
+
+
+
+
List Available
Listado Disponibles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Extra arguments that will be passed to AVRDUDE on every call
Argumentos extras que deben pasar a AVRDUDE en cada llamada
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Extra arguments used in AVRDUDE.
This can be used for providing extra information to AVRDUDE.
@@ -13940,69 +20877,174 @@ Por favor solamente usa esto si sabes lo que estás haciendo. No hay control de
+
+
+
+
+
+
+
Extra Arguments
Argumentos extra
+
+
+
+
+
+
+
Show AVRDUDE help
Mostrar la ayuda de AVRDUDE
+
+
+
+
+
+
+
Show Help
Mostrar Ayuda
+
+
+
+
+
+
+
Communication port to the programmer.
Puerto de comunicaciones al programador.
+
+
+
+
+
+
+
MCU
+
+
+
+
+
+
+
at91sam3s8-9xr
+
+
+
+
+
+
+
Alternate device
Dispositivo alternativo
+
+
+
+
+
+
+
Use advanced controls
Usar controles avanzados
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Port
Puerto
+
+
+
+
+
+
+
SAM-BA Location
Localizacon SAM-BA
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Location of sam-ba executable
Localización del ejecutable sam-ba
+
+
+
+
+
+
+
ARM MCU
+
+
+
+
+
+
+
sam-ba serial port
Puerto serie sam-ba
@@ -14046,12 +21088,40 @@ Por favor solamente usa esto si sabes lo que estás haciendo. No hay control de
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CPU of your TX
CPU a tu TX
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CPU present on your 9x radio
Should be m64 for stock radios
m2560 for v4.1 boards
@@ -14064,85 +21134,197 @@ m2560 para las placas v4.1
joystickDialog
-
+
+
+
+
+
+
+
+
+
Configure Joystick
Configurar Joystick
-
+
+
+
+
+
+
+
+
+
Ch2
-
+
+
+
+
+
+
+
+
+
Ch1
-
+
+
+
+
+
+
+
+
+
Ch4
-
+
+
+
+
+
+
+
+
+
Ch6
-
+
+
+
+
+
+
+
+
+
Ch3
-
+
+
+
+
+
+
+
+
+
Ch5
-
+
+
+
+
+
+
+
+
+
Ch7
-
+
+
+
+
+
+
+
+
+
Ch8
-
+
+
+
+
+
+
+
+
+
Instructions
Instrucciones
-
+
+
+
+
+
+
+
+
+
Enable
-
+
+
+
+
+
+
+
+
+
Cancel
Cancelar
-
+
+
+
+
+
+
+
+
+
Back
-
+
+
+
+
+
+
+
+
+
Start
Comenzar
@@ -14153,7 +21335,15 @@ m2560 para las placas v4.1
-
+
+
+
+
+
+
+
+
+
Ok
diff --git a/companion/src/translations/companion_fi.ts b/companion/src/translations/companion_fi.ts
index 96b43df85..bce42e3a5 100644
--- a/companion/src/translations/companion_fi.ts
+++ b/companion/src/translations/companion_fi.ts
@@ -93,41 +93,97 @@
AppPreferencesDialog
+
+
+
+
+
+
+
Edit Settings
Muuta asetuksia
+
+
+
+
+
+
+
Radio Profile
Radio profiili
+
+
+
+
+
+
+
Default Channel Order
Kanavien järjestys
+
+
+
+
+
+
+
Build Options
Käännöksen valinnat
+
+
+
+
+
+
+
Menu Language
Valikon kieli
+
+
+
+
+
+
+
Default Stick Mode
Perus tikkujen tila
+
+
+
+
+
+
+
Select Image
Valitse kuva
+
+
+
+
+
+
+
Mode selection:
Mode 1:
@@ -172,177 +228,429 @@ Tila 4:
+
+
+
+
+
+
+
Mode 1 (RUD ELE THR AIL)
Mode 1 (PER KOR KAA SII)
+
+
+
+
+
+
+
Mode 2 (RUD THR ELE AIL)
Mode 2 (PER KAA KOR SII)
+
+
+
+
+
+
+
Mode 3 (AIL ELE THR RUD)
Mode 3 (SII KOR KAA PER)
+
+
+
+
+
+
+
Mode 4 (AIL THR ELE RUD)
Mode 4 (SII KAA KOR PER)
+
+
+
+
+
+
+
Splash Screen
Alkuruutu
+
+
+
+
+
+
+
Radio Type
Radio tyyppi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The profile specific folder, if set, will override general Backup folder
+
+
+
+
+
+
+
Backup folder
+
+
+
+
+
+
+
If set it will override the application general setting
+
+
+
+
+
+
+
if set, will override general backup enable
+
+
+
+
+
+
+
<html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html>
<html><head/><body><p>Kanava järjestys</p><p><br/></p><p>Määrittelee miksereiden perusasetukset uuteen malliin.</p></body></html>
+
+
+
+
+
+
+
R E T A
P Ko Ka S
+
+
+
+
+
+
+
R E A T
P Ko S Ka
+
+
+
+
+
+
+
R T E A
P Ka Ko S
+
+
+
+
+
+
+
R T A E
P Ka S Ko
+
+
+
+
+
+
+
R A E T
P S Ko Ka
+
+
+
+
+
+
+
R A T E
P S Ka Ko
+
+
+
+
+
+
+
E R T A
Ko P Ka S
+
+
+
+
+
+
+
E R A T
Ko P S Ka
+
+
+
+
+
+
+
E T R A
Ko Ka P S
+
+
+
+
+
+
+
E T A R
Ko Ka S P
+
+
+
+
+
+
+
E A R T
Ko S P Ka
+
+
+
+
+
+
+
E A T R
Ko S Ka P
+
+
+
+
+
+
+
T R E A
Ka P Ko S
+
+
+
+
+
+
+
T R A E
Ka P S Ko
+
+
+
+
+
+
+
T E R A
Ka Ko P S
+
+
+
+
+
+
+
T E A R
Ka Ko S P
+
+
+
+
+
+
+
T A R E
Ka S P Ko
+
+
+
+
+
+
+
T A E R
Ka S Ko P
+
+
+
+
+
+
+
A R E T
S P Ko Ka
+
+
+
+
+
+
+
A R T E
S P Ka Ko
+
+
+
+
+
+
+
A E R T
S Ko P Ka
+
+
+
+
+
+
+
A E T R
S Ko Ka P
+
+
+
+
+
+
+
A T R E
S Ka P Ko
+
+
+
+
+
+
+
A T E R
S Ka Ko P
@@ -353,267 +661,668 @@ Tila 4:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Select Folder
+
+
+
+
+
+
+
Select Executable
+
+
+
+
Release channel
+
+
+
+
Releases (stable)
+
+
+
+
Release candidates (testing)
+
+
+
+
Nightly builds (unstable)
+
+
+
+
+
+
+
Simulator Volume Gain
+
+
+
+
+
+
+
Profile Name
Profiilin nimi
+
+
+
+
+
+
+
Clear Image
Tyhjennä kuva
+
+
+
+
+
+
+
Append version number to FW file name
Liitä version numero FW tiedoston nimeen
+
+
+
+
+
+
+
Offer to write FW to Tx after download
Tarjoa että FW ladataan lähettimeen kun se on ladattu
+
+
+
+
+
+
+
Other Settings
+
+
+
+
+
+
+
General Settings
Yleiset asetukset
+
+
+
+
+
+
+
SD Structure path
SD muistikortin kansio
+
+
+
+
+
+
+
Application Settings
Ohjelman asetukset
+
+
+
+
+
+
+
Show splash screen when Companion starts
Näytä alkuruutu kun Companion käynnistetään
+
+
+
+
+
+
+
Automatic check for Companion updates
Tutki automaattisesti Companionin päivitykset
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Enable automatic backup before writing firmware
Laita automaatiinen varmuuskopionti päälle ennen firmwaren kirjoitusta
+
+
+
+
+
+
+
Automatic check for OpenTX firmware updates
Tutki automaattisesti OpenTX firmware päivitykset
+
+
+
+
+
+
+
Splash Screen Library
Alkuruutu kirjasto
+
+
+
+
+
+
+
Google Earth Executable
Google Earth tiedosto
+
+
+
+
+
+
+
Only show user splash images
Näytä vain käyttäjän oma alkuruutu kuvat
+
+
+
+
+
+
+
Show user and companion splash images
Näytä käyttäjän ja Companionin alkuruutu kuvat
+
+
+
+
+
+
+
User Splash Screens
Käyttäjän oma alkuruudut
+
+
+
+
+
+
+
Automatic Backup Folder
Automaattisen varmuuskopion kansio
+
+
+
+
+
+
+
Simulator Settings
Simulaattorin asetukset
+
+
+
+
+
+
+
Simulator BackLight
Simulaattorin taustavalo
+
+
+
+
+
+
+
Enable
Päälle
+
+
+
+
+
+
+
most recently used files
+
+
+
+
+
+
+
Startup Settings
+
+
+
+
+
+
+
Remember
+
+
+
+
+
+
+
Output Logs Folder
+
+
+
+
+
+
+
<html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html>
+
+
+
+
+
+
+
Remove empty model slots when deleting models (only applies for radios w/out categories)
+
+
+
+
+
+
+
Use model wizard
+
+
+
+
+
+
+
Open model editor
+
+
+
+
+
+
+
Just create the model
+
+
+
+
+
+
+
Debug Output Logging
+
+
+
+
+
+
+
<html><head/><body><p>Keep a log of all debugging messages generated by the desktop Companion/Simulator applications. An OpenTX developer may request this to help diagnose an issue.</p></body></html>
+
+
+
+
+
+
+
Application (Companion/Simulator)
+
+
+
+
+
+
+
<html><head/><body><p>Keep a log of all messages generated by the radio firmware when running in Simulator. This is the same information one would also see in the Simulator <span style=" font-style:italic;">Debug Output</span> window.</p></body></html>
+
+
+
+
+
+
+
Radio Firmware (in Simulator)
+
+
+
+
+
+
+
Action on New Model
+
+
+
+
+
+
+
Blue
Sininen
+
+
+
+
+
+
+
Green
Vihreä
+
+
+
+
+
+
+
Red
+
+
+
+
+
+
+
Orange
+
+
+
+
+
+
+
Yellow
+
+
+
+
+
+
+
Screenshot capture folder
+
+
+
+
+
+
+
Joystick
Joystick
+
+
+
+
+
+
+
Calibrate
Kalibroi
+
+
+
+
+
+
+
Only capture to clipboard
Kaappaa leikepöydälle
+
+
+
+
+
+
+
Remember simulator switch values
Muista simulaattorin kytkimien asennot
@@ -694,6 +1403,31 @@ Tila 4:
Images (%1)
Kuvia (%1)
+
+
+
+
+ Use releases (stable)
+
+
+
+
+ Use release candidates (testing)
+
+
+
+
+
+
+ Use nightly builds (unstable)
+
+
+
+
+
+ Use releases and release candidates (testing)
+
+
BinEepromFormat
@@ -913,36 +1647,85 @@ Tila 4:
ChecklistDialog
+
+
+
+
+
+
+
Edit Checklist
+
+
+
+
+
+
+
Line nn, Col nn
+
+
+
+
+
+
+
&Import...
+
+
+
+
+
+
+
&Cancel
+
+
+
+
+
+
+
&OK
+
+
+
+
+
+
+
Please note, the maximum width displayable is radio model limited. Also, renaming the model will break the link to this checklist file.
+
+
+
+
+
+
+
File: unknown
@@ -1188,31 +1971,73 @@ If you have a settings backup file, you may import that instead.
CompareDialog
+
+
+
+
+
+
+
Compare Models
Vertaa malleja
+
+
+
+
+
+
+
To compare models, drag and drop them anywhere in this window.
+
+
+
+
+
+
+
Close
Sulje
+
+
+
+
+
+
+
Style
+
+
+
+
+
+
+
Print
Tulosta
+
+
+
+
+
+
+
Print to file
Tulosta tiedostoon
@@ -1369,87 +2194,213 @@ If you have a settings backup file, you may import that instead.
Curves
+
+
+
+
+
+
+
Fixed X
+
+
+
+
+
+
+
Custom X
Oma X
+
+
+
+
+
+
+
Lines
Viivat
+
+
+
+
+
+
+
Smooth
Pehmeä
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Curve type
Käyrän tyyppi
+
+
+
+
+
+
+
Curve Creator
Käyrän luonti
+
+
+
+
+
+
+
Y at X=0
Y suhde X =0
+
+
+
+
+
+
+
Point size
+
+
+
+
+
+
+
Y at X=100
Y suhde X =100
+
+
+
+
+
+
+
Both
Molemmat
+
+
+
+
+
+
+
x>0
x>0
+
+
+
+
+
+
+
x<0
x<0
+
+
+
+
+
+
+
Apply
Käytä
+
+
+
+
+
+
+
Side
Sivu
+
+
+
+
+
+
+
Y at X=-100
Y suhde X =-100
+
+
+
+
+
+
+
Coefficient
Vaikutus
+
+
+
+
+
+
+
Curve name
Käyrän nimi
@@ -1862,18 +2813,53 @@ If you have a settings backup file, you may import that instead.
CustomizeSplashDialog
+
+
+
+
+
+
+
Transmitter Splash Screen Editor
Lähettimen alkuruutu editori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Invert
Käänteinen
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Open Splash Library
Avaa kuvakirjasto
@@ -1882,30 +2868,114 @@ If you have a settings backup file, you may import that instead.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load Profile
Lataa profiili
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load FW
Lataa FW
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load Pict
Lataa kuva
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Save
Tallenna
@@ -2021,48 +3091,48 @@ If you have a settings backup file, you may import that instead.
-
+
Switch
Kytkin
-
+
Switch
-
+
cannot be exported on this board!
-
+
Source
Lähde
-
+
Source %1 cannot be exported on this board!
-
+
OpenTX only accepts %1 points in all curves
OpenTX vastaanottaa vain %1 pistettä kaikkiin käyriin
-
+
OpenTx only accepts %1 points in all curves
OpenTX vastaanottaa vain %1 pistettä kaikkiin käyriin
-
-
+
+
OpenTX on this board doesn't accept this function
OpenTX ja tämä funktio ei onnistu tässä radiossa
-
+
OpenTX doesn't accept this radio protocol
OpenTX ei hyväksy tätä radio protokollaa
@@ -2071,86 +3141,198 @@ If you have a settings backup file, you may import that instead.
DebugOutput
-
+
+
+
+
+
+
+
+
+
Debug Output
-
+
+
+
+
+
+
+
+
+
<html><head/><body><p>Enable or disable the filter. If the button won't stay enabled, it is likely there is a syntax error in the Regular Expression entered.</p></body></html>
-
+
+
+
+
+
+
+
+
+
Filter:
-
+
+
+
+
+
+
+
+
+
<html><head/><body><p>Enter filter text here. Click the help/info button for details about using the filter. </p><p>
To <b>remove a remembered entry</b> from the filter list, first choose it, and then press <code>Shift-Delete</code> (or <code>Shift-Backspace</code>) key combination.</p></body></html>
-
+
+
+
+
+
+
+
+
+
Buffer:
-
+
+
+
+
+
+
+
+
+
Number of lines to keep in display.
-
+
+
+
+
+
+
+
+
+
Filter &Help
-
+
+
+
+
+
+
+
+
+
Show information about using the filter.
-
+
+
+
+
+
+
+
+
+
Word &Wrap
-
+
+
+
+
+
+
+
+
+
Toggle word wrapping on/off.
-
+
+
+
+
+
+
+
+
+
&Clear
-
+
+
+
+
+
+
+
+
+
Clear the output window of all text.
-
+
+
+
+
+
+
+
+
+
Enable &Filter
-
+
+
+
+
+
+
+
+
+
Turn the filter on/off.
@@ -2169,6 +3351,13 @@ To <b>remove a remembered entry</b> from the filter list, first cho
DownloadDialog
+
+
+
+
+
+
+
Downloading:
Ladataan:
@@ -2312,16 +3501,37 @@ To <b>remove a remembered entry</b> from the filter list, first cho
ExpoDialog
+
+
+
+
+
+
+
The source for the mixer
Lähde miksereille
+
+
+
+
+
+
+
Input name
Tulon nimi
+
+
+
+
+
+
+
Weight
Paino
@@ -2329,46 +3539,123 @@ To <b>remove a remembered entry</b> from the filter list, first cho
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
GV
GV
+
+
+
+
+
+
+
Flight modes
Lento tilat
+
+
+
+
+
+
+
Switch
Kytkin
+
+
+
+
+
+
+
Stick Side
Tikun puoli
+
+
+
+
+
+
+
NEG
NEG
+
+
+
+
+
+
+
POS
POS
+
+
+
+
+
+
+
ALL
Kaikki
+
+
+
+
+
+
+
Source for the mixer.
Lähde miksereille.
+
+
+
+
+
+
+
Switch used to enable the line.
If blank then the input is considered to be "ON" all the time.
Käyttökytkin.
@@ -2376,46 +3663,109 @@ Jos on tyhjä, katsotaan tulon olen ON tilassa kokoajan.
+
+
+
+
+
+
+
Scale
Skaala
+
+
+
+
+
+
+
Include Trim
Myös trimmi
+
+
+
+
+
+
+
No
Ei
+
+
+
+
+
+
+
Yes
Kyllä
+
+
+
+
+
+
+
Curve
Käyrä
+
+
+
+
+
+
+
Curve applied to the source.
Käyrä lähteen mukaan.
+
+
+
+
+
+
+
Offset
Tasoitus
+
+
+
+
+
+
+
Source
Lähde
+
+
+
+
+
+
+
Line name
Nimi
@@ -3058,31 +4408,73 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FirmwarePreferencesDialog
+
+
+
+
+
+
+
Downloads
Ladatut
+
+
+
+
+
+
+
Check for updates
Tarkista päivitykset
+
+
+
+
+
+
+
Firmware
Firmware
+
+
+
+
+
+
+
Download firmware
+
+
+
+
+
+
+
Download SD contents
+
+
+
+
+
+
+
Latest Download
Viimeisin lataus
@@ -3124,67 +4516,158 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FlashEEpromDialog
+
+
+
+
+
+
+
Write Models and Settings to Radio
Kirjoita mallit ja asetukset lähettimeen
+
+
+
+
+
+
+
Load...
+
+
+
+
+
+
+
Current Profile
Nykyinen profiili
+
+
+
+
+
+
+
Allows Companion to write to older version of the firmware
Anna Companionin kirjoittaa myös vanhaan firmwareen
+
+
+
+
+
+
+
Check Firmware compatibility
Tarkista firmwaren yhteensopivuus
+
+
+
+
+
+
+
<html><head/><body><p>Saves a dated copy of your eeprom to the backup folder you specified in the Companion settings before writing the current model to the radio.</p></body></html>
+
+
+
+
+
+
+
Backup before Write
+
+
+
+
+
+
+
<html><head/><body><p>Modify calibration parameters using settings from current profile</p></body></html>
<html><head/><body><p>Muuta kalibraation parametrit käyttäen nykyisen profiilin parametreja</p></body></html>
+
+
+
+
+
+
+
Patch calibration setting from profile
Korjaa kalibraatio asetukset profiilista
+
+
+
+
+
+
+
<html><head/><body><p>Modify HW parameters using settings from current profile</p></body></html>
<html><head/><body><p>Muuta HW parametrit käyttäen nykyisen profiilin parametreja</p></body></html>
+
+
+
+
+
+
+
Patch HW settings from profile
+
+
+
+
+
+
+
Cancel
Peruuta
+
+
+
+
+
+
+
Write to TX
Kirjoita lähettimeen
@@ -3242,71 +4725,169 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FlashFirmwareDialog
+
+
+
+
+
+
+
Flash Firmware
+
+
+
+
+
+
+
Load...
+
+
+
+
+
+
+
Date & Time
Päivä & Aika
+
+
+
+
+
+
+
Variant
Muunnos
+
+
+
+
+
+
+
Version
Versio
+
+
+
+
+
+
+
Use profile start screen
Käytä profiilin aloitus ruutua
+
+
+
+
+
+
+
Use firmware start screen
Käytä firmwaren aloitus ruutua
+
+
+
+
+
+
+
Use library start screen
Käytä kirjaston aloitus ruutua
+
+
+
+
+
+
+
Use another start screen
Käytä muuta aloitus ruutua
+
+
+
+
+
+
+
Allows Companion to write to older version of the firmware
Anna Companionin kirjoittaa myös vanhaan firmwareen
+
+
+
+
+
+
+
Check Hardware compatibility
+
+
+
+
+
+
+
Backup and restore Models and Settings
Varmuuskopioi ja palauta mallit ja asetukset
+
+
+
+
+
+
+
Cancel
Peruuta
+
+
+
+
+
+
+
Write to TX
Kirjoita lähettimeen
@@ -3506,21 +5087,49 @@ Käytät nyt:
FlightMode
+
+
+
+
+
+
+
Fade In
Fade In
+
+
+
+
+
+
+
Fade Out
Fade Out
+
+
+
+
+
+
+
Name
Nimi
+
+
+
+
+
+
+
Switch
Kytkin
@@ -3710,11 +5319,25 @@ Käytät nyt:
FusesDialog
+
+
+
+
+
+
+
Fuses
Sulakkeet
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3744,11 +5367,25 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Read Fuses
Lue sulakkeet
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3782,6 +5419,13 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Reset Fuses
EEPROM - PROTECT
Nollaa sulakkeet
@@ -3789,6 +5433,13 @@ EEPROM - SUOJATTU
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3822,6 +5473,13 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Reset Fuses
EEPROM - DELETE
Nollaa sulakkeet
@@ -3829,6 +5487,13 @@ EEPRON - POISTO
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3905,21 +5570,49 @@ p, li { white-space: pre-wrap; }
GeneralEdit
+
+
+
+
+
+
+
Radio settings
+
+
+
+
+
+
+
Retrieve calib. and hw settings from profile
Nouda calib. ja hw asetukset profiilista
+
+
+
+
+
+
+
Store calib. and hw settings in selected profile
Tallenna calib. ja hw asetukset valittuun profiiliin
+
+
+
+
+
+
+
General settings used throught the transmitter.
These will be relevant for all models in the same EEPROM.
Yleiset asetukset lähettimelle.
@@ -3988,127 +5681,309 @@ Nämä vaikuttaa kaikkiin malleihin jotka on EEPROMilla.
GeneralSetup
+
+
+
+
+
+
+
Form
+
+
+
+
+
+
+
Readonly Unlock
Vainlue tilan avaus
+
+
+
+
+
+
+
SC
SC
+
+
+
+
+
+
+
SE
SE
+
+
+
+
+
+
+
SA
SA
+
+
+
+
+
+
+
SF
SF
+
+
+
+
+
+
+
SH
SH
+
+
+
+
+
+
+
SD
SD
+
+
+
+
+
+
+
SB
SB
+
+
+
+
+
+
+
SG
SG
+
+
+
+
+
+
+
Timeshift from UTC
Ajansiirto UTC:stä
+
+
+
+
+
+
+
Voice Language
Äänen kieli
+
+
+
+
+
+
+
Country Code
Maa koodi
+
+
+
+
+
+
+
Stick reverse
+
+
+
+
+
+
+
FAI Mode
FAI tila
+
+
+
+
+
+
+
Adjust RTC
+
+
+
+
+
+
+
Vario pitch at max
Vario ääni kun max
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Hz
Hz
+
+
+
+
+
+
+
Speaker Volume
Äänen voimakkuus
+
+
+
+
+
+
+
Backlight Switch
Taustavalon kytkin
+
+
+
+
+
+
+
Sound Mode
Ääni tila
+
+
+
+
+
+
+
Color 1
Väri 1
+
+
+
+
+
+
+
Color 2
Väri 2
+
+
+
+
+
+
+
Speaker Pitch (spkr only)
Äänen korkeus (vain kaj.)
+
+
+
+
+
+
+
If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds.
Jos tämä arvo ei ole 0, jokainen painallus sytyttää taustavalon, sammuu valitun ajan jälkeen ( SEK).
@@ -4116,82 +5991,209 @@ Nämä vaikuttaa kaikkiin malleihin jotka on EEPROMilla.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
sec
sec
+
+
+
+
+
+
+
Backlight color
Taustavalon väri
+
+
+
+
+
+
+
Beeper
Piipperi
+
+
+
+
+
+
+
Speaker
Kaiutin
+
+
+
+
+
+
+
BeeperVoice
Piippausääni
+
+
+
+
+
+
+
SpeakerVoice
Kaiutinääni
+
+
+
+
+
+
+
Beep volume
Piippaus voluumi
+
+
+
+
+
+
+
Wav volume
Wav voluumi
+
+
+
+
+
+
+
Vario volume
Vario voluumi
+
+
+
+
+
+
+
Background volume
Taustan voluumi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ms
ms
+
+
+
+
+
+
+
Backlight Auto OFF after
Taustavalo pois automaattisesti
+
+
+
+
+
+
+
Backlight flash on alarm
Taustavalo vilkkuu hälytyksenä
+
+
+
+
+
+
+
Vario pitch at zero
Vario ääni kun nolla
+
+
+
+
+
+
+
Vario repeat at zero
Varion toisto nollassa
+
+
+
+
+
+
+
This is the switch selectrion for turning on the backlight (if installed).
@@ -4202,6 +6204,20 @@ Nämä vaikuttaa kaikkiin malleihin jotka on EEPROMilla.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -4217,41 +6233,97 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Backlight Brightness
Taustavalon kirkkaus
+
+
+
+
+
+
+
RotEnc Navigation
RotEnc navigaatio
+
+
+
+
+
+
+
Automatically adjust the radio's clock if a GPS is connected to telemetry.
+
+
+
+
+
+
+
America
Amerikka
+
+
+
+
+
+
+
Japan
Japani
+
+
+
+
+
+
+
Europe
Eurooppa
+
+
+
+
+
+
+
Backlight OFF Brightness
+
+
+
+
+
+
+
Mode selection:
Mode 1:
@@ -4296,346 +6368,845 @@ Tila 4:
+
+
+
+
+
+
+
Mode 1 (RUD ELE THR AIL)
Mode 1 (PER KOR KAA SII)
+
+
+
+
+
+
+
Mode 2 (RUD THR ELE AIL)
Mode 2 (PER KAA KOR SII)
+
+
+
+
+
+
+
Mode 3 (AIL ELE THR RUD)
Mode 3 (SII KOR KAA PER)
+
+
+
+
+
+
+
Mode 4 (AIL THR ELE RUD)
Mode 4 (SII KAA KOR PER)
+
+
+
+
+
+
+
<html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html>
<html><head/><body><p>Kanava järjestys</p><p><br/></p><p>Määrittelee miksereiden perusasetukset uuteen malliin.</p></body></html>
+
+
+
+
+
+
+
If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio.
+
+
+
+
+
+
+
RSSI Poweroff Warning
+
+
+
+
+
+
+
Low EEPROM Warning
+
+
+
+
Owner Registration ID
+
+
+
+
aaaaaaAA
+
+
+
+
+
+
+
R E T A
P Ko Ka S
+
+
+
+
+
+
+
R E A T
P Ko S Ka
+
+
+
+
+
+
+
R T E A
P Ka Ko S
+
+
+
+
+
+
+
R T A E
P Ka S Ko
+
+
+
+
+
+
+
R A E T
P S Ko Ka
+
+
+
+
+
+
+
R A T E
P S Ka Ko
+
+
+
+
+
+
+
E R T A
Ko P Ka S
+
+
+
+
+
+
+
E R A T
Ko P S Ka
+
+
+
+
+
+
+
E T R A
Ko Ka P S
+
+
+
+
+
+
+
E T A R
Ko Ka S P
+
+
+
+
+
+
+
E A R T
Ko S P Ka
+
+
+
+
+
+
+
E A T R
Ko S Ka P
+
+
+
+
+
+
+
T R E A
Ka P Ko S
+
+
+
+
+
+
+
T R A E
Ka P S Ko
+
+
+
+
+
+
+
T E R A
Ka Ko P S
+
+
+
+
+
+
+
T E A R
Ka Ko S P
+
+
+
+
+
+
+
T A R E
Ka S P Ko
+
+
+
+
+
+
+
T A E R
Ka S Ko P
+
+
+
+
+
+
+
A R E T
S P Ko Ka
+
+
+
+
+
+
+
A R T E
S P Ka Ko
+
+
+
+
+
+
+
A E R T
S Ko P Ka
+
+
+
+
+
+
+
A E T R
S Ko Ka P
+
+
+
+
+
+
+
A T R E
S Ka P Ko
+
+
+
+
+
+
+
A T E R
S Ka Ko P
+
+
+
+
Power On Delay
+
+
+
+
+
+
+
Jack Mode
+
+
+
+
+
+
+
Audio
+
+
+
+
+
+
+
Trainer
Traineri
+
+
+
+
+
+
+
DMS
+
+
+
+
+
+
+
USB Mode
+
+
+
+
Power Off Delay
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Ask on Connect
+
+
+
+
+
+
+
Joystick (HID)
+
+
+
+
+
+
+
USB Mass Storage
+
+
+
+
+
+
+
USB Serial (CDC)
+
+
+
+
+
+
+
Stick Mode
Tikku tila
+
+
+
+
+
+
+
Metric
Metrit
+
+
+
+
+
+
+
Imperial
Imperiaali
+
+
+
+
+
+
+
Default Channel Order
Kanavien järjestys
+
+
+
+
+
+
+
GPS Coordinates
GPS koordinaatit
+
+
+
+
+
+
+
Min
Min
+
+
+
+
+
+
+
+
+
+
+
+
+
+
v
v
+
+
+
+
+
+
+
Max
Max
+
+
+
+
+
+
+
Inactivity Timer
Käyttämättömyys ajastin
+
+
+
+
+
+
+
Show Splash Screen on Startup
Näytä alkuruutu käynnistyksessä
+
+
+
+
+
+
+
Contrast
Kontrasti
+
+
+
+
+
+
+
Battery Meter Range
+
+
+
+
+
+
+
Haptic Strength
Värinän voimakkuus
+
+
+
+
+
+
+
LCD Display Type
LCD näytön tyyppi
+
+
+
+
+
+
+
"No Sound" Warning
"Ei ääniä" hälytys
+
+
+
+
+
+
+
Battery Warning
Akun varoitin
+
+
+
+
+
+
+
Haptic Length
Värinän pituus
+
+
+
+
+
+
+
MAVLink Baud Rate
MAV linkki baudit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Quiet
Äänetön
+
+
+
+
+
+
+
Only Alarms
Vain hälyt
+
+
+
+
+
+
+
+
+
+
+
+
+
+
No Keys
Ei nap
+
+
+
+
+
+
+
+
+
+
+
+
+
+
All
Kaikki
+
+
+
+
+
+
+
Battery warning voltage.
This is the threashhold where the battery warning sounds.
@@ -4647,107 +7218,261 @@ Hyväksytty arvo: 5v - 10v
+
+
+
+
+
+
+
Standard
Vakio
+
+
+
+
+
+
+
Optrex
Optrex
+
+
+
+
+
+
+
If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes.
Jos tämä arvo ei ole 0, piipataan valitun ajan jos mitään käskyjä ei tule ( MIN ).
+
+
+
+
+
+
+
min
Min
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Show splash screen on startup
Näytä alkuruutu käynnistyksessä
+
+
+
+
+
+
+
---
---
+
+
+
+
+
+
+
2s
2s
+
+
+
+
+
+
+
3s
3s
+
+
+
+
+
+
+
4s
4s
+
+
+
+
+
+
+
6s
6s
+
+
+
+
+
+
+
8s
8s
+
+
+
+
+
+
+
10s
10s
+
+
+
+
+
+
+
15s
15s
+
+
+
+
+
+
+
4800 Baud
4800 Baudia
+
+
+
+
+
+
+
9600 Baud
9600 Baudia
+
+
+
+
+
+
+
14400 Baud
14400 Baudia
+
+
+
+
+
+
+
19200 Baud
19200 Baudia
+
+
+
+
+
+
+
38400 Baud
38400 Baudia
+
+
+
+
+
+
+
57600 Baud
57600 Baudia
+
+
+
+
+
+
+
76800 Baud
76800 Baudia
+
+
+
+
+
+
+
115200 Baud
115200 Baudia
@@ -4755,6 +7480,27 @@ Hyväksytty arvo: 5v - 10v
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -4781,65 +7527,184 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
X-Short
X-lyhyt
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Short
Lyhyt
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Normal
Normaali
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Long
Pitkä
+
+
+
+
+
+
+
+
+
+
+
+
+
+
X-Long
X-Pitkä
+
+
+
+
+
+
+
NMEA
NMEA
+
+
+
+
+
+
+
Play Delay (switch mid position)
Toista viive (kytkin keskiasennossa)
+
+
+
+
+
+
+
Measurement Units
Mittayksiköt
+
+
+
+
+
+
+
Haptic Mode
Värinä tila
+
+
+
+
+
+
+
Beeper Length
Piippaus pituus
+
+
+
+
+
+
+
Beeper Mode
Piipperin moodi
+
+
+
+
+
+
+
Beeper volume
0 - Quiet. No beeps at all.
@@ -4857,9 +7722,26 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Alarms Only
Vain hälyt
+
+
+ Power On Speed
+
+
+
+
+ Power Off Speed
+
+
GeneralSetupPanel
@@ -5013,251 +7895,595 @@ Are you sure ?
Hardware
+
+
+
+
+
+
+
Form
+
+
+
+
+
+
+
SQ
+
+
+
+
+
+
+
SR
+
+
+
+
+
+
+
LS2
LS2
+
+
+
+
+
+
+
SP
+
+
+
+
+
+
+
SO
+
+
+
+
+
+
+
S4
S4
+
+
+
+
+
+
+
RS
RS
+
+
+
+
+
+
+
SB
SB
+
+
+
+
+
+
+
PPM 2
PPM 2
+
+
+
+
+
+
+
OFF
Pois
+
+
+
+
+
+
+
S-Port Mirror
S-Portti peilik
+
+
+
+
+
+
+
Telemetry
Telemetria
+
+
+
+
+
+
+
SBUS Trainer
+
+
+
+
+
+
+
Debug
Korjaus
+
+
+
+
+
+
+
Rud
PER
+
+
+
+
+
+
+
PPM 3
PPM 3
+
+
+
+
+
+
+
S1
S1
+
+
+
+
+
+
+
S2
S2
+
+
+
+
+
+
+
S3
S3
+
+
+
+
+
+
+
PPM 1
PPM 1
+
+
+
+
+
+
+
Serial Port
Sarja portti
+
+
+
+
+
+
+
v
v
+
+
+
+
+
+
+
PPM Multiplier
PPM Kerroin
+
+
+
+
+
+
+
Current Offset
+
+
+
+
+
+
+
PPM 4
PPM 4
+
+
+
+
+
+
+
SA
SA
+
+
+
+
+
+
+
Ele
KOR
+
+
+
Antenna
+
+
+
+
+
S5
+
+
+
+
+
+
+
Ail
SII
+
+
+
+
+
+
+
Thr
KAA
+
+
+
+
+
+
+
SC
SC
+
+
+
+
+
+
+
LS
LS
+
+
+
+
+
+
+
SD
SD
+
+
+
+
+
+
+
Battery Offset
+
+
+
+
+
+
+
SE
SE
+
+
+
+
+
+
+
SF
SF
+
+
+
+
+
+
+
SG
SG
+
+
+
+
+
+
+
SH
SH
+
+
+
+
+
+
+
SI
+
+
+
+
+
+
+
SJ
+
+
+
+
+
+
+
SK
+
+
+
+
+
+
+
SL
+
+
+
+
+
+
+
SM
+
+
+
+
+
+
+
SN
+
+
+
+
+
+
+
RS2
+
+
+
+
+
+
+
Bluetooth
+
+
+
+
+
+
+
ADC Filter
+
+
+
+
+
+
+
Device Name:
@@ -5356,71 +8582,169 @@ Are you sure ?
Heli
+
+
+
+
+
+
+
Invert Elevator
Käänt kork
+
+
+
+
+
+
+
Invert Aileron
Käänt siiv
+
+
+
+
+
+
+
Invert Collective
Käänt koll
+
+
+
+
+
+
+
Invert
Käänteinen
+
+
+
+
+
+
+
Off
Pois
+
+
+
+
+
+
+
120
120
+
+
+
+
+
+
+
120X
120X
+
+
+
+
+
+
+
140
140
+
+
+
+
+
+
+
90
90
+
+
+
+
+
+
+
Long. cyc
+
+
+
+
+
+
+
Lateral cyc
+
+
+
+
+
+
+
Collective
Kopt Collective
+
+
+
+
+
+
+
Swash Type
Kopt swash type
+
+
+
+
+
+
+
Swash Ring
Kopt swash ring
@@ -5812,46 +9136,109 @@ Are you sure ?
LogsDialog
+
+
+
+
+
+
+
Companion Log Viewer
Companion logit
+
+
+
+
+
+
+
Filename
Tiedoston nimi
+
+
+
+
+
+
+
Open LogFile
Avaa logi
+
+
+
+
+
+
+
Zoom
Zuumaa
+
+
+
+
+
+
+
Save session CSV
+
+
+
+
+
+
+
X
X
+
+
+
+
+
+
+
Y
Y
+
+
+
+
+
+
+
Reset
Resetti
+
+
+
+
+
+
+
Fly sessions
Lento jakso
@@ -7341,41 +10728,95 @@ Haluatko tallentaa muutokset ?
MixerDialog
+
+
+
+
+
Dialog
Mikserit
+
+
+
+
+
+
+
Delay
Viive
+
+
+
+
+
+
+
Slow
Hidas
+
+
+
+
+
+
+
Up
Ylös
+
+
+
+
+
+
+
Down
Alas
+
+
+
+
+
+
+
Include Trim
Myös trimmi
+
+
+
+
+
+
+
Offset
Tasoitus
+
+
+
+
+
+
+
Weight
Paino
@@ -7384,6 +10825,34 @@ Haluatko tallentaa muutokset ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -7399,46 +10868,109 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Name
Nimi
+
+
+
+
+
+
+
Source
Lähde
+
+
+
+
+
+
+
Multiplex
Multiplexi
+
+
+
+
+
+
+
Warning
Varoitus
+
+
+
+
+
+
+
The curve used by the mix
Mikserissä käytettävä käyrä
+
+
+
+
+
+
+
Include DR/Expo
Myös DR/Expo
+
+
+
+
+
+
+
Flight modes
Lento tilat
+
+
+
+
+
+
+
Switch
Kytkin
+
+
+
+
+
+
+
Mixer warning.
Setting this value will cause a beep to be emmitted when this value is active.
Mikserin varoitus.
@@ -7446,31 +10978,73 @@ Tämän arvon asettaminen aiheuttaa piippauksen aina kun arvo on aktiivinen.
+
+
+
+
+
+
+
OFF
Pois
+
+
+
+
+
+
+
1 Beep
1 Piip
+
+
+
+
+
+
+
2 Beep
2 Piip
+
+
+
+
+
+
+
3 Beep
3 Piip
+
+
+
+
+
+
+
No
Ei
+
+
+
+
+
+
+
Yes
Kyllä
@@ -7478,6 +11052,27 @@ Tämän arvon asettaminen aiheuttaa piippauksen aina kun arvo on aktiivinen.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
GV
GV
@@ -7486,11 +11081,46 @@ Tämän arvon asettaminen aiheuttaa piippauksen aina kun arvo on aktiivinen.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The source for the mixer
Lähde miksereille
+
+
+
+
+
+
+
Multiplexer
This determines how mixer values are added.
@@ -7508,26 +11138,61 @@ Tämä määrittää kuinka mikserin arvot lisätään.
+
+
+
+
+
+
+
ADD
Lisää
+
+
+
+
+
+
+
MULTIPLY
Kerro
+
+
+
+
+
+
+
REPLACE
Korvaa
+
+
+
+
+
+
+
Curve
Käyrä
+
+
+
+
+
+
+
Switch used by the mix.
If blank then the mix is considered to be "ON" all the time.
Mikserissä käytetty kytkin.
@@ -7558,6 +11223,12 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan.
Invert All
+
+
+
+ FullScreenDialog
+
+
MixersListWidget
@@ -7731,11 +11402,23 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan.
ModelEdit
+
+
+
+
+
Dialog
Mallin editori
+
+
+
+
+
+
+
Simulate
Simuloi
@@ -7789,6 +11472,12 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan.
Telemetry
Telemetria
+
+
+
+ FullScreenDialog
+
+
ModelPrinter
@@ -8607,138 +12296,324 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan.
Module
+
+
+
+
+
+
+
Failsafe Mode
Turvatila
+
+
+
+
+
+
+
Start
Aloitus
+
+
+
+
+
+
+
PPM delay
PPM viive
+
+
+
+
+
+
+
Negative
Negatiivinen
+
+
+
+
+
+
+
Positive
Positiivinen
+
+
+
+
+
+
+
Polarity
Napaisuus
+
+
+
+
+
+
+
Trainer Mode
Harjoitus tila
+
+
+
+
+
+
+
PPM Frame Length
PPM läh pituus
+
+
+
+
+
+
+
CH
CH
+
+
+
+
+
+
+
Antenna
+
+
+
+
+
+
+
Option value
+
+
+
+
+
+
+
Bind on startup
+
+
+
+
+
+
+
RF Output Power
+
+
+
+
+
+
+
Low Power
+
+
+
+
+
+
+
us
us
+
+
+
+
+
+
+
Multi Radio Protocol
+
+
+
+
+
+
+
Sub Type
+
+
+
+
+
+
+
Master/Jack
+
+
+
+
+
+
+
Slave/Jack
+
+
+
+
+
+
+
Master/SBUS Module
+
+
+
+
+
+
+
Master/CPPM Module
+
+
+
+
+
+
+
Master/SBUS in battery compartment
+
+
+
+
+
+
+
Show values in:
+
+
+
+
+
+
+
%
abbreviation for percent
%
+
+
+
+
+
+
+
μs
abbreviation for microseconds
+
+
+
+
+
+
+
ms
ms
+
+
+
+
Receiver 1
@@ -8746,94 +12621,232 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan.
+
+
+
+
+
+
+
+
+
+
+
+
X
X
+
+
+
+
Receiver 2
+
+
+
+
Receiver 3
+
+
+
+
+
+
+
WARNING: changing RF Output Power needs RE-BIND
+
+
+
+
+
+
+
Channels
Kanavat
+
+
+
+
Registration ID
+
+
+
+
+
+
+
WARNING: Requires non-certified firmware!
+
+
+
+
+
+
+
Not set
+
+
+
+
+
+
+
Hold
Pidä
+
+
+
+
+
+
+
Custom
Omat
+
+
+
+
+
+
+
No Pulses
Ei pulsseja
+
+
+
+
+
+
+
Receiver
Vastaanotin
+
+
+
+
+
+
+
Failsafe Positions
Turvatila asennot
+
+
+
+
+
+
+
Protocol
Protokolla
+
+
+
+
+
+
+
Receiver No.
Vastaanotin No.
+
+
+
+
+
+
+
Output type
+
+
+
+
+
+
+
Open Drain
+
+
+
+
+
+
+
Push Pull
+
+
+
+
+
+ Internal
+
+
+
+
+
+
+
+ Ext. + Int.
+
+
ModuleData
@@ -9572,21 +13585,49 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan.
PrintDialog
+
+
+
+
+
+
+
Close
Sulje
+
+
+
+
+
+
+
Style
+
+
+
+
+
+
+
Print
Tulosta
+
+
+
+
+
+
+
Print to file
Tulosta tiedostoon
@@ -9610,11 +13651,25 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan.
ProgressDialog
+
+
+
+
+
+
+
Flash Firmware
+
+
+
+
+
+
+
Close
Sulje
@@ -9629,6 +13684,13 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan.
ProgressWidget
+
+
+
+
+
+
+
Show Details
Näytä detailit
@@ -9782,16 +13844,37 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan.
RadioNotFoundDialog
+
+
+
+
+
+
+
No Radio Found
Lähetintä ei löydy
+
+
+
+
+
+
+
<html><head/><body><p>No Radio was found!</p><p>Make sure that you hold the lower trim buttons towards the center while you turn it on.</p><p>Then connect the USB wire.</p><p><span style=" font-family:'arial,sans-serif'; font-size:13px; font-style:italic; color:#222222; background-color:#ffffff;">Note: if you have a Taranis that has not had the firmware upgraded to 2.0 then this version of Companion will not work.</span></p></body></html>
+
+
+
+
+
+
+
OK
Ok
@@ -9800,43 +13883,99 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan.
RadioOutputsWidget
-
+
+
+
+
+
+
+
+
+
Form
-
+
+
+
+
+
+
+
+
+
View:
-
+
+
+
+
+
+
+
+
+
Logical Switches
Loogiset kytkimet
-
+
+
+
+
+
+
+
+
+
Global Variables
Globaalit muuttujat
-
+
+
+
+
+
+
+
+
+
Channel Outputs
-
+
+
+
+
+
+
+
+
+
Mix Outputs
-
+
+
+
+
+
+
+
+
+
L
o
g
@@ -9846,7 +13985,15 @@ c
-
+
+
+
+
+
+
+
+
+
G
l
o
@@ -9857,7 +14004,15 @@ l
-
+
+
+
+
+
+
+
+
+
C
h
a
@@ -9870,7 +14025,15 @@ s
-
+
+
+
+
+
+
+
+
+
M
i
x
@@ -10709,81 +14872,193 @@ s
Setup
+
+
+
+
+
+
+
Model Image
Mallin kuva
+
+
+
+
+
+
+
Throttle Source
Kaasun lähde
+
+
+
+
+
+
+
Switch Warnings
Kytkin varoitukset
+
+
+
+
+
+
+
Center beep
Keski piippaus
+
+
+
+
+
+
+
Exponential
Expo
+
+
+
+
+
+
+
Extra Fine
Eri hieno
+
+
+
+
+
+
+
Fine
Hieno
+
+
+
+
+
+
+
Medium
Keski
+
+
+
+
+
+
+
Coarse
Karkea
+
+
+
+
+
+
+
Edit Checklist...
+
+
+
+
+
+
+
Extended Limits
Laajemman rajat
+
+
+
+
+
+
+
Timer 3
Ajastin 3
+
+
+
+
+
+
+
Extended Trims
Laajemmat trimmit
+
+
+
+
+
+
+
Display Checklist
Näytä teht.lista
+
+
+
+
+
+
+
Throttle Warning
Kaasu varoitus
+
+
+
+
+
+
+
Reverse throttle operation.
If this is checked the throttle will be reversed. Idle will be forward, trim will also be reversed and the throttle warning will be reversed as well.
@@ -10794,86 +15069,205 @@ Jos tämä valittuna, kaasu toimii käänteisesti. Tyhjäkäynti on ylhäällä,
+
+
+
+
+
+
+
Reverse Throttle
Käänteinen kaasu
+
+
+
+
+
+
+
Throttle Trim Idle Only
Kaasun trimmi vain tyhjäkäinnille
+
+
+
+
+
+
+
Timer 2
Ajastin 2
+
+
+
+
+
+
+
Timer 1
Ajastin 1
+
+
+
+
+
+
+
Never
+
+
+
+
+
+
+
On change
+
+
+
+
+
+
+
Always
+
+
+
+
+
+
+
Global Functions
+
+
+
+
+
+
+
Trim Step
Trimmin pykälä
+
+
+
+
+
+
+
Trims Display
+
+
+
+
+
+
+
Warnings
Varoituksia
+
+
+
+
+
+
+
Top LCD Timer
+
+
+
+
+
+
+
Pot Warnings
Potikka varoitus
+
+
+
+
+
+
+
OFF
Pois
+
+
+
+
+
+
+
Manual
Käsin
+
+
+
+
+
+
+
Auto
Autom
+
+
+
+
+
+
+
Model
Malli
@@ -11241,181 +15635,421 @@ Profile ID: [%1]; Radio ID: [%2]
SimulatorMainWindow
-
+
+
+
+
+
+
+
+
+
OpenTx Simulator
-
+
+
+
+
+
+
+
+
+
View
-
+
+
+
+
+
+
+
+
+
Radio Window
-
+
+
+
+
+
+
+
+
+
Reload...
-
+
+
+
+
+
+
+
+
+
Tools
-
+
+
+
+
+
+
+
+
+
Toolbar
-
+
+
+
+
+
+
+
+
+
Reload Lua Scripts
-
+
+
+
+
+
+
+
+
+
Reload the Lua environment on the simulated radio.
-
+
+
+
+
+
+
+
+
+
F7
-
+
+
+
+
+
+
+
+
+
Reload Radio Data
-
+
+
+
+
+
+
+
+
+
Reload all radio data without restarting the simulator.
-
+
+
+
+
+
+
+
+
+
F9
-
+
+
+
+
+
+
+
+
+
Key Mapping
-
+
+
+
+
+
+
+
+
+
Show keyboard maping reference.
-
+
+
+
+
+
+
+
+
+
F1
-
+
+
+
+
+
+
+
+
+
Joystick Settings
-
+
+
+
+
+
+
+
+
+
Open joystick configuration settings dialog.
-
+
+
+
+
+
+
+
+
+
F3
-
+
+
+
+
+
+
+
+
+
LCD Screenshot
-
+
+
+
+
+
+
+
+
+
Save a screenshot of the current simulated LCD screen.
-
+
+
+
+
+
+
+
+
+
F8
-
+
+
+
+
+
+
+
+
+
Dock In Main Window
-
+
+
+
+
+
+
+
+
+
Show the radio in the main window or as a separate "floating" window.
-
+
+
+
+
+
+
+
+
+
Menu Bar
-
+
+
+
+
+
+
+
+
+
Show or hide the top menu bar.
-
+
+
+
+
+
+
+
+
+
Alt+M
-
+
+
+
+
+
+
+
+
+
Constrain Width
-
+
+
+
+
+
+
+
+
+
Set radio widget width to be a fixed size.
-
+
+
+
+
+
+
+
+
+
Constrain Height
-
+
+
+
+
+
+
+
+
+
Set radio widget height to be a fixed size.
@@ -11496,76 +16130,172 @@ Profile ID: [%1]; Radio ID: [%2]
SimulatorStartupDialog
-
+
+
+
+
+
+
+
+
+
OpenTX Simulator - Startup Options
-
+
+
+
+
+
+
+
+
+
Simulator Startup Options:
-
+
+
+
+
+
+
+
+
+
Radio Profile:
-
+
+
+
+
+
+
+
+
+
Existing radio profiles are shown here.<br />
Create or edit profiles using the Companion application.
-
+
+
+
+
+
+
+
+
+
Radio Type:
-
+
+
+
+
+
+
+
+
+
Existing radio simulators are shown here.<br />
The radio type specified in the selected profile is used by default.
-
+
+
+
+
+
+
+
+
+
Data Source:
-
+
+
+
+
+
+
+
+
+
Data File:
-
+
+
+
+
+
+
+
+
+
Data Folder:
-
+
+
+
+
+
+
+
+
+
SD Image Path:
-
+
+
+
+
+
+
+
+
+
Radio data (.bin/.eeprom/.otx) image file to use. A new file with a default image will be created if necessary.<br />
<b>NOTE</b>: any existing EEPROM data incompatible with the selected radio type may be overwritten!
-
+
+
+
+
+
+
+
+
+
Select data file...
@@ -11573,59 +16303,147 @@ The radio type specified in the selected profile is used by default.
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
...
-
+
+
+
+
+
+
+
+
+
Directory containing RADIO and MODELS folders to use.<br />
New folder(s) with default radio/model will be created here if necessary.
-
+
+
+
+
+
+
+
+
+
Select data folder...
-
+
+
+
+
+
+
+
+
+
Directory containing the SD card image to use.<br/>
The default is configured in the chosen Radio Profile.
-
+
+
+
+
+
+
+
+
+
Select SD card image folder...
-
+
+
+
+
+
+
+
+
+
Select which of the data sources (File/Folder/SD Card) you would like to start the simulator with.
-
+
+
+
+
+
+
+
+
+
File
Tiedosto
-
+
+
+
+
+
+
+
+
+
Folder
-
+
+
+
+
+
+
+
+
+
SD Path
@@ -11654,7 +16472,15 @@ The default is configured in the chosen Radio Profile.
SimulatorWidget
-
+
+
+
+
+
+
+
+
+
Companion Simulator
Companion simulaattori
@@ -11742,6 +16568,20 @@ The default is configured in the chosen Radio Profile.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
...
@@ -11781,6 +16621,13 @@ The default is configured in the chosen Radio Profile.
StyleEditDialog
+
+
+
+
+
+
+
@@ -11789,21 +16636,49 @@ The default is configured in the chosen Radio Profile.
+
+
+
+
+
+
+
&Reset to default
+
+
+
+
+
+
+
&Cancel
+
+
+
+
+
+
+
&OK
+
+
+
+
+
+
+
This feature does not validate your changes and assumes you are familiar with CSS syntax for QT.
@@ -12061,190 +16936,475 @@ Too many errors, giving up.
Telemetry
+
+
+
+
+
+
+
A1
A1
+
+
+
+
+
+
+
A2
A2
+
+
+
+
+
+
+
RSSI
RSSI
+
+
+
+
+
+
+
Alarm 1
Varoitus 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
----
----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Yellow
Kelt
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Orange
Orans
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Red
Puna
+
+
+
+
+
+
+
Alarm 2
Varoitus 2
+
+
+
+
+
+
+
Serial Protocol
Sarja protokolla
+
+
+
+
+
+
+
Volt source
Voltti lähde
+
+
+
+
+
+
+
Current source
Virran lähde
+
+
+
+
+
+
+
Protocol
Protokolla
+
+
+
+
+
+
+
None
Ei mitään
+
+
+
+
+
+
+
FrSky Sensor Hub
FrSky:n hubi
+
+
+
+
+
+
+
Blades
Prop lavat
+
+
+
+
+
+
+
Sink Max
Maksimi vajoama
+
+
+
+
+
+
+
Climb Max
Maksimi nousu
+
+
+
+
+
+
+
Sink Min
Minimi vajoama
+
+
+
+
+
+
+
Climb Min
Minimi nousu
+
+
+
+
+
+
+
Center Silent
+
+
+
+
+
+
+
Vario source
Variom lähde
+
+
+
+
+
+
+
Vario limits
Varionm asetukset
+
+
+
+
+
+
+
Disable telemetry audio warnings
+
+
+
+
+
Source
Lähde
+
+
+
+
+
+
+
Altimetry
Korkeusmittaus
+
+
+
+
+
+
+
Altitude source
+
+
+
+
+
+
+
Volts source
+
+
+
+
+
+
+
Top Bar
+
+
+
+
+
+
+
mAh
mAh
+
+
+
+
+
+
+
A
A
+
+
+
+
+
+
+
Various
Useat
+
+
+
+
+
+
+
Sensors
+
+
+
+
+
+
+
Disable multi sensor handling
+
+
+
+
+
+
+
mAh count
mAh laskuri
+
+
+
+
+
+
+
FAS Offset
FAS asetus
+
+
+
+
+
+
+
Persistent mAh
Yhtm. mAh
@@ -12253,107 +17413,289 @@ Too many errors, giving up.
TelemetryAnalog
+
+
+
+
+
+
+
Unit
Yksikkö
+
+
+
+
+
+
+
Max Value
Maks arvo
+
+
+
+
+
+
+
Alarm 1
Hälytys 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
----
----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Yellow
Kelt
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Orange
Orans
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Red
Pun
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<
<
+
+
+
+
+
+
+
+
+
+
+
+
+
+
>
>
+
+
+
+
+
+
+
Alarm 2
Hälytys 2
+
+
+
+
+
+
+
Offset
Tasoitus
+
+
+
+
+
+
+
Volts (V)
Voltit ( V )
+
+
+
+
+
+
+
Amps (A)
Amp ( A )
+
+
+
+
+
+
+
Speed (m/s or ft/s)
Nopeus ( m/s tai jalk/s )
+
+
+
+
+
+
+
Raw (-)
Raaka ( - )
+
+
+
+
+
+
+
Speed (km/h or miles/h)
Nopeus ( km/h tai mailia/h )
+
+
+
+
+
+
+
Meters (m or ft)
Metrit (m tai jalkaa )
+
+
+
+
+
+
+
Temp (°)
Lämpöt (c)
+
+
+
+
+
+
+
Fuel (%)
Bensa (%)
+
+
+
+
+
+
+
mAmps (mA)
mAmp (mA)
@@ -12367,6 +17709,13 @@ Too many errors, giving up.
TelemetryCustomScreen
+
+
+
+
+
+
+
Custom Screen Type
Oman ruudun tyyppi
@@ -12392,21 +17741,49 @@ Too many errors, giving up.
+
+
+
+
+
+
+
Min
Min
+
+
+
+
+
+
+
Source
Lähde
+
+
+
+
+
+
+
Gauge
Mittari
+
+
+
+
+
+
+
Max
Max
@@ -12520,86 +17897,199 @@ Too many errors, giving up.
TelemetrySensor
+
+
+
+
+
+
+
Form
+
+
+
+
+
+
+
Custom
Omat
+
+
+
+
+
+
+
Calculated
+
+
+
+
+
+
+
Id
+
+
+
+
+
+
+
Instance
+
+
+
+
Rx
+
+
+
+
Mod.
+
+
+
+
+
+
+
Add
+
+
+
+
+
+
+
Average
+
+
+
+
+
+
+
Min
Min
+
+
+
+
+
+
+
Max
Max
+
+
+
+
+
+
+
Multiply
+
+
+
+
+
+
+
Totalize
+
+
+
+
+
+
+
Cell
Kenno
+
+
+
+
+
+
+
Consumption
+
+
+
+
+
+
+
Dist
Etäisyys
+
+
+
+
+
+
+
Cells Sensor :
@@ -12612,191 +18102,506 @@ Too many errors, giving up.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
---
---
+
+
+
+
+
+
+
GPS Sensor :
+
+
+
+
+
+
+
Alt. Sensor :
+
+
+
+
+
+
+
Sensor :
+
+
+
+
+
+
+
V
V
+
+
+
+
+
+
+
A
A
+
+
+
+
+
+
+
mA
+
+
+
+
+
+
+
kt
+
+
+
+
+
+
+
m/s
m/s
+
+
+
+
+
+
+
ft/s
+
+
+
+
+
+
+
km/h
km/h
+
+
+
+
+
+
+
mph
mph
+
+
+
+
+
+
+
m
metri
+
+
+
+
+
+
+
ft
jalka
+
+
+
+
+
+
+
°C
°C
+
+
+
+
+
+
+
°F
+
+
+
+
+
+
+
%
%
+
+
+
+
+
+
+
mAh
mAh
+
+
+
+
+
+
+
W
W
+
+
+
+
+
+
+
mW
+
+
+
+
+
+
+
dBm
+
+
+
+
+
+
+
g
g
+
+
+
+
+
+
+
°
°
+
+
+
+
+
+
+
Rad
+
+
+
+
+
+
+
mL
+
+
+
+
+
+
+
US fl.Oz.
+
+
+
+
+
+
+
Raw (-)
Raaka ( - )
+
+
+
+
+
+
+
RPM
+
+
+
+
+
+
+
Precision
+
+
+
+
+
+
+
Ratio
+
+
+
+
+
+
+
Blades
Prop lavat
+
+
+
+
+
+
+
Offset
Tasoitus
+
+
+
+
+
+
+
Multiplier
+
+
+
+
+
+
+
Auto Offset
+
+
+
+
+
+
+
Filter
Filtteri
+
+
+
+
+
+
+
Persistent
Yhtämittainen
+
+
+
+
+
+
+
Positive
Positiivinen
+
+
+
+
+
+
+
Logs
Logit
@@ -12828,116 +18633,268 @@ Too many errors, giving up.
TelemetrySimulator
-
+
+
+
+
+
+
+
+
+
Telemetry Simulator
-
+
+
+
+
+
+
+
+
+
VFAS
-
+
+
+
+
+
+
+
+
+
RSSI
RSSI
-
+
+
+
+
+
+
+
+
+
A1
A1
-
+
+
+
+
+
+
+
+
+
A2
A2
-
+
+
+
+
+
+
+
+
+
Simulate
Simuloi
-
+
+
+
+
+
+
+
+
+
Replay SD Log File
-
+
+
+
+
+
+
+
+
+
Replay rate
-
+
+
+
+
+
+
+
+
+
Load
-
+
+
+
+
+
+
+
+
+
|>
-
+
+
+
+
+
+
+
+
+
<|
-
+
+
+
+
+
+
+
+
+
>
>
-
+
+
+
+
+
+
+
+
+
<-
-
+
+
+
+
+
+
+
+
+
X
X
-
+
+
+
+
+
+
+
+
+
Row #
Timestamp
-
+
+
+
+
+
+
+
+
+
1/5x
1/5x
-
+
+
+
+
+
+
+
+
+
5x
5x
-
+
+
+
+
+
+
+
+
+
No Log File Currently Loaded
-
+
+
+
+
+
+
+
+
+
RAS
@@ -12945,21 +18902,61 @@ Timestamp
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
V / ratio
-
+
+
+
+
+
+
+
+
+
Db
-
+
+
+
+
+
+
+
+
+
RxBt
@@ -12977,121 +18974,377 @@ Timestamp
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<html><head/><body><p><br/></p></body></html>
-
+
+
+
+
+
+
+
+
+
Tmp1
-
+
+
+
+
+
+
+
+
+
A3
A3
-
+
+
+
+
+
+
+
+
+
A4
A4
-
+
+
+
+
+
+
+
+
+
Tmp2
-
+
+
+
+
+
+
+
+
+
Fuel
Bensa
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
°C
°C
-
+
+
+
+
+
+
+
+
+
ml
-
+
+
+
+
+
+
+
+
+
%
%
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Meters
-
+
+
+
+
+
+
+
+
+
Alt
Kork
-
+
+
+
+
+
+
+
+
+
VSpd
Vspd
-
+
+
+
+
+
+
+
+
+
m/s
m/s
-
+
+
+
+
+
+
+
+
+
Fuel Qty
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
km/h
km/h
-
+
+
+
+
+
+
+
+
+
Hdg
-
+
+
+
+
+
+
+
+
+
ASpd
@@ -13099,135 +19352,335 @@ Timestamp
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
G
-
+
+
+
+
+
+
+
+
+
GPS
-
+
+
+
+
+
+
+
+
+
Lat,Lon
(dec.deg.)
-
+
+
+
+
+
+
+
+
+
AccX
AccX
-
+
+
+
+
+
+
+
+
+
dd-MM-yyyy
hh:mm:ss
-
+
+
+
+
+
+
+
+
+
Date
-
+
+
+
+
+
+
+
+
+
Amps
-
+
+
+
+
+
+
+
+
+
AccZ
AccZ
-
+
+
+
+
+
+
+
+
+
GAlt
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Volts
-
+
+
+
+
+
+
+
+
+
Cels
-
+
+
+
+
+
+
+
+
+
Curr
Virta
-
+
+
+
+
+
+
+
+
+
AccY
AccY
-
+
+
+
+
+
+
+
+
+
GSpd
-
+
+
+
+
+
+
+
+
+
Degrees
-
+
+
+
+
+
+
+
+
+
Setting RSSI to zero simulates telemetry and radio link loss.
-
+
+
+
+
+
+
+
+
+
Set RSSI to zero when paused.
-
+
+
+
+
+
+
+
+
+
Stop sending telemetry data when the Telemetry Simulator window is hidden.
-
+
+
+
+
+
+
+
+
+
Pause simulation when hidden.
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
RPM
-
+
+
+
+
+
+
+
+
+
When enabled, sends any non-blank values as simulated telemetry data.
@@ -13269,11 +19722,25 @@ hh:mm:ss
Timer
+
+
+
+
+
+
+
Countdown
Laskuri
+
+
+
+
+
+
+
Minute Call
Minuutti merkki
@@ -13357,26 +19824,61 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
Trainer
+
+
+
+
+
+
+
Form
+
+
+
+
+
+
+
Mode
Moodi
+
+
+
+
+
+
+
Input
Tulo
+
+
+
+
+
+
+
Weight
Paino
+
+
+
+
+
+
+
Rud
PER
@@ -13389,6 +19891,62 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Beeper volume
0 - Quiet. No beeps at all.
@@ -13409,6 +19967,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Off
Pois
@@ -13417,6 +20003,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+= (Sum)
+= (Sum)
@@ -13425,6 +20039,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
:= (Replace)
:= (Korvaa)
@@ -13433,6 +20075,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn1
chn1
@@ -13441,6 +20111,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn2
chn2
@@ -13449,6 +20147,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn3
chn3
@@ -13457,21 +20183,70 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn4
chn4
+
+
+
+
+
+
+
Ele
KOR
+
+
+
+
+
+
+
Thr
KAA
+
+
+
+
+
+
+
Ail
SII
@@ -13480,7 +20255,15 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
TrainerSimulator
-
+
+
+
+
+
+
+
+
+
Trainer simulator
@@ -13905,12 +20688,33 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
burnConfigDialog
+
+
+
+
+
+
+
Programmer Configuration
Ohjelmointilaitteen määrittely
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Location of sam-ba executable
sam-ba ohjelman sijanti
@@ -13919,16 +20723,58 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The location of the AVRDUDE executable.
AVRDUDE ohjelman sijainti.
+
+
+
+
+
+
+
DFU-Util Location
DFU-Util ohjelman sijainti
+
+
+
+
+
+
+
Location of AVRDUDE executable
Sijainti AVRDUDE ohjelmalle
@@ -13936,6 +20782,27 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Use this button to browse and look for the AVRDUDE executable file.
Selaa AVRDUDE ohjelmaa koneeltasi.
@@ -13943,16 +20810,51 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Browse...
Selaa...
+
+
+
+
+
+
+
Programmer
Ohjelmointilaite
+
+
+
+
+
+
+
Programmer used for communicating with the controller.
Please consult the programmer's documentation and the AVRDUDE documentation to select the appropriate programmer.
Ohjelmointilaite joka kommunikoi lähettimen kanssa.
@@ -13960,23 +20862,65 @@ Tarkasta ohjelmointi dokumentointi sekä AVRDUDE dokumentit ja valitse oikea lai
+
+
+
+
+
+
+
List all available programmers.
Käytettävissä olevat ohjelmointilaitteet.
+
+
+
+
+
+
+
List Available
Lista
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Extra arguments that will be passed to AVRDUDE on every call
Lista lisä komennoista jotka ohitetaan AVRDUDE:ssa joka kerta
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Extra arguments used in AVRDUDE.
This can be used for providing extra information to AVRDUDE.
@@ -13988,21 +20932,49 @@ Käytä tätä vain jos tiedät mitä teet !.Tähän toimintoon ei sisälly mit
+
+
+
+
+
+
+
Extra Arguments
Lisä komennot
+
+
+
+
+
+
+
Show AVRDUDE help
Näytä AVRDUDE ohje
+
+
+
+
+
+
+
Show Help
Näytä ohje
+
+
+
+
+
+
+
Communication port to the programmer.
Ohjelmointi laitteen portti.
@@ -14011,28 +20983,84 @@ Käytä tätä vain jos tiedät mitä teet !.Tähän toimintoon ei sisälly mit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Port
Portti
+
+
+
+
+
+
+
AVRDUDE Location
AVRDUDE kohde
+
+
+
+
+
+
+
MCU
MCU
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CPU of your TX
Lähettimen CPU
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CPU present on your 9x radio
Should be m64 for stock radios
m2560 for v4.1 boards
@@ -14042,31 +21070,73 @@ m2560 joka on v4.1 lähettimessä
+
+
+
+
+
+
+
at91sam3s8-9xr
at91sam3s8-9xr
+
+
+
+
+
+
+
SAM-BA Location
SAM-BA kohde
+
+
+
+
+
+
+
ARM MCU
ARM MCU
+
+
+
+
+
+
+
sam-ba serial port
sam-ba sarjaportti
+
+
+
+
+
+
+
Alternate device
Vaihtoehtoinen laite
+
+
+
+
+
+
+
Use advanced controls
Käytä lisä toimintoja
@@ -14112,85 +21182,197 @@ m2560 joka on v4.1 lähettimessä
joystickDialog
-
+
+
+
+
+
+
+
+
+
Configure Joystick
Määrittele joystick
-
+
+
+
+
+
+
+
+
+
Ch2
CH2
-
+
+
+
+
+
+
+
+
+
Ch1
CH1
-
+
+
+
+
+
+
+
+
+
Ch4
CH4
-
+
+
+
+
+
+
+
+
+
Ch6
CH6
-
+
+
+
+
+
+
+
+
+
Ch3
CH3
-
+
+
+
+
+
+
+
+
+
Ch5
CH5
-
+
+
+
+
+
+
+
+
+
Ch7
CH7
-
+
+
+
+
+
+
+
+
+
Ch8
CH8
-
+
+
+
+
+
+
+
+
+
Instructions
Ohjeita
-
+
+
+
+
+
+
+
+
+
Enable
Päälle
-
+
+
+
+
+
+
+
+
+
Cancel
Peruuta
-
+
+
+
+
+
+
+
+
+
Back
-
+
+
+
+
+
+
+
+
+
Start
Aloitus
@@ -14201,7 +21383,15 @@ m2560 joka on v4.1 lähettimessä
-
+
+
+
+
+
+
+
+
+
Ok
Ok
diff --git a/companion/src/translations/companion_fr.ts b/companion/src/translations/companion_fr.ts
index dad20a00a..ec238e663 100644
--- a/companion/src/translations/companion_fr.ts
+++ b/companion/src/translations/companion_fr.ts
@@ -94,41 +94,97 @@
AppPreferencesDialog
+
+
+
+
+
+
+
Edit Settings
Éditer les réglages
+
+
+
+
+
+
+
Radio Profile
Profil de radio
+
+
+
+
+
+
+
Default Channel Order
Ordre des voies par défaut
+
+
+
+
+
+
+
Build Options
Options de compilation
+
+
+
+
+
+
+
Menu Language
Langue des menus
+
+
+
+
+
+
+
Default Stick Mode
Mode par défaut
+
+
+
+
+
+
+
Select Image
Sélectionner une image
+
+
+
+
+
+
+
Mode selection:
Mode 1:
@@ -170,172 +226,417 @@ Manche Droit: Profondeur, Direction
+
+
+
+
+
+
+
Mode 1 (RUD ELE THR AIL)
Mode 1 (DIR PROF GAZ AIL)
+
+
+
+
+
+
+
Mode 2 (RUD THR ELE AIL)
Mode 2 (DIR GAZ PROF AIL)
+
+
+
+
+
+
+
Mode 3 (AIL ELE THR RUD)
Mode 3 (AIL PROF GAZ DIR)
+
+
+
+
+
+
+
Mode 4 (AIL THR ELE RUD)
Mode 4 (AIL GAZ PROF DIR)
+
+
+
+
+
+
+
Splash Screen
Ecran d'accueil
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The profile specific folder, if set, will override general Backup folder
Dossier de sauvegarde spécifique au profil courant, si défini remplace le réglage de l'application
+
+
+
+
+
+
+
Backup folder
Dossier de sauvegarde
+
+
+
+
+
+
+
If set it will override the application general setting
Si défini, remplace le réglage de l'application pour ce profil
+
+
+
+
+
+
+
if set, will override general backup enable
Si défini, remplace le réglage de l'application pour ce profil
+
+
+
+
+
+
+
<html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html>
<html><head/><body><p>Ordre des voies</p><p><br/></p><p>Détermine l'ordre des mixages par défaut sur un nouveau modèle.</p></body></html>
+
+
+
+
+
+
+
R E T A
D P G A
+
+
+
+
+
+
+
R E A T
D P A G
+
+
+
+
+
+
+
R T E A
D G P A
+
+
+
+
+
+
+
R T A E
D G A P
+
+
+
+
+
+
+
R A E T
D A P G
+
+
+
+
+
+
+
R A T E
D A G P
+
+
+
+
+
+
+
E R T A
P D G A
+
+
+
+
+
+
+
E R A T
P D A G
+
+
+
+
+
+
+
E T R A
P G D A
+
+
+
+
+
+
+
E T A R
P G A D
+
+
+
+
+
+
+
E A R T
P A D G
+
+
+
+
+
+
+
E A T R
P A G D
+
+
+
+
+
+
+
T R E A
G D P A
+
+
+
+
+
+
+
T R A E
G D A P
+
+
+
+
+
+
+
T E R A
G P D A
+
+
+
+
+
+
+
T E A R
G P A D
+
+
+
+
+
+
+
T A R E
G A D P
+
+
+
+
+
+
+
T A E R
G A P D
+
+
+
+
+
+
+
A R E T
A D P G
+
+
+
+
+
+
+
A R T E
A D G P
+
+
+
+
+
+
+
A E R T
A P D G
+
+
+
+
+
+
+
A E T R
A P G D
+
+
+
+
+
+
+
A T R E
A G D P
+
+
+
+
+
+
+
A T E R
A G P D
@@ -346,272 +647,680 @@ Manche Droit: Profondeur, Direction
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Select Folder
Sélectionner dossier
+
+
+
+
+
+
+
Select Executable
Sélectionner exécutable
+
+
+
+
Release channel
Canal de version
+
+
+
+
Releases (stable)
Officielle (stable)
+
+
+
+
Release candidates (testing)
Candidate (test)
+
+
+
+
Nightly builds (unstable)
Nighlty (instable)
+
+
+
+
+
+
+
Simulator Volume Gain
Gain de volume du simulateur
+
+
+
+
+
+
+
Profile Name
Nom du profil
+
+
+
+
+
+
+
Clear Image
Effacer l'image
+
+
+
+
+
+
+
Append version number to FW file name
Ajouter le numéro de version au nom du fichier téléchargé
+
+
+
+
+
+
+
Offer to write FW to Tx after download
Proposer de transférer le firmware à la radio après téléchargement
+
+
+
+
+
+
+
Radio Type
Type de radio
+
+
+
+
+
+
+
Other Settings
Autres réglages
+
+
+
+
+
+
+
General Settings
Paramètres généraux
+
+
+
+
+
+
+
SD Structure path
Chemin de la structure de la carte SD
+
+
+
+
+
+
+
Application Settings
Réglages de l'application
+
+
+
+
+
+
+
Show splash screen when Companion starts
Afficher l'écran d'accueil au lancement de Companion
+
+
+
+
+
+
+
Automatic check for Companion updates
Vérifier la présence de mises à jour de Companion automatiquement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Enable automatic backup before writing firmware
Sauvegarder les réglages et modèles automatiquement lors des transferts
+
+
+
+
+
+
+
Automatic check for OpenTX firmware updates
Vérifier la présence de mises à jour de firmware automatiquement
+
+
+
+
+
+
+
Splash Screen Library
Bibliothèque d'écrans d'accueil
+
+
+
+
+
+
+
Google Earth Executable
Exécutable Google Earth
+
+
+
+
+
+
+
Only show user splash images
Ne montrer que les images de l'utilisateur
+
+
+
+
+
+
+
Show user and companion splash images
Montrer les images de Companion et de l'utilisateur
+
+
+
+
+
+
+
User Splash Screens
Ecrans d'accueil personnalisés
+
+
+
+
+
+
+
Automatic Backup Folder
Dossier de sauvegardes automatiques
+
+
+
+
+
+
+
Simulator Settings
Paramètres du simulateur
+
+
+
+
+
+
+
Simulator BackLight
Rétroéclairage du simulateur
+
+
+
+
+
+
+
Enable
Actif
+
+
+
+
+
+
+
Action on New Model
Action par défaut "Ajout Modèle"
+
+
+
+
+
+
+
Use model wizard
Assistant
+
+
+
+
+
+
+
Open model editor
Éditer modèle
+
+
+
+
+
+
+
Just create the model
Créer modèle
+
+
+
+
+
+
+
<html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html>
<html><head/><body><p><b><u>/!\</u> Uniquement pour les radios sans catégories <u>/!\</u></b></p><p>Cette option maintient le comportement des anciennes versions d’OpenTx où les emplacements des modèles vides sont conservés lorsqu'un modèle est supprimé ou déplacé.</p><p>Lorsque cette option est désélectionnée, les autres modèles peuvent être réarrangés pour combler l'écart laissé par le modèle supprimé.</p></body></html>
+
+
+
+
+
+
+
most recently used files
fichiers récemment utilisés
+
+
+
+
+
+
+
Startup Settings
Paramètres de démarrage
+
+
+
+
+
+
+
Remember
Mémoriser
+
+
+
+
+
+
+
Output Logs Folder
Dossier des logs sauvegardés
+
+
+
+
+
+
+
Remove empty model slots when deleting models (only applies for radios w/out categories)
Supprimer les emplacements vides lors de la suppression de modèles
+
+
+
+
+
+
+
Debug Output Logging
Log les messages de debug
+
+
+
+
+
+
+
<html><head/><body><p>Keep a log of all debugging messages generated by the desktop Companion/Simulator applications. An OpenTX developer may request this to help diagnose an issue.</p></body></html>
<html><head/><body><p>Garder un log de tous les messages de débogage générés par les applications Companion/Simulateur. Un développeur OpenTX peut demander ce log afin d'aider à diagnostiquer un problème.</p></body></html>
+
+
+
+
+
+
+
Application (Companion/Simulator)
Application (Companion/Simulateur)
+
+
+
+
+
+
+
<html><head/><body><p>Keep a log of all messages generated by the radio firmware when running in Simulator. This is the same information one would also see in the Simulator <span style=" font-style:italic;">Debug Output</span> window.</p></body></html>
<html><head/><body><p>Conserver un log de tous les messages générés par le firmware radio lors de l'exécution du Simulateur. C'est la même information visible depuis le Simulateur dans la <span style=" font-style:italic;">Fenêtre de débogage</span>.</p></body></html>
+
+
+
+
+
+
+
Radio Firmware (in Simulator)
Firmware radio (Simulateur)
+
+
+
+
+
+
+
Blue
Bleu
+
+
+
+
+
+
+
Green
Vert
+
+
+
+
+
+
+
Red
Rouge
+
+
+
+
+
+
+
Orange
Orange
+
+
+
+
+
+
+
Yellow
Jaune
+
+
+
+
+
+
+
Screenshot capture folder
Dossier des captures d'écran
+
+
+
+
+
+
+
Joystick
+
+
+
+
+
+
+
Calibrate
Calibrer
+
+
+
+
+
+
+
Only capture to clipboard
Capturer dans le presse-papiers uniquement
+
+
+
+
+
+
+
Remember simulator switch values
Mémoriser les positions des inters du simulateur
@@ -692,6 +1401,31 @@ Manche Droit: Profondeur, Direction
Images (%1)
Images (%1)
+
+
+
+
+ Use releases (stable)
+
+
+
+
+ Use release candidates (testing)
+
+
+
+
+
+
+ Use nightly builds (unstable)
+
+
+
+
+
+ Use releases and release candidates (testing)
+
+
BinEepromFormat
@@ -912,36 +1646,85 @@ Manche Droit: Profondeur, Direction
ChecklistDialog
+
+
+
+
+
+
+
Edit Checklist
Éditer Checklist
+
+
+
+
+
+
+
Line nn, Col nn
Ligne nn, Col nn
+
+
+
+
+
+
+
&Import...
&Importer...
+
+
+
+
+
+
+
&Cancel
&Annuler
+
+
+
+
+
+
+
&OK
+
+
+
+
+
+
+
Please note, the maximum width displayable is radio model limited. Also, renaming the model will break the link to this checklist file.
Veuillez noter que la largeur maximale affichable est limitée suivant le modèle de radio. Notez aussi que renommer le modèle va casser le lien vers ce fichier "Checklist".
+
+
+
+
+
+
+
File: unknown
Fichier: inconnu
@@ -1195,31 +1978,73 @@ Si vous avez un fichier de sauvegarde des paramètres, vous pouvez l'import
CompareDialog
+
+
+
+
+
+
+
Compare Models
Comparer les modèles
+
+
+
+
+
+
+
To compare models, drag and drop them anywhere in this window.
Pour comparer les modèles, faites un glisser/déposer n'importe où dans cette fenêtre.
+
+
+
+
+
+
+
Close
Fermer
+
+
+
+
+
+
+
Style
+
+
+
+
+
+
+
Print
Imprimer
+
+
+
+
+
+
+
Print to file
Imprimer vers un fichier
@@ -1376,87 +2201,213 @@ Si vous avez un fichier de sauvegarde des paramètres, vous pouvez l'import
Curves
+
+
+
+
+
+
+
Fixed X
X fixe
+
+
+
+
+
+
+
Custom X
X configurable
+
+
+
+
+
+
+
Lines
Linéaire
+
+
+
+
+
+
+
Smooth
Adoucie
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Curve type
Type de courbe
+
+
+
+
+
+
+
Curve Creator
Créateur de courbe
+
+
+
+
+
+
+
Y at X=0
Y pour X=0
+
+
+
+
+
+
+
Point size
Taille point
+
+
+
+
+
+
+
Y at X=100
Y pour X=100
+
+
+
+
+
+
+
Both
Les 2
+
+
+
+
+
+
+
x>0
+
+
+
+
+
+
+
x<0
+
+
+
+
+
+
+
Apply
Appliquer
+
+
+
+
+
+
+
Side
Côté
+
+
+
+
+
+
+
Y at X=-100
Y pour X=-100
+
+
+
+
+
+
+
Coefficient
+
+
+
+
+
+
+
Curve name
Nom de la courbe
@@ -1870,42 +2821,133 @@ Si vous avez un fichier de sauvegarde des paramètres, vous pouvez l'import
CustomizeSplashDialog
+
+
+
+
+
+
+
Transmitter Splash Screen Editor
Éditeur d'écran d'accueil
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Invert
Inverser
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load FW
Ouvrir le firmware
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load Pict
Ouvrir l'image
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load Profile
Charger le profil
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Save
Sauvegarder
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Open Splash Library
Ouvrir la bibliothèque des écrans d'accueil
@@ -1914,6 +2956,34 @@ Si vous avez un fichier de sauvegarde des paramètres, vous pouvez l'import
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
@@ -2029,48 +3099,48 @@ Si vous avez un fichier de sauvegarde des paramètres, vous pouvez l'import
Erreur de conversion du champ %1
-
+
Switch
Interrupteur
-
+
Switch
L'interrupteur
-
+
cannot be exported on this board!
n'est pas supporté sur cette carte !
-
+
Source
-
+
Source %1 cannot be exported on this board!
La source %1 n'est pas supportée sur cette plateforme !
-
+
OpenTX only accepts %1 points in all curves
OpenTX n'accepte que %1 points au maximum entre toutes les courbes
-
+
OpenTx only accepts %1 points in all curves
OpenTX n'accepte que %1 points au maximum entre toutes les courbes
-
-
+
+
OpenTX on this board doesn't accept this function
OpenTX ne supporte pas cette fonction sur cette carte
-
+
OpenTX doesn't accept this radio protocol
OpenTX ne supporte pas ce protocole radio
@@ -2079,25 +3149,57 @@ Si vous avez un fichier de sauvegarde des paramètres, vous pouvez l'import
DebugOutput
-
+
+
+
+
+
+
+
+
+
Debug Output
Sortie débogage
-
+
+
+
+
+
+
+
+
+
<html><head/><body><p>Enable or disable the filter. If the button won't stay enabled, it is likely there is a syntax error in the Regular Expression entered.</p></body></html>
<html><head/><body><p>Activer ou désactiver le filtre. Si le bouton ne reste pas actif, c'est qu'il y a probablement une erreur dans la <i>Regular Expression</i>.</p></body></html>
-
+
+
+
+
+
+
+
+
+
Filter:
Filtre:
-
+
+
+
+
+
+
+
+
+
<html><head/><body><p>Enter filter text here. Click the help/info button for details about using the filter. </p><p>
To <b>remove a remembered entry</b> from the filter list, first choose it, and then press <code>Shift-Delete</code> (or <code>Shift-Backspace</code>) key combination.</p></body></html>
<html><head/><body><p>Entrer le filtre ici. Cliquer sur le bouton d'aide/info pour plus de détails sur l'utilisation du filtre. </p><p>
@@ -2105,61 +3207,141 @@ Pour <b>retirer un filtre de l'historique</b>, sélectionnez-le
-
+
+
+
+
+
+
+
+
+
Buffer:
Tampon:
-
+
+
+
+
+
+
+
+
+
Number of lines to keep in display.
Nombre de lignes du tampon.
-
+
+
+
+
+
+
+
+
+
Filter &Help
Filtre &Aide
-
+
+
+
+
+
+
+
+
+
Show information about using the filter.
Affiche les informations concernant l'usage du filtre.
-
+
+
+
+
+
+
+
+
+
Word &Wrap
Renvoi &Ligne
-
+
+
+
+
+
+
+
+
+
Toggle word wrapping on/off.
Retour automatique à la ligne on/off.
-
+
+
+
+
+
+
+
+
+
&Clear
&Effacer
-
+
+
+
+
+
+
+
+
+
Clear the output window of all text.
Effacer tout le texte dans la fenêtre de sortie.
-
+
+
+
+
+
+
+
+
+
Enable &Filter
Activer &Filtre
-
+
+
+
+
+
+
+
+
+
Turn the filter on/off.
Basculer le filtre on/off.
@@ -2178,6 +3360,13 @@ Pour <b>retirer un filtre de l'historique</b>, sélectionnez-le
DownloadDialog
+
+
+
+
+
+
+
Downloading:
Téléchargement:
@@ -2324,16 +3513,37 @@ Vérifier la sélection (M64/M128)
ExpoDialog
+
+
+
+
+
+
+
Weight
Ratio
+
+
+
+
+
+
+
Flight modes
Phases de vol
+
+
+
+
+
+
+
Input name
Nom de l'entrée
@@ -2341,41 +3551,111 @@ Vérifier la sélection (M64/M128)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
GV
VG
+
+
+
+
+
+
+
Switch
Interrupteur
+
+
+
+
+
+
+
Curve applied to the source.
Courbe appliquée à la source.
+
+
+
+
+
+
+
Source
+
+
+
+
+
+
+
Line name
Nom de la ligne
+
+
+
+
+
+
+
Stick Side
Direction
+
+
+
+
+
+
+
Source for the mixer.
La voie maître du mixage.
+
+
+
+
+
+
+
Switch used to enable the line.
If blank then the input is considered to be "ON" all the time.
Interrupteur utilisé pour activer la ligne.
@@ -2383,51 +3663,121 @@ Si vide, la ligne est toujours active.
+
+
+
+
+
+
+
Scale
Echelle
+
+
+
+
+
+
+
Include Trim
Inclure Trim
+
+
+
+
+
+
+
No
Non
+
+
+
+
+
+
+
Yes
Oui
+
+
+
+
+
+
+
Curve
Courbe
+
+
+
+
+
+
+
Offset
Décalage
+
+
+
+
+
+
+
The source for the mixer
La voie maître du mixage
+
+
+
+
+
+
+
NEG
Négative
+
+
+
+
+
+
+
POS
Positive
+
+
+
+
+
+
+
ALL
Les 2
@@ -3075,31 +4425,73 @@ Blanc signifie "inclure tous".Les métacaractères ?, * et [...] sont
FirmwarePreferencesDialog
+
+
+
+
+
+
+
Downloads
Téléchargements
+
+
+
+
+
+
+
Check for updates
Vérifier les mises à jour
+
+
+
+
+
+
+
Firmware
+
+
+
+
+
+
+
Download firmware
Télécharger firmware
+
+
+
+
+
+
+
Download SD contents
Télécharger carte SD
+
+
+
+
+
+
+
Latest Download
Dernière version téléchargée
@@ -3141,67 +4533,158 @@ Blanc signifie "inclure tous".Les métacaractères ?, * et [...] sont
FlashEEpromDialog
+
+
+
+
+
+
+
Write Models and Settings to Radio
Transférer les réglages et modèles vers la radio
+
+
+
+
+
+
+
Load...
Parcourir...
+
+
+
+
+
+
+
Current Profile
Profil courant
+
+
+
+
+
+
+
Allows Companion to write to older version of the firmware
Permet à Companion de transférer des réglages à une ancienne version de firmware
+
+
+
+
+
+
+
Check Firmware compatibility
Vérifier la compatibilité du firmware
+
+
+
+
+
+
+
<html><head/><body><p>Saves a dated copy of your eeprom to the backup folder you specified in the Companion settings before writing the current model to the radio.</p></body></html>
<html><head/><body><p>Enregistre une copie datée de votre eeprom actuelle dans le dossier de sauvegarde avant de transférer les modèles à la radio.</p></body></html>
+
+
+
+
+
+
+
Backup before Write
Sauvegarder les réglages actuels avant d'écrire
+
+
+
+
+
+
+
<html><head/><body><p>Modify calibration parameters using settings from current profile</p></body></html>
<html><head/><body><p>Charger l'étalonnage du profil courant</p></body></html>
+
+
+
+
+
+
+
Patch calibration setting from profile
Patcher l'étalonnage du profil courant
+
+
+
+
+
+
+
<html><head/><body><p>Modify HW parameters using settings from current profile</p></body></html>
<html><head/><body><p>Charger les paramètres hardware du profil courant</p></body></html>
+
+
+
+
+
+
+
Patch HW settings from profile
Patcher les paramètres hardware du profil courant
+
+
+
+
+
+
+
Cancel
Annuler
+
+
+
+
+
+
+
Write to TX
Transférer
@@ -3259,71 +4742,169 @@ Blanc signifie "inclure tous".Les métacaractères ?, * et [...] sont
FlashFirmwareDialog
+
+
+
+
+
+
+
Flash Firmware
Programmer le firmware
+
+
+
+
+
+
+
Load...
Parcourir...
+
+
+
+
+
+
+
Date & Time
Date et heure
+
+
+
+
+
+
+
Variant
Variante
+
+
+
+
+
+
+
Version
+
+
+
+
+
+
+
Use profile start screen
Utiliser l'écran d'accueil du profil
+
+
+
+
+
+
+
Use firmware start screen
Utiliser l'écran d'accueil du firmware
+
+
+
+
+
+
+
Use library start screen
Utiliser un écran d'accueil de la bibliothèque
+
+
+
+
+
+
+
Use another start screen
Utiliser un autre écran d'accueil
+
+
+
+
+
+
+
Allows Companion to write to older version of the firmware
Permet à Companion de transférer des réglages à une ancienne version de firmware
+
+
+
+
+
+
+
Check Hardware compatibility
Vérifier la compatibilité du hardware
+
+
+
+
+
+
+
Backup and restore Models and Settings
Sauvegarder et restaurer les réglages et modèles
+
+
+
+
+
+
+
Cancel
Annuler
+
+
+
+
+
+
+
Write to TX
Transférer
@@ -3523,21 +5104,49 @@ Vous utilisez actuellement:
FlightMode
+
+
+
+
+
+
+
Fade In
Fondu en entrée
+
+
+
+
+
+
+
Fade Out
Fondu en sortie
+
+
+
+
+
+
+
Name
Nom
+
+
+
+
+
+
+
Switch
Interrupteur
@@ -3727,11 +5336,25 @@ Vous utilisez actuellement:
FusesDialog
+
+
+
+
+
+
+
Fuses
Fusibles
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3761,11 +5384,25 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Read Fuses
Lire Fusibles
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3800,6 +5437,13 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Reset Fuses
EEPROM - PROTECT
Réinitialiser Fusibles
@@ -3807,6 +5451,13 @@ PROTECTION EEPROM
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3839,6 +5490,13 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Reset Fuses
EEPROM - DELETE
Réinitialiser Fusibles
@@ -3846,6 +5504,13 @@ EFFACEMENT EEPROM
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3927,11 +5592,25 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Radio settings
Réglages Radio
+
+
+
+
+
+
+
General settings used throught the transmitter.
These will be relevant for all models in the same EEPROM.
Paramètres généraux de l'émetteur.
@@ -3944,11 +5623,25 @@ Communs à tous les modèles d'une même EEPROM.
+
+
+
+
+
+
+
Store calib. and hw settings in selected profile
Sauver étalonnage et réglages hw dans profil
+
+
+
+
+
+
+
Retrieve calib. and hw settings from profile
Lire étalonnage et réglages hw du profil
@@ -4005,127 +5698,309 @@ Communs à tous les modèles d'une même EEPROM.
GeneralSetup
+
+
+
+
+
+
+
Form
Formulaire
+
+
+
+
+
+
+
Readonly Unlock
Débloquage lecture seule
+
+
+
+
+
+
+
SC
+
+
+
+
+
+
+
SE
+
+
+
+
+
+
+
SA
+
+
+
+
+
+
+
SF
+
+
+
+
+
+
+
SH
+
+
+
+
+
+
+
SD
+
+
+
+
+
+
+
SB
+
+
+
+
+
+
+
SG
+
+
+
+
+
+
+
Timeshift from UTC
Décalage horaire (UTC)
+
+
+
+
+
+
+
Voice Language
Langue des voix
+
+
+
+
+
+
+
Country Code
Zone géographique RF
+
+
+
+
+
+
+
Stick reverse
Inversion des manches
+
+
+
+
+
+
+
FAI Mode
Mode FAI
+
+
+
+
+
+
+
Adjust RTC
Ajuster l'heure par GPS
+
+
+
+
+
+
+
Vario pitch at max
Tonalité du vario au max
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Hz
+
+
+
+
+
+
+
Speaker Volume
Volume haut-parleur
+
+
+
+
+
+
+
Backlight Switch
Inter de rétroéclairage
+
+
+
+
+
+
+
Sound Mode
Mode Son
+
+
+
+
+
+
+
Color 1
Couleur 1
+
+
+
+
+
+
+
Color 2
Couleur 2
+
+
+
+
+
+
+
Speaker Pitch (spkr only)
Tonalité (HP uniquement)
+
+
+
+
+
+
+
If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds.
Si cette valeur est différente de 0, l'appui sur une touche de navigation déclenche le rétroéclairage qui s'éteint après la durée spécifiée (en secondes).
@@ -4133,82 +6008,209 @@ Communs à tous les modèles d'une même EEPROM.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
sec
+
+
+
+
+
+
+
Backlight color
Couleur du rétroéclairage
+
+
+
+
+
+
+
Beeper
Bipeur
+
+
+
+
+
+
+
Speaker
Haut-parleur
+
+
+
+
+
+
+
BeeperVoice
Bipeur/Voix
+
+
+
+
+
+
+
SpeakerVoice
Haut-parleur/Voix
+
+
+
+
+
+
+
Beep volume
Volume des bips
+
+
+
+
+
+
+
Wav volume
Volume des fichiers audio
+
+
+
+
+
+
+
Vario volume
Volume du variomètre
+
+
+
+
+
+
+
Background volume
Volume de la musique d'ambiance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ms
+
+
+
+
+
+
+
Backlight Auto OFF after
Arrêt rétroéclairage après
+
+
+
+
+
+
+
Backlight flash on alarm
Clignotement rétroécl. alarmes
+
+
+
+
+
+
+
Vario pitch at zero
Tonalité du vario à 0
+
+
+
+
+
+
+
Vario repeat at zero
Répétition du vario à 0
+
+
+
+
+
+
+
This is the switch selectrion for turning on the backlight (if installed).
@@ -4217,6 +6219,20 @@ Communs à tous les modèles d'une même EEPROM.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -4232,41 +6248,97 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Backlight Brightness
Luminosité du rétroéclairage
+
+
+
+
+
+
+
RotEnc Navigation
Navigation sélecteur rotatif
+
+
+
+
+
+
+
Automatically adjust the radio's clock if a GPS is connected to telemetry.
Régle automatique l'heure de la radio si un GPS est présent.
+
+
+
+
+
+
+
America
Amérique
+
+
+
+
+
+
+
Japan
Japon
+
+
+
+
+
+
+
Europe
+
+
+
+
+
+
+
Backlight OFF Brightness
Luminosité écran éteint
+
+
+
+
+
+
+
Mode selection:
Mode 1:
@@ -4308,336 +6380,824 @@ Mode 4:
+
+
+
+
+
+
+
Mode 1 (RUD ELE THR AIL)
Mode 1 (DIR PRF GAZ AIL)
+
+
+
+
+
+
+
Mode 2 (RUD THR ELE AIL)
Mode 2 (DIR GAZ PRF AIL)
+
+
+
+
+
+
+
Mode 3 (AIL ELE THR RUD)
Mode 3 (AIL PRF GAZ DIR)
+
+
+
+
+
+
+
Mode 4 (AIL THR ELE RUD)
Mode 4 (AIL GAZ PRF DIR)
+
+
+
+
+
+
+
<html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html>
<html><head/><body><p>Ordre des voies</p><p><br/></p><p>Détermine l'ordre des mixages par défaut sur un nouveau modèle.</p></body></html>
+
+
+
+
+
+
+
If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio.
Si vous activez l'option FAI, seuls les capteurs RSSI et BtRx vont fonctionner. Cette fonction ne peut pas être désactivée sur la radio.
+
+
+
+
Owner Registration ID
Enregistrement ID du propriétaire
+
+
+
+
aaaaaaAA
+
+
+
+
+
+
+
R E T A
D P G A
+
+
+
+
+
+
+
R E A T
D P A G
+
+
+
+
+
+
+
R T E A
D G P A
+
+
+
+
+
+
+
R T A E
D G A P
+
+
+
+
+
+
+
R A E T
D A P G
+
+
+
+
+
+
+
R A T E
D A G P
+
+
+
+
+
+
+
E R T A
P D G A
+
+
+
+
+
+
+
E R A T
P D A G
+
+
+
+
+
+
+
E T R A
P G D A
+
+
+
+
+
+
+
E T A R
P G A D
+
+
+
+
+
+
+
E A R T
P A D G
+
+
+
+
+
+
+
E A T R
P A G D
+
+
+
+
+
+
+
T R E A
G D P A
+
+
+
+
+
+
+
T R A E
G D A P
+
+
+
+
+
+
+
T E R A
G P D A
+
+
+
+
+
+
+
T E A R
G P A D
+
+
+
+
+
+
+
T A R E
G A D P
+
+
+
+
+
+
+
T A E R
G A P D
+
+
+
+
+
+
+
A R E T
A D P G
+
+
+
+
+
+
+
A R T E
A D G P
+
+
+
+
+
+
+
A E R T
A P D G
+
+
+
+
+
+
+
A E T R
A P G D
+
+
+
+
+
+
+
A T R E
A G D P
+
+
+
+
+
+
+
A T E R
A G P D
+
+
+
+
Power Off Delay
Délai mise hors tension
+
+
+
+
+
+
+
USB Mode
Mode USB
+
+
+
+
+
+
+
Jack Mode
Mode Jack
+
+
+
+
+
+
+
Audio
+
+
+
+
+
+
+
Trainer
Écolage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Ask on Connect
Demander à la connexion
+
+
+
+
+
+
+
Joystick (HID)
+
+
+
+
+
+
+
USB Mass Storage
Stockage USB (SD)
+
+
+
+
+
+
+
USB Serial (CDC)
Port série USB (Debug)
+
+
+
+
+
+
+
Stick Mode
Mode
+
+
+
+
+
+
+
Metric
Métrique
+
+
+
+
+
+
+
Imperial
Impérial
+
+
+
+
+
+
+
Default Channel Order
Ordre des voies par défaut
+
+
+
+
+
+
+
GPS Coordinates
Coordonnées GPS
+
+
+
+
+
+
+
Min
+
+
+
+
+
+
+
+
+
+
+
+
+
+
v
+
+
+
+
+
+
+
Max
+
+
+
+
+
+
+
RSSI Poweroff Warning
Vérifier RSSI à l'extinction
+
+
+
+
+
+
+
DMS
+
+
+
+
+
+
+
Inactivity Timer
Alerte d'inactivité
+
+
+
+
+
+
+
Show Splash Screen on Startup
Afficher l'écran de démarrage
+
+
+
+
+
+
+
Contrast
Contraste
+
+
+
+
+
+
+
Battery Meter Range
Plage de l'indicateur de batterie
+
+
+
+
+
+
+
Haptic Strength
Puissance vibreur
+
+
+
+
+
+
+
LCD Display Type
Type de LCD
+
+
+
+
+
+
+
"No Sound" Warning
Alerte "son coupé"
+
+
+
+
+
+
+
Battery Warning
Alerte batterie
+
+
+
+
+
+
+
Haptic Length
Durée vibreur
+
+
+
+
+
+
+
MAVLink Baud Rate
Baudrate Mavlink
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Quiet
Mode silencieux
+
+
+
+
+
+
+
Only Alarms
Seulement les alarmes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
No Keys
Touches silencieuses
+
+
+
+
+
+
+
+
+
+
+
+
+
+
All
Tous
+
+
+
+
+
+
+
Battery warning voltage.
This is the threashhold where the battery warning sounds.
@@ -4649,113 +7209,271 @@ Plage de valeurs: 5v...10v
+
+
+
+
+
+
+
Standard
+
+
+
+
+
+
+
Optrex
+
+
+
+
+
+
+
If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes.
Si différent de 0, émission d'un bip sonore régulier si aucune action n'a été effectuée sur l'émetteur depuis le temps spécifié (en minutes).
Réinitialisation en agissant sur n'importe lequel des manches / touches de navigation.
+
+
+
+
+
+
+
min
+
+
+
+
Power On Delay
Délai mise sous tension
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Show splash screen on startup
Affiche l'écran d'accueil au démarrage
+
+
+
+
+
+
+
---
+
+
+
+
+
+
+
2s
+
+
+
+
+
+
+
3s
+
+
+
+
+
+
+
4s
+
+
+
+
+
+
+
6s
+
+
+
+
+
+
+
8s
+
+
+
+
+
+
+
10s
+
+
+
+
+
+
+
15s
+
+
+
+
+
+
+
4800 Baud
+
+
+
+
+
+
+
9600 Baud
+
+
+
+
+
+
+
14400 Baud
+
+
+
+
+
+
+
19200 Baud
+
+
+
+
+
+
+
38400 Baud
+
+
+
+
+
+
+
57600 Baud
+
+
+
+
+
+
+
76800 Baud
+
+
+
+
+
+
+
115200 Baud
@@ -4763,6 +7481,27 @@ Réinitialisation en agissant sur n'importe lequel des manches / touches de
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -4789,70 +7528,196 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
X-Short
Très court
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Short
Court
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Normal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Long
+
+
+
+
+
+
+
+
+
+
+
+
+
+
X-Long
Très long
+
+
+
+
+
+
+
Low EEPROM Warning
Avertissement EEPROM faible
+
+
+
+
+
+
+
NMEA
+
+
+
+
+
+
+
Play Delay (switch mid position)
Délai position centrale inters
+
+
+
+
+
+
+
Measurement Units
Unités de mesure
+
+
+
+
+
+
+
Haptic Mode
Mode du vibreur
+
+
+
+
+
+
+
Beeper Length
Durée des bips
+
+
+
+
+
+
+
Beeper Mode
Réglage des bips
+
+
+
+
+
+
+
Beeper volume
0 - Quiet. No beeps at all.
@@ -4870,9 +7735,26 @@ Extra long : bips extra longs.
+
+
+
+
+
+
+
Alarms Only
Seulement les Alarmes
+
+
+ Power On Speed
+
+
+
+
+ Power Off Speed
+
+
GeneralSetupPanel
@@ -5028,251 +7910,595 @@ Cette fonction ne peut pas être désactivée sur la radio.
Hardware
+
+
+
+
+
+
+
Form
Formulaire
+
+
+
+
+
+
+
SQ
+
+
+
+
+
+
+
SR
+
+
+
+
+
+
+
LS2
+
+
+
+
+
+
+
SP
+
+
+
+
+
+
+
SO
+
+
+
+
+
+
+
S4
+
+
+
+
+
+
+
RS
+
+
+
+
+
+
+
SB
+
+
+
+
+
+
+
PPM 2
+
+
+
Antenna
Antenne
+
+
+
+
+
+
+
OFF
Eteint
+
+
+
+
+
+
+
S-Port Mirror
Recopie S. Port
+
+
+
+
+
+
+
Telemetry
Télémetrie
+
+
+
+
+
+
+
SBUS Trainer
Écolage SBUS
+
+
+
+
+
+
+
Debug
Débogage
+
+
+
+
+
S5
+
+
+
+
+
+
+
Rud
Dir
+
+
+
+
+
+
+
PPM 3
+
+
+
+
+
+
+
S1
+
+
+
+
+
+
+
S2
+
+
+
+
+
+
+
S3
+
+
+
+
+
+
+
PPM 1
+
+
+
+
+
+
+
Serial Port
Port série
+
+
+
+
+
+
+
v
+
+
+
+
+
+
+
PPM Multiplier
Coeff. multiplicateur PPM
+
+
+
+
+
+
+
Current Offset
Correction courant
+
+
+
+
+
+
+
PPM 4
+
+
+
+
+
+
+
SA
+
+
+
+
+
+
+
Ele
Prf
+
+
+
+
+
+
+
Ail
Ail
+
+
+
+
+
+
+
Thr
Gaz
+
+
+
+
+
+
+
SC
+
+
+
+
+
+
+
LS
+
+
+
+
+
+
+
SD
+
+
+
+
+
+
+
Battery Offset
Correction tension
+
+
+
+
+
+
+
SE
+
+
+
+
+
+
+
SF
+
+
+
+
+
+
+
SG
+
+
+
+
+
+
+
SH
+
+
+
+
+
+
+
SI
+
+
+
+
+
+
+
SJ
+
+
+
+
+
+
+
SK
+
+
+
+
+
+
+
SL
+
+
+
+
+
+
+
SM
+
+
+
+
+
+
+
SN
+
+
+
+
+
+
+
RS2
+
+
+
+
+
+
+
Bluetooth
+
+
+
+
+
+
+
ADC Filter
Filtre ADC
+
+
+
+
+
+
+
Device Name:
Nom de l'appareil:
@@ -5371,71 +8597,169 @@ Cette fonction ne peut pas être désactivée sur la radio.
Heli
+
+
+
+
+
+
+
Invert Elevator
Profondeur
+
+
+
+
+
+
+
Invert Aileron
Aileron
+
+
+
+
+
+
+
Invert Collective
Pas collectif
+
+
+
+
+
+
+
Invert
Inversion
+
+
+
+
+
+
+
Off
Aucun
+
+
+
+
+
+
+
120
+
+
+
+
+
+
+
120X
+
+
+
+
+
+
+
140
+
+
+
+
+
+
+
90
+
+
+
+
+
+
+
Long. cyc
Cyc. longitudinal
+
+
+
+
+
+
+
Lateral cyc
Cyc. latéral
+
+
+
+
+
+
+
Collective
Source du pas collectif
+
+
+
+
+
+
+
Swash Type
Type de plateau cyclique
+
+
+
+
+
+
+
Swash Ring
Limite cyclique
@@ -5828,46 +9152,109 @@ Cette fonction ne peut pas être désactivée sur la radio.
LogsDialog
+
+
+
+
+
+
+
Companion Log Viewer
Visualiseur de Log
+
+
+
+
+
+
+
Filename
Nom de fichier
+
+
+
+
+
+
+
Open LogFile
Ouvrir fichier de Log
+
+
+
+
+
+
+
Zoom
+
+
+
+
+
+
+
Save session CSV
Sauvegarder la session CSV
+
+
+
+
+
+
+
X
+
+
+
+
+
+
+
Y
+
+
+
+
+
+
+
Reset
Remise à zéro
+
+
+
+
+
+
+
Fly sessions
Sessions de vol
@@ -7373,41 +10760,97 @@ Enregistrer les changements ?
MixerDialog
+
+
+
+
+
+
+
Up
Haut
+
+
+
+
+
+
+
ADD
+= Ajouter
+
+
+
+
+
+
+
OFF
+
+
+
+
+
+
+
Down
Bas
+
+
+
+
+
+
+
Slow
Ralenti
+
+
+
+
+
+
+
Delay
Délai
+
+
+
+
+
+
+
Curve
Courbe
+
+
+
+
+
+
+
Multiplexer
This determines how mixer values are added.
@@ -7425,6 +10868,13 @@ Spécifie comment les valeurs de mixage sont interprétées.
+
+
+
+
+
+
+
The curve used by the mix
Courbe utilisée par le mixage
@@ -7432,21 +10882,63 @@ Spécifie comment les valeurs de mixage sont interprétées.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
GV
VG
+
+
+
+
+
+
+
Yes
Oui
+
+
+
+
+
+
+
No
Non
+
+
+
+
+
+
+
Mixer warning.
Setting this value will cause a beep to be emmitted when this value is active.
Alerte de mixage.
@@ -7454,26 +10946,59 @@ Si activée, signale par des bips que le mixage est actif.
+
+
+
+
+
+
+
1 Beep
1 Bip
+
+
+
+
+
+
+
2 Beep
2 Bips
+
+
+
+
+
+
+
3 Beep
3 Bips
+
+
+
+
+
+
+
Multiplex
Multiplexage
+
+
+
+
+
Dialog
Dialogue
@@ -7482,6 +11007,34 @@ Si activée, signale par des bips que le mixage est actif.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -7507,26 +11060,61 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Offset
Décalage
+
+
+
+
+
+
+
Source
Source
+
+
+
+
+
+
+
Switch
Interrupteur
+
+
+
+
+
+
+
Weight
Ratio
+
+
+
+
+
+
+
REPLACE
:= Remplacer
@@ -7535,16 +11123,58 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The source for the mixer
La source du mixage
+
+
+
+
+
+
+
MULTIPLY
*= Multiplier
+
+
+
+
+
+
+
Switch used by the mix.
If blank then the mix is considered to be "ON" all the time.
Interrupteur utilisé par le mixage.
@@ -7552,11 +11182,25 @@ Mixage actif par défaut si non-renseigné.
+
+
+
+
+
+
+
Warning
Avertissement
+
+
+
+
+
+
+
Name
Nom
@@ -7587,19 +11231,46 @@ Mixage actif par défaut si non-renseigné.
+
+
+
+
+
+
+
Include Trim
Inclure Trim
+
+
+
+
+
+
+
Flight modes
Phases de vol
+
+
+
+
+
+
+
Include DR/Expo
Inclure DR/Expo
+
+
+
+ FullScreenDialog
+
+
MixersListWidget
@@ -7773,6 +11444,13 @@ Mixage actif par défaut si non-renseigné.
ModelEdit
+
+
+
+
+
+
+
Simulate
Simulation
@@ -7808,6 +11486,11 @@ Mixage actif par défaut si non-renseigné.
+
+
+
+
+
Dialog
Dialogue
@@ -7831,6 +11514,12 @@ Mixage actif par défaut si non-renseigné.
Telemetry
Télémesure
+
+
+
+ FullScreenDialog
+
+
ModelPrinter
@@ -8649,123 +12338,288 @@ Mixage actif par défaut si non-renseigné.
Module
+
+
+
+
+
+
+
Failsafe Mode
Mode Failsafe
+
+
+
+
+
+
+
Start
1ère voie
+
+
+
+
+
+
+
PPM delay
Impulsion
+
+
+
+
+
+
+
Negative
Négative
+
+
+
+
+
+
+
Positive
+
+
+
+
+
+
+
Polarity
Polarité
+
+
+
+
+
+
+
Trainer Mode
Mode écolage
+
+
+
+
+
+
+
PPM Frame Length
Longueur de trame PPM
+
+
+
+
+
+
+
CH
VOIE
+
+
+
+
+
+
+
Antenna
Antenne
+
+
+
+
+
+
+
Option value
+
+
+
+
+
+
+
us
µs
+
+
+
+
+
+
+
Master/Jack
Maître/Jack
+
+
+
+
+
+
+
Slave/Jack
Elève/Jack
+
+
+
+
+
+
+
Master/SBUS Module
Maître/SBUS module
+
+
+
+
+
+
+
Master/CPPM Module
Maître/CPPM Module
+
+
+
+
+
+
+
Master/SBUS in battery compartment
Maître/SBUS dans compartiment batterie
+
+
+
+
+
+
+
RF Output Power
Puissance RF
+
+
+
+
+
+
+
Sub Type
Sous-Type
+
+
+
+
+
+
+
Show values in:
Afficher les valeurs en:
+
+
+
+
+
+
+
%
abbreviation for percent
+
+
+
+
+
+
+
μs
abbreviation for microseconds
+
+
+
+
+
+
+
ms
+
+
+
+
Receiver 1
Récepteur 1
@@ -8773,109 +12627,268 @@ Mixage actif par défaut si non-renseigné.
+
+
+
+
+
+
+
+
+
+
+
+
X
+
+
+
+
Receiver 2
Récepteur 2
+
+
+
+
Receiver 3
Récepteur 3
+
+
+
+
+
+
+
WARNING: changing RF Output Power needs RE-BIND
ATTENTION: RE-BIND nécessaire pour tout changement de puissance RF
+
+
+
+
+
+
+
Channels
Nb de voies
+
+
+
+
+
+
+
Not set
Non défini
+
+
+
+
+
+
+
Hold
Maintien
+
+
+
+
+
+
+
Custom
Prédéfini
+
+
+
+
+
+
+
No Pulses
Pas d'impulsions
+
+
+
+
+
+
+
Receiver
Récepteur
+
+
+
+
+
+
+
WARNING: Requires non-certified firmware!
ATTENTION: Nécessite un firmware non certifié!
+
+
+
+
Registration ID
ID d'enregistrement
+
+
+
+
+
+
+
Failsafe Positions
Positions Failsafe
+
+
+
+
+
+
+
Protocol
Protocole
+
+
+
+
+
+
+
Multi Radio Protocol
Protocole Multi
+
+
+
+
+
+
+
Receiver No.
Récepteur No.
+
+
+
+
+
+
+
Output type
Type de sortie
+
+
+
+
+
+
+
Open Drain
+
+
+
+
+
+
+
Push Pull
+
+
+
+
+
+
+
Bind on startup
Bind au démarage
+
+
+
+
+
+
+
Low Power
Puissance Réduite
+
+
+
+
+
+ Internal
+ Interne
+
+
+
+
+
+
+ Ext. + Int.
+
+
ModuleData
@@ -9615,21 +13628,49 @@ Mixage actif par défaut si non-renseigné.
PrintDialog
+
+
+
+
+
+
+
Close
Fermer
+
+
+
+
+
+
+
Style
+
+
+
+
+
+
+
Print
Imprimer
+
+
+
+
+
+
+
Print to file
Imprimer vers un fichier
@@ -9653,11 +13694,25 @@ Mixage actif par défaut si non-renseigné.
ProgressDialog
+
+
+
+
+
+
+
Flash Firmware
Flasher le firmware
+
+
+
+
+
+
+
Close
Fermer
@@ -9672,6 +13727,13 @@ Mixage actif par défaut si non-renseigné.
ProgressWidget
+
+
+
+
+
+
+
Show Details
Voir les détails
@@ -9825,16 +13887,37 @@ Mixage actif par défaut si non-renseigné.
RadioNotFoundDialog
+
+
+
+
+
+
+
No Radio Found
Radio non détectée
+
+
+
+
+
+
+
<html><head/><body><p>No Radio was found!</p><p>Make sure that you hold the lower trim buttons towards the center while you turn it on.</p><p>Then connect the USB wire.</p><p><span style=" font-family:'arial,sans-serif'; font-size:13px; font-style:italic; color:#222222; background-color:#ffffff;">Note: if you have a Taranis that has not had the firmware upgraded to 2.0 then this version of Companion will not work.</span></p></body></html>
<html><head/><body><p>Aucune radio détectée !</p><p>Veuillez vous assurer de maintenir les 2 trims horizontaux vers l'intérieur lors de la mise sous tension de la radio.</p><p>Ensuite connecter le câble USB.</p><p><span style=" font-family:'arial,sans-serif'; font-size:13px; font-style:italic; color:#222222; background-color:#ffffff;">Note: Cette version de Companion ne doit être utilisée pour éditer des réglages que si la version du firmware de la radio est au moins 2.0.</span></p></body></html>
+
+
+
+
+
+
+
OK
@@ -9843,43 +13926,99 @@ Mixage actif par défaut si non-renseigné.
RadioOutputsWidget
-
+
+
+
+
+
+
+
+
+
Form
Formulaire
-
+
+
+
+
+
+
+
+
+
View:
Vue:
-
+
+
+
+
+
+
+
+
+
Logical Switches
Inters Logiques
-
+
+
+
+
+
+
+
+
+
Global Variables
Variables Globales
-
+
+
+
+
+
+
+
+
+
Channel Outputs
Sorties Voies
-
+
+
+
+
+
+
+
+
+
Mix Outputs
Sorties Mixages
-
+
+
+
+
+
+
+
+
+
L
o
g
@@ -9890,7 +14029,15 @@ L
-
+
+
+
+
+
+
+
+
+
G
l
o
@@ -9902,7 +14049,15 @@ G
-
+
+
+
+
+
+
+
+
+
C
h
a
@@ -9918,7 +14073,15 @@ E
-
+
+
+
+
+
+
+
+
+
M
i
x
@@ -10763,161 +14926,385 @@ E
Setup
+
+
+
+
+
+
+
Center beep
Bip de centrage
+
+
+
+
+
+
+
OFF
+
+
+
+
+
+
+
Model Image
Image du modèle
+
+
+
+
+
+
+
Exponential
Exponentiel
+
+
+
+
+
+
+
Throttle Trim Idle Only
Trim ralenti uniquement
+
+
+
+
+
+
+
Timer 3
Chrono 3
+
+
+
+
+
+
+
Extra Fine
Extra fin
+
+
+
+
+
+
+
Fine
Fin
+
+
+
+
+
+
+
Medium
Moyen
+
+
+
+
+
+
+
Coarse
Grossier
+
+
+
+
+
+
+
Display Checklist
Afficher la checklist
+
+
+
+
+
+
+
Timer 2
Chrono 2
+
+
+
+
+
+
+
Timer 1
Chrono 1
+
+
+
+
+
+
+
Never
Jamais
+
+
+
+
+
+
+
On change
Au changement
+
+
+
+
+
+
+
Always
Toujours
+
+
+
+
+
+
+
Global Functions
Fonctions globales
+
+
+
+
+
+
+
Edit Checklist...
Éditer Checklist...
+
+
+
+
+
+
+
Throttle Source
Source des gaz
+
+
+
+
+
+
+
Trim Step
Pas des trims
+
+
+
+
+
+
+
Trims Display
Affichage des trims
+
+
+
+
+
+
+
Warnings
Avertissements
+
+
+
+
+
+
+
Top LCD Timer
Chrono LCD supérieur
+
+
+
+
+
+
+
Switch Warnings
Positions des interrupteurs
+
+
+
+
+
+
+
Pot Warnings
Positions des potentiomètres
+
+
+
+
+
+
+
Manual
Manuel
+
+
+
+
+
+
+
Auto
+
+
+
+
+
+
+
Model
Modèle
+
+
+
+
+
+
+
Extended Limits
Débattements étendus
+
+
+
+
+
+
+
Extended Trims
Trims étendus
+
+
+
+
+
+
+
Throttle Warning
Alerte gaz
+
+
+
+
+
+
+
Reverse throttle operation.
If this is checked the throttle will be reversed. Idle will be forward, trim will also be reversed and the throttle warning will be reversed as well.
@@ -10929,6 +15316,13 @@ Si cette option est cochée, la voie des gaz est inversée: le ralenti est &apo
+
+
+
+
+
+
+
Reverse Throttle
Gaz inversés
@@ -11301,181 +15695,421 @@ Profil ID: [%1]; Radio ID: [%2]
SimulatorMainWindow
-
+
+
+
+
+
+
+
+
+
OpenTx Simulator
Simulateur OpenTX
-
+
+
+
+
+
+
+
+
+
View
Vue
-
+
+
+
+
+
+
+
+
+
Radio Window
Fenêtre radio
-
+
+
+
+
+
+
+
+
+
Reload...
Recharger...
-
+
+
+
+
+
+
+
+
+
Tools
Outils
-
+
+
+
+
+
+
+
+
+
Toolbar
Barre d'outils
-
+
+
+
+
+
+
+
+
+
Reload Lua Scripts
Recharger le script Lua
-
+
+
+
+
+
+
+
+
+
Reload the Lua environment on the simulated radio.
Recharger l'environnement Lua dans le simulateur.
-
+
+
+
+
+
+
+
+
+
F7
-
+
+
+
+
+
+
+
+
+
Reload Radio Data
Recharger les données radio
-
+
+
+
+
+
+
+
+
+
Reload all radio data without restarting the simulator.
Recharger les données radio sans redémarrer le simulateur.
-
+
+
+
+
+
+
+
+
+
F9
-
+
+
+
+
+
+
+
+
+
Key Mapping
Raccourcis clavier
-
+
+
+
+
+
+
+
+
+
Show keyboard maping reference.
Afficher les raccourcis clavier.
-
+
+
+
+
+
+
+
+
+
F1
-
+
+
+
+
+
+
+
+
+
Joystick Settings
Paramètres Joystick
-
+
+
+
+
+
+
+
+
+
Open joystick configuration settings dialog.
Ouvrir la boite de dialogue de la configuration du Joystick.
-
+
+
+
+
+
+
+
+
+
F3
-
+
+
+
+
+
+
+
+
+
LCD Screenshot
Capture LCD
-
+
+
+
+
+
+
+
+
+
Save a screenshot of the current simulated LCD screen.
Enregistrez une capture de l'écran LCD actuellement simulé.
-
+
+
+
+
+
+
+
+
+
F8
-
+
+
+
+
+
+
+
+
+
Dock In Main Window
Ancrer dans la fenêtre principale
-
+
+
+
+
+
+
+
+
+
Show the radio in the main window or as a separate "floating" window.
Afficher la radio dans la fenêtre principale ou comme une fenêtre "flottante" séparée.
-
+
+
+
+
+
+
+
+
+
Menu Bar
Barre de menus
-
+
+
+
+
+
+
+
+
+
Show or hide the top menu bar.
Afficher ou masquer la barre de menus.
-
+
+
+
+
+
+
+
+
+
Alt+M
-
+
+
+
+
+
+
+
+
+
Constrain Width
Contraindre la largeur
-
+
+
+
+
+
+
+
+
+
Set radio widget width to be a fixed size.
Défini la largeur du widget radio comme étant une taille fixe.
-
+
+
+
+
+
+
+
+
+
Constrain Height
Contraindre la hauteur
-
+
+
+
+
+
+
+
+
+
Set radio widget height to be a fixed size.
Défini la hauteur du widget radio comme étant une taille fixe.
@@ -11556,25 +16190,57 @@ Profil ID: [%1]; Radio ID: [%2]
SimulatorStartupDialog
-
+
+
+
+
+
+
+
+
+
OpenTX Simulator - Startup Options
Simulateur OpenTX - Options de démarrage
-
+
+
+
+
+
+
+
+
+
Simulator Startup Options:
Options de démarrage:
-
+
+
+
+
+
+
+
+
+
Radio Profile:
Profil Radio:
-
+
+
+
+
+
+
+
+
+
Existing radio profiles are shown here.<br />
Create or edit profiles using the Companion application.
Les profils existants sont affichés ici.<br />
@@ -11582,13 +16248,29 @@ Créer ou éditer les profils avec l'application Companion.
-
+
+
+
+
+
+
+
+
+
Radio Type:
Type de Radio:
-
+
+
+
+
+
+
+
+
+
Existing radio simulators are shown here.<br />
The radio type specified in the selected profile is used by default.
Les simulateurs radios existants sont affichés ici.<br />
@@ -11596,31 +16278,71 @@ Le type de radio choisi par défaut est celui défini dans le profil selectionn
-
+
+
+
+
+
+
+
+
+
Data Source:
Source Données:
-
+
+
+
+
+
+
+
+
+
Data File:
Fichier Données:
-
+
+
+
+
+
+
+
+
+
Data Folder:
Dossier Données:
-
+
+
+
+
+
+
+
+
+
SD Image Path:
Dossier Image SD:
-
+
+
+
+
+
+
+
+
+
Radio data (.bin/.eeprom/.otx) image file to use. A new file with a default image will be created if necessary.<br />
<b>NOTE</b>: any existing EEPROM data incompatible with the selected radio type may be overwritten!
Fichier de données utilisé (.bin/.eeprom/.otx).Un nouveau fichier avec une nouvelle image sera créé si nécessaire.<br />
@@ -11628,7 +16350,15 @@ Le type de radio choisi par défaut est celui défini dans le profil selectionn
-
+
+
+
+
+
+
+
+
+
Select data file...
Choisir le fichier de données...
@@ -11636,15 +16366,47 @@ Le type de radio choisi par défaut est celui défini dans le profil selectionn
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
-
+
+
+
+
+
+
+
+
+
Directory containing RADIO and MODELS folders to use.<br />
New folder(s) with default radio/model will be created here if necessary.
Chemin contenant les dossiers RADIO et MODELS à utiliser.<br />
@@ -11652,13 +16414,29 @@ Un (ou plusieurs) dossier peut être créé ici si nécessaire.
-
+
+
+
+
+
+
+
+
+
Select data folder...
Sélectionner le dossier de données...
-
+
+
+
+
+
+
+
+
+
Directory containing the SD card image to use.<br/>
The default is configured in the chosen Radio Profile.
Dossier contenant l'image de la carte SD.<br/>
@@ -11666,31 +16444,71 @@ La valeur par défaut est configurée dans le profil radio sélectionné.
-
+
+
+
+
+
+
+
+
+
Select SD card image folder...
Choisir le dossier contenant l'image de la carte SD...
-
+
+
+
+
+
+
+
+
+
Select which of the data sources (File/Folder/SD Card) you would like to start the simulator with.
Choisir la source (Fichier/Dossier/Image SD) du type de donnée utilisé par le simulateur.
-
+
+
+
+
+
+
+
+
+
File
Fichier
-
+
+
+
+
+
+
+
+
+
Folder
Dossier
-
+
+
+
+
+
+
+
+
+
SD Path
Image SD
@@ -11719,7 +16537,15 @@ La valeur par défaut est configurée dans le profil radio sélectionné.SimulatorWidget
-
+
+
+
+
+
+
+
+
+
Companion Simulator
Simulateur Companion
@@ -11807,6 +16633,20 @@ La valeur par défaut est configurée dans le profil radio sélectionné.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
@@ -11846,6 +16686,13 @@ La valeur par défaut est configurée dans le profil radio sélectionné.StyleEditDialog
+
+
+
+
+
+
+
@@ -11854,21 +16701,49 @@ La valeur par défaut est configurée dans le profil radio sélectionné.
+
+
+
+
+
+
+
&Reset to default
&Réglages par défaut
+
+
+
+
+
+
+
&Cancel
&Annuler
+
+
+
+
+
+
+
&OK
+
+
+
+
+
+
+
This feature does not validate your changes and assumes you are familiar with CSS syntax for QT.
Cet éditeur ne vérifie/valide pas vos modifications.
Vous devez connaitre la syntaxe CSS pour QT.
@@ -12134,190 +17009,475 @@ Trop d'erreurs, abandon.
Telemetry
+
+
+
+
+
+
+
A1
+
+
+
+
+
+
+
A2
+
+
+
+
+
+
+
RSSI
+
+
+
+
+
+
+
Alarm 1
Alarme 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
----
----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Yellow
Jaune
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Orange
Orange
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Red
Rouge
+
+
+
+
+
+
+
Alarm 2
Alarme 2
+
+
+
+
+
+
+
Serial Protocol
Protocole Série
+
+
+
+
+
+
+
Volt source
Source de mesure de tension
+
+
+
+
+
+
+
Current source
Source de mesure de courant
+
+
+
+
+
+
+
Protocol
Protocole
+
+
+
+
+
+
+
None
Aucun
+
+
+
+
+
+
+
FrSky Sensor Hub
Sensor Hub FrSky
+
+
+
+
+
+
+
Blades
Pales
+
+
+
+
+
+
+
Sink Max
Chute max
+
+
+
+
+
+
+
Climb Max
Montée max
+
+
+
+
+
+
+
Sink Min
Chute min
+
+
+
+
+
+
+
Climb Min
Montée min
+
+
+
+
+
+
+
Center Silent
Neutre silencieux
+
+
+
+
+
+
+
Vario source
Source vario
+
+
+
+
+
+
+
Vario limits
Limites vario
+
+
+
+
+
+
+
Disable telemetry audio warnings
Désactiver les avertissements audio de la télémétrie
+
+
+
+
+
Source
+
+
+
+
+
+
+
Altimetry
Altitude
+
+
+
+
+
+
+
Altitude source
Source de l'altitude
+
+
+
+
+
+
+
Volts source
Source de la tension
+
+
+
+
+
+
+
Top Bar
Barre de titre de l'écran d'accueil
+
+
+
+
+
+
+
mAh
+
+
+
+
+
+
+
A
+
+
+
+
+
+
+
Various
Divers
+
+
+
+
+
+
+
Sensors
Capteurs
+
+
+
+
+
+
+
Disable multi sensor handling
Désactiver la gestion des capteurs multiples
+
+
+
+
+
+
+
mAh count
Valeur enregistrée
+
+
+
+
+
+
+
FAS Offset
Décalage FAS
+
+
+
+
+
+
+
Persistent mAh
Mémorisation des mAh
@@ -12326,107 +17486,289 @@ Trop d'erreurs, abandon.
TelemetryAnalog
+
+
+
+
+
+
+
Unit
Unité
+
+
+
+
+
+
+
Max Value
Valeur Max
+
+
+
+
+
+
+
Alarm 1
Alarme 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Yellow
Jaune
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Orange
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Red
Rouge
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<
+
+
+
+
+
+
+
+
+
+
+
+
+
+
>
+
+
+
+
+
+
+
Alarm 2
Alarme 2
+
+
+
+
+
+
+
Offset
Décalage
+
+
+
+
+
+
+
Volts (V)
Tension (V)
+
+
+
+
+
+
+
Amps (A)
Courant (A)
+
+
+
+
+
+
+
Speed (m/s or ft/s)
Vitesse (m/s ou ft/s)
+
+
+
+
+
+
+
Raw (-)
Chiffres bruts (-)
+
+
+
+
+
+
+
Speed (km/h or miles/h)
Vitesse (km/h ou miles/h)
+
+
+
+
+
+
+
Meters (m or ft)
Distance (m ou ft)
+
+
+
+
+
+
+
Temp (°)
Température (°)
+
+
+
+
+
+
+
Fuel (%)
Carburant (%)
+
+
+
+
+
+
+
mAmps (mA)
Courant (mA)
@@ -12440,6 +17782,13 @@ Trop d'erreurs, abandon.
TelemetryCustomScreen
+
+
+
+
+
+
+
Custom Screen Type
Type d'écran personnalisé
@@ -12465,21 +17814,49 @@ Trop d'erreurs, abandon.
+
+
+
+
+
+
+
Min
+
+
+
+
+
+
+
Source
+
+
+
+
+
+
+
Gauge
Jauge
+
+
+
+
+
+
+
Max
@@ -12593,86 +17970,199 @@ Trop d'erreurs, abandon.
TelemetrySensor
+
+
+
+
+
+
+
Form
Formulaire
+
+
+
+
+
+
+
Custom
Prédéfini
+
+
+
+
+
+
+
Calculated
Calculé
+
+
+
+
+
+
+
Id
+
+
+
+
+
+
+
Instance
+
+
+
+
Rx
+
+
+
+
Mod.
+
+
+
+
+
+
+
Add
Addition
+
+
+
+
+
+
+
Average
Moyenne
+
+
+
+
+
+
+
Min
+
+
+
+
+
+
+
Max
+
+
+
+
+
+
+
Multiply
Multiplication
+
+
+
+
+
+
+
Totalize
Totalisation
+
+
+
+
+
+
+
Cell
Element LiPo
+
+
+
+
+
+
+
Consumption
Consommation
+
+
+
+
+
+
+
Dist
Distance
+
+
+
+
+
+
+
Cells Sensor :
Capteur d'éléments:
@@ -12685,191 +18175,506 @@ Trop d'erreurs, abandon.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
---
+
+
+
+
+
+
+
GPS Sensor :
Capteur GPS:
+
+
+
+
+
+
+
Alt. Sensor :
Capteur d'altitude:
+
+
+
+
+
+
+
Sensor :
Capteur:
+
+
+
+
+
+
+
V
+
+
+
+
+
+
+
A
+
+
+
+
+
+
+
mA
+
+
+
+
+
+
+
kt
+
+
+
+
+
+
+
m/s
+
+
+
+
+
+
+
ft/s
+
+
+
+
+
+
+
km/h
+
+
+
+
+
+
+
mph
+
+
+
+
+
+
+
m
+
+
+
+
+
+
+
ft
+
+
+
+
+
+
+
°C
+
+
+
+
+
+
+
°F
+
+
+
+
+
+
+
%
+
+
+
+
+
+
+
mAh
+
+
+
+
+
+
+
W
+
+
+
+
+
+
+
mW
+
+
+
+
+
+
+
dBm
+
+
+
+
+
+
+
g
+
+
+
+
+
+
+
°
+
+
+
+
+
+
+
Rad
+
+
+
+
+
+
+
mL
+
+
+
+
+
+
+
US fl.Oz.
+
+
+
+
+
+
+
Raw (-)
Chiffres bruts (-)
+
+
+
+
+
+
+
RPM
Tours/minute
+
+
+
+
+
+
+
Precision
Précision
+
+
+
+
+
+
+
Ratio
+
+
+
+
+
+
+
Blades
Pales
+
+
+
+
+
+
+
Offset
Décalage
+
+
+
+
+
+
+
Multiplier
Multiplicateur
+
+
+
+
+
+
+
Auto Offset
Offset auto
+
+
+
+
+
+
+
Filter
Filtre
+
+
+
+
+
+
+
Persistent
Persistant
+
+
+
+
+
+
+
Positive
+
+
+
+
+
+
+
Logs
@@ -12901,121 +18706,281 @@ Trop d'erreurs, abandon.
TelemetrySimulator
-
+
+
+
+
+
+
+
+
+
Telemetry Simulator
Simulateur de télémesure
-
+
+
+
+
+
+
+
+
+
VFAS
-
+
+
+
+
+
+
+
+
+
RSSI
-
+
+
+
+
+
+
+
+
+
Simulate
Simuler
-
+
+
+
+
+
+
+
+
+
Replay SD Log File
Rejouer le fichier de Log SD
-
+
+
+
+
+
+
+
+
+
Replay rate
Vitesse
-
+
+
+
+
+
+
+
+
+
|>
-
+
+
+
+
+
+
+
+
+
<|
-
+
+
+
+
+
+
+
+
+
>
-
+
+
+
+
+
+
+
+
+
<-
-
+
+
+
+
+
+
+
+
+
X
-
+
+
+
+
+
+
+
+
+
1/5x
-
+
+
+
+
+
+
+
+
+
5x
-
+
+
+
+
+
+
+
+
+
No Log File Currently Loaded
Pas de fichier de Log chargé
-
+
+
+
+
+
+
+
+
+
Setting RSSI to zero simulates telemetry and radio link loss.
Régler le RSSI à zéro simule la perte de liaison radio et de télémétrie.
-
+
+
+
+
+
+
+
+
+
Set RSSI to zero when paused.
Régler le RSSI à zéro lors d'une pause.
-
+
+
+
+
+
+
+
+
+
Stop sending telemetry data when the Telemetry Simulator window is hidden.
Arrêtez d'envoyer des données de télémétrie lorsque la case est cochée.
-
+
+
+
+
+
+
+
+
+
Pause simulation when hidden.
Pause la simulation.
-
+
+
+
+
+
+
+
+
+
Load
Charger
-
+
+
+
+
+
+
+
+
+
Row #
Timestamp
Ligne #
@@ -13023,7 +18988,15 @@ Horodatage
-
+
+
+
+
+
+
+
+
+
RxBt
@@ -13031,9 +19004,33 @@ Horodatage
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
V / ratio
@@ -13051,140 +19048,420 @@ Horodatage
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<html><head/><body><p><br/></p></body></html>
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Volts
-
+
+
+
+
+
+
+
+
+
Db
dB
-
+
+
+
+
+
+
+
+
+
Curr
Courant
-
+
+
+
+
+
+
+
+
+
Amps
-
+
+
+
+
+
+
+
+
+
Cels
Elément
-
+
+
+
+
+
+
+
+
+
A1
-
+
+
+
+
+
+
+
+
+
A2
-
+
+
+
+
+
+
+
+
+
ASpd
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
km/h
-
+
+
+
+
+
+
+
+
+
A3
-
+
+
+
+
+
+
+
+
+
GAlt
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Meters
Mètres
-
+
+
+
+
+
+
+
+
+
A4
-
+
+
+
+
+
+
+
+
+
GSpd
-
+
+
+
+
+
+
+
+
+
Tmp1
-
+
+
+
+
+
+
+
+
+
RAS
-
+
+
+
+
+
+
+
+
+
Hdg
-
+
+
+
+
+
+
+
+
+
Lat,Lon
(dec.deg.)
-
+
+
+
+
+
+
+
+
+
dd-MM-yyyy
hh:mm:ss
jj-MM-aaaa
@@ -13192,51 +19469,123 @@ hh:mm:ss
-
+
+
+
+
+
+
+
+
+
Degrees
-
+
+
+
+
+
+
+
+
+
Tmp2
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
°C
-
+
+
+
+
+
+
+
+
+
Date
-
+
+
+
+
+
+
+
+
+
GPS
-
+
+
+
+
+
+
+
+
+
Fuel
Carburant
-
+
+
+
+
+
+
+
+
+
%
-
+
+
+
+
+
+
+
+
+
AccX
@@ -13244,65 +19593,169 @@ hh:mm:ss
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
G
-
+
+
+
+
+
+
+
+
+
Fuel Qty
Qté Carburant
-
+
+
+
+
+
+
+
+
+
ml
-
+
+
+
+
+
+
+
+
+
AccY
-
+
+
+
+
+
+
+
+
+
VSpd
Vitesse Verticale
-
+
+
+
+
+
+
+
+
+
m/s
-
+
+
+
+
+
+
+
+
+
AccZ
-
+
+
+
+
+
+
+
+
+
Alt
Altitude
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
RPM
-
+
+
+
+
+
+
+
+
+
When enabled, sends any non-blank values as simulated telemetry data.
Transmet les valeurs non vides au simulateur.
@@ -13344,11 +19797,25 @@ hh:mm:ss
Timer
+
+
+
+
+
+
+
Countdown
Compte à rebours
+
+
+
+
+
+
+
Minute Call
Annonces minutes
@@ -13433,26 +19900,61 @@ Utilisez CTRL + le défilement de la souris ou les touches PAGE HAUT/PAGE BAS po
Trainer
+
+
+
+
+
+
+
Form
Formulaire
+
+
+
+
+
+
+
Mode
+
+
+
+
+
+
+
Input
Entrée
+
+
+
+
+
+
+
Weight
Ratio
+
+
+
+
+
+
+
Rud
Dir
@@ -13465,6 +19967,62 @@ Utilisez CTRL + le défilement de la souris ou les touches PAGE HAUT/PAGE BAS po
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Beeper volume
0 - Quiet. No beeps at all.
@@ -13485,6 +20043,34 @@ Extra long : bips extra longs.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Off
@@ -13493,6 +20079,34 @@ Extra long : bips extra longs.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+= (Sum)
+= (Additionner)
@@ -13501,6 +20115,34 @@ Extra long : bips extra longs.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
:= (Replace)
:= (Remplacer)
@@ -13509,6 +20151,34 @@ Extra long : bips extra longs.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn1
VOIE1
@@ -13517,6 +20187,34 @@ Extra long : bips extra longs.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn2
VOIE2
@@ -13525,6 +20223,34 @@ Extra long : bips extra longs.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn3
VOIE3
@@ -13533,21 +20259,70 @@ Extra long : bips extra longs.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn4
VOIE4
+
+
+
+
+
+
+
Ele
Prf
+
+
+
+
+
+
+
Thr
Gaz
+
+
+
+
+
+
+
Ail
@@ -13556,7 +20331,15 @@ Extra long : bips extra longs.
TrainerSimulator
-
+
+
+
+
+
+
+
+
+
Trainer simulator
Simulateur d'écolage
@@ -13982,11 +20765,32 @@ Extra long : bips extra longs.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Port
+
+
+
+
+
+
+
List all available programmers.
Lister tous les programmateurs supportés.
@@ -13995,12 +20799,47 @@ Extra long : bips extra longs.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The location of the AVRDUDE executable.
The location of the AVRDUDE.EXE executable.
Chemin d'accès de l'exécutable AVRDUDE.
+
+
+
+
+
+
+
DFU-Util Location
Chemin de DFU-UTIL
@@ -14008,11 +20847,39 @@ Extra long : bips extra longs.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Use this button to browse and look for the AVRDUDE executable file.
Utiliser ce bouton pour parcourir à la recherche du fichier exécutable AVRDUDE.EXE.
+
+
+
+
+
+
+
Programmer used for communicating with the controller.
Please consult the programmer's documentation and the AVRDUDE documentation to select the appropriate programmer.
Programmateur utilisé pour la communication avec le contrôleur.
@@ -14020,6 +20887,13 @@ Consulter la documentation du programmateur utilisé et celle d'AVRDUDE pou
+
+
+
+
+
+
+
Communication port to the programmer.
Port de communication pour le programmateur.
@@ -14027,31 +20901,73 @@ Consulter la documentation du programmateur utilisé et celle d'AVRDUDE pou
+
+
+
+
+
+
+
MCU
Processeur
+
+
+
+
+
+
+
at91sam3s8-9xr
+
+
+
+
+
+
+
Alternate device
Dispositif alternatif
+
+
+
+
+
+
+
Use advanced controls
Utiliser les contrôles avancés
+
+
+
+
+
+
+
Extra Arguments
Paramètres supplémentaires
+
+
+
+
+
+
+
Show Help
Aide
@@ -14059,6 +20975,27 @@ Consulter la documentation du programmateur utilisé et celle d'AVRDUDE pou
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Browse...
Parcourir...
@@ -14096,12 +21033,33 @@ Consulter la documentation du programmateur utilisé et celle d'AVRDUDE pou
+
+
+
+
+
+
+
List Available
Affiche Liste
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Extra arguments used in AVRDUDE.
This can be used for providing extra information to AVRDUDE.
@@ -14113,16 +21071,37 @@ A n'utiliser qu'en connaissance de cause: il n'y a pas de contrô
+
+
+
+
+
+
+
AVRDUDE Location
Emplacement d'AVRDUDE
+
+
+
+
+
+
+
Show AVRDUDE help
Affiche l'aide d'AVRDUDE
+
+
+
+
+
+
+
Programmer Configuration
Configuration AVRDUDE / SAM-BA
Configuration du programmateur
@@ -14130,6 +21109,20 @@ A n'utiliser qu'en connaissance de cause: il n'y a pas de contrô
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Extra arguments that will be passed to AVRDUDE on every call
Paramètres complémentaires passés à chaque appel d'AVRDUDE
@@ -14140,23 +21133,65 @@ A n'utiliser qu'en connaissance de cause: il n'y a pas de contrô
+
+
+
+
+
+
+
Location of AVRDUDE executable
Chemin d'accès de l'exécutable AVRDUDE
+
+
+
+
+
+
+
Programmer
Programmateur
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CPU of your TX
CPU de l'émetteur
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CPU present on your 9x radio
Should be m64 for stock radios
m2560 for v4.1 boards
@@ -14164,22 +21199,57 @@ m2560 for v4.1 boards
+
+
+
+
+
+
+
SAM-BA Location
Emplacement de SAM-BA
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Location of sam-ba executable
Emplacement de l'exécutable SAM-BA
+
+
+
+
+
+
+
ARM MCU
Processeur ARM
+
+
+
+
+
+
+
sam-ba serial port
Port série de SAM-BA
@@ -14188,85 +21258,197 @@ m2560 for v4.1 boards
joystickDialog
-
+
+
+
+
+
+
+
+
+
Configure Joystick
Configuration du Joystick
-
+
+
+
+
+
+
+
+
+
Ch2
VOIE2
-
+
+
+
+
+
+
+
+
+
Ch1
VOIE1
-
+
+
+
+
+
+
+
+
+
Ch4
VOIE4
-
+
+
+
+
+
+
+
+
+
Ch6
VOIE6
-
+
+
+
+
+
+
+
+
+
Ch3
VOIE3
-
+
+
+
+
+
+
+
+
+
Ch5
VOIE5
-
+
+
+
+
+
+
+
+
+
Ch7
VOIE7
-
+
+
+
+
+
+
+
+
+
Ch8
VOIE8
-
+
+
+
+
+
+
+
+
+
Instructions
-
+
+
+
+
+
+
+
+
+
Enable
Actif
-
+
+
+
+
+
+
+
+
+
Cancel
Annuler
-
+
+
+
+
+
+
+
+
+
Back
Précédent
-
+
+
+
+
+
+
+
+
+
Start
Démarrer
@@ -14277,7 +21459,15 @@ m2560 for v4.1 boards
-
+
+
+
+
+
+
+
+
+
Ok
OK
diff --git a/companion/src/translations/companion_it.ts b/companion/src/translations/companion_it.ts
index 21b3e87db..cb4847378 100644
--- a/companion/src/translations/companion_it.ts
+++ b/companion/src/translations/companion_it.ts
@@ -93,41 +93,97 @@
AppPreferencesDialog
+
+
+
+
+
+
+
Edit Settings
Modifica Impostazioni
+
+
+
+
+
+
+
Radio Profile
Profilo Radio
+
+
+
+
+
+
+
Default Channel Order
Ordine canali predefinito
+
+
+
+
+
+
+
Build Options
Opzioni per compilazione
+
+
+
+
+
+
+
Menu Language
Lingua per i menu
+
+
+
+
+
+
+
Default Stick Mode
Modalità Stick
+
+
+
+
+
+
+
Select Image
Seleziona immagine
+
+
+
+
+
+
+
Mode selection:
Mode 1:
@@ -169,172 +225,417 @@ Mode 4:
+
+
+
+
+
+
+
Mode 1 (RUD ELE THR AIL)
Modo 1 (DIR ELE MOT ALE)
+
+
+
+
+
+
+
Mode 2 (RUD THR ELE AIL)
Modo 2 (DIR MOTO ELE ALE)
+
+
+
+
+
+
+
Mode 3 (AIL ELE THR RUD)
Modo 3 (ALE ELE MOT DIR)
+
+
+
+
+
+
+
Mode 4 (AIL THR ELE RUD)
Modo 4 (ALE MOT ELE DIR)
+
+
+
+
+
+
+
Splash Screen
Schermata di avvio
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The profile specific folder, if set, will override general Backup folder
La cartella qui specificata, prevarrà su quella delle impostazioni generali
+
+
+
+
+
+
+
Backup folder
Cartella per backup
+
+
+
+
+
+
+
If set it will override the application general setting
Se impostato, prevarrà sulle impostazioni generali
+
+
+
+
+
+
+
if set, will override general backup enable
Se impostato, prevarrà sulle impostazioni generali
+
+
+
+
+
+
+
<html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html>
<html><head/><body><p>Ordine dei canali</p><p><br/></p><p>Definisce l'ordine delle miscelazioni predefinite durante la creazione di un modello.</p></body></html>
+
+
+
+
+
+
+
R E T A
D E M A
+
+
+
+
+
+
+
R E A T
D E A M
+
+
+
+
+
+
+
R T E A
D M E A
+
+
+
+
+
+
+
R T A E
D M A E
+
+
+
+
+
+
+
R A E T
D A E M
+
+
+
+
+
+
+
R A T E
D A M E
+
+
+
+
+
+
+
E R T A
E D M A
+
+
+
+
+
+
+
E R A T
E D A M
+
+
+
+
+
+
+
E T R A
E M D A
+
+
+
+
+
+
+
E T A R
E M A D
+
+
+
+
+
+
+
E A R T
E A D M
+
+
+
+
+
+
+
E A T R
E A M D
+
+
+
+
+
+
+
T R E A
M D E A
+
+
+
+
+
+
+
T R A E
M D A E
+
+
+
+
+
+
+
T E R A
M E D A
+
+
+
+
+
+
+
T E A R
M E A D
+
+
+
+
+
+
+
T A R E
M A D E
+
+
+
+
+
+
+
T A E R
M A E D
+
+
+
+
+
+
+
A R E T
A D E M
+
+
+
+
+
+
+
A R T E
A D M E
+
+
+
+
+
+
+
A E R T
A E D M
+
+
+
+
+
+
+
A E T R
A E M D
+
+
+
+
+
+
+
A T R E
A M D E
+
+
+
+
+
+
+
A T E R
A M E D
@@ -345,272 +646,680 @@ Mode 4:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Select Folder
+
+
+
+
+
+
+
Select Executable
+
+
+
+
Release channel
+
+
+
+
Releases (stable)
+
+
+
+
Release candidates (testing)
+
+
+
+
Nightly builds (unstable)
+
+
+
+
+
+
+
Simulator Volume Gain
Guadagno Volume Simulatore
+
+
+
+
+
+
+
Profile Name
Descrizione
+
+
+
+
+
+
+
Clear Image
Cancella immagine
+
+
+
+
+
+
+
Append version number to FW file name
Aggiungi il numero di versione al nome del file
+
+
+
+
+
+
+
Offer to write FW to Tx after download
Scrivere dopo aggiornamento
+
+
+
+
+
+
+
Radio Type
Tipo di radio
+
+
+
+
+
+
+
Other Settings
Altre impostazioni
+
+
+
+
+
+
+
General Settings
Impostazioni generali radio
+
+
+
+
+
+
+
SD Structure path
Cartella Struttura Scheda SD
+
+
+
+
+
+
+
Application Settings
Impostazioni applicazione
+
+
+
+
+
+
+
Show splash screen when Companion starts
Mostra schermata all'avvio
+
+
+
+
+
+
+
Automatic check for Companion updates
Verifica automaticamente aggiornamenti di Companion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Enable automatic backup before writing firmware
Abilita il backup automatico prima degli aggiornamenti
+
+
+
+
+
+
+
Automatic check for OpenTX firmware updates
Verifica automaticamente aggiornamenti di OpenTX
+
+
+
+
+
+
+
Splash Screen Library
Libreria sfondi
+
+
+
+
+
+
+
Google Earth Executable
Eseguibile Google Earth
+
+
+
+
+
+
+
Only show user splash images
Solamente sfondi utente
+
+
+
+
+
+
+
Show user and companion splash images
Mostra anche sfondi di Companion
+
+
+
+
+
+
+
User Splash Screens
Cartella sfondi utente
+
+
+
+
+
+
+
Automatic Backup Folder
Cartella per backup
+
+
+
+
+
+
+
Simulator Settings
Impostazioni simulatore
+
+
+
+
+
+
+
Simulator BackLight
Colore Retroilluminazione
+
+
+
+
+
+
+
Enable
Abilita
+
+
+
+
+
+
+
most recently used files
+
+
+
+
+
+
+
Startup Settings
+
+
+
+
+
+
+
Remember
+
+
+
+
+
+
+
Output Logs Folder
+
+
+
+
+
+
+
<html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html>
+
+
+
+
+
+
+
Remove empty model slots when deleting models (only applies for radios w/out categories)
+
+
+
+
+
+
+
Use model wizard
+
+
+
+
+
+
+
Open model editor
+
+
+
+
+
+
+
Just create the model
+
+
+
+
+
+
+
Debug Output Logging
+
+
+
+
+
+
+
<html><head/><body><p>Keep a log of all debugging messages generated by the desktop Companion/Simulator applications. An OpenTX developer may request this to help diagnose an issue.</p></body></html>
+
+
+
+
+
+
+
Application (Companion/Simulator)
+
+
+
+
+
+
+
<html><head/><body><p>Keep a log of all messages generated by the radio firmware when running in Simulator. This is the same information one would also see in the Simulator <span style=" font-style:italic;">Debug Output</span> window.</p></body></html>
+
+
+
+
+
+
+
Radio Firmware (in Simulator)
+
+
+
+
+
+
+
Action on New Model
+
+
+
+
+
+
+
Blue
Blu
+
+
+
+
+
+
+
Green
Verde
+
+
+
+
+
+
+
Red
Rosso
+
+
+
+
+
+
+
Orange
Arancione
+
+
+
+
+
+
+
Yellow
Giallo
+
+
+
+
+
+
+
Screenshot capture folder
+
+
+
+
+
+
+
Joystick
Joystick
+
+
+
+
+
+
+
Calibrate
Calibrazione
+
+
+
+
+
+
+
Only capture to clipboard
Usa solo gli appunti per la cattura degli schermi
+
+
+
+
+
+
+
Remember simulator switch values
Ricorda la posizione degli switches nel simulatore
@@ -691,6 +1400,31 @@ Mode 4:
Images (%1)
Immagini (%1)
+
+
+
+
+ Use releases (stable)
+
+
+
+
+ Use release candidates (testing)
+
+
+
+
+
+
+ Use nightly builds (unstable)
+
+
+
+
+
+ Use releases and release candidates (testing)
+
+
BinEepromFormat
@@ -910,36 +1644,85 @@ Mode 4:
ChecklistDialog
+
+
+
+
+
+
+
Edit Checklist
+
+
+
+
+
+
+
Line nn, Col nn
+
+
+
+
+
+
+
&Import...
+
+
+
+
+
+
+
&Cancel
+
+
+
+
+
+
+
&OK
+
+
+
+
+
+
+
Please note, the maximum width displayable is radio model limited. Also, renaming the model will break the link to this checklist file.
+
+
+
+
+
+
+
File: unknown
@@ -1185,31 +1968,73 @@ If you have a settings backup file, you may import that instead.
CompareDialog
+
+
+
+
+
+
+
Compare Models
Confronta modelli
+
+
+
+
+
+
+
To compare models, drag and drop them anywhere in this window.
+
+
+
+
+
+
+
Close
Chiudi
+
+
+
+
+
+
+
Style
+
+
+
+
+
+
+
Print
Stampa
+
+
+
+
+
+
+
Print to file
Stampa su file
@@ -1366,87 +2191,213 @@ If you have a settings backup file, you may import that instead.
Curves
+
+
+
+
+
+
+
Fixed X
X fisso
+
+
+
+
+
+
+
Custom X
X modificabile
+
+
+
+
+
+
+
Lines
Linee
+
+
+
+
+
+
+
Smooth
Arrotondata
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Curve type
Tipo curva
+
+
+
+
+
+
+
Curve Creator
Generatore di curve
+
+
+
+
+
+
+
Y at X=0
Y a X=0
+
+
+
+
+
+
+
Point size
+
+
+
+
+
+
+
Y at X=100
Y a X=100
+
+
+
+
+
+
+
Both
Entrambi
+
+
+
+
+
+
+
x>0
x>0
+
+
+
+
+
+
+
x<0
x<0
+
+
+
+
+
+
+
Apply
Applica
+
+
+
+
+
+
+
Side
Lato
+
+
+
+
+
+
+
Y at X=-100
Y a X=-100
+
+
+
+
+
+
+
Coefficient
Coefficiente
+
+
+
+
+
+
+
Curve name
Nome curva
@@ -1859,42 +2810,133 @@ If you have a settings backup file, you may import that instead.
CustomizeSplashDialog
+
+
+
+
+
+
+
Transmitter Splash Screen Editor
Editor per schermata di avvio della Radio
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Invert
Inverti
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load FW
Carica FW
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load Pict
Carica Imm.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load Profile
Carica profilo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Save
Salva
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Open Splash Library
Apri libreria sfondi
@@ -1903,6 +2945,34 @@ If you have a settings backup file, you may import that instead.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
...
@@ -2018,48 +3088,48 @@ If you have a settings backup file, you may import that instead.
-
+
Switch
Interruttore
-
+
Switch
-
+
cannot be exported on this board!
-
+
Source
Sorgente
-
+
Source %1 cannot be exported on this board!
La sorgente %1 non può essere esportata su questa radio!
-
+
OpenTX only accepts %1 points in all curves
OpenTX accetta solamente %1 punti in tutte le curve
-
+
OpenTx only accepts %1 points in all curves
OpenTx accetta solamente %1 punti in tutte le curve
-
-
+
+
OpenTX on this board doesn't accept this function
OpenTX in questa piattaforma non accetta la funzione
-
+
OpenTX doesn't accept this radio protocol
OpenTX non accetta questo protocollo di trasmissione
@@ -2068,86 +3138,198 @@ If you have a settings backup file, you may import that instead.
DebugOutput
-
+
+
+
+
+
+
+
+
+
Debug Output
Uscita diagnostica
-
+
+
+
+
+
+
+
+
+
<html><head/><body><p>Enable or disable the filter. If the button won't stay enabled, it is likely there is a syntax error in the Regular Expression entered.</p></body></html>
-
+
+
+
+
+
+
+
+
+
Filter:
-
+
+
+
+
+
+
+
+
+
<html><head/><body><p>Enter filter text here. Click the help/info button for details about using the filter. </p><p>
To <b>remove a remembered entry</b> from the filter list, first choose it, and then press <code>Shift-Delete</code> (or <code>Shift-Backspace</code>) key combination.</p></body></html>
-
+
+
+
+
+
+
+
+
+
Buffer:
-
+
+
+
+
+
+
+
+
+
Number of lines to keep in display.
-
+
+
+
+
+
+
+
+
+
Filter &Help
-
+
+
+
+
+
+
+
+
+
Show information about using the filter.
-
+
+
+
+
+
+
+
+
+
Word &Wrap
-
+
+
+
+
+
+
+
+
+
Toggle word wrapping on/off.
-
+
+
+
+
+
+
+
+
+
&Clear
-
+
+
+
+
+
+
+
+
+
Clear the output window of all text.
-
+
+
+
+
+
+
+
+
+
Enable &Filter
-
+
+
+
+
+
+
+
+
+
Turn the filter on/off.
@@ -2166,6 +3348,13 @@ To <b>remove a remembered entry</b> from the filter list, first cho
DownloadDialog
+
+
+
+
+
+
+
Downloading:
Scaricamento in corso:
@@ -2309,26 +3498,61 @@ To <b>remove a remembered entry</b> from the filter list, first cho
ExpoDialog
+
+
+
+
+
+
+
Weight
Peso
+
+
+
+
+
+
+
Flight modes
Fasi di volo
+
+
+
+
+
+
+
Offset
Spostamento
+
+
+
+
+
+
+
The source for the mixer
Sorgente da miscelare
+
+
+
+
+
+
+
Input name
Nome Ingresso
@@ -2336,36 +3560,99 @@ To <b>remove a remembered entry</b> from the filter list, first cho
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
GV
VG
+
+
+
+
+
+
+
Switch
Interruttore
+
+
+
+
+
+
+
Source
Sorgente
+
+
+
+
+
+
+
Line name
Nome linea
+
+
+
+
+
+
+
Stick Side
Lato dello stick
+
+
+
+
+
+
+
Source for the mixer.
Sorgente per la miscelazione.
+
+
+
+
+
+
+
Switch used to enable the line.
If blank then the input is considered to be "ON" all the time.
Interruttore usato per abilitare la linea.
@@ -2373,46 +3660,109 @@ Se vuoto verrà sempre considerata "Attiva".
+
+
+
+
+
+
+
Scale
Campo di misura
+
+
+
+
+
+
+
Include Trim
Include i Trim
+
+
+
+
+
+
+
No
No
+
+
+
+
+
+
+
Yes
Si
+
+
+
+
+
+
+
Curve
Curva
+
+
+
+
+
+
+
Curve applied to the source.
Curva applicata alla sorgente.
+
+
+
+
+
+
+
NEG
NEG
+
+
+
+
+
+
+
POS
POS
+
+
+
+
+
+
+
ALL
TUTTI
@@ -3058,31 +4408,73 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FirmwarePreferencesDialog
+
+
+
+
+
+
+
Downloads
File scaricabili
+
+
+
+
+
+
+
Check for updates
Verifica aggiornamenti
+
+
+
+
+
+
+
Firmware
Firmware
+
+
+
+
+
+
+
Download firmware
+
+
+
+
+
+
+
Download SD contents
+
+
+
+
+
+
+
Latest Download
Ultimi download
@@ -3124,67 +4516,158 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FlashEEpromDialog
+
+
+
+
+
+
+
Write Models and Settings to Radio
Scrivi Modelli e Impostazioni sulla Radio
+
+
+
+
+
+
+
Load...
Carica...
+
+
+
+
+
+
+
Current Profile
Profilo corrente
+
+
+
+
+
+
+
Allows Companion to write to older version of the firmware
Consenti a Companion di scrivere a versioni precedenti del firmware
+
+
+
+
+
+
+
Check Firmware compatibility
Verifica compatibilità firmware
+
+
+
+
+
+
+
<html><head/><body><p>Saves a dated copy of your eeprom to the backup folder you specified in the Companion settings before writing the current model to the radio.</p></body></html>
+
+
+
+
+
+
+
Backup before Write
Esegui backup prima della scrittura
+
+
+
+
+
+
+
<html><head/><body><p>Modify calibration parameters using settings from current profile</p></body></html>
<html><head/><body><p>Modifica i dati di calibrazione della radio usando le impostazioni del profilo corrente</p></body></html>
+
+
+
+
+
+
+
Patch calibration setting from profile
Importa dati di calibrazione dal profilo
+
+
+
+
+
+
+
<html><head/><body><p>Modify HW parameters using settings from current profile</p></body></html>
<html><head/><body><p>Modifica le impostazioni HW della radio usando le impostazioni del profilo corrente</p></body></html>
+
+
+
+
+
+
+
Patch HW settings from profile
Importa settaggi HW dal profilo
+
+
+
+
+
+
+
Cancel
Annulla
+
+
+
+
+
+
+
Write to TX
Scrivi sulla radio
@@ -3242,71 +4725,169 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FlashFirmwareDialog
+
+
+
+
+
+
+
Flash Firmware
Scrittura firmware
+
+
+
+
+
+
+
Load...
Carica...
+
+
+
+
+
+
+
Date & Time
Data e ora
+
+
+
+
+
+
+
Variant
Variante
+
+
+
+
+
+
+
Version
Versione
+
+
+
+
+
+
+
Use profile start screen
Usa schermata di avvio del profilo
+
+
+
+
+
+
+
Use firmware start screen
Usa schermata di avvio del firmware
+
+
+
+
+
+
+
Use library start screen
Usa schermata di avvio della libreria
+
+
+
+
+
+
+
Use another start screen
Usa schermata di avvio alternativa
+
+
+
+
+
+
+
Allows Companion to write to older version of the firmware
Consenti a Companion di scrivere a versioni precedenti del firmware
+
+
+
+
+
+
+
Check Hardware compatibility
Controlla compatibilità Hardware
+
+
+
+
+
+
+
Backup and restore Models and Settings
Salva e ripristina le impostazioni della radio
+
+
+
+
+
+
+
Cancel
Annulla
+
+
+
+
+
+
+
Write to TX
Scrivi sulla radio
@@ -3506,21 +5087,49 @@ state attualmente utilizzando:
FlightMode
+
+
+
+
+
+
+
Fade In
Tempo transizione in ingresso
+
+
+
+
+
+
+
Fade Out
Tempo transizione in uscita
+
+
+
+
+
+
+
Name
Nome
+
+
+
+
+
+
+
Switch
Interruttore
@@ -3710,11 +5319,25 @@ state attualmente utilizzando:
FusesDialog
+
+
+
+
+
+
+
Fuses
Fuses
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3744,11 +5367,25 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Read Fuses
Leggi Fuses
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3782,6 +5419,13 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Reset Fuses
EEPROM - PROTECT
Reimposta Fuses
@@ -3789,6 +5433,13 @@ EEPROM - PROTECT
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3822,6 +5473,13 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Reset Fuses
EEPROM - DELETE
Reimposta Fuses
@@ -3829,6 +5487,13 @@ EEPROM - DELETE
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3905,11 +5570,25 @@ p, li { white-space: pre-wrap; }
GeneralEdit
+
+
+
+
+
+
+
Radio settings
+
+
+
+
+
+
+
General settings used throught the transmitter.
These will be relevant for all models in the same EEPROM.
Impostazioni generali utilizzate nella radio.
@@ -3927,11 +5606,25 @@ Queste impostazioni sono comuni a tutti i modelli nella stessa EEPROM.
+
+
+
+
+
+
+
Store calib. and hw settings in selected profile
Memorizza calib. e settaggi HW nel profilo scelto
+
+
+
+
+
+
+
Retrieve calib. and hw settings from profile
Recupera calib. e settaggi HW dal profilo scelto
@@ -3988,127 +5681,309 @@ Queste impostazioni sono comuni a tutti i modelli nella stessa EEPROM.GeneralSetup
+
+
+
+
+
+
+
Form
+
+
+
+
+
+
+
Readonly Unlock
Sblocco modalità sola lettura
+
+
+
+
+
+
+
SC
SC
+
+
+
+
+
+
+
SE
SE
+
+
+
+
+
+
+
SA
SA
+
+
+
+
+
+
+
SF
SF
+
+
+
+
+
+
+
SH
SH
+
+
+
+
+
+
+
SD
SD
+
+
+
+
+
+
+
SB
SB
+
+
+
+
+
+
+
SG
SG
+
+
+
+
+
+
+
Timeshift from UTC
Differenza in ore da GMT
+
+
+
+
+
+
+
Voice Language
Lingua per le voci
+
+
+
+
+
+
+
Country Code
Codice paese
+
+
+
+
+
+
+
Stick reverse
Inverti Stick
+
+
+
+
+
+
+
FAI Mode
Modalità FAI
+
+
+
+
+
+
+
Adjust RTC
Aggiusta Orologio
+
+
+
+
+
+
+
Vario pitch at max
Tono del vario al massimo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Hz
Hz
+
+
+
+
+
+
+
Speaker Volume
Volume altoparlante
+
+
+
+
+
+
+
Backlight Switch
Interruttore retroilluminazione
+
+
+
+
+
+
+
Sound Mode
Modalità audio
+
+
+
+
+
+
+
Color 1
Colore 1
+
+
+
+
+
+
+
Color 2
Colore 2
+
+
+
+
+
+
+
Speaker Pitch (spkr only)
Tonalità suono (modifica HW)
+
+
+
+
+
+
+
If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds.
Se questo valore non è 0, ogni pressione di tasto provocherà l'accensione della luce e questa verrà spenta dopo il numero di secondi specificato.
@@ -4116,82 +5991,209 @@ Queste impostazioni sono comuni a tutti i modelli nella stessa EEPROM.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
sec
sec
+
+
+
+
+
+
+
Backlight color
Colore retroilluminazione
+
+
+
+
+
+
+
Beeper
Cicalino
+
+
+
+
+
+
+
Speaker
Altoparlante
+
+
+
+
+
+
+
BeeperVoice
Cicalino e voce
+
+
+
+
+
+
+
SpeakerVoice
Altoparlante e Voce
+
+
+
+
+
+
+
Beep volume
Volume cicalino
+
+
+
+
+
+
+
Wav volume
Volume file Wav
+
+
+
+
+
+
+
Vario volume
Volume per vario
+
+
+
+
+
+
+
Background volume
Volume sottofondo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ms
ms
+
+
+
+
+
+
+
Backlight Auto OFF after
Auto spegnimento luce dopo
+
+
+
+
+
+
+
Backlight flash on alarm
Retroilluminazione su allarme
+
+
+
+
+
+
+
Vario pitch at zero
Tono del vario a zero
+
+
+
+
+
+
+
Vario repeat at zero
Ripetizione vario a zero
+
+
+
+
+
+
+
This is the switch selectrion for turning on the backlight (if installed).
@@ -4200,6 +6202,20 @@ Queste impostazioni sono comuni a tutti i modelli nella stessa EEPROM.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -4215,186 +6231,436 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Backlight Brightness
Luminosità retroilluminazione
+
+
+
+
+
+
+
RotEnc Navigation
Navigazione con Encoder
+
+
+
+
+
+
+
If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio.
+
+
+
+
+
+
+
America
America
+
+
+
+
+
+
+
Japan
Giappone
+
+
+
+
+
+
+
Europe
Europa
+
+
+
+
+
+
+
RSSI Poweroff Warning
+
+
+
+
+
+
+
Low EEPROM Warning
+
+
+
+
Owner Registration ID
+
+
+
+
aaaaaaAA
+
+
+
+
+
+
+
<html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html>
<html><head/><body><p>Ordine dei canali</p><p><br/></p><p>Definisce l'ordine delle miscelazioni predefinite durante la creazione di un modello.</p></body></html>
+
+
+
+
+
+
+
R E T A
D E M A
+
+
+
+
+
+
+
R E A T
D E A M
+
+
+
+
+
+
+
R T E A
D M E A
+
+
+
+
+
+
+
R T A E
D M A E
+
+
+
+
+
+
+
R A E T
D A E M
+
+
+
+
+
+
+
R A T E
D A M E
+
+
+
+
+
+
+
E R T A
E D M A
+
+
+
+
+
+
+
E R A T
E D A M
+
+
+
+
+
+
+
E T R A
E M D A
+
+
+
+
+
+
+
E T A R
E M A D
+
+
+
+
+
+
+
E A R T
E A D M
+
+
+
+
+
+
+
E A T R
E A M D
+
+
+
+
+
+
+
T R E A
M D E A
+
+
+
+
+
+
+
T R A E
M D A E
+
+
+
+
+
+
+
T E R A
M E D A
+
+
+
+
+
+
+
T E A R
M E A D
+
+
+
+
+
+
+
T A R E
M A D E
+
+
+
+
+
+
+
T A E R
M A E D
+
+
+
+
+
+
+
A R E T
A D E M
+
+
+
+
+
+
+
A R T E
A D M E
+
+
+
+
+
+
+
A E R T
A E D M
+
+
+
+
+
+
+
A E T R
A E M D
+
+
+
+
+
+
+
A T R E
A M D E
+
+
+
+
+
+
+
A T E R
A M E D
+
+
+
+
Power Off Delay
+
+
+
+
+
+
+
Mode selection:
Mode 1:
@@ -4436,163 +6702,401 @@ Mode 4:
+
+
+
+
+
+
+
Mode 1 (RUD ELE THR AIL)
Modo 1 (DIR ELE MOT ALE)
+
+
+
+
+
+
+
Mode 2 (RUD THR ELE AIL)
Modo 2 (DIR MOTO ELE ALE)
+
+
+
+
+
+
+
Mode 3 (AIL ELE THR RUD)
Modo 3 (ALE ELE MOT DIR)
+
+
+
+
+
+
+
Mode 4 (AIL THR ELE RUD)
Modo 4 (ALE MOT ELE DIR)
+
+
+
+
+
+
+
DMS
+
+
+
+
+
+
+
USB Mode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Ask on Connect
+
+
+
+
+
+
+
Joystick (HID)
+
+
+
+
+
+
+
USB Mass Storage
+
+
+
+
+
+
+
USB Serial (CDC)
+
+
+
+
+
+
+
Stick Mode
Modo Stick
+
+
+
+
+
+
+
Metric
Sistema Metrico
+
+
+
+
+
+
+
Imperial
Imperiale
+
+
+
+
+
+
+
Default Channel Order
Ordine canali predefinito
+
+
+
+
+
+
+
GPS Coordinates
Coordinate GPS
+
+
+
+
+
+
+
Min
Min
+
+
+
+
+
+
+
+
+
+
+
+
+
+
v
v
+
+
+
+
+
+
+
Max
Max
+
+
+
+
+
+
+
Beeper Mode
Modalità suono beeper
+
+
+
+
+
+
+
Inactivity Timer
Temporizzatore di inattività
+
+
+
+
+
+
+
Beeper Length
Lunghezza suono
+
+
+
+
+
+
+
Show Splash Screen on Startup
Mostra schermata all'avvio
+
+
+
+
+
+
+
Contrast
Contrasto
+
+
+
+
+
+
+
Battery Meter Range
Campo misuratore batteria
+
+
+
+
+
+
+
Haptic Strength
Intensità vibrazione (mod. HW)
+
+
+
+
+
+
+
LCD Display Type
Tipo display LCD
+
+
+
+
+
+
+
"No Sound" Warning
Avviso "nessun suono"
+
+
+
+
+
+
+
Battery Warning
Allarme batteria scarica
+
+
+
+
+
+
+
Haptic Length
Lunghezza vibrazione
+
+
+
+
+
+
+
MAVLink Baud Rate
Baud rate MAVLink
+
+
+
+
+
+
+
Haptic Mode
Modalità vibrazione
+
+
+
+
+
+
+
Beeper volume
0 - Quiet. No beeps at all.
@@ -4611,43 +7115,120 @@ Mode 4:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Quiet
Silenzioso
+
+
+
+
+
+
+
Alarms Only
Solo allarmi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
No Keys
No Tasti
+
+
+
+
+
+
+
+
+
+
+
+
+
+
All
Tutti
+
+
+
+
+
+
+
Only Alarms
Solo allarmi
+
+
+
+
+
+
+
Automatically adjust the radio's clock if a GPS is connected to telemetry.
+
+
+
+
+
+
+
Backlight OFF Brightness
+
+
+
+
+
+
+
Battery warning voltage.
This is the threashhold where the battery warning sounds.
@@ -4659,127 +7240,306 @@ Valori accettabili da 5v a 10v
+
+
+
+
+
+
+
Standard
Standard
+
+
+
+
+
+
+
Optrex
Optrex
+
+
+
+
+
+
+
If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes.
Se non è zero, verrà fatto suonare l'allarme se la radio non è utilizzata per il numero di minuti specificato.
+
+
+
+
+
+
+
min
min
+
+
+
+
Power On Delay
+
+
+
+
+
+
+
Jack Mode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Show splash screen on startup
Mostra schermata all'avvio
+
+
+
+
+
+
+
---
---
+
+
+
+
+
+
+
2s
2s
+
+
+
+
+
+
+
3s
3s
+
+
+
+
+
+
+
4s
4s
+
+
+
+
+
+
+
6s
6s
+
+
+
+
+
+
+
8s
8s
+
+
+
+
+
+
+
10s
10s
+
+
+
+
+
+
+
15s
15s
+
+
+
+
+
+
+
Audio
+
+
+
+
+
+
+
Trainer
Maestro/Allievo
+
+
+
+
+
+
+
4800 Baud
4800 Baud
+
+
+
+
+
+
+
9600 Baud
9600 Baud
+
+
+
+
+
+
+
14400 Baud
14400 Baud
+
+
+
+
+
+
+
19200 Baud
19200 Baud
+
+
+
+
+
+
+
38400 Baud
38400 Baud
+
+
+
+
+
+
+
57600 Baud
57600 Baud
+
+
+
+
+
+
+
76800 Baud
76800 Baud
+
+
+
+
+
+
+
115200 Baud
115200 Baud
@@ -4787,6 +7547,27 @@ Valori accettabili da 5v a 10v
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -4813,48 +7594,149 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
X-Short
Extra Corto
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Short
Corto
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Normal
Normale
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Long
Lungo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
X-Long
Extra Lungo
+
+
+
+
+
+
+
NMEA
NMEA
+
+
+
+
+
+
+
Play Delay (switch mid position)
Ritardo esecuzione(posizione intermedia)
+
+
+
+
+
+
+
Measurement Units
Unità di misura
+
+
+ Power On Speed
+
+
+
+
+ Power Off Speed
+
+
GeneralSetupPanel
@@ -5008,251 +7890,595 @@ Are you sure ?
Hardware
+
+
+
+
+
+
+
Form
+
+
+
+
+
+
+
SQ
+
+
+
+
+
+
+
SR
+
+
+
+
+
+
+
LS2
+
+
+
+
+
+
+
SP
+
+
+
+
+
+
+
SO
+
+
+
+
+
+
+
S4
S4
+
+
+
+
+
+
+
RS
RS
+
+
+
+
+
+
+
SB
SB
+
+
+
+
+
+
+
PPM 2
PPM 2
+
+
+
+
+
+
+
OFF
Spento
+
+
+
+
+
+
+
S-Port Mirror
Replica dati S-Port
+
+
+
+
+
+
+
Telemetry
Telemetria
+
+
+
+
+
+
+
SBUS Trainer
Maestro/Allievo SBUS
+
+
+
+
+
+
+
Debug
Debug
+
+
+
+
+
+
+
Rud
Dir
+
+
+
+
+
+
+
PPM 3
PPM 3
+
+
+
+
+
+
+
S1
S1
+
+
+
+
+
+
+
S2
S2
+
+
+
+
+
+
+
S3
S3
+
+
+
+
+
+
+
PPM 1
PPM 1
+
+
+
+
+
+
+
Serial Port
Porta Seriale
+
+
+
+
+
+
+
v
v
+
+
+
+
+
+
+
PPM Multiplier
Moltiplicatore PPM
+
+
+
+
+
+
+
Current Offset
+
+
+
+
+
+
+
PPM 4
PPM 4
+
+
+
+
+
+
+
SA
SA
+
+
+
+
+
+
+
Ele
Ele
+
+
+
Antenna
+
+
+
+
+
S5
+
+
+
+
+
+
+
Ail
Ale
+
+
+
+
+
+
+
Thr
Mot
+
+
+
+
+
+
+
SC
SC
+
+
+
+
+
+
+
LS
LS
+
+
+
+
+
+
+
SD
SD
+
+
+
+
+
+
+
Battery Offset
+
+
+
+
+
+
+
SE
SE
+
+
+
+
+
+
+
SF
SF
+
+
+
+
+
+
+
SG
SG
+
+
+
+
+
+
+
SH
SH
+
+
+
+
+
+
+
SI
SI
+
+
+
+
+
+
+
SJ
SJ
+
+
+
+
+
+
+
SK
SK
+
+
+
+
+
+
+
SL
SL
+
+
+
+
+
+
+
SM
SM
+
+
+
+
+
+
+
SN
SN
+
+
+
+
+
+
+
RS2
RS2
+
+
+
+
+
+
+
Bluetooth
+
+
+
+
+
+
+
ADC Filter
+
+
+
+
+
+
+
Device Name:
@@ -5351,71 +8577,169 @@ Are you sure ?
Heli
+
+
+
+
+
+
+
Invert Elevator
Elevatore
+
+
+
+
+
+
+
Invert Aileron
Alettoni
+
+
+
+
+
+
+
Invert Collective
Collettivo
+
+
+
+
+
+
+
Invert
Inversioni
+
+
+
+
+
+
+
Off
NO
+
+
+
+
+
+
+
120
120
+
+
+
+
+
+
+
120X
120X
+
+
+
+
+
+
+
140
140
+
+
+
+
+
+
+
90
90
+
+
+
+
+
+
+
Long. cyc
+
+
+
+
+
+
+
Lateral cyc
+
+
+
+
+
+
+
Collective
Collettivo
+
+
+
+
+
+
+
Swash Type
Tipo ciclico
+
+
+
+
+
+
+
Swash Ring
Anello del ciclico
@@ -5807,46 +9131,109 @@ Are you sure ?
LogsDialog
+
+
+
+
+
+
+
Companion Log Viewer
Visualizzatore di Log di Companion
+
+
+
+
+
+
+
Filename
Nome file
+
+
+
+
+
+
+
Open LogFile
Apri file di log
+
+
+
+
+
+
+
Zoom
Ingrandimento
+
+
+
+
+
+
+
Save session CSV
+
+
+
+
+
+
+
X
X
+
+
+
+
+
+
+
Y
Y
+
+
+
+
+
+
+
Reset
Ripristina
+
+
+
+
+
+
+
Fly sessions
Sessioni di volo
@@ -7342,11 +10729,23 @@ Salvare le modifiche ?
MixerDialog
+
+
+
+
+
Dialog
Dialogo
+
+
+
+
+
+
+
Source
Sorgente
@@ -7355,36 +10754,106 @@ Salvare le modifiche ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The source for the mixer
Sorgente da miscelare
+
+
+
+
+
+
+
Weight
Peso
+
+
+
+
+
+
+
Offset
Spostamento
+
+
+
+
+
+
+
Include Trim
Include i Trim
+
+
+
+
+
+
+
Curve
Curva
+
+
+
+
+
+
+
The curve used by the mix
Curva utilizzata dalla miscelazione
+
+
+
+
+
+
+
Switch
Interruttore
@@ -7392,11 +10861,39 @@ Salvare le modifiche ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
GV
VG
+
+
+
+
+
+
+
Switch used by the mix.
If blank then the mix is considered to be "ON" all the time.
Interruttore che controlla la miscelazione.
@@ -7404,16 +10901,37 @@ Se vuoto la miscelazione è sempre attiva.
+
+
+
+
+
+
+
Yes
Si
+
+
+
+
+
+
+
No
No
+
+
+
+
+
+
+
Warning
Avviso
@@ -7422,6 +10940,34 @@ Se vuoto la miscelazione è sempre attiva.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -7447,6 +10993,13 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Mixer warning.
Setting this value will cause a beep to be emmitted when this value is active.
Allarme miscelazione.
@@ -7454,36 +11007,85 @@ Impostare questo valore causa un'allarme in corrispondenza del valore.
+
+
+
+
+
+
+
OFF
Spento
+
+
+
+
+
+
+
1 Beep
1 Beep
+
+
+
+
+
+
+
2 Beep
2 Beep
+
+
+
+
+
+
+
3 Beep
3 Beep
+
+
+
+
+
+
+
Multiplex
Miscelatore
+
+
+
+
+
+
+
Flight modes
Fasi di volo
+
+
+
+
+
+
+
Multiplexer
This determines how mixer values are added.
@@ -7501,46 +11103,109 @@ Determina come il valore viene aggiunto alla miscelazione.
+
+
+
+
+
+
+
ADD
AGGIUNGI
+
+
+
+
+
+
+
MULTIPLY
MOLTIPLICA
+
+
+
+
+
+
+
REPLACE
SOSTITUISCI
+
+
+
+
+
+
+
Include DR/Expo
Include DR/Espo
+
+
+
+
+
+
+
Name
Nome
+
+
+
+
+
+
+
Delay
Ritardo
+
+
+
+
+
+
+
Slow
Rallentamento
+
+
+
+
+
+
+
Up
Su
+
+
+
+
+
+
+
Down
Giù
@@ -7569,6 +11234,12 @@ Determina come il valore viene aggiunto alla miscelazione.
Invert All
+
+
+
+ FullScreenDialog
+
+
MixersListWidget
@@ -7742,11 +11413,23 @@ Determina come il valore viene aggiunto alla miscelazione.
ModelEdit
+
+
+
+
+
Dialog
Dialogo
+
+
+
+
+
+
+
Simulate
Simula Modello
@@ -7800,6 +11483,12 @@ Determina come il valore viene aggiunto alla miscelazione.
Telemetry
Telemetria
+
+
+
+ FullScreenDialog
+
+
ModelPrinter
@@ -8618,138 +12307,324 @@ Determina come il valore viene aggiunto alla miscelazione.
Module
+
+
+
+
+
+
+
Failsafe Mode
Modalità FailSafe
+
+
+
+
+
+
+
Start
Inizio
+
+
+
+
+
+
+
PPM delay
Pausa PPM
+
+
+
+
+
+
+
Negative
Negativo
+
+
+
+
+
+
+
Positive
Positivo
+
+
+
+
+
+
+
Polarity
Polarità
+
+
+
+
+
+
+
Trainer Mode
Modalità maestro allievo
+
+
+
+
+
+
+
PPM Frame Length
Durata segnale PPM
+
+
+
+
+
+
+
CH
CH
+
+
+
+
+
+
+
Antenna
+
+
+
+
+
+
+
Option value
+
+
+
+
+
+
+
Bind on startup
+
+
+
+
+
+
+
RF Output Power
+
+
+
+
+
+
+
Low Power
+
+
+
+
+
+
+
us
us
+
+
+
+
+
+
+
Multi Radio Protocol
+
+
+
+
+
+
+
Sub Type
+
+
+
+
+
+
+
Master/Jack
Maestro/(presa)
+
+
+
+
+
+
+
Slave/Jack
Allievo/(Presa)
+
+
+
+
+
+
+
Master/SBUS Module
Maestro/Modulo SBUS
+
+
+
+
+
+
+
Master/CPPM Module
Maestro/Modulo CPPM
+
+
+
+
+
+
+
Master/SBUS in battery compartment
Maestro/SBUS nel compartimento batteria
+
+
+
+
+
+
+
Show values in:
+
+
+
+
+
+
+
%
abbreviation for percent
+
+
+
+
+
+
+
μs
abbreviation for microseconds
+
+
+
+
+
+
+
ms
ms
+
+
+
+
Receiver 1
@@ -8757,94 +12632,232 @@ Determina come il valore viene aggiunto alla miscelazione.
+
+
+
+
+
+
+
+
+
+
+
+
X
X
+
+
+
+
Receiver 2
+
+
+
+
Receiver 3
+
+
+
+
+
+
+
WARNING: changing RF Output Power needs RE-BIND
+
+
+
+
+
+
+
Channels
Canali
+
+
+
+
Registration ID
+
+
+
+
+
+
+
WARNING: Requires non-certified firmware!
+
+
+
+
+
+
+
Not set
Non impostato
+
+
+
+
+
+
+
Hold
Mantieni
+
+
+
+
+
+
+
Custom
Personalizzato
+
+
+
+
+
+
+
No Pulses
No impulsi
+
+
+
+
+
+
+
Receiver
Ricevitore
+
+
+
+
+
+
+
Failsafe Positions
Posizioni Failsafe
+
+
+
+
+
+
+
Protocol
Protocollo
+
+
+
+
+
+
+
Receiver No.
Numero Ricev.
+
+
+
+
+
+
+
Output type
Tipo uscita
+
+
+
+
+
+
+
Open Drain
+
+
+
+
+
+
+
Push Pull
+
+
+
+
+
+ Internal
+
+
+
+
+
+
+
+ Ext. + Int.
+
+
ModuleData
@@ -9583,21 +13596,49 @@ Determina come il valore viene aggiunto alla miscelazione.
PrintDialog
+
+
+
+
+
+
+
Close
Chiudi
+
+
+
+
+
+
+
Style
+
+
+
+
+
+
+
Print
Stampa
+
+
+
+
+
+
+
Print to file
Stampa su file
@@ -9621,11 +13662,25 @@ Determina come il valore viene aggiunto alla miscelazione.
ProgressDialog
+
+
+
+
+
+
+
Flash Firmware
Scrittura firmware
+
+
+
+
+
+
+
Close
Chiudi
@@ -9640,6 +13695,13 @@ Determina come il valore viene aggiunto alla miscelazione.
ProgressWidget
+
+
+
+
+
+
+
Show Details
Mostra dettagli
@@ -9793,16 +13855,37 @@ Determina come il valore viene aggiunto alla miscelazione.
RadioNotFoundDialog
+
+
+
+
+
+
+
No Radio Found
Radio non trovata
+
+
+
+
+
+
+
<html><head/><body><p>No Radio was found!</p><p>Make sure that you hold the lower trim buttons towards the center while you turn it on.</p><p>Then connect the USB wire.</p><p><span style=" font-family:'arial,sans-serif'; font-size:13px; font-style:italic; color:#222222; background-color:#ffffff;">Note: if you have a Taranis that has not had the firmware upgraded to 2.0 then this version of Companion will not work.</span></p></body></html>
<html><head/><body><p>Nessuna radio è stata trovata!</p><p>Siate sicuri di tenere entrambi i trim inferiori verso il centro durante l'accensione della radio..</p><p>Solo dopo connettete il cavo USB.</p><p><span style=" font-family:'arial,sans-serif'; font-size:13px; font-style:italic; color:#222222; background-color:#ffffff;">Nota: se avete una radio Taranis che non ha ancora ricevuto l'aggiornamento alla versione 2.0 del firmware allora questa versione di companion non funzionerà correttamente.</span></p></body></html>
+
+
+
+
+
+
+
OK
OK
@@ -9811,43 +13894,99 @@ Determina come il valore viene aggiunto alla miscelazione.
RadioOutputsWidget
-
+
+
+
+
+
+
+
+
+
Form
-
+
+
+
+
+
+
+
+
+
View:
-
+
+
+
+
+
+
+
+
+
Logical Switches
Interruttori logici
-
+
+
+
+
+
+
+
+
+
Global Variables
Variabili Globali
-
+
+
+
+
+
+
+
+
+
Channel Outputs
-
+
+
+
+
+
+
+
+
+
Mix Outputs
-
+
+
+
+
+
+
+
+
+
L
o
g
@@ -9857,7 +13996,15 @@ c
-
+
+
+
+
+
+
+
+
+
G
l
o
@@ -9868,7 +14015,15 @@ l
-
+
+
+
+
+
+
+
+
+
C
h
a
@@ -9881,7 +14036,15 @@ s
-
+
+
+
+
+
+
+
+
+
M
i
x
@@ -10720,161 +14883,385 @@ s
Setup
+
+
+
+
+
+
+
Center beep
Avviso centraggio
+
+
+
+
+
+
+
OFF
Spento
+
+
+
+
+
+
+
Model Image
Immagine modello
+
+
+
+
+
+
+
Exponential
Esponenziale
+
+
+
+
+
+
+
Throttle Trim Idle Only
Trim Motore solo Idle
+
+
+
+
+
+
+
Timer 3
Temporizzatore 3
+
+
+
+
+
+
+
Extra Fine
Extra Fine
+
+
+
+
+
+
+
Fine
Fine
+
+
+
+
+
+
+
Medium
Medio
+
+
+
+
+
+
+
Coarse
Ampio
+
+
+
+
+
+
+
Display Checklist
Mostra Note
+
+
+
+
+
+
+
Timer 2
Temporizzatore 2
+
+
+
+
+
+
+
Timer 1
Temporizzatore 1
+
+
+
+
+
+
+
Top LCD Timer
+
+
+
+
+
+
+
Never
Mai
+
+
+
+
+
+
+
On change
Al cambiamento
+
+
+
+
+
+
+
Always
Sempre
+
+
+
+
+
+
+
Global Functions
Funzioni Globali
+
+
+
+
+
+
+
Edit Checklist...
+
+
+
+
+
+
+
Throttle Source
Sorgente motore
+
+
+
+
+
+
+
Trim Step
Passo trim
+
+
+
+
+
+
+
Trims Display
Mostra trims
+
+
+
+
+
+
+
Warnings
Avvisi
+
+
+
+
+
+
+
Switch Warnings
Avviso interruttore
+
+
+
+
+
+
+
Pot Warnings
Avviso Pot
+
+
+
+
+
+
+
Manual
Manuale
+
+
+
+
+
+
+
Auto
Auto
+
+
+
+
+
+
+
Model
Modello
+
+
+
+
+
+
+
Extended Limits
Limiti estesi
+
+
+
+
+
+
+
Extended Trims
Trim estesi
+
+
+
+
+
+
+
Throttle Warning
Avviso Motore
+
+
+
+
+
+
+
Reverse throttle operation.
If this is checked the throttle will be reversed. Idle will be forward, trim will also be reversed and the throttle warning will be reversed as well.
@@ -10886,6 +15273,13 @@ Se l'opzione selezionata lo stick motore verrà rovesciato. Il minimo sarà
+
+
+
+
+
+
+
Reverse Throttle
Stick Motore invertito
@@ -11253,181 +15647,421 @@ Profile ID: [%1]; Radio ID: [%2]
SimulatorMainWindow
-
+
+
+
+
+
+
+
+
+
OpenTx Simulator
-
+
+
+
+
+
+
+
+
+
View
-
+
+
+
+
+
+
+
+
+
Radio Window
-
+
+
+
+
+
+
+
+
+
Reload...
-
+
+
+
+
+
+
+
+
+
Tools
-
+
+
+
+
+
+
+
+
+
Toolbar
-
+
+
+
+
+
+
+
+
+
Reload Lua Scripts
-
+
+
+
+
+
+
+
+
+
Reload the Lua environment on the simulated radio.
-
+
+
+
+
+
+
+
+
+
F7
-
+
+
+
+
+
+
+
+
+
Reload Radio Data
-
+
+
+
+
+
+
+
+
+
Reload all radio data without restarting the simulator.
-
+
+
+
+
+
+
+
+
+
F9
-
+
+
+
+
+
+
+
+
+
Key Mapping
-
+
+
+
+
+
+
+
+
+
Show keyboard maping reference.
-
+
+
+
+
+
+
+
+
+
F1
-
+
+
+
+
+
+
+
+
+
Joystick Settings
-
+
+
+
+
+
+
+
+
+
Open joystick configuration settings dialog.
-
+
+
+
+
+
+
+
+
+
F3
-
+
+
+
+
+
+
+
+
+
LCD Screenshot
-
+
+
+
+
+
+
+
+
+
Save a screenshot of the current simulated LCD screen.
-
+
+
+
+
+
+
+
+
+
F8
-
+
+
+
+
+
+
+
+
+
Dock In Main Window
-
+
+
+
+
+
+
+
+
+
Show the radio in the main window or as a separate "floating" window.
-
+
+
+
+
+
+
+
+
+
Menu Bar
-
+
+
+
+
+
+
+
+
+
Show or hide the top menu bar.
-
+
+
+
+
+
+
+
+
+
Alt+M
-
+
+
+
+
+
+
+
+
+
Constrain Width
-
+
+
+
+
+
+
+
+
+
Set radio widget width to be a fixed size.
-
+
+
+
+
+
+
+
+
+
Constrain Height
-
+
+
+
+
+
+
+
+
+
Set radio widget height to be a fixed size.
@@ -11508,76 +16142,172 @@ Profile ID: [%1]; Radio ID: [%2]
SimulatorStartupDialog
-
+
+
+
+
+
+
+
+
+
OpenTX Simulator - Startup Options
-
+
+
+
+
+
+
+
+
+
Simulator Startup Options:
-
+
+
+
+
+
+
+
+
+
Radio Profile:
-
+
+
+
+
+
+
+
+
+
Existing radio profiles are shown here.<br />
Create or edit profiles using the Companion application.
-
+
+
+
+
+
+
+
+
+
Radio Type:
-
+
+
+
+
+
+
+
+
+
Existing radio simulators are shown here.<br />
The radio type specified in the selected profile is used by default.
-
+
+
+
+
+
+
+
+
+
Data Source:
-
+
+
+
+
+
+
+
+
+
Data File:
-
+
+
+
+
+
+
+
+
+
Data Folder:
-
+
+
+
+
+
+
+
+
+
SD Image Path:
-
+
+
+
+
+
+
+
+
+
Radio data (.bin/.eeprom/.otx) image file to use. A new file with a default image will be created if necessary.<br />
<b>NOTE</b>: any existing EEPROM data incompatible with the selected radio type may be overwritten!
-
+
+
+
+
+
+
+
+
+
Select data file...
@@ -11585,59 +16315,147 @@ The radio type specified in the selected profile is used by default.
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
...
-
+
+
+
+
+
+
+
+
+
Directory containing RADIO and MODELS folders to use.<br />
New folder(s) with default radio/model will be created here if necessary.
-
+
+
+
+
+
+
+
+
+
Select data folder...
-
+
+
+
+
+
+
+
+
+
Directory containing the SD card image to use.<br/>
The default is configured in the chosen Radio Profile.
-
+
+
+
+
+
+
+
+
+
Select SD card image folder...
-
+
+
+
+
+
+
+
+
+
Select which of the data sources (File/Folder/SD Card) you would like to start the simulator with.
-
+
+
+
+
+
+
+
+
+
File
Documento
-
+
+
+
+
+
+
+
+
+
Folder
-
+
+
+
+
+
+
+
+
+
SD Path
@@ -11666,7 +16484,15 @@ The default is configured in the chosen Radio Profile.
SimulatorWidget
-
+
+
+
+
+
+
+
+
+
Companion Simulator
Simulatore di Companion
@@ -11754,6 +16580,20 @@ The default is configured in the chosen Radio Profile.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
@@ -11793,6 +16633,13 @@ The default is configured in the chosen Radio Profile.
StyleEditDialog
+
+
+
+
+
+
+
@@ -11801,21 +16648,49 @@ The default is configured in the chosen Radio Profile.
+
+
+
+
+
+
+
&Reset to default
+
+
+
+
+
+
+
&Cancel
+
+
+
+
+
+
+
&OK
+
+
+
+
+
+
+
This feature does not validate your changes and assumes you are familiar with CSS syntax for QT.
@@ -12073,190 +16948,475 @@ Too many errors, giving up.
Telemetry
+
+
+
+
+
+
+
A1
A1
+
+
+
+
+
+
+
A2
A2
+
+
+
+
+
+
+
RSSI
RSSI
+
+
+
+
+
+
+
Alarm 1
Allarme 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
----
----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Yellow
Giallo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Orange
Arancione
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Red
Rosso
+
+
+
+
+
+
+
Alarm 2
Allarme 2
+
+
+
+
+
+
+
Disable telemetry audio warnings
+
+
+
+
+
Source
Sorgente
+
+
+
+
+
+
+
Center Silent
+
+
+
+
+
+
+
Altitude source
Misura dell'altitudine
+
+
+
+
+
+
+
Volts source
Misura della tensione
+
+
+
+
+
+
+
Top Bar
Barra superiore
+
+
+
+
+
+
+
Serial Protocol
Protocollo seriale
+
+
+
+
+
+
+
Sensors
Sensori
+
+
+
+
+
+
+
Disable multi sensor handling
+
+
+
+
+
+
+
Volt source
Misura della tensione
+
+
+
+
+
+
+
Current source
Misura della corrente
+
+
+
+
+
+
+
Protocol
Protocollo
+
+
+
+
+
+
+
None
Nessuno
+
+
+
+
+
+
+
FrSky Sensor Hub
FrSky Sensor Hub
+
+
+
+
+
+
+
Blades
Pale dell'elica
+
+
+
+
+
+
+
Sink Max
Max Discesa
+
+
+
+
+
+
+
Climb Max
Max Salita
+
+
+
+
+
+
+
Sink Min
Min Discesa
+
+
+
+
+
+
+
Climb Min
Min Salita
+
+
+
+
+
+
+
Vario source
Sorgente per il Vario
+
+
+
+
+
+
+
Vario limits
Limiti per il Vario
+
+
+
+
+
+
+
Altimetry
Altimetro
+
+
+
+
+
+
+
mAh
mAh
+
+
+
+
+
+
+
A
A
+
+
+
+
+
+
+
Various
Varie
+
+
+
+
+
+
+
mAh count
Conteggio mAh
+
+
+
+
+
+
+
FAS Offset
Offset FAS
+
+
+
+
+
+
+
Persistent mAh
mAh persistenti
@@ -12265,107 +17425,289 @@ Too many errors, giving up.
TelemetryAnalog
+
+
+
+
+
+
+
Unit
Unità
+
+
+
+
+
+
+
Max Value
Valore MAX
+
+
+
+
+
+
+
Alarm 1
Allarme 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
----
----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Yellow
Giallo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Orange
Arancione
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Red
Rosso
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<
<
+
+
+
+
+
+
+
+
+
+
+
+
+
+
>
>
+
+
+
+
+
+
+
Alarm 2
Allarme 2
+
+
+
+
+
+
+
Offset
Spostamento
+
+
+
+
+
+
+
Volts (V)
Voltaggio (V)
+
+
+
+
+
+
+
Amps (A)
Corrente (A)
+
+
+
+
+
+
+
Speed (m/s or ft/s)
Velocità (m/s o ft/s)
+
+
+
+
+
+
+
Raw (-)
Grezza (-)
+
+
+
+
+
+
+
Speed (km/h or miles/h)
Velocità (km/h o mph)
+
+
+
+
+
+
+
Meters (m or ft)
Metri (m o ft)
+
+
+
+
+
+
+
Temp (°)
Temperatura (°)
+
+
+
+
+
+
+
Fuel (%)
Carburante (%)
+
+
+
+
+
+
+
mAmps (mA)
Corrente (mA)
@@ -12379,6 +17721,13 @@ Too many errors, giving up.
TelemetryCustomScreen
+
+
+
+
+
+
+
Custom Screen Type
Tipo schermo personalizzato
@@ -12404,21 +17753,49 @@ Too many errors, giving up.
+
+
+
+
+
+
+
Min
Min
+
+
+
+
+
+
+
Source
Sorgente
+
+
+
+
+
+
+
Gauge
Barra
+
+
+
+
+
+
+
Max
Max
@@ -12532,86 +17909,199 @@ Too many errors, giving up.
TelemetrySensor
+
+
+
+
+
+
+
Form
+
+
+
+
+
+
+
Custom
Personalizzato
+
+
+
+
+
+
+
Calculated
Calcolato
+
+
+
+
+
+
+
Id
+
+
+
+
+
+
+
Instance
Istanza
+
+
+
+
Rx
+
+
+
+
Mod.
+
+
+
+
+
+
+
Add
Somma
+
+
+
+
+
+
+
Average
Media
+
+
+
+
+
+
+
Min
Min
+
+
+
+
+
+
+
Max
Max
+
+
+
+
+
+
+
Multiply
Moltiplica
+
+
+
+
+
+
+
Totalize
Totalizza
+
+
+
+
+
+
+
Cell
Cella
+
+
+
+
+
+
+
Consumption
Consumo
+
+
+
+
+
+
+
Dist
+
+
+
+
+
+
+
Cells Sensor :
Sensore celle :
@@ -12624,191 +18114,506 @@ Too many errors, giving up.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
---
---
+
+
+
+
+
+
+
GPS Sensor :
Sensore GPS :
+
+
+
+
+
+
+
Alt. Sensor :
Altimetro :
+
+
+
+
+
+
+
Sensor :
+
+
+
+
+
+
+
V
+
+
+
+
+
+
+
A
+
+
+
+
+
+
+
mA
+
+
+
+
+
+
+
kt
+
+
+
+
+
+
+
m/s
+
+
+
+
+
+
+
ft/s
+
+
+
+
+
+
+
km/h
+
+
+
+
+
+
+
mph
+
+
+
+
+
+
+
m
+
+
+
+
+
+
+
ft
+
+
+
+
+
+
+
°C
+
+
+
+
+
+
+
°F
+
+
+
+
+
+
+
%
+
+
+
+
+
+
+
mAh
+
+
+
+
+
+
+
W
+
+
+
+
+
+
+
mW
+
+
+
+
+
+
+
dBm
+
+
+
+
+
+
+
g
+
+
+
+
+
+
+
°
+
+
+
+
+
+
+
Rad
+
+
+
+
+
+
+
mL
+
+
+
+
+
+
+
US fl.Oz.
+
+
+
+
+
+
+
Raw (-)
Grezza (-)
+
+
+
+
+
+
+
RPM
+
+
+
+
+
+
+
Precision
Precisione
+
+
+
+
+
+
+
Ratio
+
+
+
+
+
+
+
Blades
Pale dell'elica
+
+
+
+
+
+
+
Offset
Spostamento
+
+
+
+
+
+
+
Multiplier
Moltiplicatore
+
+
+
+
+
+
+
Auto Offset
+
+
+
+
+
+
+
Filter
Filtra
+
+
+
+
+
+
+
Positive
Positivo
+
+
+
+
+
+
+
Logs
Registra
+
+
+
+
+
+
+
Persistent
Persistente
@@ -12840,116 +18645,268 @@ Too many errors, giving up.
TelemetrySimulator
-
+
+
+
+
+
+
+
+
+
Telemetry Simulator
Simulatore Telemetria
-
+
+
+
+
+
+
+
+
+
VFAS
-
+
+
+
+
+
+
+
+
+
RSSI
RSSI
-
+
+
+
+
+
+
+
+
+
A1
A1
-
+
+
+
+
+
+
+
+
+
A2
A2
-
+
+
+
+
+
+
+
+
+
Simulate
Simula Modello
-
+
+
+
+
+
+
+
+
+
Replay SD Log File
-
+
+
+
+
+
+
+
+
+
Replay rate
-
+
+
+
+
+
+
+
+
+
Load
-
+
+
+
+
+
+
+
+
+
|>
-
+
+
+
+
+
+
+
+
+
<|
-
+
+
+
+
+
+
+
+
+
>
>
-
+
+
+
+
+
+
+
+
+
<-
-
+
+
+
+
+
+
+
+
+
X
X
-
+
+
+
+
+
+
+
+
+
Row #
Timestamp
-
+
+
+
+
+
+
+
+
+
1/5x
9X {1/5x?}
-
+
+
+
+
+
+
+
+
+
5x
9X {5x?}
-
+
+
+
+
+
+
+
+
+
No Log File Currently Loaded
-
+
+
+
+
+
+
+
+
+
RAS
@@ -12957,21 +18914,61 @@ Timestamp
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
V / ratio
-
+
+
+
+
+
+
+
+
+
Db
-
+
+
+
+
+
+
+
+
+
RxBt
@@ -12989,121 +18986,377 @@ Timestamp
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<html><head/><body><p><br/></p></body></html>
-
+
+
+
+
+
+
+
+
+
Tmp1
-
+
+
+
+
+
+
+
+
+
A3
A3
-
+
+
+
+
+
+
+
+
+
A4
A4
-
+
+
+
+
+
+
+
+
+
Tmp2
-
+
+
+
+
+
+
+
+
+
Fuel
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
°C
-
+
+
+
+
+
+
+
+
+
ml
-
+
+
+
+
+
+
+
+
+
%
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Meters
-
+
+
+
+
+
+
+
+
+
Alt
Alt
-
+
+
+
+
+
+
+
+
+
VSpd
-
+
+
+
+
+
+
+
+
+
m/s
-
+
+
+
+
+
+
+
+
+
Fuel Qty
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
km/h
-
+
+
+
+
+
+
+
+
+
Hdg
-
+
+
+
+
+
+
+
+
+
ASpd
@@ -13111,135 +19364,335 @@ Timestamp
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
G
-
+
+
+
+
+
+
+
+
+
GPS
-
+
+
+
+
+
+
+
+
+
Lat,Lon
(dec.deg.)
-
+
+
+
+
+
+
+
+
+
AccX
-
+
+
+
+
+
+
+
+
+
dd-MM-yyyy
hh:mm:ss
-
+
+
+
+
+
+
+
+
+
Date
-
+
+
+
+
+
+
+
+
+
Amps
-
+
+
+
+
+
+
+
+
+
AccZ
-
+
+
+
+
+
+
+
+
+
GAlt
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Volts
-
+
+
+
+
+
+
+
+
+
Cels
-
+
+
+
+
+
+
+
+
+
Curr
-
+
+
+
+
+
+
+
+
+
AccY
-
+
+
+
+
+
+
+
+
+
GSpd
-
+
+
+
+
+
+
+
+
+
Degrees
-
+
+
+
+
+
+
+
+
+
Setting RSSI to zero simulates telemetry and radio link loss.
-
+
+
+
+
+
+
+
+
+
Set RSSI to zero when paused.
-
+
+
+
+
+
+
+
+
+
Stop sending telemetry data when the Telemetry Simulator window is hidden.
-
+
+
+
+
+
+
+
+
+
Pause simulation when hidden.
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
RPM
-
+
+
+
+
+
+
+
+
+
When enabled, sends any non-blank values as simulated telemetry data.
Quando abilitato invia i valori non nulli come dati telemetrici simulati.
@@ -13281,11 +19734,25 @@ hh:mm:ss
Timer
+
+
+
+
+
+
+
Countdown
Conto alla rovescia
+
+
+
+
+
+
+
Minute Call
Avviso Minuto
@@ -13369,26 +19836,61 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
Trainer
+
+
+
+
+
+
+
Form
+
+
+
+
+
+
+
Mode
Modo
+
+
+
+
+
+
+
Input
Ingresso
+
+
+
+
+
+
+
Weight
Peso
+
+
+
+
+
+
+
Rud
Dir
@@ -13401,6 +19903,62 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Beeper volume
0 - Quiet. No beeps at all.
@@ -13421,6 +19979,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Off
NO
@@ -13429,6 +20015,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+= (Sum)
+= (Somma)
@@ -13437,6 +20051,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
:= (Replace)
:= (Sostituisci)
@@ -13445,6 +20087,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn1
chn1
@@ -13453,6 +20123,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn2
chn2
@@ -13461,6 +20159,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn3
chn3
@@ -13469,21 +20195,70 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn4
chn4
+
+
+
+
+
+
+
Ele
Ele
+
+
+
+
+
+
+
Thr
Mot
+
+
+
+
+
+
+
Ail
Ale
@@ -13492,7 +20267,15 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
TrainerSimulator
-
+
+
+
+
+
+
+
+
+
Trainer simulator
Simulatore allievo
@@ -13917,6 +20700,13 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
burnConfigDialog
+
+
+
+
+
+
+
Location of AVRDUDE executable
Eseguibile di AVRDUDE
@@ -13925,17 +20715,59 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The location of the AVRDUDE executable.
Il percorso completo dell'eseguibile di AVRDUDE.
+
+
+
+
+
+
+
Programmer Configuration
Configuration AVRDUDE / SAM-BA
Configurazione del programmatore
+
+
+
+
+
+
+
DFU-Util Location
Eseguibile di DFU-Util
@@ -13943,6 +20775,27 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Use this button to browse and look for the AVRDUDE executable file.
Usa questo pulsante per cercare il file eseguibile di AVRDUDE.
@@ -13950,16 +20803,51 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Browse...
Sfoglia...
+
+
+
+
+
+
+
Programmer
Programmatore
+
+
+
+
+
+
+
Programmer used for communicating with the controller.
Please consult the programmer's documentation and the AVRDUDE documentation to select the appropriate programmer.
Il programmatore utilizzato per la comunicazione con la radio.
@@ -13967,23 +20855,65 @@ Consultare la documentazione del programmatore e quella di AVRDUDE per seleziona
+
+
+
+
+
+
+
List all available programmers.
Lista dei programmatori supportati.
+
+
+
+
+
+
+
List Available
Elenco programmatori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Extra arguments that will be passed to AVRDUDE on every call
Parametri opzionali da passare a AVRDUDE ad ogni chiamata
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Extra arguments used in AVRDUDE.
This can be used for providing extra information to AVRDUDE.
@@ -13995,74 +20925,186 @@ utilizzatelo solo se sapete cosa state facendo. Non viene fatto alcun controllo
+
+
+
+
+
+
+
Extra Arguments
Parametri opzionali
+
+
+
+
+
+
+
Show AVRDUDE help
Mostra l'aiuto di AVRDUDE
+
+
+
+
+
+
+
Show Help
Mostra aiuto
+
+
+
+
+
+
+
Communication port to the programmer.
Porta di comunicazione per il programmatore.
+
+
+
+
+
+
+
MCU
Processore
+
+
+
+
+
+
+
at91sam3s8-9xr
at91sam3s8-9xr
+
+
+
+
+
+
+
Alternate device
Dispositivo alternativo
+
+
+
+
+
+
+
Use advanced controls
Usa controlli avanzati
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Port
Porta
+
+
+
+
+
+
+
AVRDUDE Location
Eseguibile di AVRDUDE
+
+
+
+
+
+
+
SAM-BA Location
Eseguibile di SAM-BA
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Location of sam-ba executable
Il percorso completo dell'eseguibile di sam-ba
+
+
+
+
+
+
+
ARM MCU
+
+
+
+
+
+
+
sam-ba serial port
Porta seriale per sam-ba
@@ -14109,12 +21151,40 @@ utilizzatelo solo se sapete cosa state facendo. Non viene fatto alcun controllo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CPU of your TX
CPU della vostra radio
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CPU present on your 9x radio
Should be m64 for stock radios
m2560 for v4.1 boards
@@ -14127,85 +21197,197 @@ m2560 per le schede v4.1
joystickDialog
-
+
+
+
+
+
+
+
+
+
Configure Joystick
Configurazione Joystick
-
+
+
+
+
+
+
+
+
+
Ch2
Ch2
-
+
+
+
+
+
+
+
+
+
Ch1
Ch1
-
+
+
+
+
+
+
+
+
+
Ch4
Ch4
-
+
+
+
+
+
+
+
+
+
Ch6
Ch6
-
+
+
+
+
+
+
+
+
+
Ch3
Ch3
-
+
+
+
+
+
+
+
+
+
Ch5
Ch5
-
+
+
+
+
+
+
+
+
+
Ch7
Ch7
-
+
+
+
+
+
+
+
+
+
Ch8
Ch8
-
+
+
+
+
+
+
+
+
+
Instructions
Istruzioni
-
+
+
+
+
+
+
+
+
+
Enable
Abilita
-
+
+
+
+
+
+
+
+
+
Cancel
Annulla
-
+
+
+
+
+
+
+
+
+
Back
-
+
+
+
+
+
+
+
+
+
Start
Inizio
@@ -14216,7 +21398,15 @@ m2560 per le schede v4.1
-
+
+
+
+
+
+
+
+
+
Ok
Ok
diff --git a/companion/src/translations/companion_ja.ts b/companion/src/translations/companion_ja.ts
index b09ea0080..0db7a42a8 100644
--- a/companion/src/translations/companion_ja.ts
+++ b/companion/src/translations/companion_ja.ts
@@ -97,12 +97,26 @@
AppPreferencesDialog
+
+
+
+
+
+
+
Edit Settings
このダイアログはメインメニュー->設定
設定
+
+
+
+
+
+
+
Radio Profile
様々な操作に対応する複数のうろファイルが存在する場合があります。
送信機プロファイル
@@ -114,88 +128,256 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Select Folder
フォルダの選択
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The profile specific folder, if set, will override general Backup folder
プロファイル保存フォルダが指定される場合は、バックアップフォルダを上書き保存します
+
+
+
+
+
+
+
Splash Screen
起動イメージ
+
+
+
+
+
+
+
Select Image
イメージの選択
+
+
+
+
+
+
+
Clear Image
イメージの消去
+
+
+
+
+
+
+
Profile Name
プロファイル名
+
+
+
+
+
+
+
Radio Type
送信機タイプ
+
+
+
+
+
+
+
Menu Language
メニュー言語
+
+
+
+
+
+
+
Build Options
ビルドオプション
+
+
+
+
+
+
+
SD Structure path
SDカード保存先パス
+
+
+
+
+
+
+
Backup folder
バックアップフォルダ
+
+
+
+
+
+
+
If set it will override the application general setting
設定されている場合はアプリケーション設定を上書き保存します
+
+
+
+
+
+
+
if set, will override general backup enable
設定されている場合は有効なバックアップを上書き保存します
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Enable automatic backup before writing firmware
設定した場合は自動バックアップを有効にします
+
+
+
+
+
+
+
General Settings
一般設定
+
+
+
+
+
+
+
Default Stick Mode
初期スティックモード
+
+
+
+
+
+
+
Mode selection:
Mode 1:
@@ -219,386 +401,913 @@ Mode 4:
+
+
+
+
+
+
+
Mode 1 (RUD ELE THR AIL)
モード1 (左:エレベーター・ラダー 右:スロットル・エルロン)
+
+
+
+
+
+
+
Mode 2 (RUD THR ELE AIL)
モード2 (左:スロットル・ラダー 右:エレベーター・エルロン)
+
+
+
+
+
+
+
Mode 3 (AIL ELE THR RUD)
モード3 (左:エレベーター・エルロン 右:スロットル・ラダー)
+
+
+
+
+
+
+
Mode 4 (AIL THR ELE RUD)
モード4 (左:スロットル・エルロン 右:エレベーター・ラダー)
+
+
+
+
+
+
+
Default Channel Order
初期チャンネルマップ
+
+
+
+
+
+
+
<html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html>
<html><head/><body><p>チャンネルマップ</p><p><br/></p><p>モデル作成された際の初期チャンネルマップを定義します</p></body></html>
+
+
+
+
+
+
+
R E T A
↔RUD ↕ELE ↕THR ↔AIL [R E T A]
+
+
+
+
+
+
+
R E A T
↔RUD ↕ELE ↔AIL ↕THR [R E A T]
+
+
+
+
+
+
+
R T E A
↔RUD ↕THR ↕ELE ↔AIL [R T E A]
+
+
+
+
+
+
+
R T A E
↔RUD ↕THR ↔AIL ↕ELE [R T A E]
+
+
+
+
+
+
+
R A E T
↔RUD ↔AIL ↕ELE ↕THR [R A E T]
+
+
+
+
+
+
+
R A T E
↔RUD ↔AIL ↕THR ↕ELE [R A T E]
+
+
+
+
+
+
+
E R T A
↕ELE ↔RUD ↕THR ↔AIL [E R T A]
+
+
+
+
+
+
+
E R A T
↕ELE ↔RUD ↔AIL ↕THR [E R A T]
+
+
+
+
+
+
+
E T R A
↕ELE ↕THR ↔RUD ↔AIL [E T R A]
+
+
+
+
+
+
+
E T A R
↕ELE ↕THR ↔AIL ↔RUD [E T A R]
+
+
+
+
+
+
+
E A R T
↕ELE ↔AIL ↔RUD ↕THR [E A R T]
+
+
+
+
+
+
+
E A T R
↕ELE ↔AIL ↕THR ↔RUD [E A T R]
+
+
+
+
+
+
+
T R E A
↕THR ↔RUD ↕ELE ↔AIL [T R E A]
+
+
+
+
+
+
+
T R A E
↕THR ↔RUD ↔AIL ↕ELE [T R A E]
+
+
+
+
+
+
+
T E R A
↕THR ↕ELE ↔RUD ↔AIL [T E R A]
+
+
+
+
+
+
+
T E A R
↕THR ↕ELE ↔AIL ↔RUD [T E A R]
+
+
+
+
+
+
+
T A R E
↕THR ↔AIL ↔RUD ↕ELE [T A R E]
+
+
+
+
+
+
+
T A E R
↕THR ↔AIL ↕ELE ↔RUD [T A E R]
+
+
+
+
+
+
+
A R E T
↔AIL ↔RUD ↕ELE ↕THR [A R E T]
+
+
+
+
+
+
+
A R T E
↔AIL ↔RUD ↕THR ↕ELE [A R T E]
+
+
+
+
+
+
+
A E R T
↔AIL ↕ELE ↔RUD ↕THR [A E R T]
+
+
+
+
+
+
+
A E T R
↔AIL ↕ELE ↕THR ↔RUD [A E T R]
+
+
+
+
+
+
+
A T R E
↔AIL ↕THR ↔RUD ↕ELE [A T R E]
+
+
+
+
+
+
+
A T E R
↔AIL ↕THR ↕ELE ↔RUD [A T E R]
+
+
+
+
+
+
+
Append version number to FW file name
ファームウェア ファイル名にバージョン番号を追加
+
+
+
+
+
+
+
Offer to write FW to Tx after download
ダウンロード後、送信機にFWを適用可能な事を通知
+
+
+
+
+
+
+
Other Settings
その他の設定
+
+
+
+
+
+
+
Application Settings
アプリケーション設定
+
+
+
+
+
+
+
Automatic check for OpenTX firmware updates
OpenTXファームアップデートの自動チェック
+
+
+
+
+
+
+
Automatic check for Companion updates
Companionアップデートの自動チェック
+
+
+
+
+
+
+
most recently used files
最近使用したファイル
+
+
+
+
+
+
+
Startup Settings
スタートアップ設定
+
+
+
+
+
+
+
Google Earth Executable
Google Earthの実行
+
+
+
+
+
+
+
Automatic Backup Folder
自動バックアップフォルダ
+
+
+
+
+
+
+
Remember
ファイル履歴
+
+
+
+
+
+
+
Show splash screen when Companion starts
Companion起動時に起動イメージを表示
+
+
+
+
+
+
+
Output Logs Folder
ログ出力フォルダ
+
+
+
+
+
+
+
<html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html>
<html><head/><body><p>このオプションは、機体モデルが削除または移動した際、そのモデルスロットが保持される旧版のOpenTxバージョンの挙動を維持します。</p><p>このオプションが選択されない場合は、他の機体モデルは削除により残された差異を埋めるために並べ替えるかもしれません。</p></body></html>
+
+
+
+
+
+
+
Remove empty model slots when deleting models (only applies for radios w/out categories)
モデルを削除するとき同時に空モデルスロットを削除 (カテゴリなしの機体モデルにのみ適用)
+
+
+
+
+
+
+
Use model wizard
機体モデルウィザードを使用
+
+
+
+
+
+
+
Open model editor
機体モデルエディタを開く
+
+
+
+
+
+
+
Just create the model
機体モデルの作成のみ
+
+
+
+
+
+
+
Debug Output Logging
出力したログのデバッグ
+
+
+
+
+
+
+
Only show user splash images
オリジナルの起動イメージのみを表示
+
+
+
+
+
+
+
Show user and companion splash images
オリジナルとCompanion標準イメージを表示
+
+
+
+
+
+
+
Select Executable
実行ファイル選択
+
+
+
+
+
+
+
<html><head/><body><p>Keep a log of all debugging messages generated by the desktop Companion/Simulator applications. An OpenTX developer may request this to help diagnose an issue.</p></body></html>
<html><head/><body><p>デスクトップのCompanion / シミュレータ アプリケーションにより生成された、すべてのデバッグメッセージのログを保存します。OpenTX開発者は問題を診断・解析するため、ログを要求するかもしれません。</p></body></html>
+
+
+
+
+
+
+
Application (Companion/Simulator)
アプリケーション (Companion / シミュレータ)
+
+
+
+
+
+
+
<html><head/><body><p>Keep a log of all messages generated by the radio firmware when running in Simulator. This is the same information one would also see in the Simulator <span style=" font-style:italic;">Debug Output</span> window.</p></body></html>
<html><head/><body><p>シミュレータで実行しているときは、送信機ファームウェアによって生成されたすべてのメッセージのログを保存してください。これはシミュレータの<span style = "font-style:italic;">デバッグ出力</span>ウィンドウにも同じ情報が表示されます。</p></body></html>
+
+
+
+
+
+
+
Radio Firmware (in Simulator)
送信機ファームウェア (シミュレータ内)
+
+
+
+
+
+
+
Splash Screen Library
起動イメージライブラリ
+
+
+
+
+
+
+
User Splash Screens
オリジナル起動イメージ
+
+
+
+
+
+
+
Action on New Model
機体モデル新規作成
+
+
+
+
Release channel
リリース状態 選択
+
+
+
+
Releases (stable)
リリース版 (Stable)
+
+
+
+
Release candidates (testing)
Release candidates RC版 (Testing)
+
+
+
+
Nightly builds (unstable)
ナイトリービルド版 (Unstable)
+
+
+
+
+
+
+
Simulator Settings
シミュレータ設定
+
+
+
+
+
+
+
Calibrate
キャリブレート
+
+
+
+
+
+
+
Blue
青色
+
+
+
+
+
+
+
Green
緑色
+
+
+
+
+
+
+
Red
赤色
+
+
+
+
+
+
+
Orange
オレンジ
+
+
+
+
+
+
+
Yellow
黄色
+
+
+
+
+
+
+
Screenshot capture folder
画面キャプチャフォルダ
+
+
+
+
+
+
+
Only capture to clipboard
キャプチャをクリップボードのみにコピー
+
+
+
+
+
+
+
Enable
有効
+
+
+
+
+
+
+
Joystick
スティック
+
+
+
+
+
+
+
Simulator BackLight
バックライト
+
+
+
+
+
+
+
Remember simulator switch values
シミュレータで設定した各スイッチの値を記憶
+
+
+
+
+
+
+
Simulator Volume Gain
シミュレータ 音量幅
@@ -679,6 +1388,31 @@ Mode 4:
Images (%1)
イメージ (%1)
+
+
+
+
+ Use releases (stable)
+
+
+
+
+ Use release candidates (testing)
+
+
+
+
+
+
+ Use nightly builds (unstable)
+
+
+
+
+
+ Use releases and release candidates (testing)
+
+
BinEepromFormat
@@ -899,36 +1633,85 @@ Mode 4:
ChecklistDialog
+
+
+
+
+
+
+
Edit Checklist
チェックリスト編集
+
+
+
+
+
+
+
Line nn, Col nn
行 nn, カラー nn
+
+
+
+
+
+
+
&Import...
&インポート...
+
+
+
+
+
+
+
&Cancel
&キャンセル
+
+
+
+
+
+
+
&OK
&OK
+
+
+
+
+
+
+
Please note, the maximum width displayable is radio model limited. Also, renaming the model will break the link to this checklist file.
注: 表示可能な最大幅は送信機モデルによって異なります。また、モデル名称を変更すると、このチェックリストファイルへのリンクが解除されます。
+
+
+
+
+
+
+
File: unknown
ファイル: 不明
@@ -1184,31 +1967,73 @@ If you have a settings backup file, you may import that instead.
CompareDialog
+
+
+
+
+
+
+
Compare Models
機体モデルの比較
+
+
+
+
+
+
+
To compare models, drag and drop them anywhere in this window.
機体モデルを比較するには、モデルをこのウィンドウ内の任意の場所にドラッグ&ドロップしてください。
+
+
+
+
+
+
+
Close
閉じる
+
+
+
+
+
+
+
Style
スタイル
+
+
+
+
+
+
+
Print
出力
+
+
+
+
+
+
+
Print to file
ファイルへ出力
@@ -1365,87 +2190,213 @@ If you have a settings backup file, you may import that instead.
Curves
+
+
+
+
+
+
+
Curve name
カーブ名
+
+
+
+
+
+
+
Fixed X
等間隔
+
+
+
+
+
+
+
Custom X
カスタム
+
+
+
+
+
+
+
Lines
直線
+
+
+
+
+
+
+
Smooth
なめらか
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Curve type
カーブタイプ
+
+
+
+
+
+
+
Curve Creator
カーブ クリエイター
+
+
+
+
+
+
+
Coefficient
カーブ係数
+
+
+
+
+
+
+
Side
片側カーブ
+
+
+
+
+
+
+
Y at X=-100
カーブ左端の高さ
+
+
+
+
+
+
+
Both
両カーブ
+
+
+
+
+
+
+
x>0
右カーブ
+
+
+
+
+
+
+
x<0
左カーブ
+
+
+
+
+
+
+
Y at X=100
カーブ右端の高さ
+
+
+
+
+
+
+
Apply
適用
+
+
+
+
+
+
+
Y at X=0
カーブ中心の高さ
+
+
+
+
+
+
+
Point size
点のサイズ
@@ -1859,18 +2810,53 @@ If you have a settings backup file, you may import that instead.
CustomizeSplashDialog
+
+
+
+
+
+
+
Transmitter Splash Screen Editor
送信機 起動イメージ エディタ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Invert
反転
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Open Splash Library
イメージライブラリを開く
@@ -1879,30 +2865,114 @@ If you have a settings backup file, you may import that instead.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load Profile
プロファイル ロード
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load FW
FW ロード
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load Pict
画像 ロード
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Save
保存
@@ -2018,48 +3088,48 @@ If you have a settings backup file, you may import that instead.
フィールド %1 変換エラー
-
+
Switch
スイッチ
-
+
Switch
スイッチ
-
+
cannot be exported on this board!
このボードにエクスポートできません!
-
+
Source
選択元
-
+
Source %1 cannot be exported on this board!
このボードでは選択元 %1 をエクスポートできません!
-
+
OpenTX only accepts %1 points in all curves
OpenTXはすべてのカーブで %1 点のみを許容します
-
+
OpenTx only accepts %1 points in all curves
OpenTxはすべてのカーブで %1 点のみを許容します
-
-
+
+
OpenTX on this board doesn't accept this function
このボード上のOpenTXはこの機能を受け付けません
-
+
OpenTX doesn't accept this radio protocol
OpenTXはこの送信機プロトコルを受け付けません
@@ -2068,25 +3138,57 @@ If you have a settings backup file, you may import that instead.
DebugOutput
-
+
+
+
+
+
+
+
+
+
Debug Output
デバッグ出力
-
+
+
+
+
+
+
+
+
+
<html><head/><body><p>Enable or disable the filter. If the button won't stay enabled, it is likely there is a syntax error in the Regular Expression entered.</p></body></html>
<html><head/><body><p>フィルタを有効または無効にします。ボタンが有効にならない場合は、入力した正規表現に構文エラーがある可能性があります。</p></body></html>
-
+
+
+
+
+
+
+
+
+
Filter:
フィルタ:
-
+
+
+
+
+
+
+
+
+
<html><head/><body><p>Enter filter text here. Click the help/info button for details about using the filter. </p><p>
To <b>remove a remembered entry</b> from the filter list, first choose it, and then press <code>Shift-Delete</code> (or <code>Shift-Backspace</code>) key combination.</p></body></html>
<html><head/><body><p>ここにフィルタテキストを入力してください。フィルタの使用方法の詳細は、help / info ボタンをクリックしてください。</p><p>
@@ -2094,61 +3196,141 @@ To <b>remove a remembered entry</b> from the filter list, first cho
-
+
+
+
+
+
+
+
+
+
Buffer:
バッファ:
-
+
+
+
+
+
+
+
+
+
Number of lines to keep in display.
画面へ表示し続ける行数を示します。
-
+
+
+
+
+
+
+
+
+
Filter &Help
フィルタ &ヘルプ
-
+
+
+
+
+
+
+
+
+
Show information about using the filter.
フィルタの使用に関する情報を表示します。
-
+
+
+
+
+
+
+
+
+
Word &Wrap
単語 &重複
-
+
+
+
+
+
+
+
+
+
Toggle word wrapping on/off.
単語の重複チェックのON / OFFを切り替えます。
-
+
+
+
+
+
+
+
+
+
&Clear
&消去
-
+
+
+
+
+
+
+
+
+
Clear the output window of all text.
すべてのテキストの出力ウィンドウを消去します。
-
+
+
+
+
+
+
+
+
+
Enable &Filter
有効 &フィルタ
-
+
+
+
+
+
+
+
+
+
Turn the filter on/off.
フィルタをON / OFFします。
@@ -2167,6 +3349,13 @@ To <b>remove a remembered entry</b> from the filter list, first cho
DownloadDialog
+
+
+
+
+
+
+
Downloading:
ダウンロード中:
@@ -2312,11 +3501,25 @@ To <b>remove a remembered entry</b> from the filter list, first cho
ExpoDialog
+
+
+
+
+
+
+
Flight modes
フライトモード
+
+
+
+
+
+
+
Input name
入力名
@@ -2324,26 +3527,75 @@ To <b>remove a remembered entry</b> from the filter list, first cho
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
GV
GV
+
+
+
+
+
+
+
Source for the mixer.
ミキサー選択元.
+
+
+
+
+
+
+
Weight
ウェイト
+
+
+
+
+
+
+
Switch
スイッチ
+
+
+
+
+
+
+
Switch used to enable the line.
If blank then the input is considered to be "ON" all the time.
この設定を有効にするために使用されるスイッチです。
@@ -2351,71 +3603,169 @@ If blank then the input is considered to be "ON" all the time.
+
+
+
+
+
+
+
Stick Side
スティック端
+
+
+
+
+
+
+
NEG
リバース
+
+
+
+
+
+
+
POS
ノーマル
+
+
+
+
+
+
+
ALL
すべて
+
+
+
+
+
+
+
Scale
スケール
+
+
+
+
+
+
+
Include Trim
トリム含
+
+
+
+
+
+
+
No
いいえ
+
+
+
+
+
+
+
Yes
はい
+
+
+
+
+
+
+
Curve
カーブ
+
+
+
+
+
+
+
Curve applied to the source.
選択元に適用されたカーブ.
+
+
+
+
+
+
+
Source
選択元
+
+
+
+
+
+
+
Line name
Expoライン名
+
+
+
+
+
+
+
Offset
オフセット
+
+
+
+
+
+
+
The source for the mixer
ミキサー選択元
@@ -3063,31 +4413,73 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FirmwarePreferencesDialog
+
+
+
+
+
+
+
Downloads
ダウンロード
+
+
+
+
+
+
+
Check for updates
アップデートのチェック
+
+
+
+
+
+
+
Firmware
ファームウェア
+
+
+
+
+
+
+
Download firmware
ダウンロード ファームウェア
+
+
+
+
+
+
+
Download SD contents
ダウンロード SDカード
+
+
+
+
+
+
+
Latest Download
最新版のダウンロード
@@ -3129,67 +4521,158 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FlashEEpromDialog
+
+
+
+
+
+
+
Write Models and Settings to Radio
モデル・設定を書き込み
+
+
+
+
+
+
+
Load...
ロード...
+
+
+
+
+
+
+
Current Profile
現在のプロファイル
+
+
+
+
+
+
+
Allows Companion to write to older version of the firmware
Companionが古いバージョンのファームウェアでの書き込みを許可します
+
+
+
+
+
+
+
Check Firmware compatibility
ファームウェアの互換性を確認
+
+
+
+
+
+
+
<html><head/><body><p>Saves a dated copy of your eeprom to the backup folder you specified in the Companion settings before writing the current model to the radio.</p></body></html>
<html><head/><body><p>現在のモデルを送信機に書き込む前に、EEPROM情報のコピー(日付)をCompanion設定指定したバックアップフォルダに保存します<p></body></html>
+
+
+
+
+
+
+
Backup before Write
書き込み前にバックアップを取る
+
+
+
+
+
+
+
<html><head/><body><p>Modify calibration parameters using settings from current profile</p></body></html>
現在のプロファイルの設定を使用して校正情報を修正します
+
+
+
+
+
+
+
Patch calibration setting from profile
プロファイルからパッチ適用の有無を設定
+
+
+
+
+
+
+
<html><head/><body><p>Modify HW parameters using settings from current profile</p></body></html>
<html><head/><body><p>現在のプロファイルの設定を使用してハードウェアパラメータを変更します</p></body></html>
+
+
+
+
+
+
+
Patch HW settings from profile
プロファイルからHWパラメータを変更
+
+
+
+
+
+
+
Cancel
キャンセル
+
+
+
+
+
+
+
Write to TX
書き込み
@@ -3247,71 +4730,169 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FlashFirmwareDialog
+
+
+
+
+
+
+
Flash Firmware
ファームウェアの書き込み
+
+
+
+
+
+
+
Load...
ロード...
+
+
+
+
+
+
+
Date & Time
日付・時間
+
+
+
+
+
+
+
Variant
リビジョン
+
+
+
+
+
+
+
Version
バージョン
+
+
+
+
+
+
+
Use profile start screen
profile起動画面を使用
+
+
+
+
+
+
+
Use firmware start screen
firmware起動画面を使用
+
+
+
+
+
+
+
Use library start screen
library起動画面を使用
+
+
+
+
+
+
+
Use another start screen
別の起動画面を使用
+
+
+
+
+
+
+
Allows Companion to write to older version of the firmware
Companionが古いバージョンのファームウェアを適用することを許可します
+
+
+
+
+
+
+
Check Hardware compatibility
ハードウェア互換性を確認する
+
+
+
+
+
+
+
Backup and restore Models and Settings
バックアップとモデル復元と設定
+
+
+
+
+
+
+
Cancel
キャンセル
+
+
+
+
+
+
+
Write to TX
書き込み
@@ -3511,21 +5092,49 @@ You are currently using:
FlightMode
+
+
+
+
+
+
+
Fade In
フェードイン
+
+
+
+
+
+
+
Fade Out
フェードアウト
+
+
+
+
+
+
+
Name
名称
+
+
+
+
+
+
+
Switch
スイッチ
@@ -3715,11 +5324,25 @@ You are currently using:
FusesDialog
+
+
+
+
+
+
+
Fuses
フューズ
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3749,11 +5372,25 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Read Fuses
ヒューズの読み込み
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3787,6 +5424,13 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Reset Fuses
EEPROM - PROTECT
リセット フューズ
@@ -3794,6 +5438,13 @@ EEPROM - 保護
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3827,6 +5478,13 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Reset Fuses
EEPROM - DELETE
リセット フューズ
@@ -3834,6 +5492,13 @@ EEPROM - 削除
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3910,21 +5575,49 @@ p, li { white-space: pre-wrap; }
GeneralEdit
+
+
+
+
+
+
+
Radio settings
送信機設定
+
+
+
+
+
+
+
Retrieve calib. and hw settings from profile
校正情報を取得し、ProfileからHWを設定
+
+
+
+
+
+
+
Store calib. and hw settings in selected profile
校正情報を保存し、選択したProfileのHWを設定
+
+
+
+
+
+
+
General settings used throught the transmitter.
These will be relevant for all models in the same EEPROM.
送信機全体で使用される一般設定。
@@ -3993,122 +5686,297 @@ These will be relevant for all models in the same EEPROM.
GeneralSetup
+
+
+
+
+
+
+
Form
フォーム
+
+
+
+
+
+
+
Readonly Unlock
読取専用 解除
+
+
+
+
+
+
+
SC
SC
+
+
+
+
+
+
+
SE
SE
+
+
+
+
+
+
+
SA
SA
+
+
+
+
+
+
+
SF
SF
+
+
+
+
+
+
+
SH
SH
+
+
+
+
+
+
+
SD
SD
+
+
+
+
+
+
+
SB
SB
+
+
+
+
+
+
+
SG
SG
+
+
+
+
+
+
+
Stick reverse
スティック リバース
+
+
+
+
+
+
+
Country Code
地域
+
+
+
+
+
+
+
If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio.
FAIを有効にすると、RSSIとRxBtセンサーのみが機能し続けます。この機能を送信機側で無効にすることはできません。
+
+
+
+
+
+
+
FAI Mode
FAIモード
+
+
+
+
+
+
+
Automatically adjust the radio's clock if a GPS is connected to telemetry.
GPSがテレメトリーに接続されている場合、自動的に送信機側の内蔵時計を調整します。
+
+
+
+
+
+
+
Adjust RTC
時計調整
+
+
+
+
+
+
+
Speaker Volume
スピーカー音量
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Hz
Hz
+
+
+
+
+
+
+
Vario pitch at max
バリオピッチ 最大
+
+
+
+
+
+
+
Backlight Switch
バックライトスイッチ
+
+
+
+
+
+
+
Color 1
カラー 1
+
+
+
+
+
+
+
Color 2
カラー 2
+
+
+
+
+
+
+
Sound Mode
サウンドモード
+
+
+
+
+
+
+
If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds.
この値が0以外の場合、キーを押すとバックライトが点灯し、指定秒数を経過すると消灯します。
@@ -4116,87 +5984,221 @@ These will be relevant for all models in the same EEPROM.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
sec
秒
+
+
+
+
+
+
+
Backlight color
バックライトカラー
+
+
+
+
+
+
+
Speaker Pitch (spkr only)
再生ピッチ (対応機のみ)
+
+
+
+
+
+
+
Beeper
ビープ
+
+
+
+
+
+
+
Speaker
スピーカー
+
+
+
+
+
+
+
BeeperVoice
ビープ音声
+
+
+
+
+
+
+
SpeakerVoice
スピーカー音声
+
+
+
+
+
+
+
Beep volume
ビープ音量
+
+
+
+
+
+
+
Wav volume
WAV音量
+
+
+
+
+
+
+
Vario volume
バリオVOL
+
+
+
+
+
+
+
Background volume
バックグランドVOL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ms
ms
+
+
+
+
+
+
+
Backlight flash on alarm
アラーム時ライト点滅
+
+
+
+
+
+
+
Vario pitch at zero
バリオピッチ ゼロ
+
+
+
+
+
+
+
Vario repeat at zero
バリオリピート ゼロ
+
+
+
+
+
+
+
Backlight Auto OFF after
バックライト 自動消灯
+
+
+
+
+
+
+
This is the switch selectrion for turning on the backlight (if installed).
@@ -4207,6 +6209,20 @@ These will be relevant for all models in the same EEPROM.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -4222,41 +6238,97 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
RotEnc Navigation
Rot Enc ナビゲーション
+
+
+
+
+
+
+
Backlight Brightness
バックライト 明るさ
+
+
+
+
+
+
+
America
アメリカ
+
+
+
+
+
+
+
Japan
日本
+
+
+
+
+
+
+
Europe
ヨーロッパ
+
+
+
+
+
+
+
Voice Language
音声言語
+
+
+
+
+
+
+
Timeshift from UTC
UTC 時差
+
+
+
+
+
+
+
Backlight OFF Brightness
バックライトOFF 明るさ
@@ -4264,6 +6336,27 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -4289,11 +6382,25 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
RSSI Poweroff Warning
RSSI 信号切断 警告
+
+
+
+
+
+
+
Beeper volume
0 - Quiet. No beeps at all.
@@ -4312,214 +6419,561 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Quiet
消音
+
+
+
+
+
+
+
Alarms Only
アラームのみ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
No Keys
キーなし
+
+
+
+
+
+
+
+
+
+
+
+
+
+
All
すべて
+
+
+
+
+
+
+
Beeper Mode
ビープ モード
+
+
+
+
+
+
+
Jack Mode
Jackモード
+
+
+
+
+
+
+
Audio
音声
+
+
+
+
+
+
+
Trainer
トレーナー
+
+
+
+
+
+
+
+
+
+
+
+
+
+
X-Short
より短い
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Short
短い
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Normal
通常
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Long
長い
+
+
+
+
+
+
+
+
+
+
+
+
+
+
X-Long
より長い
+
+
+
+
+
+
+
Beeper Length
ビープ音の長さ
+
+
+
+
+
+
+
Haptic Mode
タッチパネルモード
+
+
+
+
+
+
+
Measurement Units
計量単位
+
+
+
+
+
+
+
Play Delay (switch mid position)
遅延動作 (スイッチ中央)
+
+
+
+
+
+
+
NMEA
+
+
+
+
+
+
+
4800 Baud
+
+
+
+
+
+
+
9600 Baud
+
+
+
+
+
+
+
14400 Baud
+
+
+
+
+
+
+
19200 Baud
+
+
+
+
+
+
+
38400 Baud
+
+
+
+
+
+
+
57600 Baud
+
+
+
+
+
+
+
76800 Baud
+
+
+
+
+
+
+
115200 Baud
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Show splash screen on startup
起動時、起動イメージ表示
+
+
+
+
Power On Delay
起動時間
+
+
+
+
+
+
+
---
---
+
+
+
+
+
+
+
2s
2秒
+
+
+
+
+
+
+
3s
3秒
+
+
+
+
+
+
+
4s
4秒
+
+
+
+
+
+
+
6s
6秒
+
+
+
+
+
+
+
8s
8秒
+
+
+
+
+
+
+
10s
10秒
+
+
+
+
+
+
+
15s
15秒
+
+
+
+
+
+
+
If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes.
指定された時間(分)入力がないまま送信機が放置されると、ゼロでない場合はビープ音が鳴ります。
+
+
+
+
+
+
+
min
分
+
+
+
+
+
+
+
Standard
標準
+
+
+
+
+
+
+
Optrex
オプトレックス(京セラ)
+
+
+
+
+
+
+
Battery warning voltage.
This is the threashhold where the battery warning sounds.
@@ -4530,247 +6984,588 @@ Acceptable values are 5v..10v
+
+
+
+
+
+
+
Only Alarms
アラームのみ
+
+
+
+
+
+
+
MAVLink Baud Rate
MAVLink ボーレート
+
+
+
+
+
+
+
Haptic Length
タッチパネル長押し
+
+
+
+
+
+
+
Battery Warning
バッテリー警告
+
+
+
+
+
+
+
"No Sound" Warning
【無音】警告
+
+
+
+
+
+
+
LCD Display Type
液晶ディスプレイタイプ
+
+
+
+
+
+
+
Haptic Strength
タッチパネル感度
+
+
+
+
+
+
+
Battery Meter Range
バッテリーメーター範囲
+
+
+
+
+
+
+
Contrast
コントラスト
+
+
+
+
+
+
+
Show Splash Screen on Startup
起動時、起動イメージ表示
+
+
+
+
+
+
+
Low EEPROM Warning
EEPROM残量警告
+
+
+
+
+
+
+
Inactivity Timer
非アクティブタイマー
+
+
+
+
+
+
+
Min
最小
+
+
+
+
+
+
+
+
+
+
+
+
+
+
v
v
+
+
+
+
+
+
+
Max
最大
+
+
+
+
+
+
+
GPS Coordinates
GPS座標
+
+
+
+
+
+
+
Default Channel Order
初期チャンネルマップ
+
+
+
+
+
+
+
Metric
メートル法
+
+
+
+
+
+
+
Imperial
ヤード・ポンド法
+
+
+
+
+
+
+
Stick Mode
スティックモード
+
+
+
+
+
+
+
<html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html>
<html><head/><body><p>チャンネルマップ</p><p><br/></p><p>モデル作成された際の初期チャンネルマッピングを定義します</p></body></html>
+
+
+
+
Owner Registration ID
オーナー登録ID
+
+
+
+
aaaaaaAA
+
+
+
+
+
+
+
R E T A
↔RUD ↕ELE ↕THR ↔AIL [R E T A]
+
+
+
+
+
+
+
R E A T
↔RUD ↕ELE ↔AIL ↕THR [R E A T]
+
+
+
+
+
+
+
R T E A
↔RUD ↕THR ↕ELE ↔AIL [R T E A]
+
+
+
+
+
+
+
R T A E
↔RUD ↕THR ↔AIL ↕ELE [R T A E]
+
+
+
+
+
+
+
R A E T
↔RUD ↔AIL ↕ELE ↕THR [R A E T]
+
+
+
+
+
+
+
R A T E
↔RUD ↔AIL ↕THR ↕ELE [R A T E]
+
+
+
+
+
+
+
E R T A
↕ELE ↔RUD ↕THR ↔AIL [E R T A]
+
+
+
+
+
+
+
E R A T
↕ELE ↔RUD ↔AIL ↕THR [E R A T]
+
+
+
+
+
+
+
E T R A
↕ELE ↕THR ↔RUD ↔AIL [E T R A]
+
+
+
+
+
+
+
E T A R
↕ELE ↕THR ↔AIL ↔RUD [E T A R]
+
+
+
+
+
+
+
E A R T
↕ELE ↔AIL ↔RUD ↕THR [E A R T]
+
+
+
+
+
+
+
E A T R
↕ELE ↔AIL ↕THR ↔RUD [E A T R]
+
+
+
+
+
+
+
T R E A
↕THR ↔RUD ↕ELE ↔AIL [T R E A]
+
+
+
+
+
+
+
T R A E
↕THR ↔RUD ↔AIL ↕ELE [T R A E]
+
+
+
+
+
+
+
T E R A
↕THR ↕ELE ↔RUD ↔AIL [T E R A]
+
+
+
+
+
+
+
T E A R
↕THR ↕ELE ↔AIL ↔RUD [T E A R]
+
+
+
+
+
+
+
T A R E
↕THR ↔AIL ↔RUD ↕ELE [T A R E]
+
+
+
+
+
+
+
T A E R
↕THR ↔AIL ↕ELE ↔RUD [T A E R]
+
+
+
+
+
+
+
A R E T
↔AIL ↔RUD ↕ELE ↕THR [A R E T]
+
+
+
+
+
+
+
A R T E
↔AIL ↔RUD ↕THR ↕ELE [A R T E]
+
+
+
+
+
+
+
A E R T
↔AIL ↕ELE ↔RUD ↕THR [A E R T]
+
+
+
+
+
+
+
A E T R
↔AIL ↕ELE ↕THR ↔RUD [A E T R]
+
+
+
+
+
+
+
A T R E
↔AIL ↕THR ↔RUD ↕ELE [A T R E]
+
+
+
+
+
+
+
A T E R
↔AIL ↕THR ↕ELE ↔RUD [A T E R]
+
+
+
+
Power Off Delay
終了時間
+
+
+
+
+
+
+
Mode selection:
Mode 1:
@@ -4812,55 +7607,142 @@ Mode 4:
+
+
+
+
+
+
+
Mode 1 (RUD ELE THR AIL)
モード1 (左:エレベーター・ラダー 右:スロットル・エルロン)
+
+
+
+
+
+
+
Mode 2 (RUD THR ELE AIL)
モード2 (左:スロットル・ラダー 右:エレベーター・エルロン)
+
+
+
+
+
+
+
Mode 3 (AIL ELE THR RUD)
モード3 (左:エレベーター・エルロン 右:スロットル・ラダー)
+
+
+
+
+
+
+
Mode 4 (AIL THR ELE RUD)
モード4 (左:スロットル・エルロン 右:エレベーター・ラダー)
+
+
+
+
+
+
+
DMS
+
+
+
+
+
+
+
USB Mode
USBモード
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Ask on Connect
接続毎に確認
+
+
+
+
+
+
+
Joystick (HID)
ジョイスティック (HID)
+
+
+
+
+
+
+
USB Mass Storage
USBストレージ
+
+
+
+
+
+
+
USB Serial (CDC)
USBシリアル (CDC)
+
+
+ Power On Speed
+
+
+
+
+ Power Off Speed
+
+
GeneralSetupPanel
@@ -5016,251 +7898,595 @@ Are you sure ?
Hardware
+
+
+
+
+
+
+
Form
フォーム
+
+
+
+
+
+
+
SQ
SQ
+
+
+
+
+
+
+
SR
SR
+
+
+
+
+
+
+
LS2
LS2
+
+
+
+
+
+
+
SP
SP
+
+
+
+
+
+
+
SO
SO
+
+
+
+
+
+
+
S4
S4
+
+
+
+
+
+
+
RS
RS
+
+
+
+
+
+
+
SB
SB
+
+
+
+
+
+
+
PPM 2
PPM 2
+
+
+
Antenna
アンテナ
+
+
+
+
+
S5
S5
+
+
+
+
+
+
+
OFF
OFF
+
+
+
+
+
+
+
S-Port Mirror
S-Port ミラー
+
+
+
+
+
+
+
Telemetry
テレメトリー
+
+
+
+
+
+
+
SBUS Trainer
SBUS トレーナー
+
+
+
+
+
+
+
Debug
デバッグ
+
+
+
+
+
+
+
Rud
ラダー
+
+
+
+
+
+
+
PPM 3
PPM 3
+
+
+
+
+
+
+
S1
S1
+
+
+
+
+
+
+
S2
S2
+
+
+
+
+
+
+
S3
S3
+
+
+
+
+
+
+
PPM 1
PPM 1
+
+
+
+
+
+
+
Serial Port
シリアルポート
+
+
+
+
+
+
+
v
v
+
+
+
+
+
+
+
PPM Multiplier
PPM 乗算
+
+
+
+
+
+
+
Current Offset
現在のオフセット
+
+
+
+
+
+
+
PPM 4
PPM 4
+
+
+
+
+
+
+
SA
SA
+
+
+
+
+
+
+
Ele
エレベーター
+
+
+
+
+
+
+
Ail
エルロン
+
+
+
+
+
+
+
Thr
スロットル
+
+
+
+
+
+
+
SC
SC
+
+
+
+
+
+
+
LS
LS
+
+
+
+
+
+
+
SD
SD
+
+
+
+
+
+
+
Battery Offset
バッテリーオフセット
+
+
+
+
+
+
+
SE
SE
+
+
+
+
+
+
+
SF
SF
+
+
+
+
+
+
+
SG
SG
+
+
+
+
+
+
+
SH
SH
+
+
+
+
+
+
+
SI
SI
+
+
+
+
+
+
+
SJ
SJ
+
+
+
+
+
+
+
SK
SK
+
+
+
+
+
+
+
SL
SL
+
+
+
+
+
+
+
SM
SM
+
+
+
+
+
+
+
SN
SN
+
+
+
+
+
+
+
RS2
RS2
+
+
+
+
+
+
+
Bluetooth
Bluetooth
+
+
+
+
+
+
+
ADC Filter
ADCフィルタ
+
+
+
+
+
+
+
Device Name:
デバイス名:
@@ -5359,71 +8585,169 @@ Are you sure ?
Heli
+
+
+
+
+
+
+
Off
OFF
+
+
+
+
+
+
+
120
120
+
+
+
+
+
+
+
120X
120X
+
+
+
+
+
+
+
140
140
+
+
+
+
+
+
+
90
90
+
+
+
+
+
+
+
Invert Elevator
ELE リバース
+
+
+
+
+
+
+
Invert Aileron
AIL リバース
+
+
+
+
+
+
+
Invert Collective
COL リバース
+
+
+
+
+
+
+
Long. cyc
長周期
+
+
+
+
+
+
+
Invert
リバース
+
+
+
+
+
+
+
Swash Ring
Swashリング
+
+
+
+
+
+
+
Swash Type
Swashタイプ
+
+
+
+
+
+
+
Lateral cyc
側面周期
+
+
+
+
+
+
+
Collective
コレクティブ
@@ -5816,46 +9140,109 @@ Are you sure ?
LogsDialog
+
+
+
+
+
+
+
Companion Log Viewer
Companion ログビューワ
+
+
+
+
+
+
+
Fly sessions
飛行時間
+
+
+
+
+
+
+
Save session CSV
CSVで保存
+
+
+
+
+
+
+
Zoom
拡大
+
+
+
+
+
+
+
X
X軸
+
+
+
+
+
+
+
Y
Y軸
+
+
+
+
+
+
+
Reset
リセット
+
+
+
+
+
+
+
Filename
ファイル名
+
+
+
+
+
+
+
Open LogFile
ログファイルを開く
@@ -7354,26 +10741,59 @@ Do you want to save your changes?
MixerDialog
+
+
+
+
+
Dialog
ダイアログ
+
+
+
+
+
+
+
Delay
Delay: 遅延
+
+
+
+
+
+
+
Slow
Slow: ゆっくり
+
+
+
+
+
+
+
Up
上
+
+
+
+
+
+
+
Down
下
@@ -7382,6 +10802,34 @@ Do you want to save your changes?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -7407,61 +10855,145 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Include Trim
トリム含
+
+
+
+
+
+
+
Offset
オフセット
+
+
+
+
+
+
+
Weight
ウェイト
+
+
+
+
+
+
+
Name
名称
+
+
+
+
+
+
+
Source
選択元
+
+
+
+
+
+
+
Multiplex
複数ミキサー
+
+
+
+
+
+
+
Warning
警告
+
+
+
+
+
+
+
The curve used by the mix
ミックスで使用するカーブ
+
+
+
+
+
+
+
Include DR/Expo
DR/Expo含
+
+
+
+
+
+
+
Flight modes
フライトモード
+
+
+
+
+
+
+
Switch
スイッチ
+
+
+
+
+
+
+
Mixer warning.
Setting this value will cause a beep to be emmitted when this value is active.
ミキサー警告
@@ -7469,31 +11001,73 @@ Setting this value will cause a beep to be emmitted when this value is active.
+
+
+
+
+
+
+
OFF
+
+
+
+
+
+
+
1 Beep
1 ビープ
+
+
+
+
+
+
+
2 Beep
2 ビープ
+
+
+
+
+
+
+
3 Beep
3 ビープ
+
+
+
+
+
+
+
No
いいえ
+
+
+
+
+
+
+
Yes
はい
@@ -7501,6 +11075,27 @@ Setting this value will cause a beep to be emmitted when this value is active.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
GV
@@ -7509,11 +11104,46 @@ Setting this value will cause a beep to be emmitted when this value is active.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The source for the mixer
ミキサー選択元
+
+
+
+
+
+
+
Multiplexer
This determines how mixer values are added.
@@ -7531,26 +11161,61 @@ This determines how mixer values are added.
+
+
+
+
+
+
+
ADD
加算
+
+
+
+
+
+
+
MULTIPLY
乗算
+
+
+
+
+
+
+
REPLACE
置換
+
+
+
+
+
+
+
Curve
カーブ
+
+
+
+
+
+
+
Switch used by the mix.
If blank then the mix is considered to be "ON" all the time.
ミックスで使用されるスイッチ
@@ -7581,6 +11246,12 @@ If blank then the mix is considered to be "ON" all the time.
Invert All
すべてリバース
+
+
+
+ FullScreenDialog
+
+
MixersListWidget
@@ -7754,11 +11425,23 @@ If blank then the mix is considered to be "ON" all the time.
ModelEdit
+
+
+
+
+
Dialog
ダイアログ
+
+
+
+
+
+
+
Simulate
シミュレート
@@ -7812,6 +11495,12 @@ If blank then the mix is considered to be "ON" all the time.
Telemetry
テレメトリー
+
+
+
+ FullScreenDialog
+
+
ModelPrinter
@@ -8630,41 +12319,94 @@ If blank then the mix is considered to be "ON" all the time.
Module
+
+
+
+
+
+
+
Start
スタート
+
+
+
+
+
+
+
CH
+
+
+
+
+
+
+
Receiver No.
受信機 No.
+
+
+
+
+
+
+
Polarity
極性
+
+
+
+
+
+
+
Negative
リバース
+
+
+
+
+
+
+
Positive
ノーマル
+
+
+
+
+
+
+
RF Output Power
送信出力
+
+
+
+
Receiver 1
受信機 1
@@ -8672,191 +12414,462 @@ If blank then the mix is considered to be "ON" all the time.
+
+
+
+
+
+
+
+
+
+
+
+
X
X
+
+
+
+
Receiver 2
受信機 2
+
+
+
+
Receiver 3
受信機 3
+
+
+
+
+
+
+
Bind on startup
起動時バインド
+
+
+
+
+
+
+
Low Power
低パワー
+
+
+
+
+
+
+
WARNING: changing RF Output Power needs RE-BIND
警告: 送信出力を変更するには再バインドが必要です
+
+
+
+
+
+
+
Channels
チャンネル
+
+
+
+
+
+
+
PPM delay
PPM 遅延
+
+
+
+
+
+
+
us
+
+
+
+
+
+
+
PPM Frame Length
PPM フレーム長
+
+
+
+
+
+
+
ms
ms
+
+
+
+
+
+
+
Antenna
アンテナ
+
+
+
+
+
+
+
Output type
出力タイプ
+
+
+
+
+
+
+
Open Drain
オープン ドレン
+
+
+
+
+
+
+
Push Pull
プッシュ プル
+
+
+
+
+
+
+
Option value
オプション値
+
+
+
+
+
+
+
Protocol
プロトコル
+
+
+
+
Registration ID
登録ID
+
+
+
+
+
+
+
Multi Radio Protocol
マルチプロトコル
+
+
+
+
+
+
+
Sub Type
サブタイプ
+
+
+
+
+
+
+
Failsafe Mode
フェイルセーフモード
+
+
+
+
+
+
+
Not set
設定なし
+
+
+
+
+
+
+
Hold
ホールド
+
+
+
+
+
+
+
Custom
カスタム
+
+
+
+
+
+
+
No Pulses
パルスなし
+
+
+
+
+
+
+
Receiver
受信機
+
+
+
+
+
+
+
Trainer Mode
トレーナーモード
+
+
+
+
+
+
+
Master/Jack
マスター/Jack
+
+
+
+
+
+
+
Slave/Jack
スレーブ/Jack
+
+
+
+
+
+
+
Master/SBUS Module
マスター/SBUSモジュール
+
+
+
+
+
+
+
Master/CPPM Module
マスター/CPPMモジュール
+
+
+
+
+
+
+
Master/SBUS in battery compartment
マスター/バッテリーカバー内SBUB
+
+
+
+
+
+
+
WARNING: Requires non-certified firmware!
警告: 未認定のR9Mファームウェアが必要です!
+
+
+
+
+
+
+
Failsafe Positions
フェイルセーフポジション
+
+
+
+
+
+
+
Show values in:
値の表示:
+
+
+
+
+
+
+
%
abbreviation for percent
+
+
+
+
+
+
+
μs
abbreviation for microseconds
+
+
+
+
+
+ Internal
+ 内部
+
+
+
+
+
+
+ Ext. + Int.
+
+
ModuleData
@@ -9596,21 +13609,49 @@ If blank then the mix is considered to be "ON" all the time.
PrintDialog
+
+
+
+
+
+
+
Close
閉じる
+
+
+
+
+
+
+
Style
スタイル
+
+
+
+
+
+
+
Print
出力
+
+
+
+
+
+
+
Print to file
ファイルへ出力
@@ -9634,11 +13675,25 @@ If blank then the mix is considered to be "ON" all the time.
ProgressDialog
+
+
+
+
+
+
+
Flash Firmware
ファームウェアの書き込み
+
+
+
+
+
+
+
Close
閉じる
@@ -9653,6 +13708,13 @@ If blank then the mix is considered to be "ON" all the time.
ProgressWidget
+
+
+
+
+
+
+
Show Details
詳細を表示
@@ -9806,17 +13868,38 @@ If blank then the mix is considered to be "ON" all the time.
RadioNotFoundDialog
+
+
+
+
+
+
+
No Radio Found
送信機が見つかりません
+
+
+
+
+
+
+
<html><head/><body><p>No Radio was found!</p><p>Make sure that you hold the lower trim buttons towards the center while you turn it on.</p><p>Then connect the USB wire.</p><p><span style=" font-family:'arial,sans-serif'; font-size:13px; font-style:italic; color:#222222; background-color:#ffffff;">Note: if you have a Taranis that has not had the firmware upgraded to 2.0 then this version of Companion will not work.</span></p></body></html>
<html><head/><body><p>送信機が見つかりませんでした!</p><p>電源を入れるときは、下部トリムボタンを中央に押し上げてください。</p><p>次に、USBケーブルを接続します。</p><p><span style=" font-family:'arial,sans-serif'; font-size:13px; font-style:italic; color:#222222; background-color:#ffffff;">注: ファームウェアが2.0にアップグレードされていないTaranisを使用している場合、このバージョンのCompanionは動作しません。</span></p></body></html>
+
+
+
+
+
+
+
OK
OK
@@ -9825,43 +13908,99 @@ If blank then the mix is considered to be "ON" all the time.
RadioOutputsWidget
-
+
+
+
+
+
+
+
+
+
Form
フォーム
-
+
+
+
+
+
+
+
+
+
View:
ビュー:
-
+
+
+
+
+
+
+
+
+
Logical Switches
論理スイッチ
-
+
+
+
+
+
+
+
+
+
Global Variables
グローバル変数
-
+
+
+
+
+
+
+
+
+
Channel Outputs
チャンネルオプション
-
+
+
+
+
+
+
+
+
+
Mix Outputs
ミキサー出力
-
+
+
+
+
+
+
+
+
+
L
o
g
@@ -9874,7 +14013,15 @@ W
-
+
+
+
+
+
+
+
+
+
G
l
o
@@ -9887,7 +14034,15 @@ l
-
+
+
+
+
+
+
+
+
+
C
h
a
@@ -9903,7 +14058,15 @@ H
-
+
+
+
+
+
+
+
+
+
M
i
x
@@ -10747,121 +14910,289 @@ X
Setup
+
+
+
+
+
+
+
Timer 1
タイマー 1
+
+
+
+
+
+
+
Top LCD Timer
液晶タイマー
+
+
+
+
+
+
+
Model Image
モデルイメージ
+
+
+
+
+
+
+
Warnings
警告
+
+
+
+
+
+
+
Switch Warnings
スイッチ警告
+
+
+
+
+
+
+
Pot Warnings
ダイヤル警告
+
+
+
+
+
+
+
OFF
OFF
+
+
+
+
+
+
+
Manual
手動
+
+
+
+
+
+
+
Auto
自動
+
+
+
+
+
+
+
Model
機体モデル
+
+
+
+
+
+
+
Center beep
センター ビープ
+
+
+
+
+
+
+
Display Checklist
チェックリスト表示
+
+
+
+
+
+
+
Never
なし
+
+
+
+
+
+
+
On change
変更
+
+
+
+
+
+
+
Always
常に
+
+
+
+
+
+
+
Throttle Trim Idle Only
THRトリムアイドル
+
+
+
+
+
+
+
Global Functions
グローバルファンクション
+
+
+
+
+
+
+
Throttle Warning
スロットル警告
+
+
+
+
+
+
+
Exponential
エクスポ
+
+
+
+
+
+
+
Extra Fine
極細
+
+
+
+
+
+
+
Fine
細かめ
+
+
+
+
+
+
+
Medium
中間
+
+
+
+
+
+
+
Coarse
粗め
+
+
+
+
+
+
+
Reverse throttle operation.
If this is checked the throttle will be reversed. Idle will be forward, trim will also be reversed and the throttle warning will be reversed as well.
@@ -10871,46 +15202,109 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi
+
+
+
+
+
+
+
Reverse Throttle
スロットル リバース
+
+
+
+
+
+
+
Edit Checklist...
チェックリストの編集...
+
+
+
+
+
+
+
Extended Trims
拡張トリム
+
+
+
+
+
+
+
Extended Limits
拡張制限
+
+
+
+
+
+
+
Throttle Source
スロットル値
+
+
+
+
+
+
+
Trim Step
トリム間隔
+
+
+
+
+
+
+
Trims Display
トリム表示
+
+
+
+
+
+
+
Timer 2
タイマー 2
+
+
+
+
+
+
+
Timer 3
タイマー 3
@@ -11283,181 +15677,421 @@ Profile ID: [%1]; Radio ID: [%2]
SimulatorMainWindow
-
+
+
+
+
+
+
+
+
+
OpenTx Simulator
OpenTX シミュレータ
-
+
+
+
+
+
+
+
+
+
View
ビュー
-
+
+
+
+
+
+
+
+
+
Radio Window
送信機ウィンドウ
-
+
+
+
+
+
+
+
+
+
Reload...
再読み込み...
-
+
+
+
+
+
+
+
+
+
Tools
ツール
-
+
+
+
+
+
+
+
+
+
Toolbar
ツールバー
-
+
+
+
+
+
+
+
+
+
Reload Lua Scripts
Luaスクリプトを再読み込み
-
+
+
+
+
+
+
+
+
+
Reload the Lua environment on the simulated radio.
送信機シミュレータでLua環境を再読み込みします。
-
+
+
+
+
+
+
+
+
+
F7
-
+
+
+
+
+
+
+
+
+
Reload Radio Data
送信機データを再読み込み
-
+
+
+
+
+
+
+
+
+
Reload all radio data without restarting the simulator.
シミュレータを再起動せずにすべての送信機データを再読み込みします。
-
+
+
+
+
+
+
+
+
+
F9
-
+
+
+
+
+
+
+
+
+
Key Mapping
キーマッピング
-
+
+
+
+
+
+
+
+
+
Show keyboard maping reference.
参照するキーマッピングを表示します。
-
+
+
+
+
+
+
+
+
+
F1
-
+
+
+
+
+
+
+
+
+
Joystick Settings
スティック設定
-
+
+
+
+
+
+
+
+
+
Open joystick configuration settings dialog.
スティック設定ダイアログを開きます。
-
+
+
+
+
+
+
+
+
+
F3
-
+
+
+
+
+
+
+
+
+
LCD Screenshot
液晶 画面キャプチャ
-
+
+
+
+
+
+
+
+
+
Save a screenshot of the current simulated LCD screen.
現在シミュレートされている液晶画面のキャプチャを保存します。
-
+
+
+
+
+
+
+
+
+
F8
-
+
+
+
+
+
+
+
+
+
Dock In Main Window
メインウィンドウに結合
-
+
+
+
+
+
+
+
+
+
Show the radio in the main window or as a separate "floating" window.
メインウィンドウまたは別の『フローティング』ウィンドウとして送信機を表示します。
-
+
+
+
+
+
+
+
+
+
Menu Bar
メニューバー
-
+
+
+
+
+
+
+
+
+
Show or hide the top menu bar.
トップメニューバーを表示または非表示にします。
-
+
+
+
+
+
+
+
+
+
Alt+M
-
+
+
+
+
+
+
+
+
+
Constrain Width
幅の制限
-
+
+
+
+
+
+
+
+
+
Set radio widget width to be a fixed size.
送信機ウィジェットの幅を固定サイズに設定します。
-
+
+
+
+
+
+
+
+
+
Constrain Height
高さ制限
-
+
+
+
+
+
+
+
+
+
Set radio widget height to be a fixed size.
送信機ウィジェットの高さを固定サイズに設定します。
@@ -11540,25 +16174,57 @@ Profile ID: [%1]; Radio ID: [%2]
SimulatorStartupDialog
-
+
+
+
+
+
+
+
+
+
OpenTX Simulator - Startup Options
OpenTX シミュレータ - スタートアップオプション
-
+
+
+
+
+
+
+
+
+
Simulator Startup Options:
シミュレータ スタートアップオプション:
-
+
+
+
+
+
+
+
+
+
Radio Profile:
送信機プロファイル:
-
+
+
+
+
+
+
+
+
+
Existing radio profiles are shown here.<br />
Create or edit profiles using the Companion application.
既存の送信機プロファイルはこちらに表示されます。<br />
@@ -11566,13 +16232,29 @@ Companionアプリケーションを使用してプロファイルを作成ま
-
+
+
+
+
+
+
+
+
+
Radio Type:
送信機タイプ:
-
+
+
+
+
+
+
+
+
+
Existing radio simulators are shown here.<br />
The radio type specified in the selected profile is used by default.
既存の送信機シミュレータをここに示します。<br />
@@ -11580,31 +16262,71 @@ The radio type specified in the selected profile is used by default.
-
+
+
+
+
+
+
+
+
+
Data Source:
データ元:
-
+
+
+
+
+
+
+
+
+
Data File:
データファイル:
-
+
+
+
+
+
+
+
+
+
Data Folder:
データフォルダ:
-
+
+
+
+
+
+
+
+
+
SD Image Path:
SDイメージパス:
-
+
+
+
+
+
+
+
+
+
Radio data (.bin/.eeprom/.otx) image file to use. A new file with a default image will be created if necessary.<br />
<b>NOTE</b>: any existing EEPROM data incompatible with the selected radio type may be overwritten!
使用する送信機データ(.bin / .eeprom / .otx)画像ファイルです。必要に応じて、デフォルト画像を含む新しいファイルが作成されます。<br />
@@ -11612,7 +16334,15 @@ The radio type specified in the selected profile is used by default.
-
+
+
+
+
+
+
+
+
+
Select data file...
データファイル選択...
@@ -11620,15 +16350,47 @@ The radio type specified in the selected profile is used by default.
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
...
-
+
+
+
+
+
+
+
+
+
Directory containing RADIO and MODELS folders to use.<br />
New folder(s) with default radio/model will be created here if necessary.
使用する送信機および機体モデルフォルダを含むディレクトリです。<br />
@@ -11636,13 +16398,29 @@ New folder(s) with default radio/model will be created here if necessary.
-
+
+
+
+
+
+
+
+
+
Select data folder...
データフォルダ選択...
-
+
+
+
+
+
+
+
+
+
Directory containing the SD card image to use.<br/>
The default is configured in the chosen Radio Profile.
使用するSDカードイメージを含むディレクトリです。<br/>
@@ -11650,31 +16428,71 @@ The default is configured in the chosen Radio Profile.
-
+
+
+
+
+
+
+
+
+
Select SD card image folder...
SDカードイメージフォルダ選択...
-
+
+
+
+
+
+
+
+
+
Select which of the data sources (File/Folder/SD Card) you would like to start the simulator with.
シミュレータを起動するデータ元 (ファイル/フォルダ/ SDカード) を選択します。
-
+
+
+
+
+
+
+
+
+
File
ファイル
-
+
+
+
+
+
+
+
+
+
Folder
フォルダ
-
+
+
+
+
+
+
+
+
+
SD Path
SDパス
@@ -11703,7 +16521,15 @@ The default is configured in the chosen Radio Profile.
SimulatorWidget
-
+
+
+
+
+
+
+
+
+
Companion Simulator
Companion シミュレータ
@@ -11791,6 +16617,20 @@ The default is configured in the chosen Radio Profile.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
...
@@ -11830,6 +16670,13 @@ The default is configured in the chosen Radio Profile.
StyleEditDialog
+
+
+
+
+
+
+
@@ -11838,21 +16685,49 @@ The default is configured in the chosen Radio Profile.
+
+
+
+
+
+
+
&Reset to default
&初期値へリセット
+
+
+
+
+
+
+
&Cancel
&キャンセル
+
+
+
+
+
+
+
&OK
&OK
+
+
+
+
+
+
+
This feature does not validate your changes and assumes you are familiar with CSS syntax for QT.
この機能は変更を検証するものではなく、QTのCSS構文に精通していることを前提としています。
@@ -12116,190 +16991,475 @@ Too many errors, giving up.
Telemetry
+
+
+
+
+
+
+
Protocol
プロトコル
+
+
+
+
+
+
+
+
+
+
+
+
+
+
----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Yellow
黄色
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Orange
オレンジ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Red
赤色
+
+
+
+
+
+
+
Alarm 1
アラーム 1
+
+
+
+
+
+
+
Alarm 2
アラーム 2
+
+
+
+
+
+
+
RSSI
RSSI
+
+
+
+
+
+
+
Disable telemetry audio warnings
テレメトリー音声警告を無効
+
+
+
+
+
Source
信号元
+
+
+
+
+
+
+
A1
+
+
+
+
+
+
+
A2
+
+
+
+
+
+
+
Sink Max
Sink 最大
+
+
+
+
+
+
+
Climb Max
クライム 最大
+
+
+
+
+
+
+
Sink Min
Sink 最小
+
+
+
+
+
+
+
Climb Min
クライム 最小
+
+
+
+
+
+
+
Center Silent
センター サイレント
+
+
+
+
+
+
+
Vario limits
バリオ リミット値
+
+
+
+
+
+
+
Vario source
バリオ 元値
+
+
+
+
+
+
+
Altimetry
高度計
+
+
+
+
+
+
+
Altitude source
高度 元値
+
+
+
+
+
+
+
Volts source
ボルト 元値
+
+
+
+
+
+
+
Top Bar
トップバー
+
+
+
+
+
+
+
Volt source
ボルト 元値
+
+
+
+
+
+
+
Current source
現在の元値
+
+
+
+
+
+
+
Blades
ブレード
+
+
+
+
+
+
+
mAh count
mAh カウント
+
+
+
+
+
+
+
mAh
+
+
+
+
+
+
+
A
+
+
+
+
+
+
+
FAS Offset
FAS オフセット
+
+
+
+
+
+
+
Persistent mAh
持続 mAh
+
+
+
+
+
+
+
Various
その他の設定
+
+
+
+
+
+
+
Serial Protocol
シリアルプロトコル
+
+
+
+
+
+
+
None
なし
+
+
+
+
+
+
+
FrSky Sensor Hub
FrSky センサーハブ
+
+
+
+
+
+
+
Sensors
センサー
+
+
+
+
+
+
+
Disable multi sensor handling
マルチセンサーハンドリング無効
@@ -12308,107 +17468,289 @@ Too many errors, giving up.
TelemetryAnalog
+
+
+
+
+
+
+
Unit
ユニット
+
+
+
+
+
+
+
Max Value
最大値
+
+
+
+
+
+
+
Alarm 1
アラーム 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Yellow
黄色
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Orange
オレンジ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Red
赤色
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<
+
+
+
+
+
+
+
+
+
+
+
+
+
+
>
+
+
+
+
+
+
+
Alarm 2
アラーム 2
+
+
+
+
+
+
+
Offset
オフセット
+
+
+
+
+
+
+
Volts (V)
ボルト (V)
+
+
+
+
+
+
+
Amps (A)
アンペア (A)
+
+
+
+
+
+
+
Speed (m/s or ft/s)
速度 (m/s or ft/s)
+
+
+
+
+
+
+
Raw (-)
+
+
+
+
+
+
+
Speed (km/h or miles/h)
速度 (km/h or miles/h)
+
+
+
+
+
+
+
Meters (m or ft)
メートル (m or ft)
+
+
+
+
+
+
+
Temp (°)
温度 (°)
+
+
+
+
+
+
+
Fuel (%)
燃料 (%)
+
+
+
+
+
+
+
mAmps (mA)
ミリアンペア (mA)
@@ -12422,26 +17764,61 @@ Too many errors, giving up.
TelemetryCustomScreen
+
+
+
+
+
+
+
Custom Screen Type
カスタム画面タイプ
+
+
+
+
+
+
+
Min
最小
+
+
+
+
+
+
+
Source
選択元
+
+
+
+
+
+
+
Gauge
ゲージ
+
+
+
+
+
+
+
Max
最大
@@ -12575,86 +17952,199 @@ Too many errors, giving up.
TelemetrySensor
+
+
+
+
+
+
+
Form
フォーム
+
+
+
+
+
+
+
Custom
カスタム
+
+
+
+
+
+
+
Calculated
計算値
+
+
+
+
+
+
+
Id
ID
+
+
+
+
+
+
+
Instance
インスタンス
+
+
+
+
Rx
受信
+
+
+
+
Mod.
モジュール.
+
+
+
+
+
+
+
Add
追加
+
+
+
+
+
+
+
Average
平均
+
+
+
+
+
+
+
Min
最小
+
+
+
+
+
+
+
Max
最大
+
+
+
+
+
+
+
Multiply
乗算
+
+
+
+
+
+
+
Totalize
合計
+
+
+
+
+
+
+
Cell
セル
+
+
+
+
+
+
+
Consumption
消費
+
+
+
+
+
+
+
Dist
距離
+
+
+
+
+
+
+
Cells Sensor :
セル センサー :
@@ -12667,191 +18157,506 @@ Too many errors, giving up.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
---
---
+
+
+
+
+
+
+
GPS Sensor :
GPS センサー :
+
+
+
+
+
+
+
Alt. Sensor :
高度 センサー :
+
+
+
+
+
+
+
Sensor :
センサー :
+
+
+
+
+
+
+
Raw (-)
Raw (-)
+
+
+
+
+
+
+
V
V
+
+
+
+
+
+
+
A
+
+
+
+
+
+
+
mA
+
+
+
+
+
+
+
kt
+
+
+
+
+
+
+
m/s
+
+
+
+
+
+
+
ft/s
+
+
+
+
+
+
+
km/h
+
+
+
+
+
+
+
mph
+
+
+
+
+
+
+
m
分
+
+
+
+
+
+
+
ft
+
+
+
+
+
+
+
°C
+
+
+
+
+
+
+
°F
+
+
+
+
+
+
+
%
+
+
+
+
+
+
+
mAh
+
+
+
+
+
+
+
W
+
+
+
+
+
+
+
mW
+
+
+
+
+
+
+
dBm
+
+
+
+
+
+
+
RPM
+
+
+
+
+
+
+
g
+
+
+
+
+
+
+
°
+
+
+
+
+
+
+
Rad
+
+
+
+
+
+
+
mL
+
+
+
+
+
+
+
US fl.Oz.
+
+
+
+
+
+
+
Precision
精度
+
+
+
+
+
+
+
Ratio
レシオ
+
+
+
+
+
+
+
Blades
ブレード
+
+
+
+
+
+
+
Offset
オフセット
+
+
+
+
+
+
+
Multiplier
乗算
+
+
+
+
+
+
+
Auto Offset
自動オフセット
+
+
+
+
+
+
+
Filter
フィルタ
+
+
+
+
+
+
+
Persistent
持続
+
+
+
+
+
+
+
Positive
ノーマル
+
+
+
+
+
+
+
Logs
ログ
@@ -12883,73 +18688,169 @@ Too many errors, giving up.
TelemetrySimulator
-
+
+
+
+
+
+
+
+
+
Telemetry Simulator
テレメトリー シミュレータ
-
+
+
+
+
+
+
+
+
+
When enabled, sends any non-blank values as simulated telemetry data.
有効にすると、空白以外の値をテレメトリーデータとしてシミュレートします。
-
+
+
+
+
+
+
+
+
+
Simulate
シミュレート
-
+
+
+
+
+
+
+
+
+
Replay SD Log File
SDログファイルを再生
-
+
+
+
+
+
+
+
+
+
Replay rate
再生レート
-
+
+
+
+
+
+
+
+
+
Load
ロード
-
+
+
+
+
+
+
+
+
+
|>
-
+
+
+
+
+
+
+
+
+
<|
-
+
+
+
+
+
+
+
+
+
>
-
+
+
+
+
+
+
+
+
+
<-
-
+
+
+
+
+
+
+
+
+
X
-
+
+
+
+
+
+
+
+
+
Row #
Timestamp
Row #
@@ -12957,31 +18858,71 @@ Timestamp
-
+
+
+
+
+
+
+
+
+
1/5x
1/5x
-
+
+
+
+
+
+
+
+
+
5x
5x
-
+
+
+
+
+
+
+
+
+
No Log File Currently Loaded
現在ロードされているログファイルなし
-
+
+
+
+
+
+
+
+
+
RAS
相対アンテナ
-
+
+
+
+
+
+
+
+
+
A2
@@ -12989,27 +18930,75 @@ Timestamp
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
V / ratio
V/レシオ
-
+
+
+
+
+
+
+
+
+
Db
-
+
+
+
+
+
+
+
+
+
RxBt
受信機Batt
-
+
+
+
+
+
+
+
+
+
A1
@@ -13027,141 +19016,429 @@ Timestamp
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<html><head/><body><p><br/></p></body></html>
-
+
+
+
+
+
+
+
+
+
Tmp1
温度1
-
+
+
+
+
+
+
+
+
+
A3
-
+
+
+
+
+
+
+
+
+
A4
-
+
+
+
+
+
+
+
+
+
RSSI
RSSI
-
+
+
+
+
+
+
+
+
+
Tmp2
温度2
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
RPM
RPM
-
+
+
+
+
+
+
+
+
+
Fuel
燃料
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
°C
-
+
+
+
+
+
+
+
+
+
ml
-
+
+
+
+
+
+
+
+
+
%
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Meters
メートル
-
+
+
+
+
+
+
+
+
+
Alt
高度
-
+
+
+
+
+
+
+
+
+
VSpd
昇降計
-
+
+
+
+
+
+
+
+
+
m/s
-
+
+
+
+
+
+
+
+
+
Fuel Qty
燃料油量
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
km/h
-
+
+
+
+
+
+
+
+
+
VFAS
-
+
+
+
+
+
+
+
+
+
Hdg
ヘッディング
-
+
+
+
+
+
+
+
+
+
ASpd
対気速度
@@ -13169,121 +19446,297 @@ Timestamp
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
G
-
+
+
+
+
+
+
+
+
+
GPS
GPS
-
+
+
+
+
+
+
+
+
+
Lat,Lon
(dec.deg.)
-
+
+
+
+
+
+
+
+
+
AccX
加速度X
-
+
+
+
+
+
+
+
+
+
dd-MM-yyyy
hh:mm:ss
-
+
+
+
+
+
+
+
+
+
Date
日時
-
+
+
+
+
+
+
+
+
+
Amps
アンペア
-
+
+
+
+
+
+
+
+
+
AccZ
加速度Z
-
+
+
+
+
+
+
+
+
+
GAlt
GPS高度
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Volts
ボルト
-
+
+
+
+
+
+
+
+
+
Cels
セル
-
+
+
+
+
+
+
+
+
+
Curr
電流計
-
+
+
+
+
+
+
+
+
+
AccY
加速度Y
-
+
+
+
+
+
+
+
+
+
GSpd
GPS速度
-
+
+
+
+
+
+
+
+
+
Degrees
角度(°)
-
+
+
+
+
+
+
+
+
+
Setting RSSI to zero simulates telemetry and radio link loss.
RSSIをゼロに設定すると、テレメトリーと送信機リンク損失がシミュレートされます。
-
+
+
+
+
+
+
+
+
+
Set RSSI to zero when paused.
一時停止したらRSSIをゼロに設定します。
-
+
+
+
+
+
+
+
+
+
Stop sending telemetry data when the Telemetry Simulator window is hidden.
テレメトリーシミュレータ ウィンドウが非表示になったらテレメトリーデータの送信を停止します。
-
+
+
+
+
+
+
+
+
+
Pause simulation when hidden.
非表示になったらシミュレーションを一時停止します。
@@ -13325,11 +19778,25 @@ hh:mm:ss
Timer
+
+
+
+
+
+
+
Countdown
カウントダウン
+
+
+
+
+
+
+
Minute Call
音声時報
@@ -13414,26 +19881,61 @@ CTRL+スクロールまたはPAGE UP/DOWNキーを押すと、大きなステ
Trainer
+
+
+
+
+
+
+
Form
フォーム
+
+
+
+
+
+
+
Mode
モード
+
+
+
+
+
+
+
Input
入力
+
+
+
+
+
+
+
Weight
ウェイト
+
+
+
+
+
+
+
Rud
ラダー
@@ -13446,6 +19948,62 @@ CTRL+スクロールまたはPAGE UP/DOWNキーを押すと、大きなステ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Beeper volume
0 - Quiet. No beeps at all.
@@ -13466,6 +20024,34 @@ CTRL+スクロールまたはPAGE UP/DOWNキーを押すと、大きなステ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Off
OFF
@@ -13474,6 +20060,34 @@ CTRL+スクロールまたはPAGE UP/DOWNキーを押すと、大きなステ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+= (Sum)
+= (合計)
@@ -13482,6 +20096,34 @@ CTRL+スクロールまたはPAGE UP/DOWNキーを押すと、大きなステ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
:= (Replace)
:= (置換)
@@ -13490,6 +20132,34 @@ CTRL+スクロールまたはPAGE UP/DOWNキーを押すと、大きなステ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn1
@@ -13498,6 +20168,34 @@ CTRL+スクロールまたはPAGE UP/DOWNキーを押すと、大きなステ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn2
@@ -13506,6 +20204,34 @@ CTRL+スクロールまたはPAGE UP/DOWNキーを押すと、大きなステ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn3
@@ -13514,21 +20240,70 @@ CTRL+スクロールまたはPAGE UP/DOWNキーを押すと、大きなステ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn4
+
+
+
+
+
+
+
Ele
エレベーター
+
+
+
+
+
+
+
Thr
スロットル
+
+
+
+
+
+
+
Ail
エルロン
@@ -13537,7 +20312,15 @@ CTRL+スクロールまたはPAGE UP/DOWNキーを押すと、大きなステ
TrainerSimulator
-
+
+
+
+
+
+
+
+
+
Trainer simulator
トレーナー シミュレータ
@@ -13964,12 +20747,33 @@ CTRL+スクロールまたはPAGE UP/DOWNキーを押すと、大きなステ
burnConfigDialog
+
+
+
+
+
+
+
Programmer Configuration
プログラムの設定
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Location of sam-ba executable
sam-ba実行ファイル場所
@@ -13978,16 +20782,58 @@ CTRL+スクロールまたはPAGE UP/DOWNキーを押すと、大きなステ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The location of the AVRDUDE executable.
AVRDUDE実行ファイル場所.
+
+
+
+
+
+
+
DFU-Util Location
DFU-Utiltyの場所
+
+
+
+
+
+
+
Location of AVRDUDE executable
AVRDUDE実行ファイル場所
@@ -13995,6 +20841,27 @@ CTRL+スクロールまたはPAGE UP/DOWNキーを押すと、大きなステ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Use this button to browse and look for the AVRDUDE executable file.
AVRDUDE実行ファイルを参照・検索するには、このボタンを押してください。
@@ -14002,16 +20869,51 @@ CTRL+スクロールまたはPAGE UP/DOWNキーを押すと、大きなステ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Browse...
参照...
+
+
+
+
+
+
+
Programmer
プログラム
+
+
+
+
+
+
+
Programmer used for communicating with the controller.
Please consult the programmer's documentation and the AVRDUDE documentation to select the appropriate programmer.
コントローラとの通信に使用されるプログラムです。
@@ -14019,23 +20921,65 @@ Please consult the programmer's documentation and the AVRDUDE documentation
+
+
+
+
+
+
+
List all available programmers.
利用可能なプログラムを一覧表示します。
+
+
+
+
+
+
+
List Available
一覧表示
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Extra arguments that will be passed to AVRDUDE on every call
すべての呼び出しでAVRDUDEに渡される追加引数
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Extra arguments used in AVRDUDE.
This can be used for providing extra information to AVRDUDE.
@@ -14047,21 +20991,49 @@ Please only use this if you know what you are doing. There are no error checks
+
+
+
+
+
+
+
Extra Arguments
追加引数
+
+
+
+
+
+
+
Show AVRDUDE help
AVRDUDEのヘルプを表示します
+
+
+
+
+
+
+
Show Help
ヘルプを表示
+
+
+
+
+
+
+
Communication port to the programmer.
プログラムへの通信ポートです。
@@ -14069,28 +21041,84 @@ Please only use this if you know what you are doing. There are no error checks
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Port
ポート
+
+
+
+
+
+
+
AVRDUDE Location
AVRDUDEの場所
+
+
+
+
+
+
+
MCU
MCU
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CPU of your TX
送信機のCPU
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CPU present on your 9x radio
Should be m64 for stock radios
m2560 for v4.1 boards
@@ -14100,31 +21128,73 @@ v4.1ボード用m2560
+
+
+
+
+
+
+
at91sam3s8-9xr
at91sam3s8-9xr
+
+
+
+
+
+
+
SAM-BA Location
SAM-BAの場所
+
+
+
+
+
+
+
ARM MCU
ARM MCU
+
+
+
+
+
+
+
sam-ba serial port
sam-ba シリアルポート
+
+
+
+
+
+
+
Alternate device
代替デバイス
+
+
+
+
+
+
+
Use advanced controls
詳細設定を使用
@@ -14170,91 +21240,211 @@ v4.1ボード用m2560
joystickDialog
-
+
+
+
+
+
+
+
+
+
Configure Joystick
スティックの設定
-
+
+
+
+
+
+
+
+
+
Ch2
-
+
+
+
+
+
+
+
+
+
Ch1
-
+
+
+
+
+
+
+
+
+
Ch4
-
+
+
+
+
+
+
+
+
+
Ch6
-
+
+
+
+
+
+
+
+
+
Ch3
-
+
+
+
+
+
+
+
+
+
Ch5
-
+
+
+
+
+
+
+
+
+
Ch7
-
+
+
+
+
+
+
+
+
+
Ch8
-
+
+
+
+
+
+
+
+
+
Instructions
インストラクション
-
+
+
+
+
+
+
+
+
+
Enable
有効
-
+
+
+
+
+
+
+
+
+
Cancel
キャンセル
-
+
+
+
+
+
+
+
+
+
Back
戻る
-
+
+
+
+
+
+
+
+
+
Start
スタート
-
+
+
+
+
+
+
+
+
+
Ok
OK
diff --git a/companion/src/translations/companion_pl.ts b/companion/src/translations/companion_pl.ts
index 06a4401c9..28476bb5c 100644
--- a/companion/src/translations/companion_pl.ts
+++ b/companion/src/translations/companion_pl.ts
@@ -93,41 +93,97 @@
AppPreferencesDialog
+
+
+
+
+
+
+
Edit Settings
Edycja Ustawień
+
+
+
+
+
+
+
Radio Profile
Profil radia
+
+
+
+
+
+
+
Default Channel Order
Bazowa kolejność kanałów
+
+
+
+
+
+
+
Build Options
Opcje kompilacji
+
+
+
+
+
+
+
Menu Language
Język Menu
+
+
+
+
+
+
+
Default Stick Mode
Bazowy mod drążków
+
+
+
+
+
+
+
Select Image
Wybierz obrazek
+
+
+
+
+
+
+
Mode selection:
Mode 1:
@@ -151,172 +207,417 @@ Mode 4:
+
+
+
+
+
+
+
Mode 1 (RUD ELE THR AIL)
Mod 1 (SK.SW.Gaz.Lot)
+
+
+
+
+
+
+
Mode 2 (RUD THR ELE AIL)
Mod 2 (SK.Gaz.SW.Lot)
+
+
+
+
+
+
+
Mode 3 (AIL ELE THR RUD)
Mod 2 (Lot.SW.Gaz.SK)
+
+
+
+
+
+
+
Mode 4 (AIL THR ELE RUD)
Mod 4 (Lot.Gaz.SW.SK)
+
+
+
+
+
+
+
Splash Screen
Ekran startowy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The profile specific folder, if set, will override general Backup folder
Katalog profili, jeśli ustawiony zmieni główny katalog backupów
+
+
+
+
+
+
+
Backup folder
Katalog Backupów
+
+
+
+
+
+
+
If set it will override the application general setting
Jeśli ustawione, nadpisze główne ustawienia aplikacji
+
+
+
+
+
+
+
if set, will override general backup enable
Jeśli ustawione, nadpisze główne ustawienia backupów
+
+
+
+
+
+
+
<html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html>
<html><head/><body><p>Kolejność kanałów</p><p><br/></p><p>Definiuje kolejność standardowych mikserów dla nowego modelu.</p></body></html>
+
+
+
+
+
+
+
R E T A
K W G L
+
+
+
+
+
+
+
R E A T
K W L G
+
+
+
+
+
+
+
R T E A
K G W L
+
+
+
+
+
+
+
R T A E
K G L W
+
+
+
+
+
+
+
R A E T
K L W G
+
+
+
+
+
+
+
R A T E
+
+
+
+
+
+
+
E R T A
W K G L
+
+
+
+
+
+
+
E R A T
W K L G
+
+
+
+
+
+
+
E T R A
W G K L
+
+
+
+
+
+
+
E T A R
W G L K
+
+
+
+
+
+
+
E A R T
W L K G
+
+
+
+
+
+
+
E A T R
W L G K
+
+
+
+
+
+
+
T R E A
G K W L
+
+
+
+
+
+
+
T R A E
G K L W
+
+
+
+
+
+
+
T E R A
G W K L
+
+
+
+
+
+
+
T E A R
G W L K
+
+
+
+
+
+
+
T A R E
G L K W
+
+
+
+
+
+
+
T A E R
G L W K
+
+
+
+
+
+
+
A R E T
L K W G
+
+
+
+
+
+
+
A R T E
L R G W
+
+
+
+
+
+
+
A E R T
L W K G
+
+
+
+
+
+
+
A E T R
L W G K
+
+
+
+
+
+
+
A T R E
L G K W
+
+
+
+
+
+
+
A T E R
L G W K
@@ -327,272 +628,680 @@ Mode 4:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Select Folder
Wybierz Folder
+
+
+
+
+
+
+
Select Executable
Wybierz EXE
+
+
+
+
Release channel
+
+
+
+
Releases (stable)
+
+
+
+
Release candidates (testing)
+
+
+
+
Nightly builds (unstable)
+
+
+
+
+
+
+
Simulator Volume Gain
Głośność symulatora
+
+
+
+
+
+
+
Profile Name
Nazwa profilu
+
+
+
+
+
+
+
Clear Image
Wyczyść obrazek
+
+
+
+
+
+
+
Append version number to FW file name
Dodaj numer Firmware do nazwy pliku
+
+
+
+
+
+
+
Offer to write FW to Tx after download
Zaproponuj zapisanie Firmware do radia po pobraniu
+
+
+
+
+
+
+
Radio Type
Typ Radia
+
+
+
+
+
+
+
Other Settings
Inne ustawienia
+
+
+
+
+
+
+
General Settings
Główne ustawienia
+
+
+
+
+
+
+
SD Structure path
Struktura karty SD
+
+
+
+
+
+
+
Application Settings
Ustawienia Aplikacji
+
+
+
+
+
+
+
Show splash screen when Companion starts
Pokaż ekran startowy przy uruchamianiu Companion
+
+
+
+
+
+
+
Automatic check for Companion updates
Automatycznie sprawdź aktualizacje Companion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Enable automatic backup before writing firmware
Uaktywnij automatyczny backup przed zapisem firmware
+
+
+
+
+
+
+
Automatic check for OpenTX firmware updates
Automatycznie sprawdź aktualizacje firmware OpenTX
+
+
+
+
+
+
+
Splash Screen Library
Biblioteka ekranów startowych
+
+
+
+
+
+
+
Google Earth Executable
Plik wykonywalny Google Earth
+
+
+
+
+
+
+
Only show user splash images
Pokaż tylko ekrany startowe użytkownika
+
+
+
+
+
+
+
Show user and companion splash images
Pokaż ekrany startowe użytkownika i Companion
+
+
+
+
+
+
+
User Splash Screens
Użyj ekranu startowego
+
+
+
+
+
+
+
Automatic Backup Folder
Automatyczny Katalog Backupów
+
+
+
+
+
+
+
Simulator Settings
Ustawienia Symulatora
+
+
+
+
+
+
+
Simulator BackLight
Podświetlenie symulatora
+
+
+
+
+
+
+
Enable
Aktywuj
+
+
+
+
+
+
+
Action on New Model
Akcje na nowym modelu
+
+
+
+
+
+
+
<html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html>
<html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html>
+
+
+
+
+
+
+
most recently used files
+
+
+
+
+
+
+
Startup Settings
+
+
+
+
+
+
+
Remember
+
+
+
+
+
+
+
Output Logs Folder
+
+
+
+
+
+
+
Remove empty model slots when deleting models (only applies for radios w/out categories)
Usuń puste sloty modeli gry kasujesz modele (dziala tylko z radiem bez kategori)
+
+
+
+
+
+
+
Use model wizard
Użyj kreatora modelu
+
+
+
+
+
+
+
Open model editor
Otwórz edytor modelu
+
+
+
+
+
+
+
Just create the model
TYlko utwórz model
+
+
+
+
+
+
+
Debug Output Logging
+
+
+
+
+
+
+
<html><head/><body><p>Keep a log of all debugging messages generated by the desktop Companion/Simulator applications. An OpenTX developer may request this to help diagnose an issue.</p></body></html>
+
+
+
+
+
+
+
Application (Companion/Simulator)
+
+
+
+
+
+
+
<html><head/><body><p>Keep a log of all messages generated by the radio firmware when running in Simulator. This is the same information one would also see in the Simulator <span style=" font-style:italic;">Debug Output</span> window.</p></body></html>
+
+
+
+
+
+
+
Radio Firmware (in Simulator)
+
+
+
+
+
+
+
Blue
Niebieskie
+
+
+
+
+
+
+
Green
Zielone
+
+
+
+
+
+
+
Red
Czerwone
+
+
+
+
+
+
+
Orange
Pomarańczowe
+
+
+
+
+
+
+
Yellow
Żółte
+
+
+
+
+
+
+
Screenshot capture folder
+
+
+
+
+
+
+
Joystick
Joystick
+
+
+
+
+
+
+
Calibrate
Kalibracja
+
+
+
+
+
+
+
Only capture to clipboard
Zapisz tylko do schowka
+
+
+
+
+
+
+
Remember simulator switch values
Zapamiętaj ustawienia przełączników w symulatorze
@@ -673,6 +1382,31 @@ Mode 4:
Images (%1)
Obrazki (%1)
+
+
+
+
+ Use releases (stable)
+
+
+
+
+ Use release candidates (testing)
+
+
+
+
+
+
+ Use nightly builds (unstable)
+
+
+
+
+
+ Use releases and release candidates (testing)
+
+
BinEepromFormat
@@ -893,36 +1627,85 @@ Mode 4:
ChecklistDialog
+
+
+
+
+
+
+
Edit Checklist
+
+
+
+
+
+
+
Line nn, Col nn
+
+
+
+
+
+
+
&Import...
+
+
+
+
+
+
+
&Cancel
+
+
+
+
+
+
+
&OK
+
+
+
+
+
+
+
Please note, the maximum width displayable is radio model limited. Also, renaming the model will break the link to this checklist file.
+
+
+
+
+
+
+
File: unknown
@@ -1169,31 +1952,73 @@ If you have a settings backup file, you may import that instead.
CompareDialog
+
+
+
+
+
+
+
Compare Models
Porównaj modele
+
+
+
+
+
+
+
To compare models, drag and drop them anywhere in this window.
Aby porównaćmodele przeciąnij i upuść je gdziekowiek do tego okna.
+
+
+
+
+
+
+
Close
Zamknij
+
+
+
+
+
+
+
Style
+
+
+
+
+
+
+
Print
Drukuj
+
+
+
+
+
+
+
Print to file
Drukuj do pliku
@@ -1350,87 +2175,213 @@ If you have a settings backup file, you may import that instead.
Curves
+
+
+
+
+
+
+
Fixed X
Stałe X
+
+
+
+
+
+
+
Custom X
Własny X
+
+
+
+
+
+
+
Lines
Łamana
+
+
+
+
+
+
+
Smooth
Gładka
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Curve type
Typy Krzywej
+
+
+
+
+
+
+
Curve Creator
Kreator Krzywych
+
+
+
+
+
+
+
Y at X=0
Y dla X=0
+
+
+
+
+
+
+
Point size
+
+
+
+
+
+
+
Y at X=100
Y dla X=100
+
+
+
+
+
+
+
Both
Obie
+
+
+
+
+
+
+
x>0
x>0
+
+
+
+
+
+
+
x<0
x<0
+
+
+
+
+
+
+
Apply
Zatwierdź
+
+
+
+
+
+
+
Side
Strona
+
+
+
+
+
+
+
Y at X=-100
Y dla X=-100
+
+
+
+
+
+
+
Coefficient
Współczynnik
+
+
+
+
+
+
+
Curve name
Nazwa krzywej
@@ -1843,42 +2794,133 @@ If you have a settings backup file, you may import that instead.
CustomizeSplashDialog
+
+
+
+
+
+
+
Transmitter Splash Screen Editor
Edytor ekrany startowego radia
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Invert
Odwróć
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load FW
Otwórz firmware
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load Pict
Załaduj obrazek
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load Profile
Załaduj profil
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Save
Zapisz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Open Splash Library
Otwórz bibliotekę obrazków
@@ -1887,6 +2929,34 @@ If you have a settings backup file, you may import that instead.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
...
@@ -2002,48 +3072,48 @@ If you have a settings backup file, you may import that instead.
Błąd konwersji pola %1
-
+
Switch
Przełącznik
-
+
Switch
Przełącznik
-
+
cannot be exported on this board!
nie może być wyeksportowana na tę platformę!
-
+
Source
Źródło
-
+
Source %1 cannot be exported on this board!
Źródło %1 nie może być wyeksportowane na tę płytę!
-
+
OpenTX only accepts %1 points in all curves
OpenTX zezwala tylko na %1 punktów we wszystkich krzywych
-
+
OpenTx only accepts %1 points in all curves
OpenTX zezwala tylko na %1 punktów we wszystkich krzywych
-
-
+
+
OpenTX on this board doesn't accept this function
OpenTX na tej platformie nie dopuszcza tej funkcji
-
+
OpenTX doesn't accept this radio protocol
OpenTX nie obsługuje tego protokołu radiowego
@@ -2052,25 +3122,57 @@ If you have a settings backup file, you may import that instead.
DebugOutput
-
+
+
+
+
+
+
+
+
+
Debug Output
Wyjście debugera
-
+
+
+
+
+
+
+
+
+
<html><head/><body><p>Enable or disable the filter. If the button won't stay enabled, it is likely there is a syntax error in the Regular Expression entered.</p></body></html>
<html><hrad/><body><p>Włącz lub wyłącz filtr. Jeśli przycisk nie będzie aktywny to znaczy że jest błąd składni we wprowadzonym wyrażeniu regularnym.</p></body></html>
-
+
+
+
+
+
+
+
+
+
Filter:
Filtr:
-
+
+
+
+
+
+
+
+
+
<html><head/><body><p>Enter filter text here. Click the help/info button for details about using the filter. </p><p>
To <b>remove a remembered entry</b> from the filter list, first choose it, and then press <code>Shift-Delete</code> (or <code>Shift-Backspace</code>) key combination.</p></body></html>
<html><head/><body><p>Wpisz teks filtru tutaj. Kliknij przycisk. pomoc/info w celu uzyskania szczegółów użycia filtra.</p><p>
@@ -2078,61 +3180,141 @@ W celu <b>usunięcia filtru</b> z listy, najpierw wybierz go, a nast
-
+
+
+
+
+
+
+
+
+
Buffer:
Bufor:
-
+
+
+
+
+
+
+
+
+
Number of lines to keep in display.
Ilość linii trzymanej na wyświetlaczu.
-
+
+
+
+
+
+
+
+
+
Filter &Help
&Pomoc Filtra
-
+
+
+
+
+
+
+
+
+
Show information about using the filter.
Pokaż informacje jak uzywać filtra.
-
+
+
+
+
+
+
+
+
+
Word &Wrap
Podział &Słowa
-
+
+
+
+
+
+
+
+
+
Toggle word wrapping on/off.
Przełącz dzielenie słowa on/off.
-
+
+
+
+
+
+
+
+
+
&Clear
&Wyczyść
-
+
+
+
+
+
+
+
+
+
Clear the output window of all text.
Wyczyść tekst z okna.
-
+
+
+
+
+
+
+
+
+
Enable &Filter
Włącz &Filtr
-
+
+
+
+
+
+
+
+
+
Turn the filter on/off.
Przełącz filtr on/off.
@@ -2151,6 +3333,13 @@ W celu <b>usunięcia filtru</b> z listy, najpierw wybierz go, a nast
DownloadDialog
+
+
+
+
+
+
+
Downloading:
Pobierz:
@@ -2295,46 +3484,109 @@ wielkość eepromu to 4096 ale tylko pierwsze 2048 jest użyte
ExpoDialog
+
+
+
+
+
+
+
Weight
Waga
+
+
+
+
+
+
+
Scale
Skala
+
+
+
+
+
+
+
Include Trim
Uwzględnij trymer
+
+
+
+
+
+
+
No
Nie
+
+
+
+
+
+
+
Yes
Tak
+
+
+
+
+
+
+
Curve
Krzywa
+
+
+
+
+
+
+
Offset
Wyrównanie
+
+
+
+
+
+
+
The source for the mixer
Źródło miksera
+
+
+
+
+
+
+
Input name
Wprowadź Nazwę
@@ -2342,41 +3594,111 @@ wielkość eepromu to 4096 ale tylko pierwsze 2048 jest użyte
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
GV
ZG
+
+
+
+
+
+
+
Flight modes
Fazy lotu
+
+
+
+
+
+
+
Switch
Przełącznik
+
+
+
+
+
+
+
Source
Źródło
+
+
+
+
+
+
+
Line name
Nazwa linii
+
+
+
+
+
+
+
Stick Side
Strona drążka
+
+
+
+
+
+
+
Source for the mixer.
Źródło miksera.
+
+
+
+
+
+
+
Switch used to enable the line.
If blank then the input is considered to be "ON" all the time.
Przełącznik używany do aktywacji linii.
@@ -2384,21 +3706,49 @@ Jeśli puste linia jest uznawana za aktywną cały czas.
+
+
+
+
+
+
+
NEG
x<0(Ujemna)
+
+
+
+
+
+
+
POS
x>0(Dodatnia)
+
+
+
+
+
+
+
ALL
Wszystkie
+
+
+
+
+
+
+
Curve applied to the source.
Krzywa załączona do źródła.
@@ -3045,31 +4395,73 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FirmwarePreferencesDialog
+
+
+
+
+
+
+
Downloads
Pobrania
+
+
+
+
+
+
+
Check for updates
Sprawdź aktualizacje
+
+
+
+
+
+
+
Firmware
Firmware
+
+
+
+
+
+
+
Download firmware
+
+
+
+
+
+
+
Download SD contents
+
+
+
+
+
+
+
Latest Download
Ostatnie pobranie
@@ -3111,67 +4503,158 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FlashEEpromDialog
+
+
+
+
+
+
+
Write Models and Settings to Radio
Zapisz Modele i Ustawienia do radia
+
+
+
+
+
+
+
Load...
Załaduj...
+
+
+
+
+
+
+
Current Profile
Aktualny profil
+
+
+
+
+
+
+
Allows Companion to write to older version of the firmware
Pozwól Companion na zapis do starszej wersji firmware
+
+
+
+
+
+
+
Check Firmware compatibility
Sprawdź kompatybilność firmware
+
+
+
+
+
+
+
<html><head/><body><p>Saves a dated copy of your eeprom to the backup folder you specified in the Companion settings before writing the current model to the radio.</p></body></html>
<html><head/><body><p>Zapisuje datowaną kopię Twojego eepromu do folderu backupowego zdefiniowanego w Companion przed zapisem aktualnego modelu do radia.</p></body></html>
+
+
+
+
+
+
+
Backup before Write
Zbackupuj przed zapisem
+
+
+
+
+
+
+
<html><head/><body><p>Modify calibration parameters using settings from current profile</p></body></html>
<html><head/><body><p>Zmiana parametrów kalibracji przy użyciu aktualnego profilu</p></body></html>
+
+
+
+
+
+
+
Patch calibration setting from profile
Zamień ustawienia kalibracji wartościami z profilu
+
+
+
+
+
+
+
<html><head/><body><p>Modify HW parameters using settings from current profile</p></body></html>
<html><head/><body><p>Zmień ustawiania parametrów HW przy pomocy wartości z aktualnego profilu</p></body></html>
+
+
+
+
+
+
+
Patch HW settings from profile
Wgraj ustawienia hardware z profilu
+
+
+
+
+
+
+
Cancel
Przerwij
+
+
+
+
+
+
+
Write to TX
Zapisz do radia
@@ -3229,71 +4712,169 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FlashFirmwareDialog
+
+
+
+
+
+
+
Flash Firmware
Sflashuj Firmware
+
+
+
+
+
+
+
Load...
Załaduj...
+
+
+
+
+
+
+
Date & Time
Data i Czas
+
+
+
+
+
+
+
Variant
Wariant
+
+
+
+
+
+
+
Version
Wersja
+
+
+
+
+
+
+
Use profile start screen
Użyj ekranu startowego z profilu
+
+
+
+
+
+
+
Use firmware start screen
Użyj ekranu startowego z firmware
+
+
+
+
+
+
+
Use library start screen
Użyj ekranu startowego z biblioteki
+
+
+
+
+
+
+
Use another start screen
Użyj innego ekranu startowego
+
+
+
+
+
+
+
Allows Companion to write to older version of the firmware
Pozwól Companion na zapis do starszej wersji firmware
+
+
+
+
+
+
+
Check Hardware compatibility
Sprawdź kompatybilność firmware
+
+
+
+
+
+
+
Backup and restore Models and Settings
Zbakupuj i odtwórz Modele i Ustawienia
+
+
+
+
+
+
+
Cancel
Przerwij
+
+
+
+
+
+
+
Write to TX
Zapisz do radia
@@ -3493,21 +5074,49 @@ Aktualnie używasz:
FlightMode
+
+
+
+
+
+
+
Fade In
Spowolnienie aktywacji
+
+
+
+
+
+
+
Fade Out
Spowolnienie wyłączania
+
+
+
+
+
+
+
Name
Nazwa
+
+
+
+
+
+
+
Switch
Przełącznik
@@ -3697,11 +5306,25 @@ Aktualnie używasz:
FusesDialog
+
+
+
+
+
+
+
Fuses
Bezpieczniki
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3731,11 +5354,25 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Read Fuses
Odczytaj bezpieczniki
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3769,6 +5406,13 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Reset Fuses
EEPROM - PROTECT
Zresetuj bezpieczniki
@@ -3776,6 +5420,13 @@ EEPROM jest chroniony
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3809,6 +5460,13 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Reset Fuses
EEPROM - DELETE
Zresetuj bezpieczniki
@@ -3816,6 +5474,13 @@ EEPROM będzie skasowany
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3892,21 +5557,49 @@ p, li { white-space: pre-wrap; }
GeneralEdit
+
+
+
+
+
+
+
Store calib. and hw settings in selected profile
Zapamiętanie kalibracji i ustawień HW w wybranym profilu
+
+
+
+
+
+
+
Retrieve calib. and hw settings from profile
Odtworzenie kalibracji i ustawień HW z profilu
+
+
+
+
+
+
+
Radio settings
Ustawinia radia
+
+
+
+
+
+
+
General settings used throught the transmitter.
These will be relevant for all models in the same EEPROM.
Główne ustawienia radia.
@@ -3975,151 +5668,389 @@ Będą one obowiązywać dla wszystkich modeli w tym samym EEPROM-ie.GeneralSetup
+
+
+
+
+
+
+
Form
Formularz
+
+
+
+
+
+
+
GPS Coordinates
Koordynaty GPS
+
+
+
+
+
+
+
Speaker Pitch (spkr only)
Wysokość tonów (tylko dźwięki)
+
+
+
+
+
+
+
Measurement Units
Jednostki miar
+
+
+
+
+
+
+
NMEA
NMEA
+
+
+
+
+
+
+
Voice Language
Język komunikatów
+
+
+
+
+
+
+
Timeshift from UTC
Strefa czasowa względem UTC
+
+
+
+
+
+
+
Metric
Metryczne
+
+
+
+
+
+
+
Imperial
Imperialne
+
+
+
+
+
+
+
Country Code
Kod kraju
+
+
+
+
+
+
+
America
Ameryka
+
+
+
+
+
+
+
Japan
Japonia
+
+
+
+
+
+
+
Europe
Europa
+
+
+
+
+
+
+
+
+
+
+
+
+
+
X-Short
Bardzo krótka
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Short
Krótka
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Normal
Normalna
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Long
Długa
+
+
+
+
+
+
+
+
+
+
+
+
+
+
X-Long
Bardzo długa
+
+
+
+
+
+
+
Color 1
Kolor 1
+
+
+
+
+
+
+
Color 2
Kolor 2
+
+
+
+
+
+
+
Beeper Length
Długość piknięcia
+
+
+
+
+
+
+
RotEnc Navigation
Nawigacja pokrętłem
+
+
+
+
+
+
+
Beeper Mode
Tryb pikania
+
+
+
+
+
+
+
Vario pitch at zero
Ton Wario dla zera
+
+
+
+
+
+
+
Standard
Standard
+
+
+
+
+
+
+
Optrex
Optrex
+
+
+
+
+
+
+
Readonly Unlock
Odblokuj "Tylko do odczytu"
+
+
+
+
+
+
+
Sound Mode
Tryb dźwiękowy
+
+
+
+
+
+
+
Beeper volume
0 - Quiet. No beeps at all.
@@ -4138,59 +6069,164 @@ Będą one obowiązywać dla wszystkich modeli w tym samym EEPROM-ie.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Quiet
Cichy
+
+
+
+
+
+
+
Alarms Only
Tylko alarmy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
No Keys
Bez przycisków
+
+
+
+
+
+
+
+
+
+
+
+
+
+
All
Wszystkie
+
+
+
+
+
+
+
Only Alarms
Tylko Alarmy
+
+
+
+
+
+
+
Haptic Mode
Tryb wibracji
+
+
+
+
+
+
+
Beeper
Pikanie
+
+
+
+
+
+
+
Speaker
Głośnik
+
+
+
+
+
+
+
BeeperVoice
Pikanie i głosy
+
+
+
+
+
+
+
SpeakerVoice
Głośnik i głosy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -4206,57 +6242,141 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
SC
SC
+
+
+
+
+
+
+
SE
SE
+
+
+
+
+
+
+
SA
SA
+
+
+
+
+
+
+
SF
SF
+
+
+
+
+
+
+
SH
SH
+
+
+
+
+
+
+
SD
SD
+
+
+
+
+
+
+
SB
SB
+
+
+
+
+
+
+
SG
SG
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Hz
Hz
+
+
+
+
+
+
+
Battery Warning
Ostrzeżenie o zasilaniu
+
+
+
+
+
+
+
Battery warning voltage.
This is the threashhold where the battery warning sounds.
@@ -4268,11 +6388,25 @@ Dopuszczalne wartości 5v-10v
+
+
+
+
+
+
+
Vario pitch at max
Ton Wario dla Maks
+
+
+
+
+
+
+
If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds.
Jeśli ta wartość jest różna od 0, każde naciśnięcie klawisza włączy podświetlenie, które zgaśnie po ustalonej liczbie sekund.
@@ -4280,123 +6414,313 @@ Dopuszczalne wartości 5v-10v
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
sec
s
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ms
ms
+
+
+
+
+
+
+
Backlight Brightness
Jasność Podświetlenia
+
+
+
+
+
+
+
Vario repeat at zero
Powtarzanie dla Wario zero
+
+
+
+
+
+
+
Backlight Auto OFF after
Wyłącz podświetlenie po
+
+
+
+
+
+
+
Backlight color
Kolor Podświetlenia
+
+
+
+
+
+
+
Min
Min
+
+
+
+
+
+
+
+
+
+
+
+
+
+
v
V
+
+
+
+
+
+
+
Max
Maks
+
+
+
+
+
+
+
Contrast
Kontrast
+
+
+
+
+
+
+
Battery Meter Range
Zakres Pomiaru Baterii
+
+
+
+
+
+
+
If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes.
Radio zasygnalizuje dźwiękiem brak aktywności po określonej liczbie minut. 0- wyłącza tę funkcję.
+
+
+
+
+
+
+
min
Min
+
+
+
+
+
+
+
4800 Baud
4800 bps
+
+
+
+
+
+
+
9600 Baud
9600 bps
+
+
+
+
+
+
+
14400 Baud
14400 bps
+
+
+
+
+
+
+
19200 Baud
19200 bps
+
+
+
+
+
+
+
38400 Baud
38400 bps
+
+
+
+
+
+
+
57600 Baud
57600 bps
+
+
+
+
+
+
+
76800 Baud
76800 bps
+
+
+
+
+
+
+
115200 Baud
115200 bps
+
+
+
+
+
+
+
Backlight Switch
Przełącznik Podświetlenia
+
+
+
+
+
+
+
Show Splash Screen on Startup
Pokazuj ekran startowy z logo
+
+
+
+
+
+
+
This is the switch selectrion for turning on the backlight (if installed).
@@ -4404,11 +6728,25 @@ Dopuszczalne wartości 5v-10v
+
+
+
+
+
+
+
LCD Display Type
Typ ekranu LCD
+
+
+
+
+
+
+
Adjust RTC
Dostosuj Zegar
@@ -4416,6 +6754,27 @@ Dopuszczalne wartości 5v-10v
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -4441,127 +6800,309 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
MAVLink Baud Rate
Prędkość przesyłu MAVLink
+
+
+
+
+
+
+
Speaker Volume
Głośność dźwięków
+
+
+
+
+
+
+
Haptic Length
Długość wibracji
+
+
+
+
+
+
+
Inactivity Timer
Timer bezczynności
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Show splash screen on startup
Pokazuj ekran startowy z logo
+
+
+
+
+
+
+
---
---
+
+
+
+
+
+
+
2s
2s
+
+
+
+
+
+
+
3s
3s
+
+
+
+
+
+
+
4s
4s
+
+
+
+
+
+
+
6s
6s
+
+
+
+
+
+
+
8s
8s
+
+
+
+
+
+
+
10s
10s
+
+
+
+
+
+
+
15s
15s
+
+
+
+
+
+
+
"No Sound" Warning
Ostrzeżenie "Brak Dźwięku"
+
+
+
+
+
+
+
Haptic Strength
Siła wibracji
+
+
+
+
+
+
+
Beep volume
Głośność sygnałów
+
+
+
+
+
+
+
Wav volume
Głośność WAV
+
+
+
+
+
+
+
Vario volume
Głośność wariometru
+
+
+
+
+
+
+
Background volume
Głośność tła
+
+
+
+
+
+
+
Stick Mode
Mod drążków
+
+
+
+
+
+
+
Default Channel Order
Bazowa kolejność kanałów
+
+
+
+
+
+
+
FAI Mode
Tryb FAI
+
+
+
+
+
+
+
Automatically adjust the radio's clock if a GPS is connected to telemetry.
Dostrój automatycznie zegar radia jesli GPS jest podłączony do telemetri.
+
+
+
+
+
+
+
Backlight OFF Brightness
Jacność wyłączonego podświetlenia
+
+
+
+
+
+
+
Mode selection:
Mode 1:
@@ -4603,245 +7144,586 @@ Mode 4:
+
+
+
+
+
+
+
Mode 1 (RUD ELE THR AIL)
Mod 1 (SK.SW.Gaz.Lot)
+
+
+
+
+
+
+
Mode 2 (RUD THR ELE AIL)
Mod 2 (SK.Gaz.SW.Lot)
+
+
+
+
+
+
+
Mode 3 (AIL ELE THR RUD)
+
+
+
+
+
+
+
Mode 4 (AIL THR ELE RUD)
Mod 4 (Lot.Gaz.SW.SK)
+
+
+
+
+
+
+
<html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html>
<html><head/><body><p>Kolejność kanałów</p><p><br/></p><p>Definiuje kolejność standardowych mikserów dla nowego modelu.</p></body></html>
+
+
+
+
+
+
+
If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio.
+
+
+
+
+
+
+
RSSI Poweroff Warning
+
+
+
+
+
+
+
Low EEPROM Warning
+
+
+
+
Owner Registration ID
+
+
+
+
aaaaaaAA
+
+
+
+
+
+
+
R E T A
K W G L
+
+
+
+
+
+
+
R E A T
K W L G
+
+
+
+
+
+
+
R T E A
K G W L
+
+
+
+
+
+
+
R T A E
K G L W
+
+
+
+
+
+
+
R A E T
K L W G
+
+
+
+
+
+
+
R A T E
K L G W
+
+
+
+
+
+
+
E R T A
W K G L
+
+
+
+
+
+
+
E R A T
W K L G
+
+
+
+
+
+
+
E T R A
W G K L
+
+
+
+
+
+
+
E T A R
W G L K
+
+
+
+
+
+
+
E A R T
W L K G
+
+
+
+
+
+
+
E A T R
W L G K
+
+
+
+
+
+
+
T R E A
G K W L
+
+
+
+
+
+
+
T R A E
G K L W
+
+
+
+
+
+
+
T E R A
G W K L
+
+
+
+
+
+
+
T E A R
G W L K
+
+
+
+
+
+
+
T A R E
G L K W
+
+
+
+
+
+
+
T A E R
G L W K
+
+
+
+
+
+
+
A R E T
L K W G
+
+
+
+
+
+
+
A R T E
L R G W
+
+
+
+
+
+
+
A E R T
L W K G
+
+
+
+
+
+
+
A E T R
L W G K
+
+
+
+
+
+
+
A T R E
L G K W
+
+
+
+
+
+
+
A T E R
L G W K
+
+
+
+
Power On Delay
+
+
+
+
+
+
+
Jack Mode
+
+
+
+
+
+
+
Audio
+
+
+
+
+
+
+
Trainer
Trener
+
+
+
+
+
+
+
DMS
+
+
+
+
+
+
+
USB Mode
+
+
+
+
Power Off Delay
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Ask on Connect
+
+
+
+
+
+
+
Joystick (HID)
+
+
+
+
+
+
+
USB Mass Storage
+
+
+
+
+
+
+
USB Serial (CDC)
+
+
+
+
+
+
+
Stick reverse
Rewers drążków
+
+
+
+
+
+
+
Play Delay (switch mid position)
Opóźnienie odtwarzania (pozycja środkowa przełącznika)
+
+
+
+
+
+
+
Backlight flash on alarm
Błyskanie podświetleniem przy alarmie
+
+
+ Power On Speed
+
+
+
+
+ Power Off Speed
+
+
GeneralSetupPanel
@@ -4995,251 +7877,595 @@ Are you sure ?
Hardware
+
+
+
+
+
+
+
Form
Formularz
+
+
+
+
+
+
+
SQ
SQ
+
+
+
+
+
+
+
SR
SR
+
+
+
+
+
+
+
LS2
LS2
+
+
+
+
+
+
+
SP
SP
+
+
+
+
+
+
+
SO
SO
+
+
+
+
+
+
+
S4
S4
+
+
+
+
+
+
+
RS
Prawy suwak
+
+
+
+
+
+
+
SB
SB
+
+
+
+
+
+
+
PPM 2
PPM 2
+
+
+
+
+
+
+
OFF
Wyłącz
+
+
+
+
+
+
+
S-Port Mirror
Kopia S-Port
+
+
+
+
+
+
+
Telemetry
Telemetria
+
+
+
+
+
+
+
SBUS Trainer
Trener SBUS
+
+
+
+
+
+
+
Debug
Debugowanie
+
+
+
+
+
+
+
Rud
SK
+
+
+
+
+
+
+
PPM 3
PPM 3
+
+
+
+
+
+
+
S1
Potencjometr 1
+
+
+
+
+
+
+
S2
Potencjometr 2
+
+
+
+
+
+
+
S3
S3
+
+
+
+
+
+
+
PPM 1
PPM 1
+
+
+
+
+
+
+
Serial Port
Port szeregowy
+
+
+
+
+
+
+
v
V
+
+
+
+
+
+
+
PPM Multiplier
Mnożnik PPM
+
+
+
+
+
+
+
Current Offset
Aktuany ofset
+
+
+
+
+
+
+
PPM 4
PPM 4
+
+
+
+
+
+
+
SA
SA
+
+
+
+
+
+
+
Ele
SW
+
+
+
Antenna
Antena
+
+
+
+
+
S5
S5
+
+
+
+
+
+
+
Ail
Lotki
+
+
+
+
+
+
+
Thr
Gaz
+
+
+
+
+
+
+
SC
SC
+
+
+
+
+
+
+
LS
Lewy suwak
+
+
+
+
+
+
+
SD
SD
+
+
+
+
+
+
+
Battery Offset
Ofset baterii
+
+
+
+
+
+
+
SE
SE
+
+
+
+
+
+
+
SF
SF
+
+
+
+
+
+
+
SG
SG
+
+
+
+
+
+
+
SH
SH
+
+
+
+
+
+
+
SI
SI
+
+
+
+
+
+
+
SJ
SJ
+
+
+
+
+
+
+
SK
SK
+
+
+
+
+
+
+
SL
SL
+
+
+
+
+
+
+
SM
SM
+
+
+
+
+
+
+
SN
SN
+
+
+
+
+
+
+
RS2
RS2
+
+
+
+
+
+
+
Bluetooth
Bluetooth
+
+
+
+
+
+
+
ADC Filter
Filtr ADC
+
+
+
+
+
+
+
Device Name:
@@ -5338,71 +8564,169 @@ Are you sure ?
Heli
+
+
+
+
+
+
+
Invert Elevator
Odwróć SW
+
+
+
+
+
+
+
Invert Aileron
Odwróć lotki
+
+
+
+
+
+
+
Invert Collective
Odwróć Pochylenie (Collective)
+
+
+
+
+
+
+
Invert
Odwróć
+
+
+
+
+
+
+
Off
Wyłącz
+
+
+
+
+
+
+
120
120
+
+
+
+
+
+
+
120X
120X
+
+
+
+
+
+
+
140
140
+
+
+
+
+
+
+
90
90
+
+
+
+
+
+
+
Long. cyc
Długi cykl
+
+
+
+
+
+
+
Lateral cyc
Boczny cykl
+
+
+
+
+
+
+
Collective
Pochylenie (Collective)
+
+
+
+
+
+
+
Swash Type
Typ tarczy
+
+
+
+
+
+
+
Swash Ring
Pierścień tarczy
@@ -5795,46 +9119,109 @@ Are you sure ?
LogsDialog
+
+
+
+
+
+
+
Companion Log Viewer
Companion przegląd logów
+
+
+
+
+
+
+
Filename
Nazwa pliku
+
+
+
+
+
+
+
Open LogFile
Otwórz plik logów
+
+
+
+
+
+
+
Zoom
Przybliżenie
+
+
+
+
+
+
+
Save session CSV
+
+
+
+
+
+
+
X
X
+
+
+
+
+
+
+
Y
Y
+
+
+
+
+
+
+
Reset
Reset
+
+
+
+
+
+
+
Fly sessions
Sesja lotów
@@ -7336,11 +10723,23 @@ Zapisać?
MixerDialog
+
+
+
+
+
Dialog
Dialog
+
+
+
+
+
+
+
Source
Źródło
@@ -7349,21 +10748,70 @@ Zapisać?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The source for the mixer
Źródło miksera
+
+
+
+
+
+
+
Weight
Waga
+
+
+
+
+
+
+
Offset
Wyrównanie
+
+
+
+
+
+
+
Include Trim
Uwzględnij trymer
@@ -7371,31 +10819,87 @@ Zapisać?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
GV
Zm-Gl
+
+
+
+
+
+
+
No
Nie
+
+
+
+
+
+
+
Yes
Tak
+
+
+
+
+
+
+
Curve
Krzywa
+
+
+
+
+
+
+
The curve used by the mix
Krzywa użyta do miksera
+
+
+
+
+
+
+
Switch used by the mix.
If blank then the mix is considered to be "ON" all the time.
Przełącznik użyty do miksera
@@ -7403,16 +10907,37 @@ Jeśli pusty - mikser będzie stale aktywny.
+
+
+
+
+
+
+
Switch
Przełącznik
+
+
+
+
+
+
+
Warning
Ostrzeżenie
+
+
+
+
+
+
+
Mixer warning.
Setting this value will cause a beep to be emmitted when this value is active.
Ostrzeżenie miksera.
@@ -7420,31 +10945,73 @@ Ustawienie tej wartości spowoduje emitowanie dźwięku kiedy wartość będzie
+
+
+
+
+
+
+
OFF
Wyłącz
+
+
+
+
+
+
+
1 Beep
1 piknięcie
+
+
+
+
+
+
+
2 Beep
2 piknięcia
+
+
+
+
+
+
+
3 Beep
3 piknięcia
+
+
+
+
+
+
+
Multiplex
Połączenie
+
+
+
+
+
+
+
Multiplexer
This determines how mixer values are added.
@@ -7462,51 +11029,121 @@ Ustala w jaki sposób miksery są łączone.
+
+
+
+
+
+
+
ADD
Dodawaj
+
+
+
+
+
+
+
MULTIPLY
Pomnóż
+
+
+
+
+
+
+
REPLACE
Zastąp
+
+
+
+
+
+
+
Name
Nazwa
+
+
+
+
+
+
+
Flight modes
Fazy lotu
+
+
+
+
+
+
+
Include DR/Expo
Dołącz DR/Expo
+
+
+
+
+
+
+
Delay
Opóźnienie
+
+
+
+
+
+
+
Slow
Spowolnienie
+
+
+
+
+
+
+
Up
Do góry / (+)
+
+
+
+
+
+
+
Down
Do dołu / (-)
@@ -7515,6 +11152,34 @@ Ustala w jaki sposób miksery są łączone.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -7563,6 +11228,12 @@ p, li { white-space: pre-wrap; }
Invert All
Odwróć wszytko
+
+
+
+ FullScreenDialog
+
+
MixersListWidget
@@ -7736,11 +11407,23 @@ p, li { white-space: pre-wrap; }
ModelEdit
+
+
+
+
+
Dialog
Dialog
+
+
+
+
+
+
+
Simulate
Symulacja
@@ -7794,6 +11477,12 @@ p, li { white-space: pre-wrap; }
Telemetry
Telemetria
+
+
+
+ FullScreenDialog
+
+
ModelPrinter
@@ -8612,138 +12301,324 @@ p, li { white-space: pre-wrap; }
Module
+
+
+
+
+
+
+
Failsafe Mode
Tryb Failsafe
+
+
+
+
+
+
+
Start
Start
+
+
+
+
+
+
+
PPM delay
Opóźnienie PPM
+
+
+
+
+
+
+
Negative
Ujemna
+
+
+
+
+
+
+
Positive
Dodatnia
+
+
+
+
+
+
+
Polarity
Polaryzacja
+
+
+
+
+
+
+
Trainer Mode
Tryb trenera
+
+
+
+
+
+
+
PPM Frame Length
Długość ramki PPM
+
+
+
+
+
+
+
CH
Kan
+
+
+
+
+
+
+
Antenna
Antena
+
+
+
+
+
+
+
Option value
Wartość opcjonalna
+
+
+
+
+
+
+
Bind on startup
Binduj na starcie
+
+
+
+
+
+
+
RF Output Power
+
+
+
+
+
+
+
Low Power
Słabe zasilanie
+
+
+
+
+
+
+
us
us
+
+
+
+
+
+
+
Multi Radio Protocol
Wieloradiowy Protokół
+
+
+
+
+
+
+
Sub Type
+
+
+
+
+
+
+
Master/Jack
Trener/Jack
+
+
+
+
+
+
+
Slave/Jack
Uczeń/Jack
+
+
+
+
+
+
+
Master/SBUS Module
Trener/SBUS Moduł
+
+
+
+
+
+
+
Master/CPPM Module
Trener/CPPM Moduł
+
+
+
+
+
+
+
Master/SBUS in battery compartment
Trener/SBUS w kieszeni baterii
+
+
+
+
+
+
+
Show values in:
Pokaż wartości w:
+
+
+
+
+
+
+
%
abbreviation for percent
%
+
+
+
+
+
+
+
μs
abbreviation for microseconds
µs
+
+
+
+
+
+
+
ms
ms
+
+
+
+
Receiver 1
@@ -8751,94 +12626,232 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
+
+
+
+
+
X
X
+
+
+
+
Receiver 2
+
+
+
+
Receiver 3
+
+
+
+
+
+
+
WARNING: changing RF Output Power needs RE-BIND
+
+
+
+
+
+
+
Channels
Kanały
+
+
+
+
Registration ID
+
+
+
+
+
+
+
WARNING: Requires non-certified firmware!
+
+
+
+
+
+
+
Not set
BRAK
+
+
+
+
+
+
+
Hold
Utrzymuj
+
+
+
+
+
+
+
Custom
Ustawienia Własne
+
+
+
+
+
+
+
No Pulses
Brak sygnałów
+
+
+
+
+
+
+
Receiver
Odbiornik
+
+
+
+
+
+
+
Failsafe Positions
Pozycja Failsave
+
+
+
+
+
+
+
Protocol
Protokół
+
+
+
+
+
+
+
Receiver No.
Nr odbiornika.
+
+
+
+
+
+
+
Output type
Typ wyjścia
+
+
+
+
+
+
+
Open Drain
Otwarty dren
+
+
+
+
+
+
+
Push Pull
Push Pull
+
+
+
+
+
+ Internal
+ Wewnętrzny
+
+
+
+
+
+
+ Ext. + Int.
+
+
ModuleData
@@ -9578,21 +13591,49 @@ p, li { white-space: pre-wrap; }
PrintDialog
+
+
+
+
+
+
+
Close
Zamknij
+
+
+
+
+
+
+
Style
+
+
+
+
+
+
+
Print
Drukuj
+
+
+
+
+
+
+
Print to file
Drukuj do pliku
@@ -9616,11 +13657,25 @@ p, li { white-space: pre-wrap; }
ProgressDialog
+
+
+
+
+
+
+
Flash Firmware
Sflashuj Firmware
+
+
+
+
+
+
+
Close
Zamknij
@@ -9635,6 +13690,13 @@ p, li { white-space: pre-wrap; }
ProgressWidget
+
+
+
+
+
+
+
Show Details
Pokaż szczegóły
@@ -9788,16 +13850,37 @@ p, li { white-space: pre-wrap; }
RadioNotFoundDialog
+
+
+
+
+
+
+
No Radio Found
Nie odnaleziono Radia
+
+
+
+
+
+
+
<html><head/><body><p>No Radio was found!</p><p>Make sure that you hold the lower trim buttons towards the center while you turn it on.</p><p>Then connect the USB wire.</p><p><span style=" font-family:'arial,sans-serif'; font-size:13px; font-style:italic; color:#222222; background-color:#ffffff;">Note: if you have a Taranis that has not had the firmware upgraded to 2.0 then this version of Companion will not work.</span></p></body></html>
<html><head/><body><p>Radio nieodnalezione!</p><p>Upewnij się ze dokonałeś uruchomienia radia w trakcie trzymania obu dolnych trymerów "do środka radia".</p><p>Potem podłącz kabel USB.</p><p><span style=" font-family:'arial,sans-serif'; font-size:13px; font-style:italic; color:#222222; background-color:#ffffff;">Uwaga: Jeśli Twoje radio Taranis nie ma oprogramowania nowszego niż 2.0 ta wersja Comanion nie będzie z nim działała.</span></p></body></html>
+
+
+
+
+
+
+
OK
OK
@@ -9806,43 +13889,99 @@ p, li { white-space: pre-wrap; }
RadioOutputsWidget
-
+
+
+
+
+
+
+
+
+
Form
Formularz
-
+
+
+
+
+
+
+
+
+
View:
Widok:
-
+
+
+
+
+
+
+
+
+
Logical Switches
Przełączniki logiczne
-
+
+
+
+
+
+
+
+
+
Global Variables
Zmienne globalne
-
+
+
+
+
+
+
+
+
+
Channel Outputs
-
+
+
+
+
+
+
+
+
+
Mix Outputs
-
+
+
+
+
+
+
+
+
+
L
o
g
@@ -9857,7 +13996,15 @@ a
-
+
+
+
+
+
+
+
+
+
G
l
o
@@ -9873,7 +14020,15 @@ l
-
+
+
+
+
+
+
+
+
+
C
h
a
@@ -9891,7 +14046,15 @@ y
-
+
+
+
+
+
+
+
+
+
M
i
x
@@ -10731,86 +14894,205 @@ s
Setup
+
+
+
+
+
+
+
Throttle Source
Źródło gazu
+
+
+
+
+
+
+
Center beep
Pikanie przy centrowaniu
+
+
+
+
+
+
+
OFF
Wyłącz
+
+
+
+
+
+
+
Model Image
Obrazek modelu
+
+
+
+
+
+
+
Top LCD Timer
Timer górnego LCD
+
+
+
+
+
+
+
Switch Warnings
Ostrzeżenie o przełącznikach
+
+
+
+
+
+
+
Exponential
Wykładnicze
+
+
+
+
+
+
+
Extra Fine
Bardzo dokładne
+
+
+
+
+
+
+
Fine
Dokładne
+
+
+
+
+
+
+
Medium
Średnie
+
+
+
+
+
+
+
Coarse
Zgrubne
+
+
+
+
+
+
+
Edit Checklist...
+
+
+
+
+
+
+
Extended Limits
Rozszerzone limity (125%)
+
+
+
+
+
+
+
Extended Trims
Poszerzone trymery
+
+
+
+
+
+
+
Display Checklist
Wyświetl Czeklistę
+
+
+
+
+
+
+
Throttle Warning
Ostrzeżenie o gazie
+
+
+
+
+
+
+
Reverse throttle operation.
If this is checked the throttle will be reversed. Idle will be forward, trim will also be reversed and the throttle warning will be reversed as well.
@@ -10821,81 +15103,193 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również
+
+
+
+
+
+
+
Reverse Throttle
Odwrotna praca gazu
+
+
+
+
+
+
+
Throttle Trim Idle Only
Trymer gazu tylko dla wolnych obrotów
+
+
+
+
+
+
+
Timer 2
Timer 2
+
+
+
+
+
+
+
Timer 3
Timer 3
+
+
+
+
+
+
+
Timer 1
Timer 1
+
+
+
+
+
+
+
Never
Nigdy
+
+
+
+
+
+
+
On change
Przy zmianie
+
+
+
+
+
+
+
Always
Zawsze
+
+
+
+
+
+
+
Global Functions
Funkcje Globalne
+
+
+
+
+
+
+
Trim Step
Krok Trymera
+
+
+
+
+
+
+
Trims Display
Wyświetl Trymery
+
+
+
+
+
+
+
Warnings
Ostrzeżenia
+
+
+
+
+
+
+
Pot Warnings
Ostrzeżenie o potencjometrach
+
+
+
+
+
+
+
Manual
+
+
+
+
+
+
+
Auto
Automatyczne
+
+
+
+
+
+
+
Model
Model
@@ -11266,181 +15660,421 @@ Profile ID: [%1]; Radio ID: [%2]
SimulatorMainWindow
-
+
+
+
+
+
+
+
+
+
OpenTx Simulator
Symulator OpenTX
-
+
+
+
+
+
+
+
+
+
View
Widok
-
+
+
+
+
+
+
+
+
+
Radio Window
Okno Radia
-
+
+
+
+
+
+
+
+
+
Reload...
Przeładuj...
-
+
+
+
+
+
+
+
+
+
Tools
Narzędzia
-
+
+
+
+
+
+
+
+
+
Toolbar
Pasek narzędzi
-
+
+
+
+
+
+
+
+
+
Reload Lua Scripts
Przeładuj skrypty LUA
-
+
+
+
+
+
+
+
+
+
Reload the Lua environment on the simulated radio.
Przeładuj środowisko LUA na symulowanym radiu.
-
+
+
+
+
+
+
+
+
+
F7
F7
-
+
+
+
+
+
+
+
+
+
Reload Radio Data
Przeładuj Dane Radia
-
+
+
+
+
+
+
+
+
+
Reload all radio data without restarting the simulator.
Przeładuj dane radia bez restartowania symulatora.
-
+
+
+
+
+
+
+
+
+
F9
F9
-
+
+
+
+
+
+
+
+
+
Key Mapping
Mapowanie Klawiszy
-
+
+
+
+
+
+
+
+
+
Show keyboard maping reference.
Pokaż mapowanie klawiatury.
-
+
+
+
+
+
+
+
+
+
F1
F1
-
+
+
+
+
+
+
+
+
+
Joystick Settings
Ustawienia Joystika
-
+
+
+
+
+
+
+
+
+
Open joystick configuration settings dialog.
Otwórz dialog ustawień joystika.
-
+
+
+
+
+
+
+
+
+
F3
F3
-
+
+
+
+
+
+
+
+
+
LCD Screenshot
Zrzut ekrany LCD
-
+
+
+
+
+
+
+
+
+
Save a screenshot of the current simulated LCD screen.
Zapisz zrzut ekranu aktualnnie symulowanego monitora LCD.
-
+
+
+
+
+
+
+
+
+
F8
F8
-
+
+
+
+
+
+
+
+
+
Dock In Main Window
Zadokuj w głównym oknie
-
+
+
+
+
+
+
+
+
+
Show the radio in the main window or as a separate "floating" window.
Pokaż radio w głównym oknie lub w pływającym oddzielnym oknie.
-
+
+
+
+
+
+
+
+
+
Menu Bar
Pasek Menu
-
+
+
+
+
+
+
+
+
+
Show or hide the top menu bar.
Pokaż lub ukryj górny pasek menu.
-
+
+
+
+
+
+
+
+
+
Alt+M
Alt+M
-
+
+
+
+
+
+
+
+
+
Constrain Width
Wymuś szerokość
-
+
+
+
+
+
+
+
+
+
Set radio widget width to be a fixed size.
Ustaw stałą wielkość widgetu radia.
-
+
+
+
+
+
+
+
+
+
Constrain Height
Wymuś wysokość
-
+
+
+
+
+
+
+
+
+
Set radio widget height to be a fixed size.
Ustaw stałą wysokość widgetu radia.
@@ -11521,25 +16155,57 @@ Profile ID: [%1]; Radio ID: [%2]
SimulatorStartupDialog
-
+
+
+
+
+
+
+
+
+
OpenTX Simulator - Startup Options
Symulator OpenTX - Opcje Startowe
-
+
+
+
+
+
+
+
+
+
Simulator Startup Options:
Opcje Startowe Symulatora:
-
+
+
+
+
+
+
+
+
+
Radio Profile:
Profil radia:
-
+
+
+
+
+
+
+
+
+
Existing radio profiles are shown here.<br />
Create or edit profiles using the Companion application.
Tu są pokazane istniejące profile radia.<br />
@@ -11547,13 +16213,29 @@ Stwórz lub edytuj profile używając aplikacji Companion.
-
+
+
+
+
+
+
+
+
+
Radio Type:
Typ Radia:
-
+
+
+
+
+
+
+
+
+
Existing radio simulators are shown here.<br />
The radio type specified in the selected profile is used by default.
Tu są pokazane istniejące profile radia.<br />
@@ -11561,31 +16243,71 @@ Typ radia określony w wybranym profilu zostanie użyty jako domyślny.
-
+
+
+
+
+
+
+
+
+
Data Source:
Źródło Danych:
-
+
+
+
+
+
+
+
+
+
Data File:
Źródło Pliku:
-
+
+
+
+
+
+
+
+
+
Data Folder:
Folder Danych:
-
+
+
+
+
+
+
+
+
+
SD Image Path:
Ścieżka Obrazu SD:
-
+
+
+
+
+
+
+
+
+
Radio data (.bin/.eeprom/.otx) image file to use. A new file with a default image will be created if necessary.<br />
<b>NOTE</b>: any existing EEPROM data incompatible with the selected radio type may be overwritten!
Plik obrazu danych radia (.bin/.eeprom/.otx) do użytku. W razie potrzeby zostanie stworzony nowy plik z domyślnym obrazem.<br />
@@ -11593,7 +16315,15 @@ Typ radia określony w wybranym profilu zostanie użyty jako domyślny.
-
+
+
+
+
+
+
+
+
+
Select data file...
Wybierz plik danych...
@@ -11601,28 +16331,76 @@ Typ radia określony w wybranym profilu zostanie użyty jako domyślny.
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
...
-
+
+
+
+
+
+
+
+
+
Directory containing RADIO and MODELS folders to use.<br />
New folder(s) with default radio/model will be created here if necessary.
Katalog zawierajacy foldery RADIA i MODELI do użycia.<br />W razie potrzeby zostanią stworzone nowe foldery z domyślnym Radiem/Modelami.
-
+
+
+
+
+
+
+
+
+
Select data folder...
Wybierz folder danych...
-
+
+
+
+
+
+
+
+
+
Directory containing the SD card image to use.<br/>
The default is configured in the chosen Radio Profile.
Katalog zawierajacy obraz karty SD do użycia.<br/>
@@ -11630,31 +16408,71 @@ Domyślny jest skonfigurowany w wybranym Profilu Radia.
-
+
+
+
+
+
+
+
+
+
Select SD card image folder...
Wybierz folder obrazu karty SD...
-
+
+
+
+
+
+
+
+
+
Select which of the data sources (File/Folder/SD Card) you would like to start the simulator with.
Wybierz jakie źródło danych (Plik/Folder/Karta SD) chcesz użyć do uruchomienia symulatora.
-
+
+
+
+
+
+
+
+
+
File
Plik
-
+
+
+
+
+
+
+
+
+
Folder
Katalog
-
+
+
+
+
+
+
+
+
+
SD Path
Scieżka SD
@@ -11683,7 +16501,15 @@ Domyślny jest skonfigurowany w wybranym Profilu Radia.
SimulatorWidget
-
+
+
+
+
+
+
+
+
+
Companion Simulator
Symulator Companion
@@ -11771,6 +16597,20 @@ Domyślny jest skonfigurowany w wybranym Profilu Radia.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
...
@@ -11810,6 +16650,13 @@ Domyślny jest skonfigurowany w wybranym Profilu Radia.
StyleEditDialog
+
+
+
+
+
+
+
@@ -11818,21 +16665,49 @@ Domyślny jest skonfigurowany w wybranym Profilu Radia.
+
+
+
+
+
+
+
&Reset to default
+
+
+
+
+
+
+
&Cancel
+
+
+
+
+
+
+
&OK
+
+
+
+
+
+
+
This feature does not validate your changes and assumes you are familiar with CSS syntax for QT.
@@ -12090,190 +16965,475 @@ Too many errors, giving up.
Telemetry
+
+
+
+
+
+
+
A1
A1
+
+
+
+
+
+
+
A2
A2
+
+
+
+
+
+
+
RSSI
RSSI
+
+
+
+
+
+
+
Alarm 1
Alarm 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
----
----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Yellow
Żółty
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Orange
Pomarańczowy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Red
Czerwony
+
+
+
+
+
+
+
Alarm 2
Alarm 2
+
+
+
+
+
+
+
Disable telemetry audio warnings
+
+
+
+
+
Source
Źródło
+
+
+
+
+
+
+
Center Silent
Środek cichy
+
+
+
+
+
+
+
Altitude source
Źródło wysokości
+
+
+
+
+
+
+
Volts source
Źródło napięcia
+
+
+
+
+
+
+
Top Bar
Górny pasek
+
+
+
+
+
+
+
Serial Protocol
Protokół szeregowy
+
+
+
+
+
+
+
Sensors
Czujniki
+
+
+
+
+
+
+
Disable multi sensor handling
Wyłącz obsługę wielu czujników
+
+
+
+
+
+
+
Volt source
Źródło napięcia
+
+
+
+
+
+
+
Current source
Źródło prądu(natężenia)
+
+
+
+
+
+
+
Protocol
Protokół
+
+
+
+
+
+
+
None
Żadne
+
+
+
+
+
+
+
FrSky Sensor Hub
Hub Czujników FrSky
+
+
+
+
+
+
+
Blades
Łopaty śmigła
+
+
+
+
+
+
+
Sink Max
Maks. Opadanie
+
+
+
+
+
+
+
Climb Max
Maks. Wznoszenie
+
+
+
+
+
+
+
Sink Min
Min. Opadanie
+
+
+
+
+
+
+
Climb Min
Min. Wznoszenie
+
+
+
+
+
+
+
Vario source
Źródło wario
+
+
+
+
+
+
+
Vario limits
Limity wario
+
+
+
+
+
+
+
Altimetry
Wysokościomierz
+
+
+
+
+
+
+
mAh
mAh
+
+
+
+
+
+
+
A
A
+
+
+
+
+
+
+
Various
Różne
+
+
+
+
+
+
+
mAh count
Licznik mAh
+
+
+
+
+
+
+
FAS Offset
Wyrównanie FAS
+
+
+
+
+
+
+
Persistent mAh
Stałe mAh
@@ -12282,107 +17442,289 @@ Too many errors, giving up.
TelemetryAnalog
+
+
+
+
+
+
+
Unit
Jednostka
+
+
+
+
+
+
+
Max Value
Maks. wartość
+
+
+
+
+
+
+
Alarm 1
Alarm 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
----
----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Yellow
Żółty
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Orange
Pomarańczowy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Red
Czerwony
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<
<
+
+
+
+
+
+
+
+
+
+
+
+
+
+
>
>
+
+
+
+
+
+
+
Alarm 2
Alarm 2
+
+
+
+
+
+
+
Offset
Wyrównanie
+
+
+
+
+
+
+
Volts (V)
Wolty (V)
+
+
+
+
+
+
+
Amps (A)
Ampery (A)
+
+
+
+
+
+
+
Speed (m/s or ft/s)
Prędkość (m/s albo ft/s)
+
+
+
+
+
+
+
Raw (-)
Bezwymiarowe (-)
+
+
+
+
+
+
+
Speed (km/h or miles/h)
Prędkość (km/h albo mile/h)
+
+
+
+
+
+
+
Meters (m or ft)
Wysokość (m albo ft)
+
+
+
+
+
+
+
Temp (°)
Temp (°)
+
+
+
+
+
+
+
Fuel (%)
Paliwo (%)
+
+
+
+
+
+
+
mAmps (mA)
miliAmpery (mA)
@@ -12396,6 +17738,13 @@ Too many errors, giving up.
TelemetryCustomScreen
+
+
+
+
+
+
+
Custom Screen Type
Typ panelu
@@ -12421,21 +17770,49 @@ Too many errors, giving up.
+
+
+
+
+
+
+
Min
Min
+
+
+
+
+
+
+
Source
Źródło
+
+
+
+
+
+
+
Gauge
Pomiar
+
+
+
+
+
+
+
Max
Maks
@@ -12549,86 +17926,199 @@ Too many errors, giving up.
TelemetrySensor
+
+
+
+
+
+
+
Form
Formularz
+
+
+
+
+
+
+
Custom
Własne
+
+
+
+
+
+
+
Calculated
Obliczone
+
+
+
+
+
+
+
Id
Id
+
+
+
+
+
+
+
Instance
Wystąpienie
+
+
+
+
Rx
+
+
+
+
Mod.
+
+
+
+
+
+
+
Add
Dodaj
+
+
+
+
+
+
+
Average
Średnio
+
+
+
+
+
+
+
Min
Min
+
+
+
+
+
+
+
Max
Maks
+
+
+
+
+
+
+
Multiply
Mnożenie
+
+
+
+
+
+
+
Totalize
Całkowite
+
+
+
+
+
+
+
Cell
Cela
+
+
+
+
+
+
+
Consumption
Zużycie
+
+
+
+
+
+
+
Dist
Zasięg
+
+
+
+
+
+
+
Cells Sensor :
Czujniki Cel :
@@ -12641,191 +18131,506 @@ Too many errors, giving up.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
---
---
+
+
+
+
+
+
+
GPS Sensor :
Czujnik GPS :
+
+
+
+
+
+
+
Alt. Sensor :
Czujnik wys. :
+
+
+
+
+
+
+
Sensor :
+
+
+
+
+
+
+
V
V
+
+
+
+
+
+
+
A
A
+
+
+
+
+
+
+
mA
mA
+
+
+
+
+
+
+
kt
kt
+
+
+
+
+
+
+
m/s
m/s
+
+
+
+
+
+
+
ft/s
ft/s
+
+
+
+
+
+
+
km/h
km/h
+
+
+
+
+
+
+
mph
mph
+
+
+
+
+
+
+
m
m
+
+
+
+
+
+
+
ft
ft
+
+
+
+
+
+
+
°C
°C
+
+
+
+
+
+
+
°F
°F
+
+
+
+
+
+
+
%
%
+
+
+
+
+
+
+
mAh
mAh
+
+
+
+
+
+
+
W
W
+
+
+
+
+
+
+
mW
mW
+
+
+
+
+
+
+
dBm
dBm
+
+
+
+
+
+
+
g
g
+
+
+
+
+
+
+
°
°
+
+
+
+
+
+
+
Rad
Rad
+
+
+
+
+
+
+
mL
ml
+
+
+
+
+
+
+
US fl.Oz.
US fl.Oz.
+
+
+
+
+
+
+
Raw (-)
Bezwymiarowe (-)
+
+
+
+
+
+
+
Ratio
Współczynnik
+
+
+
+
+
+
+
Positive
Dodatni
+
+
+
+
+
+
+
RPM
RPM
+
+
+
+
+
+
+
Precision
Precyzja
+
+
+
+
+
+
+
Blades
Łopaty
+
+
+
+
+
+
+
Offset
Wyrównanie
+
+
+
+
+
+
+
Multiplier
Mnożnik
+
+
+
+
+
+
+
Auto Offset
Wyrównanie automatyczne
+
+
+
+
+
+
+
Filter
Filtr
+
+
+
+
+
+
+
Logs
Logi
+
+
+
+
+
+
+
Persistent
Stały
@@ -12857,91 +18662,211 @@ Too many errors, giving up.
TelemetrySimulator
-
+
+
+
+
+
+
+
+
+
Telemetry Simulator
Symulator telemetrii
-
+
+
+
+
+
+
+
+
+
VFAS
Napięcie
-
+
+
+
+
+
+
+
+
+
RSSI
RSSI
-
+
+
+
+
+
+
+
+
+
A1
A1
-
+
+
+
+
+
+
+
+
+
A2
A2
-
+
+
+
+
+
+
+
+
+
Simulate
Symulacja
-
+
+
+
+
+
+
+
+
+
Replay SD Log File
Odtwórz plig logów z SD
-
+
+
+
+
+
+
+
+
+
Replay rate
Współczynnik odtwarzania
-
+
+
+
+
+
+
+
+
+
Load
Załaduj
-
+
+
+
+
+
+
+
+
+
|>
|>
-
+
+
+
+
+
+
+
+
+
<|
<|
-
+
+
+
+
+
+
+
+
+
>
>
-
+
+
+
+
+
+
+
+
+
<-
<-
-
+
+
+
+
+
+
+
+
+
X
X
-
+
+
+
+
+
+
+
+
+
Row #
Timestamp
Czysty #
@@ -12949,25 +18874,57 @@ Timestamp
-
+
+
+
+
+
+
+
+
+
1/5x
1/5x
-
+
+
+
+
+
+
+
+
+
5x
5x
-
+
+
+
+
+
+
+
+
+
No Log File Currently Loaded
Nie jest załadowany żaden plik logu
-
+
+
+
+
+
+
+
+
+
RAS
@@ -12975,21 +18932,61 @@ Timestamp
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
V / ratio
V / współczynnik
-
+
+
+
+
+
+
+
+
+
Db
-
+
+
+
+
+
+
+
+
+
RxBt
RxBt
@@ -13007,121 +19004,377 @@ Timestamp
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<html><head/><body><p><br/></p></body></html>
<html><head/><body><p><br/></p></body></html>
-
+
+
+
+
+
+
+
+
+
Tmp1
Tmp1
-
+
+
+
+
+
+
+
+
+
A3
A3
-
+
+
+
+
+
+
+
+
+
A4
A4
-
+
+
+
+
+
+
+
+
+
Tmp2
Tmp2
-
+
+
+
+
+
+
+
+
+
Fuel
Paliwo
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
°C
°C
-
+
+
+
+
+
+
+
+
+
ml
ml
-
+
+
+
+
+
+
+
+
+
%
%
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Meters
Metry
-
+
+
+
+
+
+
+
+
+
Alt
Wysokość
-
+
+
+
+
+
+
+
+
+
VSpd
Pr.Wznoszenia
-
+
+
+
+
+
+
+
+
+
m/s
m/s
-
+
+
+
+
+
+
+
+
+
Fuel Qty
Ilość Paliwa
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
km/h
km/h
-
+
+
+
+
+
+
+
+
+
Hdg
Kurs
-
+
+
+
+
+
+
+
+
+
ASpd
Prędk. Pow
@@ -13129,21 +19382,61 @@ Timestamp
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
G
G
-
+
+
+
+
+
+
+
+
+
GPS
GPS
-
+
+
+
+
+
+
+
+
+
Lat,Lon
(dec.deg.)
Szer. Dł.
@@ -13151,13 +19444,29 @@ Timestamp
-
+
+
+
+
+
+
+
+
+
AccX
AccX
-
+
+
+
+
+
+
+
+
+
dd-MM-yyyy
hh:mm:ss
dd-MM-yyyy
@@ -13165,101 +19474,245 @@ hh:mm:ss
-
+
+
+
+
+
+
+
+
+
Date
Data
-
+
+
+
+
+
+
+
+
+
Amps
Ampery
-
+
+
+
+
+
+
+
+
+
AccZ
AccZ
-
+
+
+
+
+
+
+
+
+
GAlt
Wys
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Volts
Wolty
-
+
+
+
+
+
+
+
+
+
Cels
Cele
-
+
+
+
+
+
+
+
+
+
Curr
Natężenie
-
+
+
+
+
+
+
+
+
+
AccY
AccY
-
+
+
+
+
+
+
+
+
+
GSpd
Pr.w.Ziemi
-
+
+
+
+
+
+
+
+
+
Degrees
Stopnie
-
+
+
+
+
+
+
+
+
+
Setting RSSI to zero simulates telemetry and radio link loss.
-
+
+
+
+
+
+
+
+
+
Set RSSI to zero when paused.
-
+
+
+
+
+
+
+
+
+
Stop sending telemetry data when the Telemetry Simulator window is hidden.
-
+
+
+
+
+
+
+
+
+
Pause simulation when hidden.
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
RPM
RPM
-
+
+
+
+
+
+
+
+
+
When enabled, sends any non-blank values as simulated telemetry data.
Kiedy aktywne, wysyła jakiekolwiek dane jako symulację danych telemetrii.
@@ -13301,11 +19754,25 @@ hh:mm:ss
Timer
+
+
+
+
+
+
+
Countdown
Odliczanie
+
+
+
+
+
+
+
Minute Call
Pikanie minutowe
@@ -13389,26 +19856,61 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
Trainer
+
+
+
+
+
+
+
Form
Formularz
+
+
+
+
+
+
+
Mode
Tryb
+
+
+
+
+
+
+
Input
Wejście
+
+
+
+
+
+
+
Weight
Waga
+
+
+
+
+
+
+
Rud
SK
@@ -13421,6 +19923,62 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Beeper volume
0 - Quiet. No beeps at all.
@@ -13441,6 +19999,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Off
Wyłącz
@@ -13449,6 +20035,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+= (Sum)
+= (Suma)
@@ -13457,6 +20071,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
:= (Replace)
:= (Zastąpienie)
@@ -13465,6 +20107,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn1
Kanał 01
@@ -13473,6 +20143,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn2
Kanał 02
@@ -13481,6 +20179,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn3
Kanał 03
@@ -13489,21 +20215,70 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn4
Kanał 04
+
+
+
+
+
+
+
Ele
SW
+
+
+
+
+
+
+
Thr
Gaz
+
+
+
+
+
+
+
Ail
Lotki
@@ -13512,7 +20287,15 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
TrainerSimulator
-
+
+
+
+
+
+
+
+
+
Trainer simulator
Symulator trenera
@@ -13937,12 +20720,26 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
burnConfigDialog
+
+
+
+
+
+
+
Programmer Configuration
Configuration AVRDUDE / SAM-BA
Konfiguracja programatora
+
+
+
+
+
+
+
Location of AVRDUDE executable
Położenie wykonywalnego AVRDUDE
@@ -13951,11 +20748,46 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The location of the AVRDUDE executable.
Położenie wykonywalnego AVRDUDE.
+
+
+
+
+
+
+
DFU-Util Location
Położenie narzędzia DFU
@@ -13963,6 +20795,27 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Use this button to browse and look for the AVRDUDE executable file.
Użyj tego przycisku w celu znalezienia pliku wykonywalnego AVRDUDE.
@@ -13970,39 +20823,116 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Browse...
Przeglądaj ...
+
+
+
+
+
+
+
Programmer
Typ programatora
+
+
+
+
+
+
+
Programmer used for communicating with the controller.
Please consult the programmer's documentation and the AVRDUDE documentation to select the appropriate programmer.
Programator użyty do komunikacji z mikrokontrolerem.
+
+
+
+
+
+
+
List all available programmers.
Lista wszystkich dostępnych programów.
+
+
+
+
+
+
+
List Available
Lista dostępnych
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Extra arguments that will be passed to AVRDUDE on every call
Dodatkowe argumenty przekazywane do AVRDUDE przy każdorazowym wywołaniu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Extra arguments used in AVRDUDE.
This can be used for providing extra information to AVRDUDE.
@@ -14016,48 +20946,125 @@ Nie ma to spradzania błędów i możesz uszkodzić mikrokontroler.
+
+
+
+
+
+
+
Extra Arguments
Dodatkowe argumenty
+
+
+
+
+
+
+
Show AVRDUDE help
Pokaż pomoc AVRDUDE
+
+
+
+
+
+
+
Show Help
Pokaż pomoc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Port
Port
+
+
+
+
+
+
+
AVRDUDE Location
Położenie AVRDUDE
+
+
+
+
+
+
+
at91sam3s8-9xr
at91sam3s8-9xr
+
+
+
+
+
+
+
Use advanced controls
Użyj zaawansowanych ustawień
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CPU of your TX
Procesor/mikrokontroler twojego radia
+
+
+
+
+
+
+
Communication port to the programmer.
Port komunikacyjny do programatora.
@@ -14065,6 +21072,20 @@ Nie ma to spradzania błędów i możesz uszkodzić mikrokontroler.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CPU present on your 9x radio
Should be m64 for stock radios
m2560 for v4.1 boards
@@ -14074,32 +21095,81 @@ m2560 dla platformy V4
+
+
+
+
+
+
+
SAM-BA Location
Położenie SAM-BA
+
+
+
+
+
+
+
Alternate device
Alternatywne urządzenie
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Location of sam-ba executable
Położenie plików wykonywalnych sam-ba
+
+
+
+
+
+
+
MCU
Typ procesora CPU/MCU
+
+
+
+
+
+
+
ARM MCU
Procesor ARM
+
+
+
+
+
+
+
sam-ba serial port
Port szeregowy sam-ba
@@ -14145,85 +21215,197 @@ m2560 dla platformy V4
joystickDialog
-
+
+
+
+
+
+
+
+
+
Configure Joystick
Ustaw joystick
-
+
+
+
+
+
+
+
+
+
Ch2
Kanał 02
-
+
+
+
+
+
+
+
+
+
Ch1
Kanał 01
-
+
+
+
+
+
+
+
+
+
Ch4
Kanał 04
-
+
+
+
+
+
+
+
+
+
Ch6
Kanał 06
-
+
+
+
+
+
+
+
+
+
Ch3
Kanał 03
-
+
+
+
+
+
+
+
+
+
Ch5
Kanał 05
-
+
+
+
+
+
+
+
+
+
Ch7
Kanał 07
-
+
+
+
+
+
+
+
+
+
Ch8
Kanał 08
-
+
+
+
+
+
+
+
+
+
Instructions
Instrukcje
-
+
+
+
+
+
+
+
+
+
Enable
Aktywuj
-
+
+
+
+
+
+
+
+
+
Cancel
Przerwij
-
+
+
+
+
+
+
+
+
+
Back
Cofnij
-
+
+
+
+
+
+
+
+
+
Start
Start
@@ -14234,7 +21416,15 @@ m2560 dla platformy V4
-
+
+
+
+
+
+
+
+
+
Ok
OK
diff --git a/companion/src/translations/companion_sv.ts b/companion/src/translations/companion_sv.ts
index 8985ae180..73b0f57fd 100644
--- a/companion/src/translations/companion_sv.ts
+++ b/companion/src/translations/companion_sv.ts
@@ -556,6 +556,22 @@ Mode 4:
Note: Nightly builds are not available in this version, Release/RC update channel will be used.
+
+ Use releases (stable)
+
+
+
+ Use release candidates (testing)
+
+
+
+ Use nightly builds (unstable)
+
+
+
+ Use releases and release candidates (testing)
+
+
BinEepromFormat
@@ -3909,6 +3925,14 @@ brytare
Power Off Delay
+
+ Power On Speed
+
+
+
+ Power Off Speed
+
+
GeneralSetupPanel
@@ -6085,6 +6109,10 @@ p, li { white-space: pre-wrap; }
DEST -> %1
+
+ FullScreenDialog
+
+
MixersListWidget
@@ -6269,6 +6297,10 @@ p, li { white-space: pre-wrap; }
Outputs
Utgångar
+
+ FullScreenDialog
+
+
ModelPrinter
@@ -7072,6 +7104,14 @@ p, li { white-space: pre-wrap; }
WARNING: Requires non-certified firmware!
+
+ Internal
+
+
+
+ Ext. + Int.
+
+
ModuleData
diff --git a/companion/src/translations/companion_zh_CN.ts b/companion/src/translations/companion_zh_CN.ts
index 9e5838f9d..013b5fabe 100644
--- a/companion/src/translations/companion_zh_CN.ts
+++ b/companion/src/translations/companion_zh_CN.ts
@@ -96,92 +96,225 @@
AppPreferencesDialog
+
+
+
+
+
+
+
Edit Settings
此对话框位置在主菜单中的settings-->settings
首选项
+
+
+
+
+
+
+
Radio Profile
遥控器档案可以有多个,对应不同的遥控器
遥控器档案
+
+
+
+
+
+
+
Profile Name
档案名称
+
+
+
+
+
+
+
Radio Type
遥控器型号
+
+
+
+
+
+
+
Menu Language
遥控器档案中
菜单语言
+
+
+
+
+
+
+
Build Options
编译选项
+
+
+
+
+
+
+
Splash Screen
遥控器档案中
开机画面
+
+
+
+
+
+
+
Other Settings
其他设置
+
+
+
+
+
+
+
SD Structure path
SD卡目录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The profile specific folder, if set, will override general Backup folder
制定档案目录,如果设定此目录,将代替默认备份目录
+
+
+
+
+
+
+
Backup folder
备份目录
+
+
+
+
+
+
+
If set it will override the application general setting
如果设置将会代替程序一般设定
+
+
+
+
+
+
+
if set, will override general backup enable
如果设定将会覆盖一般备份允许选项
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Enable automatic backup before writing firmware
写入固件前允许自动备份
+
+
+
+
+
+
+
General Settings
一般设定
+
+
+
+
+
+
+
Default Stick Mode
默认摇杆模式
+
+
+
+
+
+
+
Mode selection:
Mode 1:
@@ -213,183 +346,435 @@ Mode 4:
+
+
+
+
+
+
+
Mode 1 (RUD ELE THR AIL)
遥控器档案中
MODE1 日本手 ↕升降↔方向 ↕油门↔副翼
+
+
+
+
+
+
+
Mode 2 (RUD THR ELE AIL)
MODE2 美国手 ↕油门↔方向 ↕升降↔副翼
+
+
+
+
+
+
+
Mode 3 (AIL ELE THR RUD)
MODE3 中国手 ↕升降↔副翼 ↕油门↔方向
+
+
+
+
+
+
+
Mode 4 (AIL THR ELE RUD)
MODE4 模式4 ↕油门↔副翼 ↕升降↔方向
+
+
+
+
+
+
+
Default Channel Order
遥控器档案中
默认通道顺序
+
+
+
+
+
+
+
<html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html>
<html><head/><body><p>通道顺序</p><p><br/></p><p>定义了新建模型时默认设置的通道顺序</p></body></html>
+
+
+
+
+
+
+
R E T A
方向 升降 油门 副翼 [R E T A]
+
+
+
+
+
+
+
R E A T
方向 升降 副翼 油门 [R E A T]
+
+
+
+
+
+
+
R T E A
方向 油门 升降 副翼 [R T E A]
+
+
+
+
+
+
+
R T A E
方向 油门 副翼 升降 [R T A E]
+
+
+
+
+
+
+
R A E T
方向 副翼 升降 油门 [R A E T]
+
+
+
+
+
+
+
R A T E
方向 副翼 油门 升降 [R A T E]
+
+
+
+
+
+
+
E R T A
升降 方向 油门 副翼 [E R T A]
+
+
+
+
+
+
+
E R A T
升降 方向 副翼 油门 [E R A T]
+
+
+
+
+
+
+
E T R A
升降 油门 方向 副翼 [E T R A]
+
+
+
+
+
+
+
E T A R
升降 油门 副翼 方向 [E T A R]
+
+
+
+
+
+
+
E A R T
升降 副翼 方向 油门 [E A R T]
+
+
+
+
+
+
+
E A T R
升降 副翼 油门 方向 [E A T R]
+
+
+
+
+
+
+
T R E A
油门 方向 升降 副翼 [T R E A]
+
+
+
+
+
+
+
T R A E
油门 方向 副翼 升降 [T R A E]
+
+
+
+
+
+
+
T E R A
油门 升降 方向 副翼 [T E R A]
+
+
+
+
+
+
+
T E A R
油门 升降 副翼 方向 [T E A R]
+
+
+
+
+
+
+
T A R E
油门 副翼 方向 升降 [T A R E]
+
+
+
+
+
+
+
T A E R
油门 副翼 升降 方向 [T A E R]
+
+
+
+
+
+
+
A R E T
副翼 方向 升降 油门 [A R E T]
+
+
+
+
+
+
+
A R T E
副翼 方向 油门 升降 [A R T E]
+
+
+
+
+
+
+
A E R T
副翼 升降 方向 油门 [A E R T]
+
+
+
+
+
+
+
A E T R
副翼 升降 油门 方向 [A E T R]
+
+
+
+
+
+
+
A T R E
副翼 油门 方向 升降 [A T R E]
+
+
+
+
+
+
+
A T E R
副翼 油门 升降 方向 [A T E R]
+
+
+
+
+
+
+
Append version number to FW file name
将版本号添加到固件文件的文件名中
+
+
+
+
+
+
+
Offer to write FW to Tx after download
下载完成后提示将固件写入到遥控器
+
+
+
+
+
+
+
Action on New Model
+
+
+
+
+
+
+
Screenshot capture folder
+
+
+
+
+
+
+
Clear Image
清除图片
+
+
+
+
+
+
+
Select Image
遥控器档案中
选择图片
@@ -401,216 +786,540 @@ Mode 4:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Select Folder
选择目录
+
+
+
+
+
+
+
Application Settings
程序首选项
+
+
+
+
+
+
+
Automatic check for Companion updates
自动检查 Companion 版本更新
+
+
+
+
+
+
+
most recently used files
+
+
+
+
+
+
+
Startup Settings
+
+
+
+
+
+
+
Remember
+
+
+
+
+
+
+
Show splash screen when Companion starts
Companion 启动时显示启动画面
+
+
+
+
+
+
+
Automatic check for OpenTX firmware updates
自动检查 OpenTX 固件版本更新
+
+
+
+
+
+
+
Output Logs Folder
+
+
+
+
+
+
+
<html><head/><body><p>This option maintains the behaviour from older OpenTx versions where empty model slots are preserved when a model is deleted or moved. </p><p>When this option is de-selected, the other models may be re-arranged to fill the gap left by the removed model.</p></body></html>
+
+
+
+
+
+
+
Remove empty model slots when deleting models (only applies for radios w/out categories)
+
+
+
+
+
+
+
Use model wizard
+
+
+
+
+
+
+
Open model editor
+
+
+
+
+
+
+
Just create the model
+
+
+
+
+
+
+
Debug Output Logging
+
+
+
+
+
+
+
<html><head/><body><p>Keep a log of all debugging messages generated by the desktop Companion/Simulator applications. An OpenTX developer may request this to help diagnose an issue.</p></body></html>
+
+
+
+
+
+
+
Application (Companion/Simulator)
+
+
+
+
+
+
+
<html><head/><body><p>Keep a log of all messages generated by the radio firmware when running in Simulator. This is the same information one would also see in the Simulator <span style=" font-style:italic;">Debug Output</span> window.</p></body></html>
+
+
+
+
+
+
+
Radio Firmware (in Simulator)
+
+
+
+
+
+
+
Splash Screen Library
开机画面图片库
+
+
+
+
+
+
+
Google Earth Executable
Google Earch 可执行文件
+
+
+
+
+
+
+
User Splash Screens
自定义开机画面
+
+
+
+
+
+
+
Automatic Backup Folder
自动备份目录
+
+
+
+
+
+
+
Only show user splash images
只显示自定义开机画面
+
+
+
+
+
+
+
Show user and companion splash images
显示自定义和系统开机画面
+
+
+
+
+
+
+
Select Executable
选择可执行文件
+
+
+
+
Release channel
+
+
+
+
Releases (stable)
+
+
+
+
Release candidates (testing)
+
+
+
+
Nightly builds (unstable)
+
+
+
+
+
+
+
Simulator Settings
模拟器设置
+
+
+
+
+
+
+
Calibrate
校准
+
+
+
+
+
+
+
Blue
蓝色
+
+
+
+
+
+
+
Green
绿色
+
+
+
+
+
+
+
Red
红色
+
+
+
+
+
+
+
Orange
橙色
+
+
+
+
+
+
+
Yellow
黄色
+
+
+
+
+
+
+
Only capture to clipboard
只截图到剪贴板中
+
+
+
+
+
+
+
Enable
使用游戏杆
+
+
+
+
+
+
+
Joystick
游戏杆
+
+
+
+
+
+
+
Simulator BackLight
模拟器背光颜色
+
+
+
+
+
+
+
Remember simulator switch values
关闭模拟器后记忆开关位置
+
+
+
+
+
+
+
Simulator Volume Gain
模拟器音量调节
@@ -695,6 +1404,31 @@ Mode 4:
Images (%1)
图片 (%1)
+
+
+
+
+ Use releases (stable)
+
+
+
+
+ Use release candidates (testing)
+
+
+
+
+
+
+ Use nightly builds (unstable)
+
+
+
+
+
+ Use releases and release candidates (testing)
+
+
BinEepromFormat
@@ -925,36 +1659,85 @@ Mode 4:
ChecklistDialog
+
+
+
+
+
+
+
Edit Checklist
+
+
+
+
+
+
+
Line nn, Col nn
+
+
+
+
+
+
+
&Import...
+
+
+
+
+
+
+
&Cancel
+
+
+
+
+
+
+
&OK
+
+
+
+
+
+
+
Please note, the maximum width displayable is radio model limited. Also, renaming the model will break the link to this checklist file.
+
+
+
+
+
+
+
File: unknown
@@ -1200,34 +1983,76 @@ If you have a settings backup file, you may import that instead.
CompareDialog
+
+
+
+
+
+
+
Compare Models
Compare 模型对比对话框
比较模型参数
+
+
+
+
+
+
+
To compare models, drag and drop them anywhere in this window.
+
+
+
+
+
+
+
Close
Compare 模型对比对话框
关闭
+
+
+
+
+
+
+
Style
+
+
+
+
+
+
+
Print
Compare 模型对比对话框
打印
+
+
+
+
+
+
+
Print to file
Compare 模型对比对话框
打印到文件
@@ -1395,87 +2220,213 @@ If you have a settings backup file, you may import that instead.
Curves
+
+
+
+
+
+
+
Curve name
曲线名称 [Name]
+
+
+
+
+
+
+
Fixed X
均匀间距 [Standard]
+
+
+
+
+
+
+
Custom X
自定间距 [Custom]
+
+
+
+
+
+
+
Lines
折线
+
+
+
+
+
+
+
Smooth
平滑 [Smooth]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Curve type
曲线类型
+
+
+
+
+
+
+
Curve Creator
曲线生成器
+
+
+
+
+
+
+
Y at X=0
曲线中央的高度
+
+
+
+
+
+
+
Point size
+
+
+
+
+
+
+
Y at X=100
曲线最右侧高度
+
+
+
+
+
+
+
Both
两侧
+
+
+
+
+
+
+
x>0
仅创建右侧曲线
+
+
+
+
+
+
+
x<0
仅创建左侧曲线
+
+
+
+
+
+
+
Apply
应用
+
+
+
+
+
+
+
Side
仅创建单侧曲线
+
+
+
+
+
+
+
Y at X=-100
曲线最左侧高度
+
+
+
+
+
+
+
Coefficient
弯曲系数
@@ -1900,18 +2851,53 @@ If you have a settings backup file, you may import that instead.
CustomizeSplashDialog
+
+
+
+
+
+
+
Transmitter Splash Screen Editor
遥控器开机画面编辑器
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Invert
负片效果
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Open Splash Library
打开开机图片库
@@ -1920,30 +2906,114 @@ If you have a settings backup file, you may import that instead.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load Profile
载入遥控文档
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load FW
载入固件
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Load Pict
载入图片文件
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Save
保存
@@ -2059,48 +3129,48 @@ If you have a settings backup file, you may import that instead.
-
+
Switch
-
+
Switch
启动开关
-
+
cannot be exported on this board!
无法输出到这个主板!
-
+
Source
-
+
Source %1 cannot be exported on this board!
源 %1 无法输出到这个主板!
-
+
OpenTX only accepts %1 points in all curves
OpenTX只允许最大%1点曲线
-
+
OpenTx only accepts %1 points in all curves
OpenTX只允许最大%1点曲线
-
-
+
+
OpenTX on this board doesn't accept this function
OpenTX在这个主板上不支持此项功能
-
+
OpenTX doesn't accept this radio protocol
OpenTX 不接受此遥控器协议
@@ -2109,86 +3179,198 @@ If you have a settings backup file, you may import that instead.
DebugOutput
-
+
+
+
+
+
+
+
+
+
Debug Output
Debug 输出
-
+
+
+
+
+
+
+
+
+
<html><head/><body><p>Enable or disable the filter. If the button won't stay enabled, it is likely there is a syntax error in the Regular Expression entered.</p></body></html>
-
+
+
+
+
+
+
+
+
+
Filter:
-
+
+
+
+
+
+
+
+
+
<html><head/><body><p>Enter filter text here. Click the help/info button for details about using the filter. </p><p>
To <b>remove a remembered entry</b> from the filter list, first choose it, and then press <code>Shift-Delete</code> (or <code>Shift-Backspace</code>) key combination.</p></body></html>
-
+
+
+
+
+
+
+
+
+
Buffer:
-
+
+
+
+
+
+
+
+
+
Number of lines to keep in display.
-
+
+
+
+
+
+
+
+
+
Filter &Help
-
+
+
+
+
+
+
+
+
+
Show information about using the filter.
-
+
+
+
+
+
+
+
+
+
Word &Wrap
-
+
+
+
+
+
+
+
+
+
Toggle word wrapping on/off.
-
+
+
+
+
+
+
+
+
+
&Clear
(&C)清除
-
+
+
+
+
+
+
+
+
+
Clear the output window of all text.
-
+
+
+
+
+
+
+
+
+
Enable &Filter
-
+
+
+
+
+
+
+
+
+
Turn the filter on/off.
@@ -2207,6 +3389,13 @@ To <b>remove a remembered entry</b> from the filter list, first cho
DownloadDialog
+
+
+
+
+
+
+
Downloading:
下载中:
@@ -2352,12 +3541,26 @@ To <b>remove a remembered entry</b> from the filter list, first cho
ExpoDialog
+
+
+
+
+
+
+
Flight modes
Inputs对话框
飞行模式 [Modes]
+
+
+
+
+
+
+
Input name
Inputs对话框
输入名称 [Input]
@@ -2366,30 +3569,79 @@ To <b>remove a remembered entry</b> from the filter list, first cho
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
GV
Inputs对话框
GV
+
+
+
+
+
+
+
Source for the mixer.
Inputs对话框
混控的输入源.
+
+
+
+
+
+
+
Weight
Inputs对话框
比例 [Weight]
+
+
+
+
+
+
+
Switch
Inputs对话框
启用开关 [Switch]
+
+
+
+
+
+
+
Switch used to enable the line.
If blank then the input is considered to be "ON" all the time.
Inputs对话框
@@ -2398,84 +3650,182 @@ If blank then the input is considered to be "ON" all the time.
+
+
+
+
+
+
+
Stick Side
Inputs对话框
摇杆作用于 [Side]
+
+
+
+
+
+
+
NEG
Inputs对话框
负侧 [NEG]
+
+
+
+
+
+
+
POS
Inputs对话框
正侧 [POS]
+
+
+
+
+
+
+
ALL
Inputs对话框
两侧 [ALL]
+
+
+
+
+
+
+
Scale
Inputs对话框
缩放 [Scale]
+
+
+
+
+
+
+
Include Trim
Inputs对话框
微调 [Trim]
+
+
+
+
+
+
+
No
Inputs对话框
不使用 [OFF]
+
+
+
+
+
+
+
Yes
Inputs对话框
使用 [On]
+
+
+
+
+
+
+
Curve
Inputs对话框
曲线 [Curve]
+
+
+
+
+
+
+
Curve applied to the source.
Inputs对话框
作用于输入源的曲线.
+
+
+
+
+
+
+
Source
Inputs对话框
输入来源 [Source]
+
+
+
+
+
+
+
Line name
Inputs对话框
此条名称 [Line]
+
+
+
+
+
+
+
Offset
Inputs对话框
偏移 [Offset]
+
+
+
+
+
+
+
The source for the mixer
Inputs对话框
混控的输入源
@@ -3120,34 +4470,76 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FirmwarePreferencesDialog
+
+
+
+
+
+
+
Downloads
FirmwarePref
下载
+
+
+
+
+
+
+
Check for updates
FirmwarePref
检查更新
+
+
+
+
+
+
+
Firmware
FirmwarePref
固件类型
+
+
+
+
+
+
+
Download firmware
+
+
+
+
+
+
+
Download SD contents
+
+
+
+
+
+
+
Latest Download
FirmwarePref
最后下载的固件版本
@@ -3191,67 +4583,158 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FlashEEpromDialog
+
+
+
+
+
+
+
Write Models and Settings to Radio
将模型和设置写入到遥控器
+
+
+
+
+
+
+
Load...
加载...
+
+
+
+
+
+
+
Current Profile
当前文档
+
+
+
+
+
+
+
Allows Companion to write to older version of the firmware
允许 Companion 写入旧版本的固件
+
+
+
+
+
+
+
Check Firmware compatibility
检查固件兼容性
+
+
+
+
+
+
+
<html><head/><body><p>Saves a dated copy of your eeprom to the backup folder you specified in the Companion settings before writing the current model to the radio.</p></body></html>
写入前备份
+
+
+
+
+
+
+
Backup before Write
写入前备份
+
+
+
+
+
+
+
<html><head/><body><p>Modify calibration parameters using settings from current profile</p></body></html>
<html><head/><body><p>用当前档案的设置修改校准参数</p></body></html>
+
+
+
+
+
+
+
Patch calibration setting from profile
依照当前档案修改校准参数
+
+
+
+
+
+
+
<html><head/><body><p>Modify HW parameters using settings from current profile</p></body></html>
<html><head/><body><p>用当前档案的设置修改硬件参数</p></body></html>
+
+
+
+
+
+
+
Patch HW settings from profile
依照当前档案修改硬件参数
+
+
+
+
+
+
+
Cancel
取消
+
+
+
+
+
+
+
Write to TX
写入到遥控器
@@ -3309,71 +4792,169 @@ Blank means include all. ?, *, and [...] wildcards accepted.
FlashFirmwareDialog
+
+
+
+
+
+
+
Flash Firmware
烧录固件
+
+
+
+
+
+
+
Load...
加载...
+
+
+
+
+
+
+
Date & Time
日期 & 时间
+
+
+
+
+
+
+
Variant
变体
+
+
+
+
+
+
+
Version
版本
+
+
+
+
+
+
+
Use profile start screen
使用文档中的开始画面
+
+
+
+
+
+
+
Use firmware start screen
使用固件中的开始画面
+
+
+
+
+
+
+
Use library start screen
使用图片库中的开始画面
+
+
+
+
+
+
+
Use another start screen
使用其他开始画面
+
+
+
+
+
+
+
Allows Companion to write to older version of the firmware
允许 Companion 写入旧版本的固件
+
+
+
+
+
+
+
Check Hardware compatibility
检查硬件兼容性
+
+
+
+
+
+
+
Backup and restore Models and Settings
备份和恢复模型和设置
+
+
+
+
+
+
+
Cancel
取消
+
+
+
+
+
+
+
Write to TX
写入到遥控器
@@ -3578,24 +5159,52 @@ You are currently using:
FlightMode
+
+
+
+
+
+
+
Fade In
FlightMode
切入秒数 [Fade In]
+
+
+
+
+
+
+
Fade Out
FlightMode
切出秒数 [Fade In]
+
+
+
+
+
+
+
Name
FlightMode
名称 [Name]
+
+
+
+
+
+
+
Switch
FlightMode
启用开关 [Switch]
@@ -3789,11 +5398,25 @@ You are currently using:
FusesDialog
+
+
+
+
+
+
+
Fuses
熔丝位
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3823,11 +5446,25 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Read Fuses
读取熔丝位
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3861,6 +5498,13 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Reset Fuses
EEPROM - PROTECT
重设熔丝位
@@ -3868,6 +5512,13 @@ EEPROM - PROTECT
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3901,6 +5552,13 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Reset Fuses
EEPROM - DELETE
重设熔丝位
@@ -3908,6 +5566,13 @@ EEPROM - DELETE
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -3984,21 +5649,49 @@ p, li { white-space: pre-wrap; }
GeneralEdit
+
+
+
+
+
+
+
Radio settings
+
+
+
+
+
+
+
Retrieve calib. and hw settings from profile
从遥控器档案中读取校准和硬件设定
+
+
+
+
+
+
+
Store calib. and hw settings in selected profile
存储校准和硬件设定到选择的遥控器档案
+
+
+
+
+
+
+
General settings used throught the transmitter.
These will be relevant for all models in the same EEPROM.
遥控器一般设定, 用在整个遥控器上
@@ -4072,133 +5765,322 @@ These will be relevant for all models in the same EEPROM.
GeneralSetup
+
+
+
+
+
+
+
Form
GeneralSetup????
表单
+
+
+
+
+
+
+
Readonly Unlock
只读解锁 [Readonly Unlock]
+
+
+
+
+
+
+
SC
+
+
+
+
+
+
+
SE
+
+
+
+
+
+
+
SA
+
+
+
+
+
+
+
SF
+
+
+
+
+
+
+
SH
+
+
+
+
+
+
+
SD
+
+
+
+
+
+
+
SB
+
+
+
+
+
+
+
SG
+
+
+
+
+
+
+
Timeshift from UTC
依照UTC调整时间 [From UTC]
+
+
+
+
+
+
+
Voice Language
语音语言 [Voice Language]
+
+
+
+
+
+
+
Country Code
国家代码 [Country Code]
+
+
+
+
+
+
+
Stick reverse
反向摇杆 [Stick Reverse]
+
+
+
+
+
+
+
FAI Mode
FAI 模式 [FAI Mode]
+
+
+
+
+
+
+
Automatically adjust the radio's clock if a GPS is connected to telemetry.
如果安装有GPS回传则自动调整遥控器时钟.
+
+
+
+
+
+
+
Adjust RTC
自动调整时钟
+
+
+
+
+
+
+
Vario pitch at max
最大上升率时Vario音调 [Max]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Hz
+
+
+
+
+
+
+
Speaker Volume
喇叭音量 [Volume]
+
+
+
+
+
+
+
Backlight Switch
背光开关 [Switch]
+
+
+
+
+
+
+
Sound Mode
声音模式 [Sound Mode]
+
+
+
+
+
+
+
Color 1
颜色 1
+
+
+
+
+
+
+
Color 2
颜色 2
+
+
+
+
+
+
+
Speaker Pitch (spkr only)
喇叭音调 (仅喇叭) [Pitch]
+
+
+
+
+
+
+
If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds.
如果值非0, 任何按键将会开启背光, 并在所设定秒数后关闭.
@@ -4206,82 +6088,209 @@ These will be relevant for all models in the same EEPROM.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
sec
秒
+
+
+
+
+
+
+
Backlight color
背光颜色 [Color]
+
+
+
+
+
+
+
Beeper
蜂鸣器
+
+
+
+
+
+
+
Speaker
喇叭
+
+
+
+
+
+
+
BeeperVoice
蜂鸣器和语音
+
+
+
+
+
+
+
SpeakerVoice
喇叭和语音
+
+
+
+
+
+
+
Beep volume
蜂鸣器音量
+
+
+
+
+
+
+
Wav volume
WAV播放音量
+
+
+
+
+
+
+
Vario volume
Vario音量
+
+
+
+
+
+
+
Background volume
背景音乐音量
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ms
毫秒
+
+
+
+
+
+
+
Backlight Auto OFF after
背光自动关闭时间 [Duration]
+
+
+
+
+
+
+
Backlight flash on alarm
告警时背光闪烁 [Alarm]
+
+
+
+
+
+
+
Vario pitch at zero
升降率为0时Vario音调 [Zero]
+
+
+
+
+
+
+
Vario repeat at zero
升降率0时Vario重复率 [Repeat]
+
+
+
+
+
+
+
This is the switch selectrion for turning on the backlight (if installed).
@@ -4293,6 +6302,20 @@ These will be relevant for all models in the same EEPROM.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -4308,36 +6331,85 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Backlight Brightness
背光亮度 [Brightness]
+
+
+
+
+
+
+
RotEnc Navigation
旋转编码器导航 [RotEnc]
+
+
+
+
+
+
+
America
美国
+
+
+
+
+
+
+
Japan
日本
+
+
+
+
+
+
+
Europe
欧洲
+
+
+
+
+
+
+
Backlight OFF Brightness
+
+
+
+
+
+
+
Mode selection:
Mode 1:
@@ -4379,257 +6451,609 @@ MODE4 模式4:
+
+
+
+
+
+
+
Mode 1 (RUD ELE THR AIL)
MODE1 日本手↕升降↔方向 ↕油门↔副翼
+
+
+
+
+
+
+
Mode 2 (RUD THR ELE AIL)
MODE2 美国手↕油门↔方向 ↕升降↔副翼
+
+
+
+
+
+
+
Mode 3 (AIL ELE THR RUD)
MODE3 中国手↕升降↔副翼 ↕油门↔方向
+
+
+
+
+
+
+
Mode 4 (AIL THR ELE RUD)
MODE4 模式4 ↕油门↔副翼 ↕升降↔方向
+
+
+
+
+
+
+
<html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html>
<html><head/><body><p>通道顺序</p><p><br/></p><p>定义了当新的混控创建时默认的通道顺序.</p></body></html>
+
+
+
+
+
+
+
If you enable FAI, only RSSI and RxBt sensors will keep working. This function cannot be disabled by the radio.
+
+
+
+
+
+
+
RSSI Poweroff Warning
+
+
+
+
+
+
+
Low EEPROM Warning
+
+
+
+
Owner Registration ID
+
+
+
+
aaaaaaAA
+
+
+
+
+
+
+
R E T A
方向 升降 油门 副翼 [R E T A]
+
+
+
+
+
+
+
R E A T
方向 升降 副翼 油门 [R E A T]
+
+
+
+
+
+
+
R T E A
方向 油门 升降 副翼 [R T E A]
+
+
+
+
+
+
+
R T A E
方向 油门 副翼 升降 [R T A E]
+
+
+
+
+
+
+
R A E T
方向 副翼 升降 油门 [R A E T]
+
+
+
+
+
+
+
R A T E
方向 副翼 油门 升降 [R A T E]
+
+
+
+
+
+
+
E R T A
升降 方向 油门 副翼 [E R T A]
+
+
+
+
+
+
+
E R A T
升降 方向 副翼 油门 [E R A T]
+
+
+
+
+
+
+
E T R A
升降 油门 方向 副翼 [E T R A]
+
+
+
+
+
+
+
E T A R
升降 油门 副翼 方向 [E T A R]
+
+
+
+
+
+
+
E A R T
升降 副翼 方向 油门 [E A R T]
+
+
+
+
+
+
+
E A T R
升降 副翼 油门 方向 [E A T R]
+
+
+
+
+
+
+
T R E A
油门 方向 升降 副翼 [T R E A]
+
+
+
+
+
+
+
T R A E
油门 方向 副翼 升降 [T R A E]
+
+
+
+
+
+
+
T E R A
油门 升降 方向 副翼 [T E R A]
+
+
+
+
+
+
+
T E A R
油门 升降 副翼 方向 [T E A R]
+
+
+
+
+
+
+
T A R E
油门 副翼 方向 升降 [T A R E]
+
+
+
+
+
+
+
T A E R
油门 副翼 升降 方向 [T A E R]
+
+
+
+
+
+
+
A R E T
副翼 方向 升降 油门 [A R E T]
+
+
+
+
+
+
+
A R T E
副翼 方向 油门 升降 [A R T E]
+
+
+
+
+
+
+
A E R T
副翼 升降 方向 油门 [A E R T]
+
+
+
+
+
+
+
A E T R
副翼 升降 油门 方向 [A E T R]
+
+
+
+
+
+
+
A T R E
副翼 油门 方向 升降 [A T R E]
+
+
+
+
+
+
+
A T E R
副翼 油门 升降 方向 [A T E R]
+
+
+
+
Power On Delay
+
+
+
+
+
+
+
Jack Mode
+
+
+
+
+
+
+
Audio
+
+
+
+
+
+
+
Trainer
教练功能
+
+
+
+
+
+
+
DMS
+
+
+
+
+
+
+
USB Mode
+
+
+
+
Power Off Delay
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Ask on Connect
+
+
+
+
+
+
+
Joystick (HID)
+
+
+
+
+
+
+
USB Mass Storage
+
+
+
+
+
+
+
USB Serial (CDC)
+
+
+
+
+
+
+
Stick Mode
摇杆模式 [MODE]
+
+
+
+
+
+
+
Metric
公制 [Metric]
+
+
+
+
+
+
+
Imperial
英制 [Imperial]
+
+
+
+
+
+
+
Default Channel Order
默认通道顺序[Default Ch Order]
+
+
+
+
+
+
+
GPS Coordinates
GPS坐标格式 [GPS Coordinates]
+
+
+
+
+
+
+
Min
GeneralEdit
最小
@@ -4637,75 +7061,187 @@ MODE4 模式4:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
v
GeneralEdit
v
+
+
+
+
+
+
+
Max
GeneralEdit
最大
+
+
+
+
+
+
+
Inactivity Timer
忘记关机定时器 [Inactivity]
+
+
+
+
+
+
+
Show Splash Screen on Startup
显示开机画面 [Splash Screen]
+
+
+
+
+
+
+
Contrast
显示屏对比度 [Contrast]
+
+
+
+
+
+
+
Battery Meter Range
遥控器电池图标范围 [Range]
+
+
+
+
+
+
+
Haptic Strength
振动强度 [Haptic Strength]
+
+
+
+
+
+
+
LCD Display Type
LCD显示屏类型 [LCD Disp Type]
+
+
+
+
+
+
+
"No Sound" Warning
当静音时 开机告警 [Sound Off]
+
+
+
+
+
+
+
Battery Warning
遥控器电量警告 [Battery Low]
+
+
+
+
+
+
+
Haptic Length
振动时长 [Haptic Length]
+
+
+
+
+
+
+
MAVLink Baud Rate
MAVLink 波特率 [Baud Rate]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Quiet
GeneralEdit
禁用 [Quiet]
+
+
+
+
+
+
+
Only Alarms
GeneralEdit
只有告警 [Alarm]
@@ -4713,6 +7249,20 @@ MODE4 模式4:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
No Keys
GeneralEdit
忽略按键 [NoKey]
@@ -4720,12 +7270,33 @@ MODE4 模式4:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
All
GeneralEdit
开启 [All]
+
+
+
+
+
+
+
Battery warning voltage.
This is the threashhold where the battery warning sounds.
@@ -4737,114 +7308,268 @@ Acceptable values are 5v..10v
+
+
+
+
+
+
+
Standard
标准LCD [Standard]
+
+
+
+
+
+
+
Optrex
GeneralEdit
光王LCD [Optrex]
+
+
+
+
+
+
+
If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes.
+
+
+
+
+
+
+
min
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Show splash screen on startup
+
+
+
+
+
+
+
---
GeneralEdit
+
+
+
+
+
+
+
2s
GeneralEdit
+
+
+
+
+
+
+
3s
GeneralEdit
+
+
+
+
+
+
+
4s
GeneralEdit
+
+
+
+
+
+
+
6s
GeneralEdit
+
+
+
+
+
+
+
8s
+
+
+
+
+
+
+
10s
+
+
+
+
+
+
+
15s
+
+
+
+
+
+
+
4800 Baud
GeneralEdit
+
+
+
+
+
+
+
9600 Baud
+
+
+
+
+
+
+
14400 Baud
+
+
+
+
+
+
+
19200 Baud
+
+
+
+
+
+
+
38400 Baud
+
+
+
+
+
+
+
57600 Baud
+
+
+
+
+
+
+
76800 Baud
+
+
+
+
+
+
+
115200 Baud
@@ -4852,6 +7577,27 @@ Acceptable values are 5v..10v
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -4868,6 +7614,20 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
X-Short
GeneralEdit
极短
@@ -4875,6 +7635,20 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Short
GeneralEdit
较短
@@ -4882,12 +7656,40 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Normal
正常
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Long
GeneralEdit
较长
@@ -4895,43 +7697,106 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
X-Long
极长
+
+
+
+
+
+
+
NMEA
GeneralEdit
+
+
+
+
+
+
+
Play Delay (switch mid position)
开关拨过中档时播音延迟 [Delay]
+
+
+
+
+
+
+
Measurement Units
单位制 [Units]
+
+
+
+
+
+
+
Haptic Mode
GeneralEdit
振动 [Haptic Mode]
+
+
+
+
+
+
+
Beeper Length
蜂鸣时长 [Beep Length]
+
+
+
+
+
+
+
Beeper Mode
蜂鸣音 [Beep Mode]
+
+
+
+
+
+
+
Beeper volume
0 - Quiet. No beeps at all.
@@ -4943,10 +7808,27 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Alarms Only
GeneralEdit
只有告警 [Alarm]
+
+
+ Power On Speed
+
+
+
+
+ Power Off Speed
+
+
GeneralSetupPanel
@@ -5101,252 +7983,596 @@ Are you sure ?
Hardware
+
+
+
+
+
+
+
Form
Hardware
表单
+
+
+
+
+
+
+
SQ
+
+
+
+
+
+
+
SR
+
+
+
+
+
+
+
LS2
LS2 滑杆
+
+
+
+
+
+
+
SP
+
+
+
+
+
+
+
SO
+
+
+
+
+
+
+
S4
S4 旋钮
+
+
+
+
+
+
+
RS
RS 滑杆
+
+
+
+
+
+
+
SB
+
+
+
+
+
+
+
PPM 2
教练口信号2 [PPM 2]
+
+
+
+
+
+
+
OFF
关闭 [OFF]
+
+
+
+
+
+
+
S-Port Mirror
S-Port 镜像 [S-Port Mirror]
+
+
+
+
+
+
+
Telemetry
回传 [Telemetry]
+
+
+
+
+
+
+
SBUS Trainer
SBUS 教练功能 [SBUS Trainer]
+
+
+
+
+
+
+
Debug
除错 [Debug]
+
+
+
+
+
+
+
Rud
Rud 摇杆
+
+
+
+
+
+
+
PPM 3
教练口信号3 [PPM 3]
+
+
+
+
+
+
+
S1
S1 旋钮
+
+
+
+
+
+
+
S2
S2 旋钮
+
+
+
+
+
+
+
S3
S3 旋钮
+
+
+
+
+
+
+
PPM 1
教练口信号1 [PPM 1]
+
+
+
+
+
+
+
Serial Port
串口 [Serial Port]
+
+
+
+
+
+
+
v
+
+
+
+
+
+
+
PPM Multiplier
教练口信号系数 [PPM Multiplier]
+
+
+
+
+
+
+
Current Offset
当前修正 [Offset]
+
+
+
+
+
+
+
PPM 4
教练口信号4 [PPM 4]
+
+
+
+
+
+
+
SA
+
+
+
+
+
+
+
Ele
Ele 摇杆
+
+
+
Antenna
+
+
+
+
+
S5
S5 旋钮
+
+
+
+
+
+
+
Ail
Ail 摇杆
+
+
+
+
+
+
+
Thr
Thr 摇杆
+
+
+
+
+
+
+
SC
+
+
+
+
+
+
+
LS
LS 滑杆
+
+
+
+
+
+
+
SD
+
+
+
+
+
+
+
Battery Offset
控电电压修正 [Battery Offset]
+
+
+
+
+
+
+
SE
+
+
+
+
+
+
+
SF
+
+
+
+
+
+
+
SG
+
+
+
+
+
+
+
SH
+
+
+
+
+
+
+
SI
+
+
+
+
+
+
+
SJ
+
+
+
+
+
+
+
SK
+
+
+
+
+
+
+
SL
+
+
+
+
+
+
+
SM
+
+
+
+
+
+
+
SN
+
+
+
+
+
+
+
RS2
RS2 滑杆
+
+
+
+
+
+
+
Bluetooth
蓝牙 [Bluetooth]
+
+
+
+
+
+
+
ADC Filter
+
+
+
+
+
+
+
Device Name:
@@ -5445,71 +8671,169 @@ Are you sure ?
Heli
+
+
+
+
+
+
+
Off
禁用
+
+
+
+
+
+
+
120
+
+
+
+
+
+
+
120X
+
+
+
+
+
+
+
140
+
+
+
+
+
+
+
90
+
+
+
+
+
+
+
Invert Elevator
升降反向 [Ele]
+
+
+
+
+
+
+
Invert Aileron
副翼反向 [Ail]
+
+
+
+
+
+
+
Invert Collective
总距反向 {Col]
+
+
+
+
+
+
+
Long. cyc
纵向循环螺距 [Long]
+
+
+
+
+
+
+
Invert
反向 [Invert]
+
+
+
+
+
+
+
Swash Ring
斜盘限位 [Swach RIng]
+
+
+
+
+
+
+
Swash Type
斜盘类型 [Swach Type]
+
+
+
+
+
+
+
Lateral cyc
横向循环螺距 [Lateral]
+
+
+
+
+
+
+
Collective
总距 [Collective]
@@ -5911,47 +9235,110 @@ Are you sure ?
LogsDialog
+
+
+
+
+
+
+
Companion Log Viewer
Companion Log 查看器
+
+
+
+
+
+
+
Fly sessions
LogsDialog
飞行起落
+
+
+
+
+
+
+
Save session CSV
+
+
+
+
+
+
+
Zoom
缩放
+
+
+
+
+
+
+
X
+
+
+
+
+
+
+
Y
+
+
+
+
+
+
+
Reset
重设
+
+
+
+
+
+
+
Filename
文件名
+
+
+
+
+
+
+
Open LogFile
打开 Log 文件
@@ -7448,26 +10835,59 @@ Do you want to save your changes?
MixerDialog
+
+
+
+
+
Dialog
对话框
+
+
+
+
+
+
+
Delay
延迟 [Delay]
+
+
+
+
+
+
+
Slow
慢动作 [Slow]
+
+
+
+
+
+
+
Up
正向 [Up]
+
+
+
+
+
+
+
Down
负向 [Dn]
@@ -7476,6 +10896,34 @@ Do you want to save your changes?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
@@ -7501,62 +10949,146 @@ p, li { white-space: pre-wrap; }
+
+
+
+
+
+
+
Include Trim
微调 [Trim]
+
+
+
+
+
+
+
Offset
偏移 [Offset]
+
+
+
+
+
+
+
Weight
比例 [Weight]
+
+
+
+
+
+
+
Name
名称 [Name]
+
+
+
+
+
+
+
Source
第一次出现 Mixer的主页条目概览中
输入源 [Source]
+
+
+
+
+
+
+
Multiplex
混控方式 [Multiplex]
+
+
+
+
+
+
+
Warning
启用时蜂鸣 [Warning]
+
+
+
+
+
+
+
The curve used by the mix
此混控使用的曲线
+
+
+
+
+
+
+
Include DR/Expo
使用 DR/Expo
+
+
+
+
+
+
+
Flight modes
飞行模式 [Modes]
+
+
+
+
+
+
+
Switch
开启开关 [Switch]
+
+
+
+
+
+
+
Mixer warning.
Setting this value will cause a beep to be emmitted when this value is active.
混控警告
@@ -7564,33 +11096,75 @@ Setting this value will cause a beep to be emmitted when this value is active.
+
+
+
+
+
+
+
OFF
1声蜂鸣 [1]
关闭 [OFF]
+
+
+
+
+
+
+
1 Beep
1声蜂鸣 [1]
+
+
+
+
+
+
+
2 Beep
2声蜂鸣 [2]
+
+
+
+
+
+
+
3 Beep
3声蜂鸣 [3]
+
+
+
+
+
+
+
No
禁用微调 用在FM设定中
不使用 [OFF]
+
+
+
+
+
+
+
Yes
不使用 [OFF]
使用 [On]
@@ -7599,6 +11173,27 @@ Setting this value will cause a beep to be emmitted when this value is active.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
GV
@@ -7607,11 +11202,46 @@ Setting this value will cause a beep to be emmitted when this value is active.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The source for the mixer
混控的输入源
+
+
+
+
+
+
+
Multiplexer
This determines how mixer values are added.
@@ -7632,27 +11262,62 @@ This determines how mixer values are added.
+
+
+
+
+
+
+
ADD
与前一行的输出值相加后输出 [Add]
+
+
+
+
+
+
+
MULTIPLY
与前一行的输出值相乘后输出 [Multiply]
+
+
+
+
+
+
+
REPLACE
与前一行的输出值相乘后输出 [Multiply]
取代前一行的输出值 [Replace]
+
+
+
+
+
+
+
Curve
曲线 [Curve]
+
+
+
+
+
+
+
Switch used by the mix.
If blank then the mix is considered to be "ON" all the time.
用来开启此条混控的开关
@@ -7683,6 +11348,12 @@ If blank then the mix is considered to be "ON" all the time.
Invert All
+
+
+
+ FullScreenDialog
+
+
MixersListWidget
@@ -7856,11 +11527,23 @@ If blank then the mix is considered to be "ON" all the time.
ModelEdit
+
+
+
+
+
Dialog
对话框
+
+
+
+
+
+
+
Simulate
遥控器模拟器
@@ -7916,6 +11599,12 @@ If blank then the mix is considered to be "ON" all the time.
Telemetry
回传设置 Tele
+
+
+
+ FullScreenDialog
+
+
ModelPrinter
@@ -8739,128 +12428,300 @@ If blank then the mix is considered to be "ON" all the time.
Module
+
+
+
+
+
+
+
CH
通道
+
+
+
+
+
+
+
Failsafe Mode
失控保护方式 [Failsafe Mode]
+
+
+
+
+
+
+
Start
开始通道 [CH]
+
+
+
+
+
+
+
PPM delay
PPM 延迟 [Delay]
+
+
+
+
+
+
+
us
微秒
+
+
+
+
+
+
+
Negative
负 [Negative]
+
+
+
+
+
+
+
Positive
正 [Positive]
+
+
+
+
+
+
+
RF Output Power
+
+
+
+
+
+
+
Antenna
+
+
+
+
+
+
+
Option value
+
+
+
+
+
+
+
Sub Type
+
+
+
+
+
+
+
Master/Jack
教练主机/教练线插口 [Master/Jack]
+
+
+
+
+
+
+
Slave/Jack
教练从机/教练线插口 [Slave/Jack]
+
+
+
+
+
+
+
Master/SBUS Module
教练主机/SBUS 模块 [Master/SBUS]
+
+
+
+
+
+
+
Master/CPPM Module
教练主机/CPPM 模块 [Master/CPPM]
+
+
+
+
+
+
+
Master/SBUS in battery compartment
教练主机/SBUS 电池盒中插座
+
+
+
+
+
+
+
Show values in:
+
+
+
+
+
+
+
%
abbreviation for percent
+
+
+
+
+
+
+
μs
abbreviation for microseconds
+
+
+
+
+
+
+
Polarity
极性 [Polarity]
+
+
+
+
+
+
+
Trainer Mode
教练功能模式 [Trainer Mode]
+
+
+
+
+
+
+
ms
毫秒
+
+
+
+
+
+
+
PPM Frame Length
PPM帧长 [Frame Length]
+
+
+
+
+
+
+
Channels
通道数 [Channels]
+
+
+
+
Receiver 1
@@ -8868,108 +12729,260 @@ If blank then the mix is considered to be "ON" all the time.
+
+
+
+
+
+
+
+
+
+
+
+
X
+
+
+
+
Receiver 2
+
+
+
+
Receiver 3
+
+
+
+
+
+
+
WARNING: changing RF Output Power needs RE-BIND
+
+
+
+
Registration ID
+
+
+
+
+
+
+
WARNING: Requires non-certified firmware!
+
+
+
+
+
+
+
Not set
未设置
+
+
+
+
+
+
+
Hold
自定义 [Custom]]]]]
保持 [Hold]
+
+
+
+
+
+
+
Custom
自定义 [Custom]]]]]
自定义 [Custom]
+
+
+
+
+
+
+
No Pulses
自定义 [Custom]]]]]
不输出脉冲 [No Puls]
+
+
+
+
+
+
+
Receiver
自定义 [Custom]]]]]
接收机设置[Reciever]
+
+
+
+
+
+
+
Failsafe Positions
失控保护位置 [F.s. Positons]
+
+
+
+
+
+
+
Protocol
遥控器射频协议 [Protocol]
+
+
+
+
+
+
+
Multi Radio Protocol
多遥控协议 [Multi Protocal]
+
+
+
+
+
+
+
Receiver No.
接收机编号 [Receiver No.].
+
+
+
+
+
+
+
Output type
输出类型 [Output type]
+
+
+
+
+
+
+
Open Drain
开漏输出 [Open Drain]
+
+
+
+
+
+
+
Push Pull
推挽输出 [Push Pull]
+
+
+
+
+
+
+
Bind on startup
开机时对频[Bind]
+
+
+
+
+
+
+
Low Power
低功率[Range]
+
+
+
+
+
+ Internal
+
+
+
+
+
+
+
+ Ext. + Int.
+
+
ModuleData
@@ -9710,21 +13723,49 @@ If blank then the mix is considered to be "ON" all the time.
PrintDialog
+
+
+
+
+
+
+
Close
关闭
+
+
+
+
+
+
+
Style
+
+
+
+
+
+
+
Print
打印
+
+
+
+
+
+
+
Print to file
打印到文件
@@ -9748,11 +13789,25 @@ If blank then the mix is considered to be "ON" all the time.
ProgressDialog
+
+
+
+
+
+
+
Flash Firmware
烧录固件
+
+
+
+
+
+
+
Close
关闭
@@ -9767,6 +13822,13 @@ If blank then the mix is considered to be "ON" all the time.
ProgressWidget
+
+
+
+
+
+
+
Show Details
显示详情
@@ -9920,16 +13982,37 @@ If blank then the mix is considered to be "ON" all the time.
RadioNotFoundDialog
+
+
+
+
+
+
+
No Radio Found
未找到遥控器
+
+
+
+
+
+
+
<html><head/><body><p>No Radio was found!</p><p>Make sure that you hold the lower trim buttons towards the center while you turn it on.</p><p>Then connect the USB wire.</p><p><span style=" font-family:'arial,sans-serif'; font-size:13px; font-style:italic; color:#222222; background-color:#ffffff;">Note: if you have a Taranis that has not had the firmware upgraded to 2.0 then this version of Companion will not work.</span></p></body></html>
<html><head/><body><p>未找到遥控器!</p><p>先将这两个微调按钮同时保持拨向内侧, 然后再打开遥控器.</p><p>开机后再插上USB线.</p><p><span style=" font-family:'arial,sans-serif'; font-size:13px; font-style:italic; color:#222222; background-color:#ffffff;">提示:如果你的X9D遥控器尚未升级到2.0版本, 则不能使用这个版本的 Compaion 程序.</span></p></body></html>
+
+
+
+
+
+
+
OK
@@ -9938,43 +14021,99 @@ If blank then the mix is considered to be "ON" all the time.
RadioOutputsWidget
-
+
+
+
+
+
+
+
+
+
Form
表单
-
+
+
+
+
+
+
+
+
+
View:
-
+
+
+
+
+
+
+
+
+
Logical Switches
-
+
+
+
+
+
+
+
+
+
Global Variables
全局变量 [Global Variables]
-
+
+
+
+
+
+
+
+
+
Channel Outputs
-
+
+
+
+
+
+
+
+
+
Mix Outputs
-
+
+
+
+
+
+
+
+
+
L
o
g
@@ -9984,7 +14123,15 @@ c
-
+
+
+
+
+
+
+
+
+
G
l
o
@@ -9995,7 +14142,15 @@ l
-
+
+
+
+
+
+
+
+
+
C
h
a
@@ -10008,7 +14163,15 @@ s
-
+
+
+
+
+
+
+
+
+
M
i
x
@@ -10849,84 +15012,196 @@ s
Setup
+
+
+
+
+
+
+
Timer 1
计时器 1 [Timer 1]
+
+
+
+
+
+
+
Top LCD Timer
顶部 LCD 计时器
+
+
+
+
+
+
+
Model Image
模型图片 [Medel Image]
+
+
+
+
+
+
+
Warnings
告警 [Warnings]
+
+
+
+
+
+
+
Switch Warnings
开关位置告警 [Switch Positions]
+
+
+
+
+
+
+
Pot Warnings
旋钮位置告警 [Pot Positions]
+
+
+
+
+
+
+
OFF
关闭 [OFF]
+
+
+
+
+
+
+
Manual
手动 [Manual]
+
+
+
+
+
+
+
Auto
用关机位置 [Auto]
+
+
+
+
+
+
+
Model
模型名称 [Model Name]
+
+
+
+
+
+
+
Center beep
回中蜂鸣 [Center Beep]
+
+
+
+
+
+
+
Edit Checklist...
+
+
+
+
+
+
+
Extended Trims
微调范围扩展
[Extended Trims]
+
+
+
+
+
+
+
Display Checklist
显示检查单
[Checklist]
+
+
+
+
+
+
+
Extended Limits
舵机上下限扩展
[Extended Limits]
+
+
+
+
+
+
+
Reverse throttle operation.
If this is checked the throttle will be reversed. Idle will be forward, trim will also be reversed and the throttle warning will be reversed as well.
@@ -10938,93 +15213,212 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi
+
+
+
+
+
+
+
Reverse Throttle
油门杆反向
{Reverse]
+
+
+
+
+
+
+
Throttle Trim Idle Only
油门微调只改变怠速
[Trim Idle]
+
+
+
+
+
+
+
Throttle Warning
油门杆位置告警
[Throttle State]
+
+
+
+
+
+
+
Exponential
先小后大 [Exp]
+
+
+
+
+
+
+
Extra Fine
很小 [Extra Fine]
+
+
+
+
+
+
+
Fine
较小 [Fine]
+
+
+
+
+
+
+
Medium
中等 [Medium]
+
+
+
+
+
+
+
Coarse
较大 [Coarse]
+
+
+
+
+
+
+
Never
微调从不显示在LCD显示屏上
从不 [Never]
+
+
+
+
+
+
+
On change
????意思是说微调在拨动微调开关时才在LCD显示屏上显示
调整时 [On change]
+
+
+
+
+
+
+
Always
微调一直显示在LCD显示屏上
一直 [Always]
+
+
+
+
+
+
+
Global Functions
全局功能
[Global Functions]
+
+
+
+
+
+
+
Throttle Source
设为油门杆 [Thr Source]
+
+
+
+
+
+
+
Trim Step
微调步幅 [Trim Step]
+
+
+
+
+
+
+
Trims Display
微调显示 [Trims Display]
+
+
+
+
+
+
+
Timer 2
计时器 2 [Timer 2]
+
+
+
+
+
+
+
Timer 3
计时器 3 [Timer 3]
@@ -11394,181 +15788,421 @@ Profile ID: [%1]; Radio ID: [%2]
SimulatorMainWindow
-
+
+
+
+
+
+
+
+
+
OpenTx Simulator
-
+
+
+
+
+
+
+
+
+
View
-
+
+
+
+
+
+
+
+
+
Radio Window
-
+
+
+
+
+
+
+
+
+
Reload...
-
+
+
+
+
+
+
+
+
+
Tools
-
+
+
+
+
+
+
+
+
+
Toolbar
-
+
+
+
+
+
+
+
+
+
Reload Lua Scripts
载入 Lua 脚本
-
+
+
+
+
+
+
+
+
+
Reload the Lua environment on the simulated radio.
-
+
+
+
+
+
+
+
+
+
F7
-
+
+
+
+
+
+
+
+
+
Reload Radio Data
-
+
+
+
+
+
+
+
+
+
Reload all radio data without restarting the simulator.
-
+
+
+
+
+
+
+
+
+
F9
-
+
+
+
+
+
+
+
+
+
Key Mapping
-
+
+
+
+
+
+
+
+
+
Show keyboard maping reference.
-
+
+
+
+
+
+
+
+
+
F1
-
+
+
+
+
+
+
+
+
+
Joystick Settings
-
+
+
+
+
+
+
+
+
+
Open joystick configuration settings dialog.
-
+
+
+
+
+
+
+
+
+
F3
-
+
+
+
+
+
+
+
+
+
LCD Screenshot
-
+
+
+
+
+
+
+
+
+
Save a screenshot of the current simulated LCD screen.
-
+
+
+
+
+
+
+
+
+
F8
-
+
+
+
+
+
+
+
+
+
Dock In Main Window
-
+
+
+
+
+
+
+
+
+
Show the radio in the main window or as a separate "floating" window.
-
+
+
+
+
+
+
+
+
+
Menu Bar
-
+
+
+
+
+
+
+
+
+
Show or hide the top menu bar.
-
+
+
+
+
+
+
+
+
+
Alt+M
-
+
+
+
+
+
+
+
+
+
Constrain Width
-
+
+
+
+
+
+
+
+
+
Set radio widget width to be a fixed size.
-
+
+
+
+
+
+
+
+
+
Constrain Height
-
+
+
+
+
+
+
+
+
+
Set radio widget height to be a fixed size.
@@ -11649,76 +16283,172 @@ Profile ID: [%1]; Radio ID: [%2]
SimulatorStartupDialog
-
+
+
+
+
+
+
+
+
+
OpenTX Simulator - Startup Options
-
+
+
+
+
+
+
+
+
+
Simulator Startup Options:
模拟器启动选项:
-
+
+
+
+
+
+
+
+
+
Radio Profile:
-
+
+
+
+
+
+
+
+
+
Existing radio profiles are shown here.<br />
Create or edit profiles using the Companion application.
-
+
+
+
+
+
+
+
+
+
Radio Type:
遥控器型号:
-
+
+
+
+
+
+
+
+
+
Existing radio simulators are shown here.<br />
The radio type specified in the selected profile is used by default.
-
+
+
+
+
+
+
+
+
+
Data Source:
-
+
+
+
+
+
+
+
+
+
Data File:
-
+
+
+
+
+
+
+
+
+
Data Folder:
-
+
+
+
+
+
+
+
+
+
SD Image Path:
-
+
+
+
+
+
+
+
+
+
Radio data (.bin/.eeprom/.otx) image file to use. A new file with a default image will be created if necessary.<br />
<b>NOTE</b>: any existing EEPROM data incompatible with the selected radio type may be overwritten!
-
+
+
+
+
+
+
+
+
+
Select data file...
@@ -11726,59 +16456,147 @@ The radio type specified in the selected profile is used by default.
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
-
+
+
+
+
+
+
+
+
+
Directory containing RADIO and MODELS folders to use.<br />
New folder(s) with default radio/model will be created here if necessary.
-
+
+
+
+
+
+
+
+
+
Select data folder...
-
+
+
+
+
+
+
+
+
+
Directory containing the SD card image to use.<br/>
The default is configured in the chosen Radio Profile.
-
+
+
+
+
+
+
+
+
+
Select SD card image folder...
-
+
+
+
+
+
+
+
+
+
Select which of the data sources (File/Folder/SD Card) you would like to start the simulator with.
-
+
+
+
+
+
+
+
+
+
File
文件
-
+
+
+
+
+
+
+
+
+
Folder
-
+
+
+
+
+
+
+
+
+
SD Path
@@ -11807,7 +16625,15 @@ The default is configured in the chosen Radio Profile.
SimulatorWidget
-
+
+
+
+
+
+
+
+
+
Companion Simulator
Companion 模拟器
@@ -11895,6 +16721,20 @@ The default is configured in the chosen Radio Profile.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
@@ -11934,6 +16774,13 @@ The default is configured in the chosen Radio Profile.
StyleEditDialog
+
+
+
+
+
+
+
@@ -11942,21 +16789,49 @@ The default is configured in the chosen Radio Profile.
+
+
+
+
+
+
+
&Reset to default
+
+
+
+
+
+
+
&Cancel
+
+
+
+
+
+
+
&OK
+
+
+
+
+
+
+
This feature does not validate your changes and assumes you are familiar with CSS syntax for QT.
@@ -12214,191 +17089,476 @@ Too many errors, giving up.
Telemetry
+
+
+
+
+
+
+
Protocol
协议
+
+
+
+
+
+
+
Alarm 1
警告 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Yellow
黄色警告
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Orange
橙色警告
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Red
红色警告
+
+
+
+
+
+
+
Alarm 2
警告 2
+
+
+
+
+
+
+
RSSI
+
+
+
+
+
+
+
Disable telemetry audio warnings
+
+
+
+
+
Source
+
+
+
+
+
+
+
A1
A1 模拟值1
+
+
+
+
+
+
+
A2
A2 模拟值2
+
+
+
+
+
+
+
Sink Max
最大下降率
+
+
+
+
+
+
+
Climb Max
最大爬升
+
+
+
+
+
+
+
Sink Min
最小下降率
+
+
+
+
+
+
+
Climb Min
最小爬升
+
+
+
+
+
+
+
Center Silent
中间静音
+
+
+
+
+
+
+
Vario limits
Vario 限值
+
+
+
+
+
+
+
Vario source
Vario 传感器
+
+
+
+
+
+
+
Altimetry
高度计
+
+
+
+
+
+
+
Altitude source
高度传感器
+
+
+
+
+
+
+
Volts source
电压传感器
+
+
+
+
+
+
+
Top Bar
顶部横条
+
+
+
+
+
+
+
Volt source
电压传感器
+
+
+
+
+
+
+
Current source
当前源
+
+
+
+
+
+
+
Blades
旋翼数
+
+
+
+
+
+
+
mAh count
+
+
+
+
+
+
+
mAh
+
+
+
+
+
+
+
A
+
+
+
+
+
+
+
FAS Offset
FAS偏移
+
+
+
+
+
+
+
Persistent mAh
保持mAh
+
+
+
+
+
+
+
Various
????
不同的
+
+
+
+
+
+
+
Serial Protocol
串口协议
+
+
+
+
+
+
+
None
+
+
+
+
+
+
+
FrSky Sensor Hub
FrSky Sensor Hub
+
+
+
+
+
+
+
Sensors
传感器
+
+
+
+
+
+
+
Disable multi sensor handling
禁止多传感器处理
@@ -12407,107 +17567,289 @@ Too many errors, giving up.
TelemetryAnalog
+
+
+
+
+
+
+
Unit
单位
+
+
+
+
+
+
+
Max Value
最大值
+
+
+
+
+
+
+
Alarm 1
警告 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Yellow
黄色警告
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Orange
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Red
红色警告
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<
+
+
+
+
+
+
+
+
+
+
+
+
+
+
>
+
+
+
+
+
+
+
Alarm 2
警告 2
+
+
+
+
+
+
+
Offset
+
+
+
+
+
+
+
Volts (V)
电压 (V)
+
+
+
+
+
+
+
Amps (A)
电流 (A)
+
+
+
+
+
+
+
Speed (m/s or ft/s)
速度 (m/s or ft/s)
+
+
+
+
+
+
+
Raw (-)
原始值 (-)
+
+
+
+
+
+
+
Speed (km/h or miles/h)
速度 ( km/h 或 miles/h)
+
+
+
+
+
+
+
Meters (m or ft)
高度 (米或英尺)
+
+
+
+
+
+
+
Temp (°)
温度 (°)
+
+
+
+
+
+
+
Fuel (%)
油量 (%)
+
+
+
+
+
+
+
mAmps (mA)
电流 (mA)
@@ -12521,26 +17863,61 @@ Too many errors, giving up.
TelemetryCustomScreen
+
+
+
+
+
+
+
Custom Screen Type
自定义屏幕类型
+
+
+
+
+
+
+
Min
最小
+
+
+
+
+
+
+
Source
来源
+
+
+
+
+
+
+
Gauge
仪表盘
+
+
+
+
+
+
+
Max
最大
@@ -12675,86 +18052,199 @@ Too many errors, giving up.
TelemetrySensor
+
+
+
+
+
+
+
Form
表单
+
+
+
+
+
+
+
Custom
自定义
+
+
+
+
+
+
+
Calculated
运算
+
+
+
+
+
+
+
Id
+
+
+
+
+
+
+
Instance
对象
+
+
+
+
Rx
+
+
+
+
Mod.
+
+
+
+
+
+
+
Add
加
+
+
+
+
+
+
+
Average
平均值
+
+
+
+
+
+
+
Min
最小
+
+
+
+
+
+
+
Max
最大
+
+
+
+
+
+
+
Multiply
乘以
+
+
+
+
+
+
+
Totalize
总计
+
+
+
+
+
+
+
Cell
锂电单片电压
+
+
+
+
+
+
+
Consumption
消耗
+
+
+
+
+
+
+
Dist
距离
+
+
+
+
+
+
+
Cells Sensor :
锂电电压传感器 :
@@ -12767,191 +18257,506 @@ Too many errors, giving up.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
---
+
+
+
+
+
+
+
GPS Sensor :
GPS 传感器 :
+
+
+
+
+
+
+
Alt. Sensor :
高度传感器 :
+
+
+
+
+
+
+
Sensor :
传感器 :
+
+
+
+
+
+
+
Raw (-)
原始值 (-)
+
+
+
+
+
+
+
V
+
+
+
+
+
+
+
A
+
+
+
+
+
+
+
mA
+
+
+
+
+
+
+
kt
+
+
+
+
+
+
+
m/s
+
+
+
+
+
+
+
ft/s
+
+
+
+
+
+
+
km/h
+
+
+
+
+
+
+
mph
+
+
+
+
+
+
+
m
+
+
+
+
+
+
+
ft
+
+
+
+
+
+
+
°C
+
+
+
+
+
+
+
°F
+
+
+
+
+
+
+
%
+
+
+
+
+
+
+
mAh
+
+
+
+
+
+
+
W
+
+
+
+
+
+
+
mW
+
+
+
+
+
+
+
dBm
+
+
+
+
+
+
+
RPM
+
+
+
+
+
+
+
g
+
+
+
+
+
+
+
°
+
+
+
+
+
+
+
Rad
+
+
+
+
+
+
+
mL
+
+
+
+
+
+
+
US fl.Oz.
+
+
+
+
+
+
+
Precision
精确度
+
+
+
+
+
+
+
Ratio
比例
+
+
+
+
+
+
+
Blades
旋翼数
+
+
+
+
+
+
+
Offset
偏移
+
+
+
+
+
+
+
Multiplier
系数
+
+
+
+
+
+
+
Auto Offset
自动偏移
+
+
+
+
+
+
+
Filter
过滤器
+
+
+
+
+
+
+
Persistent
保持
+
+
+
+
+
+
+
Positive
正向
+
+
+
+
+
+
+
Logs
LOG记录
@@ -12983,115 +18788,267 @@ Too many errors, giving up.
TelemetrySimulator
-
+
+
+
+
+
+
+
+
+
Telemetry Simulator
回传模拟器
-
+
+
+
+
+
+
+
+
+
When enabled, sends any non-blank values as simulated telemetry data.
如果允许 =, 发送任何非空值作为回传模拟数据.
-
+
+
+
+
+
+
+
+
+
Simulate
模拟
-
+
+
+
+
+
+
+
+
+
Replay SD Log File
重播 SD Log 文件
-
+
+
+
+
+
+
+
+
+
Replay rate
-
+
+
+
+
+
+
+
+
+
|>
-
+
+
+
+
+
+
+
+
+
<|
-
+
+
+
+
+
+
+
+
+
>
-
+
+
+
+
+
+
+
+
+
<-
-
+
+
+
+
+
+
+
+
+
X
-
+
+
+
+
+
+
+
+
+
1/5x
1/5x
-
+
+
+
+
+
+
+
+
+
5x
5x
-
+
+
+
+
+
+
+
+
+
No Log File Currently Loaded
现在没有载入任何 log 文件
-
+
+
+
+
+
+
+
+
+
Setting RSSI to zero simulates telemetry and radio link loss.
-
+
+
+
+
+
+
+
+
+
Set RSSI to zero when paused.
-
+
+
+
+
+
+
+
+
+
Stop sending telemetry data when the Telemetry Simulator window is hidden.
-
+
+
+
+
+
+
+
+
+
Pause simulation when hidden.
-
+
+
+
+
+
+
+
+
+
Load
载入
-
+
+
+
+
+
+
+
+
+
Row #
Timestamp
行数
@@ -13099,7 +19056,15 @@ Timestamp
-
+
+
+
+
+
+
+
+
+
RxBt
RxBt 接收机电压
@@ -13107,15 +19072,47 @@ Timestamp
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
V / ratio
伏 / 比值
-
+
+
+
+
+
+
+
+
+
RAS
@@ -13133,38 +19130,166 @@ Timestamp
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<html><head/><body><p><br/></p></body></html>
-
+
+
+
+
+
+
+
+
+
VFAS
VFAS FAS传感器电压
-
+
+
+
+
+
+
+
+
+
Lat,Lon
(dec.deg.)
-
+
+
+
+
+
+
+
+
+
dd-MM-yyyy
hh:mm:ss
@@ -13172,166 +19297,414 @@ hh:mm:ss
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Volts
V
-
+
+
+
+
+
+
+
+
+
RSSI
RSSI 信号强度
-
+
+
+
+
+
+
+
+
+
Db
-
+
+
+
+
+
+
+
+
+
Curr
Curr 电流
-
+
+
+
+
+
+
+
+
+
Amps
A
-
+
+
+
+
+
+
+
+
+
Cels
Cells 锂电电压
-
+
+
+
+
+
+
+
+
+
A1
A1 模拟值1
-
+
+
+
+
+
+
+
+
+
A2
A2 模拟值2
-
+
+
+
+
+
+
+
+
+
ASpd
ASpd 空速
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
km/h
-
+
+
+
+
+
+
+
+
+
A3
A3 模拟值3
-
+
+
+
+
+
+
+
+
+
GAlt
GALT GPS高度
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Meters
m
-
+
+
+
+
+
+
+
+
+
A4
A4 模拟值4
-
+
+
+
+
+
+
+
+
+
GSpd
GSpd GPS速度
-
+
+
+
+
+
+
+
+
+
Tmp1
Tmp1 温度1
-
+
+
+
+
+
+
+
+
+
Hdg
Hdg 航向角
-
+
+
+
+
+
+
+
+
+
Degrees
°
-
+
+
+
+
+
+
+
+
+
Tmp2
Tmp2 温度2
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
°C
-
+
+
+
+
+
+
+
+
+
Date
Date 日期
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
RPM
Rpm
-
+
+
+
+
+
+
+
+
+
GPS
-
+
+
+
+
+
+
+
+
+
Fuel
Fule 燃油
-
+
+
+
+
+
+
+
+
+
%
-
+
+
+
+
+
+
+
+
+
AccX
AccX X轴加速度
@@ -13339,51 +19712,131 @@ hh:mm:ss
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
G
G
-
+
+
+
+
+
+
+
+
+
Fuel Qty
Fule Qty 油量
-
+
+
+
+
+
+
+
+
+
ml
-
+
+
+
+
+
+
+
+
+
AccY
AccY Y轴加速度
-
+
+
+
+
+
+
+
+
+
VSpd
VSpd 垂直速度
-
+
+
+
+
+
+
+
+
+
m/s
-
+
+
+
+
+
+
+
+
+
AccZ
AccZ Z轴加速度
-
+
+
+
+
+
+
+
+
+
Alt
Alt 高度
@@ -13425,11 +19878,25 @@ hh:mm:ss
Timer
+
+
+
+
+
+
+
Countdown
倒数报数
+
+
+
+
+
+
+
Minute Call
分钟提示
@@ -13513,26 +19980,61 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
Trainer
+
+
+
+
+
+
+
Form
表单
+
+
+
+
+
+
+
Mode
模式
+
+
+
+
+
+
+
Input
输入
+
+
+
+
+
+
+
Weight
比例
+
+
+
+
+
+
+
Rud
方向通道
@@ -13545,6 +20047,62 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Beeper volume
0 - Quiet. No beeps at all.
@@ -13565,6 +20123,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Off
关闭
@@ -13573,6 +20159,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+= (Sum)
+= (相加)
@@ -13581,6 +20195,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
:= (Replace)
:= (取代)
@@ -13589,6 +20231,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn1
通道1
@@ -13597,6 +20267,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn2
通道2
@@ -13605,6 +20303,34 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn3
通道3
@@ -13613,21 +20339,70 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
chn4
通道4
+
+
+
+
+
+
+
Ele
升降通道
+
+
+
+
+
+
+
Thr
油门通道
+
+
+
+
+
+
+
Ail
副翼通道
@@ -13636,7 +20411,15 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
TrainerSimulator
-
+
+
+
+
+
+
+
+
+
Trainer simulator
教练功能模拟
@@ -14061,12 +20844,33 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
burnConfigDialog
+
+
+
+
+
+
+
Programmer Configuration
编程器配置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Location of sam-ba executable
定位 sam-ba 可执行文件
@@ -14075,16 +20879,58 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The location of the AVRDUDE executable.
AVRDUDE可执行文件位置.
+
+
+
+
+
+
+
DFU-Util Location
DFU-Util 程序位置
+
+
+
+
+
+
+
Location of AVRDUDE executable
AVRDUDE可执行文件位置
@@ -14092,6 +20938,27 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Use this button to browse and look for the AVRDUDE executable file.
使用这个按钮定位AVRDUDE可执行文件.
@@ -14099,16 +20966,51 @@ CTRL + scroll or PAGE UP/DOWN keys to change time in larger steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Browse...
浏览...
+
+
+
+
+
+
+
Programmer
编程器
+
+
+
+
+
+
+
Programmer used for communicating with the controller.
Please consult the programmer's documentation and the AVRDUDE documentation to select the appropriate programmer.
与遥控器通讯用的编程器.
@@ -14116,23 +21018,65 @@ Please consult the programmer's documentation and the AVRDUDE documentation
+
+
+
+
+
+
+
List all available programmers.
列出所有可用的编程器.
+
+
+
+
+
+
+
List Available
列出可用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Extra arguments that will be passed to AVRDUDE on every call
每次调用时将会把更多的参数将会传到给AVRDUDE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Extra arguments used in AVRDUDE.
This can be used for providing extra information to AVRDUDE.
@@ -14144,21 +21088,49 @@ Please only use this if you know what you are doing. There are no error checks
+
+
+
+
+
+
+
Extra Arguments
更多参数
+
+
+
+
+
+
+
Show AVRDUDE help
显示AVRDUDE帮助
+
+
+
+
+
+
+
Show Help
显示帮助
+
+
+
+
+
+
+
Communication port to the programmer.
编程器通讯端口.
@@ -14167,28 +21139,84 @@ Please only use this if you know what you are doing. There are no error checks
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Port
端口
+
+
+
+
+
+
+
AVRDUDE Location
AVRDUDE 位置
+
+
+
+
+
+
+
MCU
MCU
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CPU of your TX
你的遥控器所用CPU
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CPU present on your 9x radio
Should be m64 for stock radios
m2560 for v4.1 boards
@@ -14198,31 +21226,73 @@ v4.1版电路板应为m2560
+
+
+
+
+
+
+
at91sam3s8-9xr
at91sam3s8-9xr
+
+
+
+
+
+
+
SAM-BA Location
SAM-BA 位置
+
+
+
+
+
+
+
ARM MCU
ARM MCU
+
+
+
+
+
+
+
sam-ba serial port
sam-ba 串口
+
+
+
+
+
+
+
Alternate device
其他设备
+
+
+
+
+
+
+
Use advanced controls
使用高级控制项
@@ -14268,85 +21338,197 @@ v4.1版电路板应为m2560
joystickDialog
-
+
+
+
+
+
+
+
+
+
Configure Joystick
配置游戏杆
-
+
+
+
+
+
+
+
+
+
Ch2
游戏杆通道2
-
+
+
+
+
+
+
+
+
+
Ch1
游戏杆通道1
-
+
+
+
+
+
+
+
+
+
Ch4
游戏杆通道4
-
+
+
+
+
+
+
+
+
+
Ch6
游戏杆通道6
-
+
+
+
+
+
+
+
+
+
Ch3
游戏杆通道3
-
+
+
+
+
+
+
+
+
+
Ch5
游戏杆通道5
-
+
+
+
+
+
+
+
+
+
Ch7
游戏杆通道7
-
+
+
+
+
+
+
+
+
+
Ch8
游戏杆通道8
-
+
+
+
+
+
+
+
+
+
Instructions
指令
-
+
+
+
+
+
+
+
+
+
Enable
-
+
+
+
+
+
+
+
+
+
Cancel
取消
-
+
+
+
+
+
+
+
+
+
Back
-
+
+
+
+
+
+
+
+
+
Start
开始通道 [CH]
@@ -14357,7 +21539,15 @@ v4.1版电路板应为m2560
-
+
+
+
+
+
+
+
+
+
Ok
确定
diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt
index 84591767f..d7a5397c4 100644
--- a/radio/src/CMakeLists.txt
+++ b/radio/src/CMakeLists.txt
@@ -2,7 +2,7 @@ include(CMakeForceCompiler)
include(Bitmaps)
set(PCB_TYPES X9LITE X7 XLITE XLITES X9D X9D+ X9E X10 X12S SKY9X 9XRPRO AR9X NV14)
-set(GUI_LANGUAGES CZ DE EN ES FR IT PT SK SE PL HU NL)
+set(GUI_LANGUAGES CZ DE EN ES FR IT PT SK SE PL HU NL CN)
set(TTS_LANGUAGES CZ DE EN ES FR IT PT SK SE PL HU NL RU)
set(PCB "X9D+" CACHE STRING "Radio type, one of: ${PCB_TYPES}")
@@ -247,7 +247,7 @@ endif()
if(SDCARD)
add_definitions(-DSDCARD)
include_directories(${FATFS_DIR} ${FATFS_DIR}/option)
- set(SRC ${SRC} sdcard.cpp rtc.cpp logs.cpp)
+ set(SRC ${SRC} sdcard.cpp rtc.cpp logs.cpp thirdparty/libopenui/src/libopenui_file.cpp)
set(FIRMWARE_SRC ${FIRMWARE_SRC} ${FATFS_SRC})
endif()
diff --git a/radio/src/audio.cpp b/radio/src/audio.cpp
index caa15119d..7403d52b9 100644
--- a/radio/src/audio.cpp
+++ b/radio/src/audio.cpp
@@ -1261,3 +1261,13 @@ void pushPrompt(uint16_t prompt, uint8_t id)
audioQueue.playFile(filename, 0, id);
#endif
}
+
+void onKeyPress()
+{
+ audioKeyPress();
+}
+
+void onKeyError()
+{
+ audioKeyError();
+}
\ No newline at end of file
diff --git a/radio/src/bitfield.h b/radio/src/bitfield.h
deleted file mode 100644
index a0c753e0f..000000000
--- a/radio/src/bitfield.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * This file is based on work published at http://www.coranac.com/documents/working-with-bits-and-bitfields
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef BITFIELD_H
-#define BITFIELD_H
-
-#include
-
-// A set of bitfield handling macros
-
-template
-inline T bfBit(uint8_t n)
-{
- return T(1) << n;
-}
-
-#define BFBIT_SET(y, mask) ( y |= (mask) )
-#define BFBIT_CLEAR(y, mask) ( y &= ~(mask) )
-#define BFBIT_FLIP(y, mask) ( y ^= (mask) )
-#define BF_SINGLE_BIT_SET(y, i) BFBIT_SET(y, bfBit(i))
-
-//! Create a bitmask of length 'len'.
-template
-inline T bfBitmask(uint8_t len)
-{
- return bfBit(len) - 1;
-}
-
-//! Create a bitfield mask of length 'len' starting at bit 'start'.
-template
-inline T bfMask(uint8_t start, uint8_t len)
-{
- return bfBitmask(len) << start;
-}
-
-//! Prepare a bitmask for insertion or combining.
-template
-inline T bfPrep(T x, uint8_t start, uint8_t len)
-{
- return (x & bfBitmask(len)) << start;
-}
-
-//! Extract a bitfield of length 'len' starting at bit 'start' from 'y'.
-template
-inline T bfGet(T y, uint8_t start, uint8_t len)
-{
- return ((y)>>(start)) & bfBitmask(len);
-}
-
-//! Insert 'len' bits of 'x 'into 'y', starting at bit 'start' from 'y'.
-template
-inline T bfSet(T to, T from, uint8_t start, uint8_t len)
-{
- return (to & ~bfMask(start, len)) | bfPrep(from, start, len);
-}
-
-template
-inline T bfBitGet(T y, T mask)
-{
- return (y & mask);
-}
-
-template
-inline T bfSingleBitGet(T y, uint8_t i)
-{
- return bfBitGet(y, bfBit(i));
-}
-
-#endif //BITFIELD_H
diff --git a/radio/src/datastructs.h b/radio/src/datastructs.h
index cf4c5dcab..c5c3458b5 100644
--- a/radio/src/datastructs.h
+++ b/radio/src/datastructs.h
@@ -25,7 +25,6 @@
#include "board.h"
#include "dataconstants.h"
#include "definitions.h"
-#include "bitfield.h"
#if defined(PCBTARANIS)
#define N_TARANIS_FIELD(x)
@@ -55,12 +54,6 @@
#define NOBACKUP(...) __VA_ARGS__
#endif
-#if defined(PCBFRSKY)
-typedef uint16_t source_t;
-#else
-typedef uint8_t source_t;
-#endif
-
/*
* Mixer structure
*/
@@ -183,8 +176,6 @@ PACK(struct trim_t {
uint16_t mode:5;
});
-typedef int16_t gvar_t;
-
PACK(struct FlightModeData {
trim_t trim[NUM_TRIMS];
NOBACKUP(char name[LEN_FLIGHT_MODE_NAME]);
@@ -725,7 +716,7 @@ PACK(struct TrainerData {
#define THEME_NAME_LEN 8
#define THEME_DATA \
NOBACKUP(char themeName[THEME_NAME_LEN]); \
- NOBACKUP(Theme::PersistentData themeData);
+ NOBACKUP(ThemeBase::PersistentData themeData);
#else
#define THEME_DATA
#endif
diff --git a/radio/src/fonts/truetype/CMakeLists.txt b/radio/src/fonts/truetype/CMakeLists.txt
index ee4809c66..fbe50a3dc 100644
--- a/radio/src/fonts/truetype/CMakeLists.txt
+++ b/radio/src/fonts/truetype/CMakeLists.txt
@@ -1,6 +1,9 @@
set(FONT "Roboto/Roboto-Regular")
set(FONT_BOLD "Roboto/Roboto-Bold")
set(FONT_OFFSET 1)
+set(CN_FONT "Noto/NotoSansCJKsc-Regular")
+set(CN_FONT_BOLD "Noto/NotoSansCJKsc-Bold")
+set(CN_FONT_OFFSET -3)
#set(FONT "Kanit/Kanit-Regular")
#set(FONT_BOLD "Kanit/Kanit-Bold")
@@ -10,15 +13,17 @@ set(FONT_OFFSET 1)
#set(FONT_BOLD "Ubuntu/Ubuntu-Bold")
#set(FONT_OFFSET 1)
-add_truetype_font_target(9 ${FONT} 9 ${FONT_OFFSET})
-add_truetype_font_target(13 ${FONT} 13 ${FONT_OFFSET})
-add_truetype_font_target(15 ${FONT} 15 ${FONT_OFFSET})
-add_truetype_font_target(16 ${FONT} 16 ${FONT_OFFSET})
-add_truetype_font_target(bold16 ${FONT_BOLD} 16 ${FONT_OFFSET})
-add_truetype_font_target(17 ${FONT} 17 ${FONT_OFFSET})
-add_truetype_font_target(bold17 ${FONT_BOLD} 17 ${FONT_OFFSET})
-add_truetype_font_target(24 ${FONT} 24 ${FONT_OFFSET})
-add_truetype_font_target(32 ${FONT_BOLD} 32 ${FONT_OFFSET})
-add_truetype_font_target(64 ${FONT_BOLD} 64 ${FONT_OFFSET})
+add_truetype_font_target(9 9 "all" ${FONT} ${FONT_OFFSET} ${CN_FONT} ${CN_FONT_OFFSET})
+add_truetype_font_target(13 13 "all" ${FONT} ${FONT_OFFSET} ${CN_FONT} ${CN_FONT_OFFSET})
+add_truetype_font_target(15 15 "all" ${FONT} ${FONT_OFFSET} ${CN_FONT} ${CN_FONT_OFFSET})
+add_truetype_font_target(16 16 "all" ${FONT} ${FONT_OFFSET} ${CN_FONT} ${CN_FONT_OFFSET})
+add_truetype_font_target(16en 16 "en" ${FONT} ${FONT_OFFSET} ${CN_FONT} ${CN_FONT_OFFSET})
+add_truetype_font_target(bold16 16 "all" ${FONT_BOLD} ${FONT_OFFSET} ${CN_FONT_BOLD} ${CN_FONT_OFFSET})
+add_truetype_font_target(17 17 "all" ${FONT} ${FONT_OFFSET} ${CN_FONT} ${CN_FONT_OFFSET})
+add_truetype_font_target(17en 17 "en" ${FONT} ${FONT_OFFSET} ${CN_FONT} ${CN_FONT_OFFSET})
+add_truetype_font_target(bold17 17 "all" ${FONT_BOLD} ${FONT_OFFSET} ${CN_FONT_BOLD} ${CN_FONT_OFFSET})
+add_truetype_font_target(24 24 "all" ${FONT} ${FONT_OFFSET} ${CN_FONT} ${CN_FONT_OFFSET})
+add_truetype_font_target(32 32 "all" ${FONT_BOLD} ${FONT_OFFSET} ${CN_FONT_BOLD} ${CN_FONT_OFFSET})
+add_truetype_font_target(64 64 "all" ${FONT_BOLD} ${FONT_OFFSET} ${CN_FONT_BOLD} ${CN_FONT_OFFSET})
add_custom_target(truetype_fonts DEPENDS ${truetype_fonts_targets})
diff --git a/radio/src/fonts/truetype/font_13.png b/radio/src/fonts/truetype/font_13.png
index 13a7d3015..220e1b160 100644
Binary files a/radio/src/fonts/truetype/font_13.png and b/radio/src/fonts/truetype/font_13.png differ
diff --git a/radio/src/fonts/truetype/font_13.specs b/radio/src/fonts/truetype/font_13.specs
index 13f28e0a0..15cd8bd98 100644
--- a/radio/src/fonts/truetype/font_13.specs
+++ b/radio/src/fonts/truetype/font_13.specs
@@ -1 +1 @@
-17,0,4,9,15,24,33,44,54,58,64,70,77,86,90,95,100,107,116,125,134,143,152,161,170,179,188,197,202,206,214,223,231,239,245,255,265,275,285,294,303,313,324,329,338,348,356,369,380,390,400,410,419,428,437,447,457,470,480,489,498,503,510,515,522,529,535,544,553,561,570,578,584,593,602,607,613,621,626,639,648,657,666,675,681,689,695,704,712,723,731,739,747,757,762,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,778,786,795,801,809,819,828,838,847,857,866,875,883,891,899,905,913,921,930,935,943,952,961,970,979,989,995,1004,1013,1023,1032,1041,1050,1060,1065,1074,1085,1095,1105,1115,1125,1134,1145,1154,1163,1172,1181,1191,1201,1211,1220,1229,1238,1246,1254,1259,1268,1277,1285,1293,1301,1311,1321,1330,1338,1349,1359,1368,1377,1386,1395,1404,1413,1423,1433,1443
\ No newline at end of file
+17,0,5,14,23,34,44,48,54,60,67,76,80,85,90,97,106,115,124,133,142,151,160,169,178,187,192,196,204,213,221,229,235,245,255,265,275,284,293,303,314,319,328,338,346,359,370,380,390,400,409,418,427,437,447,460,470,479,488,493,500,505,512,519,525,534,543,551,560,568,574,583,592,597,603,611,616,629,638,647,656,665,671,679,685,694,702,713,721,729,737,747,752,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,768,776,785,791,799,809,818,828,837,847,856,865,873,881,889,895,903,911,920,925,934,943,952,961,971,977,986,995,1005,1014,1023,1032,1042,1047,1056,1067,1077,1087,1097,1107,1116,1127,1136,1145,1155,1164,1173,1181,1189,1194,1203,1211,1219,1227,1237,1247,1256,1264,1275,1284,1293,1302,1312,1321,1331,1340,1350,1360,1369,1377,1387,1396,1406,1415,1429,1443,1457,1471,1485,1499,1513,1527,1541,1555,1569,1583,1597,1611,1625,1639,1653,1667,1681,1695,1709,1723,1737,1751,1765,1779,1793,1807,1821,1835,1849,1863,1877,1891,1905,1919,1933,1947,1961,1975,1989,2003,2017,2031,2045,2059,2073,2087,2101,2115,2129,2143,2157,2171,2185,2199,2213,2227,2241,2255,2269,2283,2297,2311,2325,2339,2353,2367,2381,2395,2409,2423,2437,2451,2465,2479,2493,2507,2521,2535,2549,2563,2577,2591,2605,2619,2633,2647,2661,2675,2689,2703,2717,2731,2745,2759,2773,2787,2801,2815,2829,2843,2857,2871,2885,2899,2913,2927,2941,2955,2969,2983,2997,3011,3025,3039,3053,3067,3081,3095,3109,3123,3137,3151,3165,3179,3193,3207,3221,3235,3249,3263,3277,3291,3305,3319,3333,3347,3361,3375,3389,3403,3417,3431,3445,3459,3473,3487,3501,3515,3529,3543,3557,3571,3585,3599,3613,3627,3641,3655,3669,3683,3697,3711,3725,3739,3753,3767,3781,3795,3809,3823,3837,3851,3865,3879,3893,3907,3921
\ No newline at end of file
diff --git a/radio/src/fonts/truetype/font_15.png b/radio/src/fonts/truetype/font_15.png
index 6c904c941..67d6128af 100644
Binary files a/radio/src/fonts/truetype/font_15.png and b/radio/src/fonts/truetype/font_15.png differ
diff --git a/radio/src/fonts/truetype/font_15.specs b/radio/src/fonts/truetype/font_15.specs
index 662f43195..a6063ad69 100644
--- a/radio/src/fonts/truetype/font_15.specs
+++ b/radio/src/fonts/truetype/font_15.specs
@@ -1 +1 @@
-19,0,4,9,15,26,36,48,59,63,70,77,85,95,99,105,110,118,128,138,148,158,168,178,188,198,208,218,223,228,237,247,256,265,272,283,294,305,316,326,336,348,360,366,376,387,397,412,424,436,447,459,470,480,490,501,512,527,538,549,559,564,572,577,585,593,599,609,619,628,638,647,654,664,674,679,685,694,699,714,724,734,744,754,761,770,776,786,795,808,817,826,835,847,852,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,870,879,889,896,905,916,926,938,948,959,969,979,988,997,1006,1013,1022,1031,1041,1047,1056,1066,1076,1086,1096,1107,1114,1124,1134,1145,1156,1166,1177,1188,1194,1204,1216,1228,1239,1250,1261,1271,1283,1293,1303,1313,1323,1334,1345,1357,1367,1377,1387,1396,1405,1411,1421,1431,1440,1449,1458,1469,1480,1490,1500,1512,1524,1534,1544,1554,1564,1574,1584,1595,1606,1618
\ No newline at end of file
+19,0,5,16,26,38,49,53,60,67,75,85,89,95,100,108,118,128,138,148,158,168,178,188,198,208,213,218,227,237,246,255,262,273,284,295,306,316,326,338,350,356,366,377,387,402,414,426,437,449,460,470,480,491,502,517,528,539,549,554,562,567,575,583,589,599,609,618,628,637,644,654,664,669,675,684,689,704,714,724,734,744,751,760,766,776,785,798,807,816,825,837,842,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,860,869,879,886,895,906,916,928,938,949,959,969,978,987,996,1003,1012,1021,1031,1037,1047,1057,1067,1077,1088,1095,1105,1115,1126,1137,1147,1158,1169,1175,1185,1197,1209,1220,1231,1242,1252,1264,1274,1284,1295,1305,1315,1324,1333,1339,1349,1358,1367,1376,1387,1398,1408,1418,1430,1440,1450,1460,1471,1481,1492,1502,1513,1524,1534,1543,1555,1565,1577,1587,1603,1619,1635,1651,1667,1683,1699,1715,1731,1747,1763,1779,1795,1811,1827,1843,1859,1875,1891,1907,1923,1939,1955,1971,1987,2003,2019,2035,2051,2067,2083,2099,2115,2131,2147,2163,2179,2195,2211,2227,2243,2259,2275,2291,2307,2323,2339,2355,2371,2387,2403,2419,2435,2451,2467,2483,2499,2515,2531,2547,2563,2579,2595,2611,2627,2643,2659,2675,2691,2707,2723,2739,2755,2771,2787,2803,2819,2835,2851,2867,2883,2899,2915,2931,2947,2963,2979,2995,3011,3027,3043,3059,3075,3091,3107,3123,3139,3155,3171,3187,3203,3219,3235,3251,3267,3283,3299,3315,3331,3347,3363,3379,3395,3411,3427,3443,3459,3475,3491,3507,3523,3539,3555,3571,3587,3603,3619,3635,3651,3667,3683,3699,3715,3731,3747,3763,3779,3795,3811,3827,3843,3859,3875,3891,3907,3923,3939,3955,3971,3987,4003,4019,4035,4051,4067,4083,4099,4115,4131,4147,4163,4179,4195,4211,4227,4243,4259,4275,4291,4307,4323,4339,4355,4371,4387,4403,4419,4435,4451
\ No newline at end of file
diff --git a/radio/src/fonts/truetype/font_16.png b/radio/src/fonts/truetype/font_16.png
index a867e6bb9..004f1d3a2 100644
Binary files a/radio/src/fonts/truetype/font_16.png and b/radio/src/fonts/truetype/font_16.png differ
diff --git a/radio/src/fonts/truetype/font_16.specs b/radio/src/fonts/truetype/font_16.specs
index 15dd71f47..3545b87f2 100644
--- a/radio/src/fonts/truetype/font_16.specs
+++ b/radio/src/fonts/truetype/font_16.specs
@@ -1 +1 @@
-20,0,4,10,17,28,38,51,62,66,73,80,88,99,104,110,116,124,134,144,154,164,174,184,194,204,214,224,229,234,244,254,264,273,280,292,303,315,327,338,348,360,373,379,389,401,411,426,439,451,463,475,486,497,508,520,532,548,560,571,582,588,596,602,610,619,625,635,645,655,666,676,683,693,703,708,714,724,729,745,755,766,776,787,794,804,811,821,830,844,853,862,871,883,888,898,911,924,937,950,963,976,989,1002,1015,1030,1045,1060,1075,1090,1105,1120,1135,1150,1165,1180,1195,1205,1215,1225,1232,1242,1254,1264,1276,1287,1299,1309,1320,1330,1340,1350,1357,1366,1375,1385,1391,1401,1411,1422,1432,1442,1454,1461,1472,1483,1495,1506,1517,1528,1540,1546,1557,1570,1582,1594,1606,1618,1629,1642,1652,1662,1672,1683,1695,1707,1719,1729,1739,1749,1759,1769,1775,1785,1796,1806,1815,1824,1836,1848,1859,1869,1882,1894,1905,1916,1927,1937,1947,1958,1970,1982,1994
\ No newline at end of file
+20,0,6,17,27,40,51,55,62,69,77,88,93,99,105,113,123,133,143,153,163,173,183,193,203,213,218,223,233,243,253,262,269,281,292,304,316,327,337,349,362,368,378,390,400,415,428,440,452,464,475,486,497,509,521,537,549,560,571,577,585,591,599,608,614,624,634,644,655,665,672,682,692,697,703,713,718,734,744,755,765,776,783,793,800,810,819,833,842,851,860,872,877,887,900,913,926,939,952,965,978,991,1004,1019,1034,1049,1064,1079,1094,1109,1124,1139,1154,1169,1184,1194,1204,1214,1221,1231,1243,1253,1265,1276,1288,1298,1309,1319,1329,1339,1346,1355,1364,1374,1380,1390,1401,1411,1421,1433,1440,1451,1462,1474,1485,1496,1507,1519,1525,1536,1549,1561,1573,1585,1597,1608,1621,1631,1641,1653,1663,1673,1683,1693,1699,1709,1719,1728,1737,1749,1761,1772,1782,1795,1806,1817,1828,1840,1850,1862,1872,1884,1896,1907,1917,1929,1940,1952,1963,1980,1997,2014,2031,2048,2065,2082,2099,2116,2133,2150,2167,2184,2201,2218,2235,2252,2269,2286,2303,2320,2337,2354,2371,2388,2405,2422,2439,2456,2473,2490,2507,2524,2541,2558,2575,2592,2609,2626,2643,2660,2677,2694,2711,2728,2745,2762,2779,2796,2813,2830,2847,2864,2881,2898,2915,2932,2949,2966,2983,3000,3017,3034,3051,3068,3085,3102,3119,3136,3153,3170,3187,3204,3221,3238,3255,3272,3289,3306,3323,3340,3357,3374,3391,3408,3425,3442,3459,3476,3493,3510,3527,3544,3561,3578,3595,3612,3629,3646,3663,3680,3697,3714,3731,3748,3765,3782,3799,3816,3833,3850,3867,3884,3901,3918,3935,3952,3969,3986,4003,4020,4037,4054,4071,4088,4105,4122,4139,4156,4173,4190,4207,4224,4241,4258,4275,4292,4309,4326,4343,4360,4377,4394,4411,4428,4445,4462,4479,4496,4513,4530,4547,4564,4581,4598,4615,4632,4649,4666,4683,4700,4717,4734,4751,4768,4785,4802,4819,4836,4853,4870,4887,4904,4921,4938,4955,4972,4989,5006
\ No newline at end of file
diff --git a/radio/src/fonts/truetype/font_16en.png b/radio/src/fonts/truetype/font_16en.png
new file mode 100644
index 000000000..53f533f46
Binary files /dev/null and b/radio/src/fonts/truetype/font_16en.png differ
diff --git a/radio/src/fonts/truetype/font_16en.specs b/radio/src/fonts/truetype/font_16en.specs
new file mode 100644
index 000000000..c4434ae6e
--- /dev/null
+++ b/radio/src/fonts/truetype/font_16en.specs
@@ -0,0 +1 @@
+20,0,6,17,27,40,51,55,62,69,77,88,93,99,105,113,123,133,143,153,163,173,183,193,203,213,218,223,233,243,253,262,269,281,292,304,316,327,337,349,362,368,378,390,400,415,428,440,452,464,475,486,497,509,521,537,549,560,571,577,585,591,599,608,614,624,634,644,655,665,672,682,692,697,703,713,718,734,744,755,765,776,783,793,800,810,819,833,842,851,860,872,877,887,900,913,926,939,952,965,978,991,1004,1019,1034,1049,1064,1079,1094,1109,1124,1139,1154,1169,1184
\ No newline at end of file
diff --git a/radio/src/fonts/truetype/font_17.png b/radio/src/fonts/truetype/font_17.png
index f04d109d3..0b5571da5 100644
Binary files a/radio/src/fonts/truetype/font_17.png and b/radio/src/fonts/truetype/font_17.png differ
diff --git a/radio/src/fonts/truetype/font_17.specs b/radio/src/fonts/truetype/font_17.specs
index ce5cf396d..217abc7e4 100644
--- a/radio/src/fonts/truetype/font_17.specs
+++ b/radio/src/fonts/truetype/font_17.specs
@@ -1 +1 @@
-21,0,4,10,17,29,40,54,66,70,77,84,93,104,109,115,121,129,140,151,162,173,184,195,206,217,228,239,245,250,260,271,281,291,299,312,324,337,350,361,372,385,399,405,416,428,439,455,469,482,494,507,519,531,543,556,568,585,597,609,621,627,635,641,650,659,666,677,688,698,709,719,726,737,748,754,761,771,777,793,804,815,826,837,844,854,861,872,882,896,906,916,926,939,945,955,968,981,994,1007,1020,1033,1046,1059,1072,1087,1102,1117,1132,1147,1162,1177,1192,1207,1222,1237,1252,1262,1272,1283,1290,1300,1313,1324,1337,1348,1361,1372,1384,1394,1404,1414,1421,1431,1441,1452,1458,1468,1479,1490,1501,1512,1524,1532,1543,1555,1568,1580,1592,1604,1617,1623,1634,1648,1661,1674,1687,1700,1712,1726,1737,1748,1759,1770,1783,1796,1809,1820,1831,1842,1852,1862,1868,1879,1890,1900,1910,1920,1933,1946,1957,1968,1982,1995,2007,2019,2031,2042,2053,2064,2077,2090,2103
\ No newline at end of file
+21,0,6,18,29,43,55,59,66,73,82,93,98,104,110,118,129,140,151,162,173,184,195,206,217,228,234,239,249,260,270,280,288,301,313,326,339,350,361,374,388,394,405,417,428,444,458,471,483,496,508,520,532,545,557,574,586,598,610,616,624,630,639,648,655,666,677,687,698,708,715,726,737,743,750,760,766,782,793,804,815,826,833,843,850,861,871,885,895,905,915,928,934,944,957,970,983,996,1009,1022,1035,1048,1061,1076,1091,1106,1121,1136,1151,1166,1181,1196,1211,1226,1241,1251,1261,1272,1279,1289,1302,1313,1326,1337,1350,1361,1373,1383,1393,1403,1410,1420,1430,1441,1447,1458,1469,1480,1491,1503,1511,1522,1534,1547,1559,1571,1583,1596,1602,1613,1627,1640,1653,1666,1679,1691,1705,1716,1727,1740,1751,1762,1772,1782,1788,1799,1809,1819,1829,1842,1855,1866,1877,1891,1903,1915,1927,1940,1951,1964,1975,1988,2001,2012,2022,2035,2046,2059,2070,2088,2106,2124,2142,2160,2178,2196,2214,2232,2250,2268,2286,2304,2322,2340,2358,2376,2394,2412,2430,2448,2466,2484,2502,2520,2538,2556,2574,2592,2610,2628,2646,2664,2682,2700,2718,2736,2754,2772,2790,2808,2826,2844,2862,2880,2898,2916,2934,2952,2970,2988,3006,3024,3042,3060,3078,3096,3114,3132,3150,3168,3186,3204,3222,3240,3258,3276,3294,3312,3330,3348,3366,3384,3402,3420,3438,3456,3474,3492,3510,3528,3546,3564,3582,3600,3618,3636,3654,3672,3690,3708,3726,3744,3762,3780,3798,3816,3834,3852,3870,3888,3906,3924,3942,3960,3978,3996,4014,4032,4050,4068,4086,4104,4122,4140,4158,4176,4194,4212,4230,4248,4266,4284,4302,4320,4338,4356,4374,4392,4410,4428,4446,4464,4482,4500,4518,4536,4554,4572,4590,4608,4626,4644,4662,4680,4698,4716,4734,4752,4770,4788,4806,4824,4842,4860,4878,4896,4914,4932,4950,4968,4986,5004,5022,5040,5058,5076,5094,5112,5130,5148,5166,5184,5202,5220,5238,5256,5274,5292
\ No newline at end of file
diff --git a/radio/src/fonts/truetype/font_17en.png b/radio/src/fonts/truetype/font_17en.png
new file mode 100644
index 000000000..2cc2fc837
Binary files /dev/null and b/radio/src/fonts/truetype/font_17en.png differ
diff --git a/radio/src/fonts/truetype/font_17en.specs b/radio/src/fonts/truetype/font_17en.specs
new file mode 100644
index 000000000..5e339e5f3
--- /dev/null
+++ b/radio/src/fonts/truetype/font_17en.specs
@@ -0,0 +1 @@
+21,0,6,18,29,43,55,59,66,73,82,93,98,104,110,118,129,140,151,162,173,184,195,206,217,228,234,239,249,260,270,280,288,301,313,326,339,350,361,374,388,394,405,417,428,444,458,471,483,496,508,520,532,545,557,574,586,598,610,616,624,630,639,648,655,666,677,687,698,708,715,726,737,743,750,760,766,782,793,804,815,826,833,843,850,861,871,885,895,905,915,928,934,944,957,970,983,996,1009,1022,1035,1048,1061,1076,1091,1106,1121,1136,1151,1166,1181,1196,1211,1226,1241
\ No newline at end of file
diff --git a/radio/src/fonts/truetype/font_24.png b/radio/src/fonts/truetype/font_24.png
index 2682878d0..6edfa6a29 100644
Binary files a/radio/src/fonts/truetype/font_24.png and b/radio/src/fonts/truetype/font_24.png differ
diff --git a/radio/src/fonts/truetype/font_24.specs b/radio/src/fonts/truetype/font_24.specs
index 7d660a983..d6e8977f8 100644
--- a/radio/src/fonts/truetype/font_24.specs
+++ b/radio/src/fonts/truetype/font_24.specs
@@ -1 +1 @@
-28,0,4,12,21,37,52,71,87,93,103,113,125,140,146,154,162,173,188,203,218,233,248,263,278,293,308,323,330,337,351,366,380,393,403,420,436,453,470,485,500,518,537,545,560,577,591,613,632,650,667,685,701,717,733,750,767,790,807,823,839,847,858,866,878,890,899,914,929,943,958,972,982,997,1012,1019,1027,1041,1048,1071,1086,1101,1116,1131,1141,1155,1164,1179,1192,1212,1225,1238,1251,1269,1276,1290,1290,1290,1290,1290,1290,1290,1290,1290,1290,1290,1290,1290,1290,1290,1290,1290,1290,1290,1290,1290,1290,1304,1318,1333,1342,1356,1373,1388,1406,1421,1438,1453,1469,1483,1497,1511,1521,1534,1547,1562,1570,1584,1599,1614,1629,1644,1661,1671,1686,1702,1719,1735,1751,1767,1784,1792,1807,1826,1844,1861,1878,1895,1911,1930,1945,1960,1975,1990,2007,2024,2042,2057,2072,2087,2101,2115,2123,2138,2153,2167,2180,2193,2210,2227,2242,2256,2275,2293,2309,2325,2341,2356,2371,2386,2403,2420,2438
\ No newline at end of file
+28,0,8,24,39,58,74,80,90,100,112,127,133,141,149,160,175,190,205,220,235,250,265,280,295,310,317,324,338,353,367,380,390,407,423,440,457,472,487,505,524,532,547,564,578,600,619,637,654,672,688,704,720,737,754,777,794,810,826,834,845,853,865,877,886,901,916,930,945,959,969,984,999,1006,1014,1028,1035,1058,1073,1088,1103,1118,1128,1142,1151,1166,1179,1199,1212,1225,1238,1256,1263,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1291,1305,1320,1329,1343,1360,1375,1393,1408,1425,1440,1456,1470,1484,1498,1508,1521,1534,1549,1557,1572,1587,1602,1617,1634,1644,1659,1675,1692,1708,1724,1740,1757,1765,1780,1799,1817,1834,1851,1868,1884,1903,1918,1933,1950,1965,1980,1994,2008,2016,2031,2045,2058,2071,2088,2105,2120,2134,2153,2169,2185,2201,2218,2233,2250,2265,2282,2299,2314,2328,2346,2361,2379,2394,2419,2444,2469,2494,2519,2544,2569,2594,2619,2644,2669,2694,2719,2744,2769,2794,2819,2844,2869,2894,2919,2944,2969,2994,3019,3044,3069,3094,3119,3144,3169,3194,3219,3244,3269,3294,3319,3344,3369,3394,3419,3444,3469,3494,3519,3544,3569,3594,3619,3644,3669,3694,3719,3744,3769,3794,3819,3844,3869,3894,3919,3944,3969,3994,4019,4044,4069,4094,4119,4144,4169,4194,4219,4244,4269,4294,4319,4344,4369,4394,4419,4444,4469,4494,4519,4544,4569,4594,4619,4644,4669,4694,4719,4744,4769,4794,4819,4844,4869,4894,4919,4944,4969,4994,5019,5044,5069,5094,5119,5144,5169,5194,5219,5244,5269,5294,5319,5344,5369,5394,5419,5444,5469,5494,5519,5544,5569,5594,5619,5644,5669,5694,5719,5744,5769,5794,5819,5844,5869,5894,5919,5944,5969,5994,6019,6044,6069,6094,6119,6144,6169,6194,6219,6244,6269,6294,6319,6344,6369,6394,6419,6444,6469,6494,6519,6544,6569,6594,6619,6644,6669,6694,6719,6744,6769,6794,6819,6844,6869
\ No newline at end of file
diff --git a/radio/src/fonts/truetype/font_32.png b/radio/src/fonts/truetype/font_32.png
index 4001c36dc..05e2cac8d 100644
Binary files a/radio/src/fonts/truetype/font_32.png and b/radio/src/fonts/truetype/font_32.png differ
diff --git a/radio/src/fonts/truetype/font_32.specs b/radio/src/fonts/truetype/font_32.specs
index 7eb57e984..cc561b311 100644
--- a/radio/src/fonts/truetype/font_32.specs
+++ b/radio/src/fonts/truetype/font_32.specs
@@ -1 +1 @@
-36,0,4,14,26,47,67,92,114,121,134,147,163,182,191,205,216,230,250,270,290,310,330,350,370,390,410,430,441,451,469,489,507,524,538,561,583,605,627,646,665,688,712,723,742,764,783,813,837,861,883,907,929,950,971,994,1016,1045,1067,1088,1109,1119,1135,1145,1160,1176,1188,1207,1227,1245,1265,1284,1297,1317,1336,1346,1358,1377,1387,1416,1435,1455,1475,1495,1508,1526,1538,1557,1575,1600,1618,1636,1654,1676,1686,1704,1704,1704,1704,1704,1704,1704,1704,1704,1704,1704,1704,1704,1704,1704,1704,1704,1704,1704,1704,1704,1704,1723,1742,1761,1775,1793,1816,1835,1859,1879,1902,1921,1943,1962,1980,1998,2012,2030,2048,2067,2079,2098,2117,2137,2156,2175,2198,2213,2232,2253,2275,2297,2318,2339,2362,2374,2393,2417,2441,2464,2487,2509,2530,2554,2573,2592,2611,2631,2654,2677,2701,2720,2739,2758,2776,2795,2806,2825,2845,2863,2881,2899,2922,2944,2963,2982,3006,3030,3051,3072,3093,3112,3131,3151,3174,3197,3221
\ No newline at end of file
+36,0,10,31,51,76,98,105,118,131,147,166,175,189,200,214,234,254,274,294,314,334,354,374,394,414,425,435,453,473,491,508,522,545,567,589,611,630,649,672,696,707,726,748,767,797,821,845,867,891,913,934,955,978,1000,1029,1051,1072,1093,1103,1119,1129,1144,1160,1172,1191,1211,1229,1249,1268,1281,1301,1320,1330,1342,1361,1371,1400,1419,1439,1459,1479,1492,1510,1522,1541,1559,1584,1602,1620,1638,1660,1670,1688,1688,1688,1688,1688,1688,1688,1688,1688,1688,1688,1688,1688,1688,1688,1688,1688,1688,1688,1688,1688,1688,1707,1726,1745,1759,1777,1800,1819,1843,1863,1886,1905,1927,1946,1964,1982,1996,2014,2032,2051,2063,2082,2102,2121,2140,2163,2178,2197,2218,2240,2262,2283,2304,2327,2339,2358,2382,2406,2429,2452,2474,2495,2519,2538,2557,2580,2599,2618,2636,2655,2666,2685,2703,2721,2739,2762,2784,2803,2822,2846,2867,2888,2909,2932,2951,2974,2993,3016,3038,3057,3076,3100,3120,3144,3164,3197,3230,3263,3296,3329,3362,3395,3428,3461,3494,3527,3560,3593,3626,3659,3692,3725,3758,3791,3824,3857,3890,3923,3956,3989,4022,4055,4088,4121,4154,4187,4220,4253,4286,4319,4352,4385,4418,4451,4484,4517,4550,4583,4616,4649,4682,4715,4748,4781,4814,4847,4880,4913,4946,4979,5012,5045,5078,5111,5144,5177,5210,5243,5276,5309,5342,5375,5408,5441,5474,5507,5540,5573,5606,5639,5672,5705,5738,5771,5804,5837,5870,5903,5936,5969,6002,6035,6068,6101,6134,6167,6200,6233,6266,6299,6332,6365,6398,6431,6464,6497,6530,6563,6596,6629,6662,6695,6728,6761,6794,6827,6860,6893,6926,6959,6992,7025,7058,7091,7124,7157,7190,7223,7256,7289,7322,7355,7388,7421,7454,7487,7520,7553,7586,7619,7652,7685,7718,7751,7784,7817,7850,7883,7916,7949,7982,8015,8048,8081,8114,8147,8180,8213,8246,8279,8312,8345,8378,8411,8444,8477,8510,8543,8576,8609,8642,8675,8708,8741,8774,8807,8840,8873,8906,8939,8972,9005,9038,9071
\ No newline at end of file
diff --git a/radio/src/fonts/truetype/font_64.png b/radio/src/fonts/truetype/font_64.png
index 6e4e12a75..8055127f3 100644
Binary files a/radio/src/fonts/truetype/font_64.png and b/radio/src/fonts/truetype/font_64.png differ
diff --git a/radio/src/fonts/truetype/font_64.specs b/radio/src/fonts/truetype/font_64.specs
index fb72ff6da..b03b35475 100644
--- a/radio/src/fonts/truetype/font_64.specs
+++ b/radio/src/fonts/truetype/font_64.specs
@@ -1 +1 @@
-68,0,4,23,45,85,123,172,215,227,251,275,305,341,358,384,404,430,468,506,544,582,620,658,696,734,772,810,830,848,882,920,955,988,1014,1059,1101,1144,1187,1224,1261,1306,1353,1373,1410,1453,1489,1547,1594,1640,1683,1729,1771,1812,1853,1897,1940,1997,2039,2080,2120,2139,2169,2188,2217,2247,2270,2306,2344,2379,2417,2453,2477,2515,2552,2570,2591,2627,2645,2702,2739,2777,2815,2853,2878,2912,2935,2972,3006,3055,3089,3123,3157,3200,3218,3253,3253,3253,3253,3253,3253,3253,3253,3253,3253,3253,3253,3253,3253,3253,3253,3253,3253,3253,3253,3253,3253,3289,3325,3361,3387,3422,3467,3503,3549,3587,3631,3668,3710,3746,3780,3815,3842,3876,3910,3946,3968,4004,4041,4079,4116,4153,4198,4226,4263,4304,4347,4389,4429,4470,4515,4537,4574,4621,4667,4711,4755,4798,4839,4886,4923,4959,4995,5033,5078,5123,5169,5205,5242,5278,5313,5349,5370,5407,5445,5479,5513,5547,5592,5635,5672,5709,5756,5802,5843,5883,5923,5959,5995,6033,6078,6123,6169
\ No newline at end of file
+68,0,19,59,97,146,189,201,225,249,279,315,332,358,378,404,442,480,518,556,594,632,670,708,746,784,804,822,856,894,929,962,988,1033,1075,1118,1161,1198,1235,1280,1327,1347,1384,1427,1463,1521,1568,1614,1657,1703,1745,1786,1827,1871,1914,1971,2013,2054,2094,2113,2143,2162,2191,2221,2244,2280,2318,2353,2391,2427,2451,2489,2526,2544,2565,2601,2619,2676,2713,2751,2789,2827,2852,2886,2909,2946,2980,3029,3063,3097,3131,3174,3192,3227,3227,3227,3227,3227,3227,3227,3227,3227,3227,3227,3227,3227,3227,3227,3227,3227,3227,3227,3227,3227,3227,3263,3299,3335,3361,3396,3441,3477,3523,3561,3605,3642,3684,3720,3754,3789,3816,3850,3884,3920,3942,3979,4017,4054,4091,4136,4164,4201,4242,4285,4327,4367,4408,4453,4475,4512,4559,4605,4649,4693,4736,4777,4824,4861,4897,4942,4979,5015,5050,5086,5107,5144,5178,5212,5246,5291,5334,5371,5408,5455,5496,5536,5576,5621,5657,5702,5738,5783,5826,5863,5899,5945,5983,6029,6067,6132,6197,6262,6327,6392,6457,6522,6587,6652,6717,6782,6847,6912,6977,7042,7107,7172,7237,7302,7367,7432,7497,7562,7627,7692,7757,7822,7887,7952,8017,8082,8147,8212,8277,8342,8407,8472,8537,8602,8667,8732,8797,8862,8927,8992,9057,9122,9187,9252,9317,9382,9447,9512,9577,9642,9707,9772,9837,9902,9967,10032,10097,10162,10227,10292,10357,10422,10487,10552,10617,10682,10747,10812,10877,10942,11007,11072,11137,11202,11267,11332,11397,11462,11527,11592,11657,11722,11787,11852,11917,11982,12047,12112,12177,12242,12307,12372,12437,12502,12567,12632,12697,12762,12827,12892,12957,13022,13087,13152,13217,13282,13347,13412,13477,13542,13607,13672,13737,13802,13867,13932,13997,14062,14127,14192,14257,14322,14387,14452,14517,14582,14647,14712,14777,14842,14907,14972,15037,15102,15167,15232,15297,15362,15427,15492,15557,15622,15687,15752,15817,15882,15947,16012,16077,16142,16207,16272,16337,16402,16467,16532,16597,16662,16727,16792,16857,16922,16987,17052,17117,17182,17247,17312,17377,17442,17507,17572,17637,17702
\ No newline at end of file
diff --git a/radio/src/fonts/truetype/font_9.png b/radio/src/fonts/truetype/font_9.png
index add3b9eb6..487ddd958 100644
Binary files a/radio/src/fonts/truetype/font_9.png and b/radio/src/fonts/truetype/font_9.png differ
diff --git a/radio/src/fonts/truetype/font_9.specs b/radio/src/fonts/truetype/font_9.specs
index e8dfa6851..9272333e9 100644
--- a/radio/src/fonts/truetype/font_9.specs
+++ b/radio/src/fonts/truetype/font_9.specs
@@ -1 +1 @@
-13,0,4,8,12,19,26,34,41,44,49,54,59,66,69,73,77,82,89,96,103,110,117,124,131,138,145,152,156,159,165,171,177,183,188,195,202,209,216,223,229,237,245,249,255,262,268,277,285,293,300,308,315,322,329,336,343,352,359,366,373,377,382,386,391,397,401,407,414,420,427,433,438,445,451,455,460,466,470,479,485,492,499,506,511,517,521,527,533,541,547,553,559,567,571,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,583,589,595,600,606,613,619,627,634,641,647,654,660,666,672,677,683,689,695,699,705,711,718,724,730,737,742,749,756,763,770,777,784,791,795,802,810,818,825,832,839,846,854,860,866,872,879,886,893,901,907,913,919,925,931,935,941,948,954,960,966,973,980,987,993,1001,1009,1016,1023,1030,1036,1042,1049,1056,1063,1071
\ No newline at end of file
+13,0,4,11,18,26,33,36,41,46,51,58,61,65,69,74,81,88,95,102,109,116,123,130,137,144,148,151,157,163,169,175,180,187,194,201,208,215,221,229,237,241,247,254,260,269,277,285,292,300,307,314,321,328,335,344,351,358,365,369,374,378,383,389,393,399,406,412,419,425,430,437,443,447,452,458,462,471,477,484,491,498,503,509,513,519,525,533,539,545,551,559,563,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,575,581,587,592,598,605,611,619,626,633,639,646,652,658,664,669,675,681,687,691,697,704,710,716,723,728,735,742,749,756,763,770,777,781,788,796,804,811,818,825,832,840,846,852,859,865,871,877,883,887,893,899,905,911,918,925,932,938,946,953,960,967,974,980,987,993,1000,1007,1014,1020,1028,1035,1043,1050,1060,1070,1080,1090,1100,1110,1120,1130,1140,1150,1160,1170,1180,1190,1200,1210,1220,1230,1240,1250,1260,1270,1280,1290,1300,1310,1320,1330,1340,1350,1360,1370,1380,1390,1400,1410,1420,1430,1440,1450,1460,1470,1480,1490,1500,1510,1520,1530,1540,1550,1560,1570,1580,1590,1600,1610,1620,1630,1640,1650,1660,1670,1680,1690,1700,1710,1720,1730,1740,1750,1760,1770,1780,1790,1800,1810,1820,1830,1840,1850,1860,1870,1880,1890,1900,1910,1920,1930,1940,1950,1960,1970,1980,1990,2000,2010,2020,2030,2040,2050,2060,2070,2080,2090,2100,2110,2120,2130,2140,2150,2160,2170,2180,2190,2200,2210,2220,2230,2240,2250,2260,2270,2280,2290,2300,2310,2320,2330,2340,2350,2360,2370,2380,2390,2400,2410,2420,2430,2440,2450,2460,2470,2480,2490,2500,2510,2520,2530,2540,2550,2560,2570,2580,2590,2600,2610,2620,2630,2640,2650,2660,2670,2680,2690,2700,2710,2720,2730,2740,2750,2760,2770,2780,2790,2800,2810,2820,2830,2840
\ No newline at end of file
diff --git a/radio/src/fonts/truetype/font_bold16.png b/radio/src/fonts/truetype/font_bold16.png
index a71570098..3e7df2bab 100644
Binary files a/radio/src/fonts/truetype/font_bold16.png and b/radio/src/fonts/truetype/font_bold16.png differ
diff --git a/radio/src/fonts/truetype/font_bold16.specs b/radio/src/fonts/truetype/font_bold16.specs
index 9e51207e0..0ada56731 100644
--- a/radio/src/fonts/truetype/font_bold16.specs
+++ b/radio/src/fonts/truetype/font_bold16.specs
@@ -1 +1 @@
-20,0,4,10,17,28,39,52,64,68,75,82,91,101,106,114,120,128,139,150,161,172,183,194,205,216,227,238,244,250,260,271,281,290,298,310,322,334,346,356,366,378,391,397,407,419,429,445,458,471,483,496,508,519,530,542,554,569,581,592,603,609,618,624,632,641,648,658,669,679,690,700,707,718,728,734,741,751,757,772,782,793,804,815,822,832,839,849,859,872,882,892,902,914,920,930,943,956,969,982,995,1008,1021,1034,1047,1062,1077,1092,1107,1122,1137,1152,1167,1182,1197,1212,1227,1237,1247,1257,1265,1275,1287,1297,1310,1321,1333,1343,1355,1365,1375,1385,1393,1403,1413,1423,1430,1440,1450,1461,1471,1481,1493,1501,1511,1522,1534,1546,1557,1568,1580,1587,1597,1610,1623,1635,1647,1659,1670,1683,1693,1703,1713,1724,1736,1748,1761,1771,1781,1791,1801,1811,1817,1827,1838,1848,1858,1868,1880,1892,1902,1912,1925,1938,1949,1960,1971,1981,1991,2002,2014,2026,2039
\ No newline at end of file
+20,0,6,17,28,41,53,57,64,71,80,90,95,103,109,117,128,139,150,161,172,183,194,205,216,227,233,239,249,260,270,279,287,299,311,323,335,345,355,367,380,386,396,408,418,434,447,460,472,485,497,508,519,531,543,558,570,581,592,598,607,613,621,630,637,647,658,668,679,689,696,707,717,723,730,740,746,761,771,782,793,804,811,821,828,838,848,861,871,881,891,903,909,919,932,945,958,971,984,997,1010,1023,1036,1051,1066,1081,1096,1111,1126,1141,1156,1171,1186,1201,1216,1226,1236,1246,1254,1264,1276,1286,1299,1310,1322,1332,1344,1354,1364,1374,1382,1392,1402,1412,1419,1429,1440,1450,1460,1472,1480,1490,1501,1513,1525,1536,1547,1559,1566,1576,1589,1602,1614,1626,1638,1649,1662,1672,1682,1694,1704,1714,1724,1734,1740,1750,1760,1770,1780,1792,1804,1814,1824,1837,1848,1859,1870,1882,1892,1904,1914,1926,1938,1948,1958,1971,1982,1995,2006,2023,2040,2057,2074,2091,2108,2125,2142,2159,2176,2193,2210,2227,2244,2261,2278,2295,2312,2329,2346,2363,2380,2397,2414,2431,2448,2465,2482,2499,2516,2533,2550,2567,2584,2601,2618,2635,2652,2669,2686,2703,2720,2737,2754,2771,2788,2805,2822,2839,2856,2873,2890,2907,2924,2941,2958,2975,2992,3009,3026,3043,3060,3077,3094,3111,3128,3145,3162,3179,3196,3213,3230,3247,3264,3281,3298,3315,3332,3349,3366,3383,3400,3417,3434,3451,3468,3485,3502,3519,3536,3553,3570,3587,3604,3621,3638,3655,3672,3689,3706,3723,3740,3757,3774,3791,3808,3825,3842,3859,3876,3893,3910,3927,3944,3961,3978,3995,4012,4029,4046,4063,4080,4097,4114,4131,4148,4165,4182,4199,4216,4233,4250,4267,4284,4301,4318,4335,4352,4369,4386,4403,4420,4437,4454,4471,4488,4505,4522,4539,4556,4573,4590,4607,4624,4641,4658,4675,4692,4709,4726,4743,4760,4777,4794,4811,4828,4845,4862,4879,4896,4913,4930,4947,4964,4981,4998,5015,5032,5049
\ No newline at end of file
diff --git a/radio/src/fonts/truetype/font_bold17.png b/radio/src/fonts/truetype/font_bold17.png
index bcdc2bb0c..a3c831b5b 100644
Binary files a/radio/src/fonts/truetype/font_bold17.png and b/radio/src/fonts/truetype/font_bold17.png differ
diff --git a/radio/src/fonts/truetype/font_bold17.specs b/radio/src/fonts/truetype/font_bold17.specs
index 1a8b4990d..20bff47c6 100644
--- a/radio/src/fonts/truetype/font_bold17.specs
+++ b/radio/src/fonts/truetype/font_bold17.specs
@@ -1 +1 @@
-21,0,4,10,17,29,40,54,67,71,78,85,94,105,111,119,125,134,145,156,167,178,189,200,211,222,233,244,250,256,266,277,287,297,305,318,330,343,356,367,378,391,405,411,422,434,445,461,474,487,499,512,524,536,548,561,574,590,602,614,626,632,641,647,656,665,672,683,694,704,715,726,734,745,756,762,769,780,786,802,813,824,835,846,854,864,871,882,892,906,916,926,936,949,955,965,978,991,1004,1017,1030,1043,1056,1069,1082,1097,1112,1127,1142,1157,1172,1187,1202,1217,1232,1247,1262,1273,1284,1295,1303,1313,1326,1337,1350,1361,1374,1385,1397,1408,1418,1428,1436,1446,1456,1467,1474,1485,1496,1507,1518,1529,1542,1551,1562,1574,1587,1599,1611,1623,1636,1643,1654,1667,1680,1693,1706,1719,1731,1744,1755,1766,1777,1788,1801,1814,1827,1838,1849,1860,1870,1881,1888,1899,1910,1920,1930,1940,1953,1966,1977,1988,2001,2014,2026,2038,2050,2061,2072,2083,2096,2109,2122
\ No newline at end of file
+21,0,6,18,29,43,56,60,67,74,83,94,100,108,114,123,134,145,156,167,178,189,200,211,222,233,239,245,255,266,276,286,294,307,319,332,345,356,367,380,394,400,411,423,434,450,463,476,488,501,513,525,537,550,563,579,591,603,615,621,630,636,645,654,661,672,683,693,704,715,723,734,745,751,758,769,775,791,802,813,824,835,843,853,860,871,881,895,905,915,925,938,944,954,967,980,993,1006,1019,1032,1045,1058,1071,1086,1101,1116,1131,1146,1161,1176,1191,1206,1221,1236,1251,1262,1273,1284,1292,1302,1315,1326,1339,1350,1363,1374,1386,1397,1407,1417,1425,1435,1445,1456,1463,1474,1485,1496,1507,1520,1529,1540,1552,1565,1577,1589,1601,1614,1621,1632,1645,1658,1671,1684,1697,1709,1722,1733,1744,1757,1768,1779,1789,1800,1807,1818,1828,1838,1848,1861,1874,1885,1896,1909,1921,1933,1945,1958,1969,1982,1993,2006,2019,2030,2041,2054,2065,2078,2089,2107,2125,2143,2161,2179,2197,2215,2233,2251,2269,2287,2305,2323,2341,2359,2377,2395,2413,2431,2449,2467,2485,2503,2521,2539,2557,2575,2593,2611,2629,2647,2665,2683,2701,2719,2737,2755,2773,2791,2809,2827,2845,2863,2881,2899,2917,2935,2953,2971,2989,3007,3025,3043,3061,3079,3097,3115,3133,3151,3169,3187,3205,3223,3241,3259,3277,3295,3313,3331,3349,3367,3385,3403,3421,3439,3457,3475,3493,3511,3529,3547,3565,3583,3601,3619,3637,3655,3673,3691,3709,3727,3745,3763,3781,3799,3817,3835,3853,3871,3889,3907,3925,3943,3961,3979,3997,4015,4033,4051,4069,4087,4105,4123,4141,4159,4177,4195,4213,4231,4249,4267,4285,4303,4321,4339,4357,4375,4393,4411,4429,4447,4465,4483,4501,4519,4537,4555,4573,4591,4609,4627,4645,4663,4681,4699,4717,4735,4753,4771,4789,4807,4825,4843,4861,4879,4897,4915,4933,4951,4969,4987,5005,5023,5041,5059,5077,5095,5113,5131,5149,5167,5185,5203,5221,5239,5257,5275,5293,5311
\ No newline at end of file
diff --git a/radio/src/gui/128x64/CMakeLists.txt b/radio/src/gui/128x64/CMakeLists.txt
index 841e17986..eabf0fd51 100644
--- a/radio/src/gui/128x64/CMakeLists.txt
+++ b/radio/src/gui/128x64/CMakeLists.txt
@@ -2,7 +2,6 @@ set(GUI_SRC
${GUI_SRC}
lcd.cpp
splash.cpp
- fonts.cpp
popups.cpp
widgets.cpp
startup_shutdown.cpp
diff --git a/radio/src/gui/128x64/gui.h b/radio/src/gui/128x64/gui.h
index 6a720068a..11e526412 100644
--- a/radio/src/gui/128x64/gui.h
+++ b/radio/src/gui/128x64/gui.h
@@ -187,8 +187,6 @@ choice_t editChoice(coord_t x, coord_t y, const char * label, const char *values
uint8_t editCheckBox(uint8_t value, coord_t x, coord_t y, const char * label, LcdFlags attr, event_t event);
swsrc_t editSwitch(coord_t x, coord_t y, swsrc_t value, LcdFlags attr, event_t event);
-#define ON_OFF_MENU_ITEM(value, x, y, label, attr, event) value = editCheckBox(value, x, y, label, attr, event)
-
#if defined(GVARS)
#define GVAR_MENU_ITEM(x, y, v, min, max, attr, editflags, event) editGVarFieldValue(x, y, v, min, max, attr, editflags, event)
int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int16_t max, LcdFlags attr, uint8_t editflags, event_t event);
diff --git a/radio/src/gui/128x64/lcd.cpp b/radio/src/gui/128x64/lcd.cpp
index 7fd5039b0..938010928 100644
--- a/radio/src/gui/128x64/lcd.cpp
+++ b/radio/src/gui/128x64/lcd.cpp
@@ -19,8 +19,9 @@
*/
#include "opentx.h"
+#include "gui/common/stdlcd/fonts.h"
-display_t displayBuf[DISPLAY_BUFFER_SIZE];
+pixel_t displayBuf[DISPLAY_BUFFER_SIZE];
void lcdClear()
{
@@ -264,12 +265,10 @@ void lcdDrawChar(coord_t x, coord_t y, const unsigned char c, LcdFlags flags)
q = &font_3x5[((uint16_t)c-0x20)*3];
lcdPutPattern(x, y, q, 3, 5, flags);
}
-#if defined(BOLD_FONT)
else if (flags & BOLD) {
q = &font_5x7_B[c_remapped*5];
lcdPutPattern(x, y, q, 5, 7, flags);
}
-#endif
else
#endif
{
@@ -604,7 +603,7 @@ void lcdDrawFilledRect(coord_t x, coord_t y, coord_t w, coord_t h, uint8_t pat,
void drawTelemetryTopBar()
{
- putsModelName(0, 0, g_model.header.name, g_eeGeneral.currModel, 0);
+ drawModelName(0, 0, g_model.header.name, g_eeGeneral.currModel, 0);
uint8_t att = (IS_TXBATT_WARNING() ? BLINK : 0);
putsVBat(14*FW,0,att);
if (g_model.timers[0].mode) {
@@ -776,7 +775,7 @@ void putsChnLetter(coord_t x, coord_t y, uint8_t idx, LcdFlags att)
lcdDrawTextAtIndex(x, y, STR_RETA123, idx-1, att);
}
-void putsModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att)
+void drawModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att)
{
uint8_t len = sizeof(g_model.header.name);
while (len>0 && !name[len-1]) --len;
diff --git a/radio/src/gui/128x64/lcd.h b/radio/src/gui/128x64/lcd.h
index 38b648e00..9d0993676 100644
--- a/radio/src/gui/128x64/lcd.h
+++ b/radio/src/gui/128x64/lcd.h
@@ -23,14 +23,8 @@
#include
-typedef int coord_t;
-struct point_t
-{
- coord_t x;
- coord_t y;
-};
typedef uint32_t LcdFlags;
-typedef uint8_t display_t;
+typedef uint8_t pixel_t;
#define BOX_WIDTH 23
#define CENTER
@@ -48,11 +42,7 @@ typedef uint8_t display_t;
/* lcdDrawText flags */
#define BLINK 0x01
#define INVERS 0x02
-#if defined(BOLD_FONT)
- #define BOLD 0x40
-#else
- #define BOLD 0x00
-#endif
+#define BOLD 0x40
#define LEFT 0x00 /* fake */
#define RIGHT 0x04 /* align right */
#define CENTERED 0x20
@@ -95,7 +85,7 @@ typedef uint8_t display_t;
#define DISPLAY_BUFFER_SIZE (LCD_W*((LCD_H+7)/8))
-extern display_t displayBuf[DISPLAY_BUFFER_SIZE];
+extern pixel_t displayBuf[DISPLAY_BUFFER_SIZE];
extern coord_t lcdLastRightPos;
extern coord_t lcdLastLeftPos;
extern coord_t lcdNextPos;
@@ -127,7 +117,7 @@ void lcdDrawNumber(coord_t x, coord_t y, int val, LcdFlags mode, uint8_t len);
void lcdDrawNumber(coord_t x, coord_t y, int val, LcdFlags mode=0);
void lcdDraw8bitsNumber(coord_t x, coord_t y, int8_t val);
-void putsModelName(coord_t x, coord_t y, char * name, uint8_t id, LcdFlags att);
+void drawModelName(coord_t x, coord_t y, char * name, uint8_t id, LcdFlags att);
#if !defined(BOOT) // TODO not here ...
void drawSwitch(coord_t x, coord_t y, swsrc_t swtch, LcdFlags att=0);
void drawSource(coord_t x, coord_t y, mixsrc_t idx, LcdFlags att=0);
@@ -190,14 +180,14 @@ uint8_t * lcdLoadBitmap(uint8_t * dest, const char * filename, uint8_t width, ui
#define BLINK_ON_PHASE (g_blinkTmr10ms & (1<<6))
#endif
-inline display_t getPixel(uint8_t x, uint8_t y)
+inline pixel_t getPixel(uint8_t x, uint8_t y)
{
if (x>=LCD_W || y>=LCD_H) {
return 0;
}
- display_t pixel = displayBuf[(y / 8) * LCD_W + x];
- display_t mask = 1 << (y & 7);
+ pixel_t pixel = displayBuf[(y / 8) * LCD_W + x];
+ pixel_t mask = 1 << (y & 7);
return ((pixel & mask) ? 0xf : 0);
}
diff --git a/radio/src/gui/128x64/model_flightmodes.cpp b/radio/src/gui/128x64/model_flightmodes.cpp
index c803d9dfc..c0d5f63b3 100644
--- a/radio/src/gui/128x64/model_flightmodes.cpp
+++ b/radio/src/gui/128x64/model_flightmodes.cpp
@@ -247,7 +247,7 @@ void menuModelFlightModesAll(event_t event)
if (menuVerticalOffset != MAX_FLIGHT_MODES-(LCD_LINES-2)) return;
- lcdDrawTextAlignedLeft((LCD_LINES-1)*FH+1, STR_CHECKTRIMS);
+ lcdDrawText(LCD_W/2, (LCD_LINES-1)*FH+1, STR_CHECKTRIMS, CENTERED);
drawFlightMode(OFS_CHECKTRIMS, (LCD_LINES-1)*FH+1, mixerCurrentFlightMode+1);
if (sub==MAX_FLIGHT_MODES && !trimsCheckTimer) {
lcdInvertLastLine();
diff --git a/radio/src/gui/128x64/model_gvars.cpp b/radio/src/gui/128x64/model_gvars.cpp
index 4299469fe..0631b3a20 100644
--- a/radio/src/gui/128x64/model_gvars.cpp
+++ b/radio/src/gui/128x64/model_gvars.cpp
@@ -103,7 +103,7 @@ void menuModelGVarOne(event_t event)
break;
case GVAR_FIELD_POPUP:
- ON_OFF_MENU_ITEM(gvar->popup, GVAR_2ND_COLUMN, y, STR_POPUP, attr, event);
+ gvar->popup = editCheckBox(gvar->popup, GVAR_2ND_COLUMN, y, STR_POPUP, attr, event);
break;
default:
diff --git a/radio/src/gui/128x64/model_select.cpp b/radio/src/gui/128x64/model_select.cpp
index d0184e5ea..19ee6a702 100644
--- a/radio/src/gui/128x64/model_select.cpp
+++ b/radio/src/gui/128x64/model_select.cpp
@@ -307,7 +307,7 @@ void menuModelSelect(event_t event)
k %= MAX_MODELS;
if (eeModelExists(k)) {
- putsModelName(4*FW, y, modelHeaders[k].name, k, 0);
+ drawModelName(4*FW, y, modelHeaders[k].name, k, 0);
if (k==g_eeGeneral.currModel && (s_copyMode!=COPY_MODE || s_copySrcRow<0 || i+menuVerticalOffset!=(vertpos_t)sub)) {
lcdDrawChar(1, y, '*');
}
diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp
index 4cc85a678..1f7f212d5 100644
--- a/radio/src/gui/128x64/model_setup.cpp
+++ b/radio/src/gui/128x64/model_setup.cpp
@@ -372,7 +372,7 @@ void menuModelSetup(event_t event)
#endif
MENU_CHECK(menuTabModel, MENU_MODEL_SETUP, HEADER_LINE + ITEM_MODEL_SETUP_LINES_COUNT);
- title(STR_MENUSETUP);
+ title(STR_MENU_MODEL_SETUP);
if (event == EVT_ENTRY || event == EVT_ENTRY_UP) {
memclear(&reusableBuffer.moduleSetup, sizeof(reusableBuffer.moduleSetup));
@@ -499,11 +499,11 @@ void menuModelSetup(event_t event)
}
case ITEM_MODEL_SETUP_EXTENDED_LIMITS:
- ON_OFF_MENU_ITEM(g_model.extendedLimits, MODEL_SETUP_2ND_COLUMN, y, STR_ELIMITS, attr, event);
+ g_model.extendedLimits = editCheckBox(g_model.extendedLimits, MODEL_SETUP_2ND_COLUMN, y, STR_ELIMITS, attr, event);
break;
case ITEM_MODEL_SETUP_EXTENDED_TRIMS:
- ON_OFF_MENU_ITEM(g_model.extendedTrims, MODEL_SETUP_2ND_COLUMN, y, STR_ETRIMS, menuHorizontalPosition<=0 ? attr : 0, event==EVT_KEY_BREAK(KEY_ENTER) ? event : 0);
+ g_model.extendedTrims = editCheckBox(g_model.extendedTrims, MODEL_SETUP_2ND_COLUMN, y, STR_ETRIMS, menuHorizontalPosition<=0 ? attr : 0, event==EVT_KEY_BREAK(KEY_ENTER) ? event : 0);
lcdDrawText(MODEL_SETUP_2ND_COLUMN+4*FW, y, STR_RESET_BTN, (menuHorizontalPosition>0 && !NO_HIGHLIGHT()) ? attr : 0);
if (attr && menuHorizontalPosition>0) {
s_editMode = 0;
@@ -527,7 +527,7 @@ void menuModelSetup(event_t event)
break;
case ITEM_MODEL_SETUP_THROTTLE_REVERSED:
- ON_OFF_MENU_ITEM(g_model.throttleReversed, MODEL_SETUP_2ND_COLUMN, y, STR_THROTTLEREVERSE, attr, event ) ;
+ g_model.throttleReversed = editCheckBox(g_model.throttleReversed, MODEL_SETUP_2ND_COLUMN, y, STR_THROTTLEREVERSE, attr, event ) ;
break;
case ITEM_MODEL_SETUP_THROTTLE_TRACE:
@@ -544,7 +544,7 @@ void menuModelSetup(event_t event)
}
case ITEM_MODEL_SETUP_THROTTLE_TRIM:
- ON_OFF_MENU_ITEM(g_model.thrTrim, MODEL_SETUP_2ND_COLUMN, y, STR_TTRIM, attr, event);
+ g_model.thrTrim = editCheckBox(g_model.thrTrim, MODEL_SETUP_2ND_COLUMN, y, STR_TTRIM, attr, event);
break;
case ITEM_MODEL_SETUP_PREFLIGHT_LABEL:
@@ -552,11 +552,11 @@ void menuModelSetup(event_t event)
break;
case ITEM_MODEL_SETUP_CHECKLIST_DISPLAY:
- ON_OFF_MENU_ITEM(g_model.displayChecklist, MODEL_SETUP_2ND_COLUMN, y, STR_CHECKLIST, attr, event);
+ g_model.displayChecklist = editCheckBox(g_model.displayChecklist, MODEL_SETUP_2ND_COLUMN, y, STR_CHECKLIST, attr, event);
break;
case ITEM_MODEL_SETUP_THROTTLE_WARNING:
- g_model.disableThrottleWarning = !editCheckBox(!g_model.disableThrottleWarning, MODEL_SETUP_2ND_COLUMN, y, STR_THROTTLEWARNING, attr, event);
+ g_model.disableThrottleWarning = !editCheckBox(!g_model.disableThrottleWarning, MODEL_SETUP_2ND_COLUMN, y, STR_THROTTLE_WARNING, attr, event);
break;
#if defined(PCBTARANIS)
@@ -1455,7 +1455,7 @@ void menuModelSetup(event_t event)
auto & module = g_model.moduleData[moduleIdx];
// Lite FCC / Lite FLEX / Lite Pro Flex
if (isModuleTypeR9MNonAccess(module.type)) {
- lcdDrawTextAlignedLeft(y, STR_RFPOWER);
+ lcdDrawTextAlignedLeft(y, STR_RF_POWER);
if (isModuleR9M_FCC_VARIANT(moduleIdx)) {
// FCC and FLEX modes ...
if (isModuleTypeR9MLiteNonPro(module.type)) { // R9M lite FCC has only one power value, so displayed for info only
diff --git a/radio/src/gui/128x64/model_telemetry.cpp b/radio/src/gui/128x64/model_telemetry.cpp
index 289c73bba..016972a80 100644
--- a/radio/src/gui/128x64/model_telemetry.cpp
+++ b/radio/src/gui/128x64/model_telemetry.cpp
@@ -188,7 +188,7 @@ void menuModelTelemetry(event_t event)
#if defined(REVX)
case ITEM_TELEMETRY_INVERTED_SERIAL:
- ON_OFF_MENU_ITEM(g_model.moduleData[EXTERNAL_MODULE].invertedSerial, TELEM_COL2, y, STR_INVERTED_SERIAL, attr, event);
+ g_model.moduleData[EXTERNAL_MODULE].invertedSerial = editCheckBox(g_model.moduleData[EXTERNAL_MODULE].invertedSerial, TELEM_COL2, y, STR_INVERTED_SERIAL, attr, event);
break;
#endif
@@ -231,7 +231,7 @@ void menuModelTelemetry(event_t event)
break;
case ITEM_TELEMETRY_IGNORE_SENSOR_INSTANCE:
- ON_OFF_MENU_ITEM(g_model.ignoreSensorIds, TELEM_COL2, y, STR_IGNORE_INSTANCE, attr, event);
+ g_model.ignoreSensorIds = editCheckBox(g_model.ignoreSensorIds, TELEM_COL2, y, STR_IGNORE_INSTANCE, attr, event);
break;
case ITEM_TELEMETRY_RSSI_LABEL:
diff --git a/radio/src/gui/128x64/model_telemetry_sensor.cpp b/radio/src/gui/128x64/model_telemetry_sensor.cpp
index f5870f230..d80cd0080 100644
--- a/radio/src/gui/128x64/model_telemetry_sensor.cpp
+++ b/radio/src/gui/128x64/model_telemetry_sensor.cpp
@@ -205,7 +205,7 @@ void menuModelSensor(event_t event)
}
else {
if (sensor->unit == UNIT_RPMS) {
- lcdDrawTextAlignedLeft(y, NO_INDENT(STR_BLADES));
+ lcdDrawTextAlignedLeft(y, STR_BLADES);
if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 1, 30000);
lcdDrawNumber(SENSOR_2ND_COLUMN, y, sensor->custom.ratio, LEFT|attr);
break;
@@ -273,31 +273,30 @@ void menuModelSensor(event_t event)
}
case SENSOR_FIELD_AUTOOFFSET:
- ON_OFF_MENU_ITEM(sensor->autoOffset, SENSOR_2ND_COLUMN, y, STR_AUTOOFFSET, attr, event);
+ sensor->autoOffset = editCheckBox(sensor->autoOffset, SENSOR_2ND_COLUMN, y, STR_AUTOOFFSET, attr, event);
break;
case SENSOR_FIELD_ONLYPOSITIVE:
- ON_OFF_MENU_ITEM(sensor->onlyPositive, SENSOR_2ND_COLUMN, y, STR_ONLYPOSITIVE, attr, event);
+ sensor->onlyPositive = editCheckBox(sensor->onlyPositive, SENSOR_2ND_COLUMN, y, STR_ONLYPOSITIVE, attr, event);
break;
case SENSOR_FIELD_FILTER:
- ON_OFF_MENU_ITEM(sensor->filter, SENSOR_2ND_COLUMN, y, STR_FILTER, attr, event);
+ sensor->filter = editCheckBox(sensor->filter, SENSOR_2ND_COLUMN, y, STR_FILTER, attr, event);
break;
case SENSOR_FIELD_PERSISTENT:
- ON_OFF_MENU_ITEM(sensor->persistent, SENSOR_2ND_COLUMN, y, NO_INDENT(STR_PERSISTENT), attr, event);
+ sensor->persistent = editCheckBox(sensor->persistent, SENSOR_2ND_COLUMN, y, NO_INDENT(STR_PERSISTENT), attr, event);
if (checkIncDec_Ret && !sensor->persistent) {
sensor->persistentValue = 0;
}
break;
case SENSOR_FIELD_LOGS:
- ON_OFF_MENU_ITEM(sensor->logs, SENSOR_2ND_COLUMN, y, STR_LOGS, attr, event);
+ sensor->logs = editCheckBox(sensor->logs, SENSOR_2ND_COLUMN, y, STR_LOGS, attr, event);
if (attr && checkIncDec_Ret) {
logsClose();
}
break;
-
}
}
}
diff --git a/radio/src/gui/128x64/radio_setup.cpp b/radio/src/gui/128x64/radio_setup.cpp
index c083922be..9d4c10c9e 100644
--- a/radio/src/gui/128x64/radio_setup.cpp
+++ b/radio/src/gui/128x64/radio_setup.cpp
@@ -28,10 +28,10 @@ const unsigned char sticks[] = {
#define RADIO_SETUP_2ND_COLUMN 79
-#define SLIDER_5POS(y, value, label, event, attr) { \
+#define SLIDER_5POS(y, value, event, attr) { \
int8_t tmp = value; \
drawSlider(RADIO_SETUP_2ND_COLUMN, y, LCD_W - 2 - RADIO_SETUP_2ND_COLUMN, 2+tmp, 4, attr); \
- value = editChoice(RADIO_SETUP_2ND_COLUMN, y, label, nullptr, tmp, -2, +2, attr, event); \
+ value = editChoice(RADIO_SETUP_2ND_COLUMN, y, nullptr, nullptr, tmp, -2, +2, attr, event); \
}
#if defined(SPLASH)
@@ -134,7 +134,7 @@ void menuRadioSetup(event_t event)
}
#endif
- MENU(STR_MENURADIOSETUP, menuTabGeneral, MENU_RADIO_SETUP, HEADER_LINE+ITEM_RADIO_SETUP_MAX, {
+ MENU(STR_RADIO_SETUP, menuTabGeneral, MENU_RADIO_SETUP, HEADER_LINE+ITEM_RADIO_SETUP_MAX, {
HEADER_LINE_COLUMNS CASE_RTCLOCK(2) CASE_RTCLOCK(2) CASE_BATTGRAPH(1)
LABEL(SOUND), CASE_AUDIO(0)
CASE_BUZZER(0)
@@ -281,7 +281,7 @@ void menuRadioSetup(event_t event)
#if defined(VOICE)
case ITEM_RADIO_SETUP_SPEAKER_VOLUME:
{
- lcdDrawTextAlignedLeft(y, STR_SPEAKER_VOLUME);
+ lcdDrawText(INDENT_WIDTH, y, STR_VOLUME);
uint8_t b = g_eeGeneral.speakerVolume+VOLUME_LEVEL_DEF;
drawSlider(RADIO_SETUP_2ND_COLUMN, y, LCD_W - 2 - RADIO_SETUP_2ND_COLUMN, b, VOLUME_LEVEL_MAX, attr);
if (attr) {
@@ -295,22 +295,28 @@ void menuRadioSetup(event_t event)
#endif
case ITEM_RADIO_SETUP_BEEP_VOLUME:
- SLIDER_5POS(y, g_eeGeneral.beepVolume, STR_BEEP_VOLUME, event, attr);
+ lcdDrawTextAlignedLeft(y, STR_BEEP_VOLUME);
+ SLIDER_5POS(y, g_eeGeneral.beepVolume, event, attr);
break;
+
case ITEM_RADIO_SETUP_WAV_VOLUME:
- SLIDER_5POS(y, g_eeGeneral.wavVolume, STR_WAV_VOLUME, event, attr);
+ lcdDrawTextAlignedLeft(y, STR_WAV_VOLUME);
+ SLIDER_5POS(y, g_eeGeneral.wavVolume, event, attr);
break;
+
case ITEM_RADIO_SETUP_BACKGROUND_VOLUME:
- SLIDER_5POS(y, g_eeGeneral.backgroundVolume, STR_BG_VOLUME, event, attr);
+ lcdDrawTextAlignedLeft(y, STR_BG_VOLUME);
+ SLIDER_5POS(y, g_eeGeneral.backgroundVolume, event, attr);
break;
case ITEM_RADIO_SETUP_BEEP_LENGTH:
- SLIDER_5POS(y, g_eeGeneral.beepLength, STR_BEEP_LENGTH, event, attr);
+ lcdDrawText(INDENT_WIDTH, y, STR_BEEP_LENGTH);
+ SLIDER_5POS(y, g_eeGeneral.beepLength, event, attr);
break;
#if defined(AUDIO)
case ITEM_RADIO_SETUP_SPEAKER_PITCH:
- lcdDrawTextAlignedLeft( y, STR_SPKRPITCH);
+ lcdDrawText(INDENT_WIDTH, y, STR_BEEP_PITCH);
lcdDrawChar(RADIO_SETUP_2ND_COLUMN, y, '+', attr);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN+FW, y, g_eeGeneral.speakerPitch*15, attr|LEFT);
lcdDrawText(lcdLastRightPos, y, "Hz", attr);
@@ -324,23 +330,28 @@ void menuRadioSetup(event_t event)
case ITEM_RADIO_SETUP_VARIO_LABEL:
lcdDrawTextAlignedLeft(y, STR_VARIO);
break;
+
case ITEM_RADIO_SETUP_VARIO_VOLUME:
- SLIDER_5POS(y, g_eeGeneral.varioVolume, TR_SPEAKER_VOLUME, event, attr);
+ lcdDrawText(INDENT_WIDTH, y, STR_VOLUME);
+ SLIDER_5POS(y, g_eeGeneral.varioVolume, event, attr);
break;
+
case ITEM_RADIO_SETUP_VARIO_PITCH:
- lcdDrawTextAlignedLeft(y, STR_PITCH_AT_ZERO);
+ lcdDrawText(INDENT_WIDTH, y, STR_PITCH_AT_ZERO);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, VARIO_FREQUENCY_ZERO+(g_eeGeneral.varioPitch*10), attr|LEFT);
lcdDrawText(lcdLastRightPos, y, "Hz", attr);
if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.varioPitch, -40, 40);
break;
+
case ITEM_RADIO_SETUP_VARIO_RANGE:
- lcdDrawTextAlignedLeft(y, STR_PITCH_AT_MAX);
+ lcdDrawText(INDENT_WIDTH, y, STR_PITCH_AT_MAX);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, VARIO_FREQUENCY_ZERO+(g_eeGeneral.varioPitch*10)+VARIO_FREQUENCY_RANGE+(g_eeGeneral.varioRange*10), attr|LEFT);
lcdDrawText(lcdLastRightPos, y, "Hz", attr);
if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.varioRange, -80, 80);
break;
+
case ITEM_RADIO_SETUP_VARIO_REPEAT:
- lcdDrawTextAlignedLeft(y, STR_REPEAT_AT_ZERO);
+ lcdDrawText(INDENT_WIDTH, y, STR_REPEAT_AT_ZERO);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, VARIO_REPEAT_ZERO+(g_eeGeneral.varioRepeat*10), attr|LEFT);
lcdDrawText(lcdLastRightPos, y, STR_MS, attr);
if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.varioRepeat, -30, 50);
@@ -357,11 +368,13 @@ void menuRadioSetup(event_t event)
break;
case ITEM_RADIO_SETUP_HAPTIC_LENGTH:
- SLIDER_5POS(y, g_eeGeneral.hapticLength, STR_LENGTH, event, attr);
+ lcdDrawText(INDENT_WIDTH, y, STR_LENGTH);
+ SLIDER_5POS(y, g_eeGeneral.hapticLength, event, attr);
break;
case ITEM_RADIO_SETUP_HAPTIC_STRENGTH:
- SLIDER_5POS(y, g_eeGeneral.hapticStrength, STR_HAPTICSTRENGTH, event, attr);
+ lcdDrawText(INDENT_WIDTH, y, STR_STRENGTH);
+ SLIDER_5POS(y, g_eeGeneral.hapticStrength, event, attr);
break;
#endif
@@ -409,29 +422,32 @@ void menuRadioSetup(event_t event)
break;
case ITEM_RADIO_SETUP_BATTERY_WARNING:
- lcdDrawTextAlignedLeft(y, STR_BATTERYWARNING);
+ lcdDrawText(INDENT_WIDTH, y, STR_BATTERYWARNING);
putsVolts(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.vBatWarn, attr|LEFT);
- if(attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.vBatWarn, 40, 120); //4-12V
+ if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.vBatWarn, 40, 120); //4-12V
break;
case ITEM_RADIO_SETUP_MEMORY_WARNING:
{
- uint8_t b = 1-g_eeGeneral.disableMemoryWarning;
- g_eeGeneral.disableMemoryWarning = 1 - editCheckBox(b, RADIO_SETUP_2ND_COLUMN, y, STR_MEMORYWARNING, attr, event);
+ lcdDrawText(INDENT_WIDTH, y, STR_MEMORYWARNING);
+ uint8_t b = 1 - g_eeGeneral.disableMemoryWarning;
+ g_eeGeneral.disableMemoryWarning = 1 - editCheckBox(b, RADIO_SETUP_2ND_COLUMN, y, nullptr, attr, event);
break;
}
case ITEM_RADIO_SETUP_ALARM_WARNING:
{
+ lcdDrawText(INDENT_WIDTH, y, STR_ALARMWARNING);
uint8_t b = 1 - g_eeGeneral.disableAlarmWarning;
- g_eeGeneral.disableAlarmWarning = 1 - editCheckBox(b, RADIO_SETUP_2ND_COLUMN, y, STR_ALARMWARNING, attr, event);
+ g_eeGeneral.disableAlarmWarning = 1 - editCheckBox(b, RADIO_SETUP_2ND_COLUMN, y, nullptr, attr, event);
break;
}
case ITEM_RADIO_SETUP_RSSI_POWEROFF_ALARM:
{
+ lcdDrawText(INDENT_WIDTH, y, STR_RSSI_SHUTDOWN_ALARM);
uint8_t b = 1 - g_eeGeneral.disableRssiPoweroffAlarm;
- g_eeGeneral.disableRssiPoweroffAlarm = 1 - editCheckBox(b, RADIO_SETUP_2ND_COLUMN, y, STR_RSSISHUTDOWNALARM, attr, event);
+ g_eeGeneral.disableRssiPoweroffAlarm = 1 - editCheckBox(b, RADIO_SETUP_2ND_COLUMN, y, nullptr, attr, event);
break;
}
@@ -444,7 +460,7 @@ void menuRadioSetup(event_t event)
#endif
case ITEM_RADIO_SETUP_INACTIVITY_ALARM:
- lcdDrawTextAlignedLeft(y, STR_INACTIVITYALARM);
+ lcdDrawText(INDENT_WIDTH, y, STR_INACTIVITYALARM);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.inactivityTimer, attr|LEFT);
lcdDrawChar(lcdLastRightPos, y, 'm');
if(attr) g_eeGeneral.inactivityTimer = checkIncDec(event, g_eeGeneral.inactivityTimer, 0, 250, EE_GENERAL); //0..250minutes
@@ -455,22 +471,24 @@ void menuRadioSetup(event_t event)
break;
case ITEM_RADIO_SETUP_BACKLIGHT_MODE:
- g_eeGeneral.backlightMode = editChoice(RADIO_SETUP_2ND_COLUMN, y, INDENT TR_MODE, STR_VBLMODE, g_eeGeneral.backlightMode, e_backlight_mode_off, e_backlight_mode_on, attr, event);
+ lcdDrawText(INDENT_WIDTH, y, STR_MODE);
+ g_eeGeneral.backlightMode = editChoice(RADIO_SETUP_2ND_COLUMN, y, nullptr, STR_VBLMODE, g_eeGeneral.backlightMode, e_backlight_mode_off, e_backlight_mode_on, attr, event);
break;
case ITEM_RADIO_SETUP_FLASH_BEEP:
- g_eeGeneral.alarmsFlash = editCheckBox(g_eeGeneral.alarmsFlash, RADIO_SETUP_2ND_COLUMN, y, STR_ALARM, attr, event ) ;
+ lcdDrawText(INDENT_WIDTH, y, STR_ALARM);
+ g_eeGeneral.alarmsFlash = editCheckBox(g_eeGeneral.alarmsFlash, RADIO_SETUP_2ND_COLUMN, y, nullptr, attr, event ) ;
break;
case ITEM_RADIO_SETUP_BACKLIGHT_DELAY:
- lcdDrawTextAlignedLeft(y, STR_BLDELAY);
+ lcdDrawText(INDENT_WIDTH, y, STR_DURATION);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.lightAutoOff*5, attr|LEFT);
lcdDrawChar(lcdLastRightPos, y, 's');
if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.lightAutoOff, 0, 600/5);
break;
case ITEM_RADIO_SETUP_BRIGHTNESS:
- lcdDrawTextAlignedLeft(y, STR_BRIGHTNESS);
+ lcdDrawText(INDENT_WIDTH, y, STR_BRIGHTNESS);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, 100-g_eeGeneral.backlightBright, attr|LEFT) ;
if (attr) {
uint8_t b = 100 - g_eeGeneral.backlightBright;
@@ -481,13 +499,13 @@ void menuRadioSetup(event_t event)
#if defined(PWM_BACKLIGHT)
case ITEM_RADIO_SETUP_BACKLIGHT_BRIGHTNESS_OFF:
- lcdDrawTextAlignedLeft(y, STR_BLOFFBRIGHTNESS);
+ lcdDrawText(INDENT_WIDTH, y, STR_BLOFFBRIGHTNESS);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.blOffBright, attr|LEFT);
if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.blOffBright, 0, 15);
break;
case ITEM_RADIO_SETUP_BACKLIGHT_BRIGHTNESS_ON:
- lcdDrawTextAlignedLeft(y, STR_BLONBRIGHTNESS);
+ lcdDrawText(INDENT_WIDTH, y, STR_BLONBRIGHTNESS);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, 15-g_eeGeneral.blOnBright, attr|LEFT);
if (attr) g_eeGeneral.blOnBright = 15 - checkIncDecGen(event, 15-g_eeGeneral.blOnBright, 0, 15);
break;
@@ -539,22 +557,24 @@ void menuRadioSetup(event_t event)
break;
case ITEM_RADIO_SETUP_ADJUST_RTC:
- g_eeGeneral.adjustRTC = editCheckBox(g_eeGeneral.adjustRTC, RADIO_SETUP_2ND_COLUMN, y, STR_ADJUST_RTC, attr, event);
+ lcdDrawTextAlignedLeft(y, STR_ADJUST_RTC);
+ g_eeGeneral.adjustRTC = editCheckBox(g_eeGeneral.adjustRTC, RADIO_SETUP_2ND_COLUMN, y, nullptr, attr, event);
break;
case ITEM_RADIO_SETUP_GPSFORMAT:
- g_eeGeneral.gpsFormat = editChoice(RADIO_SETUP_2ND_COLUMN, y, STR_GPSCOORD, STR_GPSFORMAT, g_eeGeneral.gpsFormat, 0, 1, attr, event);
+ lcdDrawTextAlignedLeft(y, STR_GPS_COORDS_FORMAT);
+ g_eeGeneral.gpsFormat = editChoice(RADIO_SETUP_2ND_COLUMN, y, nullptr, STR_GPSFORMAT, g_eeGeneral.gpsFormat, 0, 1, attr, event);
break;
#endif
#if defined(PXX1)
case ITEM_RADIO_SETUP_COUNTRYCODE:
- g_eeGeneral.countryCode = editChoice(RADIO_SETUP_2ND_COLUMN, y, STR_COUNTRYCODE, STR_COUNTRYCODES, g_eeGeneral.countryCode, 0, 2, attr, event);
+ g_eeGeneral.countryCode = editChoice(RADIO_SETUP_2ND_COLUMN, y, STR_COUNTRY_CODE, STR_COUNTRY_CODES, g_eeGeneral.countryCode, 0, 2, attr, event);
break;
#endif
case ITEM_RADIO_SETUP_LANGUAGE:
- lcdDrawTextAlignedLeft(y, STR_VOICELANG);
+ lcdDrawTextAlignedLeft(y, STR_VOICE_LANGUAGE);
lcdDrawText(RADIO_SETUP_2ND_COLUMN, y, currentLanguagePack->name, attr);
if (attr) {
currentLanguagePackIdx = checkIncDec(event, currentLanguagePackIdx, 0, DIM(languagePacks)-2, EE_GENERAL);
@@ -566,7 +586,7 @@ void menuRadioSetup(event_t event)
break;
case ITEM_RADIO_SETUP_IMPERIAL:
- g_eeGeneral.imperial = editChoice(RADIO_SETUP_2ND_COLUMN, y, STR_UNITSSYSTEM, STR_VUNITSSYSTEM, g_eeGeneral.imperial, 0, 1, attr, event);
+ g_eeGeneral.imperial = editChoice(RADIO_SETUP_2ND_COLUMN, y, STR_UNITS_SYSTEM, STR_VUNITSSYSTEM, g_eeGeneral.imperial, 0, 1, attr, event);
break;
#if defined(FAI_CHOICE)
@@ -597,7 +617,7 @@ void menuRadioSetup(event_t event)
#if defined(JACK_DETECT_GPIO)
case ITEM_RADIO_SETUP_JACK_MODE:
- g_eeGeneral.jackMode = editChoice(RADIO_SETUP_2ND_COLUMN, y, STR_JACKMODE, STR_JACKMODES, g_eeGeneral.jackMode, JACK_UNSELECTED_MODE, JACK_MAX_MODE, attr, event);
+ g_eeGeneral.jackMode = editChoice(RADIO_SETUP_2ND_COLUMN, y, STR_JACK_MODE, STR_JACK_MODES, g_eeGeneral.jackMode, JACK_UNSELECTED_MODE, JACK_MAX_MODE, attr, event);
break;
#endif
diff --git a/radio/src/gui/128x64/view_main.cpp b/radio/src/gui/128x64/view_main.cpp
index 34c1989d3..5e37e3691 100644
--- a/radio/src/gui/128x64/view_main.cpp
+++ b/radio/src/gui/128x64/view_main.cpp
@@ -403,7 +403,7 @@ void menuMainView(event_t event)
lcdDrawSizedText(PHASE_X, PHASE_Y, g_model.flightModeData[mode].name, sizeof(g_model.flightModeData[mode].name), ZCHAR|PHASE_FLAGS);
// Model Name
- putsModelName(MODELNAME_X, MODELNAME_Y, g_model.header.name, g_eeGeneral.currModel, BIGSIZE);
+ drawModelName(MODELNAME_X, MODELNAME_Y, g_model.header.name, g_eeGeneral.currModel, BIGSIZE);
// Main Voltage (or alarm if any)
displayVoltageOrAlarm();
diff --git a/radio/src/gui/128x64/widgets.cpp b/radio/src/gui/128x64/widgets.cpp
index ef7de1a10..6b4090208 100644
--- a/radio/src/gui/128x64/widgets.cpp
+++ b/radio/src/gui/128x64/widgets.cpp
@@ -72,7 +72,9 @@ void title(const char * s)
choice_t editChoice(coord_t x, coord_t y, const char * label, const char *values, choice_t value, choice_t min, choice_t max, LcdFlags attr, event_t event, IsValueAvailable isValueAvailable)
{
- drawFieldLabel(x, y, label);
+ if (label) {
+ drawFieldLabel(x, y, label);
+ }
if (values) lcdDrawTextAtIndex(x, y, values, value-min, attr);
if (attr & (~RIGHT)) value = checkIncDec(event, value, min, max, (isModelMenuDisplayed()) ? EE_MODEL : EE_GENERAL, isValueAvailable);
return value;
diff --git a/radio/src/gui/212x64/CMakeLists.txt b/radio/src/gui/212x64/CMakeLists.txt
index 841e17986..eabf0fd51 100644
--- a/radio/src/gui/212x64/CMakeLists.txt
+++ b/radio/src/gui/212x64/CMakeLists.txt
@@ -2,7 +2,6 @@ set(GUI_SRC
${GUI_SRC}
lcd.cpp
splash.cpp
- fonts.cpp
popups.cpp
widgets.cpp
startup_shutdown.cpp
diff --git a/radio/src/gui/212x64/fonts.cpp b/radio/src/gui/212x64/fonts.cpp
deleted file mode 100644
index a83d04ae6..000000000
--- a/radio/src/gui/212x64/fonts.cpp
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#include "opentx.h"
-
-const unsigned char font_5x7[] = {
-#include "font_05x07.lbm"
-#if defined(TRANSLATIONS_DE)
-#include "font_de_05x07.lbm"
-#elif defined(TRANSLATIONS_CZ)
-#include "font_cz_05x07.lbm"
-#elif defined(TRANSLATIONS_ES)
-#include "font_es_05x07.lbm"
-#elif defined(TRANSLATIONS_FI)
-#include "font_fi_05x07.lbm"
-#elif defined(TRANSLATIONS_FR)
-#include "font_fr_05x07.lbm"
-#elif defined(TRANSLATIONS_IT)
-#include "font_it_05x07.lbm"
-#elif defined(TRANSLATIONS_PL)
-#include "font_pl_05x07.lbm"
-#elif defined(TRANSLATIONS_PT)
-#include "font_pt_05x07.lbm"
-#elif defined(TRANSLATIONS_SE)
-#include "font_se_05x07.lbm"
-#endif
-};
-
-const unsigned char font_5x7_B[] = {
-#include "font_05x07_B_compressed.lbm"
-};
-
-#if !defined(BOOT)
-const unsigned char font_10x14[] = {
-#include "font_10x14_compressed.lbm"
-#if defined(TRANSLATIONS_DE)
-#include "font_de_10x14.lbm"
-#elif defined(TRANSLATIONS_CZ)
-#include "font_cz_10x14.lbm"
-#elif defined(TRANSLATIONS_ES)
-#include "font_es_10x14.lbm"
-#elif defined(TRANSLATIONS_FI)
-#include "font_fi_10x14.lbm"
-#elif defined(TRANSLATIONS_FR)
-#include "font_fr_10x14.lbm"
-#elif defined(TRANSLATIONS_IT)
-#include "font_it_10x14.lbm"
-#elif defined(TRANSLATIONS_PL)
-#include "font_pl_10x14.lbm"
-#elif defined(TRANSLATIONS_PT)
-#include "font_pt_10x14.lbm"
-#elif defined(TRANSLATIONS_SE)
-#include "font_se_10x14.lbm"
-#endif
-};
-
-const unsigned char font_3x5[] = {
-#include "font_03x05.lbm"
-};
-
-const unsigned char font_4x6[] = {
-#include "font_04x06.lbm"
-#if defined(TRANSLATIONS_DE)
-#include "font_de_04x06.lbm"
-#elif defined(TRANSLATIONS_CZ)
-#include "font_cz_04x06.lbm"
-#elif defined(TRANSLATIONS_ES)
-#include "font_es_04x06.lbm"
-#elif defined(TRANSLATIONS_FI)
-#include "font_fi_04x06.lbm"
-#elif defined(TRANSLATIONS_FR)
-#include "font_fr_04x06.lbm"
-#elif defined(TRANSLATIONS_IT)
-#include "font_it_04x06.lbm"
-#elif defined(TRANSLATIONS_PL)
-#include "font_pl_04x06.lbm"
-#elif defined(TRANSLATIONS_PT)
-#include "font_pt_04x06.lbm"
-#elif defined(TRANSLATIONS_SE)
-#include "font_se_04x06.lbm"
-#endif
-};
-
-const unsigned char font_8x10[] = {
-#include "font_08x10.lbm"
-#if defined(TRANSLATIONS_DE)
-#include "font_de_08x10.lbm"
-#elif defined(TRANSLATIONS_CZ)
-#include "font_cz_08x10.lbm"
-#elif defined(TRANSLATIONS_ES)
-#include "font_es_08x10.lbm"
-#elif defined(TRANSLATIONS_FI)
-#include "font_fi_08x10.lbm"
-#elif defined(TRANSLATIONS_FR)
-#include "font_fr_08x10.lbm"
-#elif defined(TRANSLATIONS_IT)
-#include "font_it_08x10.lbm"
-#elif defined(TRANSLATIONS_PL)
-#include "font_pl_08x10.lbm"
-#elif defined(TRANSLATIONS_PT)
-#include "font_pt_08x10.lbm"
-#elif defined(TRANSLATIONS_SE)
-#include "font_se_08x10.lbm"
-#endif
-};
-
-const unsigned char font_22x38_num[] = {
-#include "font_22x38_num.lbm"
-};
-
-const unsigned char font_4x6_extra[] = {
-#include "font_04x06_extra.lbm"
-};
-
-const unsigned char font_5x7_extra[] = {
-#include "font_05x07_extra.lbm"
-};
-
-const unsigned char font_10x14_extra[] = {
-#include "font_10x14_extra.lbm"
-};
-
-#endif // !defined(BOOT)
diff --git a/radio/src/gui/212x64/gui.h b/radio/src/gui/212x64/gui.h
index 7013ede4b..bf519bf3c 100644
--- a/radio/src/gui/212x64/gui.h
+++ b/radio/src/gui/212x64/gui.h
@@ -213,8 +213,6 @@ choice_t editChoice(coord_t x, coord_t y, const char *label, const char *values,
uint8_t editCheckBox(uint8_t value, coord_t x, coord_t y, const char *label, LcdFlags attr, event_t event);
swsrc_t editSwitch(coord_t x, coord_t y, swsrc_t value, LcdFlags attr, event_t event);
-#define ON_OFF_MENU_ITEM(value, x, y, label, attr, event) value = editCheckBox(value, x, y, label, attr, event)
-
#if defined(GVARS)
void drawGVarValue(coord_t x, coord_t y, uint8_t gvar, gvar_t value, LcdFlags flags=0);
int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int16_t max, LcdFlags attr, uint8_t editflags, event_t event);
diff --git a/radio/src/gui/212x64/lcd.cpp b/radio/src/gui/212x64/lcd.cpp
index 19bb40098..5ec6170bf 100644
--- a/radio/src/gui/212x64/lcd.cpp
+++ b/radio/src/gui/212x64/lcd.cpp
@@ -19,14 +19,14 @@
*/
#include "opentx.h"
-#include "timers.h"
+#include "common/stdlcd/fonts.h"
#if (defined(PCBX9E) || defined(PCBX9DP)) && defined(LCD_DUAL_BUFFER)
- display_t displayBuf1[DISPLAY_BUFFER_SIZE] __DMA;
- display_t displayBuf2[DISPLAY_BUFFER_SIZE] __DMA;
- display_t * displayBuf = displayBuf1;
+ pixel_t displayBuf1[DISPLAY_BUFFER_SIZE] __DMA;
+ pixel_t displayBuf2[DISPLAY_BUFFER_SIZE] __DMA;
+ pixel_t * displayBuf = displayBuf1;
#else
- display_t displayBuf[DISPLAY_BUFFER_SIZE] __DMA;
+ pixel_t displayBuf[DISPLAY_BUFFER_SIZE] __DMA;
#endif
inline bool lcdIsPointOutside(coord_t x, coord_t y)
@@ -36,7 +36,7 @@ inline bool lcdIsPointOutside(coord_t x, coord_t y)
void lcdClear()
{
- memset(displayBuf, 0, DISPLAY_BUFFER_SIZE * sizeof(display_t));
+ memset(displayBuf, 0, DISPLAY_BUFFER_SIZE * sizeof(pixel_t));
}
coord_t lcdLastRightPos;
@@ -505,7 +505,7 @@ void lcdDrawFilledRect(coord_t x, coord_t y, coord_t w, coord_t h, uint8_t pat,
void drawTelemetryTopBar()
{
- putsModelName(0, 0, g_model.header.name, g_eeGeneral.currModel, 0);
+ drawModelName(0, 0, g_model.header.name, g_eeGeneral.currModel, 0);
uint8_t att = (IS_TXBATT_WARNING() ? BLINK : 0);
putsVBat(12*FW, 0, att);
if (g_model.timers[0].mode) {
@@ -581,7 +581,7 @@ void putsVBat(coord_t x, coord_t y, LcdFlags att)
putsVolts(x, y, g_vbat100mV, att);
}
-void putsStickName(coord_t x, coord_t y, uint8_t idx, LcdFlags att)
+void drawStickName(coord_t x, coord_t y, uint8_t idx, LcdFlags att)
{
uint8_t length = STR_VSRCRAW[0];
lcdDrawSizedText(x, y, STR_VSRCRAW+2+length*(idx+1), length-1, att);
@@ -681,7 +681,7 @@ void putsChnLetter(coord_t x, coord_t y, uint8_t idx, LcdFlags att)
lcdDrawTextAtIndex(x, y, STR_RETA123, idx-1, att);
}
-void putsModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att)
+void drawModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att)
{
uint8_t len = sizeof(g_model.header.name);
while (len>0 && !name[len-1]) --len;
diff --git a/radio/src/gui/212x64/lcd.h b/radio/src/gui/212x64/lcd.h
index 7b92acc7e..dc6fc22c4 100644
--- a/radio/src/gui/212x64/lcd.h
+++ b/radio/src/gui/212x64/lcd.h
@@ -21,14 +21,8 @@
#ifndef _LCD_H_
#define _LCD_H_
-typedef int coord_t;
-struct point_t
-{
- coord_t x;
- coord_t y;
-};
typedef uint32_t LcdFlags;
-typedef uint8_t display_t;
+typedef uint8_t pixel_t;
#define BOX_WIDTH 31
#define CENTER "\015"
@@ -92,11 +86,11 @@ typedef uint8_t display_t;
#define DISPLAY_BUFFER_SIZE (LCD_W*LCD_H*4/8)
#if (defined(PCBX9E) || defined(PCBX9DP)) && defined(LCD_DUAL_BUFFER)
- extern display_t displayBuf1[DISPLAY_BUFFER_SIZE];
- extern display_t displayBuf2[DISPLAY_BUFFER_SIZE];
- extern display_t * displayBuf;
+ extern pixel_t displayBuf1[DISPLAY_BUFFER_SIZE];
+ extern pixel_t displayBuf2[DISPLAY_BUFFER_SIZE];
+ extern pixel_t * displayBuf;
#else
- extern display_t displayBuf[DISPLAY_BUFFER_SIZE];
+ extern pixel_t displayBuf[DISPLAY_BUFFER_SIZE];
#endif
extern coord_t lcdLastRightPos;
@@ -122,9 +116,9 @@ void lcdDrawHexNumber(coord_t x, coord_t y, uint32_t val, LcdFlags mode=0);
void lcdDrawNumber(coord_t x, coord_t y, int32_t val, LcdFlags mode, uint8_t len);
void lcdDrawNumber(coord_t x, coord_t y, int32_t val, LcdFlags mode=0);
-void putsModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att);
+void drawModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att);
void drawSwitch(coord_t x, coord_t y, int32_t swtch, LcdFlags att=0);
-void putsStickName(coord_t x, coord_t y, uint8_t idx, LcdFlags att=0);
+void drawStickName(coord_t x, coord_t y, uint8_t idx, LcdFlags att=0);
void drawSource(coord_t x, coord_t y, uint32_t idx, LcdFlags att=0);
void drawCurveName(coord_t x, coord_t y, int8_t idx, LcdFlags att=0);
void drawTimerMode(coord_t x, coord_t y, swsrc_t mode, LcdFlags att=0);
@@ -181,13 +175,13 @@ uint8_t * lcdLoadBitmap(uint8_t * dest, const char * filename, uint16_t width, u
#define BLINK_ON_PHASE (g_blinkTmr10ms & (1<<6))
#endif
-inline display_t getPixel(unsigned int x, unsigned int y)
+inline pixel_t getPixel(unsigned int x, unsigned int y)
{
if (x>=LCD_W || y>=LCD_H) {
return 0;
}
- display_t * p = &displayBuf[y / 2 * LCD_W + x];
+ pixel_t * p = &displayBuf[y / 2 * LCD_W + x];
return (y & 1) ? (*p >> 4) : (*p & 0x0F);
}
diff --git a/radio/src/gui/212x64/model_gvars.cpp b/radio/src/gui/212x64/model_gvars.cpp
index b3b83fcff..7c286a05e 100644
--- a/radio/src/gui/212x64/model_gvars.cpp
+++ b/radio/src/gui/212x64/model_gvars.cpp
@@ -103,7 +103,7 @@ void menuModelGVarOne(event_t event)
break;
case GVAR_FIELD_POPUP:
- ON_OFF_MENU_ITEM(gvar->popup, GVAR_2ND_COLUMN, y, STR_POPUP, attr, event);
+ gvar->popup = editCheckBox(gvar->popup, GVAR_2ND_COLUMN, y, STR_POPUP, attr, event);
break;
default:
diff --git a/radio/src/gui/212x64/model_select.cpp b/radio/src/gui/212x64/model_select.cpp
index 8b396e1b4..2ddc1628f 100644
--- a/radio/src/gui/212x64/model_select.cpp
+++ b/radio/src/gui/212x64/model_select.cpp
@@ -264,7 +264,7 @@ void menuModelSelect(event_t event)
k %= MAX_MODELS;
if (eeModelExists(k)) {
- putsModelName(4*FW, y, modelHeaders[k].name, k, 0);
+ drawModelName(4*FW, y, modelHeaders[k].name, k, 0);
lcdDrawNumber(20*FW, y, eeModelSize(k), RIGHT);
if (k==g_eeGeneral.currModel && (s_copyMode!=COPY_MODE || s_copySrcRow<0 || i+menuVerticalOffset!=(vertpos_t)sub))
lcdDrawChar(1, y, '*');
diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp
index 9c65731bf..b5b148bf6 100644
--- a/radio/src/gui/212x64/model_setup.cpp
+++ b/radio/src/gui/212x64/model_setup.cpp
@@ -382,7 +382,7 @@ void menuModelSetup(event_t event)
});
MENU_CHECK(menuTabModel, MENU_MODEL_SETUP, ITEM_MODEL_SETUP_LINES_COUNT);
- title(STR_MENUSETUP);
+ title(STR_MENU_MODEL_SETUP);
if (event == EVT_ENTRY || event == EVT_ENTRY_UP) {
memclear(&reusableBuffer.moduleSetup, sizeof(reusableBuffer.moduleSetup));
@@ -507,11 +507,11 @@ void menuModelSetup(event_t event)
#endif
case ITEM_MODEL_SETUP_EXTENDED_LIMITS:
- ON_OFF_MENU_ITEM(g_model.extendedLimits, MODEL_SETUP_2ND_COLUMN, y, STR_ELIMITS, attr, event);
+ g_model.extendedLimits = editCheckBox(g_model.extendedLimits, MODEL_SETUP_2ND_COLUMN, y, STR_ELIMITS, attr, event);
break;
case ITEM_MODEL_SETUP_EXTENDED_TRIMS:
- ON_OFF_MENU_ITEM(g_model.extendedTrims, MODEL_SETUP_2ND_COLUMN, y, STR_ETRIMS, menuHorizontalPosition<=0 ? attr : 0, event==EVT_KEY_BREAK(KEY_ENTER) ? event : 0);
+ g_model.extendedTrims = editCheckBox(g_model.extendedTrims, MODEL_SETUP_2ND_COLUMN, y, STR_ETRIMS, menuHorizontalPosition<=0 ? attr : 0, event==EVT_KEY_BREAK(KEY_ENTER) ? event : 0);
lcdDrawText(MODEL_SETUP_2ND_COLUMN+3*FW, y, STR_RESET_BTN, (menuHorizontalPosition>0 && !NO_HIGHLIGHT()) ? attr : 0);
if (attr && menuHorizontalPosition>0) {
s_editMode = 0;
@@ -539,7 +539,7 @@ void menuModelSetup(event_t event)
break;
case ITEM_MODEL_SETUP_THROTTLE_REVERSED:
- ON_OFF_MENU_ITEM(g_model.throttleReversed, MODEL_SETUP_2ND_COLUMN, y, STR_THROTTLEREVERSE, attr, event ) ;
+ g_model.throttleReversed = editCheckBox(g_model.throttleReversed, MODEL_SETUP_2ND_COLUMN, y, STR_THROTTLEREVERSE, attr, event ) ;
break;
case ITEM_MODEL_SETUP_THROTTLE_TRACE:
@@ -556,7 +556,7 @@ void menuModelSetup(event_t event)
}
case ITEM_MODEL_SETUP_THROTTLE_TRIM:
- ON_OFF_MENU_ITEM(g_model.thrTrim, MODEL_SETUP_2ND_COLUMN, y, STR_TTRIM, attr, event);
+ g_model.thrTrim = editCheckBox(g_model.thrTrim, MODEL_SETUP_2ND_COLUMN, y, STR_TTRIM, attr, event);
break;
case ITEM_MODEL_SETUP_PREFLIGHT_LABEL:
@@ -564,11 +564,11 @@ void menuModelSetup(event_t event)
break;
case ITEM_MODEL_SETUP_CHECKLIST_DISPLAY:
- ON_OFF_MENU_ITEM(g_model.displayChecklist, MODEL_SETUP_2ND_COLUMN, y, STR_CHECKLIST, attr, event);
+ g_model.displayChecklist = editCheckBox(g_model.displayChecklist, MODEL_SETUP_2ND_COLUMN, y, STR_CHECKLIST, attr, event);
break;
case ITEM_MODEL_SETUP_THROTTLE_WARNING:
- g_model.disableThrottleWarning = !editCheckBox(!g_model.disableThrottleWarning, MODEL_SETUP_2ND_COLUMN, y, STR_THROTTLEWARNING, attr, event);
+ g_model.disableThrottleWarning = !editCheckBox(!g_model.disableThrottleWarning, MODEL_SETUP_2ND_COLUMN, y, STR_THROTTLE_WARNING, attr, event);
break;
#if defined(PCBX9E)
@@ -1277,7 +1277,7 @@ void menuModelSetup(event_t event)
{
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
if (isModuleR9MNonAccess(moduleIdx)) {
- lcdDrawTextAlignedLeft(y, TR_RFPOWER);
+ lcdDrawTextAlignedLeft(y, TR_RF_POWER);
if (isModuleR9M_FCC_VARIANT(moduleIdx)) {
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_FCC_POWER_VALUES, g_model.moduleData[moduleIdx].pxx.power, LEFT | attr);
if (attr)
diff --git a/radio/src/gui/212x64/model_telemetry.cpp b/radio/src/gui/212x64/model_telemetry.cpp
index ab170895f..019107a52 100644
--- a/radio/src/gui/212x64/model_telemetry.cpp
+++ b/radio/src/gui/212x64/model_telemetry.cpp
@@ -222,7 +222,7 @@ void menuModelTelemetry(event_t event)
break;
case ITEM_TELEMETRY_IGNORE_SENSOR_INSTANCE:
- ON_OFF_MENU_ITEM(g_model.ignoreSensorIds, TELEM_COL2, y, STR_IGNORE_INSTANCE, attr, event);
+ g_model.ignoreSensorIds = editCheckBox(g_model.ignoreSensorIds, TELEM_COL2, y, STR_IGNORE_INSTANCE, attr, event);
break;
case ITEM_TELEMETRY_RSSI_LABEL:
diff --git a/radio/src/gui/212x64/model_telemetry_sensor.cpp b/radio/src/gui/212x64/model_telemetry_sensor.cpp
index 4321f87c3..ac490c6d0 100644
--- a/radio/src/gui/212x64/model_telemetry_sensor.cpp
+++ b/radio/src/gui/212x64/model_telemetry_sensor.cpp
@@ -219,7 +219,7 @@ void menuModelSensor(event_t event)
}
else {
if (sensor->unit == UNIT_RPMS) {
- lcdDrawTextAlignedLeft(y, NO_INDENT(STR_BLADES));
+ lcdDrawTextAlignedLeft(y, STR_BLADES);
if (attr) sensor->custom.ratio = checkIncDec(event, sensor->custom.ratio, 1, 30000, EE_MODEL|NO_INCDEC_MARKS|INCDEC_REP10);
lcdDrawNumber(SENSOR_2ND_COLUMN, y, sensor->custom.ratio, LEFT|attr);
break;
@@ -287,26 +287,26 @@ void menuModelSensor(event_t event)
}
case SENSOR_FIELD_AUTOOFFSET:
- ON_OFF_MENU_ITEM(sensor->autoOffset, SENSOR_2ND_COLUMN, y, STR_AUTOOFFSET, attr, event);
+ sensor->autoOffset = editCheckBox(sensor->autoOffset, SENSOR_2ND_COLUMN, y, STR_AUTOOFFSET, attr, event);
break;
case SENSOR_FIELD_ONLYPOSITIVE:
- ON_OFF_MENU_ITEM(sensor->onlyPositive, SENSOR_2ND_COLUMN, y, STR_ONLYPOSITIVE, attr, event);
+ sensor->onlyPositive = editCheckBox(sensor->onlyPositive, SENSOR_2ND_COLUMN, y, STR_ONLYPOSITIVE, attr, event);
break;
case SENSOR_FIELD_FILTER:
- ON_OFF_MENU_ITEM(sensor->filter, SENSOR_2ND_COLUMN, y, STR_FILTER, attr, event);
+ sensor->filter = editCheckBox(sensor->filter, SENSOR_2ND_COLUMN, y, STR_FILTER, attr, event);
break;
case SENSOR_FIELD_PERSISTENT:
- ON_OFF_MENU_ITEM(sensor->persistent, SENSOR_2ND_COLUMN, y, NO_INDENT(STR_PERSISTENT), attr, event);
+ sensor->persistent = editCheckBox(sensor->persistent, SENSOR_2ND_COLUMN, y, NO_INDENT(STR_PERSISTENT), attr, event);
if (checkIncDec_Ret && !sensor->persistent) {
sensor->persistentValue = 0;
}
break;
case SENSOR_FIELD_LOGS:
- ON_OFF_MENU_ITEM(sensor->logs, SENSOR_2ND_COLUMN, y, STR_LOGS, attr, event);
+ sensor->logs = editCheckBox(sensor->logs, SENSOR_2ND_COLUMN, y, STR_LOGS, attr, event);
if (attr && checkIncDec_Ret) {
logsClose();
}
diff --git a/radio/src/gui/212x64/radio_calibration.cpp b/radio/src/gui/212x64/radio_calibration.cpp
index bf4c829c3..622be6e4e 100644
--- a/radio/src/gui/212x64/radio_calibration.cpp
+++ b/radio/src/gui/212x64/radio_calibration.cpp
@@ -32,7 +32,7 @@ void drawPotsBars()
if (IS_POT_SLIDER_AVAILABLE(i)) {
uint8_t len = ((calibratedAnalogs[i]+RESX)*BAR_HEIGHT/(RESX*2))+1l; // calculate once per loop
V_BAR(x, LCD_H-8, len);
- putsStickName(x-2, LCD_H-6, i, TINSIZE);
+ drawStickName(x-2, LCD_H-6, i, TINSIZE);
}
}
}
diff --git a/radio/src/gui/212x64/radio_setup.cpp b/radio/src/gui/212x64/radio_setup.cpp
index 77ae4768f..efe5e8ea0 100644
--- a/radio/src/gui/212x64/radio_setup.cpp
+++ b/radio/src/gui/212x64/radio_setup.cpp
@@ -30,10 +30,10 @@ const unsigned char sticks[] = {
#define RADIO_SETUP_DATE_COLUMN RADIO_SETUP_2ND_COLUMN + 4*FWNUM
#define RADIO_SETUP_TIME_COLUMN RADIO_SETUP_2ND_COLUMN + 2*FWNUM
-#define SLIDER_5POS(y, value, label, event, attr) { \
+#define SLIDER_5POS(y, value, event, attr) { \
int8_t tmp = value; \
drawSlider(RADIO_SETUP_2ND_COLUMN, y, 2+tmp, 4, attr); \
- value = editChoice(RADIO_SETUP_2ND_COLUMN, y, label, nullptr, tmp, -2, +2, attr, event); \
+ value = editChoice(RADIO_SETUP_2ND_COLUMN, y, nullptr, nullptr, tmp, -2, +2, attr, event); \
}
#if defined(SPLASH)
@@ -121,7 +121,7 @@ void menuRadioSetup(event_t event)
}
#endif
- MENU(STR_MENURADIOSETUP, menuTabGeneral, MENU_RADIO_SETUP, ITEM_RADIO_SETUP_MAX, {
+ MENU(STR_RADIO_SETUP, menuTabGeneral, MENU_RADIO_SETUP, ITEM_RADIO_SETUP_MAX, {
2, // date
2, // time
0, // battery calibration
@@ -279,7 +279,7 @@ void menuRadioSetup(event_t event)
case ITEM_RADIO_SETUP_GENERAL_VOLUME:
{
- lcdDrawTextAlignedLeft(y, STR_SPEAKER_VOLUME);
+ lcdDrawText(INDENT_WIDTH, y, STR_VOLUME);
uint8_t b = g_eeGeneral.speakerVolume+VOLUME_LEVEL_DEF;
drawSlider(RADIO_SETUP_2ND_COLUMN, y, b, VOLUME_LEVEL_MAX, attr);
if (attr) {
@@ -292,23 +292,27 @@ void menuRadioSetup(event_t event)
}
case ITEM_RADIO_SETUP_BEEP_VOLUME:
- SLIDER_5POS(y, g_eeGeneral.beepVolume, STR_BEEP_VOLUME, event, attr);
+ lcdDrawTextAlignedLeft(y, STR_BEEP_VOLUME);
+ SLIDER_5POS(y, g_eeGeneral.beepVolume, event, attr);
break;
case ITEM_RADIO_SETUP_WAV_VOLUME:
- SLIDER_5POS(y, g_eeGeneral.wavVolume, STR_WAV_VOLUME, event, attr);
+ lcdDrawTextAlignedLeft(y, STR_WAV_VOLUME);
+ SLIDER_5POS(y, g_eeGeneral.wavVolume, event, attr);
break;
case ITEM_RADIO_SETUP_BACKGROUND_VOLUME:
- SLIDER_5POS(y, g_eeGeneral.backgroundVolume, STR_BG_VOLUME, event, attr);
+ lcdDrawTextAlignedLeft(y, STR_BG_VOLUME);
+ SLIDER_5POS(y, g_eeGeneral.backgroundVolume, event, attr);
break;
case ITEM_RADIO_SETUP_BEEP_LENGTH:
- SLIDER_5POS(y, g_eeGeneral.beepLength, STR_BEEP_LENGTH, event, attr);
+ lcdDrawText(INDENT_WIDTH, y, STR_BEEP_LENGTH);
+ SLIDER_5POS(y, g_eeGeneral.beepLength, event, attr);
break;
case ITEM_RADIO_SETUP_SPEAKER_PITCH:
- lcdDrawTextAlignedLeft( y, STR_SPKRPITCH);
+ lcdDrawText(INDENT_WIDTH, y, STR_BEEP_PITCH);
lcdDrawChar(RADIO_SETUP_2ND_COLUMN, y, '+', attr);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN+FW, y, g_eeGeneral.speakerPitch*15, attr|LEFT);
lcdDrawText(lcdLastRightPos, y, "Hz", attr);
@@ -323,25 +327,26 @@ void menuRadioSetup(event_t event)
break;
case ITEM_RADIO_SETUP_VARIO_VOLUME:
- SLIDER_5POS(y, g_eeGeneral.varioVolume, TR_SPEAKER_VOLUME, event, attr);
+ lcdDrawText(INDENT_WIDTH, y, STR_VOLUME);
+ SLIDER_5POS(y, g_eeGeneral.varioVolume, event, attr);
break;
case ITEM_RADIO_SETUP_VARIO_PITCH:
- lcdDrawTextAlignedLeft(y, STR_PITCH_AT_ZERO);
+ lcdDrawText(INDENT_WIDTH, y, STR_PITCH_AT_ZERO);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, VARIO_FREQUENCY_ZERO+(g_eeGeneral.varioPitch*10), attr|LEFT);
lcdDrawText(lcdLastRightPos, y, "Hz", attr);
if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.varioPitch, -40, 40);
break;
case ITEM_RADIO_SETUP_VARIO_RANGE:
- lcdDrawTextAlignedLeft(y, STR_PITCH_AT_MAX);
+ lcdDrawText(INDENT_WIDTH, y, STR_PITCH_AT_MAX);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, VARIO_FREQUENCY_ZERO+(g_eeGeneral.varioPitch*10)+VARIO_FREQUENCY_RANGE+(g_eeGeneral.varioRange*10), attr|LEFT);
lcdDrawText(lcdLastRightPos, y, "Hz", attr);
if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.varioRange, -80, 80);
break;
case ITEM_RADIO_SETUP_VARIO_REPEAT:
- lcdDrawTextAlignedLeft(y, STR_REPEAT_AT_ZERO);
+ lcdDrawText(INDENT_WIDTH, y, STR_REPEAT_AT_ZERO);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, VARIO_REPEAT_ZERO+(g_eeGeneral.varioRepeat*10), attr|LEFT);
lcdDrawText(lcdLastRightPos, y, STR_MS, attr);
if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.varioRepeat, -30, 50);
@@ -354,15 +359,18 @@ void menuRadioSetup(event_t event)
break;
case ITEM_RADIO_SETUP_HAPTIC_MODE:
- g_eeGeneral.hapticMode = editChoice(RADIO_SETUP_2ND_COLUMN, y, INDENT TR_MODE, STR_VBEEPMODE, g_eeGeneral.hapticMode, -2, 1, attr, event);
+ lcdDrawText(INDENT_WIDTH, y, STR_MODE);
+ g_eeGeneral.hapticMode = editChoice(RADIO_SETUP_2ND_COLUMN, y, nullptr, STR_VBEEPMODE, g_eeGeneral.hapticMode, -2, 1, attr, event);
break;
case ITEM_RADIO_SETUP_HAPTIC_LENGTH:
- SLIDER_5POS(y, g_eeGeneral.hapticLength, STR_LENGTH, event, attr);
+ lcdDrawText(INDENT_WIDTH, y, STR_LENGTH);
+ SLIDER_5POS(y, g_eeGeneral.hapticLength, event, attr);
break;
case ITEM_RADIO_SETUP_HAPTIC_STRENGTH:
- SLIDER_5POS(y, g_eeGeneral.hapticStrength, STR_HAPTICSTRENGTH, event, attr);
+ lcdDrawText(INDENT_WIDTH, y, STR_STRENGTH);
+ SLIDER_5POS(y, g_eeGeneral.hapticStrength, event, attr);
break;
#endif
@@ -380,34 +388,37 @@ void menuRadioSetup(event_t event)
break;
case ITEM_RADIO_SETUP_BATTERY_WARNING:
- lcdDrawTextAlignedLeft(y, STR_BATTERYWARNING);
+ lcdDrawText(INDENT_WIDTH, y, STR_BATTERYWARNING);
putsVolts(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.vBatWarn, attr|LEFT);
if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.vBatWarn, 40, 120); // 4-12V
break;
case ITEM_RADIO_SETUP_MEMORY_WARNING:
{
+ lcdDrawText(INDENT_WIDTH, y, STR_MEMORYWARNING);
uint8_t b = 1 - g_eeGeneral.disableMemoryWarning;
- g_eeGeneral.disableMemoryWarning = 1 - editCheckBox(b, RADIO_SETUP_2ND_COLUMN, y, STR_MEMORYWARNING, attr, event);
+ g_eeGeneral.disableMemoryWarning = 1 - editCheckBox(b, RADIO_SETUP_2ND_COLUMN, y, nullptr, attr, event);
break;
}
case ITEM_RADIO_SETUP_ALARM_WARNING:
{
+ lcdDrawText(INDENT_WIDTH, y, STR_ALARMWARNING);
uint8_t b = 1 - g_eeGeneral.disableAlarmWarning;
- g_eeGeneral.disableAlarmWarning = 1 - editCheckBox(b, RADIO_SETUP_2ND_COLUMN, y, STR_ALARMWARNING, attr, event);
+ g_eeGeneral.disableAlarmWarning = 1 - editCheckBox(b, RADIO_SETUP_2ND_COLUMN, y, nullptr, attr, event);
break;
}
case ITEM_RADIO_SETUP_RSSI_POWEROFF_ALARM:
{
+ lcdDrawText(INDENT_WIDTH, y, STR_RSSI_SHUTDOWN_ALARM);
uint8_t b = 1 - g_eeGeneral.disableRssiPoweroffAlarm;
- g_eeGeneral.disableRssiPoweroffAlarm = 1 - editCheckBox(b, RADIO_SETUP_2ND_COLUMN, y, STR_RSSISHUTDOWNALARM, attr, event);
+ g_eeGeneral.disableRssiPoweroffAlarm = 1 - editCheckBox(b, RADIO_SETUP_2ND_COLUMN, y, nullptr, attr, event);
break;
}
case ITEM_RADIO_SETUP_INACTIVITY_ALARM:
- lcdDrawTextAlignedLeft(y, STR_INACTIVITYALARM);
+ lcdDrawText(INDENT_WIDTH, y, STR_INACTIVITYALARM);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.inactivityTimer, attr|LEFT);
lcdDrawChar(lcdLastRightPos, y, 'm');
if(attr) g_eeGeneral.inactivityTimer = checkIncDec(event, g_eeGeneral.inactivityTimer, 0, 250, EE_GENERAL); //0..250minutes
@@ -418,11 +429,13 @@ void menuRadioSetup(event_t event)
break;
case ITEM_RADIO_SETUP_BACKLIGHT_MODE:
- g_eeGeneral.backlightMode = editChoice(RADIO_SETUP_2ND_COLUMN, y, INDENT TR_MODE, STR_VBLMODE, g_eeGeneral.backlightMode, e_backlight_mode_off, e_backlight_mode_on, attr, event);
+ lcdDrawText(INDENT_WIDTH, y, STR_MODE);
+ g_eeGeneral.backlightMode = editChoice(RADIO_SETUP_2ND_COLUMN, y, nullptr, STR_VBLMODE, g_eeGeneral.backlightMode, e_backlight_mode_off, e_backlight_mode_on, attr, event);
break;
case ITEM_RADIO_SETUP_FLASH_BEEP:
- g_eeGeneral.alarmsFlash = editCheckBox(g_eeGeneral.alarmsFlash, RADIO_SETUP_2ND_COLUMN, y, STR_ALARM, attr, event ) ;
+ lcdDrawText(INDENT_WIDTH, y, STR_ALARM);
+ g_eeGeneral.alarmsFlash = editCheckBox(g_eeGeneral.alarmsFlash, RADIO_SETUP_2ND_COLUMN, y, nullptr, attr, event ) ;
break;
#if defined(PXX2)
@@ -432,14 +445,14 @@ void menuRadioSetup(event_t event)
#endif
case ITEM_RADIO_SETUP_BACKLIGHT_DELAY:
- lcdDrawTextAlignedLeft(y, STR_BLDELAY);
+ lcdDrawText(INDENT_WIDTH, y, STR_DURATION);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.lightAutoOff*5, attr|LEFT);
lcdDrawChar(lcdLastRightPos, y, 's');
if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.lightAutoOff, 0, 600/5);
break;
case ITEM_RADIO_SETUP_BRIGHTNESS:
- lcdDrawTextAlignedLeft(y, STR_BRIGHTNESS);
+ lcdDrawText(INDENT_WIDTH, y, STR_BRIGHTNESS);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, 100-g_eeGeneral.backlightBright, attr|LEFT) ;
if (attr) {
uint8_t b = 100 - g_eeGeneral.backlightBright;
@@ -450,7 +463,7 @@ void menuRadioSetup(event_t event)
#if defined(PCBX9DP) || defined(PCBX9E)
case ITEM_RADIO_SETUP_BACKLIGHT_COLOR:
- lcdDrawTextAlignedLeft(y, STR_BLCOLOR);
+ lcdDrawText(INDENT_WIDTH, y, STR_BLCOLOR);
drawSlider(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.backlightColor, 20, attr);
if (attr) g_eeGeneral.backlightColor = checkIncDec(event, g_eeGeneral.backlightColor, 0, 20, EE_GENERAL | NO_INCDEC_MARKS);
break;
@@ -492,28 +505,30 @@ void menuRadioSetup(event_t event)
break;
case ITEM_RADIO_SETUP_TIMEZONE:
- lcdDrawTextAlignedLeft(y, STR_TIMEZONE);
+ lcdDrawText(INDENT_WIDTH, y, STR_TIMEZONE);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.timezone, attr|LEFT);
if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.timezone, -12, 12);
break;
case ITEM_RADIO_SETUP_ADJUST_RTC:
- g_eeGeneral.adjustRTC = editCheckBox(g_eeGeneral.adjustRTC, RADIO_SETUP_2ND_COLUMN, y, STR_ADJUST_RTC, attr, event);
+ lcdDrawText(INDENT_WIDTH, y, STR_ADJUST_RTC);
+ g_eeGeneral.adjustRTC = editCheckBox(g_eeGeneral.adjustRTC, RADIO_SETUP_2ND_COLUMN, y, nullptr, attr, event);
break;
case ITEM_RADIO_SETUP_GPSFORMAT:
- g_eeGeneral.gpsFormat = editChoice(RADIO_SETUP_2ND_COLUMN, y, STR_GPSCOORD, STR_GPSFORMAT, g_eeGeneral.gpsFormat, 0, 1, attr, event);
+ lcdDrawText(INDENT_WIDTH, y, STR_GPS_COORDS_FORMAT);
+ g_eeGeneral.gpsFormat = editChoice(RADIO_SETUP_2ND_COLUMN, y, nullptr, STR_GPSFORMAT, g_eeGeneral.gpsFormat, 0, 1, attr, event);
break;
#endif
#if defined(PXX1)
case ITEM_RADIO_SETUP_COUNTRYCODE:
- g_eeGeneral.countryCode = editChoice(RADIO_SETUP_2ND_COLUMN, y, STR_COUNTRYCODE, STR_COUNTRYCODES, g_eeGeneral.countryCode, 0, 2, attr, event);
+ g_eeGeneral.countryCode = editChoice(RADIO_SETUP_2ND_COLUMN, y, STR_COUNTRY_CODE, STR_COUNTRY_CODES, g_eeGeneral.countryCode, 0, 2, attr, event);
break;
#endif
case ITEM_RADIO_SETUP_LANGUAGE:
- lcdDrawTextAlignedLeft(y, STR_VOICELANG);
+ lcdDrawTextAlignedLeft(y, STR_VOICE_LANGUAGE);
lcdDrawText(RADIO_SETUP_2ND_COLUMN, y, currentLanguagePack->name, attr);
if (attr) {
currentLanguagePackIdx = checkIncDec(event, currentLanguagePackIdx, 0, DIM(languagePacks)-2, EE_GENERAL);
@@ -525,7 +540,7 @@ void menuRadioSetup(event_t event)
break;
case ITEM_RADIO_SETUP_IMPERIAL:
- g_eeGeneral.imperial = editChoice(RADIO_SETUP_2ND_COLUMN, y, STR_UNITSSYSTEM, STR_VUNITSSYSTEM, g_eeGeneral.imperial, 0, 1, attr, event);
+ g_eeGeneral.imperial = editChoice(RADIO_SETUP_2ND_COLUMN, y, STR_UNITS_SYSTEM, STR_VUNITSSYSTEM, g_eeGeneral.imperial, 0, 1, attr, event);
break;
#if defined(FAI_CHOICE)
@@ -570,7 +585,7 @@ void menuRadioSetup(event_t event)
case ITEM_RADIO_SETUP_STICK_MODE:
lcdDrawChar(2*FW, y, '1'+reusableBuffer.generalSettings.stickMode, attr);
for (uint8_t i=0; i<4; i++) {
- putsStickName((6+4*i)*FW, y, *(modn12x3 + 4*reusableBuffer.generalSettings.stickMode + i), 0);
+ drawStickName((6+4*i)*FW, y, *(modn12x3 + 4*reusableBuffer.generalSettings.stickMode + i), 0);
}
if (attr && s_editMode>0) {
CHECK_INCDEC_GENVAR(event, reusableBuffer.generalSettings.stickMode, 0, 3);
diff --git a/radio/src/gui/212x64/view_main.cpp b/radio/src/gui/212x64/view_main.cpp
index 0de1bf2cd..8119f0dcf 100644
--- a/radio/src/gui/212x64/view_main.cpp
+++ b/radio/src/gui/212x64/view_main.cpp
@@ -495,7 +495,7 @@ void menuMainView(event_t event)
lcdDrawSizedText(PHASE_X, PHASE_Y, g_model.flightModeData[mode].name, sizeof(g_model.flightModeData[mode].name), ZCHAR|PHASE_FLAGS);
// Model Name
- putsModelName(MODELNAME_X, MODELNAME_Y, g_model.header.name, g_eeGeneral.currModel, BIGSIZE);
+ drawModelName(MODELNAME_X, MODELNAME_Y, g_model.header.name, g_eeGeneral.currModel, BIGSIZE);
// Trims sliders
displayTrims(mode);
diff --git a/radio/src/gui/212x64/widgets.cpp b/radio/src/gui/212x64/widgets.cpp
index 1d18b9e39..c2bc5c9b5 100644
--- a/radio/src/gui/212x64/widgets.cpp
+++ b/radio/src/gui/212x64/widgets.cpp
@@ -83,7 +83,9 @@ void title(const char * s)
choice_t editChoice(coord_t x, coord_t y, const char * label, const char *values, choice_t value, choice_t min, choice_t max, LcdFlags attr, event_t event, IsValueAvailable isValueAvailable)
{
- drawFieldLabel(x, y, label);
+ if (label) {
+ drawFieldLabel(x, y, label);
+ }
if (values) lcdDrawTextAtIndex(x, y, values, value-min, attr);
if (attr & (~RIGHT)) value = checkIncDec(event, value, min, max, (isModelMenuDisplayed()) ? EE_MODEL : EE_GENERAL, isValueAvailable);
return value;
diff --git a/radio/src/gui/colorlcd/CMakeLists.txt b/radio/src/gui/colorlcd/CMakeLists.txt
index 8b7668b50..99c5de4cb 100644
--- a/radio/src/gui/colorlcd/CMakeLists.txt
+++ b/radio/src/gui/colorlcd/CMakeLists.txt
@@ -2,6 +2,7 @@ include_directories(
${RADIO_SRC_DIRECTORY}/gui/colorlcd
${RADIO_SRC_DIRECTORY}/gui/colorlcd/layouts
${RADIO_SRC_DIRECTORY}/fonts/truetype
+ ${RADIO_SRC_DIRECTORY}/thirdparty/libopenui/src
)
file(GLOB THEMES_SRC RELATIVE ${RADIO_SRC_DIRECTORY}/gui/colorlcd ${RADIO_SRC_DIRECTORY}/gui/colorlcd/themes/*.cpp)
@@ -18,12 +19,11 @@ set(GUI_SRC
theme.cpp
# topbar.cpp
- # layout.cpp
+ layout.cpp
# widget.cpp
${THEMES_SRC}
- # ${LAYOUTS_SRC}
+ ${LAYOUTS_SRC}
# ${WIDGETS_SRC}
- rle.cpp
# popups.cpp
draw_functions.cpp
# menus.cpp
@@ -48,6 +48,9 @@ set(GUI_SRC
radio_hardware.cpp
radio_calibration.cpp
view_main.cpp
+ menu_screen.cpp
+ screen_setup.cpp
+
# view_statistics.cpp
)
@@ -75,17 +78,30 @@ if(LUA STREQUAL YES)
# TODO set(GUI_SRC ${GUI_SRC} model_custom_scripts.cpp)
endif()
-# gui/${GUI_DIR}/modelslist.cpp
-
set(SRC
${SRC}
stubs.cpp
)
# includes libopenui
-include(gui/libopenui/CMakeLists.txt)
+include(${RADIO_SRC_DIRECTORY}/thirdparty/libopenui/src/CMakeLists.txt)
include_directories(gui/libopenui)
add_definitions(-DLIBOPENUI)
foreach(LIBOPENUI_FILE ${LIBOPENUI_SRC})
- set(SRC ${SRC} gui/libopenui/${LIBOPENUI_FILE})
+ set(SRC ${SRC} thirdparty/libopenui/src/${LIBOPENUI_FILE})
endforeach()
+
+add_gui_src(fullscreen_dialog.cpp)
+add_gui_src(confirm_dialog.cpp)
+add_gui_src(message_dialog.cpp)
+add_gui_src(timeedit.cpp)
+add_gui_src(curve.cpp)
+add_gui_src(sourcechoice.cpp)
+add_gui_src(switchchoice.cpp)
+add_gui_src(curveedit.cpp)
+
+if(HARDWARE_TOUCH)
+ add_gui_src(keyboard_curve.cpp)
+endif()
+
+# gui/${GUI_DIR}/modelslist.cpp
diff --git a/radio/src/gui/colorlcd/colors.h b/radio/src/gui/colorlcd/colors.h
index ca2493117..c844d0695 100644
--- a/radio/src/gui/colorlcd/colors.h
+++ b/radio/src/gui/colorlcd/colors.h
@@ -21,12 +21,7 @@
#ifndef _COLORS_H_
#define _COLORS_H_
-// remove windows default definitions
-#undef OPAQUE
-#undef RGB
-
-#define RGB(r, g, b) (uint16_t)((((r) & 0xF8) << 8) + (((g) & 0xFC) << 3) + (((b) & 0xF8) >> 3))
-#define ARGB(a, r, g, b) (uint16_t)((((a) & 0xF0) << 8) + (((r) & 0xF0) << 4) + (((g) & 0xF0) << 0) + (((b) & 0xF0) >> 4))
+#include "libopenui_config.h"
#define WHITE RGB(0xFF, 0xFF, 0xFF)
#define BLACK RGB(0, 0, 0)
@@ -40,49 +35,6 @@
#define DARKRED RGB(160, 0, 6)
#define GREEN RGB(25, 150, 50)
-#define OPACITY_MAX 0x0F
-#define OPACITY(x) ((x)<<24)
-
-enum LcdColorIndex
-{
- TEXT_COLOR_INDEX,
- TEXT_BGCOLOR_INDEX,
- TEXT_INVERTED_COLOR_INDEX,
- TEXT_INVERTED_BGCOLOR_INDEX,
- TEXT_STATUSBAR_COLOR_INDEX,
- LINE_COLOR_INDEX,
- SCROLLBOX_COLOR_INDEX,
- MENU_TITLE_BGCOLOR_INDEX,
- MENU_TITLE_COLOR_INDEX,
- MENU_TITLE_DISABLE_COLOR_INDEX,
- HEADER_COLOR_INDEX,
- ALARM_COLOR_INDEX,
- WARNING_COLOR_INDEX,
- TEXT_DISABLE_COLOR_INDEX,
- CURVE_AXIS_COLOR_INDEX,
- CURVE_COLOR_INDEX,
- CURVE_CURSOR_COLOR_INDEX,
- HEADER_BGCOLOR_INDEX,
- HEADER_ICON_BGCOLOR_INDEX,
- HEADER_CURRENT_BGCOLOR_INDEX,
- TITLE_BGCOLOR_INDEX,
- TRIM_BGCOLOR_INDEX,
- TRIM_SHADOW_COLOR_INDEX,
- MAINVIEW_PANES_COLOR_INDEX,
- MAINVIEW_GRAPHICS_COLOR_INDEX,
- OVERLAY_COLOR_INDEX,
- CUSTOM_COLOR_INDEX,
- BARGRAPH1_COLOR_INDEX,
- BARGRAPH2_COLOR_INDEX,
- BARGRAPH_BGCOLOR_INDEX,
- LCD_COLOR_COUNT
-};
-
-extern uint16_t lcdColorTable[LCD_COLOR_COUNT];
-
-#define COLOR(index) LcdFlags((index) << 16)
-#define COLOR_IDX(att) uint8_t((att) >> 16)
-
#define TEXT_COLOR COLOR(TEXT_COLOR_INDEX)
#define TEXT_BGCOLOR COLOR(TEXT_BGCOLOR_INDEX)
#define TEXT_INVERTED_COLOR COLOR(TEXT_INVERTED_COLOR_INDEX)
@@ -106,7 +58,7 @@ extern uint16_t lcdColorTable[LCD_COLOR_COUNT];
#define TRIM_SHADOW_COLOR COLOR(TRIM_SHADOW_COLOR_INDEX)
#define HEADER_BGCOLOR COLOR(HEADER_BGCOLOR_INDEX)
#define HEADER_ICON_BGCOLOR COLOR(HEADER_ICON_BGCOLOR_INDEX)
-constexpr LcdFlags HEADER_CURRENT_BGCOLOR = COLOR(HEADER_CURRENT_BGCOLOR_INDEX);
+#define HEADER_CURRENT_BGCOLOR COLOR(HEADER_CURRENT_BGCOLOR_INDEX)
#define MAINVIEW_PANES_COLOR COLOR(MAINVIEW_PANES_COLOR_INDEX)
#define MAINVIEW_GRAPHICS_COLOR COLOR(MAINVIEW_GRAPHICS_COLOR_INDEX)
#define OVERLAY_COLOR COLOR(OVERLAY_COLOR_INDEX)
@@ -115,27 +67,4 @@ constexpr LcdFlags HEADER_CURRENT_BGCOLOR = COLOR(HEADER_CURRENT_BGCOLOR_INDEX)
#define BARGRAPH_BGCOLOR COLOR(BARGRAPH_BGCOLOR_INDEX)
#define CUSTOM_COLOR COLOR(CUSTOM_COLOR_INDEX)
-#define ARGB_SPLIT(color, a, r, g, b) \
- uint16_t a = ((color) & 0xF000) >> 12; \
- uint16_t r = ((color) & 0x0F00) >> 8; \
- uint16_t g = ((color) & 0x00F0) >> 4; \
- uint16_t b = ((color) & 0x000F)
-
-#define RGB_SPLIT(color, r, g, b) \
- uint16_t r = ((color) & 0xF800) >> 11; \
- uint16_t g = ((color) & 0x07E0) >> 5; \
- uint16_t b = ((color) & 0x001F)
-
-#define RGB_JOIN(r, g, b) \
- (((r) << 11) + ((g) << 5) + (b))
-
-#define GET_RED(color) \
- (((color) & 0xF800) >> 8)
-
-#define GET_GREEN(color) \
- (((color) & 0x07E0) >> 3)
-
-#define GET_BLUE(color) \
- (((color) & 0x001F) << 3)
-
#endif // _COLORS_H_
diff --git a/radio/src/gui/colorlcd/confirm_dialog.cpp b/radio/src/gui/colorlcd/confirm_dialog.cpp
new file mode 100644
index 000000000..9abe37492
--- /dev/null
+++ b/radio/src/gui/colorlcd/confirm_dialog.cpp
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) OpenTX
+ *
+ * Based on code named
+ * th9x - http://code.google.com/p/th9x
+ * er9x - http://code.google.com/p/er9x
+ * gruvin9x - http://code.google.com/p/gruvin9x
+ *
+ * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * 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.
+ */
+
+#include "confirm_dialog.h"
+#include "static.h"
+
+ConfirmDialog::ConfirmDialog(const char *title, const char *message, std::function confirmHandler) :
+ Dialog(title, {50, 73, LCD_W - 100, LCD_H - 146}),
+ confirmHandler(std::move(confirmHandler))
+{
+ new StaticText(this, {0, height() / 2, width(), PAGE_LINE_HEIGHT}, message, CENTERED);
+}
+
+#if defined(HARDWARE_KEYS)
+void ConfirmDialog::onKeyEvent(event_t event)
+{
+ TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), event);
+
+ if (event == EVT_KEY_BREAK(KEY_ENTER)) {
+ confirmHandler();
+ deleteLater();
+ }
+ else if (event == EVT_KEY_BREAK(KEY_EXIT)) {
+ deleteLater();
+ }
+}
+#endif
diff --git a/radio/src/gui/libopenui/coloredit.h b/radio/src/gui/colorlcd/confirm_dialog.h
similarity index 65%
rename from radio/src/gui/libopenui/coloredit.h
rename to radio/src/gui/colorlcd/confirm_dialog.h
index 4fe2d4d38..ea0e75689 100644
--- a/radio/src/gui/libopenui/coloredit.h
+++ b/radio/src/gui/colorlcd/confirm_dialog.h
@@ -18,23 +18,21 @@
* GNU General Public License for more details.
*/
-#ifndef _COLOREDIT_H_
-#define _COLOREDIT_H_
+#ifndef _CONFIRM_DIALOG_H_
+#define _CONFIRM_DIALOG_H_
-#include "window.h"
+#include "dialog.h"
-class ColorEdit : public Window {
+class ConfirmDialog: public Dialog {
public:
- ColorEdit(Window * parent, const rect_t & rect, std::function getValue, std::function setValue = nullptr);
+ ConfirmDialog(const char * title, const char * message, std::function confirmHandler);
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "ColorEdit";
- }
+#if defined(HARDWARE_KEYS)
+ void onKeyEvent(event_t event) override;
#endif
- ~ColorEdit() override;
+ protected:
+ std::function confirmHandler;
};
-#endif // _COLOREDIT_H_
+#endif // _CONFIRM_DIALOG_H_
diff --git a/radio/src/gui/libopenui/curve.cpp b/radio/src/gui/colorlcd/curve.cpp
similarity index 97%
rename from radio/src/gui/libopenui/curve.cpp
rename to radio/src/gui/colorlcd/curve.cpp
index ac0bcbb0b..b3d7fdabf 100644
--- a/radio/src/gui/libopenui/curve.cpp
+++ b/radio/src/gui/colorlcd/curve.cpp
@@ -23,6 +23,7 @@
#include "lcd.h"
#include "bitmaps.h"
#include "strhelpers.h"
+#include "font.h"
void Curve::drawBackground(BitmapBuffer * dc)
{
@@ -40,7 +41,7 @@ void Curve::drawBackground(BitmapBuffer * dc)
dc->drawHorizontalLine(0, height()*3/4, width(), STASHED, CURVE_AXIS_COLOR);
// Outside border
- // drawSolidRect(dc, 0, 0, width(), height(), 1, TEXT_COLOR);
+ // dc->drawSolidRect(0, 0, width(), height(), 1, TEXT_COLOR);
}
coord_t Curve::getPointX(int x)
diff --git a/radio/src/gui/libopenui/curve.h b/radio/src/gui/colorlcd/curve.h
similarity index 100%
rename from radio/src/gui/libopenui/curve.h
rename to radio/src/gui/colorlcd/curve.h
diff --git a/radio/src/gui/libopenui/curveedit.cpp b/radio/src/gui/colorlcd/curveedit.cpp
similarity index 100%
rename from radio/src/gui/libopenui/curveedit.cpp
rename to radio/src/gui/colorlcd/curveedit.cpp
diff --git a/radio/src/gui/libopenui/curveedit.h b/radio/src/gui/colorlcd/curveedit.h
similarity index 100%
rename from radio/src/gui/libopenui/curveedit.h
rename to radio/src/gui/colorlcd/curveedit.h
diff --git a/radio/src/gui/colorlcd/curves.cpp b/radio/src/gui/colorlcd/curves.cpp
index b18d15d4a..c5bda06c7 100644
--- a/radio/src/gui/colorlcd/curves.cpp
+++ b/radio/src/gui/colorlcd/curves.cpp
@@ -19,32 +19,33 @@
*/
#include "opentx.h"
+#include "font.h"
coord_t getCurveYCoord(FnFuncP fn, int x, int width)
{
return limit(-width, -divRoundClosest(fn(divRoundClosest(x * RESX, width)) * width, RESX), +width);
}
-void drawFunction(FnFuncP fn, int x, int y, int width)
+void drawFunction(BitmapBuffer * dc, FnFuncP fn, int x, int y, int width)
{
int left = x - width;
int right = x + width;
// Axis
- lcdDrawSolidHorizontalLine(left, y, width*2+1, CURVE_AXIS_COLOR);
- lcdDrawSolidVerticalLine(x, y-width, width*2, CURVE_AXIS_COLOR);
+ dc->drawSolidHorizontalLine(left, y, width*2+1, CURVE_AXIS_COLOR);
+ dc->drawSolidVerticalLine(x, y-width, width*2, CURVE_AXIS_COLOR);
// Extra lines
- lcdDrawVerticalLine(left+width/2, y-width, width*2, STASHED, CURVE_AXIS_COLOR);
- lcdDrawVerticalLine(right-width/2, y-width, width*2, STASHED, CURVE_AXIS_COLOR);
- lcdDrawHorizontalLine(left, y-width/2, width*2+1, STASHED, CURVE_AXIS_COLOR);
- lcdDrawHorizontalLine(left, y+width/2, width*2+1, STASHED, CURVE_AXIS_COLOR);
+ dc->drawVerticalLine(left+width/2, y-width, width*2, STASHED, CURVE_AXIS_COLOR);
+ dc->drawVerticalLine(right-width/2, y-width, width*2, STASHED, CURVE_AXIS_COLOR);
+ dc->drawHorizontalLine(left, y-width/2, width*2+1, STASHED, CURVE_AXIS_COLOR);
+ dc->drawHorizontalLine(left, y+width/2, width*2+1, STASHED, CURVE_AXIS_COLOR);
// Outside border
- lcdDrawSolidVerticalLine(left, y-width, width*2, TEXT_COLOR);
- lcdDrawSolidVerticalLine(right, y-width, width*2, TEXT_COLOR);
- lcdDrawSolidHorizontalLine(left, y-width, width*2+1, TEXT_COLOR);
- lcdDrawSolidHorizontalLine(left, y+width, width*2+1, TEXT_COLOR);
+ dc->drawSolidVerticalLine(left, y-width, width*2, TEXT_COLOR);
+ dc->drawSolidVerticalLine(right, y-width, width*2, TEXT_COLOR);
+ dc->drawSolidHorizontalLine(left, y-width, width*2+1, TEXT_COLOR);
+ dc->drawSolidHorizontalLine(left, y+width, width*2+1, TEXT_COLOR);
coord_t prev_yv = (coord_t)-1;
@@ -53,12 +54,12 @@ void drawFunction(FnFuncP fn, int x, int y, int width)
if (prev_yv != (coord_t)-1) {
if (prev_yv < yv) {
for (int y=prev_yv; y<=yv; y+=1) {
- lcdDrawBitmapPattern(x+xv-2, y-2, LBM_POINT, TEXT_COLOR);
+ dc->drawBitmapPattern(x+xv-2, y-2, LBM_POINT, TEXT_COLOR);
}
}
else {
for (int y=yv; y<=prev_yv; y+=1) {
- lcdDrawBitmapPattern(x+xv-2, y-2, LBM_POINT, TEXT_COLOR);
+ dc->drawBitmapPattern(x+xv-2, y-2, LBM_POINT, TEXT_COLOR);
}
}
}
@@ -66,31 +67,31 @@ void drawFunction(FnFuncP fn, int x, int y, int width)
}
}
-void drawCurveVerticalScale(int x)
+void drawCurveVerticalScale(BitmapBuffer * dc, int x)
{
for (int i=0; i<=20; i++) {
- lcdDrawSolidHorizontalLine(x, CURVE_CENTER_Y-CURVE_SIDE_WIDTH+i*CURVE_SIDE_WIDTH/10, 10, TEXT_COLOR);
+ dc->drawSolidHorizontalLine(x, CURVE_CENTER_Y-CURVE_SIDE_WIDTH+i*CURVE_SIDE_WIDTH/10, 10, TEXT_COLOR);
}
}
-void drawCurveHorizontalScale()
+void drawCurveHorizontalScale(BitmapBuffer * dc)
{
for (int i=0; i<=20; i++) {
- lcdDrawSolidVerticalLine(CURVE_CENTER_X-CURVE_SIDE_WIDTH+i*CURVE_SIDE_WIDTH/10, CURVE_CENTER_Y+CURVE_SIDE_WIDTH+5, 10, TEXT_COLOR);
+ dc->drawSolidVerticalLine(CURVE_CENTER_X-CURVE_SIDE_WIDTH+i*CURVE_SIDE_WIDTH/10, CURVE_CENTER_Y+CURVE_SIDE_WIDTH+5, 10, TEXT_COLOR);
}
}
-void drawCurveCoord(int x, int y, const char * text, bool active)
+void drawCurveCoord(BitmapBuffer * dc, int x, int y, const char * text, bool active)
{
- lcd->drawSolidFilledRect(x, y, CURVE_COORD_WIDTH, CURVE_COORD_HEIGHT, CURVE_CURSOR_COLOR);
- lcdDrawText(x+3+(CURVE_COORD_WIDTH-1-getTextWidth(text, SMLSIZE))/2, y+1, text, LEFT|SMLSIZE|TEXT_BGCOLOR);
+ dc->drawSolidFilledRect(x, y, CURVE_COORD_WIDTH, CURVE_COORD_HEIGHT, CURVE_CURSOR_COLOR);
+ dc->drawText(x+3+(CURVE_COORD_WIDTH-1-getTextWidth(text, SMLSIZE))/2, y+1, text, LEFT|SMLSIZE|TEXT_BGCOLOR);
if (active) {
- lcdDrawBitmapPattern(x, y, LBM_CURVE_COORD_SHADOW, TEXT_COLOR);
+ dc->drawBitmapPattern(x, y, LBM_CURVE_COORD_SHADOW, TEXT_COLOR);
}
}
-void drawCurvePoint(int x, int y, LcdFlags color)
+void drawCurvePoint(BitmapBuffer * dc, int x, int y, LcdFlags color)
{
- lcdDrawBitmapPattern(x, y, LBM_CURVE_POINT, color);
- lcdDrawBitmapPattern(x, y, LBM_CURVE_POINT_CENTER, TEXT_BGCOLOR);
+ dc->drawBitmapPattern(x, y, LBM_CURVE_POINT, color);
+ dc->drawBitmapPattern(x, y, LBM_CURVE_POINT_CENTER, TEXT_BGCOLOR);
}
diff --git a/radio/src/gui/libopenui/custom_curve_choice.cpp b/radio/src/gui/colorlcd/custom_curve_choice.cpp
similarity index 97%
rename from radio/src/gui/libopenui/custom_curve_choice.cpp
rename to radio/src/gui/colorlcd/custom_curve_choice.cpp
index 5bb3f32f2..613a4545a 100644
--- a/radio/src/gui/libopenui/custom_curve_choice.cpp
+++ b/radio/src/gui/colorlcd/custom_curve_choice.cpp
@@ -49,7 +49,7 @@ void CustomCurveChoice::paint(BitmapBuffer * dc)
lineColor = TEXT_INVERTED_BGCOLOR;
}
dc->drawText(3, 2, getCurveString(s, value), flags | textColor);
- drawSolidRect(dc, 0, 0, rect.w, rect.h, 1, lineColor);
+ dc->drawSolidRect(0, 0, rect.w, rect.h, 1, lineColor);
dc->drawBitmapPattern(rect.w - 14, (rect.h - 5) / 2, LBM_DROPDOWN, lineColor);
}
diff --git a/radio/src/gui/libopenui/custom_curve_choice.h b/radio/src/gui/colorlcd/custom_curve_choice.h
similarity index 100%
rename from radio/src/gui/libopenui/custom_curve_choice.h
rename to radio/src/gui/colorlcd/custom_curve_choice.h
diff --git a/radio/src/gui/colorlcd/draw_functions.cpp b/radio/src/gui/colorlcd/draw_functions.cpp
index 6aa055b37..deb9731a9 100644
--- a/radio/src/gui/colorlcd/draw_functions.cpp
+++ b/radio/src/gui/colorlcd/draw_functions.cpp
@@ -20,99 +20,99 @@
#include "opentx.h"
-void drawStatusText(const char * text)
+void drawStatusText(BitmapBuffer * dc, const char * text)
{
- lcdDrawText(MENUS_MARGIN_LEFT, MENU_FOOTER_TOP, text, TEXT_STATUSBAR_COLOR);
+ dc->drawText(MENUS_MARGIN_LEFT, MENU_FOOTER_TOP, text, TEXT_STATUSBAR_COLOR);
}
-void drawColumnHeader(const char * const * headers, const char * const * descriptions, uint8_t index)
+void drawColumnHeader(BitmapBuffer * dc, const char * const * headers, const char * const * descriptions, uint8_t index)
{
- lcdDrawText(LCD_W-MENUS_MARGIN_LEFT, MENU_TITLE_TOP + 2, headers[index], RIGHT | SMLSIZE | MENU_TITLE_COLOR);
+ dc->drawText(LCD_W-MENUS_MARGIN_LEFT, MENU_TITLE_TOP + 2, headers[index], RIGHT | SMLSIZE | MENU_TITLE_COLOR);
if (descriptions) {
- drawStatusText(descriptions[index]);
+ drawStatusText(dc, descriptions[index]);
}
}
-void drawCheckBox(coord_t x, coord_t y, uint8_t value, LcdFlags attr)
+void drawCheckBox(BitmapBuffer * dc, coord_t x, coord_t y, uint8_t value, LcdFlags attr)
{
if (attr) {
- lcdDrawSolidFilledRect(x-1, y+3, 14, 14, TEXT_INVERTED_BGCOLOR);
- lcdDrawSolidFilledRect(x+1, y+5, 10, 10, TEXT_BGCOLOR);
+ dc->drawSolidFilledRect(x-1, y+3, 14, 14, TEXT_INVERTED_BGCOLOR);
+ dc->drawSolidFilledRect(x+1, y+5, 10, 10, TEXT_BGCOLOR);
if (value) {
- lcdDrawSolidFilledRect(x+2, y+6, 8, 8, TEXT_INVERTED_BGCOLOR);
+ dc->drawSolidFilledRect(x+2, y+6, 8, 8, TEXT_INVERTED_BGCOLOR);
}
}
else {
if (value) {
- lcdDrawSolidFilledRect(x+2, y+6, 8, 8, SCROLLBOX_COLOR);
- lcdDrawSolidRect(x, y+4, 12, 12, 1, LINE_COLOR);
+ dc->drawSolidFilledRect(x+2, y+6, 8, 8, SCROLLBOX_COLOR);
+ dc->drawSolidRect(x, y+4, 12, 12, 1, LINE_COLOR);
}
else {
- lcdDrawSolidRect(x, y+4, 12, 12, 1, LINE_COLOR);
+ dc->drawSolidRect(x, y+4, 12, 12, 1, LINE_COLOR);
}
}
}
-void drawVerticalScrollbar(coord_t x, coord_t y, coord_t h, uint16_t offset, uint16_t count, uint8_t visible)
+void drawVerticalScrollbar(BitmapBuffer * dc, coord_t x, coord_t y, coord_t h, uint16_t offset, uint16_t count, uint8_t visible)
{
if (visible < count) {
- lcdDrawSolidVerticalLine(x, y, h, LINE_COLOR);
+ dc->drawSolidVerticalLine(x, y, h, LINE_COLOR);
coord_t yofs = (h*offset + count/2) / count;
coord_t yhgt = (h*visible + count/2) / count;
if (yhgt + yofs > h)
yhgt = h - yofs;
- lcdDrawSolidFilledRect(x-1, y + yofs, 3, yhgt, SCROLLBOX_COLOR);
+ dc->drawSolidFilledRect(x-1, y + yofs, 3, yhgt, SCROLLBOX_COLOR);
}
}
-void drawTrimSquare(coord_t x, coord_t y)
+void drawTrimSquare(BitmapBuffer * dc, coord_t x, coord_t y)
{
- lcdDrawSolidFilledRect(x-2, y, 15, 15, TRIM_BGCOLOR);
- lcdDrawBitmapPattern(x-2, y, LBM_TRIM_SHADOW, TRIM_SHADOW_COLOR);
+ dc->drawSolidFilledRect(x-2, y, 15, 15, TRIM_BGCOLOR);
+ dc->drawBitmapPattern(x-2, y, LBM_TRIM_SHADOW, TRIM_SHADOW_COLOR);
}
-void drawHorizontalTrimPosition(coord_t x, coord_t y, int16_t dir)
+void drawHorizontalTrimPosition(BitmapBuffer * dc, coord_t x, coord_t y, int16_t dir)
{
- drawTrimSquare(x, y);
+ drawTrimSquare(dc, x, y);
if (dir >= 0) {
- lcdDrawSolidVerticalLine(x+8, y+3, 9, TEXT_INVERTED_COLOR);
+ dc->drawSolidVerticalLine(x+8, y+3, 9, TEXT_INVERTED_COLOR);
}
if (dir <= 0) {
- lcdDrawSolidVerticalLine(x+2, y+3, 9, TEXT_INVERTED_COLOR);
+ dc->drawSolidVerticalLine(x+2, y+3, 9, TEXT_INVERTED_COLOR);
}
// if (exttrim) {
// lcdDrawSolidVerticalLine(xm, ym, 9, TEXT_INVERTED_COLOR);
// }
}
-void drawVerticalTrimPosition(coord_t x, coord_t y, int16_t dir)
+void drawVerticalTrimPosition(BitmapBuffer * dc, coord_t x, coord_t y, int16_t dir)
{
- drawTrimSquare(x, y);
+ drawTrimSquare(dc, x, y);
if (dir >= 0) {
- lcdDrawSolidHorizontalLine(x+1, y+4, 9, TEXT_INVERTED_COLOR);
+ dc->drawSolidHorizontalLine(x+1, y+4, 9, TEXT_INVERTED_COLOR);
}
if (dir <= 0) {
- lcdDrawSolidHorizontalLine(x+1, y+10, 9, TEXT_INVERTED_COLOR);
+ dc->drawSolidHorizontalLine(x+1, y+10, 9, TEXT_INVERTED_COLOR);
}
// if (exttrim) {
// lcdDrawSolidHorizontalLine(xm-1, ym, 3, TEXT_INVERTED_COLOR);
// }
}
-void drawVerticalSlider(coord_t x, coord_t y, int len, int val, int min, int max, uint8_t steps, uint32_t options)
+void drawVerticalSlider(BitmapBuffer * dc, coord_t x, coord_t y, int len, int val, int min, int max, uint8_t steps, uint32_t options)
{
val = limit(min, val, max);
if (steps) {
int delta = len / steps;
for (int i = 0; i <= len; i += delta) {
if ((options & OPTION_SLIDER_BIG_TICKS) && (i == 0 || i == len / 2 || i == len))
- lcdDrawSolidHorizontalLine(x, y + i, 13, TEXT_COLOR);
+ dc->drawSolidHorizontalLine(x, y + i, 13, TEXT_COLOR);
else
- lcdDrawSolidHorizontalLine(x + 2, y + i, 9, TEXT_COLOR);
+ dc->drawSolidHorizontalLine(x + 2, y + i, 9, TEXT_COLOR);
}
}
else {
- lcdDrawBitmapPattern(x + 1, y, LBM_VTRIM_FRAME, TEXT_COLOR);
+ dc->drawBitmapPattern(x + 1, y, LBM_VTRIM_FRAME, TEXT_COLOR);
/* if (g_model.displayTrims != DISPLAY_TRIMS_NEVER && trim != 0) {
if (g_model.displayTrims == DISPLAY_TRIMS_ALWAYS || (trimsDisplayTimer > 0 && (trimsDisplayMask & (1<0 ? -20 : 50), ym+1, trim, TINSIZE);
@@ -121,18 +121,18 @@ void drawVerticalSlider(coord_t x, coord_t y, int len, int val, int min, int max
}
y += len - divRoundClosest(len * (val - min), max - min) - 5;
if (options & OPTION_SLIDER_TRIM_BUTTON) {
- drawVerticalTrimPosition(x, y - 2, val);
+ drawVerticalTrimPosition(dc, x, y - 2, val);
}
else if (options & OPTION_SLIDER_NUMBER_BUTTON) {
- drawTrimSquare(x, y - 2);
- lcdDrawChar(x + 2, y - 1, '0' + val, SMLSIZE | TEXT_INVERTED_COLOR);
+ drawTrimSquare(dc, x, y - 2);
+ // TODO lcdDrawChar(x + 2, y - 1, '0' + val, SMLSIZE | TEXT_INVERTED_COLOR);
}
else {
- drawTrimSquare(x, y - 2);
+ drawTrimSquare(dc, x, y - 2);
}
}
-void drawHorizontalSlider(coord_t x, coord_t y, int len, int val, int min, int max, uint8_t steps, uint32_t options)
+void drawHorizontalSlider(BitmapBuffer * dc, coord_t x, coord_t y, int len, int val, int min, int max, uint8_t steps, uint32_t options)
{
val = limit(min, val, max);
int w = divRoundClosest(len * (val - min), max - min);
@@ -141,27 +141,27 @@ void drawHorizontalSlider(coord_t x, coord_t y, int len, int val, int min, int m
int delta = len / steps;
for (int i = 0; i <= len; i += delta) {
if ((options & OPTION_SLIDER_BIG_TICKS) && (i == 0 || i == len / 2 || i == len))
- lcdDrawSolidVerticalLine(x + i, y, 13, TEXT_COLOR);
+ dc->drawSolidVerticalLine(x + i, y, 13, TEXT_COLOR);
else
- lcdDrawSolidVerticalLine(x + i, y + 2, 9, TEXT_COLOR);
+ dc->drawSolidVerticalLine(x + i, y + 2, 9, TEXT_COLOR);
}
}
}
else if (options & OPTION_SLIDER_EMPTY_BAR) {
- lcdDrawBitmapPattern(x, y + 1, LBM_HTRIM_FRAME, TEXT_COLOR);
+ dc->drawBitmapPattern(x, y + 1, LBM_HTRIM_FRAME, TEXT_COLOR);
}
else if (options & OPTION_SLIDER_DBL_COLOR) {
- lcdDrawBitmapPattern(x, y + 8, LBM_SLIDER_BAR_LEFT, w <= 0 ? LINE_COLOR : TEXT_INVERTED_BGCOLOR);
+ dc->drawBitmapPattern(x, y + 8, LBM_SLIDER_BAR_LEFT, w <= 0 ? LINE_COLOR : TEXT_INVERTED_BGCOLOR);
if (w > 4)
- lcdDrawSolidFilledRect(x + 4, y + 8, w - 4, 4, TEXT_INVERTED_BGCOLOR);
+ dc->drawSolidFilledRect(x + 4, y + 8, w - 4, 4, TEXT_INVERTED_BGCOLOR);
if (w < len - 4)
- lcdDrawSolidFilledRect(x + w, y + 8, len - w - 4, 4, LINE_COLOR);
- lcdDrawBitmapPattern(x + len - 4, y + 8, LBM_SLIDER_BAR_RIGHT, w >= len ? TEXT_INVERTED_BGCOLOR : LINE_COLOR);
+ dc->drawSolidFilledRect(x + w, y + 8, len - w - 4, 4, LINE_COLOR);
+ dc->drawBitmapPattern(x + len - 4, y + 8, LBM_SLIDER_BAR_RIGHT, w >= len ? TEXT_INVERTED_BGCOLOR : LINE_COLOR);
}
else {
- lcdDrawBitmapPattern(x, y + 8, LBM_SLIDER_BAR_LEFT, LINE_COLOR);
- lcdDrawSolidFilledRect(x + 4, y + 8, len - 8, 4, LINE_COLOR);
- lcdDrawBitmapPattern(x + len - 4, y + 8, LBM_SLIDER_BAR_RIGHT, LINE_COLOR);
+ dc->drawBitmapPattern(x, y + 8, LBM_SLIDER_BAR_LEFT, LINE_COLOR);
+ dc->drawSolidFilledRect(x + 4, y + 8, len - 8, 4, LINE_COLOR);
+ dc->drawBitmapPattern(x + len - 4, y + 8, LBM_SLIDER_BAR_RIGHT, LINE_COLOR);
//
/* if (g_model.displayTrims != DISPLAY_TRIMS_NEVER && trim != 0) {
if (g_model.displayTrims == DISPLAY_TRIMS_ALWAYS || (trimsDisplayTimer > 0 && (trimsDisplayMask & (1<drawText(x + 7, y - 1, text, SMLSIZE | CENTERED | TEXT_INVERTED_COLOR);
}
else if (options & OPTION_SLIDER_SQUARE_BUTTON) {
- drawTrimSquare(x, y - 1);
+ drawTrimSquare(dc, x, y - 1);
}
else {
- lcdDrawBitmapPattern(x, y + 2, LBM_SLIDER_POINT_OUT, TEXT_COLOR);
- lcdDrawBitmapPattern(x, y + 2, LBM_SLIDER_POINT_MID, TEXT_BGCOLOR);
+ dc->drawBitmapPattern(x, y + 2, LBM_SLIDER_POINT_OUT, TEXT_COLOR);
+ dc->drawBitmapPattern(x, y + 2, LBM_SLIDER_POINT_MID, TEXT_BGCOLOR);
if ((options & INVERS) && (!(options & BLINK) || !BLINK_ON_PHASE))
- lcdDrawBitmapPattern(x, y + 2, LBM_SLIDER_POINT_IN, TEXT_INVERTED_BGCOLOR);
+ dc->drawBitmapPattern(x, y + 2, LBM_SLIDER_POINT_IN, TEXT_INVERTED_BGCOLOR);
}
}
@@ -248,7 +248,7 @@ int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int
#else
void drawValueOrGVar(BitmapBuffer * dc, coord_t x, coord_t y, gvar_t value, LcdFlags flags)
{
- drawNumber(dc, x, y, value, flags, 0, nullptr, "%");
+ dc->drawNumber(x, y, value, flags, 0, nullptr, "%");
}
#endif
@@ -258,7 +258,7 @@ void drawSleepBitmap()
lcd->clearClippingRect();
lcd->clear();
- const BitmapBuffer * bitmap = BitmapBuffer::load(getThemePath("sleep.bmp"));
+ const BitmapBuffer * bitmap = BitmapBuffer::load(static_cast(theme)->getFilePath("sleep.bmp"));
if (bitmap) {
lcd->drawBitmap((LCD_W-bitmap->getWidth())/2, (LCD_H-bitmap->getHeight())/2, bitmap);
delete bitmap;
@@ -274,21 +274,21 @@ void drawShutdownAnimation(uint32_t duration, uint32_t totalDuration, const char
return;
static uint32_t lastDuration = 0xffffffff;
- static const BitmapBuffer * shutdown = BitmapBuffer::load(getThemePath("shutdown.bmp"));
+ static const BitmapBuffer * shutdown = BitmapBuffer::load(static_cast(theme)->getFilePath("shutdown.bmp"));
if (shutdown) {
if (duration < lastDuration) {
- theme->drawBackground(lcd);
+ static_cast(theme)->drawBackground(lcd);
lcd->drawBitmap((LCD_W-shutdown->getWidth())/2, (LCD_H-shutdown->getHeight())/2, shutdown);
lcdStoreBackupBuffer();
}
else {
lcdRestoreBackupBuffer();
int quarter = duration / (totalDuration / 5);
- if (quarter >= 1) lcdDrawBitmapPattern(LCD_W/2, (LCD_H-SHUTDOWN_CIRCLE_DIAMETER)/2, LBM_SHUTDOWN_CIRCLE, TEXT_COLOR, 0, SHUTDOWN_CIRCLE_DIAMETER/2);
- if (quarter >= 2) lcdDrawBitmapPattern(LCD_W/2, LCD_H/2, LBM_SHUTDOWN_CIRCLE, TEXT_COLOR, SHUTDOWN_CIRCLE_DIAMETER/2, SHUTDOWN_CIRCLE_DIAMETER/2);
- if (quarter >= 3) lcdDrawBitmapPattern((LCD_W-SHUTDOWN_CIRCLE_DIAMETER)/2, LCD_H/2, LBM_SHUTDOWN_CIRCLE, TEXT_COLOR, SHUTDOWN_CIRCLE_DIAMETER, SHUTDOWN_CIRCLE_DIAMETER/2);
- if (quarter >= 4) lcdDrawBitmapPattern((LCD_W-SHUTDOWN_CIRCLE_DIAMETER)/2, (LCD_H-SHUTDOWN_CIRCLE_DIAMETER)/2, LBM_SHUTDOWN_CIRCLE, TEXT_COLOR, SHUTDOWN_CIRCLE_DIAMETER*3/2, SHUTDOWN_CIRCLE_DIAMETER/2);
+ if (quarter >= 1) lcd->drawBitmapPattern(LCD_W/2, (LCD_H-SHUTDOWN_CIRCLE_DIAMETER)/2, LBM_SHUTDOWN_CIRCLE, TEXT_COLOR, 0, SHUTDOWN_CIRCLE_DIAMETER/2);
+ if (quarter >= 2) lcd->drawBitmapPattern(LCD_W/2, LCD_H/2, LBM_SHUTDOWN_CIRCLE, TEXT_COLOR, SHUTDOWN_CIRCLE_DIAMETER/2, SHUTDOWN_CIRCLE_DIAMETER/2);
+ if (quarter >= 3) lcd->drawBitmapPattern((LCD_W-SHUTDOWN_CIRCLE_DIAMETER)/2, LCD_H/2, LBM_SHUTDOWN_CIRCLE, TEXT_COLOR, SHUTDOWN_CIRCLE_DIAMETER, SHUTDOWN_CIRCLE_DIAMETER/2);
+ if (quarter >= 4) lcd->drawBitmapPattern((LCD_W-SHUTDOWN_CIRCLE_DIAMETER)/2, (LCD_H-SHUTDOWN_CIRCLE_DIAMETER)/2, LBM_SHUTDOWN_CIRCLE, TEXT_COLOR, SHUTDOWN_CIRCLE_DIAMETER*3/2, SHUTDOWN_CIRCLE_DIAMETER/2);
}
}
else {
@@ -320,7 +320,7 @@ void drawCurveRef(BitmapBuffer * dc, coord_t x, coord_t y, const CurveRef & curv
break;
case CURVE_REF_FUNC:
- drawTextAtIndex(dc, x, y, STR_VCURVEFUNC, curve.value, flags);
+ dc->drawTextAtIndex(x, y, STR_VCURVEFUNC, curve.value, flags);
break;
case CURVE_REF_CUSTOM:
@@ -330,13 +330,13 @@ void drawCurveRef(BitmapBuffer * dc, coord_t x, coord_t y, const CurveRef & curv
}
}
-void putsStickName(coord_t x, coord_t y, uint8_t idx, LcdFlags att)
+void drawStickName(BitmapBuffer * dc, coord_t x, coord_t y, uint8_t idx, LcdFlags att)
{
uint8_t length = STR_VSRCRAW[0];
- lcdDrawSizedText(x, y, STR_VSRCRAW+2+length*(idx+1), length-1, att);
+ dc->drawSizedText(x, y, STR_VSRCRAW+2+length*(idx+1), length-1, att);
}
-void putsModelName(coord_t x, coord_t y, char * name, uint8_t id, LcdFlags att)
+void drawModelName(BitmapBuffer * dc, coord_t x, coord_t y, char * name, uint8_t id, LcdFlags att)
{
uint8_t len = sizeof(g_model.header.name);
while (len>0 && !name[len-1]) --len;
@@ -344,15 +344,15 @@ void putsModelName(coord_t x, coord_t y, char * name, uint8_t id, LcdFlags att)
drawStringWithIndex(x, y, STR_MODEL, id+1, att|LEADING0);
}
else {
- lcdDrawSizedText(x, y, name, sizeof(g_model.header.name), ZCHAR|att);
+ dc->drawSizedText(x, y, name, sizeof(g_model.header.name), att);
}
}
-void drawCurveName(coord_t x, coord_t y, int8_t idx, LcdFlags flags)
+void drawCurveName(BitmapBuffer * dc, coord_t x, coord_t y, int8_t idx, LcdFlags flags)
{
char s[8];
getCurveString(s, idx);
- lcdDrawText(x, y, s, flags);
+ dc->drawText(x, y, s, flags);
}
void drawSource(BitmapBuffer * dc, coord_t x, coord_t y, mixsrc_t idx, LcdFlags flags)
@@ -390,33 +390,33 @@ void drawDate(BitmapBuffer * dc, coord_t x, coord_t y, TelemetryItem & telemetry
if (att & DBLSIZE) {
x -= 42;
att &= ~FONTSIZE_MASK;
- lcdDrawNumber(x, y, telemetryItem.datetime.day, att|LEADING0|LEFT, 2);
- lcdDrawChar(lcdNextPos-1, y, '-', att);
- lcdDrawNumber(lcdNextPos-1, y, telemetryItem.datetime.month, att|LEFT, 2);
- lcdDrawChar(lcdNextPos-1, y, '-', att);
- lcdDrawNumber(lcdNextPos-1, y, telemetryItem.datetime.year-2000, att|LEFT);
+ dc->drawNumber(x, y, telemetryItem.datetime.day, att|LEADING0|LEFT, 2);
+ dc->drawText(lcdNextPos-1, y, "-", att);
+ dc->drawNumber(lcdNextPos-1, y, telemetryItem.datetime.month, att|LEFT, 2);
+ dc->drawText(lcdNextPos-1, y, "-", att);
+ dc->drawNumber(lcdNextPos-1, y, telemetryItem.datetime.year-2000, att|LEFT);
y += FH;
- lcdDrawNumber(x, y, telemetryItem.datetime.hour, att|LEADING0|LEFT, 2);
- lcdDrawChar(lcdNextPos, y, ':', att);
- lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.min, att|LEADING0|LEFT, 2);
- lcdDrawChar(lcdNextPos, y, ':', att);
- lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.sec, att|LEADING0|LEFT, 2);
+ dc->drawNumber(x, y, telemetryItem.datetime.hour, att|LEADING0|LEFT, 2);
+ dc->drawText(lcdNextPos, y, ":", att);
+ dc->drawNumber(lcdNextPos, y, telemetryItem.datetime.min, att|LEADING0|LEFT, 2);
+ dc->drawText(lcdNextPos, y, ":", att);
+ dc->drawNumber(lcdNextPos, y, telemetryItem.datetime.sec, att|LEADING0|LEFT, 2);
}
else {
- lcdDrawNumber(x, y, telemetryItem.datetime.day, att|LEADING0|LEFT, 2);
- lcdDrawChar(lcdNextPos-1, y, '-', att);
- lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.month, att|LEFT, 2);
- lcdDrawChar(lcdNextPos-1, y, '-', att);
- lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.year-2000, att|LEFT);
- lcdDrawNumber(lcdNextPos+11, y, telemetryItem.datetime.hour, att|LEADING0|LEFT, 2);
- lcdDrawChar(lcdNextPos, y, ':', att);
- lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.min, att|LEADING0|LEFT, 2);
- lcdDrawChar(lcdNextPos, y, ':', att);
- lcdDrawNumber(lcdNextPos, y, telemetryItem.datetime.sec, att|LEADING0|LEFT, 2);
+ dc->drawNumber(x, y, telemetryItem.datetime.day, att|LEADING0|LEFT, 2);
+ dc->drawText(lcdNextPos-1, y, "-", att);
+ dc->drawNumber(lcdNextPos, y, telemetryItem.datetime.month, att|LEFT, 2);
+ dc->drawText(lcdNextPos-1, y, "-", att);
+ dc->drawNumber(lcdNextPos, y, telemetryItem.datetime.year-2000, att|LEFT);
+ dc->drawNumber(lcdNextPos+11, y, telemetryItem.datetime.hour, att|LEADING0|LEFT, 2);
+ dc->drawText(lcdNextPos, y, ":", att);
+ dc->drawNumber(lcdNextPos, y, telemetryItem.datetime.min, att|LEADING0|LEFT, 2);
+ dc->drawText(lcdNextPos, y, ":", att);
+ dc->drawNumber(lcdNextPos, y, telemetryItem.datetime.sec, att|LEADING0|LEFT, 2);
}
}
-void drawGPSCoord(coord_t x, coord_t y, int32_t value, const char * direction, LcdFlags flags, bool seconds=true)
+void drawGPSCoord(BitmapBuffer * dc, coord_t x, coord_t y, int32_t value, const char * direction, LcdFlags flags, bool seconds=true)
{
char s[32];
uint32_t absvalue = abs(value);
@@ -445,27 +445,26 @@ void drawGPSCoord(coord_t x, coord_t y, int32_t value, const char * direction, L
}
*tmp++ = direction[value>=0 ? 0 : 1];
*tmp = '\0';
- lcdDrawText(x, y, s, flags);
+ dc->drawText(x, y, s, flags);
}
-void drawGPSPosition(coord_t x, coord_t y, int32_t longitude, int32_t latitude, LcdFlags flags)
+void drawGPSPosition(BitmapBuffer * dc, coord_t x, coord_t y, int32_t longitude, int32_t latitude, LcdFlags flags)
{
if (flags & EXPANDED) {
- drawGPSCoord(x, y, latitude, "NS", flags, true);
- drawGPSCoord(x, y + FH, longitude, "EW", flags, true);
+ drawGPSCoord(dc, x, y, latitude, "NS", flags, true);
+ drawGPSCoord(dc, x, y + FH, longitude, "EW", flags, true);
}
else {
- drawGPSCoord(x, y, latitude, "NS", flags, false);
- drawGPSCoord(lcdNextPos+5, y, longitude, "EW", flags, false);
+ drawGPSCoord(dc, x, y, latitude, "NS", flags, false);
+ drawGPSCoord(dc, lcdNextPos+5, y, longitude, "EW", flags, false);
}
}
-void drawGPSSensorValue(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags flags)
+void drawGPSSensorValue(BitmapBuffer * dc, coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags flags)
{
- drawGPSPosition(x, y, telemetryItem.gps.longitude, telemetryItem.gps.latitude, flags);
+ drawGPSPosition(dc, x, y, telemetryItem.gps.longitude, telemetryItem.gps.latitude, flags);
}
-
void drawSensorCustomValue(BitmapBuffer * dc, coord_t x, coord_t y, uint8_t sensor, int32_t value, LcdFlags flags)
{
if (sensor >= MAX_TELEMETRY_SENSORS) {
@@ -480,14 +479,14 @@ void drawSensorCustomValue(BitmapBuffer * dc, coord_t x, coord_t y, uint8_t sens
drawDate(dc, x, y, telemetryItem, flags);
}
else if (telemetrySensor.unit == UNIT_GPS) {
- drawGPSSensorValue(x, y, telemetryItem, flags);
+ drawGPSSensorValue(dc, x, y, telemetryItem, flags);
}
else if (telemetrySensor.unit == UNIT_BITFIELD) {
if (IS_FRSKY_SPORT_PROTOCOL()) {
if (telemetrySensor.id >= RBOX_STATE_FIRST_ID && telemetrySensor.id <= RBOX_STATE_LAST_ID) {
if (telemetrySensor.subId == 0) {
if (value == 0) {
- lcdDrawText(x, y, "OK", flags);
+ dc->drawText(x, y, "OK", flags);
}
else {
for (uint8_t i=0; i<16; i++) {
@@ -551,7 +550,7 @@ void drawSourceCustomValue(BitmapBuffer * dc, coord_t x, coord_t y, source_t sou
// TODO drawTimer(dc, x, y, value, flags);
}
else if (source == MIXSRC_TX_VOLTAGE) {
- lcdDrawNumber(x, y, value, flags|PREC1);
+ dc->drawNumber(x, y, value, flags|PREC1);
}
#if defined(INTERNAL_GPS)
else if (source == MIXSRC_TX_GPS) {
@@ -560,7 +559,7 @@ void drawSourceCustomValue(BitmapBuffer * dc, coord_t x, coord_t y, source_t sou
}
else {
lcdDrawText(x, y, "sats: ", flags);
- lcdDrawNumber(lcdNextPos, y, gpsData.numSat, flags);
+ dc->drawNumber(lcdNextPos, y, gpsData.numSat, flags);
}
}
#endif
@@ -570,26 +569,26 @@ void drawSourceCustomValue(BitmapBuffer * dc, coord_t x, coord_t y, source_t sou
}
#endif
else if (source < MIXSRC_FIRST_CH) {
- lcdDrawNumber(x, y, calcRESXto100(value), flags);
+ dc->drawNumber(x, y, calcRESXto100(value), flags);
}
else if (source <= MIXSRC_LAST_CH) {
#if defined(PPM_UNIT_PERCENT_PREC1)
- lcdDrawNumber(x, y, calcRESXto1000(value), flags|PREC1);
+ dc->drawNumber(x, y, calcRESXto1000(value), flags|PREC1);
#else
- lcdDrawNumber(x, y, calcRESXto100(value), flags);
+ dc->drawNumber(x, y, calcRESXto100(value), flags);
#endif
}
else {
- lcdDrawNumber(x, y, value, flags);
+ dc->drawNumber(x, y, value, flags);
}
}
void drawValueWithUnit(BitmapBuffer * dc, coord_t x, coord_t y, int val, uint8_t unit, LcdFlags flags)
{
// convertUnit(val, unit);
- drawNumber(dc, x, y, val, flags & (~NO_UNIT));
+ dc->drawNumber(x, y, val, flags & (~NO_UNIT));
if (!(flags & NO_UNIT) && unit != UNIT_RAW) {
- drawTextAtIndex(dc, lcdNextPos/*+1*/, y, STR_VTELEMUNIT, unit, 0);
+ dc->drawTextAtIndex(lcdNextPos/*+1*/, y, STR_VTELEMUNIT, unit, 0);
}
}
diff --git a/radio/src/gui/colorlcd/draw_functions.h b/radio/src/gui/colorlcd/draw_functions.h
index 8fe6c4972..0066b6287 100644
--- a/radio/src/gui/colorlcd/draw_functions.h
+++ b/radio/src/gui/colorlcd/draw_functions.h
@@ -21,7 +21,8 @@
#ifndef _DRAW_FUNCTIONS_H_
#define _DRAW_FUNCTIONS_H_
-#include "opentx.h"
+#include "dataconstants.h"
+#include "telemetry/telemetry_sensors.h"
#include
#define OPTION_MENU_NO_FOOTER 0x01
@@ -39,16 +40,33 @@
#define OPTION_SLIDER_NUMBER_BUTTON 0x100
#define OPTION_SLIDER_SQUARE_BUTTON 0x200
-void drawStatusText(const char * text);
-void drawColumnHeader(const char * const * headers, const char * const * descriptions, uint8_t index);
-void drawCheckBox(coord_t x, coord_t y, uint8_t value, LcdFlags attr);
-void drawVerticalScrollbar(coord_t x, coord_t y, coord_t h, uint16_t offset, uint16_t count, uint8_t visible);
-void drawProgressScreen(const char * title, const char * message, int num, int den);
-void drawTrimSquare(coord_t x, coord_t y);
-void drawHorizontalTrimPosition(coord_t x, coord_t y, int16_t dir);
-void drawVerticalTrimPosition(coord_t x, coord_t y, int16_t dir);
-void drawVerticalSlider(coord_t x, coord_t y, int len, int val, int min, int max, uint8_t steps, uint32_t options);
-void drawHorizontalSlider(coord_t x, coord_t y, int len, int val, int min, int max, uint8_t steps, uint32_t options);
+void drawStringWithIndex(coord_t x, coord_t y, const char * str, int idx, LcdFlags flags, const char * prefix, const char * suffix);
+void drawValueWithUnit(coord_t x, coord_t y, int val, uint8_t unit, LcdFlags att);
+//int editChoice(coord_t x, coord_t y, const char * values, int value, int min, int max, LcdFlags attr, event_t event, IsValueAvailable isValueAvailable=nullptr);
+//uint8_t editCheckBox(uint8_t value, coord_t x, coord_t y, LcdFlags attr, event_t event);
+//swsrc_t editSwitch(coord_t x, coord_t y, swsrc_t value, LcdFlags attr, event_t event);
+void drawFatalErrorScreen(const char * message);
+void runFatalErrorScreen(const char * message);
+void drawPower(coord_t x, coord_t y, int8_t dBm, LcdFlags att);
+//void lcdDrawMMM(coord_t x, coord_t y, LcdFlags flags);
+void drawSource(BitmapBuffer * dc, coord_t x, coord_t y, mixsrc_t idx, LcdFlags flags=0);
+void drawSwitch(BitmapBuffer * dc, coord_t x, coord_t y, int32_t idx, LcdFlags flags=0);
+void drawTrimMode(BitmapBuffer * dc, coord_t x, coord_t y, uint8_t phase, uint8_t idx, LcdFlags flags = 0);
+
+#if defined(FLIGHT_MODES)
+void drawFlightMode(coord_t x, coord_t y, int8_t idx, LcdFlags att);
+#endif
+
+void drawStatusText(BitmapBuffer * dc, const char * text);
+void drawColumnHeader(BitmapBuffer * dc, const char * const * headers, const char * const * descriptions, uint8_t index);
+void drawCheckBox(BitmapBuffer * dc, coord_t x, coord_t y, uint8_t value, LcdFlags attr);
+void drawVerticalScrollbar(BitmapBuffer * dc, coord_t x, coord_t y, coord_t h, uint16_t offset, uint16_t count, uint8_t visible);
+void drawProgressScreen(BitmapBuffer * dc, const char * title, const char * message, int num, int den);
+void drawTrimSquare(BitmapBuffer * dc, coord_t x, coord_t y);
+void drawHorizontalTrimPosition(BitmapBuffer * dc, coord_t x, coord_t y, int16_t dir);
+void drawVerticalTrimPosition(BitmapBuffer * dc, coord_t x, coord_t y, int16_t dir);
+void drawVerticalSlider(BitmapBuffer * dc, coord_t x, coord_t y, int len, int val, int min, int max, uint8_t steps, uint32_t options);
+void drawHorizontalSlider(BitmapBuffer * dc, coord_t x, coord_t y, int len, int val, int min, int max, uint8_t steps, uint32_t options);
void drawSlider(coord_t x, coord_t y, int len, int val, int min, int max, uint8_t steps, uint32_t options);
void drawValueOrGVar(BitmapBuffer * dc, coord_t x, coord_t y, gvar_t gvar, LcdFlags flags = 0);
void drawGVarValue(BitmapBuffer * dc, coord_t x, coord_t y, uint8_t gvar, gvar_t value, LcdFlags flags = 0);
diff --git a/radio/src/gui/colorlcd/fonts.cpp b/radio/src/gui/colorlcd/fonts.cpp
index ac5315d65..e5be0aa2c 100644
--- a/radio/src/gui/colorlcd/fonts.cpp
+++ b/radio/src/gui/colorlcd/fonts.cpp
@@ -19,7 +19,6 @@
*/
#include "opentx.h"
-#include "rle.h"
const uint16_t font_tinsize_specs[] = {
#include "font_9.specs"
@@ -30,6 +29,14 @@ const unsigned char font_tinsize[] = {
};
#if defined(HARDWARE_TOUCH)
+const uint16_t font_stdsize_en_specs[] = {
+#include "font_17en.specs"
+};
+
+const unsigned char font_stdsize_en[] = {
+#include "font_17en.lbm"
+};
+
const uint16_t font_smlsize_specs[] = {
#include "font_15.specs"
};
@@ -54,6 +61,14 @@ const unsigned char font_stdsizebold[] = {
#include "font_bold17.lbm"
};
#else
+const uint16_t font_stdsize_en_specs[] = {
+#include "font_16en.specs"
+};
+
+const unsigned char font_stdsize_en[] = {
+#include "font_16en.lbm"
+};
+
const uint16_t font_smlsize_specs[] = {
#include "font_13.specs"
};
@@ -103,7 +118,10 @@ const unsigned char font_xxlsize[] = {
#include "font_64.lbm"
};
-#if !defined(BOOT)
+#if defined(BOOT)
+const uint16_t * const fontspecsTable[1] = { font_stdsize_en_specs };
+const uint8_t * fontsTable[1] = { font_stdsize_en };
+#else
const uint16_t * const fontspecsTable[16] = {
font_stdsize_specs, font_tinsize_specs, font_smlsize_specs, font_midsize_specs, font_dblsize_specs, font_xxlsize_specs, font_stdsize_specs, font_stdsize_specs,
font_stdsizebold_specs, font_tinsize_specs, font_smlsize_specs, font_midsize_specs, font_dblsize_specs, font_xxlsize_specs, font_stdsize_specs, font_stdsize_specs
@@ -113,9 +131,6 @@ const uint8_t * fontsTable[16] = {
font_stdsize, font_tinsize, font_smlsize, font_midsize, font_dblsize, font_xxlsize, font_stdsize, font_stdsize,
font_stdsizebold, font_tinsize, font_smlsize, font_midsize, font_dblsize, font_xxlsize, font_stdsize, font_stdsize
};
-#else
-const uint16_t * const fontspecsTable[1] = { font_stdsize_specs };
-const uint8_t * fontsTable[1] = { font_stdsize };
#endif
uint8_t * decompressFont(const uint8_t * font)
@@ -127,9 +142,9 @@ uint8_t * decompressFont(const uint8_t * font)
uint8_t* dec_buf = (uint8_t*)malloc(font_size + 4);
// copy width / height
- memcpy(dec_buf,font,4);
+ memcpy(dec_buf, font,4);
- rle_decode_8bit(dec_buf+4, font_size, font+4);
+ RLEBitmap::decode(dec_buf+4, font_size, font+4);
return dec_buf;
}
@@ -139,12 +154,14 @@ void loadFonts()
if (fonts_loaded) return;
#if !defined(BOOT)
- int i=0;
- for (; i<9; i++)
+ int i = 0;
+ for (; i < 9; i++) {
fontsTable[i] = decompressFont(fontsTable[i]);
-
- for (; i<16; i++)
- fontsTable[i] = fontsTable[i-9];
+ }
+ for (; i < 16; i++) {
+ // the next fonts don't exist in BOLD today
+ fontsTable[i] = fontsTable[i - 9];
+ }
#else
fontsTable[0] = decompressFont(fontsTable[0]);
#endif
diff --git a/radio/src/gui/colorlcd/fullscreen_dialog.cpp b/radio/src/gui/colorlcd/fullscreen_dialog.cpp
new file mode 100644
index 000000000..9bbdbc42d
--- /dev/null
+++ b/radio/src/gui/colorlcd/fullscreen_dialog.cpp
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) OpenTX
+ *
+ * Based on code named
+ * th9x - http://code.google.com/p/th9x
+ * er9x - http://code.google.com/p/er9x
+ * gruvin9x - http://code.google.com/p/gruvin9x
+ *
+ * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * 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.
+ */
+
+#include "fullscreen_dialog.h"
+#include "mainwindow.h"
+#include "opentx.h"
+
+FullScreenDialog::FullScreenDialog(uint8_t type, std::string title, std::string message, std::string action, std::function confirmHandler):
+ Dialog(title, {0, 0, LCD_W, LCD_H}),
+ type(type),
+ message(std::move(message)),
+ action(std::move(action)),
+ confirmHandler(confirmHandler)
+{
+#if defined(HARDWARE_TOUCH)
+ new FabIconButton(this, LCD_W - 50, ALERT_BUTTON_TOP, ICON_NEXT,
+ [=]() -> uint8_t {
+ if (confirmHandler)
+ confirmHandler();
+ return 0;
+ });
+#endif
+}
+
+FullScreenDialog::~FullScreenDialog()
+{
+}
+
+void FullScreenDialog::paint(BitmapBuffer * dc)
+{
+ static_cast(theme)->drawBackground(dc);
+
+ dc->drawFilledRect(0, ALERT_FRAME_TOP, LCD_W, ALERT_FRAME_HEIGHT, SOLID, TEXT_INVERTED_COLOR | OPACITY(8));
+
+ if (type == WARNING_TYPE_ALERT || type == WARNING_TYPE_ASTERISK)
+ dc->drawBitmap(ALERT_BITMAP_LEFT, ALERT_BITMAP_TOP, static_cast(theme)->asterisk);
+ else if (type == WARNING_TYPE_INFO)
+ dc->drawBitmap(ALERT_BITMAP_LEFT, ALERT_BITMAP_TOP, static_cast(theme)->busy);
+ else // confirmation
+ dc->drawBitmap(ALERT_BITMAP_LEFT, ALERT_BITMAP_TOP, static_cast(theme)->question);
+
+ if (type == WARNING_TYPE_ALERT) {
+#if defined(TRANSLATIONS_FR) || defined(TRANSLATIONS_IT) || defined(TRANSLATIONS_CZ)
+ dc->drawText(ALERT_TITLE_LEFT, ALERT_TITLE_TOP, STR_WARNING, ALARM_COLOR|DBLSIZE);
+ dc->drawText(ALERT_TITLE_LEFT, ALERT_TITLE_TOP + ALERT_TITLE_LINE_HEIGHT, title, ALARM_COLOR|DBLSIZE);
+#else
+ dc->drawText(ALERT_TITLE_LEFT, ALERT_TITLE_TOP, title.c_str(), ALARM_COLOR|DBLSIZE);
+ dc->drawText(ALERT_TITLE_LEFT, ALERT_TITLE_TOP + ALERT_TITLE_LINE_HEIGHT, STR_WARNING, ALARM_COLOR|DBLSIZE);
+#endif
+ }
+ else if (!title.empty()) {
+ dc->drawText(ALERT_TITLE_LEFT, ALERT_TITLE_TOP, title.c_str(), ALARM_COLOR|DBLSIZE);
+ }
+
+ if (!message.empty()) {
+ dc->drawText(ALERT_MESSAGE_LEFT, ALERT_MESSAGE_TOP, message.c_str(), BOLD);
+ }
+
+ if (!action.empty()) {
+ dc->drawText(LCD_W / 2, ALERT_ACTION_TOP, action.c_str(), CENTERED | BOLD);
+ }
+}
+
+#if defined(HARDWARE_KEYS)
+void FullScreenDialog::onKeyEvent(event_t event)
+{
+ TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), event);
+
+ if (event == EVT_KEY_BREAK(KEY_ENTER)) {
+ deleteLater();
+ if (confirmHandler)
+ confirmHandler();
+ }
+ else if (event == EVT_KEY_BREAK(KEY_EXIT)) {
+ deleteLater();
+ }
+}
+#endif
+
+#if defined(HARDWARE_TOUCH)
+bool FullScreenDialog::onTouchEnd(coord_t x, coord_t y)
+{
+ Window::onTouchEnd(x, y);
+ deleteLater();
+ return true;
+}
+#endif
+
+void FullScreenDialog::checkEvents()
+{
+ Window::checkEvents();
+ if (closeCondition && closeCondition()) {
+ deleteLater();
+ }
+}
+
+void FullScreenDialog::deleteLater()
+{
+ if (previousFocus) {
+ previousFocus->setFocus();
+ }
+ if (running) {
+ running = false;
+ }
+ else {
+ Window::deleteLater();
+ }
+}
+
+void FullScreenDialog::runForever()
+{
+ running = true;
+
+ while (running) {
+ auto check = pwrCheck();
+ if (check == e_power_off) {
+ boardOff();
+ }
+ else if (check == e_power_press) {
+ RTOS_WAIT_MS(20);
+ continue;
+ }
+
+ checkBacklight();
+ wdt_reset();
+
+ RTOS_WAIT_MS(20);
+ mainWindow.run(false);
+ }
+
+ Window::deleteLater();
+}
+
+void raiseAlert(const char * title, const char * msg, const char * action, uint8_t sound)
+{
+ AUDIO_ERROR_MESSAGE(sound);
+ auto dialog = new FullScreenDialog(WARNING_TYPE_ALERT, title ? title : "", msg ? msg : "", action ? action : "");
+ dialog->runForever();
+}
diff --git a/radio/src/gui/libopenui/dialog.h b/radio/src/gui/colorlcd/fullscreen_dialog.h
similarity index 65%
rename from radio/src/gui/libopenui/dialog.h
rename to radio/src/gui/colorlcd/fullscreen_dialog.h
index d8745aa54..127176c45 100644
--- a/radio/src/gui/libopenui/dialog.h
+++ b/radio/src/gui/colorlcd/fullscreen_dialog.h
@@ -18,10 +18,10 @@
* GNU General Public License for more details.
*/
-#ifndef _DIALOG_H_
-#define _DIALOG_H_
+#ifndef _FULLSCREEN_DIALOG_H_
+#define _FULLSCREEN_DIALOG_H_
-#include "button.h"
+#include "dialog.h"
enum DialogType {
WARNING_TYPE_ALERT,
@@ -31,43 +31,9 @@ enum DialogType {
WARNING_TYPE_INFO
};
-class Dialog: public Window {
- public:
- Dialog(std::string title, const rect_t rect);
-
- void paint(BitmapBuffer * dc) override;
-
- void deleteLater();
-
- protected:
- std::string title;
- Window * previousFocus;
-};
-
-class MessageDialog: public Dialog {
- public:
- MessageDialog(const char * title, const char * message);
-
-#if defined(HARDWARE_KEYS)
- void onKeyEvent(event_t event) override;
-#endif
-};
-
-class ConfirmDialog: public Dialog {
- public:
- ConfirmDialog(const char * title, const char * message, std::function confirmHandler);
-
-#if defined(HARDWARE_KEYS)
- void onKeyEvent(event_t event) override;
-#endif
-
- protected:
- std::function confirmHandler;
-};
-
class FullScreenDialog : public Dialog {
public:
- FullScreenDialog(uint8_t type, std::string title, std::string message="", std::function confirmHandler=nullptr);
+ FullScreenDialog(uint8_t type, std::string title, std::string message = "", std::string action = "", std::function confirmHandler = nullptr);
~FullScreenDialog() override;
@@ -108,14 +74,10 @@ class FullScreenDialog : public Dialog {
protected:
uint8_t type;
std::string message;
+ std::string action;
bool running = false;
std::function closeCondition;
std::function confirmHandler;
};
-inline void POPUP_INFORMATION(const char * str)
-{
- new MessageDialog("Message", str);
-}
-
-#endif // _CONFIRMATION_H_
+#endif // _FULLSCREEN_DIALOG_H_
diff --git a/radio/src/gui/libopenui/getset_helpers.h b/radio/src/gui/colorlcd/getset_helpers.h
similarity index 100%
rename from radio/src/gui/libopenui/getset_helpers.h
rename to radio/src/gui/colorlcd/getset_helpers.h
diff --git a/radio/src/gui/libopenui/keyboard_curve.cpp b/radio/src/gui/colorlcd/keyboard_curve.cpp
similarity index 100%
rename from radio/src/gui/libopenui/keyboard_curve.cpp
rename to radio/src/gui/colorlcd/keyboard_curve.cpp
diff --git a/radio/src/gui/libopenui/keyboard_curve.h b/radio/src/gui/colorlcd/keyboard_curve.h
similarity index 100%
rename from radio/src/gui/libopenui/keyboard_curve.h
rename to radio/src/gui/colorlcd/keyboard_curve.h
diff --git a/radio/src/gui/colorlcd/layout.cpp b/radio/src/gui/colorlcd/layout.cpp
index fff5cf6a6..aa9935569 100644
--- a/radio/src/gui/colorlcd/layout.cpp
+++ b/radio/src/gui/colorlcd/layout.cpp
@@ -28,7 +28,7 @@ std::list & getRegisteredLayouts()
void registerLayout(const LayoutFactory * factory)
{
- TRACE("register layout %s", factory->getName());
+ TRACE("register layout %s", factory->getId());
getRegisteredLayouts().push_back(factory);
}
@@ -36,7 +36,7 @@ const LayoutFactory * getLayoutFactory(const char * name)
{
std::list::const_iterator it = getRegisteredLayouts().cbegin();
for (; it != getRegisteredLayouts().cend(); ++it) {
- if (!strcmp(name, (*it)->getName())) {
+ if (!strcmp(name, (*it)->getId())) {
return (*it);
}
}
@@ -54,7 +54,7 @@ Layout * loadLayout(const char * name, Layout::PersistentData * persistentData)
void loadCustomScreens()
{
- for (unsigned int i=0; icreate(&g_model.screenData[0].layoutData);
}
- if (topbar) {
- topbar->load();
- }
+// if (topbar) {
+// topbar->load();
+// }
}
diff --git a/radio/src/gui/colorlcd/layout.h b/radio/src/gui/colorlcd/layout.h
index bd5d562aa..0c7239107 100644
--- a/radio/src/gui/colorlcd/layout.h
+++ b/radio/src/gui/colorlcd/layout.h
@@ -59,18 +59,21 @@ void registerLayout(const LayoutFactory * factory);
class LayoutFactory
{
public:
- LayoutFactory(const char * name):
+ LayoutFactory(const char * id, const char * name):
+ id(id),
name(name)
{
registerLayout(this);
}
+ const char * getId() const { return id; }
const char * getName() const { return name; }
- virtual void drawThumb(uint16_t x, uint16_t y, uint32_t flags) const = 0;
+ virtual void drawThumb(BitmapBuffer * dc, uint16_t x, uint16_t y, LcdFlags flags) const = 0;
virtual const ZoneOption * getOptions() const = 0;
virtual Layout * create(Layout::PersistentData * persistentData) const = 0;
virtual Layout * load(Layout::PersistentData * persistentData) const = 0;
protected:
+ const char * id;
const char * name;
};
@@ -78,24 +81,24 @@ template
class BaseLayoutFactory: public LayoutFactory
{
public:
- BaseLayoutFactory(const char * name, const uint8_t * bitmap, const ZoneOption * options):
- LayoutFactory(name),
+ BaseLayoutFactory(const char * id, const char * name, const uint8_t * bitmap, const ZoneOption * options):
+ LayoutFactory(id, name),
bitmap(bitmap),
options(options)
{
}
- virtual void drawThumb(uint16_t x, uint16_t y, uint32_t flags) const
+ void drawThumb(BitmapBuffer * dc, uint16_t x, uint16_t y, uint32_t flags) const override
{
- lcdDrawBitmapPattern(x, y, bitmap, flags);
+ dc->drawBitmapPattern(x, y, bitmap, flags);
}
- virtual const ZoneOption * getOptions() const
+ const ZoneOption * getOptions() const override
{
return options;
}
- virtual Layout * create(Layout::PersistentData * persistentData) const
+ Layout * create(Layout::PersistentData * persistentData) const override
{
Layout * layout = new T(this, persistentData);
if (layout) {
@@ -104,7 +107,7 @@ class BaseLayoutFactory: public LayoutFactory
return layout;
}
- virtual Layout * load(Layout::PersistentData * persistentData) const
+ Layout * load(Layout::PersistentData * persistentData) const override
{
Layout * layout = new T(this, persistentData);
if (layout) {
diff --git a/radio/src/gui/colorlcd/layouts/layout1x1.cpp b/radio/src/gui/colorlcd/layouts/layout1x1.cpp
index 0feeb1436..5c10d7fec 100644
--- a/radio/src/gui/colorlcd/layouts/layout1x1.cpp
+++ b/radio/src/gui/colorlcd/layouts/layout1x1.cpp
@@ -38,19 +38,19 @@ class Layout1x1: public Layout
{
}
- virtual void create()
+ void create() override
{
Layout::create();
persistentData->options[0].boolValue = true;
persistentData->options[1].boolValue = true;
}
- virtual unsigned int getZonesCount() const
+ unsigned int getZonesCount() const override
{
return 1;
}
- virtual Zone getZone(unsigned int index) const
+ Zone getZone(unsigned int index) const override
{
Zone zone = { 10, 10, LCD_W - 2*10, LCD_H - 2*10 };
if (persistentData->options[0].boolValue) {
@@ -65,28 +65,28 @@ class Layout1x1: public Layout
return zone;
}
- virtual void refresh();
+// virtual void refresh();
};
-void Layout1x1::refresh()
-{
- theme->drawBackground();
+//void Layout1x1::refresh()
+//{
+// theme->drawBackground();
+//
+// if (persistentData->options[0].boolValue) {
+// drawTopBar();
+// }
+//
+// if (persistentData->options[1].boolValue) {
+// // Sliders + Trims + Flight mode
+// lcdDrawSizedText(LCD_W / 2 - getTextWidth(g_model.flightModeData[mixerCurrentFlightMode].name, sizeof(g_model.flightModeData[mixerCurrentFlightMode].name), ZCHAR | SMLSIZE) / 2,
+// 232,
+// g_model.flightModeData[mixerCurrentFlightMode].name,
+// sizeof(g_model.flightModeData[mixerCurrentFlightMode].name), ZCHAR | SMLSIZE);
+// drawMainPots();
+// drawTrims(mixerCurrentFlightMode);
+// }
+//
+// Layout::refresh();
+//}
- if (persistentData->options[0].boolValue) {
- drawTopBar();
- }
-
- if (persistentData->options[1].boolValue) {
- // Sliders + Trims + Flight mode
- lcdDrawSizedText(LCD_W / 2 - getTextWidth(g_model.flightModeData[mixerCurrentFlightMode].name, sizeof(g_model.flightModeData[mixerCurrentFlightMode].name), ZCHAR | SMLSIZE) / 2,
- 232,
- g_model.flightModeData[mixerCurrentFlightMode].name,
- sizeof(g_model.flightModeData[mixerCurrentFlightMode].name), ZCHAR | SMLSIZE);
- drawMainPots();
- drawTrims(mixerCurrentFlightMode);
- }
-
- Layout::refresh();
-}
-
-BaseLayoutFactory layout1x1("Layout1x1", LBM_LAYOUT_1x1, OPTIONS_LAYOUT_1x1);
+BaseLayoutFactory layout1x1("Layout1x1", "Fullscreen", LBM_LAYOUT_1x1, OPTIONS_LAYOUT_1x1);
diff --git a/radio/src/gui/colorlcd/layouts/layout2+1.cpp b/radio/src/gui/colorlcd/layouts/layout2+1.cpp
index 39abb1a9e..7b58c631d 100644
--- a/radio/src/gui/colorlcd/layouts/layout2+1.cpp
+++ b/radio/src/gui/colorlcd/layouts/layout2+1.cpp
@@ -29,7 +29,7 @@ const ZoneOption OPTIONS_LAYOUT_2P1[] = {
{ "Flight mode", ZoneOption::Bool },
{ "Sliders", ZoneOption::Bool },
{ "Trims", ZoneOption::Bool },
- { NULL, ZoneOption::Bool }
+ { nullptr, ZoneOption::Bool }
};
const Zone ZONES_LAYOUT_2P1[3] = {
@@ -46,7 +46,7 @@ class Layout2P1: public Layout
{
}
- virtual void create()
+ void create() override
{
Layout::create();
persistentData->options[0].boolValue = true;
@@ -55,49 +55,49 @@ class Layout2P1: public Layout
persistentData->options[3].boolValue = true;
}
- virtual unsigned int getZonesCount() const
+ unsigned int getZonesCount() const override
{
return DIM(ZONES_LAYOUT_2P1);
}
- virtual Zone getZone(unsigned int index) const
+ Zone getZone(unsigned int index) const override
{
return ZONES_LAYOUT_2P1[index];
}
- virtual void refresh();
+// virtual void refresh();
};
-void Layout2P1::refresh()
-{
- theme->drawBackground();
+//void Layout2P1::refresh()
+//{
+// theme->drawBackground();
+//
+// if (persistentData->options[0].boolValue) {
+// drawTopBar();
+// }
+//
+// if (persistentData->options[1].boolValue) {
+// // Flight mode
+// lcdDrawSizedText(LCD_W / 2 - getTextWidth(g_model.flightModeData[mixerCurrentFlightMode].name,
+// sizeof(g_model.flightModeData[mixerCurrentFlightMode].name),
+// ZCHAR | SMLSIZE) / 2,
+// 232,
+// g_model.flightModeData[mixerCurrentFlightMode].name,
+// sizeof(g_model.flightModeData[mixerCurrentFlightMode].name), ZCHAR | SMLSIZE);
+// }
+//
+// if (persistentData->options[2].boolValue) {
+// // Pots and rear sliders positions
+// drawMainPots();
+// }
+//
+// if (persistentData->options[3].boolValue) {
+// // Trims
+// drawTrims(mixerCurrentFlightMode);
+// }
+//
+// Layout::refresh();
+//}
- if (persistentData->options[0].boolValue) {
- drawTopBar();
- }
-
- if (persistentData->options[1].boolValue) {
- // Flight mode
- lcdDrawSizedText(LCD_W / 2 - getTextWidth(g_model.flightModeData[mixerCurrentFlightMode].name,
- sizeof(g_model.flightModeData[mixerCurrentFlightMode].name),
- ZCHAR | SMLSIZE) / 2,
- 232,
- g_model.flightModeData[mixerCurrentFlightMode].name,
- sizeof(g_model.flightModeData[mixerCurrentFlightMode].name), ZCHAR | SMLSIZE);
- }
-
- if (persistentData->options[2].boolValue) {
- // Pots and rear sliders positions
- drawMainPots();
- }
-
- if (persistentData->options[3].boolValue) {
- // Trims
- drawTrims(mixerCurrentFlightMode);
- }
-
- Layout::refresh();
-}
-
-BaseLayoutFactory layout2P1("Layout2P1", LBM_LAYOUT_2P1, OPTIONS_LAYOUT_2P1);
+BaseLayoutFactory layout2P1("Layout2P1", "2 + 1", LBM_LAYOUT_2P1, OPTIONS_LAYOUT_2P1);
const LayoutFactory * defaultLayout = &layout2P1;
diff --git a/radio/src/gui/colorlcd/layouts/layout2x1.cpp b/radio/src/gui/colorlcd/layouts/layout2x1.cpp
index a96fc7006..73252c25e 100644
--- a/radio/src/gui/colorlcd/layouts/layout2x1.cpp
+++ b/radio/src/gui/colorlcd/layouts/layout2x1.cpp
@@ -37,18 +37,18 @@ class Layout2x1: public Layout
{
}
- virtual void create()
+ void create() override
{
Layout::create();
persistentData->options[0].boolValue = true;
}
- virtual unsigned int getZonesCount() const
+ unsigned int getZonesCount() const override
{
return 4;
}
- virtual Zone getZone(unsigned int index) const
+ Zone getZone(unsigned int index) const override
{
Zone zone;
zone.w = (LCD_W-3*10) / 2;
@@ -64,18 +64,18 @@ class Layout2x1: public Layout
return zone;
}
- virtual void refresh();
+// virtual void refresh();
};
-void Layout2x1::refresh()
-{
- theme->drawBackground();
+//void Layout2x1::refresh()
+//{
+// theme->drawBackground();
+//
+// if (persistentData->options[0].boolValue) {
+// drawTopBar();
+// }
+//
+// Layout::refresh();
+//}
- if (persistentData->options[0].boolValue) {
- drawTopBar();
- }
-
- Layout::refresh();
-}
-
-BaseLayoutFactory Layout2x1("Layout2x1", LBM_LAYOUT_2x1, OPTIONS_LAYOUT_2x1);
+BaseLayoutFactory Layout2x1("Layout2x1", "2 x 1", LBM_LAYOUT_2x1, OPTIONS_LAYOUT_2x1);
diff --git a/radio/src/gui/colorlcd/layouts/layout2x2.cpp b/radio/src/gui/colorlcd/layouts/layout2x2.cpp
index 0efa2df62..54036176d 100644
--- a/radio/src/gui/colorlcd/layouts/layout2x2.cpp
+++ b/radio/src/gui/colorlcd/layouts/layout2x2.cpp
@@ -26,7 +26,7 @@ const uint8_t LBM_LAYOUT_2x2[] = {
const ZoneOption OPTIONS_LAYOUT_2x2[] = {
{ "Top bar", ZoneOption::Bool },
- { NULL, ZoneOption::Bool }
+ { nullptr, ZoneOption::Bool }
};
class Layout2x2: public Layout
@@ -37,18 +37,18 @@ class Layout2x2: public Layout
{
}
- virtual void create()
+ void create() override
{
Layout::create();
persistentData->options[0].boolValue = true;
}
- virtual unsigned int getZonesCount() const
+ unsigned int getZonesCount() const override
{
return 4;
}
- virtual Zone getZone(unsigned int index) const
+ Zone getZone(unsigned int index) const override
{
Zone zone;
zone.w = (LCD_W-3*10) / 2;
@@ -67,18 +67,18 @@ class Layout2x2: public Layout
return zone;
}
- virtual void refresh();
+// virtual void refresh();
};
-void Layout2x2::refresh()
-{
- theme->drawBackground();
+//void Layout2x2::refresh()
+//{
+// theme->drawBackground();
+//
+// if (persistentData->options[0].boolValue) {
+// drawTopBar();
+// }
+//
+// Layout::refresh();
+//}
- if (persistentData->options[0].boolValue) {
- drawTopBar();
- }
-
- Layout::refresh();
-}
-
-BaseLayoutFactory layout2x2("Layout2x2", LBM_LAYOUT_2x2, OPTIONS_LAYOUT_2x2);
+BaseLayoutFactory layout2x2("Layout2x2", "2 x 2", LBM_LAYOUT_2x2, OPTIONS_LAYOUT_2x2);
diff --git a/radio/src/gui/colorlcd/layouts/layout2x4.cpp b/radio/src/gui/colorlcd/layouts/layout2x4.cpp
index b6e009acc..b5ee359cc 100644
--- a/radio/src/gui/colorlcd/layouts/layout2x4.cpp
+++ b/radio/src/gui/colorlcd/layouts/layout2x4.cpp
@@ -44,7 +44,7 @@ class Layout2x4: public Layout
{
}
- virtual void create()
+ void create() override
{
Layout::create();
persistentData->options[0].boolValue = true;
@@ -57,12 +57,12 @@ class Layout2x4: public Layout
persistentData->options[7].unsignedValue = RGB(77, 112, 203);
}
- virtual unsigned int getZonesCount() const
+ unsigned int getZonesCount() const override
{
return 8;
}
- virtual Zone getZone(unsigned int index) const
+ Zone getZone(unsigned int index) const override
{
Zone zone;
zone.x = (index >= 4) ? 260 : 60;
@@ -72,48 +72,48 @@ class Layout2x4: public Layout
return zone;
}
- virtual void refresh();
+// virtual void refresh();
};
-void Layout2x4::refresh()
-{
- theme->drawBackground();
+//void Layout2x4::refresh()
+//{
+// theme->drawBackground();
+//
+// if (persistentData->options[0].boolValue) {
+// drawTopBar();
+// }
+//
+// if (persistentData->options[1].boolValue) {
+// // Flight mode
+// lcdDrawSizedText(LCD_W / 2 - getTextWidth(g_model.flightModeData[mixerCurrentFlightMode].name,
+// sizeof(g_model.flightModeData[mixerCurrentFlightMode].name),
+// ZCHAR | SMLSIZE) / 2,
+// 232,
+// g_model.flightModeData[mixerCurrentFlightMode].name,
+// sizeof(g_model.flightModeData[mixerCurrentFlightMode].name), ZCHAR | SMLSIZE);
+// }
+//
+// if (persistentData->options[2].boolValue) {
+// // Pots and rear sliders positions
+// drawMainPots();
+// }
+//
+// if (persistentData->options[3].boolValue) {
+// // Trims
+// drawTrims(mixerCurrentFlightMode);
+// }
+//
+// if (persistentData->options[4].boolValue) {
+// lcdSetColor(persistentData->options[5].unsignedValue);
+// lcdDrawSolidFilledRect(50, 50, 180, 170, CUSTOM_COLOR);
+// }
+//
+// if (persistentData->options[6].boolValue) {
+// lcdSetColor(persistentData->options[7].unsignedValue);
+// lcdDrawSolidFilledRect(250, 50, 180, 170, CUSTOM_COLOR);
+// }
+//
+// Layout::refresh();
+//}
- if (persistentData->options[0].boolValue) {
- drawTopBar();
- }
-
- if (persistentData->options[1].boolValue) {
- // Flight mode
- lcdDrawSizedText(LCD_W / 2 - getTextWidth(g_model.flightModeData[mixerCurrentFlightMode].name,
- sizeof(g_model.flightModeData[mixerCurrentFlightMode].name),
- ZCHAR | SMLSIZE) / 2,
- 232,
- g_model.flightModeData[mixerCurrentFlightMode].name,
- sizeof(g_model.flightModeData[mixerCurrentFlightMode].name), ZCHAR | SMLSIZE);
- }
-
- if (persistentData->options[2].boolValue) {
- // Pots and rear sliders positions
- drawMainPots();
- }
-
- if (persistentData->options[3].boolValue) {
- // Trims
- drawTrims(mixerCurrentFlightMode);
- }
-
- if (persistentData->options[4].boolValue) {
- lcdSetColor(persistentData->options[5].unsignedValue);
- lcdDrawSolidFilledRect(50, 50, 180, 170, CUSTOM_COLOR);
- }
-
- if (persistentData->options[6].boolValue) {
- lcdSetColor(persistentData->options[7].unsignedValue);
- lcdDrawSolidFilledRect(250, 50, 180, 170, CUSTOM_COLOR);
- }
-
- Layout::refresh();
-}
-
-BaseLayoutFactory layout2x4("Layout2x4", LBM_LAYOUT_2x4, OPTIONS_LAYOUT_2x4);
+BaseLayoutFactory layout2x4("Layout2x4", "2 x 4", LBM_LAYOUT_2x4, OPTIONS_LAYOUT_2x4);
diff --git a/radio/src/gui/colorlcd/layouts/mask_layout1x1.png b/radio/src/gui/colorlcd/layouts/mask_layout1x1.png
index ba76e857b..c575226dd 100644
Binary files a/radio/src/gui/colorlcd/layouts/mask_layout1x1.png and b/radio/src/gui/colorlcd/layouts/mask_layout1x1.png differ
diff --git a/radio/src/gui/colorlcd/layouts/mask_layout2+1.png b/radio/src/gui/colorlcd/layouts/mask_layout2+1.png
index 6924d82c6..9c9c7a1fe 100644
Binary files a/radio/src/gui/colorlcd/layouts/mask_layout2+1.png and b/radio/src/gui/colorlcd/layouts/mask_layout2+1.png differ
diff --git a/radio/src/gui/colorlcd/layouts/mask_layout2x1.png b/radio/src/gui/colorlcd/layouts/mask_layout2x1.png
index eac35c92a..9bb74c18e 100644
Binary files a/radio/src/gui/colorlcd/layouts/mask_layout2x1.png and b/radio/src/gui/colorlcd/layouts/mask_layout2x1.png differ
diff --git a/radio/src/gui/colorlcd/layouts/mask_layout2x2.png b/radio/src/gui/colorlcd/layouts/mask_layout2x2.png
index af1f38398..bb958745b 100644
Binary files a/radio/src/gui/colorlcd/layouts/mask_layout2x2.png and b/radio/src/gui/colorlcd/layouts/mask_layout2x2.png differ
diff --git a/radio/src/gui/colorlcd/layouts/mask_layout2x4.png b/radio/src/gui/colorlcd/layouts/mask_layout2x4.png
index 25cecf3cc..9203dcd64 100644
Binary files a/radio/src/gui/colorlcd/layouts/mask_layout2x4.png and b/radio/src/gui/colorlcd/layouts/mask_layout2x4.png differ
diff --git a/radio/src/gui/colorlcd/lcd.cpp b/radio/src/gui/colorlcd/lcd.cpp
index 4395ffa8b..fd72e916f 100644
--- a/radio/src/gui/colorlcd/lcd.cpp
+++ b/radio/src/gui/colorlcd/lcd.cpp
@@ -18,17 +18,13 @@
* GNU General Public License for more details.
*/
-#include
-#include
#include "opentx.h"
#include "strhelpers.h"
#if defined(SIMU)
-display_t displayBuf[DISPLAY_BUFFER_SIZE];
+pixel_t displayBuf[DISPLAY_BUFFER_SIZE];
#endif
-uint16_t lcdColorTable[LCD_COLOR_COUNT];
-
coord_t lcdNextPos;
uint8_t getMappedChar(uint8_t c)
@@ -73,15 +69,19 @@ uint8_t getMappedChar(uint8_t c)
result = 207 + c - 0x80;
}
#endif
+ else if (c == 0x21) // !
+ result = 0;
else if (c < 0xC0)
- result = c - 0x20;
+ result = c - 0x20 - 2;
else
- result = c - 0xC0 + 96;
- // TRACE("getMappedChar '%c' (%d) = %d", c, c, result);
+ result = c - 0xC0 + 96 - 2;
+
+// TRACE("getMappedChar '%c' (%x) = %d", c, c, result);
+
return result;
}
-int getFontPatternWidth(const uint16_t * spec, uint8_t index)
+int getFontPatternWidth(const uint16_t * spec, int index)
{
return spec[index + 2] - spec[index + 1];
}
@@ -91,23 +91,6 @@ int getCharWidth(uint8_t c, const uint16_t * spec)
return getFontPatternWidth(spec, getMappedChar(c));
}
-void lcdPutFontPattern(coord_t x, coord_t y, const uint8_t * font, const uint16_t * spec, int index, LcdFlags flags)
-{
- coord_t offset = spec[index + 1];
- coord_t width = spec[index + 2] - offset;
- if (width > 0)
- lcdDrawBitmapPattern(x, y, font, flags, offset, width);
- lcdNextPos = x + width;
-}
-
-void lcdDrawChar(coord_t x, coord_t y, char c, LcdFlags flags)
-{
- uint32_t fontindex = FONTINDEX(flags);
- const unsigned char * font = fontsTable[fontindex];
- const uint16_t * fontspecs = fontspecsTable[fontindex];
- lcdPutFontPattern(x, y, font, fontspecs, getMappedChar(c), flags);
-}
-
uint8_t getFontHeight(LcdFlags flags)
{
uint32_t fontindex = FONTINDEX(flags);
@@ -119,68 +102,32 @@ int getTextWidth(const char * s, int len, LcdFlags flags)
const uint16_t * specs = fontspecsTable[FONTINDEX(flags)];
int result = 0;
- for (int i=0; len==0 || i= 0xFE) {
+ s++;
+ c = uint8_t(*s) + ((c & 0x01) << 8) - 1;
+ if (c >= 0x101)
+ c -= 1;
+ c += 187;
+ result += getFontPatternWidth(specs, c);
+ }
+ else if (c >= 0x20) {
+ result += getCharWidth(c, specs);
+ }
+
++s;
}
+
return result;
}
-void lcdDrawTextAtIndex(coord_t x, coord_t y, const char * s, uint8_t idx, LcdFlags flags)
-{
- uint8_t length;
- length = *(s++);
- lcdDrawSizedText(x, y, s+length*idx, length, flags & ~ZCHAR);
-}
-
-void lcdDrawNumber(coord_t x, coord_t y, int32_t val, LcdFlags flags, uint8_t len, const char * prefix, const char * suffix)
-{
- char str[48+1]; // max=16 for the prefix, 16 chars for the number, 16 chars for the suffix
- char *s = str+32;
- *s = '\0';
- int idx = 0;
- int mode = MODE(flags);
- bool neg = false;
- if (val < 0) {
- val = -val;
- neg = true;
- }
- do {
- *--s = '0' + (val % 10);
- ++idx;
- val /= 10;
- if (mode!=0 && idx==mode) {
- mode = 0;
- *--s = '.';
- if (val==0)
- *--s = '0';
- }
- } while (val!=0 || mode>0 || (mode==MODE(LEADING0) && idx= 480
#define LCD_COLS 40
@@ -48,8 +49,6 @@
#define PREC2 0x30
#define MODE(flags) ((((int8_t)(flags) & 0x30) - 0x10) >> 4)
-#define ZCHAR 0x10
-
/* rect, square flags */
#define ROUND 0x04
@@ -67,7 +66,7 @@
#define DISPLAY_BUFFER_SIZE (DISPLAY_PIXELS_COUNT)
#if defined(SIMU)
-extern display_t displayBuf[DISPLAY_BUFFER_SIZE];
+extern pixel_t displayBuf[DISPLAY_BUFFER_SIZE];
#else
#define displayBuf lcd->getData()
#endif
@@ -78,136 +77,23 @@ extern display_t displayBuf[DISPLAY_BUFFER_SIZE];
extern coord_t lcdNextPos;
void lcdNextLayer();
-
-void lcdDrawChar(coord_t x, coord_t y, char c, LcdFlags flags=0);
-
-void lcdDrawTextAtIndex(coord_t x, coord_t y, const char * s, uint8_t idx, LcdFlags flags=0);
-
inline void lcdClear()
{
lcd->clear();
}
-inline void lcdDrawText(coord_t x, coord_t y, const char * s, LcdFlags attr=0)
-{
- lcd->drawText(x, y, s, attr);
-}
-
-inline void lcdDrawCenteredText(coord_t y, const char * s, LcdFlags attr=0)
-{
- lcd->drawText(LCD_W/2, y, s, attr | CENTERED);
-}
-
-inline void lcdDrawSizedText(coord_t x, coord_t y, const char * s, uint8_t len, LcdFlags attr=0)
-{
- lcd->drawSizedText(x, y, s, len, attr);
-}
-
-void lcdDrawNumber(coord_t x, coord_t y, int32_t val, LcdFlags flags=0, uint8_t len=0, const char * prefix=NULL, const char * suffix=NULL);
-
-#define SOLID 0xff
-#define DOTTED 0x55
-#define STASHED 0x33
-
#if defined(PCBX10) && !defined(SIMU)
#define PIXEL_PTR(x, y) &displayBuf[(LCD_H*LCD_W-1) - (y)*LCD_W - (x)]
#else
#define PIXEL_PTR(x, y) &displayBuf[(y)*LCD_W + (x)]
#endif
-void lcdDrawAlphaPixel(display_t * p, uint8_t opacity, uint16_t color);
-void lcdDrawPoint(coord_t x, coord_t y, LcdFlags att=0);
-
-inline void lcdDrawSolidHorizontalLine(coord_t x, coord_t y, coord_t w, LcdFlags att)
-{
- lcd->drawSolidHorizontalLine(x, y, w, att);
-}
-
-inline void lcdDrawSolidVerticalLine(coord_t x, coord_t y, coord_t h, LcdFlags att)
-{
- lcd->drawSolidVerticalLine(x, y, h, att);
-}
-
-inline void lcdDrawSolidFilledRect(coord_t x, coord_t y, coord_t w, coord_t h, LcdFlags flags)
-{
- lcd->drawSolidFilledRect(x, y, w, h, flags);
-}
-
-inline void lcdDrawHorizontalLine(coord_t x, coord_t y, coord_t w, uint8_t pat, LcdFlags att=0)
-{
- lcd->drawHorizontalLine(x, y, w, pat, att);
-}
-
-inline void lcdDrawVerticalLine(coord_t x, coord_t y, coord_t h, uint8_t pat, LcdFlags att=0)
-{
- lcd->drawVerticalLine(x, y, h, pat, att);
-}
-
-void lcdDrawLine(coord_t x1, coord_t y1, coord_t x2, coord_t y2, uint8_t pat=SOLID, LcdFlags att=0);
-
-inline void lcdDrawAlphaPixel(coord_t x, coord_t y, uint8_t opacity, uint16_t color)
-{
- display_t * p = PIXEL_PTR(x, y);
- lcdDrawAlphaPixel(p, opacity, color);
-}
-
inline void lcdSetColor(uint16_t color)
{
lcdColorTable[CUSTOM_COLOR_INDEX] = color;
}
-inline void lcdDrawSolidRect(coord_t x, coord_t y, coord_t w, coord_t h, uint8_t thickness=1, LcdFlags att=0)
-{
- lcd->drawSolidFilledRect(x, y, thickness, h, att);
- lcd->drawSolidFilledRect(x+w-thickness, y, thickness, h, att);
- lcd->drawSolidFilledRect(x, y, w, thickness, att);
- lcd->drawSolidFilledRect(x, y+h-thickness, w, thickness, att);
-}
-
-inline void lcdDrawFilledRect(coord_t x, coord_t y, coord_t w, coord_t h, uint8_t pat, LcdFlags att=0)
-{
- lcd->drawFilledRect(x, y, w, h, pat, att);
-}
-
void lcdDrawBlackOverlay();
-inline void lcdDrawRect(coord_t x, coord_t y, coord_t w, coord_t h, uint8_t thickness=1, uint8_t pat=SOLID, LcdFlags att=0)
-{
- lcd->drawRect(x, y, w, h, thickness, pat, att);
-}
-
-void lcdDrawCircle(int x0, int y0, int radius);
-void lcdDrawPie(int x0, int y0, int radius, int angle1=0, int angle2=360);
-void lcdDrawBitmapPie(int x0, int y0, const uint16_t * img, int startAngle, int endAngle);
-
-inline void lcdDrawBitmapPatternPie(coord_t x0, coord_t y0, const uint8_t * bmp, LcdFlags flags=0, int startAngle=0, int endAngle=360)
-{
- lcd->drawBitmapPatternPie(x0, y0, bmp, flags, startAngle, endAngle);
-}
-
-inline void lcdDrawSquare(coord_t x, coord_t y, coord_t w, LcdFlags att=0)
-{
- lcdDrawSolidRect(x, y, w, w, att);
-}
-
-inline int getBitmapWidth(const uint8_t * bmp)
-{
- return *((const uint16_t *)bmp);
-}
-
-inline int getBitmapHeight(const uint8_t * bmp)
-{
- return *(((const uint16_t *)bmp)+1);
-}
-
-uint8_t getMappedChar(uint8_t c);
-int getCharWidth(uint8_t c, const uint16_t * spec);
-uint8_t getFontHeight(LcdFlags flags);
-int getTextWidth(const char * s, int len=0, LcdFlags flags=0);
-
-inline void lcdDrawBitmapPattern(coord_t x, coord_t y, const uint8_t * img, LcdFlags flags=0, coord_t offset=0, coord_t width=0)
-{
- lcd->drawBitmapPattern(x, y, img, flags, offset, width);
-}
#if defined(BOOT)
#define BLINK_ON_PHASE (0)
diff --git a/radio/src/gui/libopenui/libopenui.h b/radio/src/gui/colorlcd/libopenui.h
similarity index 90%
rename from radio/src/gui/libopenui/libopenui.h
rename to radio/src/gui/colorlcd/libopenui.h
index 7251976a9..fcc7843c1 100644
--- a/radio/src/gui/libopenui/libopenui.h
+++ b/radio/src/gui/colorlcd/libopenui.h
@@ -22,6 +22,8 @@
#define _LIBOPENUI_H_
#include "libopenui_config.h"
+#include "libopenui_file.h"
+#include "font.h"
#include "window.h"
#include "mainwindow.h"
#include "static.h"
@@ -43,6 +45,10 @@
#include "page.h"
#include "menu.h"
#include "dialog.h"
+#include "fullscreen_dialog.h"
+#include "message_dialog.h"
+#include "confirm_dialog.h"
+#include "dialog.h"
#include "gridlayout.h"
#include "getset_helpers.h"
#include "curveedit.h"
diff --git a/radio/src/gui/libopenui/material-backup.cpp b/radio/src/gui/colorlcd/material-backup.cpp
similarity index 100%
rename from radio/src/gui/libopenui/material-backup.cpp
rename to radio/src/gui/colorlcd/material-backup.cpp
diff --git a/radio/src/gui/libopenui/progress.h b/radio/src/gui/colorlcd/menu_screen.cpp
similarity index 60%
rename from radio/src/gui/libopenui/progress.h
rename to radio/src/gui/colorlcd/menu_screen.cpp
index 1500e95ef..cf63db023 100644
--- a/radio/src/gui/libopenui/progress.h
+++ b/radio/src/gui/colorlcd/menu_screen.cpp
@@ -18,35 +18,27 @@
* GNU General Public License for more details.
*/
-#ifndef _PROGRESS_H_
-#define _PROGRESS_H_
+#include "opentx.h"
+#include "menu_screen.h"
+#include "screen_setup.h"
-#include "window.h"
+ScreenMenu::ScreenMenu():
+ TabsGroup(ICON_THEME)
+{
+ updateTabs();
+}
-class Progress : public Window {
- public:
- Progress(Window * parent, const rect_t & rect):
- Window(parent, rect)
- {
+void ScreenMenu::updateTabs()
+{
+ removeAllTabs();
+
+ for (int index = 0; index < MAX_CUSTOM_SCREENS; index++) {
+ if (customScreens[index]) {
+ addTab(new ScreenSetupPage(this, index));
}
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "Progress";
+ else {
+ addTab(new ScreenAddPage(this, index));
+ break;
}
-#endif
-
- void setValue(int value)
- {
- this->value = value;
- invalidate();
- }
-
- void paint(BitmapBuffer * dc) override;
-
- protected:
- int value;
-};
-
-#endif
+ }
+}
diff --git a/radio/src/gui/libopenui/progress.cpp b/radio/src/gui/colorlcd/menu_screen.h
similarity index 74%
rename from radio/src/gui/libopenui/progress.cpp
rename to radio/src/gui/colorlcd/menu_screen.h
index 8f9f5540d..81328acf0 100644
--- a/radio/src/gui/libopenui/progress.cpp
+++ b/radio/src/gui/colorlcd/menu_screen.h
@@ -18,10 +18,19 @@
* GNU General Public License for more details.
*/
-#include "progress.h"
-#include "theme.h"
+#ifndef _MENU_SCREEN_H_
+#define _MENU_SCREEN_H_
-void Progress::paint(BitmapBuffer * dc)
-{
- theme->drawProgressBar(dc, 0, 0, width(), height(), value);
-}
+#include "tabsgroup.h"
+
+class ScreenMenu: public TabsGroup {
+ friend class ScreenSetupPage;
+
+ public:
+ ScreenMenu();
+
+ protected:
+ void updateTabs();
+};
+
+#endif // _MENU_SCREEN_H_
diff --git a/radio/src/gui/libopenui/libopenui_types.h b/radio/src/gui/colorlcd/message_dialog.cpp
similarity index 57%
rename from radio/src/gui/libopenui/libopenui_types.h
rename to radio/src/gui/colorlcd/message_dialog.cpp
index cc839fe52..685bf57cd 100644
--- a/radio/src/gui/libopenui/libopenui_types.h
+++ b/radio/src/gui/colorlcd/message_dialog.cpp
@@ -18,44 +18,22 @@
* GNU General Public License for more details.
*/
-#ifndef _LIBOPEUI_TYPES_H_
-#define _LIBOPEUI_TYPES_H_
+#include "message_dialog.h"
+#include "static.h"
-#include
-
-typedef int coord_t;
-
-struct point_t
+MessageDialog::MessageDialog(const char * title, const char * message):
+ Dialog(title, {50, 73, LCD_W - 100, LCD_H - 146})
{
- coord_t x;
- coord_t y;
-};
+ new StaticText(this, {0, height() / 2, width(), PAGE_LINE_HEIGHT}, message, CENTERED);
+}
-struct rect_t
+#if defined(HARDWARE_KEYS)
+void MessageDialog::onKeyEvent(event_t event)
{
- coord_t x, y, w, h;
+ TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), event);
- constexpr coord_t left() const
- {
- return x;
+ if (event == EVT_KEY_BREAK(KEY_EXIT) || event == EVT_KEY_BREAK(KEY_ENTER)) {
+ deleteLater();
}
-
- constexpr coord_t right() const
- {
- return x + w;
- }
-
- constexpr coord_t top() const
- {
- return y;
- }
-
- constexpr coord_t bottom() const
- {
- return y + h;
- }
-};
-
-typedef uint32_t LcdFlags;
-
-#endif // _LIBOPEUI_TYPES_H_
+}
+#endif
diff --git a/radio/src/gui/libopenui/libopenui_helpers.h b/radio/src/gui/colorlcd/message_dialog.h
similarity index 65%
rename from radio/src/gui/libopenui/libopenui_helpers.h
rename to radio/src/gui/colorlcd/message_dialog.h
index 2c72d2330..904bbfe48 100644
--- a/radio/src/gui/libopenui/libopenui_helpers.h
+++ b/radio/src/gui/colorlcd/message_dialog.h
@@ -18,25 +18,23 @@
* GNU General Public License for more details.
*/
-#ifndef _LIBOPEUI_HELPERS_H_
-#define _LIBOPEUI_HELPERS_H_
+#ifndef _MESSAGE_DIALOG_H_
+#define _MESSAGE_DIALOG_H_
-template
-inline T min(T a, T b)
-{
- return a < b ? a : b;
-}
+#include "dialog.h"
-template
-inline T max(T a, T b)
-{
- return a > b ? a : b;
-}
-
-template
-inline T limit(T vmin, T x, T vmax)
-{
- return min(max(vmin, x), vmax);
-}
+class MessageDialog: public Dialog {
+ public:
+ MessageDialog(const char * title, const char * message);
+#if defined(HARDWARE_KEYS)
+ void onKeyEvent(event_t event) override;
#endif
+};
+
+inline void POPUP_INFORMATION(const char * str)
+{
+ new MessageDialog("Message", str);
+}
+
+#endif // _MESSAGE_DIALOG_H_
diff --git a/radio/src/gui/colorlcd/model_curves.cpp b/radio/src/gui/colorlcd/model_curves.cpp
index 501f5648c..d2e2a472a 100644
--- a/radio/src/gui/colorlcd/model_curves.cpp
+++ b/radio/src/gui/colorlcd/model_curves.cpp
@@ -153,13 +153,13 @@ class CurveButton : public Button {
void paint(BitmapBuffer * dc) override
{
// bounding rect
- drawSolidRect(dc, 0, 0, rect.w, rect.h, 2, hasFocus() ? SCROLLBOX_COLOR : CURVE_AXIS_COLOR);
+ dc->drawSolidRect(0, 0, rect.w, rect.h, 2, hasFocus() ? SCROLLBOX_COLOR : CURVE_AXIS_COLOR);
// curve characteristics
if (isCurveFilled(index)) {
CurveInfo &curve = g_model.curves[index];
- drawNumber(dc, 130, 5, 5 + curve.points, LEFT, 0, nullptr, STR_PTS);
- drawTextAtIndex(dc, 130, 25, STR_CURVE_TYPES, curve.type);
+ dc->drawNumber(130, 5, 5 + curve.points, LEFT, 0, nullptr, STR_PTS);
+ dc->drawTextAtIndex(130, 25, STR_CURVE_TYPES, curve.type);
if (curve.smooth)
dc->drawText(130, 45, "Smooth");
}
diff --git a/radio/src/gui/colorlcd/model_inputs.cpp b/radio/src/gui/colorlcd/model_inputs.cpp
index d83b91014..b79d487d5 100644
--- a/radio/src/gui/colorlcd/model_inputs.cpp
+++ b/radio/src/gui/colorlcd/model_inputs.cpp
@@ -310,7 +310,7 @@ void CommonInputOrMixButton::paint(BitmapBuffer * dc)
if (active)
dc->drawSolidFilledRect(2, 2, rect.w - 4, rect.h - 4, WARNING_COLOR);
paintBody(dc);
- drawSolidRect(dc, 0, 0, rect.w, rect.h, 2, hasFocus() ? SCROLLBOX_COLOR : CURVE_AXIS_COLOR);
+ dc->drawSolidRect(0, 0, rect.w, rect.h, 2, hasFocus() ? SCROLLBOX_COLOR : CURVE_AXIS_COLOR);
}
class InputLineButton : public CommonInputOrMixButton {
@@ -339,7 +339,7 @@ class InputLineButton : public CommonInputOrMixButton {
if (line.name[0]) {
dc->drawBitmap(146, 2 + FIELD_PADDING_TOP, mixerSetupLabelBitmap);
- dc->drawSizedText(166, FIELD_PADDING_TOP, line.name, sizeof(line.name), ZCHAR);
+ dc->drawSizedText(166, FIELD_PADDING_TOP, line.name, sizeof(line.name));
}
// second line ...
diff --git a/radio/src/gui/colorlcd/model_logical_switches.cpp b/radio/src/gui/colorlcd/model_logical_switches.cpp
index a1161b0d5..afbbf4893 100644
--- a/radio/src/gui/colorlcd/model_logical_switches.cpp
+++ b/radio/src/gui/colorlcd/model_logical_switches.cpp
@@ -24,19 +24,19 @@
#define SET_DIRTY() storageDirty(EE_MODEL)
-void putsEdgeDelayParam(coord_t x, coord_t y, LogicalSwitchData * ls)
-{
- lcdDrawChar(x, y, '[');
- lcdDrawNumber(lcdNextPos+2, y, lswTimerValue(ls->v2), LEFT|PREC1);
- lcdDrawChar(lcdNextPos, y, ':');
- if (ls->v3 < 0)
- lcdDrawText(lcdNextPos+3, y, "<<");
- else if (ls->v3 == 0)
- lcdDrawText(lcdNextPos+3, y, "--");
- else
- lcdDrawNumber(lcdNextPos+3, y, lswTimerValue(ls->v2+ls->v3), LEFT|PREC1);
- lcdDrawChar(lcdNextPos, y, ']');
-}
+//void putsEdgeDelayParam(coord_t x, coord_t y, LogicalSwitchData * ls)
+//{
+// lcdDrawChar(x, y, '[');
+// lcdDrawNumber(lcdNextPos+2, y, lswTimerValue(ls->v2), LEFT|PREC1);
+// lcdDrawChar(lcdNextPos, y, ':');
+// if (ls->v3 < 0)
+// lcdDrawText(lcdNextPos+3, y, "<<");
+// else if (ls->v3 == 0)
+// lcdDrawText(lcdNextPos+3, y, "--");
+// else
+// lcdDrawNumber(lcdNextPos+3, y, lswTimerValue(ls->v2+ls->v3), LEFT|PREC1);
+// lcdDrawChar(lcdNextPos, y, ']');
+//}
class LogicalSwitchEditWindow: public Page {
public:
@@ -102,7 +102,7 @@ class LogicalSwitchEditWindow: public Page {
edit2->invalidate();
});
edit1->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
- drawNumber(dc, 2, 2, lswTimerValue(value), flags | PREC1);
+ dc->drawNumber(2, 2, lswTimerValue(value), flags | PREC1);
});
edit2->setDisplayHandler([=](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
if (value < 0)
@@ -110,7 +110,7 @@ class LogicalSwitchEditWindow: public Page {
else if (value == 0)
dc->drawText(2, 2, "--", flags);
else
- drawNumber(dc, 2, 2, lswTimerValue(cs->v2 + value), flags | PREC1);
+ dc->drawNumber(2, 2, lswTimerValue(cs->v2 + value), flags | PREC1);
});
grid.nextLine();
}
@@ -127,14 +127,14 @@ class LogicalSwitchEditWindow: public Page {
new StaticText(logicalSwitchOneWindow, grid.getLabelSlot(), STR_V1);
auto timer = new NumberEdit(logicalSwitchOneWindow, grid.getFieldSlot(), -128, 122, GET_SET_DEFAULT(cs->v1));
timer->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
- drawNumber(dc, 2, 2, lswTimerValue(value), flags | PREC1);
+ dc->drawNumber(2, 2, lswTimerValue(value), flags | PREC1);
});
grid.nextLine();
new StaticText(logicalSwitchOneWindow, grid.getLabelSlot(), STR_V2);
timer = new NumberEdit(logicalSwitchOneWindow, grid.getFieldSlot(), -128, 122, GET_SET_DEFAULT(cs->v2));
timer->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
- drawNumber(dc, 2, 2, lswTimerValue(value), flags | PREC1);
+ dc->drawNumber(2, 2, lswTimerValue(value), flags | PREC1);
});
grid.nextLine();
}
@@ -265,10 +265,10 @@ class LogicalSwitchButton : public Button {
dc->drawSolidFilledRect(2, 2, rect.w-4, rect.h-4, WARNING_COLOR);
// The bounding rect
- drawSolidRect(dc, 0, 0, rect.w, rect.h, 2, hasFocus() ? SCROLLBOX_COLOR : CURVE_AXIS_COLOR);
+ dc->drawSolidRect(0, 0, rect.w, rect.h, 2, hasFocus() ? SCROLLBOX_COLOR : CURVE_AXIS_COLOR);
// CSW func
- lcdDrawTextAtIndex(col1, line1, STR_VCSWFUNC, ls->func);
+ dc->drawTextAtIndex(col1, line1, STR_VCSWFUNC, ls->func);
// CSW params
if (lsFamily == LS_FAMILY_BOOL || lsFamily == LS_FAMILY_STICKY) {
@@ -277,15 +277,15 @@ class LogicalSwitchButton : public Button {
}
else if (lsFamily == LS_FAMILY_EDGE) {
drawSwitch(dc, col1, line2, ls->v1);
- putsEdgeDelayParam(col2, line2, ls);
+ // TODO putsEdgeDelayParam(col2, line2, ls);
}
else if (lsFamily == LS_FAMILY_COMP) {
drawSource(dc, col2, line1, ls->v1, 0);
drawSource(dc, col3, line1, ls->v2, 0);
}
else if (lsFamily == LS_FAMILY_TIMER) {
- lcdDrawNumber(col2, line1, lswTimerValue(ls->v1), LEFT|PREC1);
- lcdDrawNumber(col3, line1, lswTimerValue(ls->v2), LEFT|PREC1);
+ dc->drawNumber(col2, line1, lswTimerValue(ls->v1), LEFT|PREC1);
+ dc->drawNumber(col3, line1, lswTimerValue(ls->v2), LEFT|PREC1);
}
else {
drawSource(dc, col2, line1, ls->v1, 0);
@@ -297,12 +297,12 @@ class LogicalSwitchButton : public Button {
// CSW duration
if (ls->duration > 0) {
- drawNumber(dc, col2, (lsFamily == LS_FAMILY_EDGE) ? line3 : line2, ls->duration, PREC1 | LEFT);
+ dc->drawNumber(col2, (lsFamily == LS_FAMILY_EDGE) ? line3 : line2, ls->duration, PREC1 | LEFT);
}
// CSW delay
if (lsFamily != LS_FAMILY_EDGE && ls->delay > 0) {
- drawNumber(dc, col3, (lsFamily == LS_FAMILY_EDGE) ? line3 : line2, ls->delay, PREC1 | LEFT);
+ dc->drawNumber(col3, (lsFamily == LS_FAMILY_EDGE) ? line3 : line2, ls->delay, PREC1 | LEFT);
}
}
diff --git a/radio/src/gui/colorlcd/model_mixes.cpp b/radio/src/gui/colorlcd/model_mixes.cpp
index 9c22c9e0a..481b6e3ae 100644
--- a/radio/src/gui/colorlcd/model_mixes.cpp
+++ b/radio/src/gui/colorlcd/model_mixes.cpp
@@ -252,7 +252,7 @@ class MixLineButton : public CommonInputOrMixButton {
if (line.name[0]) {
dc->drawBitmap(146, FIELD_PADDING_TOP, mixerSetupLabelBitmap);
- dc->drawSizedText(166, FIELD_PADDING_TOP, line.name, sizeof(line.name), ZCHAR);
+ dc->drawSizedText(166, FIELD_PADDING_TOP, line.name, sizeof(line.name));
}
// second line ...
diff --git a/radio/src/gui/colorlcd/model_outputs.cpp b/radio/src/gui/colorlcd/model_outputs.cpp
index bfb399747..554c37157 100644
--- a/radio/src/gui/colorlcd/model_outputs.cpp
+++ b/radio/src/gui/colorlcd/model_outputs.cpp
@@ -121,15 +121,15 @@ class OutputLineButton : public Button {
void paint(BitmapBuffer * dc) override
{
// first line
- drawNumber(dc, FIELD_PADDING_LEFT, FIELD_PADDING_TOP, output->min - 1000, PREC1);
- drawNumber(dc, 68, FIELD_PADDING_TOP, output->max + 1000, PREC1);
- drawNumber(dc, 132, FIELD_PADDING_TOP, output->offset, PREC1);
- drawNumber(dc, 226, FIELD_PADDING_TOP, PPM_CENTER + output->ppmCenter, RIGHT);
+ dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, output->min - 1000, PREC1);
+ dc->drawNumber(68, FIELD_PADDING_TOP, output->max + 1000, PREC1);
+ dc->drawNumber(132, FIELD_PADDING_TOP, output->offset, PREC1);
+ dc->drawNumber(226, FIELD_PADDING_TOP, PPM_CENTER + output->ppmCenter, RIGHT);
dc->drawText(228, FIELD_PADDING_TOP - 3, output->symetrical ? "=" : "\306");
// second line
if (output->revert) {
- drawTextAtIndex(dc, 4, PAGE_LINE_HEIGHT + FIELD_PADDING_TOP, STR_MMMINV, output->revert);
+ dc->drawTextAtIndex(4, PAGE_LINE_HEIGHT + FIELD_PADDING_TOP, STR_MMMINV, output->revert);
}
if (output->curve) {
dc->drawBitmap(68, PAGE_LINE_HEIGHT + FIELD_PADDING_TOP, mixerSetupCurveBitmap);
@@ -137,11 +137,11 @@ class OutputLineButton : public Button {
}
if (output->name[0]) {
dc->drawBitmap(146, PAGE_LINE_HEIGHT + FIELD_PADDING_TOP, mixerSetupLabelBitmap);
- dc->drawSizedText(166, PAGE_LINE_HEIGHT + FIELD_PADDING_TOP, output->name, sizeof(output->name), ZCHAR);
+ dc->drawSizedText(166, PAGE_LINE_HEIGHT + FIELD_PADDING_TOP, output->name, sizeof(output->name));
}
// bounding rect
- drawSolidRect(dc, 0, 0, rect.w, rect.h, 2, hasFocus() ? SCROLLBOX_COLOR : CURVE_AXIS_COLOR);
+ dc->drawSolidRect(0, 0, rect.w, rect.h, 2, hasFocus() ? SCROLLBOX_COLOR : CURVE_AXIS_COLOR);
}
protected:
diff --git a/radio/src/gui/colorlcd/model_setup.cpp b/radio/src/gui/colorlcd/model_setup.cpp
index 0166cee76..b4db7b4fa 100644
--- a/radio/src/gui/colorlcd/model_setup.cpp
+++ b/radio/src/gui/colorlcd/model_setup.cpp
@@ -46,7 +46,7 @@ class ChannelFailsafeBargraph: public Window {
const int lim = (g_model.extendedLimits ? (512 * LIMIT_EXT_PERCENT / 100) : 512) * 2;
coord_t x = 0;
- lcdDrawRect(x, 0, width(), height());
+ dc->drawRect(x, 0, width(), height());
const coord_t lenChannel = limit((uint8_t) 1, uint8_t((abs(channelValue) * width() / 2 + lim / 2) / lim),
uint8_t(width() / 2));
const coord_t lenFailsafe = limit((uint8_t) 1, uint8_t((abs(failsafeValue) * width() / 2 + lim / 2) / lim),
@@ -54,8 +54,8 @@ class ChannelFailsafeBargraph: public Window {
x += width() / 2;
const coord_t xChannel = (channelValue > 0) ? x : x + 1 - lenChannel;
const coord_t xFailsafe = (failsafeValue > 0) ? x : x + 1 - lenFailsafe;
- lcdDrawSolidFilledRect(xChannel, + 2, lenChannel, (height() / 2) - 3, TEXT_COLOR);
- lcdDrawSolidFilledRect(xFailsafe, (height() / 2) + 1, lenFailsafe, (height() / 2) - 3, ALARM_COLOR);
+ dc->drawSolidFilledRect(xChannel, + 2, lenChannel, (height() / 2) - 3, TEXT_COLOR);
+ dc->drawSolidFilledRect(xFailsafe, (height() / 2) + 1, lenFailsafe, (height() / 2) - 3, ALARM_COLOR);
}
protected:
@@ -130,7 +130,7 @@ class FailSafeFooter : public Window {
class FailSafePage : public PageTab {
public:
- FailSafePage(uint8_t moduleIdx) :
+ explicit FailSafePage(uint8_t moduleIdx) :
PageTab("FAILSAFE", ICON_STATS_ANALOGS),
moduleIdx(moduleIdx)
{
@@ -155,7 +155,7 @@ FailSafeMenu::FailSafeMenu(uint8_t moduleIdx) :
class RegisterDialog: public Dialog {
public:
- RegisterDialog(uint8_t moduleIdx):
+ explicit RegisterDialog(uint8_t moduleIdx):
Dialog(STR_REGISTER, {50, 73, LCD_W - 100, LCD_H - 146}),
moduleIdx(moduleIdx)
{
@@ -272,7 +272,7 @@ class BindRxChoiceMenu: public Menu {
moduleIdx(moduleIdx),
receiverIdx(receiverIdx)
{
- uint8_t receiversCount = min(reusableBuffer.moduleSetup.bindInformation.candidateReceiversCount, PXX2_MAX_RECEIVERS_PER_MODULE);
+ auto receiversCount = min(reusableBuffer.moduleSetup.bindInformation.candidateReceiversCount, PXX2_MAX_RECEIVERS_PER_MODULE);
for (uint8_t i = 0; i < receiversCount; i++) {
const char * receiverName = reusableBuffer.moduleSetup.bindInformation.candidateReceiversNames[i];
addLine(receiverName, [=]() {
@@ -437,7 +437,7 @@ class ModuleWindow : public Window {
update();
}
- ~ModuleWindow()
+ ~ModuleWindow() override
{
deleteChildren();
}
@@ -452,7 +452,7 @@ class ModuleWindow : public Window {
TextButton * registerButton = nullptr;
Choice * failSafeChoice = nullptr;
- void addChannelRange(FormGridLayout &grid, uint8_t moduleIdx)
+ void addChannelRange(FormGridLayout &grid)
{
new StaticText(this, grid.getLabelSlot(true), STR_CHANNELRANGE);
auto channelStart = new NumberEdit(this, grid.getFieldSlot(2, 0), 1,
@@ -658,7 +658,7 @@ class ModuleWindow : public Window {
// Channel Range
if (g_model.moduleData[moduleIdx].type != MODULE_TYPE_NONE) {
- addChannelRange(grid, moduleIdx); //TODO XJT2 should only set channel count of 8/16/24
+ addChannelRange(grid); //TODO XJT2 should only set channel count of 8/16/24
grid.nextLine();
}
@@ -787,13 +787,13 @@ class ModuleWindow : public Window {
// R9M Power
if (isModuleR9M_FCC(moduleIdx)) {
- new StaticText(this, grid.getLabelSlot(true), STR_RFPOWER);
+ new StaticText(this, grid.getLabelSlot(true), STR_RF_POWER);
new Choice(this, grid.getFieldSlot(), STR_R9M_FCC_POWER_VALUES, 0, R9M_FCC_POWER_MAX,
GET_SET_DEFAULT(g_model.moduleData[moduleIdx].pxx.power));
}
if (isModuleR9M_LBT(moduleIdx)) {
- new StaticText(this, grid.getLabelSlot(true), STR_RFPOWER);
+ new StaticText(this, grid.getLabelSlot(true), STR_RF_POWER);
new Choice(this, grid.getFieldSlot(), STR_R9M_LBT_POWER_VALUES, 0, R9M_LBT_POWER_MAX,
GET_DEFAULT(min(g_model.moduleData[moduleIdx].pxx.power, R9M_LBT_POWER_MAX)),
SET_DEFAULT(g_model.moduleData[moduleIdx].pxx.power));
@@ -820,7 +820,7 @@ class ModuleWindow : public Window {
};
ModelSetupPage::ModelSetupPage() :
- PageTab(STR_MENUSETUP, ICON_MODEL_SETUP)
+ PageTab(STR_MENU_MODEL_SETUP, ICON_MODEL_SETUP)
{
}
@@ -994,7 +994,7 @@ void ModelSetupPage::build(FormWindow * window)
grid.nextLine();
// Throttle warning
- new StaticText(window, grid.getLabelSlot(true), STR_THROTTLEWARNING);
+ new StaticText(window, grid.getLabelSlot(true), STR_THROTTLE_WARNING);
new CheckBox(window, grid.getFieldSlot(), GET_SET_INVERTED(g_model.disableThrottleWarning));
grid.nextLine();
diff --git a/radio/src/gui/colorlcd/model_telemetry.cpp b/radio/src/gui/colorlcd/model_telemetry.cpp
index 7e72fc0bc..761798269 100644
--- a/radio/src/gui/colorlcd/model_telemetry.cpp
+++ b/radio/src/gui/colorlcd/model_telemetry.cpp
@@ -77,9 +77,9 @@ class SensorButton : public Button {
dc->drawSolidFilledRect(2, 2, rect.w - 4, rect.h - 4, WARNING_COLOR);
}
- drawNumber(dc, 2, 1, number, LEFT, 0, NULL, ":");
+ dc->drawNumber(2, 1, number, LEFT, 0, NULL, ":");
- lcdDrawSizedText(SENSOR_COL1, line1, g_model.telemetrySensors[index].label, TELEM_LABEL_LEN, ZCHAR);
+ dc->drawSizedText(SENSOR_COL1, line1, g_model.telemetrySensors[index].label, TELEM_LABEL_LEN);
if (telemetryItem.isAvailable()) {
LcdFlags color = telemetryItem.isOld() ? ALARM_COLOR : TEXT_COLOR;
@@ -94,9 +94,9 @@ class SensorButton : public Button {
drawHexNumber(dc, SENSOR_COL3, line1, sensor->id, LEFT);
}
else if (sensor->type == TELEM_TYPE_CUSTOM && !g_model.ignoreSensorIds) {
- drawNumber(dc, SENSOR_COL3, line1, sensor->instance, LEFT);
+ dc->drawNumber(SENSOR_COL3, line1, sensor->instance, LEFT);
}
- drawSolidRect(dc, 0, 0, rect.w, rect.h, 2, hasFocus() ? SCROLLBOX_COLOR : CURVE_AXIS_COLOR);
+ dc->drawSolidRect(0, 0, rect.w, rect.h, 2, hasFocus() ? SCROLLBOX_COLOR : CURVE_AXIS_COLOR);
}
protected:
@@ -409,7 +409,7 @@ void ModelTelemetryPage::build(FormWindow * window, int8_t focusSensorIndex)
new StaticText(window, grid.getLabelSlot(true), STR_LOWALARM);
auto edit = new NumberEdit(window, grid.getFieldSlot(), -30, 30, GET_SET_DEFAULT(g_model.rssiAlarms.warning));
edit->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
- drawNumber(dc, FIELD_PADDING_LEFT, FIELD_PADDING_TOP, g_model.rssiAlarms.getWarningRssi(), flags);
+ dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, g_model.rssiAlarms.getWarningRssi(), flags);
});
window->setFirstField(edit);
grid.nextLine();
@@ -417,7 +417,7 @@ void ModelTelemetryPage::build(FormWindow * window, int8_t focusSensorIndex)
new StaticText(window, grid.getLabelSlot(true), STR_CRITICALALARM);
edit = new NumberEdit(window, grid.getFieldSlot(), -30, 30, GET_SET_DEFAULT(g_model.rssiAlarms.critical));
edit->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
- drawNumber(dc, FIELD_PADDING_LEFT, FIELD_PADDING_TOP, g_model.rssiAlarms.getCriticalRssi(), flags);
+ dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, g_model.rssiAlarms.getCriticalRssi(), flags);
});
grid.nextLine();
@@ -514,7 +514,7 @@ void ModelTelemetryPage::build(FormWindow * window, int8_t focusSensorIndex)
// Delete all sensors button
new TextButton(window, grid.getFieldSlot(), STR_DELETE_ALL_SENSORS,
[]() -> uint8_t {
- new FullScreenDialog(WARNING_TYPE_CONFIRM, STR_CONFIRMDELETE, "", [=]() {
+ new FullScreenDialog(WARNING_TYPE_CONFIRM, STR_CONFIRMDELETE, "", "", [=]() {
for (int i = 0; i < MAX_TELEMETRY_SENSORS; i++) {
delTelemetryIndex(i);
}
diff --git a/radio/src/gui/colorlcd/radio_calibration.cpp b/radio/src/gui/colorlcd/radio_calibration.cpp
index 842d90d80..b01d57b64 100644
--- a/radio/src/gui/colorlcd/radio_calibration.cpp
+++ b/radio/src/gui/colorlcd/radio_calibration.cpp
@@ -64,7 +64,7 @@ class MultiPosCalibrationWindow: public Window {
virtual void paint(BitmapBuffer * dc)
{
- drawHorizontalSlider(5, 8, rect.w - 18, 1 + (potsPos[potIndex] & 0x0f), 1, XPOTS_MULTIPOS_COUNT+1, XPOTS_MULTIPOS_COUNT, OPTION_SLIDER_TICKS | OPTION_SLIDER_BIG_TICKS | OPTION_SLIDER_NUMBER_BUTTON);
+ drawHorizontalSlider(dc, 5, 8, rect.w - 18, 1 + (potsPos[potIndex] & 0x0f), 1, XPOTS_MULTIPOS_COUNT+1, XPOTS_MULTIPOS_COUNT, OPTION_SLIDER_TICKS | OPTION_SLIDER_BIG_TICKS | OPTION_SLIDER_NUMBER_BUTTON);
}
protected:
@@ -89,9 +89,9 @@ class PotCalibrationWindow: public Window {
virtual void paint(BitmapBuffer * dc)
{
if(rect.h > rect.w)
- drawVerticalSlider(5, 8, rect.h - 18, calibratedAnalogs[potIndex], -RESX, RESX, 40, OPTION_SLIDER_TICKS | OPTION_SLIDER_BIG_TICKS | OPTION_SLIDER_SQUARE_BUTTON);
+ drawVerticalSlider(dc, 5, 8, rect.h - 18, calibratedAnalogs[potIndex], -RESX, RESX, 40, OPTION_SLIDER_TICKS | OPTION_SLIDER_BIG_TICKS | OPTION_SLIDER_SQUARE_BUTTON);
else
- drawHorizontalSlider(5, 8, rect.w - 18, calibratedAnalogs[potIndex], -RESX, RESX, 40, OPTION_SLIDER_TICKS | OPTION_SLIDER_BIG_TICKS | OPTION_SLIDER_SQUARE_BUTTON);
+ drawHorizontalSlider(dc, 5, 8, rect.w - 18, calibratedAnalogs[potIndex], -RESX, RESX, 40, OPTION_SLIDER_TICKS | OPTION_SLIDER_BIG_TICKS | OPTION_SLIDER_SQUARE_BUTTON);
}
protected:
diff --git a/radio/src/gui/colorlcd/radio_hardware.cpp b/radio/src/gui/colorlcd/radio_hardware.cpp
index 65bb69d29..694e07a83 100644
--- a/radio/src/gui/colorlcd/radio_hardware.cpp
+++ b/radio/src/gui/colorlcd/radio_hardware.cpp
@@ -152,7 +152,7 @@ void RadioHardwarePage::build(FormWindow * window)
new StaticText(window, grid.getLabelSlot(), STR_BATT_CALIB);
auto batCal = new NumberEdit(window, grid.getFieldSlot(), -127, 127, GET_SET_DEFAULT(g_eeGeneral.txVoltageCalibration));
batCal->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
- drawNumber(dc, 2, 0, getBatteryVoltage(), flags | PREC2, 0, nullptr, "V");
+ dc->drawNumber(2, 0, getBatteryVoltage(), flags | PREC2, 0, nullptr, "V");
});
batCal->setWindowFlags(REFRESH_ALWAYS);
grid.nextLine();
@@ -160,7 +160,7 @@ void RadioHardwarePage::build(FormWindow * window)
// Factory reset
new TextButton(window, grid.getFieldSlot(), STR_FACTORYRESET,
[=]() -> int8_t {
- new FullScreenDialog(WARNING_TYPE_CONFIRM, STR_CONFIRMRESET, STR_POPUPS_ENTER_EXIT, [=]() {
+ new FullScreenDialog(WARNING_TYPE_CONFIRM, STR_CONFIRMRESET, STR_POPUPS_ENTER_EXIT, "", [=]() {
storageEraseAll(false);
NVIC_SystemReset();
return 0;
diff --git a/radio/src/gui/colorlcd/radio_setup.cpp b/radio/src/gui/colorlcd/radio_setup.cpp
index bb6181e55..227ef1c3e 100644
--- a/radio/src/gui/colorlcd/radio_setup.cpp
+++ b/radio/src/gui/colorlcd/radio_setup.cpp
@@ -88,7 +88,7 @@ class DateTimeWindow : public Window {
SET_LOAD_DATETIME(&t);
});
month->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
- drawNumber(dc, FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, flags | LEADING0, 2);
+ dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, flags | LEADING0, 2);
});
/* TODO dynamic max instead of 31 ...
@@ -110,7 +110,7 @@ class DateTimeWindow : public Window {
SET_LOAD_DATETIME(&t);
});
day->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
- drawNumber(dc, FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, flags | LEADING0, 2);
+ dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, flags | LEADING0, 2);
});
grid.nextLine();
@@ -130,7 +130,7 @@ class DateTimeWindow : public Window {
SET_LOAD_DATETIME(&t);
});
hour->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
- drawNumber(dc, FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, flags | LEADING0, 2);
+ dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, flags | LEADING0, 2);
});
auto minutes = new NumberEdit(this, grid.getFieldSlot(3, 1), 0, 59,
@@ -146,7 +146,7 @@ class DateTimeWindow : public Window {
SET_LOAD_DATETIME(&t);
});
minutes->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
- drawNumber(dc, FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, flags | LEADING0, 2);
+ dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, flags | LEADING0, 2);
});
auto seconds = new NumberEdit(this, grid.getFieldSlot(3, 2), 0, 59,
@@ -162,7 +162,7 @@ class DateTimeWindow : public Window {
SET_LOAD_DATETIME(&t);
});
seconds->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
- drawNumber(dc, FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, flags | LEADING0, 2);
+ dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, flags | LEADING0, 2);
});
grid.nextLine();
getParent()->moveWindowsTop(top(), adjustHeight());
@@ -170,7 +170,7 @@ class DateTimeWindow : public Window {
};
RadioSetupPage::RadioSetupPage():
- PageTab(STR_MENURADIOSETUP, ICON_RADIO_SETUP)
+ PageTab(STR_RADIO_SETUP, ICON_RADIO_SETUP)
{
}
@@ -213,7 +213,7 @@ void RadioSetupPage::build(FormWindow * window)
grid.nextLine();
// Main volume
- new StaticText(window, grid.getLabelSlot(true), STR_SPEAKER_VOLUME);
+ new StaticText(window, grid.getLabelSlot(true), STR_VOLUME);
new Slider(window, grid.getFieldSlot(), -VOLUME_LEVEL_DEF, VOLUME_LEVEL_MAX-VOLUME_LEVEL_DEF, GET_SET_DEFAULT(g_eeGeneral.speakerVolume));
grid.nextLine();
@@ -238,7 +238,7 @@ void RadioSetupPage::build(FormWindow * window)
grid.nextLine();
// Beeps pitch
- new StaticText(window, grid.getLabelSlot(true), STR_SPKRPITCH);
+ new StaticText(window, grid.getLabelSlot(true), STR_BEEP_PITCH);
auto edit = new NumberEdit(window, grid.getFieldSlot(), 0, 300,
GET_DEFAULT(15 * g_eeGeneral.speakerPitch),
[=](int32_t newValue) {
@@ -255,7 +255,7 @@ void RadioSetupPage::build(FormWindow * window)
grid.nextLine();
// Vario volume
- new StaticText(window, grid.getLabelSlot(true), TR_SPEAKER_VOLUME);
+ new StaticText(window, grid.getLabelSlot(true), TR_VOLUME);
new Slider(window, grid.getFieldSlot(), -2, +2, GET_SET_DEFAULT(g_eeGeneral.varioVolume));
grid.nextLine();
@@ -285,7 +285,7 @@ void RadioSetupPage::build(FormWindow * window)
grid.nextLine();
// Haptic strength
- new StaticText(window, grid.getLabelSlot(true), STR_HAPTICSTRENGTH);
+ new StaticText(window, grid.getLabelSlot(true), STR_STRENGTH);
new Slider(window, grid.getFieldSlot(), -2, +2, GET_SET_DEFAULT(g_eeGeneral.hapticStrength));
grid.nextLine();
}
@@ -308,7 +308,7 @@ void RadioSetupPage::build(FormWindow * window)
grid.nextLine();
// RSSI shutdown alarm
- new StaticText(window, grid.getLabelSlot(true), STR_RSSISHUTDOWNALARM);
+ new StaticText(window, grid.getLabelSlot(true), STR_RSSI_SHUTDOWN_ALARM);
new CheckBox(window, grid.getFieldSlot(), GET_SET_INVERTED(g_eeGeneral.disableRssiPoweroffAlarm));
grid.nextLine();
@@ -375,7 +375,7 @@ void RadioSetupPage::build(FormWindow * window)
grid.nextLine();
// GPS format
- new StaticText(window, grid.getLabelSlot(true), STR_GPSCOORD);
+ new StaticText(window, grid.getLabelSlot(true), STR_GPS_COORDS_FORMAT);
new Choice(window, grid.getFieldSlot(), STR_GPSFORMAT, 0, 1, GET_SET_DEFAULT(g_eeGeneral.gpsFormat));
grid.nextLine();
}
@@ -388,12 +388,12 @@ void RadioSetupPage::build(FormWindow * window)
#endif
// Country code
- new StaticText(window, grid.getLabelSlot(), STR_COUNTRYCODE);
- new Choice(window, grid.getFieldSlot(), STR_COUNTRYCODES, 0, 2, GET_SET_DEFAULT(g_eeGeneral.countryCode));
+ new StaticText(window, grid.getLabelSlot(), STR_COUNTRY_CODE);
+ new Choice(window, grid.getFieldSlot(), STR_COUNTRY_CODES, 0, 2, GET_SET_DEFAULT(g_eeGeneral.countryCode));
grid.nextLine();
// Audio language
- new StaticText(window, grid.getLabelSlot(), STR_VOICELANG);
+ new StaticText(window, grid.getLabelSlot(), STR_VOICE_LANGUAGE);
auto choice = new Choice(window, grid.getFieldSlot(), nullptr, 0, DIM(languagePacks) - 2, GET_VALUE(currentLanguagePackIdx),
[](uint8_t newValue) {
currentLanguagePackIdx = newValue;
@@ -406,7 +406,7 @@ void RadioSetupPage::build(FormWindow * window)
grid.nextLine();
// Imperial units
- new StaticText(window, grid.getLabelSlot(), STR_UNITSSYSTEM);
+ new StaticText(window, grid.getLabelSlot(), STR_UNITS_SYSTEM);
new Choice(window, grid.getFieldSlot(), STR_VUNITSSYSTEM, 0, 1, GET_SET_DEFAULT(g_eeGeneral.imperial));
grid.nextLine();
diff --git a/radio/src/gui/colorlcd/radio_spectrum_analyser.cpp b/radio/src/gui/colorlcd/radio_spectrum_analyser.cpp
index b3c8e71a5..2656767e6 100644
--- a/radio/src/gui/colorlcd/radio_spectrum_analyser.cpp
+++ b/radio/src/gui/colorlcd/radio_spectrum_analyser.cpp
@@ -50,7 +50,7 @@ class SpectrumWindow : public Window
}
coord_t y = max(FH, SPECTRUM_HEIGHT - peak_y - FH);
- drawNumber(dc, min(100, peak_x), y, ((reusableBuffer.spectrumAnalyser.freq - reusableBuffer.spectrumAnalyser.span / 2) + peak_x * (reusableBuffer.spectrumAnalyser.span / 128)) / 1000000, TINSIZE);
+ dc->drawNumber(min(100, peak_x), y, ((reusableBuffer.spectrumAnalyser.freq - reusableBuffer.spectrumAnalyser.span / 2) + peak_x * (reusableBuffer.spectrumAnalyser.span / 128)) / 1000000, TINSIZE);
dc->drawText(lcdNextPos, y, "M", TINSIZE);
}
diff --git a/radio/src/gui/colorlcd/radio_trainer.cpp b/radio/src/gui/colorlcd/radio_trainer.cpp
index 20258fb6d..3d2a12f20 100644
--- a/radio/src/gui/colorlcd/radio_trainer.cpp
+++ b/radio/src/gui/colorlcd/radio_trainer.cpp
@@ -59,7 +59,7 @@ void RadioTrainerPage::build(FormWindow * window)
new StaticText(window, grid.getLabelSlot(), STR_MULTIPLIER);
auto multiplier = new NumberEdit(window, grid.getFieldSlot(3, 0), -10, 40, GET_SET_DEFAULT(g_eeGeneral.PPM_Multiplier));
multiplier->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
- drawNumber(dc, FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value+10, flags | PREC1, 0);
+ dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value+10, flags | PREC1, 0);
});
grid.nextLine();
grid.nextLine();
diff --git a/radio/src/gui/colorlcd/rle.cpp b/radio/src/gui/colorlcd/rle.cpp
deleted file mode 100644
index e4be583a5..000000000
--- a/radio/src/gui/colorlcd/rle.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-#include "rle.h"
-#include "debug.h"
-
-#include
-
-int rle_decode_8bit(unsigned char* dest, unsigned int dest_size, const unsigned char* src)
-{
- //unsigned char count = 0;
- unsigned char prev_byte = 0;
- bool prev_byte_valid = false;
-
- const unsigned char* dest_end = dest + dest_size;
- unsigned char* d = dest;
-
- while(d < dest_end) {
-
- *d++ = *src;
- if (prev_byte_valid && (*src == prev_byte)) {
-
- src++;
-
- if (d + *src > dest + dest_size) {
- TRACE("rle_decode_8bit: destination overflow!\n");
- return -1;
- }
-
- memset(d, prev_byte, *src);
- d += *src++;
- prev_byte_valid = false;
- }
- else {
- prev_byte = *src++;
- prev_byte_valid = true;
- }
- }
-
- return d - dest;
-}
diff --git a/radio/src/gui/colorlcd/rle.h b/radio/src/gui/colorlcd/rle.h
deleted file mode 100644
index 4781216f0..000000000
--- a/radio/src/gui/colorlcd/rle.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _rle_h_
-#define _rle_h_
-
-int rle_decode_8bit(unsigned char* dest, unsigned int dest_size, const unsigned char* src);
-
-
-#endif
diff --git a/radio/src/gui/colorlcd/screen_setup.cpp b/radio/src/gui/colorlcd/screen_setup.cpp
new file mode 100644
index 000000000..09d1631f3
--- /dev/null
+++ b/radio/src/gui/colorlcd/screen_setup.cpp
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) OpenTX
+ *
+ * Based on code named
+ * th9x - http://code.google.com/p/th9x
+ * er9x - http://code.google.com/p/er9x
+ * gruvin9x - http://code.google.com/p/gruvin9x
+ *
+ * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * 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.
+ */
+
+#include
+#include "screen_setup.h"
+#include "opentx.h"
+
+#define SET_DIRTY() storageDirty(EE_MODEL)
+
+ScreenAddPage::ScreenAddPage(ScreenMenu * menu, uint8_t pageIndex):
+ PageTab("", ICON_THEME_ADD_VIEW),
+ menu(menu),
+ pageIndex(pageIndex)
+{
+ setTitle(STR_ADD_MAIN_VIEW);
+}
+
+void ScreenAddPage::build(FormWindow * window)
+{
+ auto button = new TextButton(window, {LCD_W / 2 - 100, (window->height() - 24) / 2, 200, 24}, STR_ADD_MAIN_VIEW);
+ button->setPressHandler([=]() {
+ const LayoutFactory * factory = getRegisteredLayouts().front();
+ customScreens[pageIndex] = factory->create(&g_model.screenData[pageIndex].layoutData);
+ strncpy(g_model.screenData[pageIndex].layoutName, factory->getId(), sizeof(g_model.screenData[pageIndex].layoutName));
+ menu->removeTab(pageIndex);
+ menu->addTab(new ScreenSetupPage(menu, pageIndex));
+ menu->setCurrentTab(pageIndex);
+ if (pageIndex < MAX_CUSTOM_SCREENS - 1) {
+ menu->addTab(new ScreenAddPage(menu, pageIndex + 1));
+ }
+ storageDirty(EE_MODEL);
+ return 0;
+ });
+}
+
+class LayoutChoice: public FormField {
+ public:
+ LayoutChoice(Window * parent, const rect_t & rect, std::function getValue, std::function setValue):
+ FormField(parent, {rect.x, rect.y, 59, 33}),
+ getValue(std::move(getValue)),
+ setValue(std::move(setValue))
+ {
+ }
+
+ void paint(BitmapBuffer * dc) override
+ {
+ FormField::paint(dc);
+ auto layout = getValue();
+ layout->drawThumb(dc, 4, 4, editMode ? TEXT_INVERTED_COLOR : LINE_COLOR);
+ }
+
+#if defined(HARDWARE_KEYS)
+ void onKeyEvent(event_t event) override
+ {
+ TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), event);
+
+ if (event == EVT_KEY_BREAK(KEY_ENTER)) {
+ editMode = true;
+ invalidate();
+ openMenu();
+ }
+ else {
+ FormField::onKeyEvent(event);
+ }
+ }
+#endif
+
+ void openMenu()
+ {
+ auto menu = new Menu();
+
+ for (auto layout: getRegisteredLayouts()) {
+ menu->addLine([=](BitmapBuffer *dc, coord_t x, coord_t y, LcdFlags flags) {
+ layout->drawThumb(dc, x + 2, y + 2, flags);
+ dc->drawText(65, y + 5, layout->getName(), flags);
+ }, [=]() {
+ setValue(layout);
+ });
+ }
+
+ auto it = std::find(getRegisteredLayouts().begin(), getRegisteredLayouts().end(), getValue());
+ menu->select(std::distance(getRegisteredLayouts().begin(), it));
+
+ menu->setCloseHandler([=]() {
+ editMode = false;
+ setFocus();
+ });
+ }
+
+ protected:
+ std::function getValue;
+ std::function setValue;
+};
+
+ScreenSetupPage::ScreenSetupPage(ScreenMenu * menu, uint8_t pageIndex):
+ PageTab("", ICON_THEME_VIEW1 + pageIndex),
+ menu(menu),
+ pageIndex(pageIndex)
+{
+ char title[] = "Main view X";
+ title[sizeof(title) - 2] = '1' + pageIndex;
+ setTitle(title);
+}
+
+void ScreenSetupPage::build(FormWindow * window)
+{
+ FormGridLayout grid;
+ grid.spacer(PAGE_PADDING);
+
+ // Layout choice...
+ new StaticText(window, grid.getLabelSlot(false), STR_LAYOUT);
+ auto layoutSlot = grid.getFieldSlot();
+ layoutSlot.h = 2 * PAGE_LINE_HEIGHT - 1;
+ layoutChoice = new LayoutChoice(window, layoutSlot, GET_VALUE(customScreens[pageIndex]->getFactory()), [=](const LayoutFactory *factory) {
+ delete customScreens[pageIndex];
+ customScreens[pageIndex] = factory->create(&g_model.screenData[pageIndex].layoutData);
+ strncpy(g_model.screenData[pageIndex].layoutName, factory->getId(), sizeof(g_model.screenData[pageIndex].layoutName));
+ SET_DIRTY();
+ updateLayoutOptions();
+ });
+ grid.nextLine(layoutChoice->height());
+
+ // Setup widgets button...
+ setupWidgetsButton = new TextButton(window, grid.getFieldSlot(), STR_SETUP_WIDGETS);
+ setupWidgetsButton->setPressHandler([=]() {
+// auto setupWidgetsPage = new SetupWidgetsPage();
+// setupWidgetsPage->setCloseHandler([=]() {
+// setupWidgetsButton->setFocus();
+// });
+ return 0;
+ });
+ grid.nextLine();
+
+ // Dynamic options window...
+ optionsWindow = new Window(window, {0, grid.getWindowHeight(), LCD_W, 0}, FORWARD_SCROLL);
+ grid.addWindow(optionsWindow);
+ updateLayoutOptions();
+}
+
+void ScreenSetupPage::updateLayoutOptions()
+{
+ FormGridLayout grid;
+ optionsWindow->clear();
+ FormField::setCurrentField(setupWidgetsButton); // next field will be linked to this button
+
+ auto screen = customScreens[pageIndex];
+
+ // Layout options...
+ int index = 0;
+ for (auto * option = screen->getFactory()->getOptions(); option->name; option++, index++) {
+ ZoneOptionValue * value = screen->getOptionValue(index);
+
+ // Option label
+ new StaticText(optionsWindow, grid.getLabelSlot(false), option->name);
+
+ // Option value
+ switch (option->type) {
+ case ZoneOption::Bool:
+ new CheckBox(optionsWindow, grid.getFieldSlot(), GET_SET_DEFAULT(value->boolValue));
+ break;
+
+ case ZoneOption::Color:
+ new ColorEdit(optionsWindow, grid.getFieldSlot(), GET_SET_DEFAULT(value->unsignedValue));
+ break;
+
+ default:
+ break;
+ }
+ grid.nextLine();
+ }
+
+ if (pageIndex > 0 || customScreens[1]) {
+ auto button = new TextButton(optionsWindow, grid.getFieldSlot(), STR_REMOVE_SCREEN);
+ button->setPressHandler([=]() {
+ if (pageIndex < MAX_CUSTOM_SCREENS - 1) {
+ memmove(&g_model.screenData[pageIndex], &g_model.screenData[pageIndex + 1], sizeof(CustomScreenData) * (MAX_CUSTOM_SCREENS - pageIndex - 1));
+ }
+ memset(&g_model.screenData[MAX_CUSTOM_SCREENS - 1], 0, sizeof(CustomScreenData));
+ loadCustomScreens();
+ menu->updateTabs();
+ storageDirty(EE_MODEL);
+ return 0;
+ });
+ }
+
+ optionsWindow->adjustHeight();
+ optionsWindow->getParent()->adjustInnerHeight();
+
+ FormField::link(FormField::getCurrentField(), layoutChoice);
+}
diff --git a/radio/src/gui/libopenui/keyboard_number.h b/radio/src/gui/colorlcd/screen_setup.h
similarity index 54%
rename from radio/src/gui/libopenui/keyboard_number.h
rename to radio/src/gui/colorlcd/screen_setup.h
index 7fb5bde29..f37757391 100644
--- a/radio/src/gui/libopenui/keyboard_number.h
+++ b/radio/src/gui/colorlcd/screen_setup.h
@@ -18,38 +18,31 @@
* GNU General Public License for more details.
*/
-#ifndef _KEYBOARD_NUMBER_H_
-#define _KEYBOARD_NUMBER_H_
-
-#include "keyboard_base.h"
-#include "basenumberedit.h"
-
-class NumberKeyboard : public Keyboard {
- friend class BaseNumberEdit;
+#include "menu_screen.h"
+class ScreenAddPage: public PageTab {
public:
- NumberKeyboard();
+ ScreenAddPage(ScreenMenu * menu, uint8_t pageIndex);
- ~NumberKeyboard() override;
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "NumberKeyboard";
- }
-#endif
-
- static NumberKeyboard * instance()
- {
- if (!_instance)
- _instance = new NumberKeyboard();
- return _instance;
- }
-
- void paint(BitmapBuffer * dc) override;
+ void build(FormWindow * window) override;
protected:
- static NumberKeyboard * _instance;
+ ScreenMenu * menu;
+ uint8_t pageIndex;
};
-#endif // _KEYBOARD_NUMBER_H_
\ No newline at end of file
+class ScreenSetupPage: public PageTab {
+ public:
+ ScreenSetupPage(ScreenMenu * menu, uint8_t pageIndex);
+
+ void build(FormWindow * window) override;
+
+ protected:
+ ScreenMenu * menu;
+ uint8_t pageIndex;
+ Window * optionsWindow = nullptr;
+ TextButton * setupWidgetsButton = nullptr;
+ FormField * layoutChoice = nullptr;
+
+ void updateLayoutOptions();
+};
diff --git a/radio/src/gui/colorlcd/screens_setup.cpp b/radio/src/gui/colorlcd/screens_setup_old.cpp
similarity index 99%
rename from radio/src/gui/colorlcd/screens_setup.cpp
rename to radio/src/gui/colorlcd/screens_setup_old.cpp
index 749bd50c2..cded00d1b 100644
--- a/radio/src/gui/colorlcd/screens_setup.cpp
+++ b/radio/src/gui/colorlcd/screens_setup_old.cpp
@@ -684,6 +684,6 @@ bool menuScreenAdd(event_t event)
return false;
}
- SIMPLE_MENU_WITH_OPTIONS(STR_ADDMAINVIEW, THEME_ICONS, menuTabScreensSetup, menuPageCount, menuPageCount-1, 0);
+ SIMPLE_MENU_WITH_OPTIONS(STR_ADD_MAIN_VIEW, THEME_ICONS, menuTabScreensSetup, menuPageCount, menuPageCount-1, 0);
return true;
}
diff --git a/radio/src/gui/libopenui/sourcechoice.cpp b/radio/src/gui/colorlcd/sourcechoice.cpp
similarity index 100%
rename from radio/src/gui/libopenui/sourcechoice.cpp
rename to radio/src/gui/colorlcd/sourcechoice.cpp
diff --git a/radio/src/gui/libopenui/sourcechoice.h b/radio/src/gui/colorlcd/sourcechoice.h
similarity index 100%
rename from radio/src/gui/libopenui/sourcechoice.h
rename to radio/src/gui/colorlcd/sourcechoice.h
diff --git a/radio/src/gui/colorlcd/special_functions.cpp b/radio/src/gui/colorlcd/special_functions.cpp
index 5c836f8aa..9c6349ba2 100644
--- a/radio/src/gui/colorlcd/special_functions.cpp
+++ b/radio/src/gui/colorlcd/special_functions.cpp
@@ -109,7 +109,7 @@ class SpecialFunctionEditPage : public Page {
break;
case FUNC_VOLUME:
- new StaticText(specialFunctionOneWindow, grid.getLabelSlot(), STR_SPEAKER_VOLUME);
+ new StaticText(specialFunctionOneWindow, grid.getLabelSlot(), STR_VOLUME);
new SourceChoice(specialFunctionOneWindow, grid.getFieldSlot(), 0, MIXSRC_LAST_CH, GET_SET_DEFAULT(CFN_PARAM(cfn)));
grid.nextLine();
break;
@@ -176,7 +176,7 @@ class SpecialFunctionEditPage : public Page {
new StaticText(specialFunctionOneWindow, grid.getLabelSlot(), STR_VALUE);
auto edit = new NumberEdit(specialFunctionOneWindow, grid.getFieldSlot(), 0, 255, GET_SET_DEFAULT(CFN_PARAM(cfn)));
edit->setDisplayHandler([=](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
- lcdDrawNumber(2, 2, CFN_PARAM(cfn), PREC1, sizeof(CFN_PARAM(cfn)), nullptr, "s");
+ dc->drawNumber(2, 2, CFN_PARAM(cfn), PREC1, sizeof(CFN_PARAM(cfn)), nullptr, "s");
});
break;
}
@@ -192,11 +192,11 @@ class SpecialFunctionEditPage : public Page {
auto repeat = new NumberEdit(specialFunctionOneWindow, grid.getFieldSlot(2, 1), -1, 60/CFN_PLAY_REPEAT_MUL, GET_SET_DEFAULT(CFN_PLAY_REPEAT(cfn)));
repeat->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) {
if (value == 0)
- lcdDrawText(3, 0, "1x", flags);
+ dc->drawText(3, 0, "1x", flags);
else if (value == CFN_PLAY_REPEAT_NOSTART)
- lcdDrawText(3, 0, "!1x", flags);
+ dc->drawText(3, 0, "!1x", flags);
else
- drawNumber(dc, 3, 0, value * CFN_PLAY_REPEAT_MUL, flags, 0, nullptr, "s");
+ dc->drawNumber(3, 0, value * CFN_PLAY_REPEAT_MUL, flags, 0, nullptr, "s");
});
}
@@ -297,7 +297,7 @@ class SpecialFunctionButton : public Button {
if (CFN_EMPTY(cfn))
return;
- lcdDrawTextAtIndex(col2, line1, STR_VFSWFUNC, func, 0);
+ dc->drawTextAtIndex(col2, line1, STR_VFSWFUNC, func, 0);
int16_t val_min = 0;
int16_t val_max = 255;
@@ -305,7 +305,7 @@ class SpecialFunctionButton : public Button {
case FUNC_OVERRIDE_CHANNEL:
drawChn(dc, col1, line2, CFN_CH_INDEX(cfn) + 1, 0);
getMixSrcRange(MIXSRC_FIRST_CH, val_min, val_max);
- lcdDrawNumber(col2, line2, CFN_PARAM(cfn));
+ dc->drawNumber(col2, line2, CFN_PARAM(cfn));
break;
case FUNC_TRAINER:
@@ -314,11 +314,11 @@ class SpecialFunctionButton : public Button {
case FUNC_RESET:
if (CFN_PARAM(cfn) < FUNC_RESET_PARAM_FIRST_TELEM) {
- lcdDrawTextAtIndex(col1, line2, STR_VFSWRESET, CFN_PARAM(cfn));
+ dc->drawTextAtIndex(col1, line2, STR_VFSWRESET, CFN_PARAM(cfn));
}
else {
TelemetrySensor * sensor = &g_model.telemetrySensors[CFN_PARAM(cfn) - FUNC_RESET_PARAM_FIRST_TELEM];
- lcdDrawSizedText(col1, line2, sensor->label, TELEM_LABEL_LEN, ZCHAR);
+ dc->drawSizedText(col1, line2, sensor->label, TELEM_LABEL_LEN);
}
break;
@@ -327,16 +327,16 @@ class SpecialFunctionButton : public Button {
break;
case FUNC_PLAY_SOUND:
- lcdDrawTextAtIndex(col1, line2, STR_FUNCSOUNDS, CFN_PARAM(cfn));
+ dc->drawTextAtIndex(col1, line2, STR_FUNCSOUNDS, CFN_PARAM(cfn));
break;
case FUNC_PLAY_TRACK:
case FUNC_BACKGND_MUSIC:
case FUNC_PLAY_SCRIPT:
if (ZEXIST(cfn->play.name))
- lcdDrawSizedText(col1, line2, cfn->play.name, sizeof(cfn->play.name), 0);
+ dc->drawSizedText(col1, line2, cfn->play.name, sizeof(cfn->play.name), 0);
else
- lcdDrawTextAtIndex(col1, line2, STR_VCSWFUNC, 0, 0);
+ dc->drawTextAtIndex(col1, line2, STR_VCSWFUNC, 0, 0);
break;
case FUNC_SET_TIMER:
@@ -344,7 +344,7 @@ class SpecialFunctionButton : public Button {
break;
case FUNC_SET_FAILSAFE:
- lcdDrawTextAtIndex(col1, line2, "\004Int.Ext.", CFN_PARAM(cfn), 0);
+ dc->drawTextAtIndex(col1, line2, "\004Int.Ext.", CFN_PARAM(cfn), 0);
break;
case FUNC_PLAY_VALUE:
@@ -352,35 +352,35 @@ class SpecialFunctionButton : public Button {
break;
case FUNC_HAPTIC:
- lcdDrawNumber(col1, line2, CFN_PARAM(cfn), 0);
+ dc->drawNumber(col1, line2, CFN_PARAM(cfn), 0);
break;
case FUNC_LOGS:
- lcdDrawNumber(col3, line1, CFN_PARAM(cfn), PREC1, sizeof(CFN_PARAM(cfn)), nullptr, "s");
+ dc->drawNumber(col3, line1, CFN_PARAM(cfn), PREC1, sizeof(CFN_PARAM(cfn)), nullptr, "s");
break;
}
if (HAS_ENABLE_PARAM(func)) {
- drawCheckBox(col3, line2, CFN_ACTIVE(cfn), 0);
+ drawCheckBox(dc, col3, line2, CFN_ACTIVE(cfn), 0);
}
else if (HAS_REPEAT_PARAM(func)) {
if (CFN_PLAY_REPEAT(cfn) == 0) {
- lcdDrawText(col3, line2, "1x", 0);
+ dc->drawText(col3, line2, "1x", 0);
}
else if (CFN_PLAY_REPEAT(cfn) == CFN_PLAY_REPEAT_NOSTART) {
- lcdDrawText(col3, line2, "!1x", 0);
+ dc->drawText(col3, line2, "!1x", 0);
}
else {
- lcdDrawNumber(col3 + 12, line2, CFN_PLAY_REPEAT(cfn) * CFN_PLAY_REPEAT_MUL, 0 | RIGHT, 0, nullptr, "s");
+ dc->drawNumber(col3 + 12, line2, CFN_PLAY_REPEAT(cfn) * CFN_PLAY_REPEAT_MUL, 0 | RIGHT, 0, nullptr, "s");
}
}
}
- virtual void paint(BitmapBuffer * dc) override
+ void paint(BitmapBuffer * dc) override
{
if (active)
dc->drawSolidFilledRect(2, 2, rect.w - 4, rect.h - 4, WARNING_COLOR);
paintSpecialFunctionLine(dc);
- drawSolidRect(dc, 0, 0, rect.w, rect.h, 2, hasFocus() ? SCROLLBOX_COLOR : CURVE_AXIS_COLOR);
+ dc->drawSolidRect(0, 0, rect.w, rect.h, 2, hasFocus() ? SCROLLBOX_COLOR : CURVE_AXIS_COLOR);
}
protected:
diff --git a/radio/src/gui/libopenui/switchchoice.cpp b/radio/src/gui/colorlcd/switchchoice.cpp
similarity index 100%
rename from radio/src/gui/libopenui/switchchoice.cpp
rename to radio/src/gui/colorlcd/switchchoice.cpp
diff --git a/radio/src/gui/libopenui/switchchoice.h b/radio/src/gui/colorlcd/switchchoice.h
similarity index 100%
rename from radio/src/gui/libopenui/switchchoice.h
rename to radio/src/gui/colorlcd/switchchoice.h
diff --git a/radio/src/gui/colorlcd/theme.cpp b/radio/src/gui/colorlcd/theme.cpp
index 8d7abff3e..49d09a5a7 100644
--- a/radio/src/gui/colorlcd/theme.cpp
+++ b/radio/src/gui/colorlcd/theme.cpp
@@ -20,25 +20,26 @@
#include "opentx.h"
-const BitmapBuffer * Theme::asterisk = NULL;
-const BitmapBuffer * Theme::question = NULL;
-const BitmapBuffer * Theme::busy = NULL;
+extern ThemeBase * defaultTheme;
+const BitmapBuffer * ThemeBase::asterisk = NULL;
+const BitmapBuffer * ThemeBase::question = NULL;
+const BitmapBuffer * ThemeBase::busy = NULL;
-std::list & getRegisteredThemes()
+std::list & getRegisteredThemes()
{
- static std::list themes;
+ static std::list themes;
return themes;
}
-void registerTheme(Theme * theme)
+void registerTheme(ThemeBase * theme)
{
TRACE("register theme %s", theme->getName());
getRegisteredThemes().push_back(theme);
}
-void Theme::init() const
+void ThemeBase::init() const
{
- memset(&g_eeGeneral.themeData, 0, sizeof(Theme::PersistentData));
+ memset(&g_eeGeneral.themeData, 0, sizeof(ThemeBase::PersistentData));
if (options) {
int i = 0;
for (const ZoneOption * option = options; option->name; option++, i++) {
@@ -48,19 +49,22 @@ void Theme::init() const
}
}
-void Theme::load() const
+void ThemeBase::load() const
{
- if (!asterisk) asterisk = BitmapBuffer::load(getThemePath("asterisk.bmp"));
- if (!question) question = BitmapBuffer::load(getThemePath("question.bmp"));
- if (!busy) busy = BitmapBuffer::load(getThemePath("busy.bmp"));
+ if (!asterisk)
+ asterisk = BitmapBuffer::load(getFilePath("asterisk.bmp"));
+ if (!question)
+ question = BitmapBuffer::load(getFilePath("question.bmp"));
+ if (!busy)
+ busy = BitmapBuffer::load(getFilePath("busy.bmp"));
}
-ZoneOptionValue * Theme::getOptionValue(unsigned int index) const
+ZoneOptionValue * ThemeBase::getOptionValue(unsigned int index) const
{
return &g_eeGeneral.themeData.options[index];
}
-const char * Theme::getFilePath(const char * filename) const
+const char * ThemeBase::getFilePath(const char * filename) const
{
static char path[_MAX_LFN+1] = THEMES_PATH "/";
strcpy(path + sizeof(THEMES_PATH), getName());
@@ -70,7 +74,7 @@ const char * Theme::getFilePath(const char * filename) const
return path;
}
-void Theme::drawThumb(coord_t x, coord_t y, uint32_t flags)
+void ThemeBase::drawThumb(BitmapBuffer * dc, coord_t x, coord_t y, uint32_t flags)
{
#define THUMB_WIDTH 51
#define THUMB_HEIGHT 31
@@ -79,16 +83,16 @@ void Theme::drawThumb(coord_t x, coord_t y, uint32_t flags)
}
lcd->drawBitmap(x, y, thumb);
if (flags == LINE_COLOR) {
- lcdDrawFilledRect(x, y, THUMB_WIDTH, THUMB_HEIGHT, SOLID, OVERLAY_COLOR | OPACITY(10));
+ dc->drawFilledRect(x, y, THUMB_WIDTH, THUMB_HEIGHT, SOLID, OVERLAY_COLOR | OPACITY(10));
}
}
-void Theme::drawBackground(BitmapBuffer * dc) const
+void ThemeBase::drawBackground(BitmapBuffer * dc) const
{
dc->drawSolidFilledRect(0, 0, LCD_W, LCD_H, TEXT_BGCOLOR);
}
-void Theme::drawMessageBox(const char * title, const char * text, const char * action, uint32_t type) const
+void ThemeBase::drawMessageBox(const char * title, const char * text, const char * action, uint32_t type) const
{
}
@@ -127,9 +131,62 @@ void Theme::drawMessageBox(const char * title, const char * text, const char * a
// }
//}
-Theme * getTheme(const char * name)
+void ThemeBase::drawCheckBox(BitmapBuffer * dc, bool value, bool focus) const
{
- std::list::const_iterator it = getRegisteredThemes().cbegin();
+ if (focus) {
+ dc->drawSolidFilledRect(0, 2, 16, 16, TEXT_INVERTED_BGCOLOR);
+ if (value) {
+ dc->drawSolidFilledRect(2, 4, 12, 12, TEXT_BGCOLOR);
+ dc->drawSolidFilledRect(3, 5, 10, 10, SCROLLBOX_COLOR);
+ }
+ else {
+ dc->drawSolidFilledRect(2, 4, 12, 12, TEXT_BGCOLOR);
+ }
+ }
+ else {
+ if (value) {
+ dc->drawSolidFilledRect(2, 4, 12, 12, SCROLLBOX_COLOR);
+ dc->drawSolidRect(0, 2, 16, 16, 1, CURVE_AXIS_COLOR);
+ }
+ else {
+ dc->drawSolidRect(0, 2, 16, 16, 1, CURVE_AXIS_COLOR);
+ }
+ }
+}
+
+void ThemeBase::drawSlider(BitmapBuffer * dc, int vmin, int vmax, int value, const rect_t & rect, bool edit, bool focus) const
+{
+ int val = limit(vmin, value, vmax);
+ int w = divRoundClosest((rect.w - 16) * (val - vmin), vmax - vmin);
+
+ if (edit) {
+ dc->drawBitmapPattern(0, 11, LBM_SLIDER_BAR_LEFT, TEXT_INVERTED_BGCOLOR);
+ dc->drawSolidFilledRect(4, 11, rect.w - 8, 4, TEXT_INVERTED_BGCOLOR);
+ dc->drawBitmapPattern(rect.w - 4, 11, LBM_SLIDER_BAR_RIGHT, TEXT_INVERTED_BGCOLOR);
+ }
+ else {
+ dc->drawBitmapPattern(0, 11, LBM_SLIDER_BAR_LEFT, LINE_COLOR);
+ dc->drawSolidFilledRect(4, 11, rect.w - 8, 4, LINE_COLOR);
+ dc->drawBitmapPattern(rect.w - 4, 11, LBM_SLIDER_BAR_RIGHT, LINE_COLOR);
+ }
+
+ dc->drawBitmapPattern(w, 5, LBM_SLIDER_POINT_OUT, TEXT_COLOR);
+ dc->drawBitmapPattern(w, 5, LBM_SLIDER_POINT_MID, TEXT_BGCOLOR);
+ // if ((options & INVERS) && (!(options & BLINK) || !BLINK_ON_PHASE))
+ if (focus) {
+ dc->drawBitmapPattern(w, 5, LBM_SLIDER_POINT_IN, TEXT_INVERTED_BGCOLOR);
+ }
+}
+
+void ThemeBase::drawPageHeader(BitmapBuffer * dc, const PageHeader * header) const
+{
+ drawMenuBackground(dc, header->getIcon(), "");
+ dc->drawSolidFilledRect(MENU_HEADER_HEIGHT, 0, LCD_W - MENU_HEADER_HEIGHT, MENU_HEADER_HEIGHT, HEADER_BGCOLOR);
+}
+
+ThemeBase * getTheme(const char * name)
+{
+ std::list::const_iterator it = getRegisteredThemes().cbegin();
for (; it != getRegisteredThemes().cend(); ++it) {
if (!strcmp(name, (*it)->getName())) {
return (*it);
@@ -138,11 +195,11 @@ Theme * getTheme(const char * name)
return nullptr;
}
-void loadTheme(Theme * newTheme)
+void loadTheme(ThemeBase * newTheme)
{
TRACE("load theme %s", newTheme->getName());
theme = newTheme;
- theme->load();
+ newTheme->load();
}
void loadTheme()
@@ -150,11 +207,12 @@ void loadTheme()
char name[THEME_NAME_LEN + 1];
memset(name, 0, sizeof(name));
strncpy(name, g_eeGeneral.themeName, THEME_NAME_LEN);
- Theme * newTheme = getTheme(name);
- if (newTheme) {
+ ThemeBase * newTheme = getTheme(name);
+ if (newTheme)
loadTheme(newTheme);
- }
- else {
- theme->load();
- }
+ else
+ loadTheme(defaultTheme);
+// else {
+// loadTheme(theme);
+// }
}
diff --git a/radio/src/gui/colorlcd/theme.h b/radio/src/gui/colorlcd/theme.h
index 76da75558..2215b87ed 100644
--- a/radio/src/gui/colorlcd/theme.h
+++ b/radio/src/gui/colorlcd/theme.h
@@ -18,29 +18,30 @@
* GNU General Public License for more details.
*/
-#ifndef _THEME_H_
-#define _THEME_H_
+#ifndef _COLORLCD_THEME_H_
+#define _COLORLCD_THEME_H_
#include
#include
#include "zone.h"
+#include "thirdparty/libopenui/src/theme.h"
class BitmapBuffer;
class PageTab;
#define MAX_THEME_OPTIONS 5
-class Theme;
-void registerTheme(Theme * theme);
+class ThemeBase;
+void registerTheme(ThemeBase * theme);
-class Theme
+class ThemeBase: public Theme
{
public:
struct PersistentData {
ZoneOptionValue options[MAX_THEME_OPTIONS];
};
- Theme(const char * name, const ZoneOption * options = nullptr):
+ ThemeBase(const char * name, const ZoneOption * options = nullptr):
name(name),
options(options),
thumb(nullptr)
@@ -55,7 +56,7 @@ class Theme
const char * getFilePath(const char * filename) const;
- void drawThumb(coord_t x, coord_t y, uint32_t flags);
+ void drawThumb(BitmapBuffer * dc, coord_t x, coord_t y, uint32_t flags);
inline const ZoneOption * getOptions() const
{
@@ -74,25 +75,18 @@ class Theme
virtual void drawBackground(BitmapBuffer * dc) const;
- virtual const BitmapBuffer * getIconButtonBitmap(uint8_t index, bool selected) const
- {
- TRACE("No bitmap for icon %d in this theme", index);
- return nullptr;
- }
-
- virtual const BitmapBuffer * getIconMask(uint8_t index) const
- {
- TRACE("No mask for icon %d in this theme", index);
- return nullptr;
- }
-
virtual void drawMenuBackground(BitmapBuffer * dc, uint8_t icon, const char *title) const = 0;
virtual void drawMenuHeader(BitmapBuffer * dc, std::vector & tabs, uint8_t currentIndex) const = 0;
virtual void drawMessageBox(const char * title, const char * text, const char * action, uint32_t flags) const;
+ // virtual void drawProgressBar(BitmapBuffer * dc, coord_t x, coord_t y, coord_t w, coord_t h, int value) const = 0;
- virtual void drawProgressBar(BitmapBuffer * dc, coord_t x, coord_t y, coord_t w, coord_t h, int value) const = 0;
+ void drawCheckBox(BitmapBuffer * dc, bool value, bool focus) const override;
+
+ void drawSlider(BitmapBuffer * dc, int vmin, int vmax, int value, const rect_t & rect, bool edit, bool focus) const override;
+
+ void drawPageHeader(BitmapBuffer * dc, const PageHeader * page) const override;
protected:
const char * name;
@@ -105,17 +99,10 @@ class Theme
static const BitmapBuffer * busy;
};
-extern Theme * theme;
-
-inline const char * getThemePath(const char * filename)
-{
- return theme->getFilePath(filename);
-}
-
-Theme * getTheme(const char * name);
-void loadTheme(Theme * theme);
+ThemeBase * getTheme(const char * name);
+void loadTheme(ThemeBase * theme);
void loadTheme();
-std::list & getRegisteredThemes();
+std::list & getRegisteredThemes();
-#endif // _THEME_H_
+#endif // _COLORLCD_THEME_H_
diff --git a/radio/src/gui/colorlcd/themes/flysky.cpp b/radio/src/gui/colorlcd/themes/flysky.cpp
index 18d6d41e3..2c76b787b 100644
--- a/radio/src/gui/colorlcd/themes/flysky.cpp
+++ b/radio/src/gui/colorlcd/themes/flysky.cpp
@@ -27,11 +27,11 @@ const ZoneOption OPTIONS_THEME_DEFAULT[] = {
{ nullptr, ZoneOption::Bool }
};
-class FlyskyTheme: public Theme
+class FlyskyTheme: public ThemeBase
{
public:
FlyskyTheme():
- Theme("FlySky", OPTIONS_THEME_DEFAULT)
+ ThemeBase("FlySky", OPTIONS_THEME_DEFAULT)
{
loadColors();
}
@@ -78,9 +78,9 @@ class FlyskyTheme: public Theme
void loadMenuIcon(uint8_t index, const char * filename, uint32_t color=MENU_TITLE_COLOR) const
{
- TRACE("loadMenuIcon %s", getThemePath(filename));
+ TRACE("loadMenuIcon %s", getFilePath(filename));
- BitmapBuffer * mask = BitmapBuffer::loadMask(getThemePath(filename));
+ BitmapBuffer * mask = BitmapBuffer::loadMask(getFilePath(filename));
if (mask) {
delete iconMask[index];
iconMask[index] = mask;
@@ -177,9 +177,9 @@ class FlyskyTheme: public Theme
loadMenuIcon(ICON_MONITOR_CHANNELS4, "mask_monitor_channels4.png");
loadMenuIcon(ICON_MONITOR_LOGICAL_SWITCHES, "mask_monitor_logsw.png");
- BitmapBuffer * background = BitmapBuffer::loadMask(getThemePath("mask_currentmenu_bg.png"));
- BitmapBuffer * shadow = BitmapBuffer::loadMask(getThemePath("mask_currentmenu_shadow.png"));
- BitmapBuffer * dot = BitmapBuffer::loadMask(getThemePath("mask_currentmenu_dot.png"));
+ BitmapBuffer * background = BitmapBuffer::loadMask(getFilePath("mask_currentmenu_bg.png"));
+ BitmapBuffer * shadow = BitmapBuffer::loadMask(getFilePath("mask_currentmenu_shadow.png"));
+ BitmapBuffer * dot = BitmapBuffer::loadMask(getFilePath("mask_currentmenu_dot.png"));
if (!currentMenuBackground) {
currentMenuBackground = new BitmapBuffer(BMP_RGB565, 36, 53);
@@ -205,22 +205,22 @@ class FlyskyTheme: public Theme
{
// Calibration screen
delete calibStick;
- calibStick = BitmapBuffer::load(getThemePath("stick_pointer.png"));
+ calibStick = BitmapBuffer::load(getFilePath("stick_pointer.png"));
delete calibStickBackground;
- calibStickBackground = BitmapBuffer::load(getThemePath("stick_background.png"));
+ calibStickBackground = BitmapBuffer::load(getFilePath("stick_background.png"));
delete calibTrackpBackground;
- calibTrackpBackground = BitmapBuffer::load(getThemePath("trackp_background.png"));
+ calibTrackpBackground = BitmapBuffer::load(getFilePath("trackp_background.png"));
delete calibRadioPict;
- calibRadioPict = BitmapBuffer::load(getThemePath("NV14.bmp"));
+ calibRadioPict = BitmapBuffer::load(getFilePath("NV14.bmp"));
// Model Selection screen
delete modelselIconBitmap;
modelselIconBitmap = BitmapBuffer::loadMaskOnBackground("modelsel/mask_iconback.png", TITLE_BGCOLOR, TEXT_BGCOLOR);
if (modelselIconBitmap) {
- BitmapBuffer * bitmap = BitmapBuffer::load(getThemePath("modelsel/icon_default.png"));
+ BitmapBuffer * bitmap = BitmapBuffer::load(getFilePath("modelsel/icon_default.png"));
modelselIconBitmap->drawBitmap(20, 8, bitmap);
delete bitmap;
}
@@ -235,13 +235,13 @@ class FlyskyTheme: public Theme
modelselModelNameBitmap = BitmapBuffer::loadMaskOnBackground("modelsel/mask_modelname.png", TEXT_COLOR, TEXT_BGCOLOR);
delete modelselModelMoveBackground;
- modelselModelMoveBackground = BitmapBuffer::loadMask(getThemePath("modelsel/mask_moveback.png"));
+ modelselModelMoveBackground = BitmapBuffer::loadMask(getFilePath("modelsel/mask_moveback.png"));
delete modelselModelMoveIcon;
- modelselModelMoveIcon = BitmapBuffer::loadMask(getThemePath("modelsel/mask_moveico.png"));
+ modelselModelMoveIcon = BitmapBuffer::loadMask(getFilePath("modelsel/mask_moveico.png"));
delete modelselWizardBackground;
- modelselWizardBackground = BitmapBuffer::load(getThemePath("wizard/background.png"));
+ modelselWizardBackground = BitmapBuffer::load(getFilePath("wizard/background.png"));
// Channels monitor screen
delete chanMonLockedBitmap;
@@ -276,10 +276,10 @@ class FlyskyTheme: public Theme
mixerSetupCurveBitmap = BitmapBuffer::loadMaskOnBackground("mask_textline_curve.png", TEXT_COLOR, TEXT_BGCOLOR);
delete mixerSetupSwitchIcon;
- mixerSetupSwitchIcon = BitmapBuffer::loadMask(getThemePath("mask_textline_switch.png"));
+ mixerSetupSwitchIcon = BitmapBuffer::loadMask(getFilePath("mask_textline_switch.png"));
delete mixerSetupFlightmodeIcon;
- mixerSetupFlightmodeIcon = BitmapBuffer::loadMask(getThemePath("mask_textline_fm.png"));
+ mixerSetupFlightmodeIcon = BitmapBuffer::loadMask(getFilePath("mask_textline_fm.png"));
delete mixerSetupSlowBitmap;
mixerSetupSlowBitmap = BitmapBuffer::loadMaskOnBackground("mask_textline_slow.png", TEXT_COLOR, TEXT_BGCOLOR);
@@ -291,12 +291,12 @@ class FlyskyTheme: public Theme
mixerSetupDelaySlowBitmap = BitmapBuffer::loadMaskOnBackground("mask_textline_delayslow.png", TEXT_COLOR, TEXT_BGCOLOR);
}
- virtual void load() const override
+ void load() const override
{
loadColors();
- Theme::load();
+ ThemeBase::load();
if (!backgroundBitmap) {
- backgroundBitmap = BitmapBuffer::load(getThemePath("background.png"));
+ backgroundBitmap = BitmapBuffer::load(getFilePath("background.png"));
}
update();
}
@@ -341,26 +341,25 @@ class FlyskyTheme: public Theme
void drawMenuBackground(BitmapBuffer * dc, uint8_t icon, const char * title) const override
{
- dc->drawSolidFilledRect(0, 0, LCD_W, MENU_HEADER_HEIGHT, HEADER_BGCOLOR);
-
- if (topleftBitmap) {
- dc->drawBitmap(0, 0, topleftBitmap);
- uint16_t width = topleftBitmap->getWidth();
- dc->drawSolidFilledRect(width, 0, LCD_W-width, MENU_HEADER_HEIGHT, HEADER_BGCOLOR);
- }
- else {
+// if (topleftBitmap) {
+// dc->drawBitmap(0, 0, topleftBitmap);
+// uint16_t width = topleftBitmap->getWidth();
+// dc->drawSolidFilledRect(width, 0, LCD_W-width, MENU_HEADER_HEIGHT, HEADER_BGCOLOR);
+// }
+// else {
dc->drawSolidFilledRect(0, 0, LCD_W, MENU_HEADER_HEIGHT, HEADER_BGCOLOR);
- }
-
- if (icon == ICON_OPENTX)
- dc->drawBitmap(4, 10, menuIconSelected[ICON_OPENTX]);
- else
- dc->drawBitmap(5, 7, menuIconSelected[icon]);
-
+// }
+//
+// if (icon == ICON_OPENTX)
+// dc->drawBitmap(4, 10, menuIconSelected[ICON_OPENTX]);
+// else
+// dc->drawBitmap(5, 7, menuIconSelected[icon]);
+//
dc->drawSolidFilledRect(0, MENU_HEADER_HEIGHT, LCD_W, MENU_TITLE_TOP - MENU_HEADER_HEIGHT, TEXT_BGCOLOR); // the white separation line
dc->drawSolidFilledRect(0, MENU_TITLE_TOP, LCD_W, MENU_TITLE_HEIGHT, TITLE_BGCOLOR); // the title line background
+//
if (title) {
- lcdDrawText(MENUS_MARGIN_LEFT, MENU_TITLE_TOP, title, MENU_TITLE_COLOR);
+ dc->drawText(MENUS_MARGIN_LEFT, MENU_TITLE_TOP, title, MENU_TITLE_COLOR);
}
}
@@ -369,20 +368,20 @@ class FlyskyTheme: public Theme
return iconMask[index];
}
- const BitmapBuffer * getIconButtonBitmap(uint8_t index, bool selected) const override
+ const BitmapBuffer * getIcon(uint8_t index, IconState state) const override
{
- return selected ? menuIconSelected[index] : menuIconNormal[index];
+ return state == STATE_DEFAULT ? menuIconNormal[index] : menuIconSelected[index];
}
void drawMenuHeader(BitmapBuffer * dc, std::vector & tabs, uint8_t currentIndex) const override
{
- uint8_t padding_left = 0;
+ uint8_t padding_left = 4;
- dc->drawSolidFilledRect(0, 0, padding_left, MENU_HEADER_BUTTON_WIDTH, HEADER_BGCOLOR);
- for (unsigned i=0; idrawBitmap(padding_left + i*MENU_HEADER_BUTTON_WIDTH, 0, theme->getIconButtonBitmap(tabs[i]->getIcon(), currentIndex == i));
+ dc->drawSolidFilledRect(0, 0, 4, MENU_HEADER_BUTTON_WIDTH, HEADER_BGCOLOR);
+ for (unsigned i = 0; i < tabs.size(); i++) {
+ dc->drawBitmap(padding_left + i*MENU_HEADER_BUTTON_WIDTH, 0, theme->getIcon(tabs[i]->getIcon(), currentIndex == i ? STATE_PRESSED : STATE_DEFAULT));
}
- coord_t x = padding_left + MENU_HEADER_BUTTON_WIDTH * tabs.size();
+// coord_t x = padding_left + MENU_HEADER_BUTTON_WIDTH * tabs.size();
// coord_t w = width() - x;
// if (w > 0) {
// dc->drawSolidFilledRect(x, 0, w, MENU_HEADER_BUTTON_WIDTH, HEADER_BGCOLOR);
@@ -396,17 +395,22 @@ class FlyskyTheme: public Theme
struct gtm t;
gettime(&t);
char str[10];
+
+#if defined(TRANSLATIONS_CN)
+ sprintf(str, "%d" TR_MONTH "%d", t.tm_mon + 1, t.tm_mday);
+#else
const char * const STR_MONTHS[] = TR_MONTHS;
sprintf(str, "%d %s", t.tm_mday, STR_MONTHS[t.tm_mon]);
- lcdDrawText(DATETIME_MIDDLE, DATETIME_LINE1, str, SMLSIZE|TEXT_INVERTED_COLOR|CENTERED);
+#endif
+ dc->drawText(DATETIME_MIDDLE, DATETIME_LINE1, str, SMLSIZE|TEXT_INVERTED_COLOR|CENTERED);
getTimerString(str, getValue(MIXSRC_TX_TIME));
- lcdDrawText(DATETIME_MIDDLE, DATETIME_LINE2, str, SMLSIZE|TEXT_INVERTED_COLOR|CENTERED);
+ dc->drawText(DATETIME_MIDDLE, DATETIME_LINE2, str, SMLSIZE|TEXT_INVERTED_COLOR|CENTERED);
}
void drawProgressBar(BitmapBuffer * dc, coord_t x, coord_t y, coord_t w, coord_t h, int value) const override
{
- drawSolidRect(dc, x, y, w, h, 1, TEXT_COLOR);
+ dc->drawSolidRect(x, y, w, h, 1, TEXT_COLOR);
if (value > 0) {
int width = (w * value) / 100;
dc->drawSolidFilledRect(x + 2, y + 2, width - 4, h - 4, SCROLLBOX_COLOR);
@@ -432,5 +436,6 @@ BitmapBuffer * FlyskyTheme::currentMenuBackground = nullptr;
FlyskyTheme flyskyTheme;
#if defined(PCBFLYSKY)
+ThemeBase * defaultTheme = &flyskyTheme;
Theme * theme = &flyskyTheme;
#endif
\ No newline at end of file
diff --git a/radio/src/gui/colorlcd/themes/frsky.cpp b/radio/src/gui/colorlcd/themes/frsky.cpp
index 26d1c0a65..5db8d5e07 100644
--- a/radio/src/gui/colorlcd/themes/frsky.cpp
+++ b/radio/src/gui/colorlcd/themes/frsky.cpp
@@ -27,11 +27,11 @@ const ZoneOption OPTIONS_THEME_DEFAULT[] = {
{ nullptr, ZoneOption::Bool }
};
-class FrskyTheme: public Theme
+class FrskyTheme: public ThemeBase
{
public:
FrskyTheme():
- Theme("FrSky", OPTIONS_THEME_DEFAULT)
+ ThemeBase("FrSky", OPTIONS_THEME_DEFAULT)
{
loadColors();
}
@@ -72,8 +72,8 @@ class FrskyTheme: public Theme
void loadMenuIcon(uint8_t index, const char * filename, uint32_t color=MENU_TITLE_COLOR) const
{
- TRACE("loadMenuIcon %s", getThemePath(filename));
- BitmapBuffer * mask = BitmapBuffer::loadMask(getThemePath(filename));
+ TRACE("loadMenuIcon %s", getFilePath(filename));
+ BitmapBuffer * mask = BitmapBuffer::loadMask(getFilePath(filename));
if (mask) {
delete iconMask[index];
iconMask[index] = mask;
@@ -148,13 +148,14 @@ class FrskyTheme: public Theme
loadMenuIcon(ICON_MONITOR_CHANNELS4, "mask_monitor_channels4.png");
loadMenuIcon(ICON_MONITOR_LOGICAL_SWITCHES, "mask_monitor_logsw.png");
- BitmapBuffer * background = BitmapBuffer::loadMask(getThemePath("mask_currentmenu_bg.png"));
- BitmapBuffer * shadow = BitmapBuffer::loadMask(getThemePath("mask_currentmenu_shadow.png"));
- BitmapBuffer * dot = BitmapBuffer::loadMask(getThemePath("mask_currentmenu_dot.png"));
+ BitmapBuffer * background = BitmapBuffer::loadMask(getFilePath("mask_currentmenu_bg.png"));
+ BitmapBuffer * shadow = BitmapBuffer::loadMask(getFilePath("mask_currentmenu_shadow.png"));
+ BitmapBuffer * dot = BitmapBuffer::loadMask(getFilePath("mask_currentmenu_dot.png"));
if (!currentMenuBackground) {
currentMenuBackground = new BitmapBuffer(BMP_RGB565, 36, 53);
}
+
if (currentMenuBackground) {
currentMenuBackground->drawSolidFilledRect(0, 0, currentMenuBackground->getWidth(), MENU_HEADER_HEIGHT, HEADER_BGCOLOR);
currentMenuBackground->drawSolidFilledRect(0, MENU_HEADER_HEIGHT, currentMenuBackground->getWidth(), MENU_TITLE_TOP - MENU_HEADER_HEIGHT, TEXT_BGCOLOR);
@@ -165,7 +166,7 @@ class FrskyTheme: public Theme
}
delete topleftBitmap;
- topleftBitmap = BitmapBuffer::loadMaskOnBackground("topleft.png", TITLE_BGCOLOR, HEADER_BGCOLOR);
+ topleftBitmap = BitmapBuffer::loadMaskOnBackground(getFilePath("topleft.png"), TITLE_BGCOLOR, HEADER_BGCOLOR);
delete background;
delete shadow;
@@ -176,31 +177,31 @@ class FrskyTheme: public Theme
{
// Calibration screen
delete calibStick;
- calibStick = BitmapBuffer::load(getThemePath("stick_pointer.png"));
+ calibStick = BitmapBuffer::load(getFilePath("stick_pointer.png"));
delete calibStickBackground;
- calibStickBackground = BitmapBuffer::load(getThemePath("stick_background.png"));
+ calibStickBackground = BitmapBuffer::load(getFilePath("stick_background.png"));
delete calibTrackpBackground;
- calibTrackpBackground = BitmapBuffer::load(getThemePath("trackp_background.png"));
+ calibTrackpBackground = BitmapBuffer::load(getFilePath("trackp_background.png"));
delete calibRadioPict;
#if defined(PCBX10)
if(STICKS_PWM_ENABLED()) {
- calibRadioPict = BitmapBuffer::load(getThemePath("X10S.bmp"));
+ calibRadioPict = BitmapBuffer::load(getFilePath("X10S.bmp"));
}
else {
- calibRadioPict = BitmapBuffer::load(getThemePath("X10.bmp"));
+ calibRadioPict = BitmapBuffer::load(getFilePath("X10.bmp"));
}
#else
- calibRadioPict = BitmapBuffer::load(getThemePath("horus.bmp"));
+ calibRadioPict = BitmapBuffer::load(getFilePath("horus.bmp"));
#endif
// Model Selection screen
delete modelselIconBitmap;
modelselIconBitmap = BitmapBuffer::loadMaskOnBackground("modelsel/mask_iconback.png", TITLE_BGCOLOR, TEXT_BGCOLOR);
if (modelselIconBitmap) {
- BitmapBuffer * bitmap = BitmapBuffer::load(getThemePath("modelsel/icon_default.png"));
+ BitmapBuffer * bitmap = BitmapBuffer::load(getFilePath("modelsel/icon_default.png"));
modelselIconBitmap->drawBitmap(20, 8, bitmap);
delete bitmap;
}
@@ -215,13 +216,13 @@ class FrskyTheme: public Theme
modelselModelNameBitmap = BitmapBuffer::loadMaskOnBackground("modelsel/mask_modelname.png", TEXT_COLOR, TEXT_BGCOLOR);
delete modelselModelMoveBackground;
- modelselModelMoveBackground = BitmapBuffer::loadMask(getThemePath("modelsel/mask_moveback.png"));
+ modelselModelMoveBackground = BitmapBuffer::loadMask(getFilePath("modelsel/mask_moveback.png"));
delete modelselModelMoveIcon;
- modelselModelMoveIcon = BitmapBuffer::loadMask(getThemePath("modelsel/mask_moveico.png"));
+ modelselModelMoveIcon = BitmapBuffer::loadMask(getFilePath("modelsel/mask_moveico.png"));
delete modelselWizardBackground;
- modelselWizardBackground = BitmapBuffer::load(getThemePath("wizard/background.png"));
+ modelselWizardBackground = BitmapBuffer::load(getFilePath("wizard/background.png"));
// Channels monitor screen
delete chanMonLockedBitmap;
@@ -256,10 +257,10 @@ class FrskyTheme: public Theme
mixerSetupCurveBitmap = BitmapBuffer::loadMaskOnBackground("mask_textline_curve.png", TEXT_COLOR, TEXT_BGCOLOR);
delete mixerSetupSwitchIcon;
- mixerSetupSwitchIcon = BitmapBuffer::loadMask(getThemePath("mask_textline_switch.png"));
+ mixerSetupSwitchIcon = BitmapBuffer::loadMask(getFilePath("mask_textline_switch.png"));
delete mixerSetupFlightmodeIcon;
- mixerSetupFlightmodeIcon = BitmapBuffer::loadMask(getThemePath("mask_textline_fm.png"));
+ mixerSetupFlightmodeIcon = BitmapBuffer::loadMask(getFilePath("mask_textline_fm.png"));
delete mixerSetupSlowBitmap;
mixerSetupSlowBitmap = BitmapBuffer::loadMaskOnBackground("mask_textline_slow.png", TEXT_COLOR, TEXT_BGCOLOR);
@@ -271,17 +272,17 @@ class FrskyTheme: public Theme
mixerSetupDelaySlowBitmap = BitmapBuffer::loadMaskOnBackground("mask_textline_delayslow.png", TEXT_COLOR, TEXT_BGCOLOR);
}
- virtual void load() const override
+ void load() const override
{
loadColors();
- Theme::load();
+ ThemeBase::load();
if (!backgroundBitmap) {
- backgroundBitmap = BitmapBuffer::load(getThemePath("background.png"));
+ backgroundBitmap = BitmapBuffer::load(getFilePath("background.png"));
}
update();
}
- virtual void update() const override
+ void update() const override
{
TRACE("TODO THEME::UPDATE()");
#if 0
@@ -320,12 +321,10 @@ class FrskyTheme: public Theme
void drawMenuBackground(BitmapBuffer * dc, uint8_t icon, const char * title) const override
{
- dc->drawSolidFilledRect(0, 0, LCD_W, MENU_HEADER_HEIGHT, HEADER_BGCOLOR);
-
if (topleftBitmap) {
dc->drawBitmap(0, 0, topleftBitmap);
uint16_t width = topleftBitmap->getWidth();
- dc->drawSolidFilledRect(width, 0, LCD_W-width, MENU_HEADER_HEIGHT, HEADER_BGCOLOR);
+ dc->drawSolidFilledRect(width, 0, LCD_W - width, MENU_HEADER_HEIGHT, HEADER_BGCOLOR);
}
else {
dc->drawSolidFilledRect(0, 0, LCD_W, MENU_HEADER_HEIGHT, HEADER_BGCOLOR);
@@ -339,7 +338,7 @@ class FrskyTheme: public Theme
dc->drawSolidFilledRect(0, MENU_HEADER_HEIGHT, LCD_W, MENU_TITLE_TOP - MENU_HEADER_HEIGHT, TEXT_BGCOLOR); // the white separation line
dc->drawSolidFilledRect(0, MENU_TITLE_TOP, LCD_W, MENU_TITLE_HEIGHT, TITLE_BGCOLOR); // the title line background
if (title) {
- lcdDrawText(MENUS_MARGIN_LEFT, MENU_TITLE_TOP + 1, title, MENU_TITLE_COLOR);
+ dc->drawText(MENUS_MARGIN_LEFT, MENU_TITLE_TOP + 1, title, MENU_TITLE_COLOR);
}
drawMenuDatetime(dc);
@@ -350,9 +349,9 @@ class FrskyTheme: public Theme
return iconMask[index];
}
- const BitmapBuffer * getIconButtonBitmap(uint8_t index, bool selected) const override
+ const BitmapBuffer * getIcon(uint8_t index, IconState state) const override
{
- return selected ? menuIconSelected[index] : menuIconNormal[index];
+ return state == STATE_DEFAULT ? menuIconNormal[index] : menuIconSelected[index];
}
void drawMenuHeader(BitmapBuffer * dc, std::vector & tabs, uint8_t currentIndex) const override
@@ -373,17 +372,20 @@ class FrskyTheme: public Theme
struct gtm t;
gettime(&t);
char str[10];
+#if defined(TRANSLATIONS_CN)
+ sprintf(str, "%d" TR_MONTH "%d", t.tm_mon + 1, t.tm_mday);
+#else
const char * const STR_MONTHS[] = TR_MONTHS;
sprintf(str, "%d %s", t.tm_mday, STR_MONTHS[t.tm_mon]);
- lcdDrawText(DATETIME_MIDDLE, DATETIME_LINE1, str, SMLSIZE|TEXT_INVERTED_COLOR|CENTERED);
-
+#endif
+ dc->drawText(DATETIME_MIDDLE, DATETIME_LINE1, str, SMLSIZE|TEXT_INVERTED_COLOR|CENTERED);
getTimerString(str, getValue(MIXSRC_TX_TIME));
- lcdDrawText(DATETIME_MIDDLE, DATETIME_LINE2, str, SMLSIZE|TEXT_INVERTED_COLOR|CENTERED);
+ dc->drawText(DATETIME_MIDDLE, DATETIME_LINE2, str, SMLSIZE|TEXT_INVERTED_COLOR|CENTERED);
}
void drawProgressBar(BitmapBuffer * dc, coord_t x, coord_t y, coord_t w, coord_t h, int value) const override
{
- drawSolidRect(dc, x, y, w, h, 1, TEXT_COLOR);
+ dc->drawSolidRect(x, y, w, h, 1, TEXT_COLOR);
if (value > 0) {
int width = (w * value) / 100;
dc->drawSolidFilledRect(x + 2, y + 2, width - 4, h - 4, SCROLLBOX_COLOR);
@@ -409,5 +411,6 @@ BitmapBuffer * FrskyTheme::currentMenuBackground = nullptr;
FrskyTheme frskyTheme;
#if defined(PCBFRSKY)
+ThemeBase * defaultTheme = &frskyTheme;
Theme * theme = &frskyTheme;
#endif
diff --git a/radio/src/gui/libopenui/timeedit.cpp b/radio/src/gui/colorlcd/timeedit.cpp
similarity index 95%
rename from radio/src/gui/libopenui/timeedit.cpp
rename to radio/src/gui/colorlcd/timeedit.cpp
index a23e95f67..bf53cb269 100644
--- a/radio/src/gui/libopenui/timeedit.cpp
+++ b/radio/src/gui/colorlcd/timeedit.cpp
@@ -21,10 +21,7 @@
#include "libopenui_config.h"
#include "timeedit.h"
#include "keyboard_number.h"
-#include "draw_functions.h"
#include "strhelpers.h"
-#include
-#include
TimeEdit::TimeEdit(Window * parent, const rect_t & rect, int32_t vmin, int32_t vmax, std::function getValue, std::function setValue, LcdFlags flags):
BaseNumberEdit(parent, rect, vmin, vmax, getValue, setValue, flags)
@@ -59,7 +56,7 @@ void TimeEdit::onKeyEvent(event_t event)
if (value <= vmax)
setValue(value);
else
- AUDIO_KEY_ERROR();
+ onKeyError();
return;
}
else if (event == EVT_ROTARY_LEFT) {
@@ -68,7 +65,7 @@ void TimeEdit::onKeyEvent(event_t event)
if (value >= vmin)
setValue(value);
else
- AUDIO_KEY_ERROR();
+ onKeyError();
return;
}
}
diff --git a/radio/src/gui/libopenui/timeedit.h b/radio/src/gui/colorlcd/timeedit.h
similarity index 100%
rename from radio/src/gui/libopenui/timeedit.h
rename to radio/src/gui/colorlcd/timeedit.h
diff --git a/radio/src/gui/colorlcd/view_main.cpp b/radio/src/gui/colorlcd/view_main.cpp
index d649b14d0..af628d858 100644
--- a/radio/src/gui/colorlcd/view_main.cpp
+++ b/radio/src/gui/colorlcd/view_main.cpp
@@ -21,6 +21,7 @@
#include "view_main.h"
#include "menu_model.h"
#include "menu_radio.h"
+#include "menu_screen.h"
// #include "menu_screens.h"
// #include "model_select.h"
// #include "view_channels.h"
@@ -177,12 +178,18 @@ void ViewMain::onKeyEvent(event_t event)
new RadioMenu();
break;
+ case EVT_KEY_LONG(KEY_TELEM):
+ killEvents(event);
+ new ScreenMenu();
+ break;
+
case EVT_KEY_LONG(KEY_ENTER):
+ killEvents(event);
Menu * menu = new Menu();
menu->addLine(STR_MODEL_SELECT, [=]() {
// new ModelselectMenu();
});
- if (1/*modelHasNotes()*/) {
+ if (modelHasNotes()) {
menu->addLine(STR_VIEW_NOTES, [=]() {
// TODO
});
@@ -221,14 +228,11 @@ void ViewMain::onKeyEvent(event_t event)
void ViewMain::checkEvents()
{
Window::checkEvents();
-
- // TODO temporary for refreshing the trims
- invalidate();
}
void ViewMain::paint(BitmapBuffer * dc)
{
- theme->drawBackground(dc);
+ static_cast(theme)->drawBackground(dc);
// drawMainPots();
diff --git a/radio/src/gui/colorlcd/widgets_container.h b/radio/src/gui/colorlcd/widgets_container.h
index c2fbd9cdd..29d0f427e 100644
--- a/radio/src/gui/colorlcd/widgets_container.h
+++ b/radio/src/gui/colorlcd/widgets_container.h
@@ -109,10 +109,10 @@ class WidgetsContainer: public WidgetsContainerInterface
char name[WIDGET_NAME_LEN + 1];
memset(name, 0, sizeof(name));
strncpy(name, persistentData->zones[i].widgetName, WIDGET_NAME_LEN);
- widgets[i] = loadWidget(name, getZone(i), &persistentData->zones[i].widgetData);
+ // widgets[i] = loadWidget(name, getZone(i), &persistentData->zones[i].widgetData);
}
else {
- widgets[i] = NULL;
+ widgets[i] = nullptr;
}
}
}
diff --git a/radio/src/gui/common/colorlcd/draw_functions.h b/radio/src/gui/common/colorlcd/draw_functions.h
deleted file mode 100644
index 8f8ab6b3b..000000000
--- a/radio/src/gui/common/colorlcd/draw_functions.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef __COLORLCD_DRAW_FUNCTIONS__
-#define __COLORLCD_DRAW_FUNCTIONS__
-
-#include "lcd.h"
-
-void drawStringWithIndex(coord_t x, coord_t y, const char * str, int idx, LcdFlags flags, const char * prefix, const char * suffix);
-void drawValueWithUnit(coord_t x, coord_t y, int val, uint8_t unit, LcdFlags att);
-int editChoice(coord_t x, coord_t y, const char * values, int value, int min, int max, LcdFlags attr, event_t event, IsValueAvailable isValueAvailable=nullptr);
-uint8_t editCheckBox(uint8_t value, coord_t x, coord_t y, LcdFlags attr, event_t event);
-swsrc_t editSwitch(coord_t x, coord_t y, swsrc_t value, LcdFlags attr, event_t event);
-void drawFatalErrorScreen(const char * message);
-void runFatalErrorScreen(const char * message);
-void drawPower(coord_t x, coord_t y, int8_t dBm, LcdFlags att);
-void lcdDrawMMM(coord_t x, coord_t y, LcdFlags flags);
-
-#if defined(FLIGHT_MODES)
-void drawFlightMode(coord_t x, coord_t y, int8_t idx, LcdFlags att);
-#endif
-
-#endif // __COLORLCD_DRAW_FUNCTIONS__
diff --git a/radio/src/gui/common/stdlcd/CMakeLists.txt b/radio/src/gui/common/stdlcd/CMakeLists.txt
index 2da32d37a..a1c60a1e3 100644
--- a/radio/src/gui/common/stdlcd/CMakeLists.txt
+++ b/radio/src/gui/common/stdlcd/CMakeLists.txt
@@ -4,6 +4,7 @@ set(GUI_SRC
${GUI_SRC}
../common/stdlcd/menus.cpp
../common/stdlcd/draw_functions.cpp
+ ../common/stdlcd/fonts.cpp
../common/stdlcd/popups.cpp
../common/stdlcd/model_inputs.cpp
../common/stdlcd/model_mixes.cpp
diff --git a/radio/src/gui/128x64/fonts.cpp b/radio/src/gui/common/stdlcd/fonts.cpp
similarity index 97%
rename from radio/src/gui/128x64/fonts.cpp
rename to radio/src/gui/common/stdlcd/fonts.cpp
index 5d1c02382..18f376bf2 100644
--- a/radio/src/gui/128x64/fonts.cpp
+++ b/radio/src/gui/common/stdlcd/fonts.cpp
@@ -18,7 +18,7 @@
* GNU General Public License for more details.
*/
-#include "opentx.h"
+#include "fonts.h"
const unsigned char font_5x7[] = {
#include "font_05x07.lbm"
@@ -43,13 +43,11 @@ const unsigned char font_5x7[] = {
#endif
};
-#if defined(BOLD_SPECIFIC_FONT)
+#if !defined(BOOT)
const unsigned char font_5x7_B[] = {
#include "font_05x07_B_compressed.lbm"
};
-#endif
-#if !defined(BOOT)
const unsigned char font_10x14[] = {
#include "font_10x14_compressed.lbm"
#if defined(TRANSLATIONS_DE)
@@ -72,12 +70,11 @@ const unsigned char font_10x14[] = {
#include "font_se_10x14.lbm"
#endif
};
-#endif
-#if !defined(BOOT)
const unsigned char font_3x5[] = {
#include "font_03x05.lbm"
};
+
const unsigned char font_4x6[] = {
#include "font_04x06.lbm"
#if defined(TRANSLATIONS_DE)
diff --git a/radio/src/fonts.h b/radio/src/gui/common/stdlcd/fonts.h
similarity index 58%
rename from radio/src/fonts.h
rename to radio/src/gui/common/stdlcd/fonts.h
index 466615691..ee880bb05 100644
--- a/radio/src/fonts.h
+++ b/radio/src/gui/common/stdlcd/fonts.h
@@ -21,39 +21,18 @@
#ifndef _FONTS_H_
#define _FONTS_H_
-#include "opentx.h"
-
-#if defined(COLORLCD)
-
-#if !defined(BOOT)
-#define FONT_TABLE_SIZE 16
-#else
-#define FONT_TABLE_SIZE 1
-#endif
-
-extern const uint16_t * const fontspecsTable[FONT_TABLE_SIZE];
-extern const uint8_t * fontsTable[FONT_TABLE_SIZE];
-
-void loadFonts();
-
-#else
-
extern const unsigned char font_5x7[];
extern const unsigned char font_10x14[];
-#if defined(BOLD_FONT) && !defined(BOOT)
- #define BOLD_SPECIFIC_FONT
+#if !defined(BOOT)
extern const unsigned char font_5x7_B[];
-#endif
-
-extern const unsigned char font_3x5[];
-extern const unsigned char font_4x6[];
-extern const unsigned char font_8x10[];
-extern const unsigned char font_22x38_num[];
-extern const unsigned char font_5x7_extra[];
-extern const unsigned char font_10x14_extra[];
-extern const unsigned char font_4x6_extra[];
-
+ extern const unsigned char font_3x5[];
+ extern const unsigned char font_4x6[];
+ extern const unsigned char font_8x10[];
+ extern const unsigned char font_22x38_num[];
+ extern const unsigned char font_5x7_extra[];
+ extern const unsigned char font_10x14_extra[];
+ extern const unsigned char font_4x6_extra[];
#endif
#endif // _FONTS_H_
diff --git a/radio/src/gui/common/stdlcd/popups.h b/radio/src/gui/common/stdlcd/popups.h
index d094588dc..81fe81466 100644
--- a/radio/src/gui/common/stdlcd/popups.h
+++ b/radio/src/gui/common/stdlcd/popups.h
@@ -24,6 +24,7 @@
#include
#include "audio.h"
#include "lcd.h"
+#include "keys.h"
extern const char * warningText;
extern const char * warningInfoText;
diff --git a/radio/src/gui/common/stdlcd/radio_sdmanager.cpp b/radio/src/gui/common/stdlcd/radio_sdmanager.cpp
index 929a74792..ac59e220a 100644
--- a/radio/src/gui/common/stdlcd/radio_sdmanager.cpp
+++ b/radio/src/gui/common/stdlcd/radio_sdmanager.cpp
@@ -20,6 +20,7 @@
#include "opentx.h"
#include "io/frsky_firmware_update.h"
+#include "libopenui/src/libopenui_file.h"
#define NODE_TYPE(fname) fname[SD_SCREEN_FILE_LENGTH+1]
#define IS_DIRECTORY(fname) ((bool)(!NODE_TYPE(fname)))
diff --git a/radio/src/gui/gui_common.cpp b/radio/src/gui/gui_common.cpp
index 709de9fdf..aaeb23dec 100644
--- a/radio/src/gui/gui_common.cpp
+++ b/radio/src/gui/gui_common.cpp
@@ -837,7 +837,7 @@ const mm_protocol_definition multi_protocols[] = {
{MODULE_SUBTYPE_MULTI_FY326, 1, false, STR_SUBTYPE_FY326, nullptr},
{MODULE_SUBTYPE_MULTI_SFHSS, 0, true, NO_SUBTYPE, STR_MULTI_RFTUNE},
{MODULE_SUBTYPE_MULTI_HONTAI, 3, false, STR_SUBTYPE_HONTAI, nullptr},
- {MODULE_SUBTYPE_MULTI_OLRS, 0, false, NO_SUBTYPE, STR_RFPOWER},
+ {MODULE_SUBTYPE_MULTI_OLRS, 0, false, NO_SUBTYPE, STR_RF_POWER},
{MODULE_SUBTYPE_MULTI_FS_AFHDS2A, 3, true, STR_SUBTYPE_AFHDS2A, STR_MULTI_SERVOFREQ},
{MODULE_SUBTYPE_MULTI_Q2X2, 2, false, STR_SUBTYPE_Q2X2, nullptr},
{MODULE_SUBTYPE_MULTI_WK_2X01, 5, false, STR_SUBTYPE_WK2x01, nullptr},
diff --git a/radio/src/gui/libopenui/CMakeLists.txt b/radio/src/gui/libopenui/CMakeLists.txt
deleted file mode 100644
index ffd7461cd..000000000
--- a/radio/src/gui/libopenui/CMakeLists.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-set(LIBOPENUI_SRC
- mainwindow.cpp
- window.cpp
- bitmapbuffer.cpp
- button.cpp
- draw_functions.cpp
- checkbox.cpp
- form.cpp
- textedit.cpp
- numberedit.cpp
- timeedit.cpp
- choice.cpp
- tabsgroup.cpp
- page.cpp
- sourcechoice.cpp
- switchchoice.cpp
- filechoice.cpp
- slider.cpp
- progress.cpp
- menu.cpp
- dialog.cpp
- curve.cpp
- curveedit.cpp
- # coloredit.cpp
- )
-
-if(HARDWARE_TOUCH)
- set(LIBOPENUI_SRC
- ${LIBOPENUI_SRC}
- keyboard_text.cpp
- keyboard_number.cpp
- keyboard_curve.cpp
- )
-endif()
diff --git a/radio/src/gui/libopenui/LICENSE b/radio/src/gui/libopenui/LICENSE
deleted file mode 100644
index 0a041280b..000000000
--- a/radio/src/gui/libopenui/LICENSE
+++ /dev/null
@@ -1,165 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-
- This version of the GNU Lesser General Public License incorporates
-the terms and conditions of version 3 of the GNU General Public
-License, supplemented by the additional permissions listed below.
-
- 0. Additional Definitions.
-
- As used herein, "this License" refers to version 3 of the GNU Lesser
-General Public License, and the "GNU GPL" refers to version 3 of the GNU
-General Public License.
-
- "The Library" refers to a covered work governed by this License,
-other than an Application or a Combined Work as defined below.
-
- An "Application" is any work that makes use of an interface provided
-by the Library, but which is not otherwise based on the Library.
-Defining a subclass of a class defined by the Library is deemed a mode
-of using an interface provided by the Library.
-
- A "Combined Work" is a work produced by combining or linking an
-Application with the Library. The particular version of the Library
-with which the Combined Work was made is also called the "Linked
-Version".
-
- The "Minimal Corresponding Source" for a Combined Work means the
-Corresponding Source for the Combined Work, excluding any source code
-for portions of the Combined Work that, considered in isolation, are
-based on the Application, and not on the Linked Version.
-
- The "Corresponding Application Code" for a Combined Work means the
-object code and/or source code for the Application, including any data
-and utility programs needed for reproducing the Combined Work from the
-Application, but excluding the System Libraries of the Combined Work.
-
- 1. Exception to Section 3 of the GNU GPL.
-
- You may convey a covered work under sections 3 and 4 of this License
-without being bound by section 3 of the GNU GPL.
-
- 2. Conveying Modified Versions.
-
- If you modify a copy of the Library, and, in your modifications, a
-facility refers to a function or data to be supplied by an Application
-that uses the facility (other than as an argument passed when the
-facility is invoked), then you may convey a copy of the modified
-version:
-
- a) under this License, provided that you make a good faith effort to
- ensure that, in the event an Application does not supply the
- function or data, the facility still operates, and performs
- whatever part of its purpose remains meaningful, or
-
- b) under the GNU GPL, with none of the additional permissions of
- this License applicable to that copy.
-
- 3. Object Code Incorporating Material from Library Header Files.
-
- The object code form of an Application may incorporate material from
-a header file that is part of the Library. You may convey such object
-code under terms of your choice, provided that, if the incorporated
-material is not limited to numerical parameters, data structure
-layouts and accessors, or small macros, inline functions and templates
-(ten or fewer lines in length), you do both of the following:
-
- a) Give prominent notice with each copy of the object code that the
- Library is used in it and that the Library and its use are
- covered by this License.
-
- b) Accompany the object code with a copy of the GNU GPL and this license
- document.
-
- 4. Combined Works.
-
- You may convey a Combined Work under terms of your choice that,
-taken together, effectively do not restrict modification of the
-portions of the Library contained in the Combined Work and reverse
-engineering for debugging such modifications, if you also do each of
-the following:
-
- a) Give prominent notice with each copy of the Combined Work that
- the Library is used in it and that the Library and its use are
- covered by this License.
-
- b) Accompany the Combined Work with a copy of the GNU GPL and this license
- document.
-
- c) For a Combined Work that displays copyright notices during
- execution, include the copyright notice for the Library among
- these notices, as well as a reference directing the user to the
- copies of the GNU GPL and this license document.
-
- d) Do one of the following:
-
- 0) Convey the Minimal Corresponding Source under the terms of this
- License, and the Corresponding Application Code in a form
- suitable for, and under terms that permit, the user to
- recombine or relink the Application with a modified version of
- the Linked Version to produce a modified Combined Work, in the
- manner specified by section 6 of the GNU GPL for conveying
- Corresponding Source.
-
- 1) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (a) uses at run time
- a copy of the Library already present on the user's computer
- system, and (b) will operate properly with a modified version
- of the Library that is interface-compatible with the Linked
- Version.
-
- e) Provide Installation Information, but only if you would otherwise
- be required to provide such information under section 6 of the
- GNU GPL, and only to the extent that such information is
- necessary to install and execute a modified version of the
- Combined Work produced by recombining or relinking the
- Application with a modified version of the Linked Version. (If
- you use option 4d0, the Installation Information must accompany
- the Minimal Corresponding Source and Corresponding Application
- Code. If you use option 4d1, you must provide the Installation
- Information in the manner specified by section 6 of the GNU GPL
- for conveying Corresponding Source.)
-
- 5. Combined Libraries.
-
- You may place library facilities that are a work based on the
-Library side by side in a single library together with other library
-facilities that are not Applications and are not covered by this
-License, and convey such a combined library under terms of your
-choice, if you do both of the following:
-
- a) Accompany the combined library with a copy of the same work based
- on the Library, uncombined with any other library facilities,
- conveyed under the terms of this License.
-
- b) Give prominent notice with the combined library that part of it
- is a work based on the Library, and explaining where to find the
- accompanying uncombined form of the same work.
-
- 6. Revised Versions of the GNU Lesser General Public License.
-
- The Free Software Foundation may publish revised and/or new versions
-of the GNU Lesser General Public License from time to time. Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Library as you received it specifies that a certain numbered version
-of the GNU Lesser General Public License "or any later version"
-applies to it, you have the option of following the terms and
-conditions either of that published version or of any later version
-published by the Free Software Foundation. If the Library as you
-received it does not specify a version number of the GNU Lesser
-General Public License, you may choose any version of the GNU Lesser
-General Public License ever published by the Free Software Foundation.
-
- If the Library as you received it specifies that a proxy can decide
-whether future versions of the GNU Lesser General Public License shall
-apply, that proxy's public statement of acceptance of any version is
-permanent authorization for you to choose that version for the
-Library.
diff --git a/radio/src/gui/libopenui/basenumberedit.h b/radio/src/gui/libopenui/basenumberedit.h
deleted file mode 100644
index 9d11a809f..000000000
--- a/radio/src/gui/libopenui/basenumberedit.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef _BASENUMBEREDIT_H_
-#define _BASENUMBEREDIT_H_
-
-#include "form.h"
-
-class BaseNumberEdit : public FormField {
- public:
- BaseNumberEdit(Window * parent, const rect_t &rect, int32_t vmin, int32_t vmax,
- std::function getValue, std::function setValue = nullptr, LcdFlags flags = 0):
- FormField(parent, rect),
- vmin(vmin),
- vmax(vmax),
- _getValue(std::move(getValue)),
- _setValue(std::move(setValue)),
- flags(flags)
- {
- }
-
- void setMin(int32_t value)
- {
- vmin = value;
- }
-
- void setMax(int32_t value)
- {
- vmax = value;
- }
-
- void setDefault(int32_t value)
- {
- vdefault = value;
- }
-
- int32_t getMin() const
- {
- return vmin;
- }
-
- int32_t getMax() const
- {
- return vmax;
- }
-
- int32_t getDefault() const
- {
- return vdefault;
- }
-
- void setStep(int32_t value)
- {
- step = value;
- }
-
- int32_t getStep() const
- {
- return step;
- }
-
- void setValue(int32_t value)
- {
- _setValue(limit(vmin, value, vmax));
- invalidate();
- }
-
- void setSetValueHandler(std::function handler)
- {
- _setValue = handler;
- }
-
- int32_t getValue()
- {
- return _getValue();
- }
-
- protected:
- int32_t vdefault = 0;
- int32_t vmin;
- int32_t vmax;
- int32_t step = 1;
- std::function _getValue;
- std::function _setValue;
- LcdFlags flags;
-};
-
-#endif // _BASENUMBEREDIT_H_
diff --git a/radio/src/gui/libopenui/bitmapbuffer.cpp b/radio/src/gui/libopenui/bitmapbuffer.cpp
deleted file mode 100644
index ff1f8b647..000000000
--- a/radio/src/gui/libopenui/bitmapbuffer.cpp
+++ /dev/null
@@ -1,878 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#include
-#include "opentx.h"
-
-void BitmapBuffer::drawAlphaPixel(display_t * p, uint8_t opacity, uint16_t color)
-{
- if (opacity == OPACITY_MAX) {
- drawPixel(p, color);
- }
- else if (opacity != 0) {
- uint8_t bgWeight = OPACITY_MAX - opacity;
- RGB_SPLIT(color, red, green, blue);
- RGB_SPLIT(*p, bgRed, bgGreen, bgBlue);
- uint16_t r = (bgRed * bgWeight + red * opacity) / OPACITY_MAX;
- uint16_t g = (bgGreen * bgWeight + green * opacity) / OPACITY_MAX;
- uint16_t b = (bgBlue * bgWeight + blue * opacity) / OPACITY_MAX;
- drawPixel(p, RGB_JOIN(r, g, b));
- }
-}
-
-void BitmapBuffer::drawHorizontalLine(coord_t x, coord_t y, coord_t w, uint8_t pat, LcdFlags att)
-{
- APPLY_OFFSET();
-
- if (y >= height || y >= ymax || y < ymin)
- return;
-
- if (x+w > width) {
- w = width - x;
- }
-
- display_t * p = getPixelPtr(x, y);
- display_t color = lcdColorTable[COLOR_IDX(att)];
- uint8_t opacity = 0x0F - (att >> 24);
-
- if (pat == SOLID) {
- while (w--) {
- drawAlphaPixel(p, opacity, color);
- MOVE_TO_NEXT_RIGHT_PIXEL(p);
- }
- }
- else {
- while (w--) {
- if (pat & 1) {
- drawAlphaPixel(p, opacity, color);
- pat = (pat >> 1) | 0x80;
- }
- else {
- pat = pat >> 1;
- }
- MOVE_TO_NEXT_RIGHT_PIXEL(p);
- }
- }
-}
-
-void BitmapBuffer::drawVerticalLine(coord_t x, coord_t y, coord_t h, uint8_t pat, LcdFlags att)
-{
- APPLY_OFFSET();
-
- if (x < xmin || x >= xmax)
- return;
-
- if (h < 0) {
- y += h;
- h = -h;
- }
-
- if (y < ymin) {
- h += y-ymin;
- y = ymin;
- }
-
- if (y + h > ymax) {
- h = ymax - y;
- }
-
- if (h <= 0)
- return;
-
- display_t color = lcdColorTable[COLOR_IDX(att)];
- uint8_t opacity = 0x0F - (att >> 24);
-
- if (pat == SOLID) {
- while (h--) {
- drawAlphaPixel(x, y, opacity, color);
- y++;
- }
- }
- else {
- if (pat==DOTTED && !(y%2)) {
- pat = ~pat;
- }
- while (h--) {
- if (pat & 1) {
- drawAlphaPixel(x, y, opacity, color);
- pat = (pat >> 1) | 0x80;
- }
- else {
- pat = pat >> 1;
- }
- y++;
- }
- }
-}
-
-void BitmapBuffer::drawRect(coord_t x, coord_t y, coord_t w, coord_t h, uint8_t thickness, uint8_t pat, LcdFlags att)
-{
- for (int i=0; i= xmax || y >= ymax)
- return;
-
- if (h < 0) {
- y += h;
- h = -h;
- }
- if (y < ymin) {
- h += y-ymin;
- y = ymin;
- }
- if (x < xmin) {
- w += x - xmin;
- x = xmin;
- }
- if (y + h > ymax)
- h = ymax - y;
- if (x + w > xmax)
- w = xmax - x;
-
- if (!data || h<=0 || w<=0)
- return;
-
- DMAFillRect(data, width, height, x, y, w, h, lcdColorTable[COLOR_IDX(flags)]);
-}
-
-void BitmapBuffer::drawFilledRect(coord_t x, coord_t y, coord_t w, coord_t h, uint8_t pat, LcdFlags att)
-{
- APPLY_OFFSET();
-
- if (x >= xmax || y >= ymax)
- return;
-
- if (h < 0) {
- y += h;
- h = -h;
- }
- if (y < ymin) {
- h += y-ymin;
- y = ymin;
- }
- if (x < xmin) {
- w += x - xmin;
- x = xmin;
- }
- if (y + h > ymax)
- h = ymax - y;
- if (x + w > xmax)
- w = xmax - x;
-
- for (coord_t i=y; i= 360 || endAngle <= 0)
- return false;
-
- if (startAngle == 0) {
- slopes[1] = 100000;
- slopes[2] = -100000;
- }
- else {
- float angle1 = float(startAngle) * (M_PI / 180.0f);
- if (startAngle >= 180) {
- slopes[1] = -100000;
- slopes[2] = cosf(angle1) * 100 / sinf(angle1);
- }
- else {
- slopes[1] = cosf(angle1) * 100 / sinf(angle1);
- slopes[2] = -100000;
- }
- }
-
- if (endAngle == 360) {
- slopes[0] = -100000;
- slopes[3] = 100000;
- }
- else {
- float angle2 = float(endAngle) * (M_PI / 180.0f);
- if (endAngle >= 180) {
- slopes[0] = -100000;
- slopes[3] = -cosf(angle2) * 100 / sinf(angle2);
- }
- else {
- slopes[0] = cosf(angle2) * 100 / sinf(angle2);
- slopes[3] = -100000;
- }
- }
-
- return true;
-}
-
-void BitmapBuffer::drawPie(int x0, int y0, int radius, int startAngle, int endAngle)
-{
- int slopes[4];
- if (!evalSlopes(slopes, startAngle, endAngle))
- return;
-
- for (int y=0; y<=radius; y++) {
- for (int x=0; x<=radius; x++) {
- if (x*x+y*y <= radius*radius) {
- int slope = (x==0 ? (y<0 ? -99000 : 99000) : y*100/x);
- if (slope >= slopes[0] && slope < slopes[1]) {
- drawPixel(x0+x, y0-y, WHITE);
- }
- if (-slope >= slopes[0] && -slope < slopes[1]) {
- drawPixel(x0+x, y0+y, WHITE);
- }
- if (slope >= slopes[2] && slope < slopes[3]) {
- drawPixel(x0-x, y0-y, WHITE);
- }
- if (-slope >= slopes[2] && -slope < slopes[3]) {
- drawPixel(x0-x, y0+y, WHITE);
- }
- }
- }
- }
-}
-
-void BitmapBuffer::drawMask(coord_t x, coord_t y, const BitmapBuffer * mask, LcdFlags flags, coord_t offset, coord_t width)
-{
- if (mask == nullptr) {
- return;
- }
-
- APPLY_OFFSET();
-
- coord_t w = mask->getWidth();
- coord_t height = mask->getHeight();
-
- if (!width || width > w) {
- width = w;
- }
-
- if (x + width > xmax) {
- width = xmax - x;
- }
-
- if (y >= ymax || x >= xmax || width <= 0 || x + width < xmin || y + height < ymin) {
- return;
- }
-
- display_t color = lcdColorTable[COLOR_IDX(flags)];
-
- for (coord_t row=0; row= ymax)
- continue;
- display_t * p = getPixelPtr(x, y+row);
- const display_t * q = mask->getPixelPtr(offset, row);
- for (coord_t col=0; col w) {
- width = w;
- }
-
- if (x + width > xmax) {
- width = xmax - x;
- }
-
- if (y >= ymax || x >= xmax || width <= 0 || x + width < xmin || y + height < ymin) {
- return;
- }
-
- display_t color = lcdColorTable[COLOR_IDX(flags)];
-
- for (coord_t row=0; row= ymax)
- continue;
- const uint8_t * q = bmp + 4 + row*w + offset;
- for (coord_t col=0; col= xmin && xpixel < xmax) {
- display_t * p = getPixelPtr(xpixel, ypixel);
- if (p)
- drawAlphaPixel(p, *q, color);
- }
- q++;
- }
- }
-}
-
-uint8_t BitmapBuffer::drawChar(coord_t x, coord_t y, const uint8_t * font, const uint16_t * spec, int index, LcdFlags flags)
-{
- coord_t offset = spec[index + 1];
- coord_t width = spec[index + 2] - offset;
- if (width > 0) {
- drawBitmapPattern(x, y, font, flags, offset, width);
- }
- return width;
-}
-
-void BitmapBuffer::drawSizedText(coord_t x, coord_t y, const char * s, uint8_t len, LcdFlags flags)
-{
- MOVE_OFFSET();
-
-#define INCREMENT_POS(delta) \
- do { if (flags & VERTICAL) y -= delta; else x += delta; } while(0)
-
- int width = getTextWidth(s, len, flags);
- int height = getFontHeight(flags);
-
- if (y + height <= ymin || y >= ymax) {
- RESTORE_OFFSET();
- return;
- }
-
- uint32_t fontindex = FONTINDEX(flags);
- const unsigned char * font = fontsTable[fontindex];
- const uint16_t * fontspecs = fontspecsTable[fontindex];
-
- if (flags & RIGHT) {
- INCREMENT_POS(-width);
- }
- else if (flags & CENTERED) {
- INCREMENT_POS(-width/2);
- }
-
- coord_t & pos = (flags & VERTICAL) ? y : x;
-
- bool setpos = false;
- const coord_t orig_pos = pos;
- while (len--) {
-#if defined(BOOT)
- unsigned char c = *s;
-#else
- unsigned char c = (flags & ZCHAR) ? zchar2char(*s) : *s;
-#endif
- if (setpos) {
- pos = c;
- setpos = false;
- }
- else if (!c) {
- break;
- }
- else if (c >= 0x20) {
- uint8_t width;
- width = drawChar(x-1, y, font, fontspecs, getMappedChar(c), flags);
- INCREMENT_POS(width);
- }
- else if (c == 0x1F) { // X-coord prefix
- setpos = true;
- }
- else if (c == 0x1E) {
- pos = orig_pos;
- if (flags & VERTICAL)
- x += height;
- else
- y += height;
- }
- else if (c == 1) {
- INCREMENT_POS(1);
- }
- else {
- INCREMENT_POS(2*(c-1));
- }
- s++;
- }
- lcdNextPos = pos - offsetX;
-
- RESTORE_OFFSET();
-}
-
-void BitmapBuffer::drawBitmapPie(int x0, int y0, const uint16_t * img, int startAngle, int endAngle)
-{
- const uint16_t * q = img;
- coord_t width = *q++;
- coord_t height = *q++;
-
- int slopes[4];
- if (!evalSlopes(slopes, startAngle, endAngle))
- return;
-
- int w2 = width/2;
- int h2 = height/2;
-
- for (int y=h2-1; y>=0; y--) {
- for (int x=w2-1; x>=0; x--) {
- int slope = (x==0 ? 99000 : y*100/x);
- if (slope >= slopes[0] && slope < slopes[1]) {
- *getPixelPtr(x0+w2+x, y0+h2-y) = q[(h2-y)*width + w2+x];
- }
- if (-slope >= slopes[0] && -slope < slopes[1]) {
- *getPixelPtr(x0+w2+x, y0+h2+y) = q[(h2+y)*width + w2+x];
- }
- if (slope >= slopes[2] && slope < slopes[3]) {
- *getPixelPtr(x0+w2-x, y0+h2-y) = q[(h2-y)*width + w2-x];
- }
- if (-slope >= slopes[2] && -slope < slopes[3]) {
- *getPixelPtr(x0+w2-x, y0+h2+y) = q[(h2+y)*width + w2-x];
- }
- }
- }
-}
-
-void BitmapBuffer::drawBitmapPatternPie(coord_t x0, coord_t y0, const uint8_t * img, LcdFlags flags, int startAngle, int endAngle)
-{
- coord_t width = *((uint16_t *)img);
- coord_t height = *(((uint16_t *)img)+1);
- const uint8_t * q = img+4;
-
- int slopes[4];
- if (!evalSlopes(slopes, startAngle, endAngle))
- return;
-
- display_t color = lcdColorTable[COLOR_IDX(flags)];
-
- int w2 = width/2;
- int h2 = height/2;
-
- for (int y=h2-1; y>=0; y--) {
- for (int x=w2-1; x>=0; x--) {
- int slope = (x==0 ? (y<0 ? -99000 : 99000) : y*100/x);
- if (slope >= slopes[0] && slope < slopes[1]) {
- drawAlphaPixel(x0+w2+x, y0+h2-y, q[(h2-y)*width + w2+x], color);
- }
- if (-slope >= slopes[0] && -slope < slopes[1]) {
- drawAlphaPixel(x0+w2+x, y0+h2+y, q[(h2+y)*width + w2+x], color);
- }
- if (slope >= slopes[2] && slope < slopes[3]) {
- drawAlphaPixel(x0+w2-x, y0+h2-y, q[(h2-y)*width + w2-x], color);
- }
- if (-slope >= slopes[2] && -slope < slopes[3]) {
- drawAlphaPixel(x0+w2-x, y0+h2+y, q[(h2+y)*width + w2-x], color);
- }
- }
- }
-}
-
-BitmapBuffer * BitmapBuffer::load(const char * filename)
-{
- const char * ext = getFileExtension(filename);
- if (ext && !strcmp(ext, ".bmp"))
- return load_bmp(filename);
- else
- return load_stb(filename);
-}
-
-BitmapBuffer * BitmapBuffer::loadMask(const char * filename)
-{
- BitmapBuffer * bitmap = BitmapBuffer::load(filename);
- if (bitmap) {
- display_t * p = bitmap->getPixelPtr(0, 0);
- for (int i = bitmap->getWidth() * bitmap->getHeight(); i > 0; i--) {
- *((uint8_t *)p) = OPACITY_MAX - ((*p) >> 12);
- MOVE_TO_NEXT_RIGHT_PIXEL(p);
- }
- }
- return bitmap;
-}
-
-BitmapBuffer * BitmapBuffer::loadMaskOnBackground(const char * filename, LcdFlags foreground, LcdFlags background)
-{
- BitmapBuffer * result = nullptr;
- BitmapBuffer * mask = BitmapBuffer::loadMask(getThemePath(filename));
- if (mask) {
- result = new BitmapBuffer(BMP_RGB565, mask->getWidth(), mask->getHeight());
- if (result) {
- result->clear(background);
- result->drawMask(0, 0, mask, foreground);
- }
- delete mask;
- }
- return result;
-}
-
-FIL imgFile __DMA;
-
-BitmapBuffer * BitmapBuffer::load_bmp(const char * filename)
-{
- UINT read;
- uint8_t palette[16];
- uint8_t bmpBuf[LCD_W]; /* maximum with LCD_W */
- uint8_t * buf = &bmpBuf[0];
-
- FRESULT result = f_open(&imgFile, filename, FA_OPEN_EXISTING | FA_READ);
- if (result != FR_OK) {
- return nullptr;
- }
-
- if (f_size(&imgFile) < 14) {
- f_close(&imgFile);
- return nullptr;
- }
-
- result = f_read(&imgFile, buf, 14, &read);
- if (result != FR_OK || read != 14) {
- f_close(&imgFile);
- return nullptr;
- }
-
- if (buf[0] != 'B' || buf[1] != 'M') {
- f_close(&imgFile);
- return nullptr;
- }
-
- uint32_t fsize = *((uint32_t *)&buf[2]);
- uint32_t hsize = *((uint32_t *)&buf[10]); /* header size */
-
- uint32_t len = limit((uint32_t)4, (uint32_t)(hsize-14), (uint32_t)32);
- result = f_read(&imgFile, buf, len, &read);
- if (result != FR_OK || read != len) {
- f_close(&imgFile);
- return nullptr;
- }
-
- uint32_t ihsize = *((uint32_t *)&buf[0]); /* more header size */
-
- /* invalid header size */
- if (ihsize + 14 > hsize) {
- f_close(&imgFile);
- return nullptr;
- }
-
- /* sometimes file size is set to some headers size, set a real size in that case */
- if (fsize == 14 || fsize == ihsize + 14)
- fsize = f_size(&imgFile) - 2;
-
- /* declared file size less than header size */
- if (fsize <= hsize) {
- f_close(&imgFile);
- return nullptr;
- }
-
- uint32_t w, h;
-
- switch (ihsize){
- case 40: // windib
- case 56: // windib v3
- case 64: // OS/2 v2
- case 108: // windib v4
- case 124: // windib v5
- w = *((uint32_t *)&buf[4]);
- h = *((uint32_t *)&buf[8]);
- buf += 12;
- break;
- case 12: // OS/2 v1
- w = *((uint16_t *)&buf[4]);
- h = *((uint16_t *)&buf[6]);
- buf += 8;
- break;
- default:
- f_close(&imgFile);
- return nullptr;
- }
-
- if (*((uint16_t *)&buf[0]) != 1) { /* planes */
- f_close(&imgFile);
- return nullptr;
- }
-
- uint16_t depth = *((uint16_t *)&buf[2]);
-
- buf = &bmpBuf[0];
-
- if (depth == 4) {
- if (f_lseek(&imgFile, hsize-64) != FR_OK || f_read(&imgFile, buf, 64, &read) != FR_OK || read != 64) {
- f_close(&imgFile);
- return nullptr;
- }
- for (uint8_t i=0; i<16; i++) {
- palette[i] = buf[4*i];
- }
- }
- else {
- if (f_lseek(&imgFile, hsize) != FR_OK) {
- f_close(&imgFile);
- return nullptr;
- }
- }
-
- BitmapBuffer * bmp = new BitmapBuffer(BMP_RGB565, w, h);
- if (bmp == nullptr || bmp->getData() == nullptr) {
- f_close(&imgFile);
- return nullptr;
- }
-
- uint32_t rowSize;
- bool hasAlpha = false;
-
- switch (depth) {
- case 32:
- for (int i=h-1; i>=0; i--) {
- display_t * dst = bmp->getPixelPtr(0, i);
- for (unsigned int j=0; j> 24) & 0xff, (pixel >> 16) & 0xff, (pixel >> 8) & 0xff);
- }
- else {
- if ((pixel & 0xff) == 0xff) {
- *dst = RGB(pixel >> 24, (pixel >> 16) & 0xff, (pixel >> 8) & 0xff);
- }
- else {
- hasAlpha = true;
- bmp->setFormat(BMP_ARGB4444);
- for (display_t * p = bmp->getPixelPtr(j, i); p != bmp->getPixelPtr(0, h); MOVE_TO_NEXT_RIGHT_PIXEL(p)) {
- display_t tmp = *p;
- *p = ((tmp >> 1) & 0x0f) + (((tmp >> 7) & 0x0f) << 4) + (((tmp >> 12) & 0x0f) << 8);
- }
- *dst = ARGB(pixel & 0xff, (pixel >> 24) & 0xff, (pixel >> 16) & 0xff, (pixel >> 8) & 0xff);
- }
- }
- MOVE_TO_NEXT_RIGHT_PIXEL(dst);
- }
- }
- break;
-
- case 1:
- break;
-
- case 4:
- rowSize = ((4*w+31)/32)*4;
- for (int32_t i=h-1; i>=0; i--) {
- result = f_read(&imgFile, buf, rowSize, &read);
- if (result != FR_OK || read != rowSize) {
- f_close(&imgFile);
- delete bmp;
- return nullptr;
- }
- display_t * dst = bmp->getPixelPtr(0, i);
- for (uint32_t j=0; j> ((j & 1) ? 0 : 4)) & 0x0F;
- uint8_t val = palette[index];
- *dst = RGB(val, val, val);
- MOVE_TO_NEXT_RIGHT_PIXEL(dst);
- }
- }
- break;
-
- default:
- f_close(&imgFile);
- delete bmp;
- return nullptr;
- }
-
- f_close(&imgFile);
- return bmp;
-}
-
-#define STB_IMAGE_IMPLEMENTATION
-#define STBI_ONLY_PNG
-#define STBI_ONLY_JPEG
-#define STBI_ONLY_BMP
-#define STBI_ONLY_GIF
-#define STBI_NO_STDIO
-#define STBI_NO_HDR
-#define STBI_NO_LINEAR
-
-// #define TRACE_STB_MALLOC
-
-#if defined(TRACE_STB_MALLOC)
-#define STBI_MALLOC(sz) stb_malloc(sz)
-#define STBI_REALLOC_SIZED(p,oldsz,newsz) stb_realloc(p,oldsz,newsz)
-#define STBI_FREE(p) stb_free(p)
-
-void * stb_malloc(unsigned int size)
-{
- void * res = malloc(size);
- TRACE("malloc %d = %p", size, res);
- return res;
-}
-
-void stb_free(void *ptr)
-{
- TRACE("free %p", ptr);
- free(ptr);
-}
-
-void *stb_realloc(void *ptr, unsigned int oldsz, unsigned int newsz)
-{
- void * res = realloc(ptr, newsz);
- TRACE("realloc %p, %d -> %d = %p", ptr, oldsz, newsz, res);
- return res;
-}
-#endif // #if defined(TRACE_STB_MALLOC)
-
-#include "thirdparty/Stb/stb_image.h"
-
-// fill 'data' with 'size' bytes. return number of bytes actually read
-int stbc_read(void *user, char *data, int size)
-{
- FIL * fp = (FIL *)user;
- UINT br = 0;
- FRESULT res = f_read(fp, data, size, &br);
- if (res == FR_OK) {
- return (int)br;
- }
- return 0;
-}
-
-// skip the next 'n' bytes, or 'unget' the last -n bytes if negative
-void stbc_skip(void *user, int n)
-{
- FIL * fp = (FIL *)user;
- f_lseek(fp, f_tell(fp) + n);
-}
-
-// returns nonzero if we are at end of file/data
-int stbc_eof(void *user)
-{
- FIL * fp = (FIL *)user;
- int res = f_eof(fp);
- return res;
-}
-
-// callbacks for stb-image
-const stbi_io_callbacks stbCallbacks = {
- stbc_read,
- stbc_skip,
- stbc_eof
-};
-
-BitmapBuffer * BitmapBuffer::load_stb(const char * filename)
-{
- FRESULT result = f_open(&imgFile, filename, FA_OPEN_EXISTING | FA_READ);
- if (result != FR_OK) {
- return nullptr;
- }
-
- int w, h, n;
- unsigned char * img = stbi_load_from_callbacks(&stbCallbacks, &imgFile, &w, &h, &n, 4);
- f_close(&imgFile);
-
- if (!img) {
- return nullptr;
- }
-
- // convert to RGB565 or ARGB4444 format
- BitmapBuffer * bmp = new BitmapBuffer(n == 4 ? BMP_ARGB4444 : BMP_RGB565, w, h);
- if (bmp == NULL) {
- TRACE("load_stb() malloc failed");
- stbi_image_free(img);
- return nullptr;
- }
-
-#if 0
- DMABitmapConvert(bmp->data, img, w, h, n == 4 ? DMA2D_ARGB4444 : DMA2D_RGB565);
-#else
- display_t * dest = bmp->getPixelPtr(0, 0);
- const uint8_t * p = img;
- if (n == 4) {
- for (int row = 0; row < h; ++row) {
- for (int col = 0; col < w; ++col) {
- *dest = ARGB(p[3], p[0], p[1], p[2]);
- MOVE_TO_NEXT_RIGHT_PIXEL(dest);
- p += 4;
- }
- }
- }
- else {
- for (int row = 0; row < h; ++row) {
- for (int col = 0; col < w; ++col) {
- *dest = RGB(p[0], p[1], p[2]);
- MOVE_TO_NEXT_RIGHT_PIXEL(dest);
- p += 4;
- }
- }
- }
-#endif
-
- stbi_image_free(img);
- return bmp;
-}
diff --git a/radio/src/gui/libopenui/bitmapbuffer.h b/radio/src/gui/libopenui/bitmapbuffer.h
deleted file mode 100644
index adf460051..000000000
--- a/radio/src/gui/libopenui/bitmapbuffer.h
+++ /dev/null
@@ -1,443 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef _BITMAP_BUFFER_H_
-#define _BITMAP_BUFFER_H_
-
-#include
-#include
-#include "libopenui_types.h"
-#include "colors.h"
-#include "board.h"
-#include "debug.h"
-#include "opentx_types.h"
-#include "rle.h"
-
-#define MOVE_OFFSET() coord_t offsetX = this->offsetX; x += offsetX; this->offsetX = 0; coord_t offsetY = this->offsetY; y += offsetY; this->offsetY = 0
-#define APPLY_OFFSET() x += offsetX; y += offsetY
-#define RESTORE_OFFSET() this->offsetX = offsetX, this->offsetY = offsetY
-
-#if defined(PCBX10) && !defined(SIMU)
- #define MOVE_PIXEL_RIGHT(p, count) p -= count
-#else
- #define MOVE_PIXEL_RIGHT(p, count) p += count
-#endif
-
-#define MOVE_TO_NEXT_RIGHT_PIXEL(p) MOVE_PIXEL_RIGHT(p, 1)
-
-
-#define USE_STB
-
-typedef uint16_t display_t;
-
-enum BitmapFormats
-{
- BMP_RGB565,
- BMP_ARGB4444
-};
-
-template
-class BitmapBufferBase
-{
- public:
- BitmapBufferBase(uint8_t format, uint16_t width, uint16_t height, T * data):
- format(format),
- width(width),
- height(height),
- xmax(width),
- ymax(height),
- data(data),
- data_end(data + (width * height))
- {
- }
-
- BitmapBufferBase(uint8_t format, T * data):
- format(format),
- width(*((uint16_t*)data)),
- height(*(((uint16_t*)data) + 1)),
- xmax(width),
- ymax(height),
- data(data + 2),
- data_end(data + 2 + (width * height))
- {
- }
-
- inline void clearClippingRect()
- {
- xmin = 0;
- xmax = width;
- ymin = 0;
- ymax = height;
- }
-
- inline void setClippingRect(coord_t xmin, coord_t xmax, coord_t ymin, coord_t ymax)
- {
- this->xmin = xmin;
- this->xmax = xmax;
- this->ymin = ymin;
- this->ymax = ymax;
- }
-
- inline void getClippingRect(coord_t & xmin, coord_t & xmax, coord_t & ymin, coord_t & ymax)
- {
- xmin = this->xmin;
- xmax = this->xmax;
- ymin = this->ymin;
- ymax = this->ymax;
- }
-
- inline void setOffset(coord_t offsetX, coord_t offsetY)
- {
- this->offsetX = offsetX;
- this->offsetY = offsetY;
- }
-
- coord_t getOffsetX() const
- {
- return offsetX;
- }
-
- coord_t getOffsetY() const
- {
- return offsetY;
- }
-
- inline uint8_t getFormat() const
- {
- return format;
- }
-
- inline uint16_t getWidth() const
- {
- return width;
- }
-
- inline uint16_t getHeight() const
- {
- return height;
- }
-
- inline T * getData() const
- {
- return data;
- }
-
- uint32_t getDataSize() const
- {
- return width * height * sizeof(T);
- }
-
- inline const display_t * getPixelPtr(coord_t x, coord_t y) const
- {
-#if defined(PCBX10) && !defined(SIMU)
- x = width - x - 1;
- y = height - y - 1;
-#endif
- return &data[y*width + x];
- }
-
- protected:
- uint8_t format;
- coord_t width;
- coord_t height;
- coord_t xmin = 0;
- coord_t xmax;
- coord_t ymin = 0;
- coord_t ymax;
- coord_t offsetX = 0;
- coord_t offsetY = 0;
- T * data;
- T * data_end;
-};
-
-typedef BitmapBufferBase Bitmap;
-
-class RLEBitmap:
- public BitmapBufferBase
-{
- public:
- RLEBitmap(uint8_t format, const uint8_t* rle_data)
- : BitmapBufferBase(format, 0, 0, nullptr)
- {
- width = *((uint16_t *)rle_data);
- height = *(((uint16_t *)rle_data)+1);
- uint32_t pixels = width * height;
- data = (uint16_t*)malloc(pixels * sizeof(uint16_t));
- rle_decode_8bit((uint8_t*)data, pixels * sizeof(uint16_t), rle_data+4);
- data_end = data + pixels;
- }
-
- ~RLEBitmap()
- {
- free(data);
- }
-};
-
-class BitmapBuffer: public BitmapBufferBase
-{
- private:
- bool dataAllocated;
-#if defined(DEBUG)
- bool leakReported;
-#endif
-
- public:
-
- BitmapBuffer(uint8_t format, uint16_t width, uint16_t height):
- BitmapBufferBase(format, width, height, nullptr),
- dataAllocated(true)
-#if defined(DEBUG)
- , leakReported(false)
-#endif
- {
- data = (uint16_t *)malloc(width*height*sizeof(uint16_t));
- data_end = data + (width * height);
- }
-
- BitmapBuffer(uint8_t format, uint16_t width, uint16_t height, uint16_t * data):
- BitmapBufferBase(format, width, height, data),
- dataAllocated(false)
-#if defined(DEBUG)
- , leakReported(false)
-#endif
- {
- }
-
- ~BitmapBuffer()
- {
- if (dataAllocated) {
- free(data);
- }
- }
-
- inline void setFormat(uint8_t format)
- {
- this->format = format;
- }
-
- inline void clear(LcdFlags flags=0)
- {
- drawSolidFilledRect(0, 0, width - offsetX, height - offsetY, flags);
- }
-
- inline void drawPixel(display_t * p, display_t value)
- {
- if (data && (data <= p || p < data_end)) {
- *p = value;
- }
-#if defined(DEBUG)
- else if (!leakReported) {
- leakReported = true;
- TRACE("BitmapBuffer(%p).drawPixel(): buffer overrun, data: %p, written at: %p", this, data, p);
- }
-#endif
- }
-
- inline const display_t * getPixelPtr(coord_t x, coord_t y) const
- {
-#if defined(PCBX10) && !defined(SIMU)
- x = width - x - 1;
- y = height - y - 1;
-#endif
- return &data[y*width + x];
- }
-
- inline display_t * getPixelPtr(coord_t x, coord_t y)
- {
-#if defined(PCBX10) && !defined(SIMU)
- x = width - x - 1;
- y = height - y - 1;
-#endif
- return &data[y*width + x];
- }
-
- inline void drawPixel(coord_t x, coord_t y, display_t value)
- {
- display_t * p = getPixelPtr(x, y);
- drawPixel(p, value);
- }
-
- void drawAlphaPixel(display_t * p, uint8_t opacity, uint16_t color);
-
- inline void drawAlphaPixel(coord_t x, coord_t y, uint8_t opacity, uint16_t color)
- {
- display_t * p = getPixelPtr(x, y);
- drawAlphaPixel(p, opacity, color);
- }
-
- void drawHorizontalLine(coord_t x, coord_t y, coord_t w, uint8_t pat, LcdFlags att);
-
- void drawVerticalLine(coord_t x, coord_t y, coord_t h, uint8_t pat, LcdFlags att);
-
- inline void drawSolidHorizontalLine(coord_t x, coord_t y, coord_t w, LcdFlags att)
- {
- drawSolidFilledRect(x, y, w, 1, att);
- }
-
- inline void drawSolidVerticalLine(coord_t x, coord_t y, coord_t h, LcdFlags att)
- {
- drawSolidFilledRect(x, y, 1, h, att);
- }
-
- void drawRect(coord_t x, coord_t y, coord_t w, coord_t h, uint8_t thickness, uint8_t pat, LcdFlags att);
-
- void drawSolidFilledRect(coord_t x, coord_t y, coord_t w, coord_t h, LcdFlags flags);
-
- void drawFilledRect(coord_t x, coord_t y, coord_t w, coord_t h, uint8_t pat, LcdFlags att);
-
- void invertRect(coord_t x, coord_t y, coord_t w, coord_t h, LcdFlags att);
-
- void drawCircle(int x0, int y0, int radius);
-
- void drawPie(int x0, int y0, int radius, int startAngle, int endAngle);
-
- void drawBitmapPie(int x0, int y0, const uint16_t * img, int startAngle, int endAngle);
-
- void drawBitmapPatternPie(coord_t x0, coord_t y0, const uint8_t * img, LcdFlags flags, int startAngle, int endAngle);
-
- static BitmapBuffer * load(const char * filename);
-
- static BitmapBuffer * loadMask(const char * filename);
-
- static BitmapBuffer * loadMaskOnBackground(const char * filename, LcdFlags foreground, LcdFlags background);
-
- void drawMask(coord_t x, coord_t y, const BitmapBuffer * mask, LcdFlags flags, coord_t offset=0, coord_t width=0);
-
- void drawBitmapPattern(coord_t x, coord_t y, const uint8_t * bmp, LcdFlags flags, coord_t offset=0, coord_t width=0);
-
- uint8_t drawChar(coord_t x, coord_t y, const uint8_t * font, const uint16_t * spec, int index, LcdFlags flags);
-
- void drawSizedText(coord_t x, coord_t y, const char * s, uint8_t len, LcdFlags flags=0);
-
- void drawText(coord_t x, coord_t y, const char * s, LcdFlags flags=0)
- {
- drawSizedText(x, y, s, 255, flags);
- }
-
- template
- void drawBitmap(coord_t x, coord_t y, const T * bmp, coord_t srcx=0, coord_t srcy=0, coord_t w=0, coord_t h=0, float scale=0)
- {
- APPLY_OFFSET();
-
- if (x >= xmax) return;
- if (y >= ymax) return;
-
- if (!data || !bmp)
- return;
-
- coord_t srcw = bmp->getWidth();
- coord_t srch = bmp->getHeight();
-
- if (w == 0)
- w = srcw;
- if (h == 0)
- h = srch;
- if (srcx + w > srcw)
- w = srcw - srcx;
- if (srcy + h > srch)
- h = srch - srcy;
-
- if (x < xmin) {
- w += x-xmin;
- srcx -= x-xmin;
- x = xmin;
- }
-
- if (y < ymin) {
- h += y-ymin;
- srcy -= y-ymin;
- y = ymin;
- }
-
- if (x + w > xmax) {
- w = xmax - x;
- }
-
- if (y + h > ymax) {
- h = ymax - y;
- }
-
- if (w <= 0 || h <= 0)
- return;
-
- // TRACE("x=%d xmin=%d xmax=%d w=%d", x, xmin, xmax, w);
-
- if (scale == 0) {
- /*if (x + w > width) {
- w = width - x;
- }
- if (y + h > height) {
- h = height - y;
- }*/
- if (bmp->getFormat() == BMP_ARGB4444) {
- DMACopyAlphaBitmap(data, width, height, x, y, bmp->getData(), srcw, srch, srcx, srcy, w, h);
- }
- else {
- DMACopyBitmap(data, width, height, x, y, bmp->getData(), srcw, srch, srcx, srcy, w, h);
- }
- }
- else {
- int scaledw = w * scale;
- int scaledh = h * scale;
-
- if (x + scaledw > width)
- scaledw = width - x;
- if (y + scaledh > height)
- scaledh = height - y;
-
- for (int i = 0; i < scaledh; i++) {
- display_t * p = getPixelPtr(x, y + i);
- const display_t * qstart = bmp->getPixelPtr(srcx, srcy + int(i / scale));
- for (int j = 0; j < scaledw; j++) {
- const display_t * q = qstart;
- MOVE_PIXEL_RIGHT(q, int(j / scale));
- if (bmp->getFormat() == BMP_ARGB4444) {
- ARGB_SPLIT(*q, a, r, g, b);
- drawAlphaPixel(p, a, RGB_JOIN(r<<1, g<<2, b<<1));
- }
- else {
- drawPixel(p, *q);
- }
- MOVE_TO_NEXT_RIGHT_PIXEL(p);
- }
- }
- }
- }
-
- template
- void drawScaledBitmap(const T * bitmap, coord_t x, coord_t y, coord_t w, coord_t h)
- {
- float vscale = float(h) / bitmap->getHeight();
- float hscale = float(w) / bitmap->getWidth();
- float scale = vscale < hscale ? vscale : hscale;
-
- int xshift = (w - (bitmap->getWidth() * scale)) / 2;
- int yshift = (h - (bitmap->getHeight() * scale)) / 2;
- drawBitmap(x + xshift, y + yshift, bitmap, 0, 0, 0, 0, scale);
- }
-
- protected:
- static BitmapBuffer * load_bmp(const char * filename);
- static BitmapBuffer * load_stb(const char * filename);
-};
-
-extern BitmapBuffer * lcd;
-
-#endif // _BITMAP_BUFFER_H_
diff --git a/radio/src/gui/libopenui/button.cpp b/radio/src/gui/libopenui/button.cpp
deleted file mode 100644
index 927e4041f..000000000
--- a/radio/src/gui/libopenui/button.cpp
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#include
-#include "button.h"
-#include "draw_functions.h"
-#include "lcd.h"
-#include "theme.h"
-
-void Button::onPress()
-{
- bool check = (pressHandler && pressHandler());
- if (check != bool(flags & BUTTON_CHECKED)) {
- flags ^= BUTTON_CHECKED;
- invalidate();
- }
-}
-
-#if defined(HARDWARE_KEYS)
-void Button::onKeyEvent(event_t event)
-{
- TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), event);
-
- if (event == EVT_KEY_BREAK(KEY_ENTER)) {
- onPress();
- }
- else {
- FormField::onKeyEvent(event);
- }
-}
-#endif
-
-#if defined(HARDWARE_TOUCH)
-bool Button::onTouchEnd(coord_t x, coord_t y)
-{
- if (enabled()) {
- onPress();
- if (!(flags & BUTTON_NOFOCUS)) {
- setFocus();
- }
- }
- return true;
-}
-#endif
-
-void Button::checkEvents()
-{
- Window::checkEvents();
- if (checkHandler)
- checkHandler();
-}
-
-void TextButton::paint(BitmapBuffer * dc)
-{
- FormField::paint(dc);
-
- LcdFlags textColor = TEXT_COLOR;
-
- if (checked()) {
- if (hasFocus()) {
- drawSolidRect(dc, 0, 0, rect.w, rect.h, 2, TEXT_INVERTED_BGCOLOR);
- dc->drawSolidFilledRect(3, 3, rect.w - 6, rect.h - 6, TEXT_INVERTED_BGCOLOR);
- }
- else {
- drawSolidRect(dc, 0, 0, rect.w, rect.h, 1, CURVE_AXIS_COLOR);
- dc->drawSolidFilledRect(2, 2, rect.w - 4, rect.h - 4, TEXT_INVERTED_BGCOLOR);
- }
- textColor = TEXT_INVERTED_COLOR;
- }
- else {
- if (flags & BUTTON_BACKGROUND) {
- if (hasFocus()) {
- drawSolidRect(dc, 0, 0, rect.w, rect.h, 2, TEXT_INVERTED_BGCOLOR);
- dc->drawSolidFilledRect(2, 2, rect.w - 4, rect.h - 4, CURVE_AXIS_COLOR);
- }
- else {
- dc->drawSolidFilledRect(0, 0, rect.w, rect.h, CURVE_AXIS_COLOR);
- }
- }
- else {
- if (hasFocus()) {
- drawSolidRect(dc, 0, 0, rect.w, rect.h, 2, TEXT_INVERTED_BGCOLOR);
- }
- else {
- drawSolidRect(dc, 0, 0, rect.w, rect.h, 1, CURVE_AXIS_COLOR);
- }
- }
- }
-
- dc->drawText(rect.w / 2, (rect.h - getFontHeight(flags)) / 2, text.c_str(), CENTERED | textColor);
-}
-
-const uint8_t __alpha_button_on[] {
-#include "alpha_button_on.lbm"
-};
-Bitmap ALPHA_BUTTON_ON(BMP_ARGB4444, (const uint16_t*)__alpha_button_on);
-
-const uint8_t __alpha_button_off[] {
-#include "alpha_button_off.lbm"
-};
-Bitmap ALPHA_BUTTON_OFF(BMP_ARGB4444, (const uint16_t*)__alpha_button_off);
-
-void IconButton::paint(BitmapBuffer * dc)
-{
- dc->drawBitmap(0, 0, theme->getIconButtonBitmap(icon, checked()));
-}
-
-FabIconButton::FabIconButton(Window * parent, coord_t x, coord_t y, uint8_t icon, std::function pressHandler, uint8_t flags):
- Button(parent, { x - 34, y - 34, 68, 68 }, pressHandler, flags),
- icon(icon)
-{
-}
-
-void FabIconButton::paint(BitmapBuffer * dc)
-{
- // TODO ? dc->drawBitmap(0, 0, theme->getIconButtonBitmap(icon, checked()));
- dc->drawBitmap(0, 0, checked() ? &ALPHA_BUTTON_ON : &ALPHA_BUTTON_OFF);
- const BitmapBuffer * mask = theme->getIconMask(icon);
- if (mask) {
- dc->drawMask((68 - mask->getWidth()) / 2, (68 - mask->getHeight()) / 2, mask, TEXT_BGCOLOR);
- }
-}
diff --git a/radio/src/gui/libopenui/button.h b/radio/src/gui/libopenui/button.h
deleted file mode 100644
index e193474e3..000000000
--- a/radio/src/gui/libopenui/button.h
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef _BUTTON_H_
-#define _BUTTON_H_
-
-#include "form.h"
-#include
-
-enum ButtonFlags {
- BUTTON_BACKGROUND = 1,
- BUTTON_CHECKED = 2,
- BUTTON_NOFOCUS = 4,
- BUTTON_CHECKED_ON_FOCUS = 8,
- BUTTON_DISABLED = 16,
-};
-
-class Button : public FormField {
- public:
- Button(Window * parent, const rect_t & rect, std::function pressHandler=nullptr, uint8_t flags=0):
- FormField(parent, rect),
- pressHandler(pressHandler),
- flags(flags)
- {
- }
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "Button";
- }
-#endif
-
- void enable(bool enabled=true)
- {
- if (!enabled != bool(flags & BUTTON_DISABLED)) {
- flags ^= BUTTON_DISABLED;
- invalidate();
- }
- }
-
- void disable()
- {
- enable(false);
- }
-
- void check(bool checked=true)
- {
- if (checked != bool(flags & BUTTON_CHECKED)) {
- flags ^= BUTTON_CHECKED;
- invalidate();
- }
- }
-
- bool enabled()
- {
- return !(flags & BUTTON_DISABLED);
- }
-
- bool checked()
- {
- if (flags & BUTTON_CHECKED_ON_FOCUS)
- return hasFocus();
- else
- return flags & BUTTON_CHECKED;
- }
-
- void setPressHandler(std::function handler)
- {
- pressHandler = std::move(handler);
- }
-
- void setCheckHandler(std::function handler)
- {
- checkHandler = std::move(handler);
- }
-
-#if defined(HARDWARE_KEYS)
- void onKeyEvent(event_t event);
-#endif
-
-#if defined(HARDWARE_TOUCH)
- bool onTouchEnd(coord_t x, coord_t y) override;
-#endif
-
- void checkEvents() override;
-
- protected:
- std::function pressHandler;
- std::function checkHandler;
- uint8_t flags;
-
- void onPress();
-};
-
-class TextButton : public Button {
- public:
- TextButton(Window * parent, const rect_t & rect, std::string text, std::function pressHandler=nullptr, uint8_t flags=BUTTON_BACKGROUND):
- Button(parent, rect, pressHandler, flags),
- text(std::move(text))
- {
- windowFlags = OPAQUE;
- }
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "TextButton \"" + text + "\"";
- }
-#endif
-
- void setText(std::string value)
- {
- if (value != text) {
- text = std::move(value);
- invalidate();
- }
- }
-
- void paint(BitmapBuffer * dc) override;
-
- protected:
- std::string text;
-};
-
-class IconButton: public Button {
- public:
- IconButton(Window * parent, const rect_t & rect, uint8_t icon, std::function pressHandler, uint8_t flags=0):
- Button(parent, rect, pressHandler, flags),
- icon(icon)
- {
- }
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "IconButton(" + std::to_string(icon) + ")";
- }
-#endif
-
- void paint(BitmapBuffer * dc) override;
-
- protected:
- uint8_t icon;
-};
-
-class FabIconButton: public Button {
- public:
- FabIconButton(Window * parent, coord_t x, coord_t y, uint8_t icon, std::function pressHandler, uint8_t flags=0);
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "FabIconButton(" + std::to_string(icon) + ")";
- }
-#endif
-
- void paint(BitmapBuffer * dc) override;
-
- protected:
- uint8_t icon;
-};
-
-#endif
diff --git a/radio/src/gui/libopenui/checkbox.cpp b/radio/src/gui/libopenui/checkbox.cpp
deleted file mode 100644
index 1d11e0839..000000000
--- a/radio/src/gui/libopenui/checkbox.cpp
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#include
-#include "checkbox.h"
-#include "draw_functions.h"
-
-void CheckBox::paint(BitmapBuffer * dc)
-{
- bool hasFocus = this->hasFocus();
- uint8_t value = getValue();
- if (hasFocus) {
- dc->drawSolidFilledRect(0, 2, 16, 16, TEXT_INVERTED_BGCOLOR);
- if (value) {
- dc->drawSolidFilledRect(2, 4, 12, 12, TEXT_BGCOLOR);
- dc->drawSolidFilledRect(3, 5, 10, 10, SCROLLBOX_COLOR);
- }
- else {
- dc->drawSolidFilledRect(2, 4, 12, 12, TEXT_BGCOLOR);
- }
- }
- else {
- if (value) {
- dc->drawSolidFilledRect(2, 4, 12, 12, SCROLLBOX_COLOR);
- drawSolidRect(dc, 0, 2, 16, 16, 1, CURVE_AXIS_COLOR);
- }
- else {
- drawSolidRect(dc, 0, 2, 16, 16, 1, CURVE_AXIS_COLOR);
- }
- }
-}
-
-#if defined(HARDWARE_KEYS)
-void CheckBox::onKeyEvent(event_t event)
-{
- TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), event);
-
- if (event == EVT_KEY_BREAK(KEY_ENTER)) {
- setValue(!getValue());
- invalidate({0, 0, 20, 20});
- }
- else {
- FormField::onKeyEvent(event);
- }
-}
-#endif
-
-#if defined(HARDWARE_TOUCH)
-bool CheckBox::onTouchEnd(coord_t x, coord_t y)
-{
- setValue(!getValue());
- setFocus();
- invalidate({0, 0, 20, 20});
- return true;
-}
-#endif
diff --git a/radio/src/gui/libopenui/checkbox.h b/radio/src/gui/libopenui/checkbox.h
deleted file mode 100644
index 5d33fa5c0..000000000
--- a/radio/src/gui/libopenui/checkbox.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef _CHECKBOX_H_
-#define _CHECKBOX_H_
-
-#include "form.h"
-
-class CheckBox : public FormField {
- public:
- CheckBox(Window * parent, const rect_t & rect, std::function getValue, std::function setValue,
- LcdFlags flags = 0) :
- FormField(parent, rect),
- getValue(getValue),
- setValue(setValue)
- {
- }
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "CheckBox";
- }
-#endif
-
- void paint(BitmapBuffer * dc) override;
-
-#if defined(HARDWARE_KEYS)
- void onKeyEvent(event_t event) override;
-#endif
-
-#if defined(HARDWARE_TOUCH)
- bool onTouchEnd(coord_t x, coord_t y) override;
-#endif
-
- protected:
- const char * label;
- std::function getValue;
- std::function setValue;
-};
-
-#endif // _CHECKBOX_H_
diff --git a/radio/src/gui/libopenui/choice.cpp b/radio/src/gui/libopenui/choice.cpp
deleted file mode 100644
index 04addf03b..000000000
--- a/radio/src/gui/libopenui/choice.cpp
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#include "choice.h"
-#include "menu.h"
-#include "draw_functions.h"
-#include "strhelpers.h"
-#include "opentx.h"
-
-const uint8_t LBM_DROPDOWN[] = {
-#include "mask_dropdown.lbm"
-};
-
-Choice::Choice(Window * parent, const rect_t &rect, const char * values, int16_t vmin, int16_t vmax,
- std::function getValue, std::function setValue, LcdFlags flags) :
- FormField(parent, rect),
- values(values),
- vmin(vmin),
- vmax(vmax),
- getValue(std::move(getValue)),
- setValue(std::move(setValue)),
- flags(flags)
-{
-}
-
-void Choice::paint(BitmapBuffer * dc)
-{
- FormField::paint(dc);
-
- LcdFlags textColor;
- if (editMode)
- textColor = TEXT_INVERTED_COLOR;
- else if (hasFocus())
- textColor = TEXT_INVERTED_BGCOLOR;
- else
- textColor = 0;
-
- if (textHandler)
- dc->drawText(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, textHandler(getValue()).c_str(), textColor);
- else
- drawTextAtIndex(dc, FIELD_PADDING_LEFT, FIELD_PADDING_TOP, values, getValue() - vmin, flags | textColor);
-
- dc->drawBitmapPattern(rect.w - 14, (rect.h - 5) / 2, LBM_DROPDOWN, textColor);
-}
-
-#if defined(HARDWARE_KEYS)
-void Choice::onKeyEvent(event_t event)
-{
- TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), event);
-
- if (event == EVT_KEY_BREAK(KEY_ENTER)) {
- editMode = true;
- invalidate();
- openMenu();
- }
- else {
- FormField::onKeyEvent(event);
- }
-}
-#endif
-
-void Choice::openMenu()
-{
- auto menu = new Menu();
- auto value = getValue();
- int count = 0;
- int current = -1;
-
- for (int i = vmin; i <= vmax; ++i) {
- if (isValueAvailable && !isValueAvailable(i))
- continue;
- if (textHandler) {
- menu->addLine(textHandler(i), [=]() {
- setValue(i);
- });
- }
- else {
- menu->addLine(TEXT_AT_INDEX(values, i - vmin), [=]() {
- setValue(i);
- });
- }
- if (value == i) {
- current = count;
- }
- ++count;
- }
-
- if (current >= 0) {
- menu->select(current);
- }
-
- menu->setCloseHandler([=]() {
- editMode = false;
- setFocus();
- });
-}
-
-#if defined(HARDWARE_TOUCH)
-bool Choice::onTouchEnd(coord_t, coord_t)
-{
- openMenu();
- setFocus();
- return true;
-}
-#endif
diff --git a/radio/src/gui/libopenui/choice.h b/radio/src/gui/libopenui/choice.h
deleted file mode 100644
index afc99044e..000000000
--- a/radio/src/gui/libopenui/choice.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef _CHOICE_H_
-#define _CHOICE_H_
-
-#include "form.h"
-#include
-
-class Choice : public FormField {
- public:
- Choice(Window * parent, const rect_t & rect, const char * values, int16_t vmin, int16_t vmax, std::function getValue, std::function setValue = nullptr, LcdFlags flags = 0);
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "Choice";
- }
-#endif
-
- void paint(BitmapBuffer * dc) override;
-
-#if defined(HARDWARE_KEYS)
- void onKeyEvent(event_t event) override;
-#endif
-
-#if defined(HARDWARE_TOUCH)
- bool onTouchEnd(coord_t x, coord_t y) override;
-#endif
-
- void setSetValueHandler(std::function handler)
- {
- setValue = std::move(handler);
- }
-
- void setAvailableHandler(std::function handler)
- {
- isValueAvailable = std::move(handler);
- }
-
- void setTextHandler(std::function handler)
- {
- textHandler = std::move(handler);
- }
-
- protected:
- const char * values;
- int16_t vmin;
- int16_t vmax;
- std::function getValue;
- std::function setValue;
- std::function isValueAvailable;
- std::function textHandler;
- LcdFlags flags;
- void openMenu();
-};
-
-#endif // _CHOICE_H_
diff --git a/radio/src/gui/libopenui/coloredit.cpp b/radio/src/gui/libopenui/coloredit.cpp
deleted file mode 100644
index 180335ada..000000000
--- a/radio/src/gui/libopenui/coloredit.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#include "coloredit.h"
-#include "numberedit.h"
-#include "bitfield.h"
-#include "lcd.h"
-
-constexpr uint8_t PART_BITS[3][2] = { {0, 5}, {5, 6}, {11, 5} };
-
-class ColorBox: public Window {
- public:
- ColorBox(Window * parent, const rect_t & rect, LcdFlags color):
- Window(parent, rect),
- color(color)
- {
- }
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "ColorBox";
- }
-#endif
-
- void paint(BitmapBuffer * dc) override
- {
- lcdSetColor(color);
- dc->drawSolidFilledRect(0, 0, width(), height(), TEXT_COLOR);
- dc->drawSolidFilledRect(1, 1, width() - 2, height() - 2, CUSTOM_COLOR);
- }
-
- void setColor(LcdFlags value)
- {
- color = value;
- invalidate();
- }
-
- protected:
- LcdFlags color;
-};
-
-ColorEdit::ColorEdit(Window * parent, const rect_t & rect, std::function getValue, std::function setValue):
- Window(parent, rect)
-{
- auto width = rect.w / 4 - 5;
-
- // The color box
- auto box = new ColorBox(this, {0, 0, rect.w - 3 * width, rect.h}, getValue());
-
- // The 3 parts of RGB
- for (uint8_t part = 0; part < 3; part++) {
- new NumberEdit(this, {rect.w - (3 - part) * width + 5, 0, width - 5, rect.h}, 0, (1 << PART_BITS[part][1]) - 1,
- [=]() {
- return BF_GET(getValue(), PART_BITS[part][0], PART_BITS[part][1]);
- },
- [=](uint8_t newValue) {
- uint16_t value = getValue();
- BF_SET(value, newValue, PART_BITS[part][0], PART_BITS[part][1]);
- setValue(value);
- box->setColor(value);
- });
- }
-
-}
-
-ColorEdit::~ColorEdit()
-{
- deleteChildren();
-}
diff --git a/radio/src/gui/libopenui/dialog.cpp b/radio/src/gui/libopenui/dialog.cpp
deleted file mode 100644
index 20322e8f1..000000000
--- a/radio/src/gui/libopenui/dialog.cpp
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#include "dialog.h"
-#include "mainwindow.h"
-#include "opentx.h"
-
-Dialog::Dialog(std::string title, const rect_t rect):
- Window(&mainWindow, rect, OPAQUE),
- title(std::move(title)),
- previousFocus(focusWindow)
-{
- bringToTop();
- FormField::clearCurrentField();
- setFocus();
-}
-
-void Dialog::paint(BitmapBuffer * dc)
-{
- dc->drawRect(0, 0, width() - 1, height() - 1, 1, SOLID, TEXT_COLOR);
- dc->drawSolidFilledRect(1, 1, width() - 3, PAGE_LINE_HEIGHT, TITLE_BGCOLOR);
- dc->drawText(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, title.c_str(), MENU_TITLE_COLOR);
-
- lcdSetColor(g_eeGeneral.themeData.options[0].unsignedValue);
- dc->drawSolidFilledRect(1, PAGE_LINE_HEIGHT + 1, width() - 3, height() - PAGE_LINE_HEIGHT - 3, CUSTOM_COLOR);
-}
-
-void Dialog::deleteLater()
-{
- if (previousFocus) {
- previousFocus->setFocus();
- }
-
- Window::deleteLater();
-}
-
-#define ALERT_FRAME_TOP 70
-#define ALERT_FRAME_PADDING 10
-#define ALERT_BITMAP_PADDING 15
-#define ALERT_TITLE_LEFT 135
-#define ALERT_TITLE_LINE_HEIGHT 30
-#define ALERT_MESSAGE_TOP 210
-#define ALERT_ACTION_TOP 230
-#define ALERT_BUTTON_TOP 300
-
-FullScreenDialog::FullScreenDialog(uint8_t type, std::string title, std::string message, std::function confirmHandler):
- Dialog(title, {0, 0, LCD_W, LCD_H}),
- type(type),
- message(std::move(message)),
- confirmHandler(confirmHandler)
-{
-#if defined(HARDWARE_TOUCH)
- new FabIconButton(this, LCD_W - 50, ALERT_BUTTON_TOP, ICON_NEXT,
- [=]() -> uint8_t {
- if (confirmHandler)
- confirmHandler();
- return 0;
- });
-#endif
-}
-
-FullScreenDialog::~FullScreenDialog()
-{
-}
-
-void FullScreenDialog::paint(BitmapBuffer * dc)
-{
- theme->drawBackground(dc);
-
- if (type == WARNING_TYPE_ALERT || type == WARNING_TYPE_ASTERISK)
- dc->drawBitmap(ALERT_BITMAP_PADDING, ALERT_FRAME_TOP + ALERT_BITMAP_PADDING, theme->asterisk);
- else if (type == WARNING_TYPE_INFO)
- dc->drawBitmap(ALERT_BITMAP_PADDING, ALERT_FRAME_TOP + ALERT_BITMAP_PADDING, theme->busy);
- else // confirmation
- dc->drawBitmap(ALERT_BITMAP_PADDING, ALERT_FRAME_TOP + ALERT_BITMAP_PADDING, theme->question);
-
- if (type == WARNING_TYPE_ALERT) {
-#if defined(TRANSLATIONS_FR) || defined(TRANSLATIONS_IT) || defined(TRANSLATIONS_CZ)
- dc->drawText(ALERT_TITLE_LEFT, ALERT_FRAME_TOP + ALERT_FRAME_PADDING, STR_WARNING, ALARM_COLOR|DBLSIZE);
- dc->drawText(ALERT_TITLE_LEFT, ALERT_FRAME_TOP + ALERT_FRAME_PADDING + ALERT_TITLE_LINE_HEIGHT, title, ALARM_COLOR|DBLSIZE);
-#else
- dc->drawText(ALERT_TITLE_LEFT, ALERT_FRAME_TOP + ALERT_FRAME_PADDING, title.c_str(), ALARM_COLOR|DBLSIZE);
- dc->drawText(ALERT_TITLE_LEFT, ALERT_FRAME_TOP + ALERT_FRAME_PADDING + ALERT_TITLE_LINE_HEIGHT, STR_WARNING, ALARM_COLOR|DBLSIZE);
-#endif
- }
- else if (!title.empty()) {
- dc->drawText(ALERT_TITLE_LEFT, ALERT_FRAME_TOP + ALERT_FRAME_PADDING, title.c_str(), ALARM_COLOR|DBLSIZE);
- }
-
- if (!message.empty()) {
- dc->drawText(ALERT_FRAME_PADDING+5, ALERT_MESSAGE_TOP, message.c_str(), MIDSIZE);
- }
-
-#if 0
- if (action) {
- // dc->drawText(ALERT_FRAME_PADDING+5, ALERT_ACTION_TOP, action);
- }
-#endif
-}
-
-#if defined(HARDWARE_KEYS)
-void FullScreenDialog::onKeyEvent(event_t event)
-{
- TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), event);
-
- if (event == EVT_KEY_BREAK(KEY_ENTER)) {
- deleteLater();
- if (confirmHandler)
- confirmHandler();
- }
- else if (event == EVT_KEY_BREAK(KEY_EXIT)) {
- deleteLater();
- }
-}
-#endif
-
-#if defined(HARDWARE_TOUCH)
-bool FullScreenDialog::onTouchEnd(coord_t x, coord_t y)
-{
- Window::onTouchEnd(x, y);
- deleteLater();
- return true;
-}
-#endif
-
-void FullScreenDialog::checkEvents()
-{
- Window::checkEvents();
- if (closeCondition && closeCondition()) {
- deleteLater();
- }
-}
-
-void FullScreenDialog::deleteLater()
-{
- if (previousFocus) {
- previousFocus->setFocus();
- }
- if (running) {
- running = false;
- }
- else {
- Window::deleteLater();
- }
-}
-
-void FullScreenDialog::runForever()
-{
- running = true;
-
- while (running) {
- auto check = pwrCheck();
- if (check == e_power_off) {
- boardOff();
- }
- else if (check == e_power_press) {
- RTOS_WAIT_MS(20);
- continue;
- }
-
- checkBacklight();
- wdt_reset();
-
- RTOS_WAIT_MS(20);
- mainWindow.run(false);
- }
-
- Window::deleteLater();
-}
-
-void raiseAlert(const char * title, const char * msg, const char * info, uint8_t sound)
-{
- AUDIO_ERROR_MESSAGE(sound);
- auto dialog = new FullScreenDialog(WARNING_TYPE_ALERT, title, msg);
- dialog->runForever();
-}
-
-MessageDialog::MessageDialog(const char * title, const char * message):
- Dialog(title, {50, 73, LCD_W - 100, LCD_H - 146})
-{
- new StaticText(this, {0, height() / 2, width(), PAGE_LINE_HEIGHT}, message, CENTERED);
-}
-
-#if defined(HARDWARE_KEYS)
-void MessageDialog::onKeyEvent(event_t event)
-{
- TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), event);
-
- if (event == EVT_KEY_BREAK(KEY_EXIT) || event == EVT_KEY_BREAK(KEY_ENTER)) {
- deleteLater();
- }
-}
-#endif
-
-ConfirmDialog::ConfirmDialog(const char *title, const char *message, std::function confirmHandler) :
- Dialog(title, {50, 73, LCD_W - 100, LCD_H - 146}),
- confirmHandler(std::move(confirmHandler))
-{
- new StaticText(this, {0, height() / 2, width(), PAGE_LINE_HEIGHT}, message, CENTERED);
-}
-
-#if defined(HARDWARE_KEYS)
-void ConfirmDialog::onKeyEvent(event_t event)
-{
- TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), event);
-
- if (event == EVT_KEY_BREAK(KEY_ENTER)) {
- confirmHandler();
- deleteLater();
- }
- else if (event == EVT_KEY_BREAK(KEY_EXIT)) {
- deleteLater();
- }
-}
-#endif
diff --git a/radio/src/gui/libopenui/draw_functions.cpp b/radio/src/gui/libopenui/draw_functions.cpp
deleted file mode 100644
index ee7c6d9ba..000000000
--- a/radio/src/gui/libopenui/draw_functions.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#include "opentx.h"
-
-void drawTextAtIndex(BitmapBuffer * dc, coord_t x, coord_t y, const char * s, uint8_t idx, LcdFlags flags)
-{
- char length = *s++;
- dc->drawSizedText(x, y, s+length*idx, length, flags & ~ZCHAR);
-}
-
-void drawNumber(BitmapBuffer * dc, coord_t x, coord_t y, int32_t val, LcdFlags flags, uint8_t len, const char * prefix, const char * suffix)
-{
- char str[48+1]; // max=16 for the prefix, 16 chars for the number, 16 chars for the suffix
- char *s = str+32;
- *s = '\0';
- int idx = 0;
- int mode = MODE(flags);
- bool neg = false;
- if (val < 0) {
- val = -val;
- neg = true;
- }
- do {
- *--s = '0' + (val % 10);
- ++idx;
- val /= 10;
- if (mode!=0 && idx==mode) {
- mode = 0;
- *--s = '.';
- if (val==0)
- *--s = '0';
- }
- } while (val!=0 || mode>0 || (mode==MODE(LEADING0) && idxdrawText(x, y, s, flags);
-}
-
-void drawSolidRect(BitmapBuffer * dc, coord_t x, coord_t y, coord_t w, coord_t h, uint8_t thickness, LcdFlags att)
-{
- dc->drawSolidFilledRect(x, y, thickness, h, att);
- dc->drawSolidFilledRect(x+w-thickness, y, thickness, h, att);
- dc->drawSolidFilledRect(x, y, w, thickness, att);
- dc->drawSolidFilledRect(x, y+h-thickness, w, thickness, att);
-}
diff --git a/radio/src/gui/libopenui/draw_functions.h b/radio/src/gui/libopenui/draw_functions.h
deleted file mode 100644
index ab63b727b..000000000
--- a/radio/src/gui/libopenui/draw_functions.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef _LIBOPENUI_DRAW_FUNCTIONS_H_
-#define _LIBOPENUI_DRAW_FUNCTIONS_H_
-
-#include
-#include "libopenui_types.h"
-
-void drawTextAtIndex(BitmapBuffer * dc, coord_t x, coord_t y, const char * s, uint8_t idx, LcdFlags flags=0);
-void drawNumber(BitmapBuffer * dc, coord_t x, coord_t y, int32_t val, LcdFlags flags=0, uint8_t len=0, const char * prefix=nullptr, const char * suffix=nullptr);
-void drawSolidRect(BitmapBuffer * dc, coord_t x, coord_t y, coord_t w, coord_t h, uint8_t thickness=1, LcdFlags flags=0);
-void drawSource(BitmapBuffer * dc, coord_t x, coord_t y, mixsrc_t idx, LcdFlags flags=0);
-void drawSwitch(BitmapBuffer * dc, coord_t x, coord_t y, int32_t idx, LcdFlags flags=0);
-void drawTrimMode(BitmapBuffer * dc, coord_t x, coord_t y, uint8_t phase, uint8_t idx, LcdFlags flags = 0);
-
-#endif // _LIBOPENUI_DRAW_FUNCTIONS_H_
diff --git a/radio/src/gui/libopenui/filechoice.cpp b/radio/src/gui/libopenui/filechoice.cpp
deleted file mode 100644
index b36cdd9b6..000000000
--- a/radio/src/gui/libopenui/filechoice.cpp
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#include "filechoice.h"
-#include "menu.h"
-#include "draw_functions.h"
-#include "sdcard.h"
-
-const uint8_t LBM_FOLDER[] = {
-#include "mask_folder.lbm"
-};
-
-// comparison, not case sensitive.
-bool compare_nocase(const std::string &first, const std::string &second)
-{
- return strcasecmp(first.c_str(), second.c_str()) < 0;
-}
-
-FileChoice::FileChoice(Window * parent, const rect_t & rect, std::string folder, const char * extension, int maxlen, std::function getValue, std::function setValue):
- FormField(parent, rect),
- folder(std::move(folder)),
- extension(extension),
- maxlen(maxlen),
- getValue(std::move(getValue)),
- setValue(std::move(setValue))
-{
-}
-
-void FileChoice::paint(BitmapBuffer * dc)
-{
- FormField::paint(dc);
-
- const char * displayedValue = getValue().c_str();
-
- LcdFlags textColor;
- if (editMode)
- textColor = TEXT_INVERTED_COLOR;
- else if (hasFocus())
- textColor = TEXT_INVERTED_BGCOLOR;
- else if (displayedValue[0] == '\0')
- textColor = CURVE_AXIS_COLOR;
- else
- textColor = TEXT_COLOR;
-
- dc->drawText(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, displayedValue[0] == '\0' ? "---" : displayedValue, textColor);
- dc->drawBitmapPattern(rect.w - 20, (rect.h - 11) / 2, LBM_FOLDER, textColor);
-}
-
-void FileChoice::openMenu()
-{
- FILINFO fno;
- DIR dir;
- std::list files;
- const char * fnExt;
- uint8_t fnLen, extLen;
-
- FRESULT res = f_opendir(&dir, folder.c_str()); // Open the directory
- if (res == FR_OK) {
- bool firstTime = true;
- for (;;) {
- res = sdReadDir(&dir, &fno, firstTime);
- if (res != FR_OK || fno.fname[0] == 0)
- break; // break on error or end of dir
- if (fno.fattrib & AM_DIR)
- continue; // skip subfolders
- if (fno.fattrib & AM_HID)
- continue; // skip hidden files
- if (fno.fattrib & AM_SYS)
- continue; // skip system files
-
- fnExt = getFileExtension(fno.fname, 0, 0, &fnLen, &extLen);
- fnLen -= extLen;
-
- if (!fnLen || fnLen > maxlen)
- continue; // wrong size
- if (extension && !isExtensionMatching(fnExt, extension))
- continue; // wrong extension
-
- files.emplace_back(fno.fname, fnLen);
- }
-
- if (files.size() > 0) {
- // sort files
- files.sort(compare_nocase);
-
- files.push_front("");
-
- auto menu = new Menu();
- int count = 0;
- int current = -1;
- std::string value = getValue();
- for (const auto &file: files) {
- menu->addLine(file, [=]() {
- setValue(file);
- });
- // TRACE("%s %d %s %d", value.c_str(), value.size(), file.c_str(), file.size());
- if (value.compare(file) == 0) {
- // TRACE("OK");
- current = count;
- }
- ++count;
- }
-
- if (current >= 0) {
- menu->select(current);
- }
-
- menu->setCloseHandler([=]() {
- editMode = false;
- setFocus();
- });
- }
- else {
- TRACE("NO FILES !!!!!");
- // TODO popup "NO FILES"
- }
- }
-}
-
-#if defined(HARDWARE_KEYS)
-void FileChoice::onKeyEvent(event_t event)
-{
- TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), event);
-
- if (event == EVT_KEY_BREAK(KEY_ENTER)) {
- editMode = true;
- invalidate();
- openMenu();
- }
- else {
- FormField::onKeyEvent(event);
- }
-}
-#endif
-
-#if defined(HARDWARE_TOUCH)
-bool FileChoice::onTouchEnd(coord_t, coord_t)
-{
- openMenu();
- setFocus();
- return true;
-}
-#endif
diff --git a/radio/src/gui/libopenui/filechoice.h b/radio/src/gui/libopenui/filechoice.h
deleted file mode 100644
index 284e3dcf6..000000000
--- a/radio/src/gui/libopenui/filechoice.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef _FILECHOICE_H_
-#define _FILECHOICE_H_
-
-#include "form.h"
-#include
-
-class FileChoice: public FormField {
- public:
- FileChoice(Window * parent, const rect_t & rect, std::string folder, const char * extension, int maxlen, std::function getValue, std::function setValue);
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "FileChoice";
- }
-#endif
-
- void paint(BitmapBuffer * dc) override;
-
-#if defined(HARDWARE_KEYS)
- void onKeyEvent(event_t event) override;
-#endif
-
-#if defined(HARDWARE_TOUCH)
- bool onTouchEnd(coord_t x, coord_t y) override;
-#endif
-
- protected:
- std::string folder;
- const char * extension;
- int maxlen;
- std::function getValue;
- std::function setValue;
-
- void openMenu();
-};
-
-#endif // _FILECHOICE_H_
diff --git a/radio/src/gui/libopenui/form.cpp b/radio/src/gui/libopenui/form.cpp
deleted file mode 100644
index 758c42d3c..000000000
--- a/radio/src/gui/libopenui/form.cpp
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#include "form.h"
-#include "opentx.h"
-#include "draw_functions.h"
-
-FormField * FormField::current = nullptr;
-
-FormField::FormField(Window *parent, const rect_t &rect, uint8_t flags) :
- Window(parent, rect, flags)
-{
- if (current) {
- setPreviousField(current);
- current->setNextField(this);
- }
-
- FormWindow * form = dynamic_cast(parent);
- if (form && !form->getFirstField())
- form->setFirstField(this);
-
- current = this;
-}
-
-#if defined(HARDWARE_KEYS)
-void FormWindow::onKeyEvent(event_t event)
-{
- TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), event);
-
- if (event == EVT_KEY_BREAK(KEY_EXIT) && first && getFocus() != first) {
- first->setFocus();
- }
- else {
- Window::onKeyEvent(event);
- }
-}
-
-void FormField::onKeyEvent(event_t event)
-{
- TRACE_WINDOWS("%s received event 0x%X", FormField::getWindowDebugString().c_str(), event);
-
- if (event == EVT_ROTARY_RIGHT/*EVT_KEY_BREAK(KEY_DOWN)*/) {
- if (next) {
- next->setFocus();
- }
- }
- else if (event == EVT_ROTARY_LEFT/*EVT_KEY_BREAK(KEY_UP)*/) {
- if (previous) {
- previous->setFocus();
- }
- }
- else if (event == EVT_KEY_BREAK(KEY_ENTER)) {
- editMode = !editMode;
- invalidate();
- }
- else if (event == EVT_KEY_BREAK(KEY_EXIT) && editMode) {
- editMode = false;
- invalidate();
- }
- else {
- Window::onKeyEvent(event);
- }
-}
-
-void FormGroup::onKeyEvent(event_t event)
-{
- TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), event);
-
- if (event == EVT_KEY_BREAK(KEY_ENTER)) {
- editMode = true;
- first->setFocus();
- }
- else if (event == EVT_KEY_BREAK(KEY_EXIT) && editMode) {
- editMode = false;
- setFocus();
- }
- else {
- FormField::onKeyEvent(event);
- }
-}
-#endif
-
-void FormField::paint(BitmapBuffer * dc)
-{
- if (editMode) {
- dc->drawSolidFilledRect(0, 0, rect.w, rect.h, TEXT_INVERTED_BGCOLOR);
- }
- else if (hasFocus()) {
- drawSolidRect(dc, 0, 0, rect.w, rect.h, 2, TEXT_INVERTED_BGCOLOR);
- }
- else if (!(windowFlags & BORDER_FOCUS_ONLY)) {
- drawSolidRect(dc, 0, 0, rect.w, rect.h, 1, CURVE_AXIS_COLOR);
- }
-}
-
-void FormGroup::paint(BitmapBuffer * dc)
-{
- if (!editMode && hasFocus()) {
- drawSolidRect(dc, 0, 0, rect.w, rect.h, 2, TEXT_INVERTED_BGCOLOR);
- }
- else if (!(windowFlags & BORDER_FOCUS_ONLY)) {
- drawSolidRect(dc, 0, 0, rect.w, rect.h, 1, CURVE_AXIS_COLOR);
- }
-}
diff --git a/radio/src/gui/libopenui/form.h b/radio/src/gui/libopenui/form.h
deleted file mode 100644
index 33ede76a7..000000000
--- a/radio/src/gui/libopenui/form.h
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef _FORM_H_
-#define _FORM_H_
-
-#include "window.h"
-
-class FormField: public Window {
- friend class FormWindow;
-
- public:
- FormField(Window * parent, const rect_t & rect, uint8_t flags=0);
-
- inline void setNextField(FormField *field)
- {
- next = field;
- }
-
- inline void setPreviousField(FormField * field)
- {
- previous = field;
- }
-
- inline static void setCurrentField(FormField * field)
- {
- current = field;
- }
-
- inline static void clearCurrentField()
- {
- setCurrentField(nullptr);
- };
-
- inline static FormField * getCurrentField()
- {
- return current;
- };
-
- inline FormField * getPreviousField()
- {
- return previous;
- };
-
- inline FormField * getNextField()
- {
- return next;
- };
-
- inline static void link(FormField * previous, FormField * next)
- {
- previous->setNextField(next);
- next->setPreviousField(previous);
- }
-
- void paint(BitmapBuffer * dc) override;
-
-#if defined(HARDWARE_KEYS)
- void onKeyEvent(event_t event) override;
-#endif
-
- protected:
- static FormField * current;
- FormField * next = nullptr;
- FormField * previous = nullptr;
- bool editMode = false;
-};
-
-class FormGroup: public FormField {
- public:
- FormGroup(Window * parent, const rect_t & rect, uint8_t flags=0) :
- FormField(parent, rect, flags)
- {
- FormField::current = nullptr;
- }
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "FormGroup";
- }
-#endif
-
- void clear()
- {
- Window::clear();
- first = nullptr;
- FormField::current = nullptr;
- }
-
- inline void setFirstField(FormField * field)
- {
- first = field;
- }
-
- inline void setLastField(FormField * field = nullptr)
- {
- // by default the current field is the last one
- if (!field)
- field = getCurrentField();
-
- FormField::link(field, first);
-
- // now the current field is the group, it will be linked to the next one
- FormField::setCurrentField(this);
- }
-
- FormField * getFirstField()
- {
- return first;
- }
-
- protected:
- FormField * first = nullptr;
-
-#if defined(HARDWARE_KEYS)
- void onKeyEvent(event_t event) override;
-#endif
-
- void paint(BitmapBuffer * dc) override;
-};
-
-class FormWindow: public Window {
- public:
- FormWindow(Window * parent, const rect_t & rect) :
- Window(parent, rect)
- {
- FormField::current = nullptr;
- }
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "FormWindow";
- }
-#endif
-
- void clear()
- {
- first = nullptr;
- Window::clear();
- }
-
- FormField * getFirstField()
- {
- return first;
- }
-
- inline void setFirstField(FormField * field)
- {
- first = field;
- field->setFocus();
- }
-
- inline void setLastField(FormField * field = nullptr)
- {
- if (!field)
- field = FormField::getCurrentField();
- FormField::link(field, first);
- }
-
- protected:
-
-#if defined(HARDWARE_KEYS)
- void onKeyEvent(event_t event) override;
-#endif
-
- void paint(BitmapBuffer * dc) override
- {
- }
-
- protected:
- FormField * first = nullptr;
-};
-
-#endif
diff --git a/radio/src/gui/libopenui/gridlayout.h b/radio/src/gui/libopenui/gridlayout.h
deleted file mode 100644
index 25687ac1c..000000000
--- a/radio/src/gui/libopenui/gridlayout.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef _GRIDLAYOUT_H_
-#define _GRIDLAYOUT_H_
-
-#include "window.h"
-
-class GridLayout {
- public:
- GridLayout(coord_t width):
- width(width)
- {
- }
-
- GridLayout(Window * window):
- width(window->width())
- {
- }
-
- rect_t getSlot(uint8_t count = 1, uint8_t index = 0) const
- {
- coord_t width = (this->width - (count - 1) * PAGE_LINE_SPACING) / count;
- coord_t left = (width + PAGE_LINE_SPACING) * index;
- return {left, currentY, width, PAGE_LINE_HEIGHT};
- }
-
- void spacer(coord_t height=PAGE_LINE_SPACING)
- {
- currentY += height;
- }
-
- void nextLine(coord_t height=PAGE_LINE_HEIGHT)
- {
- spacer(height + PAGE_LINE_SPACING);
- }
-
- void addWindow(Window * window)
- {
- window->adjustHeight();
- currentY += window->rect.h + PAGE_LINE_SPACING;
- }
-
- coord_t getWindowHeight() const
- {
- return currentY;
- }
-
- protected:
- coord_t width;
- coord_t currentY = 0;
-};
-
-class FormGridLayout: public GridLayout {
- public:
- FormGridLayout(coord_t width = LCD_W):
- GridLayout(width)
- {
- }
-
- void setLabelWidth(coord_t value)
- {
- labelWidth = value;
- }
-
- void setMarginLeft(coord_t value)
- {
- lineMarginLeft = value;
- }
-
- void setMarginRight(coord_t value)
- {
- lineMarginRight = value;
- }
-
- rect_t getLineSlot()
- {
- return { lineMarginLeft, currentY, this->width - lineMarginRight - lineMarginLeft, PAGE_LINE_HEIGHT };
- }
-
- rect_t getCenteredSlot(coord_t width = 0 ) const
- {
- if (width == 0)
- width = this->width;
- return { lineMarginLeft + (this->width - width)/2, currentY, min(width, this->width - lineMarginRight - lineMarginLeft), PAGE_LINE_HEIGHT };
- }
-
- rect_t getLabelSlot(bool indent = false) const
- {
- coord_t left = indent ? lineMarginLeft + PAGE_INDENT_WIDTH : lineMarginLeft;
- return { left, currentY, labelWidth - left, PAGE_LINE_HEIGHT };
- }
-
- rect_t getFieldSlot(uint8_t count = 1, uint8_t index = 0) const
- {
- coord_t width = (this->width - labelWidth - lineMarginRight - (count - 1) * PAGE_LINE_SPACING) / count;
- coord_t left = labelWidth + (width + PAGE_LINE_SPACING) * index;
- return {left, currentY, width, PAGE_LINE_HEIGHT};
- }
-
- protected:
- coord_t labelWidth = PAGE_LABEL_WIDTH;
- coord_t lineMarginLeft = PAGE_PADDING;
- coord_t lineMarginRight = 10;
-};
-
-#endif
diff --git a/radio/src/gui/libopenui/keyboard_base.h b/radio/src/gui/libopenui/keyboard_base.h
deleted file mode 100644
index 006b8ab0c..000000000
--- a/radio/src/gui/libopenui/keyboard_base.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef _KEYBOARD_BASE_H_
-#define _KEYBOARD_BASE_H_
-
-#include "mainwindow.h"
-#include "libopenui_types.h"
-
-class Page;
-class TabsGroup;
-
-template
-class Keyboard: public Window {
- public:
- Keyboard(coord_t height):
- Window(nullptr, {0, LCD_H - height, LCD_W, height}, OPAQUE)
- {
- }
-
- void setField(T * field)
- {
- this->field = field;
- attach(&mainWindow);
- Window * w = getPageBody();
- w->setHeight(LCD_H - height() - w->top());
- w->scrollTo(field);
- invalidate();
- }
-
- void disable(bool resizePage)
- {
- detach();
- if (field) {
- Window * w = getPageBody();
- w->setHeight(LCD_H - 0 - w->top());
- field = nullptr;
- }
- }
-
- T * getField() const
- {
- return field;
- }
-
- protected:
- T * field = nullptr;
- Window * getPageBody()
- {
- Window * parent = field;
- while (1) {
- Window * tmp = parent->getParent();
- if ((tmp->getWindowFlags() & OPAQUE) && tmp->width() == LCD_W && tmp->height() == LCD_H) {
- return parent;
- }
- parent = tmp;
- }
- }
-};
-
-#endif // _KEYBOARD_BASE_H_
\ No newline at end of file
diff --git a/radio/src/gui/libopenui/keyboard_number.cpp b/radio/src/gui/libopenui/keyboard_number.cpp
deleted file mode 100644
index a27b36157..000000000
--- a/radio/src/gui/libopenui/keyboard_number.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#include "keyboard_number.h"
-#include "button.h"
-#include "basenumberedit.h"
-#include "lcd.h"
-
-constexpr coord_t KEYBOARD_HEIGHT = 90;
-
-NumberKeyboard * NumberKeyboard::_instance = nullptr;
-
-NumberKeyboard::NumberKeyboard():
- Keyboard(KEYBOARD_HEIGHT)
-{
- new TextButton(this, { LCD_W/2 - 115, 10, 50, 30 }, "<<",
- [=]() -> uint8_t {
- if (field) {
- field->setValue(field->getValue() - 10 * field->getStep());
- }
- return 0;
- }, BUTTON_BACKGROUND | BUTTON_NOFOCUS);
-
- new TextButton(this, { LCD_W/2 - 55, 10, 50, 30 }, "-",
- [=]() -> uint8_t {
- if (field) {
- field->setValue(field->getValue() - field->getStep());
- }
- return 0;
- }, BUTTON_BACKGROUND | BUTTON_NOFOCUS);
-
- new TextButton(this, { LCD_W/2 + 5, 10, 50, 30 }, "+",
- [=]() -> uint8_t {
- if (field) {
- field->setValue(field->getValue() + field->getStep());
- }
- return 0;
- }, BUTTON_BACKGROUND | BUTTON_NOFOCUS);
-
- new TextButton(this, { LCD_W/2 + 65, 10, 50, 30 }, ">>",
- [=]() -> uint8_t {
- if (field) {
- field->setValue(field->getValue() + 10 * field->getStep());
- }
- return 0;
- }, BUTTON_BACKGROUND | BUTTON_NOFOCUS);
-
- new TextButton(this, { LCD_W/2 - 115, 50, 50, 30 }, "MIN",
- [=]() -> uint8_t {
- if (field) {
- field->setValue(field->getMin());
- }
- return 0;
- }, BUTTON_BACKGROUND | BUTTON_NOFOCUS);
-
- new TextButton(this, { LCD_W/2 + 65, 50, 50, 30 }, "MAX",
- [=]() -> uint8_t {
- if (field) {
- field->setValue(field->getMax());
- }
- return 0;
- }, BUTTON_BACKGROUND | BUTTON_NOFOCUS);
-
- new TextButton(this, { LCD_W/2 - 55, 50, 110, 30 }, "DEFAULT",
- [=]() -> uint8_t {
- if (field) {
- field->setValue(field->getDefault());
- }
- return 0;
- }, BUTTON_BACKGROUND | BUTTON_NOFOCUS);
-}
-
-NumberKeyboard::~NumberKeyboard()
-{
- _instance = nullptr;
-}
-
-void NumberKeyboard::paint(BitmapBuffer * dc)
-{
- lcdSetColor(RGB(0xE0, 0xE0, 0xE0));
- dc->clear(CUSTOM_COLOR);
-}
diff --git a/radio/src/gui/libopenui/keyboard_text.cpp b/radio/src/gui/libopenui/keyboard_text.cpp
deleted file mode 100644
index 9c406a370..000000000
--- a/radio/src/gui/libopenui/keyboard_text.cpp
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#include "keyboard_text.h"
-#include "textedit.h"
-#include "fonts.h"
-#include "lcd.h"
-
-constexpr coord_t KEYBOARD_HEIGHT = 160;
-
-TextKeyboard * TextKeyboard::_instance = nullptr;
-
-const uint8_t LBM_KEY_UPPERCASE[] = {
-#include "mask_key_uppercase.lbm"
-};
-
-const uint8_t LBM_KEY_LOWERCASE[] = {
-#include "mask_key_lowercase.lbm"
-};
-
-const uint8_t LBM_KEY_BACKSPACE[] = {
-#include "mask_key_backspace.lbm"
-};
-
-const uint8_t LBM_KEY_LETTERS[] = {
-#include "mask_key_letters.lbm"
-};
-
-const uint8_t LBM_KEY_NUMBERS[] = {
-#include "mask_key_numbers.lbm"
-};
-
-const uint8_t LBM_KEY_SPACEBAR[] = {
-#include "mask_key_spacebar.lbm"
-};
-
-const uint8_t * const LBM_SPECIAL_KEYS[] = {
- LBM_KEY_BACKSPACE,
- LBM_KEY_UPPERCASE,
- LBM_KEY_LOWERCASE,
- LBM_KEY_LETTERS,
- LBM_KEY_NUMBERS,
-};
-
-const char * const KEYBOARD_LOWERCASE[] = {
- "qwertyuiop",
- " asdfghjkl",
- "\201zxcvbnm\200",
- "\204\t\n"
-};
-
-const char * const KEYBOARD_UPPERCASE[] = {
- "QWERTYUIOP",
- " ASDFGHJKL",
- "\202ZXCVBNM\200",
- "\204\t\n"
-};
-
-const char * const KEYBOARD_NUMBERS[] = {
- "1234567890",
- "_-",
- " \200",
- "\203\t\n"
-};
-
-const char * const * const KEYBOARD_LAYOUTS[] = {
- KEYBOARD_UPPERCASE,
- KEYBOARD_LOWERCASE,
- KEYBOARD_LOWERCASE,
- KEYBOARD_NUMBERS,
-};
-
-TextKeyboard::TextKeyboard():
- Keyboard(KEYBOARD_HEIGHT),
- layout(KEYBOARD_LOWERCASE)
-{
-}
-
-TextKeyboard::~TextKeyboard()
-{
- _instance = nullptr;
-}
-
-void TextKeyboard::setCursorPos(coord_t x)
-{
- if (!field)
- return;
-
- uint8_t size = field->getMaxLength();
- char * data = field->getData();
- coord_t rest = x;
- for (cursorIndex = 0; cursorIndex < size; cursorIndex++) {
- if (data[cursorIndex] == '\0')
- break;
- char c = data[cursorIndex];
- c = zchar2char(c);
- uint8_t w = getCharWidth(c, fontspecsTable[0]);
- if (rest < w)
- break;
- rest -= w;
- }
- cursorPos = x - rest;
- field->invalidate();
-}
-
-void TextKeyboard::paint(BitmapBuffer * dc)
-{
- lcdSetColor(RGB(0xE0, 0xE0, 0xE0));
- dc->clear(CUSTOM_COLOR);
-
- for (uint8_t i=0; i<4; i++) {
- coord_t y = 15 + i * 40;
- coord_t x = 15;
- const char * c = layout[i];
- while(*c) {
- if (*c == ' ') {
- x += 15;
- }
- else if (*c == '\t') {
- // spacebar
- dc->drawBitmapPattern(x, y, LBM_KEY_SPACEBAR, TEXT_COLOR);
- x += 135;
- }
- else if (*c == '\n') {
- // enter
- dc->drawSolidFilledRect(x, y-2, 80, 25, TEXT_DISABLE_COLOR);
- dc->drawText(x+40, y, "ENTER", CENTERED);
- x += 80;
- }
- else if (int8_t(*c) < 0) {
- dc->drawBitmapPattern(x, y, LBM_SPECIAL_KEYS[uint8_t(*c - 128)], TEXT_COLOR);
- x += 45;
- }
- else {
- dc->drawSizedText(x, y, c, 1);
- x += 30;
- }
- c++;
- }
- }
-}
-
-bool TextKeyboard::onTouchEnd(coord_t x, coord_t y)
-{
- if (!field)
- return false;
-
- uint8_t size = field->getMaxLength();
- char * data = field->getData();
-
- char c = 0;
-
- uint8_t row = max(0, y - 5) / 40;
- const char * key = layout[row];
- while(*key) {
- if (*key == ' ') {
- x -= 15;
- }
- else if (*key == '\t') {
- if (x <= 135) {
- c = ' ';
- break;
- }
- x -= 135;
- }
- else if (*key == '\n') {
- if (x <= 80) {
- // enter
- disable(true);
- return true;
- }
- x -= 80;
- }
- else if (int8_t(*key) < 0) {
- if (x <= 45) {
- uint8_t specialKey = *key;
- if (specialKey == 128) {
- // backspace
- if (cursorIndex > 0) {
- char c = zchar2char(data[cursorIndex - 1]);
- memmove(data + cursorIndex - 1, data + cursorIndex, size - cursorIndex);
- data[size - 1] = '\0';
- cursorPos -= getCharWidth(c, fontspecsTable[0]);
- --cursorIndex;
- }
- }
- else {
- layout = KEYBOARD_LAYOUTS[specialKey - 129];
- invalidate();
- }
- break;
- }
- x -= 45;
- }
- else {
- if (x <= 30) {
- c = *key;
- break;
- }
- x -= 30;
- }
- key++;
- }
-
- if (c && zlen(data, size) < size) {
- memmove(data + cursorIndex + 1, data + cursorIndex, size - cursorIndex - 1);
- data[cursorIndex++] = char2zchar(c);
- cursorPos += getCharWidth(c, fontspecsTable[0]);
- }
-
- field->invalidate();
- return true;
-}
diff --git a/radio/src/gui/libopenui/keyboard_text.h b/radio/src/gui/libopenui/keyboard_text.h
deleted file mode 100644
index 183ce0706..000000000
--- a/radio/src/gui/libopenui/keyboard_text.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef _KEYBOARD_TEXT_H_
-#define _KEYBOARD_TEXT_H_
-
-#include "keyboard_base.h"
-#include "textedit.h"
-
-class TextKeyboard : public Keyboard {
- friend class TextEdit;
-
- public:
- TextKeyboard();
-
- ~TextKeyboard() override;
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "TextKeyboard";
- }
-#endif
-
- static TextKeyboard * instance() {
- if (!_instance)
- _instance = new TextKeyboard();
- return _instance;
- }
-
- coord_t getCursorPos() const
- {
- return cursorPos;
- }
-
- void setCursorPos(coord_t x);
-
- void paint(BitmapBuffer * dc) override;
-
-#if defined(HARDWARE_TOUCH)
- bool onTouchEnd(coord_t x, coord_t y) override;
-#endif
-
- protected:
- static TextKeyboard * _instance;
- coord_t cursorPos = 0;
- uint8_t cursorIndex = 0;
- const char * const * layout;
-};
-
-#endif // _KEYBOARD_TEXT_H_
\ No newline at end of file
diff --git a/radio/src/gui/libopenui/libopenui_defines.h b/radio/src/gui/libopenui/libopenui_defines.h
deleted file mode 100644
index 24b19e3e8..000000000
--- a/radio/src/gui/libopenui/libopenui_defines.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef _LIBOPEUI_DEFINES_H_
-#define _LIBOPEUI_DEFINES_H_
-
-#define CENTER
-
-/* lcd common flags */
-#define BLINK 0x01
-
-/* drawText flags */
-#define INVERS 0x02
-#define LEFT 0x00 /* align left */
-#define CENTERED 0x04 /* align center */
-#define RIGHT 0x08 /* align right */
-#define SHADOWED 0x80 /* black copy at +1 +1 */
-
-/* drawNumber flags */
-#define LEADING0 0x10
-#define PREC1 0x20
-#define PREC2 0x30
-#define MODE(flags) ((((int8_t)(flags) & 0x30) - 0x10) >> 4)
-
-#define ZCHAR 0x10
-
-/* rect, square flags */
-#define ROUND 0x04
-
-/* telemetry flags */
-#define NO_UNIT 0x40
-
-enum FontSizeIndex {
- STDSIZE_INDEX,
- TINSIZE_INDEX,
- SMLSIZE_INDEX,
- MIDSIZE_INDEX,
- DBLSIZE_INDEX,
- XXLSIZE_INDEX,
- SPARE6_INDEX,
- SPARE7_INDEX,
- STDSIZE_BOLD_INDEX,
- SPARE9_INDEX,
- SPAREa_INDEX,
- SPAREb_INDEX,
- SPAREc_INDEX,
- SPAREd_INDEX,
- SPAREe_INDEX,
- SPAREf_INDEX,
-};
-
-#define STDSIZE (STDSIZE_INDEX << 8)
-#define TINSIZE (TINSIZE_INDEX << 8)
-#define SMLSIZE (SMLSIZE_INDEX << 8)
-#define MIDSIZE (MIDSIZE_INDEX << 8)
-#define DBLSIZE (DBLSIZE_INDEX << 8)
-#define XXLSIZE (XXLSIZE_INDEX << 8)
-#define BOLD (STDSIZE_BOLD_INDEX << 8)
-#define FONTSIZE_MASK 0x0f00
-
-#if !defined(BOOT)
-#define FONTSIZE(flags) ((flags) & FONTSIZE_MASK)
-#define FONTINDEX(flags) (FONTSIZE(flags) >> 8)
-#else
-#define FONTSIZE(flags) STDSIZE
-#define FONTINDEX(flags) STDSIZE_INDEX
-#endif
-
-#define TIMEBLINK 0x1000
-#define TIMEHOUR 0x2000
-#define EXPANDED 0x2000
-#define VERTICAL 0x4000
-
-#endif
diff --git a/radio/src/gui/libopenui/mainwindow.cpp b/radio/src/gui/libopenui/mainwindow.cpp
deleted file mode 100644
index 228c4e666..000000000
--- a/radio/src/gui/libopenui/mainwindow.cpp
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#include "lcd.h"
-#include "mainwindow.h"
-#include "colorlcd/draw_functions.h"
-
-#if defined(HARDWARE_TOUCH)
-#include "touch_driver.h"
-#endif
-
-MainWindow mainWindow;
-
-#if defined(HARDWARE_TOUCH)
-STRUCT_TOUCH touchState;
-#endif
-
-void MainWindow::emptyTrash()
-{
- for (auto window: trash) {
- delete window;
- }
- trash.clear();
-}
-
-void MainWindow::checkEvents(bool trash)
-{
-#if defined(HARDWARE_TOUCH)
- if (touchState.Event == TE_DOWN) {
- onTouchStart(touchState.X + scrollPositionX, touchState.Y + scrollPositionY);
- // touchState.Event = TE_NONE;
- }
- else if (touchState.Event == TE_UP) {
- touchState.Event = TE_NONE;
- onTouchEnd(touchState.startX + scrollPositionX, touchState.startY + scrollPositionY);
- }
- else if (touchState.Event == TE_SLIDE) {
- coord_t x = touchState.X - touchState.lastX;
- coord_t y = touchState.Y - touchState.lastY;
- onTouchSlide(touchState.X, touchState.Y, touchState.startX, touchState.startY, x, y);
- touchState.lastX = touchState.X;
- touchState.lastY = touchState.Y;
- }
-#endif
-
- Window::checkEvents();
-
- if (trash) {
- emptyTrash();
- }
-}
-
-void MainWindow::invalidate(const rect_t & rect)
-{
- if (invalidatedRect.w) {
- coord_t left = min(invalidatedRect.left(), rect.left());
- coord_t right = max(invalidatedRect.right(), rect.right());
- coord_t top = min(invalidatedRect.top(), rect.top());
- coord_t bottom = max(invalidatedRect.bottom(), rect.bottom());
- invalidatedRect = {left, top, right - left, bottom - top};
- }
- else {
- invalidatedRect = rect;
- }
-}
-
-bool MainWindow::refresh()
-{
- if (invalidatedRect.w) {
- if (invalidatedRect.x > 0 || invalidatedRect.y > 0 || invalidatedRect.w < LCD_W || invalidatedRect.h < LCD_H) {
- TRACE_WINDOWS("Refresh rect: left=%d top=%d width=%d height=%d", invalidatedRect.left(), invalidatedRect.top(), invalidatedRect.w, invalidatedRect.h);
- BitmapBuffer * previous = lcd;
- lcdNextLayer();
- lcdCopy(lcd->getData(), previous->getData());
- }
- else {
- TRACE_WINDOWS("Refresh full screen");
- lcdNextLayer();
- }
- lcd->setOffset(0, 0);
- lcd->setClippingRect(invalidatedRect.left(), invalidatedRect.right(), invalidatedRect.top(), invalidatedRect.bottom());
- fullPaint(lcd);
- invalidatedRect.w = 0;
- return true;
- }
- else {
- return false;
- }
-}
-
-void MainWindow::run(bool trash)
-{
- checkEvents(trash);
- if (refresh()) {
- lcdRefresh();
- }
-}
diff --git a/radio/src/gui/libopenui/mainwindow.h b/radio/src/gui/libopenui/mainwindow.h
deleted file mode 100644
index 396f08b12..000000000
--- a/radio/src/gui/libopenui/mainwindow.h
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef _MAINWINDOW_H_
-#define _MAINWINDOW_H_
-
-#include
-#include "window.h"
-#include "bitmapbuffer.h"
-
-class MainWindow: public Window {
- public:
- MainWindow():
- Window(nullptr, {0, 0, LCD_W, LCD_H}),
- invalidatedRect(rect)
- {
- }
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "MainWindow";
- }
-#endif
-
- void checkEvents(bool trash=true);
-
- void invalidate()
- {
- invalidate({0, 0, rect.w, rect.h});
- }
-
- void invalidate(const rect_t & rect) override;
-
- bool refresh();
-
- void run(bool trash=true);
-
- protected:
- void emptyTrash();
- rect_t invalidatedRect;
- const char * shutdown = nullptr;
-};
-
-extern MainWindow mainWindow;
-
-#endif // _MAINWINDOW_H_
\ No newline at end of file
diff --git a/radio/src/gui/libopenui/menu.cpp b/radio/src/gui/libopenui/menu.cpp
deleted file mode 100644
index a06a24aca..000000000
--- a/radio/src/gui/libopenui/menu.cpp
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#include "menu.h"
-
-MenuWindow::MenuWindow(Menu * parent):
- Window(parent, {LCD_W / 2 - 100, LCD_H / 2, 200, 0}, OPAQUE)
-{
- setScrollbarColor(WARNING_COLOR);
- setFocus();
-}
-
-void MenuWindow::select(int index)
-{
- selectedIndex = index;
- if (innerHeight > height()) {
- setScrollPositionY(lineHeight * index - 3 * lineHeight);
- }
- invalidate();
-}
-
-#if defined(HARDWARE_KEYS)
-void MenuWindow::onKeyEvent(event_t event)
-{
- TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), event);
-
- if (event == EVT_ROTARY_RIGHT) {
- select((selectedIndex + 1) % lines.size());
- }
- else if (event == EVT_ROTARY_LEFT) {
- select(selectedIndex == 0 ? lines.size() - 1 : selectedIndex - 1);
- }
- else if (event == EVT_KEY_BREAK(KEY_ENTER)) {
- Window::onKeyEvent(event); // the window above will be closed on event
- lines[selectedIndex].onPress();
- }
- else if (event == EVT_KEY_BREAK(KEY_EXIT)) {
- if (onCancel)
- onCancel();
- Window::onKeyEvent(event);
- }
- else {
- Window::onKeyEvent(event);
- }
-}
-#endif
-
-#if defined(HARDWARE_TOUCH)
-bool MenuWindow::onTouchEnd(coord_t x, coord_t y)
-{
- int index = y / lineHeight;
- lines[index].onPress();
- return false; // = close the menu (inverted so that click outside the menu closes it)
-}
-#endif
-
-void MenuWindow::paint(BitmapBuffer * dc)
-{
- int width = (innerHeight > height() ? 195 : 200);
- dc->clear(HEADER_BGCOLOR);
- for (unsigned i=0; idrawText(10, i * lineHeight + (lineHeight - 20) / 2, text[0] == '\0' ? "---" : text, selectedIndex == (int)i ? WARNING_COLOR : MENU_TITLE_COLOR);
- if (i > 0) {
- dc->drawSolidHorizontalLine(0, i * lineHeight - 1, width, CURVE_AXIS_COLOR);
- }
- }
-}
-
-void Menu::updatePosition()
-{
- if (!toolbar) {
- // there is no navigation bar at the left, we may center the window on screen
- int count = min(MenuWindow::maxLines, menuWindow.lines.size());
- coord_t h = count * MenuWindow::lineHeight - 1;
- menuWindow.setTop((LCD_H - h) / 2 + 20);
- menuWindow.setHeight(h);
- }
- menuWindow.setInnerHeight(menuWindow.lines.size() * MenuWindow::lineHeight - 1);
-}
-
-void Menu::addLine(const std::string & text, std::function onPress)
-{
- menuWindow.addLine(text, std::move(onPress));
- updatePosition();
-}
-
-void Menu::removeLines()
-{
- menuWindow.removeLines();
- updatePosition();
-}
-
-#if defined(HARDWARE_KEYS)
-void Menu::onKeyEvent(event_t event)
-{
- if (toolbar && (event == EVT_KEY_BREAK(KEY_PGDN) || event == EVT_KEY_LONG(KEY_PGDN))) {
- toolbar->onKeyEvent(event);
- }
- else if (event == EVT_KEY_BREAK(KEY_EXIT) || event == EVT_KEY_BREAK(KEY_ENTER)) {
- deleteLater();
- }
-}
-#endif
-
-#if defined(HARDWARE_TOUCH)
-bool Menu::onTouchEnd(coord_t x, coord_t y)
-{
- if (!Window::onTouchEnd(x, y)) {
- deleteLater();
- }
- return true;
-}
-
-bool Menu::onTouchSlide(coord_t x, coord_t y, coord_t startX, coord_t startY, coord_t slideX, coord_t slideY)
-{
- Window::onTouchSlide(x, y, startX, startY, slideX, slideY);
- return true;
-}
-#endif
diff --git a/radio/src/gui/libopenui/menu.h b/radio/src/gui/libopenui/menu.h
deleted file mode 100644
index 202f4d2b5..000000000
--- a/radio/src/gui/libopenui/menu.h
+++ /dev/null
@@ -1,184 +0,0 @@
-#include
-
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef _MENU_H_
-#define _MENU_H_
-
-#include
-#include
-#include "mainwindow.h"
-#include
-#include
-
-class Menu;
-
-class MenuWindow: public Window {
- friend class Menu;
-
- class MenuLine {
- friend class MenuWindow;
-
- public:
- MenuLine(std::string text, std::function onPress):
- text(std::move(text)),
- onPress(std::move(onPress))
- {
- }
-
- MenuLine(MenuLine &) = delete;
-
- MenuLine(MenuLine &&) = default;
-
- protected:
- std::string text;
- std::function onPress;
- };
-
- public:
- MenuWindow(Menu * parent);
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "MenuWindow";
- }
-#endif
-
- void setCancelHandler(std::function handler)
- {
- onCancel = handler;
- }
-
- void addLine(const std::string & text, std::function onPress)
- {
- lines.emplace_back(text, onPress);
- invalidate();
- }
-
- void removeLines()
- {
- lines.clear();
- invalidate();
- }
-
- void select(int index);
-
- void paint(BitmapBuffer * dc) override;
-
-#if defined(HARDWARE_KEYS)
- void onKeyEvent(event_t event) override;
-#endif
-
-#if defined(HARDWARE_TOUCH)
- bool onTouchEnd(coord_t x, coord_t y) override;
-#endif
-
- protected:
- std::vector lines;
-#if defined(HARDWARE_TOUCH)
- int selectedIndex = -1;
-#else
- int selectedIndex = 0;
-#endif
- std::function onCancel;
- static constexpr uint8_t maxLines = 7; // TODO NV14 was 8
- static constexpr uint8_t lineHeight = 30; // TODO NV14 was 40
-};
-
-class Menu : public Window {
- public:
- Menu() :
- Window(&mainWindow, {0, 0, LCD_W, LCD_H}, TRANSPARENT),
-#if !defined(HARDWARE_TOUCH)
- previousFocus(focusWindow),
-#endif
- menuWindow(this)
- {
- }
-
- ~Menu()
- {
- delete toolbar;
- }
-
- void setCancelHandler(std::function handler)
- {
- menuWindow.setCancelHandler(handler);
- }
-
- void deleteLater()
- {
-#if !defined(HARDWARE_TOUCH)
- if (previousFocus) {
- previousFocus->setFocus();
- }
-#endif
- Window::deleteLater();
- }
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "Menu";
- }
-#endif
-
- void setToolbar(Window * window)
- {
- toolbar = window;
- menuWindow.setLeft(toolbar->right());
- menuWindow.setTop(toolbar->top());
- menuWindow.setHeight(toolbar->height());
- }
-
- void addLine(const std::string & text, std::function onPress);
-
- void removeLines();
-
- void select(int index)
- {
- menuWindow.select(index);
- }
-
-#if defined(HARDWARE_KEYS)
- void onKeyEvent(event_t event) override;
-#endif
-
-#if defined(HARDWARE_TOUCH)
- bool onTouchStart(coord_t x, coord_t y) override
- {
- return true;
- }
-
- bool onTouchEnd(coord_t x, coord_t y) override;
-
- bool onTouchSlide(coord_t x, coord_t y, coord_t startX, coord_t startY, coord_t slideX, coord_t slideY) override;
-#endif
-
- protected:
- Window * previousFocus;
- MenuWindow menuWindow;
- Window * toolbar = nullptr;
- void updatePosition();
-};
-
-#endif
diff --git a/radio/src/gui/libopenui/menutoolbar.h b/radio/src/gui/libopenui/menutoolbar.h
deleted file mode 100644
index 27a42cd83..000000000
--- a/radio/src/gui/libopenui/menutoolbar.h
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef _MENUTOOLBAR_H_
-#define _MENUTOOLBAR_H_
-
-#include "button.h"
-#include "menu.h"
-
-int getFirstAvailable(int min, int max, std::functionisValueAvailable);
-uint8_t getFontHeight(LcdFlags flags);
-
-class MenuToolbarButton: public Button {
- public:
- MenuToolbarButton(Window * window, const rect_t & rect, char picto):
-#if defined(HARDWARE_TOUCH)
- Button(window, rect, nullptr, BUTTON_CHECKED_ON_FOCUS),
-#else
- Button(window, rect, nullptr),
-#endif
- picto(picto)
- {
- }
-
- void paint(BitmapBuffer * dc) override
- {
- if (checked()) {
- dc->drawSolidFilledRect(MENUS_TOOLBAR_BUTTON_PADDING, MENUS_TOOLBAR_BUTTON_PADDING, MENUS_TOOLBAR_BUTTON_WIDTH - 2 * MENUS_TOOLBAR_BUTTON_PADDING, MENUS_TOOLBAR_BUTTON_WIDTH - 2 * MENUS_TOOLBAR_BUTTON_PADDING, HEADER_BGCOLOR);
- dc->drawSizedText(rect.w / 2, (rect.h - getFontHeight(flags)) / 2 + 1, &picto, 1, CENTERED | MENU_TITLE_COLOR);
- }
- else {
- dc->drawSizedText(rect.w / 2, (rect.h - getFontHeight(flags)) / 2 + 1, &picto, 1, CENTERED | TEXT_COLOR);
- }
- }
-
-#if defined(HARDWARE_TOUCH)
- bool onTouchEnd(coord_t x, coord_t y) override
- {
- if (hasFocus()) {
- check(false);
- clearFocus();
- }
- else {
- setFocus();
- }
- onPress();
- return true;
- }
-#endif
-
- void check(bool checked=true)
- {
- Button::check(checked);
- onPress();
- Button::check(checked);
- }
-
- protected:
- char picto;
-};
-
-template
-class MenuToolbar: public Window {
- friend T;
-
- public:
- MenuToolbar(T * choice, Menu * menu):
- Window(menu, MENUS_TOOLBAR_RECT, NO_SCROLLBAR),
- choice(choice),
- menu(menu)
- {
- FormField::clearCurrentField();
- }
-
- ~MenuToolbar() override
- {
- deleteChildren();
- }
-
- void paint(BitmapBuffer * dc) override
- {
- dc->clear(CURVE_AXIS_COLOR);
- }
-
-#if defined(HARDWARE_KEYS)
- void onKeyEvent(event_t event) override
- {
- if (event == EVT_KEY_BREAK(KEY_PGDN)) {
- if (current == children.end()) {
- current = children.begin();
- }
- else {
- static_cast(*current)->check(false);
- ++current;
- }
- if (current != children.end()) {
- auto button = static_cast(*current);
- button->check(true);
- scrollTo(button);
- }
- else {
- setScrollPositionY(0);
- }
- }
- else if (event == EVT_KEY_LONG(KEY_PGDN)) {
- killEvents(event);
- if (current == children.end()) {
- --current;
- }
- else {
- static_cast(*current)->check(false);
- if (current == children.begin())
- current = children.end();
- else
- --current;
- }
- if (current != children.end()) {
- auto button = static_cast(*current);
- button->check(true);
- scrollTo(button);
- }
- else {
- setScrollPositionY(0);
- }
- }
- }
-#endif
-
-#if defined(HARDWARE_TOUCH)
- bool onTouchEnd(coord_t x, coord_t y) override
- {
- Window::onTouchEnd(x, y);
- return true; // = don't close the menu (inverted so that click outside the menu closes it)
- }
-#endif
-
- protected:
- std::list::iterator current = children.end();
- T * choice;
- Menu * menu;
- coord_t y = 0; // TODO NV14 was 5;
-
- void addButton(char picto, int16_t filtermin, int16_t filtermax)
- {
- int vmin = choice->vmin;
- int vmax = choice->vmax;
-
- if (vmin > filtermin || vmax < filtermin)
- return;
-
- if (choice->isValueAvailable && getFirstAvailable(filtermin, filtermax, choice->isValueAvailable) == 0)
- return;
-
- auto button = new MenuToolbarButton(this, {0, y, MENUS_TOOLBAR_BUTTON_WIDTH, MENUS_TOOLBAR_BUTTON_WIDTH}, picto);
- button->setPressHandler([=]() {
- if (button->checked()) {
- choice->fillMenu(menu, [=](int16_t index) {
- return index >= filtermin && index <= filtermax;
- });
- }
- else {
- choice->fillMenu(menu);
- }
- return 1;
- });
-
- y += 30;
-
- setInnerHeight(y);
- }
-};
-
-#endif // _MENUTOOLBAR_H_
-
diff --git a/radio/src/gui/libopenui/numberedit.cpp b/radio/src/gui/libopenui/numberedit.cpp
deleted file mode 100644
index 5a019740f..000000000
--- a/radio/src/gui/libopenui/numberedit.cpp
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#include
-#include
-#include "numberedit.h"
-#include "draw_functions.h"
-
-#if defined(HARDWARE_TOUCH)
-#include "keyboard_number.h"
-#endif
-
-NumberEdit::NumberEdit(Window * parent, const rect_t & rect, int32_t vmin, int32_t vmax, std::function getValue, std::function setValue, LcdFlags flags):
- BaseNumberEdit(parent, rect, vmin, vmax, std::move(getValue), std::move(setValue), flags)
-{
-}
-
-void NumberEdit::paint(BitmapBuffer * dc)
-{
- FormField::paint(dc);
-
- LcdFlags textColor;
- if (editMode)
- textColor = TEXT_INVERTED_COLOR;
- else if (hasFocus())
- textColor = TEXT_INVERTED_BGCOLOR;
- else if (enabled)
- textColor = TEXT_COLOR;
- else
- textColor = CURVE_AXIS_COLOR;
-
- int32_t value = getValue();
- if (displayFunction)
- displayFunction(dc, textColor, value);
- else if (value == 0 && !zeroText.empty())
- dc->drawText(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, zeroText.c_str(), textColor | flags);
- else
- drawNumber(dc, FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, textColor | flags, 0, prefix.c_str(), suffix.c_str());
-}
-
-#if defined(HARDWARE_KEYS)
-void NumberEdit::onKeyEvent(event_t event)
-{
- TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), event);
-
- if (editMode) {
- if (event == EVT_ROTARY_RIGHT) {
- int value = getValue();
- do {
- value += rotencSpeed * step;
- } while (isValueAvailable && !isValueAvailable(value) && value <= vmax);
- if (value <= vmax)
- setValue(value);
- else
- AUDIO_KEY_ERROR();
- return;
- }
- else if (event == EVT_ROTARY_LEFT) {
- int value = getValue();
- do {
- value -= rotencSpeed * step;
- } while (isValueAvailable && !isValueAvailable(value) && value >= vmin);
- if (value >= vmin)
- setValue(value);
- else
- AUDIO_KEY_ERROR();
- return;
- }
- }
-
- FormField::onKeyEvent(event);
-}
-#endif
-
-#if defined(HARDWARE_TOUCH)
-bool NumberEdit::onTouchEnd(coord_t, coord_t)
-{
- if (!enabled) {
- return true;
- }
-
- if (!hasFocus()) {
- setFocus();
- }
-
- NumberKeyboard * keyboard = NumberKeyboard::instance();
- if (keyboard->getField() != this) {
- keyboard->setField(this);
- }
-
- return true;
-}
-#endif
-
-void NumberEdit::onFocusLost()
-{
-#if defined(HARDWARE_TOUCH)
- NumberKeyboard::instance()->disable(true);
-#endif
-
- FormField::onFocusLost();
-}
diff --git a/radio/src/gui/libopenui/numberedit.h b/radio/src/gui/libopenui/numberedit.h
deleted file mode 100644
index f4d37e138..000000000
--- a/radio/src/gui/libopenui/numberedit.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef _NUMBEREDIT_H_
-#define _NUMBEREDIT_H_
-
-#include "basenumberedit.h"
-#include
-
-class NumberEdit : public BaseNumberEdit {
- public:
- NumberEdit(Window * parent, const rect_t & rect, int32_t vmin, int32_t vmax,
- std::function getValue, std::function setValue = nullptr, LcdFlags flags = 0);
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "NumberEdit(" + std::to_string(getValue()) + ")";
- }
-#endif
-
- void paint(BitmapBuffer * dc) override;
-
- void enable(bool enabled)
- {
- this->enabled = enabled;
- }
-
- void setAvailableHandler(std::function handler)
- {
- isValueAvailable = std::move(handler);
- }
-
- void setPrefix(std::string value)
- {
- prefix = std::move(value);
- }
-
- void setSuffix(std::string value)
- {
- suffix = std::move(value);
- }
-
- void setZeroText(std::string value)
- {
- zeroText = std::move(value);
- }
-
- void setDisplayHandler(std::function function)
- {
- displayFunction = std::move(function);
- }
-
-#if defined(HARDWARE_KEYS)
- void onKeyEvent(event_t event) override;
-#endif
-
-#if defined(HARDWARE_TOUCH)
- bool onTouchEnd(coord_t x, coord_t y) override;
-#endif
-
- void onFocusLost() override;
-
- protected:
- std::function displayFunction;
- std::string prefix;
- std::string suffix;
- std::string zeroText;
- bool enabled = true;
- std::function isValueAvailable;
-};
-
-#endif // _NUMBEREDIT_H_
diff --git a/radio/src/gui/libopenui/page.cpp b/radio/src/gui/libopenui/page.cpp
deleted file mode 100644
index 14c20b2ff..000000000
--- a/radio/src/gui/libopenui/page.cpp
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#include "page.h"
-#include "mainwindow.h"
-#include "keyboard_number.h"
-#include "keyboard_text.h"
-#include "keyboard_curve.h"
-#include "opentx.h" // TODO for constants
-
-PageHeader::PageHeader(Page * parent, uint8_t icon):
- Window(parent, { 0, 0, LCD_W, MENU_HEADER_HEIGHT }, OPAQUE),
- icon(icon)
-#if defined(HARDWARE_TOUCH)
- , back(this, { 0, 0, MENU_HEADER_BUTTON_WIDTH, MENU_HEADER_BUTTON_WIDTH }, ICON_BACK,
- [=]() -> uint8_t {
- parent->deleteLater();
- return 0;
- }, BUTTON_NOFOCUS)
-#endif
-{
-}
-
-void PageHeader::paint(BitmapBuffer * dc)
-{
- theme->drawMenuBackground(dc, icon, "");
- dc->drawSolidFilledRect(MENU_HEADER_HEIGHT, 0, LCD_W - MENU_HEADER_HEIGHT, MENU_HEADER_HEIGHT, HEADER_BGCOLOR);
-}
-
-Page::Page(unsigned icon):
- Window(&mainWindow, {0, 0, LCD_W, LCD_H}, OPAQUE),
- header(this, icon),
- body(this, { 0, MENU_HEADER_HEIGHT, LCD_W, LCD_H - MENU_HEADER_HEIGHT }),
- previousFocus(focusWindow)
-{
- setFocus();
-}
-
-Page::~Page()
-{
-#if defined(HARDWARE_TOUCH)
- TextKeyboard::instance()->disable(false);
- NumberKeyboard::instance()->disable(false);
- CurveKeyboard::instance()->disable(false);
-#endif
-}
-
-void Page::deleteLater()
-{
- if (previousFocus) {
- previousFocus->setFocus();
- }
-
- Window::deleteLater();
-}
-
-void Page::paint(BitmapBuffer * dc)
-{
- dc->clear(TEXT_BGCOLOR);
-}
-
-#if defined(HARDWARE_KEYS)
-void Page::onKeyEvent(event_t event)
-{
- TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), event);
-
- if (event == EVT_KEY_LONG(KEY_EXIT) || event == EVT_KEY_BREAK(KEY_EXIT)) {
- killEvents(event);
- deleteLater();
- }
-}
-#endif
-
-#if defined(HARDWARE_TOUCH)
-bool Page::onTouchEnd(coord_t x, coord_t y)
-{
- if (Window::onTouchEnd(x, y))
- return true;
-
- TextKeyboard::instance()->disable(true);
- NumberKeyboard::instance()->disable(true);
- CurveKeyboard::instance()->disable(true);
- return true;
-}
-#endif
diff --git a/radio/src/gui/libopenui/page.h b/radio/src/gui/libopenui/page.h
deleted file mode 100644
index 60598c9bb..000000000
--- a/radio/src/gui/libopenui/page.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef _PAGE_H_
-#define _PAGE_H_
-
-#include "window.h"
-#include "button.h"
-
-class Page;
-
-class PageHeader: public Window {
- public:
- PageHeader(Page * parent, uint8_t icon);
-
- void paint(BitmapBuffer * dc) override;
-
- protected:
- uint8_t icon;
-#if defined(HARDWARE_TOUCH)
- IconButton back;
-#endif
-};
-
-class Page: public Window {
- public:
- Page(unsigned icon);
-
- ~Page() override;
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "Page";
- }
-#endif
-
-#if defined(HARDWARE_KEYS)
- void onKeyEvent(event_t event) override;
-#endif
-
-#if defined(HARDWARE_TOUCH)
- bool onTouchStart(coord_t x, coord_t y) override
- {
- Window::onTouchStart(x, y);
- return true;
- }
-
- bool onTouchEnd(coord_t x, coord_t y) override;
-
- bool onTouchSlide(coord_t x, coord_t y, coord_t startX, coord_t startY, coord_t slideX, coord_t slideY) override
- {
- Window::onTouchSlide(x, y, startX, startY, slideX, slideY);
- return true;
- }
-#endif
-
- void deleteLater();
-
- void paint(BitmapBuffer * dc) override;
-
- protected:
- PageHeader header;
- FormWindow body;
- Window * previousFocus;
-};
-
-#endif // _PAGE_H_
diff --git a/radio/src/gui/libopenui/slider.cpp b/radio/src/gui/libopenui/slider.cpp
deleted file mode 100644
index a0b84099d..000000000
--- a/radio/src/gui/libopenui/slider.cpp
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#include "slider.h"
-#include "bitmaps.h"
-#include "opentx.h" // TODO remove this
-
-void Slider::paint(BitmapBuffer * dc)
-{
- int val = limit(vmin, getValue(), vmax);
- int w = divRoundClosest((rect.w - 16) * (val - vmin), vmax - vmin);
-
- if (editMode) {
- dc->drawBitmapPattern(0, 11, LBM_SLIDER_BAR_LEFT, TEXT_INVERTED_BGCOLOR);
- dc->drawSolidFilledRect(4, 11, rect.w - 8, 4, TEXT_INVERTED_BGCOLOR);
- dc->drawBitmapPattern(rect.w - 4, 11, LBM_SLIDER_BAR_RIGHT, TEXT_INVERTED_BGCOLOR);
- }
- else {
- dc->drawBitmapPattern(0, 11, LBM_SLIDER_BAR_LEFT, LINE_COLOR);
- dc->drawSolidFilledRect(4, 11, rect.w - 8, 4, LINE_COLOR);
- dc->drawBitmapPattern(rect.w - 4, 11, LBM_SLIDER_BAR_RIGHT, LINE_COLOR);
- }
-
- dc->drawBitmapPattern(w, 5, LBM_SLIDER_POINT_OUT, TEXT_COLOR);
- dc->drawBitmapPattern(w, 5, LBM_SLIDER_POINT_MID, TEXT_BGCOLOR);
- // if ((options & INVERS) && (!(options & BLINK) || !BLINK_ON_PHASE))
- if (hasFocus()) {
- dc->drawBitmapPattern(w, 5, LBM_SLIDER_POINT_IN, TEXT_INVERTED_BGCOLOR);
- }
-}
-
-int Slider::value(coord_t x) const
-{
- return vmin + ((vmax - vmin) * x + (rect.w / 2)) / rect.w;
-}
-
-#if defined(HARDWARE_KEYS)
-void Slider::onKeyEvent(event_t event)
-{
- TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), event);
-
- if (editMode) {
- if (event == EVT_ROTARY_RIGHT) {
- setValue(getValue() + rotencSpeed);
- return;
- }
- else if (event == EVT_ROTARY_LEFT) {
- setValue(getValue() - rotencSpeed);
- return;
- }
- }
-
- FormField::onKeyEvent(event);
-}
-#endif
-
-#if defined(HARDWARE_TOUCH)
-bool Slider::onTouchStart(coord_t x, coord_t y)
-{
- if (!hasFocus()) {
- setFocus();
- }
- sliding = (value(x) == getValue());
- return true;
-}
-
-bool Slider::onTouchEnd(coord_t x, coord_t y)
-{
- setValue(value(x));
- invalidate();
- return true;
-}
-
-bool Slider::onTouchSlide(coord_t x, coord_t y, coord_t startX, coord_t startY, coord_t slideX, coord_t slideY)
-{
- if (hasFocus() && sliding) {
- int newValue = value(x);
- if (getValue() != newValue) {
- setValue(newValue);
- invalidate();
- }
- }
- return true;
-}
-#endif
diff --git a/radio/src/gui/libopenui/slider.h b/radio/src/gui/libopenui/slider.h
deleted file mode 100644
index 84d8c5667..000000000
--- a/radio/src/gui/libopenui/slider.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef _SLIDER_H_
-#define _SLIDER_H_
-
-#include "form.h"
-
-class Slider : public FormField {
- public:
- Slider(Window * parent, const rect_t & rect, int32_t vmin, int32_t vmax, std::function getValue, std::function setValue):
- FormField(parent, rect),
- vmin(vmin),
- vmax(vmax),
- getValue(std::move(getValue)),
- _setValue(std::move(setValue))
- {
- }
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "Slider";
- }
-#endif
-
- void setValue(int32_t value)
- {
- _setValue(limit(vmin, value, vmax));
- invalidate();
- }
-
- void paint(BitmapBuffer * dc) override;
-
-#if defined(HARDWARE_KEYS)
- void onKeyEvent(event_t event) override;
-#endif
-
-#if defined(HARDWARE_TOUCH)
- bool onTouchStart(coord_t x, coord_t y) override;
-
- bool onTouchEnd(coord_t x, coord_t y) override;
-
- bool onTouchSlide(coord_t x, coord_t y, coord_t startX, coord_t startY, coord_t slideX, coord_t slideY) override;
-#endif
-
- protected:
- int value(coord_t x) const;
- int32_t vmin;
- int32_t vmax;
- bool sliding = false;
- std::function getValue;
- std::function _setValue;
-};
-
-#endif
diff --git a/radio/src/gui/libopenui/static.h b/radio/src/gui/libopenui/static.h
deleted file mode 100644
index 53893e944..000000000
--- a/radio/src/gui/libopenui/static.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef _STATIC_H_
-#define _STATIC_H_
-
-#include
-#include "window.h"
-#include "button.h" // TODO just for BUTTON_BACKGROUND
-
-class StaticText : public Window {
- public:
- StaticText(Window * parent, const rect_t & rect, std::string text = "", LcdFlags flags = 0) :
- Window(parent, rect),
- text(std::move(text)),
- flags(flags)
- {
- }
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "StaticText \"" + text + "\"";
- }
-#endif
-
- void setFlags(LcdFlags flags)
- {
- this->flags = flags;
- invalidate();
- }
-
- void paint(BitmapBuffer * dc)
- {
- if (flags & BUTTON_BACKGROUND)
- dc->drawSolidFilledRect(0, 0, rect.w, rect.h, CURVE_AXIS_COLOR);
- if (flags & CENTERED)
- dc->drawText(rect.w / 2, (rect.h - getFontHeight(flags)) / 2, text.c_str(), CENTERED | flags);
- else
- dc->drawText(0, 0, text.c_str(), flags);
- }
-
- void setText(std::string value)
- {
- text = std::move(value);
- invalidate();
- }
-
- protected:
- std::string text;
- LcdFlags flags;
-};
-
-class Subtitle: public StaticText {
- public:
- Subtitle(Window * parent, const rect_t & rect, const char * text):
- StaticText(parent, rect, text, BOLD)
- {
- }
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "Subtitle \"" + text + "\"";
- }
-#endif
-};
-
-class StaticBitmap: public Window {
- public:
- StaticBitmap(Window * parent, const rect_t & rect, const char * filename):
- Window(parent, rect),
- bitmap(BitmapBuffer::load(filename))
- {
- }
-
- StaticBitmap(Window * parent, const rect_t & rect, const BitmapBuffer * bitmap):
- Window(parent, rect),
- bitmap(bitmap)
- {
- }
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "StaticBitmap";
- }
-#endif
-
- void paint(BitmapBuffer * dc) override
- {
- dc->drawBitmap(0, 0, bitmap);
- }
-
- protected:
- const BitmapBuffer * bitmap;
-};
-
-#endif
diff --git a/radio/src/gui/libopenui/tabsgroup.cpp b/radio/src/gui/libopenui/tabsgroup.cpp
deleted file mode 100644
index 248a096ca..000000000
--- a/radio/src/gui/libopenui/tabsgroup.cpp
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#include "tabsgroup.h"
-#include "mainwindow.h"
-
-#if defined(HARDWARE_TOUCH)
-#include "keyboard_number.h"
-#include "keyboard_text.h"
-#include "keyboard_curve.h"
-#endif
-
-#include "opentx.h" // TODO for constants...
-#include "view_main.h"
-
-TabsGroupHeader::TabsGroupHeader(TabsGroup * parent, uint8_t icon):
- Window(parent, { 0, 0, LCD_W, MENU_BODY_TOP }, OPAQUE),
-#if defined(HARDWARE_TOUCH)
- back(this, { 0, 0, MENU_HEADER_BUTTON_WIDTH, MENU_HEADER_BUTTON_WIDTH }, ICON_BACK,
- [=]() -> uint8_t {
- parent->deleteLater();
- return 1;
- }, BUTTON_NOFOCUS),
-#endif
- icon(icon),
- carousel(this, parent)
-{
-}
-
-void TabsGroupHeader::paint(BitmapBuffer * dc)
-{
- theme->drawMenuBackground(dc, icon, title);
-}
-
-TabsCarousel::TabsCarousel(Window * parent, TabsGroup * menu):
- Window(parent, { MENU_HEADER_BUTTONS_LEFT, 0, LCD_W - MENU_HEADER_BUTTONS_LEFT, MENU_HEADER_HEIGHT + 10 }, TRANSPARENT),
- menu(menu)
-{
-}
-
-void TabsCarousel::updateInnerWidth()
-{
- setInnerWidth(padding_left + MENU_HEADER_BUTTON_WIDTH * menu->tabs.size());
-}
-
-void TabsCarousel::paint(BitmapBuffer * dc)
-{
- theme->drawMenuHeader(dc, menu->tabs, currentIndex);
-}
-
-#if defined(HARDWARE_TOUCH)
-bool TabsCarousel::onTouchEnd(coord_t x, coord_t y)
-{
- unsigned index = (x - padding_left) / MENU_HEADER_BUTTON_WIDTH;
- menu->setCurrentTab(index);
- setCurrentIndex(index);
- return true;
-}
-#endif
-
-TabsGroup::TabsGroup(uint8_t icon):
- Window(&mainWindow, { 0, 0, LCD_W, LCD_H }, OPAQUE),
- header(this, icon),
- body(this, { 0, MENU_BODY_TOP, LCD_W, MENU_BODY_HEIGHT })
-{
-}
-
-TabsGroup::~TabsGroup()
-{
- for (auto tab: tabs) {
- delete tab;
- }
-
- body.deleteChildren();
-
-#if defined(HARDWARE_TOUCH)
- TextKeyboard::instance()->disable(false);
- NumberKeyboard::instance()->disable(false);
- CurveKeyboard::instance()->disable(false);
-#endif
-}
-
-void TabsGroup::addTab(PageTab * page)
-{
- tabs.push_back(page);
- if (!currentTab) {
- setCurrentTab(page);
- }
- header.carousel.updateInnerWidth();
-}
-
-void TabsGroup::removeTab(unsigned index)
-{
- if (currentTab == tabs[index]) {
- setCurrentTab(max(0, index - 1));
- }
-
- tabs.erase(tabs.begin() + index);
-}
-
-void TabsGroup::setCurrentTab(PageTab * tab)
-{
- if (tab != currentTab) {
- setFocus();
- FormField::clearCurrentField();
- body.clear();
-#if defined(HARDWARE_TOUCH)
- TextKeyboard::instance()->disable(false);
- NumberKeyboard::instance()->disable(false);
- CurveKeyboard::instance()->disable(false);
-#endif
- currentTab = tab;
- tab->build(&body);
- header.setTitle(tab->title.c_str());
- invalidate();
- }
-}
-
-void TabsGroup::checkEvents()
-{
- Window::checkEvents();
- if (currentTab) {
- currentTab->checkEvents();
- }
-}
-
-#if defined(HARDWARE_KEYS)
-void TabsGroup::onKeyEvent(event_t event)
-{
- TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), event);
-
- if (event == EVT_KEY_BREAK(KEY_PGDN)) {
- uint8_t current = header.carousel.getCurrentIndex() + 1;
- setCurrentTab(current >= tabs.size() ? 0 : current);
- }
- else if (event == EVT_KEY_LONG(KEY_PGDN)) {
- killEvents(event);
- uint8_t current = header.carousel.getCurrentIndex();
- setCurrentTab(current == 0 ? tabs.size() - 1 : current - 1);
- }
- else if (event == EVT_KEY_LONG(KEY_EXIT) || event == EVT_KEY_BREAK(KEY_EXIT)) {
- killEvents(event);
- ViewMain::instance->setFocus();
- deleteLater();
- }
- else if (parent) {
- parent->onKeyEvent(event);
- }
-}
-#endif
-
-void TabsGroup::paint(BitmapBuffer * dc)
-{
- dc->clear(TEXT_BGCOLOR);
-}
-
-#if defined(HARDWARE_TOUCH)
-bool TabsGroup::onTouchEnd(coord_t x, coord_t y)
-{
- if (Window::onTouchEnd(x, y))
- return true;
-
- TextKeyboard::instance()->disable(true);
- NumberKeyboard::instance()->disable(true);
- CurveKeyboard::instance()->disable(true);
- return true;
-}
-#endif
diff --git a/radio/src/gui/libopenui/tabsgroup.h b/radio/src/gui/libopenui/tabsgroup.h
deleted file mode 100644
index b81a1ab06..000000000
--- a/radio/src/gui/libopenui/tabsgroup.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef _TABSGROUP_H_
-#define _TABSGROUP_H_
-
-#include
-#include "button.h"
-#include "form.h"
-
-class TabsGroup;
-
-class PageTab {
- friend class TabsCarousel;
- friend class TabsGroup;
-
- public:
- PageTab(std::string title, unsigned icon):
- title(std::move(title)),
- icon(icon)
- {
- }
-
- virtual ~PageTab()
- {
- }
-
- virtual void build(FormWindow * window) = 0;
-
- virtual void checkEvents()
- {
- }
-
- void destroy()
- {
- if (onPageDestroyed) {
- onPageDestroyed();
- }
- delete this;
- }
-
- void setOnPageDestroyedHandler(std::function handler)
- {
- onPageDestroyed = std::move(handler);
- }
-
- unsigned getIcon() const
- {
- return icon;
- }
-
- protected:
- std::string title;
- unsigned icon;
- std::function onPageDestroyed;
-};
-
-class TabsCarousel: public Window {
- public:
- TabsCarousel(Window * parent, TabsGroup * menu);
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "TabsCarousel";
- }
-#endif
-
- inline void setCurrentIndex(uint8_t index)
- {
- currentIndex = index;
- }
-
- inline uint8_t getCurrentIndex()
- {
- return currentIndex;
- }
-
- void updateInnerWidth();
-
- void paint(BitmapBuffer * dc) override;
-
-#if defined(HARDWARE_TOUCH)
- bool onTouchEnd(coord_t x, coord_t y) override;
-#endif
-
- protected:
- constexpr static uint8_t padding_left = 3;
- TabsGroup * menu;
- uint8_t currentIndex = 0;
-};
-
-class TabsGroupHeader: public Window {
- friend class TabsGroup;
-
- public:
- TabsGroupHeader(TabsGroup * menu, uint8_t icon);
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "TabsGroupHeader";
- }
-#endif
-
- void paint(BitmapBuffer * dc) override;
-
- void setTitle(const char * value)
- {
- title = value;
- }
-
- protected:
-#if defined(HARDWARE_TOUCH)
- IconButton back;
-#endif
- uint8_t icon;
- TabsCarousel carousel;
- const char * title = nullptr;
-};
-
-class TabsGroup: public Window {
- friend class TabsCarousel;
-
- public:
- TabsGroup(uint8_t icon);
-
- ~TabsGroup();
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "TabsGroup";
- }
-#endif
-
- void addTab(PageTab * page);
-
- void removeTab(unsigned index);
-
- void setCurrentTab(unsigned index)
- {
- if (index < tabs.size()) {
- header.carousel.setCurrentIndex(index);
- setCurrentTab(tabs[index]);
- }
- }
-
- void checkEvents() override;
-
-#if defined(HARDWARE_KEYS)
- void onKeyEvent(event_t event) override;
-#endif
-
- void paint(BitmapBuffer * dc) override;
-
-#if defined(HARDWARE_TOUCH)
- bool onTouchEnd(coord_t x, coord_t y) override;
-#endif
-
- protected:
- TabsGroupHeader header;
- FormWindow body;
- std::vector tabs;
- PageTab * currentTab = nullptr;
- void setCurrentTab(PageTab * tab);
-};
-
-#endif
diff --git a/radio/src/gui/libopenui/textedit.cpp b/radio/src/gui/libopenui/textedit.cpp
deleted file mode 100644
index b56d302a2..000000000
--- a/radio/src/gui/libopenui/textedit.cpp
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#include "textedit.h"
-// #include "keyboard_text.h"
-#include "draw_functions.h"
-#include "opentx.h"
-
-void TextEdit::paint(BitmapBuffer * dc)
-{
- LcdFlags flags = ZCHAR;
-
- FormField::paint(dc);
-
- if (editMode) {
- dc->drawSizedText(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, value, length, TEXT_INVERTED_COLOR | flags);
- coord_t left = (cursorPos == 0 ? 0 : getTextWidth(value, cursorPos, flags));
- char s[] = { (flags & ZCHAR) ? zchar2char(value[cursorPos]) : value[cursorPos], '\0' };
- dc->drawSolidFilledRect(FIELD_PADDING_LEFT + left - 1, FIELD_PADDING_TOP + 1, getTextWidth(s, 1) + 1, height() - 2, TEXT_INVERTED_COLOR);
- dc->drawText(FIELD_PADDING_LEFT + left, FIELD_PADDING_TOP, s, TEXT_COLOR);
- }
- else {
- const char * displayedValue = value;
- LcdFlags textColor;
- if (zlen(value, length) == 0) {
- displayedValue = "---";
- textColor = hasFocus() ? TEXT_INVERTED_BGCOLOR : CURVE_AXIS_COLOR;
- }
- else if (hasFocus()) {
- textColor = TEXT_INVERTED_BGCOLOR | ZCHAR;
- }
- else {
- textColor = TEXT_COLOR | ZCHAR;
- }
- dc->drawSizedText(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, displayedValue, length, textColor);
- }
-
-#if defined(HARDWARE_TOUCH)
- auto keyboard = TextKeyboard::instance();
- if (hasFocus() && keyboard->getField() == this) {
- coord_t cursorPos = keyboard->getCursorPos();
- dc->drawSolidFilledRect(cursorPos + 2, FIELD_PADDING_TOP, 2, 21, 0); // TEXT_INVERTED_BGCOLOR);
- }
-#endif
-}
-
-#if defined(HARDWARE_KEYS)
-void TextEdit::onKeyEvent(event_t event)
-{
- TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), event);
-
- LcdFlags flags = ZCHAR;
-
- if (editMode) {
- int8_t c = value[cursorPos];
- if (!(flags & ZCHAR)) {
- c = char2zchar(c);
- }
- int8_t v = c;
-
- switch (event) {
- case EVT_ROTARY_RIGHT:
- case EVT_ROTARY_LEFT:
- v = limit(0, abs(v) + (event == EVT_ROTARY_RIGHT ? +rotencSpeed : -rotencSpeed), ZCHAR_MAX);
- if (c <= 0) v = -v;
- break;
-
- case EVT_KEY_BREAK(KEY_LEFT):
- if (cursorPos > 0) {
- cursorPos--;
- invalidate();
- }
- break;
-
- case EVT_KEY_BREAK(KEY_RIGHT):
- if (cursorPos < length - 1) {
- cursorPos++;
- invalidate();
- }
- break;
-
- case EVT_KEY_BREAK(KEY_ENTER):
- if (cursorPos < length - 1) {
- cursorPos++;
- invalidate();
- }
- else {
- FormField::onKeyEvent(event);
- }
- break;
-
- case EVT_KEY_BREAK(KEY_EXIT):
- cursorPos = 0;
- FormField::onKeyEvent(event);
- break;
-
- case EVT_KEY_LONG(KEY_ENTER):
- if (v == 0) {
- killEvents(event);
- FormField::onKeyEvent(EVT_KEY_BREAK(KEY_ENTER));
- break;
- }
- // no break
-
- case EVT_KEY_LONG(KEY_LEFT):
- case EVT_KEY_LONG(KEY_RIGHT):
- if (v >= -26 && v <= 26) {
- v = -v; // toggle case
- if (event == EVT_KEY_LONG(KEY_LEFT)) {
- killEvents(KEY_LEFT);
- }
- }
- break;
- }
-
- if (c != v) {
- if (!(flags & ZCHAR)) {
- if (v != '\0' || value[cursorPos+1] != '\0')
- v = zchar2char(v);
- }
- value[cursorPos] = v;
- invalidate();
- // TODO storageDirty(...);
- }
- }
- else {
- FormField::onKeyEvent(event);
- }
-}
-#endif
-
-#if defined(HARDWARE_TOUCH)
-bool TextEdit::onTouchEnd(coord_t x, coord_t y)
-{
- if (!hasFocus()) {
- setFocus();
- }
-
- auto keyboard = TextKeyboard::instance();
- if (keyboard->getField() != this) {
- keyboard->setField(this);
- }
-
- keyboard->setCursorPos(x);
-
- return true;
-}
-
-void TextEdit::onFocusLost()
-{
- TextKeyboard::instance()->disable(true);
- // TODO storageDirty(...);
-}
-#endif
diff --git a/radio/src/gui/libopenui/textedit.h b/radio/src/gui/libopenui/textedit.h
deleted file mode 100644
index 914d68061..000000000
--- a/radio/src/gui/libopenui/textedit.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#ifndef _TEXTEDIT_H_
-#define _TEXTEDIT_H_
-
-#include "form.h"
-
-uint8_t zlen(const char *str, uint8_t size);
-
-class TextEdit : public FormField {
- friend class TextKeyboard;
-
- public:
- TextEdit(Window * parent, const rect_t &rect, char * value, uint8_t length, LcdFlags flags = 0) :
- FormField(parent, rect),
- value(value),
- length(length)
- {
- }
-
-#if defined(DEBUG_WINDOWS)
- std::string getName() override
- {
- return "TextEdit";
- }
-#endif
-
- uint8_t getMaxLength()
- {
- return length;
- }
-
- char * getData()
- {
- return value;
- }
-
- void paint(BitmapBuffer * dc) override;
-
-#if defined(HARDWARE_KEYS)
- void onKeyEvent(event_t event) override;
-#endif
-
-#if defined(HARDWARE_TOUCH)
- bool onTouchEnd(coord_t x, coord_t y) override;
-
- void onFocusLost() override;
-#endif
-
- protected:
- char * value;
- uint8_t length;
- uint8_t cursorPos = 0;
-};
-
-#endif // _TEXTEDIT_H_
diff --git a/radio/src/gui/libopenui/window.cpp b/radio/src/gui/libopenui/window.cpp
deleted file mode 100644
index 49025d5d7..000000000
--- a/radio/src/gui/libopenui/window.cpp
+++ /dev/null
@@ -1,396 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-#include "window.h"
-#include "keys.h"
-
-Window * Window::focusWindow = nullptr;
-std::list Window::trash;
-
-Window::Window(Window * parent, const rect_t & rect, uint8_t flags):
- parent(parent),
- rect(rect),
- innerWidth(rect.w),
- innerHeight(rect.h),
- windowFlags(flags)
-{
- if (parent) {
- parent->addChild(this);
- if (!(flags & TRANSPARENT)) {
- invalidate();
- }
- }
-}
-
-Window::~Window()
-{
- TRACE_WINDOWS("Destroy %p %s", this, getWindowDebugString().c_str());
- if (focusWindow == this) {
- focusWindow = nullptr;
- }
-}
-
-void Window::attach(Window * window)
-{
- if (parent)
- detach();
- parent = window;
- parent->addChild(this);
-}
-
-void Window::detach()
-{
- if (parent) {
- parent->removeChild(this);
- parent = nullptr;
- }
-}
-
-void Window::deleteLater(bool detach)
-{
- TRACE_WINDOWS("Delete %p %s", this, getWindowDebugString().c_str());
-
- if (focusWindow == this) {
- focusWindow = nullptr;
- }
-
- if (detach)
- this->detach();
- else
- parent = nullptr;
-
- if (closeHandler) {
- closeHandler();
- }
-
- trash.push_back(this);
-}
-
-void Window::clear()
-{
- scrollPositionX = 0;
- scrollPositionY = 0;
- innerWidth = rect.w;
- innerHeight = rect.h;
- deleteChildren();
- invalidate();
-}
-
-void Window::deleteChildren()
-{
- for (auto window: children) {
- window->deleteLater(false);
- }
- children.clear();
-}
-
-void Window::clearFocus()
-{
- if (focusWindow) {
- focusWindow->onFocusLost();
- focusWindow = nullptr;
- }
-}
-
-void Window::setFocus()
-{
- TRACE_WINDOWS("%s setFocus()", getWindowDebugString().c_str());
-
- if (focusWindow != this) {
- clearFocus();
- focusWindow = this;
- if (focusHandler) {
- focusHandler();
- }
- }
-
- Window * parent = this->parent;
- while (parent && parent->getWindowFlags() & FORWARD_SCROLL) {
- parent = parent->parent;
- }
-
- if (parent) {
- parent->scrollTo(this);
- invalidate();
- }
-}
-
-void Window::setScrollPositionX(coord_t value)
-{
- coord_t newScrollPosition = max(0, min(innerWidth - width(), value));
- if (newScrollPosition != scrollPositionX) {
- scrollPositionX = newScrollPosition;
- invalidate();
- }
-}
-
-void Window::setScrollPositionY(coord_t value)
-{
- coord_t newScrollPosition = max(0, min(innerHeight - height(), value));
- if (newScrollPosition != scrollPositionY) {
- scrollPositionY = newScrollPosition;
- invalidate();
- }
-}
-
-void Window::scrollTo(Window * child)
-{
- coord_t offsetY = 0;
- Window * parent = child->getParent();
- while (parent && parent != this) {
- offsetY += parent->top();
- parent = parent->getParent();
- }
-
- coord_t top = offsetY + child->top();
- coord_t bottom = offsetY + child->bottom();
-
- if (top < scrollPositionY) {
- setScrollPositionY(top - 5);
- }
- else if (bottom > scrollPositionY + height() - 5) {
- setScrollPositionY(bottom - height() + 5);
- }
-}
-
-void Window::fullPaint(BitmapBuffer * dc)
-{
- TRACE_WINDOWS("%s", getWindowDebugString().c_str());
-
- if (windowFlags & PAINT_CHILDREN_FIRST) {
- coord_t xmin, xmax, ymin, ymax;
- coord_t x = dc->getOffsetX();
- coord_t y = dc->getOffsetY();
- dc->getClippingRect(xmin, xmax, ymin, ymax);
- paintChildren(dc);
- dc->setOffset(x, y);
- dc->setClippingRect(xmin, xmax, ymin, ymax);
- }
-
- paint(dc);
-
- if (!(windowFlags & NO_SCROLLBAR)) {
- drawVerticalScrollbar(dc);
- }
-
- if (!(windowFlags & PAINT_CHILDREN_FIRST)) {
- paintChildren(dc);
- }
-}
-
-bool Window::isChildFullSize(Window * child)
-{
- return child->top() == 0 && child->height() == height() && child->left() == 0 && child->width() == width();
-}
-
-bool Window::isChildVisible(Window * window)
-{
- for (auto rit = children.rbegin(); rit != children.rend(); rit++) {
- auto child = *rit;
- if (child == window) {
- return true;
- }
- if ((child->getWindowFlags() & OPAQUE) & isChildFullSize(child)) {
- return false;
- }
- }
- return false;
-}
-
-void Window::paintChildren(BitmapBuffer * dc)
-{
- coord_t x = dc->getOffsetX();
- coord_t y = dc->getOffsetY();
- coord_t xmin, xmax, ymin, ymax;
- dc->getClippingRect(xmin, xmax, ymin, ymax);
-
- auto it = children.end();
-
- while(it != children.begin()) {
- auto child = *(--it);
- if ((child->windowFlags & OPAQUE) && isChildFullSize(child)) {
- break;
- }
- }
-
- for (; it != children.end(); it++) {
- auto child = *it;
-
- coord_t child_xmin = x + child->rect.x;
- if (child_xmin >= xmax)
- continue;
- coord_t child_ymin = y + child->rect.y;
- if (child_ymin >= ymax)
- continue;
- coord_t child_xmax = child_xmin + child->rect.w;
- if (child_xmax <= xmin)
- continue;
- coord_t child_ymax = child_ymin + child->rect.h;
- if (child_ymax <= ymin)
- continue;
-
- dc->setOffset(x + child->rect.x - child->scrollPositionX, y + child->rect.y - child->scrollPositionY);
- dc->setClippingRect(max(xmin, x + child->rect.left()),
- min(xmax, x + child->rect.right()),
- max(ymin, y + child->rect.top()),
- min(ymax, y + child->rect.bottom()));
- child->fullPaint(dc);
- }
-}
-
-void Window::checkEvents()
-{
- auto copy = children;
- for (auto child: copy) {
- child->checkEvents();
- }
-
-#if defined(HARDWARE_KEYS)
- if (this == focusWindow) {
- event_t event = getEvent(false);
- if (event) {
- TRACE_WINDOWS("Event 0x%x received ...", event);
- this->onKeyEvent(event);
- }
- }
-#endif
-
- if (windowFlags & REFRESH_ALWAYS) {
- invalidate();
- }
-}
-
-#if defined(HARDWARE_KEYS)
-void Window::onKeyEvent(event_t event)
-{
- TRACE_WINDOWS("%s received event 0x%X", Window::getWindowDebugString().c_str(), event);
- if (parent) {
- parent->onKeyEvent(event);
- }
-}
-#endif
-
-#if defined(HARDWARE_TOUCH)
-bool Window::onTouchStart(coord_t x, coord_t y)
-{
- for (auto it = children.rbegin(); it != children.rend(); ++it) {
- auto child = *it;
- if (pointInRect(x, y, child->rect)) {
- if (child->onTouchStart(x - child->rect.x + child->scrollPositionX, y - child->rect.y + child->scrollPositionY)) {
- return true;
- }
- }
- }
-
- return false;
-}
-
-bool Window::onTouchEnd(coord_t x, coord_t y)
-{
- for (auto it = children.rbegin(); it != children.rend(); ++it) {
- auto child = *it;
- if (pointInRect(x, y, child->rect)) {
- if (child->onTouchEnd(x - child->rect.x + child->scrollPositionX, y - child->rect.y + child->scrollPositionY)) {
- return true;
- }
- }
- }
-
- return false;
-}
-
-bool Window::onTouchSlide(coord_t x, coord_t y, coord_t startX, coord_t startY, coord_t slideX, coord_t slideY)
-{
- for (auto it = children.rbegin(); it != children.rend(); ++it) {
- auto child = *it;
- if (pointInRect(startX, startY, child->rect)) {
- if (child->onTouchSlide(x - child->rect.x, y - child->rect.y, startX - child->rect.x, startY - child->rect.y, slideX, slideY)) {
- return true;
- }
- }
- }
-
- if (slideY && innerHeight > rect.h) {
- setScrollPositionY(scrollPositionY - slideY);
- return true;
- }
-
- if (slideX && innerWidth > rect.w) {
- setScrollPositionX(scrollPositionX - slideX);
- return true;
- }
-
- return false;
-}
-#endif
-
-void Window::adjustInnerHeight()
-{
- innerHeight = 0;
- for (auto child: children) {
- innerHeight = max(innerHeight, child->rect.y + child->rect.h);
- }
-}
-
-coord_t Window::adjustHeight()
-{
- adjustInnerHeight();
- coord_t old = rect.h;
- rect.h = innerHeight;
- return rect.h - old;
-}
-
-void Window::moveWindowsTop(coord_t y, coord_t delta)
-{
- for (auto child: children) {
- if (child->rect.y > y) {
- child->rect.y += delta;
- }
- }
- innerHeight += delta;
-}
-
-void Window::invalidate(const rect_t & rect)
-{
- if (isVisible()) {
- parent->invalidate({this->rect.x + rect.x - parent->scrollPositionX, this->rect.y + rect.y - parent->scrollPositionY, rect.w, rect.h});
- }
-}
-
-void Window::drawVerticalScrollbar(BitmapBuffer * dc)
-{
- if (innerHeight > rect.h) {
- coord_t x = rect.w - 3;
- coord_t y = scrollPositionY + 3;
- coord_t h = rect.h - 6;
- // lcd->drawSolidFilledRect(x, y, 1, h, LINE_COLOR);
- coord_t yofs = (h*scrollPositionY + innerHeight/2) / innerHeight;
- coord_t yhgt = (h*rect.h + innerHeight/2) / innerHeight;
- if (yhgt + yofs > h)
- yhgt = h - yofs;
- if (yhgt < 15) {
- yhgt = 15;
- if (y + yofs + yhgt > innerHeight) {
- yofs = innerHeight - y - yhgt;
- }
- }
- dc->drawSolidFilledRect(x-1, y + yofs, 3, yhgt, scrollbarColor);
- }
-}
diff --git a/radio/src/gui/libopenui/window.h b/radio/src/gui/libopenui/window.h
deleted file mode 100644
index f80afab0e..000000000
--- a/radio/src/gui/libopenui/window.h
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
- * Copyright (C) OpenTX
- *
- * Based on code named
- * th9x - http://code.google.com/p/th9x
- * er9x - http://code.google.com/p/er9x
- * gruvin9x - http://code.google.com/p/gruvin9x
- *
- * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-
-#ifndef _WINDOW_H_
-#define _WINDOW_H_
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include "bitmapbuffer.h"
-#include "libopenui_defines.h"
-#include "libopenui_helpers.h"
-
-// OPAQUE/TRANSPARENT defined in WinGDI
-#ifndef OPAQUE
- #define OPAQUE 1
- #define TRANSPARENT 2
-#endif
-
-#define NO_SCROLLBAR 4
-#define FORWARD_SCROLL 8
-#define REFRESH_ALWAYS 16
-#define BORDER_FOCUS_ONLY 32
-#define PAINT_CHILDREN_FIRST 64
-
-class Window {
- friend class GridLayout;
-
- public:
- Window(Window * parent, const rect_t & rect, uint8_t flags=0);
-
- virtual ~Window();
-
-#if defined(DEBUG_WINDOWS)
- virtual std::string getName()
- {
- return "Window";
- }
-
- std::string getRectString()
- {
- char result[32];
- sprintf(result, "[%d, %d, %d, %d]", left(), top(), width(), height());
- return result;
- }
-
- std::string getIndentString()
- {
- std::string result;
- auto tmp = parent;
- while (tmp) {
- result += " ";
- tmp = tmp->getParent();
- }
- return result;
- }
-
- std::string getWindowDebugString()
- {
- return getIndentString() + getName() + " " + getRectString();
- }
-#endif
-
- Window * getParent() const
- {
- return parent;
- }
-
- uint8_t getWindowFlags() const
- {
- return windowFlags;
- }
-
- void setWindowFlags(uint8_t flags)
- {
- windowFlags = flags;
- }
-
- void setCloseHandler(std::function handler)
- {
- closeHandler = std::move(handler);
- }
-
- void setFocusHandler(std::function handler)
- {
- focusHandler = std::move(handler);
- }
-
- void deleteLater(bool detach=true);
-
- void clear();
-
- void deleteChildren();
-
- bool hasFocus() const
- {
- return focusWindow == this;
- }
-
- static Window * getFocus()
- {
- return focusWindow;
- }
-
- void scrollTo(Window * child);
-
- static void clearFocus();
-
- void setFocus();
-
- void setRect(rect_t rect)
- {
- this->rect = rect;
- invalidate();
- }
-
- void setWidth(coord_t value)
- {
- rect.w = value;
- invalidate();
- }
-
- void setHeight(coord_t value)
- {
- rect.h = value;
- if (innerHeight <= value) {
- setScrollPositionY(0);
- }
- invalidate();
- }
-
- coord_t getHeight()
- {
- return rect.h;
- }
-
- void setLeft(coord_t x)
- {
- rect.x = x;
- invalidate();
- }
-
- void setTop(coord_t y)
- {
- rect.y = y;
- invalidate();
- }
-
- coord_t left() const
- {
- return rect.x;
- }
-
- coord_t right() const
- {
- return rect.x + rect.w;
- }
-
- coord_t top() const
- {
- return rect.y;
- }
-
- coord_t bottom() const
- {
- return rect.y + rect.h;
- }
-
- coord_t width() const
- {
- return rect.w;
- }
-
- coord_t height() const
- {
- return rect.h;
- }
-
- rect_t getRect() const
- {
- return rect;
- }
-
- void setInnerWidth(coord_t w)
- {
- innerWidth = w;
- if (width() >= w) {
- scrollPositionX = 0;
- }
- }
-
- void setInnerHeight(coord_t h)
- {
- innerHeight = h;
- if (height() >= h) {
- scrollPositionY = 0;
- }
- }
-
- void setScrollbarColor(LcdFlags color)
- {
- scrollbarColor = color;
- }
-
- coord_t getScrollPositionY() const
- {
- return scrollPositionY;
- }
-
- void setScrollPositionX(coord_t value);
-
- void setScrollPositionY(coord_t value);
-
- bool isChildVisible(Window * window);
-
- bool isChildFullSize(Window * window);
-
- bool isVisible()
- {
- return parent && parent->isChildVisible(this);
- }
-
- virtual void paint(BitmapBuffer * dc)
- {
- }
-
- void drawVerticalScrollbar(BitmapBuffer * dc);
-
- void paintChildren(BitmapBuffer * dc);
-
- void fullPaint(BitmapBuffer * dc);
-
- bool pointInRect(coord_t x, coord_t y, rect_t & rect)
- {
- return (x >= rect.x && x < rect.x + rect.w && y >= rect.y && y < rect.y + rect.h);
- }
-
- virtual void onFocusLost()
- {
- TRACE_WINDOWS("%s onFocusLost()", getWindowDebugString().c_str());
- invalidate();
- };
-
-#if defined(HARDWARE_KEYS)
- virtual void onKeyEvent(event_t event);
-#endif
-
-#if defined(HARDWARE_TOUCH)
- virtual bool onTouchStart(coord_t x, coord_t y);
-
- virtual bool onTouchEnd(coord_t x, coord_t y);
-
- virtual bool onTouchSlide(coord_t x, coord_t y, coord_t startX, coord_t startY, coord_t slideX, coord_t slideY);
-#endif
-
- void adjustInnerHeight();
-
- coord_t adjustHeight();
-
- void moveWindowsTop(coord_t y, coord_t delta);
-
- void invalidate()
- {
- invalidate({0, 0, rect.w, rect.h});
- }
-
- void bringToTop()
- {
- attach(parent); // does a detach + attach
- }
-
- virtual void checkEvents();
-
- protected:
- Window * parent;
- std::list children;
- rect_t rect;
- coord_t innerWidth;
- coord_t innerHeight;
- coord_t scrollPositionX = 0;
- coord_t scrollPositionY = 0;
- uint8_t windowFlags;
- LcdFlags scrollbarColor = SCROLLBOX_COLOR;
-
- static Window * focusWindow;
- static std::list trash;
-
- std::function closeHandler;
- std::function focusHandler;
-
- void attach(Window * window);
-
- void detach();
-
- void addChild(Window * window)
- {
- children.push_back(window);
- }
-
- void removeChild(Window * window)
- {
- children.remove(window);
- invalidate();
- }
-
- virtual void invalidate(const rect_t & rect);
-};
-
-#endif // _WINDOW_H_
diff --git a/radio/src/gui/screenshot.cpp b/radio/src/gui/screenshot.cpp
index 0a0e166bf..32312dab5 100644
--- a/radio/src/gui/screenshot.cpp
+++ b/radio/src/gui/screenshot.cpp
@@ -80,7 +80,7 @@ const char * writeScreenshot()
#if defined(COLORLCD)
for (int y = LCD_H - 1; y >= 0; y--) {
for (int x = 0; x < LCD_W; x++) {
- display_t pixel = *lcd->getPixelPtr(x, y);
+ pixel_t pixel = *lcd->getPixelPtr(x, y);
uint32_t dst = (0xFF << 24) + (GET_RED(pixel) << 16) + (GET_GREEN(pixel) << 8) + (GET_BLUE(pixel) << 0);
if (f_write(&bmpFile, &dst, sizeof(dst), &written) != FR_OK || written != sizeof(dst)) {
f_close(&bmpFile);
@@ -91,7 +91,7 @@ const char * writeScreenshot()
#else
for (int y=LCD_H-1; y>=0; y-=1) {
for (int x=0; x<8*((LCD_W+7)/8); x+=2) {
- display_t byte = getPixel(x+1, y) + (getPixel(x, y) << 4);
+ pixel_t byte = getPixel(x+1, y) + (getPixel(x, y) << 4);
if (f_write(&bmpFile, &byte, 1, &written) != FR_OK || written != 1) {
f_close(&bmpFile);
return SDCARD_ERROR(result);
diff --git a/radio/src/io/frsky_firmware_update.cpp b/radio/src/io/frsky_firmware_update.cpp
index 026571b57..94166e34a 100644
--- a/radio/src/io/frsky_firmware_update.cpp
+++ b/radio/src/io/frsky_firmware_update.cpp
@@ -20,6 +20,7 @@
#include "opentx.h"
#include "frsky_firmware_update.h"
+#include "libopenui/src/libopenui_file.h"
#define PRIM_REQ_POWERUP 0
#define PRIM_REQ_VERSION 1
diff --git a/radio/src/keys.h b/radio/src/keys.h
index f2492570a..d2cb37d99 100644
--- a/radio/src/keys.h
+++ b/radio/src/keys.h
@@ -24,32 +24,36 @@
#include
#include "board.h"
#include "opentx_types.h"
+#include "libopenui/src/libopenui_types.h"
#define EVT_KEY_MASK(e) ((e) & 0x1f)
#if defined(PCBHORUS)
-#define _MSK_KEY_BREAK 0x0200
-#define _MSK_KEY_REPT 0x0400
-#define _MSK_KEY_FIRST 0x0600
-#define _MSK_KEY_LONG 0x0800
-#define _MSK_KEY_FLAGS 0x0e00
-#define EVT_ENTRY 0x1000
-#define EVT_ENTRY_UP 0x2000
+constexpr event_t _MSK_KEY_BREAK = 0x0200;
+constexpr event_t _MSK_KEY_REPT = 0x0400;
+constexpr event_t _MSK_KEY_FIRST = 0x0600;
+constexpr event_t _MSK_KEY_LONG = 0x0800;
+constexpr event_t _MSK_KEY_FLAGS = 0x0E00;
+constexpr event_t EVT_ENTRY = 0x1000;
+constexpr event_t EVT_ENTRY_UP = 0x2000;
#else
-#define _MSK_KEY_BREAK 0x20
-#define _MSK_KEY_REPT 0x40
-#define _MSK_KEY_FIRST 0x60
-#define _MSK_KEY_LONG 0x80
-#define _MSK_KEY_FLAGS 0xe0
-#define EVT_ENTRY 0xbf
-#define EVT_ENTRY_UP 0xbe
+constexpr event_t _MSK_KEY_BREAK = 0x20;
+constexpr event_t _MSK_KEY_REPT = 0x40;
+constexpr event_t _MSK_KEY_FIRST = 0x60;
+constexpr event_t _MSK_KEY_LONG = 0x80;
+constexpr event_t _MSK_KEY_FLAGS = 0xE0;
+constexpr event_t EVT_ENTRY = 0xBF;
+constexpr event_t EVT_ENTRY_UP = 0xBE;
#endif
// normal order of events is: FIRST, LONG, REPEAT, REPEAT, ..., BREAK
#define EVT_KEY_FIRST(key) ((key)|_MSK_KEY_FIRST) // fired when key is pressed
#define EVT_KEY_LONG(key) ((key)|_MSK_KEY_LONG) // fired when key is held pressed for a while
#define EVT_KEY_REPT(key) ((key)|_MSK_KEY_REPT) // fired when key is held pressed long enough, fires multiple times with increasing speed
-#define EVT_KEY_BREAK(key) ((key)|_MSK_KEY_BREAK) // fired when key is released (short or long), but only if the event was not killed
+constexpr event_t EVT_KEY_BREAK(event_t key)
+{
+ return (key | _MSK_KEY_BREAK); // fired when key is released (short or long), but only if the event was not killed
+}
#define IS_KEY_FIRST(evt) (((evt) & _MSK_KEY_FLAGS) == _MSK_KEY_FIRST)
#define IS_KEY_LONG(evt) (((evt) & _MSK_KEY_FLAGS) == _MSK_KEY_LONG)
@@ -115,4 +119,8 @@ bool waitKeysReleased();
event_t getEvent(bool trim=false);
bool keyDown();
+#if defined(ROTARY_ENCODER_NAVIGATION)
+extern uint8_t rotencSpeed;
+#endif
+
#endif // _KEYS_H_
diff --git a/radio/src/lua/interface.cpp b/radio/src/lua/interface.cpp
index f1bdbe0f6..bad80f1a1 100644
--- a/radio/src/lua/interface.cpp
+++ b/radio/src/lua/interface.cpp
@@ -27,6 +27,7 @@
#include "bin_allocator.h"
#include "lua_api.h"
#include "sdcard.h"
+#include "libopenui/src/libopenui_file.h"
extern "C" {
#include
diff --git a/radio/src/lua/widgets.cpp b/radio/src/lua/widgets.cpp
index 165d95eff..98eb1dd26 100644
--- a/radio/src/lua/widgets.cpp
+++ b/radio/src/lua/widgets.cpp
@@ -182,7 +182,7 @@ class LuaTheme: public Theme
exec(drawBackgroundFunction);
}
- virtual void drawTopbarBackground(uint8_t icon) const
+ void drawTopbarBackground(uint8_t icon) const override
{
exec(drawTopbarBackgroundFunction);
}
diff --git a/radio/src/mixer.cpp b/radio/src/mixer.cpp
index 467578a2d..e5b4d25b6 100644
--- a/radio/src/mixer.cpp
+++ b/radio/src/mixer.cpp
@@ -148,9 +148,7 @@ void applyExpos(int16_t * anas, uint8_t mode, uint8_t ovwrIdx, int16_t ovwrValue
int8_t cur_chn = -1;
for (uint8_t i=0; ichn == cur_chn)
@@ -170,9 +168,7 @@ void applyExpos(int16_t * anas, uint8_t mode, uint8_t ovwrIdx, int16_t ovwrValue
v = limit(-1024, v, 1024);
}
if (EXPO_MODE_ENABLE(ed, v)) {
-#if defined(BOLD_FONT)
- if (mode==e_perout_mode_normal) swOn[i].activeExpo = true;
-#endif
+ if (mode == e_perout_mode_normal) swOn[i].activeExpo = true;
cur_chn = ed->chn;
//========== CURVE=================
@@ -627,10 +623,8 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms)
bitfield_channels_t passDirtyChannels = 0;
for (uint8_t i=0; imixWarn) lv_mixWarning |= 1 << (md->mixWarn - 1);
-#if defined(BOLD_FONT)
+ if (md->mixWarn)
+ lv_mixWarning |= 1 << (md->mixWarn - 1);
swOn[i].activeMix = true;
-#endif
}
if (applyOffsetAndCurve) {
@@ -811,12 +804,10 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms)
switch (md->mltpx) {
case MLTPX_REP:
*ptr = dv;
-#if defined(BOLD_FONT)
- if (mode==e_perout_mode_normal) {
+ if (mode == e_perout_mode_normal) {
for (uint8_t m=i-1; mdestCh==md->destCh; m--)
swOn[m].activeMix = false;
}
-#endif
break;
case MLTPX_MUL:
// @@@2 we have to remove the weight factor of 256 in case of 100%; now we use the new base of 256
diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h
index e5a387171..2dd4c7f6e 100644
--- a/radio/src/myeeprom.h
+++ b/radio/src/myeeprom.h
@@ -22,7 +22,7 @@
#define _MYEEPROM_H_
#include "datastructs.h"
-#include "bitfield.h"
+#include "libopenui/src/bitfield.h"
#define EEPROM_VER 219
#define FIRST_CONV_EEPROM_VER 216
diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp
index 0ef5a3a1f..0c6513444 100644
--- a/radio/src/opentx.cpp
+++ b/radio/src/opentx.cpp
@@ -332,8 +332,8 @@ void generalDefault()
#endif
#if defined(COLORLCD)
- strcpy(g_eeGeneral.themeName, theme->getName());
- theme->init();
+ strcpy(g_eeGeneral.themeName, static_cast(theme)->getName());
+ static_cast(theme)->init();
#endif
#if defined(PXX2)
@@ -524,23 +524,22 @@ void modelDefault(uint8_t id)
#endif
#if !defined(EEPROM)
- strcpy(g_model.header.name, "\015\361\374\373\364");
- g_model.header.name[5] = '\033' + id/10;
- g_model.header.name[6] = '\033' + id%10;
+ strcpy(g_model.header.name, "Model");
+ g_model.header.name[5] = '0' + id / 10;
+ g_model.header.name[6] = '0' + id % 10;
#endif
#if defined(COLORLCD)
- #warning "Initialization missing"
extern const LayoutFactory * defaultLayout;
-// delete customScreens[0];
-// customScreens[0] = defaultLayout->create(&g_model.screenData[0].layoutData);
-// strcpy(g_model.screenData[0].layoutName, "Layout2P1");
+ delete customScreens[0];
+ customScreens[0] = defaultLayout->create(&g_model.screenData[0].layoutData);
+ strcpy(g_model.screenData[0].layoutName, "Layout2P1");
// extern const WidgetFactory * defaultWidget;
// customScreens[0]->createWidget(0, defaultWidget);
-// // enable switch warnings
-// for (int i=0; isetCloseCondition([]() {
return !isThrottleWarningAlertNeeded();
});
@@ -988,7 +987,7 @@ void checkThrottleStick()
// first - display warning; also deletes inputs if any have been before
LED_ERROR_BEGIN();
- RAISE_ALERT(STR_THROTTLEWARN, STR_THROTTLENOTIDLE, STR_PRESSANYKEYTOSKIP, AU_THROTTLE_ALERT);
+ RAISE_ALERT(TR_THROTTLE_UPPERCASE, STR_THROTTLE_NOT_IDLE, STR_PRESS_ANY_KEY_TO_SKIP, AU_THROTTLE_ALERT);
#if defined(PWR_BUTTON_PRESS)
bool refresh = false;
@@ -1008,7 +1007,7 @@ void checkThrottleStick()
refresh = true;
}
else if (power == e_power_on && refresh) {
- RAISE_ALERT(STR_THROTTLEWARN, STR_THROTTLENOTIDLE, STR_PRESSANYKEYTOSKIP, AU_NONE);
+ RAISE_ALERT(TR_THROTTLE_UPPERCASE, STR_THROTTLE_NOT_IDLE, STR_PRESS_ANY_KEY_TO_SKIP, AU_NONE);
refresh = false;
}
#else
@@ -2036,6 +2035,7 @@ int main()
boardInit();
#if defined(COLORLCD)
+ extern void loadFonts();
loadFonts();
#endif
diff --git a/radio/src/opentx.h b/radio/src/opentx.h
index 8673c7bb4..bd5b32c5d 100644
--- a/radio/src/opentx.h
+++ b/radio/src/opentx.h
@@ -31,7 +31,6 @@
#include "debounce.h"
#include "opentx_helpers.h"
#include "touch.h"
-#include "bitfield.h"
#if defined(LIBOPENUI)
#include "libopenui.h"
@@ -394,7 +393,6 @@ inline bool SPLASH_NEEDED()
#define IS_ROTARY_ENCODER_NAVIGATION_ENABLE() true
extern volatile rotenc_t rotencValue;
#define ROTARY_ENCODER_NAVIGATION_VALUE rotencValue
- extern uint8_t rotencSpeed;
#define ROTENC_LOWSPEED 1
#define ROTENC_MIDSPEED 5
#define ROTENC_HIGHSPEED 50
@@ -470,7 +468,7 @@ void alert(const char * title, const char * msg, uint8_t sound);
}
inline void ALERT(const char * title, const char * msg, uint8_t sound)
{
- raiseAlert(title, msg, nullptr, sound);
+ raiseAlert(title, msg, "", sound);
}
#else
inline void RAISE_ALERT(const char * title, const char * msg, const char * info, uint8_t sound)
@@ -687,13 +685,6 @@ uint8_t findNextUnusedModelId(uint8_t index, uint8_t module);
#endif
uint32_t hash(const void * ptr, uint32_t size);
-inline int divRoundClosest(const int n, const int d)
-{
- if (d == 0)
- return 0;
- else
- return ((n < 0) ^ (d < 0)) ? ((n - d/2)/d) : ((n + d/2)/d);
-}
#define calc100to256_16Bits(x) calc100to256(x)
#define calc100toRESX_16Bits(x) calc100toRESX(x)
@@ -893,20 +884,15 @@ PACK(struct SwOn {
extern SwOn swOn[MAX_MIXERS];
extern int32_t act[MAX_MIXERS];
-#if defined(BOLD_FONT)
- inline bool isExpoActive(uint8_t expo)
- {
- return swOn[expo].activeExpo;
- }
+inline bool isExpoActive(uint8_t expo)
+{
+ return swOn[expo].activeExpo;
+}
- inline bool isMixActive(uint8_t mix)
- {
- return swOn[mix].activeMix;
- }
-#else
- #define isExpoActive(x) false
- #define isMixActive(x) false
-#endif
+inline bool isMixActive(uint8_t mix)
+{
+ return swOn[mix].activeMix;
+}
enum LogicalSwitchFamilies {
LS_FAMILY_OFS,
@@ -1046,7 +1032,6 @@ enum AUDIO_SOUNDS {
#include "buzzer.h"
#include "translations.h"
-#include "fonts.h"
#if defined(HAPTIC)
#include "haptic.h"
diff --git a/radio/src/opentx_helpers.h b/radio/src/opentx_helpers.h
index 534dcaf3d..5e6b34395 100644
--- a/radio/src/opentx_helpers.h
+++ b/radio/src/opentx_helpers.h
@@ -21,7 +21,7 @@
#ifndef _OPENTX_HELPERS_H_
#define _OPENTX_HELPERS_H_
-#include "libopenui/libopenui_helpers.h"
+#include "thirdparty/libopenui/src/libopenui_helpers.h"
template
inline T sgn(T a)
diff --git a/radio/src/opentx_types.h b/radio/src/opentx_types.h
index 9851f5a5e..e6afe5b3a 100644
--- a/radio/src/opentx_types.h
+++ b/radio/src/opentx_types.h
@@ -21,7 +21,7 @@
#ifndef _OPENTX_TYPES_H_
#define _OPENTX_TYPES_H_
-#include
+#include "libopenui/src/libopenui_types.h"
typedef uint32_t tmr10ms_t;
typedef int32_t rotenc_t;
@@ -29,8 +29,13 @@ typedef int32_t getvalue_t;
typedef uint32_t mixsrc_t;
typedef int32_t swsrc_t;
typedef int16_t safetych_t;
+typedef int16_t gvar_t;
typedef uint32_t bitfield_channels_t;
-typedef uint16_t event_t;
typedef uint16_t FlightModesType;
+#if defined(PCBFRSKY)
+typedef uint16_t source_t;
+#else
+typedef uint8_t source_t;
+#endif
#endif // _OPENTX_TYPES_H_
diff --git a/radio/src/pulses/modules_helpers.h b/radio/src/pulses/modules_helpers.h
index 8f0748a37..098de5984 100644
--- a/radio/src/pulses/modules_helpers.h
+++ b/radio/src/pulses/modules_helpers.h
@@ -21,7 +21,7 @@
#ifndef _MODULES_HELPERS_H_
#define _MODULES_HELPERS_H_
-#include "bitfield.h"
+#include "libopenui/src/bitfield.h"
#include "definitions.h"
#include "opentx_helpers.h"
#include "telemetry/telemetry.h"
diff --git a/radio/src/pulses/pxx2.cpp b/radio/src/pulses/pxx2.cpp
index f118f0328..07b32f21f 100644
--- a/radio/src/pulses/pxx2.cpp
+++ b/radio/src/pulses/pxx2.cpp
@@ -21,6 +21,7 @@
#include "opentx.h"
#include "pulses/pxx2.h"
#include "io/frsky_firmware_update.h"
+#include "libopenui/src/libopenui_file.h"
uint8_t Pxx2Pulses::addFlag0(uint8_t module)
{
diff --git a/radio/src/sdcard.cpp b/radio/src/sdcard.cpp
index 3a16fde9f..b09ea555c 100644
--- a/radio/src/sdcard.cpp
+++ b/radio/src/sdcard.cpp
@@ -21,6 +21,7 @@
#include
#include "opentx.h"
#include "diskio.h"
+#include "libopenui/src/libopenui_file.h"
bool sdCardFormat()
{
@@ -204,32 +205,6 @@ const char * getBasename(const char * path)
return path;
}
-const char * getFileExtension(const char * filename, uint8_t size, uint8_t extMaxLen, uint8_t *fnlen, uint8_t *extlen)
-{
- int len = size;
- if (!size) {
- len = strlen(filename);
- }
- if (!extMaxLen) {
- extMaxLen = LEN_FILE_EXTENSION_MAX;
- }
- if (fnlen != nullptr) {
- *fnlen = (uint8_t)len;
- }
- for (int i=len-1; i >= 0 && len-i <= extMaxLen; --i) {
- if (filename[i] == '.') {
- if (extlen) {
- *extlen = len-i;
- }
- return &filename[i];
- }
- }
- if (extlen != nullptr) {
- *extlen = 0;
- }
- return nullptr;
-}
-
/**
Check if given extension exists in a list of extensions.
@param extension The extension to search for, including leading period.
@@ -478,37 +453,6 @@ void sdReadTextFile(const char * filename, char lines[NUM_BODY_LINES][LCD_COLS +
}
}
-// returns true if current working dir is at the root level
-bool isCwdAtRoot()
-{
- char path[10];
- if (f_getcwd(path, sizeof(path)-1) == FR_OK) {
- return (strcasecmp("/", path) == 0);
- }
- return false;
-}
-
-/*
- Wrapper around the f_readdir() function which
- also returns ".." entry for sub-dirs. (FatFS 0.12 does
- not return ".", ".." dirs anymore)
-*/
-FRESULT sdReadDir(DIR * dir, FILINFO * fno, bool & firstTime)
-{
- FRESULT res;
- if (firstTime && !isCwdAtRoot()) {
- // fake parent directory entry
- strcpy(fno->fname, "..");
- fno->fattrib = AM_DIR;
- res = FR_OK;
- }
- else {
- res = f_readdir(dir, fno); /* Read a directory item */
- }
- firstTime = false;
- return res;
-}
-
#if defined(SDCARD)
const char * sdCopyFile(const char * srcPath, const char * destPath)
{
diff --git a/radio/src/sdcard.h b/radio/src/sdcard.h
index 843a28c17..2f33534b3 100644
--- a/radio/src/sdcard.h
+++ b/radio/src/sdcard.h
@@ -72,8 +72,6 @@ const char RADIO_SETTINGS_PATH[] = RADIO_PATH "/radio.bin";
#define SPORT_FIRMWARE_EXT ".frk"
#define UPDATE_FIRMWARE_EXT ".frsk"
-#define LEN_FILE_EXTENSION_MAX 5 // longest used, including the dot, excluding null term.
-
#if defined(COLORLCD)
#define BITMAPS_EXT BMP_EXT JPG_EXT PNG_EXT
#define LEN_BITMAPS_EXT 4
@@ -120,7 +118,6 @@ inline const char * SDCARD_ERROR(FRESULT result)
#endif
// NOTE: 'size' must = 0 or be a valid character position within 'filename' array -- it is NOT validated
-const char * getFileExtension(const char * filename, uint8_t size=0, uint8_t extMaxLen=0, uint8_t * fnlen=nullptr, uint8_t * extlen=nullptr);
const char * getBasename(const char * path);
#if defined(PCBX12S)
@@ -149,7 +146,6 @@ const char * getBasename(const char * path);
bool isFileAvailable(const char * filename, bool exclDir = false);
int findNextFileIndex(char * filename, uint8_t size, const char * directory);
-bool isExtensionMatching(const char * extension, const char * pattern, char * match = nullptr);
const char * sdCopyFile(const char * src, const char * dest);
const char * sdCopyFile(const char * srcFilename, const char * srcDir, const char * destFilename, const char * destDir);
@@ -160,7 +156,4 @@ bool sdListFiles(const char * path, const char * extension, const uint8_t maxlen
void sdReadTextFile(const char * filename, char lines[NUM_BODY_LINES][LCD_COLS + 1], int & lines_count);
-bool isCwdAtRoot();
-FRESULT sdReadDir(DIR * dir, FILINFO * fno, bool & firstTime);
-
#endif // _SDCARD_H_
diff --git a/radio/src/simu.cpp b/radio/src/simu.cpp
index f472b3b23..9200a73ff 100644
--- a/radio/src/simu.cpp
+++ b/radio/src/simu.cpp
@@ -88,7 +88,7 @@ FXIMPLEMENT(OpenTxSim, FXMainWindow, OpenTxSimMap, ARRAYNUMBER(OpenTxSimMap))
OpenTxSim::OpenTxSim(FXApp* a):
FXMainWindow(a, "OpenTX Simu", nullptr, nullptr, DECOR_ALL, 20, 90, 0, 0)
{
- memset(displayBuf, 0, DISPLAY_BUFFER_SIZE * sizeof(display_t));
+ memset(displayBuf, 0, DISPLAY_BUFFER_SIZE * sizeof(pixel_t));
bmp = new FXPPMImage(getApp(), nullptr, IMAGE_OWNED|IMAGE_KEEP|IMAGE_SHMI|IMAGE_SHMP, W2, H2);
#if defined(SIMU_AUDIO)
@@ -179,7 +179,7 @@ void OpenTxSim::createBitmap(int index, uint16_t *data, int x, int y, int w, int
for (int i=0; i>8)/0x0f, 255*((z&0x0F0)>>4)/0x0f, 255*(z&0x00F)/0x0f);
snapshot.setPixel(i, j, color);
}
@@ -487,7 +487,7 @@ void OpenTxSim::refreshDisplay()
for (int x=0; x> 4) : (*p & 0x0F);
if (z) {
FXColor color;
diff --git a/radio/src/storage/conversions/datastructs_218.h b/radio/src/storage/conversions/datastructs_218.h
index c32078886..19f682917 100644
--- a/radio/src/storage/conversions/datastructs_218.h
+++ b/radio/src/storage/conversions/datastructs_218.h
@@ -527,7 +527,7 @@ PACK(struct ModelData_v218 {
#define THEME_NAME_LEN 8
#define THEME_DATA \
char themeName[THEME_NAME_LEN]; \
- Theme::PersistentData themeData;
+ ThemeBase::PersistentData themeData;
#else
#define THEME_DATA
#endif
diff --git a/radio/src/storage/sdcard_raw.cpp b/radio/src/storage/sdcard_raw.cpp
index 9a1b40095..428620a5b 100644
--- a/radio/src/storage/sdcard_raw.cpp
+++ b/radio/src/storage/sdcard_raw.cpp
@@ -283,7 +283,7 @@ void storageEraseAll(bool warn)
#if defined(LIBOPENUI)
// the theme has not been loaded before
- theme->load();
+ static_cast(theme)->load();
#endif
generalDefault();
diff --git a/radio/src/strhelpers.h b/radio/src/strhelpers.h
index 2c00acfaf..f453720b8 100644
--- a/radio/src/strhelpers.h
+++ b/radio/src/strhelpers.h
@@ -23,8 +23,6 @@
#include
-#define TEXT_AT_INDEX(val, idx) std::string(val+1+val[0]*(idx), min(val[0], strlen(val+1+val[0]*(idx))))
-
char * strAppend(char * dest, const char * source, int len=0);
char * strAppendUnsigned(char * dest, uint32_t value, uint8_t digits=0, uint8_t radix=10);
char * strAppendSigned(char * dest, int32_t value, uint8_t digits=0, uint8_t radix=10);
diff --git a/radio/src/stubs.cpp b/radio/src/stubs.cpp
index 6c33e2536..49c094090 100644
--- a/radio/src/stubs.cpp
+++ b/radio/src/stubs.cpp
@@ -26,14 +26,6 @@ void drawFatalErrorScreen(const char * message)
{
}
-void loadCustomScreens()
-{
-}
-
-void showAlertBox(const char * title, const char * text, const char * action, uint8_t sound)
-{
-}
-
void showMessageBox(const char * title)
{
diff --git a/radio/src/switches.cpp b/radio/src/switches.cpp
index 38064f03b..0e99ccc93 100644
--- a/radio/src/switches.cpp
+++ b/radio/src/switches.cpp
@@ -636,7 +636,7 @@ void checkSwitches()
// first - display warning
#if defined(PCBFRSKY) || defined(PCBFLYSKY)
if (last_bad_switches != switches_states || last_bad_pots != bad_pots) {
- drawAlertBox(STR_SWITCHWARN, nullptr, STR_PRESSANYKEYTOSKIP);
+ drawAlertBox(STR_SWITCHWARN, nullptr, STR_PRESS_ANY_KEY_TO_SKIP);
if (last_bad_switches == 0xff || last_bad_pots == 0xff) {
AUDIO_ERROR_MESSAGE(AU_SWITCH_ALERT);
}
@@ -685,7 +685,7 @@ void checkSwitches()
// TODO add an helper
strncpy(s, &STR_VSRCRAW[1+(NUM_STICKS+1+i)*STR_VSRCRAW[0]], STR_VSRCRAW[0]);
s[int(STR_VSRCRAW[0])] = '\0';
- lcdDrawText(x, y, s, ALARM_COLOR);
+ lcd->drawText(x, y, s, ALARM_COLOR);
x += 40;
#else
lcdDrawTextAtIndex(x, y, STR_VSRCRAW, NUM_STICKS + 1 + i, INVERS);
@@ -703,7 +703,7 @@ void checkSwitches()
if (numWarnings >= 6) {
#if defined(COLORLCD)
- lcdDrawText(x, y, "...", ALARM_COLOR);
+ lcd->drawText(x, y, "...", ALARM_COLOR);
#else
lcdDrawText(x, y, "...", 0);
#endif
@@ -712,7 +712,7 @@ void checkSwitches()
last_bad_pots = bad_pots;
#else
if (last_bad_switches != switches_states) {
- RAISE_ALERT(STR_SWITCHWARN, NULL, STR_PRESSANYKEYTOSKIP, last_bad_switches == 0xff ? AU_SWITCH_ALERT : AU_NONE);
+ RAISE_ALERT(STR_SWITCHWARN, NULL, STR_PRESS_ANY_KEY_TO_SKIP, last_bad_switches == 0xff ? AU_SWITCH_ALERT : AU_NONE);
uint8_t x = 2;
for (uint8_t i=0; idrawText(x, 28, text);
+ lcd->drawSolidFilledRect(28, 56, 422, 2, TEXT_COLOR);
}
static void bootloaderDrawFooter()
{
- lcdDrawSolidFilledRect(28, 234, 422, 2, TEXT_COLOR);
+ lcd->drawSolidFilledRect(28, 234, 422, 2, TEXT_COLOR);
}
void bootloaderDrawScreen(BootloaderState st, int opt, const char* str)
@@ -74,32 +74,32 @@ void bootloaderDrawScreen(BootloaderState st, int opt, const char* str)
if (st == ST_START) {
bootloaderDrawTitle(88, "HORUS BOOTLOADER");
- lcdDrawBitmapPattern(90, 72, LBM_FLASH, TEXT_COLOR);
- lcdDrawText(124, 75, "Write Firmware");
+ lcd->drawBitmapPattern(90, 72, LBM_FLASH, TEXT_COLOR);
+ lcd->drawText(124, 75, "Write Firmware");
- lcdDrawBitmapPattern(90, 107, LBM_EXIT, TEXT_COLOR);
- lcdDrawText(124, 110, "Exit");
+ lcd->drawBitmapPattern(90, 107, LBM_EXIT, TEXT_COLOR);
+ lcd->drawText(124, 110, "Exit");
- lcdDrawSolidRect(119, (opt == 0) ? 72 : 107, 270, 26, 2, LINE_COLOR);
+ lcd->drawSolidRect(119, (opt == 0) ? 72 : 107, 270, 26, 2, LINE_COLOR);
lcd->drawBitmap(60, 166, &BMP_PLUG_USB);
- lcdDrawText(195, 175, "Or plug in a USB cable");
- lcdDrawText(195, 200, "for mass storage");
+ lcd->drawText(195, 175, "Or plug in a USB cable");
+ lcd->drawText(195, 200, "for mass storage");
bootloaderDrawFooter();
- lcdDrawText( 36, 242, "Current Firmware:");
- lcdDrawText(200, 242, getOtherVersion(nullptr));
+ lcd->drawText( 36, 242, "Current Firmware:");
+ lcd->drawText(200, 242, getOtherVersion(nullptr));
}
else if (st == ST_USB) {
lcd->drawBitmap(136, 98, &BMP_USB_PLUGGED);
- lcdDrawText(195, 128, "USB Connected");
+ lcd->drawText(195, 128, "USB Connected");
}
else if (st == ST_FILE_LIST || st == ST_DIR_CHECK || st == ST_FLASH_CHECK ||
st == ST_FLASHING || st == ST_FLASH_DONE) {
bootloaderDrawTitle(126, "SD>FIRMWARE");
- lcdDrawBitmapPattern(87, 16, LBM_SD, TEXT_COLOR);
+ lcd->drawBitmapPattern(87, 16, LBM_SD, TEXT_COLOR);
if (st == ST_FLASHING || st == ST_FLASH_DONE) {
@@ -110,39 +110,39 @@ void bootloaderDrawScreen(BootloaderState st, int opt, const char* str)
opt = 100; // Completed > 100%
}
- lcdDrawRect(70, 120, 340, 31, 2);
- lcdDrawSolidFilledRect(74, 124, (332 * opt) / 100, 23, color);
+ lcd->drawRect(70, 120, 340, 31, 2);
+ lcd->drawSolidFilledRect(74, 124, (332 * opt) / 100, 23, color);
}
else if (st == ST_DIR_CHECK) {
if (opt == FR_NO_PATH) {
- lcdDrawText(90, 168, "Directory is missing");
+ lcd->drawText(90, 168, "Directory is missing");
}
else {
- lcdDrawText(90, 168, "Directory is empty");
+ lcd->drawText(90, 168, "Directory is empty");
}
- lcdDrawBitmapPattern(356, 158, LBM_ERROR, BARGRAPH1_COLOR);
+ lcd->drawBitmapPattern(356, 158, LBM_ERROR, BARGRAPH1_COLOR);
}
else if (st == ST_FLASH_CHECK) {
bootloaderDrawFilename(str, 0, true);
if (opt == FC_ERROR) {
- lcdDrawText(94, 168, STR_INVALID_FIRMWARE);
- lcdDrawBitmapPattern(356, 158, LBM_ERROR, BARGRAPH1_COLOR);
+ lcd->drawText(94, 168, STR_INVALID_FIRMWARE);
+ lcd->drawBitmapPattern(356, 158, LBM_ERROR, BARGRAPH1_COLOR);
}
else if (opt == FC_OK) {
VersionTag tag;
extractFirmwareVersion(&tag);
- lcdDrawText(168, 158, "Version:", RIGHT);
- lcdDrawText(174, 158, tag.version);
+ lcd->drawText(168, 158, "Version:", RIGHT);
+ lcd->drawText(174, 158, tag.version);
- lcdDrawText(168, 178, "Radio:", RIGHT);
- lcdDrawText(174, 178, tag.flavour);
+ lcd->drawText(168, 178, "Radio:", RIGHT);
+ lcd->drawText(174, 178, tag.flavour);
- lcdDrawBitmapPattern(356, 158, LBM_OK, BARGRAPH2_COLOR);
+ lcd->drawBitmapPattern(356, 158, LBM_OK, BARGRAPH2_COLOR);
}
}
@@ -150,35 +150,35 @@ void bootloaderDrawScreen(BootloaderState st, int opt, const char* str)
if ( st != ST_DIR_CHECK && (st != ST_FLASH_CHECK || opt == FC_OK)) {
- lcdDrawBitmapPattern(28, 242, LBM_FLASH, TEXT_COLOR);
+ lcd->drawBitmapPattern(28, 242, LBM_FLASH, TEXT_COLOR);
if (st == ST_FILE_LIST) {
- lcdDrawText(56, 244, "[ENT] to select file");
+ lcd->drawText(56, 244, "[ENT] to select file");
}
else if (st == ST_FLASH_CHECK && opt == FC_OK) {
- lcdDrawText(56, 244, "Hold [ENT] long to flash");
+ lcd->drawText(56, 244, "Hold [ENT] long to flash");
}
else if (st == ST_FLASHING) {
- lcdDrawText(56, 244, "Writing Firmware ...");
+ lcd->drawText(56, 244, "Writing Firmware ...");
}
else if (st == ST_FLASH_DONE) {
- lcdDrawText(56, 244, "Writing Completed");
+ lcd->drawText(56, 244, "Writing Completed");
}
}
if (st != ST_FLASHING) {
- lcdDrawBitmapPattern(305, 242, LBM_EXIT, TEXT_COLOR);
- lcdDrawText(335, 244, "[RTN] to exit");
+ lcd->drawBitmapPattern(305, 242, LBM_EXIT, TEXT_COLOR);
+ lcd->drawText(335, 244, "[RTN] to exit");
}
}
}
void bootloaderDrawFilename(const char* str, uint8_t line, bool selected)
{
- lcdDrawBitmapPattern(94, 76 + (line * 25), LBM_FILE, TEXT_COLOR);
- lcdDrawText(124, 75 + (line * 25), str);
+ lcd->drawBitmapPattern(94, 76 + (line * 25), LBM_FILE, TEXT_COLOR);
+ lcd->drawText(124, 75 + (line * 25), str);
if (selected) {
- lcdDrawSolidRect(119, 72 + (line * 25), 278, 26, 2, LINE_COLOR);
+ lcd->drawSolidRect(119, 72 + (line * 25), 278, 26, 2, LINE_COLOR);
}
}
diff --git a/radio/src/targets/horus/lcd_driver.cpp b/radio/src/targets/horus/lcd_driver.cpp
index 1601e9f78..a6695e99b 100644
--- a/radio/src/targets/horus/lcd_driver.cpp
+++ b/radio/src/targets/horus/lcd_driver.cpp
@@ -32,9 +32,9 @@
#define LCD_FIRST_LAYER 0
#define LCD_SECOND_LAYER 1
-uint8_t LCD_FIRST_FRAME_BUFFER[DISPLAY_BUFFER_SIZE * sizeof(display_t)] __SDRAM;
-uint8_t LCD_SECOND_FRAME_BUFFER[DISPLAY_BUFFER_SIZE * sizeof(display_t)] __SDRAM;
-uint8_t LCD_BACKUP_FRAME_BUFFER[DISPLAY_BUFFER_SIZE * sizeof(display_t)] __SDRAM;
+uint8_t LCD_FIRST_FRAME_BUFFER[DISPLAY_BUFFER_SIZE * sizeof(pixel_t)] __SDRAM;
+uint8_t LCD_SECOND_FRAME_BUFFER[DISPLAY_BUFFER_SIZE * sizeof(pixel_t)] __SDRAM;
+uint8_t LCD_BACKUP_FRAME_BUFFER[DISPLAY_BUFFER_SIZE * sizeof(pixel_t)] __SDRAM;
uint8_t currentLayer = LCD_FIRST_LAYER;
BitmapBuffer lcdBuffer1(BMP_RGB565, LCD_W, LCD_H, (uint16_t *)LCD_FIRST_FRAME_BUFFER);
diff --git a/radio/src/targets/horus/libopenui_config.h b/radio/src/targets/horus/libopenui_config.h
index bf374466c..9d753eafb 100644
--- a/radio/src/targets/horus/libopenui_config.h
+++ b/radio/src/targets/horus/libopenui_config.h
@@ -21,7 +21,13 @@
#ifndef _LIBOPENUI_CONFIG_H_
#define _LIBOPENUI_CONFIG_H_
-#include "lcd.h"
+#include "debug.h"
+#include "libopenui_types.h"
+#include "colors.h"
+#include "board.h"
+#include "keys.h"
+
+typedef uint16_t pixel_t;
constexpr uint32_t MENU_HEADER_BUTTON_WIDTH = 33;
constexpr uint32_t MENU_HEADER_BUTTONS_LEFT = 47;
@@ -63,12 +69,65 @@ constexpr uint32_t CURVE_COORD_WIDTH = 36;
constexpr uint32_t CURVE_COORD_HEIGHT = 17;
constexpr uint32_t DATETIME_SEPARATOR_X = LCD_W - 53;
-constexpr uint32_t DATETIME_LINE1 = 9;
-constexpr uint32_t DATETIME_LINE2 = 23;
-constexpr uint32_t DATETIME_MIDDLE = (LCD_W + DATETIME_SEPARATOR_X + 4) / 2;
+constexpr uint32_t DATETIME_LINE1 = 7;
+constexpr uint32_t DATETIME_LINE2 = 22;
+constexpr uint32_t DATETIME_MIDDLE = (LCD_W + DATETIME_SEPARATOR_X + 1) / 2;
constexpr uint32_t MENUS_TOOLBAR_BUTTON_WIDTH = 30;
constexpr uint32_t MENUS_TOOLBAR_BUTTON_PADDING = 3;
constexpr rect_t MENUS_TOOLBAR_RECT = { 100, 51, 30, 209 };
+constexpr uint32_t ALERT_FRAME_TOP = 70;
+constexpr uint32_t ALERT_FRAME_HEIGHT = (LCD_H - 2 * ALERT_FRAME_TOP);
+constexpr uint32_t ALERT_BITMAP_TOP = ALERT_FRAME_TOP + 15;
+constexpr uint32_t ALERT_BITMAP_LEFT = 40;
+constexpr uint32_t ALERT_TITLE_TOP = ALERT_FRAME_TOP + 10;
+constexpr uint32_t ALERT_TITLE_LEFT = 186;
+constexpr uint32_t ALERT_TITLE_LINE_HEIGHT = 30;
+constexpr uint32_t ALERT_MESSAGE_TOP = ALERT_TITLE_TOP + 90;
+constexpr uint32_t ALERT_MESSAGE_LEFT = ALERT_TITLE_LEFT;
+constexpr uint32_t ALERT_ACTION_TOP = 240;
+
+// TODO common code, not in target
+enum LcdColorIndex
+{
+ TEXT_COLOR_INDEX,
+ TEXT_BGCOLOR_INDEX,
+ TEXT_INVERTED_COLOR_INDEX,
+ TEXT_INVERTED_BGCOLOR_INDEX,
+ TEXT_STATUSBAR_COLOR_INDEX,
+ LINE_COLOR_INDEX,
+ SCROLLBOX_COLOR_INDEX,
+ MENU_TITLE_BGCOLOR_INDEX,
+ MENU_TITLE_COLOR_INDEX,
+ MENU_TITLE_DISABLE_COLOR_INDEX,
+ HEADER_COLOR_INDEX,
+ ALARM_COLOR_INDEX,
+ WARNING_COLOR_INDEX,
+ TEXT_DISABLE_COLOR_INDEX,
+ CURVE_AXIS_COLOR_INDEX,
+ CURVE_COLOR_INDEX,
+ CURVE_CURSOR_COLOR_INDEX,
+ HEADER_BGCOLOR_INDEX,
+ HEADER_ICON_BGCOLOR_INDEX,
+ HEADER_CURRENT_BGCOLOR_INDEX,
+ TITLE_BGCOLOR_INDEX,
+ TRIM_BGCOLOR_INDEX,
+ TRIM_SHADOW_COLOR_INDEX,
+ MAINVIEW_PANES_COLOR_INDEX,
+ MAINVIEW_GRAPHICS_COLOR_INDEX,
+ OVERLAY_COLOR_INDEX,
+ CUSTOM_COLOR_INDEX,
+ BARGRAPH1_COLOR_INDEX,
+ BARGRAPH2_COLOR_INDEX,
+ BARGRAPH_BGCOLOR_INDEX,
+ LCD_COLOR_COUNT
+};
+
+#if !defined(BOOT)
+#define FONT_TABLE_SIZE 16
+#else
+#define FONT_TABLE_SIZE 1
+#endif
+
#endif // _LIBOPENUI_CONFIG_H_
diff --git a/radio/src/targets/nv14/lcd_driver.cpp b/radio/src/targets/nv14/lcd_driver.cpp
index 4f1f1292b..70b8e48e3 100644
--- a/radio/src/targets/nv14/lcd_driver.cpp
+++ b/radio/src/targets/nv14/lcd_driver.cpp
@@ -22,9 +22,9 @@
-uint8_t LCD_FIRST_FRAME_BUFFER[DISPLAY_BUFFER_SIZE * sizeof(display_t)] __SDRAM;
-uint8_t LCD_SECOND_FRAME_BUFFER[DISPLAY_BUFFER_SIZE * sizeof(display_t)] __SDRAM;
-uint8_t LCD_BACKUP_FRAME_BUFFER[DISPLAY_BUFFER_SIZE * sizeof(display_t)] __SDRAM;
+uint8_t LCD_FIRST_FRAME_BUFFER[DISPLAY_BUFFER_SIZE * sizeof(pixel_t)] __SDRAM;
+uint8_t LCD_SECOND_FRAME_BUFFER[DISPLAY_BUFFER_SIZE * sizeof(pixel_t)] __SDRAM;
+uint8_t LCD_BACKUP_FRAME_BUFFER[DISPLAY_BUFFER_SIZE * sizeof(pixel_t)] __SDRAM;
uint8_t currentLayer = LCD_FIRST_LAYER;
lcdSpiInitFucPtr lcdSpiInitFuc;
diff --git a/radio/src/targets/nv14/libopenui_config.h b/radio/src/targets/nv14/libopenui_config.h
index 9db98fd2a..6d860e297 100644
--- a/radio/src/targets/nv14/libopenui_config.h
+++ b/radio/src/targets/nv14/libopenui_config.h
@@ -21,7 +21,13 @@
#ifndef _LIBOPENUI_CONFIG_H_
#define _LIBOPENUI_CONFIG_H_
-#include "lcd.h"
+#include "debug.h"
+#include "libopenui_types.h"
+#include "colors.h"
+#include "board.h"
+#include "keys.h"
+
+typedef uint16_t pixel_t;
constexpr uint32_t MENU_HEADER_BUTTON_WIDTH = 60;
constexpr uint32_t MENU_HEADER_BUTTONS_LEFT = MENU_HEADER_BUTTON_WIDTH;
@@ -67,6 +73,59 @@ constexpr uint32_t MENUS_TOOLBAR_BUTTON_WIDTH = 50;
constexpr uint32_t MENUS_TOOLBAR_BUTTON_PADDING = 11;
constexpr rect_t MENUS_TOOLBAR_RECT = { 35, 95, 50, 370 };
-constexpr uint32_t SUBMENU_LINE_WIDTH = 230;
+//constexpr uint32_t SUBMENU_LINE_WIDTH = 230;
+
+constexpr uint32_t ALERT_FRAME_TOP = 70;
+constexpr uint32_t ALERT_FRAME_HEIGHT = (LCD_H - 2 * ALERT_FRAME_TOP);
+constexpr uint32_t ALERT_BITMAP_TOP = ALERT_FRAME_TOP + 15;
+constexpr uint32_t ALERT_BITMAP_LEFT = 40;
+constexpr uint32_t ALERT_TITLE_TOP = ALERT_FRAME_TOP + 10;
+constexpr uint32_t ALERT_TITLE_LEFT = 186;
+constexpr uint32_t ALERT_TITLE_LINE_HEIGHT = 30;
+constexpr uint32_t ALERT_MESSAGE_TOP = ALERT_TITLE_TOP + 90;
+constexpr uint32_t ALERT_MESSAGE_LEFT = ALERT_TITLE_LEFT;
+constexpr uint32_t ALERT_ACTION_TOP = 240;
+constexpr uint32_t ALERT_BUTTON_TOP = 300;
+
+enum LcdColorIndex
+{
+ TEXT_COLOR_INDEX,
+ TEXT_BGCOLOR_INDEX,
+ TEXT_INVERTED_COLOR_INDEX,
+ TEXT_INVERTED_BGCOLOR_INDEX,
+ TEXT_STATUSBAR_COLOR_INDEX,
+ LINE_COLOR_INDEX,
+ SCROLLBOX_COLOR_INDEX,
+ MENU_TITLE_BGCOLOR_INDEX,
+ MENU_TITLE_COLOR_INDEX,
+ MENU_TITLE_DISABLE_COLOR_INDEX,
+ HEADER_COLOR_INDEX,
+ ALARM_COLOR_INDEX,
+ WARNING_COLOR_INDEX,
+ TEXT_DISABLE_COLOR_INDEX,
+ CURVE_AXIS_COLOR_INDEX,
+ CURVE_COLOR_INDEX,
+ CURVE_CURSOR_COLOR_INDEX,
+ HEADER_BGCOLOR_INDEX,
+ HEADER_ICON_BGCOLOR_INDEX,
+ HEADER_CURRENT_BGCOLOR_INDEX,
+ TITLE_BGCOLOR_INDEX,
+ TRIM_BGCOLOR_INDEX,
+ TRIM_SHADOW_COLOR_INDEX,
+ MAINVIEW_PANES_COLOR_INDEX,
+ MAINVIEW_GRAPHICS_COLOR_INDEX,
+ OVERLAY_COLOR_INDEX,
+ CUSTOM_COLOR_INDEX,
+ BARGRAPH1_COLOR_INDEX,
+ BARGRAPH2_COLOR_INDEX,
+ BARGRAPH_BGCOLOR_INDEX,
+ LCD_COLOR_COUNT
+};
+
+#if !defined(BOOT)
+#define FONT_TABLE_SIZE 16
+#else
+#define FONT_TABLE_SIZE 1
+#endif
#endif // _LIBOPENUI_CONFIG_H_
diff --git a/radio/src/targets/simu/simpgmspace.cpp b/radio/src/targets/simu/simpgmspace.cpp
index 86b593361..c7d7412d0 100644
--- a/radio/src/targets/simu/simpgmspace.cpp
+++ b/radio/src/targets/simu/simpgmspace.cpp
@@ -405,7 +405,7 @@ void StopAudioThread()
#endif // #if defined(SIMU_AUDIO)
bool simuLcdRefresh = true;
-display_t simuLcdBuf[DISPLAY_BUFFER_SIZE];
+pixel_t simuLcdBuf[DISPLAY_BUFFER_SIZE];
#if !defined(COLORLCD)
void lcdSetRefVolt(uint8_t val)
@@ -423,8 +423,8 @@ void lcdRefresh()
{
static bool lightEnabled = (bool)isBacklightEnabled();
- if (bool(isBacklightEnabled()) != lightEnabled || memcmp(simuLcdBuf, displayBuf, DISPLAY_BUFFER_SIZE * sizeof(display_t))) {
- memcpy(simuLcdBuf, displayBuf, DISPLAY_BUFFER_SIZE * sizeof(display_t));
+ if (bool(isBacklightEnabled()) != lightEnabled || memcmp(simuLcdBuf, displayBuf, DISPLAY_BUFFER_SIZE * sizeof(pixel_t))) {
+ memcpy(simuLcdBuf, displayBuf, DISPLAY_BUFFER_SIZE * sizeof(pixel_t));
lightEnabled = (bool)isBacklightEnabled();
simuLcdRefresh = true;
}
@@ -450,7 +450,7 @@ void boardInit()
{
}
-display_t simuLcdBackupBuf[DISPLAY_BUFFER_SIZE];
+pixel_t simuLcdBackupBuf[DISPLAY_BUFFER_SIZE];
void lcdStoreBackupBuffer()
{
memcpy(simuLcdBackupBuf, displayBuf, sizeof(simuLcdBackupBuf));
diff --git a/radio/src/targets/simu/simulcd.h b/radio/src/targets/simu/simulcd.h
index c968efc26..f9ed5c5c8 100644
--- a/radio/src/targets/simu/simulcd.h
+++ b/radio/src/targets/simu/simulcd.h
@@ -25,6 +25,6 @@
extern int g_snapshot_idx;
extern bool simuLcdRefresh;
-extern display_t simuLcdBuf[DISPLAY_BUFFER_SIZE];
+extern pixel_t simuLcdBuf[DISPLAY_BUFFER_SIZE];
#endif // _SIMULCD_H_
diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h
index e238ad646..41d26f495 100644
--- a/radio/src/telemetry/telemetry.h
+++ b/radio/src/telemetry/telemetry.h
@@ -22,12 +22,14 @@
#define _TELEMETRY_H_
#include "frsky.h"
+#include "io/frsky_sport.h"
#include "crossfire.h"
#if defined(MULTIMODULE)
#include "spektrum.h"
#include "flysky_ibus.h"
#include "multi.h"
#endif
+#include "myeeprom.h"
extern uint8_t telemetryStreaming; // >0 (true) == data is streaming in. 0 = no data detected for some time
@@ -78,11 +80,11 @@ PACK(struct CellValue
uint16_t value:15;
uint16_t state:1;
- void set(uint16_t value)
+ void set(uint16_t newValue)
{
- if (value > 50) {
- this->value = value;
- this->state = 1;
+ if (newValue > 50) {
+ value = value;
+ state = 1;
}
}
});
diff --git a/radio/src/thirdparty/libopenui b/radio/src/thirdparty/libopenui
new file mode 160000
index 000000000..1d494b502
--- /dev/null
+++ b/radio/src/thirdparty/libopenui
@@ -0,0 +1 @@
+Subproject commit 1d494b5023a284fc7538224a005820c3269feac4
diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp
index 8de4cb725..af26a58a8 100644
--- a/radio/src/translations.cpp
+++ b/radio/src/translations.cpp
@@ -52,9 +52,9 @@ ISTR(VUNITSSYSTEM);
ISTR(VBEEPCOUNTDOWN);
ISTR(COUNTDOWNVALUES);
ISTR(VVARIOCENTER);
-ISTR(COUNTRYCODES);
+ISTR(COUNTRY_CODES);
ISTR(USBMODES);
-ISTR(JACKMODES);
+ISTR(JACK_MODES);
ISTR(VFAILSAFE);
ISTR(VTRAINERMODES);
ISTR(FLYSKY_PROTOCOLS);
@@ -167,7 +167,7 @@ const char STR_BATTERYWARNING[] = TR_BATTERYWARNING;
const char STR_INACTIVITYALARM[] = TR_INACTIVITYALARM;
const char STR_MEMORYWARNING[] = TR_MEMORYWARNING;
const char STR_ALARMWARNING[] = TR_ALARMWARNING;
-const char STR_RSSISHUTDOWNALARM[] = TR_RSSISHUTDOWNALARM;
+const char STR_RSSI_SHUTDOWN_ALARM[] = TR_RSSI_SHUTDOWN_ALARM;
const char STR_MODEL_STILL_POWERED[] = TR_MODEL_STILL_POWERED;
const char STR_MODEL_SHUTDOWN[] = TR_MODEL_SHUTDOWN;
const char STR_PRESS_ENTER_TO_CONFIRM[] = TR_PRESS_ENTER_TO_CONFIRM;
@@ -176,7 +176,6 @@ const char STR_MINUTEBEEP[] = TR_MINUTEBEEP;
const char STR_BEEPCOUNTDOWN[] = TR_BEEPCOUNTDOWN;
const char STR_PERSISTENT[] = TR_PERSISTENT;
const char STR_BACKLIGHT_LABEL[] = TR_BACKLIGHT_LABEL;
-const char STR_BLDELAY[] = TR_BLDELAY;
const char STR_RXCHANNELORD[] = TR_RXCHANNELORD;
const char STR_STICKS[] = TR_STICKS;
const char STR_POTS[] = TR_POTS;
@@ -201,14 +200,14 @@ const char STR_PPM_TRAINER[] = TR_PPM_TRAINER;
const char STR_CH[] = TR_CH;
const char STR_MODEL[] = TR_MODEL;
const char STR_FM[] = TR_FM;
-const char STR_PRESSANYKEYTOSKIP[] = TR_PRESSANYKEYTOSKIP;
-const char STR_THROTTLENOTIDLE[] = TR_THROTTLENOTIDLE;
+const char STR_PRESS_ANY_KEY_TO_SKIP[] = TR_PRESS_ANY_KEY_TO_SKIP;
+const char STR_THROTTLE_NOT_IDLE[] = TR_THROTTLE_NOT_IDLE;
const char STR_ALARMSDISABLED[] = TR_ALARMSDISABLED;
const char STR_PRESSANYKEY[] = TR_PRESSANYKEY;
const char STR_TRIMS2OFFSETS[] = TR_TRIMS2OFFSETS;
const char STR_CHANNELS2FAILSAFE[] = TR_CHANNELS2FAILSAFE;
const char STR_CHANNEL2FAILSAFE[] = TR_CHANNEL2FAILSAFE;
-const char STR_MENURADIOSETUP[] = TR_MENURADIOSETUP;
+const char STR_RADIO_SETUP[] = TR_RADIO_SETUP;
const char STR_MENUTRAINER[] = TR_MENUTRAINER;
const char STR_MENUSPECIALFUNCS[] = TR_MENUSPECIALFUNCS;
const char STR_MENUVERSION[] = TR_MENUVERSION;
@@ -216,7 +215,7 @@ const char STR_MENU_RADIO_SWITCHES[] = TR_MENU_RADIO_SWITCHES;
const char STR_MENU_RADIO_ANALOGS[] = TR_MENU_RADIO_ANALOGS;
const char STR_MENUCALIBRATION[] = TR_MENUCALIBRATION;
const char STR_MENUMODELSEL[] = TR_MENUMODELSEL;
-const char STR_MENUSETUP[] = TR_MENUSETUP;
+const char STR_MENU_MODEL_SETUP[] = TR_MENU_MODEL_SETUP;
const char STR_MENUFLIGHTMODE[] = TR_MENUFLIGHTMODE;
const char STR_MENUFLIGHTMODES[] = TR_MENUFLIGHTMODES;
const char STR_MENUINPUTS[] = TR_MENUINPUTS;
@@ -229,7 +228,7 @@ const char STR_MENUCUSTOMFUNC[] = TR_MENUCUSTOMFUNC;
const char STR_SPLASHSCREEN[] = TR_SPLASHSCREEN;
const char STR_PWR_ON_DELAY[] = TR_PWR_ON_DELAY;
const char STR_PWR_OFF_DELAY[] = TR_PWR_OFF_DELAY;
-const char STR_THROTTLEWARNING[] = TR_THROTTLEWARNING;
+const char STR_THROTTLE_UPPERCASE[] = TR_THROTTLE_UPPERCASE;
const char STR_SWITCHWARNING[] = TR_SWITCHWARNING;
const char STR_POTWARNINGSTATE[] = TR_POTWARNINGSTATE;
const char STR_POTWARNING[] = TR_POTWARNING;
@@ -251,9 +250,9 @@ const char STR_NO_MODULE_INFORMATION[] = TR_NO_MODULE_INFORMATION;
const char STR_EXTERNALRF[] = TR_EXTERNALRF;
const char STR_MODULE_TELEMETRY[] = TR_MODULE_TELEMETRY;
const char STR_MODULE_TELEM_ON[] = TR_MODULE_TELEM_ON;
-const char STR_COUNTRYCODE[] = TR_COUNTRYCODE;
+const char STR_COUNTRY_CODE[] = TR_COUNTRY_CODE;
const char STR_USBMODE[] = TR_USBMODE;
-const char STR_JACKMODE[] = TR_JACKMODE;
+const char STR_JACK_MODE[] = TR_JACK_MODE;
const char STR_FAILSAFE[] = TR_FAILSAFE;
const char STR_FAILSAFESET[] = TR_FAILSAFESET;
const char STR_REG_ID[] = TR_REG_ID;
@@ -280,8 +279,8 @@ const char STR_GF[] = TR_GF;
const char STR_BATT_CALIB[] = TR_BATT_CALIB;
const char STR_VOLTAGE[] = TR_VOLTAGE;
const char STR_CURRENT_CALIB[] = TR_CURRENT_CALIB;
-const char STR_UNITSSYSTEM[] = TR_UNITSSYSTEM;
-const char STR_VOICELANG[] = TR_VOICELANG;
+const char STR_UNITS_SYSTEM[] = TR_UNITS_SYSTEM;
+const char STR_VOICE_LANGUAGE[] = TR_VOICE_LANGUAGE;
const char STR_MODELIDUSED[] = TR_MODELIDUSED;
const char STR_BEEP_VOLUME[] = INDENT TR_BEEP_VOLUME;
const char STR_WAV_VOLUME[] = INDENT TR_WAV_VOLUME;
@@ -354,7 +353,7 @@ const char STR_WAITING_FOR_RX[] = TR_WAITING_FOR_RX;
const char STR_WAITING_FOR_TX[] = TR_WAITING_FOR_TX;
const char STR_CAT_NOT_EMPTY[] = TR_CAT_NOT_EMPTY;
const char STR_WARNING[] = TR_WARNING;
-const char STR_THROTTLEWARN[] = TR_THROTTLEWARN;
+const char STR_THROTTLE_WARNING[] = TR_THROTTLE_WARNING;
const char STR_ALARMSWARN[] = TR_ALARMSWARN;
const char STR_SWITCHWARN[] = TR_SWITCHWARN;
const char STR_FAILSAFEWARN[] = TR_FAILSAFEWARN;
@@ -365,7 +364,7 @@ const char STR_WRONG_PCBREV[] = TR_WRONG_PCBREV;
const char STR_EMERGENCY_MODE[] = TR_EMERGENCY_MODE;
const char STR_NO_FAILSAFE[] = TR_NO_FAILSAFE;
const char STR_KEYSTUCK[] = TR_KEYSTUCK;
-const char STR_SPEAKER_VOLUME[] = TR_SPEAKER_VOLUME;
+const char STR_VOLUME[] = TR_VOLUME;
const char STR_LCD[] = TR_LCD;
const char STR_BRIGHTNESS[] = TR_BRIGHTNESS;
const char STR_CPU_TEMP[] = TR_CPU_TEMP;
@@ -518,11 +517,11 @@ const char STR_USER_INTERFACE[] = TR_USER_INTERFACE;
const char STR_THEME[] = TR_THEME;
const char STR_SETUP[] = TR_SETUP;
const char STR_LAYOUT[] = TR_LAYOUT;
-const char STR_ADDMAINVIEW[] = TR_ADDMAINVIEW;
+const char STR_ADD_MAIN_VIEW[] = TR_ADD_MAIN_VIEW;
const char STR_BACKGROUND_COLOR[] = TR_BACKGROUND_COLOR;
const char STR_MAIN_COLOR[] = TR_MAIN_COLOR;
const char STR_TEXT_VIEWER[] = TR_TEXT_VIEWER;
-const char STR_RFPOWER[] = TR_RFPOWER;
+const char STR_RF_POWER[] = TR_RF_POWER;
const char STR_BYTES[] = TR_BYTES;
const char STR_ANTENNAPROBLEM[] = TR_ANTENNAPROBLEM;
const char STR_MODULE[] = TR_MODULE;
@@ -610,12 +609,12 @@ const char STR_BUZZER[] = TR_BUZZER;
#endif
#if defined(AUDIO)
-const char STR_SPKRPITCH[] = TR_SPKRPITCH;
+const char STR_BEEP_PITCH[] = TR_BEEP_PITCH;
#endif
#if defined(HAPTIC)
const char STR_HAPTIC_LABEL[] = TR_HAPTIC_LABEL;
-const char STR_HAPTICSTRENGTH[] = TR_HAPTICSTRENGTH;
+const char STR_STRENGTH[] = TR_STRENGTH;
const char STR_GYRO_LABEL[] = TR_GYRO_LABEL;
const char STR_GYRO_OFFSET[] = TR_GYRO_OFFSET;
const char STR_GYRO_MAX[] = TR_GYRO_MAX;
@@ -629,7 +628,7 @@ const char STR_BLOFFBRIGHTNESS[] = TR_BLOFFBRIGHTNESS;
const char STR_TIMEZONE[] = TR_TIMEZONE;
const char STR_ADJUST_RTC[] = TR_ADJUST_RTC;
const char STR_GPS[] = TR_GPS;
-const char STR_GPSCOORD[] = TR_GPSCOORD;
+const char STR_GPS_COORDS_FORMAT[] = TR_GPS_COORDS_FORMAT;
const char STR_VARIO[] = TR_VARIO;
const char STR_FLYSKY_TELEMETRY[] = TR_FLYSKY_TELEMETRY;
const char STR_PITCH_AT_ZERO[] = TR_PITCH_AT_ZERO;
diff --git a/radio/src/translations.h b/radio/src/translations.h
index a6d803f9c..86e6c45bb 100644
--- a/radio/src/translations.h
+++ b/radio/src/translations.h
@@ -53,6 +53,9 @@
#elif defined(TRANSLATIONS_NL)
#include "translations/nl.h"
#define LEN_SPECIAL_CHARS 0
+#elif defined(TRANSLATIONS_CN)
+#include "translations/cn.h"
+#define LEN_SPECIAL_CHARS 0
#else
#include "translations/en.h"
#define LEN_SPECIAL_CHARS 0
@@ -145,9 +148,9 @@ extern const char STR_VBEEPCOUNTDOWN[];
extern const char STR_COUNTDOWNVALUES[];
extern const char STR_VVARIOCENTER[];
-extern const char STR_COUNTRYCODES[];
+extern const char STR_COUNTRY_CODES[];
extern const char STR_USBMODES[];
-extern const char STR_JACKMODES[];
+extern const char STR_JACK_MODES[];
extern const char STR_VFAILSAFE[];
extern const char STR_VTRAINERMODES[];
@@ -272,9 +275,9 @@ extern const char STR_SCREEN[];
extern const char STR_SOUND_LABEL[];
extern const char STR_LENGTH[];
extern const char STR_BEEP_LENGTH[];
-extern const char STR_SPKRPITCH[];
+extern const char STR_BEEP_PITCH[];
extern const char STR_HAPTIC_LABEL[];
-extern const char STR_HAPTICSTRENGTH[];
+extern const char STR_STRENGTH[];
extern const char STR_GYRO_LABEL[];
extern const char STR_GYRO_OFFSET[];
extern const char STR_GYRO_MAX[];
@@ -285,7 +288,7 @@ extern const char STR_BATTERYWARNING[];
extern const char STR_INACTIVITYALARM[];
extern const char STR_MEMORYWARNING[];
extern const char STR_ALARMWARNING[];
-extern const char STR_RSSISHUTDOWNALARM[];
+extern const char STR_RSSI_SHUTDOWN_ALARM[];
extern const char STR_MODEL_STILL_POWERED[];
extern const char STR_MODEL_SHUTDOWN[];
extern const char STR_PRESS_ENTER_TO_CONFIRM[];
@@ -294,7 +297,6 @@ extern const char STR_MINUTEBEEP[];
extern const char STR_BEEPCOUNTDOWN[];
extern const char STR_PERSISTENT[];
extern const char STR_BACKLIGHT_LABEL[];
-extern const char STR_BLDELAY[];
#if defined(PWM_BACKLIGHT) || defined(COLORLCD)
extern const char STR_BLONBRIGHTNESS[];
@@ -306,7 +308,7 @@ extern const char STR_SPLASHSCREEN[];
extern const char STR_PWR_ON_DELAY[];
extern const char STR_PWR_OFF_DELAY[];
#endif
-extern const char STR_THROTTLEWARNING[];
+extern const char STR_THROTTLE_WARNING[];
extern const char STR_SWITCHWARNING[];
extern const char STR_POTWARNINGSTATE[];
extern const char STR_POTWARNING[];
@@ -314,7 +316,7 @@ extern const char STR_SLIDERWARNING[];
extern const char STR_TIMEZONE[];
extern const char STR_ADJUST_RTC[];
extern const char STR_GPS[];
-extern const char STR_GPSCOORD[];
+extern const char STR_GPS_COORDS_FORMAT[];
extern const char STR_VARIO[];
extern const char STR_FLYSKY_TELEMETRY[];
extern const char STR_PITCH_AT_ZERO[];
@@ -348,8 +350,8 @@ extern const char STR_CH[];
extern const char STR_MODEL[];
extern const char STR_FM[];
extern const char STR_EEPROMLOWMEM[];
-extern const char STR_PRESSANYKEYTOSKIP[];
-extern const char STR_THROTTLENOTIDLE[];
+extern const char STR_PRESS_ANY_KEY_TO_SKIP[];
+extern const char STR_THROTTLE_NOT_IDLE[];
extern const char STR_ALARMSDISABLED[];
extern const char STR_PRESSANYKEY[];
extern const char STR_BAD_RADIO_DATA[];
@@ -358,7 +360,7 @@ extern const char STR_EEPROMOVERFLOW[];
extern const char STR_TRIMS2OFFSETS[];
extern const char STR_CHANNELS2FAILSAFE[];
extern const char STR_CHANNEL2FAILSAFE[];
-extern const char STR_MENURADIOSETUP[];
+extern const char STR_RADIO_SETUP[];
extern const char STR_MENUTRAINER[];
extern const char STR_MENUSPECIALFUNCS[];
extern const char STR_MENUVERSION[];
@@ -366,7 +368,7 @@ extern const char STR_MENU_RADIO_SWITCHES[];
extern const char STR_MENU_RADIO_ANALOGS[];
extern const char STR_MENUCALIBRATION[];
extern const char STR_MENUMODELSEL[];
-extern const char STR_MENUSETUP[];
+extern const char STR_MENU_MODEL_SETUP[];
extern const char STR_MENUFLIGHTMODE[];
extern const char STR_MENUFLIGHTMODES[];
extern const char STR_MENUHELISETUP[];
@@ -453,15 +455,15 @@ extern const char STR_STOPPING [];
extern const char STR_MENU_SPECTRUM_ANALYSER[];
extern const char STR_MENU_POWER_METER[];
extern const char STR_SENSOR[];
-extern const char STR_COUNTRYCODE[];
+extern const char STR_COUNTRY_CODE[];
extern const char STR_USBMODE[];
-extern const char STR_JACKMODE[];
+extern const char STR_JACK_MODE[];
extern const char STR_DISABLE_INTERNAL[];
extern const char STR_BATT_CALIB[];
extern const char STR_VOLTAGE[];
extern const char STR_CURRENT_CALIB[];
-extern const char STR_UNITSSYSTEM[];
-extern const char STR_VOICELANG[];
+extern const char STR_UNITS_SYSTEM[];
+extern const char STR_VOICE_LANGUAGE[];
extern const char STR_MODELIDUSED[];
extern const char STR_BEEP_VOLUME[];
extern const char STR_WAV_VOLUME[];
@@ -552,7 +554,7 @@ extern const char STR_CAT_NOT_EMPTY[];
extern const char STR_WARNING[];
extern const char STR_STORAGE_WARNING[];
extern const char STR_EEPROM_CONVERTING[];
-extern const char STR_THROTTLEWARN[];
+extern const char STR_THROTTLE_UPPERCASE[];
extern const char STR_ALARMSWARN[];
extern const char STR_SWITCHWARN[];
extern const char STR_FAILSAFEWARN[];
@@ -566,7 +568,7 @@ extern const char STR_EMERGENCY_MODE[];
extern const char STR_NO_FAILSAFE[];
extern const char STR_KEYSTUCK[];
-extern const char STR_SPEAKER_VOLUME[];
+extern const char STR_VOLUME[];
extern const char STR_LCD[];
extern const char STR_BRIGHTNESS[];
extern const char STR_CPU_TEMP[];
@@ -801,11 +803,11 @@ extern const char STR_USER_INTERFACE[];
extern const char STR_THEME[];
extern const char STR_SETUP[];
extern const char STR_LAYOUT[];
-extern const char STR_ADDMAINVIEW[];
+extern const char STR_ADD_MAIN_VIEW[];
extern const char STR_BACKGROUND_COLOR[];
extern const char STR_MAIN_COLOR[];
extern const char STR_TEXT_VIEWER[];
-extern const char STR_RFPOWER[];
+extern const char STR_RF_POWER[];
extern const char STR_BYTES[];
extern const char STR_ANTENNAPROBLEM[];
diff --git a/radio/src/translations/CMakeLists.txt b/radio/src/translations/CMakeLists.txt
index 5861862e3..14dcb772a 100644
--- a/radio/src/translations/CMakeLists.txt
+++ b/radio/src/translations/CMakeLists.txt
@@ -1,16 +1,17 @@
file(GLOB translations *.h.txt)
+
foreach(translation ${translations})
get_filename_component(language ${translation} NAME_WE)
get_filename_component(path ${translation} DIRECTORY)
set(target ${language}.h)
- if(NOT(PCB STREQUAL X12S OR PCB STREQUAL X10) AND language STREQUAL "cz")
- set(language cz_reduced)
+ if(PCB STREQUAL X12S OR PCB STREQUAL X10 OR PCB STREQUAL NV14)
+ set(language all)
endif()
if(PYTHONINTERP_FOUND)
add_custom_command(
OUTPUT ${target}
- COMMAND ${PYTHON_EXECUTABLE} ${RADIO_DIRECTORY}/util/translate.py ${translation} ${target} ${language}
- DEPENDS ${translation}
+ COMMAND ${PYTHON_EXECUTABLE} ${TOOLS_DIRECTORY}/encode-translation.py ${translation} ${target} ${language}
+ DEPENDS ${translation} ${TOOLS_DIRECTORY}/encode-translation.py ${TOOLS_DIRECTORY}/charset.py
)
endif()
list(APPEND translations_files ${target})
diff --git a/radio/src/translations/cn.h.txt b/radio/src/translations/cn.h.txt
index 233064536..c5251a554 100644
--- a/radio/src/translations/cn.h.txt
+++ b/radio/src/translations/cn.h.txt
@@ -180,15 +180,15 @@
#endif
#if defined(AUDIO)
- #define TR_SOUND "Play Sound"
+ #define TR_SOUND "播放声音\0 "
#else
#define TR_SOUND "Beep\0 "
#endif
#if defined(HAPTIC)
- #define TR_HAPTIC "Haptic\0 "
+ #define TR_HAPTIC "振动\0 "
#else
- #define TR_HAPTIC "[Haptic]\0 "
+ #define TR_HAPTIC "[振动]\0 "
#endif
#if defined(VOICE)
@@ -220,13 +220,13 @@
#endif
#if defined(LUA)
- #define TR_SF_PLAY_SCRIPT "Lua Script"
+ #define TR_SF_PLAY_SCRIPT "Lua 脚本\0 "
#else
#define TR_SF_PLAY_SCRIPT "[Lua]\0 "
#endif
#if defined(DEBUG)
- #define TR_SF_TEST "Test\0"
+ #define TR_SF_TEST "测试\0 "
#else
#define TR_SF_TEST
#endif
@@ -239,8 +239,8 @@
#define TR_SF_SAFETY "---\0 "
#endif
-#define TR_SF_SCREENSHOT "Screenshot"
-#define TR_SF_RESERVE "[reserve]\0"
+#define TR_SF_SCREENSHOT "截屏\0 "
+#define TR_SF_RESERVE "[reserve]\0"
#define TR_VFSWFUNC TR_SF_SAFETY "Trainer\0 ""Inst. Trim""Reset\0 ""Set \0 " TR_ADJUST_GVAR "Volume\0 " "SetFailsfe" "RangeCheck" "ModuleBind" TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_SF_RESERVE TR_SF_PLAY_SCRIPT TR_SF_RESERVE TR_SF_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Backlight\0" TR_SF_SCREENSHOT TR_SF_TEST
@@ -295,8 +295,8 @@
#define TR_VSWASHTYPE "---\0""120\0""120X""140\0""90\0"
#if defined(PCBHORUS)
- #define LEN_VKEYS "\005"
- #define TR_VKEYS "Menu\0""Exit\0""Enter""Up\0 ""Down\0""Right""Left\0"
+ #define LEN_VKEYS "\004"
+ #define TR_VKEYS "菜单""退出""确认""向上""向下""向右""向左"
#elif defined(PCBXLITE)
#define LEN_VKEYS "\005"
#define TR_VKEYS "Shift""Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
@@ -503,10 +503,10 @@
#define TR_BEEP_PITCH "报警声音高"
#define TR_HAPTIC_LABEL "振动"
#define TR_STRENGTH "强度"
-#define TR_GYRO_LABEL "Gyro"
-#define TR_GYRO_OFFSET "Offset"
-#define TR_GYRO_MAX "Max"
-#define TR_CONTRAST "Contrast"
+#define TR_GYRO_LABEL "陀螺仪"
+#define TR_GYRO_OFFSET "补偿"
+#define TR_GYRO_MAX "最大值"
+#define TR_CONTRAST "对比度"
#define TR_ALARMS_LABEL "警告"
#define TR_BATTERY_RANGE TR("Batt. range", "电压测量范围")
#define TR_BATTERYWARNING "低电压报警值"
@@ -514,46 +514,46 @@
#define TR_MEMORYWARNING "内存不足"
#define TR_ALARMWARNING "静音"
#define TR_RSSI_SHUTDOWN_ALARM TR("Rssi Shutdown", "关机时检查RSSI")
-#define TR_MODEL_STILL_POWERED "Model still powered"
-#define TR_MODEL_SHUTDOWN "Shutdown ?"
-#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
+#define TR_MODEL_STILL_POWERED "模型未断电"
+#define TR_MODEL_SHUTDOWN "关机 ?"
+#define TR_PRESS_ENTER_TO_CONFIRM "按ENTER键确认"
#define TR_RENAVIG "RotEnc Navig"
-#define TR_THROTTLE_LABEL "Throttle"
+#define TR_THROTTLE_LABEL "油门"
#define TR_THROTTLEREVERSE TR("T-Reverse", INDENT "Reverse")
-#define TR_MINUTEBEEP TR("Minute", "Minute call")
-#define TR_BEEPCOUNTDOWN INDENT "Countdown"
-#define TR_PERSISTENT TR(INDENT "Persist.", INDENT "Persistent")
+#define TR_MINUTEBEEP TR("分", "分钟播报")
+#define TR_BEEPCOUNTDOWN INDENT "倒数"
+#define TR_PERSISTENT TR(INDENT "Persist.", INDENT "持续")
#define TR_BACKLIGHT_LABEL "背光"
#define TR_BLONBRIGHTNESS "背光开"
#define TR_BLOFFBRIGHTNESS "背光关"
-#define TR_BLCOLOR "Color"
-#define TR_SPLASHSCREEN "Splash screen"
-#define TR_PWR_ON_DELAY "Pwr On delay"
-#define TR_PWR_OFF_DELAY "Pwr Off delay"
-#define TR_THROTTLE_WARNING TR(INDENT "T-Warning", INDENT "Throttle state")
-#define TR_SWITCHWARNING TR(INDENT "S-Warning", INDENT "Switch positions")
-#define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders")
-#define TR_SLIDERWARNING TR(INDENT "Slid. pos.", INDENT "Slider positions")
-#define TR_POTWARNING TR(INDENT "Pot warn.", INDENT "Pot positions")
+#define TR_BLCOLOR "颜色"
+#define TR_SPLASHSCREEN "开机图片"
+#define TR_PWR_ON_DELAY "开机延迟"
+#define TR_PWR_OFF_DELAY "关机延迟"
+#define TR_THROTTLE_WARNING TR(INDENT "T-Warning", INDENT "油门状态")
+#define TR_SWITCHWARNING TR(INDENT "S-Warning", INDENT "开关位置")
+#define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "电位器和侧滑块")
+#define TR_SLIDERWARNING TR(INDENT "Slid. pos.", INDENT "测滑块位置")
+#define TR_POTWARNING TR(INDENT "Pot warn.", INDENT "电位器位置")
#define TR_TIMEZONE "时区"
#define TR_ADJUST_RTC "时钟设置"
#define TR_GPS "GPS"
-#define TR_RXCHANNELORD TR("Rx channel ord", "Default channel order")
-#define TR_STICKS "Sticks"
-#define TR_POTS "Pots"
-#define TR_SWITCHES "Switches"
+#define TR_RXCHANNELORD TR("Rx channel ord", "默认通道顺序")
+#define TR_STICKS "摇杆"
+#define TR_POTS "电位器"
+#define TR_SWITCHES "开关"
#define TR_SWITCHES_DELAY TR("Play delay", "Play delay (sw. mid pos)")
-#define TR_SLAVE CENTER "Slave"
+#define TR_SLAVE CENTER "从机"
#define TR_MODESRC "Mode\006% Source"
-#define TR_MULTIPLIER "Multiplier"
+#define TR_MULTIPLIER "乘数"
#define TR_CAL "Cal"
-#define TR_CALIBRATION "Calibration"
+#define TR_CALIBRATION "校准"
#define TR_VTRIM "Trim- +"
#define TR_BG "BG:"
-#define TR_CALIB_DONE "Calibration completed"
+#define TR_CALIB_DONE "校准完成"
#if defined(PCBHORUS)
- #define TR_MENUTOSTART "Press [Enter] to start"
- #define TR_SETMIDPOINT "Center sticks/pots/sliders and press [Enter]"
+ #define TR_MENUTOSTART "按 [Enter] 键开始"
+ #define TR_SETMIDPOINT "将摇杆、电位器和侧滑块居中后按[Enter]开始"
#define TR_MOVESTICKSPOTS "Move sticks/pots/sliders and press [Enter]"
#elif defined(COLORLCD)
#define TR_MENUTOSTART TR_ENTER " TO START"
@@ -729,7 +729,7 @@
#define TR_EEPROMWARN "EEPROM"
#define TR_STORAGE_WARNING "STORAGE"
#define TR_EEPROM_CONVERTING "Converting EEPROM"
-#define TR_THROTTLE_WARNING "油门"
+#define TR_THROTTLE_UPPERCASE "油门"
#define TR_ALARMSWARN "ALARMS"
#define TR_SWITCHWARN TR("SWITCH", "CONTROL")
#define TR_FAILSAFEWARN "FAILSAFE"
@@ -912,7 +912,6 @@
#define TR_DEBUG "Debug"
#define TR_KEYS_BTN BUTTON(TR("Keys", "Switches"))
#define TR_ANALOGS_BTN BUTTON(TR("Anas", "Analogs"))
-#define TR_CALIBRATION "Calibration"
#define TR_SET BUTTON("Set")
#define TR_TRAINER "Trainer"
#define TR_ANTENNAPROBLEM CENTER "TX antenna problem!"
@@ -934,30 +933,28 @@
#define TR_CHANNELRANGE TR(INDENT "Ch. Range", INDENT "Channel Range")
#define TR_RXFREQUENCY TR("Rx Freqency", "Rx Servo Frequency")
#define TR_ANTENNACONFIRM1 "EXT. ANTENNA"
-
#if defined(PCBX12S)
-#define LEN_ANTENNA_MODES "\012"
-#define TR_ANTENNA_MODES "内置\0 ""询问\0 ""视模型而定""内置+外置"
+#define LEN_ANTENNA_MODES "\010"
+#define TR_ANTENNA_MODES "内置天线""询问\0 ""基于模型""外置天线"
#else
#define LEN_ANTENNA_MODES "\011"
#define TR_ANTENNA_MODES "Internal\0""Ask\0 ""Per model""External"
#endif
-
-#define TR_USE_INTERNAL_ANTENNA TR("Use int. antenna", "Use internal antenna")
-#define TR_USE_EXTERNAL_ANTENNA TR("Use ext. antenna", "Use external antenna")
-#define TR_ANTENNACONFIRM2 TR("Check antenna", "Make sure antenna is installed!")
-#define TR_MODULE_PROTOCOL_FLEX_WARN_LINE1 "Requires FLEX non"
-#define TR_MODULE_PROTOCOL_FCC_WARN_LINE1 "Requires FCC"
-#define TR_MODULE_PROTOCOL_EU_WARN_LINE1 "Requires EU"
+#define TR_USE_INTERNAL_ANTENNA TR("Use int. antenna", "请使用内置天线")
+#define TR_USE_EXTERNAL_ANTENNA TR("Use ext. antenna", "请使用外置天线")
+#define TR_ANTENNACONFIRM2 TR("Check antenna", "请确认天线安装完好!")
+#define TR_MODULE_PROTOCOL_FLEX_WARN_LINE1 "请使用FLEX版本"
+#define TR_MODULE_PROTOCOL_FCC_WARN_LINE1 "请使用FCC版本"
+#define TR_MODULE_PROTOCOL_EU_WARN_LINE1 "请使用EU版本"
#define TR_MODULE_PROTOCOL_WARN_LINE2 "certified firmware"
#define TR_LOWALARM INDENT "Low alarm"
#define TR_CRITICALALARM INDENT "Critical alarm"
#define TR_RSSIALARM_WARN "RSSI"
-#define TR_NO_RSSIALARM TR(INDENT "Alarms disabled", "Telemetry alarms disabled")
-#define TR_DISABLE_ALARM TR(INDENT "Disable alarms", INDENT "Disable telemetry alarms")
-#define TR_ENABLE_POPUP "Enable popup"
-#define TR_DISABLE_POPUP "Disable popup"
-#define TR_POPUP "Popup"
+#define TR_NO_RSSIALARM TR(INDENT "Alarms disabled", "遥测报警已禁止")
+#define TR_DISABLE_ALARM TR(INDENT "Disable alarms", INDENT "请禁止遥测报警")
+#define TR_ENABLE_POPUP "允许弹窗"
+#define TR_DISABLE_POPUP "禁止弹窗"
+#define TR_POPUP "弹窗提示"
#define TR_MIN "Min"
#define TR_MAX "Max"
#define TR_CURVE_PRESET "Preset..."
@@ -980,18 +977,18 @@
#define TR_PREFLIGHT "Preflight Checks"
#define TR_CHECKLIST TR(INDENT "Checklist", INDENT "Display checklist")
#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS offset")
-#define TR_AUX_SERIAL_MODE "Serial port"
-#define TR_SCRIPT "Script"
-#define TR_INPUTS "Inputs"
-#define TR_OUTPUTS "Outputs"
-#define STR_EEBACKUP "EEPROM backup"
-#define STR_FACTORYRESET "Factory reset"
-#define TR_CONFIRMRESET TR("Erase ALL", "Erase ALL models and settings?")
-#define TR_TOO_MANY_LUA_SCRIPTS "Too many Lua scripts!"
+#define TR_AUX_SERIAL_MODE "串口"
+#define TR_SCRIPT "脚本"
+#define TR_INPUTS "输入"
+#define TR_OUTPUTS "输出"
+#define STR_EEBACKUP "EEPROM 数据备份"
+#define STR_FACTORYRESET "恢复出厂设置"
+#define TR_CONFIRMRESET TR("Erase ALL", "擦除所有模型和设置数据?")
+#define TR_TOO_MANY_LUA_SCRIPTS "Lua脚本数量超出!"
// Horus and Taranis column headers
-#define TR_PHASES_HEADERS_NAME "Name"
-#define TR_PHASES_HEADERS_SW "Switch"
+#define TR_PHASES_HEADERS_NAME "名称"
+#define TR_PHASES_HEADERS_SW "开关"
#define TR_PHASES_HEADERS_RUD_TRIM "Rudder Trim"
#define TR_PHASES_HEADERS_ELE_TRIM "Elevator Trim"
#define TR_PHASES_HEADERS_THT_TRIM "Throttle Trim"
@@ -1144,7 +1141,7 @@
#define TR_SETUP "Setup"
#define TR_MAINVIEWX "Main view X"
#define TR_LAYOUT "Layout"
-#define TR_ADDMAINVIEW "Add main view"
+#define TR_ADD_MAIN_VIEW "Add main view"
#define TR_BACKGROUND_COLOR "Background color"
#define TR_MAIN_COLOR "Main color"
#define TR_TEXT_VIEWER "Text Viewer"
diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt
index be8e767e3..364b162bd 100644
--- a/radio/src/translations/cz.h.txt
+++ b/radio/src/translations/cz.h.txt
@@ -85,14 +85,14 @@
#define LEN_VPERSISTENT "\014"
#define TR_VPERSISTENT "Ne\0 ""V rámci letu""Reset ručně\0"
-#define LEN_COUNTRYCODES TR("\002", "\010")
-#define TR_COUNTRYCODES TR("US""JP""EU", "Amerika\0""Japonsko""Evropa\0 ")
+#define LEN_COUNTRY_CODES TR("\002", "\010")
+#define TR_COUNTRY_CODES TR("US""JP""EU", "Amerika\0""Japonsko""Evropa\0 ")
#define LEN_USBMODES TR("\007", "\011")
#define TR_USBMODES TR("Zeptat\0""Joyst\0 ""SDkarta""Serial\0", "Zeptat se""Joystick\0""Úložiště\0""Serial\0 ")
-#define LEN_JACKMODES "\007"
-#define TR_JACKMODES "Zeptat\0""Audio\0 ""Trenér"
+#define LEN_JACK_MODES "\007"
+#define TR_JACK_MODES "Zeptat\0""Audio\0 ""Trenér"
#define LEN_TELEMETRY_PROTOCOLS "\017"
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 FrSky D\0 FrSky D (kabel)Spektrum\0 "
@@ -489,27 +489,27 @@
#define TR_RANGE INDENT"Rozsah"
#define TR_CENTER INDENT "Střed"
#define TR_BAR "Ukazatel"
-#define TR_ALARM INDENT"Alarm"
+#define TR_ALARM "Alarm"
#define TR_USRDATA TR("UživData", "Uživ. data")
-#define TR_BLADES TR(INDENT"ListyVrt", INDENT"Listy vrtule")
+#define TR_BLADES TR("ListyVrt", "Listy vrtule")
#define TR_SCREEN "Panel "
#define TR_SOUND_LABEL "Zvuk"
-#define TR_LENGTH INDENT"Délka"
-#define TR_BEEP_LENGTH TR3(INDENT"Délka", INDENT"Délka", INDENT"Délka zvuku")
-#define TR_SPKRPITCH INDENT"Tón"
+#define TR_LENGTH "Délka"
+#define TR_BEEP_LENGTH TR3("Délka", "Délka", "Délka zvuku")
+#define TR_BEEP_PITCH "Tón"
#define TR_HAPTIC_LABEL "Vibrace"
-#define TR_HAPTICSTRENGTH INDENT"Síla"
+#define TR_STRENGTH "Síla"
#define TR_GYRO_LABEL "Gyro"
#define TR_GYRO_OFFSET "Offset"
#define TR_GYRO_MAX "Max"
#define TR_CONTRAST "Kontrast LCD"
#define TR_ALARMS_LABEL "Alarmy"
#define TR_BATTERY_RANGE TR("Ukazatel bat.", "Ukazatel baterie")
-#define TR_BATTERYWARNING INDENT "Vybitá bat."
-#define TR_INACTIVITYALARM TR(INDENT "Nečinnost", INDENT "Nečinnost rádia")
-#define TR_MEMORYWARNING INDENT"Plná pamět'"
-#define TR_ALARMWARNING TR3(INDENT "Vypnutý zvuk", INDENT "Upozornit na vypnutý zvuk", INDENT "Upozornit na vyp. zvuk")
-#define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi při vyp.", INDENT "Hlídat Rssi při vypnutí")
+#define TR_BATTERYWARNING "Vybitá bat."
+#define TR_INACTIVITYALARM TR("Nečinnost", "Nečinnost rádia")
+#define TR_MEMORYWARNING "Plná pamět'"
+#define TR_ALARMWARNING TR3("Vypnutý zvuk", "Upozornit na vypnutý zvuk", "Upozornit na vyp. zvuk")
+#define TR_RSSI_SHUTDOWN_ALARM TR("Rssi při vyp.", "Hlídat Rssi při vypnutí")
#define TR_MODEL_STILL_POWERED "Model stále spuštěn"
#define TR_MODEL_SHUTDOWN "Vypnout ?"
#define TR_PRESS_ENTER_TO_CONFIRM "Zmáčkni enter pro potvrzení"
@@ -520,20 +520,19 @@
#define TR_BEEPCOUNTDOWN INDENT"Odpočet"
#define TR_PERSISTENT INDENT"Trvalé"
#define TR_BACKLIGHT_LABEL "Podsvětlení"
-#define TR_BLDELAY INDENT"Zhasnout po"
-#define TR_BLONBRIGHTNESS TR3(INDENT"Jas Zap.", INDENT"Jas Zap.", INDENT"Jas zapnutého LCD")
-#define TR_BLOFFBRIGHTNESS TR3(INDENT"Jas Vyp.", INDENT"Jas Vyp.", INDENT"Jas vypnutého LCD")
-#define TR_BLCOLOR INDENT "Barva"
+#define TR_BLONBRIGHTNESS TR3("Jas Zap.", "Jas Zap.", "Jas zapnutého LCD")
+#define TR_BLOFFBRIGHTNESS TR3("Jas Vyp.", "Jas Vyp.", "Jas vypnutého LCD")
+#define TR_BLCOLOR "Barva"
#define TR_SPLASHSCREEN TR("úvodní logo", "Zobrazit úvodní logo")
#define TR_PWR_ON_DELAY "Pwr On delay"
#define TR_PWR_OFF_DELAY "Pwr Off delay"
-#define TR_THROTTLEWARNING TR("* Plyn", INDENT "Kontrola plynu")
+#define TR_THROTTLE_WARNING TR("* Plyn", INDENT "Kontrola plynu")
#define TR_SWITCHWARNING TR("* Spínače", INDENT "Polohy spínačů")
#define TR_POTWARNINGSTATE TR("* Pot&Slid.", INDENT "Kontrola Pot&Slid.")
#define TR_SLIDERWARNING TR("* Slidery", INDENT "Pozice sliderů")
#define TR_POTWARNING TR("* Potenc.", INDENT "Potenciometry")
#define TR_TIMEZONE "Časové pásmo"
-#define TR_ADJUST_RTC TR3("Čas z GPS", INDENT "Použít čas z GPS", INDENT "Použít čas z GPS")
+#define TR_ADJUST_RTC TR3("Čas z GPS", "Použít čas z GPS", "Použít čas z GPS")
#define TR_GPS "GPS"
#define TR_RXCHANNELORD TR("Pořadí kanálů", "Výchozí pořadí kanálů")
#define TR_STICKS "Páky"
@@ -564,7 +563,6 @@
#define OFS_RX 4
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "NO DATA"
-#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036THR\037\146TH%"
#define TR_US "us"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us"
#define TR_TMIXMAXMS "Tmix max"
@@ -576,9 +574,8 @@
#define TR_FM "LR"
#define TR_MIX "MIX"
#define TR_EEPROMLOWMEM "Dochází EEPROM"
-#define TR_ALERT "\006 POZOR"
-#define TR_PRESSANYKEYTOSKIP TR("\003Klávesa >>> přeskočit", "Klávesa >>> přeskočit")
-#define TR_THROTTLENOTIDLE TR("\003Páka plynu je pohnutá", "Páka plynu není na nule")
+#define TR_PRESS_ANY_KEY_TO_SKIP TR("\003Klávesa >>> přeskočit", "Klávesa >>> přeskočit")
+#define TR_THROTTLE_NOT_IDLE TR("\003Páka plynu je pohnutá", "Páka plynu není na nule")
#define TR_ALARMSDISABLED "Alarmy jsou zakázány"
#define TR_PRESSANYKEY TR("\006Stiskni klávesu", "Stiskni klávesu")
#define TR_BADEEPROMDATA TR("\006Chyba dat EEPROM", "Chyba dat EEPROM")
@@ -586,7 +583,7 @@
#define TR_EEPROMFORMATTING TR("\004Formatování EEPROM", "Formatování EEPROM")
#define TR_STORAGE_FORMAT "Storage Preparation"
#define TR_EEPROMOVERFLOW "Přetekla EEPROM"
-#define TR_MENURADIOSETUP "NASTAVENÍ RÁDIA"
+#define TR_RADIO_SETUP "NASTAVENÍ RÁDIA"
#define TR_MENUDATEANDTIME "DATUM A ČAS"
#define TR_MENUTRAINER "TRENÉR"
#define TR_MENUSPECIALFUNCS "GLOBÁLNÍ FUNKCE"
@@ -602,7 +599,7 @@
#define TR_CHANNELS2FAILSAFE "Kanály=>Failsafe"
#define TR_CHANNEL2FAILSAFE "Kanál=>Failsafe"
#define TR_MENUMODELSEL "MODEL"
-#define TR_MENUSETUP "NASTAVENÍ"
+#define TR_MENU_MODEL_SETUP "NASTAVENÍ"
#define TR_MENUFLIGHTMODE "LETOVÝ REŽIM"
#define TR_MENUFLIGHTMODES "LETOVÉ REŽIMY"
#define TR_MENUHELISETUP "HELI"
@@ -633,7 +630,7 @@
#define TR_MULTI_RFTUNE TR(INDENT "Ladění frek", INDENT "Jemné ladění frek. RF")
#define TR_MULTI_TELEMETRY "Telemetrie"
#define TR_MULTI_VIDFREQ TR(INDENT "Freq. videa", INDENT "Frekvence videa")
-#define TR_RFPOWER INDENT "Výkon RF"
+#define TR_RF_POWER INDENT "Výkon RF"
#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID")
#define TR_MULTI_OPTION TR(INDENT "Možnosti", INDENT "Hodnota")
#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind při zapnutí")
@@ -664,14 +661,13 @@
#define TR_FLYSKY_TELEMETRY TR("FlySky RSSI #", "Use FlySky RSSI value without rescalling")
#define TR_LATITUDE "Zem. šířka"
#define TR_LONGITUDE "Zem. délka"
-#define TR_GPSCOORD "GPS souřadnice"
+#define TR_GPS_COORDS_FORMAT "GPS souřadnice"
#define TR_VARIO "Vario"
-#define TR_PITCH_AT_ZERO INDENT "Tón na nule"
-#define TR_PITCH_AT_MAX INDENT "Tón na maximu"
-#define TR_REPEAT_AT_ZERO TR(INDENT "Opak. na nule", INDENT "Opakování na nule")
-#define TR_POWEROFF "\027Vypínám..."
+#define TR_PITCH_AT_ZERO "Tón na nule"
+#define TR_PITCH_AT_MAX "Tón na maximu"
+#define TR_REPEAT_AT_ZERO TR("Opak. na nule", "Opakování na nule")
#define TR_SHUTDOWN "Vypínání.."
-#define TR_SAVEMODEL "Ukládám nastavení modelu"
+#define TR_SAVE_MODEL "Ukládám nastavení modelu"
#define TR_BATT_CALIB "Kalib. bat."
#define TR_CURRENT_CALIB " +=\006Proud"
#define TR_VOLTAGE INDENT"Napětí"
@@ -728,7 +724,7 @@
#define TR_EEPROMWARN "EEPROM"
#define TR_STORAGE_WARNING "ÚLOŽIŠTĚ"
#define TR_EEPROM_CONVERTING "Aktualizuji EEPROM"
-#define TR_THROTTLEWARN "PLYNU"
+#define TR_THROTTLE_UPPERCASE "PLYNU"
#define TR_ALARMSWARN "ALARMU"
#define TR_SWITCHWARN "POZICE"
#define TR_FAILSAFEWARN "FAILSAFE"
@@ -743,9 +739,9 @@
#define TR_NO_FAILSAFE "Failsafe není nastaveno"
#define TR_KEYSTUCK "Zaseklá klávesa"
#define TR_INVERT_THR "Invertovat plyn?"
-#define TR_SPEAKER_VOLUME INDENT "Hlasitost"
+#define TR_VOLUME "Hlasitost"
#define TR_LCD "LCD"
-#define TR_BRIGHTNESS INDENT "Jas"
+#define TR_BRIGHTNESS "Jas"
#define TR_CPU_TEMP "Tepl. CPU\016>"
#define TR_CPU_CURRENT "Proud\030>"
#define TR_CPU_MAH "Spotřeba"
@@ -856,11 +852,11 @@
#define TR_MENU_SPECTRUM_ANALYSER "SPEKTRÁLNÍ ANALYZER"
#define TR_MENU_POWER_METER "MĚŘIČ VÝKONU"
#define TR_SENSOR "SENZOR"
-#define TR_COUNTRYCODE "Kód regionu"
+#define TR_COUNTRY_CODE "Kód regionu"
#define TR_USBMODE "Režim USB"
-#define TR_JACKMODE "Režim Jack"
-#define TR_VOICELANG "Jazyk hlasu"
-#define TR_UNITSSYSTEM "Jednotky"
+#define TR_JACK_MODE "Režim Jack"
+#define TR_VOICE_LANGUAGE "Jazyk hlasu"
+#define TR_UNITS_SYSTEM "Jednotky"
#define TR_EDIT "Upravit"
#define TR_INSERT_BEFORE "Vložit před"
#define TR_INSERT_AFTER "Vložit za"
@@ -1131,7 +1127,7 @@
#define TR_SETUP "Nastavení"
#define TR_MAINVIEWX "Hlavní panel X"
#define TR_LAYOUT "Rozložení"
-#define TR_ADDMAINVIEW "Přidat hlavní panel"
+#define TR_ADD_MAIN_VIEW "Přidat hlavní panel"
#define TR_BACKGROUND_COLOR "Barva pozadí"
#define TR_MAIN_COLOR "Hlavní barva"
#define TR_TEXT_VIEWER "Prohlížeč textu"
diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt
index 5dae3c278..3d54a5a1a 100644
--- a/radio/src/translations/de.h.txt
+++ b/radio/src/translations/de.h.txt
@@ -86,14 +86,14 @@
#define LEN_VPERSISTENT "\014"
#define TR_VPERSISTENT "AUS\0 ""Flugzeit\0 ""Manuell Ruck"
-#define LEN_COUNTRYCODES TR("\002", "\007")
-#define TR_COUNTRYCODES TR("US""JP""EU", "Amerika""Japan\0 ""Europa\0")
+#define LEN_COUNTRY_CODES TR("\002", "\007")
+#define TR_COUNTRY_CODES TR("US""JP""EU", "Amerika""Japan\0 ""Europa\0")
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Fragen""Joyst\0""SDCard""Serial", "Fragen\0 ""Joystick""Speicher""Seriell\0")
-#define LEN_JACKMODES "\007"
-#define TR_JACKMODES "Popup\0 ""Audio\0 ""Trainer"
+#define LEN_JACK_MODES "\007"
+#define TR_JACK_MODES "Popup\0 ""Audio\0 ""Trainer"
#define LEN_TELEMETRY_PROTOCOLS "\017"
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (Kabel)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry"
@@ -490,31 +490,31 @@
#define TR_MIXER "MISCHER"
#define TR_CV "KV"
#define TR_GV TR("G", "GV")
-#define TR_ACHANNEL TR("A\004gemessen", "A\004Kanal gemessen =>") //9XR-Pro
+#define TR_ACHANNEL TR("A\004gemessen", "A\004Kanal gemessen =>") // 9XR-Pro
#define TR_RANGE TR(INDENT "Bereich", INDENT "Variobereich m/s") // 9XR-Pro
#define TR_CENTER TR(INDENT "Mitte", INDENT "Variomitte m/s")
#define TR_BAR "Balken"
-#define TR_ALARM TR(INDENT "Alarme ", INDENT "Aufleuchten bei Alarm") //9XR-Pro
+#define TR_ALARM TR("Alarme ", "Aufleuchten bei Alarm") // 9XR-Pro
#define TR_USRDATA "Daten berechnen aus"
-#define TR_BLADES TR(INDENT "Prop", INDENT "Prop-Blätter") //9XR-Pro
+#define TR_BLADES TR("Prop", "Prop-Blätter") // 9XR-Pro
#define TR_SCREEN "TelmBild "
#define TR_SOUND_LABEL "Töne"
-#define TR_LENGTH INDENT "Dauer"
-#define TR_BEEP_LENGTH INDENT "Beep-Länge"
-#define TR_SPKRPITCH INDENT "Beep-Freq +/-"
+#define TR_LENGTH "Dauer"
+#define TR_BEEP_LENGTH "Beep-Länge"
+#define TR_BEEP_PITCH "Beep-Freq +/-"
#define TR_HAPTIC_LABEL "Haptik"
-#define TR_HAPTICSTRENGTH INDENT "Stärke"
+#define TR_STRENGTH "Stärke"
#define TR_GYRO_LABEL "Gyro"
#define TR_GYRO_OFFSET "Offset"
#define TR_GYRO_MAX "Max"
#define TR_CONTRAST "LCD-Kontrast"
#define TR_ALARMS_LABEL "Alarme"
#define TR_BATTERY_RANGE TR("Akku Bereich", "Akku Spannungsbereich") // Symbol Akku Ladezustand
-#define TR_BATTERYWARNING TR(INDENT "Akku Warnung", "Akkuspannungswarnung")
-#define TR_INACTIVITYALARM TR(INDENT "Inaktivität", INDENT "Inaktivität nach") //9XR-Pro
-#define TR_MEMORYWARNING INDENT "Speicher voll"
-#define TR_ALARMWARNING TR(INDENT "Alle Töne aus?", INDENT "Alle Töne ganz aus?")
-#define TR_RSSISHUTDOWNALARM TR(INDENT "RSSI-Chk aus?", INDENT "Prüfe RSSI bei Ausschalten")
+#define TR_BATTERYWARNING TR("Akku Warnung", "Akkuspannungswarnung")
+#define TR_INACTIVITYALARM TR("Inaktivität", "Inaktivität nach")
+#define TR_MEMORYWARNING "Speicher voll"
+#define TR_ALARMWARNING TR("Alle Töne aus?", "Alle Töne ganz aus?")
+#define TR_RSSI_SHUTDOWN_ALARM TR(INDENT "RSSI-Chk aus?", INDENT "Prüfe RSSI bei Ausschalten")
#define TR_FLYSKY_TELEMETRY TR("FlySky RSSI #", "Use FlySky RSSI value without rescalling")
#define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_MODEL_SHUTDOWN "Shutdown ?"
@@ -526,21 +526,19 @@
#define TR_BEEPCOUNTDOWN INDENT "Countdown"
#define TR_PERSISTENT TR(INDENT "Permanent", INDENT "Permanent")
#define TR_BACKLIGHT_LABEL "LCD-Beleuchtung"
-#define TR_BLDELAY INDENT "Dauer"
-#define TR_BL_MODE_DUR INDENT "Mode-Duration"
-#define TR_BLONBRIGHTNESS INDENT "An-Helligkeit"
-#define TR_BLOFFBRIGHTNESS INDENT "Aus-Helligkeit"
-#define TR_BLCOLOR INDENT "Farbe"
+#define TR_BLONBRIGHTNESS "An-Helligkeit"
+#define TR_BLOFFBRIGHTNESS "Aus-Helligkeit"
+#define TR_BLCOLOR "Farbe"
#define TR_SPLASHSCREEN TR("Startbild Ein", "Startbild Anzeigedauer")
#define TR_PWR_ON_DELAY "Pwr On delay"
#define TR_PWR_OFF_DELAY "Pwr Off delay"
-#define TR_THROTTLEWARNING TR("Gasalarm", INDENT "Gas Alarm")
+#define TR_THROTTLE_WARNING TR("Gasalarm", INDENT "Gas Alarm")
#define TR_SWITCHWARNING TR("Sch. Alarm", INDENT "Schalter-Alarm")
#define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders")
#define TR_SLIDERWARNING TR(INDENT "Slid. pos.", INDENT "Slider positions")
#define TR_POTWARNING TR("Potiwarnung", INDENT "Poti-Warnung")
#define TR_TIMEZONE TR("Zeitzone", "GPS-Zeitzone +/-Std")
-#define TR_ADJUST_RTC TR("GPSzeit setzen", INDENT "Uhrzeit per GPS setzen")
+#define TR_ADJUST_RTC TR("GPSzeit setzen", "Uhrzeit per GPS setzen")
#define TR_GPS "GPS"
#define TR_RXCHANNELORD TR("Kanal CH1-4", "Kanalvoreinstellung")
#define TR_STICKS "Knüppel"
@@ -575,7 +573,6 @@
#define OFS_RX 4
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER"Keine Daten"
-#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036GAS\037\146GS%"
#define TR_US "us"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us"
#define TR_TMIXMAXMS "Tmix max"
@@ -587,9 +584,8 @@
#define TR_FM "FP"
#define TR_MIX "MIX"
#define TR_EEPROMLOWMEM "EEPROM voll"
-#define TR_ALERT "WARNUNG"
-#define TR_PRESSANYKEYTOSKIP TR("Taste drücken",CENTER"Taste drücken")
-#define TR_THROTTLENOTIDLE "Gas nicht Null!"
+#define TR_PRESS_ANY_KEY_TO_SKIP TR("Taste drücken",CENTER"Taste drücken")
+#define TR_THROTTLE_NOT_IDLE "Gas nicht Null!"
#define TR_ALARMSDISABLED "Alarme ausgeschaltet"
#define TR_PRESSANYKEY TR("Taste drücken",CENTER"Taste drücken")
#define TR_BADEEPROMDATA "EEPROM ungültig"
@@ -597,7 +593,7 @@
#define TR_EEPROMFORMATTING "EEPROM Initialisieren"
#define TR_STORAGE_FORMAT "Speicher Vorbereiten" //
#define TR_EEPROMOVERFLOW "EEPROM Überlauf"
-#define TR_MENURADIOSETUP TR("SENDER-EINSTELLEN", "SENDER-GRUNDEINSTELLUNGEN")
+#define TR_RADIO_SETUP TR("SENDER-EINSTELLEN", "SENDER-GRUNDEINSTELLUNGEN")
#define TR_MENUDATEANDTIME "DATUM UND ZEIT"
#define TR_MENUTRAINER TR("LEHRER/SCHÜLER", "LEHRER/SCHÜLER")
#define TR_MENUSPECIALFUNCS "GLOBALE FUNKTIONEN"
@@ -613,7 +609,7 @@
#define TR_CHANNELS2FAILSAFE "Channels=>Failsafe"
#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe"
#define TR_MENUMODELSEL TR("MODELLE", "MODELL WÄHLEN")
-#define TR_MENUSETUP TR("MODELL-EINSTELLUNG", "MODELL-EINSTELLUNGEN")
+#define TR_MENU_MODEL_SETUP TR("MODELL-EINSTELLUNG", "MODELL-EINSTELLUNGEN")
#define TR_MENUFLIGHTMODE "FLUGPHASE"
#define TR_MENUFLIGHTMODES "FLUGPHASEN"
#define TR_MENUHELISETUP TR("HELI TS-Mischer", "HELI TS-Mischer CYC1-3")
@@ -642,7 +638,7 @@
#define TR_MULTI_RFTUNE TR(INDENT "RF Freq.", INDENT "RF Freq. Feintuning")
#define TR_MULTI_TELEMETRY "Telemetry"
#define TR_MULTI_VIDFREQ TR(INDENT "Vid. Freq.", INDENT "Video Frequenz")
-#define TR_RFPOWER INDENT "RF Power"
+#define TR_RF_POWER INDENT "RF Power"
#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID")
#define TR_MULTI_OPTION TR(INDENT "Option", INDENT "Optionswert")
#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on channel")
@@ -672,14 +668,13 @@
#define TR_MINRSSI "Min. RSSI"
#define TR_LATITUDE "Breite:"
#define TR_LONGITUDE "Länge:"
-#define TR_GPSCOORD TR("GPS-Koord.", "GPS-Koordinaten-Format")
+#define TR_GPS_COORDS_FORMAT TR("GPS-Koord.", "GPS-Koordinaten-Format")
#define TR_VARIO "Variometer"
-#define TR_PITCH_AT_ZERO INDENT "Töne sinken"
-#define TR_PITCH_AT_MAX INDENT "Töne steigen"
-#define TR_REPEAT_AT_ZERO INDENT "Wiederholrate"
-#define TR_POWEROFF "\027Power OFF..."
+#define TR_PITCH_AT_ZERO "Töne sinken"
+#define TR_PITCH_AT_MAX "Töne steigen"
+#define TR_REPEAT_AT_ZERO "Wiederholrate"
#define TR_SHUTDOWN "Herunterfahren"
-#define TR_SAVEMODEL "Modelleinstellungen speichern"
+#define TR_SAVE_MODEL "Modelleinstellungen speichern"
#define TR_BATT_CALIB TR("AkkuSpgwert", "Akku Kalibrierung")
#define TR_CURRENT_CALIB "Strom abgl."
#define TR_VOLTAGE TR(INDENT "Spg", INDENT "Spannungsquelle") //9XR-Pro
@@ -736,7 +731,7 @@
#define TR_EEPROMWARN "EEPROM"
#define TR_STORAGE_WARNING "SPEICHER"
#define TR_EEPROM_CONVERTING "EEPROM Konvertierung"
-#define TR_THROTTLEWARN "GAS"
+#define TR_THROTTLE_UPPERCASE "GAS"
#define TR_ALARMSWARN "ALARM"
#define TR_SWITCHWARN "SCHALTER"
#define TR_FAILSAFEWARN "FAILSAFE"
@@ -751,9 +746,9 @@
#define TR_NO_FAILSAFE TR("Failsafe not set", "Failsafe nicht programmiert")
#define TR_KEYSTUCK "Taste klemmt" //Key stuck=Taste klemmt
#define TR_INVERT_THR TR("Gas umkehren?", "Vollgas hinten?") // Th9x 9XR
-#define TR_SPEAKER_VOLUME INDENT "Lautstärke"
+#define TR_VOLUME "Lautstärke"
#define TR_LCD "Bildschirm"
-#define TR_BRIGHTNESS INDENT "Helligkeit"
+#define TR_BRIGHTNESS "Helligkeit"
#define TR_CPU_TEMP "CPU-Temp.\016>"
#define TR_CPU_CURRENT "Strom\022>"
#define TR_CPU_MAH "Verbrauch"
@@ -864,11 +859,11 @@
#define TR_MENU_SPECTRUM_ANALYSER "SPECTRUM ANALYSER"
#define TR_MENU_POWER_METER "POWER METER"
#define TR_SENSOR "SENSOR"
-#define TR_COUNTRYCODE "Landescode"
+#define TR_COUNTRY_CODE "Landescode"
#define TR_USBMODE "USB Modus"
-#define TR_JACKMODE "Jack Mode"
-#define TR_VOICELANG "Sprachansagen"
-#define TR_UNITSSYSTEM "Einheiten"
+#define TR_JACK_MODE "Jack Mode"
+#define TR_VOICE_LANGUAGE "Sprachansagen"
+#define TR_UNITS_SYSTEM "Einheiten"
#define TR_EDIT "Zeile Editieren"
#define TR_INSERT_BEFORE "Neue Zeile davor"
#define TR_INSERT_AFTER "Neue Zeile danach"
@@ -1144,7 +1139,7 @@
#define TR_SETUP "Setup"
#define TR_MAINVIEWX "Ansicht X"
#define TR_LAYOUT "Layout"
-#define TR_ADDMAINVIEW "Ansicht hinzufügen"
+#define TR_ADD_MAIN_VIEW "Ansicht hinzufügen"
#define TR_BACKGROUND_COLOR "Hintergrundfarbe"
#define TR_MAIN_COLOR "Hauptfarbe"
#define TR_TEXT_VIEWER "Text Viewer"
diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt
index f3af747ff..6f28a99ff 100644
--- a/radio/src/translations/en.h.txt
+++ b/radio/src/translations/en.h.txt
@@ -86,14 +86,14 @@
#define LEN_VPERSISTENT "\014"
#define TR_VPERSISTENT "OFF\0 ""Flight\0 ""Manual Reset"
-#define LEN_COUNTRYCODES TR("\002", "\007")
-#define TR_COUNTRYCODES TR("US""JP""EU", "America""Japan\0 ""Europe\0")
+#define LEN_COUNTRY_CODES TR("\002", "\007")
+#define TR_COUNTRY_CODES TR("US""JP""EU", "America""Japan\0 ""Europe\0")
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Serial", "Ask\0 ""Joystick""Storage\0""Serial\0 ")
-#define LEN_JACKMODES "\007"
-#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
+#define LEN_JACK_MODES "\007"
+#define TR_JACK_MODES "Ask\0 ""Audio\0 ""Trainer"
#define LEN_TELEMETRY_PROTOCOLS "\017"
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry"
@@ -314,18 +314,18 @@
#define LEN_VSWITCHES "\003"
#define LEN_VSRCRAW "\004"
-#define TR_STICKS_VSRCRAW "\307Rud""\307Ele""\307Thr""\307Ail"
+#define TR_STICKS_VSRCRAW "\207Rud""\207Ele""\207Thr""\207Ail"
#if defined(PCBHORUS)
- #define TR_TRIMS_VSRCRAW "\313Rud""\313Ele""\313Thr""\313Ail""\313T5\0""\313T6\0"
+ #define TR_TRIMS_VSRCRAW "\213Rud""\213Ele""\213Thr""\213Ail""\213T5\0""\213T6\0"
#else
- #define TR_TRIMS_VSRCRAW "\313Rud""\313Ele""\313Thr""\313Ail"
+ #define TR_TRIMS_VSRCRAW "\213Rud""\213Ele""\213Thr""\213Ail"
#endif
#if defined(PCBHORUS)
- #define TR_TRIMS_SWITCHES "\313Rl""\313Rr""\313Ed""\313Eu""\313Td""\313Tu""\313Al""\313Ar""\3135d""\3135u""\3136d""\3136u"
+ #define TR_TRIMS_SWITCHES "\213Rl""\213Rr""\213Ed""\213Eu""\213Td""\213Tu""\213Al""\213Ar""\2135d""\2135u""\2136d""\2136u"
#else
- #define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", "\313Rl""\313Rr""\313Ed""\313Eu""\313Td""\313Tu""\313Al""\313Ar")
+ #define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", "\213Rl""\213Rr""\213Ed""\213Eu""\213Td""\213Tu""\213Al""\213Ar")
#endif
#if defined(PCBSKY9X)
@@ -367,7 +367,6 @@
#define LEN_VFAILSAFE "\011"
#define TR_VFAILSAFE "Not set\0 ""Hold\0 ""Custom\0 ""No pulses""Receiver\0"
-
#define LEN_VSENSORTYPES "\012"
#define TR_VSENSORTYPES "Custom\0 ""Calculated"
@@ -494,27 +493,27 @@
#define TR_RANGE INDENT "Range"
#define TR_CENTER INDENT "Center"
#define TR_BAR "Bar"
-#define TR_ALARM INDENT "Alarm"
+#define TR_ALARM "Alarm"
#define TR_USRDATA TR("UsrData", "User data")
-#define TR_BLADES INDENT "Blades/Poles"
+#define TR_BLADES "Blades/Poles"
#define TR_SCREEN "Screen\001"
#define TR_SOUND_LABEL "Sound"
-#define TR_LENGTH INDENT "Length"
-#define TR_BEEP_LENGTH INDENT "Beep length"
-#define TR_SPKRPITCH INDENT "Beep pitch"
+#define TR_LENGTH "Length"
+#define TR_BEEP_LENGTH "Beep length"
+#define TR_BEEP_PITCH "Beep pitch"
#define TR_HAPTIC_LABEL "Haptic"
-#define TR_HAPTICSTRENGTH INDENT "Strength"
+#define TR_STRENGTH "Strength"
#define TR_GYRO_LABEL "Gyro"
#define TR_GYRO_OFFSET "Offset"
#define TR_GYRO_MAX "Max"
#define TR_CONTRAST "Contrast"
#define TR_ALARMS_LABEL "Alarms"
#define TR_BATTERY_RANGE TR("Batt. range", "Battery meter range")
-#define TR_BATTERYWARNING INDENT "Battery low"
-#define TR_INACTIVITYALARM INDENT "Inactivity"
-#define TR_MEMORYWARNING INDENT "Memory low"
-#define TR_ALARMWARNING INDENT "Sound off"
-#define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi Shutdown", INDENT "Check Rssi on Shutdown")
+#define TR_BATTERYWARNING "Battery low"
+#define TR_INACTIVITYALARM "Inactivity"
+#define TR_MEMORYWARNING "Memory low"
+#define TR_ALARMWARNING "Sound off"
+#define TR_RSSI_SHUTDOWN_ALARM TR("RSSI shutdown", "Check RSSI on shutdown")
#define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_MODEL_SHUTDOWN "Shutdown ?"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
@@ -525,21 +524,19 @@
#define TR_BEEPCOUNTDOWN INDENT "Countdown"
#define TR_PERSISTENT TR(INDENT "Persist.", INDENT "Persistent")
#define TR_BACKLIGHT_LABEL "Backlight"
-#define TR_BLDELAY INDENT "Duration"
-#define TR_BL_MODE_DUR INDENT "Mode-Duration"
-#define TR_BLONBRIGHTNESS INDENT "ON brightness"
-#define TR_BLOFFBRIGHTNESS INDENT "OFF brightness"
-#define TR_BLCOLOR INDENT "Color"
+#define TR_BLONBRIGHTNESS "ON brightness"
+#define TR_BLOFFBRIGHTNESS "OFF brightness"
+#define TR_BLCOLOR "Color"
#define TR_SPLASHSCREEN "Splash screen"
#define TR_PWR_ON_DELAY "Pwr On delay"
#define TR_PWR_OFF_DELAY "Pwr Off delay"
-#define TR_THROTTLEWARNING TR(INDENT "T-Warning", INDENT "Throttle state")
+#define TR_THROTTLE_WARNING TR(INDENT "T-Warning", INDENT "Throttle state")
#define TR_SWITCHWARNING TR(INDENT "S-Warning", INDENT "Switch positions")
#define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders")
#define TR_SLIDERWARNING TR(INDENT "Slid. pos.", INDENT "Slider positions")
#define TR_POTWARNING TR(INDENT "Pot warn.", INDENT "Pot positions")
-#define TR_TIMEZONE TR("Time Zone", INDENT "Time zone")
-#define TR_ADJUST_RTC TR("Adjust RTC", INDENT "Adjust RTC")
+#define TR_TIMEZONE "Time zone"
+#define TR_ADJUST_RTC "Adjust RTC"
#define TR_GPS "GPS"
#define TR_RXCHANNELORD TR("Rx channel ord", "Default channel order")
#define TR_STICKS "Sticks"
@@ -553,7 +550,7 @@
#define TR_CALIBRATION "Calibration"
#define TR_VTRIM "Trim- +"
#define TR_BG "BG:"
-#define TR_CALIB_DONE "Calibration completed"
+#define TR_CALIB_DONE "Calibration completed"
#if defined(PCBHORUS)
#define TR_MENUTOSTART "Press [Enter] to start"
#define TR_SETMIDPOINT "Center sticks/pots/sliders and press [Enter]"
@@ -573,11 +570,10 @@
#define OFS_RX 4
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "NO DATA"
-#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036THR\037\146TH%"
-#define TR_US "us"
+#define TR_US "us"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us"
-#define TR_TMIXMAXMS "Tmix max"
-#define TR_FREE_STACK "Free stack"
+#define TR_TMIXMAXMS "Tmix max"
+#define TR_FREE_STACK "Free stack"
#define TR_MENUTORESET TR_ENTER " to reset"
#define TR_PPM_TRAINER "TR"
#define TR_CH "CH"
@@ -585,9 +581,8 @@
#define TR_FM "FM"
#define TR_MIX "MIX"
#define TR_EEPROMLOWMEM "EEPROM low mem"
-#define TR_ALERT "\016ALERT"
-#define TR_PRESSANYKEYTOSKIP "Press any key to skip"
-#define TR_THROTTLENOTIDLE "Throttle not idle"
+#define TR_PRESS_ANY_KEY_TO_SKIP "Press any key to skip"
+#define TR_THROTTLE_NOT_IDLE "Throttle not idle"
#define TR_ALARMSDISABLED "Alarms disabled"
#define TR_PRESSANYKEY TR("\010Press any Key", "Press any key")
#define TR_BADEEPROMDATA "Bad EEprom data"
@@ -595,7 +590,7 @@
#define TR_EEPROMFORMATTING "Formatting EEPROM"
#define TR_STORAGE_FORMAT "Storage preparation"
#define TR_EEPROMOVERFLOW "EEPROM overflow"
-#define TR_MENURADIOSETUP "RADIO SETUP"
+#define TR_RADIO_SETUP "RADIO SETUP"
#define TR_MENUDATEANDTIME "DATE AND TIME"
#define TR_MENUTRAINER "TRAINER"
#define TR_MENUSPECIALFUNCS "GLOBAL FUNCTIONS"
@@ -611,7 +606,7 @@
#define TR_CHANNELS2FAILSAFE "Channels=>Failsafe"
#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe"
#define TR_MENUMODELSEL TR("MODELSEL", "MODEL SELECTION")
-#define TR_MENUSETUP TR("SETUP", "MODEL SETUP")
+#define TR_MENU_MODEL_SETUP TR("SETUP", "MODEL SETUP")
#define TR_MENUFLIGHTMODES "FLIGHT MODES"
#define TR_MENUFLIGHTMODE "FLIGHT MODE"
#define TR_MENUHELISETUP "HELI SETUP"
@@ -640,7 +635,7 @@
#define TR_MULTI_RFTUNE TR("Freq tune", "RF Freq. fine tune")
#define TR_MULTI_TELEMETRY "Telemetry"
#define TR_MULTI_VIDFREQ TR("Vid. freq.", "Video frequency")
-#define TR_RFPOWER "RF Power"
+#define TR_RF_POWER "RF Power"
#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID")
#define TR_MULTI_OPTION TR("Option", "Option value")
#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on channel")
@@ -671,14 +666,13 @@
#define TR_FLYSKY_TELEMETRY TR("FlySky RSSI #", "Use FlySky RSSI value without rescalling")
#define TR_LATITUDE "Latitude"
#define TR_LONGITUDE "Longitude"
-#define TR_GPSCOORD TR("GPS Coords", INDENT "Coordinate format")
+#define TR_GPS_COORDS_FORMAT TR("GPS Coords", "Coordinate format")
#define TR_VARIO TR("Vario", "Variometer")
-#define TR_PITCH_AT_ZERO INDENT "Pitch zero"
-#define TR_PITCH_AT_MAX INDENT "Pitch max"
-#define TR_REPEAT_AT_ZERO INDENT "Repeat zero"
-#define TR_POWEROFF "\027Power OFF..."
+#define TR_PITCH_AT_ZERO "Pitch zero"
+#define TR_PITCH_AT_MAX "Pitch max"
+#define TR_REPEAT_AT_ZERO "Repeat zero"
#define TR_SHUTDOWN "SHUTTING DOWN"
-#define TR_SAVEMODEL "Saving model settings"
+#define TR_SAVE_MODEL "Saving model settings"
#define TR_BATT_CALIB TR("Batt. calib", "Battery calibration")
#define TR_CURRENT_CALIB "Current calib"
#define TR_VOLTAGE TR(INDENT "Voltage", INDENT "Voltage source")
@@ -735,13 +729,13 @@
#define TR_EEPROMWARN "EEPROM"
#define TR_STORAGE_WARNING "STORAGE"
#define TR_EEPROM_CONVERTING "Converting EEPROM"
-#define TR_THROTTLEWARN "THROTTLE"
+#define TR_THROTTLE_UPPERCASE "THROTTLE"
#define TR_ALARMSWARN "ALARMS"
#define TR_SWITCHWARN TR("SWITCH", "CONTROL")
#define TR_FAILSAFEWARN "FAILSAFE"
#define TR_NIGHTLY_WARNING TR("NIGHTLY", "NIGHTLY BUILD")
#define TR_NIGHTLY_NOTSAFE "Version not safe to fly"
-#define TR_WRONG_SDCARDVERSION TR("Expected ver: ","Expected version: ")
+#define TR_WRONG_SDCARDVERSION TR("Expected ver: ", "Expected version: ")
#define TR_WARN_RTC_BATTERY_LOW "RTC Battery low"
#define TR_BATTERY "BATTERY"
#define TR_WRONG_PCBREV "Wrong PCB detected"
@@ -750,9 +744,9 @@
#define TR_NO_FAILSAFE "Failsafe not set"
#define TR_KEYSTUCK "Key stuck"
#define TR_INVERT_THR TR("Invert thr?", "Invert throttle?")
-#define TR_SPEAKER_VOLUME INDENT "Volume" // TODO could be TR_VOLUME ?
+#define TR_VOLUME "Volume"
#define TR_LCD "LCD"
-#define TR_BRIGHTNESS INDENT "Brightness"
+#define TR_BRIGHTNESS "Brightness"
#define TR_CPU_TEMP "CPU temp."
#define TR_CPU_CURRENT "Current"
#define TR_CPU_MAH "Consumpt."
@@ -791,7 +785,6 @@
#define TR_TEMP_CALIB "Temp. Calib"
#define TR_TIME "Time"
#define TR_MAXBAUDRATE "Max bauds"
-
#define TR_BLUETOOTH "Bluetooth"
#define TR_BLUETOOTH_DISC "Discover"
#define TR_BLUETOOTH_INIT "Init"
@@ -864,19 +857,19 @@
#define TR_MENU_SPECTRUM_ANALYSER "SPECTRUM ANALYSER"
#define TR_MENU_POWER_METER "POWER METER"
#define TR_SENSOR "SENSOR"
-#define TR_COUNTRYCODE "Country code"
-#define TR_USBMODE "USB Mode"
-#define TR_JACKMODE "Jack Mode"
-#define TR_VOICELANG "Voice language"
-#define TR_UNITSSYSTEM "Units"
+#define TR_COUNTRY_CODE "Country code"
+#define TR_USBMODE "USB mode"
+#define TR_JACK_MODE "Jack mode"
+#define TR_VOICE_LANGUAGE "Voice language"
+#define TR_UNITS_SYSTEM "Units"
#define TR_EDIT "Edit"
-#define TR_INSERT_BEFORE "Insert Before"
-#define TR_INSERT_AFTER "Insert After"
+#define TR_INSERT_BEFORE "Insert before"
+#define TR_INSERT_AFTER "Insert after"
#define TR_COPY "Copy"
#define TR_MOVE "Move"
#define TR_PASTE "Paste"
-#define TR_PASTE_AFTER "Paste After"
-#define TR_PASTE_BEFORE "Paste Before"
+#define TR_PASTE_AFTER "Paste after"
+#define TR_PASTE_BEFORE "Paste before"
#define TR_DELETE "Delete"
#define TR_INSERT "Insert"
#define TR_RESET_FLIGHT "Reset flight"
@@ -917,7 +910,6 @@
#define TR_DEBUG "Debug"
#define TR_KEYS_BTN BUTTON(TR("Keys", "Switches"))
#define TR_ANALOGS_BTN BUTTON(TR("Anas", "Analogs"))
-#define TR_CALIBRATION "Calibration"
#define TR_SET BUTTON("Set")
#define TR_TRAINER "Trainer"
#define TR_ANTENNAPROBLEM CENTER "TX antenna problem!"
@@ -1094,7 +1086,7 @@
#define TR_BEEP_VOLUME "Beep volume"
#define TR_WAV_VOLUME "Wav volume"
-#define TR_BG_VOLUME TR("Bg volume", "Background Volume")
+#define TR_BG_VOLUME TR("Bg volume", "Background volume")
#define TR_TOP_BAR "Top bar"
#define TR_FLASH_ERASE "Flash erase..."
@@ -1147,24 +1139,23 @@
#define TR_SETUP "Setup"
#define TR_MAINVIEWX "Main view X"
#define TR_LAYOUT "Layout"
-#define TR_ADDMAINVIEW "Add main view"
+#define TR_ADD_MAIN_VIEW "Add main view"
#define TR_BACKGROUND_COLOR "Background color"
#define TR_MAIN_COLOR "Main color"
#define TR_TEXT_VIEWER "Text Viewer"
-
-#define TR_MENU_INPUTS "\314Inputs"
-#define TR_MENU_LUA "\322Lua scripts"
-#define TR_MENU_STICKS "\307Sticks"
-#define TR_MENU_POTS "\310Pots"
-#define TR_MENU_MAX "\315MAX"
-#define TR_MENU_HELI "\316Cyclic"
-#define TR_MENU_TRIMS "\313Trims"
-#define TR_MENU_SWITCHES "\312Switches"
-#define TR_MENU_LOGICAL_SWITCHES "\312Logical switches"
-#define TR_MENU_TRAINER "\317Trainer"
-#define TR_MENU_CHANNELS "\320Channels"
-#define TR_MENU_GVARS "\311GVars"
-#define TR_MENU_TELEMETRY "\321Telemetry"
+#define TR_MENU_INPUTS "\214Inputs"
+#define TR_MENU_LUA "\222Lua scripts"
+#define TR_MENU_STICKS "\207Sticks"
+#define TR_MENU_POTS "\210Pots"
+#define TR_MENU_MAX "\215MAX"
+#define TR_MENU_HELI "\216Cyclic"
+#define TR_MENU_TRIMS "\213Trims"
+#define TR_MENU_SWITCHES "\212Switches"
+#define TR_MENU_LOGICAL_SWITCHES "\212Logical switches"
+#define TR_MENU_TRAINER "\217Trainer"
+#define TR_MENU_CHANNELS "\220Channels"
+#define TR_MENU_GVARS "\211GVars"
+#define TR_MENU_TELEMETRY "\221Telemetry"
#define TR_MENU_DISPLAY "DISPLAY"
#define TR_MENU_OTHER "Other"
#define TR_MENU_INVERT "Invert"
diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt
index 2938d8ff8..8e2bf2647 100644
--- a/radio/src/translations/es.h.txt
+++ b/radio/src/translations/es.h.txt
@@ -86,14 +86,14 @@
#define LEN_VPERSISTENT "\014"
#define TR_VPERSISTENT "OFF\0 ""Flight\0 ""Manual Reset"
-#define LEN_COUNTRYCODES TR("\002", "\007")
-#define TR_COUNTRYCODES TR("US""JP""EU", "America""Japon\0 ""Europa\0")
+#define LEN_COUNTRY_CODES TR("\002", "\007")
+#define TR_COUNTRY_CODES TR("US""JP""EU", "America""Japon\0 ""Europa\0")
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Serial", "Ask\0 ""Joystick""Storage\0""Serial\0 ")
-#define LEN_JACKMODES "\007"
-#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
+#define LEN_JACK_MODES "\007"
+#define TR_JACK_MODES "Ask\0 ""Audio\0 ""Trainer"
#define LEN_TELEMETRY_PROTOCOLS "\017"
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry"
@@ -514,27 +514,27 @@
#define TR_RANGE INDENT"Alcance"
#define TR_CENTER INDENT "Center"
#define TR_BAR "Bar"
-#define TR_ALARM INDENT"Alarma"
+#define TR_ALARM "Alarma"
#define TR_USRDATA "UsrData"
-#define TR_BLADES INDENT"Palas"
+#define TR_BLADES "Palas"
#define TR_SCREEN "Pantalla"
#define TR_SOUND_LABEL "Sonido"
-#define TR_LENGTH INDENT"Longitud"
-#define TR_BEEP_LENGTH INDENT "Beep Length"
-#define TR_SPKRPITCH INDENT"Tono"
+#define TR_LENGTH "Longitud"
+#define TR_BEEP_LENGTH "Beep Length"
+#define TR_BEEP_PITCH "Tono"
#define TR_HAPTIC_LABEL "Tactil"
-#define TR_HAPTICSTRENGTH INDENT"Intensidad"
+#define TR_STRENGTH "Intensidad"
#define TR_GYRO_LABEL "Gyro"
#define TR_GYRO_OFFSET "Offset"
#define TR_GYRO_MAX "Max"
#define TR_CONTRAST "Contraste"
#define TR_ALARMS_LABEL "Alarmas"
#define TR_BATTERY_RANGE TR("Rango bateria","Rango medidor Bater")
-#define TR_BATTERYWARNING INDENT"Bateria Baja"
-#define TR_INACTIVITYALARM INDENT"Inactividad"
-#define TR_MEMORYWARNING INDENT"Memoria Baja"
-#define TR_ALARMWARNING INDENT"Sin Sonido"
-#define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi Shutdown", INDENT "Check Rssi on Shutdown")
+#define TR_BATTERYWARNING "Bateria Baja"
+#define TR_INACTIVITYALARM "Inactividad"
+#define TR_MEMORYWARNING "Memoria Baja"
+#define TR_ALARMWARNING "Sin Sonido"
+#define TR_RSSI_SHUTDOWN_ALARM TR("Rssi Shutdown", "Check Rssi on Shutdown")
#define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_MODEL_SHUTDOWN "Shutdown ?"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
@@ -545,21 +545,19 @@
#define TR_BEEPCOUNTDOWN INDENT"Cuentaatras"
#define TR_PERSISTENT TR(INDENT"Persist.", INDENT"Persistente")
#define TR_BACKLIGHT_LABEL "Luz Fondo"
-#define TR_BLDELAY INDENT"Duracion"
-#define TR_BL_MODE_DUR INDENT "Mode-Duration"
-#define TR_BLONBRIGHTNESS INDENT"MAS Brillo"
-#define TR_BLOFFBRIGHTNESS INDENT"MENOS Brillo"
-#define TR_BLCOLOR INDENT "Color"
+#define TR_BLONBRIGHTNESS "MAS Brillo"
+#define TR_BLOFFBRIGHTNESS "MENOS Brillo"
+#define TR_BLCOLOR "Color"
#define TR_SPLASHSCREEN "Ptalla.inicio"
#define TR_PWR_ON_DELAY "Pwr On delay"
#define TR_PWR_OFF_DELAY "Pwr Off delay"
-#define TR_THROTTLEWARNING TR("Aviso-A", INDENT "Aviso Acelerador")
+#define TR_THROTTLE_WARNING TR("Aviso-A", INDENT "Aviso Acelerador")
#define TR_SWITCHWARNING TR("Aviso-I", INDENT "Aviso Intrptor")
#define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders")
#define TR_SLIDERWARNING TR(INDENT "Slid. pos.", INDENT "Slider positions")
#define TR_POTWARNING TR("Pot Warn.", INDENT "Pot Warning")
#define TR_TIMEZONE TR("Zona Hora", "GPS Zona Hora")
-#define TR_ADJUST_RTC TR("Adjust RTC", INDENT "Adjust RTC")
+#define TR_ADJUST_RTC TR("Adjust RTC", "Adjust RTC")
#define TR_GPS "GPS"
#define TR_RXCHANNELORD TR("Rx Orden canal", "Orden habitual canales")
#define TR_STICKS "Sticks"
@@ -588,7 +586,6 @@
#define OFS_RX 4
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "SIN DATOS"
-#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036THR\037\146TH%"
#define TR_US "us"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us"
#define TR_TMIXMAXMS "Tmix max"
@@ -600,9 +597,8 @@
#define TR_FM "FM"
#define TR_MIX "MIX"
#define TR_EEPROMLOWMEM "EEPROM mem.baja"
-#define TR_ALERT "\016ALERTA"
-#define TR_PRESSANYKEYTOSKIP "Pulsar tecla omitir"
-#define TR_THROTTLENOTIDLE "Aceler. Activado"
+#define TR_PRESS_ANY_KEY_TO_SKIP "Pulsar tecla omitir"
+#define TR_THROTTLE_NOT_IDLE "Aceler. Activado"
#define TR_ALARMSDISABLED "Alarmas Desact."
#define TR_PRESSANYKEY TR("\010Pulsa una Tecla", "Pulsa una Tecla")
#define TR_BADEEPROMDATA "Datos EEprom mal"
@@ -610,7 +606,7 @@
#define TR_EEPROMFORMATTING "Formateo EEPROM"
#define TR_STORAGE_FORMAT "Storage Preparation"
#define TR_EEPROMOVERFLOW "Desborde EEPROM"
-#define TR_MENURADIOSETUP "CONFIGURACION"
+#define TR_RADIO_SETUP "CONFIGURACION"
#define TR_MENUDATEANDTIME "FECHA Y HORA"
#define TR_MENUTRAINER "APRENDIZ"
#define TR_MENUSPECIALFUNCS "GLOBAL FUNCTIONS"
@@ -626,7 +622,7 @@
#define TR_CHANNELS2FAILSAFE "Channels=>Failsafe"
#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe"
#define TR_MENUMODELSEL TR("MODELSEL", "SELECCION MODELO")
-#define TR_MENUSETUP TR("CONF.", "CONF.MODELO")
+#define TR_MENU_MODEL_SETUP TR("CONF.", "CONF.MODELO")
#define TR_MENUFLIGHTMODE "MODO VUELO"
#define TR_MENUFLIGHTMODES "MODOS VUELO"
#define TR_MENUHELISETUP "CONF. HELI"
@@ -664,7 +660,7 @@
#define TR_MULTI_RFTUNE TR("Freq tune", "RF Freq. fine tune")
#define TR_MULTI_TELEMETRY "Telemetry"
#define TR_MULTI_VIDFREQ TR("Vid. freq.", "Video frequency")
-#define TR_RFPOWER "RF Power"
+#define TR_RF_POWER "RF Power"
#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID")
#define TR_MULTI_OPTION TR("Option", "Option value")
#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on channel")
@@ -695,14 +691,13 @@
#define TR_FLYSKY_TELEMETRY TR("FlySky RSSI #", "Use FlySky RSSI value without rescalling")
#define TR_LATITUDE "Latitud"
#define TR_LONGITUDE "Longitud"
-#define TR_GPSCOORD TR("GPS Coords", "GPS formato coordenadas")
+#define TR_GPS_COORDS_FORMAT TR("GPS Coords", "GPS formato coordenadas")
#define TR_VARIO TR("Vario", "Variometro")
-#define TR_PITCH_AT_ZERO INDENT "Pitch at Zero"
-#define TR_PITCH_AT_MAX INDENT "Pitch at Max"
-#define TR_REPEAT_AT_ZERO INDENT "Repeat at Zero"
-#define TR_POWEROFF "\027Power OFF..."
+#define TR_PITCH_AT_ZERO "Pitch at Zero"
+#define TR_PITCH_AT_MAX "Pitch at Max"
+#define TR_REPEAT_AT_ZERO "Repeat at Zero"
#define TR_SHUTDOWN "APAGANDO"
-#define TR_SAVEMODEL "Saving model settings"
+#define TR_SAVE_MODEL "Saving model settings"
#define TR_BATT_CALIB "Calib.bateria"
#define TR_CURRENT_CALIB "Calib. actual"
#define TR_VOLTAGE INDENT"Voltaje"
@@ -759,7 +754,7 @@
#define TR_EEPROMWARN "EEPROM"
#define TR_STORAGE_WARNING "STORAGE"
#define TR_EEPROM_CONVERTING "EEPROM Converting"
-#define TR_THROTTLEWARN "ACELERADOR"
+#define TR_THROTTLE_UPPERCASE "ACELERADOR"
#define TR_ALARMSWARN "ALARMAS"
#define TR_SWITCHWARN "INTERPTOR"
#define TR_FAILSAFEWARN "FAILSAFE"
@@ -774,9 +769,9 @@
#define TR_NO_FAILSAFE "Failsafe not set"
#define TR_KEYSTUCK "Key stuck"
#define TR_INVERT_THR TR("Invertir Acel?", "Invertir Acel.?")
-#define TR_SPEAKER_VOLUME INDENT "Volumen"
+#define TR_VOLUME "Volumen"
#define TR_LCD "LCD"
-#define TR_BRIGHTNESS INDENT "Brillo"
+#define TR_BRIGHTNESS "Brillo"
#define TR_CPU_TEMP "CPU Temp.\016>"
#define TR_CPU_CURRENT "Actual\022>"
#define TR_CPU_MAH "Consumo"
@@ -887,11 +882,11 @@
#define TR_MENU_SPECTRUM_ANALYSER "SPECTRUM ANALYSER"
#define TR_MENU_POWER_METER "POWER METER"
#define TR_SENSOR "SENSOR"
-#define TR_COUNTRYCODE "Codigo Pais"
+#define TR_COUNTRY_CODE "Codigo Pais"
#define TR_USBMODE "USB Mode"
-#define TR_JACKMODE "Jack Mode"
-#define TR_VOICELANG "Idioma voces"
-#define TR_UNITSSYSTEM "Unidades"
+#define TR_JACK_MODE "Jack Mode"
+#define TR_VOICE_LANGUAGE "Idioma voces"
+#define TR_UNITS_SYSTEM "Unidades"
#define TR_EDIT "Editar"
#define TR_INSERT_BEFORE "Insertar antes"
#define TR_INSERT_AFTER "Insertar despues"
@@ -1167,7 +1162,7 @@
#define TR_SETUP "Setup"
#define TR_MAINVIEWX "Main view X"
#define TR_LAYOUT "Layout"
-#define TR_ADDMAINVIEW "Add main view"
+#define TR_ADD_MAIN_VIEW "Add main view"
#define TR_BACKGROUND_COLOR "Background color"
#define TR_MAIN_COLOR "Main color"
#define TR_TEXT_VIEWER "Text Viewer"
diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt
index de8f9946f..9af552a2a 100644
--- a/radio/src/translations/fi.h.txt
+++ b/radio/src/translations/fi.h.txt
@@ -86,14 +86,14 @@
#define LEN_VPERSISTENT "\014"
#define TR_VPERSISTENT "OFF\0 ""Flight\0 ""Manual Reset"
-#define LEN_COUNTRYCODES TR("\002", "\007")
-#define TR_COUNTRYCODES TR("US""JP""EU", "Amerikk""Japani\0""Euroopp")
+#define LEN_COUNTRY_CODES TR("\002", "\007")
+#define TR_COUNTRY_CODES TR("US""JP""EU", "Amerikk""Japani\0""Euroopp")
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Serial", "Ask\0 ""Joystick""Storage\0""Serial\0 ")
-#define LEN_JACKMODES "\007"
-#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
+#define LEN_JACK_MODES "\007"
+#define TR_JACK_MODES "Ask\0 ""Audio\0 ""Trainer"
#define LEN_TELEMETRY_PROTOCOLS "\017"
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry"
@@ -506,27 +506,27 @@
#define TR_RANGE INDENT"Range"
#define TR_CENTER INDENT "Center"
#define TR_BAR "Bar"
-#define TR_ALARM INDENT"Alarm"
+#define TR_ALARM "Alarm"
#define TR_USRDATA "UsrData"
-#define TR_BLADES INDENT"Blades/Poles"
+#define TR_BLADES "Blades/Poles"
#define TR_SCREEN "Screen "
#define TR_SOUND_LABEL "Sound"
-#define TR_LENGTH INDENT"Length"
-#define TR_BEEP_LENGTH INDENT "Beep Length"
-#define TR_SPKRPITCH INDENT"Pitch"
+#define TR_LENGTH "Length"
+#define TR_BEEP_LENGTH "Beep Length"
+#define TR_BEEP_PITCH "Pitch"
#define TR_HAPTIC_LABEL "Haptic"
-#define TR_HAPTICSTRENGTH INDENT"Strength"
+#define TR_STRENGTH "Strength"
#define TR_GYRO_LABEL "Gyro"
#define TR_GYRO_OFFSET "Offset"
#define TR_GYRO_MAX "Max"
#define TR_CONTRAST "Contrast"
#define TR_ALARMS_LABEL "Alarms"
#define TR_BATTERY_RANGE TR("Battery range","Battery meter range")
-#define TR_BATTERYWARNING INDENT"Battery Low"
-#define TR_INACTIVITYALARM INDENT"Inactivity"
-#define TR_MEMORYWARNING INDENT"Memory Low"
-#define TR_ALARMWARNING INDENT"Sound Off"
-#define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi Shutdown", INDENT "Check Rssi on Shutdown")
+#define TR_BATTERYWARNING "Battery Low"
+#define TR_INACTIVITYALARM "Inactivity"
+#define TR_MEMORYWARNING "Memory Low"
+#define TR_ALARMWARNING "Sound Off"
+#define TR_RSSI_SHUTDOWN_ALARM TR("Rssi Shutdown", "Check Rssi on Shutdown")
#define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_MODEL_SHUTDOWN "Shutdown ?"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
@@ -537,21 +537,19 @@
#define TR_BEEPCOUNTDOWN INDENT"Countdown"
#define TR_PERSISTENT TR(INDENT"Persist.", INDENT"Persistent")
#define TR_BACKLIGHT_LABEL "Backlight"
-#define TR_BLDELAY INDENT"Duration"
-#define TR_BL_MODE_DUR INDENT "Mode-Duration"
-#define TR_BLONBRIGHTNESS INDENT"ON Brightness"
-#define TR_BLOFFBRIGHTNESS INDENT"OFF Brightness"
-#define TR_BLCOLOR INDENT "Color"
+#define TR_BLONBRIGHTNESS "ON Brightness"
+#define TR_BLOFFBRIGHTNESS "OFF Brightness"
+#define TR_BLCOLOR "Color"
#define TR_SPLASHSCREEN "Splash screen"
#define TR_PWR_ON_DELAY "Pwr On delay"
#define TR_PWR_OFF_DELAY "Pwr Off delay"
-#define TR_THROTTLEWARNING TR("T-Warning", INDENT "Throttle Warning")
+#define TR_THROTTLE_WARNING TR("T-Warning", INDENT "Throttle Warning")
#define TR_SWITCHWARNING TR("S-Warning", INDENT "Switch Warning")
#define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders")
#define TR_SLIDERWARNING TR(INDENT "Slid. pos.", INDENT "Slider positions")
#define TR_POTWARNING TR("Pot Warn.", INDENT "Pot Warning")
#define TR_TIMEZONE TR("Time Zone","GPS Time zone")
-#define TR_ADJUST_RTC TR("Adjust RTC", INDENT "Adjust RTC")
+#define TR_ADJUST_RTC TR("Adjust RTC", "Adjust RTC")
#define TR_GPS "GPS"
#define TR_RXCHANNELORD TR("Rx Channel Ord","Default channel order")
#define TR_STICKS "Sticks"
@@ -580,7 +578,6 @@
#define OFS_RX 4
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "NO DATA"
-#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036THR\037\146TH%"
#define TR_US "us"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us"
@@ -594,9 +591,8 @@
#define TR_FM "FM"
#define TR_MIX "MIX"
#define TR_EEPROMLOWMEM "FINSKA low mem"
-#define TR_ALERT "\016ALERT"
-#define TR_PRESSANYKEYTOSKIP "Press any key to skip"
-#define TR_THROTTLENOTIDLE "Throttle not idle"
+#define TR_PRESS_ANY_KEY_TO_SKIP "Press any key to skip"
+#define TR_THROTTLE_NOT_IDLE "Throttle not idle"
#define TR_ALARMSDISABLED "Alarms Disabled"
#define TR_PRESSANYKEY TR("\010Press any Key", "Press any Key")
#define TR_BADEEPROMDATA "Bad FINSKA Data"
@@ -604,7 +600,7 @@
#define TR_EEPROMFORMATTING "Formatting FINSKA"
#define TR_STORAGE_FORMAT "Storage Preparation"
#define TR_EEPROMOVERFLOW "FINSKA overflow"
-#define TR_MENURADIOSETUP "RADIO SETUP"
+#define TR_RADIO_SETUP "RADIO SETUP"
#define TR_MENUDATEANDTIME "DATE AND TIME"
#define TR_MENUTRAINER "TRAINER"
#define TR_MENUSPECIALFUNCS "GLOBAL FUNCTIONS"
@@ -620,7 +616,7 @@
#define TR_CHANNELS2FAILSAFE "Channels=>Failsafe"
#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe"
#define TR_MENUMODELSEL TR("MODELSEL","MODEL SELECTION")
-#define TR_MENUSETUP TR("SETUP","MODEL SETUP")
+#define TR_MENU_MODEL_SETUP TR("SETUP","MODEL SETUP")
#define TR_MENUFLIGHTMODE "FLIGHT MODE"
#define TR_MENUFLIGHTMODES "FLIGHT MODES"
#define TR_MENUHELISETUP "HELI SETUP"
@@ -658,7 +654,7 @@
#define TR_MULTI_RFTUNE TR("Freq tune", "RF Freq. fine tune")
#define TR_MULTI_TELEMETRY "Telemetry"
#define TR_MULTI_VIDFREQ TR("Vid. freq.", "Video frequency")
-#define TR_RFPOWER "RF Power"
+#define TR_RF_POWER "RF Power"
#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID")
#define TR_MULTI_OPTION TR("Option", "Option value")
#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on channel")
@@ -689,14 +685,13 @@
#define TR_FLYSKY_TELEMETRY TR("FlySky RSSI #", "Use FlySky RSSI value without rescalling")
#define TR_LATITUDE "Latitude"
#define TR_LONGITUDE "Longitude"
-#define TR_GPSCOORD TR("GPS Coords", "GPS coordinate format")
+#define TR_GPS_COORDS_FORMAT TR("GPS Coords", "GPS coordinate format")
#define TR_VARIO TR("Vario", "Variometer")
-#define TR_PITCH_AT_ZERO INDENT "Pitch at Zero"
-#define TR_PITCH_AT_MAX INDENT "Pitch at Max"
-#define TR_REPEAT_AT_ZERO INDENT "Repeat at Zero"
-#define TR_POWEROFF "\027Power OFF..."
+#define TR_PITCH_AT_ZERO "Pitch at Zero"
+#define TR_PITCH_AT_MAX "Pitch at Max"
+#define TR_REPEAT_AT_ZERO "Repeat at Zero"
#define TR_SHUTDOWN "SHUTTING DOWN"
-#define TR_SAVEMODEL "Saving model settings"
+#define TR_SAVE_MODEL "Saving model settings"
#define TR_BATT_CALIB "Battery Calib"
#define TR_CURRENT_CALIB "Current Calib"
#define TR_VOLTAGE INDENT"Voltage"
@@ -753,7 +748,7 @@
#define TR_EEPROMWARN "FINSKA"
#define TR_STORAGE_WARNING "STORAGE"
#define TR_EEPROM_CONVERTING "EEPROM Converting"
-#define TR_THROTTLEWARN "THROTTLE"
+#define TR_THROTTLE_UPPERCASE "THROTTLE"
#define TR_ALARMSWARN "ALARMS"
#define TR_SWITCHWARN TR("SWITCH","CONTROL")
#define TR_FAILSAFEWARN "FAILSAFE"
@@ -768,9 +763,9 @@
#define TR_NO_FAILSAFE "Failsafe not set"
#define TR_KEYSTUCK "Key stuck"
#define TR_INVERT_THR TR("Invert Thr?","Invert Throttle?")
-#define TR_SPEAKER_VOLUME INDENT "Volume"
+#define TR_VOLUME "Volume"
#define TR_LCD "LCD"
-#define TR_BRIGHTNESS INDENT "Brightness"
+#define TR_BRIGHTNESS "Brightness"
#define TR_CPU_TEMP "CPU Temp.\016>"
#define TR_CPU_CURRENT "Current\022>"
#define TR_CPU_MAH "Consumpt."
@@ -881,11 +876,11 @@
#define TR_MENU_SPECTRUM_ANALYSER "SPECTRUM ANALYSER"
#define TR_MENU_POWER_METER "POWER METER"
#define TR_SENSOR "SENSOR"
-#define TR_COUNTRYCODE "Country Code"
+#define TR_COUNTRY_CODE "Country Code"
#define TR_USBMODE "USB Mode"
-#define TR_JACKMODE "Jack Mode"
-#define TR_VOICELANG "Voice Language"
-#define TR_UNITSSYSTEM "Units"
+#define TR_JACK_MODE "Jack Mode"
+#define TR_VOICE_LANGUAGE "Voice Language"
+#define TR_UNITS_SYSTEM "Units"
#define TR_EDIT "Edit"
#define TR_INSERT_BEFORE "Insert Before"
#define TR_INSERT_AFTER "Insert After"
diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt
index 6090c4e2b..2eb724147 100644
--- a/radio/src/translations/fr.h.txt
+++ b/radio/src/translations/fr.h.txt
@@ -89,14 +89,14 @@
#define LEN_VPERSISTENT "\014"
#define TR_VPERSISTENT "OFF\0 ""Vol\0 ""Reset Manuel"
-#define LEN_COUNTRYCODES TR("\002", "\006")
-#define TR_COUNTRYCODES TR("US""JP""EU", "USA\0 ""Japon\0""Europe")
+#define LEN_COUNTRY_CODES TR("\002", "\006")
+#define TR_COUNTRY_CODES TR("US""JP""EU", "USA\0 ""Japon\0""Europe")
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Popup\0""Joyst\0""SDCard""Série\0", "Demander""Joystick""Stockage""Série\0 ")
-#define LEN_JACKMODES "\007"
-#define TR_JACKMODES "Demander""Audio\0 ""Ecolage"
+#define LEN_JACK_MODES "\007"
+#define TR_JACK_MODES "Demander""Audio\0 ""Ecolage"
#define LEN_TELEMETRY_PROTOCOLS "\017"
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry"
@@ -512,27 +512,27 @@
#define TR_RANGE INDENT "Plage"
#define TR_CENTER INDENT "Centre"
#define TR_BAR "Barre"
-#define TR_ALARM INDENT "Alarme"
+#define TR_ALARM "Alarme"
#define TR_USRDATA "Données"
-#define TR_BLADES INDENT "Pales/Poles"
+#define TR_BLADES "Pales/Poles"
#define TR_SCREEN "Ecran "
#define TR_SOUND_LABEL "Son"
-#define TR_LENGTH INDENT "Durée"
-#define TR_BEEP_LENGTH INDENT "Durée bips"
-#define TR_SPKRPITCH INDENT "Tonalité"
+#define TR_LENGTH "Durée"
+#define TR_BEEP_LENGTH "Durée bips"
+#define TR_BEEP_PITCH "Tonalité"
#define TR_HAPTIC_LABEL "Vibreur"
-#define TR_HAPTICSTRENGTH INDENT "Force"
+#define TR_STRENGTH "Force"
#define TR_GYRO_LABEL "Gyro"
#define TR_GYRO_OFFSET "Offset"
#define TR_GYRO_MAX "Max"
#define TR_CONTRAST "Contraste"
#define TR_ALARMS_LABEL "Alarmes"
#define TR_BATTERY_RANGE "Plage batterie"
-#define TR_BATTERYWARNING TR(INDENT "Batterie", INDENT "Batterie faible")
-#define TR_INACTIVITYALARM INDENT "Inactivité"
-#define TR_MEMORYWARNING INDENT "Mémoire pleine"
-#define TR_ALARMWARNING TR(INDENT "Silence", INDENT "Sons désactivés")
-#define TR_RSSISHUTDOWNALARM TR(INDENT "RSSI extinct.", INDENT "Vérif RSSI à l'extinction")
+#define TR_BATTERYWARNING TR("Batterie", "Batterie faible")
+#define TR_INACTIVITYALARM "Inactivité"
+#define TR_MEMORYWARNING "Mémoire pleine"
+#define TR_ALARMWARNING TR("Silence", "Sons désactivés")
+#define TR_RSSI_SHUTDOWN_ALARM TR("RSSI extinct.", "Vérif RSSI à l'extinction")
#define TR_FLYSKY_TELEMETRY TR("FlySky RSSI #", "Use FlySky RSSI value without rescalling")
#define TR_MODEL_STILL_POWERED TR("Modèle allumé", "Modèle encore allumé")
#define TR_MODEL_SHUTDOWN "Eteindre ?"
@@ -544,21 +544,19 @@
#define TR_BEEPCOUNTDOWN TR(INDENT "Bip fin", INDENT "Compte à rebours")
#define TR_PERSISTENT TR(INDENT "Persist.", INDENT "Persistant")
#define TR_BACKLIGHT_LABEL "Rétroéclairage"
-#define TR_BLDELAY INDENT "Durée"
-#define TR_BL_MODE_DUR INDENT "Mode-Durée"
-#define TR_BLONBRIGHTNESS INDENT "Luminosité ON"
-#define TR_BLOFFBRIGHTNESS INDENT "Luminosité OFF"
-#define TR_BLCOLOR INDENT "Couleur"
+#define TR_BLONBRIGHTNESS "Luminosité ON"
+#define TR_BLOFFBRIGHTNESS "Luminosité OFF"
+#define TR_BLCOLOR "Couleur"
#define TR_SPLASHSCREEN "Logo d'accueil"
#define TR_PWR_ON_DELAY "Pwr On delay"
#define TR_PWR_OFF_DELAY "Pwr Off delay"
-#define TR_THROTTLEWARNING TR(INDENT "Alerte gaz", INDENT "Alerte gaz")
+#define TR_THROTTLE_WARNING TR(INDENT "Alerte gaz", INDENT "Alerte gaz")
#define TR_SWITCHWARNING TR(INDENT "Alerte int", INDENT "Pos. interrupteurs")
#define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders")
#define TR_SLIDERWARNING TR(INDENT "Slid. pos.", INDENT "Slider positions")
#define TR_POTWARNING TR(INDENT "Alerte pot", INDENT "Pos. potentios")
#define TR_TIMEZONE "Fuseau horaire"
-#define TR_ADJUST_RTC TR("Ajust. RTC", INDENT "Ajust. heure auto")
+#define TR_ADJUST_RTC TR("Ajust. RTC", "Ajust. heure auto")
#define TR_GPS "GPS"
#define TR_RXCHANNELORD TR("Ordre voies RX","Ordre des voies préféré")
#define TR_STICKS "Manches"
@@ -591,7 +589,6 @@
#define OFS_RX 4
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "NO DATA"
-#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036GAZ\037\146GZ%"
#define TR_US "us"
#define TR_TMR1LATMINUS "Tmr1Lat min\037\124us"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us"
@@ -606,9 +603,8 @@
#define TR_FM "PV"
#define TR_MIX "MIX"
#define TR_EEPROMLOWMEM "EEPROM pleine!"
-#define TR_ALERT "\014ALERTE"
-#define TR_PRESSANYKEYTOSKIP "Touche pour ignorer"
-#define TR_THROTTLENOTIDLE "Gaz pas à zéro"
+#define TR_PRESS_ANY_KEY_TO_SKIP "Touche pour ignorer"
+#define TR_THROTTLE_NOT_IDLE "Gaz pas à zéro"
#define TR_ALARMSDISABLED "Alarmes Désactivées"
#define TR_PRESSANYKEY TR("Touche pour continuer", "Touche pour continuer")
#define TR_BADEEPROMDATA "EEPROM corrompue"
@@ -616,7 +612,7 @@
#define TR_EEPROMFORMATTING "Formatage EEPROM"
#define TR_STORAGE_FORMAT "Préparation stockage"
#define TR_EEPROMOVERFLOW "Dépassement EEPROM"
-#define TR_MENURADIOSETUP "CONFIG RADIO"
+#define TR_RADIO_SETUP "CONFIG RADIO"
#define TR_MENUDATEANDTIME "DATE ET HEURE"
#define TR_MENUTRAINER "ECOLAGE"
#define TR_MENUSPECIALFUNCS "FONCTIONS GLOBALES"
@@ -632,7 +628,7 @@
#define TR_CHANNELS2FAILSAFE "Channels=>Failsafe"
#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe"
#define TR_MENUMODELSEL "MODELES"
-#define TR_MENUSETUP TR("CONF. MODELE", "CONFIGURATION")
+#define TR_MENU_MODEL_SETUP TR("CONF. MODELE", "CONFIGURATION")
#define TR_MENUFLIGHTMODE "PHASE DE VOL"
#define TR_MENUFLIGHTMODES "PHASES DE VOL"
#define TR_MENUHELISETUP TR("CONF.HELI", "CONFIGURATION HELICO")
@@ -662,7 +658,7 @@
#define TR_MULTI_RFTUNE TR(INDENT "Ajust.fréq", INDENT "Ajustement fréq.")
#define TR_MULTI_TELEMETRY "Télémétrie"
#define TR_MULTI_VIDFREQ TR(INDENT "Fréq. vidéo", INDENT "Fréquence vidéo")
-#define TR_RFPOWER TR(INDENT "Puiss. RF", INDENT "Puissance RF")
+#define TR_RF_POWER TR(INDENT "Puiss. RF", INDENT "Puissance RF")
#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID")
#define TR_MULTI_OPTION TR(INDENT "Option", INDENT "Option perso")
#define TR_MULTI_AUTOBIND TR(INDENT "Bind auto", INDENT "Bind automatique")
@@ -692,14 +688,13 @@
#define TR_MINRSSI "RSSI Min."
#define TR_LATITUDE "Latitude"
#define TR_LONGITUDE "Longitude"
-#define TR_GPSCOORD TR("Coordonnées", "Coordonnées GPS")
+#define TR_GPS_COORDS_FORMAT TR("Coordonnées", "Coordonnées GPS")
#define TR_VARIO TR("Vario", "Variomètre")
-#define TR_PITCH_AT_ZERO INDENT "Tonalité zéro"
-#define TR_PITCH_AT_MAX INDENT "Tonalité max"
-#define TR_REPEAT_AT_ZERO TR(INDENT "Interv. zéro", INDENT "Intervalle au zéro")
-#define TR_POWEROFF "\037\120ARRET..."
+#define TR_PITCH_AT_ZERO "Tonalité zéro"
+#define TR_PITCH_AT_MAX "Tonalité max"
+#define TR_REPEAT_AT_ZERO TR("Interv. zéro", "Intervalle au zéro")
#define TR_SHUTDOWN "ARRET EN COURS"
-#define TR_SAVEMODEL "Sauvegarde modèle..."
+#define TR_SAVE_MODEL "Sauvegarde modèle..."
#define TR_BATT_CALIB "Calib. batt"
#define TR_CURRENT_CALIB "Calib. cour"
#define TR_VOLTAGE TR(INDENT "Tension",INDENT "Source tension")
@@ -756,7 +751,7 @@
#define TR_EEPROMWARN "EEPROM"
#define TR_STORAGE_WARNING "STOCKAGE"
#define TR_EEPROM_CONVERTING "Conversion EEPROM"
-#define TR_THROTTLEWARN "GAZ"
+#define TR_THROTTLE_UPPERCASE "GAZ"
#define TR_ALARMSWARN "SON"
#define TR_SWITCHWARN TR("INTERS","CONTROLES")
#define TR_FAILSAFEWARN "FAILSAFE"
@@ -771,9 +766,9 @@
#define TR_NO_FAILSAFE TR3("Failsafe pas déf.", "Failsafe pas déf.", "Failsafe pas défini")
#define TR_KEYSTUCK "Touche bloquée"
#define TR_INVERT_THR "Inverser gaz?"
-#define TR_SPEAKER_VOLUME INDENT "Volume"
+#define TR_VOLUME "Volume"
#define TR_LCD "Afficheur"
-#define TR_BRIGHTNESS INDENT "Luminosité"
+#define TR_BRIGHTNESS "Luminosité"
#define TR_CPU_TEMP "Temp. CPU\016>"
#define TR_CPU_CURRENT "Courant\022>"
#define TR_CPU_MAH "Consomm."
@@ -883,11 +878,11 @@
#define TR_MENU_SPECTRUM_ANALYSER "ANALYSEUR SPECTRE"
#define TR_MENU_POWER_METER "MESURE PUISS."
#define TR_SENSOR "CAPTEUR"
-#define TR_COUNTRYCODE TR("Zone géo.", "Zone géographique")
+#define TR_COUNTRY_CODE TR("Zone géo.", "Zone géographique")
#define TR_USBMODE "Mode USB"
-#define TR_JACKMODE "Mode Jack"
-#define TR_VOICELANG TR("Langue voix", "Langue annonces vocales")
-#define TR_UNITSSYSTEM "Unités"
+#define TR_JACK_MODE "Mode Jack"
+#define TR_VOICE_LANGUAGE TR("Langue voix", "Langue annonces vocales")
+#define TR_UNITS_SYSTEM "Unités"
#define TR_EDIT "Editer"
#define TR_INSERT_BEFORE "Insérer avant"
#define TR_INSERT_AFTER "Insérer après"
@@ -936,7 +931,6 @@
#define TR_DEBUG "Debug"
#define TR_KEYS_BTN BUTTON(TR("Btns","Inters"))
#define TR_ANALOGS_BTN BUTTON(TR("Anas", "Analogs"))
-#define TR_CALIBRATION "Calibration"
#define TR_SET BUTTON("Déf")
#define TR_TRAINER "Ecolage"
#define TR_ANTENNAPROBLEM CENTER "Antenne radio défect.!"
@@ -1169,7 +1163,7 @@
#define TR_SETUP "Configuration"
#define TR_MAINVIEWX "Vue principale X"
#define TR_LAYOUT "Disposition"
-#define TR_ADDMAINVIEW "Ajouter vue principale"
+#define TR_ADD_MAIN_VIEW "Ajouter vue principale"
#define TR_BACKGROUND_COLOR "Couleur de fond"
#define TR_MAIN_COLOR "Couleur principale"
#define TR_TEXT_VIEWER "Visualisateur de texte"
diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt
index bb6a7540b..270052faf 100644
--- a/radio/src/translations/it.h.txt
+++ b/radio/src/translations/it.h.txt
@@ -86,8 +86,8 @@
#define LEN_VPERSISTENT "\015"
#define TR_VPERSISTENT "NO\0 ""Volo\0 ""Reset Manuale"
-#define LEN_COUNTRYCODES TR("\002", "\007")
-#define TR_COUNTRYCODES TR("US""JP""EU", "America""Japan\0 ""Europa\0")
+#define LEN_COUNTRY_CODES TR("\002", "\007")
+#define TR_COUNTRY_CODES TR("US""JP""EU", "America""Japan\0 ""Europa\0")
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Serial", "Ask\0 ""Joystick""Storage\0""Serial\0 ")
@@ -95,8 +95,8 @@
#define LEN_MODULE_PROTOCOLS "\004"
#define TR_MODULE_PROTOCOLS "OFF\0""PPM\0""XJT\0""XJT2""DSM2""CRSF""MULT""R9M\0""R9M2""SBUS"
-#define LEN_JACKMODES "\007"
-#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
+#define LEN_JACK_MODES "\007"
+#define TR_JACK_MODES "Ask\0 ""Audio\0 ""Trainer"
#define LEN_TELEMETRY_PROTOCOLS "\017"
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry"
@@ -516,27 +516,27 @@
#define TR_RANGE TR(INDENT"Inter.", INDENT"Intervallo")
#define TR_CENTER INDENT "Centro"
#define TR_BAR "Barra"
-#define TR_ALARM TR(INDENT"Allar.", INDENT"Allarme")
+#define TR_ALARM TR("Allar.", "Allarme")
#define TR_USRDATA "Dati"
-#define TR_BLADES INDENT"Pale"
+#define TR_BLADES "Pale"
#define TR_SCREEN "Schermo "
#define TR_SOUND_LABEL "Suono"
-#define TR_LENGTH INDENT"Durata"
-#define TR_BEEP_LENGTH INDENT "Lung. Beep"
-#define TR_SPKRPITCH INDENT"Tono"
+#define TR_LENGTH "Durata"
+#define TR_BEEP_LENGTH "Lung. Beep"
+#define TR_BEEP_PITCH "Tono"
#define TR_HAPTIC_LABEL "Vibraz"
-#define TR_HAPTICSTRENGTH INDENT"Forza"
+#define TR_STRENGTH "Forza"
#define TR_GYRO_LABEL "Gyro"
#define TR_GYRO_OFFSET "Offset"
#define TR_GYRO_MAX "Max"
#define TR_CONTRAST "Contrasto"
#define TR_ALARMS_LABEL "Allarmi"
#define TR_BATTERY_RANGE TR("Interv. Batt", "Intervallo batteria")
-#define TR_BATTERYWARNING INDENT"Avviso batteria"
-#define TR_INACTIVITYALARM INDENT"Inattivita'"
-#define TR_MEMORYWARNING INDENT"Avviso memoria"
-#define TR_ALARMWARNING INDENT"Spegni suono"
-#define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi Shutdown", INDENT "Check Rssi on Shutdown")
+#define TR_BATTERYWARNING "Avviso batteria"
+#define TR_INACTIVITYALARM "Inattivita'"
+#define TR_MEMORYWARNING "Avviso memoria"
+#define TR_ALARMWARNING "Spegni suono"
+#define TR_RSSI_SHUTDOWN_ALARM TR("Rssi Shutdown", "Check Rssi on Shutdown")
#define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_MODEL_SHUTDOWN "Shutdown ?"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
@@ -547,21 +547,19 @@
#define TR_BEEPCOUNTDOWN TR(INDENT"Conto rov", INDENT"Conto rovescia")
#define TR_PERSISTENT TR(INDENT"Persist.", INDENT"Persistente")
#define TR_BACKLIGHT_LABEL TR("Retroillum.", "Retroilluminazione")
-#define TR_BLDELAY INDENT"Durata"
-#define TR_BL_MODE_DUR INDENT "Mode-Duration"
-#define TR_BLONBRIGHTNESS TR(INDENT"Lumin. ON",INDENT"Luminosità ON")
-#define TR_BLOFFBRIGHTNESS TR(INDENT"Lumin. OFF",INDENT"Luminosità OFF")
-#define TR_BLCOLOR INDENT "Colore"
+#define TR_BLONBRIGHTNESS TR("Lumin. ON", "Luminosità ON")
+#define TR_BLOFFBRIGHTNESS TR("Lumin. OFF", "Luminosità OFF")
+#define TR_BLCOLOR "Colore"
#define TR_SPLASHSCREEN TR("Schermo avvio", "Schermata di avvio")
#define TR_PWR_ON_DELAY "Pwr On delay"
#define TR_PWR_OFF_DELAY "Pwr Off delay"
-#define TR_THROTTLEWARNING TR("All. Mot.", INDENT "Allarme Motore")
+#define TR_THROTTLE_WARNING TR("All. Mot.", INDENT "Allarme Motore")
#define TR_SWITCHWARNING TR("Avv. Int.", INDENT "Avviso Interr.")
#define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders")
#define TR_SLIDERWARNING TR(INDENT "Slid. pos.", INDENT "Slider positions")
#define TR_POTWARNING TR("Avv. Pot.", INDENT "Avviso Pot.")
#define TR_TIMEZONE "Ora locale"
-#define TR_ADJUST_RTC TR("Aggiusta RTC", INDENT "Aggiusta RTC")
+#define TR_ADJUST_RTC TR("Aggiusta RTC", "Aggiusta RTC")
#define TR_GPS "GPS"
#define TR_RXCHANNELORD "Ordine ch RX"
#define TR_STICKS "Sticks"
@@ -594,7 +592,6 @@
#define OFS_RX 4
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER"DATI ASSENTI"
-#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036THR\037\146TH%"
#define TR_US "us"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us"
#define TR_TMIXMAXMS "Tmix max"
@@ -606,9 +603,8 @@
#define TR_FM "FV"
#define TR_MIX "MIX"
#define TR_EEPROMLOWMEM "EEPROM quasi piena!"
-#define TR_ALERT "\016ALERT"
-#define TR_PRESSANYKEYTOSKIP "\010Premi un tasto"
-#define TR_THROTTLENOTIDLE TR("Motore non in posiz.","Motore non in posizione")
+#define TR_PRESS_ANY_KEY_TO_SKIP "\010Premi un tasto"
+#define TR_THROTTLE_NOT_IDLE TR("Motore non in posiz.","Motore non in posizione")
#define TR_ALARMSDISABLED "Avvisi Disattivati!"
#define TR_PRESSANYKEY "\010Premi un tasto"
#define TR_BADEEPROMDATA "Dati corrotti!"
@@ -616,7 +612,7 @@
#define TR_EEPROMFORMATTING "Formatto EEPROM..."
#define TR_STORAGE_FORMAT "Storage Preparation"
#define TR_EEPROMOVERFLOW "EEPROM Piena"
-#define TR_MENURADIOSETUP "CONFIGURATX"
+#define TR_RADIO_SETUP "CONFIGURATX"
#define TR_MENUDATEANDTIME "DATA E ORA"
#define TR_MENUTRAINER "MAESTRO/ALLIEVO"
#define TR_MENUSPECIALFUNCS "FUNZIONI GLOBALI"
@@ -632,7 +628,7 @@
#define TR_CHANNELS2FAILSAFE "Channels=>Failsafe"
#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe"
#define TR_MENUMODELSEL "MODELLI"
-#define TR_MENUSETUP "CONFIGURA"
+#define TR_MENU_MODEL_SETUP "CONFIGURA"
#define TR_MENUFLIGHTMODE "FASE DI VOLO"
#define TR_MENUFLIGHTMODES "FASI DI VOLO"
#define TR_MENUHELISETUP "CONFIGURA ELI"
@@ -662,7 +658,7 @@
#define TR_MULTI_RFTUNE TR("Freq tune", "RF Freq. fine tune")
#define TR_MULTI_TELEMETRY "Telemetry"
#define TR_MULTI_VIDFREQ TR("Vid. freq.", "Video frequency")
-#define TR_RFPOWER "RF Power"
+#define TR_RF_POWER "RF Power"
#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID")
#define TR_MULTI_OPTION TR("Option", "Option value")
#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on channel")
@@ -693,14 +689,13 @@
#define TR_FLYSKY_TELEMETRY TR("FlySky RSSI #", "Use FlySky RSSI value without rescalling")
#define TR_LATITUDE "Latitud."
#define TR_LONGITUDE "Longitud."
-#define TR_GPSCOORD TR("GPS Coords", INDENT "Formato Coordinate")
+#define TR_GPS_COORDS_FORMAT TR("GPS Coords", "Formato Coordinate")
#define TR_VARIO TR("Vario", "Variometro")
-#define TR_PITCH_AT_ZERO INDENT "Tono a Zero"
-#define TR_PITCH_AT_MAX INDENT "Tono al Max"
-#define TR_REPEAT_AT_ZERO INDENT "Ripeti a Zero"
-#define TR_POWEROFF "\027Power OFF..."
+#define TR_PITCH_AT_ZERO "Tono a Zero"
+#define TR_PITCH_AT_MAX "Tono al Max"
+#define TR_REPEAT_AT_ZERO "Ripeti a Zero"
#define TR_SHUTDOWN "ARRESTO.."
-#define TR_SAVEMODEL "Salvataggio dati modello"
+#define TR_SAVE_MODEL "Salvataggio dati modello"
#define TR_BATT_CALIB "Calibra batt."
#define TR_CURRENT_CALIB "Calibra corr."
#define TR_VOLTAGE TR(INDENT "Voltagg.",INDENT "Voltaggio")
@@ -757,7 +752,7 @@
#define TR_EEPROMWARN "EEPROM"
#define TR_STORAGE_WARNING "STORAGE"
#define TR_EEPROM_CONVERTING "Conversione EEPROM"
-#define TR_THROTTLEWARN "MOTORE"
+#define TR_THROTTLE_UPPERCASE "MOTORE"
#define TR_ALARMSWARN "ALLARMI"
#define TR_SWITCHWARN "CONTROLLI"
#define TR_FAILSAFEWARN "FAILSAFE"
@@ -772,9 +767,9 @@
#define TR_NO_FAILSAFE "Failsafe non settato"
#define TR_KEYSTUCK "Tasto bloccato"
#define TR_INVERT_THR "Inverti Mot?"
-#define TR_SPEAKER_VOLUME "Volume Audio"
+#define TR_VOLUME "Volume Audio"
#define TR_LCD "LCD"
-#define TR_BRIGHTNESS INDENT "Luminosità"
+#define TR_BRIGHTNESS "Luminosità"
#define TR_CPU_TEMP "Temp CPU \016>"
#define TR_CPU_CURRENT "Corrente\022>"
#define TR_CPU_MAH "Consumo"
@@ -885,11 +880,11 @@
#define TR_MENU_SPECTRUM_ANALYSER "SPECTRUM ANALYSER"
#define TR_MENU_POWER_METER "POWER METER"
#define TR_SENSOR "SENSOR"
-#define TR_COUNTRYCODE TR("Codice Paese","Standard 2.4Ghz")
+#define TR_COUNTRY_CODE TR("Codice Paese","Standard 2.4Ghz")
#define TR_USBMODE "USB Mode"
-#define TR_JACKMODE "Jack Mode"
-#define TR_VOICELANG "Lingua Voce"
-#define TR_UNITSSYSTEM "Unità"
+#define TR_JACK_MODE "Jack Mode"
+#define TR_VOICE_LANGUAGE "Lingua Voce"
+#define TR_UNITS_SYSTEM "Unità"
#define TR_EDIT "Modifica"
#define TR_INSERT_BEFORE "Inserisci prima"
#define TR_INSERT_AFTER "Inserisci dopo"
@@ -1166,7 +1161,7 @@
#define TR_SETUP "Setup"
#define TR_MAINVIEWX "Main view X"
#define TR_LAYOUT "Layout"
-#define TR_ADDMAINVIEW "Add main view"
+#define TR_ADD_MAIN_VIEW "Add main view"
#define TR_BACKGROUND_COLOR "Background color"
#define TR_MAIN_COLOR "Main color"
#define TR_TEXT_VIEWER "Text Viewer"
diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt
index 2e6f4d24d..0f20dc5fc 100644
--- a/radio/src/translations/nl.h.txt
+++ b/radio/src/translations/nl.h.txt
@@ -87,14 +87,14 @@
#define LEN_VPERSISTENT "\020"
#define TR_VPERSISTENT "UIT\0 ""Vliegtijd\0 ""Handmatige Reset"
-#define LEN_COUNTRYCODES TR("\002", "\007")
-#define TR_COUNTRYCODES TR("US""JP""EU", "Amerika""Japan\0 ""Europa\0")
+#define LEN_COUNTRY_CODES TR("\002", "\007")
+#define TR_COUNTRY_CODES TR("US""JP""EU", "Amerika""Japan\0 ""Europa\0")
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Serial", "Ask\0 ""Joystick""Storage\0""Serial\0 ")
-#define LEN_JACKMODES "\007"
-#define TR_JACKMODES "Popup\0 ""Audio\0 ""Trainer"
+#define LEN_JACK_MODES "\007"
+#define TR_JACK_MODES "Popup\0 ""Audio\0 ""Trainer"
#define LEN_TELEMETRY_PROTOCOLS "\017"
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry"
@@ -494,17 +494,17 @@ TR_GYR_VSRCRAW
#define TR_RANGE INDENT "Bereik"
#define TR_CENTER INDENT "Centreer"
#define TR_BAR "Balk"
-#define TR_ALARM INDENT "Alarm"
+#define TR_ALARM "Alarm"
#define TR_USRDATA "Data berekenen uit"
#define TR_BLADES "Bladen"
#define TR_SCREEN "Scherm\001"
#define TR_SOUND_LABEL "Geluid-"
-#define TR_LENGTH INDENT "Duur"
-#define TR_BEEP_LENGTH INDENT "Piep-Lengte"
-#define TR_SPKRPITCH INDENT "Piep-Freq. +/-"
+#define TR_LENGTH "Duur"
+#define TR_BEEP_LENGTH "Piep-Lengte"
+#define TR_BEEP_PITCH "Piep-Freq. +/-"
#define TR_HAPTIC_LABEL "Haptic"
-#define TR_HAPTICSTRENGTH INDENT "Sterkte"
+#define TR_STRENGTH "Sterkte"
#define TR_GYRO_LABEL "Gyro"
#define TR_GYRO_OFFSET "Offset"
#define TR_GYRO_MAX "Max"
@@ -512,11 +512,11 @@ TR_GYR_VSRCRAW
#define TR_ALARMS_LABEL "Alarm"
#define TR_BATTERY_RANGE TR("Accu Bereik", "Accu Spngs-Bereik") // Symbol Akku Ladezustand
-#define TR_BATTERYWARNING INDENT "Accu laag"
-#define TR_INACTIVITYALARM TR(INDENT "Inactiviteit", INDENT "Inactiviteit na") //9XR-Pro
-#define TR_MEMORYWARNING INDENT "Geheugen laag"
-#define TR_ALARMWARNING TR(INDENT "Al Geluid uit?", INDENT "Al het geluid uit?")
-#define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi Shutdown", INDENT "Check Rssi on Shutdown")
+#define TR_BATTERYWARNING "Accu laag"
+#define TR_INACTIVITYALARM TR("Inactiviteit", "Inactiviteit na")
+#define TR_MEMORYWARNING "Geheugen laag"
+#define TR_ALARMWARNING TR("Al Geluid uit?", "Al het geluid uit?")
+#define TR_RSSI_SHUTDOWN_ALARM TR("Rssi Shutdown", "Check Rssi on Shutdown")
#define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_MODEL_SHUTDOWN "Shutdown ?"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
@@ -527,21 +527,19 @@ TR_GYR_VSRCRAW
#define TR_BEEPCOUNTDOWN INDENT "Countdown"
#define TR_PERSISTENT TR(INDENT "Vasth.", INDENT "Vasthouden")
#define TR_BACKLIGHT_LABEL "LCD-Verlichting"
-#define TR_BLDELAY INDENT "Duur"
-#define TR_BL_MODE_DUR INDENT "Mode-Duration"
-#define TR_BLONBRIGHTNESS INDENT "Aan-Helderheid"
-#define TR_BLOFFBRIGHTNESS INDENT "Uit-Helderheid"
-#define TR_BLCOLOR INDENT "Kleur"
+#define TR_BLONBRIGHTNESS "Aan-Helderheid"
+#define TR_BLOFFBRIGHTNESS "Uit-Helderheid"
+#define TR_BLCOLOR "Kleur"
#define TR_SPLASHSCREEN "Startscherm Aan"
#define TR_PWR_ON_DELAY "Pwr On delay"
#define TR_PWR_OFF_DELAY "Pwr Off delay"
-#define TR_THROTTLEWARNING TR(INDENT "T-Warning", INDENT "Throttle Status")
+#define TR_THROTTLE_WARNING TR(INDENT "T-Warning", INDENT "Throttle Status")
#define TR_SWITCHWARNING TR(INDENT "S-Warning", INDENT "Switch Posities")
#define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders")
#define TR_SLIDERWARNING TR(INDENT "Slid. pos.", INDENT "Slider positions")
#define TR_POTWARNING TR(INDENT "Pot Warn.", INDENT "Pot Posities")
#define TR_TIMEZONE TR("Tijdzone", "GPS-Tijdzone +/-Std")
-#define TR_ADJUST_RTC TR("Klok instellen", INDENT "Klok middels GPS instellen")
+#define TR_ADJUST_RTC TR("Klok instellen", "Klok middels GPS instellen")
#define TR_GPS "GPS"
#define TR_RXCHANNELORD TR("Kan.Volgorde", "Kanaalvolgorde")
#define TR_STICKS "Sticks"
@@ -576,7 +574,6 @@ TR_GYR_VSRCRAW
#define OFS_RX 4
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER"Geen Data"
-#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036THR\037\146TH%"
#define TR_US "us"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us"
#define TR_TMIXMAXMS "Tmix max"
@@ -588,9 +585,8 @@ TR_GYR_VSRCRAW
#define TR_FM "FM"
#define TR_MIX "MIX"
#define TR_EEPROMLOWMEM "EEPROM weinig geheugen"
-#define TR_ALERT "ALARM"
-#define TR_PRESSANYKEYTOSKIP "Druk een toets.."
-#define TR_THROTTLENOTIDLE "Gas niet Dicht!"
+#define TR_PRESS_ANY_KEY_TO_SKIP "Druk een toets.."
+#define TR_THROTTLE_NOT_IDLE "Gas niet Dicht!"
#define TR_ALARMSDISABLED "Alarm uitgeschakeld"
#define TR_PRESSANYKEY TR("\010Druk een Toets", "Druk een Toets")
#define TR_BADEEPROMDATA "EEPROM Ongeldig"
@@ -598,7 +594,7 @@ TR_GYR_VSRCRAW
#define TR_EEPROMFORMATTING "EEPROM Initialiseren"
#define TR_STORAGE_FORMAT "Storage Preparation"
#define TR_EEPROMOVERFLOW "EEPROM Overflow"
-#define TR_MENURADIOSETUP TR("ZENDER-INSTELLEN", "ZENDER-BASISINSTELLINGEN")
+#define TR_RADIO_SETUP TR("ZENDER-INSTELLEN", "ZENDER-BASISINSTELLINGEN")
#define TR_MENUDATEANDTIME "DATUM EN TIJD"
@@ -617,7 +613,7 @@ TR_GYR_VSRCRAW
#define TR_CHANNELS2FAILSAFE "Channels=>Failsafe"
#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe"
#define TR_MENUMODELSEL TR("MODELLEN", "MODEL KIEZEN")
-#define TR_MENUSETUP TR("MODEL-INSTELLING", "MODEL-INSTELLINGEN")
+#define TR_MENU_MODEL_SETUP TR("MODEL-INSTELLING", "MODEL-INSTELLINGEN")
#define TR_MENUFLIGHTMODES "VLIEGFASES"
#define TR_MENUFLIGHTMODE "VLIEGFASE"
#define TR_MENUHELISETUP "HELI TS-Mixer"
@@ -647,7 +643,7 @@ TR_GYR_VSRCRAW
#define TR_MULTI_RFTUNE TR("Freq tune", "RF Freq. fine tune")
#define TR_MULTI_TELEMETRY "Telemetry"
#define TR_MULTI_VIDFREQ TR("Vid. freq.", "Video frequency")
-#define TR_RFPOWER "RF Power"
+#define TR_RF_POWER "RF Power"
#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID")
#define TR_MULTI_OPTION TR("Option", "Option value")
#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on channel")
@@ -678,14 +674,13 @@ TR_GYR_VSRCRAW
#define TR_FLYSKY_TELEMETRY TR("FlySky RSSI #", "Use FlySky RSSI value without rescalling")
#define TR_LATITUDE "Latitude"
#define TR_LONGITUDE "Longitude"
-#define TR_GPSCOORD TR("GPS-coord.", "GPS-coordinaten format")
+#define TR_GPS_COORDS_FORMAT TR("GPS-coord.", "GPS-coordinaten format")
#define TR_VARIO "Variometer"
-#define TR_PITCH_AT_ZERO INDENT "Laagste Toon"
-#define TR_PITCH_AT_MAX INDENT "Hoogste Toon"
-#define TR_REPEAT_AT_ZERO INDENT "Herhalen bij 0"
-#define TR_POWEROFF "\027Uitschakelen..."
+#define TR_PITCH_AT_ZERO "Laagste Toon"
+#define TR_PITCH_AT_MAX "Hoogste Toon"
+#define TR_REPEAT_AT_ZERO "Herhalen bij 0"
#define TR_SHUTDOWN "Afsluiten"
-#define TR_SAVEMODEL "Bewaar Model-instellingen"
+#define TR_SAVE_MODEL "Bewaar Model-instellingen"
#define TR_BATT_CALIB "Accu Calib"
#define TR_CURRENT_CALIB "Stroom Calib"
#define TR_VOLTAGE TR(INDENT "Spg", INDENT "Spanningsbron") //9XR-Pro
@@ -742,7 +737,7 @@ TR_GYR_VSRCRAW
#define TR_EEPROMWARN "EEPROM"
#define TR_STORAGE_WARNING "STORAGE"
#define TR_EEPROM_CONVERTING "EEPROM Converteren"
-#define TR_THROTTLEWARN "GAS"
+#define TR_THROTTLE_UPPERCASE "GAS"
#define TR_ALARMSWARN "ALARM"
#define TR_SWITCHWARN "SCHAKELAAR"
#define TR_FAILSAFEWARN "FAILSAFE"
@@ -757,9 +752,9 @@ TR_GYR_VSRCRAW
#define TR_NO_FAILSAFE TR("Failsafe niet ing.", "Failsafe niet ingesteld")
#define TR_KEYSTUCK "Toets klemt"
#define TR_INVERT_THR TR("Gas omdraaien?", "Volgas achter?")
-#define TR_SPEAKER_VOLUME INDENT "Volume"
+#define TR_VOLUME "Volume"
#define TR_LCD "LCD"
-#define TR_BRIGHTNESS INDENT "Helderheid"
+#define TR_BRIGHTNESS "Helderheid"
#define TR_CPU_TEMP "CPU-Temp.\016>"
#define TR_CPU_CURRENT "Stroom\022>"
#define TR_CPU_MAH "Verbruik"
@@ -870,11 +865,11 @@ TR_GYR_VSRCRAW
#define TR_MENU_SPECTRUM_ANALYSER "SPECTRUM ANALYSER"
#define TR_MENU_POWER_METER "POWER METER"
#define TR_SENSOR "SENSOR"
-#define TR_COUNTRYCODE "Landcode"
+#define TR_COUNTRY_CODE "Landcode"
#define TR_USBMODE "USB Mode"
-#define TR_JACKMODE "Jack Mode"
-#define TR_VOICELANG "Taal"
-#define TR_UNITSSYSTEM "Eenheden"
+#define TR_JACK_MODE "Jack Mode"
+#define TR_VOICE_LANGUAGE "Taal"
+#define TR_UNITS_SYSTEM "Eenheden"
#define TR_EDIT "Wijzigen"
#define TR_INSERT_BEFORE "Invoegen ervoor"
#define TR_INSERT_AFTER "Invoegen erna"
@@ -1155,7 +1150,7 @@ TR_GYR_VSRCRAW
#define TR_SETUP "Setup"
#define TR_MAINVIEWX "Main view X"
#define TR_LAYOUT "Layout"
-#define TR_ADDMAINVIEW "Add main view"
+#define TR_ADD_MAIN_VIEW "Add main view"
#define TR_BACKGROUND_COLOR "Background color"
#define TR_MAIN_COLOR "Main color"
#define TR_TEXT_VIEWER "Text Viewer"
diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt
index abf6a6969..2755819e3 100644
--- a/radio/src/translations/pl.h.txt
+++ b/radio/src/translations/pl.h.txt
@@ -86,14 +86,14 @@
#define LEN_VPERSISTENT "\014" /*12 decimal*/
#define TR_VPERSISTENT "Wyłącz\0 ""Lot\0 ""Ręczny Reset"
-#define LEN_COUNTRYCODES TR("\002", "\007")
-#define TR_COUNTRYCODES TR("US""JP""EU", "Ameryka""Japonia""Europa\0")
+#define LEN_COUNTRY_CODES TR("\002", "\007")
+#define TR_COUNTRY_CODES TR("US""JP""EU", "Ameryka""Japonia""Europa\0")
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Serial", "Ask\0 ""Joystick""Storage\0""Serial\0 ")
-#define LEN_JACKMODES "\007"
-#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
+#define LEN_JACK_MODES "\007"
+#define TR_JACK_MODES "Ask\0 ""Audio\0 ""Trainer"
#define LEN_TELEMETRY_PROTOCOLS "\017"
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry"
@@ -513,27 +513,27 @@
#define TR_RANGE INDENT "Zakres"
#define TR_CENTER INDENT "Środek"
#define TR_BAR "Pas"
-#define TR_ALARM INDENT "Alarm"
+#define TR_ALARM "Alarm"
#define TR_USRDATA TR("Dane Użytk.", "Dane użytkownika")
-#define TR_BLADES " Łopaty śmigla"
+#define TR_BLADES "Łopaty śmigla"
#define TR_SCREEN "Ekran "
#define TR_SOUND_LABEL "Dźwięk"
-#define TR_LENGTH INDENT"Długość"
-#define TR_BEEP_LENGTH INDENT "Dług. Beepa"
-#define TR_SPKRPITCH INDENT"Dźwięk"
+#define TR_LENGTH "Długość"
+#define TR_BEEP_LENGTH "Dług. Beepa"
+#define TR_BEEP_PITCH "Dźwięk"
#define TR_HAPTIC_LABEL "Wibracja"
-#define TR_HAPTICSTRENGTH INDENT"Siła"
+#define TR_STRENGTH "Siła"
#define TR_GYRO_LABEL "Gyro"
#define TR_GYRO_OFFSET "Offset"
#define TR_GYRO_MAX "Max"
#define TR_CONTRAST "Kontrast"
#define TR_ALARMS_LABEL "Alarmy"
#define TR_BATTERY_RANGE TR("PokażPasBat.", "Pokaż pasek bateri")
-#define TR_BATTERYWARNING INDENT"Bateria rozładowana"
-#define TR_INACTIVITYALARM INDENT"Alarm bezczynności"
-#define TR_MEMORYWARNING INDENT"Pełna pamięć"
-#define TR_ALARMWARNING INDENT"Wyłącz dźwięk"
-#define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi Shutdown", INDENT "Check Rssi on Shutdown")
+#define TR_BATTERYWARNING "Bateria rozładowana"
+#define TR_INACTIVITYALARM "Alarm bezczynności"
+#define TR_MEMORYWARNING "Pełna pamięć"
+#define TR_ALARMWARNING "Wyłącz dźwięk"
+#define TR_RSSI_SHUTDOWN_ALARM TR("Rssi Shutdown", "Check Rssi on Shutdown")
#define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_MODEL_SHUTDOWN "Shutdown ?"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
@@ -544,21 +544,19 @@
#define TR_BEEPCOUNTDOWN INDENT "Odliczanie"
#define TR_PERSISTENT TR(INDENT "Dokł.", INDENT "Dokładny")
#define TR_BACKLIGHT_LABEL "Podświetl"
-#define TR_BLDELAY INDENT"Czas trwania"
-#define TR_BL_MODE_DUR INDENT "Mode-Duration"
-#define TR_BLONBRIGHTNESS INDENT"Jasnośc wł."
-#define TR_BLOFFBRIGHTNESS INDENT"Jasność wył."
-#define TR_BLCOLOR INDENT "Color"
+#define TR_BLONBRIGHTNESS "Jasnośc wł."
+#define TR_BLOFFBRIGHTNESS "Jasność wył."
+#define TR_BLCOLOR "Color"
#define TR_SPLASHSCREEN "Logo ekranu"
#define TR_PWR_ON_DELAY "Pwr On delay"
#define TR_PWR_OFF_DELAY "Pwr Off delay"
-#define TR_THROTTLEWARNING TR(INDENT"OstrzGaz", INDENT "OstrzeżenieGaz")
+#define TR_THROTTLE_WARNING TR(INDENT"OstrzGaz", INDENT "OstrzeżenieGaz")
#define TR_SWITCHWARNING TR(INDENT "OstrzPrzeł", INDENT "PozycjaPrzeł")
#define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders")
#define TR_SLIDERWARNING TR(INDENT "Slid. pos.", INDENT "Slider positions")
#define TR_POTWARNING TR(INDENT "Ostrz.Poten.", INDENT "PozycjaPotencj.")
#define TR_TIMEZONE TR("Strefa czasowa" ,"Strefa czasowa GPS")
-#define TR_ADJUST_RTC TR("RegulujRTC", INDENT "RegulujRTC")
+#define TR_ADJUST_RTC TR("RegulujRTC", "RegulujRTC")
#define TR_GPS "GPS"
#define TR_RXCHANNELORD TR("KolejnKan.RX", "Bazowa kolejność kanałów")
#define TR_STICKS "Drążki"
@@ -591,7 +589,6 @@
#define OFS_RX 4
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "BrakDAN"
-#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036THR\037\146TH%"
#define TR_US "us"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us"
#define TR_TMIXMAXMS "TmixMaks"
@@ -603,9 +600,8 @@
#define TR_FM "FL"
#define TR_MIX "MIX"
#define TR_EEPROMLOWMEM "Niska pamięć EEPROM"
-#define TR_ALERT "\006UWAGA"
-#define TR_PRESSANYKEYTOSKIP "Wciśnij guzik->ignoruj"
-#define TR_THROTTLENOTIDLE "Gaz nie na zerze"
+#define TR_PRESS_ANY_KEY_TO_SKIP "Wciśnij guzik->ignoruj"
+#define TR_THROTTLE_NOT_IDLE "Gaz nie na zerze"
#define TR_ALARMSDISABLED "Alarmy wyłączone"
#define TR_PRESSANYKEY TR("\010Wciśnij jakiś klawisz","Wciśnij jakiś klawisz")
#define TR_BADEEPROMDATA "\006Błąd danych EEPROM"
@@ -613,7 +609,7 @@
#define TR_EEPROMFORMATTING "\004Formatowanie EEPROM"
#define TR_STORAGE_FORMAT "Storage Preparation"
#define TR_EEPROMOVERFLOW "Przeładowany EEPROM"
-#define TR_MENURADIOSETUP "USTAWIENIA RADIA"
+#define TR_RADIO_SETUP "USTAWIENIA RADIA"
#define TR_MENUDATEANDTIME "DATA I CZAS"
#define TR_MENUTRAINER "TRENER"
#define TR_MENUSPECIALFUNCS "FUNKCJE GLOBALNE"
@@ -629,7 +625,7 @@
#define TR_CHANNELS2FAILSAFE "Channels=>Failsafe"
#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe"
#define TR_MENUMODELSEL TR("WYB.MODEL","WYBÓR MODELU")
-#define TR_MENUSETUP TR("USTAW","USTAW MODELU")
+#define TR_MENU_MODEL_SETUP TR("USTAW","USTAW MODELU")
#define TR_MENUFLIGHTMODE "FAZA LOTU"
#define TR_MENUFLIGHTMODES "FAZY LOTU"
#define TR_MENUHELISETUP "USTAW HELI"
@@ -659,7 +655,7 @@
#define TR_MULTI_RFTUNE TR("Freq tune", "RF Freq. fine tune")
#define TR_MULTI_TELEMETRY "Telemetry"
#define TR_MULTI_VIDFREQ TR("Vid. freq.", "Video frequency")
-#define TR_RFPOWER "RF Power"
+#define TR_RF_POWER "RF Power"
#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID")
#define TR_MULTI_OPTION TR("Option", "Option value")
#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on channel")
@@ -690,14 +686,13 @@
#define TR_FLYSKY_TELEMETRY TR("FlySky RSSI #", "Use FlySky RSSI value without rescalling")
#define TR_LATITUDE "Szer. geo."
#define TR_LONGITUDE "Dł. geo."
-#define TR_GPSCOORD TR("Koord.GPS","Typ koordynat GPS")
+#define TR_GPS_COORDS_FORMAT TR("Koord.GPS","Typ koordynat GPS")
#define TR_VARIO TR("Wario","Wariometr")
-#define TR_PITCH_AT_ZERO INDENT "Ton przy Zerze"
-#define TR_PITCH_AT_MAX INDENT "Ton przy Max"
-#define TR_REPEAT_AT_ZERO INDENT "Powtórz przy Zerze"
-#define TR_POWEROFF "\027Wyłączanie.."
+#define TR_PITCH_AT_ZERO "Ton przy Zerze"
+#define TR_PITCH_AT_MAX "Ton przy Max"
+#define TR_REPEAT_AT_ZERO "Powtórz przy Zerze"
#define TR_SHUTDOWN "Wyłączanie.."
-#define TR_SAVEMODEL "Zapisz ustwienia modelu"
+#define TR_SAVE_MODEL "Zapisz ustwienia modelu"
#define TR_BATT_CALIB "Kalib:Baterii"
#define TR_CURRENT_CALIB " +=\006Kalibracja prądu"
#define TR_VOLTAGE TR (INDENT"Napięcie",INDENT"Źródło Napięcia")
@@ -754,7 +749,7 @@
#define TR_EEPROMWARN "EEPROM"
#define TR_STORAGE_WARNING "STORAGE"
#define TR_EEPROM_CONVERTING "Konwersja EEPROM"
-#define TR_THROTTLEWARN "GAZ"
+#define TR_THROTTLE_UPPERCASE "GAZ"
#define TR_ALARMSWARN "ALARM"
#define TR_SWITCHWARN TR("Przełą","Kontrola")
#define TR_FAILSAFEWARN "FAILSAFE"
@@ -769,9 +764,9 @@
#define TR_NO_FAILSAFE "Brak Failsafe"
#define TR_KEYSTUCK "Blokada klucza"
#define TR_INVERT_THR TR("Odw.Gaz?","Odwróć gaz?")
-#define TR_SPEAKER_VOLUME INDENT "Głośność"
+#define TR_VOLUME "Głośność"
#define TR_LCD "LCD"
-#define TR_BRIGHTNESS INDENT "Jasność"
+#define TR_BRIGHTNESS "Jasność"
#define TR_CPU_TEMP "Temp. CPU\016>"
#define TR_CPU_CURRENT "Prąd"
#define TR_CPU_MAH "Zużycie"
@@ -882,11 +877,11 @@
#define TR_MENU_SPECTRUM_ANALYSER "SPECTRUM ANALYSER"
#define TR_MENU_POWER_METER "POWER METER"
#define TR_SENSOR "SENSOR"
-#define TR_COUNTRYCODE "Kod regionu"
+#define TR_COUNTRY_CODE "Kod regionu"
#define TR_USBMODE "USB Mode"
-#define TR_JACKMODE "Jack Mode"
-#define TR_VOICELANG "Język głosu"
-#define TR_UNITSSYSTEM "Jednostki"
+#define TR_JACK_MODE "Jack Mode"
+#define TR_VOICE_LANGUAGE "Język głosu"
+#define TR_UNITS_SYSTEM "Jednostki"
#define TR_EDIT "Edytuj"
#define TR_INSERT_BEFORE "Wstaw przed"
#define TR_INSERT_AFTER "Wstaw za"
@@ -1163,7 +1158,7 @@
#define TR_SETUP "Setup"
#define TR_MAINVIEWX "Main view X"
#define TR_LAYOUT "Layout"
-#define TR_ADDMAINVIEW "Add main view"
+#define TR_ADD_MAIN_VIEW "Add main view"
#define TR_BACKGROUND_COLOR "Background color"
#define TR_MAIN_COLOR "Main color"
#define TR_TEXT_VIEWER "Text Viewer"
diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt
index 63350ac50..7977b950c 100644
--- a/radio/src/translations/pt.h.txt
+++ b/radio/src/translations/pt.h.txt
@@ -86,14 +86,14 @@
#define LEN_VPERSISTENT "\014"
#define TR_VPERSISTENT "OFF\0 ""Flight\0 ""Manual Reset"
-#define LEN_COUNTRYCODES TR("\002", "\007")
-#define TR_COUNTRYCODES TR("US""JP""EU", "America""Japan\0 ""Europe\0")
+#define LEN_COUNTRY_CODES TR("\002", "\007")
+#define TR_COUNTRY_CODES TR("US""JP""EU", "America""Japan\0 ""Europe\0")
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Serial", "Ask\0 ""Joystick""Storage\0""Serial\0 ")
-#define LEN_JACKMODES "\007"
-#define TR_JACKMODES "Popup\0 ""Audio\0 ""Trainer"
+#define LEN_JACK_MODES "\007"
+#define TR_JACK_MODES "Popup\0 ""Audio\0 ""Trainer"
#define LEN_TELEMETRY_PROTOCOLS "\017"
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry"
@@ -499,27 +499,27 @@
#define TR_RANGE INDENT"Range"
#define TR_CENTER INDENT "Center"
#define TR_BAR "Bar"
-#define TR_ALARM INDENT"Alarme"
+#define TR_ALARM "Alarme"
#define TR_USRDATA "UsrData"
-#define TR_BLADES INDENT"Helice"
+#define TR_BLADES "Helice"
#define TR_SCREEN "Tela"
#define TR_SOUND_LABEL "Som"
-#define TR_LENGTH INDENT"Comprimento"
-#define TR_BEEP_LENGTH INDENT "Beep Length"
-#define TR_SPKRPITCH INDENT"Pitch"
+#define TR_LENGTH "Comprimento"
+#define TR_BEEP_LENGTH "Beep Length"
+#define TR_BEEP_PITCH "Pitch"
#define TR_HAPTIC_LABEL "Vibrar"
-#define TR_HAPTICSTRENGTH INDENT"Forca"
+#define TR_STRENGTH "Forca"
#define TR_GYRO_LABEL "Gyro"
#define TR_GYRO_OFFSET "Offset"
#define TR_GYRO_MAX "Max"
#define TR_CONTRAST "Contraste"
#define TR_ALARMS_LABEL "Alarmes"
#define TR_BATTERY_RANGE "Battery Range"
-#define TR_BATTERYWARNING INDENT"Bateria Baixa"
-#define TR_INACTIVITYALARM INDENT"Inactividade"
-#define TR_MEMORYWARNING INDENT"Memoria Baixa"
-#define TR_ALARMWARNING INDENT"Som Off"
-#define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi Shutdown", INDENT "Check Rssi on Shutdown")
+#define TR_BATTERYWARNING "Bateria Baixa"
+#define TR_INACTIVITYALARM "Inactividade"
+#define TR_MEMORYWARNING "Memoria Baixa"
+#define TR_ALARMWARNING "Som Off"
+#define TR_RSSI_SHUTDOWN_ALARM TR("Rssi Shutdown", "Check Rssi on Shutdown")
#define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_MODEL_SHUTDOWN "Shutdown ?"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
@@ -530,21 +530,19 @@
#define TR_BEEPCOUNTDOWN INDENT "Beep Regressivo"
#define TR_PERSISTENT INDENT "Persist."
#define TR_BACKLIGHT_LABEL "Backlight"
-#define TR_BLDELAY INDENT "Tempo Backlight"
-#define TR_BL_MODE_DUR INDENT "Mode-Duration"
-#define TR_BLONBRIGHTNESS INDENT "ON Brightness"
-#define TR_BLOFFBRIGHTNESS INDENT "OFF Brightness"
-#define TR_BLCOLOR INDENT "Color"
+#define TR_BLONBRIGHTNESS "ON Brightness"
+#define TR_BLOFFBRIGHTNESS "OFF Brightness"
+#define TR_BLCOLOR "Color"
#define TR_SPLASHSCREEN "Splash screen"
#define TR_PWR_ON_DELAY "Pwr On delay"
#define TR_PWR_OFF_DELAY "Pwr Off delay"
-#define TR_THROTTLEWARNING TR("Avisa Acel", INDENT "Avisa Acel")
+#define TR_THROTTLE_WARNING TR("Avisa Acel", INDENT "Avisa Acel")
#define TR_SWITCHWARNING TR("Avisa Chav", INDENT "Avisa Chav")
#define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders")
#define TR_SLIDERWARNING TR(INDENT "Slid. pos.", INDENT "Slider positions")
#define TR_POTWARNING TR("Pot Warn.", INDENT "Pot Warning")
#define TR_TIMEZONE "Time Zone"
-#define TR_ADJUST_RTC TR("Adjust RTC", INDENT "Adjust RTC")
+#define TR_ADJUST_RTC TR("Adjust RTC", "Adjust RTC")
#define TR_GPS "GPS"
#define TR_RXCHANNELORD "Ordem Canal RX"
#define TR_STICKS "Sticks"
@@ -573,7 +571,6 @@
#define OFS_RX 4
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER"SEM DADOS"
-#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036THR\037\146TH%"
#define TR_US "us"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us"
#define TR_TMIXMAXMS "Tmix max"
@@ -585,9 +582,8 @@
#define TR_FM "FP"
#define TR_MIX "MIX"
#define TR_EEPROMLOWMEM "EEPROM BX Memoria"
-#define TR_ALERT "\016ALERT"
-#define TR_PRESSANYKEYTOSKIP "Pulsar Tecla p/ sair"
-#define TR_THROTTLENOTIDLE "**ACELERADOR ATIVO**"
+#define TR_PRESS_ANY_KEY_TO_SKIP "Pulsar Tecla p/ sair"
+#define TR_THROTTLE_NOT_IDLE "**ACELERADOR ATIVO**"
#define TR_ALARMSDISABLED "Desabilita Alarmes"
#define TR_PRESSANYKEY "\010Pressione Tecla"
#define TR_BADEEPROMDATA "EEPRON INVALIDA"
@@ -595,7 +591,7 @@
#define TR_EEPROMFORMATTING "Formatando EEPROM"
#define TR_STORAGE_FORMAT "Storage Preparation"
#define TR_EEPROMOVERFLOW "EEPROM CHEIA"
-#define TR_MENURADIOSETUP "AJUSTAR RADIO"
+#define TR_RADIO_SETUP "AJUSTAR RADIO"
#define TR_MENUDATEANDTIME "DATA E HORA"
#define TR_MENUTRAINER "TRAINER"
#define TR_MENUSPECIALFUNCS "GLOBAL FUNCTIONS"
@@ -611,7 +607,7 @@
#define TR_CHANNELS2FAILSAFE "Channels=>Failsafe"
#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe"
#define TR_MENUMODELSEL "MODELOS"
-#define TR_MENUSETUP "SETUP"
+#define TR_MENU_MODEL_SETUP "SETUP"
#define TR_MENUFLIGHTMODE "MODO DE VOO"
#define TR_MENUFLIGHTMODES "MODOS DE VOO"
#define TR_MENUHELISETUP "HELI SETUP"
@@ -650,7 +646,7 @@
#define TR_MULTI_RFTUNE TR("Freq tune", "RF Freq. fine tune")
#define TR_MULTI_TELEMETRY "Telemetry"
#define TR_MULTI_VIDFREQ TR("Vid. freq.", "Video frequency")
-#define TR_RFPOWER "RF Power"
+#define TR_RF_POWER "RF Power"
#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID")
#define TR_MULTI_OPTION TR("Option", "Option value")
#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on channel")
@@ -680,14 +676,13 @@
#define TR_FLYSKY_TELEMETRY TR("FlySky RSSI #", "Use FlySky RSSI value without rescalling")
#define TR_LATITUDE "Latitude"
#define TR_LONGITUDE "Longitude"
-#define TR_GPSCOORD "Gps Coords"
+#define TR_GPS_COORDS_FORMAT "Gps Coords"
#define TR_VARIO "Vario"
-#define TR_PITCH_AT_ZERO INDENT "Pitch at Zero"
-#define TR_PITCH_AT_MAX INDENT "Pitch at Max"
-#define TR_REPEAT_AT_ZERO INDENT "Repeat at Zero"
-#define TR_POWEROFF "\027Power OFF..."
+#define TR_PITCH_AT_ZERO "Pitch at Zero"
+#define TR_PITCH_AT_MAX "Pitch at Max"
+#define TR_REPEAT_AT_ZERO "Repeat at Zero"
#define TR_SHUTDOWN "DESLIGANDOo"
-#define TR_SAVEMODEL "Saving model settings"
+#define TR_SAVE_MODEL "Saving model settings"
#define TR_BATT_CALIB "CALIBRAR BATT"
#define TR_CURRENT_CALIB "Corrente Calib"
#define TR_VOLTAGE INDENT"Volts"
@@ -744,7 +739,7 @@
#define TR_EEPROMWARN "EEPROM"
#define TR_STORAGE_WARNING "STORAGE"
#define TR_EEPROM_CONVERTING "EEPROM Converting"
-#define TR_THROTTLEWARN "ACELERAD"
+#define TR_THROTTLE_UPPERCASE "ACELERAD"
#define TR_ALARMSWARN "ALARMES"
#define TR_SWITCHWARN "CHAVES"
#define TR_FAILSAFEWARN "FAILSAFE"
@@ -759,9 +754,9 @@
#define TR_NO_FAILSAFE "Failsafe not set"
#define TR_KEYSTUCK "Key stuck"
#define TR_INVERT_THR "Inverte Acel?"
-#define TR_SPEAKER_VOLUME INDENT "Volume"
+#define TR_VOLUME "Volume"
#define TR_LCD "LCD"
-#define TR_BRIGHTNESS INDENT "Brilho"
+#define TR_BRIGHTNESS "Brilho"
#define TR_CPU_TEMP "CPU Temp.\016>"
#define TR_CPU_CURRENT "Current\022>"
#define TR_CPU_MAH "Consumo."
@@ -872,11 +867,11 @@
#define TR_MENU_SPECTRUM_ANALYSER "SPECTRUM ANALYSER"
#define TR_MENU_POWER_METER "POWER METER"
#define TR_SENSOR "SENSOR"
-#define TR_COUNTRYCODE "Country Code"
+#define TR_COUNTRY_CODE "Country Code"
#define TR_USBMODE "USB Mode"
-#define TR_JACKMODE "Jack Mode"
-#define TR_VOICELANG "Voice Language"
-#define TR_UNITSSYSTEM "Units"
+#define TR_JACK_MODE "Jack Mode"
+#define TR_VOICE_LANGUAGE "Voice Language"
+#define TR_UNITS_SYSTEM "Units"
#define TR_EDIT "Edit"
#define TR_INSERT_BEFORE "Insert Before"
#define TR_INSERT_AFTER "Insert After"
@@ -1152,7 +1147,7 @@
#define TR_SETUP "Setup"
#define TR_MAINVIEWX "Main view X"
#define TR_LAYOUT "Layout"
-#define TR_ADDMAINVIEW "Add main view"
+#define TR_ADD_MAIN_VIEW "Add main view"
#define TR_BACKGROUND_COLOR "Background color"
#define TR_MAIN_COLOR "Main color"
#define TR_TEXT_VIEWER "Text Viewer"
diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt
index 48fd62151..e8d0f0616 100644
--- a/radio/src/translations/se.h.txt
+++ b/radio/src/translations/se.h.txt
@@ -89,14 +89,14 @@
#define LEN_VPERSISTENT "\014"
#define TR_VPERSISTENT "Av\0 ""Flygning\0 ""Nolla Själv\0"
-#define LEN_COUNTRYCODES TR("\002", "\007")
-#define TR_COUNTRYCODES TR("US""JP""EU", "Amerika""Japan\0 ""Europa\0")
+#define LEN_COUNTRY_CODES TR("\002", "\007")
+#define TR_COUNTRY_CODES TR("US""JP""EU", "Amerika""Japan\0 ""Europa\0")
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Serial", "Ask\0 ""Joystick""Storage\0""Serial\0 ")
-#define LEN_JACKMODES "\007"
-#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
+#define LEN_JACK_MODES "\007"
+#define TR_JACK_MODES "Ask\0 ""Audio\0 ""Trainer"
#define LEN_TELEMETRY_PROTOCOLS "\017"
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry"
@@ -512,27 +512,27 @@
#define TR_RANGE INDENT"MinMax"
#define TR_CENTER INDENT "Center"
#define TR_BAR "Data"
-#define TR_ALARM INDENT"Alarm"
+#define TR_ALARM "Alarm"
#define TR_USRDATA "Användardata"
-#define TR_BLADES INDENT"Blad"
+#define TR_BLADES "Blad"
#define TR_SCREEN "Skärm "
#define TR_SOUND_LABEL "Ljud "
-#define TR_LENGTH INDENT"Tid"
-#define TR_BEEP_LENGTH INDENT "Pip-längd"
-#define TR_SPKRPITCH INDENT "Pip-ton"
+#define TR_LENGTH "Tid"
+#define TR_BEEP_LENGTH "Pip-längd"
+#define TR_BEEP_PITCH "Pip-ton"
#define TR_HAPTIC_LABEL "Vibrator"
-#define TR_HAPTICSTRENGTH INDENT"Styrka"
+#define TR_STRENGTH "Styrka"
#define TR_GYRO_LABEL "Gyro"
#define TR_GYRO_OFFSET "Offset"
#define TR_GYRO_MAX "Max"
#define TR_CONTRAST "Kontrast"
#define TR_ALARMS_LABEL "Alarm"
#define TR_BATTERY_RANGE "Batteri-MinMax"
-#define TR_BATTERYWARNING INDENT"Batteri"
-#define TR_INACTIVITYALARM INDENT"Inaktivitet"
-#define TR_MEMORYWARNING INDENT"Lite Minne"
-#define TR_ALARMWARNING INDENT"Ljud Av"
-#define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi Shutdown", INDENT "Check Rssi on Shutdown")
+#define TR_BATTERYWARNING "Batteri"
+#define TR_INACTIVITYALARM "Inaktivitet"
+#define TR_MEMORYWARNING "Lite Minne"
+#define TR_ALARMWARNING "Ljud Av"
+#define TR_RSSI_SHUTDOWN_ALARM TR("Rssi Shutdown", "Check Rssi on Shutdown")
#define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_MODEL_SHUTDOWN "Shutdown ?"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
@@ -543,21 +543,19 @@
#define TR_BEEPCOUNTDOWN INDENT "Nedräkning"
#define TR_PERSISTENT TR("Jämt på ", INDENT"Alltid På")
#define TR_BACKLIGHT_LABEL "Belysning"
-#define TR_BLDELAY INDENT "Av efter"
-#define TR_BL_MODE_DUR INDENT "Mode-Duration"
-#define TR_BLONBRIGHTNESS INDENT "På Ljusstyrka"
-#define TR_BLOFFBRIGHTNESS INDENT "Av Ljusstyrka"
+#define TR_BLONBRIGHTNESS "På Ljusstyrka"
+#define TR_BLOFFBRIGHTNESS "Av Ljusstyrka"
#define TR_SPLASHSCREEN "Startbild"
#define TR_PWR_ON_DELAY "Pwr On delay"
#define TR_PWR_OFF_DELAY "Pwr Off delay"
-#define TR_BLCOLOR INDENT "Color"
-#define TR_THROTTLEWARNING TR("Gasvarning", INDENT "Gasvarning")
+#define TR_BLCOLOR "Color"
+#define TR_THROTTLE_WARNING TR("Gasvarning", INDENT "Gasvarning")
#define TR_SWITCHWARNING TR("Bryt.varn.", INDENT "Brytarvarning")
#define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders")
#define TR_SLIDERWARNING TR(INDENT "Slid. pos.", INDENT "Slider positions")
#define TR_POTWARNING TR("Rattvarn.", INDENT "Rattvarning")
#define TR_TIMEZONE TR("Tidszon", "GPS Tidszon")
-#define TR_ADJUST_RTC TR("Adjust RTC", INDENT "Adjust RTC")
+#define TR_ADJUST_RTC TR("Adjust RTC", "Adjust RTC")
#define TR_GPS "GPS"
#define TR_RXCHANNELORD "Kanaler i RX"
#define TR_STICKS "Sticks"
@@ -590,7 +588,6 @@
#define OFS_RX 4
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "DATA SAKNAS"
-#define TR_TOTTM1TM2THRTHP "\037\146SES\036TM1\037\146TM2\036THR\037\146TH%"
#define TR_US "us"
#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us"
#define TR_TMIXMAXMS "Tmix max"
@@ -602,9 +599,8 @@
#define TR_FM "FL"
#define TR_MIX "MIX"
#define TR_EEPROMLOWMEM "Minnesbrist"
-#define TR_ALERT "\016OBS"
-#define TR_PRESSANYKEYTOSKIP "Tryck ned en knapp"
-#define TR_THROTTLENOTIDLE "Gasen är påslagen!"
+#define TR_PRESS_ANY_KEY_TO_SKIP "Tryck ned en knapp"
+#define TR_THROTTLE_NOT_IDLE "Gasen är påslagen!"
#define TR_ALARMSDISABLED "Alarmen Avstängda!"
#define TR_PRESSANYKEY "Tryck ned en knapp"
#define TR_BADEEPROMDATA "Minnet kan inte tolkas"
@@ -612,7 +608,7 @@
#define TR_EEPROMFORMATTING "Minnet Nollställs"
#define TR_STORAGE_FORMAT "SD-Lagring förbereds"
#define TR_EEPROMOVERFLOW "Minnesfel"
-#define TR_MENURADIOSETUP "INSTÄLLNINGAR"
+#define TR_RADIO_SETUP "INSTÄLLNINGAR"
#define TR_MENUDATEANDTIME "DAG OCH TID"
#define TR_MENUTRAINER "TRAINER (PPM IN)"
#define TR_MENUSPECIALFUNCS "GLOBALA FUNKTIONER"
@@ -628,7 +624,7 @@
#define TR_CHANNELS2FAILSAFE "Channels=>Failsafe"
#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe"
#define TR_MENUMODELSEL TR("MODELL","VÄLJ MODELL")
-#define TR_MENUSETUP TR("VÄRDEN","MODELLINSTÄLLNINGAR")
+#define TR_MENU_MODEL_SETUP TR("VÄRDEN","MODELLINSTÄLLNINGAR")
#define TR_MENUFLIGHTMODE "FLYGLÄGE"
#define TR_MENUFLIGHTMODES "FLYGLÄGEN"
#define TR_MENUHELISETUP "HELIKOPTER"
@@ -659,7 +655,7 @@
#define TR_MULTI_RFTUNE TR("Freq tune", "RF Freq. fine tune")
#define TR_MULTI_TELEMETRY "Telemetry"
#define TR_MULTI_VIDFREQ TR("Vid. freq.", "Video frequency")
-#define TR_RFPOWER "RF Power"
+#define TR_RF_POWER "RF Power"
#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID")
#define TR_MULTI_OPTION TR("Option", "Option value")
#define TR_MULTI_AUTOBIND TR(INDENT "Autobind",INDENT "Bind on channel")
@@ -689,14 +685,13 @@
#define TR_FLYSKY_TELEMETRY TR("FlySky RSSI #", "Use FlySky RSSI value without rescalling")
#define TR_LATITUDE "Breddgrad"
#define TR_LONGITUDE "Längdgrad"
-#define TR_GPSCOORD TR("GPS-Koordinater", "GPS-koordinatsystem")
+#define TR_GPS_COORDS_FORMAT TR("GPS-Koordinater", "GPS-koordinatsystem")
#define TR_VARIO TR("Vario", "Variometer")
-#define TR_PITCH_AT_ZERO INDENT "Ton vid Noll"
-#define TR_PITCH_AT_MAX INDENT "Ton vid Max"
-#define TR_REPEAT_AT_ZERO INDENT "Repetera vid Noll"
-#define TR_POWEROFF "\027Stänger Av..."
+#define TR_PITCH_AT_ZERO "Ton vid Noll"
+#define TR_PITCH_AT_MAX "Ton vid Max"
+#define TR_REPEAT_AT_ZERO "Repetera vid Noll"
#define TR_SHUTDOWN "STÄNGER AV"
-#define TR_SAVEMODEL "Spara modellinställn."
+#define TR_SAVE_MODEL "Spara modellinställn."
#define TR_BATT_CALIB "Kalib. Batteri"
#define TR_CURRENT_CALIB "Kalib. Ström"
#define TR_VOLTAGE INDENT"Volt"
@@ -753,7 +748,7 @@
#define TR_EEPROMWARN "EEPROM"
#define TR_STORAGE_WARNING "LAGRING"
#define TR_EEPROM_CONVERTING "EEPROM Konvertering"
-#define TR_THROTTLEWARN "GAS"
+#define TR_THROTTLE_UPPERCASE "GAS"
#define TR_ALARMSWARN "ALARM"
#define TR_SWITCHWARN "BRYTARE"
#define TR_FAILSAFEWARN "FAILSAFE"
@@ -769,9 +764,9 @@
#define TR_NO_FAILSAFE "Failsafe ej given"
#define TR_KEYSTUCK "Knapp-fel"
#define TR_INVERT_THR TR("Invert.Gas?", "Invertera Gasen?")
-#define TR_SPEAKER_VOLUME INDENT "Volym"
+#define TR_VOLUME "Volym"
#define TR_LCD "LCD"
-#define TR_BRIGHTNESS INDENT "Ljusstyrka"
+#define TR_BRIGHTNESS "Ljusstyrka"
#define TR_CPU_TEMP "CPU temp.\016>"
#define TR_CPU_CURRENT "Ström\022>"
#define TR_CPU_MAH "Förbrukn."
@@ -882,11 +877,11 @@
#define TR_MENU_SPECTRUM_ANALYSER "SPECTRUM ANALYSER"
#define TR_MENU_POWER_METER "POWER METER"
#define TR_SENSOR "SENSOR"
-#define TR_COUNTRYCODE "Landskod"
+#define TR_COUNTRY_CODE "Landskod"
#define TR_USBMODE "USB Mode"
-#define TR_JACKMODE "Jack Mode"
-#define TR_VOICELANG "Röstspråk"
-#define TR_UNITSSYSTEM "Enheter"
+#define TR_JACK_MODE "Jack Mode"
+#define TR_VOICE_LANGUAGE "Röstspråk"
+#define TR_UNITS_SYSTEM "Enheter"
#define TR_EDIT "Redigera"
#define TR_INSERT_BEFORE "Addera Före"
#define TR_INSERT_AFTER "Addera Efter"
@@ -1163,7 +1158,7 @@
#define TR_SETUP "Setup"
#define TR_MAINVIEWX "Main view X"
#define TR_LAYOUT "Layout"
-#define TR_ADDMAINVIEW "Add main view"
+#define TR_ADD_MAIN_VIEW "Add main view"
#define TR_BACKGROUND_COLOR "Background color"
#define TR_MAIN_COLOR "Main color"
#define TR_TEXT_VIEWER "Text Viewer"
diff --git a/radio/util/font2png.py b/radio/util/font2png.py
deleted file mode 100755
index 6ed21890c..000000000
--- a/radio/util/font2png.py
+++ /dev/null
@@ -1,95 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import sys, os
-import glob
-
-from PIL import Image, ImageDraw, ImageFont
-
-chars_en = u""" !"#$%&'()*+,-./0123456789:;<=>?°ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz~|≥"""
-chars_fr = u"""éèàîç"""
-chars_de = u"""ÄäÖöÜüß"""
-chars_cz = u"""ěščřžýáíéňóůúďťĚŠČŘŽÝÁÍÉŇÓÚŮĎŤ"""
-chars_es = u"""Ññ"""
-chars_fi = u"""åäöÅÄÖ"""
-chars_it = u"""àù"""
-chars_pl = u"""ąćęłńóśżźĄĆĘŁŃÓŚŻŹ"""
-chars_pt = u"""ÁáÂâÃãÀàÇçÉéÊêÍíÓóÔôÕõÚú"""
-
-COUNT_EXTRA_CHARS = 21
-
-chars_extra = u"".join([chr(1+i) for i in range(COUNT_EXTRA_CHARS)])
-chars = chars_en + chars_extra + chars_fr + chars_de + chars_cz + chars_es + chars_fi + chars_it + chars_pl
-
-
-def createFontBitmap(filename, fontname, fontsize, fontoffset, foreground, background, coordsfile=True):
- coords = [fontsize + 4]
- font_filename = 'fonts/' + fontname + '.ttf'
-
- print("Font filename: %s" % font_filename)
- font = ImageFont.truetype(font_filename, fontsize)
-
- extraImage = None
- extraFilename = 'fonts/extra_%dpx.png' % fontsize
-
- try:
- extraImage = Image.open(extraFilename)
- extraImage = extraImage.convert('RGB')
-
- except IOError:
- print("Missing extra symbol filename %s" % extraFilename)
-
- def getCharWidth(c):
- if c in chars_extra:
- if extraImage:
- # Extra characters 16px
- #if fontsize == 16:
- if ord(c) <= 9:
- return 13
- else:
- return 15
- else:
- return 0
- elif c == " ":
- return 4
- else:
- w, h = font.getsize(c)
- return w + 1
-
- def getFontWidth():
- width = 0
- for c in chars:
- width += getCharWidth(c)
- return width
-
- width = getFontWidth()
- image = Image.new('RGB', (width, fontsize + 4), background)
-
- print(fontsize + 4)
- draw = ImageDraw.Draw(image)
-
- width = 0
- for c in chars:
- coords.append(width)
-
- if c in chars_extra:
- if extraImage and c == chars_extra[0]:
- image.paste(extraImage.copy(), (width, fontsize % 2))
- elif c == " ":
- pass
- else:
- w, h = font.getsize(c)
- draw.text((width + 1, fontoffset), c, fill=foreground, font=font)
-
- width += getCharWidth(c)
-
- coords.append(width)
-
- image.save(filename + ".png")
- if coordsfile:
- with open(filename + ".specs", "w") as f:
- f.write(",".join(str(tmp) for tmp in coords))
-
-
-if __name__ == "__main__":
- createFontBitmap(sys.argv[4], sys.argv[1], int(sys.argv[2]), int(sys.argv[3]), (0, 0, 0), (255, 255, 255))
diff --git a/radio/util/translate.py b/radio/util/translate.py
deleted file mode 100755
index 53e113ca7..000000000
--- a/radio/util/translate.py
+++ /dev/null
@@ -1,193 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-# Imports
-import argparse
-import codecs
-import sys
-
-translations = {'cz_reduced': [('\\200', u'á'),
- ('\\201', u'č'),
- ('\\201', u'Č'),
- ('\\202', u'é'),
- ('\\203', u'ě'),
- ('\\203', u'Ě'),
- ('\\204', u'í'),
- ('\\205', u'ó'),
- ('\\206', u'ř'),
- ('\\207', u'š'),
- ('\\207', u'Š'),
- ('\\210', u'ú'),
- ('\\210', u'Ú'),
- ('\\211', u'ů'),
- ('\\211', u'Ů'),
- ('\\212', u'ý'),
- ('\\213', u'Á'),
- ('\\214', u'Í'),
- ('\\215', u'Ř'),
- ('\\216', u'Ý'),
- ('\\217', u'ž'),
- ('\\217', u'Ž'),
- ('\\220', u'É')],
-
- 'cz': [('\\200', u'ě'),
- ('\\201', u'š'),
- ('\\202', u'č'),
- ('\\203', u'ř'),
- ('\\204', u'ž'),
- ('\\205', u'ý'),
- ('\\206', u'á'),
- ('\\207', u'í'),
- ('\\210', u'é'),
- ('\\211', u'ň'),
- ('\\212', u'ó'),
- ('\\213', u'ů'),
- ('\\214', u'ú'),
- ('\\215', u'ď'),
- ('\\216', u'ť'),
- ('\\217', u'Ě'),
- ('\\220', u'Š'),
- ('\\221', u'Č'),
- ('\\222', u'Ř'),
- ('\\223', u'Ž'),
- ('\\224', u'Ý'),
- ('\\225', u'Á'),
- ('\\226', u'Í'),
- ('\\227', u'É'),
- ('\\230', u'Ň'),
- ('\\231', u'Ó'),
- ('\\232', u'Ú'),
- ('\\233', u'Ů'),
- ('\\234', u'Ď'),
- ('\\235', u'Ť')],
-
- 'de': [('\\200', u'Ä'),
- ('\\201', u'ä'),
- ('\\202', u'Ö'),
- ('\\203', u'ö'),
- ('\\204', u'Ü'),
- ('\\205', u'ü'),
- ('\\206', u'ß')],
-
- 'es': [('\\200', u'Ñ'),
- ('\\201', u'ñ')],
-
- 'fi': [('\\200', u'å'),
- ('\\201', u'ä'),
- ('\\202', u'ö'),
- ('\\203', u'Å'),
- ('\\204', u'Ä'),
- ('\\205', u'Ö')],
-
- 'fr': [('\\200', u'é'),
- ('\\201', u'è'),
- ('\\202', u'à'),
- ('\\203', u'î'),
- ('\\204', u'ç')],
-
- 'it': [('\\200', u'à'),
- ('\\201', u'ù')],
-
- 'pl': [('\\200', u'ą'),
- ('\\201', u'ć'),
- ('\\202', u'ę'),
- ('\\203', u'ł'),
- ('\\204', u'ń'),
- ('\\205', u'ó'),
- ('\\206', u'ś'),
- ('\\207', u'ż'),
- ('\\210', u'ź'),
- ('\\211', u'Ą'),
- ('\\212', u'Ć'),
- ('\\213', u'Ę'),
- ('\\214', u'Ł'),
- ('\\215', u'Ń'),
- ('\\216', u'Ó'),
- ('\\217', u'Ś'),
- ('\\220', u'Ż'),
- ('\\221', u'Ź')],
-
- 'pt': [('\\200', u'Á'),
- ('\\201', u'á'),
- ('\\202', u'Â'),
- ('\\203', u'â'),
- ('\\204', u'Ã'),
- ('\\205', u'ã'),
- ('\\206', u'À'),
- ('\\207', u'à'),
- ('\\210', u'Ç'),
- ('\\211', u'ç'),
- ('\\212', u'É'),
- ('\\213', u'é'),
- ('\\214', u'Ê'),
- ('\\215', u'ê'),
- ('\\216', u'Í'),
- ('\\217', u'í'),
- ('\\218', u'Ó'),
- ('\\219', u'ó'),
- ('\\220', u'Ô'),
- ('\\221', u'ô'),
- ('\\222', u'Õ'),
- ('\\223', u'õ'),
- ('\\224', u'Ú'),
- ('\\225', u'ú'), ],
-
- 'se': [('\\200', u'å'),
- ('\\201', u'ä'),
- ('\\202', u'ö'),
- ('\\203', u'Å'),
- ('\\204', u'Ä'),
- ('\\205', u'Ö')],
-
- 'en': [],
-
- 'nl': [],
-
- 'all': [('\\306', u'Δ'),
- ('\\173', u'~'),
- ('\\036', u'\\n'),
- ('\\035', u'\\t')],
- }
-
-# Take care of command line options
-parser = argparse.ArgumentParser(description='Encoder for open9x translations')
-parser.add_argument('input', action="store", help="Input file name")
-parser.add_argument('output', action="store", help="Output file name")
-parser.add_argument('language', action="store", help="Two letter language identifier")
-parser.add_argument("--reverse", help="Reversed char conversion (from number to char)", action="store_true")
-args = parser.parse_args()
-
-if args.language not in translations:
- parser.error(args.language + ' is not a supported language. Try one of the supported ones: ' + str(list(translations.keys())))
- sys.exit()
-
-if args.reverse:
- for translation in translations:
- translations[translation] = [(after, before) for (before, after) in translations[translation]]
-
-# Read the input file into a buffer
-in_file = codecs.open(args.input, "r", "utf-8")
-
-# Write the result to a temporary file
-out_file = codecs.open(args.output, 'w', 'utf-8')
-
-for line in in_file.readlines():
- # Do the special chars replacements
- for after, before in translations[args.language] + translations["all"]:
- line = line.replace(before, after)
- if line.startswith("#define ZSTR_"):
- before = line[32:-2]
- after = ""
- for c in before:
- if ord(c) >= ord('A') and ord(c) <= ord('Z'):
- c = "\\%03o" % (ord(c) - ord('A') + 1)
- elif ord(c) >= ord('a') and ord(c) <= ord('z'):
- c = "\\%03o" % (-ord(c) + ord('a') + 255)
- elif ord(c) >= ord('0') and ord(c) <= ord('9'):
- c = "\\%03o" % (ord(c) - ord('0') + 27)
- after = after + c
- line = line[:32] + after + line[-2:]
- out_file.write(line)
-
-out_file.close()
-in_file.close()
diff --git a/tools/build-font-bitmap.py b/tools/build-font-bitmap.py
new file mode 100755
index 000000000..2adcc3dca
--- /dev/null
+++ b/tools/build-font-bitmap.py
@@ -0,0 +1,111 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import argparse
+import os
+from PIL import Image, ImageDraw, ImageFont
+from charset import get_chars, special_chars, extra_chars
+
+
+class FontBitmap:
+ def __init__(self, chars, font_size, font_name, cn_font_name, foreground, background):
+ self.chars = chars
+ self.font_size = font_size
+ self.foreground = foreground
+ self.background = background
+
+ self.font, self.font_offset = self.load_font(font_name)
+ self.cn_font, self.cn_font_offset = self.load_font(cn_font_name)
+ self.extra_bitmap = self.load_extra_bitmap()
+
+ def load_extra_bitmap(self):
+ try:
+ extra_filename = 'fonts/extra_%dpx.png' % self.font_size
+ extra_image = Image.open(extra_filename)
+ return extra_image.convert('RGB')
+ except IOError:
+ return None
+
+ def load_font(self, font_name):
+ # print(font_name)
+ font_name, font_offset = font_name.split(":")
+ for ext in (".ttf", ".otf"):
+ path = 'fonts/' + font_name + ext
+ if os.path.exists(path):
+ return ImageFont.truetype(path, self.font_size), int(font_offset)
+
+ def get_char_width(self, c):
+ if c in extra_chars:
+ if self.extra_bitmap:
+ # Extra characters 16px
+ # if fontsize == 16:
+ if extra_chars.index(c) < 9:
+ return 13
+ else:
+ return 15
+ else:
+ return 0
+ elif c == " ":
+ return 4
+ elif c in special_chars["cn"]:
+ w, h = self.cn_font.getsize(c)
+ return w + 1
+ else:
+ w, h = self.font.getsize(c)
+ return w + 1
+
+ def get_width(self):
+ width = 0
+ for c in self.chars:
+ width += self.get_char_width(c)
+ return width
+
+ def generate(self, filename, generate_coords_file=True):
+ coords = [self.font_size + 4]
+ width = self.get_width()
+ image = Image.new('RGB', (width, self.font_size + 4), self.background)
+ draw = ImageDraw.Draw(image)
+
+ width = 0
+ for c in self.chars:
+ coords.append(width)
+
+ if c in extra_chars:
+ if self.extra_bitmap and c == extra_chars[0]:
+ if self.font_size == 16:
+ offset = 1
+ else:
+ offset = self.font_size % 2
+ image.paste(self.extra_bitmap.copy(), (width, offset))
+ elif c == " ":
+ pass
+ elif c in special_chars["cn"]:
+ draw.text((width + 1, self.cn_font_offset), c, fill=self.foreground, font=self.cn_font)
+ else:
+ draw.text((width + 1, self.font_offset), c, fill=self.foreground, font=self.font)
+
+ width += self.get_char_width(c)
+
+ coords.append(width)
+
+ image.save(filename + ".png")
+ if generate_coords_file:
+ with open(filename + ".specs", "w") as f:
+ f.write(",".join(str(tmp) for tmp in coords))
+
+
+def main():
+ parser = argparse.ArgumentParser(description="Builder for OpenTX font files")
+ parser.add_argument('--output', help="Output file name")
+ parser.add_argument('--subset', help="Subset", default="all")
+ parser.add_argument('--size', type=int, help="Font size")
+ parser.add_argument('--font', help="Font name")
+ parser.add_argument('--cn-font', help="Chinese font name")
+ args = parser.parse_args()
+
+ font = FontBitmap(get_chars(args.subset), args.size, args.font, args.cn_font, (0, 0, 0), (255, 255, 255))
+ font.generate(args.output)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/tools/charset.py b/tools/charset.py
new file mode 100644
index 000000000..eda770294
--- /dev/null
+++ b/tools/charset.py
@@ -0,0 +1,86 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# used ? Δ~\n\t
+
+import os
+
+standard_chars = "!#$%&'()*+,-./0123456789:;<=>?°ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz~|≥"
+
+extra_chars = "".join([chr(0x10000+i) for i in range(21)])
+
+
+def chinese_chars():
+ charset = set()
+ tools_path = os.path.dirname(os.path.realpath(__file__))
+ with open(os.path.join(tools_path, "../radio/src/translations/cn.h.txt")) as f:
+ data = f.read()
+ for c in data:
+ if 0x4E00 <= ord(c) <= 0x9FFF:
+ charset.add(c)
+ # print(ord(c))
+ result = list(charset)
+ result.sort()
+ return result
+
+
+special_chars = {
+ "en": "",
+ "fr": "éèàîç",
+ "de": "ÄäÖöÜüß",
+ "cz": "ěščřžýáíéňóůúďťĚŠČŘŽÝÁÍÉŇÓÚŮĎŤ",
+ "nl": "",
+ "es": "Ññ",
+ "fi": "åäöÅÄÖ",
+ "it": "àù",
+ "pl": "ąćęłńóśżźĄĆĘŁŃÓŚŻŹ",
+ "pt": "ÁáÂâÃãÀàÇçÉéÊêÍíÓóÔôÕõÚú",
+ "se": "åäöÅÄÖ",
+ "cn": "".join(chinese_chars())
+}
+
+subset_lowercase = {
+ "Č": "č",
+ "Ě": "ě",
+ "Š": "š",
+ "Ú": "ú",
+ "Ů": "ů",
+ "Ž": "ž"
+}
+
+# print("CN charset: %d symbols" % len(special_chars["cn"]))
+
+
+def get_chars(subset):
+ result = standard_chars + extra_chars
+ if subset == "all":
+ for key, chars in special_chars.items():
+ result += "".join([char for char in chars if char not in result])
+ else:
+ if subset in special_chars:
+ result += "".join([char for char in special_chars[subset] if char not in subset_lowercase])
+ return result
+
+
+def get_chars_encoding(subset):
+ result = {}
+ if subset == "all":
+ chars = get_chars(subset)
+ for char in chars:
+ if char in special_chars["cn"]:
+ index = special_chars["cn"].index(char) + 1
+ if index >= 0x100:
+ index += 1
+ result[char] = "\\%03o\\%03o" % (0xFE + ((index >> 8) & 0x01), index & 0xFF)
+ elif char not in standard_chars and char not in extra_chars:
+ result[char] = "\\%03o" % (0xC0 + chars.index(char) - len(standard_chars))
+ else:
+ offset = 128 - len(standard_chars)
+ chars = get_chars(subset)
+ for char in chars:
+ if char not in standard_chars:
+ result[char] = "\\%03o" % (offset + chars.index(char))
+ for upper, lower in subset_lowercase.items():
+ if lower in result:
+ result[upper] = result[lower]
+ return result
diff --git a/tools/encode-translation.py b/tools/encode-translation.py
new file mode 100755
index 000000000..10282afa3
--- /dev/null
+++ b/tools/encode-translation.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import argparse
+import codecs
+import sys
+from charset import special_chars, get_chars_encoding
+
+
+def main():
+ parser = argparse.ArgumentParser(description='Encoder for OpenTX translations')
+ parser.add_argument('input', action="store", help="Input file name")
+ parser.add_argument('output', action="store", help="Output file name")
+ parser.add_argument('language', action="store", help="Two letter language identifier", default=None)
+ parser.add_argument("--reverse", help="Reversed char conversion (from number to char)", action="store_true")
+ args = parser.parse_args()
+
+ if args.language != "all" and args.language not in special_chars:
+ parser.error(args.language + ' is not a supported language. Try one of the supported ones: %s' % list(special_chars.keys()))
+ sys.exit()
+
+ # if args.reverse:
+ # for translation in special_chars:
+ # translations[translation] = [(after, before) for (before, after) in translations[translation]]
+
+ # Read the input file into a buffer
+ in_file = codecs.open(args.input, "r", "utf-8")
+
+ # Write the result to a temporary file
+ out_file = codecs.open(args.output, 'w', 'utf-8')
+
+ for line in in_file.readlines():
+ # Do the special chars replacements
+ for before, after in get_chars_encoding(args.language).items():
+ line = line.replace(before, after)
+ if line.startswith("#define ZSTR_"):
+ before = line[32:-2]
+ after = ""
+ for c in before:
+ if ord('A') <= ord(c) <= ord('Z'):
+ c = "\\%03o" % (ord(c) - ord('A') + 1)
+ elif ord('a') <= ord(c) <= ord('z'):
+ c = "\\%03o" % (-ord(c) + ord('a') + 255)
+ elif ord('0') <= ord(c) <= ord('9'):
+ c = "\\%03o" % (ord(c) - ord('0') + 27)
+ after = after + c
+ line = line[:32] + after + line[-2:]
+ out_file.write(line)
+
+ out_file.close()
+ in_file.close()
+
+
+if __name__ == "__main__":
+ main()
diff --git a/tools/nightly23/build-nightly.sh b/tools/nightly23/build-nightly.sh
deleted file mode 100755
index 391f468ac..000000000
--- a/tools/nightly23/build-nightly.sh
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/bin/bash
-
-set -e
-
-branch=2.3.0
-docker=nightly23
-workdir=/home/opentx/nightly23
-output=/var/www/html/2.3/nightlies
-version=2.3.0
-
-echo "Increment nightly index"
-index=`cat index.txt`
-index=`expr $index + 1`
-suffix="N$index"
-
-cd ${workdir}
-
-echo "Create on-demand build environment"
-cp code/radio/util/Dockerfile .
-docker build -t new-${docker} --build-arg OPENTX_VERSION_SUFFIX=${suffix} .
-docker rmi -f ${docker} || true
-docker tag new-${docker} ${docker}
-docker rmi -f new-${docker}
-
-echo "Call sdcard generation"
-code/tools/nightly23/build-sdcard.sh
-
-echo "Delete companion container in case of previous failed atempt"
-if [ "$(docker ps -aq -f name=companion)" ]; then
- docker rm --force companion
-fi
-
-echo "Build firmware stamps"
-docker run -dit --name companion -v /home/opentx/${docker}:/opentx ${docker}
-docker exec companion sh -c "mkdir -p build && cd build && cmake /opentx/code && cp radio/src/stamp.h /opentx/binaries/stamp-opentx.txt"
-cp -f ${workdir}/binaries/stamp-opentx.txt ${output}/firmware
-# These radios are currently not enabled
-# echo "#define BLOCK \"x10,x12s\"" >> ${output}/firmware/stamp-opentx.txt
-echo "#define ERROR \"MOVE_TO_RC\"" >> ${output}/firmware/stamp-opentx.txt
-docker exec companion rm -rf build
-
-echo "Check if Linux companion is needed"
-if [ ! -f ${output}/companion/linux/companion23_${version}${suffix}_amd64.deb ]; then
- echo "Build Linux companion"
- docker exec companion /opentx/code/tools/build-companion-nightly.sh /opentx/code /opentx/binaries/ ${suffix}
- cp -f binaries/*.deb ${output}/companion/linux/companion23_${version}${suffix}_amd64.deb
-fi
-docker stop companion
-docker rm companion
-
-echo "Check if Windows companion is needed"
-if [ ! -f ${output}/companion/windows/companion-windows-${version}${suffix}.exe ]; then
- echo "Build Windows companion"
- cd ${output}/companion/windows
- wget --tries=1 --read-timeout=6000 -O- http://winbox.open-tx.org/companion-builds/compile23.php?branch=$branch\&suffix=${suffix}
- wget -O companion-windows-${version}${suffix}.exe http://winbox.open-tx.org/companion-builds/companion-windows-${version}${suffix}.exe
- chmod -Rf g+w companion-windows-${version}${suffix}.exe
-fi
-
-echo "Check if Macosc companion is needed"
-if [ ! -f ${output}/companion/macosx/opentx-companion-${version}${suffix}.dmg ]; then
- echo "Build Macosx companion"
- cd ${output}/companion/macosx
- wget --tries=1 -qO- http://opentx.blinkt.de:8080/~opentx/build-opentx.py?branch=${branch}\&suffix=${suffix}
- wget -O opentx-companion-${version}${suffix}.dmg http://opentx.blinkt.de:8080/~opentx/builds/opentx-companion-${version}${suffix}.dmg
- chmod -Rf g+w opentx-companion-${version}${suffix}.dmg
-fi
-
-echo "Update Companion stamps"
-echo "#define VERSION \"${version}${suffix}\"" > ${output}/companion/companion-windows.stamp
-cp -f ${output}/companion/companion-windows.stamp ${output}/companion/companion-linux.stamp
-cp -f ${output}/companion/companion-windows.stamp ${output}/companion/companion-macosx.stamp
-
-echo "Clean binaries It will be hosting built on demand firmware"
-rm -rf ${workdir}/binaries/*
-rm -rf ${workdir}/binaries/.lock
-
-echo "Release $index successfully completed"
-echo $index > ${workdir}/index.txt
diff --git a/tools/nightly23/build-sdcard.sh b/tools/nightly23/build-sdcard.sh
deleted file mode 100755
index a294794d1..000000000
--- a/tools/nightly23/build-sdcard.sh
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/bin/bash
-
-set -e
-set -x
-
-workdir=/home/opentx/nightly23
-output=/var/www/html/2.3/nightlies
-
-# Handle opentx.sdcard.version
-sdcard_version="2.3V"$(grep 'set(SDCARD_REVISION' ${workdir}/code/CMakeLists.txt | grep -o '".*"' | sed 's/"//g')
-echo ${sdcard_version} > ${workdir}/code/radio/sdcard/horus/opentx.sdcard.version
-echo ${sdcard_version} > ${workdir}/code/radio/sdcard/taranis-x9/opentx.sdcard.version
-echo ${sdcard_version} > ${workdir}/code/radio/sdcard/taranis-x7/opentx.sdcard.version
-
-if cmp --silent ${workdir}/code/radio/sdcard/horus/opentx.sdcard.version ${workdir}/opentx.sdcard.version
-then
- exit
-else
- cd ${workdir}
-
- # Copy git sdcard data
- rm -Rf ${workdir}/sdcard
- cp -r ${workdir}/code/radio/sdcard .
-
- # Get images for Horus
- mkdir -p ${workdir}/sdcard/horus/IMAGES
- cp /home/opentx/horus-bitmaps/* ${workdir}/sdcard/horus/IMAGES/
-
-
- # Request sound pack generation
- if [[ ! -d /tmp/SOUNDS/fr ]];then
- ${workdir}/code/tools/nightly23/tts.py en csv files
- fi
- if [[ ! -d /tmp/SOUNDS/es ]];then
- ${workdir}/code/tools/nightly23/tts.py fr csv files
- fi
- if [[ ! -d /tmp/SOUNDS/it ]];then
- ${workdir}/code/tools/nightly23/tts.py es csv files
- fi
- if [[ ! -d /tmp/SOUNDS/de ]];then
- ${workdir}/code/tools/nightly23/tts.py it csv files
- fi
- if [[ ! -d /tmp/SOUNDS/cz ]];then
- ${workdir}/code/tools/nightly23/tts.py de csv files
- fi
- if [[ ! -d /tmp/SOUNDS/pl ]];then
- ${workdir}/code/tools/nightly23/tts.py cz csv files
- fi
- if [[ ! -d /tmp/SOUNDS/ru ]];then
- ${workdir}/code/tools/nightly23/tts.py pt csv files
- fi
- ${workdir}/code/tools/nightly23/tts.py ru csv psv files
-
- # Create sdcards.zips for supported platforms
- mv /tmp/SOUNDS ${workdir}/sdcard/horus/
- mkdir ${workdir}/sdcard/taranis-x9/SOUNDS
- mkdir ${workdir}/sdcard/taranis-x7/SOUNDS
- cp -r ${workdir}/sdcard/horus/SOUNDS ${workdir}/sdcard/taranis-x9/
- cp -r ${workdir}/sdcard/horus/SOUNDS ${workdir}/sdcard/taranis-x7/
- cd ${workdir}/sdcard/horus && zip -r ${output}/sdcard/sdcard-horus-${sdcard_version}.zip *
- cd ${workdir}/sdcard/taranis-x9 && zip -r ${output}/sdcard/sdcard-taranis-x9-${sdcard_version}.zip *
- cd ${workdir}/sdcard/taranis-x7 && zip -r ${output}/sdcard/sdcard-taranis-x7-${sdcard_version}.zip *
-
- # Create symlinks for other radios
- ln -s ${output}/sdcard/sdcard-taranis-x7-${sdcard_version}.zip ${output}/sdcard/sdcard-taranis-xlite-${sdcard_version}.zip
- ln -s ${output}/sdcard/sdcard-taranis-x7-${sdcard_version}.zip ${output}/sdcard/sdcard-taranis-x9lite-${sdcard_version}.zip
- ln -s ${output}/sdcard/sdcard-taranis-x7-${sdcard_version}.zip ${output}/sdcard/sdcard-jumper-t12-${sdcard_version}.zip
-
- # remove LUA stuff for 9x platform
- rm -Rf ${workdir}/sdcard/taranis-x7/SCRIPTS
- rm -Rf ${workdir}/sdcard/taranis-x7/FrSky-utilities
- cd ${workdir}/sdcard/taranis-x7 && zip -r ${output}/sdcard/sdcard-9xarm-${sdcard_version}.zip *
-
- rm -Rf ${workdir}/sdcard
- cp -r ${workdir}/code/radio/sdcard/horus/opentx.sdcard.version ${workdir}
-fi
diff --git a/tools/nightly23/build-sdcard.sh.winbox b/tools/nightly23/build-sdcard.sh.winbox
deleted file mode 100755
index 971d247ca..000000000
--- a/tools/nightly23/build-sdcard.sh.winbox
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/bash
-
-set -e
-
-branch=2.3
-workdir=/home/opentx/nightly23
-output=/var/www/html/2.3/nightly
-
-cd ${workdir}
-
-# Copy git sdcard data
-rm -Rf ${workdir}/sdcard
-cp -r ${workdir}/code/radio/sdcard .
-
-# Get images for Horus
-mkdir -p ${workdir}/sdcard/horus/IMAGES
-cp /home/opentx/horus-bitmaps/* ${workdir}/sdcard/horus/IMAGES/
-
-# Request sound pack generation
-wget -qO- http://winbox.open-tx.org/voice-builds/compile23.php?branch=${branch}
-
-# Get sounds
-cd sdcard
-wget http://winbox.open-tx.org/voice-builds/english-irish-taranis.zip
-wget http://winbox.open-tx.org/voice-builds/english-scottish-taranis.zip
-wget http://winbox.open-tx.org/voice-builds/english-american-taranis.zip
-wget http://winbox.open-tx.org/voice-builds/english-australian-taranis.zip
-wget http://winbox.open-tx.org/voice-builds/french-taranis.zip
-
-# Prepare the sdcard zip files for Horus
-unzip english-irish-taranis.zip -d ${workdir}/sdcard/horus
-mv ${workdir}/sdcard/horus/SOUNDS/en ${workdir}/sdcard/horus/SOUNDS/en-irish
-unzip english-scottish-taranis.zip -d ${workdir}/sdcard/horus
-mv ${workdir}/sdcard/horus/SOUNDS/en ${workdir}/sdcard/horus/SOUNDS/en-scottish
-unzip english-australian-taranis.zip -d ${workdir}/sdcard/horus
-mv ${workdir}/sdcard/horus/SOUNDS/en ${workdir}/sdcard/horus/SOUNDS/en-australian
-unzip english-american-taranis -d ${workdir}/sdcard/horus
-unzip french-taranis.zip -d ${workdir}/sdcard/horus
-wget -O ${workdir}/sdcard/horus/SOUNDS/en/english.csv http://winbox.open-tx.org/voice-builds/english-american-taranis.csv
-wget -O ${workdir}/sdcard/horus/SOUNDS/fr/french.csv http://winbox.open-tx.org/voice-builds/french-taranis.csv
-
-# Duplicate for Taranis and create sdcards.zip
-mkdir ${workdir}/sdcard/taranis/SOUNDS
-cp -r ${workdir}/sdcard/horus/SOUNDS ${workdir}/sdcard/taranis/
-rm -f ${workdir}/sdcard/*.zip
-cd ${workdir}/sdcard/taranis && zip -r ${output}/sdcard/sdcard-taranis.zip *
-cd ${workdir}/sdcard/horus && zip -r ${output}/sdcard/sdcard-horus.zip *
-rm -Rf ${workdir}/sdcard
diff --git a/tools/nightly23/tts.py b/tools/nightly23/tts.py
deleted file mode 100755
index 0f42804d5..000000000
--- a/tools/nightly23/tts.py
+++ /dev/null
@@ -1,154 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-
-# This script is a modified version to support Linux TTS file generation using PicoTTS
-
-# Sound pack maintainers (incomplete list) by language alphabetical order
-# Czech : Martin Hotar
-# French : Bertrand Songis & André Bernet
-# English : Rob Thompson & Martin Hotar
-# German : Romolo Manfredini (Some corrections by Peer)
-# Italian : Romolo Manfredini
-# Portuguese : Romolo Manfredini
-# Spanish : Romolo Manfredini (With the help of Jose Moreno)
-
-# from __future__ import print_function
-
-import os
-import sys
-import subprocess
-import zipfile
-from gtts import gTTS
-from tts_common import *
-
-
-board = "taranis"
-
-reload(sys)
-sys.setdefaultencoding('utf8')
-
-SOURCE_DIRECTORY = os.path.dirname(os.path.realpath(__file__))
-lib_path = os.path.abspath(os.path.join(SOURCE_DIRECTORY, '..', '..', 'radio', 'util'))
-sys.path.append(lib_path)
-
-def generate(str, filename):
- if 0:
- output = "output.wav"
- command = 'pico2wave -l=%s -w=%s "%s"' % (voice, output, str)
- os.system(command.encode('utf-8'))
- command = "sox %s -r 32000 %s reverse silence 1 0.1 0.1%% reverse" % (output, filename)
- os.system(command.encode('utf-8'))
- else:
- output = u"output.mp3"
- tts = gTTS(text=str, lang=voice[:2])
- tts.save(output)
- command = "sox --norm %s -r 32000 %s tempo 1.2" % (output, filename)
- os.system(command.encode('utf-8'))
- command = "rm -f output.mp3"
- os.system(command.encode('utf-8'))
-
-################################################################
-
-if __name__ == "__main__":
- if "en" in sys.argv:
- from tts_en import systemSounds, sounds
-
- directory = "en"
- voice = "en-US"
-
- elif "fr" in sys.argv:
- from tts_fr import systemSounds, sounds
-
- directory = "fr"
- voice = "fr-FR"
-
- elif "it" in sys.argv:
- from tts_it import systemSounds, sounds
-
- directory = "it"
- voice = "it-IT"
-
- elif "de" in sys.argv:
- from tts_de import systemSounds, sounds
-
- directory = "de"
- voice = "de-DE"
-
- elif "es" in sys.argv:
- from tts_es import systemSounds, sounds
-
- directory = "es"
- voice = "es-ES"
-
- elif "cz" in sys.argv:
- from tts_cz import systemSounds, sounds
-
- directory = "cz"
- voice = "cs-CZ"
-
- elif "ru" in sys.argv:
- from tts_ru import systemSounds, sounds
-
- directory = "ru"
- voice = "ru-RU"
-
- elif "pt" in sys.argv:
- from tts_pt import systemSounds, sounds
-
- directory = "pt"
- voice = "pt-PT"
-
- else:
- print("which language?")
- exit()
-
- if "csv" in sys.argv:
- path = "/tmp/SOUNDS/" + directory + "/SYSTEM/"
- if not os.path.exists(path):
- os.makedirs(path)
- os.chdir(path)
- with open("%s-%s.csv" % (voice, board), "wb") as csvFile:
- for s, f in systemSounds:
- if s and f:
- l = u""
- if board in ("sky9x", "taranis"):
- l += u"SOUNDS/%s/SYSTEM;" % directory
- l += f + u";" + s + u"\n"
- csvFile.write(l.encode("utf-8"))
- for s, f in sounds:
- if s and f:
- l = u""
- if board in ("sky9x", "taranis"):
- l += u"SOUNDS/%s;" % directory
- l += f + u";" + s + u"\n"
- csvFile.write(l.encode("utf-8"))
-
- if "psv" in sys.argv:
- path = "/tmp/SOUNDS/" + directory + "/"
- if not os.path.exists(path):
- os.makedirs(path)
- os.chdir(path)
- with open("%s-%s.psv" % (voice, board), "wb") as csvFile:
- for s, f in systemSounds:
- if s and f:
- l = u"SYSTEM|" + f.replace(".wav", "") + u"|" + s + u"\r\n"
- csvFile.write(l.encode("windows-1251"))
- for s, f in sounds:
- if s and f:
- l = u"|" + f.replace(".wav", "") + u"|" + s + u"\r\n"
- csvFile.write(l.encode("windows-1251"))
-
-
- if "files" in sys.argv:
- path = "/tmp/SOUNDS/" + directory + "/SYSTEM/"
- if not os.path.exists(path):
- os.makedirs(path)
- os.chdir(path)
- for s, f in systemSounds:
- if s and f:
- generate(s, f)
- os.chdir("..")
- for s, f in sounds:
- if s and f:
- generate(s, f)
diff --git a/tools/nightly23/tts_common.py b/tools/nightly23/tts_common.py
deleted file mode 100644
index b38eb8efa..000000000
--- a/tools/nightly23/tts_common.py
+++ /dev/null
@@ -1,19 +0,0 @@
-NO_ALTERNATE = 1024
-PROMPT_CUSTOM_BASE = 256
-PROMPT_SYSTEM_BASE = 0
-board = "taranis"
-
-import sys
-
-def filename(idx, alternate=0):
- ext = ".wav"
- if isinstance(idx, int):
- result = "%04d%s" % (idx, ext)
- elif board in ('sky9x', 'taranis'):
- result = idx + ext
- return result
-
-
-
-
-
diff --git a/tools/rc23/build-rc.sh b/tools/rc23/build-rc.sh
deleted file mode 100755
index e3012b298..000000000
--- a/tools/rc23/build-rc.sh
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/bash
-
-set -e
-
-branch=2.3.0
-docker=rc23
-workdir=/home/opentx/rc23
-output=/var/www/html/2.3/rc
-version=2.3.0
-
-# Increment RC index
-index=`cat index.txt`
-index=`expr $index + 1`
-suffix="RC$index"
-
-cd ${workdir}
-
-# Create on-demand build environment
-cp code/radio/util/Dockerfile .
-docker build -t new-${docker} --build-arg OPENTX_VERSION_SUFFIX=${suffix} .
-set +e
-docker rmi -f ${docker}
-set -e
-docker tag new-${docker} ${docker}
-docker rmi -f new-${docker}
-
-# Call sdcard generation
-code/tools/rc23/build-sdcard.sh
-
-# Build Linux companion
-docker run -dit --name companion -v /home/opentx/${docker}:/opentx ${docker}
-docker exec companion sh -c "mkdir -p build && cd build && cmake /opentx/code && cp radio/src/stamp.h /opentx/binaries/stamp-opentx.txt"
-docker exec companion rm -rf build
-if [ ! -f ${output}/companion/linux/companion23_${version}${suffix}_amd64.deb ]; then
- docker exec companion /opentx/code/tools/build-companion-release.sh /opentx/code /opentx/binaries/
- docker exec companion sh -c "cp /build/radio/src/lua/*.txt /opentx/binaries"
- cp -f binaries/*.deb ${output}/companion/linux/companion23_${version}${suffix}_amd64.deb
- cp -f binaries/lua_fields_*.txt ${output}/firmware
-fi
-docker stop companion
-docker rm companion
-
-# Request companion compilation on Windows
-if [ ! -f ${output}/companion/windows/companion-windows-${version}${suffix}.exe ]; then
- cd ${output}/companion/windows
- wget -qO- http://winbox.open-tx.org/companion-builds/compile23.php?branch=$branch\&suffix=${suffix}
- wget -O companion-windows-${version}${suffix}.exe http://winbox.open-tx.org/companion-builds/companion-windows-${version}${suffix}.exe
- chmod -Rf g+w companion-windows-${version}${suffix}.exe
-fi
-
-# Request companion compilation on Mac OS X
-if [ ! -f ${output}/companion/macosx/opentx-companion-${version}${suffix}.dmg ]; then
- cd ${output}/companion/macosx
- wget -qO- http://opentx.blinkt.de:8080/~opentx/build-opentx.py?branch=${branch}\&suffix=${suffix}
- wget -O opentx-companion-${version}${suffix}.dmg http://opentx.blinkt.de:8080/~opentx/builds/opentx-companion-${version}${suffix}.dmg
- chmod -Rf g+w opentx-companion-${version}${suffix}.dmg
-fi
-
-# Update stamps
-cp -f $workdir/binaries/stamp-opentx.txt ${output}/firmware
-echo "#define VERSION \"${version}${suffix}\"" > ${output}/companion/companion-windows.stamp
-cp -f ${output}/companion/companion-windows.stamp ${output}/companion/companion-macosx.stamp
-cp -f ${output}/companion/companion-windows.stamp ${output}/companion/companion-linux.stamp
-
-
-# Clean binaries It will be hosting built on demand firmware
-rm -rf $workdir/binaries/*
-rm -rf $workdir/binaries/.lock
-
-# RC is considered as valid ony if we get to that point
-echo $index > ${workdir}/index.txt
diff --git a/tools/rc23/build-sdcard.sh b/tools/rc23/build-sdcard.sh
deleted file mode 100755
index 6dbeded39..000000000
--- a/tools/rc23/build-sdcard.sh
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/bin/bash
-
-set -e
-set -x
-
-workdir=/home/opentx/rc23
-output=/var/www/html/2.3/rc
-
-# Handle opentx.sdcard.version
-sdcard_version="2.3V"$(grep 'set(SDCARD_REVISION' ${workdir}/code/CMakeLists.txt | grep -o '".*"' | sed 's/"//g')
-echo ${sdcard_version} > ${workdir}/code/radio/sdcard/horus/opentx.sdcard.version
-echo ${sdcard_version} > ${workdir}/code/radio/sdcard/taranis-x9/opentx.sdcard.version
-echo ${sdcard_version} > ${workdir}/code/radio/sdcard/taranis-x7/opentx.sdcard.version
-
-
-if cmp --silent ${workdir}/code/radio/sdcard/horus/opentx.sdcard.version ${workdir}/opentx.sdcard.version
-then
- exit
-else
- cd ${workdir}
-
- # Copy git sdcard data
- rm -Rf ${workdir}/sdcard
- cp -r ${workdir}/code/radio/sdcard .
-
- # Get images for Horus
- mkdir -p ${workdir}/sdcard/horus/IMAGES
- cp /home/opentx/horus-bitmaps/* ${workdir}/sdcard/horus/IMAGES/
-
-
- # Request sound pack generation
- if [[ ! -d /tmp/SOUNDS/fr ]];then
- ${workdir}/code/tools/rc23/tts.py en csv files
- fi
- if [[ ! -d /tmp/SOUNDS/es ]];then
- ${workdir}/code/tools/rc23/tts.py fr csv files
- fi
- if [[ ! -d /tmp/SOUNDS/it ]];then
- ${workdir}/code/tools/rc23/tts.py es csv files
- fi
- if [[ ! -d /tmp/SOUNDS/de ]];then
- ${workdir}/code/tools/rc23/tts.py it csv files
- fi
- if [[ ! -d /tmp/SOUNDS/cz ]];then
- ${workdir}/code/tools/rc23/tts.py de csv files
- fi
- if [[ ! -d /tmp/SOUNDS/pl ]];then
- ${workdir}/code/tools/rc23/tts.py cz csv files
- fi
- if [[ ! -d /tmp/SOUNDS/ru ]];then
- ${workdir}/code/tools/rc23/tts.py pt csv files
- fi
- ${workdir}/code/tools/rc23/tts.py ru csv psv files
-
- # Create sdcards.zips for supported platforms
- mv /tmp/SOUNDS ${workdir}/sdcard/horus/
- mkdir ${workdir}/sdcard/taranis-x9/SOUNDS
- mkdir ${workdir}/sdcard/taranis-x7/SOUNDS
- cp -r ${workdir}/sdcard/horus/SOUNDS ${workdir}/sdcard/taranis-x9/
- cp -r ${workdir}/sdcard/horus/SOUNDS ${workdir}/sdcard/taranis-x7/
- cd ${workdir}/sdcard/horus && zip -r ${output}/sdcard/sdcard-horus-${sdcard_version}.zip *
- cd ${workdir}/sdcard/taranis-x9 && zip -r ${output}/sdcard/sdcard-taranis-x9-${sdcard_version}.zip *
- cd ${workdir}/sdcard/taranis-x7 && zip -r ${output}/sdcard/sdcard-taranis-x7-${sdcard_version}.zip *
-
- # Create symlinks for other radios
- ln -s ${output}/sdcard/sdcard-taranis-x7-${sdcard_version}.zip ${output}/sdcard/sdcard-taranis-xlite-${sdcard_version}.zip
- ln -s ${output}/sdcard/sdcard-taranis-x7-${sdcard_version}.zip ${output}/sdcard/sdcard-taranis-x9lite-${sdcard_version}.zip
- ln -s ${output}/sdcard/sdcard-taranis-x7-${sdcard_version}.zip ${output}/sdcard/sdcard-jumper-t12-${sdcard_version}.zip
-
- # remove LUA stuff for 9x platform
- rm -Rf ${workdir}/sdcard/taranis-x7/SCRIPTS
- rm -Rf ${workdir}/sdcard/taranis-x7/FrSky-utilities
- cd ${workdir}/sdcard/taranis-x7 && zip -r ${output}/sdcard/sdcard-9xarm-${sdcard_version}.zip *
-
- rm -Rf ${workdir}/sdcard
- cp -r ${workdir}/code/radio/sdcard/horus/opentx.sdcard.version ${workdir}
-fi
diff --git a/tools/rc23/tts.py b/tools/rc23/tts.py
deleted file mode 100755
index fc42cfeb6..000000000
--- a/tools/rc23/tts.py
+++ /dev/null
@@ -1,152 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-
-# This script is a modified version to support Linux TTS fiel genration using PicoTTS
-
-# Sound pack maintainers (incomplete list) by language alphabetical order
-# Czech : Martin Hotar
-# French : Bertrand Songis & André Bernet
-# English : Rob Thompson & Martin Hotar
-# German : Romolo Manfredini (Some corrections by Peer)
-# Italian : Romolo Manfredini
-# Portuguese : Romolo Manfredini
-# Spanish : Romolo Manfredini (With the help of Jose Moreno)
-
-# from __future__ import print_function
-
-import os
-import sys
-import subprocess
-import zipfile
-from gtts import gTTS
-from tts_common import *
-board = "taranis"
-
-reload(sys)
-sys.setdefaultencoding('utf8')
-
-SOURCE_DIRECTORY = os.path.dirname(os.path.realpath(__file__))
-lib_path = os.path.abspath(os.path.join(SOURCE_DIRECTORY, '..', '..', 'radio', 'util'))
-sys.path.append(lib_path)
-
-def generate(str, filename):
- if 0:
- output = "output.wav"
- command = 'pico2wave -l=%s -w=%s "%s"' % (voice, output, str)
- os.system(command.encode('utf-8'))
- command = "sox %s -r 32000 %s reverse silence 1 0.1 0.1%% reverse" % (output, filename)
- os.system(command.encode('utf-8'))
- else:
- output = u"output.mp3"
- tts = gTTS(text=str, lang=voice[:2])
- tts.save(output)
- command = "sox --norm %s -r 32000 %s tempo 1.2" % (output, filename)
- os.system(command.encode('utf-8'))
- command = "rm -f output.mp3"
- os.system(command.encode('utf-8'))
-
-################################################################
-
-if __name__ == "__main__":
- if "en" in sys.argv:
- from tts_en import systemSounds, sounds
-
- directory = "en"
- voice = "en-US"
-
- elif "fr" in sys.argv:
- from tts_fr import systemSounds, sounds
-
- directory = "fr"
- voice = "fr-FR"
-
- elif "it" in sys.argv:
- from tts_it import systemSounds, sounds
-
- directory = "it"
- voice = "it-IT"
-
- elif "de" in sys.argv:
- from tts_de import systemSounds, sounds
-
- directory = "de"
- voice = "de-DE"
-
- elif "es" in sys.argv:
- from tts_es import systemSounds, sounds
-
- directory = "es"
- voice = "es-ES"
-
- elif "cz" in sys.argv:
- from tts_cz import systemSounds, sounds
-
- directory = "cz"
- voice = "cs-CZ"
-
- elif "ru" in sys.argv:
- from tts_ru import systemSounds, sounds
-
- directory = "ru"
- voice = "ru-RU"
-
- elif "pt" in sys.argv:
- from tts_pt import systemSounds, sounds
-
- directory = "pt"
- voice = "pt-PT"
-
- else:
- print("which language?")
- exit()
-
- if "csv" in sys.argv:
- path = "/tmp/SOUNDS/" + directory + "/SYSTEM/"
- if not os.path.exists(path):
- os.makedirs(path)
- os.chdir(path)
- with open("%s-%s.csv" % (voice, board), "wb") as csvFile:
- for s, f in systemSounds:
- if s and f:
- l = u""
- if board in ("sky9x", "taranis"):
- l += u"SOUNDS/%s/SYSTEM;" % directory
- l += f + u";" + s + u"\n"
- csvFile.write(l.encode("utf-8"))
- for s, f in sounds:
- if s and f:
- l = u""
- if board in ("sky9x", "taranis"):
- l += u"SOUNDS/%s;" % directory
- l += f + u";" + s + u"\n"
- csvFile.write(l.encode("utf-8"))
-
- if "psv" in sys.argv:
- path = "/tmp/SOUNDS/" + directory + "/"
- if not os.path.exists(path):
- os.makedirs(path)
- os.chdir(path)
- with open("%s-%s.psv" % (voice, board), "wb") as csvFile:
- for s, f in systemSounds:
- if s and f:
- l = u"SYSTEM|" + f.replace(".wav", "") + u"|" + s + u"\r\n"
- csvFile.write(l.encode("windows-1251"))
- for s, f in sounds:
- if s and f:
- l = u"|" + f.replace(".wav", "") + u"|" + s + u"\r\n"
- csvFile.write(l.encode("windows-1251"))
-
-
- if "files" in sys.argv:
- path = "/tmp/SOUNDS/" + directory + "/SYSTEM/"
- if not os.path.exists(path):
- os.makedirs(path)
- os.chdir(path)
- for s, f in systemSounds:
- if s and f:
- generate(s, f)
- os.chdir("..")
- for s, f in sounds:
- if s and f:
- generate(s, f)
diff --git a/tools/rc23/tts_common.py b/tools/rc23/tts_common.py
deleted file mode 100644
index 25623b005..000000000
--- a/tools/rc23/tts_common.py
+++ /dev/null
@@ -1,14 +0,0 @@
-NO_ALTERNATE = 1024
-PROMPT_CUSTOM_BASE = 256
-PROMPT_SYSTEM_BASE = 0
-board = "taranis"
-
-import sys
-
-def filename(idx, alternate=0):
- ext = ".wav"
- if isinstance(idx, int):
- result = "%04d%s" % (idx, ext)
- elif board in ('sky9x', 'taranis'):
- result = idx + ext
- return result