mirror of
https://github.com/opentx/opentx.git
synced 2025-07-24 00:35:18 +03:00
Warnings can now have an extra info displayed, which is useful for Lua
errors
This commit is contained in:
parent
7cd7d0917e
commit
4797df176c
4 changed files with 25 additions and 21 deletions
|
@ -317,13 +317,12 @@ void onModelSelectMenu(const char *result)
|
|||
else if (result == STR_DELETE_MODEL) {
|
||||
POPUP_CONFIRMATION(STR_DELETEMODEL);
|
||||
#if defined(CPUARM)
|
||||
s_warning_info = modelHeaders[sub].name;
|
||||
SET_WARNING_INFO(modelHeaders[sub].name, sizeof(g_model.header.name), ZCHAR);
|
||||
#else
|
||||
char * name = reusableBuffer.modelsel.mainname;
|
||||
eeLoadModelName(sub, name);
|
||||
s_warning_info = name;
|
||||
SET_WARNING_INFO(name, sizeof(g_model.header.name), ZCHAR);
|
||||
#endif
|
||||
s_warning_info_len = sizeof(g_model.header.name);
|
||||
}
|
||||
#if defined(SDCARD)
|
||||
else {
|
||||
|
@ -391,13 +390,12 @@ void menuModelSelect(uint8_t event)
|
|||
if (s_copyMode && s_copyTgtOfs == 0 && g_eeGeneral.currModel != sub && eeModelExists(sub)) {
|
||||
POPUP_CONFIRMATION(STR_DELETEMODEL);
|
||||
#if defined(CPUARM)
|
||||
s_warning_info = modelHeaders[sub].name;
|
||||
SET_WARNING_INFO(modelHeaders[sub].name, sizeof(g_model.header.name), ZCHAR);
|
||||
#else
|
||||
char * name = reusableBuffer.modelsel.mainname;
|
||||
eeLoadModelName(sub, name);
|
||||
s_warning_info = name;
|
||||
SET_WARNING_INFO(name, sizeof(g_model.header.name), ZCHAR);
|
||||
#endif
|
||||
s_warning_info_len = sizeof(g_model.header.name);
|
||||
killEvents(event);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1046,11 +1046,11 @@ void pushMenu(MenuFuncP newMenu)
|
|||
const pm_char * s_warning = NULL;
|
||||
const pm_char * s_warning_info;
|
||||
uint8_t s_warning_info_len;
|
||||
// uint8_t s_warning_info_att not needed now
|
||||
uint8_t s_warning_type;
|
||||
uint8_t s_warning_result = 0;
|
||||
|
||||
#if defined(CPUARM)
|
||||
uint8_t s_warning_info_flags = ZCHAR;
|
||||
int16_t s_warning_input_value;
|
||||
int16_t s_warning_input_min;
|
||||
int16_t s_warning_input_max;
|
||||
|
@ -1081,7 +1081,7 @@ void displayWarning(uint8_t event)
|
|||
s_warning_result = false;
|
||||
displayBox();
|
||||
if (s_warning_info)
|
||||
lcd_putsnAtt(16, WARNING_LINE_Y+FH, s_warning_info, s_warning_info_len, ZCHAR);
|
||||
lcd_putsnAtt(16, WARNING_LINE_Y+FH, s_warning_info, s_warning_info_len, WARNING_INFO_FLAGS);
|
||||
lcd_puts(16, WARNING_LINE_Y+2*FH, s_warning_type == WARNING_TYPE_ASTERISK ? STR_EXIT : STR_POPUPS);
|
||||
switch (event) {
|
||||
#if defined(ROTARY_ENCODER_NAVIGATION)
|
||||
|
|
|
@ -356,7 +356,7 @@ extern uint8_t s_warning_type;
|
|||
#define WARNING_LINE_X 16
|
||||
#define WARNING_LINE_Y 3*FH
|
||||
#if LCD_W >= 212
|
||||
#define WARNING_LINE_LEN 30
|
||||
#define WARNING_LINE_LEN 32
|
||||
#else
|
||||
#define WARNING_LINE_LEN 20
|
||||
#endif
|
||||
|
@ -370,17 +370,22 @@ void displayWarning(uint8_t event);
|
|||
extern int16_t s_warning_input_value;
|
||||
extern int16_t s_warning_input_min;
|
||||
extern int16_t s_warning_input_max;
|
||||
extern uint8_t s_warning_info_flags;
|
||||
#endif
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define DISPLAY_WARNING (*popupFunc)
|
||||
#define POPUP_WARNING(s) (s_warning = s, popupFunc = displayWarning)
|
||||
#define POPUP_CONFIRMATION(s) (s_warning = s, s_warning_type = WARNING_TYPE_CONFIRM, popupFunc = displayWarning)
|
||||
#define POPUP_WARNING(s) (s_warning = s, s_warning_info = 0, popupFunc = displayWarning)
|
||||
#define POPUP_CONFIRMATION(s) (s_warning = s, s_warning_type = WARNING_TYPE_CONFIRM, s_warning_info = 0, popupFunc = displayWarning)
|
||||
#define POPUP_INPUT(s, func, start, min, max) (s_warning = s, s_warning_type = WARNING_TYPE_INPUT, popupFunc = func, s_warning_input_value = start, s_warning_input_min = min, s_warning_input_max = max)
|
||||
#define WARNING_INFO_FLAGS s_warning_info_flags
|
||||
#define SET_WARNING_INFO(info, len, flags) (s_warning_info = info, s_warning_info_len = len, s_warning_info_flags = flags)
|
||||
#else
|
||||
#define DISPLAY_WARNING displayWarning
|
||||
#define POPUP_WARNING(s) s_warning = s
|
||||
#define POPUP_CONFIRMATION(s) (s_warning = s, s_warning_type = WARNING_TYPE_CONFIRM)
|
||||
#define WARNING_INFO_FLAGS ZCHAR
|
||||
#define SET_WARNING_INFO(info, len, flags) (s_warning_info = info, s_warning_info_len = len)
|
||||
#endif
|
||||
|
||||
#if defined(SDCARD) || (defined(ROTARY_ENCODER_NAVIGATION) && !defined(CPUM64))
|
||||
|
|
|
@ -200,13 +200,6 @@ static int luaKillEvents(lua_State *L)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int luaRaise(lua_State *L)
|
||||
{
|
||||
const char * message = luaL_checkstring(L, 1);
|
||||
// throw message;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int luaLcdLock(lua_State *L)
|
||||
{
|
||||
lcd_locked = true;
|
||||
|
@ -1043,7 +1036,6 @@ void luaInit()
|
|||
lua_register(L, "popupInput", luaPopupInput);
|
||||
lua_register(L, "channelOrder", luaChannelOrder);
|
||||
lua_register(L, "killEvents", luaKillEvents);
|
||||
lua_register(L, "raise", luaRaise);
|
||||
|
||||
// Push OpenTX constants
|
||||
lua_registerint(L, "FULLSCALE", RESX);
|
||||
|
@ -1177,6 +1169,7 @@ void luaLoadModelScripts()
|
|||
}
|
||||
|
||||
char lua_warning_str[WARNING_LINE_LEN+1];
|
||||
char lua_warning_info[WARNING_LINE_LEN+1];
|
||||
|
||||
void luaError(uint8_t error)
|
||||
{
|
||||
|
@ -1189,7 +1182,15 @@ void luaError(uint8_t error)
|
|||
#endif
|
||||
strncpy(lua_warning_str, msg, WARNING_LINE_LEN);
|
||||
lua_warning_str[WARNING_LINE_LEN] = '\0';
|
||||
msg = lua_warning_str;
|
||||
POPUP_WARNING(lua_warning_str);
|
||||
for (int i=0; i<WARNING_LINE_LEN; i++) {
|
||||
if (msg[i] == ':' && msg[i+1] == ' ') {
|
||||
lua_warning_str[i] = '\0';
|
||||
strncpy(lua_warning_info, &msg[i+2], WARNING_LINE_LEN);
|
||||
lua_warning_info[WARNING_LINE_LEN] = '\0';
|
||||
SET_WARNING_INFO(lua_warning_info, WARNING_LINE_LEN, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
switch (error) {
|
||||
|
@ -1203,8 +1204,8 @@ void luaError(uint8_t error)
|
|||
msg = "Script memory leak";
|
||||
break;
|
||||
}
|
||||
}
|
||||
POPUP_WARNING(msg);
|
||||
}
|
||||
}
|
||||
|
||||
void luaExec(const char *filename)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue