🩹 Fix DWIN Enhanced Tune menu during homing (#22773)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
This commit is contained in:
parent
1386e78369
commit
84d1619127
@ -30,6 +30,9 @@
|
||||
|
||||
#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)
|
||||
#define HAS_ONESTEP_LEVELING 1
|
||||
#endif
|
||||
@ -141,6 +144,17 @@ millis_t dwin_heat_time = 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 {
|
||||
uint8_t now, last;
|
||||
void set(uint8_t v) { now = last = v; }
|
||||
@ -235,7 +249,7 @@ void ICON_Print() {
|
||||
{ 1, { 417, 449 }, 30, 14 },
|
||||
{ 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 },
|
||||
{ 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 },
|
||||
{ 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 },
|
||||
{ 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 },
|
||||
{ 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 },
|
||||
{ 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 },
|
||||
{ 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 },
|
||||
{ 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() {
|
||||
@ -338,7 +352,7 @@ void ICON_Stop() {
|
||||
{ 196, { 417, 449 }, 29, 14 },
|
||||
{ 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() {
|
||||
@ -467,6 +481,7 @@ inline bool Apply_Encoder(const ENCODER_DiffState &encoder_diffState, T &valref)
|
||||
//
|
||||
// Draw Menus
|
||||
//
|
||||
#define CASE_BACK 0
|
||||
|
||||
#define MOTION_CASE_RATE 1
|
||||
#define MOTION_CASE_ACCEL 2
|
||||
@ -759,7 +774,7 @@ void Draw_Prepare_Menu() {
|
||||
#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_DISA)) Item_Prepare_Disable(PSCROL(PREPARE_CASE_DISA)); // Disable Stepper
|
||||
if (PVISI(PREPARE_CASE_HOME)) Item_Prepare_Home(PSCROL(PREPARE_CASE_HOME)); // Auto Home
|
||||
@ -775,7 +790,7 @@ void Draw_Prepare_Menu() {
|
||||
#endif
|
||||
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
|
||||
}
|
||||
|
||||
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_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_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 icons and lines
|
||||
@ -977,8 +992,8 @@ void Draw_Tune_Menu() {
|
||||
#endif
|
||||
}
|
||||
|
||||
Draw_Back_First(select_tune.now == 0);
|
||||
if (select_tune.now) Draw_Menu_Cursor(select_tune.now);
|
||||
Draw_Back_First(select_tune.now == CASE_BACK);
|
||||
if (select_tune.now != CASE_BACK) Draw_Menu_Cursor(select_tune.now);
|
||||
|
||||
Draw_Menu_Line(TUNE_CASE_SPEED, ICON_Speed);
|
||||
Draw_Edit_Integer3(TUNE_CASE_SPEED, feedrate_percentage);
|
||||
@ -1042,8 +1057,8 @@ void Draw_Motion_Menu() {
|
||||
#endif
|
||||
}
|
||||
|
||||
Draw_Back_First(select_motion.now == 0);
|
||||
if (select_motion.now) Draw_Menu_Cursor(select_motion.now);
|
||||
Draw_Back_First(select_motion.now == CASE_BACK);
|
||||
if (select_motion.now != CASE_BACK) Draw_Menu_Cursor(select_motion.now);
|
||||
|
||||
uint8_t i = 0;
|
||||
#define _MOTION_ICON(N) Draw_Menu_Line(++i, ICON_MaxSpeed + (N) - 1)
|
||||
@ -1179,15 +1194,15 @@ void Popup_window_PauseOrStop() {
|
||||
Clear_Main_Window();
|
||||
Draw_Popup_Bkgd_60();
|
||||
if (HMI_IsChinese()) {
|
||||
if (select_print.now == 1) 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
|
||||
if (select_print.now == PRINT_PAUSE_RESUME) DWIN_Frame_AreaCopy(1, 237, 338, 269, 356, 98, 150); // Pause
|
||||
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_ICON_Show(ICON, ICON_Confirm_C, 26, 280);
|
||||
DWIN_ICON_Show(ICON, ICON_Cancel_C, 146, 280);
|
||||
}
|
||||
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));
|
||||
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));
|
||||
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 == 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_Cancel_E, 146, 280);
|
||||
}
|
||||
@ -1823,7 +1838,7 @@ void MarlinUI::refresh() { /* Nothing to see here */ }
|
||||
|
||||
void Init_SDItem_Shift() {
|
||||
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;
|
||||
}
|
||||
|
||||
@ -2068,45 +2083,45 @@ void HMI_MainMenu() {
|
||||
if (encoder_diffState == ENCODER_DIFF_CW) {
|
||||
if (select_page.inc(4)) {
|
||||
switch (select_page.now) {
|
||||
case 0: ICON_Print(); break;
|
||||
case 1: ICON_Print(); ICON_Prepare(); break;
|
||||
case 2: ICON_Prepare(); ICON_Control(); break;
|
||||
case 3: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
|
||||
case PAGE_PRINT: ICON_Print(); break;
|
||||
case PAGE_PREPARE: ICON_Print(); ICON_Prepare(); break;
|
||||
case PAGE_CONTROL: ICON_Prepare(); ICON_Control(); break;
|
||||
case PAGE_INFO_LEVELING: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (encoder_diffState == ENCODER_DIFF_CCW) {
|
||||
if (select_page.dec()) {
|
||||
switch (select_page.now) {
|
||||
case 0: ICON_Print(); ICON_Prepare(); break;
|
||||
case 1: ICON_Prepare(); ICON_Control(); break;
|
||||
case 2: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
|
||||
case 3: TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
|
||||
case PAGE_PRINT: ICON_Print(); ICON_Prepare(); break;
|
||||
case PAGE_PREPARE: ICON_Prepare(); ICON_Control(); break;
|
||||
case PAGE_CONTROL: ICON_Control(); 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) {
|
||||
switch (select_page.now) {
|
||||
case 0: // Print File
|
||||
case PAGE_PRINT:
|
||||
checkkey = SelectFile;
|
||||
Draw_Print_File_Menu();
|
||||
break;
|
||||
|
||||
case 1: // Prepare
|
||||
case PAGE_PREPARE:
|
||||
checkkey = Prepare;
|
||||
select_prepare.reset();
|
||||
index_prepare = MROWS;
|
||||
Draw_Prepare_Menu();
|
||||
break;
|
||||
|
||||
case 2: // Control
|
||||
case PAGE_CONTROL:
|
||||
checkkey = Control;
|
||||
select_control.reset();
|
||||
index_control = MROWS;
|
||||
Draw_Control_Menu();
|
||||
break;
|
||||
|
||||
case 3: // Leveling or Info
|
||||
case PAGE_INFO_LEVELING:
|
||||
#if HAS_ONESTEP_LEVELING
|
||||
checkkey = Leveling;
|
||||
HMI_Leveling();
|
||||
@ -2196,7 +2211,7 @@ void HMI_SelectFile() {
|
||||
}
|
||||
}
|
||||
else if (encoder_diffState == ENCODER_DIFF_ENTER) {
|
||||
if (select_file.now == 0) { // Back
|
||||
if (select_file.now == CASE_BACK) { // Back
|
||||
select_page.set(0);
|
||||
Goto_MainMenu();
|
||||
}
|
||||
@ -2257,43 +2272,32 @@ void HMI_Printing() {
|
||||
if (encoder_diffState == ENCODER_DIFF_CW) {
|
||||
if (select_print.inc(3)) {
|
||||
switch (select_print.now) {
|
||||
case 0: ICON_Tune(); break;
|
||||
case 1:
|
||||
ICON_Tune();
|
||||
ICON_ResumeOrPause();
|
||||
break;
|
||||
case 2:
|
||||
ICON_ResumeOrPause();
|
||||
ICON_Stop();
|
||||
break;
|
||||
case PRINT_SETUP: ICON_Tune(); break;
|
||||
case PRINT_PAUSE_RESUME: ICON_Tune(); ICON_ResumeOrPause(); break;
|
||||
case PRINT_STOP: ICON_ResumeOrPause(); ICON_Stop(); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (encoder_diffState == ENCODER_DIFF_CCW) {
|
||||
if (select_print.dec()) {
|
||||
switch (select_print.now) {
|
||||
case 0:
|
||||
ICON_Tune();
|
||||
ICON_ResumeOrPause();
|
||||
break;
|
||||
case 1:
|
||||
ICON_ResumeOrPause();
|
||||
ICON_Stop();
|
||||
break;
|
||||
case 2: ICON_Stop(); break;
|
||||
case PRINT_SETUP: ICON_Tune(); ICON_ResumeOrPause(); break;
|
||||
case PRINT_PAUSE_RESUME: ICON_ResumeOrPause(); ICON_Stop(); break;
|
||||
case PRINT_STOP: ICON_Stop(); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (encoder_diffState == ENCODER_DIFF_ENTER) {
|
||||
switch (select_print.now) {
|
||||
case 0: // Tune
|
||||
case PRINT_SETUP:
|
||||
checkkey = Tune;
|
||||
HMI_ValueStruct.show_mode = 0;
|
||||
select_tune.reset();
|
||||
index_tune = MROWS;
|
||||
Draw_Tune_Menu();
|
||||
break;
|
||||
case 1: // Pause
|
||||
|
||||
case PRINT_PAUSE_RESUME:
|
||||
if (HMI_flag.pause_flag) {
|
||||
ICON_Pause();
|
||||
|
||||
@ -2317,7 +2321,7 @@ void HMI_Printing() {
|
||||
}
|
||||
break;
|
||||
|
||||
case 2: // Stop
|
||||
case PRINT_STOP:
|
||||
HMI_flag.select_flag = true;
|
||||
checkkey = Print_window;
|
||||
Popup_window_PauseOrStop();
|
||||
@ -2339,14 +2343,14 @@ void HMI_PauseOrStop() {
|
||||
else if (encoder_diffState == ENCODER_DIFF_CCW)
|
||||
Draw_Select_Highlight(true);
|
||||
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) {
|
||||
HMI_flag.pause_action = true;
|
||||
queue.inject_P(PSTR("M25"));
|
||||
}
|
||||
Goto_PrintProcess();
|
||||
}
|
||||
else if (select_print.now == 2) { // stop window
|
||||
else if (select_print.now == PRINT_STOP) {
|
||||
if (HMI_flag.select_flag) {
|
||||
checkkey = Back_Main;
|
||||
wait_for_heatup = wait_for_user = false; // Stop waiting for heating/user
|
||||
@ -2395,8 +2399,8 @@ void Draw_Move_Menu() {
|
||||
#endif
|
||||
}
|
||||
|
||||
Draw_Back_First(select_axis.now == 0);
|
||||
if (select_axis.now) Draw_Menu_Cursor(select_axis.now);
|
||||
Draw_Back_First(select_axis.now == CASE_BACK);
|
||||
if (select_axis.now != CASE_BACK) Draw_Menu_Cursor(select_axis.now);
|
||||
|
||||
// Draw separators and icons
|
||||
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
|
||||
}
|
||||
|
||||
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 HAS_ONESTEP_LEVELING
|
||||
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 (AVISI(ADVSET_CASE_PWRLOSSR)) Item_Adv_PLR(ASCROL(ADVSET_CASE_PWRLOSSR)); // Power-loss recovery
|
||||
#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) {
|
||||
@ -2576,18 +2580,18 @@ void Draw_HomeOff_Menu() {
|
||||
DWIN_Frame_TitleCopy(1, 401, 91, 12); // "Home Offsets"
|
||||
#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_Y(2); // "Home Offset Y"
|
||||
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
|
||||
|
||||
void Draw_ProbeOff_Menu() {
|
||||
Clear_Main_Window();
|
||||
Draw_Back_First(select_item.now == 0);
|
||||
Draw_Back_First(select_item.now == CASE_BACK);
|
||||
if (false && HMI_IsChinese()) {
|
||||
// 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(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
|
||||
|
||||
@ -2682,11 +2686,11 @@ void HMI_Prepare() {
|
||||
}
|
||||
else if (encoder_diffState == ENCODER_DIFF_ENTER) {
|
||||
switch (select_prepare.now) {
|
||||
case 0: // Back
|
||||
case CASE_BACK:
|
||||
select_page.set(1);
|
||||
Goto_MainMenu();
|
||||
break;
|
||||
case PREPARE_CASE_MOVE: // Axis move
|
||||
case PREPARE_CASE_MOVE:
|
||||
checkkey = AxisMove;
|
||||
select_axis.reset();
|
||||
Draw_Move_Menu();
|
||||
@ -2699,9 +2703,9 @@ void HMI_Prepare() {
|
||||
Draw_Edit_Signed_Float3(4, HMI_ValueStruct.Move_E_scaled);
|
||||
#endif
|
||||
break;
|
||||
case PREPARE_CASE_DISA: // Disable steppers
|
||||
queue.inject_P(PSTR("M84"));
|
||||
break;
|
||||
|
||||
case PREPARE_CASE_DISA: queue.inject_P(PSTR("M84")); break;
|
||||
|
||||
case PREPARE_CASE_HOME: // Homing
|
||||
checkkey = Last_Prepare;
|
||||
index_prepare = MROWS;
|
||||
@ -2709,7 +2713,7 @@ void HMI_Prepare() {
|
||||
Popup_Window_Home();
|
||||
break;
|
||||
#if HAS_ZOFFSET_ITEM
|
||||
case PREPARE_CASE_ZOFF: // Z-offset
|
||||
case PREPARE_CASE_ZOFF:
|
||||
#if EITHER(HAS_BED_PROBE, BABYSTEPPING)
|
||||
checkkey = Homeoffset;
|
||||
HMI_ValueStruct.show_mode = -4;
|
||||
@ -2724,24 +2728,24 @@ void HMI_Prepare() {
|
||||
break;
|
||||
#endif
|
||||
#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_HEATED_BED, thermalManager.setTargetBed(ui.material_preset[0].bed_temp));
|
||||
TERN_(HAS_FAN, thermalManager.set_fan_speed(0, ui.material_preset[0].fan_speed));
|
||||
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_HEATED_BED, thermalManager.setTargetBed(ui.material_preset[1].bed_temp));
|
||||
TERN_(HAS_FAN, thermalManager.set_fan_speed(0, ui.material_preset[1].fan_speed));
|
||||
break;
|
||||
case PREPARE_CASE_COOL: // Cool
|
||||
case PREPARE_CASE_COOL:
|
||||
TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
|
||||
#if HAS_HOTEND || HAS_HEATED_BED
|
||||
thermalManager.disable_all_heaters();
|
||||
#endif
|
||||
break;
|
||||
#endif
|
||||
case PREPARE_CASE_LANG: // Toggle Language
|
||||
case PREPARE_CASE_LANG:
|
||||
HMI_ToggleLanguage();
|
||||
Draw_Prepare_Menu();
|
||||
break;
|
||||
@ -2814,8 +2818,8 @@ void Draw_Temperature_Menu() {
|
||||
#endif
|
||||
}
|
||||
|
||||
Draw_Back_First(select_temp.now == 0);
|
||||
if (select_temp.now) Draw_Menu_Cursor(select_temp.now);
|
||||
Draw_Back_First(select_temp.now == CASE_BACK);
|
||||
if (select_temp.now != CASE_BACK) Draw_Menu_Cursor(select_temp.now);
|
||||
|
||||
// Draw icons and lines
|
||||
uint8_t i = 0;
|
||||
@ -2884,41 +2888,41 @@ void HMI_Control() {
|
||||
}
|
||||
else if (encoder_diffState == ENCODER_DIFF_ENTER) {
|
||||
switch (select_control.now) {
|
||||
case 0: // Back
|
||||
case CASE_BACK:
|
||||
select_page.set(2);
|
||||
Goto_MainMenu();
|
||||
break;
|
||||
case CONTROL_CASE_TEMP: // Temperature
|
||||
case CONTROL_CASE_TEMP:
|
||||
checkkey = TemperatureID;
|
||||
HMI_ValueStruct.show_mode = -1;
|
||||
select_temp.reset();
|
||||
Draw_Temperature_Menu();
|
||||
break;
|
||||
case CONTROL_CASE_MOVE: // Motion
|
||||
case CONTROL_CASE_MOVE:
|
||||
checkkey = Motion;
|
||||
select_motion.reset();
|
||||
Draw_Motion_Menu();
|
||||
break;
|
||||
#if ENABLED(EEPROM_SETTINGS)
|
||||
case CONTROL_CASE_SAVE: { // Write EEPROM
|
||||
case CONTROL_CASE_SAVE: {
|
||||
const bool success = settings.save();
|
||||
HMI_AudioFeedback(success);
|
||||
} break;
|
||||
case CONTROL_CASE_LOAD: { // Read EEPROM
|
||||
case CONTROL_CASE_LOAD: {
|
||||
const bool success = settings.load();
|
||||
HMI_AudioFeedback(success);
|
||||
} break;
|
||||
case CONTROL_CASE_RESET: // Reset EEPROM
|
||||
case CONTROL_CASE_RESET:
|
||||
settings.reset();
|
||||
HMI_AudioFeedback();
|
||||
break;
|
||||
#endif
|
||||
case CONTROL_CASE_ADVSET: // Advanced Settings
|
||||
case CONTROL_CASE_ADVSET:
|
||||
checkkey = AdvSet;
|
||||
select_advset.reset();
|
||||
Draw_AdvancedSettings_Menu();
|
||||
break;
|
||||
case CONTROL_CASE_INFO: // Info
|
||||
case CONTROL_CASE_INFO:
|
||||
checkkey = Info;
|
||||
Draw_Info_Menu();
|
||||
break;
|
||||
@ -2971,7 +2975,7 @@ void HMI_AxisMove() {
|
||||
}
|
||||
else if (encoder_diffState == ENCODER_DIFF_ENTER) {
|
||||
switch (select_axis.now) {
|
||||
case 0: // Back
|
||||
case CASE_BACK:
|
||||
checkkey = Prepare;
|
||||
select_prepare.set(1);
|
||||
index_prepare = MROWS;
|
||||
@ -2997,8 +3001,7 @@ void HMI_AxisMove() {
|
||||
break;
|
||||
#if HAS_HOTEND
|
||||
case 4: // Extruder
|
||||
// window tips
|
||||
#ifdef PREVENT_COLD_EXTRUSION
|
||||
#if ENABLED(PREVENT_COLD_EXTRUSION)
|
||||
if (thermalManager.tooColdToExtrude(0)) {
|
||||
HMI_flag.ETempTooLow_flag = true;
|
||||
Popup_Window_ETempTooLow();
|
||||
@ -3031,14 +3034,14 @@ void HMI_Temperature() {
|
||||
}
|
||||
else if (encoder_diffState == ENCODER_DIFF_ENTER) {
|
||||
switch (select_temp.now) {
|
||||
case 0: // Back
|
||||
case CASE_BACK:
|
||||
checkkey = Control;
|
||||
select_control.set(1);
|
||||
index_control = MROWS;
|
||||
Draw_Control_Menu();
|
||||
break;
|
||||
#if HAS_HOTEND
|
||||
case TEMP_CASE_TEMP: // Nozzle temperature
|
||||
case TEMP_CASE_TEMP:
|
||||
checkkey = ETemp;
|
||||
HMI_ValueStruct.E_Temp = thermalManager.degTargetHotend(0);
|
||||
Draw_Edit_Integer3(1, HMI_ValueStruct.E_Temp, true);
|
||||
@ -3046,7 +3049,7 @@ void HMI_Temperature() {
|
||||
break;
|
||||
#endif
|
||||
#if HAS_HEATED_BED
|
||||
case TEMP_CASE_BED: // Bed temperature
|
||||
case TEMP_CASE_BED:
|
||||
checkkey = BedTemp;
|
||||
HMI_ValueStruct.Bed_Temp = thermalManager.degTargetBed();
|
||||
Draw_Edit_Integer3(2, HMI_ValueStruct.Bed_Temp, true);
|
||||
@ -3054,7 +3057,7 @@ void HMI_Temperature() {
|
||||
break;
|
||||
#endif
|
||||
#if HAS_FAN
|
||||
case TEMP_CASE_FAN: // Fan speed
|
||||
case TEMP_CASE_FAN:
|
||||
checkkey = FanSpeed;
|
||||
HMI_ValueStruct.Fan_speed = thermalManager.fan_speed[0];
|
||||
Draw_Edit_Integer3(3, HMI_ValueStruct.Fan_speed, true);
|
||||
@ -3062,7 +3065,7 @@ void HMI_Temperature() {
|
||||
break;
|
||||
#endif
|
||||
#if HAS_HOTEND
|
||||
case TEMP_CASE_PLA: { // PLA preheat setting
|
||||
case TEMP_CASE_PLA: {
|
||||
checkkey = PLAPreheat;
|
||||
select_PLA.reset();
|
||||
HMI_ValueStruct.show_mode = -2;
|
||||
@ -3458,30 +3461,30 @@ void HMI_Motion() {
|
||||
}
|
||||
else if (encoder_diffState == ENCODER_DIFF_ENTER) {
|
||||
switch (select_motion.now) {
|
||||
case 0: // Back
|
||||
case CASE_BACK:
|
||||
checkkey = Control;
|
||||
select_control.set(CONTROL_CASE_MOVE);
|
||||
index_control = MROWS;
|
||||
Draw_Control_Menu();
|
||||
break;
|
||||
case MOTION_CASE_RATE: // Max speed
|
||||
case MOTION_CASE_RATE:
|
||||
checkkey = MaxSpeed;
|
||||
select_speed.reset();
|
||||
Draw_Max_Speed_Menu();
|
||||
break;
|
||||
case MOTION_CASE_ACCEL: // Max acceleration
|
||||
case MOTION_CASE_ACCEL:
|
||||
checkkey = MaxAcceleration;
|
||||
select_acc.reset();
|
||||
Draw_Max_Accel_Menu();
|
||||
break;
|
||||
#if HAS_CLASSIC_JERK
|
||||
case MOTION_CASE_JERK: // Max jerk
|
||||
case MOTION_CASE_JERK:
|
||||
checkkey = MaxJerk;
|
||||
select_jerk.reset();
|
||||
Draw_Max_Jerk_Menu();
|
||||
break;
|
||||
#endif
|
||||
case MOTION_CASE_STEPS: // Steps per mm
|
||||
case MOTION_CASE_STEPS:
|
||||
checkkey = Step;
|
||||
select_step.reset();
|
||||
Draw_Steps_Menu();
|
||||
@ -3533,7 +3536,7 @@ void HMI_AdvSet() {
|
||||
}
|
||||
else if (encoder_diffState == ENCODER_DIFF_ENTER) {
|
||||
switch (select_advset.now) {
|
||||
case 0: // Back
|
||||
case CASE_BACK:
|
||||
checkkey = Control;
|
||||
select_control.set(CONTROL_CASE_ADVSET);
|
||||
index_control = CONTROL_CASE_ADVSET;
|
||||
@ -3541,7 +3544,7 @@ void HMI_AdvSet() {
|
||||
break;
|
||||
|
||||
#if HAS_HOME_OFFSET
|
||||
case ADVSET_CASE_HOMEOFF: // Home Offsets
|
||||
case ADVSET_CASE_HOMEOFF:
|
||||
checkkey = HomeOff;
|
||||
select_item.reset();
|
||||
HMI_ValueStruct.Home_OffX_scaled = home_offset[X_AXIS] * 10;
|
||||
@ -3552,7 +3555,7 @@ void HMI_AdvSet() {
|
||||
#endif
|
||||
|
||||
#if HAS_ONESTEP_LEVELING
|
||||
case ADVSET_CASE_PROBEOFF: // Probe Offsets
|
||||
case ADVSET_CASE_PROBEOFF:
|
||||
checkkey = ProbeOff;
|
||||
select_item.reset();
|
||||
HMI_ValueStruct.Probe_OffX_scaled = probe.offset.x * 10;
|
||||
@ -3562,21 +3565,21 @@ void HMI_AdvSet() {
|
||||
#endif
|
||||
|
||||
#if HAS_HOTEND
|
||||
case ADVSET_CASE_HEPID: // Nozzle PID Autotune
|
||||
case ADVSET_CASE_HEPID:
|
||||
thermalManager.setTargetHotend(ui.material_preset[0].hotend_temp, 0);
|
||||
thermalManager.PID_autotune(ui.material_preset[0].hotend_temp, H_E0, 10, true);
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if HAS_HEATED_BED
|
||||
case ADVSET_CASE_BEDPID: // Bed PID Autotune
|
||||
case ADVSET_CASE_BEDPID:
|
||||
thermalManager.setTargetBed(ui.material_preset[0].bed_temp);
|
||||
thermalManager.PID_autotune(ui.material_preset[0].bed_temp, H_BED, 10, true);
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if ENABLED(POWER_LOSS_RECOVERY)
|
||||
case ADVSET_CASE_PWRLOSSR: // Power-loss recovery
|
||||
case ADVSET_CASE_PWRLOSSR:
|
||||
recovery.enable(!recovery.enabled);
|
||||
Draw_Checkbox_Line(ADVSET_CASE_PWRLOSSR + MROWS - index_advset, recovery.enabled);
|
||||
break;
|
||||
@ -3603,7 +3606,7 @@ void HMI_AdvSet() {
|
||||
}
|
||||
else if (encoder_diffState == ENCODER_DIFF_ENTER) {
|
||||
switch (select_item.now) {
|
||||
case 0: // Back
|
||||
case CASE_BACK:
|
||||
checkkey = AdvSet;
|
||||
select_advset.set(ADVSET_CASE_HOMEOFF);
|
||||
Draw_AdvancedSettings_Menu();
|
||||
@ -3665,7 +3668,7 @@ void HMI_AdvSet() {
|
||||
}
|
||||
else if (encoder_diffState == ENCODER_DIFF_ENTER) {
|
||||
switch (select_item.now) {
|
||||
case 0: // Back
|
||||
case CASE_BACK:
|
||||
checkkey = AdvSet;
|
||||
select_advset.set(ADVSET_CASE_PROBEOFF);
|
||||
Draw_AdvancedSettings_Menu();
|
||||
@ -3675,7 +3678,7 @@ void HMI_AdvSet() {
|
||||
Draw_Edit_Signed_Float3(1, HMI_ValueStruct.Probe_OffX_scaled, true);
|
||||
EncoderRate.enabled = true;
|
||||
break;
|
||||
case 2: // Probe Offset X
|
||||
case 2: // Probe Offset Y
|
||||
checkkey = ProbeOffY;
|
||||
Draw_Edit_Signed_Float3(2, HMI_ValueStruct.Probe_OffY_scaled, true);
|
||||
EncoderRate.enabled = true;
|
||||
@ -3822,14 +3825,14 @@ void HMI_Tune() {
|
||||
}
|
||||
else if (encoder_diffState == ENCODER_DIFF_ENTER) {
|
||||
switch (select_PLA.now) {
|
||||
case 0: // Back
|
||||
case CASE_BACK:
|
||||
checkkey = TemperatureID;
|
||||
select_temp.now = TEMP_CASE_PLA;
|
||||
HMI_ValueStruct.show_mode = -1;
|
||||
Draw_Temperature_Menu();
|
||||
break;
|
||||
#if HAS_HOTEND
|
||||
case PREHEAT_CASE_TEMP: // Nozzle temperature
|
||||
case PREHEAT_CASE_TEMP:
|
||||
checkkey = ETemp;
|
||||
HMI_ValueStruct.E_Temp = ui.material_preset[0].hotend_temp;
|
||||
Draw_Edit_Integer3(PREHEAT_CASE_TEMP, ui.material_preset[0].hotend_temp, true);
|
||||
@ -3837,7 +3840,7 @@ void HMI_Tune() {
|
||||
break;
|
||||
#endif
|
||||
#if HAS_HEATED_BED
|
||||
case PREHEAT_CASE_BED: // Bed temperature
|
||||
case PREHEAT_CASE_BED:
|
||||
checkkey = BedTemp;
|
||||
HMI_ValueStruct.Bed_Temp = ui.material_preset[0].bed_temp;
|
||||
Draw_Edit_Integer3(PREHEAT_CASE_BED, ui.material_preset[0].bed_temp, true);
|
||||
@ -3845,7 +3848,7 @@ void HMI_Tune() {
|
||||
break;
|
||||
#endif
|
||||
#if HAS_FAN
|
||||
case PREHEAT_CASE_FAN: // Fan speed
|
||||
case PREHEAT_CASE_FAN:
|
||||
checkkey = FanSpeed;
|
||||
HMI_ValueStruct.Fan_speed = ui.material_preset[0].fan_speed;
|
||||
Draw_Edit_Integer3(PREHEAT_CASE_FAN, ui.material_preset[0].fan_speed, true);
|
||||
@ -3853,7 +3856,7 @@ void HMI_Tune() {
|
||||
break;
|
||||
#endif
|
||||
#if ENABLED(EEPROM_SETTINGS)
|
||||
case 4: { // Save PLA configuration
|
||||
case PREHEAT_CASE_SAVE: {
|
||||
const bool success = settings.save();
|
||||
HMI_AudioFeedback(success);
|
||||
} break;
|
||||
@ -3878,14 +3881,14 @@ void HMI_Tune() {
|
||||
}
|
||||
else if (encoder_diffState == ENCODER_DIFF_ENTER) {
|
||||
switch (select_ABS.now) {
|
||||
case 0: // Back
|
||||
case CASE_BACK:
|
||||
checkkey = TemperatureID;
|
||||
select_temp.now = TEMP_CASE_ABS;
|
||||
HMI_ValueStruct.show_mode = -1;
|
||||
Draw_Temperature_Menu();
|
||||
break;
|
||||
#if HAS_HOTEND
|
||||
case PREHEAT_CASE_TEMP: // Set nozzle temperature
|
||||
case PREHEAT_CASE_TEMP:
|
||||
checkkey = ETemp;
|
||||
HMI_ValueStruct.E_Temp = ui.material_preset[1].hotend_temp;
|
||||
Draw_Edit_Integer3(PREHEAT_CASE_TEMP, ui.material_preset[1].hotend_temp, true);
|
||||
@ -3893,7 +3896,7 @@ void HMI_Tune() {
|
||||
break;
|
||||
#endif
|
||||
#if HAS_HEATED_BED
|
||||
case PREHEAT_CASE_BED: // Set bed temperature
|
||||
case PREHEAT_CASE_BED:
|
||||
checkkey = BedTemp;
|
||||
HMI_ValueStruct.Bed_Temp = ui.material_preset[1].bed_temp;
|
||||
Draw_Edit_Integer3(PREHEAT_CASE_BED, ui.material_preset[1].bed_temp, true);
|
||||
@ -3901,7 +3904,7 @@ void HMI_Tune() {
|
||||
break;
|
||||
#endif
|
||||
#if HAS_FAN
|
||||
case PREHEAT_CASE_FAN: // Set fan speed
|
||||
case PREHEAT_CASE_FAN:
|
||||
checkkey = FanSpeed;
|
||||
HMI_ValueStruct.Fan_speed = ui.material_preset[1].fan_speed;
|
||||
Draw_Edit_Integer3(PREHEAT_CASE_FAN, ui.material_preset[1].fan_speed, true);
|
||||
@ -3909,7 +3912,7 @@ void HMI_Tune() {
|
||||
break;
|
||||
#endif
|
||||
#if ENABLED(EEPROM_SETTINGS)
|
||||
case PREHEAT_CASE_SAVE: { // Save ABS configuration
|
||||
case PREHEAT_CASE_SAVE: {
|
||||
const bool success = settings.save();
|
||||
HMI_AudioFeedback(success);
|
||||
} break;
|
||||
|
@ -31,9 +31,6 @@
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
//#define USE_STRING_HEADINGS
|
||||
//#define USE_STRING_TITLES
|
||||
|
||||
#define RECEIVED_NO_DATA 0x00
|
||||
#define RECEIVED_SHAKE_HAND_ACK 0x01
|
||||
|
||||
|
@ -86,9 +86,6 @@
|
||||
|
||||
#define PAUSE_HEAT
|
||||
|
||||
#define USE_STRING_HEADINGS
|
||||
#define USE_STRING_TITLES
|
||||
|
||||
#define MENU_CHAR_LIMIT 24
|
||||
|
||||
// Print speed limit
|
||||
@ -133,8 +130,20 @@ HMI_data_t HMI_data;
|
||||
|
||||
millis_t dwin_heat_time = 0;
|
||||
|
||||
uint8_t checkkey = MainMenu;
|
||||
uint8_t last_checkkey = MainMenu;
|
||||
uint8_t checkkey = MainMenu, 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 {
|
||||
uint8_t now, last;
|
||||
@ -266,7 +275,7 @@ void ICON_Print() {
|
||||
{ 1, { 417, 449 }, 30, 14 },
|
||||
{ 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 },
|
||||
{ 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 },
|
||||
{ 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 },
|
||||
{ 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 },
|
||||
{ 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 },
|
||||
{ 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 },
|
||||
{ 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 },
|
||||
{ 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 },
|
||||
{ 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) {
|
||||
@ -537,14 +546,14 @@ void Popup_window_PauseOrStop() {
|
||||
if (HMI_IsChinese()) {
|
||||
DWINUI::ClearMenuArea();
|
||||
Draw_Popup_Bkgd_60();
|
||||
if (select_print.now == 1) 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);
|
||||
if (select_print.now == PRINT_PAUSE_RESUME) DWIN_Frame_AreaCopy(1, 237, 338, 269, 356, 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);
|
||||
DWINUI::Draw_Icon(ICON_Confirm_C, 26, 280);
|
||||
DWINUI::Draw_Icon(ICON_Cancel_C, 146, 280);
|
||||
}
|
||||
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_Cancel_E, 146, 280);
|
||||
}
|
||||
@ -589,16 +598,9 @@ void Draw_Print_Labels() {
|
||||
DWIN_Frame_AreaCopy(1, 65, 72, 128, 86, 176, 173); // Remain
|
||||
}
|
||||
else {
|
||||
#ifdef USE_STRING_TITLES
|
||||
Title.ShowCaption(GET_TEXT(MSG_PRINTING));
|
||||
DWINUI::Draw_String( 46, 173, F("Print Time"));
|
||||
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())
|
||||
Title.FrameCopy(2, 2, 26, 13); // "Home" etc
|
||||
else {
|
||||
#ifdef USE_STRING_HEADINGS
|
||||
else
|
||||
Title.ShowCaption(MACHINE_NAME);
|
||||
#else
|
||||
Title.FrameCopy(0, 2, 40, 11); // "Home"
|
||||
#endif
|
||||
}
|
||||
|
||||
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"
|
||||
}
|
||||
else {
|
||||
#ifdef USE_STRING_HEADINGS
|
||||
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, 146, 151, 254, 161, 82, 175); // "Firmware Version"
|
||||
@ -1098,13 +1091,8 @@ void Draw_Info_Menu() {
|
||||
void Draw_Print_File_Menu() {
|
||||
if (HMI_IsChinese())
|
||||
Title.FrameCopy(0, 31, 56, 14); // "Print file"
|
||||
else {
|
||||
#ifdef USE_STRING_HEADINGS
|
||||
else
|
||||
Title.ShowCaption(GET_TEXT_F(MSG_MEDIA_MENU));
|
||||
#else
|
||||
Title.FrameCopy(52, 31, 86, 11); // "Print file"
|
||||
#endif
|
||||
}
|
||||
Redraw_SD_List();
|
||||
}
|
||||
|
||||
@ -1114,43 +1102,39 @@ void HMI_MainMenu() {
|
||||
if (encoder_diffState == ENCODER_DIFF_NO) return;
|
||||
|
||||
if (encoder_diffState == ENCODER_DIFF_CW) {
|
||||
if (select_page.inc(4)) {
|
||||
if (select_page.inc(PAGE_COUNT)) {
|
||||
switch (select_page.now) {
|
||||
case 0: ICON_Print(); break;
|
||||
case 1: ICON_Print(); ICON_Prepare(); break;
|
||||
case 2: ICON_Prepare(); ICON_Control(); break;
|
||||
case 3: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
|
||||
case PAGE_PRINT: ICON_Print(); break;
|
||||
case PAGE_PREPARE: ICON_Print(); ICON_Prepare(); break;
|
||||
case PAGE_CONTROL: ICON_Prepare(); ICON_Control(); break;
|
||||
case PAGE_INFO_LEVELING: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (encoder_diffState == ENCODER_DIFF_CCW) {
|
||||
if (select_page.dec()) {
|
||||
switch (select_page.now) {
|
||||
case 0: ICON_Print(); ICON_Prepare(); break;
|
||||
case 1: ICON_Prepare(); ICON_Control(); break;
|
||||
case 2: ICON_Control(); TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
|
||||
case 3: TERN(HAS_ONESTEP_LEVELING, ICON_Leveling, ICON_StartInfo)(); break;
|
||||
case PAGE_PRINT: ICON_Print(); ICON_Prepare(); break;
|
||||
case PAGE_PREPARE: ICON_Prepare(); ICON_Control(); break;
|
||||
case PAGE_CONTROL: ICON_Control(); 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) {
|
||||
switch (select_page.now) {
|
||||
case 0: // Print File
|
||||
case PAGE_PRINT:
|
||||
checkkey = SelectFile;
|
||||
Draw_Print_File_Menu();
|
||||
break;
|
||||
|
||||
case 1: // Prepare
|
||||
Draw_Prepare_Menu();
|
||||
break;
|
||||
case PAGE_PREPARE: Draw_Prepare_Menu(); break;
|
||||
|
||||
case 2: // Control
|
||||
Draw_Control_Menu();
|
||||
break;
|
||||
case PAGE_CONTROL: Draw_Control_Menu(); break;
|
||||
|
||||
case 3: // Leveling or Info
|
||||
case PAGE_INFO_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
|
||||
checkkey = Info;
|
||||
Draw_Info_Menu();
|
||||
@ -1238,8 +1222,8 @@ void HMI_SelectFile() {
|
||||
}
|
||||
}
|
||||
else if (encoder_diffState == ENCODER_DIFF_ENTER) {
|
||||
if (select_file.now == 0) { // Back
|
||||
select_page.set(0);
|
||||
if (select_file.now == 0) {
|
||||
select_page.set(PAGE_PRINT);
|
||||
Goto_Main_Menu();
|
||||
}
|
||||
else if (hasUpDir && select_file.now == 1) { // CD-Up
|
||||
@ -1276,6 +1260,7 @@ void HMI_SelectFile() {
|
||||
DWIN_Print_Started(true);
|
||||
}
|
||||
}
|
||||
|
||||
HMI_SelectFileExit:
|
||||
DWIN_UpdateLCD();
|
||||
}
|
||||
@ -1286,44 +1271,30 @@ void HMI_Printing() {
|
||||
if (encoder_diffState == ENCODER_DIFF_NO) return;
|
||||
// Avoid flicker by updating only the previous menu
|
||||
if (encoder_diffState == ENCODER_DIFF_CW) {
|
||||
if (select_print.inc(3)) {
|
||||
if (select_print.inc(PRINT_COUNT)) {
|
||||
switch (select_print.now) {
|
||||
case 0: ICON_Tune(); break;
|
||||
case 1:
|
||||
ICON_Tune();
|
||||
ICON_ResumeOrPause();
|
||||
break;
|
||||
case 2:
|
||||
ICON_ResumeOrPause();
|
||||
ICON_Stop();
|
||||
break;
|
||||
case PRINT_SETUP: ICON_Tune(); break;
|
||||
case PRINT_PAUSE_RESUME: ICON_Tune(); ICON_ResumeOrPause(); break;
|
||||
case PRINT_STOP: ICON_ResumeOrPause(); ICON_Stop(); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (encoder_diffState == ENCODER_DIFF_CCW) {
|
||||
if (select_print.dec()) {
|
||||
switch (select_print.now) {
|
||||
case 0:
|
||||
ICON_Tune();
|
||||
ICON_ResumeOrPause();
|
||||
break;
|
||||
case 1:
|
||||
ICON_ResumeOrPause();
|
||||
ICON_Stop();
|
||||
break;
|
||||
case 2: ICON_Stop(); break;
|
||||
case PRINT_SETUP: ICON_Tune(); ICON_ResumeOrPause(); break;
|
||||
case PRINT_PAUSE_RESUME: ICON_ResumeOrPause(); ICON_Stop(); break;
|
||||
case PRINT_STOP: ICON_Stop(); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (encoder_diffState == ENCODER_DIFF_ENTER) {
|
||||
switch (select_print.now) {
|
||||
case 0: // Tune
|
||||
Draw_Tune_Menu();
|
||||
break;
|
||||
case 1: // Pause
|
||||
case PRINT_SETUP: Draw_Tune_Menu(); break;
|
||||
case PRINT_PAUSE_RESUME:
|
||||
if (HMI_flag.pause_flag) {
|
||||
ICON_Pause();
|
||||
#ifndef ADVANCED_PAUSE_FEATURE
|
||||
#if DISABLED(ADVANCED_PAUSE_FEATURE)
|
||||
char cmd[40];
|
||||
cmd[0] = '\0';
|
||||
#if BOTH(HAS_HEATED_BED, PAUSE_HEAT)
|
||||
@ -1346,7 +1317,7 @@ void HMI_Printing() {
|
||||
}
|
||||
break;
|
||||
|
||||
case 2: // Stop
|
||||
case PRINT_STOP:
|
||||
HMI_flag.select_flag = true;
|
||||
checkkey = PauseOrStop;
|
||||
Popup_window_PauseOrStop();
|
||||
@ -1378,7 +1349,7 @@ void HMI_PauseOrStop() {
|
||||
else if (encoder_diffState == ENCODER_DIFF_CCW)
|
||||
Draw_Select_Highlight(true);
|
||||
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) {
|
||||
HMI_flag.pause_action = true;
|
||||
ICON_Resume();
|
||||
@ -1389,7 +1360,7 @@ void HMI_PauseOrStop() {
|
||||
}
|
||||
Goto_PrintProcess();
|
||||
}
|
||||
else if (select_print.now == 2) { // stop window
|
||||
else if (select_print.now == PRINT_STOP) {
|
||||
if (HMI_flag.select_flag) {
|
||||
checkkey = MainMenu;
|
||||
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()) {
|
||||
HMI_flag.pause_action = false;
|
||||
#if ENABLED(PAUSE_HEAT)
|
||||
if (sdprint) {
|
||||
TERN_(HAS_HOTEND, resume_hotend_temp = thermalManager.degTargetHotend(0));
|
||||
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_HOTEND, resume_hotend_temp = sdprint ? thermalManager.degTargetHotend(0) : thermalManager.wholeDegHotend(0));
|
||||
TERN_(HAS_HEATED_BED, resume_bed_temp = sdprint ? thermalManager.degTargetBed() : thermalManager.wholeDegBed());
|
||||
TERN_(HAS_FAN, resume_fan = thermalManager.fan_speed[0]);
|
||||
#endif
|
||||
#if DISABLED(ADVANCED_PAUSE_FEATURE)
|
||||
thermalManager.disable_all_heaters();
|
||||
#endif
|
||||
#if DISABLED(PARK_HEAD_ON_PAUSE)
|
||||
queue.inject_P(PSTR("G1 F1200 X0 Y0"));
|
||||
#endif
|
||||
IF_DISABLED(ADVANCED_PAUSE_FEATURE, thermalManager.disable_all_heaters());
|
||||
IF_DISABLED(PARK_HEAD_ON_PAUSE, queue.inject_P(PSTR("G1 F1200 X0 Y0")));
|
||||
}
|
||||
|
||||
if (checkkey == PrintProcess) { // print process
|
||||
@ -1565,7 +1526,7 @@ void EachMomentUpdate() {
|
||||
else if (dwin_abort_flag && !HMI_flag.home_flag) { // Print Stop
|
||||
dwin_abort_flag = false;
|
||||
dwin_zoffset = BABY_Z_VAR;
|
||||
select_page.set(0);
|
||||
select_page.set(PAGE_PRINT);
|
||||
Goto_Main_Menu();
|
||||
}
|
||||
|
||||
@ -1615,7 +1576,7 @@ void EachMomentUpdate() {
|
||||
watchdog_refresh();
|
||||
}
|
||||
|
||||
select_print.set(0);
|
||||
select_print.set(PRINT_SETUP);
|
||||
queue.inject_P(PSTR("M1000"));
|
||||
sdprint = true;
|
||||
Goto_PrintProcess();
|
||||
@ -1735,7 +1696,6 @@ void DWIN_PidTuning(pidresult_t result) {
|
||||
|
||||
// Update filename on print
|
||||
void DWIN_Print_Header(const char *text = nullptr) {
|
||||
|
||||
static char headertxt[31] = ""; // Print header text
|
||||
|
||||
if (text != nullptr) {
|
||||
@ -1917,6 +1877,7 @@ void DWIN_Redraw_screen() {
|
||||
DWINUI::Draw_Icon(ICON_Confirm_E, 26, 280);
|
||||
DWINUI::Draw_Icon(ICON_Continue_E, 146, 280);
|
||||
Draw_Select_Highlight(true);
|
||||
DWIN_UpdateLCD();
|
||||
}
|
||||
|
||||
// Handle responses such as:
|
||||
@ -1981,7 +1942,6 @@ void DWIN_LockScreen(const bool flag) {
|
||||
// LiveUpdate: live update function when the encoder changes
|
||||
// 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) {
|
||||
last_checkkey = Menu;
|
||||
checkkey = process;
|
||||
HMI_value.MinValue = lo;
|
||||
HMI_value.MaxValue = hi;
|
||||
@ -2092,13 +2052,9 @@ void Goto_InfoMenu(){
|
||||
Draw_Info_Menu();
|
||||
}
|
||||
|
||||
void DisableMotors() {
|
||||
queue.inject_P(PSTR("M84"));
|
||||
}
|
||||
void DisableMotors() { queue.inject_P(PSTR("M84")); }
|
||||
|
||||
void AutoHome() {
|
||||
queue.inject_P(G28_STR);
|
||||
}
|
||||
void AutoHome() { queue.inject_P(G28_STR); }
|
||||
|
||||
void SetHome() {
|
||||
// Apply workspace offset, making the current position 0,0,0
|
||||
@ -2117,7 +2073,9 @@ void SetHome() {
|
||||
#endif
|
||||
}
|
||||
#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
|
||||
|
||||
@ -2233,9 +2191,7 @@ void SetPID(celsius_t t, heater_id_t h) {
|
||||
}
|
||||
#endif
|
||||
|
||||
void Goto_LockScreen() {
|
||||
DWIN_LockScreen(true);
|
||||
}
|
||||
void Goto_LockScreen() { DWIN_LockScreen(true); }
|
||||
|
||||
#if HAS_HOME_OFFSET
|
||||
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
|
||||
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
|
||||
void ChangeFilament() {
|
||||
HMI_SaveProcessID(NothingToDo);
|
||||
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"));
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif // ADVANCED_PAUSE_FEATURE
|
||||
|
||||
void SetFlow() { SetPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW); }
|
||||
|
||||
@ -2414,6 +2372,7 @@ void LevBedBL() { LevBed(3); }
|
||||
void LevBedC () { LevBed(4); }
|
||||
|
||||
#if ENABLED(MESH_BED_LEVELING)
|
||||
|
||||
void ManualMeshStart(){
|
||||
ui.set_status_P(GET_TEXT(MSG_UBL_BUILD_MESH_MENU));
|
||||
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));
|
||||
queue.inject_P(PSTR("M211 S1\nM500"));
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // MESH_BED_LEVELING
|
||||
|
||||
#if HAS_PREHEAT
|
||||
#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);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Menuitem Drawing functions =================================================
|
||||
|
||||
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 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) {
|
||||
if (HMI_IsChinese()) menuitem->SetFrame(1, 116, 164, 171, 176);
|
||||
onDrawPIntMenu(menuitem, line);
|
||||
@ -2748,30 +2708,6 @@ void onDrawSpeedItem(MenuItemClass* menuitem, int8_t line) {
|
||||
}
|
||||
#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) {
|
||||
if (HMI_IsChinese()) menuitem->SetFrame(1, 153, 148, 194, 161);
|
||||
onDrawSubMenu(menuitem, line);
|
||||
@ -2811,7 +2747,13 @@ void onDrawSteps(MenuItemClass* menuitem, int8_t line) {
|
||||
if (HMI_IsChinese()) menuitem->SetFrame(1, 180, 89, 260, 100);
|
||||
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) {
|
||||
if (HMI_IsChinese()) {
|
||||
@ -2847,6 +2789,14 @@ void onDrawMaxSpeedZ(MenuItemClass* menuitem, int8_t line) {
|
||||
}
|
||||
#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) {
|
||||
if (HMI_IsChinese()) {
|
||||
menuitem->SetFrame(1, 173, 133, 200, 147);
|
||||
@ -2886,6 +2836,16 @@ void onDrawMaxAccelZ(MenuItemClass* menuitem, int8_t line) {
|
||||
#endif
|
||||
|
||||
#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) {
|
||||
if (HMI_IsChinese()) {
|
||||
menuitem->SetFrame(1, 173, 133, 200, 147);
|
||||
@ -2927,6 +2887,7 @@ void onDrawMaxAccelZ(MenuItemClass* menuitem, int8_t line) {
|
||||
onDrawPFloatMenu(menuitem, line);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // HAS_CLASSIC_JERK
|
||||
|
||||
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 (Apply_Encoder(encoder_diffState, HMI_value.Value)) {
|
||||
EncoderRate.enabled = false;
|
||||
checkkey = last_checkkey;
|
||||
checkkey = Menu;
|
||||
return 2;
|
||||
}
|
||||
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)) {
|
||||
EncoderRate.enabled = false;
|
||||
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;
|
||||
}
|
||||
LIMIT(HMI_value.Value, lo, hi);
|
||||
@ -3048,7 +3009,7 @@ void HMI_SetPInt() {
|
||||
} 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
|
||||
// lo: scaled low 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)) {
|
||||
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));
|
||||
checkkey = last_checkkey;
|
||||
checkkey = Menu;
|
||||
return 2;
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
// Set an scaled float using the encoder
|
||||
// Set a scaled float using the encoder
|
||||
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) {
|
||||
case 0: return; break;
|
||||
case 0: return;
|
||||
case 1: if (HMI_value.LiveUpdate != nullptr) HMI_value.LiveUpdate(); 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() {
|
||||
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;
|
||||
else if (val == 2) { // Apply
|
||||
if (val == 2) { // Apply
|
||||
*HMI_value.P_Float = HMI_value.Value / POW(10, HMI_value.dp);
|
||||
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 ======================================================
|
||||
@ -3097,13 +3059,8 @@ void HMI_SetPFloat() {
|
||||
void SetMenuTitle(frame_rect_t cn, frame_rect_t en, const __FlashStringHelper* text) {
|
||||
if (HMI_IsChinese() && (cn.w != 0))
|
||||
CurrentMenu->MenuTitle.SetFrame(cn.x, cn.y, cn.w, cn.h);
|
||||
else {
|
||||
#ifdef USE_STRING_HEADINGS
|
||||
else
|
||||
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() {
|
||||
@ -3301,7 +3258,8 @@ void Draw_Move_Menu() {
|
||||
}
|
||||
CurrentMenu->Draw();
|
||||
}
|
||||
#endif
|
||||
#endif // HAS_FILAMENT_SENSOR
|
||||
|
||||
void Draw_SelectColors_Menu() {
|
||||
checkkey = Menu;
|
||||
if (SelectColorMenu == nullptr) SelectColorMenu = new MenuClass();
|
||||
@ -3441,6 +3399,7 @@ void Draw_Motion_Menu() {
|
||||
#endif
|
||||
|
||||
#if HAS_PREHEAT
|
||||
|
||||
void Draw_Preheat_Menu(frame_rect_t cn, frame_rect_t en, const __FlashStringHelper* text) {
|
||||
checkkey = Menu;
|
||||
if (CurrentMenu != PreheatMenu) {
|
||||
@ -3485,7 +3444,7 @@ void Draw_Motion_Menu() {
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif // HAS_PREHEAT
|
||||
|
||||
void Draw_Temperature_Menu() {
|
||||
checkkey = Menu;
|
||||
@ -3653,5 +3612,4 @@ void Draw_Steps_Menu() {
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif // DWIN_CREALITY_LCD_ENHANCED
|
||||
|
@ -157,15 +157,9 @@ void Popup_Window_Resume();
|
||||
void HMI_SDCardInit();
|
||||
void HMI_SDCardUpdate();
|
||||
|
||||
// Main Process
|
||||
//void Icon_print();
|
||||
//void Icon_control();
|
||||
//void Icon_leveling(bool value);
|
||||
|
||||
// Other
|
||||
void Goto_PrintProcess();
|
||||
void Goto_Main_Menu();
|
||||
void update_variable();
|
||||
void Draw_Select_Highlight(const bool sel);
|
||||
void Draw_Status_Area(const bool with_update); // Status Area
|
||||
void Draw_Main_Area(); // Redraw main area;
|
||||
@ -178,19 +172,15 @@ void HMI_ReturnScreen(); // Return to previous screen before popups
|
||||
void ApplyExtMinT();
|
||||
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_Popup();
|
||||
void HMI_SaveProcessID(const uint8_t id);
|
||||
void HMI_AudioFeedback(const bool success=true);
|
||||
void EachMomentUpdate();
|
||||
void update_variable();
|
||||
void DWIN_HandleScreen();
|
||||
void DWIN_Startup();
|
||||
void DWIN_Update();
|
||||
void EachMomentUpdate();
|
||||
void DWIN_HandleScreen();
|
||||
void DWIN_DrawStatusLine(const uint16_t color, const uint16_t bgcolor, const char *text);
|
||||
void DWIN_StatusChanged(const char * const text);
|
||||
void DWIN_StatusChanged_P(PGM_P const text);
|
||||
|
@ -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 };
|
||||
#endif
|
||||
|
||||
uint8_t active_menu = MainMenu;
|
||||
uint8_t last_menu = MainMenu;
|
||||
uint8_t selection = 0;
|
||||
uint8_t last_selection = 0;
|
||||
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
|
||||
};
|
||||
|
||||
uint8_t active_menu = MainMenu, last_menu = MainMenu;
|
||||
uint8_t selection = 0, last_selection = 0;
|
||||
uint8_t scrollpos = 0;
|
||||
uint8_t process = Main;
|
||||
uint8_t last_process = Main;
|
||||
PopupID popup;
|
||||
PopupID last_popup;
|
||||
uint8_t process = Main, last_process = Main;
|
||||
PopupID popup, last_popup;
|
||||
|
||||
void (*funcpointer)() = nullptr;
|
||||
void *valuepointer = nullptr;
|
||||
@ -4208,7 +4217,7 @@ void CrealityDWINClass::Confirm_Handler(PopupID popupid) {
|
||||
void CrealityDWINClass::Main_Menu_Control() {
|
||||
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
|
||||
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
|
||||
Main_Menu_Icons();
|
||||
}
|
||||
@ -4218,10 +4227,10 @@ void CrealityDWINClass::Main_Menu_Control() {
|
||||
}
|
||||
else if (encoder_diffState == ENCODER_DIFF_ENTER)
|
||||
switch (selection) {
|
||||
case 0: card.mount(); Draw_SD_List(); break;
|
||||
case 1: Draw_Menu(Prepare); break;
|
||||
case 2: Draw_Menu(Control); break;
|
||||
case 3: Draw_Menu(TERN(HAS_MESH, Leveling, InfoMain)); break;
|
||||
case PAGE_PRINT: card.mount(); Draw_SD_List(); break;
|
||||
case PAGE_PREPARE: Draw_Menu(Prepare); break;
|
||||
case PAGE_CONTROL: Draw_Menu(Control); break;
|
||||
case PAGE_INFO_LEVELING: Draw_Menu(TERN(HAS_MESH, Leveling, InfoMain)); break;
|
||||
}
|
||||
DWIN_UpdateLCD();
|
||||
}
|
||||
@ -4449,7 +4458,7 @@ void CrealityDWINClass::File_Control() {
|
||||
void CrealityDWINClass::Print_Screen_Control() {
|
||||
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
|
||||
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
|
||||
Print_Screen_Icons();
|
||||
}
|
||||
@ -4459,11 +4468,11 @@ void CrealityDWINClass::Print_Screen_Control() {
|
||||
}
|
||||
else if (encoder_diffState == ENCODER_DIFF_ENTER) {
|
||||
switch (selection) {
|
||||
case 0:
|
||||
case PRINT_SETUP:
|
||||
Draw_Menu(Tune);
|
||||
Update_Status_Bar(true);
|
||||
break;
|
||||
case 1:
|
||||
case PRINT_PAUSE_RESUME:
|
||||
if (paused) {
|
||||
if (sdprint) {
|
||||
wait_for_user = false;
|
||||
@ -4493,9 +4502,7 @@ void CrealityDWINClass::Print_Screen_Control() {
|
||||
else
|
||||
Popup_Handler(Pause);
|
||||
break;
|
||||
case 2:
|
||||
Popup_Handler(Stop);
|
||||
break;
|
||||
case PRINT_STOP: Popup_Handler(Stop); break;
|
||||
}
|
||||
}
|
||||
DWIN_UpdateLCD();
|
||||
|
Loading…
Reference in New Issue
Block a user