Custom menu items confirm option (#21338)

Co-authored-by: Scott Lahteine <github@thinkyhead.com>
This commit is contained in:
InsanityAutomation 2021-03-13 08:37:49 -05:00 committed by Scott Lahteine
parent 0c3eb04a37
commit f36eb4646b
3 changed files with 28 additions and 7 deletions

View file

@ -3455,22 +3455,28 @@
//#define CUSTOM_USER_MENU_TITLE "Custom Commands"
#define USER_SCRIPT_DONE "M117 User Script Done"
#define USER_SCRIPT_AUDIBLE_FEEDBACK
//#define USER_SCRIPT_RETURN // Return to status screen after a script
//#define USER_SCRIPT_RETURN // Return to status screen after a script
#define CUSTOM_MENU_ONLY_IDLE // Only show custom menu when the machine is idle
#define USER_DESC_1 "Home & UBL Info"
#define USER_GCODE_1 "G28\nG29W"
//#define USER_CONFIRM_1 // Show a confirmation dialog before this action
#define USER_DESC_2 "Preheat for " PREHEAT_1_LABEL
#define USER_GCODE_2 "M140 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND)
//#define USER_CONFIRM_2
#define USER_DESC_3 "Preheat for " PREHEAT_2_LABEL
#define USER_GCODE_3 "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND)
//#define USER_CONFIRM_3
#define USER_DESC_4 "Heat Bed/Home/Level"
#define USER_GCODE_4 "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nG28\nG29"
//#define USER_CONFIRM_4
#define USER_DESC_5 "Home & Info"
#define USER_GCODE_5 "G28\nM503"
//#define USER_CONFIRM_5
#endif
/**

View file

@ -46,7 +46,20 @@ void _lcd_user_gcode(PGM_P const cmd) {
void menu_user() {
START_MENU();
BACK_ITEM(MSG_MAIN);
#define USER_ITEM(N) ACTION_ITEM_P(PSTR(USER_DESC_##N), []{ _lcd_user_gcode(PSTR(USER_GCODE_##N _DONE_SCRIPT)); });
#define GCODE_LAMBDA(N) []{ _lcd_user_gcode(PSTR(USER_GCODE_##N _DONE_SCRIPT)); }
#define _USER_ITEM(N) ACTION_ITEM_P(PSTR(USER_DESC_##N), GCODE_LAMBDA(N));
#define _USER_ITEM_CONFIRM(N) \
SUBMENU_P(PSTR(USER_DESC_##N), []{ \
MenuItem_confirm::confirm_screen( \
GCODE_LAMBDA(N), \
ui.goto_previous_screen, \
PSTR(USER_DESC_##N "?") \
); \
})
#define USER_ITEM(N) do{ if (ENABLED(USER_CONFIRM_##N)) _USER_ITEM_CONFIRM(N); else _USER_ITEM(N); }while(0)
#if HAS_USER_ITEM(1)
USER_ITEM(1);
#endif

View file

@ -211,11 +211,13 @@ void menu_main() {
SUBMENU(MSG_CONFIGURATION, menu_configuration);
#if ENABLED(CUSTOM_USER_MENUS)
#ifdef CUSTOM_USER_MENU_TITLE
SUBMENU_P(PSTR(CUSTOM_USER_MENU_TITLE), menu_user);
#else
SUBMENU(MSG_USER_MENU, menu_user);
#endif
if (TERN1(CUSTOM_MENU_ONLY_IDLE, !busy)) {
#ifdef CUSTOM_USER_MENU_TITLE
SUBMENU_P(PSTR(CUSTOM_USER_MENU_TITLE), menu_user);
#else
SUBMENU(MSG_USER_MENU, menu_user);
#endif
}
#endif
#if ENABLED(ADVANCED_PAUSE_FEATURE)