[color] Batch conversions
This commit is contained in:
@@ -44,6 +44,7 @@ class LayoutFactory
|
||||
virtual const ZoneOption * getOptions() const = 0;
|
||||
virtual WidgetsContainer * create(LayoutPersistentData * persistentData) const = 0;
|
||||
virtual WidgetsContainer * load(LayoutPersistentData * persistentData) const = 0;
|
||||
virtual void initPersistentData(LayoutPersistentData * persistentData) const = 0;
|
||||
|
||||
protected:
|
||||
const char * id;
|
||||
|
||||
@@ -150,7 +150,7 @@ class BaseLayoutFactory: public LayoutFactory
|
||||
return layout;
|
||||
}
|
||||
|
||||
void initPersistentData(Layout::PersistentData * persistentData) const
|
||||
void initPersistentData(Layout::PersistentData * persistentData) const override
|
||||
{
|
||||
memset(persistentData, 0, sizeof(Layout::PersistentData));
|
||||
if (options) {
|
||||
|
||||
@@ -128,16 +128,14 @@ class ModelButton: public Button {
|
||||
}
|
||||
else {
|
||||
error = readModel(modelCell->modelFilename, (uint8_t *)&partialModel.header, sizeof(partialModel), &version);
|
||||
// LEN_BITMAP_NAME has now 4 bytes more
|
||||
if (version <= 218) {
|
||||
memmove(partialModel.timers, &(partialModel.header.bitmap[10]), sizeof(TimerData)*MAX_TIMERS);
|
||||
memclear(&(partialModel.header.bitmap[10]), 4);
|
||||
if (!error) {
|
||||
if (modelCell->modelName[0] == '\0'
|
||||
&& partialModel.header.name[0] != '\0') {
|
||||
modelCell->setModelName(partialModel.header.name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if (modelCell->modelName[0] == '\0' && !error)
|
||||
// setModelName(partialModel.header.name); // resets buffer!!!
|
||||
|
||||
buffer = new BitmapBuffer(BMP_RGB565, MODELCELL_WIDTH, MODELCELL_HEIGHT);
|
||||
if (buffer == nullptr) {
|
||||
return;
|
||||
|
||||
@@ -402,11 +402,12 @@ class Theme480: public OpenTxTheme
|
||||
dc->drawText(DATETIME_MIDDLE, DATETIME_LINE2, str, FONT(XS)|FOCUS_COLOR|CENTERED);
|
||||
}
|
||||
|
||||
void drawProgressBar(BitmapBuffer * dc, coord_t x, coord_t y, coord_t w, coord_t h, int value) const override
|
||||
void drawProgressBar(BitmapBuffer *dc, coord_t x, coord_t y, coord_t w,
|
||||
coord_t h, int value, int total) const override
|
||||
{
|
||||
dc->drawSolidRect(x, y, w, h, 1, DEFAULT_COLOR);
|
||||
if (value > 0) {
|
||||
int width = (w * value) / 100;
|
||||
int width = (w * value) / total;
|
||||
dc->drawSolidFilledRect(x + 2, y + 2, width - 4, h - 4, CHECKBOX_COLOR);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -420,11 +420,12 @@ class FlyskyTheme: public OpenTxTheme
|
||||
dc->drawText(DATETIME_MIDDLE, DATETIME_LINE2, str, FONT(XS)|FOCUS_COLOR|CENTERED);
|
||||
}
|
||||
|
||||
void drawProgressBar(BitmapBuffer * dc, coord_t x, coord_t y, coord_t w, coord_t h, int value) const override
|
||||
void drawProgressBar(BitmapBuffer *dc, coord_t x, coord_t y, coord_t w,
|
||||
coord_t h, int value, int total) const override
|
||||
{
|
||||
dc->drawSolidRect(x, y, w, h, 1, DEFAULT_COLOR);
|
||||
if (value > 0) {
|
||||
int width = (w * value) / 100;
|
||||
int width = (w * value) / total;
|
||||
dc->drawSolidFilledRect(x + 2, y + 2, width - 4, h - 4, CHECKBOX_COLOR);
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -54,8 +54,9 @@
|
||||
#define LEN_FILE_PATH_MAX (sizeof(SCRIPTS_TELEM_PATH)+1) // longest + "/"
|
||||
|
||||
#if defined(COLORLCD)
|
||||
#define RADIO_FILENAME "radio.bin"
|
||||
const char RADIO_MODELSLIST_PATH[] = RADIO_PATH PATH_SEPARATOR "models.txt";
|
||||
const char RADIO_SETTINGS_PATH[] = RADIO_PATH PATH_SEPARATOR "radio.bin";
|
||||
const char RADIO_SETTINGS_PATH[] = RADIO_PATH PATH_SEPARATOR RADIO_FILENAME;
|
||||
#if defined(SDCARD_YAML)
|
||||
const char RADIO_MODELSLIST_YAML_PATH[] = RADIO_PATH PATH_SEPARATOR "models.yml";
|
||||
const char RADIO_SETTINGS_YAML_PATH[] = RADIO_PATH PATH_SEPARATOR "radio.yml";
|
||||
|
||||
@@ -21,16 +21,107 @@
|
||||
#include "opentx.h"
|
||||
#include "conversions.h"
|
||||
|
||||
#if defined(SDCARD)
|
||||
#include "storage/modelslist.h"
|
||||
#include "storage/sdcard_common.h"
|
||||
|
||||
#if defined(COLORLCD)
|
||||
static void drawProgressScreen(const char* filename, int progress, int total)
|
||||
{
|
||||
OpenTxTheme* l_theme = static_cast<OpenTxTheme*>(theme);
|
||||
|
||||
lcd->reset();
|
||||
l_theme->drawBackground(lcd);
|
||||
lcd->drawText(LCD_W/2, LCD_H/2 - 30, STR_CONVERTING, FONT(XL) | CENTERED | ALARM_COLOR);
|
||||
lcd->drawText(LCD_W/2, LCD_H/2, filename, FONT(STD) | CENTERED | DEFAULT_COLOR);
|
||||
|
||||
l_theme->drawProgressBar(lcd,
|
||||
LCD_W / 4,
|
||||
LCD_H / 2 + 40,
|
||||
LCD_W / 2,
|
||||
20,
|
||||
progress, total);
|
||||
|
||||
WDG_RESET();
|
||||
lcdRefresh();
|
||||
}
|
||||
#endif
|
||||
|
||||
void convertRadioData(int version)
|
||||
{
|
||||
TRACE("convertRadioData(%d)", version);
|
||||
|
||||
#if defined(COLORLCD)
|
||||
// the theme has not been loaded before
|
||||
static_cast<OpenTxTheme*>(theme)->load();
|
||||
#endif
|
||||
|
||||
// Init backlight mode before entering alert screens
|
||||
requiredBacklightBright = BACKLIGHT_FORCED_ON;
|
||||
|
||||
#if defined(PCBHORUS)
|
||||
g_eeGeneral.blOffBright = 20;
|
||||
#endif
|
||||
|
||||
RAISE_ALERT(STR_STORAGE_WARNING, STR_SDCARD_CONVERSION_REQUIRE, NULL,
|
||||
AU_NONE);
|
||||
|
||||
unsigned converted = 0;
|
||||
auto to_convert = modelslist.getModelsCount() + 1;
|
||||
|
||||
#if defined(COLORLCD)
|
||||
drawProgressScreen(RADIO_FILENAME, converted, to_convert);
|
||||
#endif
|
||||
|
||||
TRACE("converting '%s' (%d/%d)", RADIO_FILENAME, converted, to_convert);
|
||||
|
||||
#if STORAGE_CONVERSIONS < 220
|
||||
if (version == 219) {
|
||||
convertRadioData_219_to_220(g_eeGeneral);
|
||||
}
|
||||
#endif
|
||||
converted++;
|
||||
|
||||
#if defined(SIMU)
|
||||
RTOS_WAIT_MS(200);
|
||||
#endif
|
||||
|
||||
const char* error = nullptr;
|
||||
for (auto category_ptr : modelslist.getCategories()) {
|
||||
for (auto model_ptr : *category_ptr) {
|
||||
|
||||
uint8_t model_version;
|
||||
const char* filename = model_ptr->modelFilename;
|
||||
|
||||
TRACE("converting '%s' (%d/%d)", filename, converted, to_convert);
|
||||
#if defined(COLORLCD)
|
||||
drawProgressScreen(filename, converted, to_convert);
|
||||
#endif
|
||||
|
||||
error = readModel(filename, (uint8_t *)&g_model, sizeof(g_model), &model_version);
|
||||
if (!error) {
|
||||
|
||||
convertModelData(model_version);
|
||||
|
||||
char path[256];
|
||||
getModelPath(path, filename);
|
||||
error = writeFile(path, (uint8_t *)&g_model, sizeof(g_model));
|
||||
//TODO: what should be done with this error?
|
||||
}
|
||||
|
||||
converted++;
|
||||
|
||||
#if defined(SIMU)
|
||||
RTOS_WAIT_MS(200);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
// reload models list
|
||||
modelslist.clear();
|
||||
modelslist.load();
|
||||
}
|
||||
#endif
|
||||
|
||||
void convertModelData(int version)
|
||||
{
|
||||
|
||||
@@ -94,6 +94,11 @@ static void convertToStr(char* str, size_t len)
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(COLORLCD)
|
||||
extern const LayoutFactory * defaultLayout;
|
||||
extern OpenTxTheme * defaultTheme;
|
||||
#endif
|
||||
|
||||
void convertModelData_219_to_220(ModelData &model)
|
||||
{
|
||||
ModelData* oldModelAllocated = (ModelData*)malloc(sizeof(ModelData));
|
||||
@@ -101,7 +106,6 @@ void convertModelData_219_to_220(ModelData &model)
|
||||
|
||||
memcpy(&oldModel, &model, sizeof(ModelData));
|
||||
ModelData& newModel = (ModelData&)model;
|
||||
|
||||
convertToStr(model.header.name, LEN_MODEL_NAME_219);
|
||||
|
||||
for (uint8_t i=0; i<MAX_TIMERS_219; i++) {
|
||||
@@ -191,21 +195,21 @@ void convertModelData_219_to_220(ModelData &model)
|
||||
// TelemetryScriptData::file ?
|
||||
// ModuleData::pxx2.receiverName
|
||||
|
||||
#if defined(PCBHORUS)
|
||||
#if defined(COLORLCD)
|
||||
// Clear CustomScreenData + TopBarPersistentData
|
||||
// as they cannot be converted (missing option types)
|
||||
memset(newModel.screenData, 0,
|
||||
sizeof(newModel.screenData) +
|
||||
sizeof(newModel.topbarData));
|
||||
loadDefaultLayout();
|
||||
|
||||
if (defaultLayout) {
|
||||
strcpy(newModel.screenData[0].LayoutId, defaultLayout->getId());
|
||||
defaultLayout->initPersistentData(&newModel.screenData[0].layoutData);
|
||||
}
|
||||
#endif
|
||||
free(oldModelAllocated);
|
||||
}
|
||||
|
||||
#if defined(PCBHORUS)
|
||||
extern OpenTxTheme * defaultTheme;
|
||||
#endif
|
||||
|
||||
void convertRadioData_219_to_220(RadioData & settings)
|
||||
{
|
||||
TRACE("Radio conversion from v219 to v220");
|
||||
@@ -217,7 +221,7 @@ void convertRadioData_219_to_220(RadioData & settings)
|
||||
RadioData& oldSettings = *oldSettingsAllocated;
|
||||
memcpy(&oldSettings, &settings, sizeof(RadioData));
|
||||
|
||||
#if defined(PCBHORUS)
|
||||
#if defined(COLORLCD)
|
||||
// Clear CustomScreenData + TopBarPersistentData
|
||||
// as they cannot be converted (missing option types)
|
||||
strcpy(g_eeGeneral.themeName, defaultTheme->getName());
|
||||
|
||||
@@ -28,17 +28,14 @@ using std::list;
|
||||
|
||||
ModelsList modelslist;
|
||||
|
||||
ModelCell::ModelCell(const char * name):
|
||||
valid_rfData(false)
|
||||
ModelCell::ModelCell(const char* name) : valid_rfData(false)
|
||||
{
|
||||
strncpy(modelFilename, name, sizeof(modelFilename));
|
||||
}
|
||||
|
||||
ModelCell::ModelCell(const char * name, uint8_t len)
|
||||
: valid_rfData(false)
|
||||
ModelCell::ModelCell(const char* name, uint8_t len) : valid_rfData(false)
|
||||
{
|
||||
if (len > sizeof(modelFilename)-1)
|
||||
len = sizeof(modelFilename)-1;
|
||||
if (len > sizeof(modelFilename) - 1) len = sizeof(modelFilename) - 1;
|
||||
|
||||
memcpy(modelFilename, name, len);
|
||||
modelFilename[len] = '\0';
|
||||
@@ -55,7 +52,7 @@ void ModelCell::setModelName(char * name)
|
||||
char * tmp;
|
||||
strncpy(modelName, modelFilename, LEN_MODEL_NAME);
|
||||
tmp = (char *) memchr(modelName, '.', LEN_MODEL_NAME);
|
||||
if (tmp)
|
||||
if (tmp != nullptr)
|
||||
*tmp = 0;
|
||||
}
|
||||
}
|
||||
@@ -72,11 +69,10 @@ void ModelCell::setModelName(char* name, uint8_t len)
|
||||
char * tmp;
|
||||
strncpy(modelName, modelFilename, LEN_MODEL_NAME);
|
||||
tmp = (char *) memchr(modelName, '.', LEN_MODEL_NAME);
|
||||
if (tmp != NULL)
|
||||
if (tmp != nullptr)
|
||||
*tmp = 0;
|
||||
}
|
||||
|
||||
//resetBuffer();
|
||||
}
|
||||
|
||||
void ModelCell::setModelId(uint8_t moduleIdx, uint8_t id)
|
||||
@@ -84,93 +80,6 @@ void ModelCell::setModelId(uint8_t moduleIdx, uint8_t id)
|
||||
modelId[moduleIdx] = id;
|
||||
}
|
||||
|
||||
// void ModelCell::resetBuffer()
|
||||
// {
|
||||
// if (buffer) {
|
||||
// delete buffer;
|
||||
// buffer = NULL;
|
||||
// }
|
||||
// }
|
||||
|
||||
// const BitmapBuffer * ModelCell::getBuffer()
|
||||
// {
|
||||
// if (!buffer) {
|
||||
// loadBitmap();
|
||||
// }
|
||||
// return buffer;
|
||||
// }
|
||||
|
||||
// void ModelCell::loadBitmap()
|
||||
// {
|
||||
// uint8_t version;
|
||||
|
||||
// PACK(struct {
|
||||
// ModelHeader header;
|
||||
// TimerData timers[MAX_TIMERS];
|
||||
// }) partialmodel;
|
||||
|
||||
// const char * error = NULL;
|
||||
// BitmapBuffer * tmp_buffer;
|
||||
|
||||
// if (strncmp(modelFilename, g_eeGeneral.currModelFilename, LEN_MODEL_FILENAME) == 0) {
|
||||
// memcpy(&partialmodel.header, &g_model.header, sizeof(partialmodel));
|
||||
// }
|
||||
// else {
|
||||
// #if !defined (SDCARD_YAML)
|
||||
// error = readModel(modelFilename, (uint8_t *)&partialmodel.header, sizeof(partialmodel), &version);
|
||||
// // LEN_BITMAP_NAME has now 4 bytes more
|
||||
// if (version <= 218) {
|
||||
// memmove(partialmodel.timers, &(partialmodel.header.bitmap[10]), sizeof(TimerData)*MAX_TIMERS);
|
||||
// memclear(&(partialmodel.header.bitmap[10]), 4);
|
||||
// }
|
||||
// #else
|
||||
// memset(&partialmodel.header,0,sizeof(partialmodel));
|
||||
// #endif
|
||||
// }
|
||||
|
||||
// if ((modelName[0] == 0) && ! error)
|
||||
// setModelName(partialmodel.header.name); // resets buffer!!!
|
||||
|
||||
// tmp_buffer = new BitmapBuffer(BMP_RGB565, MODELCELL_WIDTH, MODELCELL_HEIGHT);
|
||||
// if (tmp_buffer == NULL) {
|
||||
// return;
|
||||
// }
|
||||
// tmp_buffer->clear(TEXT_BGCOLOR);
|
||||
|
||||
// if (error) {
|
||||
// tmp_buffer->drawText(5, 2, "(Invalid Model)", TEXT_COLOR);
|
||||
// tmp_buffer->drawBitmapPattern(5, 23, LBM_LIBRARY_SLOT, TEXT_COLOR);
|
||||
// }
|
||||
// else {
|
||||
// char timer[LEN_TIMER_STRING];
|
||||
// tmp_buffer->drawSizedText(5, 2, modelName, /*LEN_MODEL_NAME*/strlen(modelName),
|
||||
// SMLSIZE|TEXT_COLOR);
|
||||
|
||||
// getTimerString(timer, 0);
|
||||
// for (uint8_t i = 0; i < MAX_TIMERS; i++) {
|
||||
// if (partialmodel.timers[i].mode != 0 && partialmodel.timers[i].persistent) {
|
||||
// getTimerString(timer, partialmodel.timers[i].value, 1);
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// tmp_buffer->drawText(101, 40, timer, TEXT_COLOR);
|
||||
// for (int i=0; i<4; i++) {
|
||||
// tmp_buffer->drawBitmapPattern(104+i*11, 25, LBM_SCORE0, TITLE_BGCOLOR);
|
||||
// }
|
||||
// GET_FILENAME(filename, BITMAPS_PATH, partialmodel.header.bitmap, "");
|
||||
// const BitmapBuffer * bitmap = BitmapBuffer::load(filename);
|
||||
// if (bitmap) {
|
||||
// tmp_buffer->drawScaledBitmap(bitmap, 5, 24, 56, 32);
|
||||
// delete bitmap;
|
||||
// }
|
||||
// else {
|
||||
// tmp_buffer->drawBitmapPattern(5, 23, LBM_LIBRARY_SLOT, TEXT_COLOR);
|
||||
// }
|
||||
// }
|
||||
// tmp_buffer->drawSolidHorizontalLine(5, 19, 143, LINE_COLOR);
|
||||
|
||||
// buffer = tmp_buffer;
|
||||
// }
|
||||
|
||||
void ModelCell::save(FIL* file)
|
||||
{
|
||||
|
||||
@@ -65,8 +65,6 @@ class ModelCell
|
||||
void setRfModuleData(uint8_t moduleIdx, ModuleData* modData);
|
||||
|
||||
bool fetchRfData();
|
||||
// void loadBitmap();
|
||||
// void resetBuffer();
|
||||
};
|
||||
|
||||
class ModelsCategory: public std::list<ModelCell *>
|
||||
|
||||
@@ -145,6 +145,13 @@ void storageReadAll()
|
||||
{
|
||||
TRACE("storageReadAll");
|
||||
|
||||
// Wipe models list in case
|
||||
// it's being reloaded after USB connection
|
||||
modelslist.clear();
|
||||
|
||||
// and reload the list
|
||||
modelslist.load();
|
||||
|
||||
if (loadRadioSettings() != nullptr) {
|
||||
storageEraseAll(true);
|
||||
}
|
||||
@@ -172,12 +179,5 @@ void storageReadAll()
|
||||
if (loadModel(g_eeGeneral.currModelFilename, false) != nullptr) {
|
||||
TRACE("No current model or SD card error");
|
||||
}
|
||||
|
||||
// Wipe models list in case
|
||||
// it's being reloaded after USB connection
|
||||
modelslist.clear();
|
||||
|
||||
// and reload the list
|
||||
modelslist.load();
|
||||
}
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
|
||||
// opens radio.bin or model file
|
||||
const char * openFile(const char * fullpath, FIL * file, uint16_t * size, uint8_t * version);
|
||||
const char * writeFile(const char * fullpath, const uint8_t * data, uint16_t size);
|
||||
|
||||
void getModelPath(char * path, const char * filename);
|
||||
|
||||
|
||||
Vendored
+1
-1
Submodule radio/src/thirdparty/libopenui updated: 4b78e03cd0...ace19326c5
@@ -821,6 +821,8 @@ const char STR_EEPROMOVERFLOW[] = TR_EEPROMOVERFLOW;
|
||||
const char STR_BAD_RADIO_DATA[] = TR_BAD_RADIO_DATA;
|
||||
const char STR_STORAGE_WARNING[] = TR_STORAGE_WARNING;
|
||||
const char STR_STORAGE_FORMAT[] = TR_STORAGE_FORMAT;
|
||||
const char STR_SDCARD_CONVERSION_REQUIRE[] = TR_SDCARD_CONVERSION_REQUIRE;
|
||||
const char STR_CONVERTING[] = TR_CONVERTING;
|
||||
#endif
|
||||
|
||||
#if defined(LUA)
|
||||
|
||||
@@ -600,6 +600,8 @@ extern const char STR_CAT_NOT_EMPTY[];
|
||||
extern const char STR_WARNING[];
|
||||
extern const char STR_STORAGE_WARNING[];
|
||||
extern const char STR_EEPROM_CONVERTING[];
|
||||
extern const char STR_SDCARD_CONVERSION_REQUIRE[];
|
||||
extern const char STR_CONVERTING[];
|
||||
extern const char STR_THROTTLE_UPPERCASE[];
|
||||
extern const char STR_ALARMSWARN[];
|
||||
extern const char STR_SWITCHWARN[];
|
||||
|
||||
@@ -690,6 +690,8 @@
|
||||
#define TR_EEPROMWARN "EEPROM"
|
||||
#define TR_STORAGE_WARNING "存储"
|
||||
#define TR_EEPROM_CONVERTING "转换数据"
|
||||
#define TR_SDCARD_CONVERSION_REQUIRE "SD card conversion required"
|
||||
#define TR_CONVERTING "Converting: "
|
||||
#define TR_THROTTLE_UPPERCASE "油门"
|
||||
#define TR_ALARMSWARN "警告"
|
||||
#define TR_SWITCHWARN TR("开关", "开关位置")
|
||||
|
||||
@@ -777,6 +777,8 @@
|
||||
#define TR_EEPROMWARN "EEPROM"
|
||||
#define TR_STORAGE_WARNING "ÚLOŽIŠTĚ"
|
||||
#define TR_EEPROM_CONVERTING "Aktualizuji EEPROM"
|
||||
#define TR_SDCARD_CONVERSION_REQUIRE "SD card conversion required"
|
||||
#define TR_CONVERTING "Converting: "
|
||||
#define TR_THROTTLE_UPPERCASE "PLYNU"
|
||||
#define TR_ALARMSWARN "ALARMU"
|
||||
#define TR_SWITCHWARN "POZICE"
|
||||
|
||||
@@ -782,6 +782,8 @@
|
||||
#define TR_EEPROMWARN "EEPROM"
|
||||
#define TR_STORAGE_WARNING "SPEICHER"
|
||||
#define TR_EEPROM_CONVERTING "EEPROM Konvertierung"
|
||||
#define TR_SDCARD_CONVERSION_REQUIRE "SD card conversion required"
|
||||
#define TR_CONVERTING "Converting: "
|
||||
#define TR_THROTTLE_UPPERCASE "GAS"
|
||||
#define TR_ALARMSWARN "ALARM"
|
||||
#define TR_SWITCHWARN "SCHALTER"
|
||||
|
||||
@@ -786,6 +786,8 @@
|
||||
#define TR_EEPROMWARN "EEPROM"
|
||||
#define TR_STORAGE_WARNING "STORAGE"
|
||||
#define TR_EEPROM_CONVERTING "Converting EEPROM"
|
||||
#define TR_SDCARD_CONVERSION_REQUIRE "SD card conversion required"
|
||||
#define TR_CONVERTING "Converting: "
|
||||
#define TR_THROTTLE_UPPERCASE "THROTTLE"
|
||||
#define TR_ALARMSWARN "ALARMS"
|
||||
#define TR_SWITCHWARN TR("SWITCH", "CONTROL")
|
||||
|
||||
@@ -784,6 +784,8 @@
|
||||
#define TR_EEPROMWARN "EEPROM"
|
||||
#define TR_STORAGE_WARNING "ALMAC."
|
||||
#define TR_EEPROM_CONVERTING "Convirtiendo EEPROM"
|
||||
#define TR_SDCARD_CONVERSION_REQUIRE "SD card conversion required"
|
||||
#define TR_CONVERTING "Converting: "
|
||||
#define TR_THROTTLE_UPPERCASE TR("ACELERAD.", "ACELERADOR")
|
||||
#define TR_ALARMSWARN "ALARMAS"
|
||||
#define TR_SWITCHWARN TR("INTERRUP.", "INTERRUPTOR")
|
||||
|
||||
@@ -798,6 +798,8 @@
|
||||
#define TR_EEPROMWARN "FINSKA"
|
||||
#define TR_STORAGE_WARNING "STORAGE"
|
||||
#define TR_EEPROM_CONVERTING "EEPROM Converting"
|
||||
#define TR_SDCARD_CONVERSION_REQUIRE "SD card conversion required"
|
||||
#define TR_CONVERTING "Converting: "
|
||||
#define TR_THROTTLE_UPPERCASE "THROTTLE"
|
||||
#define TR_ALARMSWARN "ALARMS"
|
||||
#define TR_SWITCHWARN TR("SWITCH","CONTROL")
|
||||
|
||||
@@ -803,6 +803,8 @@
|
||||
#define TR_EEPROMWARN "EEPROM"
|
||||
#define TR_STORAGE_WARNING "STOCKAGE"
|
||||
#define TR_EEPROM_CONVERTING "Conversion EEPROM"
|
||||
#define TR_SDCARD_CONVERSION_REQUIRE "SD card conversion required"
|
||||
#define TR_CONVERTING "Converting: "
|
||||
#define TR_THROTTLE_UPPERCASE "GAZ"
|
||||
#define TR_ALARMSWARN "SON"
|
||||
#define TR_SWITCHWARN TR("INTERS","CONTROLES")
|
||||
|
||||
@@ -804,6 +804,8 @@
|
||||
#define TR_EEPROMWARN "EEPROM"
|
||||
#define TR_STORAGE_WARNING "STORAGE"
|
||||
#define TR_EEPROM_CONVERTING "Conversione EEPROM"
|
||||
#define TR_SDCARD_CONVERSION_REQUIRE "SD card conversion required"
|
||||
#define TR_CONVERTING "Converting: "
|
||||
#define TR_THROTTLE_UPPERCASE "MOTORE"
|
||||
#define TR_ALARMSWARN "ALLARMI"
|
||||
#define TR_SWITCHWARN "CONTROLLI"
|
||||
|
||||
@@ -787,6 +787,8 @@
|
||||
#define TR_EEPROMWARN "EEPROM"
|
||||
#define TR_STORAGE_WARNING "STORAGE"
|
||||
#define TR_EEPROM_CONVERTING "EEPROM Converteren"
|
||||
#define TR_SDCARD_CONVERSION_REQUIRE "SD card conversion required"
|
||||
#define TR_CONVERTING "Converting: "
|
||||
#define TR_THROTTLE_UPPERCASE "GAS"
|
||||
#define TR_ALARMSWARN "ALARM"
|
||||
#define TR_SWITCHWARN "SCHAKELAAR"
|
||||
|
||||
@@ -801,6 +801,8 @@
|
||||
#define TR_EEPROMWARN "EEPROM"
|
||||
#define TR_STORAGE_WARNING "STORAGE"
|
||||
#define TR_EEPROM_CONVERTING "Konwersja EEPROM"
|
||||
#define TR_SDCARD_CONVERSION_REQUIRE "SD card conversion required"
|
||||
#define TR_CONVERTING "Converting: "
|
||||
#define TR_THROTTLE_UPPERCASE "GAZ"
|
||||
#define TR_ALARMSWARN "ALARM"
|
||||
#define TR_SWITCHWARN TR("Przełą","Kontrola")
|
||||
|
||||
@@ -802,6 +802,8 @@
|
||||
#define TR_EEPROMWARN "EEPROM"
|
||||
#define TR_STORAGE_WARNING "STORAGE"
|
||||
#define TR_EEPROM_CONVERTING "EEPROM Converting"
|
||||
#define TR_SDCARD_CONVERSION_REQUIRE "SD card conversion required"
|
||||
#define TR_CONVERTING "Converting: "
|
||||
#define TR_THROTTLE_UPPERCASE "ACELERAD"
|
||||
#define TR_ALARMSWARN "ALARMES"
|
||||
#define TR_SWITCHWARN "CHAVES"
|
||||
|
||||
@@ -803,6 +803,8 @@
|
||||
#define TR_EEPROMWARN "EEPROM"
|
||||
#define TR_STORAGE_WARNING "LAGRING"
|
||||
#define TR_EEPROM_CONVERTING "EEPROM Konvertering"
|
||||
#define TR_SDCARD_CONVERSION_REQUIRE "SD card conversion required"
|
||||
#define TR_CONVERTING "Converting: "
|
||||
#define TR_THROTTLE_UPPERCASE "GAS"
|
||||
#define TR_ALARMSWARN "ALARM"
|
||||
#define TR_SWITCHWARN "BRYTARE"
|
||||
|
||||
@@ -690,6 +690,8 @@
|
||||
#define TR_EEPROMWARN "EEPROM"
|
||||
#define TR_STORAGE_WARNING "存儲"
|
||||
#define TR_EEPROM_CONVERTING "轉換數據"
|
||||
#define TR_SDCARD_CONVERSION_REQUIRE "SD card conversion required"
|
||||
#define TR_CONVERTING "Converting: "
|
||||
#define TR_THROTTLE_UPPERCASE "油門"
|
||||
#define TR_ALARMSWARN "警告"
|
||||
#define TR_SWITCHWARN TR("開關", "開關位置")
|
||||
|
||||
Reference in New Issue
Block a user