Toggle "HW Setup"*

All toggles from "HW Setup" were changed.
This includes:
-"Nozzle d."
-all "Checks"
Also added an option to provide a string from sram (not from progmem) as the toggle argument. This can be useful when toggling numbers or even when toggling sheets in the future.
This commit is contained in:
leptun 2019-08-30 17:36:21 +03:00
parent b86a92a7d6
commit 6a8330a43b
5 changed files with 48 additions and 36 deletions

View File

@ -184,11 +184,11 @@ static void menu_draw_item_puts_P(char type_char, const char* str)
lcd_printf_P(PSTR("%c%-18.18S%c"), menu_selection_mark(), str, type_char); lcd_printf_P(PSTR("%c%-18.18S%c"), menu_selection_mark(), str, type_char);
} }
static void menu_draw_toggle_puts_P(const char* str, const char* toggle) static void menu_draw_toggle_puts_P(const char* str, const char* toggle, const bool fromProgmem)
{ {
menu_draw_item_puts_P((toggle == NULL)?LCD_STR_ARROW_RIGHT[0]:LCD_STR_REFRESH[0], str); menu_draw_item_puts_P((toggle == NULL)?LCD_STR_ARROW_RIGHT[0]:LCD_STR_REFRESH[0], str);
lcd_set_cursor(LCD_WIDTH - 3 - strlen_P((toggle == NULL)?_T(MSG_NA):toggle), menu_row); lcd_set_cursor(LCD_WIDTH - 3 - (fromProgmem?(strlen_P((toggle == NULL)?_T(MSG_NA):toggle)):(strlen(toggle))), menu_row);
lcd_printf_P(PSTR("[%S]"), (toggle == NULL)?_T(MSG_NA):toggle); lcd_printf_P(fromProgmem?PSTR("[%S]"):PSTR("[%s]"), (toggle == NULL)?_T(MSG_NA):toggle);
} }
//! @brief Format sheet name //! @brief Format sheet name
@ -374,11 +374,11 @@ uint8_t menu_item_function_P(const char* str, char number, void (*func)(uint8_t)
return 0; return 0;
} }
uint8_t menu_item_toggle_P(const char* str, const char* toggle, menu_func_t func) uint8_t menu_item_toggle_P(const char* str, const char* toggle, menu_func_t func, const bool fromProgmem)
{ {
if (menu_item == menu_line) if (menu_item == menu_line)
{ {
if (lcd_draw_update) menu_draw_toggle_puts_P(str, toggle); if (lcd_draw_update) menu_draw_toggle_puts_P(str, toggle, fromProgmem);
if (menu_clicked && (lcd_encoder == menu_item)) if (menu_clicked && (lcd_encoder == menu_item))
{ {
if (toggle == NULL) // print N/A warning message if (toggle == NULL) // print N/A warning message

View File

@ -118,8 +118,9 @@ extern uint8_t menu_item_function_P(const char* str, menu_func_t func);
#define MENU_ITEM_FUNCTION_NR_P(str, number, func, fn_par) do { if (menu_item_function_P(str, number, func, fn_par)) return; } while (0) #define MENU_ITEM_FUNCTION_NR_P(str, number, func, fn_par) do { if (menu_item_function_P(str, number, func, fn_par)) return; } while (0)
extern uint8_t menu_item_function_P(const char* str, char number, void (*func)(uint8_t), uint8_t fn_par); extern uint8_t menu_item_function_P(const char* str, char number, void (*func)(uint8_t), uint8_t fn_par);
#define MENU_ITEM_TOGGLE_P(str, toggle, func) do { if (menu_item_toggle_P(str, toggle, func)) return; } while (0) #define MENU_ITEM_TOGGLE_P(str, toggle, func) do { if (menu_item_toggle_P(str, toggle, func, true)) return; } while (0)
extern uint8_t menu_item_toggle_P(const char* str, const char* toggle, menu_func_t func); #define MENU_ITEM_TOGGLE(str, toggle, func) do { if (menu_item_toggle_P(str, toggle, func, false)) return; } while (0)
extern uint8_t menu_item_toggle_P(const char* str, const char* toggle, menu_func_t func, const bool fromProgmem);
#define MENU_ITEM_GCODE_P(str, str_gcode) do { if (menu_item_gcode_P(str, str_gcode)) return; } while (0) #define MENU_ITEM_GCODE_P(str, str_gcode) do { if (menu_item_gcode_P(str, str_gcode)) return; } while (0)
extern uint8_t menu_item_gcode_P(const char* str, const char* str_gcode); extern uint8_t menu_item_gcode_P(const char* str, const char* str_gcode);

View File

@ -107,6 +107,13 @@ const char MSG_ON[] PROGMEM_I1 = ISTR("On"); ////
const char MSG_NA[] PROGMEM_I1 = ISTR("N/A"); //// const char MSG_NA[] PROGMEM_I1 = ISTR("N/A"); ////
const char MSG_AUTO_DEPLETE[] PROGMEM_I1 = ISTR("SpoolJoin"); //// const char MSG_AUTO_DEPLETE[] PROGMEM_I1 = ISTR("SpoolJoin"); ////
const char MSG_CUTTER[] PROGMEM_I1 = ISTR("Cutter"); //// const char MSG_CUTTER[] PROGMEM_I1 = ISTR("Cutter"); ////
const char MSG_NONE[] PROGMEM_I1 = ISTR("None"); ////
const char MSG_WARN[] PROGMEM_I1 = ISTR("Warn"); ////
const char MSG_STRICT[] PROGMEM_I1 = ISTR("Strict"); ////
const char MSG_MODEL[] PROGMEM_I1 = ISTR("Model"); ////
const char MSG_FIRMWARE[] PROGMEM_I1 = ISTR("Firmware"); ////
const char MSG_GCODE[] PROGMEM_I1 = ISTR("Gcode"); ////
const char MSG_NOZZLE_DIAMETER[] PROGMEM_I1 = ISTR("Nozzle d."); ////
//not internationalized messages //not internationalized messages
const char MSG_SD_WORKDIR_FAIL[] PROGMEM_N1 = "workDir open failed"; //// const char MSG_SD_WORKDIR_FAIL[] PROGMEM_N1 = "workDir open failed"; ////

View File

@ -107,6 +107,13 @@ extern const char MSG_ON[];
extern const char MSG_NA[]; extern const char MSG_NA[];
extern const char MSG_AUTO_DEPLETE[]; extern const char MSG_AUTO_DEPLETE[];
extern const char MSG_CUTTER[]; extern const char MSG_CUTTER[];
extern const char MSG_NONE[];
extern const char MSG_WARN[];
extern const char MSG_STRICT[];
extern const char MSG_MODEL[];
extern const char MSG_FIRMWARE[];
extern const char MSG_GCODE[];
extern const char MSG_NOZZLE_DIAMETER[];
//not internationalized messages //not internationalized messages
extern const char MSG_BROWNOUT_RESET[]; extern const char MSG_BROWNOUT_RESET[];

View File

@ -5332,16 +5332,16 @@ do\
switch(oCheckMode)\ switch(oCheckMode)\
{\ {\
case ClCheckMode::_None:\ case ClCheckMode::_None:\
MENU_ITEM_FUNCTION_P(_i("Nozzle [none]"),lcd_check_mode_set);\ MENU_ITEM_TOGGLE_P(_T(MSG_NOZZLE), _T(MSG_NONE), lcd_check_mode_set);\
break;\ break;\
case ClCheckMode::_Warn:\ case ClCheckMode::_Warn:\
MENU_ITEM_FUNCTION_P(_i("Nozzle [warn]"),lcd_check_mode_set);\ MENU_ITEM_TOGGLE_P(_T(MSG_NOZZLE), _T(MSG_WARN), lcd_check_mode_set);\
break;\ break;\
case ClCheckMode::_Strict:\ case ClCheckMode::_Strict:\
MENU_ITEM_FUNCTION_P(_i("Nozzle [strict]"),lcd_check_mode_set);\ MENU_ITEM_TOGGLE_P(_T(MSG_NOZZLE), _T(MSG_STRICT), lcd_check_mode_set);\
break;\ break;\
default:\ default:\
MENU_ITEM_FUNCTION_P(_i("Nozzle [none]"),lcd_check_mode_set);\ MENU_ITEM_TOGGLE_P(_T(MSG_NOZZLE), _T(MSG_NONE), lcd_check_mode_set);\
}\ }\
}\ }\
while (0) while (0)
@ -5375,20 +5375,17 @@ eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,nDiameter);
#define SETTINGS_NOZZLE \ #define SETTINGS_NOZZLE \
do\ do\
{\ {\
char sNozzleDiam[5];/*enough for two decimals*/\
float fNozzleDiam;\
switch(oNozzleDiameter)\ switch(oNozzleDiameter)\
{\ {\
case ClNozzleDiameter::_Diameter_250:\ case ClNozzleDiameter::_Diameter_250: fNozzleDiam = 0.25f; break;\
MENU_ITEM_FUNCTION_P(_i("Nozzle d. [0.25]"),lcd_nozzle_diameter_set);\ case ClNozzleDiameter::_Diameter_400: fNozzleDiam = 0.4f; break;\
break;\ case ClNozzleDiameter::_Diameter_600: fNozzleDiam = 0.6f; break;\
case ClNozzleDiameter::_Diameter_400:\ default: fNozzleDiam = 0.4f; break;\
MENU_ITEM_FUNCTION_P(_i("Nozzle d. [0.40]"),lcd_nozzle_diameter_set);\ }\
break;\ sprintf_P(sNozzleDiam, PSTR("%.2f"), fNozzleDiam);\
case ClNozzleDiameter::_Diameter_600:\ MENU_ITEM_TOGGLE(_T(MSG_NOZZLE_DIAMETER), sNozzleDiam, lcd_nozzle_diameter_set);\
MENU_ITEM_FUNCTION_P(_i("Nozzle d. [0.60]"),lcd_nozzle_diameter_set);\
break;\
default:\
MENU_ITEM_FUNCTION_P(_i("Nozzle d. [0.40]"),lcd_nozzle_diameter_set);\
}\
}\ }\
while (0) while (0)
@ -5417,16 +5414,16 @@ do\
switch(oCheckModel)\ switch(oCheckModel)\
{\ {\
case ClCheckModel::_None:\ case ClCheckModel::_None:\
MENU_ITEM_FUNCTION_P(_i("Model [none]"),lcd_check_model_set);\ MENU_ITEM_TOGGLE_P(_T(MSG_MODEL), _T(MSG_NONE), lcd_check_model_set);\
break;\ break;\
case ClCheckModel::_Warn:\ case ClCheckModel::_Warn:\
MENU_ITEM_FUNCTION_P(_i("Model [warn]"),lcd_check_model_set);\ MENU_ITEM_TOGGLE_P(_T(MSG_MODEL), _T(MSG_WARN), lcd_check_model_set);\
break;\ break;\
case ClCheckModel::_Strict:\ case ClCheckModel::_Strict:\
MENU_ITEM_FUNCTION_P(_i("Model [strict]"),lcd_check_model_set);\ MENU_ITEM_TOGGLE_P(_T(MSG_MODEL), _T(MSG_STRICT), lcd_check_model_set);\
break;\ break;\
default:\ default:\
MENU_ITEM_FUNCTION_P(_i("Model [none]"),lcd_check_model_set);\ MENU_ITEM_TOGGLE_P(_T(MSG_MODEL), _T(MSG_NONE), lcd_check_model_set);\
}\ }\
}\ }\
while (0) while (0)
@ -5456,16 +5453,16 @@ do\
switch(oCheckVersion)\ switch(oCheckVersion)\
{\ {\
case ClCheckVersion::_None:\ case ClCheckVersion::_None:\
MENU_ITEM_FUNCTION_P(_i("Firmware [none]"),lcd_check_version_set);\ MENU_ITEM_TOGGLE_P(_T(MSG_FIRMWARE), _T(MSG_NONE), lcd_check_version_set);\
break;\ break;\
case ClCheckVersion::_Warn:\ case ClCheckVersion::_Warn:\
MENU_ITEM_FUNCTION_P(_i("Firmware [warn]"),lcd_check_version_set);\ MENU_ITEM_TOGGLE_P(_T(MSG_FIRMWARE), _T(MSG_WARN), lcd_check_version_set);\
break;\ break;\
case ClCheckVersion::_Strict:\ case ClCheckVersion::_Strict:\
MENU_ITEM_FUNCTION_P(_i("Firmware [strict]"),lcd_check_version_set);\ MENU_ITEM_TOGGLE_P(_T(MSG_FIRMWARE), _T(MSG_STRICT), lcd_check_version_set);\
break;\ break;\
default:\ default:\
MENU_ITEM_FUNCTION_P(_i("Firmware [none]"),lcd_check_version_set);\ MENU_ITEM_TOGGLE_P(_T(MSG_FIRMWARE), _T(MSG_NONE), lcd_check_version_set);\
}\ }\
}\ }\
while (0) while (0)
@ -5495,16 +5492,16 @@ do\
switch(oCheckGcode)\ switch(oCheckGcode)\
{\ {\
case ClCheckGcode::_None:\ case ClCheckGcode::_None:\
MENU_ITEM_FUNCTION_P(_i("Gcode [none]"),lcd_check_gcode_set);\ MENU_ITEM_TOGGLE_P(_T(MSG_GCODE), _T(MSG_NONE), lcd_check_gcode_set);\
break;\ break;\
case ClCheckGcode::_Warn:\ case ClCheckGcode::_Warn:\
MENU_ITEM_FUNCTION_P(_i("Gcode [warn]"),lcd_check_gcode_set);\ MENU_ITEM_TOGGLE_P(_T(MSG_GCODE), _T(MSG_WARN), lcd_check_gcode_set);\
break;\ break;\
case ClCheckGcode::_Strict:\ case ClCheckGcode::_Strict:\
MENU_ITEM_FUNCTION_P(_i("Gcode [strict]"),lcd_check_gcode_set);\ MENU_ITEM_TOGGLE_P(_T(MSG_GCODE), _T(MSG_STRICT), lcd_check_gcode_set);\
break;\ break;\
default:\ default:\
MENU_ITEM_FUNCTION_P(_i("Gcode [none]"),lcd_check_gcode_set);\ MENU_ITEM_TOGGLE_P(_T(MSG_GCODE), _T(MSG_NONE), lcd_check_gcode_set);\
}\ }\
}\ }\
while (0) while (0)