Pārlūkot izejas kodu

Custom menu items confirm option (#21338)

Co-authored-by: Scott Lahteine <github@thinkyhead.com>
InsanityAutomation 3 gadus atpakaļ
vecāks
revīzija
911cd1a6d3
Revīzijas autora e-pasta adrese nav piesaistīta nevienam kontam

+ 7
- 1
Marlin/Configuration_adv.h Parādīt failu

@@ -3455,22 +3455,28 @@
3455 3455
   //#define CUSTOM_USER_MENU_TITLE "Custom Commands"
3456 3456
   #define USER_SCRIPT_DONE "M117 User Script Done"
3457 3457
   #define USER_SCRIPT_AUDIBLE_FEEDBACK
3458
-  //#define USER_SCRIPT_RETURN  // Return to status screen after a script
3458
+  //#define USER_SCRIPT_RETURN    // Return to status screen after a script
3459
+  #define CUSTOM_MENU_ONLY_IDLE   // Only show custom menu when the machine is idle
3459 3460
 
3460 3461
   #define USER_DESC_1 "Home & UBL Info"
3461 3462
   #define USER_GCODE_1 "G28\nG29W"
3463
+  //#define USER_CONFIRM_1        // Show a confirmation dialog before this action
3462 3464
 
3463 3465
   #define USER_DESC_2 "Preheat for " PREHEAT_1_LABEL
3464 3466
   #define USER_GCODE_2 "M140 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND)
3467
+  //#define USER_CONFIRM_2
3465 3468
 
3466 3469
   #define USER_DESC_3 "Preheat for " PREHEAT_2_LABEL
3467 3470
   #define USER_GCODE_3 "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND)
3471
+  //#define USER_CONFIRM_3
3468 3472
 
3469 3473
   #define USER_DESC_4 "Heat Bed/Home/Level"
3470 3474
   #define USER_GCODE_4 "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nG28\nG29"
3475
+  //#define USER_CONFIRM_4
3471 3476
 
3472 3477
   #define USER_DESC_5 "Home & Info"
3473 3478
   #define USER_GCODE_5 "G28\nM503"
3479
+  //#define USER_CONFIRM_5
3474 3480
 #endif
3475 3481
 
3476 3482
 /**

+ 14
- 1
Marlin/src/lcd/menu/menu_custom.cpp Parādīt failu

@@ -46,7 +46,20 @@ void _lcd_user_gcode(PGM_P const cmd) {
46 46
 void menu_user() {
47 47
   START_MENU();
48 48
   BACK_ITEM(MSG_MAIN);
49
-  #define USER_ITEM(N) ACTION_ITEM_P(PSTR(USER_DESC_##N), []{ _lcd_user_gcode(PSTR(USER_GCODE_##N _DONE_SCRIPT)); });
49
+
50
+  #define GCODE_LAMBDA(N) []{ _lcd_user_gcode(PSTR(USER_GCODE_##N _DONE_SCRIPT)); }
51
+  #define _USER_ITEM(N) ACTION_ITEM_P(PSTR(USER_DESC_##N), GCODE_LAMBDA(N));
52
+  #define _USER_ITEM_CONFIRM(N)           \
53
+    SUBMENU_P(PSTR(USER_DESC_##N), []{    \
54
+        MenuItem_confirm::confirm_screen( \
55
+          GCODE_LAMBDA(N),                \
56
+          ui.goto_previous_screen,        \
57
+          PSTR(USER_DESC_##N "?")         \
58
+        );                                \
59
+      })
60
+
61
+  #define USER_ITEM(N) do{ if (ENABLED(USER_CONFIRM_##N)) _USER_ITEM_CONFIRM(N); else _USER_ITEM(N); }while(0)
62
+
50 63
   #if HAS_USER_ITEM(1)
51 64
     USER_ITEM(1);
52 65
   #endif

+ 7
- 5
Marlin/src/lcd/menu/menu_main.cpp Parādīt failu

@@ -211,11 +211,13 @@ void menu_main() {
211 211
   SUBMENU(MSG_CONFIGURATION, menu_configuration);
212 212
 
213 213
   #if ENABLED(CUSTOM_USER_MENUS)
214
-    #ifdef CUSTOM_USER_MENU_TITLE
215
-      SUBMENU_P(PSTR(CUSTOM_USER_MENU_TITLE), menu_user);
216
-    #else
217
-      SUBMENU(MSG_USER_MENU, menu_user);
218
-    #endif
214
+    if (TERN1(CUSTOM_MENU_ONLY_IDLE, !busy)) {
215
+      #ifdef CUSTOM_USER_MENU_TITLE
216
+        SUBMENU_P(PSTR(CUSTOM_USER_MENU_TITLE), menu_user);
217
+      #else
218
+        SUBMENU(MSG_USER_MENU, menu_user);
219
+      #endif
220
+    }
219 221
   #endif
220 222
 
221 223
   #if ENABLED(ADVANCED_PAUSE_FEATURE)

Notiek ielāde…
Atcelt
Saglabāt