More advanced pause tweaks (#12356)
* Followup to LCD_TIMEOUT_TO_STATUS=0 * Make continuous purge screen fit 20x4 * Unify purge message modes * Preserve last-set pause header mode
This commit is contained in:
@@ -458,47 +458,40 @@ void lcd_advanced_pause_resume_message() {
|
||||
}
|
||||
|
||||
void lcd_advanced_pause_purge_message() {
|
||||
START_SCREEN();
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_PURGE_1);
|
||||
#ifdef MSG_FILAMENT_CHANGE_PURGE_2
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_PURGE_2);
|
||||
#ifdef MSG_FILAMENT_CHANGE_PURGE_3
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_PURGE_3);
|
||||
_lcd_advanced_pause_message(
|
||||
#if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
|
||||
PSTR(MSG_FILAMENT_CHANGE_CONT_PURGE_1)
|
||||
#ifdef MSG_FILAMENT_CHANGE_CONT_PURGE_2
|
||||
, PSTR(MSG_FILAMENT_CHANGE_CONT_PURGE_2)
|
||||
#ifdef MSG_FILAMENT_CHANGE_CONT_PURGE_3
|
||||
, PSTR(MSG_FILAMENT_CHANGE_CONT_PURGE_3)
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
PSTR(MSG_FILAMENT_CHANGE_PURGE_1)
|
||||
#ifdef MSG_FILAMENT_CHANGE_PURGE_2
|
||||
, PSTR(MSG_FILAMENT_CHANGE_PURGE_2)
|
||||
#ifdef MSG_FILAMENT_CHANGE_PURGE_3
|
||||
, PSTR(MSG_FILAMENT_CHANGE_PURGE_3)
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
|
||||
#define _PURGE_BASE 3
|
||||
#else
|
||||
#define _PURGE_BASE 2
|
||||
#endif
|
||||
#if (_PURGE_BASE + defined(MSG_FILAMENT_CHANGE_PURGE_2) + defined(MSG_FILAMENT_CHANGE_PURGE_3)) < LCD_HEIGHT - 1
|
||||
STATIC_ITEM(" ");
|
||||
#endif
|
||||
HOTEND_STATUS_ITEM();
|
||||
#if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
|
||||
STATIC_ITEM(MSG_USERWAIT);
|
||||
#endif
|
||||
END_SCREEN();
|
||||
);
|
||||
}
|
||||
|
||||
FORCE_INLINE screenFunc_t ap_message_screen(const AdvancedPauseMessage message) {
|
||||
switch (message) {
|
||||
case ADVANCED_PAUSE_MESSAGE_INIT: return lcd_advanced_pause_init_message;
|
||||
case ADVANCED_PAUSE_MESSAGE_UNLOAD: return lcd_advanced_pause_unload_message;
|
||||
case ADVANCED_PAUSE_MESSAGE_WAITING: return lcd_advanced_pause_waiting_message;
|
||||
case ADVANCED_PAUSE_MESSAGE_INSERT: return lcd_advanced_pause_insert_message;
|
||||
case ADVANCED_PAUSE_MESSAGE_LOAD: return lcd_advanced_pause_load_message;
|
||||
#if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
|
||||
case ADVANCED_PAUSE_MESSAGE_CONTINUOUS_PURGE:
|
||||
#else
|
||||
case ADVANCED_PAUSE_MESSAGE_PURGE:
|
||||
#endif
|
||||
return lcd_advanced_pause_purge_message;
|
||||
case ADVANCED_PAUSE_MESSAGE_RESUME: return lcd_advanced_pause_resume_message;
|
||||
case ADVANCED_PAUSE_MESSAGE_HEAT: return lcd_advanced_pause_heat_message;
|
||||
case ADVANCED_PAUSE_MESSAGE_HEATING: return lcd_advanced_pause_heating_message;
|
||||
case ADVANCED_PAUSE_MESSAGE_OPTION: advanced_pause_menu_response = ADVANCED_PAUSE_RESPONSE_WAIT_FOR;
|
||||
return menu_advanced_pause_option;
|
||||
case ADVANCED_PAUSE_MESSAGE_INIT: return lcd_advanced_pause_init_message;
|
||||
case ADVANCED_PAUSE_MESSAGE_UNLOAD: return lcd_advanced_pause_unload_message;
|
||||
case ADVANCED_PAUSE_MESSAGE_WAITING: return lcd_advanced_pause_waiting_message;
|
||||
case ADVANCED_PAUSE_MESSAGE_INSERT: return lcd_advanced_pause_insert_message;
|
||||
case ADVANCED_PAUSE_MESSAGE_LOAD: return lcd_advanced_pause_load_message;
|
||||
case ADVANCED_PAUSE_MESSAGE_PURGE: return lcd_advanced_pause_purge_message;
|
||||
case ADVANCED_PAUSE_MESSAGE_RESUME: return lcd_advanced_pause_resume_message;
|
||||
case ADVANCED_PAUSE_MESSAGE_HEAT: return lcd_advanced_pause_heat_message;
|
||||
case ADVANCED_PAUSE_MESSAGE_HEATING: return lcd_advanced_pause_heating_message;
|
||||
case ADVANCED_PAUSE_MESSAGE_OPTION: advanced_pause_menu_response = ADVANCED_PAUSE_RESPONSE_WAIT_FOR;
|
||||
return menu_advanced_pause_option;
|
||||
case ADVANCED_PAUSE_MESSAGE_STATUS:
|
||||
default: break;
|
||||
}
|
||||
@@ -507,14 +500,14 @@ FORCE_INLINE screenFunc_t ap_message_screen(const AdvancedPauseMessage message)
|
||||
|
||||
void lcd_advanced_pause_show_message(
|
||||
const AdvancedPauseMessage message,
|
||||
const AdvancedPauseMode mode/*=ADVANCED_PAUSE_MODE_PAUSE_PRINT*/,
|
||||
const AdvancedPauseMode mode/*=ADVANCED_PAUSE_MODE_SAME*/,
|
||||
const uint8_t extruder/*=active_extruder*/
|
||||
) {
|
||||
advanced_pause_mode = mode;
|
||||
if (mode != ADVANCED_PAUSE_MODE_SAME) advanced_pause_mode = mode;
|
||||
hotend_status_extruder = extruder;
|
||||
const screenFunc_t next_screen = ap_message_screen(message);
|
||||
if (next_screen) {
|
||||
defer_return_to_status = true;
|
||||
set_defer_return_to_status(true);
|
||||
lcd_goto_screen(next_screen);
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user