|  |  |  | @ -54,6 +54,7 @@ char lcd_status_message[3 * (LCD_WIDTH) + 1] = WELCOME_MSG; // worst case is kan | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | #if ENABLED(DOGLCD) | 
			
		
	
		
			
				
					|  |  |  |  |   #include "ultralcd_impl_DOGM.h" | 
			
		
	
		
			
				
					|  |  |  |  |   #include <U8glib.h> | 
			
		
	
		
			
				
					|  |  |  |  | #else | 
			
		
	
		
			
				
					|  |  |  |  |   #include "ultralcd_impl_HD44780.h" | 
			
		
	
		
			
				
					|  |  |  |  | #endif | 
			
		
	
	
		
			
				
					|  |  |  | @ -151,6 +152,7 @@ uint16_t max_display_update_time = 0; | 
			
		
	
		
			
				
					|  |  |  |  |     void lcd_filament_change_unload_message(); | 
			
		
	
		
			
				
					|  |  |  |  |     void lcd_filament_change_insert_message(); | 
			
		
	
		
			
				
					|  |  |  |  |     void lcd_filament_change_load_message(); | 
			
		
	
		
			
				
					|  |  |  |  |     void lcd_filament_change_heat_nozzle(); | 
			
		
	
		
			
				
					|  |  |  |  |     void lcd_filament_change_extrude_message(); | 
			
		
	
		
			
				
					|  |  |  |  |     void lcd_filament_change_resume_message(); | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
	
		
			
				
					|  |  |  | @ -948,7 +950,8 @@ void kill_screen(const char* lcd_msg) { | 
			
		
	
		
			
				
					|  |  |  |  |     // Change filament
 | 
			
		
	
		
			
				
					|  |  |  |  |     //
 | 
			
		
	
		
			
				
					|  |  |  |  |     #if ENABLED(FILAMENT_CHANGE_FEATURE) | 
			
		
	
		
			
				
					|  |  |  |  |        MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change); | 
			
		
	
		
			
				
					|  |  |  |  |    	  if (!thermalManager.tooColdToExtrude(active_extruder)) | 
			
		
	
		
			
				
					|  |  |  |  |         MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change); | 
			
		
	
		
			
				
					|  |  |  |  |     #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     END_MENU(); | 
			
		
	
	
		
			
				
					|  |  |  | @ -1384,11 +1387,13 @@ KeepDrawing: | 
			
		
	
		
			
				
					|  |  |  |  |         MENU_ITEM(function, MSG_PREHEAT_1, lcd_preheat_material1_hotend0); | 
			
		
	
		
			
				
					|  |  |  |  |         MENU_ITEM(function, MSG_PREHEAT_2, lcd_preheat_material2_hotend0); | 
			
		
	
		
			
				
					|  |  |  |  |       #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       //
 | 
			
		
	
		
			
				
					|  |  |  |  |       // Change filament
 | 
			
		
	
		
			
				
					|  |  |  |  |       //
 | 
			
		
	
		
			
				
					|  |  |  |  |       #if ENABLED(FILAMENT_CHANGE_FEATURE) | 
			
		
	
		
			
				
					|  |  |  |  |         MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change); | 
			
		
	
		
			
				
					|  |  |  |  |         if (!thermalManager.tooColdToExtrude(active_extruder)) | 
			
		
	
		
			
				
					|  |  |  |  |           MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change); | 
			
		
	
		
			
				
					|  |  |  |  |       #endif | 
			
		
	
		
			
				
					|  |  |  |  |     #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -2441,11 +2446,21 @@ KeepDrawing: | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  |   #endif // LCD_INFO_MENU
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     /**
 | 
			
		
	
		
			
				
					|  |  |  |  |      * | 
			
		
	
		
			
				
					|  |  |  |  |      * Filament Change Feature Screens | 
			
		
	
		
			
				
					|  |  |  |  |      * | 
			
		
	
		
			
				
					|  |  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |  |   #if ENABLED(FILAMENT_CHANGE_FEATURE) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     void lcd_filament_change_toocold_menu() { | 
			
		
	
		
			
				
					|  |  |  |  |       START_MENU(); | 
			
		
	
		
			
				
					|  |  |  |  |       STATIC_ITEM(MSG_HEATING_FAILED_LCD, true, true); | 
			
		
	
		
			
				
					|  |  |  |  |       MENU_BACK(MSG_FILAMENTCHANGE); | 
			
		
	
		
			
				
					|  |  |  |  |       STATIC_ITEM (MSG_FILAMENT_CHANGE_MINTEMP STRINGIFY(EXTRUDE_MINTEMP) ".", false, false); | 
			
		
	
		
			
				
					|  |  |  |  |       MENU_BACK(MSG_BACK); | 
			
		
	
		
			
				
					|  |  |  |  |       STATIC_ITEM (" "); | 
			
		
	
		
			
				
					|  |  |  |  |       STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); | 
			
		
	
		
			
				
					|  |  |  |  |       lcd_implementation_hotend_status(); | 
			
		
	
		
			
				
					|  |  |  |  |       END_MENU(); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -2478,6 +2493,8 @@ KeepDrawing: | 
			
		
	
		
			
				
					|  |  |  |  |       #ifdef MSG_FILAMENT_CHANGE_INIT_3 | 
			
		
	
		
			
				
					|  |  |  |  |         STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_3); | 
			
		
	
		
			
				
					|  |  |  |  |       #endif | 
			
		
	
		
			
				
					|  |  |  |  |       STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); | 
			
		
	
		
			
				
					|  |  |  |  |       lcd_implementation_hotend_status(); | 
			
		
	
		
			
				
					|  |  |  |  |       END_SCREEN(); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -2491,6 +2508,35 @@ KeepDrawing: | 
			
		
	
		
			
				
					|  |  |  |  |       #ifdef MSG_FILAMENT_CHANGE_UNLOAD_3 | 
			
		
	
		
			
				
					|  |  |  |  |         STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_3); | 
			
		
	
		
			
				
					|  |  |  |  |       #endif | 
			
		
	
		
			
				
					|  |  |  |  |       STATIC_ITEM (" "); | 
			
		
	
		
			
				
					|  |  |  |  |       STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); | 
			
		
	
		
			
				
					|  |  |  |  |       lcd_implementation_hotend_status(); | 
			
		
	
		
			
				
					|  |  |  |  |       END_SCREEN(); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     void lcd_filament_change_wait_for_nozzles_to_heat() { | 
			
		
	
		
			
				
					|  |  |  |  |       START_SCREEN(); | 
			
		
	
		
			
				
					|  |  |  |  |       STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true); | 
			
		
	
		
			
				
					|  |  |  |  |       STATIC_ITEM(MSG_FILAMENT_CHANGE_HEATING_1); | 
			
		
	
		
			
				
					|  |  |  |  |       #ifdef MSG_FILAMENT_CHANGE_HEATING_2 | 
			
		
	
		
			
				
					|  |  |  |  |         STATIC_ITEM(MSG_FILAMENT_CHANGE_HEATING_2); | 
			
		
	
		
			
				
					|  |  |  |  |       #endif | 
			
		
	
		
			
				
					|  |  |  |  |       STATIC_ITEM(" "); | 
			
		
	
		
			
				
					|  |  |  |  |       STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); | 
			
		
	
		
			
				
					|  |  |  |  |       lcd_implementation_hotend_status(); | 
			
		
	
		
			
				
					|  |  |  |  |       END_SCREEN(); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     void lcd_filament_change_heat_nozzle() { | 
			
		
	
		
			
				
					|  |  |  |  |       START_SCREEN(); | 
			
		
	
		
			
				
					|  |  |  |  |       STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true); | 
			
		
	
		
			
				
					|  |  |  |  |       STATIC_ITEM(MSG_FILAMENT_CHANGE_HEAT_1); | 
			
		
	
		
			
				
					|  |  |  |  |       #ifdef MSG_FILAMENT_CHANGE_INSERT_2 | 
			
		
	
		
			
				
					|  |  |  |  |         STATIC_ITEM(MSG_FILAMENT_CHANGE_HEAT_2); | 
			
		
	
		
			
				
					|  |  |  |  |       #endif | 
			
		
	
		
			
				
					|  |  |  |  |       STATIC_ITEM(" "); | 
			
		
	
		
			
				
					|  |  |  |  |       STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); | 
			
		
	
		
			
				
					|  |  |  |  |       lcd_implementation_hotend_status(); | 
			
		
	
		
			
				
					|  |  |  |  |       END_SCREEN(); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -2504,6 +2550,8 @@ KeepDrawing: | 
			
		
	
		
			
				
					|  |  |  |  |       #ifdef MSG_FILAMENT_CHANGE_INSERT_3 | 
			
		
	
		
			
				
					|  |  |  |  |         STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_3); | 
			
		
	
		
			
				
					|  |  |  |  |       #endif | 
			
		
	
		
			
				
					|  |  |  |  |       STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); | 
			
		
	
		
			
				
					|  |  |  |  |       lcd_implementation_hotend_status(); | 
			
		
	
		
			
				
					|  |  |  |  |       END_SCREEN(); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -2517,6 +2565,9 @@ KeepDrawing: | 
			
		
	
		
			
				
					|  |  |  |  |       #ifdef MSG_FILAMENT_CHANGE_LOAD_3 | 
			
		
	
		
			
				
					|  |  |  |  |         STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_3); | 
			
		
	
		
			
				
					|  |  |  |  |       #endif | 
			
		
	
		
			
				
					|  |  |  |  |       STATIC_ITEM(" "); | 
			
		
	
		
			
				
					|  |  |  |  |       STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); | 
			
		
	
		
			
				
					|  |  |  |  |       lcd_implementation_hotend_status(); | 
			
		
	
		
			
				
					|  |  |  |  |       END_SCREEN(); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -2530,6 +2581,9 @@ KeepDrawing: | 
			
		
	
		
			
				
					|  |  |  |  |       #ifdef MSG_FILAMENT_CHANGE_EXTRUDE_3 | 
			
		
	
		
			
				
					|  |  |  |  |         STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_3); | 
			
		
	
		
			
				
					|  |  |  |  |       #endif | 
			
		
	
		
			
				
					|  |  |  |  |       STATIC_ITEM(" "); | 
			
		
	
		
			
				
					|  |  |  |  |       STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); | 
			
		
	
		
			
				
					|  |  |  |  |       lcd_implementation_hotend_status(); | 
			
		
	
		
			
				
					|  |  |  |  |       END_SCREEN(); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -2550,20 +2604,33 @@ KeepDrawing: | 
			
		
	
		
			
				
					|  |  |  |  |       switch (message) { | 
			
		
	
		
			
				
					|  |  |  |  |         case FILAMENT_CHANGE_MESSAGE_INIT: | 
			
		
	
		
			
				
					|  |  |  |  |           defer_return_to_status = true; | 
			
		
	
		
			
				
					|  |  |  |  |           lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT; | 
			
		
	
		
			
				
					|  |  |  |  |           lcd_goto_screen(lcd_filament_change_init_message); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case FILAMENT_CHANGE_MESSAGE_UNLOAD: | 
			
		
	
		
			
				
					|  |  |  |  |           lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT; | 
			
		
	
		
			
				
					|  |  |  |  |           lcd_goto_screen(lcd_filament_change_unload_message); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case FILAMENT_CHANGE_MESSAGE_INSERT: | 
			
		
	
		
			
				
					|  |  |  |  |           lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT; | 
			
		
	
		
			
				
					|  |  |  |  |           lcd_goto_screen(lcd_filament_change_insert_message); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case FILAMENT_CHANGE_MESSAGE_LOAD: | 
			
		
	
		
			
				
					|  |  |  |  |           lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT; | 
			
		
	
		
			
				
					|  |  |  |  |           lcd_goto_screen(lcd_filament_change_load_message); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case FILAMENT_CHANGE_MESSAGE_EXTRUDE: | 
			
		
	
		
			
				
					|  |  |  |  |           lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT; | 
			
		
	
		
			
				
					|  |  |  |  |           lcd_goto_screen(lcd_filament_change_extrude_message); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case FILAMENT_CHANGE_MESSAGE_CLICK_TO_HEAT_NOZZLE: | 
			
		
	
		
			
				
					|  |  |  |  |           lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT; | 
			
		
	
		
			
				
					|  |  |  |  |           lcd_goto_screen(lcd_filament_change_heat_nozzle); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case FILAMENT_CHANGE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT: | 
			
		
	
		
			
				
					|  |  |  |  |           lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT; | 
			
		
	
		
			
				
					|  |  |  |  |           lcd_goto_screen(lcd_filament_change_wait_for_nozzles_to_heat); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case FILAMENT_CHANGE_MESSAGE_OPTION: | 
			
		
	
		
			
				
					|  |  |  |  |           filament_change_menu_response = FILAMENT_CHANGE_RESPONSE_WAIT_FOR; | 
			
		
	
		
			
				
					|  |  |  |  |           lcd_goto_screen(lcd_filament_change_option_menu); | 
			
		
	
	
		
			
				
					|  |  |  | 
 |