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

Co-authored-by: Scott Lahteine <github@thinkyhead.com>
This commit is contained in:
Miguel Risco-Castillo 2021-09-15 01:44:28 -05:00 committed by Scott Lahteine
parent 1386e78369
commit 84d1619127
5 changed files with 299 additions and 344 deletions

View File

@ -30,6 +30,9 @@
#include "dwin.h" #include "dwin.h"
//#define USE_STRING_HEADINGS
//#define USE_STRING_TITLES
#if ENABLED(LCD_BED_LEVELING) && DISABLED(PROBE_MANUALLY) && ANY(AUTO_BED_LEVELING_BILINEAR, AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT) #if ENABLED(LCD_BED_LEVELING) && DISABLED(PROBE_MANUALLY) && ANY(AUTO_BED_LEVELING_BILINEAR, AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT)
#define HAS_ONESTEP_LEVELING 1 #define HAS_ONESTEP_LEVELING 1
#endif #endif
@ -141,6 +144,17 @@ millis_t dwin_heat_time = 0;
uint8_t checkkey = 0; uint8_t checkkey = 0;
enum SelectItem : uint8_t {
PAGE_PRINT = 0,
PAGE_PREPARE,
PAGE_CONTROL,
PAGE_INFO_LEVELING,
PRINT_SETUP = 0,
PRINT_PAUSE_RESUME,
PRINT_STOP
};
typedef struct { typedef struct {
uint8_t now, last; uint8_t now, last;
void set(uint8_t v) { now = last = v; } void set(uint8_t v) { now = last = v; }
@ -235,7 +249,7 @@ void ICON_Print() {
{ 1, { 417, 449 }, 30, 14 }, { 1, { 417, 449 }, 30, 14 },
{ 1, { 405, 447 }, 27, 15 } { 1, { 405, 447 }, 27, 15 }
}; };
ICON_Button(select_page.now == 0, ICON_Print_0, ico, txt); ICON_Button(select_page.now == PAGE_PRINT, ICON_Print_0, ico, txt);
} }
// //
@ -247,7 +261,7 @@ void ICON_Prepare() {
{ 33, { 417, 449 }, 51, 14 }, { 33, { 417, 449 }, 51, 14 },
{ 31, { 405, 447 }, 27, 15 } { 31, { 405, 447 }, 27, 15 }
}; };
ICON_Button(select_page.now == 1, ICON_Prepare_0, ico, txt); ICON_Button(select_page.now == PAGE_PREPARE, ICON_Prepare_0, ico, txt);
} }
// //
@ -259,7 +273,7 @@ void ICON_Control() {
{ 85, { 417, 449 }, 46, 14 }, { 85, { 417, 449 }, 46, 14 },
{ 61, { 405, 447 }, 27, 15 } { 61, { 405, 447 }, 27, 15 }
}; };
ICON_Button(select_page.now == 2, ICON_Control_0, ico, txt); ICON_Button(select_page.now == PAGE_CONTROL, ICON_Control_0, ico, txt);
} }
// //
@ -271,7 +285,7 @@ void ICON_StartInfo() {
{ 133, { 417, 449 }, 23, 14 }, { 133, { 417, 449 }, 23, 14 },
{ 91, { 405, 447 }, 27, 15 } { 91, { 405, 447 }, 27, 15 }
}; };
ICON_Button(select_page.now == 3, ICON_Info_0, ico, txt); ICON_Button(select_page.now == PAGE_INFO_LEVELING, ICON_Info_0, ico, txt);
} }
// //
@ -283,7 +297,7 @@ void ICON_Leveling() {
{ 88, { 433, 464 }, 36, 14 }, { 88, { 433, 464 }, 36, 14 },
{ 211, { 405, 447 }, 27, 15 } { 211, { 405, 447 }, 27, 15 }
}; };
ICON_Button(select_page.now == 3, ICON_Leveling_0, ico, txt); ICON_Button(select_page.now == PAGE_INFO_LEVELING, ICON_Leveling_0, ico, txt);
} }
// //
@ -295,7 +309,7 @@ void ICON_Tune() {
{ 0, { 433, 464 }, 32, 14 }, { 0, { 433, 464 }, 32, 14 },
{ 121, { 405, 447 }, 27, 15 } { 121, { 405, 447 }, 27, 15 }
}; };
ICON_Button(select_print.now == 0, ICON_Setup_0, ico, txt); ICON_Button(select_print.now == PRINT_SETUP, ICON_Setup_0, ico, txt);
} }
// //
@ -307,7 +321,7 @@ void ICON_Pause() {
{ 157, { 417, 449 }, 39, 14 }, { 157, { 417, 449 }, 39, 14 },
{ 181, { 405, 447 }, 27, 15 } { 181, { 405, 447 }, 27, 15 }
}; };
ICON_Button(select_print.now == 1, ICON_Pause_0, ico, txt); ICON_Button(select_print.now == PRINT_PAUSE_RESUME, ICON_Pause_0, ico, txt);
} }
// //
@ -319,7 +333,7 @@ void ICON_Resume() {
{ 33, { 433, 464 }, 53, 14 }, { 33, { 433, 464 }, 53, 14 },
{ 1, { 405, 447 }, 27, 15 } { 1, { 405, 447 }, 27, 15 }
}; };
ICON_Button(select_print.now == 1, ICON_Continue_0, ico, txt); ICON_Button(select_print.now == PRINT_PAUSE_RESUME, ICON_Continue_0, ico, txt);
} }
void ICON_ResumeOrPause() { void ICON_ResumeOrPause() {
@ -338,7 +352,7 @@ void ICON_Stop() {
{ 196, { 417, 449 }, 29, 14 }, { 196, { 417, 449 }, 29, 14 },
{ 151, { 405, 447 }, 27, 12 } { 151, { 405, 447 }, 27, 12 }
}; };
ICON_Button(select_print.now == 2, ICON_Stop_0, ico, txt); ICON_Button(select_print.now == PRINT_STOP, ICON_Stop_0, ico, txt);
} }
inline void Clear_Title_Bar() { inline void Clear_Title_Bar() {
@ -467,6 +481,7 @@ inline bool Apply_Encoder(const ENCODER_DiffState &encoder_diffState, T &valref)
// //
// Draw Menus // Draw Menus
// //
#define CASE_BACK 0
#define MOTION_CASE_RATE 1 #define MOTION_CASE_RATE 1
#define MOTION_CASE_ACCEL 2 #define MOTION_CASE_ACCEL 2
@ -759,7 +774,7 @@ void Draw_Prepare_Menu() {
#endif #endif
} }
if (PVISI(0)) Draw_Back_First(select_prepare.now == 0); // < Back if (PVISI(0)) Draw_Back_First(select_prepare.now == CASE_BACK); // < Back
if (PVISI(PREPARE_CASE_MOVE)) Item_Prepare_Move(PSCROL(PREPARE_CASE_MOVE)); // Move > if (PVISI(PREPARE_CASE_MOVE)) Item_Prepare_Move(PSCROL(PREPARE_CASE_MOVE)); // Move >
if (PVISI(PREPARE_CASE_DISA)) Item_Prepare_Disable(PSCROL(PREPARE_CASE_DISA)); // Disable Stepper if (PVISI(PREPARE_CASE_DISA)) Item_Prepare_Disable(PSCROL(PREPARE_CASE_DISA)); // Disable Stepper
if (PVISI(PREPARE_CASE_HOME)) Item_Prepare_Home(PSCROL(PREPARE_CASE_HOME)); // Auto Home if (PVISI(PREPARE_CASE_HOME)) Item_Prepare_Home(PSCROL(PREPARE_CASE_HOME)); // Auto Home
@ -775,7 +790,7 @@ void Draw_Prepare_Menu() {
#endif #endif
if (PVISI(PREPARE_CASE_LANG)) Item_Prepare_Lang(PSCROL(PREPARE_CASE_LANG)); // Language CN/EN if (PVISI(PREPARE_CASE_LANG)) Item_Prepare_Lang(PSCROL(PREPARE_CASE_LANG)); // Language CN/EN
if (select_prepare.now) Draw_Menu_Cursor(PSCROL(select_prepare.now)); if (select_prepare.now != CASE_BACK) Draw_Menu_Cursor(PSCROL(select_prepare.now));
} }
// //
@ -860,7 +875,7 @@ void Draw_Control_Menu() {
#endif #endif
} }
if (CVISI(0)) Draw_Back_First(select_control.now == 0); // < Back if (CVISI(0)) Draw_Back_First(select_control.now == CASE_BACK); // < Back
if (CVISI(CONTROL_CASE_TEMP)) Item_Control_Temp(CSCROL(CONTROL_CASE_TEMP)); // Temperature > if (CVISI(CONTROL_CASE_TEMP)) Item_Control_Temp(CSCROL(CONTROL_CASE_TEMP)); // Temperature >
if (CVISI(CONTROL_CASE_MOVE)) Item_Control_Motion(CSCROL(CONTROL_CASE_MOVE)); // Motion > if (CVISI(CONTROL_CASE_MOVE)) Item_Control_Motion(CSCROL(CONTROL_CASE_MOVE)); // Motion >
@ -897,7 +912,7 @@ void Draw_Control_Menu() {
if (CVISI(CONTROL_CASE_ADVSET)) Item_Control_Advanced(CSCROL(CONTROL_CASE_ADVSET)); if (CVISI(CONTROL_CASE_ADVSET)) Item_Control_Advanced(CSCROL(CONTROL_CASE_ADVSET));
if (CVISI(CONTROL_CASE_INFO)) Item_Control_Info(CSCROL(CONTROL_CASE_INFO)); if (CVISI(CONTROL_CASE_INFO)) Item_Control_Info(CSCROL(CONTROL_CASE_INFO));
if (select_control.now && CVISI(select_control.now)) if (select_control.now != CASE_BACK && CVISI(select_control.now))
Draw_Menu_Cursor(CSCROL(select_control.now)); Draw_Menu_Cursor(CSCROL(select_control.now));
// Draw icons and lines // Draw icons and lines
@ -977,8 +992,8 @@ void Draw_Tune_Menu() {
#endif #endif
} }
Draw_Back_First(select_tune.now == 0); Draw_Back_First(select_tune.now == CASE_BACK);
if (select_tune.now) Draw_Menu_Cursor(select_tune.now); if (select_tune.now != CASE_BACK) Draw_Menu_Cursor(select_tune.now);
Draw_Menu_Line(TUNE_CASE_SPEED, ICON_Speed); Draw_Menu_Line(TUNE_CASE_SPEED, ICON_Speed);
Draw_Edit_Integer3(TUNE_CASE_SPEED, feedrate_percentage); Draw_Edit_Integer3(TUNE_CASE_SPEED, feedrate_percentage);
@ -1042,8 +1057,8 @@ void Draw_Motion_Menu() {
#endif #endif
} }
Draw_Back_First(select_motion.now == 0); Draw_Back_First(select_motion.now == CASE_BACK);
if (select_motion.now) Draw_Menu_Cursor(select_motion.now); if (select_motion.now != CASE_BACK) Draw_Menu_Cursor(select_motion.now);
uint8_t i = 0; uint8_t i = 0;
#define _MOTION_ICON(N) Draw_Menu_Line(++i, ICON_MaxSpeed + (N) - 1) #define _MOTION_ICON(N) Draw_Menu_Line(++i, ICON_MaxSpeed + (N) - 1)
@ -1179,15 +1194,15 @@ void Popup_window_PauseOrStop() {
Clear_Main_Window(); Clear_Main_Window();
Draw_Popup_Bkgd_60(); Draw_Popup_Bkgd_60();
if (HMI_IsChinese()) { if (HMI_IsChinese()) {
if (select_print.now == 1) DWIN_Frame_AreaCopy(1, 237, 338, 269, 356, 98, 150); // Pause if (select_print.now == PRINT_PAUSE_RESUME) DWIN_Frame_AreaCopy(1, 237, 338, 269, 356, 98, 150); // Pause
else if (select_print.now == 2) DWIN_Frame_AreaCopy(1, 221, 320, 253, 336, 98, 150); // Stop else if (select_print.now == PRINT_STOP) DWIN_Frame_AreaCopy(1, 221, 320, 253, 336, 98, 150); // Stop
DWIN_Frame_AreaCopy(1, 220, 304, 264, 319, 130, 150); // Print DWIN_Frame_AreaCopy(1, 220, 304, 264, 319, 130, 150); // Print
DWIN_ICON_Show(ICON, ICON_Confirm_C, 26, 280); DWIN_ICON_Show(ICON, ICON_Confirm_C, 26, 280);
DWIN_ICON_Show(ICON, ICON_Cancel_C, 146, 280); DWIN_ICON_Show(ICON, ICON_Cancel_C, 146, 280);
} }
else { else {
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)); 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));
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)); 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));
DWIN_ICON_Show(ICON, ICON_Confirm_E, 26, 280); DWIN_ICON_Show(ICON, ICON_Confirm_E, 26, 280);
DWIN_ICON_Show(ICON, ICON_Cancel_E, 146, 280); DWIN_ICON_Show(ICON, ICON_Cancel_E, 146, 280);
} }
@ -1823,7 +1838,7 @@ void MarlinUI::refresh() { /* Nothing to see here */ }
void Init_SDItem_Shift() { void Init_SDItem_Shift() {
shift_amt = 0; shift_amt = 0;
shift_ms = select_file.now > 0 && strlen(shift_name) > MENU_CHAR_LIMIT shift_ms = select_file.now != CASE_BACK && strlen(shift_name) > MENU_CHAR_LIMIT
? millis() + 750UL : 0; ? millis() + 750UL : 0;
} }
@ -2068,45 +2083,45 @@ void HMI_MainMenu() {
if (encoder_diffState == ENCODER_DIFF_CW) { if (encoder_diffState == ENCODER_DIFF_CW) {
if (select_page.inc(4)) { if (select_page.inc(4)) {
switch (select_page.now) { switch (select_page.now) {
case 0: ICON_Print(); break; case PAGE_PRINT: ICON_Print(); break;
case 1: ICON_Print(); ICON_Prepare(); break; case PAGE_PREPARE: ICON_Print(); ICON_Prepare(); break;
case 2: ICON_Prepare(); ICON_Control(); break; case PAGE_CONTROL: ICON_Prepare(); ICON_Control(); break;
case 3: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break; case PAGE_INFO_LEVELING: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
} }
} }
} }
else if (encoder_diffState == ENCODER_DIFF_CCW) { else if (encoder_diffState == ENCODER_DIFF_CCW) {
if (select_page.dec()) { if (select_page.dec()) {
switch (select_page.now) { switch (select_page.now) {
case 0: ICON_Print(); ICON_Prepare(); break; case PAGE_PRINT: ICON_Print(); ICON_Prepare(); break;
case 1: ICON_Prepare(); ICON_Control(); break; case PAGE_PREPARE: ICON_Prepare(); ICON_Control(); break;
case 2: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break; case PAGE_CONTROL: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
case 3: TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break; case PAGE_INFO_LEVELING: TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
} }
} }
} }
else if (encoder_diffState == ENCODER_DIFF_ENTER) { else if (encoder_diffState == ENCODER_DIFF_ENTER) {
switch (select_page.now) { switch (select_page.now) {
case 0: // Print File case PAGE_PRINT:
checkkey = SelectFile; checkkey = SelectFile;
Draw_Print_File_Menu(); Draw_Print_File_Menu();
break; break;
case 1: // Prepare case PAGE_PREPARE:
checkkey = Prepare; checkkey = Prepare;
select_prepare.reset(); select_prepare.reset();
index_prepare = MROWS; index_prepare = MROWS;
Draw_Prepare_Menu(); Draw_Prepare_Menu();
break; break;
case 2: // Control case PAGE_CONTROL:
checkkey = Control; checkkey = Control;
select_control.reset(); select_control.reset();
index_control = MROWS; index_control = MROWS;
Draw_Control_Menu(); Draw_Control_Menu();
break; break;
case 3: // Leveling or Info case PAGE_INFO_LEVELING:
#if HAS_ONESTEP_LEVELING #if HAS_ONESTEP_LEVELING
checkkey = Leveling; checkkey = Leveling;
HMI_Leveling(); HMI_Leveling();
@ -2196,7 +2211,7 @@ void HMI_SelectFile() {
} }
} }
else if (encoder_diffState == ENCODER_DIFF_ENTER) { else if (encoder_diffState == ENCODER_DIFF_ENTER) {
if (select_file.now == 0) { // Back if (select_file.now == CASE_BACK) { // Back
select_page.set(0); select_page.set(0);
Goto_MainMenu(); Goto_MainMenu();
} }
@ -2257,43 +2272,32 @@ void HMI_Printing() {
if (encoder_diffState == ENCODER_DIFF_CW) { if (encoder_diffState == ENCODER_DIFF_CW) {
if (select_print.inc(3)) { if (select_print.inc(3)) {
switch (select_print.now) { switch (select_print.now) {
case 0: ICON_Tune(); break; case PRINT_SETUP: ICON_Tune(); break;
case 1: case PRINT_PAUSE_RESUME: ICON_Tune(); ICON_ResumeOrPause(); break;
ICON_Tune(); case PRINT_STOP: ICON_ResumeOrPause(); ICON_Stop(); break;
ICON_ResumeOrPause();
break;
case 2:
ICON_ResumeOrPause();
ICON_Stop();
break;
} }
} }
} }
else if (encoder_diffState == ENCODER_DIFF_CCW) { else if (encoder_diffState == ENCODER_DIFF_CCW) {
if (select_print.dec()) { if (select_print.dec()) {
switch (select_print.now) { switch (select_print.now) {
case 0: case PRINT_SETUP: ICON_Tune(); ICON_ResumeOrPause(); break;
ICON_Tune(); case PRINT_PAUSE_RESUME: ICON_ResumeOrPause(); ICON_Stop(); break;
ICON_ResumeOrPause(); case PRINT_STOP: ICON_Stop(); break;
break;
case 1:
ICON_ResumeOrPause();
ICON_Stop();
break;
case 2: ICON_Stop(); break;
} }
} }
} }
else if (encoder_diffState == ENCODER_DIFF_ENTER) { else if (encoder_diffState == ENCODER_DIFF_ENTER) {
switch (select_print.now) { switch (select_print.now) {
case 0: // Tune case PRINT_SETUP:
checkkey = Tune; checkkey = Tune;
HMI_ValueStruct.show_mode = 0; HMI_ValueStruct.show_mode = 0;
select_tune.reset(); select_tune.reset();
index_tune = MROWS; index_tune = MROWS;
Draw_Tune_Menu(); Draw_Tune_Menu();
break; break;
case 1: // Pause
case PRINT_PAUSE_RESUME:
if (HMI_flag.pause_flag) { if (HMI_flag.pause_flag) {
ICON_Pause(); ICON_Pause();
@ -2317,7 +2321,7 @@ void HMI_Printing() {
} }
break; break;
case 2: // Stop case PRINT_STOP:
HMI_flag.select_flag = true; HMI_flag.select_flag = true;
checkkey = Print_window; checkkey = Print_window;
Popup_window_PauseOrStop(); Popup_window_PauseOrStop();
@ -2339,14 +2343,14 @@ void HMI_PauseOrStop() {
else if (encoder_diffState == ENCODER_DIFF_CCW) else if (encoder_diffState == ENCODER_DIFF_CCW)
Draw_Select_Highlight(true); Draw_Select_Highlight(true);
else if (encoder_diffState == ENCODER_DIFF_ENTER) { else if (encoder_diffState == ENCODER_DIFF_ENTER) {
if (select_print.now == 1) { // pause window if (select_print.now == PRINT_PAUSE_RESUME) {
if (HMI_flag.select_flag) { if (HMI_flag.select_flag) {
HMI_flag.pause_action = true; HMI_flag.pause_action = true;
queue.inject_P(PSTR("M25")); queue.inject_P(PSTR("M25"));
} }
Goto_PrintProcess(); Goto_PrintProcess();
} }
else if (select_print.now == 2) { // stop window else if (select_print.now == PRINT_STOP) {
if (HMI_flag.select_flag) { if (HMI_flag.select_flag) {
checkkey = Back_Main; checkkey = Back_Main;
wait_for_heatup = wait_for_user = false; // Stop waiting for heating/user wait_for_heatup = wait_for_user = false; // Stop waiting for heating/user
@ -2395,8 +2399,8 @@ void Draw_Move_Menu() {
#endif #endif
} }
Draw_Back_First(select_axis.now == 0); Draw_Back_First(select_axis.now == CASE_BACK);
if (select_axis.now) Draw_Menu_Cursor(select_axis.now); if (select_axis.now != CASE_BACK) Draw_Menu_Cursor(select_axis.now);
// Draw separators and icons // Draw separators and icons
LOOP_L_N(i, 3 + ENABLED(HAS_HOTEND)) Draw_Menu_Line(i + 1, ICON_MoveX + i); LOOP_L_N(i, 3 + ENABLED(HAS_HOTEND)) Draw_Menu_Line(i + 1, ICON_MoveX + i);
@ -2506,7 +2510,7 @@ void Draw_AdvancedSettings_Menu() {
#endif #endif
} }
if (AVISI(0)) Draw_Back_First(select_advset.now == 0); if (AVISI(0)) Draw_Back_First(select_advset.now == CASE_BACK);
if (AVISI(ADVSET_CASE_HOMEOFF)) Item_Adv_HomeOffsets(ASCROL(ADVSET_CASE_HOMEOFF)); // Set Home Offsets > if (AVISI(ADVSET_CASE_HOMEOFF)) Item_Adv_HomeOffsets(ASCROL(ADVSET_CASE_HOMEOFF)); // Set Home Offsets >
#if HAS_ONESTEP_LEVELING #if HAS_ONESTEP_LEVELING
if (AVISI(ADVSET_CASE_PROBEOFF)) Item_Adv_ProbeOffsets(ASCROL(ADVSET_CASE_PROBEOFF)); // Probe Offsets > if (AVISI(ADVSET_CASE_PROBEOFF)) Item_Adv_ProbeOffsets(ASCROL(ADVSET_CASE_PROBEOFF)); // Probe Offsets >
@ -2516,7 +2520,7 @@ void Draw_AdvancedSettings_Menu() {
#if ENABLED(POWER_LOSS_RECOVERY) #if ENABLED(POWER_LOSS_RECOVERY)
if (AVISI(ADVSET_CASE_PWRLOSSR)) Item_Adv_PLR(ASCROL(ADVSET_CASE_PWRLOSSR)); // Power-loss recovery if (AVISI(ADVSET_CASE_PWRLOSSR)) Item_Adv_PLR(ASCROL(ADVSET_CASE_PWRLOSSR)); // Power-loss recovery
#endif #endif
if (select_advset.now) Draw_Menu_Cursor(ASCROL(select_advset.now)); if (select_advset.now != CASE_BACK) Draw_Menu_Cursor(ASCROL(select_advset.now));
} }
void Item_HomeOffs_X(const uint8_t row) { void Item_HomeOffs_X(const uint8_t row) {
@ -2576,18 +2580,18 @@ void Draw_HomeOff_Menu() {
DWIN_Frame_TitleCopy(1, 401, 91, 12); // "Home Offsets" DWIN_Frame_TitleCopy(1, 401, 91, 12); // "Home Offsets"
#endif #endif
} }
Draw_Back_First(select_item.now == 0); Draw_Back_First(select_item.now == CASE_BACK);
Item_HomeOffs_X(1); // "Home Offset X" Item_HomeOffs_X(1); // "Home Offset X"
Item_HomeOffs_Y(2); // "Home Offset Y" Item_HomeOffs_Y(2); // "Home Offset Y"
Item_HomeOffs_Z(3); // "Home Offset Z" Item_HomeOffs_Z(3); // "Home Offset Z"
if (select_item.now) Draw_Menu_Cursor(select_item.now); if (select_item.now != CASE_BACK) Draw_Menu_Cursor(select_item.now);
} }
#if HAS_ONESTEP_LEVELING #if HAS_ONESTEP_LEVELING
void Draw_ProbeOff_Menu() { void Draw_ProbeOff_Menu() {
Clear_Main_Window(); Clear_Main_Window();
Draw_Back_First(select_item.now == 0); Draw_Back_First(select_item.now == CASE_BACK);
if (false && HMI_IsChinese()) { if (false && HMI_IsChinese()) {
// TODO: Chinese "Probe Offsets" // TODO: Chinese "Probe Offsets"
} }
@ -2609,7 +2613,7 @@ void Draw_HomeOff_Menu() {
Draw_Edit_Signed_Float3(1, HMI_ValueStruct.Probe_OffX_scaled); Draw_Edit_Signed_Float3(1, HMI_ValueStruct.Probe_OffX_scaled);
Draw_Edit_Signed_Float3(2, HMI_ValueStruct.Probe_OffY_scaled); Draw_Edit_Signed_Float3(2, HMI_ValueStruct.Probe_OffY_scaled);
if (select_item.now) Draw_Menu_Cursor(select_item.now); if (select_item.now != CASE_BACK) Draw_Menu_Cursor(select_item.now);
} }
#endif #endif
@ -2682,11 +2686,11 @@ void HMI_Prepare() {
} }
else if (encoder_diffState == ENCODER_DIFF_ENTER) { else if (encoder_diffState == ENCODER_DIFF_ENTER) {
switch (select_prepare.now) { switch (select_prepare.now) {
case 0: // Back case CASE_BACK:
select_page.set(1); select_page.set(1);
Goto_MainMenu(); Goto_MainMenu();
break; break;
case PREPARE_CASE_MOVE: // Axis move case PREPARE_CASE_MOVE:
checkkey = AxisMove; checkkey = AxisMove;
select_axis.reset(); select_axis.reset();
Draw_Move_Menu(); Draw_Move_Menu();
@ -2699,9 +2703,9 @@ void HMI_Prepare() {
Draw_Edit_Signed_Float3(4, HMI_ValueStruct.Move_E_scaled); Draw_Edit_Signed_Float3(4, HMI_ValueStruct.Move_E_scaled);
#endif #endif
break; break;
case PREPARE_CASE_DISA: // Disable steppers
queue.inject_P(PSTR("M84")); case PREPARE_CASE_DISA: queue.inject_P(PSTR("M84")); break;
break;
case PREPARE_CASE_HOME: // Homing case PREPARE_CASE_HOME: // Homing
checkkey = Last_Prepare; checkkey = Last_Prepare;
index_prepare = MROWS; index_prepare = MROWS;
@ -2709,7 +2713,7 @@ void HMI_Prepare() {
Popup_Window_Home(); Popup_Window_Home();
break; break;
#if HAS_ZOFFSET_ITEM #if HAS_ZOFFSET_ITEM
case PREPARE_CASE_ZOFF: // Z-offset case PREPARE_CASE_ZOFF:
#if EITHER(HAS_BED_PROBE, BABYSTEPPING) #if EITHER(HAS_BED_PROBE, BABYSTEPPING)
checkkey = Homeoffset; checkkey = Homeoffset;
HMI_ValueStruct.show_mode = -4; HMI_ValueStruct.show_mode = -4;
@ -2724,24 +2728,24 @@ void HMI_Prepare() {
break; break;
#endif #endif
#if HAS_PREHEAT #if HAS_PREHEAT
case PREPARE_CASE_PLA: // PLA preheat case PREPARE_CASE_PLA:
TERN_(HAS_HOTEND, thermalManager.setTargetHotend(ui.material_preset[0].hotend_temp, 0)); TERN_(HAS_HOTEND, thermalManager.setTargetHotend(ui.material_preset[0].hotend_temp, 0));
TERN_(HAS_HEATED_BED, thermalManager.setTargetBed(ui.material_preset[0].bed_temp)); TERN_(HAS_HEATED_BED, thermalManager.setTargetBed(ui.material_preset[0].bed_temp));
TERN_(HAS_FAN, thermalManager.set_fan_speed(0, ui.material_preset[0].fan_speed)); TERN_(HAS_FAN, thermalManager.set_fan_speed(0, ui.material_preset[0].fan_speed));
break; break;
case PREPARE_CASE_ABS: // ABS preheat case PREPARE_CASE_ABS:
TERN_(HAS_HOTEND, thermalManager.setTargetHotend(ui.material_preset[1].hotend_temp, 0)); TERN_(HAS_HOTEND, thermalManager.setTargetHotend(ui.material_preset[1].hotend_temp, 0));
TERN_(HAS_HEATED_BED, thermalManager.setTargetBed(ui.material_preset[1].bed_temp)); TERN_(HAS_HEATED_BED, thermalManager.setTargetBed(ui.material_preset[1].bed_temp));
TERN_(HAS_FAN, thermalManager.set_fan_speed(0, ui.material_preset[1].fan_speed)); TERN_(HAS_FAN, thermalManager.set_fan_speed(0, ui.material_preset[1].fan_speed));
break; break;
case PREPARE_CASE_COOL: // Cool case PREPARE_CASE_COOL:
TERN_(HAS_FAN, thermalManager.zero_fan_speeds()); TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
#if HAS_HOTEND || HAS_HEATED_BED #if HAS_HOTEND || HAS_HEATED_BED
thermalManager.disable_all_heaters(); thermalManager.disable_all_heaters();
#endif #endif
break; break;
#endif #endif
case PREPARE_CASE_LANG: // Toggle Language case PREPARE_CASE_LANG:
HMI_ToggleLanguage(); HMI_ToggleLanguage();
Draw_Prepare_Menu(); Draw_Prepare_Menu();
break; break;
@ -2814,8 +2818,8 @@ void Draw_Temperature_Menu() {
#endif #endif
} }
Draw_Back_First(select_temp.now == 0); Draw_Back_First(select_temp.now == CASE_BACK);
if (select_temp.now) Draw_Menu_Cursor(select_temp.now); if (select_temp.now != CASE_BACK) Draw_Menu_Cursor(select_temp.now);
// Draw icons and lines // Draw icons and lines
uint8_t i = 0; uint8_t i = 0;
@ -2884,41 +2888,41 @@ void HMI_Control() {
} }
else if (encoder_diffState == ENCODER_DIFF_ENTER) { else if (encoder_diffState == ENCODER_DIFF_ENTER) {
switch (select_control.now) { switch (select_control.now) {
case 0: // Back case CASE_BACK:
select_page.set(2); select_page.set(2);
Goto_MainMenu(); Goto_MainMenu();
break; break;
case CONTROL_CASE_TEMP: // Temperature case CONTROL_CASE_TEMP:
checkkey = TemperatureID; checkkey = TemperatureID;
HMI_ValueStruct.show_mode = -1; HMI_ValueStruct.show_mode = -1;
select_temp.reset(); select_temp.reset();
Draw_Temperature_Menu(); Draw_Temperature_Menu();
break; break;
case CONTROL_CASE_MOVE: // Motion case CONTROL_CASE_MOVE:
checkkey = Motion; checkkey = Motion;
select_motion.reset(); select_motion.reset();
Draw_Motion_Menu(); Draw_Motion_Menu();
break; break;
#if ENABLED(EEPROM_SETTINGS) #if ENABLED(EEPROM_SETTINGS)
case CONTROL_CASE_SAVE: { // Write EEPROM case CONTROL_CASE_SAVE: {
const bool success = settings.save(); const bool success = settings.save();
HMI_AudioFeedback(success); HMI_AudioFeedback(success);
} break; } break;
case CONTROL_CASE_LOAD: { // Read EEPROM case CONTROL_CASE_LOAD: {
const bool success = settings.load(); const bool success = settings.load();
HMI_AudioFeedback(success); HMI_AudioFeedback(success);
} break; } break;
case CONTROL_CASE_RESET: // Reset EEPROM case CONTROL_CASE_RESET:
settings.reset(); settings.reset();
HMI_AudioFeedback(); HMI_AudioFeedback();
break; break;
#endif #endif
case CONTROL_CASE_ADVSET: // Advanced Settings case CONTROL_CASE_ADVSET:
checkkey = AdvSet; checkkey = AdvSet;
select_advset.reset(); select_advset.reset();
Draw_AdvancedSettings_Menu(); Draw_AdvancedSettings_Menu();
break; break;
case CONTROL_CASE_INFO: // Info case CONTROL_CASE_INFO:
checkkey = Info; checkkey = Info;
Draw_Info_Menu(); Draw_Info_Menu();
break; break;
@ -2971,7 +2975,7 @@ void HMI_AxisMove() {
} }
else if (encoder_diffState == ENCODER_DIFF_ENTER) { else if (encoder_diffState == ENCODER_DIFF_ENTER) {
switch (select_axis.now) { switch (select_axis.now) {
case 0: // Back case CASE_BACK:
checkkey = Prepare; checkkey = Prepare;
select_prepare.set(1); select_prepare.set(1);
index_prepare = MROWS; index_prepare = MROWS;
@ -2997,8 +3001,7 @@ void HMI_AxisMove() {
break; break;
#if HAS_HOTEND #if HAS_HOTEND
case 4: // Extruder case 4: // Extruder
// window tips #if ENABLED(PREVENT_COLD_EXTRUSION)
#ifdef PREVENT_COLD_EXTRUSION
if (thermalManager.tooColdToExtrude(0)) { if (thermalManager.tooColdToExtrude(0)) {
HMI_flag.ETempTooLow_flag = true; HMI_flag.ETempTooLow_flag = true;
Popup_Window_ETempTooLow(); Popup_Window_ETempTooLow();
@ -3031,14 +3034,14 @@ void HMI_Temperature() {
} }
else if (encoder_diffState == ENCODER_DIFF_ENTER) { else if (encoder_diffState == ENCODER_DIFF_ENTER) {
switch (select_temp.now) { switch (select_temp.now) {
case 0: // Back case CASE_BACK:
checkkey = Control; checkkey = Control;
select_control.set(1); select_control.set(1);
index_control = MROWS; index_control = MROWS;
Draw_Control_Menu(); Draw_Control_Menu();
break; break;
#if HAS_HOTEND #if HAS_HOTEND
case TEMP_CASE_TEMP: // Nozzle temperature case TEMP_CASE_TEMP:
checkkey = ETemp; checkkey = ETemp;
HMI_ValueStruct.E_Temp = thermalManager.degTargetHotend(0); HMI_ValueStruct.E_Temp = thermalManager.degTargetHotend(0);
Draw_Edit_Integer3(1, HMI_ValueStruct.E_Temp, true); Draw_Edit_Integer3(1, HMI_ValueStruct.E_Temp, true);
@ -3046,7 +3049,7 @@ void HMI_Temperature() {
break; break;
#endif #endif
#if HAS_HEATED_BED #if HAS_HEATED_BED
case TEMP_CASE_BED: // Bed temperature case TEMP_CASE_BED:
checkkey = BedTemp; checkkey = BedTemp;
HMI_ValueStruct.Bed_Temp = thermalManager.degTargetBed(); HMI_ValueStruct.Bed_Temp = thermalManager.degTargetBed();
Draw_Edit_Integer3(2, HMI_ValueStruct.Bed_Temp, true); Draw_Edit_Integer3(2, HMI_ValueStruct.Bed_Temp, true);
@ -3054,7 +3057,7 @@ void HMI_Temperature() {
break; break;
#endif #endif
#if HAS_FAN #if HAS_FAN
case TEMP_CASE_FAN: // Fan speed case TEMP_CASE_FAN:
checkkey = FanSpeed; checkkey = FanSpeed;
HMI_ValueStruct.Fan_speed = thermalManager.fan_speed[0]; HMI_ValueStruct.Fan_speed = thermalManager.fan_speed[0];
Draw_Edit_Integer3(3, HMI_ValueStruct.Fan_speed, true); Draw_Edit_Integer3(3, HMI_ValueStruct.Fan_speed, true);
@ -3062,7 +3065,7 @@ void HMI_Temperature() {
break; break;
#endif #endif
#if HAS_HOTEND #if HAS_HOTEND
case TEMP_CASE_PLA: { // PLA preheat setting case TEMP_CASE_PLA: {
checkkey = PLAPreheat; checkkey = PLAPreheat;
select_PLA.reset(); select_PLA.reset();
HMI_ValueStruct.show_mode = -2; HMI_ValueStruct.show_mode = -2;
@ -3458,30 +3461,30 @@ void HMI_Motion() {
} }
else if (encoder_diffState == ENCODER_DIFF_ENTER) { else if (encoder_diffState == ENCODER_DIFF_ENTER) {
switch (select_motion.now) { switch (select_motion.now) {
case 0: // Back case CASE_BACK:
checkkey = Control; checkkey = Control;
select_control.set(CONTROL_CASE_MOVE); select_control.set(CONTROL_CASE_MOVE);
index_control = MROWS; index_control = MROWS;
Draw_Control_Menu(); Draw_Control_Menu();
break; break;
case MOTION_CASE_RATE: // Max speed case MOTION_CASE_RATE:
checkkey = MaxSpeed; checkkey = MaxSpeed;
select_speed.reset(); select_speed.reset();
Draw_Max_Speed_Menu(); Draw_Max_Speed_Menu();
break; break;
case MOTION_CASE_ACCEL: // Max acceleration case MOTION_CASE_ACCEL:
checkkey = MaxAcceleration; checkkey = MaxAcceleration;
select_acc.reset(); select_acc.reset();
Draw_Max_Accel_Menu(); Draw_Max_Accel_Menu();
break; break;
#if HAS_CLASSIC_JERK #if HAS_CLASSIC_JERK
case MOTION_CASE_JERK: // Max jerk case MOTION_CASE_JERK:
checkkey = MaxJerk; checkkey = MaxJerk;
select_jerk.reset(); select_jerk.reset();
Draw_Max_Jerk_Menu(); Draw_Max_Jerk_Menu();
break; break;
#endif #endif
case MOTION_CASE_STEPS: // Steps per mm case MOTION_CASE_STEPS:
checkkey = Step; checkkey = Step;
select_step.reset(); select_step.reset();
Draw_Steps_Menu(); Draw_Steps_Menu();
@ -3533,7 +3536,7 @@ void HMI_AdvSet() {
} }
else if (encoder_diffState == ENCODER_DIFF_ENTER) { else if (encoder_diffState == ENCODER_DIFF_ENTER) {
switch (select_advset.now) { switch (select_advset.now) {
case 0: // Back case CASE_BACK:
checkkey = Control; checkkey = Control;
select_control.set(CONTROL_CASE_ADVSET); select_control.set(CONTROL_CASE_ADVSET);
index_control = CONTROL_CASE_ADVSET; index_control = CONTROL_CASE_ADVSET;
@ -3541,7 +3544,7 @@ void HMI_AdvSet() {
break; break;
#if HAS_HOME_OFFSET #if HAS_HOME_OFFSET
case ADVSET_CASE_HOMEOFF: // Home Offsets case ADVSET_CASE_HOMEOFF:
checkkey = HomeOff; checkkey = HomeOff;
select_item.reset(); select_item.reset();
HMI_ValueStruct.Home_OffX_scaled = home_offset[X_AXIS] * 10; HMI_ValueStruct.Home_OffX_scaled = home_offset[X_AXIS] * 10;
@ -3552,7 +3555,7 @@ void HMI_AdvSet() {
#endif #endif
#if HAS_ONESTEP_LEVELING #if HAS_ONESTEP_LEVELING
case ADVSET_CASE_PROBEOFF: // Probe Offsets case ADVSET_CASE_PROBEOFF:
checkkey = ProbeOff; checkkey = ProbeOff;
select_item.reset(); select_item.reset();
HMI_ValueStruct.Probe_OffX_scaled = probe.offset.x * 10; HMI_ValueStruct.Probe_OffX_scaled = probe.offset.x * 10;
@ -3562,21 +3565,21 @@ void HMI_AdvSet() {
#endif #endif
#if HAS_HOTEND #if HAS_HOTEND
case ADVSET_CASE_HEPID: // Nozzle PID Autotune case ADVSET_CASE_HEPID:
thermalManager.setTargetHotend(ui.material_preset[0].hotend_temp, 0); thermalManager.setTargetHotend(ui.material_preset[0].hotend_temp, 0);
thermalManager.PID_autotune(ui.material_preset[0].hotend_temp, H_E0, 10, true); thermalManager.PID_autotune(ui.material_preset[0].hotend_temp, H_E0, 10, true);
break; break;
#endif #endif
#if HAS_HEATED_BED #if HAS_HEATED_BED
case ADVSET_CASE_BEDPID: // Bed PID Autotune case ADVSET_CASE_BEDPID:
thermalManager.setTargetBed(ui.material_preset[0].bed_temp); thermalManager.setTargetBed(ui.material_preset[0].bed_temp);
thermalManager.PID_autotune(ui.material_preset[0].bed_temp, H_BED, 10, true); thermalManager.PID_autotune(ui.material_preset[0].bed_temp, H_BED, 10, true);
break; break;
#endif #endif
#if ENABLED(POWER_LOSS_RECOVERY) #if ENABLED(POWER_LOSS_RECOVERY)
case ADVSET_CASE_PWRLOSSR: // Power-loss recovery case ADVSET_CASE_PWRLOSSR:
recovery.enable(!recovery.enabled); recovery.enable(!recovery.enabled);
Draw_Checkbox_Line(ADVSET_CASE_PWRLOSSR + MROWS - index_advset, recovery.enabled); Draw_Checkbox_Line(ADVSET_CASE_PWRLOSSR + MROWS - index_advset, recovery.enabled);
break; break;
@ -3603,7 +3606,7 @@ void HMI_AdvSet() {
} }
else if (encoder_diffState == ENCODER_DIFF_ENTER) { else if (encoder_diffState == ENCODER_DIFF_ENTER) {
switch (select_item.now) { switch (select_item.now) {
case 0: // Back case CASE_BACK:
checkkey = AdvSet; checkkey = AdvSet;
select_advset.set(ADVSET_CASE_HOMEOFF); select_advset.set(ADVSET_CASE_HOMEOFF);
Draw_AdvancedSettings_Menu(); Draw_AdvancedSettings_Menu();
@ -3665,7 +3668,7 @@ void HMI_AdvSet() {
} }
else if (encoder_diffState == ENCODER_DIFF_ENTER) { else if (encoder_diffState == ENCODER_DIFF_ENTER) {
switch (select_item.now) { switch (select_item.now) {
case 0: // Back case CASE_BACK:
checkkey = AdvSet; checkkey = AdvSet;
select_advset.set(ADVSET_CASE_PROBEOFF); select_advset.set(ADVSET_CASE_PROBEOFF);
Draw_AdvancedSettings_Menu(); Draw_AdvancedSettings_Menu();
@ -3675,7 +3678,7 @@ void HMI_AdvSet() {
Draw_Edit_Signed_Float3(1, HMI_ValueStruct.Probe_OffX_scaled, true); Draw_Edit_Signed_Float3(1, HMI_ValueStruct.Probe_OffX_scaled, true);
EncoderRate.enabled = true; EncoderRate.enabled = true;
break; break;
case 2: // Probe Offset X case 2: // Probe Offset Y
checkkey = ProbeOffY; checkkey = ProbeOffY;
Draw_Edit_Signed_Float3(2, HMI_ValueStruct.Probe_OffY_scaled, true); Draw_Edit_Signed_Float3(2, HMI_ValueStruct.Probe_OffY_scaled, true);
EncoderRate.enabled = true; EncoderRate.enabled = true;
@ -3822,14 +3825,14 @@ void HMI_Tune() {
} }
else if (encoder_diffState == ENCODER_DIFF_ENTER) { else if (encoder_diffState == ENCODER_DIFF_ENTER) {
switch (select_PLA.now) { switch (select_PLA.now) {
case 0: // Back case CASE_BACK:
checkkey = TemperatureID; checkkey = TemperatureID;
select_temp.now = TEMP_CASE_PLA; select_temp.now = TEMP_CASE_PLA;
HMI_ValueStruct.show_mode = -1; HMI_ValueStruct.show_mode = -1;
Draw_Temperature_Menu(); Draw_Temperature_Menu();
break; break;
#if HAS_HOTEND #if HAS_HOTEND
case PREHEAT_CASE_TEMP: // Nozzle temperature case PREHEAT_CASE_TEMP:
checkkey = ETemp; checkkey = ETemp;
HMI_ValueStruct.E_Temp = ui.material_preset[0].hotend_temp; HMI_ValueStruct.E_Temp = ui.material_preset[0].hotend_temp;
Draw_Edit_Integer3(PREHEAT_CASE_TEMP, ui.material_preset[0].hotend_temp, true); Draw_Edit_Integer3(PREHEAT_CASE_TEMP, ui.material_preset[0].hotend_temp, true);
@ -3837,7 +3840,7 @@ void HMI_Tune() {
break; break;
#endif #endif
#if HAS_HEATED_BED #if HAS_HEATED_BED
case PREHEAT_CASE_BED: // Bed temperature case PREHEAT_CASE_BED:
checkkey = BedTemp; checkkey = BedTemp;
HMI_ValueStruct.Bed_Temp = ui.material_preset[0].bed_temp; HMI_ValueStruct.Bed_Temp = ui.material_preset[0].bed_temp;
Draw_Edit_Integer3(PREHEAT_CASE_BED, ui.material_preset[0].bed_temp, true); Draw_Edit_Integer3(PREHEAT_CASE_BED, ui.material_preset[0].bed_temp, true);
@ -3845,7 +3848,7 @@ void HMI_Tune() {
break; break;
#endif #endif
#if HAS_FAN #if HAS_FAN
case PREHEAT_CASE_FAN: // Fan speed case PREHEAT_CASE_FAN:
checkkey = FanSpeed; checkkey = FanSpeed;
HMI_ValueStruct.Fan_speed = ui.material_preset[0].fan_speed; HMI_ValueStruct.Fan_speed = ui.material_preset[0].fan_speed;
Draw_Edit_Integer3(PREHEAT_CASE_FAN, ui.material_preset[0].fan_speed, true); Draw_Edit_Integer3(PREHEAT_CASE_FAN, ui.material_preset[0].fan_speed, true);
@ -3853,7 +3856,7 @@ void HMI_Tune() {
break; break;
#endif #endif
#if ENABLED(EEPROM_SETTINGS) #if ENABLED(EEPROM_SETTINGS)
case 4: { // Save PLA configuration case PREHEAT_CASE_SAVE: {
const bool success = settings.save(); const bool success = settings.save();
HMI_AudioFeedback(success); HMI_AudioFeedback(success);
} break; } break;
@ -3878,14 +3881,14 @@ void HMI_Tune() {
} }
else if (encoder_diffState == ENCODER_DIFF_ENTER) { else if (encoder_diffState == ENCODER_DIFF_ENTER) {
switch (select_ABS.now) { switch (select_ABS.now) {
case 0: // Back case CASE_BACK:
checkkey = TemperatureID; checkkey = TemperatureID;
select_temp.now = TEMP_CASE_ABS; select_temp.now = TEMP_CASE_ABS;
HMI_ValueStruct.show_mode = -1; HMI_ValueStruct.show_mode = -1;
Draw_Temperature_Menu(); Draw_Temperature_Menu();
break; break;
#if HAS_HOTEND #if HAS_HOTEND
case PREHEAT_CASE_TEMP: // Set nozzle temperature case PREHEAT_CASE_TEMP:
checkkey = ETemp; checkkey = ETemp;
HMI_ValueStruct.E_Temp = ui.material_preset[1].hotend_temp; HMI_ValueStruct.E_Temp = ui.material_preset[1].hotend_temp;
Draw_Edit_Integer3(PREHEAT_CASE_TEMP, ui.material_preset[1].hotend_temp, true); Draw_Edit_Integer3(PREHEAT_CASE_TEMP, ui.material_preset[1].hotend_temp, true);
@ -3893,7 +3896,7 @@ void HMI_Tune() {
break; break;
#endif #endif
#if HAS_HEATED_BED #if HAS_HEATED_BED
case PREHEAT_CASE_BED: // Set bed temperature case PREHEAT_CASE_BED:
checkkey = BedTemp; checkkey = BedTemp;
HMI_ValueStruct.Bed_Temp = ui.material_preset[1].bed_temp; HMI_ValueStruct.Bed_Temp = ui.material_preset[1].bed_temp;
Draw_Edit_Integer3(PREHEAT_CASE_BED, ui.material_preset[1].bed_temp, true); Draw_Edit_Integer3(PREHEAT_CASE_BED, ui.material_preset[1].bed_temp, true);
@ -3901,7 +3904,7 @@ void HMI_Tune() {
break; break;
#endif #endif
#if HAS_FAN #if HAS_FAN
case PREHEAT_CASE_FAN: // Set fan speed case PREHEAT_CASE_FAN:
checkkey = FanSpeed; checkkey = FanSpeed;
HMI_ValueStruct.Fan_speed = ui.material_preset[1].fan_speed; HMI_ValueStruct.Fan_speed = ui.material_preset[1].fan_speed;
Draw_Edit_Integer3(PREHEAT_CASE_FAN, ui.material_preset[1].fan_speed, true); Draw_Edit_Integer3(PREHEAT_CASE_FAN, ui.material_preset[1].fan_speed, true);
@ -3909,7 +3912,7 @@ void HMI_Tune() {
break; break;
#endif #endif
#if ENABLED(EEPROM_SETTINGS) #if ENABLED(EEPROM_SETTINGS)
case PREHEAT_CASE_SAVE: { // Save ABS configuration case PREHEAT_CASE_SAVE: {
const bool success = settings.save(); const bool success = settings.save();
HMI_AudioFeedback(success); HMI_AudioFeedback(success);
} break; } break;

View File

@ -31,9 +31,6 @@
#include <stdint.h> #include <stdint.h>
//#define USE_STRING_HEADINGS
//#define USE_STRING_TITLES
#define RECEIVED_NO_DATA 0x00 #define RECEIVED_NO_DATA 0x00
#define RECEIVED_SHAKE_HAND_ACK 0x01 #define RECEIVED_SHAKE_HAND_ACK 0x01

View File

@ -86,9 +86,6 @@
#define PAUSE_HEAT #define PAUSE_HEAT
#define USE_STRING_HEADINGS
#define USE_STRING_TITLES
#define MENU_CHAR_LIMIT 24 #define MENU_CHAR_LIMIT 24
// Print speed limit // Print speed limit
@ -133,8 +130,20 @@ HMI_data_t HMI_data;
millis_t dwin_heat_time = 0; millis_t dwin_heat_time = 0;
uint8_t checkkey = MainMenu; uint8_t checkkey = MainMenu, last_checkkey = MainMenu;
uint8_t last_checkkey = MainMenu;
enum SelectItem : uint8_t {
PAGE_PRINT = 0,
PAGE_PREPARE,
PAGE_CONTROL,
PAGE_INFO_LEVELING,
PAGE_COUNT,
PRINT_SETUP = 0,
PRINT_PAUSE_RESUME,
PRINT_STOP,
PRINT_COUNT
};
typedef struct { typedef struct {
uint8_t now, last; uint8_t now, last;
@ -266,7 +275,7 @@ void ICON_Print() {
{ 1, { 417, 449 }, 30, 14 }, { 1, { 417, 449 }, 30, 14 },
{ 1, { 405, 447 }, 27, 15 } { 1, { 405, 447 }, 27, 15 }
}; };
ICON_Button(select_page.now == 0, ICON_Print_0, ico, txt); ICON_Button(select_page.now == PAGE_PRINT, ICON_Print_0, ico, txt);
} }
// //
@ -278,7 +287,7 @@ void ICON_Prepare() {
{ 33, { 417, 449 }, 51, 14 }, { 33, { 417, 449 }, 51, 14 },
{ 31, { 405, 447 }, 27, 15 } { 31, { 405, 447 }, 27, 15 }
}; };
ICON_Button(select_page.now == 1, ICON_Prepare_0, ico, txt); ICON_Button(select_page.now == PAGE_PREPARE, ICON_Prepare_0, ico, txt);
} }
// //
@ -290,7 +299,7 @@ void ICON_Control() {
{ 85, { 417, 449 }, 46, 14 }, { 85, { 417, 449 }, 46, 14 },
{ 61, { 405, 447 }, 27, 15 } { 61, { 405, 447 }, 27, 15 }
}; };
ICON_Button(select_page.now == 2, ICON_Control_0, ico, txt); ICON_Button(select_page.now == PAGE_CONTROL, ICON_Control_0, ico, txt);
} }
// //
@ -302,7 +311,7 @@ void ICON_StartInfo() {
{ 133, { 417, 449 }, 23, 14 }, { 133, { 417, 449 }, 23, 14 },
{ 91, { 405, 447 }, 27, 15 } { 91, { 405, 447 }, 27, 15 }
}; };
ICON_Button(select_page.now == 3, ICON_Info_0, ico, txt); ICON_Button(select_page.now == PAGE_INFO_LEVELING, ICON_Info_0, ico, txt);
} }
// //
@ -314,7 +323,7 @@ void ICON_Leveling() {
{ 88, { 433, 464 }, 36, 14 }, { 88, { 433, 464 }, 36, 14 },
{ 211, { 405, 447 }, 27, 15 } { 211, { 405, 447 }, 27, 15 }
}; };
ICON_Button(select_page.now == 3, ICON_Leveling_0, ico, txt); ICON_Button(select_page.now == PAGE_INFO_LEVELING, ICON_Leveling_0, ico, txt);
} }
// //
@ -326,7 +335,7 @@ void ICON_Tune() {
{ 0, { 433, 464 }, 32, 14 }, { 0, { 433, 464 }, 32, 14 },
{ 121, { 405, 447 }, 27, 15 } { 121, { 405, 447 }, 27, 15 }
}; };
ICON_Button(select_print.now == 0, ICON_Setup_0, ico, txt); ICON_Button(select_print.now == PRINT_SETUP, ICON_Setup_0, ico, txt);
} }
// //
@ -338,7 +347,7 @@ void ICON_Pause() {
{ 157, { 417, 449 }, 39, 14 }, { 157, { 417, 449 }, 39, 14 },
{ 181, { 405, 447 }, 27, 15 } { 181, { 405, 447 }, 27, 15 }
}; };
ICON_Button(select_print.now == 1, ICON_Pause_0, ico, txt); ICON_Button(select_print.now == PRINT_PAUSE_RESUME, ICON_Pause_0, ico, txt);
} }
// //
@ -350,7 +359,7 @@ void ICON_Resume() {
{ 33, { 433, 464 }, 53, 14 }, { 33, { 433, 464 }, 53, 14 },
{ 1, { 405, 447 }, 27, 15 } { 1, { 405, 447 }, 27, 15 }
}; };
ICON_Button(select_print.now == 1, ICON_Continue_0, ico, txt); ICON_Button(select_print.now == PRINT_PAUSE_RESUME, ICON_Continue_0, ico, txt);
} }
// //
@ -362,7 +371,7 @@ void ICON_Stop() {
{ 196, { 417, 449 }, 29, 14 }, { 196, { 417, 449 }, 29, 14 },
{ 151, { 405, 447 }, 27, 12 } { 151, { 405, 447 }, 27, 12 }
}; };
ICON_Button(select_print.now == 2, ICON_Stop_0, ico, txt); ICON_Button(select_print.now == PRINT_STOP, ICON_Stop_0, ico, txt);
} }
void Draw_Menu_Cursor(const uint8_t line) { void Draw_Menu_Cursor(const uint8_t line) {
@ -537,14 +546,14 @@ void Popup_window_PauseOrStop() {
if (HMI_IsChinese()) { if (HMI_IsChinese()) {
DWINUI::ClearMenuArea(); DWINUI::ClearMenuArea();
Draw_Popup_Bkgd_60(); Draw_Popup_Bkgd_60();
if (select_print.now == 1) DWIN_Frame_AreaCopy(1, 237, 338, 269, 356, 98, 150); if (select_print.now == PRINT_PAUSE_RESUME) DWIN_Frame_AreaCopy(1, 237, 338, 269, 356, 98, 150);
else if (select_print.now == 2) DWIN_Frame_AreaCopy(1, 221, 320, 253, 336, 98, 150); else if (select_print.now == PRINT_STOP) DWIN_Frame_AreaCopy(1, 221, 320, 253, 336, 98, 150);
DWIN_Frame_AreaCopy(1, 220, 304, 264, 319, 130, 150); DWIN_Frame_AreaCopy(1, 220, 304, 264, 319, 130, 150);
DWINUI::Draw_Icon(ICON_Confirm_C, 26, 280); DWINUI::Draw_Icon(ICON_Confirm_C, 26, 280);
DWINUI::Draw_Icon(ICON_Cancel_C, 146, 280); DWINUI::Draw_Icon(ICON_Cancel_C, 146, 280);
} }
else { else {
DWIN_Draw_Popup(ICON_BLTouch, "Please confirm",(select_print.now == 1) ? GET_TEXT(MSG_PAUSE_PRINT) : GET_TEXT(MSG_STOP_PRINT)); DWIN_Draw_Popup(ICON_BLTouch, "Please confirm", select_print.now == PRINT_PAUSE_RESUME ? GET_TEXT(MSG_PAUSE_PRINT) : GET_TEXT(MSG_STOP_PRINT));
DWINUI::Draw_Icon(ICON_Confirm_E, 26, 280); DWINUI::Draw_Icon(ICON_Confirm_E, 26, 280);
DWINUI::Draw_Icon(ICON_Cancel_E, 146, 280); DWINUI::Draw_Icon(ICON_Cancel_E, 146, 280);
} }
@ -589,16 +598,9 @@ void Draw_Print_Labels() {
DWIN_Frame_AreaCopy(1, 65, 72, 128, 86, 176, 173); // Remain DWIN_Frame_AreaCopy(1, 65, 72, 128, 86, 176, 173); // Remain
} }
else { else {
#ifdef USE_STRING_TITLES
Title.ShowCaption(GET_TEXT(MSG_PRINTING)); Title.ShowCaption(GET_TEXT(MSG_PRINTING));
DWINUI::Draw_String( 46, 173, F("Print Time")); DWINUI::Draw_String( 46, 173, F("Print Time"));
DWINUI::Draw_String(181, 173, F("Remain")); DWINUI::Draw_String(181, 173, F("Remain"));
#else
const uint16_t y = 168;
Title.FrameCopy(42, 0, 47, 14); // "Printing"
DWIN_Frame_AreaCopy(1, 0, 44, 96, 58, 41, y); // Printing Time
DWIN_Frame_AreaCopy(1, 98, 44, 152, 58, 176, y); // Remain
#endif
} }
} }
@ -678,13 +680,8 @@ void Draw_Main_Menu() {
if (HMI_IsChinese()) if (HMI_IsChinese())
Title.FrameCopy(2, 2, 26, 13); // "Home" etc Title.FrameCopy(2, 2, 26, 13); // "Home" etc
else { else
#ifdef USE_STRING_HEADINGS
Title.ShowCaption(MACHINE_NAME); Title.ShowCaption(MACHINE_NAME);
#else
Title.FrameCopy(0, 2, 40, 11); // "Home"
#endif
}
DWINUI::Draw_Icon(ICON_LOGO, 71, 52); // CREALITY logo DWINUI::Draw_Icon(ICON_LOGO, 71, 52); // CREALITY logo
@ -1075,11 +1072,7 @@ void Draw_Info_Menu() {
DWIN_Frame_AreaCopy(1, 58, 164, 113, 176, 105, 248); // "Contact Details" DWIN_Frame_AreaCopy(1, 58, 164, 113, 176, 105, 248); // "Contact Details"
} }
else { else {
#ifdef USE_STRING_HEADINGS
Title.ShowCaption(GET_TEXT_F(MSG_INFO_SCREEN)); Title.ShowCaption(GET_TEXT_F(MSG_INFO_SCREEN));
#else
Title.FrameCopy(192, 15, 23, 12); // "Info"
#endif
DWIN_Frame_AreaCopy(1, 120, 150, 146, 161, 124, 102); // "Size" DWIN_Frame_AreaCopy(1, 120, 150, 146, 161, 124, 102); // "Size"
DWIN_Frame_AreaCopy(1, 146, 151, 254, 161, 82, 175); // "Firmware Version" DWIN_Frame_AreaCopy(1, 146, 151, 254, 161, 82, 175); // "Firmware Version"
@ -1098,13 +1091,8 @@ void Draw_Info_Menu() {
void Draw_Print_File_Menu() { void Draw_Print_File_Menu() {
if (HMI_IsChinese()) if (HMI_IsChinese())
Title.FrameCopy(0, 31, 56, 14); // "Print file" Title.FrameCopy(0, 31, 56, 14); // "Print file"
else { else
#ifdef USE_STRING_HEADINGS
Title.ShowCaption(GET_TEXT_F(MSG_MEDIA_MENU)); Title.ShowCaption(GET_TEXT_F(MSG_MEDIA_MENU));
#else
Title.FrameCopy(52, 31, 86, 11); // "Print file"
#endif
}
Redraw_SD_List(); Redraw_SD_List();
} }
@ -1114,43 +1102,39 @@ void HMI_MainMenu() {
if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_NO) return;
if (encoder_diffState == ENCODER_DIFF_CW) { if (encoder_diffState == ENCODER_DIFF_CW) {
if (select_page.inc(4)) { if (select_page.inc(PAGE_COUNT)) {
switch (select_page.now) { switch (select_page.now) {
case 0: ICON_Print(); break; case PAGE_PRINT: ICON_Print(); break;
case 1: ICON_Print(); ICON_Prepare(); break; case PAGE_PREPARE: ICON_Print(); ICON_Prepare(); break;
case 2: ICON_Prepare(); ICON_Control(); break; case PAGE_CONTROL: ICON_Prepare(); ICON_Control(); break;
case 3: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break; case PAGE_INFO_LEVELING: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
} }
} }
} }
else if (encoder_diffState == ENCODER_DIFF_CCW) { else if (encoder_diffState == ENCODER_DIFF_CCW) {
if (select_page.dec()) { if (select_page.dec()) {
switch (select_page.now) { switch (select_page.now) {
case 0: ICON_Print(); ICON_Prepare(); break; case PAGE_PRINT: ICON_Print(); ICON_Prepare(); break;
case 1: ICON_Prepare(); ICON_Control(); break; case PAGE_PREPARE: ICON_Prepare(); ICON_Control(); break;
case 2: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break; case PAGE_CONTROL: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
case 3: TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break; case PAGE_INFO_LEVELING: TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
} }
} }
} }
else if (encoder_diffState == ENCODER_DIFF_ENTER) { else if (encoder_diffState == ENCODER_DIFF_ENTER) {
switch (select_page.now) { switch (select_page.now) {
case 0: // Print File case PAGE_PRINT:
checkkey = SelectFile; checkkey = SelectFile;
Draw_Print_File_Menu(); Draw_Print_File_Menu();
break; break;
case 1: // Prepare case PAGE_PREPARE: Draw_Prepare_Menu(); break;
Draw_Prepare_Menu();
break;
case 2: // Control case PAGE_CONTROL: Draw_Control_Menu(); break;
Draw_Control_Menu();
break;
case 3: // Leveling or Info case PAGE_INFO_LEVELING:
#if HAS_ONESTEP_LEVELING #if HAS_ONESTEP_LEVELING
queue.inject_P(PSTR("G28XYO\nG28Z\nG29")); 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?
#else #else
checkkey = Info; checkkey = Info;
Draw_Info_Menu(); Draw_Info_Menu();
@ -1238,8 +1222,8 @@ void HMI_SelectFile() {
} }
} }
else if (encoder_diffState == ENCODER_DIFF_ENTER) { else if (encoder_diffState == ENCODER_DIFF_ENTER) {
if (select_file.now == 0) { // Back if (select_file.now == 0) {
select_page.set(0); select_page.set(PAGE_PRINT);
Goto_Main_Menu(); Goto_Main_Menu();
} }
else if (hasUpDir && select_file.now == 1) { // CD-Up else if (hasUpDir && select_file.now == 1) { // CD-Up
@ -1276,6 +1260,7 @@ void HMI_SelectFile() {
DWIN_Print_Started(true); DWIN_Print_Started(true);
} }
} }
HMI_SelectFileExit: HMI_SelectFileExit:
DWIN_UpdateLCD(); DWIN_UpdateLCD();
} }
@ -1286,44 +1271,30 @@ void HMI_Printing() {
if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_NO) return;
// Avoid flicker by updating only the previous menu // Avoid flicker by updating only the previous menu
if (encoder_diffState == ENCODER_DIFF_CW) { if (encoder_diffState == ENCODER_DIFF_CW) {
if (select_print.inc(3)) { if (select_print.inc(PRINT_COUNT)) {
switch (select_print.now) { switch (select_print.now) {
case 0: ICON_Tune(); break; case PRINT_SETUP: ICON_Tune(); break;
case 1: case PRINT_PAUSE_RESUME: ICON_Tune(); ICON_ResumeOrPause(); break;
ICON_Tune(); case PRINT_STOP: ICON_ResumeOrPause(); ICON_Stop(); break;
ICON_ResumeOrPause();
break;
case 2:
ICON_ResumeOrPause();
ICON_Stop();
break;
} }
} }
} }
else if (encoder_diffState == ENCODER_DIFF_CCW) { else if (encoder_diffState == ENCODER_DIFF_CCW) {
if (select_print.dec()) { if (select_print.dec()) {
switch (select_print.now) { switch (select_print.now) {
case 0: case PRINT_SETUP: ICON_Tune(); ICON_ResumeOrPause(); break;
ICON_Tune(); case PRINT_PAUSE_RESUME: ICON_ResumeOrPause(); ICON_Stop(); break;
ICON_ResumeOrPause(); case PRINT_STOP: ICON_Stop(); break;
break;
case 1:
ICON_ResumeOrPause();
ICON_Stop();
break;
case 2: ICON_Stop(); break;
} }
} }
} }
else if (encoder_diffState == ENCODER_DIFF_ENTER) { else if (encoder_diffState == ENCODER_DIFF_ENTER) {
switch (select_print.now) { switch (select_print.now) {
case 0: // Tune case PRINT_SETUP: Draw_Tune_Menu(); break;
Draw_Tune_Menu(); case PRINT_PAUSE_RESUME:
break;
case 1: // Pause
if (HMI_flag.pause_flag) { if (HMI_flag.pause_flag) {
ICON_Pause(); ICON_Pause();
#ifndef ADVANCED_PAUSE_FEATURE #if DISABLED(ADVANCED_PAUSE_FEATURE)
char cmd[40]; char cmd[40];
cmd[0] = '\0'; cmd[0] = '\0';
#if BOTH(HAS_HEATED_BED, PAUSE_HEAT) #if BOTH(HAS_HEATED_BED, PAUSE_HEAT)
@ -1346,7 +1317,7 @@ void HMI_Printing() {
} }
break; break;
case 2: // Stop case PRINT_STOP:
HMI_flag.select_flag = true; HMI_flag.select_flag = true;
checkkey = PauseOrStop; checkkey = PauseOrStop;
Popup_window_PauseOrStop(); Popup_window_PauseOrStop();
@ -1378,7 +1349,7 @@ void HMI_PauseOrStop() {
else if (encoder_diffState == ENCODER_DIFF_CCW) else if (encoder_diffState == ENCODER_DIFF_CCW)
Draw_Select_Highlight(true); Draw_Select_Highlight(true);
else if (encoder_diffState == ENCODER_DIFF_ENTER) { else if (encoder_diffState == ENCODER_DIFF_ENTER) {
if (select_print.now == 1) { // pause window if (select_print.now == PRINT_PAUSE_RESUME) {
if (HMI_flag.select_flag) { if (HMI_flag.select_flag) {
HMI_flag.pause_action = true; HMI_flag.pause_action = true;
ICON_Resume(); ICON_Resume();
@ -1389,7 +1360,7 @@ void HMI_PauseOrStop() {
} }
Goto_PrintProcess(); Goto_PrintProcess();
} }
else if (select_print.now == 2) { // stop window else if (select_print.now == PRINT_STOP) {
if (HMI_flag.select_flag) { if (HMI_flag.select_flag) {
checkkey = MainMenu; checkkey = MainMenu;
if (HMI_flag.home_flag) planner.synchronize(); // Wait for planner moves to finish! if (HMI_flag.home_flag) planner.synchronize(); // Wait for planner moves to finish!
@ -1511,22 +1482,12 @@ void EachMomentUpdate() {
if (HMI_flag.pause_action && printingIsPaused() && !planner.has_blocks_queued()) { if (HMI_flag.pause_action && printingIsPaused() && !planner.has_blocks_queued()) {
HMI_flag.pause_action = false; HMI_flag.pause_action = false;
#if ENABLED(PAUSE_HEAT) #if ENABLED(PAUSE_HEAT)
if (sdprint) { TERN_(HAS_HOTEND, resume_hotend_temp = sdprint ? thermalManager.degTargetHotend(0) : thermalManager.wholeDegHotend(0));
TERN_(HAS_HOTEND, resume_hotend_temp = thermalManager.degTargetHotend(0)); TERN_(HAS_HEATED_BED, resume_bed_temp = sdprint ? thermalManager.degTargetBed() : thermalManager.wholeDegBed());
TERN_(HAS_HEATED_BED, resume_bed_temp = thermalManager.degTargetBed());
}
else {
TERN_(HAS_HOTEND, resume_hotend_temp = thermalManager.wholeDegHotend(0));
TERN_(HAS_HEATED_BED, resume_bed_temp = thermalManager.wholeDegBed());
}
TERN_(HAS_FAN, resume_fan = thermalManager.fan_speed[0]); TERN_(HAS_FAN, resume_fan = thermalManager.fan_speed[0]);
#endif #endif
#if DISABLED(ADVANCED_PAUSE_FEATURE) IF_DISABLED(ADVANCED_PAUSE_FEATURE, thermalManager.disable_all_heaters());
thermalManager.disable_all_heaters(); IF_DISABLED(PARK_HEAD_ON_PAUSE, queue.inject_P(PSTR("G1 F1200 X0 Y0")));
#endif
#if DISABLED(PARK_HEAD_ON_PAUSE)
queue.inject_P(PSTR("G1 F1200 X0 Y0"));
#endif
} }
if (checkkey == PrintProcess) { // print process if (checkkey == PrintProcess) { // print process
@ -1565,7 +1526,7 @@ void EachMomentUpdate() {
else if (dwin_abort_flag && !HMI_flag.home_flag) { // Print Stop else if (dwin_abort_flag && !HMI_flag.home_flag) { // Print Stop
dwin_abort_flag = false; dwin_abort_flag = false;
dwin_zoffset = BABY_Z_VAR; dwin_zoffset = BABY_Z_VAR;
select_page.set(0); select_page.set(PAGE_PRINT);
Goto_Main_Menu(); Goto_Main_Menu();
} }
@ -1615,7 +1576,7 @@ void EachMomentUpdate() {
watchdog_refresh(); watchdog_refresh();
} }
select_print.set(0); select_print.set(PRINT_SETUP);
queue.inject_P(PSTR("M1000")); queue.inject_P(PSTR("M1000"));
sdprint = true; sdprint = true;
Goto_PrintProcess(); Goto_PrintProcess();
@ -1735,7 +1696,6 @@ void DWIN_PidTuning(pidresult_t result) {
// Update filename on print // Update filename on print
void DWIN_Print_Header(const char *text = nullptr) { void DWIN_Print_Header(const char *text = nullptr) {
static char headertxt[31] = ""; // Print header text static char headertxt[31] = ""; // Print header text
if (text != nullptr) { if (text != nullptr) {
@ -1917,6 +1877,7 @@ void DWIN_Redraw_screen() {
DWINUI::Draw_Icon(ICON_Confirm_E, 26, 280); DWINUI::Draw_Icon(ICON_Confirm_E, 26, 280);
DWINUI::Draw_Icon(ICON_Continue_E, 146, 280); DWINUI::Draw_Icon(ICON_Continue_E, 146, 280);
Draw_Select_Highlight(true); Draw_Select_Highlight(true);
DWIN_UpdateLCD();
} }
// Handle responses such as: // Handle responses such as:
@ -1981,7 +1942,6 @@ void DWIN_LockScreen(const bool flag) {
// LiveUpdate: live update function when the encoder changes // LiveUpdate: live update function when the encoder changes
// Apply: update function when the encoder is pressed // Apply: update function when the encoder is pressed
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) { 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) {
last_checkkey = Menu;
checkkey = process; checkkey = process;
HMI_value.MinValue = lo; HMI_value.MinValue = lo;
HMI_value.MaxValue = hi; HMI_value.MaxValue = hi;
@ -2092,13 +2052,9 @@ void Goto_InfoMenu(){
Draw_Info_Menu(); Draw_Info_Menu();
} }
void DisableMotors() { void DisableMotors() { queue.inject_P(PSTR("M84")); }
queue.inject_P(PSTR("M84"));
}
void AutoHome() { void AutoHome() { queue.inject_P(G28_STR); }
queue.inject_P(G28_STR);
}
void SetHome() { void SetHome() {
// Apply workspace offset, making the current position 0,0,0 // Apply workspace offset, making the current position 0,0,0
@ -2117,7 +2073,9 @@ void SetHome() {
#endif #endif
} }
#if EITHER(HAS_BED_PROBE, BABYSTEPPING) #if EITHER(HAS_BED_PROBE, BABYSTEPPING)
void SetZOffset() { SetPFloatOnClick(Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX, 2, ApplyZOffset, LiveZOffset); } void SetZOffset() {
SetPFloatOnClick(Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX, 2, ApplyZOffset, LiveZOffset);
}
#endif #endif
#endif #endif
@ -2233,9 +2191,7 @@ void SetPID(celsius_t t, heater_id_t h) {
} }
#endif #endif
void Goto_LockScreen() { void Goto_LockScreen() { DWIN_LockScreen(true); }
DWIN_LockScreen(true);
}
#if HAS_HOME_OFFSET #if HAS_HOME_OFFSET
void ApplyHomeOffset() { set_home_offset(HMI_value.axis, HMI_value.Value / MINUNITMULT); } void ApplyHomeOffset() { set_home_offset(HMI_value.axis, HMI_value.Value / MINUNITMULT); }
@ -2327,6 +2283,7 @@ void SetSpeed() { SetPIntOnClick(MIN_PRINT_SPEED, MAX_PRINT_SPEED); }
#endif #endif
#if ENABLED(ADVANCED_PAUSE_FEATURE) #if ENABLED(ADVANCED_PAUSE_FEATURE)
void ChangeFilament() { void ChangeFilament() {
HMI_SaveProcessID(NothingToDo); HMI_SaveProcessID(NothingToDo);
queue.inject_P(PSTR("M600 B2")); queue.inject_P(PSTR("M600 B2"));
@ -2348,7 +2305,8 @@ void SetSpeed() { SetPIntOnClick(MIN_PRINT_SPEED, MAX_PRINT_SPEED); }
queue.inject_P(PSTR("M701 Z20")); queue.inject_P(PSTR("M701 Z20"));
} }
#endif #endif
#endif
#endif // ADVANCED_PAUSE_FEATURE
void SetFlow() { SetPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW); } void SetFlow() { SetPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW); }
@ -2414,6 +2372,7 @@ void LevBedBL() { LevBed(3); }
void LevBedC () { LevBed(4); } void LevBedC () { LevBed(4); }
#if ENABLED(MESH_BED_LEVELING) #if ENABLED(MESH_BED_LEVELING)
void ManualMeshStart(){ void ManualMeshStart(){
ui.set_status_P(GET_TEXT(MSG_UBL_BUILD_MESH_MENU)); ui.set_status_P(GET_TEXT(MSG_UBL_BUILD_MESH_MENU));
gcode.process_subcommands_now_P(PSTR("G28 XYO\nG28 Z\nM211 S0\nG29S1")); gcode.process_subcommands_now_P(PSTR("G28 XYO\nG28 Z\nM211 S0\nG29S1"));
@ -2443,7 +2402,8 @@ void LevBedC () { LevBed(4); }
ui.set_status_P(GET_TEXT(MSG_UBL_STORAGE_MESH_MENU)); ui.set_status_P(GET_TEXT(MSG_UBL_STORAGE_MESH_MENU));
queue.inject_P(PSTR("M211 S1\nM500")); queue.inject_P(PSTR("M211 S1\nM500"));
} }
#endif
#endif // MESH_BED_LEVELING
#if HAS_PREHEAT #if HAS_PREHEAT
#if HAS_HOTEND #if HAS_HOTEND
@ -2516,6 +2476,7 @@ void SetStepsZ() { HMI_value.axis = Z_AXIS, SetPFloatOnClick( MIN_STEP, MAX_STEP
SetFloatOnClick(0, 1000, 2, value, ApplyPIDd); SetFloatOnClick(0, 1000, 2, value, ApplyPIDd);
} }
#endif #endif
// Menuitem Drawing functions ================================================= // Menuitem Drawing functions =================================================
void onDrawMenuItem(MenuItemClass* menuitem, int8_t line) { void onDrawMenuItem(MenuItemClass* menuitem, int8_t line) {
@ -2721,7 +2682,6 @@ void onDrawGetColorItem(MenuItemClass* menuitem, int8_t line) {
void onDrawPIDi(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, unscalePID_i(*(float*)static_cast<MenuItemPtrClass*>(menuitem)->value)); } void onDrawPIDi(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, unscalePID_i(*(float*)static_cast<MenuItemPtrClass*>(menuitem)->value)); }
void onDrawPIDd(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, unscalePID_d(*(float*)static_cast<MenuItemPtrClass*>(menuitem)->value)); } void onDrawPIDd(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, unscalePID_d(*(float*)static_cast<MenuItemPtrClass*>(menuitem)->value)); }
void onDrawSpeedItem(MenuItemClass* menuitem, int8_t line) { void onDrawSpeedItem(MenuItemClass* menuitem, int8_t line) {
if (HMI_IsChinese()) menuitem->SetFrame(1, 116, 164, 171, 176); if (HMI_IsChinese()) menuitem->SetFrame(1, 116, 164, 171, 176);
onDrawPIntMenu(menuitem, line); onDrawPIntMenu(menuitem, line);
@ -2748,30 +2708,6 @@ void onDrawSpeedItem(MenuItemClass* menuitem, int8_t line) {
} }
#endif #endif
void onDrawSpeed(MenuItemClass* menuitem, int8_t line) {
if (HMI_IsChinese()) menuitem->SetFrame(1, 173, 133, 228, 147);
onDrawSubMenu(menuitem, line);
}
void onDrawAcc(MenuItemClass* menuitem, int8_t line) {
if (HMI_IsChinese()) {
menuitem->SetFrame(1, 173, 133, 200, 147);
DWIN_Frame_AreaCopy(1, 28, 149, 69, 161, LBLX + 27, MBASE(line) + 1); // ...Acceleration
}
onDrawSubMenu(menuitem, line);
}
#if HAS_CLASSIC_JERK
void onDrawJerk(MenuItemClass* menuitem, int8_t line) {
if (HMI_IsChinese()) {
menuitem->SetFrame(1, 173, 133, 200, 147);
DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(line) + 1); // ...
DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 54, MBASE(line)); // ...Jerk
}
onDrawSubMenu(menuitem, line);
}
#endif
void onDrawSteps(MenuItemClass* menuitem, int8_t line) { void onDrawSteps(MenuItemClass* menuitem, int8_t line) {
if (HMI_IsChinese()) menuitem->SetFrame(1, 153, 148, 194, 161); if (HMI_IsChinese()) menuitem->SetFrame(1, 153, 148, 194, 161);
onDrawSubMenu(menuitem, line); onDrawSubMenu(menuitem, line);
@ -2811,7 +2747,13 @@ void onDrawSteps(MenuItemClass* menuitem, int8_t line) {
if (HMI_IsChinese()) menuitem->SetFrame(1, 180, 89, 260, 100); if (HMI_IsChinese()) menuitem->SetFrame(1, 180, 89, 260, 100);
onDrawSubMenu(menuitem,line); onDrawSubMenu(menuitem,line);
} }
#endif // HAS_HOTEND #endif // HAS_PREHEAT
void onDrawSpeed(MenuItemClass* menuitem, int8_t line) {
if (HMI_IsChinese())
menuitem->SetFrame(1, 173, 133, 228, 147);
onDrawSubMenu(menuitem, line);
}
void onDrawMaxSpeedX(MenuItemClass* menuitem, int8_t line) { void onDrawMaxSpeedX(MenuItemClass* menuitem, int8_t line) {
if (HMI_IsChinese()) { if (HMI_IsChinese()) {
@ -2847,6 +2789,14 @@ void onDrawMaxSpeedZ(MenuItemClass* menuitem, int8_t line) {
} }
#endif #endif
void onDrawAcc(MenuItemClass* menuitem, int8_t line) {
if (HMI_IsChinese()) {
menuitem->SetFrame(1, 173, 133, 200, 147);
DWIN_Frame_AreaCopy(1, 28, 149, 69, 161, LBLX + 27, MBASE(line) + 1); // ...Acceleration
}
onDrawSubMenu(menuitem, line);
}
void onDrawMaxAccelX(MenuItemClass* menuitem, int8_t line) { void onDrawMaxAccelX(MenuItemClass* menuitem, int8_t line) {
if (HMI_IsChinese()) { if (HMI_IsChinese()) {
menuitem->SetFrame(1, 173, 133, 200, 147); menuitem->SetFrame(1, 173, 133, 200, 147);
@ -2886,6 +2836,16 @@ void onDrawMaxAccelZ(MenuItemClass* menuitem, int8_t line) {
#endif #endif
#if HAS_CLASSIC_JERK #if HAS_CLASSIC_JERK
void onDrawJerk(MenuItemClass* menuitem, int8_t line) {
if (HMI_IsChinese()) {
menuitem->SetFrame(1, 173, 133, 200, 147);
DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(line) + 1); // ...
DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 54, MBASE(line)); // ...Jerk
}
onDrawSubMenu(menuitem, line);
}
void onDrawMaxJerkX(MenuItemClass* menuitem, int8_t line) { void onDrawMaxJerkX(MenuItemClass* menuitem, int8_t line) {
if (HMI_IsChinese()) { if (HMI_IsChinese()) {
menuitem->SetFrame(1, 173, 133, 200, 147); menuitem->SetFrame(1, 173, 133, 200, 147);
@ -2927,6 +2887,7 @@ void onDrawMaxAccelZ(MenuItemClass* menuitem, int8_t line) {
onDrawPFloatMenu(menuitem, line); onDrawPFloatMenu(menuitem, line);
} }
#endif #endif
#endif // HAS_CLASSIC_JERK #endif // HAS_CLASSIC_JERK
void onDrawStepsX(MenuItemClass* menuitem, int8_t line) { void onDrawStepsX(MenuItemClass* menuitem, int8_t line) {
@ -2986,7 +2947,7 @@ int8_t HMI_GetIntNoDraw(const int32_t lo, const int32_t hi) {
if (encoder_diffState != ENCODER_DIFF_NO) { if (encoder_diffState != ENCODER_DIFF_NO) {
if (Apply_Encoder(encoder_diffState, HMI_value.Value)) { if (Apply_Encoder(encoder_diffState, HMI_value.Value)) {
EncoderRate.enabled = false; EncoderRate.enabled = false;
checkkey = last_checkkey; checkkey = Menu;
return 2; return 2;
} }
LIMIT(HMI_value.Value, lo, hi); LIMIT(HMI_value.Value, lo, hi);
@ -3008,7 +2969,7 @@ int8_t HMI_GetInt(const int32_t lo, const int32_t hi) {
if (Apply_Encoder(encoder_diffState, HMI_value.Value)) { if (Apply_Encoder(encoder_diffState, HMI_value.Value)) {
EncoderRate.enabled = false; EncoderRate.enabled = false;
DWINUI::Draw_Int(HMI_data.Text_Color, HMI_data.Background_Color, 4 , VALX, MBASE(CurrentMenu->line()) - 1, HMI_value.Value); DWINUI::Draw_Int(HMI_data.Text_Color, HMI_data.Background_Color, 4 , VALX, MBASE(CurrentMenu->line()) - 1, HMI_value.Value);
checkkey = last_checkkey; checkkey = Menu;
return 2; return 2;
} }
LIMIT(HMI_value.Value, lo, hi); LIMIT(HMI_value.Value, lo, hi);
@ -3048,7 +3009,7 @@ void HMI_SetPInt() {
} else if (HMI_value.LiveUpdate != nullptr) HMI_value.LiveUpdate(); } else if (HMI_value.LiveUpdate != nullptr) HMI_value.LiveUpdate();
} }
// Get an scaled float value using the encoder // Get a scaled float value using the encoder
// dp: decimal places // dp: decimal places
// lo: scaled low limit // lo: scaled low limit
// hi: scaled high limit // hi: scaled high limit
@ -3062,7 +3023,7 @@ int8_t HMI_GetFloat(uint8_t dp, int32_t lo, int32_t hi) {
if (Apply_Encoder(encoder_diffState, HMI_value.Value)) { if (Apply_Encoder(encoder_diffState, HMI_value.Value)) {
EncoderRate.enabled = false; EncoderRate.enabled = false;
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)); 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));
checkkey = last_checkkey; checkkey = Menu;
return 2; return 2;
} }
LIMIT(HMI_value.Value, lo, hi); LIMIT(HMI_value.Value, lo, hi);
@ -3072,24 +3033,25 @@ int8_t HMI_GetFloat(uint8_t dp, int32_t lo, int32_t hi) {
return 0; return 0;
} }
// Set an scaled float using the encoder // Set a scaled float using the encoder
void HMI_SetFloat() { void HMI_SetFloat() {
int8_t val = HMI_GetFloat(HMI_value.dp, HMI_value.MinValue, HMI_value.MaxValue); const int8_t val = HMI_GetFloat(HMI_value.dp, HMI_value.MinValue, HMI_value.MaxValue);
switch (val) { switch (val) {
case 0: return; break; case 0: return;
case 1: if (HMI_value.LiveUpdate != nullptr) HMI_value.LiveUpdate(); break; case 1: if (HMI_value.LiveUpdate != nullptr) HMI_value.LiveUpdate(); break;
case 2: if (HMI_value.Apply != nullptr) HMI_value.Apply(); break; case 2: if (HMI_value.Apply != nullptr) HMI_value.Apply(); break;
} }
} }
// Set an scaled float pointer variable using the encoder // Set a scaled float pointer variable using the encoder
void HMI_SetPFloat() { void HMI_SetPFloat() {
int8_t val = HMI_GetFloat(HMI_value.dp, HMI_value.MinValue, HMI_value.MaxValue); const int8_t val = HMI_GetFloat(HMI_value.dp, HMI_value.MinValue, HMI_value.MaxValue);
if (!val) return; if (!val) return;
else if (val == 2) { // Apply if (val == 2) { // Apply
*HMI_value.P_Float = HMI_value.Value / POW(10, HMI_value.dp); *HMI_value.P_Float = HMI_value.Value / POW(10, HMI_value.dp);
if (HMI_value.Apply != nullptr) HMI_value.Apply(); if (HMI_value.Apply != nullptr) HMI_value.Apply();
} else if (HMI_value.LiveUpdate != nullptr) HMI_value.LiveUpdate(); }
else if (HMI_value.LiveUpdate != nullptr) HMI_value.LiveUpdate();
} }
// Menu Creation and Drawing functions ====================================================== // Menu Creation and Drawing functions ======================================================
@ -3097,13 +3059,8 @@ void HMI_SetPFloat() {
void SetMenuTitle(frame_rect_t cn, frame_rect_t en, const __FlashStringHelper* text) { void SetMenuTitle(frame_rect_t cn, frame_rect_t en, const __FlashStringHelper* text) {
if (HMI_IsChinese() && (cn.w != 0)) if (HMI_IsChinese() && (cn.w != 0))
CurrentMenu->MenuTitle.SetFrame(cn.x, cn.y, cn.w, cn.h); CurrentMenu->MenuTitle.SetFrame(cn.x, cn.y, cn.w, cn.h);
else { else
#ifdef USE_STRING_HEADINGS
CurrentMenu->MenuTitle.SetCaption(text); CurrentMenu->MenuTitle.SetCaption(text);
#else
if (en.w != 0) CurrentMenu->MenuTitle.SetFrame(en.x, en.y, en.w, en.h);
#endif
}
} }
void Draw_Prepare_Menu() { void Draw_Prepare_Menu() {
@ -3301,7 +3258,8 @@ void Draw_Move_Menu() {
} }
CurrentMenu->Draw(); CurrentMenu->Draw();
} }
#endif #endif // HAS_FILAMENT_SENSOR
void Draw_SelectColors_Menu() { void Draw_SelectColors_Menu() {
checkkey = Menu; checkkey = Menu;
if (SelectColorMenu == nullptr) SelectColorMenu = new MenuClass(); if (SelectColorMenu == nullptr) SelectColorMenu = new MenuClass();
@ -3441,6 +3399,7 @@ void Draw_Motion_Menu() {
#endif #endif
#if HAS_PREHEAT #if HAS_PREHEAT
void Draw_Preheat_Menu(frame_rect_t cn, frame_rect_t en, const __FlashStringHelper* text) { void Draw_Preheat_Menu(frame_rect_t cn, frame_rect_t en, const __FlashStringHelper* text) {
checkkey = Menu; checkkey = Menu;
if (CurrentMenu != PreheatMenu) { if (CurrentMenu != PreheatMenu) {
@ -3485,7 +3444,7 @@ void Draw_Motion_Menu() {
} }
#endif #endif
#endif #endif // HAS_PREHEAT
void Draw_Temperature_Menu() { void Draw_Temperature_Menu() {
checkkey = Menu; checkkey = Menu;
@ -3653,5 +3612,4 @@ void Draw_Steps_Menu() {
} }
#endif #endif
#endif // DWIN_CREALITY_LCD_ENHANCED #endif // DWIN_CREALITY_LCD_ENHANCED

View File

@ -157,15 +157,9 @@ void Popup_Window_Resume();
void HMI_SDCardInit(); void HMI_SDCardInit();
void HMI_SDCardUpdate(); void HMI_SDCardUpdate();
// Main Process
//void Icon_print();
//void Icon_control();
//void Icon_leveling(bool value);
// Other // Other
void Goto_PrintProcess(); void Goto_PrintProcess();
void Goto_Main_Menu(); void Goto_Main_Menu();
void update_variable();
void Draw_Select_Highlight(const bool sel); void Draw_Select_Highlight(const bool sel);
void Draw_Status_Area(const bool with_update); // Status Area void Draw_Status_Area(const bool with_update); // Status Area
void Draw_Main_Area(); // Redraw main area; void Draw_Main_Area(); // Redraw main area;
@ -178,19 +172,15 @@ void HMI_ReturnScreen(); // Return to previous screen before popups
void ApplyExtMinT(); void ApplyExtMinT();
void HMI_SetLanguageCache(); // Set the languaje image cache void HMI_SetLanguageCache(); // Set the languaje image cache
//void HMI_Leveling(); // Level the page
//void HMI_LevBedCorners(); // Tramming menu
//void HMI_Info(); // Information menu
void HMI_Init(); void HMI_Init();
void HMI_Popup(); void HMI_Popup();
void HMI_SaveProcessID(const uint8_t id); void HMI_SaveProcessID(const uint8_t id);
void HMI_AudioFeedback(const bool success=true); void HMI_AudioFeedback(const bool success=true);
void EachMomentUpdate();
void update_variable();
void DWIN_HandleScreen();
void DWIN_Startup(); void DWIN_Startup();
void DWIN_Update(); void DWIN_Update();
void EachMomentUpdate();
void DWIN_HandleScreen();
void DWIN_DrawStatusLine(const uint16_t color, const uint16_t bgcolor, const char *text); void DWIN_DrawStatusLine(const uint16_t color, const uint16_t bgcolor, const char *text);
void DWIN_StatusChanged(const char * const text); void DWIN_StatusChanged(const char * const text);
void DWIN_StatusChanged_P(PGM_P const text); void DWIN_StatusChanged_P(PGM_P const text);

View File

@ -141,15 +141,24 @@ constexpr float default_steps[] = DEFAULT_AXIS_STEPS_PER_UNIT;
constexpr float default_max_jerk[] = { DEFAULT_XJERK, DEFAULT_YJERK, DEFAULT_ZJERK, DEFAULT_EJERK }; constexpr float default_max_jerk[] = { DEFAULT_XJERK, DEFAULT_YJERK, DEFAULT_ZJERK, DEFAULT_EJERK };
#endif #endif
uint8_t active_menu = MainMenu; enum SelectItem : uint8_t {
uint8_t last_menu = MainMenu; PAGE_PRINT = 0,
uint8_t selection = 0; PAGE_PREPARE,
uint8_t last_selection = 0; PAGE_CONTROL,
PAGE_INFO_LEVELING,
PAGE_COUNT,
PRINT_SETUP = 0,
PRINT_PAUSE_RESUME,
PRINT_STOP,
PRINT_COUNT
};
uint8_t active_menu = MainMenu, last_menu = MainMenu;
uint8_t selection = 0, last_selection = 0;
uint8_t scrollpos = 0; uint8_t scrollpos = 0;
uint8_t process = Main; uint8_t process = Main, last_process = Main;
uint8_t last_process = Main; PopupID popup, last_popup;
PopupID popup;
PopupID last_popup;
void (*funcpointer)() = nullptr; void (*funcpointer)() = nullptr;
void *valuepointer = nullptr; void *valuepointer = nullptr;
@ -4208,7 +4217,7 @@ void CrealityDWINClass::Confirm_Handler(PopupID popupid) {
void CrealityDWINClass::Main_Menu_Control() { void CrealityDWINClass::Main_Menu_Control() {
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze(); ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_NO) return;
if (encoder_diffState == ENCODER_DIFF_CW && selection < 3) { if (encoder_diffState == ENCODER_DIFF_CW && selection < PAGE_COUNT - 1) {
selection++; // Select Down selection++; // Select Down
Main_Menu_Icons(); Main_Menu_Icons();
} }
@ -4218,10 +4227,10 @@ void CrealityDWINClass::Main_Menu_Control() {
} }
else if (encoder_diffState == ENCODER_DIFF_ENTER) else if (encoder_diffState == ENCODER_DIFF_ENTER)
switch (selection) { switch (selection) {
case 0: card.mount(); Draw_SD_List(); break; case PAGE_PRINT: card.mount(); Draw_SD_List(); break;
case 1: Draw_Menu(Prepare); break; case PAGE_PREPARE: Draw_Menu(Prepare); break;
case 2: Draw_Menu(Control); break; case PAGE_CONTROL: Draw_Menu(Control); break;
case 3: Draw_Menu(TERN(HAS_MESH, Leveling, InfoMain)); break; case PAGE_INFO_LEVELING: Draw_Menu(TERN(HAS_MESH, Leveling, InfoMain)); break;
} }
DWIN_UpdateLCD(); DWIN_UpdateLCD();
} }
@ -4449,7 +4458,7 @@ void CrealityDWINClass::File_Control() {
void CrealityDWINClass::Print_Screen_Control() { void CrealityDWINClass::Print_Screen_Control() {
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze(); ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
if (encoder_diffState == ENCODER_DIFF_NO) return; if (encoder_diffState == ENCODER_DIFF_NO) return;
if (encoder_diffState == ENCODER_DIFF_CW && selection < 2) { if (encoder_diffState == ENCODER_DIFF_CW && selection < PRINT_COUNT - 1) {
selection++; // Select Down selection++; // Select Down
Print_Screen_Icons(); Print_Screen_Icons();
} }
@ -4459,11 +4468,11 @@ void CrealityDWINClass::Print_Screen_Control() {
} }
else if (encoder_diffState == ENCODER_DIFF_ENTER) { else if (encoder_diffState == ENCODER_DIFF_ENTER) {
switch (selection) { switch (selection) {
case 0: case PRINT_SETUP:
Draw_Menu(Tune); Draw_Menu(Tune);
Update_Status_Bar(true); Update_Status_Bar(true);
break; break;
case 1: case PRINT_PAUSE_RESUME:
if (paused) { if (paused) {
if (sdprint) { if (sdprint) {
wait_for_user = false; wait_for_user = false;
@ -4493,9 +4502,7 @@ void CrealityDWINClass::Print_Screen_Control() {
else else
Popup_Handler(Pause); Popup_Handler(Pause);
break; break;
case 2: case PRINT_STOP: Popup_Handler(Stop); break;
Popup_Handler(Stop);
break;
} }
} }
DWIN_UpdateLCD(); DWIN_UpdateLCD();