@@ -38,7 +38,9 @@ jobs:
|
||||
- X9DP
|
||||
- X9DP2019
|
||||
- X9LITE
|
||||
- X9LITES
|
||||
- XLITE
|
||||
- XLITES
|
||||
container:
|
||||
image: ghcr.io/edgetx/edgetx-commit-tests
|
||||
volumes:
|
||||
|
||||
@@ -32,7 +32,9 @@ jobs:
|
||||
- X9DP
|
||||
- X9DP2019
|
||||
- X9LITE
|
||||
- X9LITES
|
||||
- XLITE
|
||||
- XLITES
|
||||
container:
|
||||
image: ghcr.io/edgetx/edgetx-commit-tests
|
||||
volumes:
|
||||
|
||||
@@ -1,10 +1,53 @@
|
||||
# EdgeTX
|
||||
<p align="center">
|
||||
<a href="url"><img src="https://github.com/EdgeTX/edgetx.github.io/blob/master/images/edgetx-v2.png" align="center" height="150" width="150" ></a>
|
||||
|
||||
# Welcome to EdgeTX!
|
||||
**The cutting edge open-source firmware for your R/C radio!**
|
||||
|
||||
|
||||
### About EdgeTX
|
||||
EdgeTX is the cutting edge of OpenTX. It is the place where innovative ideas and cutting-edge features are developed and field-tested by the enthusiasts of our hobby. EdgeTX is a community project – ideas from the community, developed by the community, and enjoyed by the community! The community will always have a say in what EdgeTX is and what EdgeTX will be in the future. Without community feedback and involvement EdgeTX cannot exist.
|
||||
|
||||
### Navigation Links
|
||||
|
||||
> [Community Guidelines](https://github.com/EdgeTX/edgetx.github.io/wiki/Community-Guidlines)
|
||||
|
||||
> [Installation Guide](https://github.com/EdgeTX/edgetx.github.io/wiki/EdgeTX-Installation-Guide)
|
||||
|
||||
> [Installation Video](https://www.youtube.com/watch?v=Y9OvW9XCjOs)
|
||||
|
||||
> [FAQ](https://github.com/EdgeTX/edgetx.github.io/wiki/Frequently-Asked-Questions)
|
||||
|
||||
> [Reporting Issues / Requesting features](https://github.com/EdgeTX/edgetx/issues/new/choose)
|
||||
|
||||
> [Development WIKI](https://github.com/EdgeTX/edgetx/wiki)
|
||||
|
||||
> [Flasher Info Page](https://github.com/EdgeTX/flasher)
|
||||
|
||||
> [Flasher Downloads](https://github.com/EdgeTX/flasher/releases)
|
||||
|
||||
> [SD Card Info Page](https://github.com/EdgeTX/edgetx-sdcard)
|
||||
|
||||
> [SD Card Downloads](https://github.com/EdgeTX/edgetx-sdcard/releases)
|
||||
|
||||
> [Sound Packs Info Page](https://github.com/EdgeTX/edgetx-sdcard-sounds)
|
||||
|
||||
> [Sound Packs Downloads](https://github.com/EdgeTX/edgetx-sdcard-sounds/releases)
|
||||
|
||||
> [EdgeTX Build Environment Docker Images](https://github.com/EdgeTX/build-edgetx)
|
||||
|
||||
### Community
|
||||
[Discord](https://discord.gg/wF9wUKnZ6H)
|
||||
|
||||
[](https://discord.gg/wF9wUKnZ6H)
|
||||
|
||||
[Facebook](https://www.facebook.com/groups/edgetx)
|
||||
|
||||
[Github Discussions](https://github.com/EdgeTX/edgetx/discussions)
|
||||
|
||||
|
||||
## Acknowledgements
|
||||
Some icon assets provided by [ICONS8](https://icons8.com).
|
||||
|
||||
|
||||
[](https://github.com/EdgeTX/edgetx/actions/workflows/actions.yml)
|
||||
|
||||
EdgeTX is the cutting edge version of OpenTX. Innovative ideas and cutting-edge features are developed and field-tested here, with an emphasis on new developments rather than maintenance and legacy.
|
||||
|
||||
Stay tuned for more!
|
||||
|
||||
## Acknowedgements
|
||||
Some icon assets provided by [ICONS8](https://icons8.com).
|
||||
|
||||
@@ -7,7 +7,9 @@
|
||||
["X9D Plus 2019", "x9dp2019-"],
|
||||
["T-Lite", "tlite-"],
|
||||
["X-Lite", "xlite-"],
|
||||
["X-Lite S", "xlites-"],
|
||||
["X9 Lite", "x9lite-"],
|
||||
["X9 Lite S", "x9lites-"],
|
||||
["T16", "t16-"],
|
||||
["T18", "t18-"],
|
||||
["TX12", "tx12-"],
|
||||
|
||||
@@ -26,7 +26,7 @@ add_bitmaps_target(${BITMAP_TARGET_PREFIX}_calibration_bitmaps "${RADIO_SRC_DIR}
|
||||
add_bitmaps_target(${BITMAP_TARGET_PREFIX}_button_bitmaps "${RADIO_SRC_DIR}/bitmaps/480x272/button/alpha_*.png" "4/4/4/4" "${BITMAP_ARGS}")
|
||||
add_bitmaps_target(${BITMAP_TARGET_PREFIX}_alpha_bitmaps "${RADIO_SRC_DIR}/bitmaps/480x272/alpha_*.png" "4/4/4/4" "${BITMAP_ARGS}")
|
||||
add_bitmaps_target(${BITMAP_TARGET_PREFIX}_alpha_calibration_bitmaps "${RADIO_SRC_DIR}/bitmaps/480x272/calibration/alpha_*.png" "4/4/4/4" "${BITMAP_ARGS}")
|
||||
add_bitmaps_target(${BITMAP_TARGET_PREFIX}_masks ${RADIO_SRC_DIR}/bitmaps/480x272/mask_*.png 8bits "${MASK_ARGS}")
|
||||
add_bitmaps_target(${BITMAP_TARGET_PREFIX}_masks "${RADIO_SRC_DIR}/bitmaps/480x272/mask_*.png" 8bits "${MASK_ARGS}")
|
||||
add_bitmaps_target(${BITMAP_TARGET_PREFIX}_slider_masks "${RADIO_SRC_DIR}/bitmaps/480x272/slider/*.png" 8bits "${MASK_ARGS}")
|
||||
add_bitmaps_target(${BITMAP_TARGET_PREFIX}_layouts_masks "${RADIO_SRC_DIR}/gui/colorlcd/layouts/*.png" 8bits "${MASK_ARGS}")
|
||||
add_bitmaps_target(${BITMAP_TARGET_PREFIX}_fonts ${RADIO_SRC_DIR}/fonts/truetype/*.png 8bits "${MASK_RLE_ARGS}")
|
||||
@@ -35,8 +35,8 @@ add_bitmaps_target(${BITMAP_TARGET_PREFIX}_volume_masks ${RADIO_SRC_DIR}/bitmaps
|
||||
add_bitmaps_target(${BITMAP_TARGET_PREFIX}_themes_masks "${RADIO_SRC_DIR}/bitmaps/480x272/default_theme/mask_*.png" 8bits "${BITMAPS_ARGS}")
|
||||
add_png_target(${BITMAP_TARGET_PREFIX}_themes_alpha "${RADIO_SRC_DIR}/bitmaps/480x272/default_theme/alpha_*.png")
|
||||
|
||||
add_bitmaps_target(${BITMAP_TARGET_PREFIX}_bootloader_bitmaps ${RADIO_SRC_DIR}/bitmaps/480x272/bootloader/bmp_*.png "4/4/4/4" "${BITMAP_RLE_ARGS}")
|
||||
add_bitmaps_target(${BITMAP_TARGET_PREFIX}_bootloader_icons ${RADIO_SRC_DIR}/bitmaps/480x272/bootloader/icon_*.png 8bits "${MASK_ARGS}")
|
||||
add_bitmaps_target(${BITMAP_TARGET_PREFIX}_bootloader_bitmaps "${RADIO_SRC_DIR}/bitmaps/480x272/bootloader/bmp_*.png" "4/4/4/4" "${BITMAP_RLE_ARGS}")
|
||||
add_bitmaps_target(${BITMAP_TARGET_PREFIX}_bootloader_icons "${RADIO_SRC_DIR}/bitmaps/480x272/bootloader/icon_*.png" 8bits "${MASK_ARGS}")
|
||||
|
||||
add_dependencies(${BITMAP_TARGET_PREFIX}_bitmaps ${BITMAP_TARGET_PREFIX}_calibration_bitmaps ${BITMAP_TARGET_PREFIX}_button_bitmaps ${BITMAP_TARGET_PREFIX}_alpha_bitmaps
|
||||
${BITMAP_TARGET_PREFIX}_alpha_calibration_bitmaps ${BITMAP_TARGET_PREFIX}_masks ${BITMAP_TARGET_PREFIX}_slider_masks ${BITMAP_TARGET_PREFIX}_layouts_masks
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
@@ -178,9 +178,6 @@ void evalFunctions(const CustomFunctionData * functions, CustomFunctionsContext
|
||||
case FUNC_INSTANT_TRIM:
|
||||
newActiveFunctions |= (1u << FUNCTION_INSTANT_TRIM);
|
||||
if (!isFunctionActive(FUNCTION_INSTANT_TRIM)) {
|
||||
#if defined(COLORLCD)
|
||||
#warning IS_INSTANT_TRIM_ALLOWED() is always false
|
||||
#endif
|
||||
if (IS_INSTANT_TRIM_ALLOWED()) {
|
||||
instantTrim();
|
||||
}
|
||||
|
||||
@@ -240,7 +240,10 @@ inline uint8_t MODULE_SUBTYPE_ROWS(int moduleIdx)
|
||||
}
|
||||
|
||||
#define POT_WARN_ROWS ((g_model.potsWarnMode) ? (uint8_t)(NUM_POTS+NUM_SLIDERS) : (uint8_t)0)
|
||||
#define TIMER_ROWS 1, 0, 1, 0, 0, 0
|
||||
#define TIMER_ROWS(x) \
|
||||
1, 0, 1, 0, 0, \
|
||||
g_model.timers[x].countdownBeep != COUNTDOWN_SILENT ? (uint8_t)1 \
|
||||
: (uint8_t)0
|
||||
|
||||
#if defined(PCBSKY9X)
|
||||
#define EXTRA_MODULE_ROWS LABEL(ExtraModule), 1, 2,
|
||||
@@ -411,9 +414,9 @@ void menuModelSetup(event_t event)
|
||||
MENU_TAB({
|
||||
HEADER_LINE_COLUMNS
|
||||
0,
|
||||
TIMER_ROWS,
|
||||
TIMER_ROWS,
|
||||
TIMER_ROWS,
|
||||
TIMER_ROWS(0),
|
||||
TIMER_ROWS(1),
|
||||
TIMER_ROWS(2),
|
||||
0, // Extended limits
|
||||
1, // Extended trims
|
||||
0, // Show trims
|
||||
|
||||
@@ -20,145 +20,26 @@
|
||||
|
||||
#include "opentx.h"
|
||||
|
||||
const unsigned char about_bmp[] = {
|
||||
#include "about.lbm"
|
||||
};
|
||||
|
||||
enum AboutScreens {
|
||||
ABOUT_OPENTX,
|
||||
ABOUT_HARDWARE,
|
||||
ABOUT_BERTRAND,
|
||||
ABOUT_ANDRE,
|
||||
ABOUT_MIKE,
|
||||
ABOUT_KJELL,
|
||||
ABOUT_MARTIN,
|
||||
ABOUT_ROMOLO,
|
||||
ABOUT_ROB,
|
||||
ABOUT_PARENTS,
|
||||
ABOUT_END,
|
||||
ABOUT_COUNT,
|
||||
};
|
||||
|
||||
#define ABOUT_X 2
|
||||
#define ABOUT_INDENT 4
|
||||
|
||||
#if defined(KEYS_GPIO_REG_PAGEDN)
|
||||
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_PAGEUP)
|
||||
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGEDN)
|
||||
#elif defined(NAVIGATION_X7)
|
||||
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_LONG(KEY_PAGE)
|
||||
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGE)
|
||||
#else
|
||||
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_FIRST(KEY_UP)
|
||||
#define EVT_KEY_NEXT_VIEW EVT_KEY_FIRST(KEY_DOWN)
|
||||
#endif
|
||||
const char ABOUT_VERSION_1[] = "EdgeTX Endeavour (2.4.0)";
|
||||
const char ABOUT_VERSION_2[] = "Copyright (C) 2021 EdgeTX";
|
||||
const char ABOUT_VERSION_3[] = "https://edge-tx.org";
|
||||
|
||||
void menuAboutView(event_t event)
|
||||
{
|
||||
static uint8_t screenIndex;
|
||||
static uint8_t greyIndex;
|
||||
|
||||
switch(event)
|
||||
{
|
||||
case EVT_ENTRY:
|
||||
screenIndex = 0;
|
||||
greyIndex = 0;
|
||||
break;
|
||||
case EVT_KEY_NEXT_VIEW:
|
||||
screenIndex < ABOUT_PARENTS ? screenIndex++ : screenIndex = ABOUT_OPENTX;
|
||||
greyIndex = 0;
|
||||
break;
|
||||
case EVT_KEY_PREVIOUS_VIEW:
|
||||
if (IS_KEY_LONG(EVT_KEY_PREVIOUS_VIEW)) {
|
||||
killEvents(event);
|
||||
}
|
||||
screenIndex > ABOUT_OPENTX ? screenIndex-- : screenIndex = ABOUT_PARENTS;
|
||||
greyIndex = 0;
|
||||
break;
|
||||
case EVT_KEY_FIRST(KEY_EXIT):
|
||||
case EVT_KEY_FIRST(KEY_ENTER):
|
||||
chainMenu(menuMainView);
|
||||
break;
|
||||
}
|
||||
|
||||
lcdDrawText(17, 0, STR_ABOUTUS, DBLSIZE|INVERS);
|
||||
lcdDrawSolidHorizontalLine(17, 16, LCD_W-17);
|
||||
lcdDraw1bitBitmap(8, 0, about_bmp, 0);
|
||||
LcdFlags att = 0;
|
||||
lcdDrawText(2, 0, STR_ABOUTUS, DBLSIZE|INVERS);
|
||||
lcdDrawSolidHorizontalLine(0, 16, LCD_W-17);
|
||||
|
||||
uint8_t screenDuration = 150;
|
||||
|
||||
switch (screenIndex) {
|
||||
case ABOUT_OPENTX:
|
||||
case ABOUT_END:
|
||||
lcdDrawText(ABOUT_X, 22, STR_ABOUT_OPENTX_1, SMLSIZE);
|
||||
lcdDrawText(ABOUT_X, 30, STR_ABOUT_OPENTX_2, SMLSIZE);
|
||||
lcdDrawText(ABOUT_X, 38, STR_ABOUT_OPENTX_3, SMLSIZE);
|
||||
lcdDrawText(ABOUT_X, 46, STR_ABOUT_OPENTX_4, SMLSIZE);
|
||||
lcdDrawText(ABOUT_X, 54, STR_ABOUT_OPENTX_5, SMLSIZE);
|
||||
screenDuration = 255;
|
||||
break;
|
||||
|
||||
case ABOUT_BERTRAND:
|
||||
lcdDrawText(ABOUT_X, 24, STR_ABOUT_BERTRAND_1, att);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 36, STR_ABOUT_BERTRAND_2, att|SMLSIZE);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 44, STR_ABOUT_BERTRAND_3, att|SMLSIZE);
|
||||
break;
|
||||
|
||||
case ABOUT_ANDRE:
|
||||
lcdDrawText(ABOUT_X, 24, STR_ABOUT_ANDRE_1, att);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 36, STR_ABOUT_ANDRE_2, att|SMLSIZE);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 44, STR_ABOUT_ANDRE_3, att|SMLSIZE);
|
||||
break;
|
||||
|
||||
case ABOUT_MIKE:
|
||||
lcdDrawText(ABOUT_X, 24, STR_ABOUT_MIKE_1, att);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 36, STR_ABOUT_MIKE_2, att|SMLSIZE);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 44, STR_ABOUT_MIKE_3, att|SMLSIZE);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 52, STR_ABOUT_MIKE_4, att|SMLSIZE);
|
||||
break;
|
||||
|
||||
case ABOUT_KJELL:
|
||||
lcdDrawText(ABOUT_X, 24, STR_ABOUT_KJELL_1, att);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 36, STR_ABOUT_KJELL_2, att|SMLSIZE);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 44, STR_ABOUT_KJELL_3, att|SMLSIZE);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 52, STR_ABOUT_KJELL_4, att|SMLSIZE);
|
||||
break;
|
||||
|
||||
case ABOUT_MARTIN:
|
||||
lcdDrawText(ABOUT_X, 24, STR_ABOUT_MARTIN_1, att);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 36, STR_ABOUT_MARTIN_2, att|SMLSIZE);
|
||||
break;
|
||||
|
||||
case ABOUT_ROMOLO:
|
||||
lcdDrawText(ABOUT_X, 24, STR_ABOUT_ROMOLO_1, att);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 36, STR_ABOUT_ROMOLO_2, att|SMLSIZE);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 44, STR_ABOUT_ROMOLO_3, att|SMLSIZE);
|
||||
break;
|
||||
|
||||
case ABOUT_ROB:
|
||||
lcdDrawText(ABOUT_X, 24, STR_ABOUT_ROB_1, att);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 36, STR_ABOUT_ROB_2, att|SMLSIZE);
|
||||
break;
|
||||
|
||||
case ABOUT_HARDWARE:
|
||||
lcdDrawText(ABOUT_X, 24, STR_ABOUT_HARDWARE_1, att);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 36, STR_ABOUT_HARDWARE_2, att|SMLSIZE);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 44, STR_ABOUT_HARDWARE_3, att|SMLSIZE);
|
||||
break;
|
||||
|
||||
case ABOUT_PARENTS:
|
||||
lcdDrawText(ABOUT_X, 24, STR_ABOUT_PARENTS_1, att);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 36, STR_ABOUT_PARENTS_2, att|SMLSIZE);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 44, STR_ABOUT_PARENTS_3, att|SMLSIZE);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 52, STR_ABOUT_PARENTS_4, att|SMLSIZE);
|
||||
screenDuration = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
if (++greyIndex == screenDuration) {
|
||||
greyIndex = 0;
|
||||
if (++screenIndex == ABOUT_COUNT) {
|
||||
chainMenu(menuMainView);
|
||||
}
|
||||
}
|
||||
lcdDrawText(ABOUT_INDENT, 22, ABOUT_VERSION_1, SMLSIZE);
|
||||
lcdDrawText(ABOUT_INDENT, 30, ABOUT_VERSION_2, SMLSIZE);
|
||||
lcdDrawText(ABOUT_INDENT, 38, ABOUT_VERSION_3, SMLSIZE);
|
||||
}
|
||||
|
||||
@@ -275,8 +275,10 @@ void editTimerCountdown(int timerIdx, coord_t y, LcdFlags attr, event_t event)
|
||||
#define TRAINER_ROWS LABEL(Trainer), 0, TRAINER_CHANNELS_ROW, TRAINER_PPM_PARAMS_ROW
|
||||
#endif
|
||||
|
||||
#define TIMER_ROWS \
|
||||
1 | NAVIGATION_LINE_BY_LINE, 0, 1 | NAVIGATION_LINE_BY_LINE, 0, 0, 0
|
||||
#define TIMER_ROWS(x) \
|
||||
1 | NAVIGATION_LINE_BY_LINE, 0, 1 | NAVIGATION_LINE_BY_LINE, 0, 0, \
|
||||
g_model.timers[x].countdownBeep != COUNTDOWN_SILENT ? (uint8_t)1 \
|
||||
: (uint8_t)0
|
||||
|
||||
inline uint8_t EXTERNAL_MODULE_TYPE_ROW()
|
||||
{
|
||||
@@ -287,11 +289,11 @@ inline uint8_t EXTERNAL_MODULE_TYPE_ROW()
|
||||
}
|
||||
|
||||
#if TIMERS == 1
|
||||
#define TIMERS_ROWS TIMER_ROWS
|
||||
#define TIMERS_ROWS TIMER_ROWS(0)
|
||||
#elif TIMERS == 2
|
||||
#define TIMERS_ROWS TIMER_ROWS, TIMER_ROWS
|
||||
#define TIMERS_ROWS TIMER_ROWS(0), TIMER_ROWS(1)
|
||||
#elif TIMERS == 3
|
||||
#define TIMERS_ROWS TIMER_ROWS, TIMER_ROWS, TIMER_ROWS
|
||||
#define TIMERS_ROWS TIMER_ROWS(0), TIMER_ROWS(1), TIMER_ROWS(2)
|
||||
#endif
|
||||
#if defined(PCBX9E)
|
||||
#define SW_WARN_ROWS uint8_t(NAVIGATION_LINE_BY_LINE|(getSwitchWarningsCount()-1)), uint8_t(getSwitchWarningsCount() > 8 ? TITLE_ROW : HIDDEN_ROW), uint8_t(getSwitchWarningsCount() > 16 ? TITLE_ROW : HIDDEN_ROW)
|
||||
|
||||
@@ -20,132 +20,26 @@
|
||||
|
||||
#include "opentx.h"
|
||||
|
||||
const unsigned char about_bmp[] = {
|
||||
#include "about.lbm"
|
||||
};
|
||||
|
||||
enum AboutScreens {
|
||||
ABOUT_OPENTX,
|
||||
ABOUT_HARDWARE,
|
||||
ABOUT_BERTRAND,
|
||||
ABOUT_ANDRE,
|
||||
ABOUT_MIKE,
|
||||
ABOUT_KJELL,
|
||||
ABOUT_MARTIN,
|
||||
ABOUT_ROMOLO,
|
||||
ABOUT_ROB,
|
||||
ABOUT_PARENTS,
|
||||
ABOUT_END,
|
||||
ABOUT_COUNT,
|
||||
};
|
||||
|
||||
#define ABOUT_X 62
|
||||
#define ABOUT_INDENT 6
|
||||
|
||||
const char ABOUT_VERSION_1[] = "EdgeTX Endeavour (2.4.0)";
|
||||
const char ABOUT_VERSION_2[] = "Copyright (C) 2021 EdgeTX";
|
||||
const char ABOUT_VERSION_3[] = "https://edge-tx.org";
|
||||
|
||||
void menuAboutView(event_t event)
|
||||
{
|
||||
static uint8_t screenIndex;
|
||||
static uint8_t greyIndex;
|
||||
|
||||
switch(event)
|
||||
{
|
||||
case EVT_ENTRY:
|
||||
screenIndex = 0;
|
||||
greyIndex = 0;
|
||||
break;
|
||||
case EVT_KEY_FIRST(KEY_DOWN):
|
||||
screenIndex < ABOUT_PARENTS ? screenIndex++ : screenIndex = ABOUT_OPENTX;
|
||||
greyIndex = 0;
|
||||
break;
|
||||
case EVT_KEY_FIRST(KEY_UP):
|
||||
screenIndex > ABOUT_OPENTX ? screenIndex-- : screenIndex = ABOUT_PARENTS;
|
||||
greyIndex = 0;
|
||||
break;
|
||||
case EVT_KEY_FIRST(KEY_ENTER):
|
||||
case EVT_KEY_FIRST(KEY_EXIT):
|
||||
chainMenu(menuMainView);
|
||||
break;
|
||||
}
|
||||
|
||||
lcdDrawBitmap(0, 0, about_bmp);
|
||||
lcdDrawText(64, 0, STR_ABOUTUS, DBLSIZE);
|
||||
lcdDrawSolidHorizontalLine(ABOUT_X, 18, 120);
|
||||
lcdDrawSolidHorizontalLine(ABOUT_X, 19, 130, GREY_DEFAULT);
|
||||
LcdFlags att = GREY(max(0, 15-greyIndex/2));
|
||||
lcdDrawText(2, 2, STR_ABOUTUS, BOLD);
|
||||
lcdDrawSolidHorizontalLine(0, 11, 130, GREY_DEFAULT);
|
||||
|
||||
uint8_t screenDuration = 150;
|
||||
|
||||
switch (screenIndex) {
|
||||
case ABOUT_OPENTX:
|
||||
case ABOUT_END:
|
||||
lcdDrawText(ABOUT_X, 22, STR_ABOUT_OPENTX_1, SMLSIZE);
|
||||
lcdDrawText(ABOUT_X, 30, STR_ABOUT_OPENTX_2, SMLSIZE);
|
||||
lcdDrawText(ABOUT_X, 38, STR_ABOUT_OPENTX_3, SMLSIZE);
|
||||
lcdDrawText(ABOUT_X, 46, STR_ABOUT_OPENTX_4, SMLSIZE);
|
||||
lcdDrawText(ABOUT_X, 54, STR_ABOUT_OPENTX_5, SMLSIZE);
|
||||
screenDuration = 255;
|
||||
break;
|
||||
|
||||
case ABOUT_BERTRAND:
|
||||
lcdDrawText(ABOUT_X, 24, STR_ABOUT_BERTRAND_1, att);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 36, STR_ABOUT_BERTRAND_2, att|SMLSIZE);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 44, STR_ABOUT_BERTRAND_3, att|SMLSIZE);
|
||||
break;
|
||||
|
||||
case ABOUT_ANDRE:
|
||||
lcdDrawText(ABOUT_X, 24, STR_ABOUT_ANDRE_1, att);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 36, STR_ABOUT_ANDRE_2, att|SMLSIZE);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 44, STR_ABOUT_ANDRE_3, att|SMLSIZE);
|
||||
break;
|
||||
|
||||
case ABOUT_MIKE:
|
||||
lcdDrawText(ABOUT_X, 24, STR_ABOUT_MIKE_1, att);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 36, STR_ABOUT_MIKE_2, att|SMLSIZE);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 44, STR_ABOUT_MIKE_3, att|SMLSIZE);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 52, STR_ABOUT_MIKE_4, att|SMLSIZE);
|
||||
break;
|
||||
|
||||
case ABOUT_KJELL:
|
||||
lcdDrawText(ABOUT_X, 24, STR_ABOUT_KJELL_1, att);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 36, STR_ABOUT_KJELL_2, att|SMLSIZE);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 44, STR_ABOUT_KJELL_3, att|SMLSIZE);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 52, STR_ABOUT_KJELL_4, att|SMLSIZE);
|
||||
break;
|
||||
|
||||
case ABOUT_MARTIN:
|
||||
lcdDrawText(ABOUT_X, 24, STR_ABOUT_MARTIN_1, att);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 36, STR_ABOUT_MARTIN_2, att|SMLSIZE);
|
||||
break;
|
||||
|
||||
case ABOUT_ROMOLO:
|
||||
lcdDrawText(ABOUT_X, 24, STR_ABOUT_ROMOLO_1, att);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 36, STR_ABOUT_ROMOLO_2, att|SMLSIZE);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 44, STR_ABOUT_ROMOLO_3, att|SMLSIZE);
|
||||
break;
|
||||
|
||||
case ABOUT_ROB:
|
||||
lcdDrawText(ABOUT_X, 24, STR_ABOUT_ROB_1, att);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 36, STR_ABOUT_ROB_2, att|SMLSIZE);
|
||||
break;
|
||||
|
||||
case ABOUT_HARDWARE:
|
||||
lcdDrawText(ABOUT_X, 24, STR_ABOUT_HARDWARE_1, att);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 36, STR_ABOUT_HARDWARE_2, att|SMLSIZE);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 44, STR_ABOUT_HARDWARE_3, att|SMLSIZE);
|
||||
break;
|
||||
|
||||
case ABOUT_PARENTS:
|
||||
lcdDrawText(ABOUT_X, 24, STR_ABOUT_PARENTS_1, att);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 36, STR_ABOUT_PARENTS_2, att|SMLSIZE);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 44, STR_ABOUT_PARENTS_3, att|SMLSIZE);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, 52, STR_ABOUT_PARENTS_4, att|SMLSIZE);
|
||||
screenDuration = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
if (++greyIndex == screenDuration) {
|
||||
greyIndex = 0;
|
||||
if (++screenIndex == ABOUT_COUNT) {
|
||||
chainMenu(menuMainView);
|
||||
}
|
||||
}
|
||||
lcdDrawText(ABOUT_INDENT, 22, ABOUT_VERSION_1);
|
||||
lcdDrawText(ABOUT_INDENT, 32, ABOUT_VERSION_2, SMLSIZE);
|
||||
lcdDrawText(ABOUT_INDENT, 42, ABOUT_VERSION_3);
|
||||
}
|
||||
|
||||
@@ -55,6 +55,7 @@ set(GUI_SRC
|
||||
radio_diagkeys.cpp
|
||||
radio_diaganas.cpp
|
||||
radio_calibration.cpp
|
||||
view_about.cpp
|
||||
view_main.cpp
|
||||
view_main_menu.cpp
|
||||
view_main_decoration.cpp
|
||||
|
||||
@@ -324,15 +324,15 @@ coord_t drawGPSCoord(BitmapBuffer * dc, coord_t x, coord_t y, int32_t value, con
|
||||
void drawGPSPosition(BitmapBuffer * dc, coord_t x, coord_t y, int32_t longitude, int32_t latitude, LcdFlags flags)
|
||||
{
|
||||
if (flags & PREC1) {
|
||||
drawGPSCoord(dc, x, y, latitude, "NS", flags, false);
|
||||
drawGPSCoord(dc, x, y + FH, longitude, "EW", flags, false);
|
||||
drawGPSCoord(dc, x, y, latitude, "NS", flags, true);
|
||||
drawGPSCoord(dc, x, y + FH, longitude, "EW", flags, true);
|
||||
} else {
|
||||
if (flags & RIGHT) {
|
||||
x = drawGPSCoord(dc, x, y, longitude, "EW", flags, false);
|
||||
drawGPSCoord(dc, x - 5, y, latitude, "NS", flags, false);
|
||||
x = drawGPSCoord(dc, x, y, longitude, "EW", flags, true);
|
||||
drawGPSCoord(dc, x - 5, y, latitude, "NS", flags, true);
|
||||
} else {
|
||||
x = drawGPSCoord(dc, x, y, latitude, "NS", flags, false);
|
||||
drawGPSCoord(dc, x + 5, y, longitude, "EW", flags, false);
|
||||
x = drawGPSCoord(dc, x, y, latitude, "NS", flags, true);
|
||||
drawGPSCoord(dc, x + 5, y, longitude, "EW", flags, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,8 @@
|
||||
void MainViewTrim::checkEvents()
|
||||
{
|
||||
Window::checkEvents();
|
||||
int8_t newValue = getTrimValue(mixerCurrentFlightMode, idx);
|
||||
int8_t stickIndex = CONVERT_MODE(idx);
|
||||
int8_t newValue = getTrimValue(mixerCurrentFlightMode, stickIndex);
|
||||
if (value != newValue) {
|
||||
value = newValue;
|
||||
invalidate();
|
||||
|
||||
@@ -56,7 +56,7 @@ void ModelHeliPage::build(FormWindow * window)
|
||||
|
||||
// Aileron source
|
||||
new StaticText(window, grid.getLabelSlot(), STR_AILERON);
|
||||
new SourceChoice(window, grid.getFieldSlot(), 0, MIXSRC_LAST_CH, GET_SET_DEFAULT(g_model.swashR.aileronWeight));
|
||||
new SourceChoice(window, grid.getFieldSlot(), 0, MIXSRC_LAST_CH, GET_SET_DEFAULT(g_model.swashR.aileronSource));
|
||||
grid.nextLine();
|
||||
|
||||
// Aileron weight
|
||||
|
||||
@@ -337,7 +337,7 @@ void CommonInputOrMixButton::drawFlightModes(BitmapBuffer *dc,
|
||||
void CommonInputOrMixButton::paint(BitmapBuffer * dc)
|
||||
{
|
||||
dc->drawSolidFilledRect(0, 0, width(), height(),
|
||||
/*hasFocus() ? FOCUS_BGCOLOR :*/ FIELD_BGCOLOR);
|
||||
isActive() ? HIGHLIGHT_COLOR : FIELD_BGCOLOR);
|
||||
paintBody(dc);
|
||||
|
||||
if (!hasFocus())
|
||||
@@ -397,12 +397,17 @@ class InputLineButton : public CommonInputOrMixButton
|
||||
if (line.flightModes) {
|
||||
drawFlightModes(dc, line.flightModes, textColor);
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
ModelInputsPage::ModelInputsPage():
|
||||
PageTab(STR_MENUINPUTS, ICON_MODEL_INPUTS)
|
||||
{
|
||||
setOnSetVisibleHandler([]() {
|
||||
// reset clipboard
|
||||
s_copyMode = 0;
|
||||
});
|
||||
}
|
||||
|
||||
void ModelInputsPage::rebuild(FormWindow * window, int8_t focusIndex)
|
||||
|
||||
@@ -312,6 +312,10 @@ void insertMix(uint8_t idx, uint8_t channel)
|
||||
ModelMixesPage::ModelMixesPage() :
|
||||
PageTab(STR_MIXES, ICON_MODEL_MIXER)
|
||||
{
|
||||
setOnSetVisibleHandler([]() {
|
||||
// reset clipboard
|
||||
s_copyMode = 0;
|
||||
});
|
||||
}
|
||||
|
||||
void ModelMixesPage::rebuild(FormWindow * window, int8_t focusMixIndex)
|
||||
|
||||
@@ -120,7 +120,7 @@ class ModelButton : public Button
|
||||
partialModel.header.name[0] != '\0') {
|
||||
|
||||
if (version == 219) {
|
||||
size_t len = sizeof(partialModel.header.name);
|
||||
int len = (int)sizeof(partialModel.header.name);
|
||||
char* str = partialModel.header.name;
|
||||
for (int i=0; i < len; i++) {
|
||||
str[i] = zchar2char(str[i]);
|
||||
@@ -210,14 +210,21 @@ class ModelCategoryPageBody : public FormWindow
|
||||
update();
|
||||
}
|
||||
|
||||
void update(int selected = 0)
|
||||
void update(int selected = -1)
|
||||
{
|
||||
clear();
|
||||
|
||||
if (selected < 0) {
|
||||
auto model = modelslist.getCurrentModel();
|
||||
selected = category->getModelIndex(model);
|
||||
if (selected < 0) selected = 0;
|
||||
}
|
||||
|
||||
int index = 0;
|
||||
coord_t y = MODEL_CELL_PADDING;
|
||||
coord_t x = MODEL_CELL_PADDING;
|
||||
|
||||
ModelButton* selectButton = nullptr;
|
||||
for (auto &model : *category) {
|
||||
auto button = new ModelButton(
|
||||
this, {x, y, MODEL_SELECT_CELL_WIDTH, MODEL_SELECT_CELL_HEIGHT},
|
||||
@@ -237,7 +244,7 @@ class ModelCategoryPageBody : public FormWindow
|
||||
storageCheck(true);
|
||||
|
||||
modelslist.setCurrentModel(model);
|
||||
update(); // modelslist.getModelIndex(modelCell));
|
||||
update();
|
||||
});
|
||||
}
|
||||
menu->addLine(STR_CREATE_MODEL, getCreateModelAction());
|
||||
@@ -264,7 +271,7 @@ class ModelCategoryPageBody : public FormWindow
|
||||
.c_str(),
|
||||
[=] {
|
||||
modelslist.removeModel(category, model);
|
||||
update(index > 0 ? index - 1 : 0);
|
||||
update(index < category->size() - 1 ? index : index - 1);
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -275,7 +282,7 @@ class ModelCategoryPageBody : public FormWindow
|
||||
});
|
||||
|
||||
if (selected == index) {
|
||||
button->setFocus(SET_FOCUS_DEFAULT);
|
||||
selectButton = button;
|
||||
}
|
||||
|
||||
index++;
|
||||
@@ -299,6 +306,8 @@ class ModelCategoryPageBody : public FormWindow
|
||||
|
||||
if (category->empty()) {
|
||||
setFocus();
|
||||
} else if (selectButton) {
|
||||
selectButton->setFocus();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -368,4 +377,9 @@ ModelSelectMenu::ModelSelectMenu():
|
||||
for (auto category: modelslist.getCategories()) {
|
||||
addTab(new ModelCategoryPage(category));
|
||||
}
|
||||
|
||||
int idx = modelslist.getCurrentCategoryIdx();
|
||||
if (idx >= 0) {
|
||||
setCurrentTab(idx);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,6 +84,9 @@ class SensorButton : public Button {
|
||||
else
|
||||
dc->drawSolidFilledRect(2, 2, rect.w - 4, rect.h - 4, FIELD_BGCOLOR);
|
||||
|
||||
if (telemetryItem.isFresh())
|
||||
dc->drawFilledCircle(24, (2 + rect.h - 4)/2, 4, DEFAULT_COLOR);
|
||||
|
||||
dc->drawNumber(2, 1, number, LEFT, 0, nullptr, ":");
|
||||
|
||||
dc->drawSizedText(SENSOR_COL1, line1, g_model.telemetrySensors[index].label, TELEM_LABEL_LEN);
|
||||
@@ -122,17 +125,21 @@ class SensorEditWindow : public Page {
|
||||
Page(ICON_MODEL_TELEMETRY),
|
||||
index(index)
|
||||
{
|
||||
buildBody(&body);
|
||||
buildHeader(&header);
|
||||
buildBody(&body);
|
||||
}
|
||||
|
||||
protected:
|
||||
uint8_t index;
|
||||
FormWindow * sensorParametersWindow = nullptr;
|
||||
FormGroup * sensorParametersWindow = nullptr;
|
||||
|
||||
void buildHeader(Window * window)
|
||||
{
|
||||
new StaticText(window, {PAGE_TITLE_LEFT, PAGE_TITLE_TOP, LCD_W - PAGE_TITLE_LEFT, PAGE_LINE_HEIGHT}, STR_SENSOR + std::to_string(index + 1), 0, MENU_COLOR);
|
||||
new StaticText(window,
|
||||
{PAGE_TITLE_LEFT, PAGE_TITLE_TOP, LCD_W - PAGE_TITLE_LEFT,
|
||||
PAGE_LINE_HEIGHT},
|
||||
STR_SENSOR + std::to_string(index + 1), 0,
|
||||
MENU_HIGHLIGHT_COLOR);
|
||||
// dynamic display of sensor value ?
|
||||
//new StaticText(window, {70, 28, 100, 20}, "SF" + std::to_string(index), 0, MENU_COLOR);
|
||||
}
|
||||
@@ -321,9 +328,7 @@ class SensorEditWindow : public Page {
|
||||
SET_DIRTY();
|
||||
});
|
||||
|
||||
coord_t delta = sensorParametersWindow->adjustHeight();
|
||||
Window * parent = sensorParametersWindow->getParent();
|
||||
parent->moveWindowsTop(sensorParametersWindow->top(), delta);
|
||||
sensorParametersWindow->adjustHeight();
|
||||
}
|
||||
|
||||
void buildBody(FormWindow * window)
|
||||
@@ -355,7 +360,9 @@ class SensorEditWindow : public Page {
|
||||
});
|
||||
grid.nextLine();
|
||||
|
||||
sensorParametersWindow = new FormWindow(window, {0, grid.getWindowHeight(), LCD_W, 0});
|
||||
sensorParametersWindow = new FormGroup(window, {0, grid.getWindowHeight(), LCD_W, 0},
|
||||
FORM_FORWARD_FOCUS | FORM_NO_BORDER
|
||||
| FORWARD_SCROLL);
|
||||
updateSensorParametersWindow();
|
||||
grid.addWindow(sensorParametersWindow);
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ class RadioAnalogsDiagsWindow: public Window {
|
||||
|
||||
void RadioAnalogsDiagsPage::buildHeader(Window * window)
|
||||
{
|
||||
new StaticText(window, {PAGE_TITLE_LEFT, PAGE_TITLE_TOP + 10, LCD_W - PAGE_TITLE_LEFT, PAGE_LINE_HEIGHT}, STR_MENU_RADIO_ANALOGS, 0, MENU_COLOR);
|
||||
new StaticText(window, {PAGE_TITLE_LEFT, PAGE_TITLE_TOP + 10, LCD_W - PAGE_TITLE_LEFT, PAGE_LINE_HEIGHT}, STR_MENU_RADIO_ANALOGS, 0, MENU_HIGHLIGHT_COLOR);
|
||||
}
|
||||
|
||||
void RadioAnalogsDiagsPage::buildBody(Window * window)
|
||||
|
||||
@@ -114,7 +114,7 @@ class RadioKeyDiagsWindow : public Window
|
||||
|
||||
void RadioKeyDiagsPage::buildHeader(Window * window)
|
||||
{
|
||||
new StaticText(window, {PAGE_TITLE_LEFT, PAGE_TITLE_TOP + 10, LCD_W - PAGE_TITLE_LEFT, PAGE_LINE_HEIGHT}, STR_MENU_RADIO_SWITCHES, 0, MENU_COLOR);
|
||||
new StaticText(window, {PAGE_TITLE_LEFT, PAGE_TITLE_TOP + 10, LCD_W - PAGE_TITLE_LEFT, PAGE_LINE_HEIGHT}, STR_MENU_RADIO_SWITCHES, 0, MENU_HIGHLIGHT_COLOR);
|
||||
}
|
||||
|
||||
void RadioKeyDiagsPage::buildBody(Window * window)
|
||||
|
||||
@@ -278,19 +278,29 @@ void RadioHardwarePage::build(FormWindow * window)
|
||||
|
||||
#if defined(AUX_SERIAL)
|
||||
new StaticText(window, grid.getLabelSlot(), STR_AUX_SERIAL_MODE);
|
||||
auto aux = new Choice(window, grid.getFieldSlot(1,0), STR_AUX_SERIAL_MODES, 0, UART_MODE_MAX, GET_SET_DEFAULT(g_eeGeneral.auxSerialMode));
|
||||
aux->setAvailableHandler([=](int value) {
|
||||
return isAuxModeAvailable;
|
||||
});
|
||||
auto aux =
|
||||
new Choice(window, grid.getFieldSlot(1, 0), STR_AUX_SERIAL_MODES, 0,
|
||||
UART_MODE_MAX, GET_DEFAULT(g_eeGeneral.auxSerialMode),
|
||||
[](int value) {
|
||||
g_eeGeneral.auxSerialMode = value;
|
||||
auxSerialInit(g_eeGeneral.auxSerialMode, modelTelemetryProtocol());
|
||||
SET_DIRTY();
|
||||
});
|
||||
aux->setAvailableHandler(isAuxModeAvailable);
|
||||
grid.nextLine();
|
||||
#endif
|
||||
|
||||
#if defined(AUX2_SERIAL)
|
||||
new StaticText(window, grid.getLabelSlot(), STR_AUX2_SERIAL_MODE);
|
||||
auto aux2 = new Choice(window, grid.getFieldSlot(1,0), STR_AUX_SERIAL_MODES, 0, UART_MODE_MAX, GET_SET_DEFAULT(g_eeGeneral.aux2SerialMode));
|
||||
aux2->setAvailableHandler([=](int value) {
|
||||
return isAux2ModeAvailable;
|
||||
});
|
||||
auto aux2 =
|
||||
new Choice(window, grid.getFieldSlot(1, 0), STR_AUX_SERIAL_MODES, 0,
|
||||
UART_MODE_MAX, GET_DEFAULT(g_eeGeneral.aux2SerialMode),
|
||||
[](int value) {
|
||||
g_eeGeneral.aux2SerialMode = value;
|
||||
aux2SerialInit(g_eeGeneral.aux2SerialMode, modelTelemetryProtocol());
|
||||
SET_DIRTY();
|
||||
});
|
||||
aux2->setAvailableHandler(isAux2ModeAvailable);
|
||||
grid.nextLine();
|
||||
#endif
|
||||
|
||||
|
||||
@@ -33,8 +33,8 @@ class FileNameEditWindow : public Page
|
||||
FileNameEditWindow(const std::string iName) :
|
||||
Page(ICON_RADIO_SD_MANAGER), name(std::move(iName))
|
||||
{
|
||||
buildBody(&body);
|
||||
buildHeader(&header);
|
||||
buildBody(&body);
|
||||
};
|
||||
|
||||
#if defined(DEBUG_WINDOWS)
|
||||
@@ -45,7 +45,7 @@ class FileNameEditWindow : public Page
|
||||
|
||||
void buildHeader(Window *window)
|
||||
{
|
||||
new StaticText(window, {70, 4, 180, 30}, STR_RENAME_FILE, MENU_BGCOLOR);
|
||||
new StaticText(window, {PAGE_TITLE_LEFT, PAGE_TITLE_TOP + 10, LCD_W - PAGE_TITLE_LEFT, PAGE_LINE_HEIGHT}, STR_RENAME_FILE, 0, MENU_HIGHLIGHT_COLOR);
|
||||
}
|
||||
|
||||
void buildBody(Window *window)
|
||||
|
||||
@@ -302,7 +302,7 @@ void RadioSetupPage::build(FormWindow * window)
|
||||
// Battery warning
|
||||
new StaticText(window, grid.getLabelSlot(true), STR_BATTERYWARNING);
|
||||
edit = new NumberEdit(window, grid.getFieldSlot(), 30, 120, GET_SET_DEFAULT(g_eeGeneral.vBatWarn), 0, PREC1);
|
||||
edit->setSuffix("v");
|
||||
edit->setSuffix("V");
|
||||
grid.nextLine();
|
||||
|
||||
// Inactivity alarm
|
||||
@@ -356,6 +356,13 @@ void RadioSetupPage::build(FormWindow * window)
|
||||
new Slider(window, grid.getFieldSlot(), BACKLIGHT_LEVEL_MIN, BACKLIGHT_LEVEL_MAX, GET_SET_DEFAULT(g_eeGeneral.blOffBright));
|
||||
grid.nextLine();
|
||||
|
||||
#if defined(KEYS_BACKLIGHT_GPIO)
|
||||
// Keys backlight
|
||||
new StaticText(window, grid.getLabelSlot(true), STR_KEYS_BACKLIGHT);
|
||||
new CheckBox(window, grid.getFieldSlot(), GET_SET_DEFAULT(g_eeGeneral.keysBacklight));
|
||||
grid.nextLine();
|
||||
#endif
|
||||
|
||||
// Flash beep
|
||||
new StaticText(window, grid.getLabelSlot(true), STR_ALARM);
|
||||
new CheckBox(window, grid.getFieldSlot(), GET_SET_DEFAULT(g_eeGeneral.alarmsFlash));
|
||||
|
||||
@@ -60,7 +60,7 @@ class SpecialFunctionEditPage : public Page
|
||||
if (active != isActive()) {
|
||||
invalidate();
|
||||
headerSF->setTextFlags(isActive() ? FONT(BOLD) | HIGHLIGHT_COLOR
|
||||
: MENU_COLOR);
|
||||
: FOCUS_COLOR);
|
||||
active = !active;
|
||||
}
|
||||
}
|
||||
@@ -384,10 +384,23 @@ class SpecialFunctionEditPage : public Page
|
||||
});
|
||||
grid.nextLine();
|
||||
|
||||
// Patch function in case not available
|
||||
if (!isAssignableFunctionAvailable(CFN_FUNC(cfn), functions)) {
|
||||
auto func = 0;
|
||||
while(!isAssignableFunctionAvailable(func, functions)
|
||||
&& (func < FUNC_MAX - 1)) {
|
||||
func++;
|
||||
}
|
||||
if (func < FUNC_MAX - 1) {
|
||||
CFN_FUNC(cfn) = func;
|
||||
}
|
||||
}
|
||||
|
||||
// Function
|
||||
new StaticText(window, grid.getLabelSlot(), STR_FUNC);
|
||||
auto functionChoice =
|
||||
new Choice(window, grid.getFieldSlot(), STR_VFSWFUNC, 0, FUNC_MAX - 1,
|
||||
new Choice(window, grid.getFieldSlot(), STR_VFSWFUNC,
|
||||
0, FUNC_MAX - 1,
|
||||
GET_DEFAULT(CFN_FUNC(cfn)));
|
||||
functionChoice->setSetValueHandler([=](int32_t newValue) {
|
||||
CFN_FUNC(cfn) = newValue;
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* Copyright (C) OpenTX
|
||||
* 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
|
||||
@@ -18,136 +19,36 @@
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#include "view_about.h"
|
||||
#include "opentx.h"
|
||||
|
||||
enum AboutScreens {
|
||||
ABOUT_OPENTX,
|
||||
ABOUT_HARDWARE,
|
||||
ABOUT_BERTRAND,
|
||||
ABOUT_ANDRE,
|
||||
ABOUT_MIKE,
|
||||
ABOUT_KJELL,
|
||||
ABOUT_MARTIN,
|
||||
ABOUT_ROMOLO,
|
||||
ABOUT_ROB,
|
||||
ABOUT_PARENTS,
|
||||
ABOUT_END,
|
||||
ABOUT_COUNT,
|
||||
const uint8_t mask_qrcode[] = {
|
||||
#include "mask_qrcode.lbm"
|
||||
};
|
||||
|
||||
#define ABOUT_X 62
|
||||
#define ABOUT_INDENT 16
|
||||
constexpr coord_t ABOUT_WIDTH = 220;
|
||||
|
||||
bool menuAboutView(event_t event)
|
||||
AboutUs::AboutUs() :
|
||||
MessageDialog(MainWindow::instance(), STR_ABOUT_US, "")
|
||||
{
|
||||
static uint8_t screenIndex = 0;
|
||||
static uint8_t greyIndex = 0;
|
||||
content->setRect({(LCD_W - ABOUT_WIDTH) / 2, 20, ABOUT_WIDTH, LCD_H - 40});
|
||||
|
||||
switch (event) {
|
||||
case EVT_ENTRY:
|
||||
screenIndex = 0;
|
||||
greyIndex = 0;
|
||||
break;
|
||||
#if defined(PCBX12S)
|
||||
case EVT_KEY_FIRST(KEY_PGDN):
|
||||
#elif defined(PCBX10)
|
||||
case EVT_KEY_BREAK(KEY_PGDN):
|
||||
#endif
|
||||
screenIndex < ABOUT_PARENTS ? screenIndex++ : screenIndex = ABOUT_OPENTX;
|
||||
greyIndex = 0;
|
||||
break;
|
||||
case EVT_KEY_FIRST(KEY_PGUP):
|
||||
#if defined(PCBX10)
|
||||
case EVT_KEY_LONG(KEY_PGDN):
|
||||
#endif
|
||||
screenIndex > ABOUT_OPENTX ? screenIndex-- : screenIndex = ABOUT_PARENTS;
|
||||
greyIndex = 0;
|
||||
killEvents(event);
|
||||
break;
|
||||
case EVT_KEY_FIRST(KEY_EXIT):
|
||||
chainMenu(menuMainView);
|
||||
break;
|
||||
}
|
||||
messageWidget->setTextFlags(CENTERED | FONT(BOLD) | DEFAULT_COLOR);
|
||||
messageWidget->setTop(content->top() + 40);
|
||||
messageWidget->setHeight(2*PAGE_LINE_HEIGHT);
|
||||
|
||||
theme->drawBackground();
|
||||
theme->drawTopbarBackground(0);
|
||||
messageWidget->setText("EdgeTX Endeavour (2.4.0)\n"
|
||||
"Copyright (C) 2021 EdgeTX");
|
||||
|
||||
uint8_t screenDuration = 150;
|
||||
|
||||
switch (screenIndex) {
|
||||
case ABOUT_OPENTX:
|
||||
case ABOUT_END:
|
||||
lcdDrawText(ABOUT_X, MENU_CONTENT_TOP, STR_ABOUT_OPENTX_1);
|
||||
lcdDrawText(ABOUT_X, MENU_CONTENT_TOP + FH, STR_ABOUT_OPENTX_2);
|
||||
lcdDrawText(ABOUT_X, MENU_CONTENT_TOP + 2*FH, STR_ABOUT_OPENTX_3);
|
||||
lcdDrawText(ABOUT_X, MENU_CONTENT_TOP + 3*FH, STR_ABOUT_OPENTX_4);
|
||||
lcdDrawText(ABOUT_X, MENU_CONTENT_TOP + 4*FH, STR_ABOUT_OPENTX_5);
|
||||
screenDuration = 255;
|
||||
break;
|
||||
|
||||
case ABOUT_BERTRAND:
|
||||
lcdDrawText(ABOUT_X, MENU_CONTENT_TOP, STR_ABOUT_BERTRAND_1, INVERS);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, MENU_CONTENT_TOP + FH, STR_ABOUT_BERTRAND_2);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, MENU_CONTENT_TOP + 2*FH, STR_ABOUT_BERTRAND_3);
|
||||
break;
|
||||
|
||||
case ABOUT_ANDRE:
|
||||
lcdDrawText(ABOUT_X, MENU_CONTENT_TOP, STR_ABOUT_ANDRE_1, INVERS);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, MENU_CONTENT_TOP + FH, STR_ABOUT_ANDRE_2);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, MENU_CONTENT_TOP + 2*FH, STR_ABOUT_ANDRE_3);
|
||||
break;
|
||||
|
||||
case ABOUT_MIKE:
|
||||
lcdDrawText(ABOUT_X, MENU_CONTENT_TOP, STR_ABOUT_MIKE_1, INVERS);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, MENU_CONTENT_TOP + FH, STR_ABOUT_MIKE_2);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, MENU_CONTENT_TOP + 2*FH, STR_ABOUT_MIKE_3);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, MENU_CONTENT_TOP + 3*FH, STR_ABOUT_MIKE_4);
|
||||
break;
|
||||
|
||||
case ABOUT_KJELL:
|
||||
lcdDrawText(ABOUT_X, MENU_CONTENT_TOP, STR_ABOUT_KJELL_1, INVERS);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, MENU_CONTENT_TOP + FH, STR_ABOUT_KJELL_2);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, MENU_CONTENT_TOP + 2*FH, STR_ABOUT_KJELL_3);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, MENU_CONTENT_TOP + 3*FH, STR_ABOUT_KJELL_4);
|
||||
break;
|
||||
|
||||
case ABOUT_MARTIN:
|
||||
lcdDrawText(ABOUT_X, MENU_CONTENT_TOP, STR_ABOUT_MARTIN_1, INVERS);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, MENU_CONTENT_TOP + FH, STR_ABOUT_MARTIN_2);
|
||||
break;
|
||||
|
||||
case ABOUT_ROMOLO:
|
||||
lcdDrawText(ABOUT_X, MENU_CONTENT_TOP, STR_ABOUT_ROMOLO_1, INVERS);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, MENU_CONTENT_TOP + FH, STR_ABOUT_ROMOLO_2);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, MENU_CONTENT_TOP + 2*FH, STR_ABOUT_ROMOLO_3);
|
||||
break;
|
||||
|
||||
case ABOUT_ROB:
|
||||
lcdDrawText(ABOUT_X, MENU_CONTENT_TOP, STR_ABOUT_ROB_1, INVERS);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, MENU_CONTENT_TOP + FH, STR_ABOUT_ROB_2);
|
||||
break;
|
||||
|
||||
case ABOUT_HARDWARE:
|
||||
lcdDrawText(ABOUT_X, MENU_CONTENT_TOP, STR_ABOUT_HARDWARE_1, INVERS);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, MENU_CONTENT_TOP + FH, STR_ABOUT_HARDWARE_2);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, MENU_CONTENT_TOP + 2*FH, STR_ABOUT_HARDWARE_3);
|
||||
break;
|
||||
|
||||
case ABOUT_PARENTS:
|
||||
lcdDrawText(ABOUT_X, MENU_CONTENT_TOP, STR_ABOUT_PARENTS_1, INVERS);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, MENU_CONTENT_TOP + FH, STR_ABOUT_PARENTS_2);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, MENU_CONTENT_TOP + 2*FH, STR_ABOUT_PARENTS_3);
|
||||
lcdDrawText(ABOUT_X+ABOUT_INDENT, MENU_CONTENT_TOP + 3*FH, STR_ABOUT_PARENTS_4);
|
||||
screenDuration = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
if (++greyIndex == screenDuration) {
|
||||
greyIndex = 0;
|
||||
if (++screenIndex == ABOUT_COUNT) {
|
||||
chainMenu(menuMainView);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
qrcode = BitmapBuffer::load8bitMaskOnBackground(mask_qrcode, DEFAULT_COLOR,
|
||||
DEFAULT_BGCOLOR);
|
||||
new StaticBitmap(content,
|
||||
rect_t{ content->width() / 2 - qrcode->width() / 2, 80,
|
||||
qrcode->width(), qrcode->height()},
|
||||
qrcode);
|
||||
}
|
||||
|
||||
AboutUs::~AboutUs()
|
||||
{
|
||||
delete qrcode;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "libopenui.h"
|
||||
|
||||
class AboutUs : public MessageDialog
|
||||
{
|
||||
BitmapBuffer* qrcode = nullptr;
|
||||
|
||||
public:
|
||||
AboutUs();
|
||||
~AboutUs();
|
||||
};
|
||||
@@ -53,7 +53,7 @@ void ViewMainDecoration::setSlidersVisible(bool visible)
|
||||
//
|
||||
sliders[SLIDERS_REAR_LEFT]->setWidth(visible ? TRIM_SQUARE_SIZE : 0);
|
||||
|
||||
#if defined(HARDWARE_EXT1)
|
||||
#if defined(HARDWARE_EXT1) || defined(PCBX12S)
|
||||
if (IS_POT_SLIDER_AVAILABLE(EXT1)) {
|
||||
sliders[SLIDERS_EXT1]->setWidth(visible ? TRIM_SQUARE_SIZE : 0);
|
||||
}
|
||||
@@ -61,7 +61,7 @@ void ViewMainDecoration::setSlidersVisible(bool visible)
|
||||
|
||||
sliders[SLIDERS_REAR_RIGHT]->setWidth(visible ? TRIM_SQUARE_SIZE : 0);
|
||||
|
||||
#if defined(HARDWARE_EXT2)
|
||||
#if defined(HARDWARE_EXT2) || defined(PCBX12S)
|
||||
if (IS_POT_SLIDER_AVAILABLE(EXT2)) {
|
||||
sliders[SLIDERS_EXT2]->setWidth(visible ? TRIM_SQUARE_SIZE : 0);
|
||||
}
|
||||
@@ -140,7 +140,7 @@ void ViewMainDecoration::adjustDecoration()
|
||||
sliders[SLIDERS_REAR_LEFT]->setLeft(pos);
|
||||
sliders[SLIDERS_REAR_LEFT]->setTop(vertTop);
|
||||
|
||||
#if defined(HARDWARE_EXT1)
|
||||
#if defined(HARDWARE_EXT1) || defined(PCBX12S)
|
||||
sliders[SLIDERS_EXT1]->setLeft(pos);
|
||||
if (IS_POT_SLIDER_AVAILABLE(EXT1)) {
|
||||
auto rl = sliders[SLIDERS_REAR_LEFT];
|
||||
@@ -167,7 +167,7 @@ void ViewMainDecoration::adjustDecoration()
|
||||
sliders[SLIDERS_REAR_RIGHT]->setLeft(pos);
|
||||
sliders[SLIDERS_REAR_RIGHT]->setTop(vertTop);
|
||||
|
||||
#if defined(HARDWARE_EXT2)
|
||||
#if defined(HARDWARE_EXT2) || defined(PCBX12S)
|
||||
sliders[SLIDERS_EXT2]->setLeft(pos);
|
||||
if (IS_POT_SLIDER_AVAILABLE(EXT2)) {
|
||||
auto rr = sliders[SLIDERS_REAR_RIGHT];
|
||||
@@ -268,11 +268,11 @@ void ViewMainDecoration::createSliders()
|
||||
sliders[SLIDERS_REAR_LEFT] = new MainViewVerticalSlider(this, r, CALIBRATED_SLIDER_REAR_LEFT);
|
||||
sliders[SLIDERS_REAR_RIGHT] = new MainViewVerticalSlider(this, r, CALIBRATED_SLIDER_REAR_RIGHT);
|
||||
|
||||
#if defined(HARDWARE_EXT1)
|
||||
#if defined(HARDWARE_EXT1) || defined(PCBX12S)
|
||||
sliders[SLIDERS_EXT1] = new MainViewVerticalSlider(this, r, CALIBRATED_POT_EXT1);
|
||||
#endif
|
||||
|
||||
#if defined(HARDWARE_EXT2)
|
||||
#if defined(HARDWARE_EXT2) || defined(PCBX12S)
|
||||
sliders[SLIDERS_EXT2] = new MainViewVerticalSlider(this, r, CALIBRATED_POT_EXT2);
|
||||
#endif
|
||||
}
|
||||
@@ -286,22 +286,22 @@ void ViewMainDecoration::createTrims()
|
||||
HORIZONTAL_SLIDERS_WIDTH, 0
|
||||
};
|
||||
|
||||
trims[TRIMS_LH] = new MainViewHorizontalTrim(this, r, 0);
|
||||
trims[TRIMS_LH] = new MainViewHorizontalTrim(this, r, TRIMS_LH);
|
||||
|
||||
r = rect_t {
|
||||
right() - HORIZONTAL_SLIDERS_WIDTH - HMARGIN, 0,
|
||||
HORIZONTAL_SLIDERS_WIDTH, 0
|
||||
};
|
||||
|
||||
trims[TRIMS_RH] = new MainViewHorizontalTrim(this, r, 3);
|
||||
trims[TRIMS_RH] = new MainViewHorizontalTrim(this, r, TRIMS_RH);
|
||||
|
||||
r = rect_t {
|
||||
0, 0, 0,
|
||||
VERTICAL_SLIDERS_HEIGHT
|
||||
};
|
||||
|
||||
trims[TRIMS_LV] = new MainViewVerticalTrim(this, r, 2);
|
||||
trims[TRIMS_RV] = new MainViewVerticalTrim(this, r, 1);
|
||||
trims[TRIMS_LV] = new MainViewVerticalTrim(this, r, TRIMS_LV);
|
||||
trims[TRIMS_RV] = new MainViewVerticalTrim(this, r, TRIMS_RV);
|
||||
}
|
||||
|
||||
void ViewMainDecoration::createFlightMode()
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "menu_model.h"
|
||||
#include "menu_radio.h"
|
||||
#include "menu_screen.h"
|
||||
#include "view_about.h"
|
||||
#include "view_channels.h"
|
||||
#include "view_statistics.h"
|
||||
#include "select_fab_carousel.h"
|
||||
@@ -89,6 +90,7 @@ ViewMainMenu::ViewMainMenu(Window* parent) :
|
||||
resetMenu->addLine(STR_RESET_TIMER2, []() { timerReset(1); });
|
||||
resetMenu->addLine(STR_RESET_TIMER3, []() { timerReset(2); });
|
||||
resetMenu->addLine(STR_RESET_TELEMETRY, []() { telemetryReset(); });
|
||||
resetMenu->setLeft(parent->getScrollPositionX());
|
||||
return 0;
|
||||
});
|
||||
|
||||
@@ -100,7 +102,7 @@ ViewMainMenu::ViewMainMenu(Window* parent) :
|
||||
|
||||
carousel->addButton(ICON_OPENTX, "About\nEdgeTX", [=]() -> uint8_t {
|
||||
deleteLater();
|
||||
//TODO: new AboutUs();
|
||||
new AboutUs();
|
||||
return 0;
|
||||
});
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@ bool isSwitch2POSWarningStateAvailable(int state);
|
||||
#endif
|
||||
|
||||
#if defined(LIBOPENUI)
|
||||
#define IS_INSTANT_TRIM_ALLOWED() false
|
||||
#define IS_INSTANT_TRIM_ALLOWED() true
|
||||
#elif defined(GUI)
|
||||
#define IS_INSTANT_TRIM_ALLOWED() (IS_MAIN_VIEW_DISPLAYED() || IS_TELEMETRY_VIEW_DISPLAYED() || IS_OTHER_VIEW_DISPLAYED())
|
||||
#else
|
||||
|
||||
@@ -74,6 +74,8 @@
|
||||
#define RADIO_VERSION FLAVOUR
|
||||
#endif
|
||||
|
||||
#define VERSION_OSNAME "EdgeTX"
|
||||
|
||||
#define FIND_FIELD_DESC 0x01
|
||||
|
||||
#define KEY_EVENTS(xxx, yyy) \
|
||||
@@ -93,15 +95,17 @@ Return OpenTX version
|
||||
|
||||
@retval string OpenTX version (ie "2.1.5")
|
||||
|
||||
@retval multiple (available since 2.1.7) returns 5 values:
|
||||
@retval multiple values (available since 2.1.7):
|
||||
* (string) OpenTX version (ie "2.1.5")
|
||||
* (string) radio type: `x12s`, `x10`, `x9e`, `x9d+`, `x9d` or `x7`.
|
||||
If running in simulator the "-simu" is added
|
||||
* (number) major version (ie 2 if version 2.1.5)
|
||||
* (number) minor version (ie 1 if version 2.1.5)
|
||||
* (number) revision number (ie 5 if version 2.1.5)
|
||||
Since EdgeTX 2.4.0, sixth value added
|
||||
* (string) OS name (i.e. EdgeTX or nil if OpenTX)
|
||||
|
||||
@status current Introduced in 2.0.0, expanded in 2.1.7, radio type strings changed in 2.2.0
|
||||
@status current Introduced in 2.0.0, expanded in 2.1.7, radio type strings changed in 2.2.0, os name added in EdgeTX 2.4.0
|
||||
|
||||
### Example
|
||||
|
||||
@@ -109,12 +113,13 @@ This example also runs in OpenTX versions where the function returned only one v
|
||||
|
||||
```lua
|
||||
local function run(event)
|
||||
local ver, radio, maj, minor, rev = getVersion()
|
||||
local ver, radio, maj, minor, rev, osname = getVersion()
|
||||
print("version: "..ver)
|
||||
if radio then print ("radio: "..radio) end
|
||||
if maj then print ("maj: "..maj) end
|
||||
if minor then print ("minor: "..minor) end
|
||||
if rev then print ("rev: "..rev) end
|
||||
if osname then print ("osname: "..osname) end
|
||||
return 1
|
||||
end
|
||||
|
||||
@@ -122,11 +127,12 @@ return { run=run }
|
||||
```
|
||||
Output of the above script in simulator:
|
||||
```
|
||||
version: 2.1.7
|
||||
radio: taranis-simu
|
||||
version: 2.4.0
|
||||
radio: tx16s-simu
|
||||
maj: 2
|
||||
minor: 1
|
||||
rev: 7
|
||||
minor: 4
|
||||
rev: 0
|
||||
osname: EdgeTX
|
||||
```
|
||||
*/
|
||||
static int luaGetVersion(lua_State * L)
|
||||
@@ -136,7 +142,8 @@ static int luaGetVersion(lua_State * L)
|
||||
lua_pushnumber(L, VERSION_MAJOR);
|
||||
lua_pushnumber(L, VERSION_MINOR);
|
||||
lua_pushnumber(L, VERSION_REVISION);
|
||||
return 5;
|
||||
lua_pushstring(L, VERSION_OSNAME);
|
||||
return 6;
|
||||
}
|
||||
|
||||
/*luadoc
|
||||
|
||||
@@ -198,6 +198,7 @@ class LuaWidget: public Widget
|
||||
int luaWidgetDataRef;
|
||||
char * errorMessage;
|
||||
uint32_t lastRefresh = 0;
|
||||
bool refreshed = false;
|
||||
|
||||
void checkEvents() override;
|
||||
void setErrorMessage(const char * funcName);
|
||||
@@ -270,9 +271,16 @@ void LuaWidget::checkEvents()
|
||||
{
|
||||
Widget::checkEvents();
|
||||
|
||||
// paint has not been called
|
||||
if (!refreshed) {
|
||||
background();
|
||||
refreshed = true;
|
||||
}
|
||||
|
||||
uint32_t now = RTOS_GET_MS();
|
||||
if (now - lastRefresh >= LUA_WIDGET_REFRESH) {
|
||||
lastRefresh = now;
|
||||
refreshed = false;
|
||||
invalidate();
|
||||
|
||||
#if defined(DEBUG_WINDOWS)
|
||||
@@ -343,12 +351,16 @@ void LuaWidget::refresh(BitmapBuffer* dc)
|
||||
// Remove LCD
|
||||
luaLcdAllowed = false;
|
||||
luaLcdBuffer = nullptr;
|
||||
|
||||
// mark as refreshed
|
||||
refreshed = true;
|
||||
}
|
||||
|
||||
void LuaWidget::background()
|
||||
{
|
||||
if (lsWidgets == 0 || errorMessage) return;
|
||||
|
||||
TRACE("LuaWidget::background()");
|
||||
luaSetInstructionsLimit(lsWidgets, WIDGET_SCRIPTS_MAX_INSTRUCTIONS);
|
||||
LuaWidgetFactory * factory = (LuaWidgetFactory *)this->factory;
|
||||
if (factory->backgroundFunction) {
|
||||
|
||||
@@ -222,7 +222,7 @@ enum SwashType {
|
||||
#define IS_MANUAL_RESET_TIMER(idx) (g_model.timers[idx].persistent == 2)
|
||||
|
||||
#if !defined(PCBSKY9X)
|
||||
#define TIMER_COUNTDOWN_START(x) (g_model.timers[x].countdownStart > 0 ? 5 : 10 - g_model.timers[x].countdownStart * 10)
|
||||
#define TIMER_COUNTDOWN_START(x) (g_model.timers[x].countdownStart == 0 ? 20 : (g_model.timers[x].countdownStart == 1 ? 30 : (g_model.timers[x].countdownStart == -1 ? 10 : 5)))
|
||||
#else
|
||||
#define TIMER_COUNTDOWN_START(x) 10
|
||||
#endif
|
||||
|
||||
+7
-18
@@ -698,11 +698,9 @@ void checkMultiLowPower()
|
||||
#if defined(STM32)
|
||||
static void checkRTCBattery()
|
||||
{
|
||||
if (isVBatBridgeEnabled()) {
|
||||
if (getRTCBatteryVoltage() < 200) {
|
||||
ALERT(STR_BATTERY, STR_WARN_RTC_BATTERY_LOW, AU_ERROR);
|
||||
}
|
||||
disableVBatBridge();
|
||||
GET_ADC_IF_MIXER_NOT_RUNNING();
|
||||
if (getRTCBatteryVoltage() < 200) {
|
||||
ALERT(STR_BATTERY, STR_WARN_RTC_BATTERY_LOW, AU_ERROR);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -723,17 +721,6 @@ static void checkFailsafe()
|
||||
#else
|
||||
#define checkFailsafe()
|
||||
#endif
|
||||
void checkRSSIAlarmsDisabled()
|
||||
{
|
||||
if (g_model.rssiAlarms.disabled) {
|
||||
#if !defined(HARDWARE_INTERNAL_MODULE)
|
||||
if (!isModuleMultimoduleDSM2(EXTERNAL_MODULE))
|
||||
#else
|
||||
if (!isModuleMultimoduleDSM2(INTERNAL_MODULE) && !isModuleMultimoduleDSM2(EXTERNAL_MODULE))
|
||||
#endif
|
||||
ALERT(STR_RSSIALARM_WARN, STR_NO_RSSIALARM, AU_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(GUI)
|
||||
void checkAll()
|
||||
@@ -749,15 +736,17 @@ void checkAll()
|
||||
|
||||
checkSwitches();
|
||||
checkFailsafe();
|
||||
checkRSSIAlarmsDisabled();
|
||||
|
||||
#if defined(SDCARD) && !defined(RADIOMASTER_RTF_RELEASE)
|
||||
checkSDVersion();
|
||||
#endif
|
||||
|
||||
#if defined(STM32)
|
||||
if (!g_eeGeneral.disableRtcWarning)
|
||||
if (isVBatBridgeEnabled() && !g_eeGeneral.disableRtcWarning) {
|
||||
// only done once at board start
|
||||
checkRTCBattery();
|
||||
}
|
||||
disableVBatBridge();
|
||||
#endif
|
||||
|
||||
#if defined(COLORLCD)
|
||||
|
||||
@@ -580,10 +580,6 @@ bool setTrimValue(uint8_t phase, uint8_t idx, int trim);
|
||||
|
||||
#if defined(PCBSKY9X)
|
||||
#define ROTARY_ENCODER_GRANULARITY (2 << g_eeGeneral.rotarySteps)
|
||||
#elif defined(RADIO_FAMILY_T16) && !defined(RADIO_T18)
|
||||
#define ROTARY_ENCODER_GRANULARITY (1)
|
||||
#elif defined(RADIO_TX12)
|
||||
#define ROTARY_ENCODER_GRANULARITY (1)
|
||||
#else
|
||||
#define ROTARY_ENCODER_GRANULARITY (2)
|
||||
#endif
|
||||
|
||||
@@ -386,6 +386,8 @@ inline int8_t defaultModuleChannels_M8(uint8_t idx)
|
||||
return 4; // 12 channels
|
||||
else if (isModulePXX2(idx))
|
||||
return 8; // 16 channels
|
||||
else if (isModuleGhost(idx))
|
||||
return 4; // 12 channels
|
||||
else
|
||||
return maxModuleChannels_M8(idx);
|
||||
}
|
||||
|
||||
@@ -268,12 +268,12 @@ void enablePulsesExternalModule(uint8_t protocol)
|
||||
#if defined(PXX2) && defined(EXTMODULE_USART)
|
||||
case PROTOCOL_CHANNELS_PXX2_HIGHSPEED:
|
||||
extmoduleInvertedSerialStart(PXX2_HIGHSPEED_BAUDRATE);
|
||||
mixerSchedulerSetPeriod(EXTERNAL_MODULE, PXX2_PERIOD);
|
||||
mixerSchedulerSetPeriod(EXTERNAL_MODULE, PXX2_NO_HEARTBEAT_PERIOD);
|
||||
break;
|
||||
|
||||
case PROTOCOL_CHANNELS_PXX2_LOWSPEED:
|
||||
extmoduleInvertedSerialStart(PXX2_LOWSPEED_BAUDRATE);
|
||||
mixerSchedulerSetPeriod(EXTERNAL_MODULE, PXX2_PERIOD);
|
||||
mixerSchedulerSetPeriod(EXTERNAL_MODULE, PXX2_NO_HEARTBEAT_PERIOD);
|
||||
break;
|
||||
#endif
|
||||
|
||||
@@ -347,7 +347,7 @@ bool setupPulsesExternalModule(uint8_t protocol)
|
||||
case PROTOCOL_CHANNELS_PXX2_LOWSPEED:
|
||||
extmodulePulsesData.pxx2.setupFrame(EXTERNAL_MODULE);
|
||||
#if defined(PCBSKY9X)
|
||||
sheduleNextMixerCalculation(EXTERNAL_MODULE, PXX2_PERIOD);
|
||||
sheduleNextMixerCalculation(EXTERNAL_MODULE, PXX2_NO_HEARTBEAT_PERIOD);
|
||||
#endif
|
||||
return true;
|
||||
#endif
|
||||
@@ -487,9 +487,9 @@ static void enablePulsesInternalModule(uint8_t protocol)
|
||||
#if defined(INTMODULE_HEARTBEAT)
|
||||
// use backup trigger (1 ms later)
|
||||
init_intmodule_heartbeat();
|
||||
mixerSchedulerSetPeriod(INTERNAL_MODULE, PXX2_PERIOD + 1000/*us*/);
|
||||
mixerSchedulerSetPeriod(INTERNAL_MODULE, PXX2_MAX_HEARTBEAT_PERIOD);
|
||||
#else
|
||||
mixerSchedulerSetPeriod(INTERNAL_MODULE, PXX2_PERIOD);
|
||||
mixerSchedulerSetPeriod(INTERNAL_MODULE, PXX2_NO_HEARTBEAT_PERIOD);
|
||||
#endif
|
||||
break;
|
||||
#endif
|
||||
@@ -547,9 +547,9 @@ bool setupPulsesInternalModule(uint8_t protocol)
|
||||
else {
|
||||
#if defined(INTMODULE_HEARTBEAT)
|
||||
mixerSchedulerResetTimer();
|
||||
mixerSchedulerSetPeriod(INTERNAL_MODULE, PXX2_PERIOD + 2000 /* backup */);
|
||||
mixerSchedulerSetPeriod(INTERNAL_MODULE, PXX2_MAX_HEARTBEAT_PERIOD);
|
||||
#else
|
||||
mixerSchedulerSetPeriod(INTERNAL_MODULE, PXX2_PERIOD);
|
||||
mixerSchedulerSetPeriod(INTERNAL_MODULE, PXX2_NO_HEARTBEAT_PERIOD);
|
||||
#endif
|
||||
}
|
||||
return result;
|
||||
|
||||
@@ -29,7 +29,8 @@
|
||||
|
||||
#define PXX2_LOWSPEED_BAUDRATE 230400
|
||||
#define PXX2_HIGHSPEED_BAUDRATE 450000
|
||||
#define PXX2_PERIOD 4000/*us*/
|
||||
#define PXX2_NO_HEARTBEAT_PERIOD 4000/*us*/
|
||||
#define PXX2_MAX_HEARTBEAT_PERIOD (7000 + 1000)/*us 7ms frame rate + 1ms heartbeat backup*/
|
||||
#define PXX2_TOOLS_PERIOD 1000/*us*/
|
||||
#define PXX2_FRAME_MAXLENGTH 64
|
||||
|
||||
|
||||
@@ -240,6 +240,19 @@ void ModelsCategory::moveModel(ModelCell * model, int8_t step)
|
||||
erase(current);
|
||||
}
|
||||
|
||||
int ModelsCategory::getModelIndex(const ModelCell* model)
|
||||
{
|
||||
int idx = 0;
|
||||
for (auto m : *this) {
|
||||
if (model == m)
|
||||
return idx;
|
||||
|
||||
++idx;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
void ModelsCategory::save(FIL * file)
|
||||
{
|
||||
#if !defined(SDCARD_YAML)
|
||||
@@ -389,6 +402,22 @@ void ModelsList::setCurrentCategory(ModelsCategory * cat)
|
||||
currentCategory = cat;
|
||||
}
|
||||
|
||||
int ModelsList::getCurrentCategoryIdx() const
|
||||
{
|
||||
if (!currentCategory)
|
||||
return -1;
|
||||
|
||||
int idx = 0;
|
||||
for (auto cat : categories) {
|
||||
if (currentCategory == cat)
|
||||
return idx;
|
||||
|
||||
++idx;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
void ModelsList::setCurrentModel(ModelCell * cell)
|
||||
{
|
||||
currentModel = cell;
|
||||
|
||||
@@ -80,6 +80,8 @@ public:
|
||||
void removeModel(ModelCell * model);
|
||||
void moveModel(ModelCell * model, int8_t step);
|
||||
|
||||
int getModelIndex(const ModelCell* model);
|
||||
|
||||
void save(FIL * file);
|
||||
};
|
||||
|
||||
@@ -118,6 +120,7 @@ public:
|
||||
{
|
||||
return currentCategory;
|
||||
}
|
||||
int getCurrentCategoryIdx() const;
|
||||
|
||||
void setCurrentModel(ModelCell * cell);
|
||||
|
||||
|
||||
@@ -159,11 +159,7 @@ void auxSerialInit(unsigned int mode, unsigned int protocol)
|
||||
void auxSerialPutc(char c)
|
||||
{
|
||||
#if !defined(SIMU)
|
||||
int n = 0;
|
||||
while (auxSerialTxFifo.isFull()) {
|
||||
delay_ms(1);
|
||||
if (++n > 100) return;
|
||||
}
|
||||
if (auxSerialTxFifo.isFull()) return;
|
||||
auxSerialTxFifo.push(c);
|
||||
USART_ITConfig(AUX_SERIAL_USART, USART_IT_TXE, ENABLE);
|
||||
#endif
|
||||
@@ -357,11 +353,7 @@ void aux2SerialInit(unsigned int mode, unsigned int protocol)
|
||||
void aux2SerialPutc(char c)
|
||||
{
|
||||
#if !defined(SIMU)
|
||||
int n = 0;
|
||||
while (aux2SerialTxFifo.isFull()) {
|
||||
delay_ms(1);
|
||||
if (++n > 100) return;
|
||||
}
|
||||
if (aux2SerialTxFifo.isFull()) return;
|
||||
aux2SerialTxFifo.push(c);
|
||||
USART_ITConfig(AUX2_SERIAL_USART, USART_IT_TXE, ENABLE);
|
||||
#endif
|
||||
|
||||
@@ -72,25 +72,34 @@ void rotaryEncoderInit()
|
||||
void rotaryEncoderCheck()
|
||||
{
|
||||
#if (defined(RADIO_FAMILY_T16) && !defined(RADIO_T18)) || defined(RADIO_TX12)
|
||||
static uint8_t state = 0;
|
||||
static uint8_t state = 0;
|
||||
uint8_t pins = ROTARY_ENCODER_POSITION();
|
||||
|
||||
if (pins != (state & 0x03) && !(readKeys() & (1 << KEY_ENTER))) {
|
||||
if ((pins & 0x01) ^ ((pins & 0x02) >> 1)) {
|
||||
if ((state & 0x03) == 3)
|
||||
++rotencValue;
|
||||
else
|
||||
--rotencValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((state & 0x03) == 3)
|
||||
--rotencValue;
|
||||
else if ((state & 0x03) == 0)
|
||||
++rotencValue;
|
||||
}
|
||||
state &= ~0x03 ;
|
||||
state |= pins ;
|
||||
if ((pins ^ (state & 0x03)) == 0x03)
|
||||
{
|
||||
if (pins == 3)
|
||||
{
|
||||
rotencValue += 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
rotencValue -= 2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((state & 0x01) ^ ((pins & 0x02) >> 1))
|
||||
{
|
||||
rotencValue -= 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
rotencValue += 1;
|
||||
}
|
||||
}
|
||||
state &= ~0x03;
|
||||
state |= pins;
|
||||
#else
|
||||
uint8_t newPosition = ROTARY_ENCODER_POSITION();
|
||||
if (newPosition != rotencPosition && !(readKeys() & (1 << KEY_ENTER))) {
|
||||
|
||||
@@ -379,6 +379,11 @@ enum Analogs {
|
||||
NUM_ANALOGS
|
||||
};
|
||||
|
||||
#if defined(PCBX12S)
|
||||
#define EXT1 SLIDER_FRONT_LEFT
|
||||
#define EXT2 SLIDER_FRONT_RIGHT
|
||||
#endif
|
||||
|
||||
#define SLIDER1 SLIDER_FRONT_LEFT
|
||||
#define SLIDER2 SLIDER_FRONT_RIGHT
|
||||
|
||||
@@ -411,7 +416,9 @@ enum CalibratedAnalogs {
|
||||
CALIBRATED_POT3,
|
||||
#if defined(PCBX12S)
|
||||
CALIBRATED_SLIDER_FRONT_LEFT,
|
||||
CALIBRATED_POT_EXT1 = CALIBRATED_SLIDER_FRONT_LEFT,
|
||||
CALIBRATED_SLIDER_FRONT_RIGHT,
|
||||
CALIBRATED_POT_EXT2 = CALIBRATED_SLIDER_FRONT_RIGHT,
|
||||
CALIBRATED_SLIDER_REAR_LEFT,
|
||||
CALIBRATED_SLIDER_REAR_RIGHT,
|
||||
#else
|
||||
@@ -641,7 +648,7 @@ void sportUpdatePowerInit();
|
||||
#define DEBUG_BAUDRATE 115200
|
||||
#define LUA_DEFAULT_BAUDRATE 115200
|
||||
#endif
|
||||
#if defined(AUX_SERIAL_GPIO)
|
||||
#if defined(AUX_SERIAL)
|
||||
extern uint8_t auxSerialMode;
|
||||
#if defined __cplusplus
|
||||
void auxSerialSetup(unsigned int baudrate, bool dma, uint16_t length = USART_WordLength_8b, uint16_t parity = USART_Parity_No, uint16_t stop = USART_StopBits_1);
|
||||
|
||||
Vendored
+1
-1
Submodule radio/src/thirdparty/libopenui updated: bca0e093b0...05067daa62
@@ -926,48 +926,6 @@ const char STR_BLUETOOTH_PIN_CODE[] = TR_BLUETOOTH_PIN_CODE;
|
||||
#endif
|
||||
|
||||
const char STR_ABOUTUS[] = TR_ABOUTUS;
|
||||
const char STR_ABOUT_OPENTX_1[] = TR_ABOUT_OPENTX_1;
|
||||
const char STR_ABOUT_OPENTX_2[] = TR_ABOUT_OPENTX_2;
|
||||
const char STR_ABOUT_OPENTX_3[] = TR_ABOUT_OPENTX_3;
|
||||
const char STR_ABOUT_OPENTX_4[] = TR_ABOUT_OPENTX_4;
|
||||
const char STR_ABOUT_OPENTX_5[] = TR_ABOUT_OPENTX_5;
|
||||
|
||||
const char STR_ABOUT_BERTRAND_1[] = TR_ABOUT_BERTRAND_1;
|
||||
const char STR_ABOUT_BERTRAND_2[] = TR_ABOUT_BERTRAND_2;
|
||||
const char STR_ABOUT_BERTRAND_3[] = TR_ABOUT_BERTRAND_3;
|
||||
|
||||
const char STR_ABOUT_MIKE_1[] = TR_ABOUT_MIKE_1;
|
||||
const char STR_ABOUT_MIKE_2[] = TR_ABOUT_MIKE_2;
|
||||
const char STR_ABOUT_MIKE_3[] = TR_ABOUT_MIKE_3;
|
||||
const char STR_ABOUT_MIKE_4[] = TR_ABOUT_MIKE_4;
|
||||
|
||||
const char STR_ABOUT_ROMOLO_1[] = TR_ABOUT_ROMOLO_1;
|
||||
const char STR_ABOUT_ROMOLO_2[] = TR_ABOUT_ROMOLO_2;
|
||||
const char STR_ABOUT_ROMOLO_3[] = TR_ABOUT_ROMOLO_3;
|
||||
|
||||
const char STR_ABOUT_ANDRE_1[] = TR_ABOUT_ANDRE_1;
|
||||
const char STR_ABOUT_ANDRE_2[] = TR_ABOUT_ANDRE_2;
|
||||
const char STR_ABOUT_ANDRE_3[] = TR_ABOUT_ANDRE_3;
|
||||
|
||||
const char STR_ABOUT_ROB_1[] = TR_ABOUT_ROB_1;
|
||||
const char STR_ABOUT_ROB_2[] = TR_ABOUT_ROB_2;
|
||||
|
||||
const char STR_ABOUT_MARTIN_1[] = TR_ABOUT_MARTIN_1;
|
||||
const char STR_ABOUT_MARTIN_2[] = TR_ABOUT_MARTIN_2;
|
||||
|
||||
const char STR_ABOUT_KJELL_1[] = TR_ABOUT_KJELL_1;
|
||||
const char STR_ABOUT_KJELL_2[] = TR_ABOUT_KJELL_2;
|
||||
const char STR_ABOUT_KJELL_3[] = TR_ABOUT_KJELL_3;
|
||||
const char STR_ABOUT_KJELL_4[] = TR_ABOUT_KJELL_4;
|
||||
|
||||
const char STR_ABOUT_HARDWARE_1[] = TR_ABOUT_HARDWARE_1;
|
||||
const char STR_ABOUT_HARDWARE_2[] = TR_ABOUT_HARDWARE_2;
|
||||
const char STR_ABOUT_HARDWARE_3[] = TR_ABOUT_HARDWARE_3;
|
||||
|
||||
const char STR_ABOUT_PARENTS_1[] = TR_ABOUT_PARENTS_1;
|
||||
const char STR_ABOUT_PARENTS_2[] = TR_ABOUT_PARENTS_2;
|
||||
const char STR_ABOUT_PARENTS_3[] = TR_ABOUT_PARENTS_3;
|
||||
const char STR_ABOUT_PARENTS_4[] = TR_ABOUT_PARENTS_4;
|
||||
|
||||
const char STR_AUTH_FAILURE[] = TR_AUTH_FAILURE;
|
||||
const char STR_PROTOCOL[] = TR_PROTOCOL;
|
||||
|
||||
@@ -1027,55 +1027,6 @@
|
||||
// About screen
|
||||
#define TR_ABOUTUS TR(" 关于 ", "关于")
|
||||
|
||||
#define TR_ABOUT_OPENTX_1 TR("OpenTX\001is\001open\001source,\001non", "OpenTX is open source, non-")
|
||||
#define TR_ABOUT_OPENTX_2 TR("commercial,\001wo\001warranties.", "commercial and comes with no")
|
||||
#define TR_ABOUT_OPENTX_3 TR("It\001was\001developed\001for\001free.", "warranties. It was developed")
|
||||
#define TR_ABOUT_OPENTX_4 TR("Support through donations", "for free. Support through")
|
||||
#define TR_ABOUT_OPENTX_5 TR("is welcome!", "donations is welcome!")
|
||||
|
||||
#define TR_ABOUT_BERTRAND_1 "Bertrand Songis"
|
||||
#define TR_ABOUT_BERTRAND_2 "OpenTX main author"
|
||||
#define TR_ABOUT_BERTRAND_3 "Companion co-author"
|
||||
|
||||
#define TR_ABOUT_MIKE_1 "Mike Blandford"
|
||||
#define TR_ABOUT_MIKE_2 "Code and drivers guru"
|
||||
#define TR_ABOUT_MIKE_3 TR("Arguably,\001one\001of\001the\001best", "Arguably, one of the best")
|
||||
#define TR_ABOUT_MIKE_4 "Inspirational"
|
||||
|
||||
#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini"
|
||||
#define TR_ABOUT_ROMOLO_2 "Companion co-author"
|
||||
#define TR_ABOUT_ROMOLO_3 ""
|
||||
|
||||
#define TR_ABOUT_ANDRE_1 "Andre Bernet"
|
||||
#define TR_ABOUT_ANDRE_2 "Functionality, usability,"
|
||||
#define TR_ABOUT_ANDRE_3 "debugging, documentation"
|
||||
|
||||
#define TR_ABOUT_ROB_1 "Rob Thomson"
|
||||
#define TR_ABOUT_ROB_2 "openrcforums webmaster"
|
||||
|
||||
#define TR_ABOUT_KJELL_1 "Kjell Kernen"
|
||||
#define TR_ABOUT_KJELL_2 TR("www.open-tx.org author", "www.open-tx.org main author")
|
||||
#define TR_ABOUT_KJELL_3 "OpenTX Recorder author"
|
||||
#define TR_ABOUT_KJELL_4 "Companion contributor"
|
||||
|
||||
#define TR_ABOUT_MARTIN_1 "Martin Hotar"
|
||||
#define TR_ABOUT_MARTIN_2 "Graphics designer"
|
||||
|
||||
#if defined(PCBFRSKY)
|
||||
#define TR_ABOUT_HARDWARE_1 "FrSky"
|
||||
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
|
||||
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
|
||||
#else
|
||||
#define TR_ABOUT_HARDWARE_1 "Brent Nelson"
|
||||
#define TR_ABOUT_HARDWARE_2 "Sky9x designer/producer"
|
||||
#define TR_ABOUT_HARDWARE_3 ""
|
||||
#endif
|
||||
|
||||
#define TR_ABOUT_PARENTS_1 "Parent projects"
|
||||
#define TR_ABOUT_PARENTS_2 TR("Ersky9x (Mike Blandford)", "Ersky9x (Mike Blandford)")
|
||||
#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)"
|
||||
#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)"
|
||||
|
||||
#define TR_CHR_SHORT 's'
|
||||
#define TR_CHR_LONG 'l'
|
||||
#define TR_CHR_TOGGLE 't'
|
||||
|
||||
@@ -1121,63 +1121,6 @@
|
||||
// Taranis About screen
|
||||
#define TR_ABOUTUS TR(" O nás ", "O nás")
|
||||
|
||||
#define TR_ABOUT_OPENTX_1 TR3("OpenTX je nekomerční,", "OpenTX\001je\001open-source,", "OpenTX je open-source,")
|
||||
#define TR_ABOUT_OPENTX_2 TR3("opensource bez záruky.", "nekomerční a bez\001záruky.", "nekomerční a bez záruky.")
|
||||
#define TR_ABOUT_OPENTX_3 TR3("Vytvořen ve volném čase.", "Byl\001vytvořen\001nadšenými\001modeláři", "Byl vytvořen nadšenými modeláři")
|
||||
#define TR_ABOUT_OPENTX_4 TR3("Podpora vývoje pomocí", "Podpora\001vývoje\001pomocí", "Podpora vývoje pomocí")
|
||||
#define TR_ABOUT_OPENTX_5 TR3("finančního daru je vítána!", "drobného\001daru\001je\001vítána!", "drobného daru je vítána!")
|
||||
|
||||
#define TR_ABOUT_BERTRAND_1 "Bertrand Songis"
|
||||
#define TR_ABOUT_BERTRAND_2 "Hlavní vývojář OpenTX"
|
||||
#define TR_ABOUT_BERTRAND_3 "Spoluautor Companion"
|
||||
|
||||
#define TR_ABOUT_MIKE_1 "Mike Blandford"
|
||||
#define TR_ABOUT_MIKE_2 "Specialista na kód,"
|
||||
#define TR_ABOUT_MIKE_3 " a ovladače hardwaru."
|
||||
#define TR_ABOUT_MIKE_4 ""
|
||||
|
||||
#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini"
|
||||
#define TR_ABOUT_ROMOLO_2 "Hlavní vývojář"
|
||||
#define TR_ABOUT_ROMOLO_3 "Companion"
|
||||
|
||||
#define TR_ABOUT_ANDRE_1 "Andre Bernet"
|
||||
#define TR_ABOUT_ANDRE_2 "Funkčnost, použitelnost,"
|
||||
#define TR_ABOUT_ANDRE_3 "ladění a dokumentace"
|
||||
|
||||
#define TR_ABOUT_ROB_1 "Rob Thomson"
|
||||
#define TR_ABOUT_ROB_2 "openrcforums webmaster"
|
||||
|
||||
#define TR_ABOUT_KJELL_1 "Kjell Kernen"
|
||||
#define TR_ABOUT_KJELL_2 "autor www.open-tx.org"
|
||||
#define TR_ABOUT_KJELL_3 "autor OpenTX Recorder"
|
||||
#define TR_ABOUT_KJELL_4 "Spoluautor Companion"
|
||||
|
||||
#define TR_ABOUT_MARTIN_1 "Martin Hotař"
|
||||
#define TR_ABOUT_MARTIN_2 "Design, Čeština"
|
||||
|
||||
#if defined(MANUFACTURER_FRSKY)
|
||||
#define TR_ABOUT_HARDWARE_1 "FrSky"
|
||||
#define TR_ABOUT_HARDWARE_2 "Vývoj a výroba Hardware"
|
||||
#define TR_ABOUT_HARDWARE_3 "Přispěvatel firmware"
|
||||
#elif defined(MANUFACTURER_RADIOMASTER)
|
||||
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
|
||||
#define TR_ABOUT_HARDWARE_2 "Vývoj a výroba Hardware"
|
||||
#define TR_ABOUT_HARDWARE_3 "Přispěvatel firmware"
|
||||
#elif defined(MANUFACTURER_JUMPER)
|
||||
#define TR_ABOUT_HARDWARE_1 "JumperRC"
|
||||
#define TR_ABOUT_HARDWARE_2 "Vývoj a výroba Hardware"
|
||||
#define TR_ABOUT_HARDWARE_3 "Přispěvatel firmware"
|
||||
#else
|
||||
#define TR_ABOUT_HARDWARE_1 "Brent Nelson"
|
||||
#define TR_ABOUT_HARDWARE_2 "Sky9x designer/výrobce"
|
||||
#define TR_ABOUT_HARDWARE_3 ""
|
||||
#endif
|
||||
|
||||
#define TR_ABOUT_PARENTS_1 "Mateřské projekty"
|
||||
#define TR_ABOUT_PARENTS_2 "ersky9x (Mike Blandford)"
|
||||
#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)"
|
||||
#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)"
|
||||
|
||||
#define TR_CHR_SHORT 's'
|
||||
#define TR_CHR_LONG 'l'
|
||||
#define TR_CHR_TOGGLE 't'
|
||||
|
||||
@@ -1131,63 +1131,6 @@
|
||||
//Taranis About screen
|
||||
#define TR_ABOUTUS "Über OpenTx"
|
||||
|
||||
#define TR_ABOUT_OPENTX_1 "OpenTX ist Open Source,"
|
||||
#define TR_ABOUT_OPENTX_2 "nicht kommerziell, ohne"
|
||||
#define TR_ABOUT_OPENTX_3 "Funktionsgarantie, frei"
|
||||
#define TR_ABOUT_OPENTX_4 "verfügbar. Unterstützung"
|
||||
#define TR_ABOUT_OPENTX_5 "durch Spenden willkommen"
|
||||
|
||||
#define TR_ABOUT_BERTRAND_1 "Bertrand Songis"
|
||||
#define TR_ABOUT_BERTRAND_2 "OpenTX Hauptauthor"
|
||||
#define TR_ABOUT_BERTRAND_3 "Companion-Mitentwickler"
|
||||
|
||||
#define TR_ABOUT_MIKE_1 "Mike Blandford"
|
||||
#define TR_ABOUT_MIKE_2 "Code- und Treiber-Guru"
|
||||
#define TR_ABOUT_MIKE_3 "Wohl einer der Besten."
|
||||
#define TR_ABOUT_MIKE_4 "Sehr inspirierend."
|
||||
|
||||
#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini"
|
||||
#define TR_ABOUT_ROMOLO_2 "Companion-Hauptentwickler"
|
||||
#define TR_ABOUT_ROMOLO_3 ""
|
||||
|
||||
#define TR_ABOUT_ANDRE_1 "Andre Bernet"
|
||||
#define TR_ABOUT_ANDRE_2 "Funktionalität und Tests,"
|
||||
#define TR_ABOUT_ANDRE_3 "Debugging, Dokumentation"
|
||||
|
||||
#define TR_ABOUT_ROB_1 "Rob Thomson"
|
||||
#define TR_ABOUT_ROB_2 "Openrcforums Webmaster"
|
||||
|
||||
#define TR_ABOUT_KJELL_1 "Kjell Kernen"
|
||||
#define TR_ABOUT_KJELL_2 "www.open-tx.org Hauptautor"
|
||||
#define TR_ABOUT_KJELL_3 "Author von OpenTX Recorder"
|
||||
#define TR_ABOUT_KJELL_4 "Companion contributor"
|
||||
|
||||
#define TR_ABOUT_MARTIN_1 "Martin Hotar"
|
||||
#define TR_ABOUT_MARTIN_2 "Grafikdesigner"
|
||||
|
||||
#if defined(MANUFACTURER_FRSKY)
|
||||
#define TR_ABOUT_HARDWARE_1 "FrSky"
|
||||
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
|
||||
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
|
||||
#elif defined(MANUFACTURER_RADIOMASTER)
|
||||
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
|
||||
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
|
||||
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
|
||||
#elif defined(MANUFACTURER_JUMPER)
|
||||
#define TR_ABOUT_HARDWARE_1 "JumperRC"
|
||||
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
|
||||
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
|
||||
#else
|
||||
#define TR_ABOUT_HARDWARE_1 "Brent Nelson"
|
||||
#define TR_ABOUT_HARDWARE_2 "Sky9x designer/producer"
|
||||
#define TR_ABOUT_HARDWARE_3 ""
|
||||
#endif
|
||||
|
||||
#define TR_ABOUT_PARENTS_1 "Vorgänger-Projekte"
|
||||
#define TR_ABOUT_PARENTS_2 "Ersky9x (Mike Blandford)"
|
||||
#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)"
|
||||
#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)"
|
||||
|
||||
#define TR_CHR_SHORT 's' // Taste short
|
||||
#define TR_CHR_LONG 'l' // Taste long
|
||||
#define TR_CHR_TOGGLE 't' // Taste als togglefunktion = Ein Aus Ein
|
||||
|
||||
@@ -1130,71 +1130,6 @@
|
||||
// About screen
|
||||
#define TR_ABOUTUS TR(" ABOUT ", "ABOUT")
|
||||
|
||||
#define TR_ABOUT_OPENTX_1 TR("OpenTX\001is\001open\001source,\001non", "OpenTX is open source, non-")
|
||||
#define TR_ABOUT_OPENTX_2 TR("commercial,\001wo\001warranties.", "commercial and comes with no")
|
||||
#define TR_ABOUT_OPENTX_3 TR("It\001was\001developed\001for\001free.", "warranties. It was developed")
|
||||
#define TR_ABOUT_OPENTX_4 TR("Support through donations", "for free. Support through")
|
||||
#define TR_ABOUT_OPENTX_5 TR("is welcome!", "donations is welcome!")
|
||||
|
||||
#define TR_ABOUT_BERTRAND_1 "Bertrand Songis"
|
||||
#define TR_ABOUT_BERTRAND_2 "OpenTX main author"
|
||||
#define TR_ABOUT_BERTRAND_3 "Companion co-author"
|
||||
|
||||
#define TR_ABOUT_MIKE_1 "Mike Blandford"
|
||||
#define TR_ABOUT_MIKE_2 "Code and drivers guru"
|
||||
#define TR_ABOUT_MIKE_3 TR("Arguably,\001one\001of\001the\001best", "Arguably, one of the best")
|
||||
#define TR_ABOUT_MIKE_4 "Inspirational"
|
||||
|
||||
#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini"
|
||||
#define TR_ABOUT_ROMOLO_2 "Companion co-author"
|
||||
#define TR_ABOUT_ROMOLO_3 ""
|
||||
|
||||
#define TR_ABOUT_ANDRE_1 "Andre Bernet"
|
||||
#define TR_ABOUT_ANDRE_2 "Functionality, usability,"
|
||||
#define TR_ABOUT_ANDRE_3 "debugging, documentation"
|
||||
|
||||
#define TR_ABOUT_ROB_1 "Rob Thomson"
|
||||
#define TR_ABOUT_ROB_2 "openrcforums webmaster"
|
||||
|
||||
#define TR_ABOUT_KJELL_1 "Kjell Kernen"
|
||||
#define TR_ABOUT_KJELL_2 TR("www.open-tx.org author", "www.open-tx.org main author")
|
||||
#define TR_ABOUT_KJELL_3 "OpenTX Recorder author"
|
||||
#define TR_ABOUT_KJELL_4 "Companion contributor"
|
||||
|
||||
#define TR_ABOUT_MARTIN_1 "Martin Hotar"
|
||||
#define TR_ABOUT_MARTIN_2 "Graphics designer"
|
||||
|
||||
#if defined(MANUFACTURER_FRSKY)
|
||||
#define TR_ABOUT_HARDWARE_1 "FrSky"
|
||||
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
|
||||
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
|
||||
#elif defined(MANUFACTURER_RADIOMASTER)
|
||||
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
|
||||
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
|
||||
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
|
||||
#elif defined(MANUFACTURER_JUMPER)
|
||||
#define TR_ABOUT_HARDWARE_1 "JumperRC"
|
||||
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
|
||||
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
|
||||
#elif defined(MANUFACTURER_RADIOMASTER)
|
||||
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
|
||||
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
|
||||
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
|
||||
#elif defined(MANUFACTURER_JUMPER)
|
||||
#define TR_ABOUT_HARDWARE_1 "JumperRC"
|
||||
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
|
||||
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
|
||||
#else
|
||||
#define TR_ABOUT_HARDWARE_1 "Brent Nelson"
|
||||
#define TR_ABOUT_HARDWARE_2 "Sky9x designer/producer"
|
||||
#define TR_ABOUT_HARDWARE_3 ""
|
||||
#endif
|
||||
|
||||
#define TR_ABOUT_PARENTS_1 "Parent projects"
|
||||
#define TR_ABOUT_PARENTS_2 TR("Ersky9x (Mike Blandford)", "Ersky9x (Mike Blandford)")
|
||||
#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)"
|
||||
#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)"
|
||||
|
||||
#define TR_CHR_SHORT 's'
|
||||
#define TR_CHR_LONG 'l'
|
||||
#define TR_CHR_TOGGLE 't'
|
||||
|
||||
@@ -1126,63 +1126,6 @@
|
||||
// Taranis About screen
|
||||
#define TR_ABOUTUS "Nosotros"
|
||||
|
||||
#define TR_ABOUT_OPENTX_1 "OpenTX es open source, no-"
|
||||
#define TR_ABOUT_OPENTX_2 "comercial y viene sin "
|
||||
#define TR_ABOUT_OPENTX_3 "garantias. Fue desarrollado"
|
||||
#define TR_ABOUT_OPENTX_4 "libremente. Ayudas a través"
|
||||
#define TR_ABOUT_OPENTX_5 "de donaciones son bienvenidas!"
|
||||
|
||||
#define TR_ABOUT_BERTRAND_1 "Bertrand Songis"
|
||||
#define TR_ABOUT_BERTRAND_2 "Autor principal OpenTX"
|
||||
#define TR_ABOUT_BERTRAND_3 "Companion codesarrollador"
|
||||
|
||||
#define TR_ABOUT_MIKE_1 "Mike Blandford"
|
||||
#define TR_ABOUT_MIKE_2 "Gurú de codigo y drivers"
|
||||
#define TR_ABOUT_MIKE_3 "Seguramente uno de los"
|
||||
#define TR_ABOUT_MIKE_4 "mejores inspiradores"
|
||||
|
||||
#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini"
|
||||
#define TR_ABOUT_ROMOLO_2 "Desarrollador principal"
|
||||
#define TR_ABOUT_ROMOLO_3 "Companion"
|
||||
|
||||
#define TR_ABOUT_ANDRE_1 "Andre Bernet"
|
||||
#define TR_ABOUT_ANDRE_2 "Funcionalidad, usabilidad,"
|
||||
#define TR_ABOUT_ANDRE_3 "depurado, documentación"
|
||||
|
||||
#define TR_ABOUT_ROB_1 "Rob Thomson"
|
||||
#define TR_ABOUT_ROB_2 "openrcforums webmaster"
|
||||
|
||||
#define TR_ABOUT_KJELL_1 "Kjell Kernen"
|
||||
#define TR_ABOUT_KJELL_2 "www.open-tx.org main author"
|
||||
#define TR_ABOUT_KJELL_3 "Autor OpenTX Recorder"
|
||||
#define TR_ABOUT_KJELL_4 "Colaborador Companion"
|
||||
|
||||
#define TR_ABOUT_MARTIN_1 "Martin Hotar"
|
||||
#define TR_ABOUT_MARTIN_2 "Dise\201o gráfico"
|
||||
|
||||
#if defined(MANUFACTURER_FRSKY)
|
||||
#define TR_ABOUT_HARDWARE_1 "FrSky"
|
||||
#define TR_ABOUT_HARDWARE_2 "Productor dise\201o de hardware"
|
||||
#define TR_ABOUT_HARDWARE_3 "Colaborador firmware"
|
||||
#elif defined(MANUFACTURER_RADIOMASTER)
|
||||
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
|
||||
#define TR_ABOUT_HARDWARE_2 "Productor dise\201o de hardware"
|
||||
#define TR_ABOUT_HARDWARE_3 "Colaborador firmware"
|
||||
#elif defined(MANUFACTURER_JUMPER)
|
||||
#define TR_ABOUT_HARDWARE_1 "JumperRC"
|
||||
#define TR_ABOUT_HARDWARE_2 "Productor dise\201o de hardware"
|
||||
#define TR_ABOUT_HARDWARE_3 "Colaborador firmware"
|
||||
#else
|
||||
#define TR_ABOUT_HARDWARE_1 "Brent Nelson"
|
||||
#define TR_ABOUT_HARDWARE_2 "Sky9x dise\201ador/productor"
|
||||
#define TR_ABOUT_HARDWARE_3 ""
|
||||
#endif
|
||||
|
||||
#define TR_ABOUT_PARENTS_1 "Padres del proyecto"
|
||||
#define TR_ABOUT_PARENTS_2 "ersky9x (Mike Blandford)"
|
||||
#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)"
|
||||
#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)"
|
||||
|
||||
#define TR_CHR_SHORT 's'
|
||||
#define TR_CHR_LONG 'l'
|
||||
#define TR_CHR_TOGGLE 't'
|
||||
|
||||
@@ -1142,63 +1142,6 @@
|
||||
// About screen
|
||||
#define TR_ABOUTUS TR(" ABOUT ", "ABOUT")
|
||||
|
||||
#define TR_ABOUT_OPENTX_1 TR("OpenTX\001is\001open\001source,\001non", "OpenTX is open source, non-")
|
||||
#define TR_ABOUT_OPENTX_2 TR("commercial,\001wo\001warranties.", "commercial and comes with no")
|
||||
#define TR_ABOUT_OPENTX_3 TR("It\001was\001developed\001for\001free.", "warranties. It was developed")
|
||||
#define TR_ABOUT_OPENTX_4 TR("Support through donations", "for free. Support through")
|
||||
#define TR_ABOUT_OPENTX_5 TR("is welcome!", "donations is welcome!")
|
||||
|
||||
#define TR_ABOUT_BERTRAND_1 "Bertrand Songis"
|
||||
#define TR_ABOUT_BERTRAND_2 "OpenTX main author"
|
||||
#define TR_ABOUT_BERTRAND_3 "Companion co-author"
|
||||
|
||||
#define TR_ABOUT_MIKE_1 "Mike Blandford"
|
||||
#define TR_ABOUT_MIKE_2 "Code and drivers guru"
|
||||
#define TR_ABOUT_MIKE_3 TR("Arguably,\001one\001of\001the\001best", "Arguably, one of the best")
|
||||
#define TR_ABOUT_MIKE_4 "Inspirational"
|
||||
|
||||
#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini"
|
||||
#define TR_ABOUT_ROMOLO_2 "Companion co-author"
|
||||
#define TR_ABOUT_ROMOLO_3 ""
|
||||
|
||||
#define TR_ABOUT_ANDRE_1 "Andre Bernet"
|
||||
#define TR_ABOUT_ANDRE_2 "Functionality, usability,"
|
||||
#define TR_ABOUT_ANDRE_3 "debugging, documentation"
|
||||
|
||||
#define TR_ABOUT_ROB_1 "Rob Thomson"
|
||||
#define TR_ABOUT_ROB_2 "openrcforums webmaster"
|
||||
|
||||
#define TR_ABOUT_KJELL_1 "Kjell Kernen"
|
||||
#define TR_ABOUT_KJELL_2 "www.open-tx.org main author"
|
||||
#define TR_ABOUT_KJELL_3 "OpenTX Recorder author"
|
||||
#define TR_ABOUT_KJELL_4 "Companion contributor"
|
||||
|
||||
#define TR_ABOUT_MARTIN_1 "Martin Hotar"
|
||||
#define TR_ABOUT_MARTIN_2 "Graphics designer"
|
||||
|
||||
#if defined(MANUFACTURER_FRSKY)
|
||||
#define TR_ABOUT_HARDWARE_1 "FrSky"
|
||||
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
|
||||
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
|
||||
#elif defined(MANUFACTURER_RADIOMASTER)
|
||||
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
|
||||
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
|
||||
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
|
||||
#elif defined(MANUFACTURER_JUMPER)
|
||||
#define TR_ABOUT_HARDWARE_1 "JumperRC"
|
||||
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
|
||||
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
|
||||
#else
|
||||
#define TR_ABOUT_HARDWARE_1 "Brent Nelson"
|
||||
#define TR_ABOUT_HARDWARE_2 "Sky9x designer/producer"
|
||||
#define TR_ABOUT_HARDWARE_3 ""
|
||||
#endif
|
||||
|
||||
#define TR_ABOUT_PARENTS_1 "Parent projects"
|
||||
#define TR_ABOUT_PARENTS_2 TR("Ersky9x (Mike Blandford)", "Ersky9x (Mike Blandford)")
|
||||
#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)"
|
||||
#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)"
|
||||
|
||||
#define TR_CHR_SHORT 's'
|
||||
#define TR_CHR_LONG 'l'
|
||||
#define TR_CHR_TOGGLE 't'
|
||||
|
||||
@@ -1154,71 +1154,6 @@
|
||||
// Taranis About screen
|
||||
#define TR_ABOUTUS TR(" A PROPOS ", "A PROPOS")
|
||||
|
||||
#define TR_ABOUT_OPENTX_1 TR("OpenTX\001est\001libre,\001non-", "OpenTX est libre, non-")
|
||||
#define TR_ABOUT_OPENTX_2 TR("commercial,\001et\001offert\001sans", "commercial et n'offre aucune")
|
||||
#define TR_ABOUT_OPENTX_3 TR("garantie.\001Il\001est\001développé", "garantie. Il a été développé")
|
||||
#define TR_ABOUT_OPENTX_4 TR("gratuitement.\001Donations", "gratuitement. Vos donations")
|
||||
#define TR_ABOUT_OPENTX_5 TR("bienvenues!", "sont bienvenues!")
|
||||
|
||||
#define TR_ABOUT_BERTRAND_1 "Bertrand Songis"
|
||||
#define TR_ABOUT_BERTRAND_2 TR("Auteur\001principal\001d'OpenTX", "Auteur principal d'OpenTX")
|
||||
#define TR_ABOUT_BERTRAND_3 TR("Codéveloppeur\001de\001C9X", "Codéveloppeur de Companion")
|
||||
|
||||
#define TR_ABOUT_MIKE_1 "Mike Blandford"
|
||||
#define TR_ABOUT_MIKE_2 "Maître du code et des"
|
||||
#define TR_ABOUT_MIKE_3 "drivers"
|
||||
#define TR_ABOUT_MIKE_4 ""
|
||||
|
||||
#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini"
|
||||
#define TR_ABOUT_ROMOLO_2 "Développeur principal de"
|
||||
#define TR_ABOUT_ROMOLO_3 "OpenTX Companion"
|
||||
|
||||
#define TR_ABOUT_ANDRE_1 "André Bernet"
|
||||
#define TR_ABOUT_ANDRE_2 TR("Fonctionsé,\001usabilité,","Fonctionnalités, usabilité,")
|
||||
#define TR_ABOUT_ANDRE_3 TR("débogage,\001documentation","débogage, documentation")
|
||||
|
||||
#define TR_ABOUT_ROB_1 "Rob Thomson"
|
||||
#define TR_ABOUT_ROB_2 "Webmaster d'openrcforums"
|
||||
|
||||
#define TR_ABOUT_KJELL_1 "Kjell Kernen"
|
||||
#define TR_ABOUT_KJELL_2 "Auteur de www.open-tx.org"
|
||||
#define TR_ABOUT_KJELL_3 "Auteur de OpenTX Recorder"
|
||||
#define TR_ABOUT_KJELL_4 "Développeur Companion"
|
||||
|
||||
#define TR_ABOUT_MARTIN_1 "Martin Hotar"
|
||||
#define TR_ABOUT_MARTIN_2 "Design graphique"
|
||||
|
||||
#if defined(MANUFACTURER_FRSKY)
|
||||
#define TR_ABOUT_HARDWARE_1 "FrSky"
|
||||
#define TR_ABOUT_HARDWARE_2 "Développeur/fabricant"
|
||||
#define TR_ABOUT_HARDWARE_3 "du matériel"
|
||||
#elif defined(MANUFACTURER_RADIOMASTER)
|
||||
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
|
||||
#define TR_ABOUT_HARDWARE_2 "Développeur/fabricant"
|
||||
#define TR_ABOUT_HARDWARE_3 "du matériel"
|
||||
#elif defined(MANUFACTURER_JUMPER)
|
||||
#define TR_ABOUT_HARDWARE_1 "JumperRC"
|
||||
#define TR_ABOUT_HARDWARE_2 "Développeur/fabricant"
|
||||
#define TR_ABOUT_HARDWARE_3 "du matériel"
|
||||
#elif defined(MANUFACTURER_RADIOMASTER)
|
||||
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
|
||||
#define TR_ABOUT_HARDWARE_2 "Développeur/fabricant"
|
||||
#define TR_ABOUT_HARDWARE_3 "du matériel"
|
||||
#elif defined(MANUFACTURER_JUMPER)
|
||||
#define TR_ABOUT_HARDWARE_1 "JumperRC"
|
||||
#define TR_ABOUT_HARDWARE_2 "Développeur/fabricant"
|
||||
#define TR_ABOUT_HARDWARE_3 "du matériel"
|
||||
#else
|
||||
#define TR_ABOUT_HARDWARE_1 "Brent Nelson"
|
||||
#define TR_ABOUT_HARDWARE_2 "Développeur/fabricant"
|
||||
#define TR_ABOUT_HARDWARE_3 "de la carte Sky9x"
|
||||
#endif
|
||||
|
||||
#define TR_ABOUT_PARENTS_1 "Projets parents"
|
||||
#define TR_ABOUT_PARENTS_2 "ersky9x (Mike Blandford)"
|
||||
#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)"
|
||||
#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)"
|
||||
|
||||
#define TR_CHR_SHORT 's'
|
||||
#define TR_CHR_LONG 'l'
|
||||
#define TR_CHR_TOGGLE 't'
|
||||
|
||||
@@ -1149,63 +1149,6 @@
|
||||
// About screen
|
||||
#define TR_ABOUTUS TR(" INFO ", "INFO SU")
|
||||
|
||||
#define TR_ABOUT_OPENTX_1 TR("OpenTX\001e'\001open\001source,\001non", "OpenTX e' open source, non-")
|
||||
#define TR_ABOUT_OPENTX_2 TR("commercial,\001wo\001warranties.", "commerciale, fornito senza")
|
||||
#define TR_ABOUT_OPENTX_3 TR("It\001was\001developed\001for\001free.", "garanzie. E' stato sviluppato")
|
||||
#define TR_ABOUT_OPENTX_4 TR("Support through donations", "gratuitamente. Il supporto")
|
||||
#define TR_ABOUT_OPENTX_5 TR("is welcome!", "mediante donazioni e' gradito!")
|
||||
|
||||
#define TR_ABOUT_BERTRAND_1 "Bertrand Songis"
|
||||
#define TR_ABOUT_BERTRAND_2 "Autore principale OpenTX"
|
||||
#define TR_ABOUT_BERTRAND_3 "Co-autore Companion"
|
||||
|
||||
#define TR_ABOUT_MIKE_1 "Mike Blandford"
|
||||
#define TR_ABOUT_MIKE_2 "Guru codice e driver"
|
||||
#define TR_ABOUT_MIKE_3 "esperto a basso livello"
|
||||
#define TR_ABOUT_MIKE_4 "Ispiratore"
|
||||
|
||||
#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini"
|
||||
#define TR_ABOUT_ROMOLO_2 "Autore Companion"
|
||||
#define TR_ABOUT_ROMOLO_3 ""
|
||||
|
||||
#define TR_ABOUT_ANDRE_1 "Andre Bernet"
|
||||
#define TR_ABOUT_ANDRE_2 "Funzionalità, usabilità,"
|
||||
#define TR_ABOUT_ANDRE_3 "debugging, documentazione"
|
||||
|
||||
#define TR_ABOUT_ROB_1 "Rob Thomson"
|
||||
#define TR_ABOUT_ROB_2 "Webmaster openrcforums"
|
||||
|
||||
#define TR_ABOUT_KJELL_1 "Kjell Kernen"
|
||||
#define TR_ABOUT_KJELL_2 "www.open-tx.org main author"
|
||||
#define TR_ABOUT_KJELL_3 "OpenTX Recorder author"
|
||||
#define TR_ABOUT_KJELL_4 "Companion contributor"
|
||||
|
||||
#define TR_ABOUT_MARTIN_1 "Martin Hotar"
|
||||
#define TR_ABOUT_MARTIN_2 "Graphic Designer"
|
||||
|
||||
#if defined(MANUFACTURER_FRSKY)
|
||||
#define TR_ABOUT_HARDWARE_1 "FrSky"
|
||||
#define TR_ABOUT_HARDWARE_2 "Disegno/produzione Hardware"
|
||||
#define TR_ABOUT_HARDWARE_3 "Contributi al Firmware"
|
||||
#elif defined(MANUFACTURER_RADIOMASTER)
|
||||
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
|
||||
#define TR_ABOUT_HARDWARE_2 "Disegno/produzione Hardware"
|
||||
#define TR_ABOUT_HARDWARE_3 "Contributi al Firmware"
|
||||
#elif defined(MANUFACTURER_JUMPER)
|
||||
#define TR_ABOUT_HARDWARE_1 "JumperRC"
|
||||
#define TR_ABOUT_HARDWARE_2 "Disegno/produzione Hardware"
|
||||
#define TR_ABOUT_HARDWARE_3 "Contributi al Firmware"
|
||||
#else
|
||||
#define TR_ABOUT_HARDWARE_1 "Brent Nelson"
|
||||
#define TR_ABOUT_HARDWARE_2 "Designer/Produttore SKY9X"
|
||||
#define TR_ABOUT_HARDWARE_3 ""
|
||||
#endif
|
||||
|
||||
#define TR_ABOUT_PARENTS_1 "Progetti correlati"
|
||||
#define TR_ABOUT_PARENTS_2 "ersky9x (Mike Blandford)"
|
||||
#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)"
|
||||
#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)"
|
||||
|
||||
#define TR_CHR_SHORT 's'
|
||||
#define TR_CHR_LONG 'l'
|
||||
#define TR_CHR_TOGGLE 't'
|
||||
|
||||
@@ -1136,62 +1136,6 @@
|
||||
// About screen
|
||||
#define TR_ABOUTUS TR(" ABOUT ", "ABOUT")
|
||||
|
||||
#define TR_ABOUT_OPENTX_1 TR("OpenTX\001is\001open\001source,\001non", "OpenTX is open source, non-")
|
||||
#define TR_ABOUT_OPENTX_2 TR("commercial,\001wo\001warranties.", "commercial and comes with no")
|
||||
#define TR_ABOUT_OPENTX_3 TR("It\001was\001developed\001for\001free.", "warranties. It was developed")
|
||||
#define TR_ABOUT_OPENTX_4 TR("Support through donations", "for free. Support through")
|
||||
#define TR_ABOUT_OPENTX_5 TR("is welcome!", "donations is welcome!")
|
||||
|
||||
#define TR_ABOUT_BERTRAND_1 "Bertrand Songis"
|
||||
#define TR_ABOUT_BERTRAND_2 "OpenTX main author"
|
||||
#define TR_ABOUT_BERTRAND_3 "Companion co-author"
|
||||
|
||||
#define TR_ABOUT_MIKE_1 "Mike Blandford"
|
||||
#define TR_ABOUT_MIKE_2 "Code and drivers guru"
|
||||
#define TR_ABOUT_MIKE_3 TR("Arguably,\001one\001of\001the\001best", "Arguably, one of the best")
|
||||
#define TR_ABOUT_MIKE_4 "Inspirational"
|
||||
|
||||
#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini"
|
||||
#define TR_ABOUT_ROMOLO_2 "Companion co-author"
|
||||
#define TR_ABOUT_ROMOLO_3 ""
|
||||
|
||||
#define TR_ABOUT_ANDRE_1 "Andre Bernet"
|
||||
#define TR_ABOUT_ANDRE_2 "Functionality, usability,"
|
||||
#define TR_ABOUT_ANDRE_3 "debugging, documentation"
|
||||
|
||||
#define TR_ABOUT_ROB_1 "Rob Thomson"
|
||||
#define TR_ABOUT_ROB_2 "openrcforums webmaster"
|
||||
|
||||
#define TR_ABOUT_KJELL_1 "Kjell Kernen"
|
||||
#define TR_ABOUT_KJELL_2 "www.open-tx.org main author"
|
||||
#define TR_ABOUT_KJELL_3 "OpenTX Recorder author"
|
||||
#define TR_ABOUT_KJELL_4 "Companion contributor"
|
||||
|
||||
#define TR_ABOUT_MARTIN_1 "Martin Hotar"
|
||||
#define TR_ABOUT_MARTIN_2 "Graphics designer"
|
||||
|
||||
#if defined(MANUFACTURER_FRSKY)
|
||||
#define TR_ABOUT_HARDWARE_1 "FrSky"
|
||||
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
|
||||
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
|
||||
#elif defined(MANUFACTURER_RADIOMASTER)
|
||||
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
|
||||
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
|
||||
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
|
||||
#elif defined(MANUFACTURER_JUMPER)
|
||||
#define TR_ABOUT_HARDWARE_1 "JumperRC"
|
||||
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
|
||||
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
|
||||
#else
|
||||
#define TR_ABOUT_HARDWARE_1 "Brent Nelson"
|
||||
#define TR_ABOUT_HARDWARE_2 "Sky9x designer/producer"
|
||||
#define TR_ABOUT_HARDWARE_3 ""
|
||||
#endif
|
||||
#define TR_ABOUT_PARENTS_1 "Parent projects"
|
||||
#define TR_ABOUT_PARENTS_2 TR("Ersky9x (Mike Blandford)", "Ersky9x (Mike Blandford)")
|
||||
#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)"
|
||||
#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)"
|
||||
|
||||
#define TR_CHR_SHORT 's'
|
||||
#define TR_CHR_LONG 'l'
|
||||
#define TR_CHR_TOGGLE 't'
|
||||
|
||||
@@ -1145,63 +1145,6 @@
|
||||
// About screen
|
||||
#define TR_ABOUTUS TR(" O ", " O ")
|
||||
|
||||
#define TR_ABOUT_OPENTX_1 TR("OpenTX\001is\001open\001source,\001non", "OpenTX is open source, non-")
|
||||
#define TR_ABOUT_OPENTX_2 TR("commercial,\001wo\001warranties.", "commercial and comes with no")
|
||||
#define TR_ABOUT_OPENTX_3 TR("It\001was\001developed\001for\001free.", "warranties. It was developed")
|
||||
#define TR_ABOUT_OPENTX_4 TR("Support through donations", "for free. Support through")
|
||||
#define TR_ABOUT_OPENTX_5 TR("is welcome!", "donations is welcome!")
|
||||
|
||||
#define TR_ABOUT_BERTRAND_1 "Bertrand Songis"
|
||||
#define TR_ABOUT_BERTRAND_2 "OpenTX główny autor"
|
||||
#define TR_ABOUT_BERTRAND_3 "Companion współ-autor"
|
||||
|
||||
#define TR_ABOUT_MIKE_1 "Mike Blandford"
|
||||
#define TR_ABOUT_MIKE_2 "Guru kodu i driwerów"
|
||||
#define TR_ABOUT_MIKE_3 TR("Arguably,\001one\001of\001the\001best", "Arguably, one of the best")
|
||||
#define TR_ABOUT_MIKE_4 "Inspirational"
|
||||
|
||||
#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini"
|
||||
#define TR_ABOUT_ROMOLO_2 "Companion współ-autor"
|
||||
#define TR_ABOUT_ROMOLO_3 ""
|
||||
|
||||
#define TR_ABOUT_ANDRE_1 "Andre Bernet"
|
||||
#define TR_ABOUT_ANDRE_2 "Funkcjonalność, użytkowość,"
|
||||
#define TR_ABOUT_ANDRE_3 "debugging, documentacja"
|
||||
|
||||
#define TR_ABOUT_ROB_1 "Rob Thomson"
|
||||
#define TR_ABOUT_ROB_2 "openrcforums webmaster"
|
||||
|
||||
#define TR_ABOUT_KJELL_1 "Kjell Kernen"
|
||||
#define TR_ABOUT_KJELL_2 "www.open-tx.org main author"
|
||||
#define TR_ABOUT_KJELL_3 "OpenTX Recorder author"
|
||||
#define TR_ABOUT_KJELL_4 "Companion contributor"
|
||||
|
||||
#define TR_ABOUT_MARTIN_1 "Martin Hotar"
|
||||
#define TR_ABOUT_MARTIN_2 "Projekty graficzne"
|
||||
|
||||
#if defined(MANUFACTURER_FRSKY)
|
||||
#define TR_ABOUT_HARDWARE_1 "FrSky"
|
||||
#define TR_ABOUT_HARDWARE_2 "Proucent/projektant Hardware"
|
||||
#define TR_ABOUT_HARDWARE_3 "Współautor firmware"
|
||||
#elif defined(MANUFACTURER_RADIOMASTER)
|
||||
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
|
||||
#define TR_ABOUT_HARDWARE_2 "Proucent/projektant Hardware"
|
||||
#define TR_ABOUT_HARDWARE_3 "Współautor firmware"
|
||||
#elif defined(MANUFACTURER_JUMPER)
|
||||
#define TR_ABOUT_HARDWARE_1 "JumperRC"
|
||||
#define TR_ABOUT_HARDWARE_2 "Proucent/projektant Hardware"
|
||||
#define TR_ABOUT_HARDWARE_3 "Współautor firmware"
|
||||
#else
|
||||
#define TR_ABOUT_HARDWARE_1 "Brent Nelson"
|
||||
#define TR_ABOUT_HARDWARE_2 "Sky9x designer/výrobce"
|
||||
#define TR_ABOUT_HARDWARE_3 ""
|
||||
#endif
|
||||
|
||||
#define TR_ABOUT_PARENTS_1 "Projekty macierzyste"
|
||||
#define TR_ABOUT_PARENTS_2 TR("Ersky9x (Mike Blandford)", "Ersky9x (Mike Blandford)")
|
||||
#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)"
|
||||
#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)"
|
||||
|
||||
#define TR_CHR_SHORT 'k'
|
||||
#define TR_CHR_LONG 'd'
|
||||
#define TR_CHR_TOGGLE 't'
|
||||
|
||||
@@ -1146,63 +1146,6 @@
|
||||
// Taranis About screen
|
||||
#define TR_ABOUTUS "ABOUT US"
|
||||
|
||||
#define TR_ABOUT_OPENTX_1 "OpenTX is open source, non-"
|
||||
#define TR_ABOUT_OPENTX_2 "commercial and comes with no"
|
||||
#define TR_ABOUT_OPENTX_3 "warranties. It was developed"
|
||||
#define TR_ABOUT_OPENTX_4 "for free. Support through"
|
||||
#define TR_ABOUT_OPENTX_5 "donations is welcome!"
|
||||
|
||||
#define TR_ABOUT_BERTRAND_1 "Bertrand Songis"
|
||||
#define TR_ABOUT_BERTRAND_2 "OpenTX main author"
|
||||
#define TR_ABOUT_BERTRAND_3 "Companion co-developer"
|
||||
|
||||
#define TR_ABOUT_MIKE_1 "Mike Blandford"
|
||||
#define TR_ABOUT_MIKE_2 "Code and drivers guru"
|
||||
#define TR_ABOUT_MIKE_3 "Arguably, one of the best"
|
||||
#define TR_ABOUT_MIKE_4 "Inspirational"
|
||||
|
||||
#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini"
|
||||
#define TR_ABOUT_ROMOLO_2 "Companion main developer"
|
||||
#define TR_ABOUT_ROMOLO_3 ""
|
||||
|
||||
#define TR_ABOUT_ANDRE_1 "Andre Bernet"
|
||||
#define TR_ABOUT_ANDRE_2 "Functionality, usability,"
|
||||
#define TR_ABOUT_ANDRE_3 "debugging, documentation"
|
||||
|
||||
#define TR_ABOUT_ROB_1 "Rob Thomson"
|
||||
#define TR_ABOUT_ROB_2 "openrcforums webmaster"
|
||||
|
||||
#define TR_ABOUT_KJELL_1 "Kjell Kernen"
|
||||
#define TR_ABOUT_KJELL_2 "www.open-tx.org main author"
|
||||
#define TR_ABOUT_KJELL_3 "OpenTX Recorder author"
|
||||
#define TR_ABOUT_KJELL_4 "Companion contributor"
|
||||
|
||||
#define TR_ABOUT_MARTIN_1 "Martin Hotar"
|
||||
#define TR_ABOUT_MARTIN_2 "Graphics designer"
|
||||
|
||||
#if defined(MANUFACTURER_FRSKY)
|
||||
#define TR_ABOUT_HARDWARE_1 "FrSky"
|
||||
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
|
||||
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
|
||||
#elif defined(MANUFACTURER_RADIOMASTER)
|
||||
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
|
||||
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
|
||||
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
|
||||
#elif defined(MANUFACTURER_JUMPER)
|
||||
#define TR_ABOUT_HARDWARE_1 "JumperRC"
|
||||
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
|
||||
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
|
||||
#else
|
||||
#define TR_ABOUT_HARDWARE_1 "Brent Nelson"
|
||||
#define TR_ABOUT_HARDWARE_2 "Sky9x designer/producer"
|
||||
#define TR_ABOUT_HARDWARE_3 ""
|
||||
#endif
|
||||
|
||||
#define TR_ABOUT_PARENTS_1 "Parent projects"
|
||||
#define TR_ABOUT_PARENTS_2 "ersky9x (Mike Blandford)"
|
||||
#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)"
|
||||
#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)"
|
||||
|
||||
#define TR_CHR_SHORT 's'
|
||||
#define TR_CHR_LONG 'l'
|
||||
#define TR_CHR_TOGGLE 't'
|
||||
|
||||
@@ -1148,63 +1148,6 @@
|
||||
// About screen
|
||||
#define TR_ABOUTUS "Om Oss"
|
||||
|
||||
#define TR_ABOUT_OPENTX_1 "OpenTX är icke-kommersiell,"
|
||||
#define TR_ABOUT_OPENTX_2 "öppen programvara utan"
|
||||
#define TR_ABOUT_OPENTX_3 "garantier som uvecklas helt"
|
||||
#define TR_ABOUT_OPENTX_4 "ideellt. Stöd i form av"
|
||||
#define TR_ABOUT_OPENTX_5 "donationer välkomnas!"
|
||||
|
||||
#define TR_ABOUT_BERTRAND_1 "Bertrand Songis"
|
||||
#define TR_ABOUT_BERTRAND_2 "Chefsutvecklare av OpenTX"
|
||||
#define TR_ABOUT_BERTRAND_3 "Hjälputvecklare av Companion"
|
||||
|
||||
#define TR_ABOUT_MIKE_1 "Mike Blandford"
|
||||
#define TR_ABOUT_MIKE_2 "Kod och drivrutins-guru"
|
||||
#define TR_ABOUT_MIKE_3 "Stor inspirationskälla"
|
||||
#define TR_ABOUT_MIKE_4 ""
|
||||
|
||||
#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini"
|
||||
#define TR_ABOUT_ROMOLO_2 "Chefsutvecklare av Companion"
|
||||
#define TR_ABOUT_ROMOLO_3 ""
|
||||
|
||||
#define TR_ABOUT_ANDRE_1 "Andre Bernet"
|
||||
#define TR_ABOUT_ANDRE_2 "Funktionalitet, Användbarhet,"
|
||||
#define TR_ABOUT_ANDRE_3 "Felsökning, Dokumentation"
|
||||
|
||||
#define TR_ABOUT_ROB_1 "Rob Thomson"
|
||||
#define TR_ABOUT_ROB_2 "Webmaster för openRCforums"
|
||||
|
||||
#define TR_ABOUT_KJELL_1 "Kjell Kernen"
|
||||
#define TR_ABOUT_KJELL_2 "Utvecklare av www.open-tx.org"
|
||||
#define TR_ABOUT_KJELL_3 "Utvecklare av OpenTX Recorder"
|
||||
#define TR_ABOUT_KJELL_4 "Hjälputvecklare av Companion"
|
||||
|
||||
#define TR_ABOUT_MARTIN_1 "Martin Hotar"
|
||||
#define TR_ABOUT_MARTIN_2 "Grafikdesigner"
|
||||
|
||||
#if defined(MANUFACTURER_FRSKY)
|
||||
#define TR_ABOUT_HARDWARE_1 "FrSky"
|
||||
#define TR_ABOUT_HARDWARE_2 "Hårdvarudesign/producent"
|
||||
#define TR_ABOUT_HARDWARE_3 ""
|
||||
#elif defined(MANUFACTURER_RADIOMASTER)
|
||||
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
|
||||
#define TR_ABOUT_HARDWARE_2 "Hårdvarudesign/producent"
|
||||
#define TR_ABOUT_HARDWARE_3 ""
|
||||
#elif defined(MANUFACTURER_JUMPER)
|
||||
#define TR_ABOUT_HARDWARE_1 "JumperRC"
|
||||
#define TR_ABOUT_HARDWARE_2 "Hårdvarudesign/producent"
|
||||
#define TR_ABOUT_HARDWARE_3 ""
|
||||
#else
|
||||
#define TR_ABOUT_HARDWARE_1 "Brent Nelson"
|
||||
#define TR_ABOUT_HARDWARE_2 "Sky9x design/producent"
|
||||
#define TR_ABOUT_HARDWARE_3 ""
|
||||
#endif
|
||||
|
||||
#define TR_ABOUT_PARENTS_1 "Ursprungsprojekt"
|
||||
#define TR_ABOUT_PARENTS_2 "ersky9x (Mike Blandford)"
|
||||
#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)"
|
||||
#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)"
|
||||
|
||||
#define TR_CHR_SHORT 's'
|
||||
#define TR_CHR_LONG 'l'
|
||||
#define TR_CHR_TOGGLE 't'
|
||||
|
||||
@@ -1027,63 +1027,6 @@
|
||||
// About screen
|
||||
#define TR_ABOUTUS TR(" 關於 ", "關於")
|
||||
|
||||
#define TR_ABOUT_OPENTX_1 TR("OpenTX\001is\001open\001source,\001non", "OpenTX is open source, non-")
|
||||
#define TR_ABOUT_OPENTX_2 TR("commercial,\001wo\001warranties.", "commercial and comes with no")
|
||||
#define TR_ABOUT_OPENTX_3 TR("It\001was\001developed\001for\001free.", "warranties. It was developed")
|
||||
#define TR_ABOUT_OPENTX_4 TR("Support through donations", "for free. Support through")
|
||||
#define TR_ABOUT_OPENTX_5 TR("is welcome!", "donations is welcome!")
|
||||
|
||||
#define TR_ABOUT_BERTRAND_1 "Bertrand Songis"
|
||||
#define TR_ABOUT_BERTRAND_2 "OpenTX main author"
|
||||
#define TR_ABOUT_BERTRAND_3 "Companion co-author"
|
||||
|
||||
#define TR_ABOUT_MIKE_1 "Mike Blandford"
|
||||
#define TR_ABOUT_MIKE_2 "Code and drivers guru"
|
||||
#define TR_ABOUT_MIKE_3 TR("Arguably,\001one\001of\001the\001best", "Arguably, one of the best")
|
||||
#define TR_ABOUT_MIKE_4 "Inspirational"
|
||||
|
||||
#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini"
|
||||
#define TR_ABOUT_ROMOLO_2 "Companion co-author"
|
||||
#define TR_ABOUT_ROMOLO_3 ""
|
||||
|
||||
#define TR_ABOUT_ANDRE_1 "Andre Bernet"
|
||||
#define TR_ABOUT_ANDRE_2 "Functionality, usability,"
|
||||
#define TR_ABOUT_ANDRE_3 "debugging, documentation"
|
||||
|
||||
#define TR_ABOUT_ROB_1 "Rob Thomson"
|
||||
#define TR_ABOUT_ROB_2 "openrcforums webmaster"
|
||||
|
||||
#define TR_ABOUT_KJELL_1 "Kjell Kernen"
|
||||
#define TR_ABOUT_KJELL_2 TR("www.open-tx.org author", "www.open-tx.org main author")
|
||||
#define TR_ABOUT_KJELL_3 "OpenTX Recorder author"
|
||||
#define TR_ABOUT_KJELL_4 "Companion contributor"
|
||||
|
||||
#define TR_ABOUT_MARTIN_1 "Martin Hotar"
|
||||
#define TR_ABOUT_MARTIN_2 "Graphics designer"
|
||||
|
||||
#if defined(MANUFACTURER_FRSKY)
|
||||
#define TR_ABOUT_HARDWARE_1 "FrSky"
|
||||
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
|
||||
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
|
||||
#elif defined(MANUFACTURER_RADIOMASTER)
|
||||
#define TR_ABOUT_HARDWARE_1 "Radiomaster"
|
||||
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
|
||||
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
|
||||
#elif defined(MANUFACTURER_JUMPER)
|
||||
#define TR_ABOUT_HARDWARE_1 "JumperRC"
|
||||
#define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "Hardware designer/producer")
|
||||
#define TR_ABOUT_HARDWARE_3 "Firmware contributor"
|
||||
#else
|
||||
#define TR_ABOUT_HARDWARE_1 "Brent Nelson"
|
||||
#define TR_ABOUT_HARDWARE_2 "Sky9x designer/producer"
|
||||
#define TR_ABOUT_HARDWARE_3 ""
|
||||
#endif
|
||||
|
||||
#define TR_ABOUT_PARENTS_1 "Parent projects"
|
||||
#define TR_ABOUT_PARENTS_2 TR("Ersky9x (Mike Blandford)", "Ersky9x (Mike Blandford)")
|
||||
#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)"
|
||||
#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)"
|
||||
|
||||
#define TR_CHR_SHORT 's'
|
||||
#define TR_CHR_LONG 'l'
|
||||
#define TR_CHR_TOGGLE 't'
|
||||
|
||||
Reference in New Issue
Block a user