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