Ver código fonte

Use lambdas in menus, where possible (#15452)

Scott Lahteine 5 anos atrás
pai
commit
cc822c1a05
Nenhuma conta vinculada ao e-mail do autor do commit

+ 6
- 21
Marlin/src/Marlin.cpp Ver arquivo

@@ -275,6 +275,10 @@ void quickstop_stepper() {
275 275
   sync_plan_position();
276 276
 }
277 277
 
278
+void enable_e_steppers() {
279
+  enable_E0(); enable_E1(); enable_E2(); enable_E3(); enable_E4(); enable_E5();
280
+}
281
+
278 282
 void enable_all_steppers() {
279 283
   #if ENABLED(AUTO_POWER_CONTROL)
280 284
     powerManager.power_on();
@@ -282,30 +286,11 @@ void enable_all_steppers() {
282 286
   enable_X();
283 287
   enable_Y();
284 288
   enable_Z();
285
-  enable_E0();
286
-  enable_E1();
287
-  enable_E2();
288
-  enable_E3();
289
-  enable_E4();
290
-  enable_E5();
291
-}
292
-
293
-void enable_e_steppers() {
294
-  enable_E0();
295
-  enable_E1();
296
-  enable_E2();
297
-  enable_E3();
298
-  enable_E4();
299
-  enable_E5();
289
+  enable_e_steppers();
300 290
 }
301 291
 
302 292
 void disable_e_steppers() {
303
-  disable_E0();
304
-  disable_E1();
305
-  disable_E2();
306
-  disable_E3();
307
-  disable_E4();
308
-  disable_E5();
293
+  disable_E0(); disable_E1(); disable_E2(); disable_E3(); disable_E4(); disable_E5();
309 294
 }
310 295
 
311 296
 void disable_e_stepper(const uint8_t e) {

+ 32
- 35
Marlin/src/core/language.h Ver arquivo

@@ -337,36 +337,38 @@
337 337
 #define MSG_Y2 "Y2"
338 338
 #define MSG_Z2 "Z2"
339 339
 #define MSG_Z3 "Z3"
340
-#define MSG_H1 "1"
341
-#define MSG_H2 "2"
342
-#define MSG_H3 "3"
343
-#define MSG_H4 "4"
344
-#define MSG_H5 "5"
345
-#define MSG_H6 "6"
346
-#define MSG_LCD_N0 " 1"
347
-#define MSG_LCD_N1 " 2"
348
-#define MSG_LCD_N2 " 3"
349
-#define MSG_LCD_N3 " 4"
350
-#define MSG_LCD_N4 " 5"
351
-#define MSG_LCD_N5 " 6"
352
-#define MSG_E1 "E1"
353
-#define MSG_E2 "E2"
354
-#define MSG_E3 "E3"
355
-#define MSG_E4 "E4"
356
-#define MSG_E5 "E5"
357
-#define MSG_E6 "E6"
358
-#define MSG_MOVE_E1 "1"
359
-#define MSG_MOVE_E2 "2"
360
-#define MSG_MOVE_E3 "3"
361
-#define MSG_MOVE_E4 "4"
362
-#define MSG_MOVE_E5 "5"
363
-#define MSG_MOVE_E6 "6"
364
-#define MSG_DIAM_E1 " 1"
365
-#define MSG_DIAM_E2 " 2"
366
-#define MSG_DIAM_E3 " 3"
367
-#define MSG_DIAM_E4 " 4"
368
-#define MSG_DIAM_E5 " 5"
369
-#define MSG_DIAM_E6 " 6"
340
+
341
+/**
342
+ * Tool indexes for LCD display only
343
+ *
344
+ * By convention the LCD shows "E1" for the first extruder.
345
+ * However, internal to Marlin E0/T0 is the first tool, and
346
+ * most board silkscreens say "E0." Zero-based labels will
347
+ * make these indexes consistent but this defies expectation.
348
+ *
349
+ */
350
+#if ENABLED(NUMBER_TOOLS_FROM_0)
351
+  #define LCD_STR_N0 "0"
352
+  #define LCD_STR_N1 "1"
353
+  #define LCD_STR_N2 "2"
354
+  #define LCD_STR_N3 "3"
355
+  #define LCD_STR_N4 "4"
356
+  #define LCD_STR_N5 "5"
357
+#else
358
+  #define LCD_STR_N0 "1"
359
+  #define LCD_STR_N1 "2"
360
+  #define LCD_STR_N2 "3"
361
+  #define LCD_STR_N3 "4"
362
+  #define LCD_STR_N4 "5"
363
+  #define LCD_STR_N5 "6"
364
+#endif
365
+
366
+#define LCD_STR_E0 "E" LCD_STR_N0
367
+#define LCD_STR_E1 "E" LCD_STR_N1
368
+#define LCD_STR_E2 "E" LCD_STR_N2
369
+#define LCD_STR_E3 "E" LCD_STR_N3
370
+#define LCD_STR_E4 "E" LCD_STR_N4
371
+#define LCD_STR_E5 "E" LCD_STR_N5
370 372
 
371 373
 #include INCLUDE_LANGUAGE
372 374
 
@@ -383,8 +385,3 @@
383 385
 #endif
384 386
 
385 387
 #include "../lcd/language/language_en.h"
386
-
387
-#ifdef CUSTOM_USER_MENU_TITLE
388
-  #undef MSG_USER_MENU
389
-  #define MSG_USER_MENU CUSTOM_USER_MENU_TITLE
390
-#endif

+ 1
- 10
Marlin/src/lcd/menu/menu.cpp Ver arquivo

@@ -68,6 +68,7 @@ uint8_t screen_history_depth = 0;
68 68
 bool screen_changed;
69 69
 
70 70
 // Value Editing
71
+chimera_t editable;
71 72
 PGM_P MenuEditItemBase::editLabel;
72 73
 void* MenuEditItemBase::editValue;
73 74
 int32_t MenuEditItemBase::minEditValue, MenuEditItemBase::maxEditValue;
@@ -201,11 +202,6 @@ void MenuItem_bool::action(PGM_P pstr, bool *ptr, screenFunc_t callback) {
201 202
 ///////////////// Menu Tree ////////////////
202 203
 ////////////////////////////////////////////
203 204
 
204
-#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
205
-  float lcd_z_fade_height;
206
-  void _lcd_set_z_fade_height() { set_z_fade_height(lcd_z_fade_height); }
207
-#endif
208
-
209 205
 #include "../../Marlin.h"
210 206
 
211 207
 bool printer_busy() {
@@ -222,11 +218,6 @@ void MarlinUI::goto_screen(screenFunc_t screen, const uint16_t encoder/*=0*/, co
222 218
       repeat_delay = BUTTON_DELAY_MENU;
223 219
     #endif
224 220
 
225
-    #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
226
-      // Shadow for editing the fade height
227
-      lcd_z_fade_height = planner.z_fade_height;
228
-    #endif
229
-
230 221
     #if ENABLED(LCD_SET_PROGRESS_MANUALLY)
231 222
       progress_reset();
232 223
     #endif

+ 18
- 5
Marlin/src/lcd/menu/menu.h Ver arquivo

@@ -176,6 +176,24 @@ class MenuItem_function {
176 176
 /////////// Menu Editing Actions ///////////
177 177
 ////////////////////////////////////////////
178 178
 
179
+//
180
+// The Menu Edit shadow value
181
+// Only one edit value is needed at a time
182
+//
183
+
184
+typedef union {
185
+  bool     state;
186
+  float    decimal;
187
+  int8_t   int8;
188
+  int16_t  int16;
189
+  int32_t  int32;
190
+  uint8_t  uint8;
191
+  uint16_t uint16;
192
+  uint32_t uint32;
193
+} chimera_t;
194
+
195
+extern chimera_t editable;
196
+
179 197
 // Edit items use long integer encoder units
180 198
 class MenuEditItemBase {
181 199
   private:
@@ -407,11 +425,6 @@ void _lcd_draw_homing();
407 425
   void _lcd_level_bed_corners();
408 426
 #endif
409 427
 
410
-#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
411
-  extern float lcd_z_fade_height;
412
-  void _lcd_set_z_fade_height();
413
-#endif
414
-
415 428
 #if ENABLED(LCD_BED_LEVELING) || (HAS_LEVELING && DISABLED(SLIM_LCD_MENUS))
416 429
   void _lcd_toggle_bed_leveling();
417 430
 #endif

+ 72
- 154
Marlin/src/lcd/menu/menu_advanced.cpp Ver arquivo

@@ -55,15 +55,12 @@ void menu_backlash();
55 55
 
56 56
   #include "../../feature/dac/stepper_dac.h"
57 57
 
58
-  xyze_uint8_t driverPercent;
59
-  inline void dac_driver_getValues() { LOOP_XYZE(i) driverPercent[i] = dac_current_get_percent((AxisEnum)i); }
60
-  static void dac_driver_commit() { dac_current_set_percents(driverPercent); }
61
-
62 58
   void menu_dac() {
63
-    dac_driver_getValues();
59
+    static xyze_uint8_t driverPercent;
60
+    LOOP_XYZE(i) driverPercent[i] = dac_current_get_percent((AxisEnum)i);
64 61
     START_MENU();
65 62
     BACK_ITEM(MSG_ADVANCED_SETTINGS);
66
-    #define EDIT_DAC_PERCENT(N) EDIT_ITEM(uint8, MSG_##N " " MSG_DAC_PERCENT, &driverPercent[_AXIS(N)], 0, 100, dac_driver_commit)
63
+    #define EDIT_DAC_PERCENT(A) EDIT_ITEM(uint8, MSG_##A " " MSG_DAC_PERCENT, &driverPercent[_AXIS(A)], 0, 100, [](){ dac_current_set_percents(driverPercent); })
67 64
     EDIT_DAC_PERCENT(X);
68 65
     EDIT_DAC_PERCENT(Y);
69 66
     EDIT_DAC_PERCENT(Z);
@@ -96,16 +93,6 @@ void menu_backlash();
96 93
 
97 94
 #endif
98 95
 
99
-#if HAS_M206_COMMAND
100
-  //
101
-  // Set the home offset based on the current_position
102
-  //
103
-  void _lcd_set_home_offsets() {
104
-    queue.inject_P(PSTR("M428"));
105
-    ui.return_to_status();
106
-  }
107
-#endif
108
-
109 96
 #if ENABLED(SD_FIRMWARE_UPDATE)
110 97
   #include "../../module/configuration_store.h"
111 98
 #endif
@@ -122,17 +109,17 @@ void menu_backlash();
122 109
       #if EXTRUDERS == 1
123 110
         EDIT_ITEM(float52, MSG_ADVANCE_K, &planner.extruder_advance_K[0], 0, 999);
124 111
       #elif EXTRUDERS > 1
125
-        #define EDIT_ADVANCE_K(N) EDIT_ITEM(float52, MSG_ADVANCE_K MSG_E##N, &planner.extruder_advance_K[N-1], 0, 999)
112
+        #define EDIT_ADVANCE_K(N) EDIT_ITEM(float52, MSG_ADVANCE_K LCD_STR_E##N, &planner.extruder_advance_K[N], 0, 999)
113
+        EDIT_ADVANCE_K(0);
126 114
         EDIT_ADVANCE_K(1);
127
-        EDIT_ADVANCE_K(2);
128 115
         #if EXTRUDERS > 2
129
-          EDIT_ADVANCE_K(3);
116
+          EDIT_ADVANCE_K(2);
130 117
           #if EXTRUDERS > 3
131
-            EDIT_ADVANCE_K(4);
118
+            EDIT_ADVANCE_K(3);
132 119
             #if EXTRUDERS > 4
133
-              EDIT_ADVANCE_K(5);
120
+              EDIT_ADVANCE_K(4);
134 121
               #if EXTRUDERS > 5
135
-                EDIT_ADVANCE_K(6);
122
+                EDIT_ADVANCE_K(5);
136 123
               #endif // EXTRUDERS > 5
137 124
             #endif // EXTRUDERS > 4
138 125
           #endif // EXTRUDERS > 3
@@ -147,18 +134,18 @@ void menu_backlash();
147 134
         #if EXTRUDERS == 1
148 135
           EDIT_ITEM_FAST(float43, MSG_FILAMENT_DIAM, &planner.filament_size[0], 1.5f, 3.25f, planner.calculate_volumetric_multipliers);
149 136
         #else // EXTRUDERS > 1
150
-          #define EDIT_FIL_DIAM(N) EDIT_ITEM_FAST(float43, MSG_FILAMENT_DIAM MSG_DIAM_E##N, &planner.filament_size[N-1], 1.5f, 3.25f, planner.calculate_volumetric_multipliers)
137
+          #define EDIT_FIL_DIAM(N) EDIT_ITEM_FAST(float43, MSG_FILAMENT_DIAM LCD_STR_N##N, &planner.filament_size[N], 1.5f, 3.25f, planner.calculate_volumetric_multipliers)
151 138
           EDIT_ITEM_FAST(float43, MSG_FILAMENT_DIAM, &planner.filament_size[active_extruder], 1.5f, 3.25f, planner.calculate_volumetric_multipliers);
139
+          EDIT_FIL_DIAM(0);
152 140
           EDIT_FIL_DIAM(1);
153
-          EDIT_FIL_DIAM(2);
154 141
           #if EXTRUDERS > 2
155
-            EDIT_FIL_DIAM(3);
142
+            EDIT_FIL_DIAM(2);
156 143
             #if EXTRUDERS > 3
157
-              EDIT_FIL_DIAM(4);
144
+              EDIT_FIL_DIAM(3);
158 145
               #if EXTRUDERS > 4
159
-                EDIT_FIL_DIAM(5);
146
+                EDIT_FIL_DIAM(4);
160 147
                 #if EXTRUDERS > 5
161
-                  EDIT_FIL_DIAM(6);
148
+                  EDIT_FIL_DIAM(5);
162 149
                 #endif // EXTRUDERS > 5
163 150
               #endif // EXTRUDERS > 4
164 151
             #endif // EXTRUDERS > 3
@@ -179,18 +166,18 @@ void menu_backlash();
179 166
       #if EXTRUDERS == 1
180 167
         EDIT_ITEM_FAST(float3, MSG_FILAMENT_UNLOAD, &fc_settings[0].unload_length, 0, extrude_maxlength);
181 168
       #elif EXTRUDERS > 1
182
-        #define EDIT_FIL_UNLOAD(N) EDIT_ITEM_FAST(float3, MSG_FILAMENT_UNLOAD MSG_DIAM_E##N, &fc_settings[N-1].unload_length, 0, extrude_maxlength)
169
+        #define EDIT_FIL_UNLOAD(N) EDIT_ITEM_FAST(float3, MSG_FILAMENT_UNLOAD LCD_STR_N##N, &fc_settings[N].unload_length, 0, extrude_maxlength)
183 170
         EDIT_ITEM_FAST(float3, MSG_FILAMENT_UNLOAD, &fc_settings[active_extruder].unload_length, 0, extrude_maxlength);
171
+        EDIT_FIL_UNLOAD(0);
184 172
         EDIT_FIL_UNLOAD(1);
185
-        EDIT_FIL_UNLOAD(2);
186 173
         #if EXTRUDERS > 2
187
-          EDIT_FIL_UNLOAD(3);
174
+          EDIT_FIL_UNLOAD(2);
188 175
           #if EXTRUDERS > 3
189
-            EDIT_FIL_UNLOAD(4);
176
+            EDIT_FIL_UNLOAD(3);
190 177
             #if EXTRUDERS > 4
191
-              EDIT_FIL_UNLOAD(5);
178
+              EDIT_FIL_UNLOAD(4);
192 179
               #if EXTRUDERS > 5
193
-                EDIT_FIL_UNLOAD(6);
180
+                EDIT_FIL_UNLOAD(5);
194 181
               #endif // EXTRUDERS > 5
195 182
             #endif // EXTRUDERS > 4
196 183
           #endif // EXTRUDERS > 3
@@ -200,18 +187,18 @@ void menu_backlash();
200 187
       #if EXTRUDERS == 1
201 188
         EDIT_ITEM_FAST(float3, MSG_FILAMENT_LOAD, &fc_settings[0].load_length, 0, extrude_maxlength);
202 189
       #elif EXTRUDERS > 1
203
-        #define EDIT_FIL_LOAD(N) EDIT_ITEM_FAST(float3, MSG_FILAMENT_LOAD MSG_DIAM_E##N, &fc_settings[N-1].load_length, 0, extrude_maxlength)
190
+        #define EDIT_FIL_LOAD(N) EDIT_ITEM_FAST(float3, MSG_FILAMENT_LOAD LCD_STR_N##N, &fc_settings[N].load_length, 0, extrude_maxlength)
204 191
         EDIT_ITEM_FAST(float3, MSG_FILAMENT_LOAD, &fc_settings[active_extruder].load_length, 0, extrude_maxlength);
192
+        EDIT_FIL_LOAD(0);
205 193
         EDIT_FIL_LOAD(1);
206
-        EDIT_FIL_LOAD(2);
207 194
         #if EXTRUDERS > 2
208
-          EDIT_FIL_LOAD(3);
195
+          EDIT_FIL_LOAD(2);
209 196
           #if EXTRUDERS > 3
210
-            EDIT_FIL_LOAD(4);
197
+            EDIT_FIL_LOAD(3);
211 198
             #if EXTRUDERS > 4
212
-              EDIT_FIL_LOAD(5);
199
+              EDIT_FIL_LOAD(4);
213 200
               #if EXTRUDERS > 5
214
-                EDIT_FIL_LOAD(6);
201
+                EDIT_FIL_LOAD(5);
215 202
               #endif // EXTRUDERS > 5
216 203
             #endif // EXTRUDERS > 4
217 204
           #endif // EXTRUDERS > 3
@@ -280,45 +267,9 @@ void menu_backlash();
280 267
     PID_PARAM(Kd, e) = scalePID_d(raw_Kd);
281 268
     thermalManager.updatePID();
282 269
   }
283
-  #define _DEFINE_PIDTEMP_BASE_FUNCS(N) \
284
-    void copy_and_scalePID_i_E ## N() { copy_and_scalePID_i(N); } \
285
-    void copy_and_scalePID_d_E ## N() { copy_and_scalePID_d(N); }
286
-
287
-#else
288
-
289
-  #define _DEFINE_PIDTEMP_BASE_FUNCS(N) //
290 270
 
291 271
 #endif
292 272
 
293
-#if ENABLED(PID_AUTOTUNE_MENU)
294
-  #define DEFINE_PIDTEMP_FUNCS(N) \
295
-    _DEFINE_PIDTEMP_BASE_FUNCS(N); \
296
-    void lcd_autotune_callback_E ## N() { _lcd_autotune(N); } //
297
-#else
298
-  #define DEFINE_PIDTEMP_FUNCS(N) _DEFINE_PIDTEMP_BASE_FUNCS(N); //
299
-#endif
300
-
301
-#if HOTENDS
302
-  DEFINE_PIDTEMP_FUNCS(0);
303
-  #if ENABLED(PID_PARAMS_PER_HOTEND)
304
-    #if HOTENDS > 1
305
-      DEFINE_PIDTEMP_FUNCS(1);
306
-      #if HOTENDS > 2
307
-        DEFINE_PIDTEMP_FUNCS(2);
308
-        #if HOTENDS > 3
309
-          DEFINE_PIDTEMP_FUNCS(3);
310
-          #if HOTENDS > 4
311
-            DEFINE_PIDTEMP_FUNCS(4);
312
-            #if HOTENDS > 5
313
-              DEFINE_PIDTEMP_FUNCS(5);
314
-            #endif // HOTENDS > 5
315
-          #endif // HOTENDS > 4
316
-        #endif // HOTENDS > 3
317
-      #endif // HOTENDS > 2
318
-    #endif // HOTENDS > 1
319
-  #endif // PID_PARAMS_PER_HOTEND
320
-#endif // HOTENDS
321
-
322 273
 #define SHOW_MENU_ADVANCED_TEMPERATURE ((ENABLED(AUTOTEMP) && HAS_TEMP_HOTEND) || EITHER(PID_AUTOTUNE_MENU, PID_EDIT_MENU))
323 274
 
324 275
 //
@@ -353,8 +304,8 @@ void menu_backlash();
353 304
         raw_Ki = unscalePID_i(PID_PARAM(Ki, eindex)); \
354 305
         raw_Kd = unscalePID_d(PID_PARAM(Kd, eindex)); \
355 306
         EDIT_ITEM(float52sign, MSG_PID_P ELABEL, &PID_PARAM(Kp, eindex), 1, 9990); \
356
-        EDIT_ITEM(float52sign, MSG_PID_I ELABEL, &raw_Ki, 0.01f, 9990, copy_and_scalePID_i_E ## eindex); \
357
-        EDIT_ITEM(float52sign, MSG_PID_D ELABEL, &raw_Kd, 1, 9990, copy_and_scalePID_d_E ## eindex)
307
+        EDIT_ITEM(float52sign, MSG_PID_I ELABEL, &raw_Ki, 0.01f, 9990, [](){ copy_and_scalePID_i(eindex); }); \
308
+        EDIT_ITEM(float52sign, MSG_PID_D ELABEL, &raw_Kd, 1, 9990, [](){ copy_and_scalePID_d(eindex); })
358 309
 
359 310
       #if ENABLED(PID_EXTRUSION_SCALING)
360 311
         #define _PID_EDIT_MENU_ITEMS(ELABEL, eindex) \
@@ -373,22 +324,22 @@ void menu_backlash();
373 324
     #if ENABLED(PID_AUTOTUNE_MENU)
374 325
       #define PID_EDIT_MENU_ITEMS(ELABEL, eindex) \
375 326
         _PID_EDIT_MENU_ITEMS(ELABEL, eindex); \
376
-        EDIT_ITEM_FAST(int3, MSG_PID_AUTOTUNE ELABEL, &autotune_temp[eindex], 150, heater_maxtemp[eindex] - 15, lcd_autotune_callback_E ## eindex)
327
+        EDIT_ITEM_FAST(int3, MSG_PID_AUTOTUNE ELABEL, &autotune_temp[eindex], 150, heater_maxtemp[eindex] - 15, [](){ _lcd_autotune(eindex); })
377 328
     #else
378 329
       #define PID_EDIT_MENU_ITEMS(ELABEL, eindex) _PID_EDIT_MENU_ITEMS(ELABEL, eindex)
379 330
     #endif
380 331
 
381 332
     #if ENABLED(PID_PARAMS_PER_HOTEND) && HOTENDS > 1
382
-      PID_EDIT_MENU_ITEMS(" " MSG_E1, 0);
383
-      PID_EDIT_MENU_ITEMS(" " MSG_E2, 1);
333
+      PID_EDIT_MENU_ITEMS(" " LCD_STR_E0, 0);
334
+      PID_EDIT_MENU_ITEMS(" " LCD_STR_E1, 1);
384 335
       #if HOTENDS > 2
385
-        PID_EDIT_MENU_ITEMS(" " MSG_E3, 2);
336
+        PID_EDIT_MENU_ITEMS(" " LCD_STR_E2, 2);
386 337
         #if HOTENDS > 3
387
-          PID_EDIT_MENU_ITEMS(" " MSG_E4, 3);
338
+          PID_EDIT_MENU_ITEMS(" " LCD_STR_E3, 3);
388 339
           #if HOTENDS > 4
389
-            PID_EDIT_MENU_ITEMS(" " MSG_E5, 4);
340
+            PID_EDIT_MENU_ITEMS(" " LCD_STR_E4, 4);
390 341
             #if HOTENDS > 5
391
-              PID_EDIT_MENU_ITEMS(" " MSG_E6, 5);
342
+              PID_EDIT_MENU_ITEMS(" " LCD_STR_E5, 5);
392 343
             #endif // HOTENDS > 5
393 344
           #endif // HOTENDS > 4
394 345
         #endif // HOTENDS > 3
@@ -404,47 +355,14 @@ void menu_backlash();
404 355
 
405 356
 #if DISABLED(SLIM_LCD_MENUS)
406 357
 
407
-  void _reset_acceleration_rates() { planner.reset_acceleration_rates(); }
408 358
   #if ENABLED(DISTINCT_E_FACTORS)
409
-    void _reset_e_acceleration_rate(const uint8_t e) { if (e == active_extruder) _reset_acceleration_rates(); }
410
-    void _reset_e0_acceleration_rate() { _reset_e_acceleration_rate(0); }
411
-    void _reset_e1_acceleration_rate() { _reset_e_acceleration_rate(1); }
412
-    #if E_STEPPERS > 2
413
-      void _reset_e2_acceleration_rate() { _reset_e_acceleration_rate(2); }
414
-      #if E_STEPPERS > 3
415
-        void _reset_e3_acceleration_rate() { _reset_e_acceleration_rate(3); }
416
-        #if E_STEPPERS > 4
417
-          void _reset_e4_acceleration_rate() { _reset_e_acceleration_rate(4); }
418
-          #if E_STEPPERS > 5
419
-            void _reset_e5_acceleration_rate() { _reset_e_acceleration_rate(5); }
420
-          #endif // E_STEPPERS > 5
421
-        #endif // E_STEPPERS > 4
422
-      #endif // E_STEPPERS > 3
423
-    #endif // E_STEPPERS > 2
424
-  #endif
425
-
426
-  void _planner_refresh_positioning() { planner.refresh_positioning(); }
427
-  #if ENABLED(DISTINCT_E_FACTORS)
428
-    void _planner_refresh_e_positioning(const uint8_t e) {
359
+    inline void _reset_e_acceleration_rate(const uint8_t e) { if (e == active_extruder) planner.reset_acceleration_rates(); }
360
+    inline void _planner_refresh_e_positioning(const uint8_t e) {
429 361
       if (e == active_extruder)
430
-        _planner_refresh_positioning();
362
+        planner.refresh_positioning();
431 363
       else
432 364
         planner.steps_to_mm[E_AXIS_N(e)] = 1.0f / planner.settings.axis_steps_per_mm[E_AXIS_N(e)];
433 365
     }
434
-    void _planner_refresh_e0_positioning() { _planner_refresh_e_positioning(0); }
435
-    void _planner_refresh_e1_positioning() { _planner_refresh_e_positioning(1); }
436
-    #if E_STEPPERS > 2
437
-      void _planner_refresh_e2_positioning() { _planner_refresh_e_positioning(2); }
438
-      #if E_STEPPERS > 3
439
-        void _planner_refresh_e3_positioning() { _planner_refresh_e_positioning(3); }
440
-        #if E_STEPPERS > 4
441
-          void _planner_refresh_e4_positioning() { _planner_refresh_e_positioning(4); }
442
-          #if E_STEPPERS > 5
443
-            void _planner_refresh_e5_positioning() { _planner_refresh_e_positioning(5); }
444
-          #endif // E_STEPPERS > 5
445
-        #endif // E_STEPPERS > 4
446
-      #endif // E_STEPPERS > 3
447
-    #endif // E_STEPPERS > 2
448 366
   #endif
449 367
 
450 368
   // M203 / M205 Velocity options
@@ -473,18 +391,18 @@ void menu_backlash();
473 391
     EDIT_VMAX(C);
474 392
 
475 393
     #if ENABLED(DISTINCT_E_FACTORS)
476
-      #define EDIT_VMAX_E(N) EDIT_ITEM_FAST(float3, MSG_VMAX MSG_E##N, &planner.settings.max_feedrate_mm_s[E_AXIS_N(N-1)], 1, max_fr_edit_scaled.e)
394
+      #define EDIT_VMAX_E(N) EDIT_ITEM_FAST(float3, MSG_VMAX LCD_STR_E##N, &planner.settings.max_feedrate_mm_s[E_AXIS_N(N)], 1, max_fr_edit_scaled.e)
477 395
       EDIT_ITEM_FAST(float3, MSG_VMAX MSG_E, &planner.settings.max_feedrate_mm_s[E_AXIS_N(active_extruder)], 1, max_fr_edit_scaled.e);
396
+      EDIT_VMAX_E(0);
478 397
       EDIT_VMAX_E(1);
479
-      EDIT_VMAX_E(2);
480 398
       #if E_STEPPERS > 2
481
-        EDIT_VMAX_E(3);
399
+        EDIT_VMAX_E(2);
482 400
         #if E_STEPPERS > 3
483
-          EDIT_VMAX_E(4);
401
+          EDIT_VMAX_E(3);
484 402
           #if E_STEPPERS > 4
485
-            EDIT_VMAX_E(5);
403
+            EDIT_VMAX_E(4);
486 404
             #if E_STEPPERS > 5
487
-              EDIT_VMAX_E(6);
405
+              EDIT_VMAX_E(5);
488 406
             #endif // E_STEPPERS > 5
489 407
           #endif // E_STEPPERS > 4
490 408
         #endif // E_STEPPERS > 3
@@ -533,31 +451,31 @@ void menu_backlash();
533 451
       const xyze_ulong_t &max_accel_edit_scaled = max_accel_edit;
534 452
     #endif
535 453
 
536
-    #define EDIT_AMAX(Q,L) EDIT_ITEM_FAST(long5_25, MSG_AMAX MSG_##Q, &planner.settings.max_acceleration_mm_per_s2[_AXIS(Q)], L, max_accel_edit_scaled[_AXIS(Q)], _reset_acceleration_rates)
454
+    #define EDIT_AMAX(Q,L) EDIT_ITEM_FAST(long5_25, MSG_AMAX MSG_##Q, &planner.settings.max_acceleration_mm_per_s2[_AXIS(Q)], L, max_accel_edit_scaled[_AXIS(Q)], [](){ planner.reset_acceleration_rates(); })
537 455
 
538 456
     EDIT_AMAX(A,100);
539 457
     EDIT_AMAX(B,100);
540 458
     EDIT_AMAX(C, 10);
541 459
 
542 460
     #if ENABLED(DISTINCT_E_FACTORS)
543
-      #define EDIT_AMAX_E(N,E) EDIT_ITEM_FAST(long5_25, MSG_AMAX MSG_E##N, &planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(E)], 100, max_accel_edit_scaled.e, _reset_e##E##_acceleration_rate)
544
-      EDIT_ITEM_FAST(long5_25, MSG_AMAX MSG_E, &planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(active_extruder)], 100, max_accel_edit_scaled.e, _reset_acceleration_rates);
545
-      EDIT_AMAX_E(1,0);
546
-      EDIT_AMAX_E(2,1);
461
+      #define EDIT_AMAX_E(N) EDIT_ITEM_FAST(long5_25, MSG_AMAX LCD_STR_E##N, &planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(N)], 100, max_accel_edit_scaled.e, [](){ _reset_e_acceleration_rate(N); })
462
+      EDIT_ITEM_FAST(long5_25, MSG_AMAX MSG_E, &planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(active_extruder)], 100, max_accel_edit_scaled.e, [](){ planner.reset_acceleration_rates(); });
463
+      EDIT_AMAX_E(0);
464
+      EDIT_AMAX_E(1);
547 465
       #if E_STEPPERS > 2
548
-        EDIT_AMAX_E(3,2);
466
+        EDIT_AMAX_E(2);
549 467
         #if E_STEPPERS > 3
550
-          EDIT_AMAX_E(4,3);
468
+          EDIT_AMAX_E(3);
551 469
           #if E_STEPPERS > 4
552
-            EDIT_AMAX_E(5,4);
470
+            EDIT_AMAX_E(4);
553 471
             #if E_STEPPERS > 5
554
-              EDIT_AMAX_E(6,5);
472
+              EDIT_AMAX_E(5);
555 473
             #endif // E_STEPPERS > 5
556 474
           #endif // E_STEPPERS > 4
557 475
         #endif // E_STEPPERS > 3
558 476
       #endif // E_STEPPERS > 2
559 477
     #elif E_STEPPERS
560
-      EDIT_ITEM_FAST(long5_25, MSG_AMAX MSG_E, &planner.settings.max_acceleration_mm_per_s2[E_AXIS], 100, max_accel_edit_scaled.e, _reset_acceleration_rates);
478
+      EDIT_ITEM_FAST(long5_25, MSG_AMAX MSG_E, &planner.settings.max_acceleration_mm_per_s2[E_AXIS], 100, max_accel_edit_scaled.e, [](){ planner.reset_acceleration_rates(); });
561 479
     #endif
562 480
 
563 481
     END_MENU();
@@ -606,30 +524,30 @@ void menu_backlash();
606 524
     START_MENU();
607 525
     BACK_ITEM(MSG_ADVANCED_SETTINGS);
608 526
 
609
-    #define EDIT_QSTEPS(Q) EDIT_ITEM_FAST(float51, MSG_##Q##STEPS, &planner.settings.axis_steps_per_mm[_AXIS(Q)], 5, 9999, _planner_refresh_positioning)
527
+    #define EDIT_QSTEPS(Q) EDIT_ITEM_FAST(float51, MSG_##Q##STEPS, &planner.settings.axis_steps_per_mm[_AXIS(Q)], 5, 9999, [](){ planner.refresh_positioning(); })
610 528
     EDIT_QSTEPS(A);
611 529
     EDIT_QSTEPS(B);
612 530
     EDIT_QSTEPS(C);
613 531
 
614 532
     #if ENABLED(DISTINCT_E_FACTORS)
615
-      #define EDIT_ESTEPS(N,E) EDIT_ITEM_FAST(float51, MSG_E##N##STEPS, &planner.settings.axis_steps_per_mm[E_AXIS_N(E)], 5, 9999, _planner_refresh_e##E##_positioning)
616
-      EDIT_ITEM_FAST(float51, MSG_ESTEPS, &planner.settings.axis_steps_per_mm[E_AXIS_N(active_extruder)], 5, 9999, _planner_refresh_positioning);
617
-      EDIT_ESTEPS(1,0);
618
-      EDIT_ESTEPS(2,1);
533
+      #define EDIT_ESTEPS(N) EDIT_ITEM_FAST(float51, MSG_E##N##STEPS, &planner.settings.axis_steps_per_mm[E_AXIS_N(N)], 5, 9999, [](){ _planner_refresh_e_positioning(N); })
534
+      EDIT_ITEM_FAST(float51, MSG_ESTEPS, &planner.settings.axis_steps_per_mm[E_AXIS_N(active_extruder)], 5, 9999, [](){ planner.refresh_positioning(); });
535
+      EDIT_ESTEPS(0);
536
+      EDIT_ESTEPS(1);
619 537
       #if E_STEPPERS > 2
620
-        EDIT_ESTEPS(3,2);
538
+        EDIT_ESTEPS(2);
621 539
         #if E_STEPPERS > 3
622
-          EDIT_ESTEPS(4,3);
540
+          EDIT_ESTEPS(3);
623 541
           #if E_STEPPERS > 4
624
-            EDIT_ESTEPS(5,4);
542
+            EDIT_ESTEPS(4);
625 543
             #if E_STEPPERS > 5
626
-              EDIT_ESTEPS(6,5);
544
+              EDIT_ESTEPS(5);
627 545
             #endif // E_STEPPERS > 5
628 546
           #endif // E_STEPPERS > 4
629 547
         #endif // E_STEPPERS > 3
630 548
       #endif // E_STEPPERS > 2
631 549
     #elif E_STEPPERS
632
-      EDIT_ITEM_FAST(float51, MSG_ESTEPS, &planner.settings.axis_steps_per_mm[E_AXIS], 5, 9999, _planner_refresh_positioning);
550
+      EDIT_ITEM_FAST(float51, MSG_ESTEPS, &planner.settings.axis_steps_per_mm[E_AXIS], 5, 9999, [](){ planner.refresh_positioning(); });
633 551
     #endif
634 552
 
635 553
     END_MENU();
@@ -671,7 +589,7 @@ void menu_advanced_settings() {
671 589
       //
672 590
       // Set Home Offsets
673 591
       //
674
-      ACTION_ITEM(MSG_SET_HOME_OFFSETS, _lcd_set_home_offsets);
592
+      ACTION_ITEM(MSG_SET_HOME_OFFSETS, [](){ queue.inject_P(PSTR("M428")); ui.return_to_status(); });
675 593
     #endif
676 594
 
677 595
     // M203 / M205 - Feedrate items
@@ -714,17 +632,17 @@ void menu_advanced_settings() {
714 632
     #if EXTRUDERS == 1
715 633
       EDIT_ITEM(float52, MSG_ADVANCE_K, &planner.extruder_advance_K[0], 0, 999);
716 634
     #elif EXTRUDERS > 1
717
-      #define EDIT_ADVANCE_K(N) EDIT_ITEM(float52, MSG_ADVANCE_K MSG_E##N, &planner.extruder_advance_K[N-1], 0, 999)
635
+      #define EDIT_ADVANCE_K(N) EDIT_ITEM(float52, MSG_ADVANCE_K LCD_STR_E##N, &planner.extruder_advance_K[N], 0, 999)
636
+      EDIT_ADVANCE_K(0);
718 637
       EDIT_ADVANCE_K(1);
719
-      EDIT_ADVANCE_K(2);
720 638
       #if EXTRUDERS > 2
721
-        EDIT_ADVANCE_K(3);
639
+        EDIT_ADVANCE_K(2);
722 640
         #if EXTRUDERS > 3
723
-          EDIT_ADVANCE_K(4);
641
+          EDIT_ADVANCE_K(3);
724 642
           #if EXTRUDERS > 4
725
-            EDIT_ADVANCE_K(5);
643
+            EDIT_ADVANCE_K(4);
726 644
             #if EXTRUDERS > 5
727
-              EDIT_ADVANCE_K(6);
645
+              EDIT_ADVANCE_K(5);
728 646
             #endif // EXTRUDERS > 5
729 647
           #endif // EXTRUDERS > 4
730 648
         #endif // EXTRUDERS > 3

+ 5
- 3
Marlin/src/lcd/menu/menu_bed_leveling.cpp Ver arquivo

@@ -260,13 +260,15 @@ void menu_bed_leveling() {
260 260
 
261 261
   // Homed and leveling is valid? Then leveling can be toggled.
262 262
   if (is_homed && leveling_is_valid()) {
263
-    bool new_level_state = planner.leveling_active;
264
-    EDIT_ITEM(bool, MSG_BED_LEVELING, &new_level_state, _lcd_toggle_bed_leveling);
263
+    bool show_state = planner.leveling_active;
264
+    EDIT_ITEM(bool, MSG_BED_LEVELING, &show_state, _lcd_toggle_bed_leveling);
265 265
   }
266 266
 
267 267
   // Z Fade Height
268 268
   #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
269
-    EDIT_ITEM_FAST(float3, MSG_Z_FADE_HEIGHT, &lcd_z_fade_height, 0, 100, _lcd_set_z_fade_height);
269
+    // Shadow for editing the fade height
270
+    editable.decimal = planner.z_fade_height;
271
+    EDIT_ITEM_FAST(float3, MSG_Z_FADE_HEIGHT, &editable.decimal, 0, 100, [](){ set_z_fade_height(editable.decimal); });
270 272
   #endif
271 273
 
272 274
   //

+ 6
- 10
Marlin/src/lcd/menu/menu_configuration.cpp Ver arquivo

@@ -54,13 +54,6 @@ void menu_advanced_settings();
54 54
   void menu_delta_calibrate();
55 55
 #endif
56 56
 
57
-static void lcd_factory_settings() {
58
-  settings.reset();
59
-  #if HAS_BUZZER
60
-    ui.completion_feedback();
61
-  #endif
62
-}
63
-
64 57
 #if ENABLED(LCD_PROGRESS_BAR_TEST)
65 58
 
66 59
   #include "../lcdprint.h"
@@ -166,12 +159,10 @@ static void lcd_factory_settings() {
166 159
 
167 160
     GCODES_ITEM(MSG_IDEX_MODE_AUTOPARK,  PSTR("M605 S1\nG28 X\nG1 X100"));
168 161
     const bool need_g28 = !(TEST(axis_known_position, Y_AXIS) && TEST(axis_known_position, Z_AXIS));
169
-
170 162
     GCODES_ITEM(MSG_IDEX_MODE_DUPLICATE, need_g28
171 163
       ? PSTR("M605 S1\nT0\nG28\nM605 S2 X200\nG28 X\nG1 X100")                // If Y or Z is not homed, do a full G28 first
172 164
       : PSTR("M605 S1\nT0\nM605 S2 X200\nG28 X\nG1 X100")
173 165
     );
174
-
175 166
     GCODES_ITEM(MSG_IDEX_MODE_MIRRORED_COPY, need_g28
176 167
       ? PSTR("M605 S1\nT0\nG28\nM605 S2 X200\nG28 X\nG1 X100\nM605 S3 X200")  // If Y or Z is not homed, do a full G28 first
177 168
       : PSTR("M605 S1\nT0\nM605 S2 X200\nG28 X\nG1 X100\nM605 S3 X200")
@@ -408,7 +399,12 @@ void menu_configuration() {
408 399
   #endif
409 400
 
410 401
   if (!busy)
411
-    ACTION_ITEM(MSG_RESTORE_FAILSAFE, lcd_factory_settings);
402
+    ACTION_ITEM(MSG_RESTORE_FAILSAFE, [](){
403
+      settings.reset();
404
+      #if HAS_BUZZER
405
+        ui.completion_feedback();
406
+      #endif
407
+    });
412 408
 
413 409
   END_MENU();
414 410
 }

+ 5
- 21
Marlin/src/lcd/menu/menu_custom.cpp Ver arquivo

@@ -47,39 +47,23 @@ void _lcd_user_gcode(PGM_P const cmd) {
47 47
   #endif
48 48
 }
49 49
 
50
-#if defined(USER_DESC_1) && defined(USER_GCODE_1)
51
-  void lcd_user_gcode_1() { _lcd_user_gcode(PSTR(USER_GCODE_1 _DONE_SCRIPT)); }
52
-#endif
53
-#if defined(USER_DESC_2) && defined(USER_GCODE_2)
54
-  void lcd_user_gcode_2() { _lcd_user_gcode(PSTR(USER_GCODE_2 _DONE_SCRIPT)); }
55
-#endif
56
-#if defined(USER_DESC_3) && defined(USER_GCODE_3)
57
-  void lcd_user_gcode_3() { _lcd_user_gcode(PSTR(USER_GCODE_3 _DONE_SCRIPT)); }
58
-#endif
59
-#if defined(USER_DESC_4) && defined(USER_GCODE_4)
60
-  void lcd_user_gcode_4() { _lcd_user_gcode(PSTR(USER_GCODE_4 _DONE_SCRIPT)); }
61
-#endif
62
-#if defined(USER_DESC_5) && defined(USER_GCODE_5)
63
-  void lcd_user_gcode_5() { _lcd_user_gcode(PSTR(USER_GCODE_5 _DONE_SCRIPT)); }
64
-#endif
65
-
66 50
 void menu_user() {
67 51
   START_MENU();
68 52
   BACK_ITEM(MSG_MAIN);
69 53
   #if defined(USER_DESC_1) && defined(USER_GCODE_1)
70
-    ACTION_ITEM(USER_DESC_1, lcd_user_gcode_1);
54
+    ACTION_ITEM(USER_DESC_1, [](){ _lcd_user_gcode(PSTR(USER_GCODE_1 _DONE_SCRIPT)); });
71 55
   #endif
72 56
   #if defined(USER_DESC_2) && defined(USER_GCODE_2)
73
-    ACTION_ITEM(USER_DESC_2, lcd_user_gcode_2);
57
+    ACTION_ITEM(USER_DESC_2, [](){ _lcd_user_gcode(PSTR(USER_GCODE_2 _DONE_SCRIPT)); });
74 58
   #endif
75 59
   #if defined(USER_DESC_3) && defined(USER_GCODE_3)
76
-    ACTION_ITEM(USER_DESC_3, lcd_user_gcode_3);
60
+    ACTION_ITEM(USER_DESC_3, [](){ _lcd_user_gcode(PSTR(USER_GCODE_3 _DONE_SCRIPT)); });
77 61
   #endif
78 62
   #if defined(USER_DESC_4) && defined(USER_GCODE_4)
79
-    ACTION_ITEM(USER_DESC_4, lcd_user_gcode_4);
63
+    ACTION_ITEM(USER_DESC_4, [](){ _lcd_user_gcode(PSTR(USER_GCODE_4 _DONE_SCRIPT)); });
80 64
   #endif
81 65
   #if defined(USER_DESC_5) && defined(USER_GCODE_5)
82
-    ACTION_ITEM(USER_DESC_5, lcd_user_gcode_5);
66
+    ACTION_ITEM(USER_DESC_5, [](){ _lcd_user_gcode(PSTR(USER_GCODE_5 _DONE_SCRIPT)); });
83 67
   #endif
84 68
   END_MENU();
85 69
 }

+ 6
- 7
Marlin/src/lcd/menu/menu_delta_calibrate.cpp Ver arquivo

@@ -94,14 +94,13 @@ void _man_probe_pt(const xy_pos_t &xy) {
94 94
 
95 95
 #endif
96 96
 
97
-void _recalc_delta_settings() {
98
-  #if HAS_LEVELING
99
-    reset_bed_level(); // After changing kinematics bed-level data is no longer valid
100
-  #endif
101
-  recalc_delta_settings();
102
-}
103
-
104 97
 void lcd_delta_settings() {
98
+  auto _recalc_delta_settings = []() {
99
+    #if HAS_LEVELING
100
+      reset_bed_level(); // After changing kinematics bed-level data is no longer valid
101
+    #endif
102
+    recalc_delta_settings();
103
+  };
105 104
   START_MENU();
106 105
   BACK_ITEM(MSG_DELTA_CALIBRATE);
107 106
   EDIT_ITEM(float52sign, MSG_DELTA_HEIGHT, &delta_height, delta_height - 10, delta_height + 10, _recalc_delta_settings);

+ 59
- 109
Marlin/src/lcd/menu/menu_filament.cpp Ver arquivo

@@ -55,17 +55,19 @@ inline PGM_P _change_filament_temp_command() {
55 55
   return PSTR(MSG_FILAMENTCHANGE);
56 56
 }
57 57
 
58
+// Initiate Filament Load/Unload/Change at the specified temperature
58 59
 static void _change_filament_temp(const uint16_t temperature) {
59 60
   char cmd[11];
60 61
   sprintf_P(cmd, _change_filament_temp_command(), _change_filament_temp_extruder);
61 62
   thermalManager.setTargetHotend(temperature, _change_filament_temp_extruder);
62 63
   lcd_enqueue_one_now(cmd);
63 64
 }
64
-inline void _lcd_change_filament_temp_1_func()    { _change_filament_temp(ui.preheat_hotend_temp[0]); }
65
-inline void _lcd_change_filament_temp_2_func()    { _change_filament_temp(ui.preheat_hotend_temp[1]); }
66
-inline void _lcd_change_filament_temp_custom_cb() { _change_filament_temp(thermalManager.temp_hotend[_change_filament_temp_extruder].target); }
67 65
 
68
-static PGM_P change_filament_header(const PauseMode mode) {
66
+//
67
+// Menu to choose the temperature and start Filament Change
68
+//
69
+
70
+inline PGM_P change_filament_header(const PauseMode mode) {
69 71
   switch (mode) {
70 72
     case PAUSE_MODE_LOAD_FILAMENT:
71 73
       return PSTR(MSG_FILAMENTLOAD);
@@ -76,66 +78,19 @@ static PGM_P change_filament_header(const PauseMode mode) {
76 78
   return PSTR(MSG_FILAMENTCHANGE);
77 79
 }
78 80
 
79
-void _menu_temp_filament_op(const PauseMode inMode, const int8_t extruder) {
80
-  // If no print is active, just label as "filament change"
81
-  const PauseMode mode = (inMode != PAUSE_MODE_PAUSE_PRINT || printingIsPaused()) ? inMode : PAUSE_MODE_CHANGE_FILAMENT;
81
+void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
82 82
   _change_filament_temp_mode = mode;
83 83
   _change_filament_temp_extruder = extruder;
84 84
   START_MENU();
85 85
   if (LCD_HEIGHT >= 4) STATIC_ITEM_P(change_filament_header(mode), SS_CENTER|SS_INVERT);
86 86
   BACK_ITEM(MSG_BACK);
87
-  ACTION_ITEM(MSG_PREHEAT_1, _lcd_change_filament_temp_1_func);
88
-  ACTION_ITEM(MSG_PREHEAT_2, _lcd_change_filament_temp_2_func);
89
-  uint16_t max_temp;
90
-  switch (extruder) {
91
-    default: max_temp = HEATER_0_MAXTEMP;
92
-    #if HOTENDS > 1
93
-      case 1: max_temp = HEATER_1_MAXTEMP; break;
94
-      #if HOTENDS > 2
95
-        case 2: max_temp = HEATER_2_MAXTEMP; break;
96
-        #if HOTENDS > 3
97
-          case 3: max_temp = HEATER_3_MAXTEMP; break;
98
-          #if HOTENDS > 4
99
-            case 4: max_temp = HEATER_4_MAXTEMP; break;
100
-            #if HOTENDS > 5
101
-              case 5: max_temp = HEATER_5_MAXTEMP; break;
102
-            #endif
103
-          #endif
104
-        #endif
105
-      #endif
106
-    #endif
107
-  }
108
-  EDIT_ITEM_FAST(int3, MSG_PREHEAT_CUSTOM, &thermalManager.temp_hotend[_change_filament_temp_extruder].target, EXTRUDE_MINTEMP, max_temp - 15, _lcd_change_filament_temp_custom_cb);
87
+  ACTION_ITEM(MSG_PREHEAT_1, [](){ _change_filament_temp(ui.preheat_hotend_temp[0]); });
88
+  ACTION_ITEM(MSG_PREHEAT_2, [](){ _change_filament_temp(ui.preheat_hotend_temp[1]); });
89
+  EDIT_ITEM_FAST(int3, MSG_PREHEAT_CUSTOM, &thermalManager.temp_hotend[_change_filament_temp_extruder].target, EXTRUDE_MINTEMP, heater_maxtemp[extruder] - 15, [](){
90
+    _change_filament_temp(thermalManager.temp_hotend[_change_filament_temp_extruder].target);
91
+  });
109 92
   END_MENU();
110 93
 }
111
-#if E_STEPPERS
112
-  void menu_temp_e0_filament_change()  { _menu_temp_filament_op(PAUSE_MODE_PAUSE_PRINT, 0); }
113
-  void menu_temp_e0_filament_load()    { _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 0); }
114
-  void menu_temp_e0_filament_unload()  { _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 0); }
115
-  #if E_STEPPERS > 1
116
-    void menu_temp_e1_filament_change()  { _menu_temp_filament_op(PAUSE_MODE_PAUSE_PRINT, 1); }
117
-    void menu_temp_e1_filament_load()    { _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 1); }
118
-    void menu_temp_e1_filament_unload()  { _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 1); }
119
-    #if ENABLED(FILAMENT_UNLOAD_ALL_EXTRUDERS)
120
-      void menu_unload_filament_all_temp() { _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, -1); }
121
-    #endif
122
-    #if E_STEPPERS > 2
123
-      void menu_temp_e2_filament_change()  { _menu_temp_filament_op(PAUSE_MODE_PAUSE_PRINT, 2); }
124
-      void menu_temp_e2_filament_load()    { _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 2); }
125
-      void menu_temp_e2_filament_unload()  { _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 2); }
126
-      #if E_STEPPERS > 3
127
-        void menu_temp_e3_filament_change()  { _menu_temp_filament_op(PAUSE_MODE_PAUSE_PRINT, 3); }
128
-        void menu_temp_e3_filament_load()    { _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 3); }
129
-        void menu_temp_e3_filament_unload()  { _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 3); }
130
-        #if E_STEPPERS > 4
131
-          void menu_temp_e4_filament_change()  { _menu_temp_filament_op(PAUSE_MODE_PAUSE_PRINT, 4); }
132
-          void menu_temp_e4_filament_load()    { _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 4); }
133
-          void menu_temp_e4_filament_unload()  { _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 4); }
134
-        #endif // E_STEPPERS > 4
135
-      #endif // E_STEPPERS > 3
136
-    #endif // E_STEPPERS > 2
137
-  #endif // E_STEPPERS > 1
138
-#endif // E_STEPPERS
139 94
 
140 95
 /**
141 96
  *
@@ -147,46 +102,49 @@ void _menu_temp_filament_op(const PauseMode inMode, const int8_t extruder) {
147 102
     START_MENU();
148 103
     BACK_ITEM(MSG_MAIN);
149 104
 
105
+    // Say "filament change" when no print is active
106
+    editable.int8 = printingIsPaused() ? PAUSE_MODE_PAUSE_PRINT : PAUSE_MODE_CHANGE_FILAMENT;
107
+
150 108
     // Change filament
151 109
     #if E_STEPPERS == 1
152
-      PGM_P msg0 = PSTR(MSG_FILAMENTCHANGE);
110
+      PGM_P const msg0 = PSTR(MSG_FILAMENTCHANGE);
153 111
       if (thermalManager.targetTooColdToExtrude(active_extruder))
154
-        MENU_ITEM_P(submenu, msg0, menu_temp_e0_filament_change);
112
+        MENU_ITEM_P(submenu, msg0, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 0); });
155 113
       else
156 114
         MENU_ITEM_P(gcode, msg0, PSTR("M600 B0"));
157 115
     #else
158
-      PGM_P msg0 = PSTR(MSG_FILAMENTCHANGE " " MSG_E1);
159
-      PGM_P msg1 = PSTR(MSG_FILAMENTCHANGE " " MSG_E2);
116
+      PGM_P const msg0 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E0);
117
+      PGM_P const msg1 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E1);
160 118
       if (thermalManager.targetTooColdToExtrude(0))
161
-        MENU_ITEM_P(submenu, msg0, menu_temp_e0_filament_change);
119
+        MENU_ITEM_P(submenu, msg0, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 0); });
162 120
       else
163 121
         MENU_ITEM_P(gcode, msg0, PSTR("M600 B0 T0"));
164 122
       if (thermalManager.targetTooColdToExtrude(1))
165
-        MENU_ITEM_P(submenu, msg1, menu_temp_e1_filament_change);
123
+        MENU_ITEM_P(submenu, msg1, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 1); });
166 124
       else
167 125
         MENU_ITEM_P(gcode, msg1, PSTR("M600 B0 T1"));
168 126
       #if E_STEPPERS > 2
169
-        PGM_P msg2 = PSTR(MSG_FILAMENTCHANGE " " MSG_E3);
127
+        PGM_P const msg2 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E2);
170 128
         if (thermalManager.targetTooColdToExtrude(2))
171
-          MENU_ITEM_P(submenu, msg2, menu_temp_e2_filament_change);
129
+          MENU_ITEM_P(submenu, msg2, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 2); });
172 130
         else
173 131
           MENU_ITEM_P(gcode, msg2, PSTR("M600 B0 T2"));
174 132
         #if E_STEPPERS > 3
175
-          PGM_P msg3 = PSTR(MSG_FILAMENTCHANGE " " MSG_E4);
133
+          PGM_P const msg3 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E3);
176 134
           if (thermalManager.targetTooColdToExtrude(3))
177
-            MENU_ITEM_P(submenu, msg3, menu_temp_e3_filament_change);
135
+            MENU_ITEM_P(submenu, msg3, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 3); });
178 136
           else
179 137
             MENU_ITEM_P(gcode, msg3, PSTR("M600 B0 T3"));
180 138
           #if E_STEPPERS > 4
181
-            PGM_P msg4 = PSTR(MSG_FILAMENTCHANGE " " MSG_E5);
139
+            PGM_P const msg4 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E4);
182 140
             if (thermalManager.targetTooColdToExtrude(4))
183
-              MENU_ITEM_P(submenu, msg4, menu_temp_e4_filament_change);
141
+              MENU_ITEM_P(submenu, msg4, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 4); });
184 142
             else
185 143
               MENU_ITEM_P(gcode, msg4, PSTR("M600 B0 T4"));
186 144
             #if E_STEPPERS > 5
187
-              PGM_P msg5 = PSTR(MSG_FILAMENTCHANGE " " MSG_E6);
145
+              PGM_P const msg5 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E5);
188 146
               if (thermalManager.targetTooColdToExtrude(5))
189
-                MENU_ITEM_P(submenu, msg5, menu_temp_e5_filament_change);
147
+                MENU_ITEM_P(submenu, msg5, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 5); });
190 148
               else
191 149
                 MENU_ITEM_P(gcode, msg5, PSTR("M600 B0 T5"));
192 150
             #endif // E_STEPPERS > 5
@@ -199,44 +157,44 @@ void _menu_temp_filament_op(const PauseMode inMode, const int8_t extruder) {
199 157
       if (!printer_busy()) {
200 158
         // Load filament
201 159
         #if E_STEPPERS == 1
202
-          PGM_P msg0 = PSTR(MSG_FILAMENTLOAD);
160
+          PGM_P const msg0 = PSTR(MSG_FILAMENTLOAD);
203 161
           if (thermalManager.targetTooColdToExtrude(active_extruder))
204
-            MENU_ITEM_P(submenu, msg0, menu_temp_e0_filament_load);
162
+            MENU_ITEM_P(submenu, msg0, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 0); });
205 163
           else
206 164
             MENU_ITEM_P(gcode, msg0, PSTR("M701"));
207 165
         #else
208
-          PGM_P msg0 = PSTR(MSG_FILAMENTLOAD " " MSG_E1);
209
-          PGM_P msg1 = PSTR(MSG_FILAMENTLOAD " " MSG_E2);
166
+          PGM_P const msg0 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E0);
167
+          PGM_P const msg1 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E1);
210 168
           if (thermalManager.targetTooColdToExtrude(0))
211
-            MENU_ITEM_P(submenu, msg0, menu_temp_e0_filament_load);
169
+            MENU_ITEM_P(submenu, msg0, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 0); });
212 170
           else
213 171
             MENU_ITEM_P(gcode, msg0, PSTR("M701 T0"));
214 172
           if (thermalManager.targetTooColdToExtrude(1))
215
-            MENU_ITEM_P(submenu, msg1, menu_temp_e1_filament_load);
173
+            MENU_ITEM_P(submenu, msg1, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 1); });
216 174
           else
217 175
             MENU_ITEM_P(gcode, msg1, PSTR("M701 T1"));
218 176
           #if E_STEPPERS > 2
219
-            PGM_P msg2 = PSTR(MSG_FILAMENTLOAD " " MSG_E3);
177
+            PGM_P const msg2 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E2);
220 178
             if (thermalManager.targetTooColdToExtrude(2))
221
-              MENU_ITEM_P(submenu, msg2, menu_temp_e2_filament_load);
179
+              MENU_ITEM_P(submenu, msg2, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 2); });
222 180
             else
223 181
               MENU_ITEM_P(gcode, msg2, PSTR("M701 T2"));
224 182
             #if E_STEPPERS > 3
225
-              PGM_P msg3 = PSTR(MSG_FILAMENTLOAD " " MSG_E4);
183
+              PGM_P const msg3 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E3);
226 184
               if (thermalManager.targetTooColdToExtrude(3))
227
-                MENU_ITEM_P(submenu, msg3, menu_temp_e3_filament_load);
185
+                MENU_ITEM_P(submenu, msg3, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 3); });
228 186
               else
229 187
                 MENU_ITEM_P(gcode, msg3, PSTR("M701 T3"));
230 188
               #if E_STEPPERS > 4
231
-                PGM_P msg4 = PSTR(MSG_FILAMENTLOAD " " MSG_E5);
189
+                PGM_P const msg4 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E4);
232 190
                 if (thermalManager.targetTooColdToExtrude(4))
233
-                  MENU_ITEM_P(submenu, msg4, menu_temp_e4_filament_load);
191
+                  MENU_ITEM_P(submenu, msg4, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 4); });
234 192
                 else
235 193
                   MENU_ITEM_P(gcode, msg4, PSTR("M701 T4"));
236 194
                 #if E_STEPPERS > 5
237
-                  PGM_P msg5 = PSTR(MSG_FILAMENTLOAD " " MSG_E6);
195
+                  PGM_P const msg5 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E5);
238 196
                   if (thermalManager.targetTooColdToExtrude(5))
239
-                    MENU_ITEM_P(submenu, msg5, menu_temp_e5_filament_load);
197
+                    MENU_ITEM_P(submenu, msg5, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 5); });
240 198
                   else
241 199
                     MENU_ITEM_P(gcode, msg5, PSTR("M701 T5"));
242 200
                 #endif // E_STEPPERS > 5
@@ -250,7 +208,7 @@ void _menu_temp_filament_op(const PauseMode inMode, const int8_t extruder) {
250 208
           if (thermalManager.targetHotEnoughToExtrude(active_extruder))
251 209
             GCODES_ITEM(MSG_FILAMENTUNLOAD, PSTR("M702"));
252 210
           else
253
-            SUBMENU(MSG_FILAMENTUNLOAD, menu_temp_e0_filament_unload);
211
+            SUBMENU(MSG_FILAMENTUNLOAD, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 0); });
254 212
         #else
255 213
           #if ENABLED(FILAMENT_UNLOAD_ALL_EXTRUDERS)
256 214
             if (JOIN_N(E_STEPPERS, &&,
@@ -262,36 +220,36 @@ void _menu_temp_filament_op(const PauseMode inMode, const int8_t extruder) {
262 220
               thermalManager.targetHotEnoughToExtrude(5))
263 221
             ) GCODES_ITEM(MSG_FILAMENTUNLOAD_ALL, PSTR("M702"));
264 222
           else
265
-            SUBMENU(MSG_FILAMENTUNLOAD_ALL, menu_unload_filament_all_temp);
223
+            SUBMENU(MSG_FILAMENTUNLOAD_ALL, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, -1); });
266 224
           #endif
267 225
           if (thermalManager.targetHotEnoughToExtrude(0))
268
-            GCODES_ITEM(MSG_FILAMENTUNLOAD " " MSG_E1, PSTR("M702 T0"));
226
+            GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E0, PSTR("M702 T0"));
269 227
           else
270
-            SUBMENU(MSG_FILAMENTUNLOAD " " MSG_E1, menu_temp_e0_filament_unload);
228
+            SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E0, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 0); });
271 229
           if (thermalManager.targetHotEnoughToExtrude(1))
272
-            GCODES_ITEM(MSG_FILAMENTUNLOAD " " MSG_E2, PSTR("M702 T1"));
230
+            GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E1, PSTR("M702 T1"));
273 231
           else
274
-            SUBMENU(MSG_FILAMENTUNLOAD " " MSG_E2, menu_temp_e1_filament_unload);
232
+            SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E1, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 1); });
275 233
           #if E_STEPPERS > 2
276 234
             if (thermalManager.targetHotEnoughToExtrude(2))
277
-              GCODES_ITEM(MSG_FILAMENTUNLOAD " " MSG_E3, PSTR("M702 T2"));
235
+              GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E2, PSTR("M702 T2"));
278 236
             else
279
-              SUBMENU(MSG_FILAMENTUNLOAD " " MSG_E3, menu_temp_e2_filament_unload);
237
+              SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E2, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 2); });
280 238
             #if E_STEPPERS > 3
281 239
               if (thermalManager.targetHotEnoughToExtrude(3))
282
-                GCODES_ITEM(MSG_FILAMENTUNLOAD " " MSG_E4, PSTR("M702 T3"));
240
+                GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E3, PSTR("M702 T3"));
283 241
               else
284
-                SUBMENU(MSG_FILAMENTUNLOAD " " MSG_E4, menu_temp_e3_filament_unload);
242
+                SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E3, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 3); });
285 243
               #if E_STEPPERS > 4
286 244
                 if (thermalManager.targetHotEnoughToExtrude(4))
287
-                  GCODES_ITEM(MSG_FILAMENTUNLOAD " " MSG_E5, PSTR("M702 T4"));
245
+                  GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E4, PSTR("M702 T4"));
288 246
                 else
289
-                  SUBMENU(MSG_FILAMENTUNLOAD " " MSG_E5, menu_temp_e4_filament_unload);
247
+                  SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E4, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 4); });
290 248
                 #if E_STEPPERS > 5
291 249
                   if (thermalManager.targetHotEnoughToExtrude(5))
292
-                    GCODES_ITEM(MSG_FILAMENTUNLOAD " " MSG_E6, PSTR("M702 T5"));
250
+                    GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E5, PSTR("M702 T5"));
293 251
                   else
294
-                    SUBMENU(MSG_FILAMENTUNLOAD " " MSG_E6, menu_temp_e5_filament_unload);
252
+                    SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E5, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 5); });
295 253
                 #endif // E_STEPPERS > 5
296 254
               #endif // E_STEPPERS > 4
297 255
             #endif // E_STEPPERS > 3
@@ -336,26 +294,18 @@ static PGM_P pause_header() {
336 294
   ++_thisItemNr; \
337 295
 }while(0)
338 296
 
339
-void lcd_pause_resume_print() {
340
-  pause_menu_response = PAUSE_RESPONSE_RESUME_PRINT;
341
-}
342
-
343
-void lcd_pause_extrude_more() {
344
-  pause_menu_response = PAUSE_RESPONSE_EXTRUDE_MORE;
345
-}
346
-
347 297
 void menu_pause_option() {
348 298
   START_MENU();
349 299
   #if LCD_HEIGHT > 2
350 300
     STATIC_ITEM(MSG_FILAMENT_CHANGE_OPTION_HEADER);
351 301
   #endif
352
-  ACTION_ITEM(MSG_FILAMENT_CHANGE_OPTION_PURGE, lcd_pause_extrude_more);
302
+  ACTION_ITEM(MSG_FILAMENT_CHANGE_OPTION_PURGE, [](){ pause_menu_response = PAUSE_RESPONSE_EXTRUDE_MORE; });
353 303
   #if HAS_FILAMENT_SENSOR
354 304
     if (runout.filament_ran_out)
355 305
       EDIT_ITEM(bool, MSG_RUNOUT_SENSOR, &runout.enabled, runout.reset);
356 306
     else
357 307
   #endif
358
-      ACTION_ITEM(MSG_FILAMENT_CHANGE_OPTION_RESUME, lcd_pause_resume_print);
308
+      ACTION_ITEM(MSG_FILAMENT_CHANGE_OPTION_RESUME, [](){ pause_menu_response = PAUSE_RESPONSE_RESUME_PRINT; });
359 309
   END_MENU();
360 310
 }
361 311
 

+ 6
- 2
Marlin/src/lcd/menu/menu_main.cpp Ver arquivo

@@ -62,7 +62,7 @@ void menu_configuration();
62 62
 #endif
63 63
 
64 64
 #if ENABLED(ADVANCED_PAUSE_FEATURE)
65
-  void menu_temp_e0_filament_change();
65
+  void _menu_temp_filament_op(const PauseMode, const int8_t);
66 66
   void menu_change_filament();
67 67
 #endif
68 68
 
@@ -170,6 +170,10 @@ void menu_main() {
170 170
   SUBMENU(MSG_CONFIGURATION, menu_configuration);
171 171
 
172 172
   #if ENABLED(CUSTOM_USER_MENUS)
173
+    #ifdef CUSTOM_USER_MENU_TITLE
174
+      #undef MSG_USER_MENU
175
+      #define MSG_USER_MENU CUSTOM_USER_MENU_TITLE
176
+    #endif
173 177
     SUBMENU(MSG_USER_MENU, menu_user);
174 178
   #endif
175 179
 
@@ -178,7 +182,7 @@ void menu_main() {
178 182
       if (thermalManager.targetHotEnoughToExtrude(active_extruder))
179 183
         GCODES_ITEM(MSG_FILAMENTCHANGE, PSTR("M600 B0"));
180 184
       else
181
-        SUBMENU(MSG_FILAMENTCHANGE, menu_temp_e0_filament_change);
185
+        SUBMENU(MSG_FILAMENTCHANGE, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 0); });
182 186
     #else
183 187
       SUBMENU(MSG_FILAMENTCHANGE, menu_change_filament);
184 188
     #endif

+ 1
- 8
Marlin/src/lcd/menu/menu_media.cpp Ver arquivo

@@ -31,13 +31,6 @@
31 31
 #include "menu.h"
32 32
 #include "../../sd/cardreader.h"
33 33
 
34
-#if !PIN_EXISTS(SD_DETECT)
35
-  void lcd_sd_refresh() {
36
-    encoderTopLine = 0;
37
-    card.mount();
38
-  }
39
-#endif
40
-
41 34
 void lcd_sd_updir() {
42 35
   ui.encoderPosition = card.cdup() ? ENCODER_STEPS_PER_MENU_ITEM : 0;
43 36
   encoderTopLine = 0;
@@ -141,7 +134,7 @@ void menu_media() {
141 134
   BACK_ITEM(MSG_MAIN);
142 135
   if (card.flag.workDirIsRoot) {
143 136
     #if !PIN_EXISTS(SD_DETECT)
144
-      ACTION_ITEM(LCD_STR_REFRESH MSG_REFRESH, lcd_sd_refresh);
137
+      ACTION_ITEM(LCD_STR_REFRESH MSG_REFRESH, [](){ encoderTopLine = 0; card.mount(); });
145 138
     #endif
146 139
   }
147 140
   else if (card.isMounted())

+ 25
- 50
Marlin/src/lcd/menu/menu_mmu2.cpp Ver arquivo

@@ -42,15 +42,10 @@ void _mmu2_load_filamentToNozzle(uint8_t index) {
42 42
   if (mmu2.load_filament_to_nozzle(index)) ui.reset_status();
43 43
 }
44 44
 
45
-inline void action_mmu2_load_filament_to_nozzl_e(const uint8_t tool) {
45
+inline void action_mmu2_load_filament_to_nozzle(const uint8_t tool) {
46 46
   _mmu2_load_filamentToNozzle(tool);
47 47
   ui.return_to_status();
48 48
 }
49
-inline void action_mmu2_load_filament_to_nozzle_0() { action_mmu2_load_filament_to_nozzl_e(0); }
50
-inline void action_mmu2_load_filament_to_nozzle_1() { action_mmu2_load_filament_to_nozzl_e(1); }
51
-inline void action_mmu2_load_filament_to_nozzle_2() { action_mmu2_load_filament_to_nozzl_e(2); }
52
-inline void action_mmu2_load_filament_to_nozzle_3() { action_mmu2_load_filament_to_nozzl_e(3); }
53
-inline void action_mmu2_load_filament_to_nozzle_4() { action_mmu2_load_filament_to_nozzl_e(4); }
54 49
 
55 50
 void _mmu2_load_filament(uint8_t index) {
56 51
   ui.return_to_status();
@@ -63,32 +58,27 @@ void action_mmu2_load_all() {
63 58
     _mmu2_load_filament(i);
64 59
   ui.return_to_status();
65 60
 }
66
-inline void action_mmu2_load_filament_0() { _mmu2_load_filament(0); }
67
-inline void action_mmu2_load_filament_1() { _mmu2_load_filament(1); }
68
-inline void action_mmu2_load_filament_2() { _mmu2_load_filament(2); }
69
-inline void action_mmu2_load_filament_3() { _mmu2_load_filament(3); }
70
-inline void action_mmu2_load_filament_4() { _mmu2_load_filament(4); }
71 61
 
72 62
 void menu_mmu2_load_filament() {
73 63
   START_MENU();
74 64
   BACK_ITEM(MSG_MMU2_MENU);
75 65
   ACTION_ITEM(MSG_MMU2_ALL, action_mmu2_load_all);
76
-  ACTION_ITEM(MSG_MMU2_FILAMENT0, action_mmu2_load_filament_0);
77
-  ACTION_ITEM(MSG_MMU2_FILAMENT1, action_mmu2_load_filament_1);
78
-  ACTION_ITEM(MSG_MMU2_FILAMENT2, action_mmu2_load_filament_2);
79
-  ACTION_ITEM(MSG_MMU2_FILAMENT3, action_mmu2_load_filament_3);
80
-  ACTION_ITEM(MSG_MMU2_FILAMENT4, action_mmu2_load_filament_4);
66
+  ACTION_ITEM(MSG_MMU2_FILAMENT0, [](){ _mmu2_load_filament(0); });
67
+  ACTION_ITEM(MSG_MMU2_FILAMENT1, [](){ _mmu2_load_filament(1); });
68
+  ACTION_ITEM(MSG_MMU2_FILAMENT2, [](){ _mmu2_load_filament(2); });
69
+  ACTION_ITEM(MSG_MMU2_FILAMENT3, [](){ _mmu2_load_filament(3); });
70
+  ACTION_ITEM(MSG_MMU2_FILAMENT4, [](){ _mmu2_load_filament(4); });
81 71
   END_MENU();
82 72
 }
83 73
 
84 74
 void menu_mmu2_load_to_nozzle() {
85 75
   START_MENU();
86 76
   BACK_ITEM(MSG_MMU2_MENU);
87
-  ACTION_ITEM(MSG_MMU2_FILAMENT0, action_mmu2_load_filament_to_nozzle_0);
88
-  ACTION_ITEM(MSG_MMU2_FILAMENT1, action_mmu2_load_filament_to_nozzle_1);
89
-  ACTION_ITEM(MSG_MMU2_FILAMENT2, action_mmu2_load_filament_to_nozzle_2);
90
-  ACTION_ITEM(MSG_MMU2_FILAMENT3, action_mmu2_load_filament_to_nozzle_3);
91
-  ACTION_ITEM(MSG_MMU2_FILAMENT4, action_mmu2_load_filament_to_nozzle_4);
77
+  ACTION_ITEM(MSG_MMU2_FILAMENT0, [](){ action_mmu2_load_filament_to_nozzle(0); });
78
+  ACTION_ITEM(MSG_MMU2_FILAMENT1, [](){ action_mmu2_load_filament_to_nozzle(1); });
79
+  ACTION_ITEM(MSG_MMU2_FILAMENT2, [](){ action_mmu2_load_filament_to_nozzle(2); });
80
+  ACTION_ITEM(MSG_MMU2_FILAMENT3, [](){ action_mmu2_load_filament_to_nozzle(3); });
81
+  ACTION_ITEM(MSG_MMU2_FILAMENT4, [](){ action_mmu2_load_filament_to_nozzle(4); });
92 82
   END_MENU();
93 83
 }
94 84
 
@@ -102,11 +92,6 @@ void _mmu2_eject_filament(uint8_t index) {
102 92
   ui.status_printf_P(0, PSTR(MSG_MMU2_EJECTING_FILAMENT), int(index + 1));
103 93
   if (mmu2.eject_filament(index, true)) ui.reset_status();
104 94
 }
105
-inline void action_mmu2_eject_filament_0() { _mmu2_eject_filament(0); }
106
-inline void action_mmu2_eject_filament_1() { _mmu2_eject_filament(1); }
107
-inline void action_mmu2_eject_filament_2() { _mmu2_eject_filament(2); }
108
-inline void action_mmu2_eject_filament_3() { _mmu2_eject_filament(3); }
109
-inline void action_mmu2_eject_filament_4() { _mmu2_eject_filament(4); }
110 95
 
111 96
 void action_mmu2_unload_filament() {
112 97
   ui.reset_status();
@@ -119,11 +104,11 @@ void action_mmu2_unload_filament() {
119 104
 void menu_mmu2_eject_filament() {
120 105
   START_MENU();
121 106
   BACK_ITEM(MSG_MMU2_MENU);
122
-  ACTION_ITEM(MSG_MMU2_FILAMENT0, action_mmu2_eject_filament_0);
123
-  ACTION_ITEM(MSG_MMU2_FILAMENT1, action_mmu2_eject_filament_1);
124
-  ACTION_ITEM(MSG_MMU2_FILAMENT2, action_mmu2_eject_filament_2);
125
-  ACTION_ITEM(MSG_MMU2_FILAMENT3, action_mmu2_eject_filament_3);
126
-  ACTION_ITEM(MSG_MMU2_FILAMENT4, action_mmu2_eject_filament_4);
107
+  ACTION_ITEM(MSG_MMU2_FILAMENT0, [](){ _mmu2_eject_filament(0); });
108
+  ACTION_ITEM(MSG_MMU2_FILAMENT1, [](){ _mmu2_eject_filament(1); });
109
+  ACTION_ITEM(MSG_MMU2_FILAMENT2, [](){ _mmu2_eject_filament(2); });
110
+  ACTION_ITEM(MSG_MMU2_FILAMENT3, [](){ _mmu2_eject_filament(3); });
111
+  ACTION_ITEM(MSG_MMU2_FILAMENT4, [](){ _mmu2_eject_filament(4); });
127 112
   END_MENU();
128 113
 }
129 114
 
@@ -155,22 +140,17 @@ inline void action_mmu2_choose(const uint8_t tool) {
155 140
   currentTool = tool;
156 141
   mmuMenuWait = false;
157 142
 }
158
-inline void action_mmu2_choose0() { action_mmu2_choose(0); }
159
-inline void action_mmu2_choose1() { action_mmu2_choose(1); }
160
-inline void action_mmu2_choose2() { action_mmu2_choose(2); }
161
-inline void action_mmu2_choose3() { action_mmu2_choose(3); }
162
-inline void action_mmu2_choose4() { action_mmu2_choose(4); }
163 143
 
164 144
 void menu_mmu2_choose_filament() {
165 145
   START_MENU();
166 146
   #if LCD_HEIGHT > 2
167 147
     STATIC_ITEM(MSG_MMU2_CHOOSE_FILAMENT_HEADER, SS_CENTER|SS_INVERT);
168 148
   #endif
169
-  ACTION_ITEM(MSG_MMU2_FILAMENT0, action_mmu2_choose0);
170
-  ACTION_ITEM(MSG_MMU2_FILAMENT1, action_mmu2_choose1);
171
-  ACTION_ITEM(MSG_MMU2_FILAMENT2, action_mmu2_choose2);
172
-  ACTION_ITEM(MSG_MMU2_FILAMENT3, action_mmu2_choose3);
173
-  ACTION_ITEM(MSG_MMU2_FILAMENT4, action_mmu2_choose4);
149
+  ACTION_ITEM(MSG_MMU2_FILAMENT0, [](){ action_mmu2_choose(0); });
150
+  ACTION_ITEM(MSG_MMU2_FILAMENT1, [](){ action_mmu2_choose(1); });
151
+  ACTION_ITEM(MSG_MMU2_FILAMENT2, [](){ action_mmu2_choose(2); });
152
+  ACTION_ITEM(MSG_MMU2_FILAMENT3, [](){ action_mmu2_choose(3); });
153
+  ACTION_ITEM(MSG_MMU2_FILAMENT4, [](){ action_mmu2_choose(4); });
174 154
   END_MENU();
175 155
 }
176 156
 
@@ -178,21 +158,16 @@ void menu_mmu2_choose_filament() {
178 158
 // MMU2 Filament Runout
179 159
 //
180 160
 
181
-inline void action_mmu2_M600_load_current_filament()         { mmu2.load_filament(currentTool); }
182
-inline void action_mmu2_M600_load_current_filament_to_nozzle() { mmu2.load_filament_to_nozzle(currentTool); }
183
-inline void action_mmu2_M600_unload_filament()              { mmu2.unload(); }
184
-inline void action_mmu2_M600_resume()                      { mmuMenuWait = false; }
185
-
186 161
 void menu_mmu2_pause() {
187 162
   currentTool = mmu2.get_current_tool();
188 163
   START_MENU();
189 164
   #if LCD_HEIGHT > 2
190 165
     STATIC_ITEM(MSG_MMU2_FILAMENT_CHANGE_HEADER, SS_CENTER|SS_INVERT);
191 166
   #endif
192
-  ACTION_ITEM(MSG_MMU2_RESUME, action_mmu2_M600_resume);
193
-  ACTION_ITEM(MSG_MMU2_UNLOAD_FILAMENT, action_mmu2_M600_unload_filament);
194
-  ACTION_ITEM(MSG_MMU2_LOAD_FILAMENT, action_mmu2_M600_load_current_filament);
195
-  ACTION_ITEM(MSG_MMU2_LOAD_TO_NOZZLE, action_mmu2_M600_load_current_filament_to_nozzle);
167
+  ACTION_ITEM(MSG_MMU2_RESUME, [](){ mmuMenuWait = false; });
168
+  ACTION_ITEM(MSG_MMU2_UNLOAD_FILAMENT, [](){ mmu2.unload(); });
169
+  ACTION_ITEM(MSG_MMU2_LOAD_FILAMENT, [](){ mmu2.load_filament(currentTool); });
170
+  ACTION_ITEM(MSG_MMU2_LOAD_TO_NOZZLE, [](){ mmu2.load_filament_to_nozzle(currentTool); });
196 171
   END_MENU();
197 172
 }
198 173
 

+ 46
- 99
Marlin/src/lcd/menu/menu_motion.cpp Ver arquivo

@@ -161,7 +161,7 @@ void lcd_move_z() { _lcd_move_xyz(PSTR(MSG_MOVE_Z), Z_AXIS); }
161 161
 
162 162
 #if E_MANUAL
163 163
 
164
-  static void _lcd_move_e(
164
+  static void lcd_move_e(
165 165
     #if E_MANUAL > 1
166 166
       const int8_t eindex=-1
167 167
     #endif
@@ -190,16 +190,16 @@ void lcd_move_z() { _lcd_move_xyz(PSTR(MSG_MOVE_Z), Z_AXIS); }
190 190
         pos_label = PSTR(MSG_MOVE_E);
191 191
       #else
192 192
         switch (eindex) {
193
-          default: pos_label = PSTR(MSG_MOVE_E MSG_MOVE_E1); break;
194
-          case 1: pos_label = PSTR(MSG_MOVE_E MSG_MOVE_E2); break;
193
+          default: pos_label = PSTR(MSG_MOVE_E LCD_STR_N0); break;
194
+          case 1: pos_label = PSTR(MSG_MOVE_E LCD_STR_N1); break;
195 195
           #if E_MANUAL > 2
196
-            case 2: pos_label = PSTR(MSG_MOVE_E MSG_MOVE_E3); break;
196
+            case 2: pos_label = PSTR(MSG_MOVE_E LCD_STR_N2); break;
197 197
             #if E_MANUAL > 3
198
-              case 3: pos_label = PSTR(MSG_MOVE_E MSG_MOVE_E4); break;
198
+              case 3: pos_label = PSTR(MSG_MOVE_E LCD_STR_N3); break;
199 199
               #if E_MANUAL > 4
200
-                case 4: pos_label = PSTR(MSG_MOVE_E MSG_MOVE_E5); break;
200
+                case 4: pos_label = PSTR(MSG_MOVE_E LCD_STR_N4); break;
201 201
                 #if E_MANUAL > 5
202
-                  case 5: pos_label = PSTR(MSG_MOVE_E MSG_MOVE_E6); break;
202
+                  case 5: pos_label = PSTR(MSG_MOVE_E LCD_STR_N5); break;
203 203
                 #endif // E_MANUAL > 5
204 204
               #endif // E_MANUAL > 4
205 205
             #endif // E_MANUAL > 3
@@ -218,24 +218,6 @@ void lcd_move_z() { _lcd_move_xyz(PSTR(MSG_MOVE_Z), Z_AXIS); }
218 218
     }
219 219
   }
220 220
 
221
-  inline void lcd_move_e() { _lcd_move_e(); }
222
-  #if E_MANUAL > 1
223
-    inline void lcd_move_e0() { _lcd_move_e(0); }
224
-    inline void lcd_move_e1() { _lcd_move_e(1); }
225
-    #if E_MANUAL > 2
226
-      inline void lcd_move_e2() { _lcd_move_e(2); }
227
-      #if E_MANUAL > 3
228
-        inline void lcd_move_e3() { _lcd_move_e(3); }
229
-        #if E_MANUAL > 4
230
-          inline void lcd_move_e4() { _lcd_move_e(4); }
231
-          #if E_MANUAL > 5
232
-            inline void lcd_move_e5() { _lcd_move_e(5); }
233
-          #endif // E_MANUAL > 5
234
-        #endif // E_MANUAL > 4
235
-      #endif // E_MANUAL > 3
236
-    #endif // E_MANUAL > 2
237
-  #endif // E_MANUAL > 1
238
-
239 221
 #endif // E_MANUAL
240 222
 
241 223
 //
@@ -253,9 +235,6 @@ void _goto_manual_move(const float scale) {
253 235
   move_menu_scale = scale;
254 236
   ui.goto_screen(_manual_move_func_ptr);
255 237
 }
256
-void menu_move_10mm()   { _goto_manual_move(10); }
257
-void menu_move_1mm()    { _goto_manual_move( 1); }
258
-void menu_move_01mm()   { _goto_manual_move( 0.1f); }
259 238
 
260 239
 void _menu_move_distance(const AxisEnum axis, const screenFunc_t func, const int8_t eindex=-1) {
261 240
   _manual_move_func_ptr = func;
@@ -280,9 +259,9 @@ void _menu_move_distance(const AxisEnum axis, const screenFunc_t func, const int
280 259
   #endif
281 260
   {
282 261
     BACK_ITEM(MSG_MOVE_AXIS);
283
-    SUBMENU(MSG_MOVE_10MM, menu_move_10mm);
284
-    SUBMENU(MSG_MOVE_1MM, menu_move_1mm);
285
-    SUBMENU(MSG_MOVE_01MM, menu_move_01mm);
262
+    SUBMENU(MSG_MOVE_10MM, [](){ _goto_manual_move(10);    });
263
+    SUBMENU(MSG_MOVE_1MM,  [](){ _goto_manual_move( 1);    });
264
+    SUBMENU(MSG_MOVE_01MM, [](){ _goto_manual_move( 0.1f); });
286 265
     if (axis == Z_AXIS && (SHORT_MANUAL_Z_MOVE) > 0.0f && (SHORT_MANUAL_Z_MOVE) < 0.1f) {
287 266
       SUBMENU("", []{ _goto_manual_move(float(SHORT_MANUAL_Z_MOVE)); });
288 267
       MENU_ITEM_ADDON_START(1);
@@ -297,36 +276,6 @@ void _menu_move_distance(const AxisEnum axis, const screenFunc_t func, const int
297 276
   }
298 277
   END_MENU();
299 278
 }
300
-void lcd_move_get_x_amount() { _menu_move_distance(X_AXIS, lcd_move_x); }
301
-void lcd_move_get_y_amount() { _menu_move_distance(Y_AXIS, lcd_move_y); }
302
-void lcd_move_get_z_amount() { _menu_move_distance(Z_AXIS, lcd_move_z); }
303
-
304
-#if E_MANUAL
305
-  void lcd_move_get_e_amount() { _menu_move_distance(E_AXIS, lcd_move_e, -1); }
306
-  #if E_MANUAL > 1
307
-    void lcd_move_get_e0_amount()     { _menu_move_distance(E_AXIS, lcd_move_e0, 0); }
308
-    void lcd_move_get_e1_amount()     { _menu_move_distance(E_AXIS, lcd_move_e1, 1); }
309
-    #if E_MANUAL > 2
310
-      void lcd_move_get_e2_amount()   { _menu_move_distance(E_AXIS, lcd_move_e2, 2); }
311
-      #if E_MANUAL > 3
312
-        void lcd_move_get_e3_amount() { _menu_move_distance(E_AXIS, lcd_move_e3, 3); }
313
-        #if E_MANUAL > 4
314
-          void lcd_move_get_e4_amount() { _menu_move_distance(E_AXIS, lcd_move_e4, 4); }
315
-          #if E_MANUAL > 5
316
-            void lcd_move_get_e5_amount() { _menu_move_distance(E_AXIS, lcd_move_e5, 5); }
317
-          #endif // E_MANUAL > 5
318
-        #endif // E_MANUAL > 4
319
-      #endif // E_MANUAL > 3
320
-    #endif // E_MANUAL > 2
321
-  #endif // E_MANUAL > 1
322
-#endif // E_MANUAL
323
-
324
-#if ENABLED(DELTA)
325
-  void lcd_lower_z_to_clip_height() {
326
-    line_to_z(delta_clip_start_height);
327
-    ui.synchronize();
328
-  }
329
-#endif
330 279
 
331 280
 void menu_move() {
332 281
   START_MENU();
@@ -350,88 +299,85 @@ void menu_move() {
350 299
         true
351 300
       #endif
352 301
     ) {
353
-      SUBMENU(MSG_MOVE_X, lcd_move_get_x_amount);
354
-      SUBMENU(MSG_MOVE_Y, lcd_move_get_y_amount);
302
+      SUBMENU(MSG_MOVE_X, [](){ _menu_move_distance(X_AXIS, lcd_move_x); });
303
+      SUBMENU(MSG_MOVE_Y, [](){ _menu_move_distance(Y_AXIS, lcd_move_y); });
355 304
     }
356 305
     #if ENABLED(DELTA)
357 306
       else
358
-        ACTION_ITEM(MSG_FREE_XY, lcd_lower_z_to_clip_height);
307
+        ACTION_ITEM(MSG_FREE_XY, [](){ line_to_z(delta_clip_start_height); ui.synchronize(); });
359 308
     #endif
360 309
 
361
-    SUBMENU(MSG_MOVE_Z, lcd_move_get_z_amount);
310
+    SUBMENU(MSG_MOVE_Z, [](){ _menu_move_distance(Y_AXIS, lcd_move_y); });
362 311
   }
363 312
   else
364 313
     GCODES_ITEM(MSG_AUTO_HOME, PSTR("G28"));
365 314
 
366 315
   #if ANY(SWITCHING_EXTRUDER, SWITCHING_NOZZLE, MAGNETIC_SWITCHING_TOOLHEAD)
367 316
 
368
-    #if EXTRUDERS == 6
369
-      switch (active_extruder) {
370
-        case 0: GCODES_ITEM(MSG_SELECT " " MSG_E2, PSTR("T1")); break;
371
-        case 1: GCODES_ITEM(MSG_SELECT " " MSG_E1, PSTR("T0")); break;
372
-        case 2: GCODES_ITEM(MSG_SELECT " " MSG_E4, PSTR("T3")); break;
373
-        case 3: GCODES_ITEM(MSG_SELECT " " MSG_E3, PSTR("T2")); break;
374
-        case 4: GCODES_ITEM(MSG_SELECT " " MSG_E6, PSTR("T5")); break;
375
-        case 5: GCODES_ITEM(MSG_SELECT " " MSG_E5, PSTR("T4")); break;
376
-      }
377
-    #elif EXTRUDERS == 5 || EXTRUDERS == 4
317
+    #if EXTRUDERS >= 4
378 318
       switch (active_extruder) {
379
-        case 0: GCODES_ITEM(MSG_SELECT " " MSG_E2, PSTR("T1")); break;
380
-        case 1: GCODES_ITEM(MSG_SELECT " " MSG_E1, PSTR("T0")); break;
381
-        case 2: GCODES_ITEM(MSG_SELECT " " MSG_E4, PSTR("T3")); break;
382
-        case 3: GCODES_ITEM(MSG_SELECT " " MSG_E3, PSTR("T2")); break;
319
+        case 0: GCODES_ITEM(MSG_SELECT " " LCD_STR_E1, PSTR("T1")); break;
320
+        case 1: GCODES_ITEM(MSG_SELECT " " LCD_STR_E0, PSTR("T0")); break;
321
+        case 2: GCODES_ITEM(MSG_SELECT " " LCD_STR_E3, PSTR("T3")); break;
322
+        case 3: GCODES_ITEM(MSG_SELECT " " LCD_STR_E2, PSTR("T2")); break;
323
+        #if EXTRUDERS == 6
324
+          case 4: GCODES_ITEM(MSG_SELECT " " LCD_STR_E5, PSTR("T5")); break;
325
+          case 5: GCODES_ITEM(MSG_SELECT " " LCD_STR_E4, PSTR("T4")); break;
326
+        #endif
383 327
       }
384 328
     #elif EXTRUDERS == 3
385 329
       if (active_extruder < 2) {
386 330
         if (active_extruder)
387
-          GCODES_ITEM(MSG_SELECT " " MSG_E1, PSTR("T0"));
331
+          GCODES_ITEM(MSG_SELECT " " LCD_STR_E0, PSTR("T0"));
388 332
         else
389
-          GCODES_ITEM(MSG_SELECT " " MSG_E2, PSTR("T1"));
333
+          GCODES_ITEM(MSG_SELECT " " LCD_STR_E1, PSTR("T1"));
390 334
       }
391 335
     #else
392 336
       if (active_extruder)
393
-        GCODES_ITEM(MSG_SELECT " " MSG_E1, PSTR("T0"));
337
+        GCODES_ITEM(MSG_SELECT " " LCD_STR_E0, PSTR("T0"));
394 338
       else
395
-        GCODES_ITEM(MSG_SELECT " " MSG_E2, PSTR("T1"));
339
+        GCODES_ITEM(MSG_SELECT " " LCD_STR_E1, PSTR("T1"));
396 340
     #endif
397 341
 
398 342
   #elif ENABLED(DUAL_X_CARRIAGE)
399 343
 
400 344
     if (active_extruder)
401
-      GCODES_ITEM(MSG_SELECT " " MSG_E1, PSTR("T0"));
345
+      GCODES_ITEM(MSG_SELECT " " LCD_STR_E0, PSTR("T0"));
402 346
     else
403
-      GCODES_ITEM(MSG_SELECT " " MSG_E2, PSTR("T1"));
347
+      GCODES_ITEM(MSG_SELECT " " LCD_STR_E1, PSTR("T1"));
404 348
 
405 349
   #endif
406 350
 
407 351
   #if E_MANUAL
408 352
 
353
+    // The current extruder
354
+    SUBMENU(MSG_MOVE_E, [](){ _menu_move_distance(E_AXIS, [](){ lcd_move_e(); }, -1); });
355
+
356
+    #define SUBMENU_MOVE_E(N) SUBMENU(MSG_MOVE_E LCD_STR_N##N, [](){ _menu_move_distance(E_AXIS, [](){ lcd_move_e(N); }, N); });
357
+
409 358
     #if EITHER(SWITCHING_EXTRUDER, SWITCHING_NOZZLE)
410 359
 
411
-      // Only the current...
412
-      SUBMENU(MSG_MOVE_E, lcd_move_get_e_amount);
413 360
       // ...and the non-switching
414 361
       #if E_MANUAL == 5
415
-        SUBMENU(MSG_MOVE_E MSG_MOVE_E5, lcd_move_get_e4_amount);
362
+        SUBMENU_MOVE_E(4);
416 363
       #elif E_MANUAL == 3
417
-        SUBMENU(MSG_MOVE_E MSG_MOVE_E3, lcd_move_get_e2_amount);
364
+        SUBMENU_MOVE_E(2);
418 365
       #endif
419 366
 
420 367
     #else
421 368
 
422 369
       // Independent extruders with one E-stepper per hotend
423
-      SUBMENU(MSG_MOVE_E, lcd_move_get_e_amount);
424 370
       #if E_MANUAL > 1
425
-        SUBMENU(MSG_MOVE_E MSG_MOVE_E1, lcd_move_get_e0_amount);
426
-        SUBMENU(MSG_MOVE_E MSG_MOVE_E2, lcd_move_get_e1_amount);
371
+        SUBMENU_MOVE_E(0);
372
+        SUBMENU_MOVE_E(1);
427 373
         #if E_MANUAL > 2
428
-          SUBMENU(MSG_MOVE_E MSG_MOVE_E3, lcd_move_get_e2_amount);
374
+          SUBMENU_MOVE_E(2);
429 375
           #if E_MANUAL > 3
430
-            SUBMENU(MSG_MOVE_E MSG_MOVE_E4, lcd_move_get_e3_amount);
376
+            SUBMENU_MOVE_E(3);
431 377
             #if E_MANUAL > 4
432
-              SUBMENU(MSG_MOVE_E MSG_MOVE_E5, lcd_move_get_e4_amount);
378
+              SUBMENU_MOVE_E(4);
433 379
               #if E_MANUAL > 5
434
-                SUBMENU(MSG_MOVE_E MSG_MOVE_E6, lcd_move_get_e5_amount);
380
+                SUBMENU_MOVE_E(5);
435 381
               #endif // E_MANUAL > 5
436 382
             #endif // E_MANUAL > 4
437 383
           #endif // E_MANUAL > 3
@@ -501,11 +447,12 @@ void menu_motion() {
501 447
       GCODES_ITEM(MSG_LEVEL_BED, PSTR("G28\nG29"));
502 448
     #endif
503 449
     if (all_axes_homed() && leveling_is_valid()) {
504
-      bool new_level_state = planner.leveling_active;
505
-      EDIT_ITEM(bool, MSG_BED_LEVELING, &new_level_state, _lcd_toggle_bed_leveling);
450
+      bool show_state = planner.leveling_active;
451
+      EDIT_ITEM(bool, MSG_BED_LEVELING, &show_state, _lcd_toggle_bed_leveling);
506 452
     }
507 453
     #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
508
-      EDIT_ITEM_FAST(float3, MSG_Z_FADE_HEIGHT, &lcd_z_fade_height, 0, 100, _lcd_set_z_fade_height);
454
+      editable.decimal = planner.z_fade_height;
455
+      EDIT_ITEM_FAST(float3, MSG_Z_FADE_HEIGHT, &editable.decimal, 0, 100, [](){ set_z_fade_height(editable.decimal); });
509 456
     #endif
510 457
 
511 458
   #endif

+ 62
- 183
Marlin/src/lcd/menu/menu_temperature.cpp Ver arquivo

@@ -68,117 +68,33 @@ void _lcd_preheat(const int16_t endnum, const int16_t temph, const int16_t tempb
68 68
   ui.return_to_status();
69 69
 }
70 70
 
71
-#if HOTENDS > 1
72
-
73
-  void lcd_preheat_m1_e1_only() { _lcd_preheat(1, ui.preheat_hotend_temp[0], -1, ui.preheat_fan_speed[0]); }
74
-  void lcd_preheat_m2_e1_only() { _lcd_preheat(1, ui.preheat_hotend_temp[1], -1, ui.preheat_fan_speed[1]); }
75
-  #if HAS_HEATED_BED
76
-    void lcd_preheat_m1_e1() { _lcd_preheat(1, ui.preheat_hotend_temp[0], ui.preheat_bed_temp[0], ui.preheat_fan_speed[0]); }
77
-    void lcd_preheat_m2_e1() { _lcd_preheat(1, ui.preheat_hotend_temp[1], ui.preheat_bed_temp[1], ui.preheat_fan_speed[1]); }
78
-  #endif
79
-  #if HOTENDS > 2
80
-    void lcd_preheat_m1_e2_only() { _lcd_preheat(2, ui.preheat_hotend_temp[0], -1, ui.preheat_fan_speed[0]); }
81
-    void lcd_preheat_m2_e2_only() { _lcd_preheat(2, ui.preheat_hotend_temp[1], -1, ui.preheat_fan_speed[1]); }
82
-    #if HAS_HEATED_BED
83
-      void lcd_preheat_m1_e2() { _lcd_preheat(2, ui.preheat_hotend_temp[0], ui.preheat_bed_temp[0], ui.preheat_fan_speed[0]); }
84
-      void lcd_preheat_m2_e2() { _lcd_preheat(2, ui.preheat_hotend_temp[1], ui.preheat_bed_temp[1], ui.preheat_fan_speed[1]); }
85
-    #endif
86
-    #if HOTENDS > 3
87
-      void lcd_preheat_m1_e3_only() { _lcd_preheat(3, ui.preheat_hotend_temp[0], -1, ui.preheat_fan_speed[0]); }
88
-      void lcd_preheat_m2_e3_only() { _lcd_preheat(3, ui.preheat_hotend_temp[1], -1, ui.preheat_fan_speed[1]); }
89
-      #if HAS_HEATED_BED
90
-        void lcd_preheat_m1_e3() { _lcd_preheat(3, ui.preheat_hotend_temp[0], ui.preheat_bed_temp[0], ui.preheat_fan_speed[0]); }
91
-        void lcd_preheat_m2_e3() { _lcd_preheat(3, ui.preheat_hotend_temp[1], ui.preheat_bed_temp[1], ui.preheat_fan_speed[1]); }
92
-      #endif
93
-      #if HOTENDS > 4
94
-        void lcd_preheat_m1_e4_only() { _lcd_preheat(4, ui.preheat_hotend_temp[0], -1, ui.preheat_fan_speed[0]); }
95
-        void lcd_preheat_m2_e4_only() { _lcd_preheat(4, ui.preheat_hotend_temp[1], -1, ui.preheat_fan_speed[1]); }
96
-        #if HAS_HEATED_BED
97
-          void lcd_preheat_m1_e4() { _lcd_preheat(4, ui.preheat_hotend_temp[0], ui.preheat_bed_temp[0], ui.preheat_fan_speed[0]); }
98
-          void lcd_preheat_m2_e4() { _lcd_preheat(4, ui.preheat_hotend_temp[1], ui.preheat_bed_temp[1], ui.preheat_fan_speed[1]); }
99
-        #endif
100
-        #if HOTENDS > 5
101
-          void lcd_preheat_m1_e5_only() { _lcd_preheat(5, ui.preheat_hotend_temp[0], -1, ui.preheat_fan_speed[0]); }
102
-          void lcd_preheat_m2_e5_only() { _lcd_preheat(5, ui.preheat_hotend_temp[1], -1, ui.preheat_fan_speed[1]); }
103
-          #if HAS_HEATED_BED
104
-            void lcd_preheat_m1_e5() { _lcd_preheat(5, ui.preheat_hotend_temp[0], ui.preheat_bed_temp[0], ui.preheat_fan_speed[0]); }
105
-            void lcd_preheat_m2_e5() { _lcd_preheat(5, ui.preheat_hotend_temp[1], ui.preheat_bed_temp[1], ui.preheat_fan_speed[1]); }
106
-          #endif
107
-        #endif // HOTENDS > 5
108
-      #endif // HOTENDS > 4
109
-    #endif // HOTENDS > 3
110
-  #endif // HOTENDS > 2
111
-
71
+#if HAS_TEMP_HOTEND
72
+  inline void _preheat_end(const uint8_t m, const uint8_t e) {
73
+    _lcd_preheat(e, ui.preheat_hotend_temp[m], -1, ui.preheat_fan_speed[m]);
74
+  }
112 75
   #if HAS_HEATED_BED
113
-    void lcd_preheat_m1_e0();
114
-    void lcd_preheat_m2_e0();
115
-  #else
116
-    void lcd_preheat_m1_e0_only();
117
-    void lcd_preheat_m2_e0_only();
76
+    inline void _preheat_both(const uint8_t m, const uint8_t e) {
77
+      _lcd_preheat(e, ui.preheat_hotend_temp[m], ui.preheat_bed_temp[m], ui.preheat_fan_speed[m]);
78
+    }
118 79
   #endif
119
-
120
-  void lcd_preheat_m1_all() {
121
-    #if HOTENDS > 1
122
-      thermalManager.setTargetHotend(ui.preheat_hotend_temp[0], 1);
123
-      #if HOTENDS > 2
124
-        thermalManager.setTargetHotend(ui.preheat_hotend_temp[0], 2);
125
-        #if HOTENDS > 3
126
-          thermalManager.setTargetHotend(ui.preheat_hotend_temp[0], 3);
127
-          #if HOTENDS > 4
128
-            thermalManager.setTargetHotend(ui.preheat_hotend_temp[0], 4);
129
-            #if HOTENDS > 5
130
-              thermalManager.setTargetHotend(ui.preheat_hotend_temp[0], 5);
131
-            #endif // HOTENDS > 5
132
-          #endif // HOTENDS > 4
133
-        #endif // HOTENDS > 3
134
-      #endif // HOTENDS > 2
135
-    #endif // HOTENDS > 1
136
-    #if HAS_HEATED_BED
137
-      lcd_preheat_m1_e0();
138
-    #else
139
-      lcd_preheat_m1_e0_only();
140
-    #endif
141
-  }
142
-
143
-  void lcd_preheat_m2_all() {
144
-    #if HOTENDS > 1
145
-      thermalManager.setTargetHotend(ui.preheat_hotend_temp[1], 1);
146
-      #if HOTENDS > 2
147
-        thermalManager.setTargetHotend(ui.preheat_hotend_temp[1], 2);
148
-        #if HOTENDS > 3
149
-          thermalManager.setTargetHotend(ui.preheat_hotend_temp[1], 3);
150
-          #if HOTENDS > 4
151
-            thermalManager.setTargetHotend(ui.preheat_hotend_temp[1], 4);
152
-            #if HOTENDS > 5
153
-              thermalManager.setTargetHotend(ui.preheat_hotend_temp[1], 5);
154
-            #endif // HOTENDS > 5
155
-          #endif // HOTENDS > 4
156
-        #endif // HOTENDS > 3
157
-      #endif // HOTENDS > 2
158
-    #endif // HOTENDS > 1
159
-    #if HAS_HEATED_BED
160
-      lcd_preheat_m2_e0();
161
-    #else
162
-      lcd_preheat_m2_e0_only();
163
-    #endif
80
+#endif
81
+#if HAS_HEATED_BED
82
+  inline void _preheat_bed(const uint8_t m) {
83
+    _lcd_preheat(0, 0, ui.preheat_bed_temp[m], ui.preheat_fan_speed[m]);
164 84
   }
165
-
166
-#endif // HOTENDS > 1
85
+#endif
167 86
 
168 87
 #if HAS_TEMP_HOTEND || HAS_HEATED_BED
169 88
 
170
-  #if HOTENDS
171
-    void lcd_preheat_m1_e0_only() { _lcd_preheat(0, ui.preheat_hotend_temp[0], -1, ui.preheat_fan_speed[0]); }
172
-    void lcd_preheat_m2_e0_only() { _lcd_preheat(0, ui.preheat_hotend_temp[1], -1, ui.preheat_fan_speed[1]); }
173
-  #endif
174
-
89
+  #define _PREHEAT_ITEMS(M,N) do{ \
90
+    ACTION_ITEM(MSG_PREHEAT_##M##_N LCD_STR_N##N, [](){ _preheat_both(M-1, N); }); \
91
+    ACTION_ITEM(MSG_PREHEAT_##M##_END " " LCD_STR_E##N, [](){ _preheat_end(M-1, N); }); \
92
+  }while(0)
175 93
   #if HAS_HEATED_BED
176
-    #if HOTENDS
177
-      void lcd_preheat_m1_e0() { _lcd_preheat(0, ui.preheat_hotend_temp[0], ui.preheat_bed_temp[0], ui.preheat_fan_speed[0]); }
178
-      void lcd_preheat_m2_e0() { _lcd_preheat(0, ui.preheat_hotend_temp[1], ui.preheat_bed_temp[1], ui.preheat_fan_speed[1]); }
179
-    #endif
180
-    void lcd_preheat_m1_bedonly() { _lcd_preheat(0, 0, ui.preheat_bed_temp[0], ui.preheat_fan_speed[0]); }
181
-    void lcd_preheat_m2_bedonly() { _lcd_preheat(0, 0, ui.preheat_bed_temp[1], ui.preheat_fan_speed[1]); }
94
+    #define PREHEAT_ITEMS(M,N) _PREHEAT_ITEMS(M,N)
95
+  #else
96
+    #define PREHEAT_ITEMS(M,N) \
97
+      ACTION_ITEM(MSG_PREHEAT_##M##_N LCD_STR_N##N, [](){ _preheat_end(M-1, N); })
182 98
   #endif
183 99
 
184 100
   void menu_preheat_m1() {
@@ -186,57 +102,37 @@ void _lcd_preheat(const int16_t endnum, const int16_t temph, const int16_t tempb
186 102
     BACK_ITEM(MSG_TEMPERATURE);
187 103
     #if HOTENDS == 1
188 104
       #if HAS_HEATED_BED
189
-        ACTION_ITEM(MSG_PREHEAT_1, lcd_preheat_m1_e0);
190
-        ACTION_ITEM(MSG_PREHEAT_1_END, lcd_preheat_m1_e0_only);
105
+        ACTION_ITEM(MSG_PREHEAT_1, [](){ _preheat_both(0, 0); });
106
+        ACTION_ITEM(MSG_PREHEAT_1_END, [](){ _preheat_end(0, 0); });
191 107
       #else
192
-        ACTION_ITEM(MSG_PREHEAT_1, lcd_preheat_m1_e0_only);
108
+        ACTION_ITEM(MSG_PREHEAT_1, [](){ _preheat_end(0, 0); });
193 109
       #endif
194 110
     #elif HOTENDS > 1
195 111
       #if HAS_HEATED_BED
196
-        ACTION_ITEM(MSG_PREHEAT_1_N MSG_H1, lcd_preheat_m1_e0);
197
-        ACTION_ITEM(MSG_PREHEAT_1_END " " MSG_E1, lcd_preheat_m1_e0_only);
198
-        ACTION_ITEM(MSG_PREHEAT_1_N MSG_H2, lcd_preheat_m1_e1);
199
-        ACTION_ITEM(MSG_PREHEAT_1_END " " MSG_E2, lcd_preheat_m1_e1_only);
200
-      #else
201
-        ACTION_ITEM(MSG_PREHEAT_1_N MSG_H1, lcd_preheat_m1_e0_only);
202
-        ACTION_ITEM(MSG_PREHEAT_1_N MSG_H2, lcd_preheat_m1_e1_only);
112
+        _PREHEAT_ITEMS(1,0);
203 113
       #endif
114
+      PREHEAT_ITEMS(1,1);
204 115
       #if HOTENDS > 2
205
-        #if HAS_HEATED_BED
206
-          ACTION_ITEM(MSG_PREHEAT_1_N MSG_H3, lcd_preheat_m1_e2);
207
-          ACTION_ITEM(MSG_PREHEAT_1_END " " MSG_E3, lcd_preheat_m1_e2_only);
208
-        #else
209
-          ACTION_ITEM(MSG_PREHEAT_1_N MSG_H3, lcd_preheat_m1_e2_only);
210
-        #endif
116
+        PREHEAT_ITEMS(1,2);
211 117
         #if HOTENDS > 3
212
-          #if HAS_HEATED_BED
213
-            ACTION_ITEM(MSG_PREHEAT_1_N MSG_H4, lcd_preheat_m1_e3);
214
-            ACTION_ITEM(MSG_PREHEAT_1_END " " MSG_E4, lcd_preheat_m1_e3_only);
215
-          #else
216
-            ACTION_ITEM(MSG_PREHEAT_1_N MSG_H4, lcd_preheat_m1_e3_only);
217
-          #endif
118
+          PREHEAT_ITEMS(1,3);
218 119
           #if HOTENDS > 4
219
-            #if HAS_HEATED_BED
220
-              ACTION_ITEM(MSG_PREHEAT_1_N MSG_H5, lcd_preheat_m1_e4);
221
-              ACTION_ITEM(MSG_PREHEAT_1_END " " MSG_E5, lcd_preheat_m1_e4_only);
222
-            #else
223
-              ACTION_ITEM(MSG_PREHEAT_1_N MSG_H5, lcd_preheat_m1_e4_only);
224
-            #endif
120
+            PREHEAT_ITEMS(1,4);
225 121
             #if HOTENDS > 5
226
-              #if HAS_HEATED_BED
227
-                ACTION_ITEM(MSG_PREHEAT_1_N MSG_H6, lcd_preheat_m1_e5);
228
-                ACTION_ITEM(MSG_PREHEAT_1_END " " MSG_E6, lcd_preheat_m1_e5_only);
229
-              #else
230
-                ACTION_ITEM(MSG_PREHEAT_1_N MSG_H6, lcd_preheat_m1_e5_only);
231
-              #endif
122
+              PREHEAT_ITEMS(1,5);
232 123
             #endif // HOTENDS > 5
233 124
           #endif // HOTENDS > 4
234 125
         #endif // HOTENDS > 3
235 126
       #endif // HOTENDS > 2
236
-      ACTION_ITEM(MSG_PREHEAT_1_ALL, lcd_preheat_m1_all);
127
+      ACTION_ITEM(MSG_PREHEAT_1_ALL, []() {
128
+        #if HAS_HEATED_BED
129
+          _preheat_bed(0);
130
+        #endif
131
+        HOTEND_LOOP() thermalManager.setTargetHotend(ui.preheat_hotend_temp[0], e);
132
+      });
237 133
     #endif // HOTENDS > 1
238 134
     #if HAS_HEATED_BED
239
-      ACTION_ITEM(MSG_PREHEAT_1_BEDONLY, lcd_preheat_m1_bedonly);
135
+      ACTION_ITEM(MSG_PREHEAT_1_BEDONLY, [](){ _preheat_bed(0); });
240 136
     #endif
241 137
     END_MENU();
242 138
   }
@@ -246,57 +142,37 @@ void _lcd_preheat(const int16_t endnum, const int16_t temph, const int16_t tempb
246 142
     BACK_ITEM(MSG_TEMPERATURE);
247 143
     #if HOTENDS == 1
248 144
       #if HAS_HEATED_BED
249
-        ACTION_ITEM(MSG_PREHEAT_2, lcd_preheat_m2_e0);
250
-        ACTION_ITEM(MSG_PREHEAT_2_END, lcd_preheat_m2_e0_only);
145
+        ACTION_ITEM(MSG_PREHEAT_2, [](){ _preheat_both(1, 0); });
146
+        ACTION_ITEM(MSG_PREHEAT_2_END, [](){ _preheat_end(1, 0); });
251 147
       #else
252
-        ACTION_ITEM(MSG_PREHEAT_2, lcd_preheat_m2_e0_only);
148
+        ACTION_ITEM(MSG_PREHEAT_2, [](){ _preheat_end(1, 0); });
253 149
       #endif
254 150
     #elif HOTENDS > 1
255 151
       #if HAS_HEATED_BED
256
-        ACTION_ITEM(MSG_PREHEAT_2_N MSG_H1, lcd_preheat_m2_e0);
257
-        ACTION_ITEM(MSG_PREHEAT_2_END " " MSG_E1, lcd_preheat_m2_e0_only);
258
-        ACTION_ITEM(MSG_PREHEAT_2_N MSG_H2, lcd_preheat_m2_e1);
259
-        ACTION_ITEM(MSG_PREHEAT_2_END " " MSG_E2, lcd_preheat_m2_e1_only);
260
-      #else
261
-        ACTION_ITEM(MSG_PREHEAT_2_N MSG_H1, lcd_preheat_m2_e0_only);
262
-        ACTION_ITEM(MSG_PREHEAT_2_N MSG_H2, lcd_preheat_m2_e1_only);
152
+        _PREHEAT_ITEMS(2,0);
263 153
       #endif
154
+      PREHEAT_ITEMS(2,1);
264 155
       #if HOTENDS > 2
265
-        #if HAS_HEATED_BED
266
-          ACTION_ITEM(MSG_PREHEAT_2_N MSG_H3, lcd_preheat_m2_e2);
267
-          ACTION_ITEM(MSG_PREHEAT_2_END " " MSG_E3, lcd_preheat_m2_e2_only);
268
-        #else
269
-          ACTION_ITEM(MSG_PREHEAT_2_N MSG_H3, lcd_preheat_m2_e2_only);
270
-        #endif
156
+        PREHEAT_ITEMS(2,2);
271 157
         #if HOTENDS > 3
272
-          #if HAS_HEATED_BED
273
-            ACTION_ITEM(MSG_PREHEAT_2_N MSG_H4, lcd_preheat_m2_e3);
274
-            ACTION_ITEM(MSG_PREHEAT_2_END " " MSG_E4, lcd_preheat_m2_e3_only);
275
-          #else
276
-            ACTION_ITEM(MSG_PREHEAT_2_N MSG_H4, lcd_preheat_m2_e3_only);
277
-          #endif
158
+          PREHEAT_ITEMS(2,3);
278 159
           #if HOTENDS > 4
279
-            #if HAS_HEATED_BED
280
-              ACTION_ITEM(MSG_PREHEAT_2_N MSG_H5, lcd_preheat_m2_e4);
281
-              ACTION_ITEM(MSG_PREHEAT_2_END " " MSG_E5, lcd_preheat_m2_e4_only);
282
-            #else
283
-              ACTION_ITEM(MSG_PREHEAT_2_N MSG_H5, lcd_preheat_m2_e4_only);
284
-            #endif
160
+            PREHEAT_ITEMS(2,4);
285 161
             #if HOTENDS > 5
286
-              #if HAS_HEATED_BED
287
-                ACTION_ITEM(MSG_PREHEAT_2_N MSG_H6, lcd_preheat_m2_e5);
288
-                ACTION_ITEM(MSG_PREHEAT_2_END " " MSG_E6, lcd_preheat_m2_e5_only);
289
-              #else
290
-                ACTION_ITEM(MSG_PREHEAT_2_N MSG_H6, lcd_preheat_m2_e5_only);
291
-              #endif
162
+              PREHEAT_ITEMS(2,5);
292 163
             #endif // HOTENDS > 5
293 164
           #endif // HOTENDS > 4
294 165
         #endif // HOTENDS > 3
295 166
       #endif // HOTENDS > 2
296
-      ACTION_ITEM(MSG_PREHEAT_2_ALL, lcd_preheat_m2_all);
167
+      ACTION_ITEM(MSG_PREHEAT_2_ALL, []() {
168
+        #if HAS_HEATED_BED
169
+          _preheat_bed(1);
170
+        #endif
171
+        HOTEND_LOOP() thermalManager.setTargetHotend(ui.preheat_hotend_temp[1], e);
172
+      });
297 173
     #endif // HOTENDS > 1
298 174
     #if HAS_HEATED_BED
299
-      ACTION_ITEM(MSG_PREHEAT_2_BEDONLY, lcd_preheat_m2_bedonly);
175
+      ACTION_ITEM(MSG_PREHEAT_2_BEDONLY, [](){ _preheat_bed(1); });
300 176
     #endif
301 177
     END_MENU();
302 178
   }
@@ -318,9 +194,9 @@ void menu_temperature() {
318 194
   // Nozzle [1-5]:
319 195
   //
320 196
   #if HOTENDS == 1
321
-    EDIT_ITEM_FAST(int3, MSG_NOZZLE, &thermalManager.temp_hotend[0].target, 0, HEATER_0_MAXTEMP - 15, thermalManager.start_watching_E0);
197
+    EDIT_ITEM_FAST(int3, MSG_NOZZLE, &thermalManager.temp_hotend[0].target, 0, HEATER_0_MAXTEMP - 15, [](){ thermalManager.start_watching_hotend(0); });
322 198
   #elif HOTENDS > 1
323
-    #define EDIT_TARGET(N) EDIT_ITEM_FAST(int3, MSG_NOZZLE MSG_LCD_N##N, &thermalManager.temp_hotend[N].target, 0, HEATER_##N##_MAXTEMP - 15, thermalManager.start_watching_E##N)
199
+    #define EDIT_TARGET(N) EDIT_ITEM_FAST(int3, MSG_NOZZLE LCD_STR_N##N, &thermalManager.temp_hotend[N].target, 0, HEATER_##N##_MAXTEMP - 15, [](){ thermalManager.start_watching_hotend(N); })
324 200
     EDIT_TARGET(0);
325 201
     EDIT_TARGET(1);
326 202
     #if HOTENDS > 2
@@ -360,19 +236,22 @@ void menu_temperature() {
360 236
   //
361 237
   #if FAN_COUNT > 0
362 238
     #if HAS_FAN0
363
-      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED FAN_SPEED_1_SUFFIX, &thermalManager.lcd_tmpfan_speed[0], 0, 255, thermalManager.lcd_setFanSpeed0);
239
+      editable.uint8 = thermalManager.fan_speed[0];
240
+      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED FAN_SPEED_1_SUFFIX, &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(0, editable.uint8); });
364 241
       #if ENABLED(EXTRA_FAN_SPEED)
365 242
         EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED FAN_SPEED_1_SUFFIX, &thermalManager.new_fan_speed[0], 3, 255);
366 243
       #endif
367 244
     #endif
368 245
     #if HAS_FAN1 || (ENABLED(SINGLENOZZLE) && EXTRUDERS > 1)
369
-      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED " 2", &thermalManager.lcd_tmpfan_speed[1], 0, 255, thermalManager.lcd_setFanSpeed1);
246
+      editable.uint8 = thermalManager.fan_speed[1];
247
+      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED " 2", &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(1, editable.uint8); });
370 248
       #if ENABLED(EXTRA_FAN_SPEED)
371 249
         EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED " 2", &thermalManager.new_fan_speed[1], 3, 255);
372 250
       #endif
373 251
     #endif
374 252
     #if HAS_FAN2 || (ENABLED(SINGLENOZZLE) && EXTRUDERS > 2)
375
-      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED " 3", &thermalManager.lcd_tmpfan_speed[2], 0, 255, thermalManager.lcd_setFanSpeed2);
253
+      editable.uint8 = thermalManager.fan_speed[2];
254
+      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED " 3", &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(2, editable.uint8); });
376 255
       #if ENABLED(EXTRA_FAN_SPEED)
377 256
         EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED " 3", &thermalManager.new_fan_speed[2], 3, 255);
378 257
       #endif
@@ -388,8 +267,8 @@ void menu_temperature() {
388 267
       SUBMENU(MSG_PREHEAT_1, menu_preheat_m1);
389 268
       SUBMENU(MSG_PREHEAT_2, menu_preheat_m2);
390 269
     #else
391
-      ACTION_ITEM(MSG_PREHEAT_1, lcd_preheat_m1_e0_only);
392
-      ACTION_ITEM(MSG_PREHEAT_2, lcd_preheat_m2_e0_only);
270
+      ACTION_ITEM(MSG_PREHEAT_1, [](){ _preheat_end(0, 0); });
271
+      ACTION_ITEM(MSG_PREHEAT_2, [](){ _preheat_end(1, 0); });
393 272
     #endif
394 273
 
395 274
     //

+ 22
- 155
Marlin/src/lcd/menu/menu_tmc.cpp Ver arquivo

@@ -32,47 +32,7 @@
32 32
 #include "../../module/stepper/indirection.h"
33 33
 #include "../../feature/tmc_util.h"
34 34
 
35
-#define TMC_EDIT_STORED_I_RMS(ST,MSG) EDIT_ITEM(uint16_4, MSG, &stepper##ST.val_mA, 100, 3000, refresh_stepper_current_##ST)
36
-
37
-#if AXIS_IS_TMC(X)
38
-  void refresh_stepper_current_X()  { stepperX.refresh_stepper_current();  }
39
-#endif
40
-#if AXIS_IS_TMC(Y)
41
-  void refresh_stepper_current_Y()  { stepperY.refresh_stepper_current();  }
42
-#endif
43
-#if AXIS_IS_TMC(Z)
44
-  void refresh_stepper_current_Z()  { stepperZ.refresh_stepper_current();  }
45
-#endif
46
-#if AXIS_IS_TMC(X2)
47
-  void refresh_stepper_current_X2() { stepperX2.refresh_stepper_current(); }
48
-#endif
49
-#if AXIS_IS_TMC(Y2)
50
-  void refresh_stepper_current_Y2() { stepperY2.refresh_stepper_current(); }
51
-#endif
52
-#if AXIS_IS_TMC(Z2)
53
-  void refresh_stepper_current_Z2() { stepperZ2.refresh_stepper_current(); }
54
-#endif
55
-#if AXIS_IS_TMC(Z3)
56
-  void refresh_stepper_current_Z3() { stepperZ3.refresh_stepper_current(); }
57
-#endif
58
-#if AXIS_IS_TMC(E0)
59
-  void refresh_stepper_current_E0() { stepperE0.refresh_stepper_current(); }
60
-#endif
61
-#if AXIS_IS_TMC(E1)
62
-  void refresh_stepper_current_E1() { stepperE1.refresh_stepper_current(); }
63
-#endif
64
-#if AXIS_IS_TMC(E2)
65
-  void refresh_stepper_current_E2() { stepperE2.refresh_stepper_current(); }
66
-#endif
67
-#if AXIS_IS_TMC(E3)
68
-  void refresh_stepper_current_E3() { stepperE3.refresh_stepper_current(); }
69
-#endif
70
-#if AXIS_IS_TMC(E4)
71
-  void refresh_stepper_current_E4() { stepperE4.refresh_stepper_current(); }
72
-#endif
73
-#if AXIS_IS_TMC(E5)
74
-  void refresh_stepper_current_E5() { stepperE5.refresh_stepper_current(); }
75
-#endif
35
+#define TMC_EDIT_STORED_I_RMS(ST,MSG) EDIT_ITEM(uint16_4, MSG, &stepper##ST.val_mA, 100, 3000, [](){ stepper##ST.refresh_stepper_current(); })
76 36
 
77 37
 void menu_tmc_current() {
78 38
   START_MENU();
@@ -99,69 +59,29 @@ void menu_tmc_current() {
99 59
     TMC_EDIT_STORED_I_RMS(Z3, MSG_Z3);
100 60
   #endif
101 61
   #if AXIS_IS_TMC(E0)
102
-    TMC_EDIT_STORED_I_RMS(E0, MSG_E1);
62
+    TMC_EDIT_STORED_I_RMS(E0, LCD_STR_E0);
103 63
   #endif
104 64
   #if AXIS_IS_TMC(E1)
105
-    TMC_EDIT_STORED_I_RMS(E1, MSG_E2);
65
+    TMC_EDIT_STORED_I_RMS(E1, LCD_STR_E1);
106 66
   #endif
107 67
   #if AXIS_IS_TMC(E2)
108
-    TMC_EDIT_STORED_I_RMS(E2, MSG_E3);
68
+    TMC_EDIT_STORED_I_RMS(E2, LCD_STR_E2);
109 69
   #endif
110 70
   #if AXIS_IS_TMC(E3)
111
-    TMC_EDIT_STORED_I_RMS(E3, MSG_E4);
71
+    TMC_EDIT_STORED_I_RMS(E3, LCD_STR_E3);
112 72
   #endif
113 73
   #if AXIS_IS_TMC(E4)
114
-    TMC_EDIT_STORED_I_RMS(E4, MSG_E5);
74
+    TMC_EDIT_STORED_I_RMS(E4, LCD_STR_E4);
115 75
   #endif
116 76
   #if AXIS_IS_TMC(E5)
117
-    TMC_EDIT_STORED_I_RMS(E5, MSG_E6);
77
+    TMC_EDIT_STORED_I_RMS(E5, LCD_STR_E5);
118 78
   #endif
119 79
   END_MENU();
120 80
 }
121 81
 
122 82
 #if ENABLED(HYBRID_THRESHOLD)
123 83
 
124
-  #define TMC_EDIT_STORED_HYBRID_THRS(ST, MSG) EDIT_ITEM(uint8, MSG, &stepper##ST.stored.hybrid_thrs, 0, 255, refresh_hybrid_thrs_##ST);
125
-
126
-  #if AXIS_HAS_STEALTHCHOP(X)
127
-    void refresh_hybrid_thrs_X()  {  stepperX.refresh_hybrid_thrs(); }
128
-  #endif
129
-  #if AXIS_HAS_STEALTHCHOP(Y)
130
-    void refresh_hybrid_thrs_Y()  {  stepperY.refresh_hybrid_thrs(); }
131
-  #endif
132
-  #if AXIS_HAS_STEALTHCHOP(Z)
133
-    void refresh_hybrid_thrs_Z()  {  stepperZ.refresh_hybrid_thrs(); }
134
-  #endif
135
-  #if AXIS_HAS_STEALTHCHOP(X2)
136
-    void refresh_hybrid_thrs_X2() { stepperX2.refresh_hybrid_thrs(); }
137
-  #endif
138
-  #if AXIS_HAS_STEALTHCHOP(Y2)
139
-    void refresh_hybrid_thrs_Y2() { stepperY2.refresh_hybrid_thrs(); }
140
-  #endif
141
-  #if AXIS_HAS_STEALTHCHOP(Z2)
142
-    void refresh_hybrid_thrs_Z2() { stepperZ2.refresh_hybrid_thrs(); }
143
-  #endif
144
-  #if AXIS_HAS_STEALTHCHOP(Z3)
145
-    void refresh_hybrid_thrs_Z3() { stepperZ3.refresh_hybrid_thrs(); }
146
-  #endif
147
-  #if AXIS_HAS_STEALTHCHOP(E0)
148
-    void refresh_hybrid_thrs_E0() { stepperE0.refresh_hybrid_thrs(); }
149
-  #endif
150
-  #if AXIS_HAS_STEALTHCHOP(E1)
151
-    void refresh_hybrid_thrs_E1() { stepperE1.refresh_hybrid_thrs(); }
152
-  #endif
153
-  #if AXIS_HAS_STEALTHCHOP(E2)
154
-    void refresh_hybrid_thrs_E2() { stepperE2.refresh_hybrid_thrs(); }
155
-  #endif
156
-  #if AXIS_HAS_STEALTHCHOP(E3)
157
-    void refresh_hybrid_thrs_E3() { stepperE3.refresh_hybrid_thrs(); }
158
-  #endif
159
-  #if AXIS_HAS_STEALTHCHOP(E4)
160
-    void refresh_hybrid_thrs_E4() { stepperE4.refresh_hybrid_thrs(); }
161
-  #endif
162
-  #if AXIS_HAS_STEALTHCHOP(E5)
163
-    void refresh_hybrid_thrs_E5() { stepperE5.refresh_hybrid_thrs(); }
164
-  #endif
84
+  #define TMC_EDIT_STORED_HYBRID_THRS(ST, MSG) EDIT_ITEM(uint8, MSG, &stepper##ST.stored.hybrid_thrs, 0, 255, [](){ stepper##ST.refresh_hybrid_thrs(); });
165 85
 
166 86
   void menu_tmc_hybrid_thrs() {
167 87
     START_MENU();
@@ -188,22 +108,22 @@ void menu_tmc_current() {
188 108
       TMC_EDIT_STORED_HYBRID_THRS(Z3, MSG_Z3);
189 109
     #endif
190 110
     #if AXIS_HAS_STEALTHCHOP(E0)
191
-      TMC_EDIT_STORED_HYBRID_THRS(E0, MSG_E1);
111
+      TMC_EDIT_STORED_HYBRID_THRS(E0, LCD_STR_E0);
192 112
     #endif
193 113
     #if AXIS_HAS_STEALTHCHOP(E1)
194
-      TMC_EDIT_STORED_HYBRID_THRS(E1, MSG_E2);
114
+      TMC_EDIT_STORED_HYBRID_THRS(E1, LCD_STR_E1);
195 115
     #endif
196 116
     #if AXIS_HAS_STEALTHCHOP(E2)
197
-      TMC_EDIT_STORED_HYBRID_THRS(E2, MSG_E3);
117
+      TMC_EDIT_STORED_HYBRID_THRS(E2, LCD_STR_E2);
198 118
     #endif
199 119
     #if AXIS_HAS_STEALTHCHOP(E3)
200
-      TMC_EDIT_STORED_HYBRID_THRS(E3, MSG_E4);
120
+      TMC_EDIT_STORED_HYBRID_THRS(E3, LCD_STR_E3);
201 121
     #endif
202 122
     #if AXIS_HAS_STEALTHCHOP(E4)
203
-      TMC_EDIT_STORED_HYBRID_THRS(E4, MSG_E5);
123
+      TMC_EDIT_STORED_HYBRID_THRS(E4, LCD_STR_E4);
204 124
     #endif
205 125
     #if AXIS_HAS_STEALTHCHOP(E5)
206
-      TMC_EDIT_STORED_HYBRID_THRS(E5, MSG_E6);
126
+      TMC_EDIT_STORED_HYBRID_THRS(E5, LCD_STR_E5);
207 127
     #endif
208 128
     END_MENU();
209 129
   }
@@ -212,20 +132,7 @@ void menu_tmc_current() {
212 132
 
213 133
 #if ENABLED(SENSORLESS_HOMING)
214 134
 
215
-  #define TMC_EDIT_STORED_SGT(ST) EDIT_ITEM(int4, MSG_##ST, &stepper##ST.stored.homing_thrs, stepper##ST.sgt_min, stepper##ST.sgt_max, refresh_homing_thrs_##ST);
216
-
217
-  #if X_SENSORLESS
218
-    void refresh_homing_thrs_X()  { stepperX.refresh_homing_thrs();  }
219
-  #endif
220
-  #if X2_SENSORLESS
221
-    void refresh_homing_thrs_X2() { stepperX2.refresh_homing_thrs();  }
222
-  #endif
223
-  #if Y_SENSORLESS
224
-    void refresh_homing_thrs_Y()  { stepperY.refresh_homing_thrs();  }
225
-  #endif
226
-  #if Z_SENSORLESS
227
-    void refresh_homing_thrs_Z()  { stepperZ.refresh_homing_thrs();  }
228
-  #endif
135
+  #define TMC_EDIT_STORED_SGT(ST) EDIT_ITEM(int4, MSG_##ST, &stepper##ST.stored.homing_thrs, stepper##ST.sgt_min, stepper##ST.sgt_max, [](){ stepper##ST.refresh_homing_thrs(); });
229 136
 
230 137
   void menu_tmc_homing_thrs() {
231 138
     START_MENU();
@@ -249,47 +156,7 @@ void menu_tmc_current() {
249 156
 
250 157
 #if HAS_STEALTHCHOP
251 158
 
252
-  #define TMC_EDIT_STEP_MODE(ST, MSG) EDIT_ITEM(bool, MSG, &stepper##ST.stored.stealthChop_enabled, refresh_stepping_mode_##ST)
253
-
254
-  #if AXIS_HAS_STEALTHCHOP(X)
255
-    void refresh_stepping_mode_X()  { stepperX.refresh_stepping_mode();  }
256
-  #endif
257
-  #if AXIS_HAS_STEALTHCHOP(Y)
258
-    void refresh_stepping_mode_Y()  { stepperY.refresh_stepping_mode();  }
259
-  #endif
260
-  #if AXIS_HAS_STEALTHCHOP(Z)
261
-    void refresh_stepping_mode_Z()  { stepperZ.refresh_stepping_mode();  }
262
-  #endif
263
-  #if AXIS_HAS_STEALTHCHOP(X2)
264
-    void refresh_stepping_mode_X2() { stepperX2.refresh_stepping_mode(); }
265
-  #endif
266
-  #if AXIS_HAS_STEALTHCHOP(Y2)
267
-    void refresh_stepping_mode_Y2() { stepperY2.refresh_stepping_mode(); }
268
-  #endif
269
-  #if AXIS_HAS_STEALTHCHOP(Z2)
270
-    void refresh_stepping_mode_Z2() { stepperZ2.refresh_stepping_mode(); }
271
-  #endif
272
-  #if AXIS_HAS_STEALTHCHOP(Z3)
273
-    void refresh_stepping_mode_Z3() { stepperZ3.refresh_stepping_mode(); }
274
-  #endif
275
-  #if AXIS_HAS_STEALTHCHOP(E0)
276
-    void refresh_stepping_mode_E0() { stepperE0.refresh_stepping_mode(); }
277
-  #endif
278
-  #if AXIS_HAS_STEALTHCHOP(E1)
279
-    void refresh_stepping_mode_E1() { stepperE1.refresh_stepping_mode(); }
280
-  #endif
281
-  #if AXIS_HAS_STEALTHCHOP(E2)
282
-    void refresh_stepping_mode_E2() { stepperE2.refresh_stepping_mode(); }
283
-  #endif
284
-  #if AXIS_HAS_STEALTHCHOP(E3)
285
-    void refresh_stepping_mode_E3() { stepperE3.refresh_stepping_mode(); }
286
-  #endif
287
-  #if AXIS_HAS_STEALTHCHOP(E4)
288
-    void refresh_stepping_mode_E4() { stepperE4.refresh_stepping_mode(); }
289
-  #endif
290
-  #if AXIS_HAS_STEALTHCHOP(E5)
291
-    void refresh_stepping_mode_E5() { stepperE5.refresh_stepping_mode(); }
292
-  #endif
159
+  #define TMC_EDIT_STEP_MODE(ST, MSG) EDIT_ITEM(bool, MSG, &stepper##ST.stored.stealthChop_enabled, [](){ stepper##ST.refresh_stepping_mode(); })
293 160
 
294 161
   void menu_tmc_step_mode() {
295 162
     START_MENU();
@@ -317,22 +184,22 @@ void menu_tmc_current() {
317 184
       TMC_EDIT_STEP_MODE(Z3, MSG_Z3);
318 185
     #endif
319 186
     #if AXIS_HAS_STEALTHCHOP(E0)
320
-      TMC_EDIT_STEP_MODE(E0, MSG_E1);
187
+      TMC_EDIT_STEP_MODE(E0, LCD_STR_E0);
321 188
     #endif
322 189
     #if AXIS_HAS_STEALTHCHOP(E1)
323
-      TMC_EDIT_STEP_MODE(E1, MSG_E2);
190
+      TMC_EDIT_STEP_MODE(E1, LCD_STR_E1);
324 191
     #endif
325 192
     #if AXIS_HAS_STEALTHCHOP(E2)
326
-      TMC_EDIT_STEP_MODE(E2, MSG_E3);
193
+      TMC_EDIT_STEP_MODE(E2, LCD_STR_E2);
327 194
     #endif
328 195
     #if AXIS_HAS_STEALTHCHOP(E3)
329
-      TMC_EDIT_STEP_MODE(E3, MSG_E4);
196
+      TMC_EDIT_STEP_MODE(E3, LCD_STR_E3);
330 197
     #endif
331 198
     #if AXIS_HAS_STEALTHCHOP(E4)
332
-      TMC_EDIT_STEP_MODE(E4, MSG_E5);
199
+      TMC_EDIT_STEP_MODE(E4, LCD_STR_E4);
333 200
     #endif
334 201
     #if AXIS_HAS_STEALTHCHOP(E5)
335
-      TMC_EDIT_STEP_MODE(E5, MSG_E6);
202
+      TMC_EDIT_STEP_MODE(E5, LCD_STR_E5);
336 203
     #endif
337 204
     END_MENU();
338 205
   }

+ 14
- 34
Marlin/src/lcd/menu/menu_tune.cpp Ver arquivo

@@ -42,27 +42,6 @@
42 42
   #include "../../module/tool_change.h"
43 43
 #endif
44 44
 
45
-// Refresh the E factor after changing flow
46
-#if EXTRUDERS
47
-  void _lcd_refresh_e_factor_0() { planner.refresh_e_factor(0); }
48
-  #if EXTRUDERS > 1
49
-    void _lcd_refresh_e_factor() { planner.refresh_e_factor(active_extruder); }
50
-    void _lcd_refresh_e_factor_1() { planner.refresh_e_factor(1); }
51
-    #if EXTRUDERS > 2
52
-      void _lcd_refresh_e_factor_2() { planner.refresh_e_factor(2); }
53
-      #if EXTRUDERS > 3
54
-        void _lcd_refresh_e_factor_3() { planner.refresh_e_factor(3); }
55
-        #if EXTRUDERS > 4
56
-          void _lcd_refresh_e_factor_4() { planner.refresh_e_factor(4); }
57
-          #if EXTRUDERS > 5
58
-            void _lcd_refresh_e_factor_5() { planner.refresh_e_factor(5); }
59
-          #endif // EXTRUDERS > 5
60
-        #endif // EXTRUDERS > 4
61
-      #endif // EXTRUDERS > 3
62
-    #endif // EXTRUDERS > 2
63
-  #endif // EXTRUDERS > 1
64
-#endif // EXTRUDERS
65
-
66 45
 #if ENABLED(BABYSTEPPING)
67 46
 
68 47
   #include "../../feature/babystep.h"
@@ -111,13 +90,11 @@
111 90
   #if ENABLED(BABYSTEP_XY)
112 91
     void _lcd_babystep_x() { _lcd_babystep(X_AXIS, PSTR(MSG_BABYSTEP_X)); }
113 92
     void _lcd_babystep_y() { _lcd_babystep(Y_AXIS, PSTR(MSG_BABYSTEP_Y)); }
114
-    void lcd_babystep_x() { _lcd_babystep_go(_lcd_babystep_x); }
115
-    void lcd_babystep_y() { _lcd_babystep_go(_lcd_babystep_y); }
116 93
   #endif
117 94
 
118 95
   #if DISABLED(BABYSTEP_ZPROBE_OFFSET)
119 96
     void _lcd_babystep_z() { _lcd_babystep(Z_AXIS, PSTR(MSG_BABYSTEP_Z)); }
120
-    void lcd_babystep_z() { _lcd_babystep_go(_lcd_babystep_z); }
97
+    void lcd_babystep_z()  { _lcd_babystep_go(_lcd_babystep_z); }
121 98
   #endif
122 99
 
123 100
 #endif // BABYSTEPPING
@@ -143,9 +120,9 @@ void menu_tune() {
143 120
   // Nozzle [1-4]:
144 121
   //
145 122
   #if HOTENDS == 1
146
-    EDIT_ITEM_FAST(int3, MSG_NOZZLE, &thermalManager.temp_hotend[0].target, 0, HEATER_0_MAXTEMP - 15, thermalManager.start_watching_E0);
123
+    EDIT_ITEM_FAST(int3, MSG_NOZZLE, &thermalManager.temp_hotend[0].target, 0, HEATER_0_MAXTEMP - 15, [](){ thermalManager.start_watching_hotend(0); });
147 124
   #elif HOTENDS > 1
148
-    #define EDIT_NOZZLE(N) EDIT_ITEM_FAST(int3, MSG_NOZZLE MSG_LCD_N##N, &thermalManager.temp_hotend[N].target, 0, HEATER_##N##_MAXTEMP - 15, thermalManager.start_watching_E##N)
125
+    #define EDIT_NOZZLE(N) EDIT_ITEM_FAST(int3, MSG_NOZZLE LCD_STR_N##N, &thermalManager.temp_hotend[N].target, 0, HEATER_##N##_MAXTEMP - 15, [](){ thermalManager.start_watching_hotend(N); })
149 126
     EDIT_NOZZLE(0);
150 127
     EDIT_NOZZLE(1);
151 128
     #if HOTENDS > 2
@@ -178,19 +155,22 @@ void menu_tune() {
178 155
   //
179 156
   #if FAN_COUNT > 0
180 157
     #if HAS_FAN0
181
-      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED FAN_SPEED_1_SUFFIX, &thermalManager.lcd_tmpfan_speed[0], 0, 255, thermalManager.lcd_setFanSpeed0);
158
+      editable.uint8 = thermalManager.fan_speed[0];
159
+      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED FAN_SPEED_1_SUFFIX, &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(0, editable.uint8); });
182 160
       #if ENABLED(EXTRA_FAN_SPEED)
183 161
         EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED FAN_SPEED_1_SUFFIX, &thermalManager.new_fan_speed[0], 3, 255);
184 162
       #endif
185 163
     #endif
186 164
     #if HAS_FAN1 || (ENABLED(SINGLENOZZLE) && EXTRUDERS > 1)
187
-      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED " 2", &thermalManager.lcd_tmpfan_speed[1], 0, 255, thermalManager.lcd_setFanSpeed1);
165
+      editable.uint8 = thermalManager.fan_speed[1];
166
+      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED " 2", &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(1, editable.uint8); });
188 167
       #if ENABLED(EXTRA_FAN_SPEED)
189 168
         EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED " 2", &thermalManager.new_fan_speed[1], 3, 255);
190 169
       #endif
191 170
     #endif
192 171
     #if HAS_FAN2 || (ENABLED(SINGLENOZZLE) && EXTRUDERS > 2)
193
-      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED " 3", &thermalManager.lcd_tmpfan_speed[2], 0, 255, thermalManager.lcd_setFanSpeed2);
172
+      editable.uint8 = thermalManager.fan_speed[2];
173
+      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED " 3", &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(2, editable.uint8); });
194 174
       #if ENABLED(EXTRA_FAN_SPEED)
195 175
         EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED " 3", &thermalManager.new_fan_speed[2], 3, 255);
196 176
       #endif
@@ -202,10 +182,10 @@ void menu_tune() {
202 182
   // Flow [1-5]:
203 183
   //
204 184
   #if EXTRUDERS == 1
205
-    EDIT_ITEM(int3, MSG_FLOW, &planner.flow_percentage[0], 10, 999, _lcd_refresh_e_factor_0);
185
+    EDIT_ITEM(int3, MSG_FLOW, &planner.flow_percentage[0], 10, 999, [](){ planner.refresh_e_factor(0); });
206 186
   #elif EXTRUDERS
207
-    EDIT_ITEM(int3, MSG_FLOW, &planner.flow_percentage[active_extruder], 10, 999, _lcd_refresh_e_factor);
208
-    #define EDIT_FLOW(N) EDIT_ITEM(int3, MSG_FLOW MSG_LCD_N##N, &planner.flow_percentage[N], 10, 999, _lcd_refresh_e_factor_##N)
187
+    EDIT_ITEM(int3, MSG_FLOW, &planner.flow_percentage[active_extruder], 10, 999, [](){ planner.refresh_e_factor(active_extruder); });
188
+    #define EDIT_FLOW(N) EDIT_ITEM(int3, MSG_FLOW LCD_STR_N##N, &planner.flow_percentage[N], 10, 999, [](){ planner.refresh_e_factor(N); })
209 189
     EDIT_FLOW(0);
210 190
     EDIT_FLOW(1);
211 191
     #if EXTRUDERS > 2
@@ -229,8 +209,8 @@ void menu_tune() {
229 209
   //
230 210
   #if ENABLED(BABYSTEPPING)
231 211
     #if ENABLED(BABYSTEP_XY)
232
-      SUBMENU(MSG_BABYSTEP_X, lcd_babystep_x);
233
-      SUBMENU(MSG_BABYSTEP_Y, lcd_babystep_y);
212
+      SUBMENU(MSG_BABYSTEP_X, [](){ _lcd_babystep_go(_lcd_babystep_x); });
213
+      SUBMENU(MSG_BABYSTEP_Y, [](){ _lcd_babystep_go(_lcd_babystep_y); });
234 214
     #endif
235 215
     #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
236 216
       SUBMENU(MSG_ZPROBE_ZOFFSET, lcd_babystep_zoffset);

+ 7
- 11
Marlin/src/lcd/menu/menu_ubl.cpp Ver arquivo

@@ -224,15 +224,6 @@ void _lcd_ubl_validate_mesh() {
224 224
 }
225 225
 
226 226
 /**
227
- * UBL Grid Leveling Command
228
- */
229
-void _lcd_ubl_grid_level_cmd() {
230
-  char ubl_lcd_gcode[12];
231
-  sprintf_P(ubl_lcd_gcode, PSTR("G29 J%i"), side_points);
232
-  lcd_enqueue_one_now(ubl_lcd_gcode);
233
-}
234
-
235
-/**
236 227
  * UBL Grid Leveling submenu
237 228
  *
238 229
  * << UBL Tools
@@ -243,7 +234,11 @@ void _lcd_ubl_grid_level() {
243 234
   START_MENU();
244 235
   BACK_ITEM(MSG_UBL_TOOLS);
245 236
   EDIT_ITEM(int3, MSG_UBL_SIDE_POINTS, &side_points, 2, 6);
246
-  ACTION_ITEM(MSG_UBL_MESH_LEVEL, _lcd_ubl_grid_level_cmd);
237
+  ACTION_ITEM(MSG_UBL_MESH_LEVEL, [](){
238
+    char ubl_lcd_gcode[12];
239
+    sprintf_P(ubl_lcd_gcode, PSTR("G29 J%i"), side_points);
240
+    lcd_enqueue_one_now(ubl_lcd_gcode);
241
+  });
247 242
   END_MENU();
248 243
 }
249 244
 
@@ -621,7 +616,8 @@ void _lcd_ubl_level_bed() {
621 616
   SUBMENU(MSG_UBL_TOOLS, _menu_ubl_tools);
622 617
   GCODES_ITEM(MSG_UBL_INFO_UBL, PSTR("G29 W"));
623 618
   #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
624
-    EDIT_ITEM_FAST(float3, MSG_Z_FADE_HEIGHT, &lcd_z_fade_height, 0, 100, _lcd_set_z_fade_height);
619
+    editable.decimal = planner.z_fade_height;
620
+    EDIT_ITEM_FAST(float3, MSG_Z_FADE_HEIGHT, &editable.decimal, 0, 100, [](){ set_z_fade_height(editable.decimal); });
625 621
   #endif
626 622
   END_MENU();
627 623
 }

+ 2
- 17
Marlin/src/module/temperature.cpp Ver arquivo

@@ -103,8 +103,8 @@ Temperature thermalManager;
103 103
 #else
104 104
   #define _CHAMBER_PSTR(M,E)
105 105
 #endif
106
-#define _E_PSTR(M,E,N) ((HOTENDS) >= (N) && (E) == (N)-1) ? PSTR(MSG_E##N " " M) :
107
-#define TEMP_ERR_PSTR(M,E) _BED_PSTR(M##_BED,E) _CHAMBER_PSTR(M##_CHAMBER,E) _E_PSTR(M,E,2) _E_PSTR(M,E,3) _E_PSTR(M,E,4) _E_PSTR(M,E,5) _E_PSTR(M,E,6) PSTR(MSG_E1 " " M)
106
+#define _E_PSTR(M,E,N) ((HOTENDS) > (N) && (E) == (N)) ? PSTR(LCD_STR_E##N " " M) :
107
+#define TEMP_ERR_PSTR(M,E) _BED_PSTR(M##_BED,E) _CHAMBER_PSTR(M##_CHAMBER,E) _E_PSTR(M,E,1) _E_PSTR(M,E,2) _E_PSTR(M,E,3) _E_PSTR(M,E,4) _E_PSTR(M,E,5) PSTR(LCD_STR_E0 " " M)
108 108
 
109 109
 // public:
110 110
 
@@ -157,18 +157,6 @@ Temperature thermalManager;
157 157
     uint8_t Temperature::fan_speed_scaler[FAN_COUNT] = ARRAY_N(FAN_COUNT, 128, 128, 128, 128, 128, 128);
158 158
   #endif
159 159
 
160
-  #if HAS_LCD_MENU
161
-
162
-    uint8_t Temperature::lcd_tmpfan_speed[
163
-      #if ENABLED(SINGLENOZZLE)
164
-        _MAX(EXTRUDERS, FAN_COUNT)
165
-      #else
166
-        FAN_COUNT
167
-      #endif
168
-    ]; // = { 0 }
169
-
170
-  #endif
171
-
172 160
   /**
173 161
    * Set the print fan speed for a target extruder
174 162
    */
@@ -187,9 +175,6 @@ Temperature thermalManager;
187 175
     if (target >= FAN_COUNT) return;
188 176
 
189 177
     fan_speed[target] = speed;
190
-    #if HAS_LCD_MENU
191
-      lcd_tmpfan_speed[target] = speed;
192
-    #endif
193 178
   }
194 179
 
195 180
   #if EITHER(PROBING_FANS_OFF, ADVANCED_PAUSE_FANS_PAUSE)

+ 0
- 33
Marlin/src/module/temperature.h Ver arquivo

@@ -493,30 +493,6 @@ class Temperature {
493 493
         static void set_temp_fan_speed(const uint8_t fan, const uint16_t tmp_temp);
494 494
       #endif
495 495
 
496
-      #if HAS_LCD_MENU
497
-
498
-        static uint8_t lcd_tmpfan_speed[
499
-          #if ENABLED(SINGLENOZZLE)
500
-            _MAX(EXTRUDERS, FAN_COUNT)
501
-          #else
502
-            FAN_COUNT
503
-          #endif
504
-        ];
505
-
506
-        static inline void lcd_setFanSpeed(const uint8_t target) { set_fan_speed(target, lcd_tmpfan_speed[target]); }
507
-
508
-        #if HAS_FAN0
509
-          FORCE_INLINE static void lcd_setFanSpeed0() { lcd_setFanSpeed(0); }
510
-        #endif
511
-        #if HAS_FAN1 || (ENABLED(SINGLENOZZLE) && EXTRUDERS > 1)
512
-          FORCE_INLINE static void lcd_setFanSpeed1() { lcd_setFanSpeed(1); }
513
-        #endif
514
-        #if HAS_FAN2 || (ENABLED(SINGLENOZZLE) && EXTRUDERS > 2)
515
-          FORCE_INLINE static void lcd_setFanSpeed2() { lcd_setFanSpeed(2); }
516
-        #endif
517
-
518
-      #endif // HAS_LCD_MENU
519
-
520 496
       #if EITHER(PROBING_FANS_OFF, ADVANCED_PAUSE_FANS_PAUSE)
521 497
         void set_fans_paused(const bool p);
522 498
       #endif
@@ -595,15 +571,6 @@ class Temperature {
595 571
 
596 572
     #if HOTENDS
597 573
 
598
-      #if HAS_LCD_MENU
599
-        static inline void start_watching_E0() { start_watching_hotend(0); }
600
-        static inline void start_watching_E1() { start_watching_hotend(1); }
601
-        static inline void start_watching_E2() { start_watching_hotend(2); }
602
-        static inline void start_watching_E3() { start_watching_hotend(3); }
603
-        static inline void start_watching_E4() { start_watching_hotend(4); }
604
-        static inline void start_watching_E5() { start_watching_hotend(5); }
605
-      #endif
606
-
607 574
       static void setTargetHotend(const int16_t celsius, const uint8_t E_NAME) {
608 575
         const uint8_t ee = HOTEND_INDEX;
609 576
         #ifdef MILLISECONDS_PREHEAT_TIME

Carregando…
Cancelar
Salvar