mirror of
https://github.com/opentx/opentx.git
synced 2025-07-23 16:25:16 +03:00
[Horus] UI continued
This commit is contained in:
parent
e72a049683
commit
33910c8721
35 changed files with 301 additions and 75 deletions
Binary file not shown.
Before Width: | Height: | Size: 16 KiB |
Binary file not shown.
Before Width: | Height: | Size: 49 KiB |
Binary file not shown.
Before Width: | Height: | Size: 5.4 KiB |
|
@ -259,11 +259,11 @@ const uint8_t LBM_STAR1[] __DMA = {
|
|||
*/
|
||||
|
||||
const uint8_t LBM_HORUS[] __DMA = {
|
||||
#include "bmp_horus.lbm"
|
||||
#include "alpha_horus.lbm"
|
||||
};
|
||||
|
||||
const uint8_t LBM_STICK_BACKGROUND[] __DMA = {
|
||||
#include "bmp_stick_background.lbm"
|
||||
#include "alpha_stick_background.lbm"
|
||||
};
|
||||
|
||||
const uint8_t LBM_STICK_POINTER[] __DMA = {
|
||||
|
@ -299,7 +299,7 @@ const uint8_t LBM_SHUTDOWN[] __DMA = {
|
|||
};
|
||||
|
||||
const uint8_t LBM_SLEEP[] __DMA = {
|
||||
#include "bmp_sleep.lbm"
|
||||
#include "alpha_sleep.lbm"
|
||||
};
|
||||
|
||||
const uint8_t LBM_SHUTDOWN_CIRCLE[] __DMA = {
|
||||
|
|
|
@ -75,3 +75,17 @@ Layout * loadLayout(const char * name, Layout::PersistentData * persistentData)
|
|||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void loadCustomScreens()
|
||||
{
|
||||
for (unsigned int i=0; i<MAX_CUSTOM_SCREENS; i++) {
|
||||
char name[sizeof(g_model.screenData[i].layoutName)+1];
|
||||
memset(name, 0, sizeof(name));
|
||||
strncpy(name, g_model.screenData[i].layoutName, sizeof(g_model.screenData[i].layoutName));
|
||||
customScreens[i] = loadLayout(name, &g_model.screenData[i].layoutData);
|
||||
}
|
||||
|
||||
if (customScreens[0] == NULL) {
|
||||
customScreens[0] = registeredLayouts[0]->create(&g_model.screenData[0].layoutData);
|
||||
}
|
||||
}
|
|
@ -161,5 +161,6 @@ class BaseLayoutFactory: public LayoutFactory
|
|||
extern unsigned int countRegisteredLayouts;
|
||||
extern const LayoutFactory * registeredLayouts[MAX_REGISTERED_LAYOUTS];
|
||||
Layout * loadLayout(const char * name, Layout::PersistentData * persistentData);
|
||||
void loadCustomScreens();
|
||||
|
||||
#endif // _LAYOUT_H_
|
||||
|
|
|
@ -182,7 +182,7 @@ bool menuCommonCalib(evt_t event)
|
|||
break;
|
||||
}
|
||||
|
||||
lcdDrawBitmap((LCD_W-206)/2, LCD_H-220, LBM_HORUS);
|
||||
lcdDrawAlphaBitmap((LCD_W-206)/2, LCD_H-220, LBM_HORUS);
|
||||
drawSticks();
|
||||
drawPots();
|
||||
|
||||
|
|
|
@ -301,10 +301,9 @@ bool menuScreensTheme(evt_t event)
|
|||
lcdDrawText(MENUS_MARGIN_LEFT, y + FH / 2, "Theme");
|
||||
const Theme * new_theme = editThemeChoice<const Theme>(SCREENS_SETUP_2ND_COLUMN, y, registeredThemes, countRegisteredThemes, theme, needsOffsetCheck, attr, event);
|
||||
if (new_theme) {
|
||||
theme = new_theme;
|
||||
theme->load();
|
||||
// strncpy(g_model.screenData[T].layoutName, factory->getName(), sizeof(g_model.screenData[T].layoutName));
|
||||
storageDirty(EE_MODEL);
|
||||
loadTheme(new_theme);
|
||||
strncpy(g_eeGeneral.themeName, new_theme->getName(), sizeof(g_eeGeneral.themeName));
|
||||
storageDirty(EE_GENERAL);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -317,12 +316,8 @@ bool menuScreensTheme(evt_t event)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool menuScreenAdd(evt_t event)
|
||||
{
|
||||
menuPageCount = updateMainviewsMenu();
|
||||
MENU_WITH_OPTIONS("Add main view", LBM_MAINVIEWS_ICONS, menuTabMainviews, menuPageCount, menuPageCount-1, 0, { uint8_t(NAVIGATION_LINE_BY_LINE|uint8_t(countRegisteredLayouts-1)), ORPHAN_ROW, 0, 0, 0, 0 });
|
||||
return true;
|
||||
}
|
||||
bool menuScreenAdd(evt_t event);
|
||||
void onScreenSetupMenu(const char * result);
|
||||
|
||||
template <int T>
|
||||
bool menuScreenSetup(evt_t event)
|
||||
|
@ -342,6 +337,8 @@ bool menuScreenSetup(evt_t event)
|
|||
menuPageCount = updateMainviewsMenu();
|
||||
MENU_WITH_OPTIONS(title, LBM_MAINVIEWS_ICONS, menuTabMainviews, menuPageCount, T+1, linesCount, { uint8_t(NAVIGATION_LINE_BY_LINE|uint8_t(countRegisteredLayouts-1)), ORPHAN_ROW, 0, 0, 0, 0 });
|
||||
|
||||
|
||||
|
||||
for (int i=0; i<NUM_BODY_LINES; i++) {
|
||||
coord_t y = MENU_CONTENT_TOP + i * FH;
|
||||
int k = i + menuVerticalOffset;
|
||||
|
@ -384,6 +381,13 @@ bool menuScreenSetup(evt_t event)
|
|||
}
|
||||
}
|
||||
|
||||
if (menuVerticalPosition == -1 && T > 0 && event == EVT_KEY_LONG(KEY_ENTER)) {
|
||||
killEvents(KEY_ENTER);
|
||||
menuHorizontalPosition = T;
|
||||
POPUP_MENU_ADD_ITEM(STR_REMOVE_SCREEN);
|
||||
popupMenuHandler = onScreenSetupMenu;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -419,3 +423,31 @@ int updateMainviewsMenu()
|
|||
}
|
||||
return 1+MAX_CUSTOM_SCREENS;
|
||||
}
|
||||
|
||||
bool menuScreenAdd(evt_t event)
|
||||
{
|
||||
menuPageCount = updateMainviewsMenu();
|
||||
|
||||
if (event == EVT_KEY_BREAK(KEY_ENTER)) {
|
||||
customScreens[menuPageCount-2] = registeredLayouts[0]->create(&g_model.screenData[menuPageCount-2].layoutData);
|
||||
chainMenu(menuMainviews[menuPageCount-2]);
|
||||
return false;
|
||||
}
|
||||
|
||||
MENU_WITH_OPTIONS("Add main view", LBM_MAINVIEWS_ICONS, menuTabMainviews, menuPageCount, menuPageCount-1, 0, { uint8_t(NAVIGATION_LINE_BY_LINE|uint8_t(countRegisteredLayouts-1)), ORPHAN_ROW, 0, 0, 0, 0 });
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void onScreenSetupMenu(const char * result)
|
||||
{
|
||||
if (result == STR_REMOVE_SCREEN) {
|
||||
if (menuHorizontalPosition != MAX_CUSTOM_SCREENS-1) {
|
||||
memmove(&g_model.screenData[menuHorizontalPosition], &g_model.screenData[menuHorizontalPosition + 1], sizeof(CustomScreenData) * (MAX_CUSTOM_SCREENS - menuHorizontalPosition - 1));
|
||||
memmove(&customScreens[menuHorizontalPosition], &customScreens[menuHorizontalPosition + 1], sizeof(Layout *) * (MAX_CUSTOM_SCREENS - menuHorizontalPosition - 1));
|
||||
}
|
||||
memset(&g_model.screenData[MAX_CUSTOM_SCREENS-1], 0, sizeof(CustomScreenData));
|
||||
customScreens[MAX_CUSTOM_SCREENS-1] = NULL;
|
||||
chainMenu(menuMainviews[menuHorizontalPosition > 0 ? menuHorizontalPosition-1 : 0]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,3 +40,17 @@ const Theme * getTheme(const char * name)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
void loadTheme(const Theme * new_theme)
|
||||
{
|
||||
theme = new_theme;
|
||||
theme->load();
|
||||
}
|
||||
|
||||
void loadTheme()
|
||||
{
|
||||
char name[sizeof(g_eeGeneral.themeName)+1];
|
||||
memset(name, 0, sizeof(name));
|
||||
strncpy(name, g_eeGeneral.themeName, sizeof(g_eeGeneral.themeName));
|
||||
const Theme * new_theme = getTheme(name);
|
||||
loadTheme(new_theme ? new_theme : theme);
|
||||
}
|
|
@ -61,6 +61,11 @@ extern const Theme * theme;
|
|||
|
||||
#define MAX_REGISTERED_THEMES 10
|
||||
extern unsigned int countRegisteredThemes;
|
||||
void registerTheme(const Theme * theme);
|
||||
extern const Theme * registeredThemes[MAX_REGISTERED_THEMES]; // TODO dynamic
|
||||
|
||||
const Theme * getTheme(const char * name);
|
||||
void loadTheme(const Theme * theme);
|
||||
void loadTheme();
|
||||
|
||||
#endif // _THEME_H_
|
||||
|
|
|
@ -50,7 +50,7 @@ void drawTopbarDatetime()
|
|||
#define STICK_PANEL_WIDTH 68
|
||||
void drawStick(coord_t x, coord_t y, int16_t xval, int16_t yval)
|
||||
{
|
||||
lcdDrawBitmap(x, y, LBM_STICK_BACKGROUND);
|
||||
lcdDrawAlphaBitmap(x, y, LBM_STICK_BACKGROUND);
|
||||
lcdDrawAlphaBitmap(x + 2 + STICK_PANEL_WIDTH/2 + STICK_PANEL_WIDTH/2 * xval/RESX, y + 2 + STICK_PANEL_WIDTH/2 - STICK_PANEL_WIDTH/2 * yval/RESX, LBM_STICK_POINTER);
|
||||
}
|
||||
|
||||
|
@ -426,7 +426,7 @@ int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int
|
|||
void drawSleepBitmap()
|
||||
{
|
||||
lcdClear();
|
||||
lcdDrawBitmap((LCD_W-SLEEP_BITMAP_WIDTH)/2, (LCD_H-SLEEP_BITMAP_HEIGHT)/2, LBM_SLEEP);
|
||||
lcdDrawAlphaBitmap((LCD_W-SLEEP_BITMAP_WIDTH)/2, (LCD_H-SLEEP_BITMAP_HEIGHT)/2, LBM_SLEEP);
|
||||
lcdRefresh();
|
||||
}
|
||||
|
||||
|
|
|
@ -498,9 +498,9 @@ void lcdDrawLine(coord_t x1, coord_t y1, coord_t x2, coord_t y2, uint8_t pat, Lc
|
|||
}
|
||||
}
|
||||
|
||||
void lcdDrawSolidVerticalLine(coord_t x, scoord_t y, scoord_t h)
|
||||
void lcdDrawSolidVerticalLine(coord_t x, scoord_t y, scoord_t h, LcdFlags att)
|
||||
{
|
||||
lcdDrawVerticalLine(x, y, h, SOLID);
|
||||
lcdDrawVerticalLine(x, y, h, SOLID, att);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -179,7 +179,7 @@ void lcdDrawPoint(coord_t x, coord_t y, LcdFlags att=0);
|
|||
void lcdMaskPoint(uint8_t *p, uint8_t mask, LcdFlags att=0);
|
||||
void lcdDrawSolidHorizontalLine(coord_t x, coord_t y, coord_t w, LcdFlags att=0);
|
||||
void lcdDrawHorizontalLine(coord_t x, coord_t y, coord_t w, uint8_t pat, LcdFlags att=0);
|
||||
void lcdDrawSolidVerticalLine(coord_t x, scoord_t y, scoord_t h);
|
||||
void lcdDrawSolidVerticalLine(coord_t x, scoord_t y, scoord_t h, LcdFlags att=0);
|
||||
void lcdDrawVerticalLine(coord_t x, scoord_t y, scoord_t h, uint8_t pat, LcdFlags att=0);
|
||||
void lcdDrawLine(coord_t x1, coord_t y1, coord_t x2, coord_t y2, uint8_t pat=SOLID, LcdFlags att=0);
|
||||
void lcdDrawFilledRect(coord_t x, scoord_t y, coord_t w, coord_t h, uint8_t pat=SOLID, LcdFlags att=0);
|
||||
|
|
|
@ -185,7 +185,12 @@ void luaRegisterAll()
|
|||
|
||||
void luaInit()
|
||||
{
|
||||
TRACE("luaInit");
|
||||
|
||||
#if !defined(COLORLCD)
|
||||
luaClose();
|
||||
#endif
|
||||
|
||||
if (luaState != INTERPRETER_PANIC) {
|
||||
#if defined(USE_BIN_ALLOCATOR)
|
||||
L = lua_newstate(bin_l_alloc, NULL); //we use our own allocator!
|
||||
|
@ -212,6 +217,10 @@ void luaInit()
|
|||
luaDisable();
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(COLORLCD)
|
||||
luaLoadThemes();
|
||||
#endif
|
||||
}
|
||||
|
||||
void luaFree(ScriptInternalData & sid)
|
||||
|
@ -271,7 +280,7 @@ static void luaCompileAndSave(const char *bytecodeName)
|
|||
}
|
||||
#endif
|
||||
|
||||
int luaLoad(const char *filename, ScriptInternalData & sid, ScriptInputsOutputs * sio=NULL)
|
||||
int luaLoad(const char * filename, ScriptInternalData & sid, ScriptInputsOutputs * sio=NULL)
|
||||
{
|
||||
int init = 0;
|
||||
|
||||
|
@ -301,7 +310,7 @@ int luaLoad(const char *filename, ScriptInternalData & sid, ScriptInputsOutputs
|
|||
luaL_checktype(L, -1, LUA_TTABLE);
|
||||
|
||||
for (lua_pushnil(L); lua_next(L, -2); lua_pop(L, 1)) {
|
||||
const char *key = lua_tostring(L, -2);
|
||||
const char * key = lua_tostring(L, -2);
|
||||
if (!strcmp(key, "init")) {
|
||||
init = luaL_ref(L, LUA_REGISTRYINDEX);
|
||||
lua_pushnil(L);
|
||||
|
@ -529,9 +538,12 @@ void luaError(uint8_t error, bool acknowledge)
|
|||
}
|
||||
}
|
||||
|
||||
void luaExec(const char *filename)
|
||||
void luaExec(const char * filename)
|
||||
{
|
||||
#if !defined(COLORLCD)
|
||||
luaInit();
|
||||
#endif
|
||||
|
||||
if (luaState != INTERPRETER_PANIC) {
|
||||
standaloneScript.state = SCRIPT_NOFILE;
|
||||
int result = luaLoad(filename, standaloneScript);
|
||||
|
@ -761,10 +773,12 @@ bool luaTask(uint8_t evt, uint8_t scriptType, bool allowLcdUsage)
|
|||
// run permanent scripts
|
||||
if (luaState & INTERPRETER_RELOAD_PERMANENT_SCRIPTS) {
|
||||
luaState = 0;
|
||||
#if !defined(COLORLCD)
|
||||
luaInit();
|
||||
if (luaState == INTERPRETER_PANIC) return false;
|
||||
luaLoadPermanentScripts();
|
||||
if (luaState == INTERPRETER_PANIC) return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
for (int i=0; i<luaScriptsCount; i++) {
|
||||
|
@ -787,3 +801,152 @@ int luaGetMemUsed()
|
|||
{
|
||||
return (lua_gc(L, LUA_GCCOUNT, 0) << 10) + lua_gc(L, LUA_GCCOUNTB, 0);
|
||||
}
|
||||
|
||||
#if defined(COLORLCD)
|
||||
#define THEME_FILENAME_MAXLEN (42) // max length (example: /SCRIPTS/THEMES/mytheme.lua)
|
||||
|
||||
class LuaTheme: public Theme
|
||||
{
|
||||
friend int luaLoadTheme(const char * filename);
|
||||
|
||||
public:
|
||||
LuaTheme(const char * name, const uint8_t * bitmap):
|
||||
Theme(name, bitmap),
|
||||
loadFunction(0),
|
||||
drawBackgroundFunction(0),
|
||||
drawTopbarBackgroundFunction(0)
|
||||
{
|
||||
}
|
||||
|
||||
void exec(int function) const
|
||||
{
|
||||
if (function) {
|
||||
SET_LUA_INSTRUCTIONS_COUNT(PERMANENT_SCRIPTS_MAX_INSTRUCTIONS);
|
||||
lua_rawgeti(L, LUA_REGISTRYINDEX, function);
|
||||
if (lua_pcall(L, 0, 0, 0) != 0) {
|
||||
TRACE("Error in theme %s: %s", name, lua_tostring(L, -1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
virtual void load() const
|
||||
{
|
||||
luaLcdAllowed = true;
|
||||
exec(loadFunction);
|
||||
}
|
||||
|
||||
virtual void drawBackground() const
|
||||
{
|
||||
exec(drawBackgroundFunction);
|
||||
}
|
||||
|
||||
virtual void drawTopbarBackground(const uint8_t * icon) const
|
||||
{
|
||||
exec(drawTopbarBackgroundFunction);
|
||||
}
|
||||
|
||||
protected:
|
||||
int loadFunction;
|
||||
int drawBackgroundFunction;
|
||||
int drawTopbarBackgroundFunction;
|
||||
};
|
||||
|
||||
int luaLoadTheme(const char * filename)
|
||||
{
|
||||
TRACE("luaLoadTheme from file %s", filename);
|
||||
|
||||
int init = 0;
|
||||
|
||||
if (luaState == INTERPRETER_PANIC) {
|
||||
return SCRIPT_PANIC;
|
||||
}
|
||||
|
||||
#if defined(LUA_COMPILER) && defined(SIMU)
|
||||
luaCompileAndSave(filename);
|
||||
#endif
|
||||
|
||||
SET_LUA_INSTRUCTIONS_COUNT(MANUAL_SCRIPTS_MAX_INSTRUCTIONS);
|
||||
|
||||
PROTECT_LUA() {
|
||||
if (luaL_loadfile(L, filename) == 0 &&
|
||||
lua_pcall(L, 0, 1, 0) == 0 &&
|
||||
lua_istable(L, -1)) {
|
||||
|
||||
const char * name=NULL, * bitmap=NULL;
|
||||
int loadFunction=0, drawBackgroundFunction=0, drawTopbarBackgroundFunction=0;
|
||||
|
||||
luaL_checktype(L, -1, LUA_TTABLE);
|
||||
|
||||
for (lua_pushnil(L); lua_next(L, -2); lua_pop(L, 1)) {
|
||||
const char * key = lua_tostring(L, -2);
|
||||
if (!strcmp(key, "name")) {
|
||||
name = luaL_checkstring(L, -1);
|
||||
}
|
||||
else if (!strcmp(key, "bitmap")) {
|
||||
bitmap = luaL_checkstring(L, -1);
|
||||
}
|
||||
else if (!strcmp(key, "load")) {
|
||||
loadFunction = luaL_ref(L, LUA_REGISTRYINDEX);
|
||||
lua_pushnil(L);
|
||||
}
|
||||
else if (!strcmp(key, "drawBackground")) {
|
||||
drawBackgroundFunction = luaL_ref(L, LUA_REGISTRYINDEX);
|
||||
lua_pushnil(L);
|
||||
}
|
||||
else if (!strcmp(key, "drawTopbarBackground")) {
|
||||
drawTopbarBackgroundFunction = luaL_ref(L, LUA_REGISTRYINDEX);
|
||||
lua_pushnil(L);
|
||||
}
|
||||
}
|
||||
|
||||
if (name && bitmap) {
|
||||
char path[THEME_FILENAME_MAXLEN+1] = THEMES_PATH;
|
||||
path[sizeof(THEMES_PATH)-1] = '/';
|
||||
strcpy(path+sizeof(THEMES_PATH), bitmap);
|
||||
uint8_t * bitmapData = (uint8_t *)malloc(BITMAP_BUFFER_SIZE(51, 31));
|
||||
bmpLoad(bitmapData, path, 51, 31);
|
||||
LuaTheme * theme = new LuaTheme(name, bitmapData);
|
||||
theme->loadFunction = loadFunction;
|
||||
theme->drawBackgroundFunction = drawBackgroundFunction;
|
||||
theme->drawTopbarBackgroundFunction = drawTopbarBackgroundFunction;
|
||||
}
|
||||
}
|
||||
else {
|
||||
TRACE("Error in script %s: %s", filename, lua_tostring(L, -1));
|
||||
}
|
||||
}
|
||||
else {
|
||||
luaDisable();
|
||||
return SCRIPT_PANIC;
|
||||
}
|
||||
UNPROTECT_LUA();
|
||||
}
|
||||
|
||||
void luaLoadThemes()
|
||||
{
|
||||
char path[THEME_FILENAME_MAXLEN+1] = THEMES_PATH;
|
||||
FILINFO fno;
|
||||
DIR dir;
|
||||
char * fn; /* This function is assuming non-Unicode cfg. */
|
||||
TCHAR lfn[_MAX_LFN + 1];
|
||||
fno.lfname = lfn;
|
||||
fno.lfsize = sizeof(lfn);
|
||||
|
||||
FRESULT res = f_opendir(&dir, path); /* Open the directory */
|
||||
if (res == FR_OK) {
|
||||
for (;;) {
|
||||
res = f_readdir(&dir, &fno); /* Read a directory item */
|
||||
if (res != FR_OK || fno.fname[0] == 0) break; /* Break on error or end of dir */
|
||||
fn = * fno.lfname ? fno.lfname : fno.fname;
|
||||
uint8_t len = strlen(fn);
|
||||
bool found = false;
|
||||
|
||||
// Eliminates directories / non wav files
|
||||
if (len < 5 || strcasecmp(fn+len-4, SCRIPTS_EXT) || (fno.fattrib & AM_DIR)) continue;
|
||||
path[sizeof(THEMES_PATH)-1] = '/';
|
||||
strcpy(path+sizeof(THEMES_PATH), fn);
|
||||
luaLoadTheme(path);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -152,8 +152,11 @@ struct LuaField {
|
|||
char desc[50];
|
||||
};
|
||||
bool luaFindFieldByName(const char * name, LuaField & field, unsigned int flags=0);
|
||||
void luaLoadThemes();
|
||||
#else // defined(LUA)
|
||||
#define luaInit()
|
||||
#define LUA_LOAD_MODEL_SCRIPTS()
|
||||
#define luaLoadThemes()
|
||||
#endif // defined(LUA)
|
||||
|
||||
#endif // _LUA_API_H_
|
||||
|
|
|
@ -440,7 +440,8 @@ enum UartModes {
|
|||
char anaNames[NUM_STICKS+NUM_POTS][LEN_ANA_NAME]; \
|
||||
char currModelFilename[LEN_MODEL_FILENAME+1]; \
|
||||
uint8_t bluetoothEnable; \
|
||||
char bluetoothName[LEN_BLUETOOTH_NAME];
|
||||
char bluetoothName[LEN_BLUETOOTH_NAME]; \
|
||||
char themeName[8];
|
||||
#elif defined(PCBFLAMENCO)
|
||||
#define LEN_SWITCH_NAME 3
|
||||
#define LEN_ANA_NAME 3
|
||||
|
|
|
@ -1880,24 +1880,6 @@ void doMixerCalculations()
|
|||
s_mixer_first_run_done = true;
|
||||
}
|
||||
|
||||
#if defined(COLORLCD)
|
||||
void loadCustomScreens()
|
||||
{
|
||||
for (unsigned int i=0; i<MAX_CUSTOM_SCREENS; i++) {
|
||||
char name[sizeof(g_model.screenData[i].layoutName)+1];
|
||||
memset(name, 0, sizeof(name));
|
||||
strncpy(name, g_model.screenData[i].layoutName, sizeof(g_model.screenData[i].layoutName));
|
||||
customScreens[i] = loadLayout(name, &g_model.screenData[i].layoutData);
|
||||
}
|
||||
|
||||
if (customScreens[0] == NULL) {
|
||||
customScreens[0] = registeredLayouts[0]->create(&g_model.screenData[0].layoutData);
|
||||
}
|
||||
}
|
||||
#else
|
||||
#define loadCustomScreens()
|
||||
#endif
|
||||
|
||||
#if defined(NAVIGATION_STICKS)
|
||||
uint8_t StickScrollAllowed;
|
||||
uint8_t StickScrollTimer;
|
||||
|
@ -1938,13 +1920,16 @@ void opentxStart()
|
|||
}
|
||||
#endif
|
||||
|
||||
#if defined(COLORLCD)
|
||||
luaInit();
|
||||
loadTheme();
|
||||
#endif
|
||||
|
||||
#if defined(GUI)
|
||||
checkAlarm();
|
||||
checkAll();
|
||||
#endif
|
||||
|
||||
loadCustomScreens();
|
||||
|
||||
#if defined(GUI)
|
||||
if (g_eeGeneral.chkSum != evalChkSum()) {
|
||||
chainMenu(menuFirstCalib);
|
||||
|
@ -2601,10 +2586,6 @@ int main(void)
|
|||
lcdInit();
|
||||
#endif
|
||||
|
||||
#if defined(COLORLCD)
|
||||
theme->load();
|
||||
#endif
|
||||
|
||||
stackPaint();
|
||||
|
||||
#if defined(GUI)
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#define EEPROMS_PATH ROOT_PATH "EEPROMS"
|
||||
#define SCRIPTS_PATH ROOT_PATH "SCRIPTS"
|
||||
#define WIZARD_PATH SCRIPTS_PATH "/WIZARD"
|
||||
#define THEMES_PATH SCRIPTS_PATH "/THEMES"
|
||||
#define WIZARD_NAME "wizard.lua"
|
||||
#define TEMPLATES_PATH SCRIPTS_PATH "/TEMPLATES"
|
||||
#define SCRIPTS_MIXES_PATH SCRIPTS_PATH "/MIXES"
|
||||
|
|
|
@ -87,9 +87,12 @@ void postModelLoad(bool newModel)
|
|||
referenceModelAudioFiles();
|
||||
#endif
|
||||
|
||||
#if defined(COLORLCD)
|
||||
loadCustomScreens();
|
||||
#endif
|
||||
|
||||
LOAD_MODEL_BITMAP();
|
||||
LUA_LOAD_MODEL_SCRIPTS();
|
||||
SEND_FAILSAFE_1S();
|
||||
PLAY_MODEL_NAME();
|
||||
}
|
||||
|
||||
|
|
|
@ -326,10 +326,6 @@ void * main_thread(void *)
|
|||
try {
|
||||
#endif
|
||||
|
||||
#if defined(PCBHORUS)
|
||||
theme->load();
|
||||
#endif
|
||||
|
||||
#if defined(CPUARM)
|
||||
stackPaint();
|
||||
#endif
|
||||
|
|
|
@ -44,7 +44,6 @@
|
|||
|
||||
extern const char * zchar2string(const char * zstring, int size);
|
||||
#define EXPECT_ZSTREQ(c_string, z_string) EXPECT_STREQ(c_string, zchar2string(z_string, sizeof(z_string)))
|
||||
extern void luaInit();
|
||||
|
||||
::testing::AssertionResult __luaExecStr(const char * str)
|
||||
{
|
||||
|
|
|
@ -578,6 +578,7 @@ const pm_char STR_MODEL_SELECT[] PROGMEM = TR_MODEL_SELECT;
|
|||
const pm_char STR_SELECT_WIDGET[] PROGMEM = TR_SELECT_WIDGET;
|
||||
const pm_char STR_REMOVE_WIDGET[] PROGMEM = TR_REMOVE_WIDGET;
|
||||
const pm_char STR_WIDGET_SETTINGS[] PROGMEM = TR_WIDGET_SETTINGS;
|
||||
const pm_char STR_REMOVE_SCREEN[] PROGMEM = TR_REMOVE_SCREEN;
|
||||
#endif
|
||||
|
||||
#if defined(PCBTARANIS) || defined(PCBFLAMENCO) || defined(PCBHORUS)
|
||||
|
|
|
@ -829,6 +829,7 @@ extern const pm_char STR_BLCOLOR[];
|
|||
extern const pm_char STR_SELECT_WIDGET[];
|
||||
extern const pm_char STR_REMOVE_WIDGET[];
|
||||
extern const pm_char STR_WIDGET_SETTINGS[];
|
||||
extern const pm_char STR_REMOVE_SCREEN[];
|
||||
#endif
|
||||
|
||||
#if defined(PCBTARANIS) || defined(PCBFLAMENCO) || defined(PCBHORUS)
|
||||
|
|
|
@ -1102,6 +1102,7 @@
|
|||
#define TR_SELECT_WIDGET "Select widget"
|
||||
#define TR_REMOVE_WIDGET "Remove widget"
|
||||
#define TR_WIDGET_SETTINGS "Widget settings"
|
||||
#define TR_REMOVE_SCREEN "Remove screen"
|
||||
|
||||
#define TR_MENU_INPUTS "\314Vstupy"
|
||||
#define TR_MENU_LUA "\322Lua skripty"
|
||||
|
|
|
@ -1105,6 +1105,7 @@
|
|||
#define TR_SELECT_WIDGET "Select widget"
|
||||
#define TR_REMOVE_WIDGET "Remove widget"
|
||||
#define TR_WIDGET_SETTINGS "Widget settings"
|
||||
#define TR_REMOVE_SCREEN "Remove screen"
|
||||
// ----------------------------- Symbole für Auswahlliste----------
|
||||
#define TR_MENU_INPUTS "\314Inputs"
|
||||
#define TR_MENU_LUA "\322Lua Scripte"
|
||||
|
|
|
@ -1131,6 +1131,7 @@
|
|||
#define TR_SELECT_WIDGET "Select widget"
|
||||
#define TR_REMOVE_WIDGET "Remove widget"
|
||||
#define TR_WIDGET_SETTINGS "Widget settings"
|
||||
#define TR_REMOVE_SCREEN "Remove screen"
|
||||
|
||||
#define TR_MENU_INPUTS "\314Inputs"
|
||||
#define TR_MENU_LUA "\322Lua scripts"
|
||||
|
|
|
@ -1057,6 +1057,7 @@
|
|||
#define TR_SELECT_WIDGET "Select widget"
|
||||
#define TR_REMOVE_WIDGET "Remove widget"
|
||||
#define TR_WIDGET_SETTINGS "Widget settings"
|
||||
#define TR_REMOVE_SCREEN "Remove screen"
|
||||
|
||||
#define TR_MENU_INPUTS "\314Inputs"
|
||||
#define TR_MENU_LUA "\322Lua scripts"
|
||||
|
|
|
@ -1057,6 +1057,7 @@
|
|||
#define TR_SELECT_WIDGET "Select widget"
|
||||
#define TR_REMOVE_WIDGET "Remove widget"
|
||||
#define TR_WIDGET_SETTINGS "Widget settings"
|
||||
#define TR_REMOVE_SCREEN "Remove screen"
|
||||
|
||||
#define TR_MENU_INPUTS "\314Inputs"
|
||||
#define TR_MENU_LUA "\322Lua scripts"
|
||||
|
|
|
@ -1092,6 +1092,7 @@
|
|||
#define TR_SELECT_WIDGET "Select widget"
|
||||
#define TR_REMOVE_WIDGET "Remove widget"
|
||||
#define TR_WIDGET_SETTINGS "Widget settings"
|
||||
#define TR_REMOVE_SCREEN "Remove screen"
|
||||
|
||||
#define TR_MENU_INPUTS "\314Entrées"
|
||||
#define TR_MENU_LUA "\322Scripts Lua"
|
||||
|
|
|
@ -1104,6 +1104,7 @@
|
|||
#define TR_SELECT_WIDGET "Select widget"
|
||||
#define TR_REMOVE_WIDGET "Remove widget"
|
||||
#define TR_WIDGET_SETTINGS "Widget settings"
|
||||
#define TR_REMOVE_SCREEN "Remove screen"
|
||||
|
||||
#define TR_MENU_INPUTS "\314Ingressi"
|
||||
#define TR_MENU_LUA "\322Lua scripts"
|
||||
|
|
|
@ -1123,6 +1123,7 @@
|
|||
#define TR_SELECT_WIDGET "Select widget"
|
||||
#define TR_REMOVE_WIDGET "Remove widget"
|
||||
#define TR_WIDGET_SETTINGS "Widget settings"
|
||||
#define TR_REMOVE_SCREEN "Remove screen"
|
||||
|
||||
|
||||
#define TR_MENU_INPUTS "\314Inputs"
|
||||
|
|
|
@ -1105,6 +1105,7 @@
|
|||
#define TR_SELECT_WIDGET "Select widget"
|
||||
#define TR_REMOVE_WIDGET "Remove widget"
|
||||
#define TR_WIDGET_SETTINGS "Widget settings"
|
||||
#define TR_REMOVE_SCREEN "Remove screen"
|
||||
|
||||
#define TR_MENU_INPUTS "\314Wejści"
|
||||
#define TR_MENU_LUA "\322SkryptyLUA"
|
||||
|
|
|
@ -1051,6 +1051,7 @@
|
|||
#define TR_SELECT_WIDGET "Select widget"
|
||||
#define TR_REMOVE_WIDGET "Remove widget"
|
||||
#define TR_WIDGET_SETTINGS "Widget settings"
|
||||
#define TR_REMOVE_SCREEN "Remove screen"
|
||||
|
||||
#define TR_MENU_INPUTS "\314Inputs"
|
||||
#define TR_MENU_LUA "\322Lua scripts"
|
||||
|
|
|
@ -1128,6 +1128,7 @@
|
|||
#define TR_SELECT_WIDGET "Select widget"
|
||||
#define TR_REMOVE_WIDGET "Remove widget"
|
||||
#define TR_WIDGET_SETTINGS "Widget settings"
|
||||
#define TR_REMOVE_SCREEN "Remove screen"
|
||||
|
||||
#define TR_MENU_INPUTS "\314Inputs"
|
||||
#define TR_MENU_LUA "\322Lua scripts"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue