diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index f52fc0d02..03f09e184 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -405,6 +405,7 @@ if(GUI) keys.cpp maths.cpp translations.cpp + cfn_sort.cpp gui/gui_common.cpp ) foreach(FILE ${GUI_SRC}) diff --git a/radio/src/cfn_sort.cpp b/radio/src/cfn_sort.cpp new file mode 100644 index 000000000..a49008cf1 --- /dev/null +++ b/radio/src/cfn_sort.cpp @@ -0,0 +1,643 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * 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. + */ + +// This file is auto-generated via cfn_sorter.sh. Do not edit. + +#include "dataconstants.h" + +Functions cfn_sorted[] = { +#if defined(TRANSLATIONS_CN) +#if !defined(OLED_SCREEN) + /* 背光 */ FUNC_BACKLIGHT, +#endif + /* 播放背景音乐 */ FUNC_BACKGND_MUSIC, + /* 播放声音 */ FUNC_PLAY_SOUND, + /* 播放数值 */ FUNC_PLAY_VALUE, + /* 播放音频文件 */ FUNC_PLAY_TRACK, + /* 测距模式 */ FUNC_RANGECHECK, + /* 测试 */ FUNC_TEST, + /* 复位 */ FUNC_RESET, + /* 关闭音频功放 */ FUNC_DISABLE_AUDIO_AMP, + /* 记录日志到SD卡 */ FUNC_LOGS, + /* 教练 */ FUNC_TRAINER, + /* 截屏 */ FUNC_SCREENSHOT, + /* 禁用触摸 */ FUNC_DISABLE_TOUCH, + /* 竞速模式 */ FUNC_RACING_MODE, +#if defined(OLED_SCREEN) + /* 亮度 */ FUNC_BACKLIGHT, +#endif + /* 模块对频 */ FUNC_BIND, + /* 屏幕显示图传 */ FUNC_LCD_TO_VIDEO, + /* 设置 */ FUNC_SET_TIMER, + /* 设置失控保护 */ FUNC_SET_FAILSAFE, + /* 锁定通道值 */ FUNC_OVERRIDE_CHANNEL, + /* 修改全局变量GV值 */ FUNC_ADJUST_GVAR, + /* 选择主屏 */ FUNC_SET_SCREEN, + /* 摇杆值存储到微调 */ FUNC_INSTANT_TRIM, + /* 音量 */ FUNC_VOLUME, + /* 暂停背景音乐 */ FUNC_BACKGND_MUSIC_PAUSE, + /* 振动 */ FUNC_HAPTIC, + /* Lua脚本 */ FUNC_PLAY_SCRIPT, + /* RGB LED 灯 */ FUNC_RGB_LED, + /* Vario传感器 */ FUNC_VARIO, +#elif defined(TRANSLATIONS_CZ) + /* Deaktivace dotyku */ FUNC_DISABLE_TOUCH, + /* Hlasitost */ FUNC_VOLUME, + /* Hlásit stav */ FUNC_PLAY_VALUE, + /* Hrát zvuk */ FUNC_PLAY_SOUND, + /* Hudba */ FUNC_BACKGND_MUSIC, + /* Hudba pauza */ FUNC_BACKGND_MUSIC_PAUSE, + /* Insta-Trim */ FUNC_INSTANT_TRIM, +#if defined(OLED_SCREEN) + /* Jas */ FUNC_BACKLIGHT, +#endif + /* Kontrola dosahu */ FUNC_RANGECHECK, + /* LCD to Video */ FUNC_LCD_TO_VIDEO, + /* Loguj na SD */ FUNC_LOGS, + /* Lua Skript */ FUNC_PLAY_SCRIPT, + /* ModuleBind */ FUNC_BIND, + /* Nastav */ FUNC_ADJUST_GVAR, + /* Nastavit Failsafe */ FUNC_SET_FAILSAFE, +#if !defined(OLED_SCREEN) + /* Podsvětlení */ FUNC_BACKLIGHT, +#endif + /* Přehrát wav */ FUNC_PLAY_TRACK, + /* Reset */ FUNC_RESET, + /* RGB světlo */ FUNC_RGB_LED, + /* Snímek LCD */ FUNC_SCREENSHOT, + /* Test */ FUNC_TEST, + /* Trenér */ FUNC_TRAINER, + /* Vario */ FUNC_VARIO, + /* Vibrovat */ FUNC_HAPTIC, + /* Vybrat hlavní obrazovku */ FUNC_SET_SCREEN, + /* Vypnutí zesilovače zvuku */ FUNC_DISABLE_AUDIO_AMP, + /* Zámek */ FUNC_OVERRIDE_CHANNEL, + /* Závodní režim */ FUNC_RACING_MODE, + /* Změna */ FUNC_SET_TIMER, +#elif defined(TRANSLATIONS_DA) + /* Afspil lydfil */ FUNC_PLAY_TRACK, + /* Afstand kontrol */ FUNC_RANGECHECK, +#if !defined(OLED_SCREEN) + /* Baggrundslys */ FUNC_BACKLIGHT, +#endif + /* BgMusik */ FUNC_BACKGND_MUSIC, + /* BgMusik || */ FUNC_BACKGND_MUSIC_PAUSE, + /* Ikke berøringsaktiv */ FUNC_DISABLE_TOUCH, + /* Inst. Trim */ FUNC_INSTANT_TRIM, + /* Juster */ FUNC_ADJUST_GVAR, + /* LCD to Video */ FUNC_LCD_TO_VIDEO, + /* Lua Script */ FUNC_PLAY_SCRIPT, + /* Lydstyrke */ FUNC_VOLUME, + /* Modul tilslut */ FUNC_BIND, + /* Nulstil */ FUNC_RESET, + /* Overskriv */ FUNC_OVERRIDE_CHANNEL, + /* RGB led */ FUNC_RGB_LED, + /* Ræs tilstand */ FUNC_RACING_MODE, + /* SD Log */ FUNC_LOGS, +#if defined(OLED_SCREEN) + /* Skarphed */ FUNC_BACKLIGHT, +#endif + /* Skærm klip */ FUNC_SCREENSHOT, + /* Sluk audio amplifier */ FUNC_DISABLE_AUDIO_AMP, + /* Spil lyd */ FUNC_PLAY_SOUND, + /* Spil Værdi */ FUNC_PLAY_VALUE, + /* Sæt */ FUNC_SET_TIMER, + /* Sæt fejlsikring */ FUNC_SET_FAILSAFE, + /* Test */ FUNC_TEST, + /* Træner */ FUNC_TRAINER, + /* Vario */ FUNC_VARIO, + /* Vibration */ FUNC_HAPTIC, + /* Vælg hoved skærm */ FUNC_SET_SCREEN, +#elif defined(TRANSLATIONS_DE) + /* Ändere */ FUNC_ADJUST_GVAR, + /* Audio Verst. Aus */ FUNC_DISABLE_AUDIO_AMP, + /* Haptik */ FUNC_HAPTIC, +#if defined(OLED_SCREEN) + /* Helligkeit */ FUNC_BACKLIGHT, +#endif + /* Inst. Trim */ FUNC_INSTANT_TRIM, + /* Kein Touch */ FUNC_DISABLE_TOUCH, + /* Lautstr. */ FUNC_VOLUME, +#if !defined(OLED_SCREEN) + /* LCD Licht */ FUNC_BACKLIGHT, +#endif + /* LCD to Video */ FUNC_LCD_TO_VIDEO, + /* Lehrer */ FUNC_TRAINER, + /* Lua Skript */ FUNC_PLAY_SCRIPT, + /* ModuleBind */ FUNC_BIND, + /* RacingMode */ FUNC_RACING_MODE, + /* RangeCheck */ FUNC_RANGECHECK, + /* RGB LED */ FUNC_RGB_LED, + /* Rücksetz. */ FUNC_RESET, + /* Sag Text */ FUNC_PLAY_TRACK, + /* Sag Wert */ FUNC_PLAY_VALUE, + /* Screenshot */ FUNC_SCREENSHOT, + /* SD-Aufz. */ FUNC_LOGS, + /* SetFailsafe */ FUNC_SET_FAILSAFE, + /* Set Main Screen */ FUNC_SET_SCREEN, + /* Setze */ FUNC_SET_TIMER, + /* Spiel Töne */ FUNC_PLAY_SOUND, + /* StartMusik */ FUNC_BACKGND_MUSIC, + /* Stop Musik */ FUNC_BACKGND_MUSIC_PAUSE, + /* Test */ FUNC_TEST, + /* Überschreibe */ FUNC_OVERRIDE_CHANNEL, + /* Vario */ FUNC_VARIO, +#elif defined(TRANSLATIONS_ES) + /* Ajuste */ FUNC_SET_TIMER, + /* Ajuste */ FUNC_ADJUST_GVAR, + /* Audio Amp Off */ FUNC_DISABLE_AUDIO_AMP, + /* BgMúsica */ FUNC_BACKGND_MUSIC, + /* BgMúsica|| */ FUNC_BACKGND_MUSIC_PAUSE, +#if defined(OLED_SCREEN) + /* Brillo */ FUNC_BACKLIGHT, +#endif + /* Captura */ FUNC_SCREENSHOT, + /* CheckRango */ FUNC_RANGECHECK, + /* Enl.módulo */ FUNC_BIND, + /* Entrenador */ FUNC_TRAINER, + /* Failsafe */ FUNC_SET_FAILSAFE, + /* Haptic */ FUNC_HAPTIC, + /* Inst. Trim */ FUNC_INSTANT_TRIM, + /* LCD to Video */ FUNC_LCD_TO_VIDEO, + /* Lua Script */ FUNC_PLAY_SCRIPT, +#if !defined(OLED_SCREEN) + /* Luz Fondo */ FUNC_BACKLIGHT, +#endif + /* No Touch */ FUNC_DISABLE_TOUCH, + /* Oir pista */ FUNC_PLAY_TRACK, + /* Oir sonido */ FUNC_PLAY_SOUND, + /* Oir valor */ FUNC_PLAY_VALUE, + /* RacingMode */ FUNC_RACING_MODE, + /* Reset */ FUNC_RESET, + /* RGB leds */ FUNC_RGB_LED, + /* SD Logs */ FUNC_LOGS, + /* Seguro */ FUNC_OVERRIDE_CHANNEL, + /* Set Main Screen */ FUNC_SET_SCREEN, + /* Test */ FUNC_TEST, + /* Vario */ FUNC_VARIO, + /* Volumen */ FUNC_VOLUME, +#elif defined(TRANSLATIONS_FI) + /* Adjust */ FUNC_ADJUST_GVAR, + /* Audio Amp Off */ FUNC_DISABLE_AUDIO_AMP, +#if !defined(OLED_SCREEN) + /* Backlight */ FUNC_BACKLIGHT, +#endif + /* BgMusic */ FUNC_BACKGND_MUSIC, + /* BgMusic || */ FUNC_BACKGND_MUSIC_PAUSE, + /* Haptic */ FUNC_HAPTIC, + /* Inst. Trim */ FUNC_INSTANT_TRIM, +#if defined(OLED_SCREEN) + /* Kirkkaus */ FUNC_BACKLIGHT, +#endif + /* LCD to Video */ FUNC_LCD_TO_VIDEO, + /* Lua Script */ FUNC_PLAY_SCRIPT, + /* ModuleBind */ FUNC_BIND, + /* No Touch */ FUNC_DISABLE_TOUCH, + /* Play Sound */ FUNC_PLAY_SOUND, + /* Play Track */ FUNC_PLAY_TRACK, + /* Play Value */ FUNC_PLAY_VALUE, + /* RacingMode */ FUNC_RACING_MODE, + /* RangeCheck */ FUNC_RANGECHECK, + /* Reset */ FUNC_RESET, + /* RGB leds */ FUNC_RGB_LED, + /* Safety */ FUNC_OVERRIDE_CHANNEL, + /* Screenshot */ FUNC_SCREENSHOT, + /* SD Logs */ FUNC_LOGS, + /* Set */ FUNC_SET_TIMER, + /* SetFailsafe */ FUNC_SET_FAILSAFE, + /* Set Main Screen */ FUNC_SET_SCREEN, + /* Test */ FUNC_TEST, + /* Trainer */ FUNC_TRAINER, + /* Vario */ FUNC_VARIO, + /* Volume */ FUNC_VOLUME, +#elif defined(TRANSLATIONS_FR) + /* Ajuster */ FUNC_ADJUST_GVAR, + /* Bind */ FUNC_BIND, + /* Déf. */ FUNC_SET_TIMER, + /* Définir Écran Princ. */ FUNC_SET_SCREEN, + /* Désact. Ampli Audio */ FUNC_DISABLE_AUDIO_AMP, + /* Écolage */ FUNC_TRAINER, + /* Inst. Trim */ FUNC_INSTANT_TRIM, + /* Jouer fichier */ FUNC_PLAY_TRACK, + /* Jouer son */ FUNC_PLAY_SOUND, + /* LCD to Video */ FUNC_LCD_TO_VIDEO, + /* Lire valeur */ FUNC_PLAY_VALUE, + /* Logs SD */ FUNC_LOGS, +#if defined(OLED_SCREEN) + /* Luminosité */ FUNC_BACKLIGHT, +#endif + /* Musique */ FUNC_BACKGND_MUSIC, + /* Non Tactile */ FUNC_DISABLE_TOUCH, + /* Pause Musique */ FUNC_BACKGND_MUSIC_PAUSE, + /* Photo Écran */ FUNC_SCREENSHOT, + /* Racing Mode */ FUNC_RACING_MODE, + /* Régle Failsafe */ FUNC_SET_FAILSAFE, + /* Remise à 0 */ FUNC_RESET, + /* Remplace */ FUNC_OVERRIDE_CHANNEL, +#if !defined(OLED_SCREEN) + /* Rétroécl. */ FUNC_BACKLIGHT, +#endif + /* RGB leds */ FUNC_RGB_LED, + /* Script Lua */ FUNC_PLAY_SCRIPT, + /* Test */ FUNC_TEST, + /* Test Port. */ FUNC_RANGECHECK, + /* Vario */ FUNC_VARIO, + /* Vibreur */ FUNC_HAPTIC, + /* Volume */ FUNC_VOLUME, +#elif defined(TRANSLATIONS_HE) + /* Adjust */ FUNC_ADJUST_GVAR, + /* Audio Amp Off */ FUNC_DISABLE_AUDIO_AMP, +#if !defined(OLED_SCREEN) + /* Backlight */ FUNC_BACKLIGHT, +#endif + /* BgMusic */ FUNC_BACKGND_MUSIC, + /* BgMusic || */ FUNC_BACKGND_MUSIC_PAUSE, + /* Haptic */ FUNC_HAPTIC, + /* Inst. Trim */ FUNC_INSTANT_TRIM, + /* LCD to Video */ FUNC_LCD_TO_VIDEO, + /* Lua Script */ FUNC_PLAY_SCRIPT, + /* ModuleBind */ FUNC_BIND, + /* Override */ FUNC_OVERRIDE_CHANNEL, + /* Play Sound */ FUNC_PLAY_SOUND, + /* Play Track */ FUNC_PLAY_TRACK, + /* Play Value */ FUNC_PLAY_VALUE, + /* RangeCheck */ FUNC_RANGECHECK, + /* Reset */ FUNC_RESET, + /* RGB leds */ FUNC_RGB_LED, + /* SD Logs */ FUNC_LOGS, + /* Set */ FUNC_SET_TIMER, + /* SetFailsafe */ FUNC_SET_FAILSAFE, + /* Test */ FUNC_TEST, + /* Trainer */ FUNC_TRAINER, + /* Vario */ FUNC_VARIO, + /* Volume */ FUNC_VOLUME, +#if defined(OLED_SCREEN) + /* בהירות */ FUNC_BACKLIGHT, +#endif + /* הגדרת מסך ראשי */ FUNC_SET_SCREEN, + /* ללא מסך מגע */ FUNC_DISABLE_TOUCH, + /* מצב תחרות */ FUNC_RACING_MODE, + /* צילום מסך */ FUNC_SCREENSHOT, +#elif defined(TRANSLATIONS_IT) + /* Amp Audio Off */ FUNC_DISABLE_AUDIO_AMP, + /* Azzera */ FUNC_RESET, + /* BindModulo */ FUNC_BIND, + /* Blocco */ FUNC_OVERRIDE_CHANNEL, + /* Inst. Trim */ FUNC_INSTANT_TRIM, + /* LCD to Video */ FUNC_LCD_TO_VIDEO, + /* Leds RGB */ FUNC_RGB_LED, + /* Leggi Valore */ FUNC_PLAY_VALUE, + /* Logs SDCard */ FUNC_LOGS, +#if defined(OLED_SCREEN) + /* Luminosità */ FUNC_BACKLIGHT, +#endif + /* Maestro */ FUNC_TRAINER, + /* Modo Racing */ FUNC_RACING_MODE, + /* Musica Sf */ FUNC_BACKGND_MUSIC, + /* Musica Sf || */ FUNC_BACKGND_MUSIC_PAUSE, + /* No Touch */ FUNC_DISABLE_TOUCH, + /* RangeCheck */ FUNC_RANGECHECK, + /* Regola */ FUNC_ADJUST_GVAR, +#if !defined(OLED_SCREEN) + /* Retroillum. */ FUNC_BACKLIGHT, +#endif + /* Screenshot */ FUNC_SCREENSHOT, + /* Script Lua */ FUNC_PLAY_SCRIPT, + /* Set */ FUNC_SET_TIMER, + /* SetFailsafe */ FUNC_SET_FAILSAFE, + /* Setta Schermo Princ. */ FUNC_SET_SCREEN, + /* Suona */ FUNC_PLAY_SOUND, + /* Suona Traccia */ FUNC_PLAY_TRACK, + /* Test */ FUNC_TEST, + /* Vario */ FUNC_VARIO, + /* Vibrazione */ FUNC_HAPTIC, + /* Volume */ FUNC_VOLUME, +#elif defined(TRANSLATIONS_JP) + /* BGM一時停止 */ FUNC_BACKGND_MUSIC_PAUSE, + /* BGM再生 */ FUNC_BACKGND_MUSIC, + /* Failsafe設定 */ FUNC_SET_FAILSAFE, + /* G変数修正 */ FUNC_ADJUST_GVAR, + /* Inst.トリム */ FUNC_INSTANT_TRIM, + /* LCD to Video */ FUNC_LCD_TO_VIDEO, + /* LUAスクリプト */ FUNC_PLAY_SCRIPT, + /* RGB LED */ FUNC_RGB_LED, + /* SDログ出力 */ FUNC_LOGS, + /* オーディオアンプ OFF */ FUNC_DISABLE_AUDIO_AMP, + /* サウンド再生 */ FUNC_PLAY_SOUND, + /* ダイヤル */ FUNC_VOLUME, + /* テスト */ FUNC_TEST, + /* トレーナー */ FUNC_TRAINER, + /* バイブレート */ FUNC_HAPTIC, +#if !defined(OLED_SCREEN) + /* バックライト */ FUNC_BACKLIGHT, +#endif + /* バリオ */ FUNC_VARIO, + /* メイン画面設定 */ FUNC_SET_SCREEN, + /* モジュールバインド */ FUNC_BIND, + /* リセット */ FUNC_RESET, + /* レースモード */ FUNC_RACING_MODE, + /* レンジチェック */ FUNC_RANGECHECK, + /* 音源再生 */ FUNC_PLAY_TRACK, + /* 画面キャプチャ */ FUNC_SCREENSHOT, +#if defined(OLED_SCREEN) + /* 輝度 */ FUNC_BACKLIGHT, +#endif + /* 再生値 */ FUNC_PLAY_VALUE, + /* 上書き */ FUNC_OVERRIDE_CHANNEL, + /* 設定 */ FUNC_SET_TIMER, + /* 非タッチ */ FUNC_DISABLE_TOUCH, +#elif defined(TRANSLATIONS_NL) + /* Audio Amp Off */ FUNC_DISABLE_AUDIO_AMP, +#if !defined(OLED_SCREEN) + /* Backlight */ FUNC_BACKLIGHT, +#endif + /* BgMusic */ FUNC_BACKGND_MUSIC, + /* BgMusic || */ FUNC_BACKGND_MUSIC_PAUSE, + /* Geluid */ FUNC_PLAY_SOUND, + /* Haptic */ FUNC_HAPTIC, +#if defined(OLED_SCREEN) + /* Helderheid */ FUNC_BACKLIGHT, +#endif + /* Inst. Trim */ FUNC_INSTANT_TRIM, + /* LCD to Video */ FUNC_LCD_TO_VIDEO, + /* Lua Script */ FUNC_PLAY_SCRIPT, + /* ModuleBind */ FUNC_BIND, + /* No Touch */ FUNC_DISABLE_TOUCH, + /* Override */ FUNC_OVERRIDE_CHANNEL, + /* Play Track */ FUNC_PLAY_TRACK, + /* Play Value */ FUNC_PLAY_VALUE, + /* RacingMode */ FUNC_RACING_MODE, + /* RangeCheck */ FUNC_RANGECHECK, + /* Reset */ FUNC_RESET, + /* RGB leds */ FUNC_RGB_LED, + /* Schermafdr */ FUNC_SCREENSHOT, + /* SD Logs */ FUNC_LOGS, + /* Set */ FUNC_SET_TIMER, + /* SetFailsafe */ FUNC_SET_FAILSAFE, + /* Set Main Screen */ FUNC_SET_SCREEN, + /* Test */ FUNC_TEST, + /* Trainer */ FUNC_TRAINER, + /* Vario */ FUNC_VARIO, + /* Volume */ FUNC_VOLUME, + /* Wijzig */ FUNC_ADJUST_GVAR, +#elif defined(TRANSLATIONS_PL) + /* Bezpiecz */ FUNC_OVERRIDE_CHANNEL, + /* Głośność */ FUNC_VOLUME, + /* GrajDźwięk */ FUNC_PLAY_SOUND, + /* GrajŚcieżk */ FUNC_PLAY_TRACK, + /* GrajWartoś */ FUNC_PLAY_VALUE, + /* Inst-Trim */ FUNC_INSTANT_TRIM, +#if defined(OLED_SCREEN) + /* Jasność */ FUNC_BACKLIGHT, +#endif + /* LCD to Video */ FUNC_LCD_TO_VIDEO, + /* Logi->SD */ FUNC_LOGS, + /* ModuleBind */ FUNC_BIND, + /* Muz. tła */ FUNC_BACKGND_MUSIC, + /* Muz. tła || */ FUNC_BACKGND_MUSIC_PAUSE, + /* No Touch */ FUNC_DISABLE_TOUCH, +#if !defined(OLED_SCREEN) + /* Podświetl */ FUNC_BACKLIGHT, +#endif + /* RacingMode */ FUNC_RACING_MODE, + /* RangeCheck */ FUNC_RANGECHECK, + /* Resetuj */ FUNC_RESET, + /* RGB ledy */ FUNC_RGB_LED, + /* Set Main Screen */ FUNC_SET_SCREEN, + /* SetFailsafe */ FUNC_SET_FAILSAFE, + /* SkryptyLua */ FUNC_PLAY_SCRIPT, + /* Test */ FUNC_TEST, + /* Trener */ FUNC_TRAINER, + /* Ustaw */ FUNC_ADJUST_GVAR, + /* Ustaw */ FUNC_SET_TIMER, + /* Wario */ FUNC_VARIO, + /* Wibracje */ FUNC_HAPTIC, + /* Wycisz wzmacniacz audio */ FUNC_DISABLE_AUDIO_AMP, + /* Zrzut Ekra */ FUNC_SCREENSHOT, +#elif defined(TRANSLATIONS_PT) + /* Ajuste */ FUNC_ADJUST_GVAR, + /* Amp Audio Desl */ FUNC_DISABLE_AUDIO_AMP, + /* BgMusica */ FUNC_BACKGND_MUSIC, + /* BgMusica || */ FUNC_BACKGND_MUSIC_PAUSE, + /* BindMódulo */ FUNC_BIND, +#if defined(OLED_SCREEN) + /* Brilho */ FUNC_BACKLIGHT, +#endif + /* Capt. Tela */ FUNC_SCREENSHOT, + /* DefFailsafe */ FUNC_SET_FAILSAFE, + /* Definir */ FUNC_SET_TIMER, + /* Def Tela Princ */ FUNC_SET_SCREEN, + /* LCD to Video */ FUNC_LCD_TO_VIDEO, + /* Leds RGB */ FUNC_RGB_LED, + /* Logs SD */ FUNC_LOGS, +#if !defined(OLED_SCREEN) + /* LuzFundo */ FUNC_BACKLIGHT, +#endif + /* ModCorrida */ FUNC_RACING_MODE, + /* No Touch */ FUNC_DISABLE_TOUCH, + /* RangeCheck */ FUNC_RANGECHECK, + /* Rep Valor */ FUNC_PLAY_VALUE, + /* Reset */ FUNC_RESET, + /* Script Lua */ FUNC_PLAY_SCRIPT, + /* Sobrescrv */ FUNC_OVERRIDE_CHANNEL, + /* Test */ FUNC_TEST, + /* Tocar Som */ FUNC_PLAY_SOUND, + /* Tocar Trilha */ FUNC_PLAY_TRACK, + /* Trainer */ FUNC_TRAINER, + /* Trim Inst. */ FUNC_INSTANT_TRIM, + /* Vario */ FUNC_VARIO, + /* Vibrar */ FUNC_HAPTIC, + /* Volume */ FUNC_VOLUME, +#elif defined(TRANSLATIONS_RU) + /* Bind модуль */ FUNC_BIND, + /* LCD to Video */ FUNC_LCD_TO_VIDEO, + /* Lua скрипт */ FUNC_PLAY_SCRIPT, + /* Play Value */ FUNC_PLAY_VALUE, + /* RGB подсветка */ FUNC_RGB_LED, + /* SD логи */ FUNC_LOGS, + /* Авар управ */ FUNC_SET_FAILSAFE, + /* Варио */ FUNC_VARIO, + /* Вибро */ FUNC_HAPTIC, + /* Воспр звук */ FUNC_PLAY_SOUND, + /* Воспр трек */ FUNC_PLAY_TRACK, + /* Выбр глав экран */ FUNC_SET_SCREEN, + /* Вык аудио усил. */ FUNC_DISABLE_AUDIO_AMP, + /* Громкость */ FUNC_VOLUME, + /* Мгнов трим */ FUNC_INSTANT_TRIM, + /* Муз || */ FUNC_BACKGND_MUSIC_PAUSE, + /* Муз фон */ FUNC_BACKGND_MUSIC, + /* Настройка */ FUNC_ADJUST_GVAR, + /* Оменить */ FUNC_OVERRIDE_CHANNEL, + /* Подсветка */ FUNC_BACKLIGHT, + /* Пров диапаз */ FUNC_RANGECHECK, + /* Режим гонка */ FUNC_RACING_MODE, + /* Сброс */ FUNC_RESET, + /* Сенсор вык */ FUNC_DISABLE_TOUCH, + /* Скриншот */ FUNC_SCREENSHOT, + /* Таймер */ FUNC_TRAINER, + /* Тест */ FUNC_TEST, + /* Установ */ FUNC_SET_TIMER, +#elif defined(TRANSLATIONS_SE) + /* Audioförstärkare av */ FUNC_DISABLE_AUDIO_AMP, +#if !defined(OLED_SCREEN) + /* Belysning */ FUNC_BACKLIGHT, +#endif + /* Ej pekskärm */ FUNC_DISABLE_TOUCH, + /* Haptisk */ FUNC_HAPTIC, + /* Justera */ FUNC_ADJUST_GVAR, + /* LCD to Video */ FUNC_LCD_TO_VIDEO, +#if defined(OLED_SCREEN) + /* Ljusstyrka */ FUNC_BACKLIGHT, +#endif + /* Logga data */ FUNC_LOGS, + /* Lua-skript */ FUNC_PLAY_SCRIPT, + /* Lås */ FUNC_OVERRIDE_CHANNEL, + /* Lärare */ FUNC_TRAINER, + /* Musik */ FUNC_BACKGND_MUSIC, + /* Parkoppla modul */ FUNC_BIND, + /* Pausa Musik */ FUNC_BACKGND_MUSIC_PAUSE, + /* Range check */ FUNC_RANGECHECK, + /* RGB ledljus */ FUNC_RGB_LED, + /* Skärmbild */ FUNC_SCREENSHOT, + /* Spara trimmar */ FUNC_INSTANT_TRIM, + /* Spela ljud */ FUNC_PLAY_SOUND, + /* Spela upp */ FUNC_PLAY_TRACK, + /* Säg värdet */ FUNC_PLAY_VALUE, + /* Sätt */ FUNC_SET_TIMER, + /* Sätt failsafe */ FUNC_SET_FAILSAFE, + /* Sätt huvudskärm */ FUNC_SET_SCREEN, + /* Test */ FUNC_TEST, + /* Tävlingsläge */ FUNC_RACING_MODE, + /* Vario */ FUNC_VARIO, + /* Volym */ FUNC_VOLUME, + /* Återställ */ FUNC_RESET, +#elif defined(TRANSLATIONS_TW) + /* Lua腳本 */ FUNC_PLAY_SCRIPT, + /* RGB led燈 */ FUNC_RGB_LED, + /* Vario傳感器 */ FUNC_VARIO, +#if defined(OLED_SCREEN) + /* 亮度 */ FUNC_BACKLIGHT, +#endif + /* 修改全局變量GV值 */ FUNC_ADJUST_GVAR, + /* 屏幕顯示圖傳 */ FUNC_LCD_TO_VIDEO, + /* 截屏 */ FUNC_SCREENSHOT, + /* 振動 */ FUNC_HAPTIC, + /* 搖桿值存儲到微調 */ FUNC_INSTANT_TRIM, + /* 播放數值 */ FUNC_PLAY_VALUE, + /* 播放聲音 */ FUNC_PLAY_SOUND, + /* 播放背景音樂 */ FUNC_BACKGND_MUSIC, + /* 播放音頻文件 */ FUNC_PLAY_TRACK, + /* 教練 */ FUNC_TRAINER, + /* 暫停背景音樂 */ FUNC_BACKGND_MUSIC_PAUSE, + /* 模塊對頻 */ FUNC_BIND, + /* 測試 */ FUNC_TEST, + /* 測距模式 */ FUNC_RANGECHECK, + /* 禁用觸摸 */ FUNC_DISABLE_TOUCH, + /* 競速模式 */ FUNC_RACING_MODE, +#if !defined(OLED_SCREEN) + /* 背光 */ FUNC_BACKLIGHT, +#endif + /* 記錄日誌到SD卡 */ FUNC_LOGS, + /* 設置 */ FUNC_SET_TIMER, + /* 設置失控保護 */ FUNC_SET_FAILSAFE, + /* 選擇主屏 */ FUNC_SET_SCREEN, + /* 重啟 */ FUNC_RESET, + /* 鎖定通道值 */ FUNC_OVERRIDE_CHANNEL, + /* 關閉音頻功放 */ FUNC_DISABLE_AUDIO_AMP, + /* 音量 */ FUNC_VOLUME, +#elif defined(TRANSLATIONS_UA) + /* АварРежим */ FUNC_SET_FAILSAFE, + /* Варіо */ FUNC_VARIO, + /* Вибір гол. екр. */ FUNC_SET_SCREEN, + /* Вібро */ FUNC_HAPTIC, + /* Встан. */ FUNC_SET_TIMER, + /* Грати Звук */ FUNC_PLAY_SOUND, + /* Грати Знач. */ FUNC_PLAY_VALUE, + /* Грати Трек */ FUNC_PLAY_TRACK, + /* Гучність */ FUNC_VOLUME, + /* Митєв. трим. */ FUNC_INSTANT_TRIM, + /* Модуль Bind */ FUNC_BIND, + /* Налашт. */ FUNC_ADJUST_GVAR, + /* Перевизнач. */ FUNC_OVERRIDE_CHANNEL, + /* ПеревірДіап. */ FUNC_RANGECHECK, +#if !defined(OLED_SCREEN) + /* Підсвіт. */ FUNC_BACKLIGHT, +#endif + /* Підсил. вимк. */ FUNC_DISABLE_AUDIO_AMP, + /* Режим перегонів */ FUNC_RACING_MODE, + /* Сенсор вимк. */ FUNC_DISABLE_TOUCH, + /* Скид. */ FUNC_RESET, + /* Скріншот */ FUNC_SCREENSHOT, + /* Тест */ FUNC_TEST, + /* Тренер */ FUNC_TRAINER, + /* Фон.Муз. */ FUNC_BACKGND_MUSIC, + /* Фон.Муз. || */ FUNC_BACKGND_MUSIC_PAUSE, +#if defined(OLED_SCREEN) + /* Яскравість */ FUNC_BACKLIGHT, +#endif + /* LCD to Video */ FUNC_LCD_TO_VIDEO, + /* Lua Скрипт */ FUNC_PLAY_SCRIPT, + /* RGB leds */ FUNC_RGB_LED, + /* SD лог */ FUNC_LOGS, +#else + /* Adjust */ FUNC_ADJUST_GVAR, + /* Audio Amp Off */ FUNC_DISABLE_AUDIO_AMP, +#if !defined(OLED_SCREEN) + /* Backlight */ FUNC_BACKLIGHT, +#endif + /* BgMusic */ FUNC_BACKGND_MUSIC, + /* BgMusic || */ FUNC_BACKGND_MUSIC_PAUSE, +#if defined(OLED_SCREEN) + /* Brightness */ FUNC_BACKLIGHT, +#endif + /* Haptic */ FUNC_HAPTIC, + /* Inst. Trim */ FUNC_INSTANT_TRIM, + /* LCD to Video */ FUNC_LCD_TO_VIDEO, + /* Lua Script */ FUNC_PLAY_SCRIPT, + /* ModuleBind */ FUNC_BIND, + /* No Touch */ FUNC_DISABLE_TOUCH, + /* Override */ FUNC_OVERRIDE_CHANNEL, + /* Play Sound */ FUNC_PLAY_SOUND, + /* Play Track */ FUNC_PLAY_TRACK, + /* Play Value */ FUNC_PLAY_VALUE, + /* RacingMode */ FUNC_RACING_MODE, + /* RangeCheck */ FUNC_RANGECHECK, + /* Reset */ FUNC_RESET, + /* RGB leds */ FUNC_RGB_LED, + /* Screenshot */ FUNC_SCREENSHOT, + /* SD Logs */ FUNC_LOGS, + /* Set */ FUNC_SET_TIMER, + /* SetFailsafe */ FUNC_SET_FAILSAFE, + /* Set Main Screen */ FUNC_SET_SCREEN, + /* Test */ FUNC_TEST, + /* Trainer */ FUNC_TRAINER, + /* Vario */ FUNC_VARIO, + /* Volume */ FUNC_VOLUME, +#endif +}; + +uint8_t getFuncSortIdx(uint8_t func) +{ + for (uint8_t i = 0; i < FUNC_MAX; i += 1) + if (cfn_sorted[i] == func) + return i; + return 0; +} diff --git a/radio/src/dataconstants.h b/radio/src/dataconstants.h index a92e13b1b..f780311fb 100644 --- a/radio/src/dataconstants.h +++ b/radio/src/dataconstants.h @@ -21,6 +21,8 @@ #pragma once +#if !defined(CFN_ONLY) + #include "board.h" #include "storage/yaml/yaml_defs.h" @@ -561,44 +563,6 @@ enum BacklightMode { e_backlight_mode_on }; -enum Functions { - FUNC_OVERRIDE_CHANNEL, - FUNC_TRAINER, - FUNC_INSTANT_TRIM, - FUNC_RESET, - FUNC_SET_TIMER, - FUNC_ADJUST_GVAR, - FUNC_VOLUME, - FUNC_SET_FAILSAFE, - FUNC_RANGECHECK, - FUNC_BIND, - FUNC_PLAY_SOUND, - FUNC_PLAY_TRACK, - FUNC_PLAY_VALUE, - FUNC_PLAY_SCRIPT, - FUNC_BACKGND_MUSIC, - FUNC_BACKGND_MUSIC_PAUSE, - FUNC_VARIO, - FUNC_HAPTIC, - FUNC_LOGS, - FUNC_BACKLIGHT, - FUNC_SCREENSHOT, - FUNC_RACING_MODE, -#if defined(COLORLCD) - FUNC_DISABLE_TOUCH, - FUNC_SET_SCREEN, -#endif - FUNC_DISABLE_AUDIO_AMP, - FUNC_RGB_LED, - FUNC_LCD_TO_VIDEO, - FUNC_TEST, // MUST remain last -#if defined(DEBUG) - FUNC_MAX SKIP -#else - FUNC_MAX SKIP = FUNC_TEST -#endif -}; - enum TimerModes { TMRMODE_OFF, TMRMODE_ON, @@ -689,3 +653,37 @@ enum PPMUnit { PPM_PERCENT_PREC1, PPM_US }; + +#endif + +enum Functions { + FUNC_OVERRIDE_CHANNEL, + FUNC_TRAINER, + FUNC_INSTANT_TRIM, + FUNC_RESET, + FUNC_SET_TIMER, + FUNC_ADJUST_GVAR, + FUNC_VOLUME, + FUNC_SET_FAILSAFE, + FUNC_RANGECHECK, + FUNC_BIND, + FUNC_PLAY_SOUND, + FUNC_PLAY_TRACK, + FUNC_PLAY_VALUE, + FUNC_PLAY_SCRIPT, + FUNC_BACKGND_MUSIC, + FUNC_BACKGND_MUSIC_PAUSE, + FUNC_VARIO, + FUNC_HAPTIC, + FUNC_LOGS, + FUNC_BACKLIGHT, + FUNC_SCREENSHOT, + FUNC_RACING_MODE, + FUNC_DISABLE_TOUCH, + FUNC_SET_SCREEN, + FUNC_DISABLE_AUDIO_AMP, + FUNC_RGB_LED, + FUNC_LCD_TO_VIDEO, + FUNC_TEST, // MUST remain last + FUNC_MAX SKIP +}; diff --git a/radio/src/edgetx.h b/radio/src/edgetx.h index 77978b5be..7ec93e1a9 100644 --- a/radio/src/edgetx.h +++ b/radio/src/edgetx.h @@ -479,7 +479,8 @@ inline void customFunctionsReset() } const char* funcGetLabel(uint8_t func); - +uint8_t getFuncSortIdx(uint8_t func); +extern Functions cfn_sorted[]; #include "telemetry/telemetry.h" #include "crc.h" diff --git a/radio/src/functions.cpp b/radio/src/functions.cpp index 588b40a78..5bce70091 100644 --- a/radio/src/functions.cpp +++ b/radio/src/functions.cpp @@ -533,8 +533,8 @@ const char* funcGetLabel(uint8_t func) return STR_SF_SET_SCREEN; #endif #if defined(AUDIO_MUTE_GPIO) - case FUNC_DISABLE_AUDIO_AMP: - return STR_SF_DISABLE_AUDIO_AMP; + case FUNC_DISABLE_AUDIO_AMP: + return STR_SF_DISABLE_AUDIO_AMP; #endif case FUNC_RGB_LED: return STR_SF_RGBLEDS; diff --git a/radio/src/gui/128x64/model_special_functions.cpp b/radio/src/gui/128x64/model_special_functions.cpp index 6a7396f40..5a2d790c3 100644 --- a/radio/src/gui/128x64/model_special_functions.cpp +++ b/radio/src/gui/128x64/model_special_functions.cpp @@ -150,6 +150,11 @@ void onCustomFunctionsMenu(const char * result) } #endif // PCBTARANIS +static bool isAssignableFunctionAvailableSorted(int value) +{ + return isAssignableFunctionAvailable(cfn_sorted[value]); +} + void menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomFunctionsContext * functionsContext) { int8_t sub = menuVerticalPosition - HEADER_LINE; @@ -215,7 +220,7 @@ void menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomF if (CFN_SWITCH(cfn)) { lcdDrawText(MODEL_SPECIAL_FUNC_2ND_COLUMN, y, funcGetLabel(func), attr); if (active) { - CFN_FUNC(cfn) = checkIncDec(event, CFN_FUNC(cfn), 0, FUNC_MAX-1, eeFlags, isAssignableFunctionAvailable); + CFN_FUNC(cfn) = cfn_sorted[checkIncDec(event, getFuncSortIdx(CFN_FUNC(cfn)), 0, FUNC_MAX-1, eeFlags, isAssignableFunctionAvailableSorted)]; if (checkIncDec_Ret) CFN_RESET(cfn); } } diff --git a/radio/src/gui/212x64/model_special_functions.cpp b/radio/src/gui/212x64/model_special_functions.cpp index 62b833ca8..ab6991189 100644 --- a/radio/src/gui/212x64/model_special_functions.cpp +++ b/radio/src/gui/212x64/model_special_functions.cpp @@ -155,6 +155,11 @@ enum CustomFunctionsItems { ITEM_CUSTOM_FUNCTIONS_LAST = ITEM_CUSTOM_FUNCTIONS_COUNT - 1 }; +static bool isAssignableFunctionAvailableSorted(int value) +{ + return isAssignableFunctionAvailable(cfn_sorted[value]); +} + void menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomFunctionsContext * functionsContext) { int sub = menuVerticalPosition; @@ -207,7 +212,7 @@ void menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomF if (CFN_SWITCH(cfn)) { lcdDrawText(MODEL_SPECIAL_FUNC_2ND_COLUMN, y, funcGetLabel(func), attr); if (active) { - func = CFN_FUNC(cfn) = checkIncDec(event, CFN_FUNC(cfn), 0, FUNC_MAX-1, eeFlags, isAssignableFunctionAvailable); + func = CFN_FUNC(cfn) = cfn_sorted[checkIncDec(event, getFuncSortIdx(CFN_FUNC(cfn)), 0, FUNC_MAX-1, eeFlags, isAssignableFunctionAvailableSorted)]; if (checkIncDec_Ret) CFN_RESET(cfn); } } diff --git a/radio/src/gui/colorlcd/model/special_functions.cpp b/radio/src/gui/colorlcd/model/special_functions.cpp index baf415e5c..61cf6fe3d 100644 --- a/radio/src/gui/colorlcd/model/special_functions.cpp +++ b/radio/src/gui/colorlcd/model/special_functions.cpp @@ -652,16 +652,16 @@ void FunctionEditPage::buildBody(Window *form) line = form->newLine(grid); new StaticText(line, rect_t{}, STR_FUNC); auto functionChoice = - new Choice(line, rect_t{}, 0, FUNC_MAX - 1, GET_DEFAULT(CFN_FUNC(cfn))); - functionChoice->setTextHandler([=](int val) { return funcGetLabel(val); }); + new Choice(line, rect_t{}, 0, FUNC_MAX - 1, GET_DEFAULT(getFuncSortIdx(CFN_FUNC(cfn)))); + functionChoice->setTextHandler([=](int val) { return funcGetLabel(cfn_sorted[val]); }); functionChoice->setSetValueHandler([=](int32_t newValue) { - CFN_FUNC(cfn) = newValue; + CFN_FUNC(cfn) = cfn_sorted[newValue]; CFN_RESET(cfn); SET_DIRTY(); updateSpecialFunctionOneWindow(); }); functionChoice->setAvailableHandler( - [=](int value) { return isAssignableFunctionAvailable(value); }); + [=](int value) { return isAssignableFunctionAvailable(cfn_sorted[value]); }); specialFunctionOneWindow = new Window(form, rect_t{}); updateSpecialFunctionOneWindow(); diff --git a/radio/src/gui/gui_common.cpp b/radio/src/gui/gui_common.cpp index 2758dc8e5..24aea068c 100644 --- a/radio/src/gui/gui_common.cpp +++ b/radio/src/gui/gui_common.cpp @@ -593,6 +593,15 @@ bool isAssignableFunctionAvailable(int function, bool modelFunctions) #if !defined(VIDEO_SWITCH) case FUNC_LCD_TO_VIDEO: return false; +#endif +#if !defined(DEBUG) + case FUNC_TEST: + return false; +#endif +#if !defined(COLORLCD) + case FUNC_DISABLE_TOUCH: + case FUNC_SET_SCREEN: + return false; #endif default: return true; diff --git a/tools/cfn_sorter.cpp b/tools/cfn_sorter.cpp new file mode 100644 index 000000000..a13f39329 --- /dev/null +++ b/tools/cfn_sorter.cpp @@ -0,0 +1,151 @@ + +#include +#include +#include +#include + +#define CFN_ONLY +#define SKIP +#include "../radio/src/dataconstants.h" + +#define LCD_W 480 +#define TR(a,b) b +#define TR3(a, b, c) c + +#if defined(LNG_CN) +#include "../radio/src/translations/cn.h" +#define LOC "zh_CN.UTF-8" +#elif defined(LNG_CZ) +#include "../radio/src/translations/cz.h" +#define LOC "cs_CZ.UTF-8" +#elif defined(LNG_DA) +#include "../radio/src/translations/da.h" +#define LOC "da_DK.UTF-8" +#elif defined(LNG_DE) +#include "../radio/src/translations/de.h" +#define LOC "de_DE.UTF-8" +#elif defined(LNG_EN) +#include "../radio/src/translations/en.h" +#define LOC "en_US.UTF-8" +#elif defined(LNG_ES) +#include "../radio/src/translations/es.h" +#define LOC "es_ES.UTF-8" +#elif defined(LNG_FI) +#include "../radio/src/translations/fi.h" +#define LOC "fi_FI.UTF-8" +#elif defined(LNG_FR) +#include "../radio/src/translations/fr.h" +#define LOC "fr_FR.UTF-8" +#elif defined(LNG_HE) +#include "../radio/src/translations/he.h" +#define LOC "he_IL.UTF-8" +#elif defined(LNG_IT) +#include "../radio/src/translations/it.h" +#define LOC "it_IT.UTF-8" +#elif defined(LNG_JP) +#include "../radio/src/translations/jp.h" +#define LOC "ja_JP.UTF-8" +#elif defined(LNG_NL) +#include "../radio/src/translations/nl.h" +#define LOC "nl_NL.UTF-8" +#elif defined(LNG_PL) +#include "../radio/src/translations/pl.h" +#define LOC "pl_PL.UTF-8" +#elif defined(LNG_PT) +#include "../radio/src/translations/pt.h" +#define LOC "pt_PT.UTF-8" +#elif defined(LNG_RU) +#include "../radio/src/translations/ru.h" +#define LOC "ru_RU.UTF-8" +#elif defined(LNG_SE) +#include "../radio/src/translations/se.h" +#define LOC "sv_SE.UTF-8" +#elif defined(LNG_TW) +#include "../radio/src/translations/tw.h" +#define LOC "zh_TW.UTF-8" +#elif defined(LNG_UA) +#include "../radio/src/translations/ua.h" +#define LOC "uk_UA.UTF-8" +#else +#error "Unknown language" +#endif + +struct cfn { + std::string str; + std::string nam; + Functions func; +}; + +struct LocaleComparator { + std::locale locale; + + LocaleComparator(const std::locale& loc) : locale(loc) {} + + bool operator()(const struct cfn& lhs, const struct cfn& rhs) const { + return std::use_facet< std::collate >(locale).compare( + lhs.str.data(), lhs.str.data() + lhs.str.size(), + rhs.str.data(), rhs.str.data() + rhs.str.size()) < 0; + } +}; + +int main() +{ +#if defined(LOC) + std::vector list = { + { TR_SF_SAFETY, "FUNC_OVERRIDE_CHANNEL", FUNC_OVERRIDE_CHANNEL }, + { TR_SF_TRAINER, "FUNC_TRAINER", FUNC_TRAINER }, + { TR_SF_INST_TRIM, "FUNC_INSTANT_TRIM", FUNC_INSTANT_TRIM }, + { TR_SF_RESET, "FUNC_RESET", FUNC_RESET }, + { TR_SF_SET_TIMER, "FUNC_SET_TIMER", FUNC_SET_TIMER }, + { TR_ADJUST_GVAR, "FUNC_ADJUST_GVAR", FUNC_ADJUST_GVAR }, + { TR_SF_VOLUME, "FUNC_VOLUME", FUNC_VOLUME }, + { TR_SF_FAILSAFE, "FUNC_SET_FAILSAFE", FUNC_SET_FAILSAFE }, + { TR_SF_RANGE_CHECK, "FUNC_RANGECHECK", FUNC_RANGECHECK }, + { TR_SF_MOD_BIND, "FUNC_BIND", FUNC_BIND }, + { TR_SOUND, "FUNC_PLAY_SOUND", FUNC_PLAY_SOUND }, + { TR_PLAY_TRACK, "FUNC_PLAY_TRACK", FUNC_PLAY_TRACK }, + { TR_PLAY_VALUE, "FUNC_PLAY_VALUE", FUNC_PLAY_VALUE }, + { TR_SF_PLAY_SCRIPT, "FUNC_PLAY_SCRIPT", FUNC_PLAY_SCRIPT }, + { TR_SF_BG_MUSIC, "FUNC_BACKGND_MUSIC", FUNC_BACKGND_MUSIC }, + { TR_SF_BG_MUSIC_PAUSE, "FUNC_BACKGND_MUSIC_PAUSE", FUNC_BACKGND_MUSIC_PAUSE }, + { TR_SF_VARIO, "FUNC_VARIO", FUNC_VARIO }, + { TR_SF_HAPTIC, "FUNC_HAPTIC", FUNC_HAPTIC }, + { TR_SF_LOGS, "FUNC_LOGS", FUNC_LOGS }, + { TR_BRIGHTNESS, "FUNC_BACKLIGHT", FUNC_BACKLIGHT }, + { TR_SF_BACKLIGHT, "FUNC_BACKLIGHT", FUNC_BACKLIGHT }, + { TR_SF_SCREENSHOT, "FUNC_SCREENSHOT", FUNC_SCREENSHOT }, + { TR_SF_RACING_MODE, "FUNC_RACING_MODE", FUNC_RACING_MODE }, + { TR_SF_DISABLE_TOUCH, "FUNC_DISABLE_TOUCH", FUNC_DISABLE_TOUCH }, + { TR_SF_SET_SCREEN, "FUNC_SET_SCREEN", FUNC_SET_SCREEN }, + { TR_SF_DISABLE_AUDIO_AMP, "FUNC_DISABLE_AUDIO_AMP", FUNC_DISABLE_AUDIO_AMP }, + { TR_SF_RGBLEDS, "FUNC_RGB_LED", FUNC_RGB_LED }, + { TR_SF_LCD_TO_VIDEO, "FUNC_LCD_TO_VIDEO", FUNC_LCD_TO_VIDEO }, + { TR_SF_TEST, "FUNC_TEST", FUNC_TEST }, + }; + + std::locale locale(LOC); + std::sort(list.begin(), list.end(), LocaleComparator(locale)); + + for (int i = 0; i < list.size(); i += 1) { + if (strcmp(TR_BRIGHTNESS, TR_SF_BACKLIGHT) != 0) { + if (list[i].str == TR_BRIGHTNESS) { + printf("#if defined(OLED_SCREEN)\n"); + } else if (list[i].str == TR_SF_BACKLIGHT) { + printf("#if !defined(OLED_SCREEN)\n"); + } + } + printf(" /* %s */ %s,\n", list[i].str.c_str(), list[i].nam.c_str()); + if (strcmp(TR_BRIGHTNESS, TR_SF_BACKLIGHT) != 0) { + if (list[i].str == TR_BRIGHTNESS || list[i].str == TR_SF_BACKLIGHT) { + printf("#endif\n"); + } + } else if (list[i].str == TR_BRIGHTNESS) { + i += 1; + } + } + + return 0; +#else +static_assert(false,"No valid language defined!"); +#endif +} diff --git a/tools/cfn_sorter.sh b/tools/cfn_sorter.sh new file mode 100755 index 000000000..1769469c9 --- /dev/null +++ b/tools/cfn_sorter.sh @@ -0,0 +1,113 @@ +#!/bin/sh + +set -e +# set -x + +# Required locales (check your system and install if needed): + +# zh_CN.UTF-8 / zh_CN.utf8 +# cs_CZ.UTF-8 / cs_CZ.utf8 +# da_DK.UTF-8 / da_DK.utf8 +# de_DE.UTF-8 / de_DE.utf8 +# es_ES.UTF-8 / es_ES.utf8 +# en_US.UTF-8 / en_US.utf8 +# fi_FI.UTF-8 / fi_FI.utf8 +# fr_FR.UTF-8 / fr_FR.utf8 +# he_IL.UTF-8 / he_IL.utf8 +# it_IT.UTF-8 / it_IT.utf8 +# ja_JP.UTF-8 / ja_JP.utf8 +# nl_NL.UTF-8 / nl_NL.utf8 +# pl_PL.UTF-8 / pl_PL.utf8 +# pt_PT.UTF-8 / pt_PT.utf8 +# ru_RU.UTF-8 / ru_RU.utf8 +# sv_SE.UTF-8 / sv_SE.utf8 +# zh_TW.UTF-8 / zh_TW.utf8 +# uk_UA.UTF-8 / uk_UA.utf8 + +# Determine the compiler to use +if command -v g++ >/dev/null 2>&1; then + CXX=g++ +elif command -v gcc >/dev/null 2>&1; then + CXX=gcc +elif command -v clang++ >/dev/null 2>&1; then + CXX=clang++ +else + echo "Neither g++, gcc nor clang++ found. Please install a C++ compiler." + exit 1 +fi + +# Compile specified translation macro, append to cfn_sort.cpp +compile_and_append() { + local lng_macro=$1 + local translation_macro=$2 + local condition=$3 + + echo "Compiling ${translation_macro} (${lng_macro}) ..." + + $CXX -std=c++11 -lstdc++ -Wfatal-errors -D${lng_macro} tools/cfn_sorter.cpp + { + if [ "$condition" = "else" ]; then + echo "#${condition}" + else + echo "#${condition} defined(${translation_macro})" + fi + ./a.out + } >> radio/src/cfn_sort.cpp +} + +rm radio/src/cfn_sort.cpp + +# Copyright header +cat tools/copyright-header.txt > radio/src/cfn_sort.cpp + +# Start of cfn_sort.cpp +echo "Compiling TRANSLATIONS_CN (LNG_CN) ..." +$CXX -std=c++11 -lstdc++ -Wfatal-errors -DLNG_CN tools/cfn_sorter.cpp +{ +cat <> radio/src/cfn_sort.cpp +// This file is auto-generated via cfn_sorter.sh. Do not edit. + +#include "dataconstants.h" + +Functions cfn_sorted[] = { +#if defined(TRANSLATIONS_CN) +EOF +./a.out +} >> radio/src/cfn_sort.cpp + +# Languages +compile_and_append "LNG_CZ" "TRANSLATIONS_CZ" "elif" +compile_and_append "LNG_DA" "TRANSLATIONS_DA" "elif" +compile_and_append "LNG_DE" "TRANSLATIONS_DE" "elif" +compile_and_append "LNG_ES" "TRANSLATIONS_ES" "elif" +compile_and_append "LNG_FI" "TRANSLATIONS_FI" "elif" +compile_and_append "LNG_FR" "TRANSLATIONS_FR" "elif" +compile_and_append "LNG_HE" "TRANSLATIONS_HE" "elif" +compile_and_append "LNG_IT" "TRANSLATIONS_IT" "elif" +compile_and_append "LNG_JP" "TRANSLATIONS_JP" "elif" +compile_and_append "LNG_NL" "TRANSLATIONS_NL" "elif" +compile_and_append "LNG_PL" "TRANSLATIONS_PL" "elif" +compile_and_append "LNG_PT" "TRANSLATIONS_PT" "elif" +compile_and_append "LNG_RU" "TRANSLATIONS_RU" "elif" +compile_and_append "LNG_SE" "TRANSLATIONS_SE" "elif" +compile_and_append "LNG_TW" "TRANSLATIONS_TW" "elif" +compile_and_append "LNG_UA" "TRANSLATIONS_UA" "elif" + +# Final else case +compile_and_append "LNG_EN" "TRANSLATIONS_EN" "else" + +# End of cfn_sort.cpp +cat <> radio/src/cfn_sort.cpp +#endif +}; + +uint8_t getFuncSortIdx(uint8_t func) +{ + for (uint8_t i = 0; i < FUNC_MAX; i += 1) + if (cfn_sorted[i] == func) + return i; + return 0; +} +EOF + +[ -f ./a.out ] && rm ./a.out