|
@ -507,6 +507,8 @@ uint16_t max_display_update_time = 0; |
|
|
return click; |
|
|
return click; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
inline bool printer_busy() { return planner.movesplanned() || IS_SD_PRINTING; } |
|
|
|
|
|
|
|
|
/**
|
|
|
/**
|
|
|
* General function to go directly to a screen |
|
|
* General function to go directly to a screen |
|
|
*/ |
|
|
*/ |
|
@ -526,7 +528,7 @@ uint16_t max_display_update_time = 0; |
|
|
if (currentScreen == lcd_status_screen) |
|
|
if (currentScreen == lcd_status_screen) |
|
|
doubleclick_expire_ms = millis() + DOUBLECLICK_MAX_INTERVAL; |
|
|
doubleclick_expire_ms = millis() + DOUBLECLICK_MAX_INTERVAL; |
|
|
} |
|
|
} |
|
|
else if (screen == lcd_status_screen && currentScreen == lcd_main_menu && PENDING(millis(), doubleclick_expire_ms)/* && (planner.movesplanned() || IS_SD_PRINTING)*/) |
|
|
else if (screen == lcd_status_screen && currentScreen == lcd_main_menu && PENDING(millis(), doubleclick_expire_ms)/* && printer_busy()*/) |
|
|
screen = |
|
|
screen = |
|
|
#if ENABLED(BABYSTEP_ZPROBE_OFFSET) |
|
|
#if ENABLED(BABYSTEP_ZPROBE_OFFSET) |
|
|
lcd_babystep_zoffset |
|
|
lcd_babystep_zoffset |
|
@ -1053,6 +1055,7 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
static void IDEX_menu() { |
|
|
static void IDEX_menu() { |
|
|
START_MENU(); |
|
|
START_MENU(); |
|
|
MENU_BACK(MSG_MAIN); |
|
|
MENU_BACK(MSG_MAIN); |
|
|
|
|
|
|
|
|
MENU_ITEM(gcode, MSG_IDEX_MODE_AUTOPARK, PSTR("M605 S1\nG28 X\nG1 X100")); |
|
|
MENU_ITEM(gcode, MSG_IDEX_MODE_AUTOPARK, PSTR("M605 S1\nG28 X\nG1 X100")); |
|
|
const bool need_g28 = !(TEST(axis_known_position, Y_AXIS) && TEST(axis_known_position, Z_AXIS)); |
|
|
const bool need_g28 = !(TEST(axis_known_position, Y_AXIS) && TEST(axis_known_position, Z_AXIS)); |
|
|
MENU_ITEM(gcode, MSG_IDEX_MODE_DUPLICATE, need_g28 |
|
|
MENU_ITEM(gcode, MSG_IDEX_MODE_DUPLICATE, need_g28 |
|
@ -1145,32 +1148,6 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
START_MENU(); |
|
|
START_MENU(); |
|
|
MENU_BACK(MSG_WATCH); |
|
|
MENU_BACK(MSG_WATCH); |
|
|
|
|
|
|
|
|
#if ENABLED(CUSTOM_USER_MENUS) |
|
|
|
|
|
MENU_ITEM(submenu, MSG_USER_MENU, _lcd_user_menu); |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(DUAL_X_CARRIAGE) |
|
|
|
|
|
MENU_ITEM(submenu, MSG_IDEX_MENU, IDEX_menu); |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
// Debug Menu when certain options are enabled
|
|
|
|
|
|
//
|
|
|
|
|
|
#if HAS_DEBUG_MENU |
|
|
|
|
|
MENU_ITEM(submenu, MSG_DEBUG_MENU, lcd_debug_menu); |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
// Set Case light on/off/brightness
|
|
|
|
|
|
//
|
|
|
|
|
|
#if ENABLED(MENU_ITEM_CASE_LIGHT) |
|
|
|
|
|
if (USEABLE_HARDWARE_PWM(CASE_LIGHT_PIN)) { |
|
|
|
|
|
MENU_ITEM(submenu, MSG_CASE_LIGHT, case_light_menu); |
|
|
|
|
|
} |
|
|
|
|
|
else |
|
|
|
|
|
MENU_ITEM_EDIT_CALLBACK(bool, MSG_CASE_LIGHT, (bool*)&case_light_on, update_case_light); |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(SDSUPPORT) |
|
|
#if ENABLED(SDSUPPORT) |
|
|
if (card.cardOK) { |
|
|
if (card.cardOK) { |
|
|
if (card.isFileOpen()) { |
|
|
if (card.isFileOpen()) { |
|
@ -1195,14 +1172,20 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
} |
|
|
} |
|
|
#endif // SDSUPPORT
|
|
|
#endif // SDSUPPORT
|
|
|
|
|
|
|
|
|
if (planner.movesplanned() || IS_SD_PRINTING) |
|
|
const bool busy = printer_busy(); |
|
|
|
|
|
if (busy) |
|
|
MENU_ITEM(submenu, MSG_TUNE, lcd_tune_menu); |
|
|
MENU_ITEM(submenu, MSG_TUNE, lcd_tune_menu); |
|
|
else { |
|
|
else { |
|
|
MENU_ITEM(submenu, MSG_MOTION, lcd_movement_menu); |
|
|
MENU_ITEM(submenu, MSG_MOTION, lcd_movement_menu); |
|
|
MENU_ITEM(submenu, MSG_TEMPERATURE, lcd_temperature_menu); |
|
|
MENU_ITEM(submenu, MSG_TEMPERATURE, lcd_temperature_menu); |
|
|
MENU_ITEM(submenu, MSG_CONFIGURATION, lcd_configuration_menu); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
MENU_ITEM(submenu, MSG_CONFIGURATION, lcd_configuration_menu); |
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(CUSTOM_USER_MENUS) |
|
|
|
|
|
MENU_ITEM(submenu, MSG_USER_MENU, _lcd_user_menu); |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
#if ENABLED(ADVANCED_PAUSE_FEATURE) |
|
|
#if ENABLED(ADVANCED_PAUSE_FEATURE) |
|
|
#if E_STEPPERS == 1 && DISABLED(FILAMENT_LOAD_UNLOAD_GCODES) |
|
|
#if E_STEPPERS == 1 && DISABLED(FILAMENT_LOAD_UNLOAD_GCODES) |
|
|
if (thermalManager.targetHotEnoughToExtrude(active_extruder)) |
|
|
if (thermalManager.targetHotEnoughToExtrude(active_extruder)) |
|
@ -1236,7 +1219,8 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
// Autostart
|
|
|
// Autostart
|
|
|
//
|
|
|
//
|
|
|
#if ENABLED(SDSUPPORT) && ENABLED(MENU_ADDAUTOSTART) |
|
|
#if ENABLED(SDSUPPORT) && ENABLED(MENU_ADDAUTOSTART) |
|
|
MENU_ITEM(function, MSG_AUTOSTART, lcd_autostart_sd); |
|
|
if (!busy) |
|
|
|
|
|
MENU_ITEM(function, MSG_AUTOSTART, lcd_autostart_sd); |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
END_MENU(); |
|
|
END_MENU(); |
|
@ -2727,7 +2711,7 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
* Load Settings (Req: EEPROM_SETTINGS) |
|
|
* Load Settings (Req: EEPROM_SETTINGS) |
|
|
* Save Settings (Req: EEPROM_SETTINGS) |
|
|
* Save Settings (Req: EEPROM_SETTINGS) |
|
|
*/ |
|
|
*/ |
|
|
void lcd_bed_leveling() { |
|
|
void lcd_bed_leveling_menu() { |
|
|
START_MENU(); |
|
|
START_MENU(); |
|
|
MENU_BACK(MSG_MOTION); |
|
|
MENU_BACK(MSG_MOTION); |
|
|
|
|
|
|
|
@ -2836,7 +2820,7 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
#if ENABLED(PROBE_MANUALLY) |
|
|
#if ENABLED(PROBE_MANUALLY) |
|
|
if (!g29_in_progress) |
|
|
if (!g29_in_progress) |
|
|
#endif |
|
|
#endif |
|
|
MENU_ITEM(submenu, MSG_BED_LEVELING, lcd_bed_leveling); |
|
|
MENU_ITEM(submenu, MSG_BED_LEVELING, lcd_bed_leveling_menu); |
|
|
|
|
|
|
|
|
#elif HAS_LEVELING && DISABLED(SLIM_LCD_MENUS) |
|
|
#elif HAS_LEVELING && DISABLED(SLIM_LCD_MENUS) |
|
|
|
|
|
|
|
@ -3418,13 +3402,41 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
START_MENU(); |
|
|
START_MENU(); |
|
|
MENU_BACK(MSG_MAIN); |
|
|
MENU_BACK(MSG_MAIN); |
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
// Debug Menu when certain options are enabled
|
|
|
|
|
|
//
|
|
|
|
|
|
#if HAS_DEBUG_MENU |
|
|
|
|
|
MENU_ITEM(submenu, MSG_DEBUG_MENU, lcd_debug_menu); |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
MENU_ITEM(submenu, MSG_ADVANCED_SETTINGS, lcd_advanced_settings_menu); |
|
|
MENU_ITEM(submenu, MSG_ADVANCED_SETTINGS, lcd_advanced_settings_menu); |
|
|
|
|
|
|
|
|
|
|
|
const bool busy = printer_busy(); |
|
|
|
|
|
if (!busy) { |
|
|
|
|
|
//
|
|
|
|
|
|
// Delta Calibration
|
|
|
|
|
|
//
|
|
|
|
|
|
#if ENABLED(DELTA_CALIBRATION_MENU) || ENABLED(DELTA_AUTO_CALIBRATION) |
|
|
|
|
|
MENU_ITEM(submenu, MSG_DELTA_CALIBRATE, lcd_delta_calibrate_menu); |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(DUAL_X_CARRIAGE) |
|
|
|
|
|
MENU_ITEM(submenu, MSG_IDEX_MENU, IDEX_menu); |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(BLTOUCH) |
|
|
|
|
|
MENU_ITEM(submenu, MSG_BLTOUCH, bltouch_menu); |
|
|
|
|
|
#endif |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
//
|
|
|
//
|
|
|
// Delta Calibration
|
|
|
// Set Case light on/off/brightness
|
|
|
//
|
|
|
//
|
|
|
#if ENABLED(DELTA_CALIBRATION_MENU) || ENABLED(DELTA_AUTO_CALIBRATION) |
|
|
#if ENABLED(MENU_ITEM_CASE_LIGHT) |
|
|
MENU_ITEM(submenu, MSG_DELTA_CALIBRATE, lcd_delta_calibrate_menu); |
|
|
if (USEABLE_HARDWARE_PWM(CASE_LIGHT_PIN)) |
|
|
|
|
|
MENU_ITEM(submenu, MSG_CASE_LIGHT, case_light_menu); |
|
|
|
|
|
else |
|
|
|
|
|
MENU_ITEM_EDIT_CALLBACK(bool, MSG_CASE_LIGHT, (bool*)&case_light_on, update_case_light); |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
#if HAS_LCD_CONTRAST |
|
|
#if HAS_LCD_CONTRAST |
|
@ -3440,10 +3452,6 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
MENU_ITEM(submenu, MSG_DRIVE_STRENGTH, lcd_pwm_menu); |
|
|
MENU_ITEM(submenu, MSG_DRIVE_STRENGTH, lcd_pwm_menu); |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
#if ENABLED(BLTOUCH) |
|
|
|
|
|
MENU_ITEM(submenu, MSG_BLTOUCH, bltouch_menu); |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(FILAMENT_RUNOUT_SENSOR) |
|
|
#if ENABLED(FILAMENT_RUNOUT_SENSOR) |
|
|
MENU_ITEM_EDIT(bool, MSG_RUNOUT_SENSOR_ENABLE, &runout.enabled); |
|
|
MENU_ITEM_EDIT(bool, MSG_RUNOUT_SENSOR_ENABLE, &runout.enabled); |
|
|
#endif |
|
|
#endif |
|
@ -3456,10 +3464,12 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
|
#if ENABLED(EEPROM_SETTINGS) |
|
|
#if ENABLED(EEPROM_SETTINGS) |
|
|
MENU_ITEM(function, MSG_STORE_EEPROM, lcd_store_settings); |
|
|
MENU_ITEM(function, MSG_STORE_EEPROM, lcd_store_settings); |
|
|
MENU_ITEM(function, MSG_LOAD_EEPROM, lcd_load_settings); |
|
|
if (!busy) |
|
|
|
|
|
MENU_ITEM(function, MSG_LOAD_EEPROM, lcd_load_settings); |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
MENU_ITEM(function, MSG_RESTORE_FAILSAFE, lcd_factory_settings); |
|
|
if (!busy) |
|
|
|
|
|
MENU_ITEM(function, MSG_RESTORE_FAILSAFE, lcd_factory_settings); |
|
|
|
|
|
|
|
|
END_MENU(); |
|
|
END_MENU(); |
|
|
} |
|
|
} |
|
@ -4670,7 +4680,7 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
#endif // E_STEPPERS == 1
|
|
|
#endif // E_STEPPERS == 1
|
|
|
|
|
|
|
|
|
#if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) |
|
|
#if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) |
|
|
if (!planner.movesplanned() && !IS_SD_FILE_OPEN) { |
|
|
if (!printer_busy()) { |
|
|
// Load filament
|
|
|
// Load filament
|
|
|
#if E_STEPPERS == 1 |
|
|
#if E_STEPPERS == 1 |
|
|
PGM_P msg0 = PSTR(MSG_FILAMENTLOAD); |
|
|
PGM_P msg0 = PSTR(MSG_FILAMENTLOAD); |
|
|