diff --git a/Marlin/src/lcd/e3v2/common/dwin_set.h b/Marlin/src/lcd/e3v2/common/dwin_set.h index 7f4438695478..3601f58e133e 100644 --- a/Marlin/src/lcd/e3v2/common/dwin_set.h +++ b/Marlin/src/lcd/e3v2/common/dwin_set.h @@ -145,3 +145,9 @@ #define ICON_ProbeOffsetZ ICON_StepZ #define ICON_PIDNozzle ICON_SetEndTemp #define ICON_PIDbed ICON_SetBedTemp +#define ICON_FWRetract ICON_StepE +#define ICON_FWRetLength ICON_StepE +#define ICON_FWRetSpeed ICON_Setspeed +#define ICON_FWRetZRaise ICON_MoveZ +#define ICON_FWRecSpeed ICON_Setspeed +#define ICON_FWRecExtra ICON_StepE diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index 0b3c979d9e7d..d945db8e588c 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -91,7 +91,7 @@ #define MENU_CHAR_LIMIT 24 #define STATUS_Y 352 -#define MAX_PRINT_SPEED 500 +#define MAX_PRINT_SPEED 999 #define MIN_PRINT_SPEED 10 #if HAS_FAN @@ -111,7 +111,7 @@ #endif #if HAS_HOTEND - #define MAX_FLOW_RATE 200 + #define MAX_FLOW_RATE 299 #define MIN_FLOW_RATE 10 #define MAX_E_TEMP (HEATER_0_MAXTEMP - HOTEND_OVERSHOOT) @@ -119,7 +119,7 @@ #endif #if HAS_HEATED_BED - #define MAX_BED_TEMP BED_MAXTEMP + #define MAX_BED_TEMP BED_MAX_TARGET #define MIN_BED_TEMP 0 #endif @@ -400,7 +400,7 @@ class TextScroller { else msg.setf(F("%02i"), uint16_t(abs(bedlevel.z_values[x][y] - int16_t(bedlevel.z_values[x][y])) * 100)); offset_x = cell_width_px / 2 - 3 * msg.length() - 2; - if (!(GRID_MAX_POINTS_X < 10)) + if (GRID_MAX_POINTS_X >= 10) dwinDrawString(false, font6x12, COLOR_WHITE, COLOR_BG_BLUE, start_x_px - 2 + offset_x, start_y_px + offset_y /*+ square / 2 - 6*/, F(".")); dwinDrawString(false, font6x12, COLOR_WHITE, COLOR_BG_BLUE, start_x_px + 1 + offset_x, start_y_px + offset_y /*+ square / 2 - 6*/, msg); } @@ -427,7 +427,7 @@ class TextScroller { v1 = -rmax; v2 = rmin; } - jyersDWIN.updateStatus(TS(F("Red "), p_float_t(v1, 3) , F("..0.."), p_float_t(v2, 3), F(" Green"))); + jyersDWIN.updateStatus(TS(GET_TEXT_F(MSG_COLORS_RED), ' ', p_float_t(v1, 3) , F("..0.."), p_float_t(v2, 3), ' ', GET_TEXT_F(MSG_COLORS_GREEN))); drawing_mesh = false; } @@ -580,49 +580,49 @@ void JyersDWIN::mainMenuIcons() { if (selection == 0) { dwinIconShow(ICON, ICON_Print_1, 17, 130); dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, COLOR_WHITE), 17, 130, 126, 229); - dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 52, 200, F("Print")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 52, 200, GET_TEXT_F(MSG_BUTTON_PRINT)); } else { dwinIconShow(ICON, ICON_Print_0, 17, 130); - dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 52, 200, F("Print")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 52, 200, GET_TEXT_F(MSG_BUTTON_PRINT)); } if (selection == 1) { dwinIconShow(ICON, ICON_Prepare_1, 145, 130); dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, COLOR_WHITE), 145, 130, 254, 229); - dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 170, 200, F("Prepare")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 170, 200, GET_TEXT_F(MSG_PREPARE)); } else { dwinIconShow(ICON, ICON_Prepare_0, 145, 130); - dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 170, 200, F("Prepare")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 170, 200, GET_TEXT_F(MSG_PREPARE)); } if (selection == 2) { dwinIconShow(ICON, ICON_Control_1, 17, 246); dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, COLOR_WHITE), 17, 246, 126, 345); - dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 43, 317, F("Control")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 43, 317, GET_TEXT_F(MSG_CONTROL)); } else { dwinIconShow(ICON, ICON_Control_0, 17, 246); - dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 43, 317, F("Control")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 43, 317, GET_TEXT_F(MSG_CONTROL)); } #if HAS_ABL_OR_UBL if (selection == 3) { dwinIconShow(ICON, ICON_Leveling_1, 145, 246); dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, COLOR_WHITE), 145, 246, 254, 345); - dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 179, 317, F("Level")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 179, 317, GET_TEXT_F(MSG_BUTTON_LEVEL)); } else { dwinIconShow(ICON, ICON_Leveling_0, 145, 246); - dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 179, 317, F("Level")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 179, 317, GET_TEXT_F(MSG_BUTTON_LEVEL)); } #else if (selection == 3) { dwinIconShow(ICON, ICON_Info_1, 145, 246); dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, COLOR_WHITE), 145, 246, 254, 345); - dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 181, 317, F("Info")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 181, 317, GET_TEXT_F(MSG_BUTTON_INFO)); } else { dwinIconShow(ICON, ICON_Info_0, 145, 246); - dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 181, 317, F("Info")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 181, 317, GET_TEXT_F(MSG_BUTTON_INFO)); } #endif } @@ -642,41 +642,41 @@ void JyersDWIN::printScreenIcons() { if (selection == 0) { dwinIconShow(ICON, ICON_Setup_1, 8, 252); dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, COLOR_WHITE), 8, 252, 87, 351); - dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 30, 322, F("Tune")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 30, 322, GET_TEXT_F(MSG_TUNE)); } else { dwinIconShow(ICON, ICON_Setup_0, 8, 252); - dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 30, 322, F("Tune")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 30, 322, GET_TEXT_F(MSG_TUNE)); } if (selection == 2) { dwinIconShow(ICON, ICON_Stop_1, 184, 252); dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, COLOR_WHITE), 184, 252, 263, 351); - dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 205, 322, F("Stop")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 205, 322, GET_TEXT_F(MSG_BUTTON_STOP)); } else { dwinIconShow(ICON, ICON_Stop_0, 184, 252); - dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 205, 322, F("Stop")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 205, 322, GET_TEXT_F(MSG_BUTTON_STOP)); } if (paused) { if (selection == 1) { dwinIconShow(ICON, ICON_Continue_1, 96, 252); dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, COLOR_WHITE), 96, 252, 175, 351); - dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 114, 322, F("Print")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 114, 322, GET_TEXT_F(MSG_BUTTON_PRINT)); } else { dwinIconShow(ICON, ICON_Continue_0, 96, 252); - dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 114, 322, F("Print")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 114, 322, GET_TEXT_F(MSG_BUTTON_PRINT)); } } else { if (selection == 1) { dwinIconShow(ICON, ICON_Pause_1, 96, 252); dwinDrawRectangle(0, getColor(eeprom_settings.highlight_box, COLOR_WHITE), 96, 252, 175, 351); - dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 114, 322, F("Pause")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 114, 322, GET_TEXT_F(MSG_BUTTON_PAUSE)); } else { dwinIconShow(ICON, ICON_Pause_0, 96, 252); - dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 114, 322, F("Pause")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLUE, 114, 322, GET_TEXT_F(MSG_BUTTON_PAUSE)); } } } @@ -686,12 +686,12 @@ void JyersDWIN::drawPrintScreen() { selection = 0; clearScreen(); dwinDrawRectangle(1, COLOR_BG_BLACK, 8, 352, DWIN_WIDTH - 8, 376); - drawTitle("Printing..."); + drawTitle(GET_TEXT_F(MSG_PRINTING)); printScreenIcons(); dwinIconShow(ICON, ICON_PrintTime, 14, 171); dwinIconShow(ICON, ICON_RemainTime, 147, 169); dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLACK, 41, 163, F("Elapsed")); - dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLACK, 176, 163, F("Remaining")); + dwinDrawString(false, DWIN_FONT_MENU, COLOR_WHITE, COLOR_BG_BLACK, 176, 163, GET_TEXT_F(MSG_REMAINING_TIME)); updateStatusBar(true); drawPrintProgressBar(); drawPrintProgressElapsed(); @@ -761,7 +761,7 @@ void JyersDWIN::drawPrintConfirm() { void JyersDWIN::drawSDItem(const uint8_t item, const uint8_t row) { if (item == 0) - drawMenuItem(0, ICON_Back, card.flag.workDirIsRoot ? F("Back") : F("..")); + drawMenuItem(0, ICON_Back, card.flag.workDirIsRoot ? GET_TEXT_F(MSG_BACK) : F("..")); else { card.selectFileByIndexSorted(item - 1); char * const filename = card.longest_filename(); @@ -782,7 +782,7 @@ void JyersDWIN::drawSDItem(const uint8_t item, const uint8_t row) { void JyersDWIN::drawSDList(const bool removed/*=false*/) { clearScreen(); - drawTitle("Select File"); + drawTitle(GET_TEXT_F(MSG_MEDIA_MENU)); selection = 0; scrollpos = 0; process = Proc_File; @@ -791,9 +791,9 @@ void JyersDWIN::drawSDList(const bool removed/*=false*/) { drawSDItem(i, i); } else { - drawMenuItem(0, ICON_Back, F("Back")); + drawMenuItem(0, ICON_Back, GET_TEXT_F(MSG_BACK)); dwinDrawRectangle(1, COLOR_BG_RED, 10, MBASE(3) - 10, DWIN_WIDTH - 10, MBASE(4)); - dwinDrawString(false, font16x32, COLOR_YELLOW, COLOR_BG_RED, ((DWIN_WIDTH) - 8 * 16) / 2, MBASE(3), F("No Media")); + dwinDrawString(false, font16x32, COLOR_YELLOW, COLOR_BG_RED, ((DWIN_WIDTH) - 8 * 16) / 2, MBASE(3), GET_TEXT_F(MSG_NO_MEDIA)); } dwinDrawRectangle(1, getColor(eeprom_settings.cursor_color, COLOR_RECTANGLE), 0, MBASE(0) - 18, 14, MBASE(0) + 33); } @@ -942,13 +942,13 @@ void JyersDWIN::drawPopup(FSTR_P const line1, FSTR_P const line2, FSTR_P const l selection = 0; dwinDrawRectangle(1, COLOR_CONFIRM, 26, 280, 125, 317); dwinDrawRectangle(1, COLOR_CANCEL, 146, 280, 245, 317); - dwinDrawString(false, DWIN_FONT_STAT, COLOR_WHITE, COLOR_BG_WINDOW, 39, 290, F("Confirm")); - dwinDrawString(false, DWIN_FONT_STAT, COLOR_WHITE, COLOR_BG_WINDOW, 165, 290, F("Cancel")); + dwinDrawString(false, DWIN_FONT_STAT, COLOR_WHITE, COLOR_BG_WINDOW, 39, 290, GET_TEXT_F(MSG_BUTTON_CONFIRM)); + dwinDrawString(false, DWIN_FONT_STAT, COLOR_WHITE, COLOR_BG_WINDOW, 165, 290, GET_TEXT_F(MSG_BUTTON_CANCEL)); popupSelect(); } else if (mode == Proc_Confirm) { dwinDrawRectangle(1, COLOR_CONFIRM, 87, 280, 186, 317); - dwinDrawString(false, DWIN_FONT_STAT, COLOR_WHITE, COLOR_BG_WINDOW, 96, 290, F("Continue")); + dwinDrawString(false, DWIN_FONT_STAT, COLOR_WHITE, COLOR_BG_WINDOW, 96, 290, GET_TEXT_F(MSG_BUTTON_CONTINUE)); } } @@ -1015,14 +1015,14 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case PREHEAT_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_TempMenu, sel); break; #if HAS_HOTEND case PREHEAT_SUBMENU_HOTEND: if (draw) { - drawMenuItem(row, ICON_SetEndTemp, F("Hotend")); + drawMenuItem(row, ICON_SetEndTemp, GET_TEXT_F(MSG_NOZZLE)); drawFloat(ui.material_preset[index].hotend_temp, row, false, 1); } else @@ -1032,7 +1032,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if HAS_HEATED_BED case PREHEAT_SUBMENU_BED: if (draw) { - drawMenuItem(row, ICON_SetBedTemp, F("Bed")); + drawMenuItem(row, ICON_SetBedTemp, GET_TEXT_F(MSG_BED)); drawFloat(ui.material_preset[index].bed_temp, row, false, 1); } else @@ -1042,7 +1042,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if HAS_FAN case PREHEAT_SUBMENU_FAN: if (draw) { - drawMenuItem(row, ICON_FanSpeed, F("Fan")); + drawMenuItem(row, ICON_FanSpeed, GET_TEXT_F(MSG_FAN_SPEED)); drawFloat(ui.material_preset[index].fan_speed, row, false, 1); } else @@ -1067,30 +1067,31 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #define PREPARE_COOLDOWN (PREPARE_PREHEAT + ANY(HAS_HOTEND, HAS_HEATED_BED)) #define PREPARE_CHANGEFIL (PREPARE_COOLDOWN + ENABLED(ADVANCED_PAUSE_FEATURE)) #define PREPARE_CUSTOM_MENU (PREPARE_CHANGEFIL + ENABLED(HAS_CUSTOM_MENU)) - #define PREPARE_TOTAL PREPARE_CUSTOM_MENU + #define PREPARE_FWRETRACT (PREPARE_CUSTOM_MENU + ENABLED(FWRETRACT)) + #define PREPARE_TOTAL PREPARE_FWRETRACT switch (item) { case PREPARE_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMainMenu(1); break; case PREPARE_MOVE: if (draw) - drawMenuItem(row, ICON_Axis, F("Move"), nullptr, true); + drawMenuItem(row, ICON_Axis, GET_TEXT_F(MSG_MOVE_AXIS), nullptr, true); else drawMenu(ID_Move); break; case PREPARE_DISABLE: if (draw) - drawMenuItem(row, ICON_CloseMotor, F("Disable Stepper")); + drawMenuItem(row, ICON_CloseMotor, GET_TEXT_F(MSG_DISABLE_STEPPERS)); else queue.inject(F("M84")); break; case PREPARE_HOME: if (draw) - drawMenuItem(row, ICON_SetHome, F("Homing"), nullptr, true); + drawMenuItem(row, ICON_SetHome, GET_TEXT_F(MSG_HOMING), nullptr, true); else drawMenu(ID_HomeMenu); break; @@ -1136,7 +1137,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if HAS_HOTEND || HAS_HEATED_BED case PREPARE_COOLDOWN: if (draw) - drawMenuItem(row, ICON_Cool, F("Cooldown")); + drawMenuItem(row, ICON_Cool, GET_TEXT_F(MSG_COOLDOWN)); else thermalManager.cooldown(); break; @@ -1181,6 +1182,15 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra } break; #endif + + #if ENABLED(FWRETRACT) + case PREPARE_FWRETRACT: + if (draw) + drawMenuItem(row, ICON_SetHome, GET_TEXT_F(MSG_FWRETRACT), nullptr, true); + else + drawMenu(ID_FWMenu); + break; + #endif } break; @@ -1197,13 +1207,13 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case HOME_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_Prepare, PREPARE_HOME); break; case HOME_ALL: if (draw) - drawMenuItem(row, ICON_Homing, F("Home All")); + drawMenuItem(row, ICON_Homing, GET_TEXT_F(MSG_AUTO_HOME)); else { popupHandler(Popup_Home); gcode.home_all_axes(true); @@ -1212,37 +1222,37 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case HOME_X: if (draw) - drawMenuItem(row, ICON_MoveX, F("Home X")); + drawMenuItem(row, ICON_MoveX, GET_TEXT_F(MSG_AUTO_HOME_X)); else { popupHandler(Popup_Home); - gcode.process_subcommands_now(F("G28 X")); + gcode.process_subcommands_now(F("G28X")); planner.synchronize(); redrawMenu(); } break; case HOME_Y: if (draw) - drawMenuItem(row, ICON_MoveY, F("Home Y")); + drawMenuItem(row, ICON_MoveY, GET_TEXT_F(MSG_AUTO_HOME_X)); else { popupHandler(Popup_Home); - gcode.process_subcommands_now(F("G28 Y")); + gcode.process_subcommands_now(F("G28Y")); planner.synchronize(); redrawMenu(); } break; case HOME_Z: if (draw) - drawMenuItem(row, ICON_MoveZ, F("Home Z")); + drawMenuItem(row, ICON_MoveZ, GET_TEXT_F(MSG_AUTO_HOME_X)); else { popupHandler(Popup_Home); - gcode.process_subcommands_now(F("G28 Z")); + gcode.process_subcommands_now(F("G28Z")); planner.synchronize(); redrawMenu(); } break; case HOME_SET: if (draw) - drawMenuItem(row, ICON_SetHome, F("Set Home Position")); + drawMenuItem(row, ICON_SetHome, F("Set Home Here")); else { gcode.process_subcommands_now(F("G92X0Y0Z0")); audioFeedback(); @@ -1265,7 +1275,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case MOVE_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else { #if HAS_BED_PROBE probe_deployed = false; @@ -1276,7 +1286,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case MOVE_X: if (draw) { - drawMenuItem(row, ICON_MoveX, F("Move X")); + drawMenuItem(row, ICON_MoveX, GET_TEXT_F(MSG_MOVE_X)); drawFloat(current_position.x, row, false); } else @@ -1284,7 +1294,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case MOVE_Y: if (draw) { - drawMenuItem(row, ICON_MoveY, F("Move Y")); + drawMenuItem(row, ICON_MoveY, GET_TEXT_F(MSG_MOVE_Y)); drawFloat(current_position.y, row); } else @@ -1292,7 +1302,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case MOVE_Z: if (draw) { - drawMenuItem(row, ICON_MoveZ, F("Move Z")); + drawMenuItem(row, ICON_MoveZ, GET_TEXT_F(MSG_MOVE_Z)); drawFloat(current_position.z, row); } else @@ -1302,7 +1312,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if HAS_HOTEND case MOVE_E: if (draw) { - drawMenuItem(row, ICON_Extruder, F("Extruder")); + drawMenuItem(row, ICON_Extruder, GET_TEXT_F(MSG_MOVE_E)); current_position.e = 0; sync_plan_position(); drawFloat(current_position.e, row); @@ -1341,7 +1351,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case MOVE_LIVE: if (draw) { - drawMenuItem(row, ICON_Axis, F("Live Movement")); + drawMenuItem(row, ICON_Axis, GET_TEXT_F(MSG_LIVE_MOVE)); drawCheckbox(row, livemove); } else { @@ -1376,7 +1386,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case MLEVEL_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else { TERN_(HAS_LEVELING, set_bed_leveling_enabled(level_state)); drawMenu(ID_Prepare, PREPARE_MANUALLEVEL); @@ -1507,7 +1517,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case MLEVEL_C: if (draw) - drawMenuItem(row, ICON_AxisC, F("Center")); + drawMenuItem(row, ICON_AxisC, GET_TEXT_F(MSG_TRAM_C)); else { popupHandler(Popup_MoveWait); if (use_probe) { @@ -1555,7 +1565,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case ZOFFSET_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else { liveadjust = false; TERN_(HAS_LEVELING, set_bed_leveling_enabled(level_state)); @@ -1564,7 +1574,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case ZOFFSET_HOME: if (draw) - drawMenuItem(row, ICON_Homing, F("Home Z Axis")); + drawMenuItem(row, ICON_Homing, GET_TEXT_F(MSG_AUTO_HOME_Z)); else { popupHandler(Popup_Home); gcode.process_subcommands_now(F("G28Z")); @@ -1620,7 +1630,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case ZOFFSET_UP: if (draw) - drawMenuItem(row, ICON_Axis, F("Microstep Up")); + drawMenuItem(row, ICON_Axis, F("+0.01mm Up")); else { if (zoffsetvalue < MAX_Z_OFFSET) { if (liveadjust) { @@ -1634,7 +1644,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case ZOFFSET_DOWN: if (draw) - drawMenuItem(row, ICON_AxisD, F("Microstep Down")); + drawMenuItem(row, ICON_AxisD, F("-0.01mm Down")); else { if (zoffsetvalue > MIN_Z_OFFSET) { if (liveadjust) { @@ -1649,7 +1659,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if ENABLED(EEPROM_SETTINGS) case ZOFFSET_SAVE: if (draw) - drawMenuItem(row, ICON_WriteEEPROM, F("Save")); + drawMenuItem(row, ICON_WriteEEPROM, GET_TEXT_F(MSG_BUTTON_SAVE)); else audioFeedback(settings.save()); break; @@ -1677,11 +1687,10 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case PREHEAT_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_Prepare, PREPARE_PREHEAT); break; - case PREHEAT_MODE: if (draw) { drawMenuItem(row, ICON_Homing, F("Preheat Mode")); @@ -1714,7 +1723,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case CHANGEFIL_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_Prepare, PREPARE_CHANGEFIL); break; @@ -1776,7 +1785,6 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #endif // FILAMENT_LOAD_UNLOAD_GCODES #if HAS_CUSTOM_MENU - case ID_MenuCustom: #define CUSTOM_MENU_BACK 0 @@ -1790,7 +1798,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case CUSTOM_MENU_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_Prepare, PREPARE_CUSTOM_MENU); break; @@ -1892,7 +1900,6 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #endif // Custom Menu } break; - #endif // HAS_CUSTOM_MENU case ID_Control: @@ -1903,27 +1910,27 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #define CONTROL_VISUAL (CONTROL_MOTION + 1) #define CONTROL_ADVANCED (CONTROL_VISUAL + 1) #define CONTROL_SAVE (CONTROL_ADVANCED + ENABLED(EEPROM_SETTINGS)) - #define CONTROL_RESTORE (CONTROL_SAVE + ENABLED(EEPROM_SETTINGS)) - #define CONTROL_RESET (CONTROL_RESTORE + ENABLED(EEPROM_SETTINGS)) + #define CONTROL_LOAD (CONTROL_SAVE + ENABLED(EEPROM_SETTINGS)) + #define CONTROL_RESET (CONTROL_LOAD + ENABLED(EEPROM_SETTINGS)) #define CONTROL_INFO (CONTROL_RESET + 1) #define CONTROL_TOTAL CONTROL_INFO switch (item) { case CONTROL_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMainMenu(2); break; case CONTROL_TEMP: if (draw) - drawMenuItem(row, ICON_Temperature, F("Temperature"), nullptr, true); + drawMenuItem(row, ICON_Temperature, GET_TEXT_F(MSG_TEMPERATURE), nullptr, true); else drawMenu(ID_TempMenu); break; case CONTROL_MOTION: if (draw) - drawMenuItem(row, ICON_Motion, F("Motion"), nullptr, true); + drawMenuItem(row, ICON_Motion, GET_TEXT_F(MSG_MOTION), nullptr, true); else drawMenu(ID_Motion); break; @@ -1935,26 +1942,26 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case CONTROL_ADVANCED: if (draw) - drawMenuItem(row, ICON_Version, F("Advanced"), nullptr, true); + drawMenuItem(row, ICON_Version, GET_TEXT_F(MSG_ADVANCED_SETTINGS), nullptr, true); else drawMenu(ID_Advanced); break; #if ENABLED(EEPROM_SETTINGS) case CONTROL_SAVE: if (draw) - drawMenuItem(row, ICON_WriteEEPROM, F("Store Settings")); + drawMenuItem(row, ICON_WriteEEPROM, GET_TEXT_F(MSG_STORE_EEPROM)); else audioFeedback(settings.save()); break; - case CONTROL_RESTORE: + case CONTROL_LOAD: if (draw) - drawMenuItem(row, ICON_ReadEEPROM, F("Restore Settings")); + drawMenuItem(row, ICON_ReadEEPROM, GET_TEXT_F(MSG_LOAD_EEPROM)); else audioFeedback(settings.load()); break; case CONTROL_RESET: if (draw) - drawMenuItem(row, ICON_Temperature, F("Reset to Defaults")); + drawMenuItem(row, ICON_Temperature, GET_TEXT_F(MSG_RESTORE_DEFAULTS)); else { settings.reset(); audioFeedback(); @@ -1963,7 +1970,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #endif case CONTROL_INFO: if (draw) - drawMenuItem(row, ICON_Info, F("Info")); + drawMenuItem(row, ICON_Info, GET_TEXT_F(MSG_INFO_SCREEN)); else drawMenu(ID_Info); break; @@ -1988,14 +1995,14 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case TEMP_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_Control, CONTROL_TEMP); break; #if HAS_HOTEND case TEMP_HOTEND: if (draw) { - drawMenuItem(row, ICON_SetEndTemp, F("Hotend")); + drawMenuItem(row, ICON_SetEndTemp, GET_TEXT_F(MSG_NOZZLE)); drawFloat(thermalManager.degTargetHotend(0), row, false, 1); } else @@ -2005,7 +2012,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if HAS_HEATED_BED case TEMP_BED: if (draw) { - drawMenuItem(row, ICON_SetBedTemp, F("Bed")); + drawMenuItem(row, ICON_SetBedTemp, GET_TEXT_F(MSG_BED)); drawFloat(thermalManager.degTargetBed(), row, false, 1); } else @@ -2015,7 +2022,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if HAS_FAN case TEMP_FAN: if (draw) { - drawMenuItem(row, ICON_FanSpeed, F("Fan")); + drawMenuItem(row, ICON_FanSpeed, GET_TEXT_F(MSG_FAN_SPEED)); drawFloat(thermalManager.fan_speed[0], row, false, 1); } else @@ -2063,14 +2070,14 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case PID_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_TempMenu, TEMP_PID); break; #if ENABLED(PIDTEMP) case PID_HOTEND: if (draw) - drawMenuItem(row, ICON_HotendTemp, F("Hotend"), nullptr, true); + drawMenuItem(row, ICON_HotendTemp, GET_TEXT_F(MSG_NOZZLE), nullptr, true); else drawMenu(ID_HotendPID); break; @@ -2078,7 +2085,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if ENABLED(PIDTEMPBED) case PID_BED: if (draw) - drawMenuItem(row, ICON_BedTemp, F("Bed"), nullptr, true); + drawMenuItem(row, ICON_BedTemp, GET_TEXT_F(MSG_BED), nullptr, true); else drawMenu(ID_BedPID); break; @@ -2111,13 +2118,13 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case HOTENDPID_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_PID, PID_HOTEND); break; case HOTENDPID_TUNE: if (draw) - drawMenuItem(row, ICON_HotendTemp, F("Autotune")); + drawMenuItem(row, ICON_HotendTemp, GET_TEXT_F(MSG_PID_AUTOTUNE)); else { popupHandler(Popup_PIDWait); gcode.process_subcommands_now(TS(F("M303E0C"), PID_cycles, 'S', PID_e_temp, 'U')); @@ -2127,7 +2134,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case HOTENDPID_TEMP: if (draw) { - drawMenuItem(row, ICON_Temperature, F("Temperature")); + drawMenuItem(row, ICON_Temperature, GET_TEXT_F(MSG_TEMPERATURE)); drawFloat(PID_e_temp, row, false, 1); } else @@ -2135,7 +2142,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case HOTENDPID_KP: if (draw) { - drawMenuItem(row, ICON_Version, F("Kp Value")); + drawMenuItem(row, ICON_Version, GET_TEXT_F(MSG_PID_P)); drawFloat(thermalManager.temp_hotend[0].pid.p(), row, false, 100); } else @@ -2143,7 +2150,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case HOTENDPID_KI: if (draw) { - drawMenuItem(row, ICON_Version, F("Ki Value")); + drawMenuItem(row, ICON_Version, GET_TEXT_F(MSG_PID_I)); drawFloat(thermalManager.temp_hotend[0].pid.i(), row, false, 100); } else @@ -2151,7 +2158,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case HOTENDPID_KD: if (draw) { - drawMenuItem(row, ICON_Version, F("Kd Value")); + drawMenuItem(row, ICON_Version, GET_TEXT_F(MSG_PID_D)); drawFloat(thermalManager.temp_hotend[0].pid.d(), row, false, 100); } else @@ -2177,13 +2184,13 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case BEDPID_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_PID, PID_BED); break; case BEDPID_TUNE: if (draw) - drawMenuItem(row, ICON_HotendTemp, F("Autotune")); + drawMenuItem(row, ICON_HotendTemp, GET_TEXT_F(MSG_PID_AUTOTUNE)); else { popupHandler(Popup_PIDWait); gcode.process_subcommands_now(TS(F("M303E-1C"), PID_cycles, 'S', PID_bed_temp, 'U')); @@ -2193,7 +2200,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case BEDPID_TEMP: if (draw) { - drawMenuItem(row, ICON_Temperature, F("Temperature")); + drawMenuItem(row, ICON_Temperature, GET_TEXT_F(MSG_TEMPERATURE)); drawFloat(PID_bed_temp, row, false, 1); } else @@ -2201,7 +2208,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case BEDPID_KP: if (draw) { - drawMenuItem(row, ICON_Version, F("Kp Value")); + drawMenuItem(row, ICON_Version, GET_TEXT_F(MSG_PID_P)); drawFloat(thermalManager.temp_bed.pid.p(), row, false, 100); } else @@ -2209,7 +2216,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case BEDPID_KI: if (draw) { - drawMenuItem(row, ICON_Version, F("Ki Value")); + drawMenuItem(row, ICON_Version, GET_TEXT_F(MSG_PID_I)); drawFloat(thermalManager.temp_bed.pid.i(), row, false, 100); } else @@ -2217,7 +2224,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case BEDPID_KD: if (draw) { - drawMenuItem(row, ICON_Version, F("Kd Value")); + drawMenuItem(row, ICON_Version, GET_TEXT_F(MSG_PID_D)); drawFloat(thermalManager.temp_bed.pid.d(), row, false, 100); } else @@ -2242,7 +2249,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case MPCMENU_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_TempMenu, TEMP_MPC); break; @@ -2250,7 +2257,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if ENABLED(MPC_AUTOTUNE_MENU) case MPCMENU_AUTOTUNE: if (draw) - drawMenuItem(row, ICON_HotendTemp, F("Autotune")); + drawMenuItem(row, ICON_HotendTemp, GET_TEXT_F(MSG_PID_AUTOTUNE)); else { popupHandler(Popup_MPCWait); thermalManager.MPC_autotune(active_extruder, Temperature::MPCTuningType::AUTO); @@ -2262,7 +2269,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if ENABLED(MPC_EDIT_MENU) case MPCMENU_HEATER_POWER: if (draw) { - drawMenuItem(row, ICON_Version, F("Heater Power")); + drawMenuItem(row, ICON_Version, GET_TEXT_F(MSG_MPC_POWER)); drawFloat(thermalManager.temp_hotend[0].mpc.heater_power, row, false, 1); } else @@ -2271,7 +2278,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case MPCMENU_BLOCK_HEAT_CAPACITY: if (draw) { - drawMenuItem(row, ICON_Version, F("Block Heat Cap.")); + drawMenuItem(row, ICON_Version, GET_TEXT_F(MSG_MPC_BLOCK_HEAT_CAPACITY)); drawFloat(thermalManager.temp_hotend[0].mpc.block_heat_capacity, row, false, 100); } else @@ -2280,7 +2287,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case MPCMENU_SENSOR_RESPONSIVENESS: if (draw) { - drawMenuItem(row, ICON_Version, F("Sensor Resp.")); + drawMenuItem(row, ICON_Version, GET_TEXT_F(MSG_SENSOR_RESPONSIVENESS)); drawFloat(thermalManager.temp_hotend[0].mpc.sensor_responsiveness, row, false, 10000); } else @@ -2289,7 +2296,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case MPCMENU_AMBIENT_XFER_COEFF: if (draw) { - drawMenuItem(row, ICON_Version, F("Amb. xfer coeff")); + drawMenuItem(row, ICON_Version, GET_TEXT_F(MSG_MPC_AMBIENT_XFER_COEFF)); drawFloat(thermalManager.temp_hotend[0].mpc.ambient_xfer_coeff_fan0, row, false, 10000); } else @@ -2300,7 +2307,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case MPCMENU_AMBIENT_XFER_COEFF_FAN: { static float fan255_adjustment; if (draw) { - drawMenuItem(row, ICON_Version, F("Amb. xfer adj.")); + drawMenuItem(row, ICON_Version, GET_TEXT_F(MSG_MPC_AMBIENT_XFER_COEFF_FAN)); fan255_adjustment = thermalManager.temp_hotend[0].fanCoefficient(); drawFloat(fan255_adjustment, row, false, 10000); } @@ -2329,57 +2336,68 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #define MOTION_JERK (MOTION_ACCEL + ENABLED(HAS_CLASSIC_JERK)) #define MOTION_STEPS (MOTION_JERK + 1) #define MOTION_FLOW (MOTION_STEPS + ENABLED(HAS_HOTEND)) - #define MOTION_TOTAL MOTION_FLOW + #define MOTION_LA (MOTION_FLOW + ENABLED(LIN_ADVANCE)) + #define MOTION_TOTAL MOTION_LA switch (item) { case MOTION_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_Control, CONTROL_MOTION); break; case MOTION_HOMEOFFSETS: if (draw) - drawMenuItem(row, ICON_SetHome, F("Home Offsets"), nullptr, true); + drawMenuItem(row, ICON_SetHome, GET_TEXT_F(MSG_SET_HOME_OFFSETS), nullptr, true); else drawMenu(ID_HomeOffsets); break; case MOTION_SPEED: if (draw) - drawMenuItem(row, ICON_MaxSpeed, F("Max Speed"), nullptr, true); + drawMenuItem(row, ICON_MaxSpeed, GET_TEXT_F(MSG_MAX_SPEED), nullptr, true); else drawMenu(ID_MaxSpeed); break; case MOTION_ACCEL: if (draw) - drawMenuItem(row, ICON_MaxAccelerated, F("Max Acceleration"), nullptr, true); + drawMenuItem(row, ICON_MaxAccelerated, GET_TEXT_F(MSG_ACCELERATION), nullptr, true); else drawMenu(ID_MaxAcceleration); break; #if HAS_CLASSIC_JERK case MOTION_JERK: if (draw) - drawMenuItem(row, ICON_MaxJerk, F("Max Jerk"), nullptr, true); + drawMenuItem(row, ICON_MaxJerk, GET_TEXT_F(MSG_JERK), nullptr, true); else drawMenu(ID_MaxJerk); break; #endif case MOTION_STEPS: if (draw) - drawMenuItem(row, ICON_Step, F("Steps/mm"), nullptr, true); + drawMenuItem(row, ICON_Step, GET_TEXT_F(MSG_STEPS_PER_MM), nullptr, true); else drawMenu(ID_Steps); break; #if HAS_HOTEND case MOTION_FLOW: if (draw) { - drawMenuItem(row, ICON_Speed, F("Flow Rate")); + drawMenuItem(row, ICON_Speed, GET_TEXT_F(MSG_FLOW)); drawFloat(planner.flow_percentage[0], row, false, 1); } else modifyValue(planner.flow_percentage[0], MIN_FLOW_RATE, MAX_FLOW_RATE, 1, []{ planner.refresh_e_factor(0); }); break; #endif + #if ENABLED(LIN_ADVANCE) + case MOTION_LA: + if (draw) { + drawMenuItem(row, ICON_MaxAccelerated, GET_TEXT_F(MSG_ADVANCE_K)); + drawFloat(planner.extruder_advance_K[0], row, false, 100); + } + else + modifyValue(planner.extruder_advance_K[0], 0, 10, 100); + break; + #endif } break; @@ -2393,13 +2411,13 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case HOMEOFFSETS_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_Motion, MOTION_HOMEOFFSETS); break; case HOMEOFFSETS_XOFFSET: if (draw) { - drawMenuItem(row, ICON_StepX, F("X Offset")); + drawMenuItem(row, ICON_StepX, GET_TEXT_F(MSG_HOME_OFFSET_X)); drawFloat(home_offset.x, row, false, 100); } else @@ -2407,7 +2425,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case HOMEOFFSETS_YOFFSET: if (draw) { - drawMenuItem(row, ICON_StepY, F("Y Offset")); + drawMenuItem(row, ICON_StepY, GET_TEXT_F(MSG_HOME_OFFSET_Y)); drawFloat(home_offset.y, row, false, 100); } else @@ -2427,14 +2445,14 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case SPEED_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_Motion, MOTION_SPEED); break; #if HAS_X_AXIS case SPEED_X: if (draw) { - drawMenuItem(row, ICON_MaxSpeedX, F("X Axis")); + drawMenuItem(row, ICON_MaxSpeedX, GET_TEXT_F(MSG_VMAX_A)); drawFloat(planner.settings.max_feedrate_mm_s[X_AXIS], row, false, FEEDRATE_UNIT); } else @@ -2445,7 +2463,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if HAS_Y_AXIS case SPEED_Y: if (draw) { - drawMenuItem(row, ICON_MaxSpeedY, F("Y Axis")); + drawMenuItem(row, ICON_MaxSpeedY, GET_TEXT_F(MSG_VMAX_B)); drawFloat(planner.settings.max_feedrate_mm_s[Y_AXIS], row, false, FEEDRATE_UNIT); } else @@ -2456,7 +2474,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if HAS_Z_AXIS case SPEED_Z: if (draw) { - drawMenuItem(row, ICON_MaxSpeedZ, F("Z Axis")); + drawMenuItem(row, ICON_MaxSpeedZ, GET_TEXT_F(MSG_VMAX_C)); drawFloat(planner.settings.max_feedrate_mm_s[Z_AXIS], row, false, FEEDRATE_UNIT); } else @@ -2467,7 +2485,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if HAS_HOTEND case SPEED_E: if (draw) { - drawMenuItem(row, ICON_MaxSpeedE, F("Extruder")); + drawMenuItem(row, ICON_MaxSpeedE, GET_TEXT_F(MSG_VMAX_E)); drawFloat(planner.settings.max_feedrate_mm_s[E_AXIS], row, false, FEEDRATE_UNIT); } else @@ -2480,47 +2498,53 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case ID_MaxAcceleration: #define ACCEL_BACK 0 - #define ACCEL_X (ACCEL_BACK + 1) - #define ACCEL_Y (ACCEL_X + 1) - #define ACCEL_Z (ACCEL_Y + 1) + #define ACCEL_X (ACCEL_BACK + ENABLED(HAS_X_AXIS)) + #define ACCEL_Y (ACCEL_X + ENABLED(HAS_Y_AXIS)) + #define ACCEL_Z (ACCEL_Y + ENABLED(HAS_Z_AXIS)) #define ACCEL_E (ACCEL_Z + ENABLED(HAS_HOTEND)) #define ACCEL_TOTAL ACCEL_E switch (item) { case ACCEL_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_Motion, MOTION_ACCEL); break; - case ACCEL_X: - if (draw) { - drawMenuItem(row, ICON_MaxAccX, F("X Axis")); - drawFloat(planner.settings.max_acceleration_mm_per_s2[X_AXIS], row, false, ACCELERATION_UNIT); - } - else - modifyValue(planner.settings.max_acceleration_mm_per_s2[X_AXIS], min_acceleration_edit_values.x, max_acceleration_edit_values.x, ACCELERATION_UNIT); - break; - case ACCEL_Y: - if (draw) { - drawMenuItem(row, ICON_MaxAccY, F("Y Axis")); - drawFloat(planner.settings.max_acceleration_mm_per_s2[Y_AXIS], row, false, ACCELERATION_UNIT); - } - else - modifyValue(planner.settings.max_acceleration_mm_per_s2[Y_AXIS], min_acceleration_edit_values.y, max_acceleration_edit_values.y, ACCELERATION_UNIT); - break; - case ACCEL_Z: - if (draw) { - drawMenuItem(row, ICON_MaxAccZ, F("Z Axis")); - drawFloat(planner.settings.max_acceleration_mm_per_s2[Z_AXIS], row, false, ACCELERATION_UNIT); - } - else - modifyValue(planner.settings.max_acceleration_mm_per_s2[Z_AXIS], min_acceleration_edit_values.z, max_acceleration_edit_values.z, ACCELERATION_UNIT); - break; + #if HAS_X_AXIS + case ACCEL_X: + if (draw) { + drawMenuItem(row, ICON_MaxAccX, GET_TEXT_F(MSG_AMAX_A)); + drawFloat(planner.settings.max_acceleration_mm_per_s2[X_AXIS], row, false, ACCELERATION_UNIT); + } + else + modifyValue(planner.settings.max_acceleration_mm_per_s2[X_AXIS], min_acceleration_edit_values.x, max_acceleration_edit_values.x, ACCELERATION_UNIT); + break; + #endif + #if HAS_Y_AXIS + case ACCEL_Y: + if (draw) { + drawMenuItem(row, ICON_MaxAccY, GET_TEXT_F(MSG_AMAX_B)); + drawFloat(planner.settings.max_acceleration_mm_per_s2[Y_AXIS], row, false, ACCELERATION_UNIT); + } + else + modifyValue(planner.settings.max_acceleration_mm_per_s2[Y_AXIS], min_acceleration_edit_values.y, max_acceleration_edit_values.y, ACCELERATION_UNIT); + break; + #endif + #if HAS_Z_AXIS + case ACCEL_Z: + if (draw) { + drawMenuItem(row, ICON_MaxAccZ, GET_TEXT_F(MSG_AMAX_C)); + drawFloat(planner.settings.max_acceleration_mm_per_s2[Z_AXIS], row, false, ACCELERATION_UNIT); + } + else + modifyValue(planner.settings.max_acceleration_mm_per_s2[Z_AXIS], min_acceleration_edit_values.z, max_acceleration_edit_values.z, ACCELERATION_UNIT); + break; + #endif #if HAS_HOTEND case ACCEL_E: if (draw) { - drawMenuItem(row, ICON_MaxAccE, F("Extruder")); + drawMenuItem(row, ICON_MaxAccE, GET_TEXT_F(MSG_AMAX_E)); drawFloat(planner.settings.max_acceleration_mm_per_s2[E_AXIS], row, false, ACCELERATION_UNIT); } else @@ -2533,23 +2557,23 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case ID_MaxJerk: #define JERK_BACK 0 - #define JERK_X (JERK_BACK + 1) - #define JERK_Y (JERK_X + 1) - #define JERK_Z (JERK_Y + 1) + #define JERK_X (JERK_BACK + ENABLED(HAS_X_AXIS)) + #define JERK_Y (JERK_X + ENABLED(HAS_Y_AXIS)) + #define JERK_Z (JERK_Y + ENABLED(HAS_Z_AXIS)) #define JERK_E (JERK_Z + ENABLED(HAS_HOTEND)) #define JERK_TOTAL JERK_E switch (item) { case JERK_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_Motion, MOTION_JERK); break; #if HAS_X_AXIS case JERK_X: if (draw) { - drawMenuItem(row, ICON_MaxSpeedJerkX, F("X Axis")); + drawMenuItem(row, ICON_MaxSpeedJerkX, GET_TEXT_F(MSG_VA_JERK)); drawFloat(planner.max_jerk.x, row, false, JERK_UNIT); } else @@ -2559,7 +2583,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if HAS_Y_AXIS case JERK_Y: if (draw) { - drawMenuItem(row, ICON_MaxSpeedJerkY, F("Y Axis")); + drawMenuItem(row, ICON_MaxSpeedJerkY, GET_TEXT_F(MSG_VB_JERK)); drawFloat(planner.max_jerk.y, row, false, JERK_UNIT); } else @@ -2569,7 +2593,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if HAS_Z_AXIS case JERK_Z: if (draw) { - drawMenuItem(row, ICON_MaxSpeedJerkZ, F("Z Axis")); + drawMenuItem(row, ICON_MaxSpeedJerkZ, GET_TEXT_F(MSG_VC_JERK)); drawFloat(planner.max_jerk.z, row, false, JERK_UNIT); } else @@ -2579,7 +2603,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if HAS_HOTEND case JERK_E: if (draw) { - drawMenuItem(row, ICON_MaxSpeedJerkE, F("Extruder")); + drawMenuItem(row, ICON_MaxSpeedJerkE, GET_TEXT_F(MSG_VE_JERK)); drawFloat(planner.max_jerk.e, row, false, JERK_UNIT); } else @@ -2592,23 +2616,23 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case ID_Steps: #define STEPS_BACK 0 - #define STEPS_X (STEPS_BACK + 1) - #define STEPS_Y (STEPS_X + 1) - #define STEPS_Z (STEPS_Y + 1) + #define STEPS_X (STEPS_BACK + ENABLED(HAS_X_AXIS)) + #define STEPS_Y (STEPS_X + ENABLED(HAS_Y_AXIS)) + #define STEPS_Z (STEPS_Y + ENABLED(HAS_Z_AXIS)) #define STEPS_E (STEPS_Z + ENABLED(HAS_HOTEND)) #define STEPS_TOTAL STEPS_E switch (item) { case STEPS_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_Motion, MOTION_STEPS); break; #if HAS_X_AXIS case STEPS_X: if (draw) { - drawMenuItem(row, ICON_StepX, F("X Axis")); + drawMenuItem(row, ICON_StepX, GET_TEXT_F(MSG_A_STEPS)); drawFloat(planner.settings.axis_steps_per_mm[X_AXIS], row, false, STEPS_UNIT); } else @@ -2618,7 +2642,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if HAS_Y_AXIS case STEPS_Y: if (draw) { - drawMenuItem(row, ICON_StepY, F("Y Axis")); + drawMenuItem(row, ICON_StepY, GET_TEXT_F(MSG_B_STEPS)); drawFloat(planner.settings.axis_steps_per_mm[Y_AXIS], row, false, STEPS_UNIT); } else @@ -2628,7 +2652,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if HAS_Z_AXIS case STEPS_Z: if (draw) { - drawMenuItem(row, ICON_StepZ, F("Z Axis")); + drawMenuItem(row, ICON_StepZ, GET_TEXT_F(MSG_C_STEPS)); drawFloat(planner.settings.axis_steps_per_mm[Z_AXIS], row, false, STEPS_UNIT); } else @@ -2638,7 +2662,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if HAS_HOTEND case STEPS_E: if (draw) { - drawMenuItem(row, ICON_StepE, F("Extruder")); + drawMenuItem(row, ICON_StepE, GET_TEXT_F(MSG_E_STEPS)); drawFloat(planner.settings.axis_steps_per_mm[E_AXIS], row, false, STEPS_UNIT); } else @@ -2660,19 +2684,19 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case VISUAL_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_Control, CONTROL_VISUAL); break; case VISUAL_BACKLIGHT: if (draw) - drawMenuItem(row, ICON_Brightness, F("Display Off")); + drawMenuItem(row, ICON_Brightness, GET_TEXT_F(MSG_BRIGHTNESS_OFF)); else ui.set_brightness(0); break; case VISUAL_BRIGHTNESS: if (draw) { - drawMenuItem(row, ICON_Brightness, F("LCD Brightness")); + drawMenuItem(row, ICON_Brightness, GET_TEXT_F(MSG_BRIGHTNESS)); drawFloat(ui.brightness, row, false, 1); } else @@ -2716,7 +2740,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case COLORSETTINGS_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_Visual, VISUAL_COLOR_THEMES); break; @@ -2830,7 +2854,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case ADVANCED_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_Control, CONTROL_ADVANCED); break; @@ -2838,7 +2862,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if ENABLED(SOUND_MENU_ITEM) case ADVANCED_BEEPER: if (draw) { - drawMenuItem(row, ICON_Version, F("LCD Beeper")); + drawMenuItem(row, ICON_Version, GET_TEXT_F(MSG_SOUND)); drawCheckbox(row, ui.sound_on); } else { @@ -2878,7 +2902,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if ENABLED(LIN_ADVANCE) case ADVANCED_LA: if (draw) { - drawMenuItem(row, ICON_MaxAccelerated, F("Lin Advance K")); + drawMenuItem(row, ICON_MaxAccelerated, GET_TEXT_F(MSG_ADVANCE_K)); drawFloat(planner.extruder_advance_K[0], row, false, 100); } else @@ -2921,7 +2945,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if ENABLED(FILAMENT_RUNOUT_SENSOR) case ADVANCED_FILSENSORENABLED: if (draw) { - drawMenuItem(row, ICON_Extruder, F("Filament Sensor")); + drawMenuItem(row, ICON_Extruder, GET_TEXT_F(MSG_RUNOUT_SENSOR)); drawCheckbox(row, runout.enabled); } else { @@ -2933,7 +2957,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if ENABLED(HAS_FILAMENT_RUNOUT_DISTANCE) case ADVANCED_FILSENSORDISTANCE: if (draw) { - drawMenuItem(row, ICON_MaxAccE, F("Runout Distance")); + drawMenuItem(row, ICON_MaxAccE, GET_TEXT_F(MSG_RUNOUT_DISTANCE_MM)); drawFloat(runout.runout_distance(), row, false, 10); } else @@ -2945,7 +2969,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if ENABLED(POWER_LOSS_RECOVERY) case ADVANCED_POWER_LOSS: if (draw) { - drawMenuItem(row, ICON_Motion, F("Power-loss recovery")); + drawMenuItem(row, ICON_Motion, GET_TEXT_F(MSG_OUTAGE_RECOVERY)); drawCheckbox(row, recovery.enabled); } else { @@ -2972,7 +2996,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case PROBE_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_Advanced, ADVANCED_PROBE); break; @@ -3028,7 +3052,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case TMC_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_Advanced, ADVANCED_TMC); break; @@ -3039,7 +3063,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra static float stepper_current_x; if (draw) { - drawMenuItem(row, ICON_StepX, F("Stepper X current")); + drawMenuItem(row, ICON_StepX, GET_TEXT_F(MSG_TMC_ACURRENT)); stepper_current_x = stepperX.getMilliamps(); drawFloat(stepper_current_x, row, false, 1); } @@ -3053,7 +3077,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case TMC_STEPPER_CURRENT_Y: static float stepper_current_y; if (draw) { - drawMenuItem(row, ICON_StepY, F("Stepper Y current")); + drawMenuItem(row, ICON_StepY, GET_TEXT_F(MSG_TMC_BCURRENT)); stepper_current_y = stepperY.getMilliamps(); drawFloat(stepper_current_y, row, false, 1); } @@ -3067,7 +3091,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case TMC_STEPPER_CURRENT_Z: static float stepper_current_z; if (draw) { - drawMenuItem(row, ICON_StepZ, F("Stepper Z current")); + drawMenuItem(row, ICON_StepZ, GET_TEXT_F(MSG_TMC_CCURRENT)); stepper_current_z = stepperZ.getMilliamps(); drawFloat(stepper_current_z, row, false, 1); } @@ -3081,7 +3105,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case TMC_STEPPER_CURRENT_E: static float stepper_current_e; if (draw) { - drawMenuItem(row, ICON_StepE, F("Stepper E current")); + drawMenuItem(row, ICON_StepE, GET_TEXT_F(MSG_TMC_ECURRENT)); stepper_current_e = stepperE0.getMilliamps(); drawFloat(stepper_current_e, row, false, 1); } @@ -3107,7 +3131,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case INFO_BACK: if (draw) { - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); #if ENABLED(PRINTCOUNTER) @@ -3159,13 +3183,13 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case LEVELING_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMainMenu(3); break; case LEVELING_ACTIVE: if (draw) { - drawMenuItem(row, ICON_StockConfiguration, F("Leveling Active")); + drawMenuItem(row, ICON_StockConfiguration, GET_TEXT_F(MSG_BED_LEVELING)); drawCheckbox(row, planner.leveling_active); } else { @@ -3184,18 +3208,14 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if ALL(HAS_BED_PROBE, AUTO_BED_LEVELING_UBL) case LEVELING_GET_TILT: if (draw) - drawMenuItem(row, ICON_Tilt, F("Autotilt Current Mesh")); + drawMenuItem(row, ICON_Tilt, GET_TEXT_F(MSG_UBL_TILT_MESH)); else { - if (bedlevel.storage_slot < 0) { - popupHandler(Popup_MeshSlot); - break; - } + if (bedlevel.storage_slot < 0) { popupHandler(Popup_MeshSlot); break; } popupHandler(Popup_Home); gcode.home_all_axes(true); popupHandler(Popup_Level); - if (mesh_conf.tilt_grid > 1) { + if (mesh_conf.tilt_grid > 1) gcode.process_subcommands_now(TS(F("G29J"), mesh_conf.tilt_grid)); - } else gcode.process_subcommands_now(F("G29J")); planner.synchronize(); @@ -3307,41 +3327,41 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawMenu(ID_LevelSettings); break; #if ENABLED(AUTO_BED_LEVELING_UBL) - case LEVELING_SLOT: - if (draw) { - drawMenuItem(row, ICON_PrintSize, F("Mesh Slot")); - drawFloat(bedlevel.storage_slot, row, false, 1); - } - else - modifyValue(bedlevel.storage_slot, 0, settings.calc_num_meshes() - 1, 1); - break; - case LEVELING_LOAD: - if (draw) - drawMenuItem(row, ICON_ReadEEPROM, F("Load Mesh")); - else { - if (bedlevel.storage_slot < 0) { - popupHandler(Popup_MeshSlot); - break; + case LEVELING_SLOT: + if (draw) { + drawMenuItem(row, ICON_PrintSize, GET_TEXT_F(MSG_UBL_STORAGE_SLOT)); + drawFloat(bedlevel.storage_slot, row, false, 1); } - gcode.process_subcommands_now(F("G29 L")); - planner.synchronize(); - audioFeedback(true); - } - break; - case LEVELING_SAVE: - if (draw) - drawMenuItem(row, ICON_WriteEEPROM, F("Save Mesh")); - else { - if (bedlevel.storage_slot < 0) { - popupHandler(Popup_MeshSlot); - break; + else + modifyValue(bedlevel.storage_slot, 0, settings.calc_num_meshes() - 1, 1); + break; + case LEVELING_LOAD: + if (draw) + drawMenuItem(row, ICON_ReadEEPROM, GET_TEXT_F(MSG_UBL_LOAD_MESH)); + else { + if (bedlevel.storage_slot < 0) { + popupHandler(Popup_MeshSlot); + break; + } + gcode.process_subcommands_now(F("G29 L")); + planner.synchronize(); + audioFeedback(true); } - gcode.process_subcommands_now(F("G29 S")); - planner.synchronize(); - audioFeedback(true); - } - break; - #endif + break; + case LEVELING_SAVE: + if (draw) + drawMenuItem(row, ICON_WriteEEPROM, GET_TEXT_F(MSG_UBL_SAVE_MESH)); + else { + if (bedlevel.storage_slot < 0) { + popupHandler(Popup_MeshSlot); + break; + } + gcode.process_subcommands_now(F("G29 S")); + planner.synchronize(); + audioFeedback(true); + } + break; + #endif // AUTO_BED_LEVELING_UBL } break; @@ -3356,7 +3376,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case LEVELING_VIEW_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_Leveling, LEVELING_VIEW); break; @@ -3402,13 +3422,13 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case LEVELING_SETTINGS_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawMenu(ID_Leveling, LEVELING_SETTINGS); break; case LEVELING_SETTINGS_FADE: if (draw) { - drawMenuItem(row, ICON_Fade, F("Fade Mesh within")); + drawMenuItem(row, ICON_Fade, GET_TEXT_F(MSG_Z_FADE_HEIGHT)); drawFloat(planner.z_fade_height, row, false, 1); } else { @@ -3439,13 +3459,13 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case LEVELING_SETTINGS_ZERO: if (draw) - drawMenuItem(row, ICON_Mesh, F("Zero Current Mesh")); + drawMenuItem(row, ICON_Mesh, F("Mesh Zero")); else ZERO(bedlevel.z_values); break; case LEVELING_SETTINGS_UNDEF: if (draw) - drawMenuItem(row, ICON_Mesh, F("Clear Current Mesh")); + drawMenuItem(row, ICON_Mesh, GET_TEXT_F(MSG_MESH_RESET)); else bedlevel.invalidate(); break; @@ -3459,7 +3479,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (item == MESHVIEW_BACK) { if (draw) { - drawMenuItem(0, ICON_Back, F("Back")); + drawMenuItem(0, ICON_Back, GET_TEXT_F(MSG_BACK)); mesh_conf.drawBedMesh(); mesh_conf.setMeshViewerStatus(); } @@ -3486,7 +3506,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case LEVELING_M_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else { set_bed_leveling_enabled(level_state); TERN_(AUTO_BED_LEVELING_BILINEAR, bedlevel.refresh_bed_level()); @@ -3495,7 +3515,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case LEVELING_M_X: if (draw) { - drawMenuItem(row, ICON_MoveX, F("Mesh Point X")); + drawMenuItem(row, ICON_MoveX, GET_TEXT_F(MSG_MESH_X)); drawFloat(mesh_conf.mesh_x, row, 0, 1); } else @@ -3503,7 +3523,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case LEVELING_M_Y: if (draw) { - drawMenuItem(row, ICON_MoveY, F("Mesh Point Y")); + drawMenuItem(row, ICON_MoveY, GET_TEXT_F(MSG_MESH_Y)); drawFloat(mesh_conf.mesh_y, row, 0, 1); } else @@ -3511,7 +3531,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case LEVELING_M_NEXT: if (draw) - drawMenuItem(row, ICON_More, F("Next Point")); + drawMenuItem(row, ICON_More, GET_TEXT_F(MSG_LEVEL_BED_NEXT_POINT)); else { if (mesh_conf.mesh_x != (GRID_MAX_POINTS_X - 1) || mesh_conf.mesh_y != (GRID_MAX_POINTS_Y - 1)) { if ((mesh_conf.mesh_x == (GRID_MAX_POINTS_X - 1) && mesh_conf.mesh_y % 2 == 0) || (mesh_conf.mesh_x == 0 && mesh_conf.mesh_y % 2 == 1)) @@ -3526,7 +3546,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case LEVELING_M_OFFSET: if (draw) { - drawMenuItem(row, ICON_SetZOffset, F("Point Z Offset")); + drawMenuItem(row, ICON_SetZOffset, GET_TEXT_F(MSG_MESH_EDIT_Z)); drawFloat(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], row, false, 100); } else { @@ -3537,7 +3557,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case LEVELING_M_UP: if (draw) - drawMenuItem(row, ICON_Axis, F("Microstep Up")); + drawMenuItem(row, ICON_Axis, F("+0.01mm Up")); else if (bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] < MAX_Z_OFFSET) { bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] += 0.01; gcode.process_subcommands_now(F("M290 Z0.01")); @@ -3549,7 +3569,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case LEVELING_M_DOWN: if (draw) - drawMenuItem(row, ICON_AxisD, F("Microstep Down")); + drawMenuItem(row, ICON_AxisD, F("-0.01mm Down")); else if (bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] > MIN_Z_OFFSET) { bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] -= 0.01; gcode.process_subcommands_now(F("M290 Z-0.01")); @@ -3572,14 +3592,14 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra } break; #if ENABLED(AUTO_BED_LEVELING_UBL) - case LEVELING_M_UNDEF: - if (draw) - drawMenuItem(row, ICON_ResumeEEPROM, F("Clear Point Value")); - else { - mesh_conf.manualValueUpdate(true); - redrawMenu(false); - } - break; + case LEVELING_M_UNDEF: + if (draw) + drawMenuItem(row, ICON_ResumeEEPROM, F("Clear Point Value")); + else { + mesh_conf.manualValueUpdate(true); + redrawMenu(false); + } + break; #endif } break; @@ -3599,7 +3619,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case UBL_M_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else { set_bed_leveling_enabled(level_state); drawMenu(ID_Leveling, LEVELING_GET_MESH); @@ -3608,9 +3628,9 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case UBL_M_NEXT: if (draw) { if (mesh_conf.mesh_x != (GRID_MAX_POINTS_X - 1) || mesh_conf.mesh_y != (GRID_MAX_POINTS_Y - 1)) - drawMenuItem(row, ICON_More, F("Next Point")); + drawMenuItem(row, ICON_More, GET_TEXT_F(MSG_LEVEL_BED_NEXT_POINT)); else - drawMenuItem(row, ICON_More, F("Save Mesh")); + drawMenuItem(row, ICON_More, GET_TEXT_F(MSG_UBL_SAVE_MESH)); } else { if (mesh_conf.mesh_x != (GRID_MAX_POINTS_X - 1) || mesh_conf.mesh_y != (GRID_MAX_POINTS_Y - 1)) { @@ -3647,7 +3667,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case UBL_M_OFFSET: if (draw) { - drawMenuItem(row, ICON_SetZOffset, F("Point Z Offset")); + drawMenuItem(row, ICON_SetZOffset, GET_TEXT_F(MSG_MESH_EDIT_Z)); drawFloat(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], row, false, 100); } else { @@ -3658,7 +3678,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case UBL_M_UP: if (draw) - drawMenuItem(row, ICON_Axis, F("Microstep Up")); + drawMenuItem(row, ICON_Axis, F("+0.01mm Up")); else if (bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] < MAX_Z_OFFSET) { bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] += 0.01; gcode.process_subcommands_now(F("M290 Z0.01")); @@ -3670,7 +3690,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case UBL_M_DOWN: if (draw) - drawMenuItem(row, ICON_Axis, F("Microstep Down")); + drawMenuItem(row, ICON_Axis, F("-0.01mm Down")); else if (bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] > MIN_Z_OFFSET) { bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] -= 0.01; gcode.process_subcommands_now(F("M290 Z-0.01")); @@ -3698,7 +3718,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case MMESH_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Cancel")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BUTTON_CANCEL)); else { gcode.process_subcommands_now(F("G29 A")); planner.synchronize(); @@ -3709,9 +3729,9 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case MMESH_NEXT: if (draw) { if (gridpoint < GRID_MAX_POINTS) - drawMenuItem(row, ICON_More, F("Next Point")); + drawMenuItem(row, ICON_More, GET_TEXT_F(MSG_LEVEL_BED_NEXT_POINT)); else - drawMenuItem(row, ICON_More, F("Save Mesh")); + drawMenuItem(row, ICON_More, GET_TEXT_F(MSG_UBL_SAVE_MESH)); } else if (gridpoint < GRID_MAX_POINTS) { popupHandler(Popup_MoveWait); @@ -3738,7 +3758,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case MMESH_UP: if (draw) - drawMenuItem(row, ICON_Axis, F("Microstep Up")); + drawMenuItem(row, ICON_Axis, F("+0.01mm Up")); else if (current_position.z < MAX_Z_OFFSET) { gcode.process_subcommands_now(F("M290 Z0.01")); planner.synchronize(); @@ -3749,7 +3769,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case MMESH_DOWN: if (draw) - drawMenuItem(row, ICON_AxisD, F("Microstep Down")); + drawMenuItem(row, ICON_AxisD, F("-0.01mm Down")); else if (current_position.z > MIN_Z_OFFSET) { gcode.process_subcommands_now(F("M290 Z-0.01")); planner.synchronize(); @@ -3796,8 +3816,10 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #define TUNE_ZOFFSET (TUNE_FAN + ENABLED(HAS_ZOFFSET_ITEM)) #define TUNE_ZUP (TUNE_ZOFFSET + ENABLED(HAS_ZOFFSET_ITEM)) #define TUNE_ZDOWN (TUNE_ZUP + ENABLED(HAS_ZOFFSET_ITEM)) - #define TUNE_CHANGEFIL (TUNE_ZDOWN + ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)) - #define TUNE_FILSENSORENABLED (TUNE_CHANGEFIL + ENABLED(FILAMENT_RUNOUT_SENSOR)) + #define TUNE_LA (TUNE_ZDOWN + ENABLED(LIN_ADVANCE)) + #define TUNE_CHANGEFIL (TUNE_LA + ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)) + #define TUNE_FWRETRACT (TUNE_CHANGEFIL + ENABLED(FWRETRACT)) + #define TUNE_FILSENSORENABLED (TUNE_FWRETRACT + ENABLED(FILAMENT_RUNOUT_SENSOR)) #define TUNE_BACKLIGHT_OFF (TUNE_FILSENSORENABLED + 1) #define TUNE_BACKLIGHT (TUNE_BACKLIGHT_OFF + 1) #define TUNE_TOTAL TUNE_BACKLIGHT @@ -3805,13 +3827,13 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case TUNE_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Back")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BACK)); else drawPrintScreen(); break; case TUNE_SPEED: if (draw) { - drawMenuItem(row, ICON_Speed, F("Print Speed")); + drawMenuItem(row, ICON_Speed, GET_TEXT_F(MSG_SPEED)); drawFloat(feedrate_percentage, row, false, 1); } else @@ -3821,7 +3843,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if HAS_HOTEND case TUNE_FLOW: if (draw) { - drawMenuItem(row, ICON_Speed, F("Flow Rate")); + drawMenuItem(row, ICON_Speed, GET_TEXT_F(MSG_FLOW)); drawFloat(planner.flow_percentage[0], row, false, 1); } else @@ -3829,7 +3851,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case TUNE_HOTEND: if (draw) { - drawMenuItem(row, ICON_SetEndTemp, F("Hotend")); + drawMenuItem(row, ICON_SetEndTemp, GET_TEXT_F(MSG_NOZZLE)); drawFloat(thermalManager.degTargetHotend(0), row, false, 1); } else @@ -3840,7 +3862,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if HAS_HEATED_BED case TUNE_BED: if (draw) { - drawMenuItem(row, ICON_SetBedTemp, F("Bed")); + drawMenuItem(row, ICON_SetBedTemp, GET_TEXT_F(MSG_BED)); drawFloat(thermalManager.degTargetBed(), row, false, 1); } else @@ -3851,7 +3873,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #if HAS_FAN case TUNE_FAN: if (draw) { - drawMenuItem(row, ICON_FanSpeed, F("Fan")); + drawMenuItem(row, ICON_FanSpeed, GET_TEXT_F(MSG_FAN_SPEED)); drawFloat(thermalManager.fan_speed[0], row, false, 1); } else @@ -3870,7 +3892,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case TUNE_ZUP: if (draw) - drawMenuItem(row, ICON_Axis, F("Z-Offset Up")); + drawMenuItem(row, ICON_Axis, F("Z-Offset +0.01mm Up")); else if (zoffsetvalue < MAX_Z_OFFSET) { gcode.process_subcommands_now(F("M290 Z0.01")); zoffsetvalue += 0.01; @@ -3879,7 +3901,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case TUNE_ZDOWN: if (draw) - drawMenuItem(row, ICON_AxisD, F("Z-Offset Down")); + drawMenuItem(row, ICON_AxisD, F("Z-Offset -0.01mm Down")); else if (zoffsetvalue > MIN_Z_OFFSET) { gcode.process_subcommands_now(F("M290 Z-0.01")); zoffsetvalue -= 0.01; @@ -3888,6 +3910,17 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; #endif + #if ENABLED(LIN_ADVANCE) + case TUNE_LA: + if (draw) { + drawMenuItem(row, ICON_MaxAccelerated, GET_TEXT_F(MSG_ADVANCE_K)); + drawFloat(planner.extruder_advance_K[0], row, false, 100); + } + else + modifyValue(planner.extruder_advance_K[0], 0, 10, 100); + break; + #endif + #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) case TUNE_CHANGEFIL: if (draw) @@ -3897,10 +3930,19 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; #endif + #if ENABLED(FWRETRACT) + case TUNE_FWRETRACT: + if (draw) + drawMenuItem(row, ICON_SetHome, GET_TEXT_F(MSG_FWRETRACT), nullptr, true); + else + drawMenu(ID_FWMenu); + break; + #endif + #if ENABLED(FILAMENT_RUNOUT_SENSOR) case TUNE_FILSENSORENABLED: if (draw) { - drawMenuItem(row, ICON_Extruder, F("Filament Sensor")); + drawMenuItem(row, ICON_Extruder, GET_TEXT_F(MSG_RUNOUT_SENSOR)); drawCheckbox(row, runout.enabled); } else { @@ -3912,13 +3954,13 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case TUNE_BACKLIGHT_OFF: if (draw) - drawMenuItem(row, ICON_Brightness, F("Display Off")); + drawMenuItem(row, ICON_Brightness, GET_TEXT_F(MSG_BRIGHTNESS_OFF)); else ui.set_brightness(0); break; case TUNE_BACKLIGHT: if (draw) { - drawMenuItem(row, ICON_Brightness, F("LCD Brightness")); + drawMenuItem(row, ICON_Brightness, GET_TEXT_F(MSG_BRIGHTNESS)); drawFloat(ui.brightness, row, false, 1); } else @@ -3944,7 +3986,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra switch (item) { case PREHEATHOTEND_BACK: if (draw) - drawMenuItem(row, ICON_Back, F("Cancel")); + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BUTTON_CANCEL)); else { thermalManager.setTargetHotend(0, 0); TERN_(HAS_FAN, thermalManager.set_fan_speed(0, 0)); @@ -3953,7 +3995,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; case PREHEATHOTEND_CONTINUE: if (draw) - drawMenuItem(row, ICON_SetEndTemp, F("Continue")); + drawMenuItem(row, ICON_SetEndTemp, GET_TEXT_F(MSG_BUTTON_CONTINUE)); else { popupHandler(Popup_Heating); thermalManager.wait_for_hotend(0); @@ -3991,7 +4033,6 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra } break; - #define _PREHEAT_HOTEND_CASE(N) \ case PREHEATHOTEND_##N: \ if (draw) drawMenuItem(row, ICON_Temperature, F(PREHEAT_## N ##_LABEL)); \ @@ -4012,6 +4053,71 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; #endif // HAS_PREHEAT && HAS_HOTEND + + #if ENABLED(FWRETRACT) + case ID_FWMenu: + #define FWRETRACT_BACK 0 + #define FWRETRACT_RETLEN (FWRETRACT_BACK + 1) + #define FWRETRACT_RETSPD (FWRETRACT_RETLEN + 1) + #define FWRETRACT_RETZHOP (FWRETRACT_RETSPD + 1) + #define FWRETRACT_RECSPD (FWRETRACT_RETZHOP + 1) + #define FWRETRACT_RECLEN (FWRETRACT_RECSPD + 1) + #define FWRETRACT_TOTAL (FWRETRACT_RECLEN + 1) + + switch (item) { + case FWRETRACT_BACK: + if (draw) + drawMenuItem(row, ICON_Back, GET_TEXT_F(MSG_BUTTON_BACK)); + else { + if (last_menu == ID_Prepare) + drawMenu(ID_Prepare, PREPARE_FWRETRACT); + else if (last_menu == ID_Tune) + drawMenu(ID_Tune, TUNE_FWRETRACT); + } + break; + case FWRETRACT_RETLEN: + if (draw) { + drawMenuItem(row, ICON_FWRetLength, GET_TEXT_F(MSG_CONTROL_RETRACT)); + drawFloat(fwretract.settings.retract_length, row, false, 10); + } + else + modifyValue(fwretract.settings.retract_length, 0, 10, 10); + break; + case FWRETRACT_RETSPD: + if (draw) { + drawMenuItem(row, ICON_FWRetLength, GET_TEXT_F(MSG_SINGLENOZZLE_RETRACT_SPEED)); + drawFloat(fwretract.settings.retract_feedrate_mm_s, row, false, 1); + } + else + modifyValue(fwretract.settings.retract_feedrate_mm_s, 1, 90, 1); + break; + case FWRETRACT_RETZHOP: + if (draw) { + drawMenuItem(row, ICON_FWRetLength, GET_TEXT_F(MSG_CONTROL_RETRACT_ZHOP)); + drawFloat(fwretract.settings.retract_zraise, row, false, 100); + } + else + modifyValue(fwretract.settings.retract_zraise, 0, 2, 100); + break; + case FWRETRACT_RECSPD: + if (draw) { + drawMenuItem(row, ICON_FWRetLength, GET_TEXT_F(MSG_SINGLENOZZLE_UNRETRACT_SPEED)); + drawFloat(fwretract.settings.retract_recover_feedrate_mm_s, row, false, 1); + } + else + modifyValue(fwretract.settings.retract_recover_feedrate_mm_s, 1, 90, 1); + break; + case FWRETRACT_RECLEN: + if (draw) { + drawMenuItem(row, ICON_FWRetLength, GET_TEXT_F(MSG_CONTROL_RETRACT_RECOVER)); + drawFloat(fwretract.settings.retract_recover_extra, row, false, 10); + } + else + modifyValue(fwretract.settings.retract_recover_extra, -5, 5, 10); + break; + } + break; + #endif } } @@ -4039,6 +4145,9 @@ FSTR_P JyersDWIN::getMenuTitle(const uint8_t menu) { return GET_TEXT_F(MSG_CUSTOM_COMMANDS); #endif #endif + #if ENABLED(FWRETRACT) + case ID_FWMenu: return GET_TEXT_F(MSG_FWRETRACT); + #endif case ID_Control: return GET_TEXT_F(MSG_CONTROL); case ID_TempMenu: return GET_TEXT_F(MSG_TEMPERATURE); #if ANY(PIDTEMP, PIDTEMPBED) @@ -4057,9 +4166,9 @@ FSTR_P JyersDWIN::getMenuTitle(const uint8_t menu) { #define _PREHEAT_TITLE_CASE(N) case ID_Preheat##N: return F(PREHEAT_## N ##_LABEL " Settings"); REPEAT_1(PREHEAT_COUNT, _PREHEAT_TITLE_CASE) #endif - case ID_Motion: return F("Motion Settings"); - case ID_HomeOffsets: return F("Home Offsets"); - case ID_MaxSpeed: return F("Max Speed"); + case ID_Motion: return GET_TEXT_F(MSG_MOTION); + case ID_HomeOffsets: return GET_TEXT_F(MSG_SET_HOME_OFFSETS); + case ID_MaxSpeed: return GET_TEXT_F(MSG_MAX_SPEED); case ID_MaxAcceleration: return F("Max Acceleration"); #if HAS_CLASSIC_JERK case ID_MaxJerk: return F("Max Jerk"); @@ -4074,10 +4183,10 @@ FSTR_P JyersDWIN::getMenuTitle(const uint8_t menu) { case ID_TMCMenu: return GET_TEXT_F(MSG_TMC_DRIVERS); #endif case ID_ColorSettings: return F("UI Color Settings"); - case ID_Info: return F("Info"); - case ID_InfoMain: return F("Info"); + case ID_Info: return GET_TEXT_F(MSG_BUTTON_INFO); + case ID_InfoMain: return GET_TEXT_F(MSG_BUTTON_INFO); #if HAS_MESH - case ID_Leveling: return F("Leveling"); + case ID_Leveling: return GET_TEXT_F(MSG_BED_LEVELING); case ID_LevelView: return GET_TEXT_F(MSG_MESH_VIEW); case ID_LevelSettings: return F("Leveling Settings"); case ID_MeshViewer: return GET_TEXT_F(MSG_MESH_VIEW); @@ -4113,6 +4222,9 @@ uint8_t JyersDWIN::getMenuSize(const uint8_t menu) { #if HAS_CUSTOM_MENU case ID_MenuCustom: return CUSTOM_MENU_TOTAL; #endif + #if ENABLED(FWRETRACT) + case ID_FWMenu: return FWRETRACT_TOTAL; + #endif case ID_Control: return CONTROL_TOTAL; case ID_TempMenu: return TEMP_TOTAL; #if ANY(PIDTEMP, PIDTEMPBED) @@ -4146,7 +4258,6 @@ uint8_t JyersDWIN::getMenuSize(const uint8_t menu) { #endif #if HAS_TRINAMIC_CONFIG case ID_TMCMenu: return TMC_TOTAL; - case ID_TMCMenu: return TMC_TOTAL; #endif case ID_Info: return INFO_TOTAL; case ID_InfoMain: return INFO_TOTAL; @@ -4180,28 +4291,37 @@ uint8_t JyersDWIN::getMenuSize(const uint8_t menu) { void JyersDWIN::popupHandler(const PopupID popupid, const bool option/*=false*/) { popup = last_popup = popupid; + FSTR_P const PWID = F("Please wait until done."); switch (popupid) { - case Popup_Pause: drawPopup(F("Pause Print"), F(""), F(""), Proc_Popup); break; - case Popup_Stop: drawPopup(F("Stop Print"), F(""), F(""), Proc_Popup); break; + case Popup_Pause: drawPopup(GET_TEXT_F(MSG_PAUSE_PRINT), F(""), F(""), Proc_Popup); break; + case Popup_Stop: drawPopup(GET_TEXT_F(MSG_STOP_PRINT), F(""), F(""), Proc_Popup); break; case Popup_Resume: drawPopup(F("Resume Print?"), F("Looks Like the last"), F("print was interrupted."), Proc_Popup); break; case Popup_ConfFilChange: drawPopup(F("Confirm Filament Change"), F(""), F(""), Proc_Popup); break; case Popup_PurgeMore: drawPopup(F("Purge more filament?"), F("(Cancel to finish process)"), F(""), Proc_Popup); break; - case Popup_SaveLevel: drawPopup(F("Leveling Complete"), F("Save to EEPROM?"), F(""), Proc_Popup); break; - case Popup_MeshSlot: drawPopup(F("Mesh slot not selected"), F("(Confirm to select slot 0)"), F(""), Proc_Popup); break; - case Popup_ETemp: drawPopup(F("Nozzle is too cold"), F("Open Preheat Menu?"), F(""), Proc_Popup); break; + #if ENABLED(AUTO_BED_LEVELING_UBL) + case Popup_SaveLevel: drawPopup(GET_TEXT_F(MSG_LEVEL_BED_DONE), F("Save to EEPROM?"), F(""), Proc_Popup); break; + case Popup_MeshSlot: drawPopup(F("Mesh slot not selected"), F("(Confirm to select slot 0)"), F(""), Proc_Popup); break; + #endif + case Popup_ETemp: drawPopup(GET_TEXT_F(MSG_HOTEND_TOO_COLD), F("Open Preheat Menu?"), F(""), Proc_Popup); break; case Popup_ManualProbing: drawPopup(F("Manual Probing"), F("(Confirm to probe)"), F("(cancel to exit)"), Proc_Popup); break; - case Popup_Level: drawPopup(F("Auto Bed Leveling"), F("Please wait until done."), F(""), Proc_Wait, ICON_AutoLeveling); break; - case Popup_Home: drawPopup(option ? F("Parking") : F("Homing"), F("Please wait until done."), F(""), Proc_Wait, ICON_BLTouch); break; - case Popup_MoveWait: drawPopup(F("Moving to Point"), F("Please wait until done."), F(""), Proc_Wait, ICON_BLTouch); break; - case Popup_Heating: drawPopup(F("Heating"), F("Please wait until done."), F(""), Proc_Wait, ICON_BLTouch); break; - case Popup_FilLoad: drawPopup(option ? F("Unloading Filament") : F("Loading Filament"), F("Please wait until done."), F(""), Proc_Wait, ICON_BLTouch); break; + case Popup_Level: drawPopup(GET_TEXT_F(MSG_BED_LEVELING), PWID, F(""), Proc_Wait, ICON_AutoLeveling); break; + case Popup_Home: drawPopup(option ? F("Parking") : GET_TEXT_F(MSG_HOMING), PWID, F(""), Proc_Wait, ICON_BLTouch); break; + case Popup_MoveWait: drawPopup(GET_TEXT_F(MSG_UBL_MOVING_TO_NEXT), PWID, F(""), Proc_Wait, ICON_BLTouch); break; + case Popup_Heating: drawPopup(GET_TEXT_F(MSG_HEATING), PWID, F(""), Proc_Wait, ICON_BLTouch); break; + case Popup_FilLoad: drawPopup(option ? F("Unloading Filament") : F("Loading Filament"), PWID, F(""), Proc_Wait, ICON_BLTouch); break; case Popup_FilChange: drawPopup(F("Filament Change"), F("Please wait for prompt."), F(""), Proc_Wait, ICON_BLTouch); break; case Popup_TempWarn: drawPopup(option ? F("Nozzle temp too low!") : F("Nozzle temp too high!"), F(""), F(""), Proc_Wait, option ? ICON_TempTooLow : ICON_TempTooHigh); break; - case Popup_Runout: drawPopup(F("Filament Runout"), F(""), F(""), Proc_Wait, ICON_BLTouch); break; - case Popup_PIDWait: drawPopup(F("PID Autotune"), F("in process"), F("Please wait until done."), Proc_Wait, ICON_BLTouch); break; - case Popup_MPCWait: drawPopup(F("MPC Autotune"), F("in process"), F("Please wait until done."), Proc_Wait, ICON_BLTouch); break; - case Popup_Resuming: drawPopup(F("Resuming Print"), F("Please wait until done."), F(""), Proc_Wait, ICON_BLTouch); break; - case Popup_Custom: drawPopup(F("Running Custom G-Code"), F("Please wait until done."), F(""), Proc_Wait, ICON_BLTouch); break; + #if ENABLED(FILAMENT_RUNOUT_SENSOR) + case Popup_Runout: drawPopup(F("Filament Runout"), F(""), F(""), Proc_Wait, ICON_BLTouch); break; + #endif + #if ANY(PIDTEMP, PIDTEMPBED) + case Popup_PIDWait: drawPopup(GET_TEXT_F(MSG_PID_AUTOTUNE), F("in progress"), PWID, Proc_Wait, ICON_BLTouch); break; + #endif + #if ENABLED(MPC_AUTOTUNE_MENU) + case Popup_MPCWait: drawPopup(GET_TEXT_F(MSG_MPC_AUTOTUNE), F("in progress"), PWID, Proc_Wait, ICON_BLTouch); break; + #endif + case Popup_Resuming: drawPopup(F("Resuming Print"), PWID, F(""), Proc_Wait, ICON_BLTouch); break; + case Popup_Custom: drawPopup(F("Running Custom G-Code"), PWID, F(""), Proc_Wait, ICON_BLTouch); break; default: break; } } @@ -4439,9 +4559,8 @@ void JyersDWIN::fileControl() { card.cd(card.filename); drawSDList(); } - else { + else card.openAndPrintFile(card.filename); - } } } dwinUpdateLCD(); diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.h b/Marlin/src/lcd/e3v2/jyersui/dwin.h index 4f0669f8d89d..050a4cb39eae 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.h +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.h @@ -83,6 +83,7 @@ enum menuID : uint8_t { ID_Preheat, ID_ChangeFilament, ID_MenuCustom, + OPTITEM(FWRETRACT, ID_FWMenu) ID_Control, ID_TempMenu, ID_PID, @@ -105,9 +106,7 @@ enum menuID : uint8_t { ID_ColorSettings, ID_Advanced, ID_ProbeMenu, - #if HAS_TRINAMIC_CONFIG - ID_TMCMenu, - #endif + OPTITEM(HAS_TRINAMIC_CONFIG, ID_TMCMenu) ID_Info, ID_Leveling, ID_LevelManual, diff --git a/Marlin/src/lcd/e3v2/proui/dwinui.h b/Marlin/src/lcd/e3v2/proui/dwinui.h index 255b7ac60139..35f07404ff87 100644 --- a/Marlin/src/lcd/e3v2/proui/dwinui.h +++ b/Marlin/src/lcd/e3v2/proui/dwinui.h @@ -54,12 +54,6 @@ #define ICON_FilUnload ICON_ReadEEPROM #define ICON_Flow ICON_StepE #define ICON_Folder ICON_More -#define ICON_FWRetract ICON_StepE -#define ICON_FWRetLength ICON_StepE -#define ICON_FWRetSpeed ICON_Setspeed -#define ICON_FWRetZRaise ICON_MoveZ -#define ICON_FWRecSpeed ICON_Setspeed -#define ICON_FWRecExtra ICON_StepE #define ICON_HomeX ICON_MoveX #define ICON_HomeY ICON_MoveY #define ICON_HomeZ ICON_MoveZ diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index d6a5915dcc06..24595e191ffd 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -901,6 +901,7 @@ namespace LanguageNarrow_en { namespace LanguageWide_en { using namespace LanguageNarrow_en; #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + LSTR MSG_LIVE_MOVE = _UxGT("Live Movement"); LSTR MSG_HOST_START_PRINT = _UxGT("Start Host Print"); LSTR MSG_PRINTING_OBJECT = _UxGT("Printing Object"); LSTR MSG_CANCEL_OBJECT = _UxGT("Cancel Object");