|
|
@ -69,6 +69,9 @@ uint16_t max_display_update_time = 0; |
|
|
|
|
|
|
|
#if ENABLED(DOGLCD) |
|
|
|
bool drawing_screen = false; |
|
|
|
#define LCDVIEW_KEEP_REDRAWING LCDVIEW_CALL_REDRAW_NEXT |
|
|
|
#else |
|
|
|
#define LCDVIEW_KEEP_REDRAWING LCDVIEW_REDRAW_NOW |
|
|
|
#endif |
|
|
|
|
|
|
|
#if ENABLED(DAC_STEPPER_CURRENT) |
|
|
@ -1155,13 +1158,7 @@ void kill_screen(const char* lcd_msg) { |
|
|
|
|
|
|
|
void _lcd_level_bed_done() { |
|
|
|
if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR(MSG_LEVEL_BED_DONE)); |
|
|
|
lcdDrawUpdate = |
|
|
|
#if ENABLED(DOGLCD) |
|
|
|
LCDVIEW_CALL_REDRAW_NEXT |
|
|
|
#else |
|
|
|
LCDVIEW_CALL_NO_REDRAW |
|
|
|
#endif |
|
|
|
; |
|
|
|
lcdDrawUpdate = LCDVIEW_KEEP_REDRAWING; |
|
|
|
} |
|
|
|
|
|
|
|
/**
|
|
|
@ -1179,13 +1176,7 @@ void kill_screen(const char* lcd_msg) { |
|
|
|
NOLESS(current_position[Z_AXIS], 0); |
|
|
|
NOMORE(current_position[Z_AXIS], MESH_HOME_SEARCH_Z * 2); |
|
|
|
line_to_current(Z_AXIS); |
|
|
|
lcdDrawUpdate = |
|
|
|
#if ENABLED(DOGLCD) |
|
|
|
LCDVIEW_CALL_REDRAW_NEXT |
|
|
|
#else |
|
|
|
LCDVIEW_REDRAW_NOW |
|
|
|
#endif |
|
|
|
; |
|
|
|
lcdDrawUpdate = LCDVIEW_KEEP_REDRAWING; |
|
|
|
encoderPosition = 0; |
|
|
|
} |
|
|
|
|
|
|
@ -1239,13 +1230,7 @@ KeepDrawing: |
|
|
|
lcd_implementation_drawedit(PSTR(MSG_LEVEL_BED_NEXT_POINT), msg); |
|
|
|
} |
|
|
|
|
|
|
|
lcdDrawUpdate = |
|
|
|
#if ENABLED(DOGLCD) |
|
|
|
LCDVIEW_CALL_REDRAW_NEXT |
|
|
|
#else |
|
|
|
LCDVIEW_CALL_NO_REDRAW |
|
|
|
#endif |
|
|
|
; |
|
|
|
lcdDrawUpdate = LCDVIEW_KEEP_REDRAWING; |
|
|
|
} |
|
|
|
|
|
|
|
/**
|
|
|
@ -1287,13 +1272,7 @@ KeepDrawing: |
|
|
|
*/ |
|
|
|
void _lcd_level_bed_homing() { |
|
|
|
if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR(MSG_LEVEL_BED_HOMING), NULL); |
|
|
|
lcdDrawUpdate = |
|
|
|
#if ENABLED(DOGLCD) |
|
|
|
LCDVIEW_CALL_REDRAW_NEXT |
|
|
|
#else |
|
|
|
LCDVIEW_CALL_NO_REDRAW |
|
|
|
#endif |
|
|
|
; |
|
|
|
lcdDrawUpdate = LCDVIEW_KEEP_REDRAWING; |
|
|
|
if (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS]) |
|
|
|
lcd_goto_screen(_lcd_level_bed_homing_done); |
|
|
|
} |
|
|
@ -1380,6 +1359,7 @@ KeepDrawing: |
|
|
|
// Preheat ABS
|
|
|
|
//
|
|
|
|
#if TEMP_SENSOR_0 != 0 |
|
|
|
|
|
|
|
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 || TEMP_SENSOR_BED != 0 |
|
|
|
MENU_ITEM(submenu, MSG_PREHEAT_1, lcd_preheat_material1_menu); |
|
|
|
MENU_ITEM(submenu, MSG_PREHEAT_2, lcd_preheat_material2_menu); |
|
|
@ -1395,7 +1375,8 @@ KeepDrawing: |
|
|
|
if (!thermalManager.tooColdToExtrude(active_extruder)) |
|
|
|
MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
#endif // TEMP_SENSOR_0 != 0
|
|
|
|
|
|
|
|
//
|
|
|
|
// Cooldown
|
|
|
@ -1445,13 +1426,7 @@ KeepDrawing: |
|
|
|
|
|
|
|
void _lcd_calibrate_homing() { |
|
|
|
if (lcdDrawUpdate) lcd_implementation_drawmenu_static(LCD_HEIGHT >= 4 ? 1 : 0, PSTR(MSG_LEVEL_BED_HOMING)); |
|
|
|
lcdDrawUpdate = |
|
|
|
#if ENABLED(DOGLCD) |
|
|
|
LCDVIEW_CALL_REDRAW_NEXT |
|
|
|
#else |
|
|
|
LCDVIEW_CALL_NO_REDRAW |
|
|
|
#endif |
|
|
|
; |
|
|
|
lcdDrawUpdate = LCDVIEW_KEEP_REDRAWING; |
|
|
|
if (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS]) |
|
|
|
lcd_goto_previous_menu(); |
|
|
|
} |
|
|
@ -2453,20 +2428,36 @@ KeepDrawing: |
|
|
|
*/ |
|
|
|
#if ENABLED(FILAMENT_CHANGE_FEATURE) |
|
|
|
|
|
|
|
// Portions from STATIC_ITEM...
|
|
|
|
#define HOTEND_STATUS_ITEM() do { \ |
|
|
|
if (_menuLineNr == _thisItemNr) { \ |
|
|
|
if (lcdDrawUpdate) \ |
|
|
|
lcd_implementation_drawmenu_static(_lcdLineNr, PSTR(MSG_FILAMENT_CHANGE_NOZZLE), false, true); \ |
|
|
|
lcd_implementation_hotend_status(_lcdLineNr); \ |
|
|
|
if (_skipStatic && encoderLine <= _thisItemNr) { \ |
|
|
|
encoderPosition += ENCODER_STEPS_PER_MENU_ITEM; \ |
|
|
|
lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT; \ |
|
|
|
} \ |
|
|
|
else \ |
|
|
|
lcdDrawUpdate = LCDVIEW_CALL_NO_REDRAW; \ |
|
|
|
} \ |
|
|
|
++_thisItemNr; \ |
|
|
|
} while(0) |
|
|
|
|
|
|
|
void lcd_filament_change_toocold_menu() { |
|
|
|
START_MENU(); |
|
|
|
STATIC_ITEM(MSG_HEATING_FAILED_LCD, true, true); |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_MINTEMP STRINGIFY(EXTRUDE_MINTEMP) ".", false, false); |
|
|
|
MENU_BACK(MSG_BACK); |
|
|
|
#if LCD_HEIGHT > 4 |
|
|
|
STATIC_ITEM(" "); |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); |
|
|
|
lcd_implementation_hotend_status(); |
|
|
|
#endif |
|
|
|
HOTEND_STATUS_ITEM(); |
|
|
|
END_MENU(); |
|
|
|
} |
|
|
|
|
|
|
|
void lcd_filament_change_resume_print() { |
|
|
|
filament_change_menu_response = FILAMENT_CHANGE_RESPONSE_RESUME_PRINT; |
|
|
|
lcd_goto_screen(lcd_status_screen); |
|
|
|
} |
|
|
|
|
|
|
|
void lcd_filament_change_extrude_more() { |
|
|
@ -2489,12 +2480,20 @@ KeepDrawing: |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_1); |
|
|
|
#ifdef MSG_FILAMENT_CHANGE_INIT_2 |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_2); |
|
|
|
#define __FC_LINES_A 3 |
|
|
|
#else |
|
|
|
#define __FC_LINES_A 2 |
|
|
|
#endif |
|
|
|
#ifdef MSG_FILAMENT_CHANGE_INIT_3 |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_3); |
|
|
|
#define _FC_LINES_A (__FC_LINES_A + 1) |
|
|
|
#else |
|
|
|
#define _FC_LINES_A __FC_LINES_A |
|
|
|
#endif |
|
|
|
#if LCD_HEIGHT > _FC_LINES_A + 1 |
|
|
|
STATIC_ITEM(" "); |
|
|
|
#endif |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); |
|
|
|
lcd_implementation_hotend_status(); |
|
|
|
HOTEND_STATUS_ITEM(); |
|
|
|
END_SCREEN(); |
|
|
|
} |
|
|
|
|
|
|
@ -2504,13 +2503,20 @@ KeepDrawing: |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_1); |
|
|
|
#ifdef MSG_FILAMENT_CHANGE_UNLOAD_2 |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_2); |
|
|
|
#define __FC_LINES_B 3 |
|
|
|
#else |
|
|
|
#define __FC_LINES_B 2 |
|
|
|
#endif |
|
|
|
#ifdef MSG_FILAMENT_CHANGE_UNLOAD_3 |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_3); |
|
|
|
#define _FC_LINES_B (__FC_LINES_B + 1) |
|
|
|
#else |
|
|
|
#define _FC_LINES_B __FC_LINES_B |
|
|
|
#endif |
|
|
|
#if LCD_HEIGHT > _FC_LINES_B + 1 |
|
|
|
STATIC_ITEM(" "); |
|
|
|
#endif |
|
|
|
STATIC_ITEM (" "); |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); |
|
|
|
lcd_implementation_hotend_status(); |
|
|
|
HOTEND_STATUS_ITEM(); |
|
|
|
END_SCREEN(); |
|
|
|
} |
|
|
|
|
|
|
@ -2520,10 +2526,14 @@ KeepDrawing: |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEATING_1); |
|
|
|
#ifdef MSG_FILAMENT_CHANGE_HEATING_2 |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEATING_2); |
|
|
|
#define _FC_LINES_C 3 |
|
|
|
#else |
|
|
|
#define _FC_LINES_C 2 |
|
|
|
#endif |
|
|
|
#if LCD_HEIGHT > _FC_LINES_C + 1 |
|
|
|
STATIC_ITEM(" "); |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); |
|
|
|
lcd_implementation_hotend_status(); |
|
|
|
#endif |
|
|
|
HOTEND_STATUS_ITEM(); |
|
|
|
END_SCREEN(); |
|
|
|
} |
|
|
|
|
|
|
@ -2533,10 +2543,14 @@ KeepDrawing: |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEAT_1); |
|
|
|
#ifdef MSG_FILAMENT_CHANGE_INSERT_2 |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEAT_2); |
|
|
|
#define _FC_LINES_D 3 |
|
|
|
#else |
|
|
|
#define _FC_LINES_D 2 |
|
|
|
#endif |
|
|
|
#if LCD_HEIGHT > _FC_LINES_D + 1 |
|
|
|
STATIC_ITEM(" "); |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); |
|
|
|
lcd_implementation_hotend_status(); |
|
|
|
#endif |
|
|
|
HOTEND_STATUS_ITEM(); |
|
|
|
END_SCREEN(); |
|
|
|
} |
|
|
|
|
|
|
@ -2546,12 +2560,20 @@ KeepDrawing: |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_1); |
|
|
|
#ifdef MSG_FILAMENT_CHANGE_INSERT_2 |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_2); |
|
|
|
#define __FC_LINES_E 3 |
|
|
|
#else |
|
|
|
#define __FC_LINES_E 2 |
|
|
|
#endif |
|
|
|
#ifdef MSG_FILAMENT_CHANGE_INSERT_3 |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_3); |
|
|
|
#define _FC_LINES_E (__FC_LINES_E + 1) |
|
|
|
#else |
|
|
|
#define _FC_LINES_E __FC_LINES_E |
|
|
|
#endif |
|
|
|
#if LCD_HEIGHT > _FC_LINES_E + 1 |
|
|
|
STATIC_ITEM(" "); |
|
|
|
#endif |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); |
|
|
|
lcd_implementation_hotend_status(); |
|
|
|
HOTEND_STATUS_ITEM(); |
|
|
|
END_SCREEN(); |
|
|
|
} |
|
|
|
|
|
|
@ -2561,13 +2583,20 @@ KeepDrawing: |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_1); |
|
|
|
#ifdef MSG_FILAMENT_CHANGE_LOAD_2 |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_2); |
|
|
|
#define __FC_LINES_F 3 |
|
|
|
#else |
|
|
|
#define __FC_LINES_F 2 |
|
|
|
#endif |
|
|
|
#ifdef MSG_FILAMENT_CHANGE_LOAD_3 |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_3); |
|
|
|
#define _FC_LINES_F (__FC_LINES_F + 1) |
|
|
|
#else |
|
|
|
#define _FC_LINES_F __FC_LINES_F |
|
|
|
#endif |
|
|
|
#if LCD_HEIGHT > _FC_LINES_F + 1 |
|
|
|
STATIC_ITEM(" "); |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); |
|
|
|
lcd_implementation_hotend_status(); |
|
|
|
#endif |
|
|
|
HOTEND_STATUS_ITEM(); |
|
|
|
END_SCREEN(); |
|
|
|
} |
|
|
|
|
|
|
@ -2577,13 +2606,20 @@ KeepDrawing: |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_1); |
|
|
|
#ifdef MSG_FILAMENT_CHANGE_EXTRUDE_2 |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_2); |
|
|
|
#define __FC_LINES_G 3 |
|
|
|
#else |
|
|
|
#define __FC_LINES_G 2 |
|
|
|
#endif |
|
|
|
#ifdef MSG_FILAMENT_CHANGE_EXTRUDE_3 |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_3); |
|
|
|
#define _FC_LINES_G (__FC_LINES_G + 1) |
|
|
|
#else |
|
|
|
#define _FC_LINES_G __FC_LINES_G |
|
|
|
#endif |
|
|
|
#if LCD_HEIGHT > _FC_LINES_G + 1 |
|
|
|
STATIC_ITEM(" "); |
|
|
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); |
|
|
|
lcd_implementation_hotend_status(); |
|
|
|
#endif |
|
|
|
HOTEND_STATUS_ITEM(); |
|
|
|
END_SCREEN(); |
|
|
|
} |
|
|
|
|
|
|
@ -2967,7 +3003,7 @@ bool lcd_blink() { |
|
|
|
* - if (lcdDrawUpdate) { redraw } |
|
|
|
* - Before exiting the handler set lcdDrawUpdate to: |
|
|
|
* - LCDVIEW_CLEAR_CALL_REDRAW to clear screen and set LCDVIEW_CALL_REDRAW_NEXT. |
|
|
|
* - LCDVIEW_REDRAW_NOW or LCDVIEW_NONE to keep drawingm but only in this loop. |
|
|
|
* - LCDVIEW_REDRAW_NOW or LCDVIEW_NONE to keep drawing, but only in this loop. |
|
|
|
* - LCDVIEW_CALL_REDRAW_NEXT to keep drawing and draw on the next loop also. |
|
|
|
* - LCDVIEW_CALL_NO_REDRAW to keep drawing (or start drawing) with no redraw on the next loop. |
|
|
|
* - NOTE: For graphical displays menu handlers may be called 2 or more times per loop, |
|
|
@ -3083,13 +3119,7 @@ void lcd_update() { |
|
|
|
encoderDiff = 0; |
|
|
|
} |
|
|
|
return_to_status_ms = ms + LCD_TIMEOUT_TO_STATUS; |
|
|
|
lcdDrawUpdate = |
|
|
|
#if ENABLED(DOGLCD) |
|
|
|
LCDVIEW_CALL_REDRAW_NEXT |
|
|
|
#else |
|
|
|
LCDVIEW_REDRAW_NOW |
|
|
|
#endif |
|
|
|
; |
|
|
|
lcdDrawUpdate = LCDVIEW_KEEP_REDRAWING; |
|
|
|
} |
|
|
|
#endif // ULTIPANEL
|
|
|
|
|
|
|
|