Pārlūkot izejas kodu

🩹 Fix DWIN Enhanced Tune menu during homing (#22773)

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

+ 121
- 118
Marlin/src/lcd/e3v2/creality/dwin.cpp Parādīt failu

30
 
30
 
31
 #include "dwin.h"
31
 #include "dwin.h"
32
 
32
 
33
+//#define USE_STRING_HEADINGS
34
+//#define USE_STRING_TITLES
35
+
33
 #if ENABLED(LCD_BED_LEVELING) && DISABLED(PROBE_MANUALLY) && ANY(AUTO_BED_LEVELING_BILINEAR, AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT)
36
 #if ENABLED(LCD_BED_LEVELING) && DISABLED(PROBE_MANUALLY) && ANY(AUTO_BED_LEVELING_BILINEAR, AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT)
34
   #define HAS_ONESTEP_LEVELING 1
37
   #define HAS_ONESTEP_LEVELING 1
35
 #endif
38
 #endif
141
 
144
 
142
 uint8_t checkkey = 0;
145
 uint8_t checkkey = 0;
143
 
146
 
147
+enum SelectItem : uint8_t {
148
+  PAGE_PRINT = 0,
149
+  PAGE_PREPARE,
150
+  PAGE_CONTROL,
151
+  PAGE_INFO_LEVELING,
152
+
153
+  PRINT_SETUP = 0,
154
+  PRINT_PAUSE_RESUME,
155
+  PRINT_STOP
156
+};
157
+
144
 typedef struct {
158
 typedef struct {
145
   uint8_t now, last;
159
   uint8_t now, last;
146
   void set(uint8_t v) { now = last = v; }
160
   void set(uint8_t v) { now = last = v; }
235
     { 1, { 417, 449 }, 30, 14 },
249
     { 1, { 417, 449 }, 30, 14 },
236
     { 1, { 405, 447 }, 27, 15 }
250
     { 1, { 405, 447 }, 27, 15 }
237
   };
251
   };
238
-  ICON_Button(select_page.now == 0, ICON_Print_0, ico, txt);
252
+  ICON_Button(select_page.now == PAGE_PRINT, ICON_Print_0, ico, txt);
239
 }
253
 }
240
 
254
 
241
 //
255
 //
247
     { 33, { 417, 449 }, 51, 14 },
261
     { 33, { 417, 449 }, 51, 14 },
248
     { 31, { 405, 447 }, 27, 15 }
262
     { 31, { 405, 447 }, 27, 15 }
249
   };
263
   };
250
-  ICON_Button(select_page.now == 1, ICON_Prepare_0, ico, txt);
264
+  ICON_Button(select_page.now == PAGE_PREPARE, ICON_Prepare_0, ico, txt);
251
 }
265
 }
252
 
266
 
253
 //
267
 //
259
     { 85, { 417, 449 }, 46, 14 },
273
     { 85, { 417, 449 }, 46, 14 },
260
     { 61, { 405, 447 }, 27, 15 }
274
     { 61, { 405, 447 }, 27, 15 }
261
   };
275
   };
262
-  ICON_Button(select_page.now == 2, ICON_Control_0, ico, txt);
276
+  ICON_Button(select_page.now == PAGE_CONTROL, ICON_Control_0, ico, txt);
263
 }
277
 }
264
 
278
 
265
 //
279
 //
271
     { 133, { 417, 449 }, 23, 14 },
285
     { 133, { 417, 449 }, 23, 14 },
272
     {  91, { 405, 447 }, 27, 15 }
286
     {  91, { 405, 447 }, 27, 15 }
273
   };
287
   };
274
-  ICON_Button(select_page.now == 3, ICON_Info_0, ico, txt);
288
+  ICON_Button(select_page.now == PAGE_INFO_LEVELING, ICON_Info_0, ico, txt);
275
 }
289
 }
276
 
290
 
277
 //
291
 //
283
     {  88, { 433, 464 }, 36, 14 },
297
     {  88, { 433, 464 }, 36, 14 },
284
     { 211, { 405, 447 }, 27, 15 }
298
     { 211, { 405, 447 }, 27, 15 }
285
   };
299
   };
286
-  ICON_Button(select_page.now == 3, ICON_Leveling_0, ico, txt);
300
+  ICON_Button(select_page.now == PAGE_INFO_LEVELING, ICON_Leveling_0, ico, txt);
287
 }
301
 }
288
 
302
 
289
 //
303
 //
295
     {   0, { 433, 464 }, 32, 14 },
309
     {   0, { 433, 464 }, 32, 14 },
296
     { 121, { 405, 447 }, 27, 15 }
310
     { 121, { 405, 447 }, 27, 15 }
297
   };
311
   };
298
-  ICON_Button(select_print.now == 0, ICON_Setup_0, ico, txt);
312
+  ICON_Button(select_print.now == PRINT_SETUP, ICON_Setup_0, ico, txt);
299
 }
313
 }
300
 
314
 
301
 //
315
 //
307
     { 157, { 417, 449 }, 39, 14 },
321
     { 157, { 417, 449 }, 39, 14 },
308
     { 181, { 405, 447 }, 27, 15 }
322
     { 181, { 405, 447 }, 27, 15 }
309
   };
323
   };
310
-  ICON_Button(select_print.now == 1, ICON_Pause_0, ico, txt);
324
+  ICON_Button(select_print.now == PRINT_PAUSE_RESUME, ICON_Pause_0, ico, txt);
311
 }
325
 }
312
 
326
 
313
 //
327
 //
319
     { 33, { 433, 464 }, 53, 14 },
333
     { 33, { 433, 464 }, 53, 14 },
320
     {  1, { 405, 447 }, 27, 15 }
334
     {  1, { 405, 447 }, 27, 15 }
321
   };
335
   };
322
-  ICON_Button(select_print.now == 1, ICON_Continue_0, ico, txt);
336
+  ICON_Button(select_print.now == PRINT_PAUSE_RESUME, ICON_Continue_0, ico, txt);
323
 }
337
 }
324
 
338
 
325
 void ICON_ResumeOrPause() {
339
 void ICON_ResumeOrPause() {
338
     { 196, { 417, 449 }, 29, 14 },
352
     { 196, { 417, 449 }, 29, 14 },
339
     { 151, { 405, 447 }, 27, 12 }
353
     { 151, { 405, 447 }, 27, 12 }
340
   };
354
   };
341
-  ICON_Button(select_print.now == 2, ICON_Stop_0, ico, txt);
355
+  ICON_Button(select_print.now == PRINT_STOP, ICON_Stop_0, ico, txt);
342
 }
356
 }
343
 
357
 
344
 inline void Clear_Title_Bar() {
358
 inline void Clear_Title_Bar() {
467
 //
481
 //
468
 // Draw Menus
482
 // Draw Menus
469
 //
483
 //
484
+#define CASE_BACK          0
470
 
485
 
471
 #define MOTION_CASE_RATE   1
486
 #define MOTION_CASE_RATE   1
472
 #define MOTION_CASE_ACCEL  2
487
 #define MOTION_CASE_ACCEL  2
759
     #endif
774
     #endif
760
   }
775
   }
761
 
776
 
762
-  if (PVISI(0)) Draw_Back_First(select_prepare.now == 0);                         // < Back
777
+  if (PVISI(0)) Draw_Back_First(select_prepare.now == CASE_BACK);                 // < Back
763
   if (PVISI(PREPARE_CASE_MOVE)) Item_Prepare_Move(PSCROL(PREPARE_CASE_MOVE));     // Move >
778
   if (PVISI(PREPARE_CASE_MOVE)) Item_Prepare_Move(PSCROL(PREPARE_CASE_MOVE));     // Move >
764
   if (PVISI(PREPARE_CASE_DISA)) Item_Prepare_Disable(PSCROL(PREPARE_CASE_DISA));  // Disable Stepper
779
   if (PVISI(PREPARE_CASE_DISA)) Item_Prepare_Disable(PSCROL(PREPARE_CASE_DISA));  // Disable Stepper
765
   if (PVISI(PREPARE_CASE_HOME)) Item_Prepare_Home(PSCROL(PREPARE_CASE_HOME));     // Auto Home
780
   if (PVISI(PREPARE_CASE_HOME)) Item_Prepare_Home(PSCROL(PREPARE_CASE_HOME));     // Auto Home
775
   #endif
790
   #endif
776
   if (PVISI(PREPARE_CASE_LANG)) Item_Prepare_Lang(PSCROL(PREPARE_CASE_LANG));     // Language CN/EN
791
   if (PVISI(PREPARE_CASE_LANG)) Item_Prepare_Lang(PSCROL(PREPARE_CASE_LANG));     // Language CN/EN
777
 
792
 
778
-  if (select_prepare.now) Draw_Menu_Cursor(PSCROL(select_prepare.now));
793
+  if (select_prepare.now != CASE_BACK) Draw_Menu_Cursor(PSCROL(select_prepare.now));
779
 }
794
 }
780
 
795
 
781
 //
796
 //
860
     #endif
875
     #endif
861
   }
876
   }
862
 
877
 
863
-  if (CVISI(0)) Draw_Back_First(select_control.now == 0);                       // < Back
878
+  if (CVISI(0)) Draw_Back_First(select_control.now == CASE_BACK);               // < Back
864
   if (CVISI(CONTROL_CASE_TEMP)) Item_Control_Temp(CSCROL(CONTROL_CASE_TEMP));   // Temperature >
879
   if (CVISI(CONTROL_CASE_TEMP)) Item_Control_Temp(CSCROL(CONTROL_CASE_TEMP));   // Temperature >
865
   if (CVISI(CONTROL_CASE_MOVE)) Item_Control_Motion(CSCROL(CONTROL_CASE_MOVE)); // Motion >
880
   if (CVISI(CONTROL_CASE_MOVE)) Item_Control_Motion(CSCROL(CONTROL_CASE_MOVE)); // Motion >
866
 
881
 
897
   if (CVISI(CONTROL_CASE_ADVSET)) Item_Control_Advanced(CSCROL(CONTROL_CASE_ADVSET));
912
   if (CVISI(CONTROL_CASE_ADVSET)) Item_Control_Advanced(CSCROL(CONTROL_CASE_ADVSET));
898
   if (CVISI(CONTROL_CASE_INFO)) Item_Control_Info(CSCROL(CONTROL_CASE_INFO));
913
   if (CVISI(CONTROL_CASE_INFO)) Item_Control_Info(CSCROL(CONTROL_CASE_INFO));
899
 
914
 
900
-  if (select_control.now && CVISI(select_control.now))
915
+  if (select_control.now != CASE_BACK && CVISI(select_control.now))
901
     Draw_Menu_Cursor(CSCROL(select_control.now));
916
     Draw_Menu_Cursor(CSCROL(select_control.now));
902
 
917
 
903
   // Draw icons and lines
918
   // Draw icons and lines
977
     #endif
992
     #endif
978
   }
993
   }
979
 
994
 
980
-  Draw_Back_First(select_tune.now == 0);
981
-  if (select_tune.now) Draw_Menu_Cursor(select_tune.now);
995
+  Draw_Back_First(select_tune.now == CASE_BACK);
996
+  if (select_tune.now != CASE_BACK) Draw_Menu_Cursor(select_tune.now);
982
 
997
 
983
   Draw_Menu_Line(TUNE_CASE_SPEED, ICON_Speed);
998
   Draw_Menu_Line(TUNE_CASE_SPEED, ICON_Speed);
984
   Draw_Edit_Integer3(TUNE_CASE_SPEED, feedrate_percentage);
999
   Draw_Edit_Integer3(TUNE_CASE_SPEED, feedrate_percentage);
1042
     #endif
1057
     #endif
1043
   }
1058
   }
1044
 
1059
 
1045
-  Draw_Back_First(select_motion.now == 0);
1046
-  if (select_motion.now) Draw_Menu_Cursor(select_motion.now);
1060
+  Draw_Back_First(select_motion.now == CASE_BACK);
1061
+  if (select_motion.now != CASE_BACK) Draw_Menu_Cursor(select_motion.now);
1047
 
1062
 
1048
   uint8_t i = 0;
1063
   uint8_t i = 0;
1049
   #define _MOTION_ICON(N) Draw_Menu_Line(++i, ICON_MaxSpeed + (N) - 1)
1064
   #define _MOTION_ICON(N) Draw_Menu_Line(++i, ICON_MaxSpeed + (N) - 1)
1179
   Clear_Main_Window();
1194
   Clear_Main_Window();
1180
   Draw_Popup_Bkgd_60();
1195
   Draw_Popup_Bkgd_60();
1181
   if (HMI_IsChinese()) {
1196
   if (HMI_IsChinese()) {
1182
-         if (select_print.now == 1) DWIN_Frame_AreaCopy(1, 237, 338, 269, 356, 98, 150);    // Pause
1183
-    else if (select_print.now == 2) DWIN_Frame_AreaCopy(1, 221, 320, 253, 336, 98, 150);    // Stop
1197
+         if (select_print.now == PRINT_PAUSE_RESUME) DWIN_Frame_AreaCopy(1, 237, 338, 269, 356, 98, 150);    // Pause
1198
+    else if (select_print.now == PRINT_STOP) DWIN_Frame_AreaCopy(1, 221, 320, 253, 336, 98, 150);    // Stop
1184
     DWIN_Frame_AreaCopy(1, 220, 304, 264, 319, 130, 150); // Print
1199
     DWIN_Frame_AreaCopy(1, 220, 304, 264, 319, 130, 150); // Print
1185
     DWIN_ICON_Show(ICON, ICON_Confirm_C, 26, 280);
1200
     DWIN_ICON_Show(ICON, ICON_Confirm_C, 26, 280);
1186
     DWIN_ICON_Show(ICON, ICON_Cancel_C, 146, 280);
1201
     DWIN_ICON_Show(ICON, ICON_Cancel_C, 146, 280);
1187
   }
1202
   }
1188
   else {
1203
   else {
1189
-         if (select_print.now == 1) DWIN_Draw_String(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 11) / 2, 150, GET_TEXT_F(MSG_PAUSE_PRINT));
1190
-    else if (select_print.now == 2) DWIN_Draw_String(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 10) / 2, 150, GET_TEXT_F(MSG_STOP_PRINT));
1204
+         if (select_print.now == PRINT_PAUSE_RESUME) DWIN_Draw_String(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 11) / 2, 150, GET_TEXT_F(MSG_PAUSE_PRINT));
1205
+    else if (select_print.now == PRINT_STOP) DWIN_Draw_String(true, font8x16, Popup_Text_Color, Color_Bg_Window, (272 - 8 * 10) / 2, 150, GET_TEXT_F(MSG_STOP_PRINT));
1191
     DWIN_ICON_Show(ICON, ICON_Confirm_E, 26, 280);
1206
     DWIN_ICON_Show(ICON, ICON_Confirm_E, 26, 280);
1192
     DWIN_ICON_Show(ICON, ICON_Cancel_E, 146, 280);
1207
     DWIN_ICON_Show(ICON, ICON_Cancel_E, 146, 280);
1193
   }
1208
   }
1823
 
1838
 
1824
   void Init_SDItem_Shift() {
1839
   void Init_SDItem_Shift() {
1825
     shift_amt = 0;
1840
     shift_amt = 0;
1826
-    shift_ms  = select_file.now > 0 && strlen(shift_name) > MENU_CHAR_LIMIT
1841
+    shift_ms  = select_file.now != CASE_BACK && strlen(shift_name) > MENU_CHAR_LIMIT
1827
            ? millis() + 750UL : 0;
1842
            ? millis() + 750UL : 0;
1828
   }
1843
   }
1829
 
1844
 
2068
   if (encoder_diffState == ENCODER_DIFF_CW) {
2083
   if (encoder_diffState == ENCODER_DIFF_CW) {
2069
     if (select_page.inc(4)) {
2084
     if (select_page.inc(4)) {
2070
       switch (select_page.now) {
2085
       switch (select_page.now) {
2071
-        case 0: ICON_Print(); break;
2072
-        case 1: ICON_Print(); ICON_Prepare(); break;
2073
-        case 2: ICON_Prepare(); ICON_Control(); break;
2074
-        case 3: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
2086
+        case PAGE_PRINT: ICON_Print(); break;
2087
+        case PAGE_PREPARE: ICON_Print(); ICON_Prepare(); break;
2088
+        case PAGE_CONTROL: ICON_Prepare(); ICON_Control(); break;
2089
+        case PAGE_INFO_LEVELING: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
2075
       }
2090
       }
2076
     }
2091
     }
2077
   }
2092
   }
2078
   else if (encoder_diffState == ENCODER_DIFF_CCW) {
2093
   else if (encoder_diffState == ENCODER_DIFF_CCW) {
2079
     if (select_page.dec()) {
2094
     if (select_page.dec()) {
2080
       switch (select_page.now) {
2095
       switch (select_page.now) {
2081
-        case 0: ICON_Print(); ICON_Prepare(); break;
2082
-        case 1: ICON_Prepare(); ICON_Control(); break;
2083
-        case 2: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
2084
-        case 3: TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
2096
+        case PAGE_PRINT: ICON_Print(); ICON_Prepare(); break;
2097
+        case PAGE_PREPARE: ICON_Prepare(); ICON_Control(); break;
2098
+        case PAGE_CONTROL: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
2099
+        case PAGE_INFO_LEVELING: TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
2085
       }
2100
       }
2086
     }
2101
     }
2087
   }
2102
   }
2088
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
2103
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
2089
     switch (select_page.now) {
2104
     switch (select_page.now) {
2090
-      case 0: // Print File
2105
+      case PAGE_PRINT:
2091
         checkkey = SelectFile;
2106
         checkkey = SelectFile;
2092
         Draw_Print_File_Menu();
2107
         Draw_Print_File_Menu();
2093
         break;
2108
         break;
2094
 
2109
 
2095
-      case 1: // Prepare
2110
+      case PAGE_PREPARE:
2096
         checkkey = Prepare;
2111
         checkkey = Prepare;
2097
         select_prepare.reset();
2112
         select_prepare.reset();
2098
         index_prepare = MROWS;
2113
         index_prepare = MROWS;
2099
         Draw_Prepare_Menu();
2114
         Draw_Prepare_Menu();
2100
         break;
2115
         break;
2101
 
2116
 
2102
-      case 2: // Control
2117
+      case PAGE_CONTROL:
2103
         checkkey = Control;
2118
         checkkey = Control;
2104
         select_control.reset();
2119
         select_control.reset();
2105
         index_control = MROWS;
2120
         index_control = MROWS;
2106
         Draw_Control_Menu();
2121
         Draw_Control_Menu();
2107
         break;
2122
         break;
2108
 
2123
 
2109
-      case 3: // Leveling or Info
2124
+      case PAGE_INFO_LEVELING:
2110
         #if HAS_ONESTEP_LEVELING
2125
         #if HAS_ONESTEP_LEVELING
2111
           checkkey = Leveling;
2126
           checkkey = Leveling;
2112
           HMI_Leveling();
2127
           HMI_Leveling();
2196
     }
2211
     }
2197
   }
2212
   }
2198
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
2213
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
2199
-    if (select_file.now == 0) { // Back
2214
+    if (select_file.now == CASE_BACK) { // Back
2200
       select_page.set(0);
2215
       select_page.set(0);
2201
       Goto_MainMenu();
2216
       Goto_MainMenu();
2202
     }
2217
     }
2257
   if (encoder_diffState == ENCODER_DIFF_CW) {
2272
   if (encoder_diffState == ENCODER_DIFF_CW) {
2258
     if (select_print.inc(3)) {
2273
     if (select_print.inc(3)) {
2259
       switch (select_print.now) {
2274
       switch (select_print.now) {
2260
-        case 0: ICON_Tune(); break;
2261
-        case 1:
2262
-          ICON_Tune();
2263
-          ICON_ResumeOrPause();
2264
-          break;
2265
-        case 2:
2266
-          ICON_ResumeOrPause();
2267
-          ICON_Stop();
2268
-          break;
2275
+        case PRINT_SETUP: ICON_Tune(); break;
2276
+        case PRINT_PAUSE_RESUME: ICON_Tune(); ICON_ResumeOrPause(); break;
2277
+        case PRINT_STOP: ICON_ResumeOrPause(); ICON_Stop(); break;
2269
       }
2278
       }
2270
     }
2279
     }
2271
   }
2280
   }
2272
   else if (encoder_diffState == ENCODER_DIFF_CCW) {
2281
   else if (encoder_diffState == ENCODER_DIFF_CCW) {
2273
     if (select_print.dec()) {
2282
     if (select_print.dec()) {
2274
       switch (select_print.now) {
2283
       switch (select_print.now) {
2275
-        case 0:
2276
-          ICON_Tune();
2277
-          ICON_ResumeOrPause();
2278
-          break;
2279
-        case 1:
2280
-          ICON_ResumeOrPause();
2281
-          ICON_Stop();
2282
-          break;
2283
-        case 2: ICON_Stop(); break;
2284
+        case PRINT_SETUP: ICON_Tune(); ICON_ResumeOrPause(); break;
2285
+        case PRINT_PAUSE_RESUME: ICON_ResumeOrPause(); ICON_Stop(); break;
2286
+        case PRINT_STOP: ICON_Stop(); break;
2284
       }
2287
       }
2285
     }
2288
     }
2286
   }
2289
   }
2287
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
2290
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
2288
     switch (select_print.now) {
2291
     switch (select_print.now) {
2289
-      case 0: // Tune
2292
+      case PRINT_SETUP:
2290
         checkkey = Tune;
2293
         checkkey = Tune;
2291
         HMI_ValueStruct.show_mode = 0;
2294
         HMI_ValueStruct.show_mode = 0;
2292
         select_tune.reset();
2295
         select_tune.reset();
2293
         index_tune = MROWS;
2296
         index_tune = MROWS;
2294
         Draw_Tune_Menu();
2297
         Draw_Tune_Menu();
2295
         break;
2298
         break;
2296
-      case 1: // Pause
2299
+
2300
+      case PRINT_PAUSE_RESUME:
2297
         if (HMI_flag.pause_flag) {
2301
         if (HMI_flag.pause_flag) {
2298
           ICON_Pause();
2302
           ICON_Pause();
2299
 
2303
 
2317
         }
2321
         }
2318
         break;
2322
         break;
2319
 
2323
 
2320
-      case 2: // Stop
2324
+      case PRINT_STOP:
2321
         HMI_flag.select_flag = true;
2325
         HMI_flag.select_flag = true;
2322
         checkkey = Print_window;
2326
         checkkey = Print_window;
2323
         Popup_window_PauseOrStop();
2327
         Popup_window_PauseOrStop();
2339
   else if (encoder_diffState == ENCODER_DIFF_CCW)
2343
   else if (encoder_diffState == ENCODER_DIFF_CCW)
2340
     Draw_Select_Highlight(true);
2344
     Draw_Select_Highlight(true);
2341
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
2345
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
2342
-    if (select_print.now == 1) { // pause window
2346
+    if (select_print.now == PRINT_PAUSE_RESUME) {
2343
       if (HMI_flag.select_flag) {
2347
       if (HMI_flag.select_flag) {
2344
         HMI_flag.pause_action = true;
2348
         HMI_flag.pause_action = true;
2345
         queue.inject_P(PSTR("M25"));
2349
         queue.inject_P(PSTR("M25"));
2346
       }
2350
       }
2347
       Goto_PrintProcess();
2351
       Goto_PrintProcess();
2348
     }
2352
     }
2349
-    else if (select_print.now == 2) { // stop window
2353
+    else if (select_print.now == PRINT_STOP) {
2350
       if (HMI_flag.select_flag) {
2354
       if (HMI_flag.select_flag) {
2351
         checkkey = Back_Main;
2355
         checkkey = Back_Main;
2352
         wait_for_heatup = wait_for_user = false;       // Stop waiting for heating/user
2356
         wait_for_heatup = wait_for_user = false;       // Stop waiting for heating/user
2395
     #endif
2399
     #endif
2396
   }
2400
   }
2397
 
2401
 
2398
-  Draw_Back_First(select_axis.now == 0);
2399
-  if (select_axis.now) Draw_Menu_Cursor(select_axis.now);
2402
+  Draw_Back_First(select_axis.now == CASE_BACK);
2403
+  if (select_axis.now != CASE_BACK) Draw_Menu_Cursor(select_axis.now);
2400
 
2404
 
2401
   // Draw separators and icons
2405
   // Draw separators and icons
2402
   LOOP_L_N(i, 3 + ENABLED(HAS_HOTEND)) Draw_Menu_Line(i + 1, ICON_MoveX + i);
2406
   LOOP_L_N(i, 3 + ENABLED(HAS_HOTEND)) Draw_Menu_Line(i + 1, ICON_MoveX + i);
2506
     #endif
2510
     #endif
2507
   }
2511
   }
2508
 
2512
 
2509
-  if (AVISI(0)) Draw_Back_First(select_advset.now == 0);
2513
+  if (AVISI(0)) Draw_Back_First(select_advset.now == CASE_BACK);
2510
   if (AVISI(ADVSET_CASE_HOMEOFF)) Item_Adv_HomeOffsets(ASCROL(ADVSET_CASE_HOMEOFF));      // Set Home Offsets >
2514
   if (AVISI(ADVSET_CASE_HOMEOFF)) Item_Adv_HomeOffsets(ASCROL(ADVSET_CASE_HOMEOFF));      // Set Home Offsets >
2511
   #if HAS_ONESTEP_LEVELING
2515
   #if HAS_ONESTEP_LEVELING
2512
     if (AVISI(ADVSET_CASE_PROBEOFF)) Item_Adv_ProbeOffsets(ASCROL(ADVSET_CASE_PROBEOFF)); // Probe Offsets >
2516
     if (AVISI(ADVSET_CASE_PROBEOFF)) Item_Adv_ProbeOffsets(ASCROL(ADVSET_CASE_PROBEOFF)); // Probe Offsets >
2516
   #if ENABLED(POWER_LOSS_RECOVERY)
2520
   #if ENABLED(POWER_LOSS_RECOVERY)
2517
     if (AVISI(ADVSET_CASE_PWRLOSSR)) Item_Adv_PLR(ASCROL(ADVSET_CASE_PWRLOSSR));          // Power-loss recovery
2521
     if (AVISI(ADVSET_CASE_PWRLOSSR)) Item_Adv_PLR(ASCROL(ADVSET_CASE_PWRLOSSR));          // Power-loss recovery
2518
   #endif
2522
   #endif
2519
-  if (select_advset.now) Draw_Menu_Cursor(ASCROL(select_advset.now));
2523
+  if (select_advset.now != CASE_BACK) Draw_Menu_Cursor(ASCROL(select_advset.now));
2520
 }
2524
 }
2521
 
2525
 
2522
 void Item_HomeOffs_X(const uint8_t row) {
2526
 void Item_HomeOffs_X(const uint8_t row) {
2576
       DWIN_Frame_TitleCopy(1, 401, 91, 12);         // "Home Offsets"
2580
       DWIN_Frame_TitleCopy(1, 401, 91, 12);         // "Home Offsets"
2577
     #endif
2581
     #endif
2578
   }
2582
   }
2579
-  Draw_Back_First(select_item.now == 0);
2583
+  Draw_Back_First(select_item.now == CASE_BACK);
2580
   Item_HomeOffs_X(1);                               // "Home Offset X"
2584
   Item_HomeOffs_X(1);                               // "Home Offset X"
2581
   Item_HomeOffs_Y(2);                               // "Home Offset Y"
2585
   Item_HomeOffs_Y(2);                               // "Home Offset Y"
2582
   Item_HomeOffs_Z(3);                               // "Home Offset Z"
2586
   Item_HomeOffs_Z(3);                               // "Home Offset Z"
2583
-  if (select_item.now) Draw_Menu_Cursor(select_item.now);
2587
+  if (select_item.now != CASE_BACK) Draw_Menu_Cursor(select_item.now);
2584
 }
2588
 }
2585
 
2589
 
2586
 #if HAS_ONESTEP_LEVELING
2590
 #if HAS_ONESTEP_LEVELING
2587
 
2591
 
2588
   void Draw_ProbeOff_Menu() {
2592
   void Draw_ProbeOff_Menu() {
2589
     Clear_Main_Window();
2593
     Clear_Main_Window();
2590
-    Draw_Back_First(select_item.now == 0);
2594
+    Draw_Back_First(select_item.now == CASE_BACK);
2591
     if (false && HMI_IsChinese()) {
2595
     if (false && HMI_IsChinese()) {
2592
       // TODO: Chinese "Probe Offsets"
2596
       // TODO: Chinese "Probe Offsets"
2593
     }
2597
     }
2609
     Draw_Edit_Signed_Float3(1, HMI_ValueStruct.Probe_OffX_scaled);
2613
     Draw_Edit_Signed_Float3(1, HMI_ValueStruct.Probe_OffX_scaled);
2610
     Draw_Edit_Signed_Float3(2, HMI_ValueStruct.Probe_OffY_scaled);
2614
     Draw_Edit_Signed_Float3(2, HMI_ValueStruct.Probe_OffY_scaled);
2611
 
2615
 
2612
-    if (select_item.now) Draw_Menu_Cursor(select_item.now);
2616
+    if (select_item.now != CASE_BACK) Draw_Menu_Cursor(select_item.now);
2613
   }
2617
   }
2614
 #endif
2618
 #endif
2615
 
2619
 
2682
   }
2686
   }
2683
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
2687
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
2684
     switch (select_prepare.now) {
2688
     switch (select_prepare.now) {
2685
-      case 0: // Back
2689
+      case CASE_BACK:
2686
         select_page.set(1);
2690
         select_page.set(1);
2687
         Goto_MainMenu();
2691
         Goto_MainMenu();
2688
         break;
2692
         break;
2689
-      case PREPARE_CASE_MOVE: // Axis move
2693
+      case PREPARE_CASE_MOVE:
2690
         checkkey = AxisMove;
2694
         checkkey = AxisMove;
2691
         select_axis.reset();
2695
         select_axis.reset();
2692
         Draw_Move_Menu();
2696
         Draw_Move_Menu();
2699
           Draw_Edit_Signed_Float3(4, HMI_ValueStruct.Move_E_scaled);
2703
           Draw_Edit_Signed_Float3(4, HMI_ValueStruct.Move_E_scaled);
2700
         #endif
2704
         #endif
2701
         break;
2705
         break;
2702
-      case PREPARE_CASE_DISA: // Disable steppers
2703
-        queue.inject_P(PSTR("M84"));
2704
-        break;
2706
+
2707
+      case PREPARE_CASE_DISA: queue.inject_P(PSTR("M84")); break;
2708
+
2705
       case PREPARE_CASE_HOME: // Homing
2709
       case PREPARE_CASE_HOME: // Homing
2706
         checkkey = Last_Prepare;
2710
         checkkey = Last_Prepare;
2707
         index_prepare = MROWS;
2711
         index_prepare = MROWS;
2709
         Popup_Window_Home();
2713
         Popup_Window_Home();
2710
         break;
2714
         break;
2711
       #if HAS_ZOFFSET_ITEM
2715
       #if HAS_ZOFFSET_ITEM
2712
-        case PREPARE_CASE_ZOFF: // Z-offset
2716
+        case PREPARE_CASE_ZOFF:
2713
           #if EITHER(HAS_BED_PROBE, BABYSTEPPING)
2717
           #if EITHER(HAS_BED_PROBE, BABYSTEPPING)
2714
             checkkey = Homeoffset;
2718
             checkkey = Homeoffset;
2715
             HMI_ValueStruct.show_mode = -4;
2719
             HMI_ValueStruct.show_mode = -4;
2724
           break;
2728
           break;
2725
       #endif
2729
       #endif
2726
       #if HAS_PREHEAT
2730
       #if HAS_PREHEAT
2727
-        case PREPARE_CASE_PLA: // PLA preheat
2731
+        case PREPARE_CASE_PLA:
2728
           TERN_(HAS_HOTEND, thermalManager.setTargetHotend(ui.material_preset[0].hotend_temp, 0));
2732
           TERN_(HAS_HOTEND, thermalManager.setTargetHotend(ui.material_preset[0].hotend_temp, 0));
2729
           TERN_(HAS_HEATED_BED, thermalManager.setTargetBed(ui.material_preset[0].bed_temp));
2733
           TERN_(HAS_HEATED_BED, thermalManager.setTargetBed(ui.material_preset[0].bed_temp));
2730
           TERN_(HAS_FAN, thermalManager.set_fan_speed(0, ui.material_preset[0].fan_speed));
2734
           TERN_(HAS_FAN, thermalManager.set_fan_speed(0, ui.material_preset[0].fan_speed));
2731
           break;
2735
           break;
2732
-        case PREPARE_CASE_ABS: // ABS preheat
2736
+        case PREPARE_CASE_ABS:
2733
           TERN_(HAS_HOTEND, thermalManager.setTargetHotend(ui.material_preset[1].hotend_temp, 0));
2737
           TERN_(HAS_HOTEND, thermalManager.setTargetHotend(ui.material_preset[1].hotend_temp, 0));
2734
           TERN_(HAS_HEATED_BED, thermalManager.setTargetBed(ui.material_preset[1].bed_temp));
2738
           TERN_(HAS_HEATED_BED, thermalManager.setTargetBed(ui.material_preset[1].bed_temp));
2735
           TERN_(HAS_FAN, thermalManager.set_fan_speed(0, ui.material_preset[1].fan_speed));
2739
           TERN_(HAS_FAN, thermalManager.set_fan_speed(0, ui.material_preset[1].fan_speed));
2736
           break;
2740
           break;
2737
-        case PREPARE_CASE_COOL: // Cool
2741
+        case PREPARE_CASE_COOL:
2738
           TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
2742
           TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
2739
           #if HAS_HOTEND || HAS_HEATED_BED
2743
           #if HAS_HOTEND || HAS_HEATED_BED
2740
             thermalManager.disable_all_heaters();
2744
             thermalManager.disable_all_heaters();
2741
           #endif
2745
           #endif
2742
           break;
2746
           break;
2743
       #endif
2747
       #endif
2744
-      case PREPARE_CASE_LANG: // Toggle Language
2748
+      case PREPARE_CASE_LANG:
2745
         HMI_ToggleLanguage();
2749
         HMI_ToggleLanguage();
2746
         Draw_Prepare_Menu();
2750
         Draw_Prepare_Menu();
2747
         break;
2751
         break;
2814
     #endif
2818
     #endif
2815
   }
2819
   }
2816
 
2820
 
2817
-  Draw_Back_First(select_temp.now == 0);
2818
-  if (select_temp.now) Draw_Menu_Cursor(select_temp.now);
2821
+  Draw_Back_First(select_temp.now == CASE_BACK);
2822
+  if (select_temp.now != CASE_BACK) Draw_Menu_Cursor(select_temp.now);
2819
 
2823
 
2820
   // Draw icons and lines
2824
   // Draw icons and lines
2821
   uint8_t i = 0;
2825
   uint8_t i = 0;
2884
   }
2888
   }
2885
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
2889
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
2886
     switch (select_control.now) {
2890
     switch (select_control.now) {
2887
-      case 0: // Back
2891
+      case CASE_BACK:
2888
         select_page.set(2);
2892
         select_page.set(2);
2889
         Goto_MainMenu();
2893
         Goto_MainMenu();
2890
         break;
2894
         break;
2891
-      case CONTROL_CASE_TEMP: // Temperature
2895
+      case CONTROL_CASE_TEMP:
2892
         checkkey = TemperatureID;
2896
         checkkey = TemperatureID;
2893
         HMI_ValueStruct.show_mode = -1;
2897
         HMI_ValueStruct.show_mode = -1;
2894
         select_temp.reset();
2898
         select_temp.reset();
2895
         Draw_Temperature_Menu();
2899
         Draw_Temperature_Menu();
2896
         break;
2900
         break;
2897
-      case CONTROL_CASE_MOVE: // Motion
2901
+      case CONTROL_CASE_MOVE:
2898
         checkkey = Motion;
2902
         checkkey = Motion;
2899
         select_motion.reset();
2903
         select_motion.reset();
2900
         Draw_Motion_Menu();
2904
         Draw_Motion_Menu();
2901
         break;
2905
         break;
2902
       #if ENABLED(EEPROM_SETTINGS)
2906
       #if ENABLED(EEPROM_SETTINGS)
2903
-        case CONTROL_CASE_SAVE: { // Write EEPROM
2907
+        case CONTROL_CASE_SAVE: {
2904
           const bool success = settings.save();
2908
           const bool success = settings.save();
2905
           HMI_AudioFeedback(success);
2909
           HMI_AudioFeedback(success);
2906
         } break;
2910
         } break;
2907
-        case CONTROL_CASE_LOAD: { // Read EEPROM
2911
+        case CONTROL_CASE_LOAD: {
2908
           const bool success = settings.load();
2912
           const bool success = settings.load();
2909
           HMI_AudioFeedback(success);
2913
           HMI_AudioFeedback(success);
2910
         } break;
2914
         } break;
2911
-        case CONTROL_CASE_RESET: // Reset EEPROM
2915
+        case CONTROL_CASE_RESET:
2912
           settings.reset();
2916
           settings.reset();
2913
           HMI_AudioFeedback();
2917
           HMI_AudioFeedback();
2914
           break;
2918
           break;
2915
       #endif
2919
       #endif
2916
-      case CONTROL_CASE_ADVSET: // Advanced Settings
2920
+      case CONTROL_CASE_ADVSET:
2917
         checkkey = AdvSet;
2921
         checkkey = AdvSet;
2918
         select_advset.reset();
2922
         select_advset.reset();
2919
         Draw_AdvancedSettings_Menu();
2923
         Draw_AdvancedSettings_Menu();
2920
         break;
2924
         break;
2921
-      case CONTROL_CASE_INFO: // Info
2925
+      case CONTROL_CASE_INFO:
2922
         checkkey = Info;
2926
         checkkey = Info;
2923
         Draw_Info_Menu();
2927
         Draw_Info_Menu();
2924
         break;
2928
         break;
2971
   }
2975
   }
2972
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
2976
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
2973
     switch (select_axis.now) {
2977
     switch (select_axis.now) {
2974
-      case 0: // Back
2978
+      case CASE_BACK:
2975
         checkkey = Prepare;
2979
         checkkey = Prepare;
2976
         select_prepare.set(1);
2980
         select_prepare.set(1);
2977
         index_prepare = MROWS;
2981
         index_prepare = MROWS;
2997
         break;
3001
         break;
2998
         #if HAS_HOTEND
3002
         #if HAS_HOTEND
2999
           case 4: // Extruder
3003
           case 4: // Extruder
3000
-            // window tips
3001
-            #ifdef PREVENT_COLD_EXTRUSION
3004
+            #if ENABLED(PREVENT_COLD_EXTRUSION)
3002
               if (thermalManager.tooColdToExtrude(0)) {
3005
               if (thermalManager.tooColdToExtrude(0)) {
3003
                 HMI_flag.ETempTooLow_flag = true;
3006
                 HMI_flag.ETempTooLow_flag = true;
3004
                 Popup_Window_ETempTooLow();
3007
                 Popup_Window_ETempTooLow();
3031
   }
3034
   }
3032
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
3035
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
3033
     switch (select_temp.now) {
3036
     switch (select_temp.now) {
3034
-      case 0: // Back
3037
+      case CASE_BACK:
3035
         checkkey = Control;
3038
         checkkey = Control;
3036
         select_control.set(1);
3039
         select_control.set(1);
3037
         index_control = MROWS;
3040
         index_control = MROWS;
3038
         Draw_Control_Menu();
3041
         Draw_Control_Menu();
3039
         break;
3042
         break;
3040
       #if HAS_HOTEND
3043
       #if HAS_HOTEND
3041
-        case TEMP_CASE_TEMP: // Nozzle temperature
3044
+        case TEMP_CASE_TEMP:
3042
           checkkey = ETemp;
3045
           checkkey = ETemp;
3043
           HMI_ValueStruct.E_Temp = thermalManager.degTargetHotend(0);
3046
           HMI_ValueStruct.E_Temp = thermalManager.degTargetHotend(0);
3044
           Draw_Edit_Integer3(1, HMI_ValueStruct.E_Temp, true);
3047
           Draw_Edit_Integer3(1, HMI_ValueStruct.E_Temp, true);
3046
           break;
3049
           break;
3047
       #endif
3050
       #endif
3048
       #if HAS_HEATED_BED
3051
       #if HAS_HEATED_BED
3049
-        case TEMP_CASE_BED: // Bed temperature
3052
+        case TEMP_CASE_BED:
3050
           checkkey = BedTemp;
3053
           checkkey = BedTemp;
3051
           HMI_ValueStruct.Bed_Temp = thermalManager.degTargetBed();
3054
           HMI_ValueStruct.Bed_Temp = thermalManager.degTargetBed();
3052
           Draw_Edit_Integer3(2, HMI_ValueStruct.Bed_Temp, true);
3055
           Draw_Edit_Integer3(2, HMI_ValueStruct.Bed_Temp, true);
3054
           break;
3057
           break;
3055
       #endif
3058
       #endif
3056
       #if HAS_FAN
3059
       #if HAS_FAN
3057
-        case TEMP_CASE_FAN: // Fan speed
3060
+        case TEMP_CASE_FAN:
3058
           checkkey = FanSpeed;
3061
           checkkey = FanSpeed;
3059
           HMI_ValueStruct.Fan_speed = thermalManager.fan_speed[0];
3062
           HMI_ValueStruct.Fan_speed = thermalManager.fan_speed[0];
3060
           Draw_Edit_Integer3(3, HMI_ValueStruct.Fan_speed, true);
3063
           Draw_Edit_Integer3(3, HMI_ValueStruct.Fan_speed, true);
3062
           break;
3065
           break;
3063
       #endif
3066
       #endif
3064
       #if HAS_HOTEND
3067
       #if HAS_HOTEND
3065
-        case TEMP_CASE_PLA: { // PLA preheat setting
3068
+        case TEMP_CASE_PLA: {
3066
           checkkey = PLAPreheat;
3069
           checkkey = PLAPreheat;
3067
           select_PLA.reset();
3070
           select_PLA.reset();
3068
           HMI_ValueStruct.show_mode = -2;
3071
           HMI_ValueStruct.show_mode = -2;
3458
   }
3461
   }
3459
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
3462
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
3460
     switch (select_motion.now) {
3463
     switch (select_motion.now) {
3461
-      case 0: // Back
3464
+      case CASE_BACK:
3462
         checkkey = Control;
3465
         checkkey = Control;
3463
         select_control.set(CONTROL_CASE_MOVE);
3466
         select_control.set(CONTROL_CASE_MOVE);
3464
         index_control = MROWS;
3467
         index_control = MROWS;
3465
         Draw_Control_Menu();
3468
         Draw_Control_Menu();
3466
         break;
3469
         break;
3467
-      case MOTION_CASE_RATE:   // Max speed
3470
+      case MOTION_CASE_RATE:
3468
         checkkey = MaxSpeed;
3471
         checkkey = MaxSpeed;
3469
         select_speed.reset();
3472
         select_speed.reset();
3470
         Draw_Max_Speed_Menu();
3473
         Draw_Max_Speed_Menu();
3471
         break;
3474
         break;
3472
-      case MOTION_CASE_ACCEL:  // Max acceleration
3475
+      case MOTION_CASE_ACCEL:
3473
         checkkey = MaxAcceleration;
3476
         checkkey = MaxAcceleration;
3474
         select_acc.reset();
3477
         select_acc.reset();
3475
         Draw_Max_Accel_Menu();
3478
         Draw_Max_Accel_Menu();
3476
         break;
3479
         break;
3477
       #if HAS_CLASSIC_JERK
3480
       #if HAS_CLASSIC_JERK
3478
-        case MOTION_CASE_JERK: // Max jerk
3481
+        case MOTION_CASE_JERK:
3479
           checkkey = MaxJerk;
3482
           checkkey = MaxJerk;
3480
           select_jerk.reset();
3483
           select_jerk.reset();
3481
           Draw_Max_Jerk_Menu();
3484
           Draw_Max_Jerk_Menu();
3482
          break;
3485
          break;
3483
       #endif
3486
       #endif
3484
-      case MOTION_CASE_STEPS:  // Steps per mm
3487
+      case MOTION_CASE_STEPS:
3485
         checkkey = Step;
3488
         checkkey = Step;
3486
         select_step.reset();
3489
         select_step.reset();
3487
         Draw_Steps_Menu();
3490
         Draw_Steps_Menu();
3533
   }
3536
   }
3534
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
3537
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
3535
     switch (select_advset.now) {
3538
     switch (select_advset.now) {
3536
-      case 0: // Back
3539
+      case CASE_BACK:
3537
         checkkey = Control;
3540
         checkkey = Control;
3538
         select_control.set(CONTROL_CASE_ADVSET);
3541
         select_control.set(CONTROL_CASE_ADVSET);
3539
         index_control = CONTROL_CASE_ADVSET;
3542
         index_control = CONTROL_CASE_ADVSET;
3541
         break;
3544
         break;
3542
 
3545
 
3543
       #if HAS_HOME_OFFSET
3546
       #if HAS_HOME_OFFSET
3544
-        case ADVSET_CASE_HOMEOFF:   // Home Offsets
3547
+        case ADVSET_CASE_HOMEOFF:
3545
           checkkey = HomeOff;
3548
           checkkey = HomeOff;
3546
           select_item.reset();
3549
           select_item.reset();
3547
           HMI_ValueStruct.Home_OffX_scaled = home_offset[X_AXIS] * 10;
3550
           HMI_ValueStruct.Home_OffX_scaled = home_offset[X_AXIS] * 10;
3552
       #endif
3555
       #endif
3553
 
3556
 
3554
       #if HAS_ONESTEP_LEVELING
3557
       #if HAS_ONESTEP_LEVELING
3555
-        case ADVSET_CASE_PROBEOFF:   // Probe Offsets
3558
+        case ADVSET_CASE_PROBEOFF:
3556
           checkkey = ProbeOff;
3559
           checkkey = ProbeOff;
3557
           select_item.reset();
3560
           select_item.reset();
3558
           HMI_ValueStruct.Probe_OffX_scaled = probe.offset.x * 10;
3561
           HMI_ValueStruct.Probe_OffX_scaled = probe.offset.x * 10;
3562
       #endif
3565
       #endif
3563
 
3566
 
3564
       #if HAS_HOTEND
3567
       #if HAS_HOTEND
3565
-        case ADVSET_CASE_HEPID:   // Nozzle PID Autotune
3568
+        case ADVSET_CASE_HEPID:
3566
           thermalManager.setTargetHotend(ui.material_preset[0].hotend_temp, 0);
3569
           thermalManager.setTargetHotend(ui.material_preset[0].hotend_temp, 0);
3567
           thermalManager.PID_autotune(ui.material_preset[0].hotend_temp, H_E0, 10, true);
3570
           thermalManager.PID_autotune(ui.material_preset[0].hotend_temp, H_E0, 10, true);
3568
           break;
3571
           break;
3569
       #endif
3572
       #endif
3570
 
3573
 
3571
       #if HAS_HEATED_BED
3574
       #if HAS_HEATED_BED
3572
-        case ADVSET_CASE_BEDPID:  // Bed PID Autotune
3575
+        case ADVSET_CASE_BEDPID:
3573
           thermalManager.setTargetBed(ui.material_preset[0].bed_temp);
3576
           thermalManager.setTargetBed(ui.material_preset[0].bed_temp);
3574
           thermalManager.PID_autotune(ui.material_preset[0].bed_temp, H_BED, 10, true);
3577
           thermalManager.PID_autotune(ui.material_preset[0].bed_temp, H_BED, 10, true);
3575
           break;
3578
           break;
3576
       #endif
3579
       #endif
3577
 
3580
 
3578
       #if ENABLED(POWER_LOSS_RECOVERY)
3581
       #if ENABLED(POWER_LOSS_RECOVERY)
3579
-        case ADVSET_CASE_PWRLOSSR:  // Power-loss recovery
3582
+        case ADVSET_CASE_PWRLOSSR:
3580
           recovery.enable(!recovery.enabled);
3583
           recovery.enable(!recovery.enabled);
3581
           Draw_Checkbox_Line(ADVSET_CASE_PWRLOSSR + MROWS - index_advset, recovery.enabled);
3584
           Draw_Checkbox_Line(ADVSET_CASE_PWRLOSSR + MROWS - index_advset, recovery.enabled);
3582
           break;
3585
           break;
3603
     }
3606
     }
3604
     else if (encoder_diffState == ENCODER_DIFF_ENTER) {
3607
     else if (encoder_diffState == ENCODER_DIFF_ENTER) {
3605
       switch (select_item.now) {
3608
       switch (select_item.now) {
3606
-        case 0: // Back
3609
+        case CASE_BACK:
3607
           checkkey = AdvSet;
3610
           checkkey = AdvSet;
3608
           select_advset.set(ADVSET_CASE_HOMEOFF);
3611
           select_advset.set(ADVSET_CASE_HOMEOFF);
3609
           Draw_AdvancedSettings_Menu();
3612
           Draw_AdvancedSettings_Menu();
3665
     }
3668
     }
3666
     else if (encoder_diffState == ENCODER_DIFF_ENTER) {
3669
     else if (encoder_diffState == ENCODER_DIFF_ENTER) {
3667
       switch (select_item.now) {
3670
       switch (select_item.now) {
3668
-        case 0: // Back
3671
+        case CASE_BACK:
3669
           checkkey = AdvSet;
3672
           checkkey = AdvSet;
3670
           select_advset.set(ADVSET_CASE_PROBEOFF);
3673
           select_advset.set(ADVSET_CASE_PROBEOFF);
3671
           Draw_AdvancedSettings_Menu();
3674
           Draw_AdvancedSettings_Menu();
3675
           Draw_Edit_Signed_Float3(1, HMI_ValueStruct.Probe_OffX_scaled, true);
3678
           Draw_Edit_Signed_Float3(1, HMI_ValueStruct.Probe_OffX_scaled, true);
3676
           EncoderRate.enabled = true;
3679
           EncoderRate.enabled = true;
3677
           break;
3680
           break;
3678
-        case 2: // Probe Offset X
3681
+        case 2: // Probe Offset Y
3679
           checkkey = ProbeOffY;
3682
           checkkey = ProbeOffY;
3680
           Draw_Edit_Signed_Float3(2, HMI_ValueStruct.Probe_OffY_scaled, true);
3683
           Draw_Edit_Signed_Float3(2, HMI_ValueStruct.Probe_OffY_scaled, true);
3681
           EncoderRate.enabled = true;
3684
           EncoderRate.enabled = true;
3822
     }
3825
     }
3823
     else if (encoder_diffState == ENCODER_DIFF_ENTER) {
3826
     else if (encoder_diffState == ENCODER_DIFF_ENTER) {
3824
       switch (select_PLA.now) {
3827
       switch (select_PLA.now) {
3825
-        case 0: // Back
3828
+        case CASE_BACK:
3826
           checkkey = TemperatureID;
3829
           checkkey = TemperatureID;
3827
           select_temp.now = TEMP_CASE_PLA;
3830
           select_temp.now = TEMP_CASE_PLA;
3828
           HMI_ValueStruct.show_mode = -1;
3831
           HMI_ValueStruct.show_mode = -1;
3829
           Draw_Temperature_Menu();
3832
           Draw_Temperature_Menu();
3830
           break;
3833
           break;
3831
         #if HAS_HOTEND
3834
         #if HAS_HOTEND
3832
-          case PREHEAT_CASE_TEMP: // Nozzle temperature
3835
+          case PREHEAT_CASE_TEMP:
3833
             checkkey = ETemp;
3836
             checkkey = ETemp;
3834
             HMI_ValueStruct.E_Temp = ui.material_preset[0].hotend_temp;
3837
             HMI_ValueStruct.E_Temp = ui.material_preset[0].hotend_temp;
3835
             Draw_Edit_Integer3(PREHEAT_CASE_TEMP, ui.material_preset[0].hotend_temp, true);
3838
             Draw_Edit_Integer3(PREHEAT_CASE_TEMP, ui.material_preset[0].hotend_temp, true);
3837
             break;
3840
             break;
3838
         #endif
3841
         #endif
3839
         #if HAS_HEATED_BED
3842
         #if HAS_HEATED_BED
3840
-          case PREHEAT_CASE_BED: // Bed temperature
3843
+          case PREHEAT_CASE_BED:
3841
             checkkey = BedTemp;
3844
             checkkey = BedTemp;
3842
             HMI_ValueStruct.Bed_Temp = ui.material_preset[0].bed_temp;
3845
             HMI_ValueStruct.Bed_Temp = ui.material_preset[0].bed_temp;
3843
             Draw_Edit_Integer3(PREHEAT_CASE_BED, ui.material_preset[0].bed_temp, true);
3846
             Draw_Edit_Integer3(PREHEAT_CASE_BED, ui.material_preset[0].bed_temp, true);
3845
             break;
3848
             break;
3846
         #endif
3849
         #endif
3847
         #if HAS_FAN
3850
         #if HAS_FAN
3848
-          case PREHEAT_CASE_FAN: // Fan speed
3851
+          case PREHEAT_CASE_FAN:
3849
             checkkey = FanSpeed;
3852
             checkkey = FanSpeed;
3850
             HMI_ValueStruct.Fan_speed = ui.material_preset[0].fan_speed;
3853
             HMI_ValueStruct.Fan_speed = ui.material_preset[0].fan_speed;
3851
             Draw_Edit_Integer3(PREHEAT_CASE_FAN, ui.material_preset[0].fan_speed, true);
3854
             Draw_Edit_Integer3(PREHEAT_CASE_FAN, ui.material_preset[0].fan_speed, true);
3853
             break;
3856
             break;
3854
         #endif
3857
         #endif
3855
         #if ENABLED(EEPROM_SETTINGS)
3858
         #if ENABLED(EEPROM_SETTINGS)
3856
-          case 4: { // Save PLA configuration
3859
+          case PREHEAT_CASE_SAVE: {
3857
             const bool success = settings.save();
3860
             const bool success = settings.save();
3858
             HMI_AudioFeedback(success);
3861
             HMI_AudioFeedback(success);
3859
           } break;
3862
           } break;
3878
     }
3881
     }
3879
     else if (encoder_diffState == ENCODER_DIFF_ENTER) {
3882
     else if (encoder_diffState == ENCODER_DIFF_ENTER) {
3880
       switch (select_ABS.now) {
3883
       switch (select_ABS.now) {
3881
-        case 0: // Back
3884
+        case CASE_BACK:
3882
           checkkey = TemperatureID;
3885
           checkkey = TemperatureID;
3883
           select_temp.now = TEMP_CASE_ABS;
3886
           select_temp.now = TEMP_CASE_ABS;
3884
           HMI_ValueStruct.show_mode = -1;
3887
           HMI_ValueStruct.show_mode = -1;
3885
           Draw_Temperature_Menu();
3888
           Draw_Temperature_Menu();
3886
           break;
3889
           break;
3887
         #if HAS_HOTEND
3890
         #if HAS_HOTEND
3888
-          case PREHEAT_CASE_TEMP: // Set nozzle temperature
3891
+          case PREHEAT_CASE_TEMP:
3889
             checkkey = ETemp;
3892
             checkkey = ETemp;
3890
             HMI_ValueStruct.E_Temp = ui.material_preset[1].hotend_temp;
3893
             HMI_ValueStruct.E_Temp = ui.material_preset[1].hotend_temp;
3891
             Draw_Edit_Integer3(PREHEAT_CASE_TEMP, ui.material_preset[1].hotend_temp, true);
3894
             Draw_Edit_Integer3(PREHEAT_CASE_TEMP, ui.material_preset[1].hotend_temp, true);
3893
             break;
3896
             break;
3894
         #endif
3897
         #endif
3895
         #if HAS_HEATED_BED
3898
         #if HAS_HEATED_BED
3896
-          case PREHEAT_CASE_BED: // Set bed temperature
3899
+          case PREHEAT_CASE_BED:
3897
             checkkey = BedTemp;
3900
             checkkey = BedTemp;
3898
             HMI_ValueStruct.Bed_Temp = ui.material_preset[1].bed_temp;
3901
             HMI_ValueStruct.Bed_Temp = ui.material_preset[1].bed_temp;
3899
             Draw_Edit_Integer3(PREHEAT_CASE_BED, ui.material_preset[1].bed_temp, true);
3902
             Draw_Edit_Integer3(PREHEAT_CASE_BED, ui.material_preset[1].bed_temp, true);
3901
             break;
3904
             break;
3902
         #endif
3905
         #endif
3903
         #if HAS_FAN
3906
         #if HAS_FAN
3904
-          case PREHEAT_CASE_FAN: // Set fan speed
3907
+          case PREHEAT_CASE_FAN:
3905
             checkkey = FanSpeed;
3908
             checkkey = FanSpeed;
3906
             HMI_ValueStruct.Fan_speed = ui.material_preset[1].fan_speed;
3909
             HMI_ValueStruct.Fan_speed = ui.material_preset[1].fan_speed;
3907
             Draw_Edit_Integer3(PREHEAT_CASE_FAN, ui.material_preset[1].fan_speed, true);
3910
             Draw_Edit_Integer3(PREHEAT_CASE_FAN, ui.material_preset[1].fan_speed, true);
3909
             break;
3912
             break;
3910
         #endif
3913
         #endif
3911
         #if ENABLED(EEPROM_SETTINGS)
3914
         #if ENABLED(EEPROM_SETTINGS)
3912
-          case PREHEAT_CASE_SAVE: { // Save ABS configuration
3915
+          case PREHEAT_CASE_SAVE: {
3913
             const bool success = settings.save();
3916
             const bool success = settings.save();
3914
             HMI_AudioFeedback(success);
3917
             HMI_AudioFeedback(success);
3915
           } break;
3918
           } break;

+ 0
- 3
Marlin/src/lcd/e3v2/creality/dwin_lcd.h Parādīt failu

31
 
31
 
32
 #include <stdint.h>
32
 #include <stdint.h>
33
 
33
 
34
-//#define USE_STRING_HEADINGS
35
-//#define USE_STRING_TITLES
36
-
37
 #define RECEIVED_NO_DATA         0x00
34
 #define RECEIVED_NO_DATA         0x00
38
 #define RECEIVED_SHAKE_HAND_ACK  0x01
35
 #define RECEIVED_SHAKE_HAND_ACK  0x01
39
 
36
 

+ 149
- 191
Marlin/src/lcd/e3v2/enhanced/dwin.cpp Parādīt failu

86
 
86
 
87
 #define PAUSE_HEAT
87
 #define PAUSE_HEAT
88
 
88
 
89
-#define USE_STRING_HEADINGS
90
-#define USE_STRING_TITLES
91
-
92
 #define MENU_CHAR_LIMIT  24
89
 #define MENU_CHAR_LIMIT  24
93
 
90
 
94
 // Print speed limit
91
 // Print speed limit
133
 
130
 
134
 millis_t dwin_heat_time = 0;
131
 millis_t dwin_heat_time = 0;
135
 
132
 
136
-uint8_t checkkey = MainMenu;
137
-uint8_t last_checkkey = MainMenu;
133
+uint8_t checkkey = MainMenu, last_checkkey = MainMenu;
134
+
135
+enum SelectItem : uint8_t {
136
+  PAGE_PRINT = 0,
137
+  PAGE_PREPARE,
138
+  PAGE_CONTROL,
139
+  PAGE_INFO_LEVELING,
140
+  PAGE_COUNT,
141
+
142
+  PRINT_SETUP = 0,
143
+  PRINT_PAUSE_RESUME,
144
+  PRINT_STOP,
145
+  PRINT_COUNT
146
+};
138
 
147
 
139
 typedef struct {
148
 typedef struct {
140
   uint8_t now, last;
149
   uint8_t now, last;
266
     { 1, { 417, 449 }, 30, 14 },
275
     { 1, { 417, 449 }, 30, 14 },
267
     { 1, { 405, 447 }, 27, 15 }
276
     { 1, { 405, 447 }, 27, 15 }
268
   };
277
   };
269
-  ICON_Button(select_page.now == 0, ICON_Print_0, ico, txt);
278
+  ICON_Button(select_page.now == PAGE_PRINT, ICON_Print_0, ico, txt);
270
 }
279
 }
271
 
280
 
272
 //
281
 //
278
     { 33, { 417, 449 }, 51, 14 },
287
     { 33, { 417, 449 }, 51, 14 },
279
     { 31, { 405, 447 }, 27, 15 }
288
     { 31, { 405, 447 }, 27, 15 }
280
   };
289
   };
281
-  ICON_Button(select_page.now == 1, ICON_Prepare_0, ico, txt);
290
+  ICON_Button(select_page.now == PAGE_PREPARE, ICON_Prepare_0, ico, txt);
282
 }
291
 }
283
 
292
 
284
 //
293
 //
290
     { 85, { 417, 449 }, 46, 14 },
299
     { 85, { 417, 449 }, 46, 14 },
291
     { 61, { 405, 447 }, 27, 15 }
300
     { 61, { 405, 447 }, 27, 15 }
292
   };
301
   };
293
-  ICON_Button(select_page.now == 2, ICON_Control_0, ico, txt);
302
+  ICON_Button(select_page.now == PAGE_CONTROL, ICON_Control_0, ico, txt);
294
 }
303
 }
295
 
304
 
296
 //
305
 //
302
     { 133, { 417, 449 }, 23, 14 },
311
     { 133, { 417, 449 }, 23, 14 },
303
     {  91, { 405, 447 }, 27, 15 }
312
     {  91, { 405, 447 }, 27, 15 }
304
   };
313
   };
305
-  ICON_Button(select_page.now == 3, ICON_Info_0, ico, txt);
314
+  ICON_Button(select_page.now == PAGE_INFO_LEVELING, ICON_Info_0, ico, txt);
306
 }
315
 }
307
 
316
 
308
 //
317
 //
314
     {  88, { 433, 464 }, 36, 14 },
323
     {  88, { 433, 464 }, 36, 14 },
315
     { 211, { 405, 447 }, 27, 15 }
324
     { 211, { 405, 447 }, 27, 15 }
316
   };
325
   };
317
-  ICON_Button(select_page.now == 3, ICON_Leveling_0, ico, txt);
326
+  ICON_Button(select_page.now == PAGE_INFO_LEVELING, ICON_Leveling_0, ico, txt);
318
 }
327
 }
319
 
328
 
320
 //
329
 //
326
     {   0, { 433, 464 }, 32, 14 },
335
     {   0, { 433, 464 }, 32, 14 },
327
     { 121, { 405, 447 }, 27, 15 }
336
     { 121, { 405, 447 }, 27, 15 }
328
   };
337
   };
329
-  ICON_Button(select_print.now == 0, ICON_Setup_0, ico, txt);
338
+  ICON_Button(select_print.now == PRINT_SETUP, ICON_Setup_0, ico, txt);
330
 }
339
 }
331
 
340
 
332
 //
341
 //
338
     { 157, { 417, 449 }, 39, 14 },
347
     { 157, { 417, 449 }, 39, 14 },
339
     { 181, { 405, 447 }, 27, 15 }
348
     { 181, { 405, 447 }, 27, 15 }
340
   };
349
   };
341
-  ICON_Button(select_print.now == 1, ICON_Pause_0, ico, txt);
350
+  ICON_Button(select_print.now == PRINT_PAUSE_RESUME, ICON_Pause_0, ico, txt);
342
 }
351
 }
343
 
352
 
344
 //
353
 //
350
     { 33, { 433, 464 }, 53, 14 },
359
     { 33, { 433, 464 }, 53, 14 },
351
     {  1, { 405, 447 }, 27, 15 }
360
     {  1, { 405, 447 }, 27, 15 }
352
   };
361
   };
353
-  ICON_Button(select_print.now == 1, ICON_Continue_0, ico, txt);
362
+  ICON_Button(select_print.now == PRINT_PAUSE_RESUME, ICON_Continue_0, ico, txt);
354
 }
363
 }
355
 
364
 
356
 //
365
 //
362
     { 196, { 417, 449 }, 29, 14 },
371
     { 196, { 417, 449 }, 29, 14 },
363
     { 151, { 405, 447 }, 27, 12 }
372
     { 151, { 405, 447 }, 27, 12 }
364
   };
373
   };
365
-  ICON_Button(select_print.now == 2, ICON_Stop_0, ico, txt);
374
+  ICON_Button(select_print.now == PRINT_STOP, ICON_Stop_0, ico, txt);
366
 }
375
 }
367
 
376
 
368
 void Draw_Menu_Cursor(const uint8_t line) {
377
 void Draw_Menu_Cursor(const uint8_t line) {
537
   if (HMI_IsChinese()) {
546
   if (HMI_IsChinese()) {
538
     DWINUI::ClearMenuArea();
547
     DWINUI::ClearMenuArea();
539
     Draw_Popup_Bkgd_60();
548
     Draw_Popup_Bkgd_60();
540
-         if (select_print.now == 1) DWIN_Frame_AreaCopy(1, 237, 338, 269, 356, 98, 150);
541
-    else if (select_print.now == 2) DWIN_Frame_AreaCopy(1, 221, 320, 253, 336, 98, 150);
549
+         if (select_print.now == PRINT_PAUSE_RESUME) DWIN_Frame_AreaCopy(1, 237, 338, 269, 356, 98, 150);
550
+    else if (select_print.now == PRINT_STOP) DWIN_Frame_AreaCopy(1, 221, 320, 253, 336, 98, 150);
542
     DWIN_Frame_AreaCopy(1, 220, 304, 264, 319, 130, 150);
551
     DWIN_Frame_AreaCopy(1, 220, 304, 264, 319, 130, 150);
543
     DWINUI::Draw_Icon(ICON_Confirm_C, 26, 280);
552
     DWINUI::Draw_Icon(ICON_Confirm_C, 26, 280);
544
     DWINUI::Draw_Icon(ICON_Cancel_C, 146, 280);
553
     DWINUI::Draw_Icon(ICON_Cancel_C, 146, 280);
545
   }
554
   }
546
   else {
555
   else {
547
-    DWIN_Draw_Popup(ICON_BLTouch, "Please confirm",(select_print.now == 1) ? GET_TEXT(MSG_PAUSE_PRINT) : GET_TEXT(MSG_STOP_PRINT));
556
+    DWIN_Draw_Popup(ICON_BLTouch, "Please confirm", select_print.now == PRINT_PAUSE_RESUME ? GET_TEXT(MSG_PAUSE_PRINT) : GET_TEXT(MSG_STOP_PRINT));
548
     DWINUI::Draw_Icon(ICON_Confirm_E, 26, 280);
557
     DWINUI::Draw_Icon(ICON_Confirm_E, 26, 280);
549
     DWINUI::Draw_Icon(ICON_Cancel_E, 146, 280);
558
     DWINUI::Draw_Icon(ICON_Cancel_E, 146, 280);
550
   }
559
   }
589
     DWIN_Frame_AreaCopy(1, 65, 72, 128, 86, 176, 173);  // Remain
598
     DWIN_Frame_AreaCopy(1, 65, 72, 128, 86, 176, 173);  // Remain
590
   }
599
   }
591
   else {
600
   else {
592
-    #ifdef USE_STRING_TITLES
593
-      Title.ShowCaption(GET_TEXT(MSG_PRINTING));
594
-      DWINUI::Draw_String( 46, 173, F("Print Time"));
595
-      DWINUI::Draw_String(181, 173, F("Remain"));
596
-    #else
597
-      const uint16_t y = 168;
598
-      Title.FrameCopy(42, 0, 47, 14);                   // "Printing"
599
-      DWIN_Frame_AreaCopy(1,  0, 44,  96, 58,  41, y);  // Printing Time
600
-      DWIN_Frame_AreaCopy(1, 98, 44, 152, 58, 176, y);  // Remain
601
-    #endif
601
+    Title.ShowCaption(GET_TEXT(MSG_PRINTING));
602
+    DWINUI::Draw_String( 46, 173, F("Print Time"));
603
+    DWINUI::Draw_String(181, 173, F("Remain"));
602
   }
604
   }
603
 }
605
 }
604
 
606
 
678
 
680
 
679
   if (HMI_IsChinese())
681
   if (HMI_IsChinese())
680
     Title.FrameCopy(2, 2, 26, 13);   // "Home" etc
682
     Title.FrameCopy(2, 2, 26, 13);   // "Home" etc
681
-  else {
682
-    #ifdef USE_STRING_HEADINGS
683
-      Title.ShowCaption(MACHINE_NAME);
684
-    #else
685
-      Title.FrameCopy(0, 2, 40, 11); // "Home"
686
-    #endif
687
-  }
683
+  else
684
+    Title.ShowCaption(MACHINE_NAME);
688
 
685
 
689
   DWINUI::Draw_Icon(ICON_LOGO, 71, 52);  // CREALITY logo
686
   DWINUI::Draw_Icon(ICON_LOGO, 71, 52);  // CREALITY logo
690
 
687
 
1075
     DWIN_Frame_AreaCopy(1,  58, 164, 113, 176, 105, 248);   // "Contact Details"
1072
     DWIN_Frame_AreaCopy(1,  58, 164, 113, 176, 105, 248);   // "Contact Details"
1076
   }
1073
   }
1077
   else {
1074
   else {
1078
-    #ifdef USE_STRING_HEADINGS
1079
-      Title.ShowCaption(GET_TEXT_F(MSG_INFO_SCREEN));
1080
-    #else
1081
-      Title.FrameCopy(192, 15, 23, 12);                     // "Info"
1082
-    #endif
1075
+    Title.ShowCaption(GET_TEXT_F(MSG_INFO_SCREEN));
1083
 
1076
 
1084
     DWIN_Frame_AreaCopy(1, 120, 150, 146, 161, 124, 102);   // "Size"
1077
     DWIN_Frame_AreaCopy(1, 120, 150, 146, 161, 124, 102);   // "Size"
1085
     DWIN_Frame_AreaCopy(1, 146, 151, 254, 161,  82, 175);   // "Firmware Version"
1078
     DWIN_Frame_AreaCopy(1, 146, 151, 254, 161,  82, 175);   // "Firmware Version"
1098
 void Draw_Print_File_Menu() {
1091
 void Draw_Print_File_Menu() {
1099
   if (HMI_IsChinese())
1092
   if (HMI_IsChinese())
1100
     Title.FrameCopy(0, 31, 56, 14);    // "Print file"
1093
     Title.FrameCopy(0, 31, 56, 14);    // "Print file"
1101
-  else {
1102
-    #ifdef USE_STRING_HEADINGS
1103
-      Title.ShowCaption(GET_TEXT_F(MSG_MEDIA_MENU));
1104
-    #else
1105
-      Title.FrameCopy(52, 31, 86, 11); // "Print file"
1106
-    #endif
1107
-  }
1094
+  else
1095
+    Title.ShowCaption(GET_TEXT_F(MSG_MEDIA_MENU));
1108
   Redraw_SD_List();
1096
   Redraw_SD_List();
1109
 }
1097
 }
1110
 
1098
 
1114
   if (encoder_diffState == ENCODER_DIFF_NO) return;
1102
   if (encoder_diffState == ENCODER_DIFF_NO) return;
1115
 
1103
 
1116
   if (encoder_diffState == ENCODER_DIFF_CW) {
1104
   if (encoder_diffState == ENCODER_DIFF_CW) {
1117
-    if (select_page.inc(4)) {
1105
+    if (select_page.inc(PAGE_COUNT)) {
1118
       switch (select_page.now) {
1106
       switch (select_page.now) {
1119
-        case 0: ICON_Print(); break;
1120
-        case 1: ICON_Print(); ICON_Prepare(); break;
1121
-        case 2: ICON_Prepare(); ICON_Control(); break;
1122
-        case 3: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
1107
+        case PAGE_PRINT: ICON_Print(); break;
1108
+        case PAGE_PREPARE: ICON_Print(); ICON_Prepare(); break;
1109
+        case PAGE_CONTROL: ICON_Prepare(); ICON_Control(); break;
1110
+        case PAGE_INFO_LEVELING: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
1123
       }
1111
       }
1124
     }
1112
     }
1125
   }
1113
   }
1126
   else if (encoder_diffState == ENCODER_DIFF_CCW) {
1114
   else if (encoder_diffState == ENCODER_DIFF_CCW) {
1127
     if (select_page.dec()) {
1115
     if (select_page.dec()) {
1128
       switch (select_page.now) {
1116
       switch (select_page.now) {
1129
-        case 0: ICON_Print(); ICON_Prepare(); break;
1130
-        case 1: ICON_Prepare(); ICON_Control(); break;
1131
-        case 2: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
1132
-        case 3: TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
1117
+        case PAGE_PRINT: ICON_Print(); ICON_Prepare(); break;
1118
+        case PAGE_PREPARE: ICON_Prepare(); ICON_Control(); break;
1119
+        case PAGE_CONTROL: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
1120
+        case PAGE_INFO_LEVELING: TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
1133
       }
1121
       }
1134
     }
1122
     }
1135
   }
1123
   }
1136
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
1124
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
1137
     switch (select_page.now) {
1125
     switch (select_page.now) {
1138
-      case 0: // Print File
1126
+      case PAGE_PRINT:
1139
         checkkey = SelectFile;
1127
         checkkey = SelectFile;
1140
         Draw_Print_File_Menu();
1128
         Draw_Print_File_Menu();
1141
         break;
1129
         break;
1142
 
1130
 
1143
-      case 1: // Prepare
1144
-        Draw_Prepare_Menu();
1145
-        break;
1131
+      case PAGE_PREPARE: Draw_Prepare_Menu(); break;
1146
 
1132
 
1147
-      case 2: // Control
1148
-        Draw_Control_Menu();
1149
-        break;
1133
+      case PAGE_CONTROL: Draw_Control_Menu(); break;
1150
 
1134
 
1151
-      case 3: // Leveling or Info
1135
+      case PAGE_INFO_LEVELING:
1152
         #if HAS_ONESTEP_LEVELING
1136
         #if HAS_ONESTEP_LEVELING
1153
-          queue.inject_P(PSTR("G28XYO\nG28Z\nG29"));
1137
+          queue.inject_P(PSTR("G28XYO\nG28Z\nG29"));  // TODO: 'G29' should be homing when needed. Does it make sense for every LCD to do this differently?
1154
         #else
1138
         #else
1155
           checkkey = Info;
1139
           checkkey = Info;
1156
           Draw_Info_Menu();
1140
           Draw_Info_Menu();
1238
     }
1222
     }
1239
   }
1223
   }
1240
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
1224
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
1241
-    if (select_file.now == 0) { // Back
1242
-      select_page.set(0);
1225
+    if (select_file.now == 0) {
1226
+      select_page.set(PAGE_PRINT);
1243
       Goto_Main_Menu();
1227
       Goto_Main_Menu();
1244
     }
1228
     }
1245
     else if (hasUpDir && select_file.now == 1) { // CD-Up
1229
     else if (hasUpDir && select_file.now == 1) { // CD-Up
1276
       DWIN_Print_Started(true);
1260
       DWIN_Print_Started(true);
1277
     }
1261
     }
1278
   }
1262
   }
1279
-HMI_SelectFileExit:
1263
+
1264
+  HMI_SelectFileExit:
1280
   DWIN_UpdateLCD();
1265
   DWIN_UpdateLCD();
1281
 }
1266
 }
1282
 
1267
 
1286
   if (encoder_diffState == ENCODER_DIFF_NO) return;
1271
   if (encoder_diffState == ENCODER_DIFF_NO) return;
1287
   // Avoid flicker by updating only the previous menu
1272
   // Avoid flicker by updating only the previous menu
1288
   if (encoder_diffState == ENCODER_DIFF_CW) {
1273
   if (encoder_diffState == ENCODER_DIFF_CW) {
1289
-    if (select_print.inc(3)) {
1274
+    if (select_print.inc(PRINT_COUNT)) {
1290
       switch (select_print.now) {
1275
       switch (select_print.now) {
1291
-        case 0: ICON_Tune(); break;
1292
-        case 1:
1293
-          ICON_Tune();
1294
-          ICON_ResumeOrPause();
1295
-          break;
1296
-        case 2:
1297
-          ICON_ResumeOrPause();
1298
-          ICON_Stop();
1299
-          break;
1276
+        case PRINT_SETUP: ICON_Tune(); break;
1277
+        case PRINT_PAUSE_RESUME: ICON_Tune(); ICON_ResumeOrPause(); break;
1278
+        case PRINT_STOP: ICON_ResumeOrPause(); ICON_Stop(); break;
1300
       }
1279
       }
1301
     }
1280
     }
1302
   }
1281
   }
1303
   else if (encoder_diffState == ENCODER_DIFF_CCW) {
1282
   else if (encoder_diffState == ENCODER_DIFF_CCW) {
1304
     if (select_print.dec()) {
1283
     if (select_print.dec()) {
1305
       switch (select_print.now) {
1284
       switch (select_print.now) {
1306
-        case 0:
1307
-          ICON_Tune();
1308
-          ICON_ResumeOrPause();
1309
-          break;
1310
-        case 1:
1311
-          ICON_ResumeOrPause();
1312
-          ICON_Stop();
1313
-          break;
1314
-        case 2: ICON_Stop(); break;
1285
+        case PRINT_SETUP: ICON_Tune(); ICON_ResumeOrPause(); break;
1286
+        case PRINT_PAUSE_RESUME: ICON_ResumeOrPause(); ICON_Stop(); break;
1287
+        case PRINT_STOP: ICON_Stop(); break;
1315
       }
1288
       }
1316
     }
1289
     }
1317
   }
1290
   }
1318
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
1291
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
1319
     switch (select_print.now) {
1292
     switch (select_print.now) {
1320
-      case 0: // Tune
1321
-        Draw_Tune_Menu();
1322
-        break;
1323
-      case 1: // Pause
1293
+      case PRINT_SETUP: Draw_Tune_Menu(); break;
1294
+      case PRINT_PAUSE_RESUME:
1324
         if (HMI_flag.pause_flag) {
1295
         if (HMI_flag.pause_flag) {
1325
           ICON_Pause();
1296
           ICON_Pause();
1326
-          #ifndef ADVANCED_PAUSE_FEATURE
1297
+          #if DISABLED(ADVANCED_PAUSE_FEATURE)
1327
             char cmd[40];
1298
             char cmd[40];
1328
             cmd[0] = '\0';
1299
             cmd[0] = '\0';
1329
             #if BOTH(HAS_HEATED_BED, PAUSE_HEAT)
1300
             #if BOTH(HAS_HEATED_BED, PAUSE_HEAT)
1346
         }
1317
         }
1347
         break;
1318
         break;
1348
 
1319
 
1349
-      case 2: // Stop
1320
+      case PRINT_STOP:
1350
         HMI_flag.select_flag = true;
1321
         HMI_flag.select_flag = true;
1351
         checkkey = PauseOrStop;
1322
         checkkey = PauseOrStop;
1352
         Popup_window_PauseOrStop();
1323
         Popup_window_PauseOrStop();
1378
   else if (encoder_diffState == ENCODER_DIFF_CCW)
1349
   else if (encoder_diffState == ENCODER_DIFF_CCW)
1379
     Draw_Select_Highlight(true);
1350
     Draw_Select_Highlight(true);
1380
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
1351
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
1381
-    if (select_print.now == 1) { // pause window
1352
+    if (select_print.now == PRINT_PAUSE_RESUME) {
1382
       if (HMI_flag.select_flag) {
1353
       if (HMI_flag.select_flag) {
1383
         HMI_flag.pause_action = true;
1354
         HMI_flag.pause_action = true;
1384
         ICON_Resume();
1355
         ICON_Resume();
1389
       }
1360
       }
1390
       Goto_PrintProcess();
1361
       Goto_PrintProcess();
1391
     }
1362
     }
1392
-    else if (select_print.now == 2) { // stop window
1363
+    else if (select_print.now == PRINT_STOP) {
1393
       if (HMI_flag.select_flag) {
1364
       if (HMI_flag.select_flag) {
1394
         checkkey = MainMenu;
1365
         checkkey = MainMenu;
1395
         if (HMI_flag.home_flag) planner.synchronize(); // Wait for planner moves to finish!
1366
         if (HMI_flag.home_flag) planner.synchronize(); // Wait for planner moves to finish!
1511
   if (HMI_flag.pause_action && printingIsPaused() && !planner.has_blocks_queued()) {
1482
   if (HMI_flag.pause_action && printingIsPaused() && !planner.has_blocks_queued()) {
1512
     HMI_flag.pause_action = false;
1483
     HMI_flag.pause_action = false;
1513
     #if ENABLED(PAUSE_HEAT)
1484
     #if ENABLED(PAUSE_HEAT)
1514
-      if (sdprint) {
1515
-        TERN_(HAS_HOTEND, resume_hotend_temp = thermalManager.degTargetHotend(0));
1516
-        TERN_(HAS_HEATED_BED, resume_bed_temp = thermalManager.degTargetBed());
1517
-      }
1518
-      else {
1519
-        TERN_(HAS_HOTEND, resume_hotend_temp = thermalManager.wholeDegHotend(0));
1520
-        TERN_(HAS_HEATED_BED, resume_bed_temp = thermalManager.wholeDegBed());
1521
-      }
1485
+      TERN_(HAS_HOTEND, resume_hotend_temp = sdprint ? thermalManager.degTargetHotend(0) : thermalManager.wholeDegHotend(0));
1486
+      TERN_(HAS_HEATED_BED, resume_bed_temp = sdprint ? thermalManager.degTargetBed() : thermalManager.wholeDegBed());
1522
       TERN_(HAS_FAN, resume_fan = thermalManager.fan_speed[0]);
1487
       TERN_(HAS_FAN, resume_fan = thermalManager.fan_speed[0]);
1523
     #endif
1488
     #endif
1524
-    #if DISABLED(ADVANCED_PAUSE_FEATURE)
1525
-      thermalManager.disable_all_heaters();
1526
-    #endif
1527
-    #if DISABLED(PARK_HEAD_ON_PAUSE)
1528
-      queue.inject_P(PSTR("G1 F1200 X0 Y0"));
1529
-	#endif
1489
+    IF_DISABLED(ADVANCED_PAUSE_FEATURE, thermalManager.disable_all_heaters());
1490
+    IF_DISABLED(PARK_HEAD_ON_PAUSE, queue.inject_P(PSTR("G1 F1200 X0 Y0")));
1530
   }
1491
   }
1531
 
1492
 
1532
   if (checkkey == PrintProcess) { // print process
1493
   if (checkkey == PrintProcess) { // print process
1565
   else if (dwin_abort_flag && !HMI_flag.home_flag) { // Print Stop
1526
   else if (dwin_abort_flag && !HMI_flag.home_flag) { // Print Stop
1566
     dwin_abort_flag = false;
1527
     dwin_abort_flag = false;
1567
     dwin_zoffset = BABY_Z_VAR;
1528
     dwin_zoffset = BABY_Z_VAR;
1568
-    select_page.set(0);
1529
+    select_page.set(PAGE_PRINT);
1569
     Goto_Main_Menu();
1530
     Goto_Main_Menu();
1570
   }
1531
   }
1571
 
1532
 
1615
         watchdog_refresh();
1576
         watchdog_refresh();
1616
       }
1577
       }
1617
 
1578
 
1618
-      select_print.set(0);
1579
+      select_print.set(PRINT_SETUP);
1619
       queue.inject_P(PSTR("M1000"));
1580
       queue.inject_P(PSTR("M1000"));
1620
       sdprint = true;
1581
       sdprint = true;
1621
       Goto_PrintProcess();
1582
       Goto_PrintProcess();
1735
 
1696
 
1736
 // Update filename on print
1697
 // Update filename on print
1737
 void DWIN_Print_Header(const char *text = nullptr) {
1698
 void DWIN_Print_Header(const char *text = nullptr) {
1738
-
1739
   static char headertxt[31] = "";  // Print header text
1699
   static char headertxt[31] = "";  // Print header text
1740
 
1700
 
1741
   if (text != nullptr) {
1701
   if (text != nullptr) {
1917
     DWINUI::Draw_Icon(ICON_Confirm_E, 26, 280);
1877
     DWINUI::Draw_Icon(ICON_Confirm_E, 26, 280);
1918
     DWINUI::Draw_Icon(ICON_Continue_E, 146, 280);
1878
     DWINUI::Draw_Icon(ICON_Continue_E, 146, 280);
1919
     Draw_Select_Highlight(true);
1879
     Draw_Select_Highlight(true);
1880
+    DWIN_UpdateLCD();
1920
   }
1881
   }
1921
 
1882
 
1922
   // Handle responses such as:
1883
   // Handle responses such as:
1981
 //  LiveUpdate: live update function when the encoder changes
1942
 //  LiveUpdate: live update function when the encoder changes
1982
 //  Apply: update function when the encoder is pressed
1943
 //  Apply: update function when the encoder is pressed
1983
 void SetOnClick(uint8_t process, const int32_t lo, const int32_t hi, uint8_t dp, const int32_t val, void (*Apply)() = nullptr, void (*LiveUpdate)() = nullptr) {
1944
 void SetOnClick(uint8_t process, const int32_t lo, const int32_t hi, uint8_t dp, const int32_t val, void (*Apply)() = nullptr, void (*LiveUpdate)() = nullptr) {
1984
-  last_checkkey = Menu;
1985
   checkkey = process;
1945
   checkkey = process;
1986
   HMI_value.MinValue = lo;
1946
   HMI_value.MinValue = lo;
1987
   HMI_value.MaxValue = hi;
1947
   HMI_value.MaxValue = hi;
2092
   Draw_Info_Menu();
2052
   Draw_Info_Menu();
2093
 }
2053
 }
2094
 
2054
 
2095
-void DisableMotors() {
2096
-  queue.inject_P(PSTR("M84"));
2097
-}
2055
+void DisableMotors() { queue.inject_P(PSTR("M84")); }
2098
 
2056
 
2099
-void AutoHome() {
2100
-  queue.inject_P(G28_STR);
2101
-}
2057
+void AutoHome() { queue.inject_P(G28_STR); }
2102
 
2058
 
2103
 void SetHome() {
2059
 void SetHome() {
2104
   // Apply workspace offset, making the current position 0,0,0
2060
   // Apply workspace offset, making the current position 0,0,0
2116
       if (BABYSTEP_ALLOWED()) babystep.add_mm(Z_AXIS, dwin_zoffset - last_zoffset);
2072
       if (BABYSTEP_ALLOWED()) babystep.add_mm(Z_AXIS, dwin_zoffset - last_zoffset);
2117
     #endif
2073
     #endif
2118
   }
2074
   }
2119
-    #if EITHER(HAS_BED_PROBE, BABYSTEPPING)
2120
-    void SetZOffset() { SetPFloatOnClick(Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX, 2, ApplyZOffset, LiveZOffset); }
2121
-    #endif
2075
+  #if EITHER(HAS_BED_PROBE, BABYSTEPPING)
2076
+    void SetZOffset() {
2077
+      SetPFloatOnClick(Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX, 2, ApplyZOffset, LiveZOffset);
2078
+    }
2079
+  #endif
2122
 #endif
2080
 #endif
2123
 
2081
 
2124
 #if HAS_PREHEAT
2082
 #if HAS_PREHEAT
2233
   }
2191
   }
2234
 #endif
2192
 #endif
2235
 
2193
 
2236
-void Goto_LockScreen() {
2237
-  DWIN_LockScreen(true);
2238
-}
2194
+void Goto_LockScreen() { DWIN_LockScreen(true); }
2239
 
2195
 
2240
 #if HAS_HOME_OFFSET
2196
 #if HAS_HOME_OFFSET
2241
   void ApplyHomeOffset() { set_home_offset(HMI_value.axis, HMI_value.Value / MINUNITMULT); }
2197
   void ApplyHomeOffset() { set_home_offset(HMI_value.axis, HMI_value.Value / MINUNITMULT); }
2327
 #endif
2283
 #endif
2328
 
2284
 
2329
 #if ENABLED(ADVANCED_PAUSE_FEATURE)
2285
 #if ENABLED(ADVANCED_PAUSE_FEATURE)
2286
+
2330
   void ChangeFilament() {
2287
   void ChangeFilament() {
2331
     HMI_SaveProcessID(NothingToDo);
2288
     HMI_SaveProcessID(NothingToDo);
2332
     queue.inject_P(PSTR("M600 B2"));
2289
     queue.inject_P(PSTR("M600 B2"));
2348
       queue.inject_P(PSTR("M701 Z20"));
2305
       queue.inject_P(PSTR("M701 Z20"));
2349
     }
2306
     }
2350
   #endif
2307
   #endif
2351
-#endif
2308
+
2309
+#endif // ADVANCED_PAUSE_FEATURE
2352
 
2310
 
2353
 void SetFlow() { SetPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW); }
2311
 void SetFlow() { SetPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW); }
2354
 
2312
 
2414
 void LevBedC () { LevBed(4); }
2372
 void LevBedC () { LevBed(4); }
2415
 
2373
 
2416
 #if ENABLED(MESH_BED_LEVELING)
2374
 #if ENABLED(MESH_BED_LEVELING)
2375
+
2417
   void ManualMeshStart(){
2376
   void ManualMeshStart(){
2418
     ui.set_status_P(GET_TEXT(MSG_UBL_BUILD_MESH_MENU));
2377
     ui.set_status_P(GET_TEXT(MSG_UBL_BUILD_MESH_MENU));
2419
     gcode.process_subcommands_now_P(PSTR("G28 XYO\nG28 Z\nM211 S0\nG29S1"));
2378
     gcode.process_subcommands_now_P(PSTR("G28 XYO\nG28 Z\nM211 S0\nG29S1"));
2443
     ui.set_status_P(GET_TEXT(MSG_UBL_STORAGE_MESH_MENU));
2402
     ui.set_status_P(GET_TEXT(MSG_UBL_STORAGE_MESH_MENU));
2444
     queue.inject_P(PSTR("M211 S1\nM500"));
2403
     queue.inject_P(PSTR("M211 S1\nM500"));
2445
   }
2404
   }
2446
-#endif
2405
+
2406
+#endif // MESH_BED_LEVELING
2447
 
2407
 
2448
 #if HAS_PREHEAT
2408
 #if HAS_PREHEAT
2449
   #if HAS_HOTEND
2409
   #if HAS_HOTEND
2516
     SetFloatOnClick(0, 1000, 2, value, ApplyPIDd);
2476
     SetFloatOnClick(0, 1000, 2, value, ApplyPIDd);
2517
   }
2477
   }
2518
 #endif
2478
 #endif
2479
+
2519
 // Menuitem Drawing functions =================================================
2480
 // Menuitem Drawing functions =================================================
2520
 
2481
 
2521
 void onDrawMenuItem(MenuItemClass* menuitem, int8_t line) {
2482
 void onDrawMenuItem(MenuItemClass* menuitem, int8_t line) {
2721
 void onDrawPIDi(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, unscalePID_i(*(float*)static_cast<MenuItemPtrClass*>(menuitem)->value)); }
2682
 void onDrawPIDi(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, unscalePID_i(*(float*)static_cast<MenuItemPtrClass*>(menuitem)->value)); }
2722
 void onDrawPIDd(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, unscalePID_d(*(float*)static_cast<MenuItemPtrClass*>(menuitem)->value)); }
2683
 void onDrawPIDd(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, unscalePID_d(*(float*)static_cast<MenuItemPtrClass*>(menuitem)->value)); }
2723
 
2684
 
2724
-
2725
 void onDrawSpeedItem(MenuItemClass* menuitem, int8_t line) {
2685
 void onDrawSpeedItem(MenuItemClass* menuitem, int8_t line) {
2726
   if (HMI_IsChinese()) menuitem->SetFrame(1, 116, 164, 171, 176);
2686
   if (HMI_IsChinese()) menuitem->SetFrame(1, 116, 164, 171, 176);
2727
   onDrawPIntMenu(menuitem, line);
2687
   onDrawPIntMenu(menuitem, line);
2748
   }
2708
   }
2749
 #endif
2709
 #endif
2750
 
2710
 
2751
-void onDrawSpeed(MenuItemClass* menuitem, int8_t line) {
2752
-  if (HMI_IsChinese()) menuitem->SetFrame(1, 173, 133, 228, 147);
2753
-  onDrawSubMenu(menuitem, line);
2754
-}
2755
-
2756
-void onDrawAcc(MenuItemClass* menuitem, int8_t line) {
2757
-  if (HMI_IsChinese()) {
2758
-    menuitem->SetFrame(1, 173, 133, 200, 147);
2759
-    DWIN_Frame_AreaCopy(1, 28, 149, 69, 161, LBLX + 27, MBASE(line) + 1); // ...Acceleration
2760
-  }
2761
-  onDrawSubMenu(menuitem, line);
2762
-}
2763
-
2764
-#if HAS_CLASSIC_JERK
2765
-  void onDrawJerk(MenuItemClass* menuitem, int8_t line) {
2766
-    if (HMI_IsChinese()) {
2767
-      menuitem->SetFrame(1, 173, 133, 200, 147);
2768
-      DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(line) + 1);  // ...
2769
-      DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 54, MBASE(line));   // ...Jerk
2770
-    }
2771
-    onDrawSubMenu(menuitem, line);
2772
-  }
2773
-#endif
2774
-
2775
 void onDrawSteps(MenuItemClass* menuitem, int8_t line) {
2711
 void onDrawSteps(MenuItemClass* menuitem, int8_t line) {
2776
   if (HMI_IsChinese()) menuitem->SetFrame(1, 153, 148, 194, 161);
2712
   if (HMI_IsChinese()) menuitem->SetFrame(1, 153, 148, 194, 161);
2777
   onDrawSubMenu(menuitem, line);
2713
   onDrawSubMenu(menuitem, line);
2786
 
2722
 
2787
 #if HAS_PREHEAT
2723
 #if HAS_PREHEAT
2788
   #if HAS_HOTEND
2724
   #if HAS_HOTEND
2789
-      void onDrawSetPreheatHotend(MenuItemClass* menuitem, int8_t line) {
2790
-        if (HMI_IsChinese()) menuitem->SetFrame(1, 1, 134, 56, 146);
2791
-        onDrawPIntMenu(menuitem, line);
2792
-      }
2725
+    void onDrawSetPreheatHotend(MenuItemClass* menuitem, int8_t line) {
2726
+      if (HMI_IsChinese()) menuitem->SetFrame(1, 1, 134, 56, 146);
2727
+      onDrawPIntMenu(menuitem, line);
2728
+    }
2793
   #endif
2729
   #endif
2794
   #if HAS_HEATED_BED
2730
   #if HAS_HEATED_BED
2795
     void onDrawSetPreheatBed(MenuItemClass* menuitem, int8_t line) {
2731
     void onDrawSetPreheatBed(MenuItemClass* menuitem, int8_t line) {
2811
     if (HMI_IsChinese()) menuitem->SetFrame(1, 180, 89, 260, 100);
2747
     if (HMI_IsChinese()) menuitem->SetFrame(1, 180, 89, 260, 100);
2812
     onDrawSubMenu(menuitem,line);
2748
     onDrawSubMenu(menuitem,line);
2813
   }
2749
   }
2814
-#endif // HAS_HOTEND
2750
+#endif // HAS_PREHEAT
2751
+
2752
+void onDrawSpeed(MenuItemClass* menuitem, int8_t line) {
2753
+  if (HMI_IsChinese())
2754
+    menuitem->SetFrame(1, 173, 133, 228, 147);
2755
+  onDrawSubMenu(menuitem, line);
2756
+}
2815
 
2757
 
2816
 void onDrawMaxSpeedX(MenuItemClass* menuitem, int8_t line) {
2758
 void onDrawMaxSpeedX(MenuItemClass* menuitem, int8_t line) {
2817
   if (HMI_IsChinese()) {
2759
   if (HMI_IsChinese()) {
2847
   }
2789
   }
2848
 #endif
2790
 #endif
2849
 
2791
 
2792
+void onDrawAcc(MenuItemClass* menuitem, int8_t line) {
2793
+  if (HMI_IsChinese()) {
2794
+    menuitem->SetFrame(1, 173, 133, 200, 147);
2795
+    DWIN_Frame_AreaCopy(1,  28, 149,  69, 161, LBLX + 27, MBASE(line) + 1); // ...Acceleration
2796
+  }
2797
+  onDrawSubMenu(menuitem, line);
2798
+}
2799
+
2850
 void onDrawMaxAccelX(MenuItemClass* menuitem, int8_t line) {
2800
 void onDrawMaxAccelX(MenuItemClass* menuitem, int8_t line) {
2851
   if (HMI_IsChinese()) {
2801
   if (HMI_IsChinese()) {
2852
-    menuitem->SetFrame (1, 173, 133, 200, 147);
2802
+    menuitem->SetFrame(1, 173, 133, 200, 147);
2853
     DWIN_Frame_AreaCopy(1, 28,  149,  69, 161, LBLX + 27, MBASE(line));
2803
     DWIN_Frame_AreaCopy(1, 28,  149,  69, 161, LBLX + 27, MBASE(line));
2854
     DWIN_Frame_AreaCopy(1, 229, 133, 236, 147, LBLX + 71, MBASE(line));      // X
2804
     DWIN_Frame_AreaCopy(1, 229, 133, 236, 147, LBLX + 71, MBASE(line));      // X
2855
   }
2805
   }
2858
 
2808
 
2859
 void onDrawMaxAccelY(MenuItemClass* menuitem, int8_t line) {
2809
 void onDrawMaxAccelY(MenuItemClass* menuitem, int8_t line) {
2860
   if (HMI_IsChinese()) {
2810
   if (HMI_IsChinese()) {
2861
-    menuitem->SetFrame (1, 173, 133, 200, 147);
2811
+    menuitem->SetFrame(1, 173, 133, 200, 147);
2862
     DWIN_Frame_AreaCopy(1,  28, 149,  69, 161, LBLX + 27, MBASE(line));
2812
     DWIN_Frame_AreaCopy(1,  28, 149,  69, 161, LBLX + 27, MBASE(line));
2863
     DWIN_Frame_AreaCopy(1,   1, 150,   7, 160, LBLX + 71, MBASE(line));          // Y
2813
     DWIN_Frame_AreaCopy(1,   1, 150,   7, 160, LBLX + 71, MBASE(line));          // Y
2864
   }
2814
   }
2867
 
2817
 
2868
 void onDrawMaxAccelZ(MenuItemClass* menuitem, int8_t line) {
2818
 void onDrawMaxAccelZ(MenuItemClass* menuitem, int8_t line) {
2869
   if (HMI_IsChinese()) {
2819
   if (HMI_IsChinese()) {
2870
-    menuitem->SetFrame (1, 173, 133, 200, 147);
2820
+    menuitem->SetFrame(1, 173, 133, 200, 147);
2871
     DWIN_Frame_AreaCopy(1,  28, 149,  69, 161, LBLX + 27, MBASE(line));
2821
     DWIN_Frame_AreaCopy(1,  28, 149,  69, 161, LBLX + 27, MBASE(line));
2872
     DWIN_Frame_AreaCopy(1,   9, 150,  16, 160, LBLX + 71, MBASE(line));         // Z
2822
     DWIN_Frame_AreaCopy(1,   9, 150,  16, 160, LBLX + 71, MBASE(line));         // Z
2873
   }
2823
   }
2877
 #if HAS_HOTEND
2827
 #if HAS_HOTEND
2878
   void onDrawMaxAccelE(MenuItemClass* menuitem, int8_t line) {
2828
   void onDrawMaxAccelE(MenuItemClass* menuitem, int8_t line) {
2879
     if (HMI_IsChinese()) {
2829
     if (HMI_IsChinese()) {
2880
-      menuitem->SetFrame (1, 173, 133, 200, 147);
2830
+      menuitem->SetFrame(1, 173, 133, 200, 147);
2881
       DWIN_Frame_AreaCopy(1,  28, 149,  69, 161, LBLX + 27, MBASE(line));
2831
       DWIN_Frame_AreaCopy(1,  28, 149,  69, 161, LBLX + 27, MBASE(line));
2882
       DWIN_Frame_AreaCopy(1,  18, 150,  25, 160, LBLX + 71, MBASE(line));        // E
2832
       DWIN_Frame_AreaCopy(1,  18, 150,  25, 160, LBLX + 71, MBASE(line));        // E
2883
     }
2833
     }
2886
 #endif
2836
 #endif
2887
 
2837
 
2888
 #if HAS_CLASSIC_JERK
2838
 #if HAS_CLASSIC_JERK
2839
+
2840
+  void onDrawJerk(MenuItemClass* menuitem, int8_t line) {
2841
+    if (HMI_IsChinese()) {
2842
+      menuitem->SetFrame(1, 173, 133, 200, 147);
2843
+      DWIN_Frame_AreaCopy(1,   1, 180,  28, 192, LBLX + 27, MBASE(line) + 1);  // ...
2844
+      DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 54, MBASE(line));   // ...Jerk
2845
+    }
2846
+    onDrawSubMenu(menuitem, line);
2847
+  }
2848
+
2889
   void onDrawMaxJerkX(MenuItemClass* menuitem, int8_t line) {
2849
   void onDrawMaxJerkX(MenuItemClass* menuitem, int8_t line) {
2890
     if (HMI_IsChinese()) {
2850
     if (HMI_IsChinese()) {
2891
-      menuitem->SetFrame (1, 173, 133, 200, 147);
2851
+      menuitem->SetFrame(1, 173, 133, 200, 147);
2892
       DWIN_Frame_AreaCopy(1,   1, 180,  28, 192, LBLX + 27, MBASE(line));
2852
       DWIN_Frame_AreaCopy(1,   1, 180,  28, 192, LBLX + 27, MBASE(line));
2893
       DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line));
2853
       DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line));
2894
       DWIN_Frame_AreaCopy(1, 229, 133, 236, 147, LBLX + 83, MBASE(line));
2854
       DWIN_Frame_AreaCopy(1, 229, 133, 236, 147, LBLX + 83, MBASE(line));
2898
 
2858
 
2899
   void onDrawMaxJerkY(MenuItemClass* menuitem, int8_t line) {
2859
   void onDrawMaxJerkY(MenuItemClass* menuitem, int8_t line) {
2900
     if (HMI_IsChinese()) {
2860
     if (HMI_IsChinese()) {
2901
-      menuitem->SetFrame (1, 173, 133, 200, 147);
2861
+      menuitem->SetFrame(1, 173, 133, 200, 147);
2902
       DWIN_Frame_AreaCopy(1,   1, 180,  28, 192, LBLX + 27, MBASE(line));
2862
       DWIN_Frame_AreaCopy(1,   1, 180,  28, 192, LBLX + 27, MBASE(line));
2903
       DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line));
2863
       DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line));
2904
       DWIN_Frame_AreaCopy(1,   1, 150,   7, 160, LBLX + 83, MBASE(line));
2864
       DWIN_Frame_AreaCopy(1,   1, 150,   7, 160, LBLX + 83, MBASE(line));
2908
 
2868
 
2909
   void onDrawMaxJerkZ(MenuItemClass* menuitem, int8_t line) {
2869
   void onDrawMaxJerkZ(MenuItemClass* menuitem, int8_t line) {
2910
     if (HMI_IsChinese()) {
2870
     if (HMI_IsChinese()) {
2911
-      menuitem->SetFrame (1, 173, 133, 200, 147);
2871
+      menuitem->SetFrame(1, 173, 133, 200, 147);
2912
       DWIN_Frame_AreaCopy(1,   1, 180,  28, 192, LBLX + 27, MBASE(line));
2872
       DWIN_Frame_AreaCopy(1,   1, 180,  28, 192, LBLX + 27, MBASE(line));
2913
       DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line));
2873
       DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line));
2914
       DWIN_Frame_AreaCopy(1,   9, 150,  16, 160, LBLX + 83, MBASE(line));
2874
       DWIN_Frame_AreaCopy(1,   9, 150,  16, 160, LBLX + 83, MBASE(line));
2919
   #if HAS_HOTEND
2879
   #if HAS_HOTEND
2920
     void onDrawMaxJerkE(MenuItemClass* menuitem, int8_t line) {
2880
     void onDrawMaxJerkE(MenuItemClass* menuitem, int8_t line) {
2921
       if (HMI_IsChinese()) {
2881
       if (HMI_IsChinese()) {
2922
-        menuitem->SetFrame (1, 173, 133, 200, 147);
2882
+        menuitem->SetFrame(1, 173, 133, 200, 147);
2923
         DWIN_Frame_AreaCopy(1,   1, 180,  28, 192, LBLX + 27, MBASE(line));
2883
         DWIN_Frame_AreaCopy(1,   1, 180,  28, 192, LBLX + 27, MBASE(line));
2924
         DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line));
2884
         DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(line));
2925
         DWIN_Frame_AreaCopy(1,  18, 150,  25, 160, LBLX + 83, MBASE(line));
2885
         DWIN_Frame_AreaCopy(1,  18, 150,  25, 160, LBLX + 83, MBASE(line));
2927
       onDrawPFloatMenu(menuitem, line);
2887
       onDrawPFloatMenu(menuitem, line);
2928
     }
2888
     }
2929
   #endif
2889
   #endif
2890
+
2930
 #endif // HAS_CLASSIC_JERK
2891
 #endif // HAS_CLASSIC_JERK
2931
 
2892
 
2932
 void onDrawStepsX(MenuItemClass* menuitem, int8_t line) {
2893
 void onDrawStepsX(MenuItemClass* menuitem, int8_t line) {
2933
   if (HMI_IsChinese()) {
2894
   if (HMI_IsChinese()) {
2934
-    menuitem->SetFrame (1, 153, 148, 194, 161);
2895
+    menuitem->SetFrame(1, 153, 148, 194, 161);
2935
     DWIN_Frame_AreaCopy(1, 229, 133, 236, 147, LBLX + 44, MBASE(line));      // X
2896
     DWIN_Frame_AreaCopy(1, 229, 133, 236, 147, LBLX + 44, MBASE(line));      // X
2936
   }
2897
   }
2937
   onDrawPFloatMenu(menuitem, line);
2898
   onDrawPFloatMenu(menuitem, line);
2939
 
2900
 
2940
 void onDrawStepsY(MenuItemClass* menuitem, int8_t line) {
2901
 void onDrawStepsY(MenuItemClass* menuitem, int8_t line) {
2941
   if (HMI_IsChinese()) {
2902
   if (HMI_IsChinese()) {
2942
-    menuitem->SetFrame (1, 153, 148, 194, 161);
2903
+    menuitem->SetFrame(1, 153, 148, 194, 161);
2943
     DWIN_Frame_AreaCopy(1,   1, 150,   7, 160, LBLX + 44, MBASE(line));      // Y
2904
     DWIN_Frame_AreaCopy(1,   1, 150,   7, 160, LBLX + 44, MBASE(line));      // Y
2944
   }
2905
   }
2945
   onDrawPFloatMenu(menuitem, line);
2906
   onDrawPFloatMenu(menuitem, line);
2947
 
2908
 
2948
 void onDrawStepsZ(MenuItemClass* menuitem, int8_t line) {
2909
 void onDrawStepsZ(MenuItemClass* menuitem, int8_t line) {
2949
   if (HMI_IsChinese()) {
2910
   if (HMI_IsChinese()) {
2950
-    menuitem->SetFrame (1, 153, 148, 194, 161);
2911
+    menuitem->SetFrame(1, 153, 148, 194, 161);
2951
     DWIN_Frame_AreaCopy(1,   9, 150,  16, 160, LBLX + 44, MBASE(line));      // Z
2912
     DWIN_Frame_AreaCopy(1,   9, 150,  16, 160, LBLX + 44, MBASE(line));      // Z
2952
   }
2913
   }
2953
   onDrawPFloatMenu(menuitem, line);
2914
   onDrawPFloatMenu(menuitem, line);
2956
 #if HAS_HOTEND
2917
 #if HAS_HOTEND
2957
   void onDrawStepsE(MenuItemClass* menuitem, int8_t line) {
2918
   void onDrawStepsE(MenuItemClass* menuitem, int8_t line) {
2958
     if (HMI_IsChinese()) {
2919
     if (HMI_IsChinese()) {
2959
-      menuitem->SetFrame (1, 153, 148, 194, 161);
2920
+      menuitem->SetFrame(1, 153, 148, 194, 161);
2960
       DWIN_Frame_AreaCopy(1,  18, 150,  25, 160, LBLX + 44, MBASE(line));    // E
2921
       DWIN_Frame_AreaCopy(1,  18, 150,  25, 160, LBLX + 44, MBASE(line));    // E
2961
     }
2922
     }
2962
     onDrawPFloatMenu(menuitem, line);
2923
     onDrawPFloatMenu(menuitem, line);
2986
   if (encoder_diffState != ENCODER_DIFF_NO) {
2947
   if (encoder_diffState != ENCODER_DIFF_NO) {
2987
     if (Apply_Encoder(encoder_diffState, HMI_value.Value)) {
2948
     if (Apply_Encoder(encoder_diffState, HMI_value.Value)) {
2988
       EncoderRate.enabled = false;
2949
       EncoderRate.enabled = false;
2989
-      checkkey = last_checkkey;
2950
+      checkkey = Menu;
2990
       return 2;
2951
       return 2;
2991
     }
2952
     }
2992
     LIMIT(HMI_value.Value, lo, hi);
2953
     LIMIT(HMI_value.Value, lo, hi);
3008
     if (Apply_Encoder(encoder_diffState, HMI_value.Value)) {
2969
     if (Apply_Encoder(encoder_diffState, HMI_value.Value)) {
3009
       EncoderRate.enabled = false;
2970
       EncoderRate.enabled = false;
3010
       DWINUI::Draw_Int(HMI_data.Text_Color, HMI_data.Background_Color, 4 , VALX, MBASE(CurrentMenu->line()) - 1, HMI_value.Value);
2971
       DWINUI::Draw_Int(HMI_data.Text_Color, HMI_data.Background_Color, 4 , VALX, MBASE(CurrentMenu->line()) - 1, HMI_value.Value);
3011
-      checkkey = last_checkkey;
2972
+      checkkey = Menu;
3012
       return 2;
2973
       return 2;
3013
     }
2974
     }
3014
     LIMIT(HMI_value.Value, lo, hi);
2975
     LIMIT(HMI_value.Value, lo, hi);
3048
   } else if (HMI_value.LiveUpdate != nullptr) HMI_value.LiveUpdate();
3009
   } else if (HMI_value.LiveUpdate != nullptr) HMI_value.LiveUpdate();
3049
 }
3010
 }
3050
 
3011
 
3051
-// Get an scaled float value using the encoder
3012
+// Get a scaled float value using the encoder
3052
 //  dp: decimal places
3013
 //  dp: decimal places
3053
 //  lo: scaled low limit
3014
 //  lo: scaled low limit
3054
 //  hi: scaled high limit
3015
 //  hi: scaled high limit
3062
     if (Apply_Encoder(encoder_diffState, HMI_value.Value)) {
3023
     if (Apply_Encoder(encoder_diffState, HMI_value.Value)) {
3063
       EncoderRate.enabled = false;
3024
       EncoderRate.enabled = false;
3064
       DWINUI::Draw_Signed_Float(HMI_data.Text_Color, HMI_data.Background_Color, 3, dp, VALX - dp * DWINUI::Get_font_width(DWIN_FONT_MENU), MBASE(CurrentMenu->line()), HMI_value.Value / POW(10, dp));
3025
       DWINUI::Draw_Signed_Float(HMI_data.Text_Color, HMI_data.Background_Color, 3, dp, VALX - dp * DWINUI::Get_font_width(DWIN_FONT_MENU), MBASE(CurrentMenu->line()), HMI_value.Value / POW(10, dp));
3065
-      checkkey = last_checkkey;
3026
+      checkkey = Menu;
3066
       return 2;
3027
       return 2;
3067
     }
3028
     }
3068
     LIMIT(HMI_value.Value, lo, hi);
3029
     LIMIT(HMI_value.Value, lo, hi);
3072
   return 0;
3033
   return 0;
3073
 }
3034
 }
3074
 
3035
 
3075
-// Set an scaled float using the encoder
3036
+// Set a scaled float using the encoder
3076
 void HMI_SetFloat() {
3037
 void HMI_SetFloat() {
3077
-  int8_t val = HMI_GetFloat(HMI_value.dp, HMI_value.MinValue, HMI_value.MaxValue);
3038
+  const int8_t val = HMI_GetFloat(HMI_value.dp, HMI_value.MinValue, HMI_value.MaxValue);
3078
   switch (val) {
3039
   switch (val) {
3079
-    case 0: return; break;
3040
+    case 0: return;
3080
     case 1: if (HMI_value.LiveUpdate != nullptr) HMI_value.LiveUpdate(); break;
3041
     case 1: if (HMI_value.LiveUpdate != nullptr) HMI_value.LiveUpdate(); break;
3081
     case 2: if (HMI_value.Apply != nullptr) HMI_value.Apply(); break;
3042
     case 2: if (HMI_value.Apply != nullptr) HMI_value.Apply(); break;
3082
   }
3043
   }
3083
 }
3044
 }
3084
 
3045
 
3085
-// Set an scaled float pointer variable using the encoder
3046
+// Set a scaled float pointer variable using the encoder
3086
 void HMI_SetPFloat() {
3047
 void HMI_SetPFloat() {
3087
-  int8_t val = HMI_GetFloat(HMI_value.dp, HMI_value.MinValue, HMI_value.MaxValue);
3048
+  const int8_t val = HMI_GetFloat(HMI_value.dp, HMI_value.MinValue, HMI_value.MaxValue);
3088
   if (!val) return;
3049
   if (!val) return;
3089
-  else if (val == 2) {  // Apply
3050
+  if (val == 2) {  // Apply
3090
     *HMI_value.P_Float = HMI_value.Value / POW(10, HMI_value.dp);
3051
     *HMI_value.P_Float = HMI_value.Value / POW(10, HMI_value.dp);
3091
     if (HMI_value.Apply != nullptr) HMI_value.Apply();
3052
     if (HMI_value.Apply != nullptr) HMI_value.Apply();
3092
-  } else if (HMI_value.LiveUpdate != nullptr) HMI_value.LiveUpdate();
3053
+  }
3054
+  else if (HMI_value.LiveUpdate != nullptr) HMI_value.LiveUpdate();
3093
 }
3055
 }
3094
 
3056
 
3095
 // Menu Creation and Drawing functions ======================================================
3057
 // Menu Creation and Drawing functions ======================================================
3096
 
3058
 
3097
 void SetMenuTitle(frame_rect_t cn, frame_rect_t en, const __FlashStringHelper* text) {
3059
 void SetMenuTitle(frame_rect_t cn, frame_rect_t en, const __FlashStringHelper* text) {
3098
-    if (HMI_IsChinese() && (cn.w != 0))
3099
-      CurrentMenu->MenuTitle.SetFrame(cn.x, cn.y, cn.w, cn.h);
3100
-    else {
3101
-      #ifdef USE_STRING_HEADINGS
3102
-        CurrentMenu->MenuTitle.SetCaption(text);
3103
-      #else
3104
-        if (en.w != 0) CurrentMenu->MenuTitle.SetFrame(en.x, en.y, en.w, en.h);
3105
-      #endif
3106
-    }
3060
+  if (HMI_IsChinese() && (cn.w != 0))
3061
+    CurrentMenu->MenuTitle.SetFrame(cn.x, cn.y, cn.w, cn.h);
3062
+  else
3063
+    CurrentMenu->MenuTitle.SetCaption(text);
3107
 }
3064
 }
3108
 
3065
 
3109
 void Draw_Prepare_Menu() {
3066
 void Draw_Prepare_Menu() {
3301
     }
3258
     }
3302
     CurrentMenu->Draw();
3259
     CurrentMenu->Draw();
3303
   }
3260
   }
3304
-#endif
3261
+#endif // HAS_FILAMENT_SENSOR
3262
+
3305
 void Draw_SelectColors_Menu() {
3263
 void Draw_SelectColors_Menu() {
3306
   checkkey = Menu;
3264
   checkkey = Menu;
3307
   if (SelectColorMenu == nullptr) SelectColorMenu = new MenuClass();
3265
   if (SelectColorMenu == nullptr) SelectColorMenu = new MenuClass();
3441
 #endif
3399
 #endif
3442
 
3400
 
3443
 #if HAS_PREHEAT
3401
 #if HAS_PREHEAT
3402
+
3444
   void Draw_Preheat_Menu(frame_rect_t cn, frame_rect_t en, const __FlashStringHelper* text) {
3403
   void Draw_Preheat_Menu(frame_rect_t cn, frame_rect_t en, const __FlashStringHelper* text) {
3445
     checkkey = Menu;
3404
     checkkey = Menu;
3446
     if (CurrentMenu != PreheatMenu) {
3405
     if (CurrentMenu != PreheatMenu) {
3485
     }
3444
     }
3486
   #endif
3445
   #endif
3487
 
3446
 
3488
-#endif
3447
+#endif // HAS_PREHEAT
3489
 
3448
 
3490
 void Draw_Temperature_Menu() {
3449
 void Draw_Temperature_Menu() {
3491
   checkkey = Menu;
3450
   checkkey = Menu;
3653
   }
3612
   }
3654
 #endif
3613
 #endif
3655
 
3614
 
3656
-
3657
 #endif // DWIN_CREALITY_LCD_ENHANCED
3615
 #endif // DWIN_CREALITY_LCD_ENHANCED

+ 3
- 13
Marlin/src/lcd/e3v2/enhanced/dwin.h Parādīt failu

157
 void HMI_SDCardInit();
157
 void HMI_SDCardInit();
158
 void HMI_SDCardUpdate();
158
 void HMI_SDCardUpdate();
159
 
159
 
160
-// Main Process
161
-//void Icon_print();
162
-//void Icon_control();
163
-//void Icon_leveling(bool value);
164
-
165
 // Other
160
 // Other
166
 void Goto_PrintProcess();
161
 void Goto_PrintProcess();
167
 void Goto_Main_Menu();
162
 void Goto_Main_Menu();
168
-void update_variable();
169
 void Draw_Select_Highlight(const bool sel);
163
 void Draw_Select_Highlight(const bool sel);
170
 void Draw_Status_Area(const bool with_update); // Status Area
164
 void Draw_Status_Area(const bool with_update); // Status Area
171
 void Draw_Main_Area();      // Redraw main area;
165
 void Draw_Main_Area();      // Redraw main area;
178
 void ApplyExtMinT();
172
 void ApplyExtMinT();
179
 void HMI_SetLanguageCache(); // Set the languaje image cache
173
 void HMI_SetLanguageCache(); // Set the languaje image cache
180
 
174
 
181
-//void HMI_Leveling();    // Level the page
182
-//void HMI_LevBedCorners();   // Tramming menu
183
-//void HMI_Info();          // Information menu
184
-
185
-
186
 void HMI_Init();
175
 void HMI_Init();
187
 void HMI_Popup();
176
 void HMI_Popup();
188
 void HMI_SaveProcessID(const uint8_t id);
177
 void HMI_SaveProcessID(const uint8_t id);
189
 void HMI_AudioFeedback(const bool success=true);
178
 void HMI_AudioFeedback(const bool success=true);
190
-void DWIN_Startup();
191
-void DWIN_Update();
192
 void EachMomentUpdate();
179
 void EachMomentUpdate();
180
+void update_variable();
193
 void DWIN_HandleScreen();
181
 void DWIN_HandleScreen();
182
+void DWIN_Startup();
183
+void DWIN_Update();
194
 void DWIN_DrawStatusLine(const uint16_t color, const uint16_t bgcolor, const char *text);
184
 void DWIN_DrawStatusLine(const uint16_t color, const uint16_t bgcolor, const char *text);
195
 void DWIN_StatusChanged(const char * const text);
185
 void DWIN_StatusChanged(const char * const text);
196
 void DWIN_StatusChanged_P(PGM_P const text);
186
 void DWIN_StatusChanged_P(PGM_P const text);

+ 26
- 19
Marlin/src/lcd/e3v2/jyersui/dwin.cpp Parādīt failu

141
   constexpr float default_max_jerk[]            = { DEFAULT_XJERK, DEFAULT_YJERK, DEFAULT_ZJERK, DEFAULT_EJERK };
141
   constexpr float default_max_jerk[]            = { DEFAULT_XJERK, DEFAULT_YJERK, DEFAULT_ZJERK, DEFAULT_EJERK };
142
 #endif
142
 #endif
143
 
143
 
144
-uint8_t active_menu = MainMenu;
145
-uint8_t last_menu = MainMenu;
146
-uint8_t selection = 0;
147
-uint8_t last_selection = 0;
144
+enum SelectItem : uint8_t {
145
+  PAGE_PRINT = 0,
146
+  PAGE_PREPARE,
147
+  PAGE_CONTROL,
148
+  PAGE_INFO_LEVELING,
149
+  PAGE_COUNT,
150
+
151
+  PRINT_SETUP = 0,
152
+  PRINT_PAUSE_RESUME,
153
+  PRINT_STOP,
154
+  PRINT_COUNT
155
+};
156
+
157
+uint8_t active_menu = MainMenu, last_menu = MainMenu;
158
+uint8_t selection = 0, last_selection = 0;
148
 uint8_t scrollpos = 0;
159
 uint8_t scrollpos = 0;
149
-uint8_t process = Main;
150
-uint8_t last_process = Main;
151
-PopupID popup;
152
-PopupID last_popup;
160
+uint8_t process = Main, last_process = Main;
161
+PopupID popup, last_popup;
153
 
162
 
154
 void (*funcpointer)() = nullptr;
163
 void (*funcpointer)() = nullptr;
155
 void *valuepointer = nullptr;
164
 void *valuepointer = nullptr;
4208
 void CrealityDWINClass::Main_Menu_Control() {
4217
 void CrealityDWINClass::Main_Menu_Control() {
4209
   ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
4218
   ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
4210
   if (encoder_diffState == ENCODER_DIFF_NO) return;
4219
   if (encoder_diffState == ENCODER_DIFF_NO) return;
4211
-  if (encoder_diffState == ENCODER_DIFF_CW && selection < 3) {
4220
+  if (encoder_diffState == ENCODER_DIFF_CW && selection < PAGE_COUNT - 1) {
4212
     selection++; // Select Down
4221
     selection++; // Select Down
4213
     Main_Menu_Icons();
4222
     Main_Menu_Icons();
4214
   }
4223
   }
4218
   }
4227
   }
4219
   else if (encoder_diffState == ENCODER_DIFF_ENTER)
4228
   else if (encoder_diffState == ENCODER_DIFF_ENTER)
4220
     switch (selection) {
4229
     switch (selection) {
4221
-      case 0: card.mount(); Draw_SD_List(); break;
4222
-      case 1: Draw_Menu(Prepare); break;
4223
-      case 2: Draw_Menu(Control); break;
4224
-      case 3: Draw_Menu(TERN(HAS_MESH, Leveling, InfoMain)); break;
4230
+      case PAGE_PRINT: card.mount(); Draw_SD_List(); break;
4231
+      case PAGE_PREPARE: Draw_Menu(Prepare); break;
4232
+      case PAGE_CONTROL: Draw_Menu(Control); break;
4233
+      case PAGE_INFO_LEVELING: Draw_Menu(TERN(HAS_MESH, Leveling, InfoMain)); break;
4225
     }
4234
     }
4226
   DWIN_UpdateLCD();
4235
   DWIN_UpdateLCD();
4227
 }
4236
 }
4449
 void CrealityDWINClass::Print_Screen_Control() {
4458
 void CrealityDWINClass::Print_Screen_Control() {
4450
   ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
4459
   ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
4451
   if (encoder_diffState == ENCODER_DIFF_NO) return;
4460
   if (encoder_diffState == ENCODER_DIFF_NO) return;
4452
-  if (encoder_diffState == ENCODER_DIFF_CW && selection < 2) {
4461
+  if (encoder_diffState == ENCODER_DIFF_CW && selection < PRINT_COUNT - 1) {
4453
     selection++; // Select Down
4462
     selection++; // Select Down
4454
     Print_Screen_Icons();
4463
     Print_Screen_Icons();
4455
   }
4464
   }
4459
   }
4468
   }
4460
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
4469
   else if (encoder_diffState == ENCODER_DIFF_ENTER) {
4461
     switch (selection) {
4470
     switch (selection) {
4462
-      case 0:
4471
+      case PRINT_SETUP:
4463
         Draw_Menu(Tune);
4472
         Draw_Menu(Tune);
4464
         Update_Status_Bar(true);
4473
         Update_Status_Bar(true);
4465
         break;
4474
         break;
4466
-      case 1:
4475
+      case PRINT_PAUSE_RESUME:
4467
         if (paused) {
4476
         if (paused) {
4468
           if (sdprint) {
4477
           if (sdprint) {
4469
             wait_for_user = false;
4478
             wait_for_user = false;
4493
         else
4502
         else
4494
           Popup_Handler(Pause);
4503
           Popup_Handler(Pause);
4495
         break;
4504
         break;
4496
-      case 2:
4497
-        Popup_Handler(Stop);
4498
-        break;
4505
+      case PRINT_STOP: Popup_Handler(Stop); break;
4499
     }
4506
     }
4500
   }
4507
   }
4501
   DWIN_UpdateLCD();
4508
   DWIN_UpdateLCD();

Notiek ielāde…
Atcelt
Saglabāt