diff --git a/Marlin/src/inc/Conditionals-2-LCD.h b/Marlin/src/inc/Conditionals-2-LCD.h index e7ea7bdeaf..0108fad02c 100644 --- a/Marlin/src/inc/Conditionals-2-LCD.h +++ b/Marlin/src/inc/Conditionals-2-LCD.h @@ -585,7 +585,7 @@ #endif #endif -#if ANY(HAS_WIRED_LCD, EXTENSIBLE_UI, DWIN_LCD_PROUI, DWIN_CREALITY_LCD_JYERSUI) +#if ANY(HAS_WIRED_LCD, EXTENSIBLE_UI, HAS_DWIN_E3V2) /** * HAS_DISPLAY indicates the display uses these MarlinUI methods... * - update @@ -605,10 +605,8 @@ * (calling advance_status_scroll, status_and_len for a scrolling status message) */ #define HAS_DISPLAY 1 -#endif - -#if ANY(HAS_DISPLAY, DWIN_CREALITY_LCD) #define HAS_UI_UPDATE 1 + #define HAS_STATUS_MESSAGE 1 #endif #if HAS_WIRED_LCD && !HAS_GRAPHICAL_TFT && !IS_DWIN_MARLINUI @@ -619,10 +617,6 @@ #define HAS_UTF8_UTILS 1 #endif -#if ANY(HAS_DISPLAY, HAS_DWIN_E3V2) - #define HAS_STATUS_MESSAGE 1 -#endif - #if IS_ULTIPANEL && DISABLED(NO_LCD_MENUS) #define HAS_MARLINUI_MENU 1 #endif diff --git a/Marlin/src/lcd/e3v2/common/dwin_set.h b/Marlin/src/lcd/e3v2/common/dwin_set.h index f32d0e6d9e..644efb40ba 100644 --- a/Marlin/src/lcd/e3v2/common/dwin_set.h +++ b/Marlin/src/lcd/e3v2/common/dwin_set.h @@ -128,6 +128,22 @@ #define ICON_Info_0 90 #define ICON_Info_1 91 +// Extra Icons +#define ICON_Printer_0 93 +#define ICON_Box 200 +#define ICON_Checkbox 201 +#define ICON_Fade 202 +#define ICON_Mesh 203 +#define ICON_Tilt 204 +#define ICON_Brightness 205 +#define ICON_Probe 206 +#define ICON_AxisD 249 +#define ICON_AxisBR 250 +#define ICON_AxisTR 251 +#define ICON_AxisBL 252 +#define ICON_AxisTL 253 +#define ICON_AxisC 254 + #define ICON_Folder ICON_More #define ICON_AdvSet ICON_Language #define ICON_HomeOffset ICON_PrintSize diff --git a/Marlin/src/lcd/e3v2/creality/dwin.cpp b/Marlin/src/lcd/e3v2/creality/dwin.cpp index 04135ff58b..fcbeecde83 100644 --- a/Marlin/src/lcd/e3v2/creality/dwin.cpp +++ b/Marlin/src/lcd/e3v2/creality/dwin.cpp @@ -355,6 +355,10 @@ void clearPopupArea() { dwinDrawRectangle(1, COLOR_BG_BLACK, 0, 31, DWIN_WIDTH, DWIN_HEIGHT); } +void drawPopupBkgd60() { + dwinDrawRectangle(1, COLOR_BG_WINDOW, 14, 60, 258, 330); +} + void drawPopupBkgd105() { dwinDrawRectangle(1, COLOR_BG_WINDOW, 14, 105, 258, 374); } @@ -1081,10 +1085,6 @@ void drawMotionMenu() { #endif -void drawPopupBkgd60() { - dwinDrawRectangle(1, COLOR_BG_WINDOW, 14, 60, 258, 330); -} - #if HAS_HOTEND void popupWindowETempTooLow() { @@ -1116,7 +1116,7 @@ void popupWindowResume() { else { dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (272 - 8 * 14) / 2, 115, F("Continue Print")); dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (272 - 8 * 22) / 2, 192, F("It looks like the last")); - dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (272 - 8 * 22) / 2, 212, F("file was interrupted.")); + dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (272 - 8 * 21) / 2, 212, F("file was interrupted.")); dwinIconShow(ICON, ICON_Cancel_E, 26, 307); dwinIconShow(ICON, ICON_Continue_E, 146, 307); } @@ -1125,7 +1125,7 @@ void popupWindowResume() { void popupWindowHome(const bool parking/*=false*/) { clearMainWindow(); drawPopupBkgd60(); - dwinIconShow(ICON, ICON_BLTouch, 101, 105); + dwinIconShow(ICON, ICON_Printer_0, 101, 105); if (hmiIsChinese()) { dwinFrameAreaCopy(1, 0, 371, 33, 386, 85, 240); // Wait for Move to Complete dwinFrameAreaCopy(1, 203, 286, 271, 302, 118, 240); @@ -1148,7 +1148,7 @@ void popupWindowHome(const bool parking/*=false*/) { dwinFrameAreaCopy(1, 0, 389, 150, 402, 61, 280); } else { - dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (272 - 8 * 13) / 2, 230, GET_TEXT_F(MSG_BED_LEVELING)); + dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (272 - 8 * 12) / 2, 230, GET_TEXT_F(MSG_BED_LEVELING)); dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (272 - 8 * 23) / 2, 260, F("Please wait until done.")); } } @@ -1169,8 +1169,8 @@ void popupwindowPauseOrStop() { clearMainWindow(); drawPopupBkgd60(); if (hmiIsChinese()) { - if (select_print.now == PRINT_PAUSE_RESUME) dwinFrameAreaCopy(1, 237, 338, 269, 356, 98, 150); // Pause - else if (select_print.now == PRINT_STOP) dwinFrameAreaCopy(1, 221, 320, 253, 336, 98, 150); // Stop + if (select_print.now == PRINT_PAUSE_RESUME) dwinFrameAreaCopy(1, 237, 338, 269, 356, 98, 150); // Pause + else if (select_print.now == PRINT_STOP) dwinFrameAreaCopy(1, 221, 320, 253, 336, 98, 150); // Stop dwinFrameAreaCopy(1, 220, 304, 264, 319, 130, 150); // Print dwinIconShow(ICON, ICON_Confirm_C, 26, 280); dwinIconShow(ICON, ICON_Cancel_C, 146, 280); @@ -1826,6 +1826,14 @@ void MarlinUI::update() { void MarlinUI::_set_brightness() { dwinLCDBrightness(backlight ? brightness : 0); } #endif +void MarlinUI::kill_screen(FSTR_P const lcd_error, FSTR_P const) { + clearMainWindow(); + drawPopupBkgd60(); + dwinIconShow(ICON, ICON_Printer_0, 101, 105); + dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (272 - 8 * 15) / 2, 230, GET_TEXT_F(MSG_PRINTER_KILLED)); + dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (272 - 8 * 20) / 2, 260, GET_TEXT_F(MSG_TURN_OFF)); +} + #if ENABLED(SCROLL_LONG_FILENAMES) char shift_name[LONG_FILENAME_LENGTH + 1]; diff --git a/Marlin/src/lcd/e3v2/proui/dwinui.h b/Marlin/src/lcd/e3v2/proui/dwinui.h index f606c24400..0c98fc0d92 100644 --- a/Marlin/src/lcd/e3v2/proui/dwinui.h +++ b/Marlin/src/lcd/e3v2/proui/dwinui.h @@ -36,22 +36,6 @@ #include "../common/dwin_color.h" #include "dwin_lcd.h" -// Extra Icons -#define ICON_Printer_0 93 -#define ICON_Box 200 -#define ICON_Checkbox 201 -#define ICON_Fade 202 -#define ICON_Mesh 203 -#define ICON_Tilt 204 -#define ICON_Brightness 205 -#define ICON_Probe 206 -#define ICON_AxisD 249 -#define ICON_AxisBR 250 -#define ICON_AxisTR 251 -#define ICON_AxisBL 252 -#define ICON_AxisTL 253 -#define ICON_AxisC 254 - #define ICON_BedSizeX ICON_PrintSize #define ICON_BedSizeY ICON_PrintSize #define ICON_BedTramming ICON_SetHome diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index c625351d5a..2282cb5ee4 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -55,10 +55,10 @@ MarlinUI ui; #endif #if ENABLED(LCD_PROGRESS_BAR) && !IS_TFTGLCD_PANEL - #define BASIC_PROGRESS_BAR 1 + #define HAS_BASIC_PROGRESS_BAR 1 #endif -#if ANY(HAS_DISPLAY, HAS_STATUS_MESSAGE, BASIC_PROGRESS_BAR) +#if ANY(HAS_DISPLAY, HAS_STATUS_MESSAGE, HAS_BASIC_PROGRESS_BAR) #include "../module/printcounter.h" #endif @@ -598,7 +598,7 @@ void MarlinUI::init() { * This is very display-dependent, so the lcd implementation draws this. */ - #if BASIC_PROGRESS_BAR + #if HAS_BASIC_PROGRESS_BAR millis_t MarlinUI::progress_bar_ms; // = 0 #if PROGRESS_MSG_EXPIRE > 0 millis_t MarlinUI::expire_status_ms; // = 0 @@ -607,7 +607,7 @@ void MarlinUI::init() { void MarlinUI::status_screen() { - #if BASIC_PROGRESS_BAR + #if HAS_BASIC_PROGRESS_BAR // // HD44780 implements the following message blinking and @@ -647,7 +647,7 @@ void MarlinUI::init() { #endif // PROGRESS_MSG_EXPIRE - #endif // BASIC_PROGRESS_BAR + #endif // HAS_BASIC_PROGRESS_BAR bool did_expire = status_reset_callback && (*status_reset_callback)(); @@ -1592,11 +1592,11 @@ void MarlinUI::host_notify(const char * const cstr) { #if HAS_WIRED_LCD - #if BASIC_PROGRESS_BAR || ALL(FILAMENT_LCD_DISPLAY, HAS_MEDIA) + #if HAS_BASIC_PROGRESS_BAR || ALL(FILAMENT_LCD_DISPLAY, HAS_MEDIA) const millis_t ms = millis(); #endif - #if BASIC_PROGRESS_BAR + #if HAS_BASIC_PROGRESS_BAR progress_bar_ms = ms; #if PROGRESS_MSG_EXPIRE > 0 expire_status_ms = persist ? 0 : ms + PROGRESS_MSG_EXPIRE; diff --git a/Marlin/src/lcd/marlinui.h b/Marlin/src/lcd/marlinui.h index 64c64020ed..3c4f28c93e 100644 --- a/Marlin/src/lcd/marlinui.h +++ b/Marlin/src/lcd/marlinui.h @@ -205,15 +205,6 @@ public: static void init(); - #if HAS_DISPLAY || HAS_DWIN_E3V2 - static void init_lcd(); - // Erase the LCD contents. Do the lowest-level thing required to clear the LCD. - static void clear_lcd(); - #else - static void init_lcd() {} - static void clear_lcd() {} - #endif - static void reinit_lcd() { TERN_(REINIT_NOISY_LCD, init_lcd()); } #if HAS_WIRED_LCD @@ -522,6 +513,11 @@ public: #if HAS_DISPLAY + static void init_lcd(); + + // Erase the LCD contents. Do the lowest-level thing required to clear the LCD. + static void clear_lcd(); + // Clear the LCD before new drawing. Some LCDs do nothing because they redraw frequently. static void clear_for_drawing(); @@ -635,6 +631,8 @@ public: #else // No LCD + static void init_lcd() {} + static void clear_lcd() {} static void clear_for_drawing() {} static void kill_screen(FSTR_P const, FSTR_P const) {} diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index 85e021d661..57d6e0989d 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -27,9 +27,10 @@ #include "endstops.h" #include "stepper.h" -#include "../sd/cardreader.h" -#include "temperature.h" -#include "../lcd/marlinui.h" +#if HAS_STATUS_MESSAGE + #include "../lcd/marlinui.h" +#endif + #if ENABLED(SOVOL_SV06_RTS) #include "../lcd/sovol_rts/sovol_rts.h" #endif @@ -44,6 +45,8 @@ #if ENABLED(SD_ABORT_ON_ENDSTOP_HIT) #include "printcounter.h" // for print_job_timer + #include "temperature.h" + #include "../sd/cardreader.h" #endif #if ENABLED(BLTOUCH) @@ -54,6 +57,10 @@ #include "../feature/joystick.h" #endif +#if HAS_FILAMENT_SENSOR + #include "../feature/runout.h" +#endif + #if HAS_BED_PROBE #include "probe.h" #endif @@ -375,13 +382,13 @@ void Endstops::event_handler() { #endif SERIAL_EOL(); - TERN_(HAS_STATUS_MESSAGE, + #if HAS_STATUS_MESSAGE ui.status_printf(0, F(S_FMT GANG_N_1(NUM_AXES, " %c") " %c"), GET_TEXT_F(MSG_LCD_ENDSTOPS), NUM_AXIS_LIST_(chrX, chrY, chrZ, chrI, chrJ, chrK, chrU, chrV, chrW) chrP - ) - ); + ); + #endif #if ENABLED(SD_ABORT_ON_ENDSTOP_HIT) if (planner.abort_on_endstop_hit) { @@ -526,7 +533,7 @@ void __O2 Endstops::report_states() { } #undef _CASE_RUNOUT #elif HAS_FILAMENT_SENSOR - print_es_state(READ(FIL_RUNOUT1_PIN) != FIL_RUNOUT1_STATE, F(STR_FILAMENT)); + print_es_state(!FILAMENT_IS_OUT()); #endif TERN_(BLTOUCH, bltouch._reset_SW_mode());