🚸 Fix and update ProUI (#24477)
This commit is contained in:
committed by
Scott Lahteine
parent
3a19d34c75
commit
3c9789fda8
@@ -101,17 +101,18 @@
|
||||
|
||||
#if HAS_MESH || HAS_ONESTEP_LEVELING
|
||||
#include "../../../feature/bedlevel/bedlevel.h"
|
||||
#include "bedlevel_tools.h"
|
||||
#endif
|
||||
|
||||
#if HAS_BED_PROBE
|
||||
#include "../../../module/probe.h"
|
||||
#endif
|
||||
|
||||
#ifdef BLTOUCH_HS_MODE
|
||||
#if ENABLED(BLTOUCH)
|
||||
#include "../../../feature/bltouch.h"
|
||||
#endif
|
||||
|
||||
#if ANY(BABYSTEPPING, HAS_BED_PROBE, HAS_WORKSPACE_OFFSET)
|
||||
#if EITHER(BABYSTEPPING, HAS_BED_PROBE)
|
||||
#define HAS_ZOFFSET_ITEM 1
|
||||
#if ENABLED(BABYSTEPPING)
|
||||
#include "../../../feature/babystep.h"
|
||||
@@ -141,10 +142,6 @@
|
||||
#include "meshviewer.h"
|
||||
#endif
|
||||
|
||||
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
||||
#include "ubl_tools.h"
|
||||
#endif
|
||||
|
||||
#if ENABLED(PRINTCOUNTER)
|
||||
#include "printstats.h"
|
||||
#endif
|
||||
@@ -157,16 +154,14 @@
|
||||
#include "../../../feature/leds/leds.h"
|
||||
#endif
|
||||
|
||||
#include <WString.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#if HAS_LOCKSCREEN
|
||||
#include "lockscreen.h"
|
||||
#endif
|
||||
|
||||
#ifndef MACHINE_SIZE
|
||||
#define MACHINE_SIZE STRINGIFY(X_BED_SIZE) "x" STRINGIFY(Y_BED_SIZE) "x" STRINGIFY(Z_MAX_POS)
|
||||
#endif
|
||||
|
||||
#include "lockscreen.h"
|
||||
|
||||
#define PAUSE_HEAT
|
||||
|
||||
#define MENU_CHAR_LIMIT 24
|
||||
@@ -251,6 +246,7 @@ constexpr float max_feedrate_edit_values[] =
|
||||
{ 1000, 1000, 10, 50 }
|
||||
#endif
|
||||
;
|
||||
|
||||
constexpr float max_acceleration_edit_values[] =
|
||||
#ifdef MAX_ACCEL_EDIT_VALUES
|
||||
MAX_ACCEL_EDIT_VALUES
|
||||
@@ -258,6 +254,7 @@ constexpr float max_acceleration_edit_values[] =
|
||||
{ 1000, 1000, 200, 2000 }
|
||||
#endif
|
||||
;
|
||||
|
||||
#if HAS_CLASSIC_JERK
|
||||
constexpr float max_jerk_edit_values[] =
|
||||
#ifdef MAX_JERK_EDIT_VALUES
|
||||
@@ -305,7 +302,9 @@ MenuClass *FilamentMenu = nullptr;
|
||||
MenuClass *TemperatureMenu = nullptr;
|
||||
MenuClass *MaxSpeedMenu = nullptr;
|
||||
MenuClass *MaxAccelMenu = nullptr;
|
||||
MenuClass *MaxJerkMenu = nullptr;
|
||||
#if HAS_CLASSIC_JERK
|
||||
MenuClass *MaxJerkMenu = nullptr;
|
||||
#endif
|
||||
MenuClass *StepsMenu = nullptr;
|
||||
MenuClass *HotendPIDMenu = nullptr;
|
||||
MenuClass *BedPIDMenu = nullptr;
|
||||
@@ -552,14 +551,9 @@ void Popup_window_PauseOrStop() {
|
||||
#endif
|
||||
|
||||
// Draw status line
|
||||
void DWIN_DrawStatusLine(const char *text) {
|
||||
void DWIN_DrawStatusLine() {
|
||||
DWIN_Draw_Rectangle(1, HMI_data.StatusBg_Color, 0, STATUS_Y, DWIN_WIDTH, STATUS_Y + 20);
|
||||
if (text) DWINUI::Draw_CenteredString(HMI_data.StatusTxt_Color, STATUS_Y + 2, text);
|
||||
}
|
||||
|
||||
void DWIN_DrawStatusLine(FSTR_P fstr) {
|
||||
DWIN_Draw_Rectangle(1, HMI_data.StatusBg_Color, 0, STATUS_Y, DWIN_WIDTH, STATUS_Y + 20);
|
||||
if (fstr) DWINUI::Draw_CenteredString(HMI_data.StatusTxt_Color, STATUS_Y + 2, fstr);
|
||||
DWINUI::Draw_CenteredString(HMI_data.StatusTxt_Color, STATUS_Y + 2, ui.status_message);
|
||||
}
|
||||
|
||||
// Clear & reset status line
|
||||
@@ -588,7 +582,7 @@ void DWIN_DrawStatusMessage() {
|
||||
// If the string fits the status line do not scroll it
|
||||
if (slen <= LCD_WIDTH) {
|
||||
if (hash_changed) {
|
||||
DWIN_DrawStatusLine(ui.status_message);
|
||||
DWIN_DrawStatusLine();
|
||||
hash_changed = false;
|
||||
}
|
||||
}
|
||||
@@ -620,7 +614,7 @@ void DWIN_DrawStatusMessage() {
|
||||
|
||||
if (hash_changed) {
|
||||
ui.status_message[LCD_WIDTH] = 0;
|
||||
DWIN_DrawStatusLine(ui.status_message);
|
||||
DWIN_DrawStatusLine();
|
||||
hash_changed = false;
|
||||
}
|
||||
|
||||
@@ -663,7 +657,7 @@ void ICON_ResumeOrPause() {
|
||||
}
|
||||
|
||||
// Update filename on print
|
||||
void DWIN_Print_Header(const char *text = nullptr) {
|
||||
void DWIN_Print_Header(const char *text=nullptr) {
|
||||
static char headertxt[31] = ""; // Print header text
|
||||
if (text) {
|
||||
const int8_t size = _MIN(30U, strlen_P(text));
|
||||
@@ -1099,7 +1093,7 @@ void DWIN_Draw_Dashboard() {
|
||||
DWINUI::Draw_Int(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 3, 195 + 2 * STAT_CHR_W, 384, thermalManager.fan_speed[0]);
|
||||
#endif
|
||||
|
||||
#if BOTH(BABYSTEPPING, HAS_BED_PROBE)
|
||||
#if HAS_ZOFFSET_ITEM
|
||||
DWINUI::Draw_Icon(planner.leveling_active ? ICON_SetZOffset : ICON_Zoffset, 187, 416);
|
||||
#endif
|
||||
|
||||
@@ -1370,13 +1364,15 @@ void Draw_Main_Area() {
|
||||
case ESDiagProcess: Draw_EndStopDiag(); break;
|
||||
#endif
|
||||
case Popup: popupDraw(); break;
|
||||
case Locked: lockScreen.draw(); break;
|
||||
#if HAS_LOCKSCREEN
|
||||
case Locked: lockScreen.draw(); break;
|
||||
#endif
|
||||
case Menu:
|
||||
case SetInt:
|
||||
case SetPInt:
|
||||
case SetIntNoDraw:
|
||||
case SetFloat:
|
||||
case SetPFloat: ReDrawMenu(); break;
|
||||
case SetPFloat: ReDrawMenu(true); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
@@ -1567,7 +1563,9 @@ void DWIN_HandleScreen() {
|
||||
case PrintProcess: HMI_Printing(); break;
|
||||
case Popup: HMI_Popup(); break;
|
||||
case Leveling: break;
|
||||
case Locked: HMI_LockScreen(); break;
|
||||
#if HAS_LOCKSCREEN
|
||||
case Locked: HMI_LockScreen(); break;
|
||||
#endif
|
||||
case PrintDone:
|
||||
TERN_(HAS_ESDIAG, case ESDiagProcess:)
|
||||
case WaitResponse: HMI_WaitForUser(); break;
|
||||
@@ -1769,7 +1767,7 @@ void DWIN_Print_Aborted() {
|
||||
Goto_PrintDone();
|
||||
}
|
||||
|
||||
// Progress Bar update
|
||||
// Progress and remaining time update
|
||||
void DWIN_M73() {
|
||||
if (parser.seenval('P')) {
|
||||
_percent_done = parser.value_byte();
|
||||
@@ -1843,11 +1841,6 @@ void DWIN_CopySettingsFrom(const char * const buff) {
|
||||
TERN_(PREVENT_COLD_EXTRUSION, ApplyExtMinT());
|
||||
feedrate_percentage = 100;
|
||||
TERN_(BAUD_RATE_GCODE, HMI_SetBaudRate());
|
||||
#if BOTH(CASE_LIGHT_MENU, CASELIGHT_USES_BRIGHTNESS)
|
||||
// Apply Case light brightness
|
||||
caselight.brightness = HMI_data.CaseLight_Brightness;
|
||||
caselight.update_brightness();
|
||||
#endif
|
||||
#if BOTH(LED_CONTROL_MENU, HAS_COLOR_LEDS)
|
||||
leds.set_color(
|
||||
(HMI_data.LED_Color >> 16) & 0xFF,
|
||||
@@ -1880,7 +1873,7 @@ void DWIN_InitScreen() {
|
||||
index_file = MROWS;
|
||||
hash_changed = true;
|
||||
last_E = 0;
|
||||
DWIN_DrawStatusLine(FSTR_P(nullptr));
|
||||
DWIN_DrawStatusLine();
|
||||
DWIN_Draw_Dashboard();
|
||||
Goto_Main_Menu();
|
||||
}
|
||||
@@ -1935,7 +1928,7 @@ void DWIN_RedrawScreen() {
|
||||
case PAUSE_MESSAGE_PARKING: DWIN_Popup_Pause(GET_TEXT_F(MSG_PAUSE_PRINT_PARKING)); break; // M125
|
||||
case PAUSE_MESSAGE_CHANGING: DWIN_Popup_Pause(GET_TEXT_F(MSG_FILAMENT_CHANGE_INIT)); break; // pause_print (M125, M600)
|
||||
case PAUSE_MESSAGE_WAITING: DWIN_Popup_Pause(GET_TEXT_F(MSG_ADVANCED_PAUSE_WAITING), BTN_Continue); break;
|
||||
case PAUSE_MESSAGE_INSERT: DWIN_Popup_Continue(ICON_BLTouch, GET_TEXT_F(MSG_ADVANCED_PAUSE), GET_TEXT_F(MSG_FILAMENT_CHANGE_INSERT)); break;
|
||||
case PAUSE_MESSAGE_INSERT: DWIN_Popup_Pause(GET_TEXT_F(MSG_FILAMENT_CHANGE_INSERT), BTN_Continue); break;
|
||||
case PAUSE_MESSAGE_LOAD: DWIN_Popup_Pause(GET_TEXT_F(MSG_FILAMENT_CHANGE_LOAD)); break;
|
||||
case PAUSE_MESSAGE_UNLOAD: DWIN_Popup_Pause(GET_TEXT_F(MSG_FILAMENT_CHANGE_UNLOAD)); break; // Unload of pause and Unload of M702
|
||||
case PAUSE_MESSAGE_PURGE:
|
||||
@@ -1988,28 +1981,32 @@ void DWIN_RedrawScreen() {
|
||||
}
|
||||
#endif // HAS_MESH
|
||||
|
||||
void DWIN_LockScreen() {
|
||||
if (checkkey != Locked) {
|
||||
lockScreen.rprocess = checkkey;
|
||||
checkkey = Locked;
|
||||
lockScreen.init();
|
||||
|
||||
#if HAS_LOCKSCREEN
|
||||
|
||||
void DWIN_LockScreen() {
|
||||
if (checkkey != Locked) {
|
||||
lockScreen.rprocess = checkkey;
|
||||
checkkey = Locked;
|
||||
lockScreen.init();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DWIN_UnLockScreen() {
|
||||
if (checkkey == Locked) {
|
||||
checkkey = lockScreen.rprocess;
|
||||
Draw_Main_Area();
|
||||
void DWIN_UnLockScreen() {
|
||||
if (checkkey == Locked) {
|
||||
checkkey = lockScreen.rprocess;
|
||||
Draw_Main_Area();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void HMI_LockScreen() {
|
||||
EncoderState encoder_diffState = get_encoder_state();
|
||||
if (encoder_diffState == ENCODER_DIFF_NO) return;
|
||||
lockScreen.onEncoder(encoder_diffState);
|
||||
if (lockScreen.isUnlocked()) DWIN_UnLockScreen();
|
||||
}
|
||||
void HMI_LockScreen() {
|
||||
EncoderState encoder_diffState = get_encoder_state();
|
||||
if (encoder_diffState == ENCODER_DIFF_NO) return;
|
||||
lockScreen.onEncoder(encoder_diffState);
|
||||
if (lockScreen.isUnlocked()) DWIN_UnLockScreen();
|
||||
}
|
||||
|
||||
#endif // HAS_LOCKSCREEN
|
||||
|
||||
#if HAS_GCODE_PREVIEW
|
||||
|
||||
@@ -2051,7 +2048,8 @@ void HMI_LockScreen() {
|
||||
|
||||
#if ENABLED(EEPROM_SETTINGS)
|
||||
void WriteEeprom() {
|
||||
DWIN_DrawStatusLine(GET_TEXT_F(MSG_STORE_EEPROM));
|
||||
ui.set_status(GET_TEXT_F(MSG_STORE_EEPROM));
|
||||
DWIN_DrawStatusLine();
|
||||
DWIN_UpdateLCD();
|
||||
DONE_BUZZ(settings.save());
|
||||
}
|
||||
@@ -2106,11 +2104,13 @@ void HomeX() { queue.inject(F("G28X")); }
|
||||
void HomeY() { queue.inject(F("G28Y")); }
|
||||
void HomeZ() { queue.inject(F("G28Z")); }
|
||||
|
||||
void SetHome() {
|
||||
#if HAS_HOME_OFFSET
|
||||
// Apply workspace offset, making the current position 0,0,0
|
||||
void SetHome() {
|
||||
queue.inject(F("G92X0Y0Z0"));
|
||||
DONE_BUZZ(true);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if HAS_ZOFFSET_ITEM
|
||||
|
||||
@@ -2132,22 +2132,25 @@ void SetHome() {
|
||||
void SetMoveZto0() {
|
||||
#if ENABLED(Z_SAFE_HOMING)
|
||||
char cmd[54], str_1[5], str_2[5];
|
||||
sprintf_P(cmd, PSTR("G28XYO\nG28Z\nG0X%sY%sF5000\nM420S0\nG0Z0F300\nM400"),
|
||||
sprintf_P(cmd, PSTR("G28XYO\nG28Z\nG0X%sY%sF5000\nG0Z0F300\nM400"),
|
||||
dtostrf(Z_SAFE_HOMING_X_POINT, 1, 1, str_1),
|
||||
dtostrf(Z_SAFE_HOMING_Y_POINT, 1, 1, str_2)
|
||||
);
|
||||
gcode.process_subcommands_now(cmd);
|
||||
#else
|
||||
gcode.process_subcommands_now(F("G28O\nM420S0\nG0Z0F300\nM400"));
|
||||
set_bed_leveling_enabled(false);
|
||||
gcode.process_subcommands_now(F("G28O\nG0Z0F300\nM400"));
|
||||
#endif
|
||||
ui.reset_status();
|
||||
DONE_BUZZ(true);
|
||||
}
|
||||
|
||||
void HomeZandDisable() {
|
||||
SetMoveZto0();
|
||||
DisableMotors();
|
||||
}
|
||||
#if !HAS_BED_PROBE
|
||||
void HomeZandDisable() {
|
||||
SetMoveZto0();
|
||||
DisableMotors();
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // HAS_ZOFFSET_ITEM
|
||||
|
||||
@@ -2840,9 +2843,6 @@ void onDrawGetColorItem(MenuItemClass* menuitem, int8_t line) {
|
||||
DWIN_Draw_HLine(HMI_data.SplitLine_Color, 16, MYPOS(line + 1), 240);
|
||||
}
|
||||
|
||||
#if HAS_FILAMENT_SENSOR
|
||||
void onDrawRunoutEnable(MenuItemClass* menuitem, int8_t line) { onDrawChkbMenu(menuitem, line, runout.enabled); }
|
||||
#endif
|
||||
|
||||
void onDrawPIDi(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, unscalePID_i(*(float*)static_cast<MenuItemPtrClass*>(menuitem)->value)); }
|
||||
void onDrawPIDd(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, unscalePID_d(*(float*)static_cast<MenuItemPtrClass*>(menuitem)->value)); }
|
||||
@@ -3249,7 +3249,9 @@ void Draw_AdvancedSettings_Menu() {
|
||||
MENU_ITEM_F(ICON_PrintStats, MSG_INFO_STATS_MENU, onDrawSubMenu, Goto_PrintStats);
|
||||
MENU_ITEM_F(ICON_PrintStatsReset, MSG_INFO_PRINT_COUNT_RESET, onDrawSubMenu, PrintStats.Reset);
|
||||
#endif
|
||||
MENU_ITEM_F(ICON_Lock, MSG_LOCKSCREEN, onDrawMenuItem, DWIN_LockScreen);
|
||||
#if HAS_LOCKSCREEN
|
||||
MENU_ITEM_F(ICON_Lock, MSG_LOCKSCREEN, onDrawMenuItem, DWIN_LockScreen);
|
||||
#endif
|
||||
}
|
||||
ui.reset_status(true);
|
||||
UpdateMenu(AdvancedSettings);
|
||||
@@ -3295,12 +3297,15 @@ void Draw_Move_Menu() {
|
||||
EDIT_ITEM_F(ICON_ProbeOffsetX, MSG_ZPROBE_XOFFSET, onDrawPFloatMenu, SetProbeOffsetX, &probe.offset.x);
|
||||
EDIT_ITEM_F(ICON_ProbeOffsetY, MSG_ZPROBE_YOFFSET, onDrawPFloatMenu, SetProbeOffsetY, &probe.offset.y);
|
||||
EDIT_ITEM_F(ICON_ProbeOffsetZ, MSG_ZPROBE_ZOFFSET, onDrawPFloat2Menu, SetProbeOffsetZ, &probe.offset.z);
|
||||
#ifdef BLTOUCH_HS_MODE
|
||||
EDIT_ITEM_F(ICON_HSMode, MSG_ENABLE_HS_MODE, onDrawChkbMenu, SetHSMode, &bltouch.high_speed_mode);
|
||||
#if ENABLED(BLTOUCH)
|
||||
MENU_ITEM_F(ICON_ProbeStow, MSG_MANUAL_STOW, onDrawMenuItem, ProbeStow);
|
||||
MENU_ITEM_F(ICON_ProbeDeploy, MSG_MANUAL_DEPLOY, onDrawMenuItem, ProbeDeploy);
|
||||
MENU_ITEM_F(ICON_BltouchReset, MSG_BLTOUCH_RESET, onDrawMenuItem, bltouch._reset);
|
||||
#ifdef BLTOUCH_HS_MODE
|
||||
EDIT_ITEM_F(ICON_HSMode, MSG_ENABLE_HS_MODE, onDrawChkbMenu, SetHSMode, &bltouch.high_speed_mode);
|
||||
#endif
|
||||
#endif
|
||||
MENU_ITEM_F(ICON_ProbeTest, MSG_M48_TEST, onDrawMenuItem, ProbeTest);
|
||||
MENU_ITEM_F(ICON_ProbeStow, MSG_MANUAL_STOW, onDrawMenuItem, ProbeStow);
|
||||
MENU_ITEM_F(ICON_ProbeDeploy, MSG_MANUAL_DEPLOY, onDrawMenuItem, ProbeDeploy);
|
||||
}
|
||||
UpdateMenu(ProbeSetMenu);
|
||||
}
|
||||
@@ -3384,14 +3389,24 @@ void Draw_GetColor_Menu() {
|
||||
#endif
|
||||
|
||||
#if ENABLED(LED_CONTROL_MENU)
|
||||
void Draw_LedControl_Menu() {
|
||||
checkkey = Menu;
|
||||
if (SetMenu(LedControlMenu, GET_TEXT_F(MSG_LED_CONTROL), 6)) {
|
||||
BACK_ITEM(Draw_Control_Menu);
|
||||
#if !BOTH(CASE_LIGHT_MENU, CASE_LIGHT_USE_NEOPIXEL)
|
||||
EDIT_ITEM_F(ICON_LedControl, MSG_LEDS, onDrawChkbMenu, SetLedStatus, &leds.lights_on);
|
||||
#endif
|
||||
#if HAS_COLOR_LEDS
|
||||
void Draw_LedControl_Menu() {
|
||||
checkkey = Menu;
|
||||
if (SetMenu(LedControlMenu, GET_TEXT_F(MSG_LED_CONTROL), 6)) {
|
||||
BACK_ITEM(Draw_Control_Menu);
|
||||
#if !BOTH(CASE_LIGHT_MENU, CASE_LIGHT_USE_NEOPIXEL)
|
||||
EDIT_ITEM_F(ICON_LedControl, MSG_LEDS, onDrawChkbMenu, SetLedStatus, &leds.lights_on);
|
||||
#endif
|
||||
#if HAS_COLOR_LEDS
|
||||
#if ENABLED(LED_COLOR_PRESETS)
|
||||
MENU_ITEM_F(ICON_LedControl, MSG_SET_LEDS_WHITE, onDrawMenuItem, leds.set_white);
|
||||
MENU_ITEM_F(ICON_LedControl, MSG_SET_LEDS_RED, onDrawMenuItem, leds.set_red);
|
||||
MENU_ITEM_F(ICON_LedControl, MSG_SET_LEDS_ORANGE, onDrawMenuItem, leds.set_orange);
|
||||
MENU_ITEM_F(ICON_LedControl, MSG_SET_LEDS_YELLOW, onDrawMenuItem, leds.set_yellow);
|
||||
MENU_ITEM_F(ICON_LedControl, MSG_SET_LEDS_GREEN, onDrawMenuItem, leds.set_green);
|
||||
MENU_ITEM_F(ICON_LedControl, MSG_SET_LEDS_BLUE, onDrawMenuItem, leds.set_blue);
|
||||
MENU_ITEM_F(ICON_LedControl, MSG_SET_LEDS_INDIGO, onDrawMenuItem, leds.set_indigo);
|
||||
MENU_ITEM_F(ICON_LedControl, MSG_SET_LEDS_VIOLET, onDrawMenuItem, leds.set_violet);
|
||||
#else
|
||||
EDIT_ITEM_F(ICON_LedControl, MSG_COLORS_RED, onDrawPInt8Menu, SetLEDColorR, &leds.color.r);
|
||||
EDIT_ITEM_F(ICON_LedControl, MSG_COLORS_GREEN, onDrawPInt8Menu, SetLEDColorG, &leds.color.g);
|
||||
EDIT_ITEM_F(ICON_LedControl, MSG_COLORS_BLUE, onDrawPInt8Menu, SetLEDColorB, &leds.color.b);
|
||||
@@ -3399,9 +3414,10 @@ void Draw_GetColor_Menu() {
|
||||
EDIT_ITEM_F(ICON_LedControl, MSG_COLORS_WHITE, onDrawPInt8Menu, SetLedColorW, &leds.color.w);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
UpdateMenu(LedControlMenu);
|
||||
#endif
|
||||
}
|
||||
UpdateMenu(LedControlMenu);
|
||||
}
|
||||
#endif
|
||||
|
||||
void Draw_Tune_Menu() {
|
||||
@@ -3432,7 +3448,9 @@ void Draw_Tune_Menu() {
|
||||
#if ENABLED(FWRETRACT)
|
||||
MENU_ITEM_F(ICON_FWRetract, MSG_FWRETRACT, onDrawSubMenu, Draw_FWRetract_Menu);
|
||||
#endif
|
||||
MENU_ITEM_F(ICON_Lock, MSG_LOCKSCREEN, onDrawMenuItem, DWIN_LockScreen);
|
||||
#if HAS_LOCKSCREEN
|
||||
MENU_ITEM_F(ICON_Lock, MSG_LOCKSCREEN, onDrawMenuItem, DWIN_LockScreen);
|
||||
#endif
|
||||
#if HAS_LCD_BRIGHTNESS
|
||||
EDIT_ITEM_F(ICON_Brightness, MSG_BRIGHTNESS, onDrawPInt8Menu, SetBrightness, &ui.brightness);
|
||||
MENU_ITEM_F(ICON_Brightness, MSG_BRIGHTNESS_OFF, onDrawMenuItem, TurnOffBacklight);
|
||||
@@ -3750,15 +3768,14 @@ void Draw_Steps_Menu() {
|
||||
#endif
|
||||
|
||||
#if ENABLED(MESH_EDIT_MENU)
|
||||
uint8_t mesh_x = 0, mesh_y = 0;
|
||||
#define Z_OFFSET_MIN -3
|
||||
#define Z_OFFSET_MAX 3
|
||||
|
||||
void LiveEditMesh() { ((MenuItemPtrClass*)EditZValueItem)->value = &bedlevel.z_values[HMI_value.Select ? mesh_x : MenuData.Value][HMI_value.Select ? MenuData.Value : mesh_y]; EditZValueItem->redraw(); }
|
||||
void ApplyEditMeshX() { mesh_x = MenuData.Value; }
|
||||
void SetEditMeshX() { HMI_value.Select = 0; SetIntOnClick(0, GRID_MAX_POINTS_X - 1, mesh_x, ApplyEditMeshX, LiveEditMesh); }
|
||||
void ApplyEditMeshY() { mesh_y = MenuData.Value; }
|
||||
void SetEditMeshY() { HMI_value.Select = 1; SetIntOnClick(0, GRID_MAX_POINTS_Y - 1, mesh_y, ApplyEditMeshY, LiveEditMesh); }
|
||||
void LiveEditMesh() { ((MenuItemPtrClass*)EditZValueItem)->value = &bedlevel.z_values[HMI_value.Select ? BedLevelTools.mesh_x : MenuData.Value][HMI_value.Select ? MenuData.Value : BedLevelTools.mesh_y]; EditZValueItem->redraw(); }
|
||||
void ApplyEditMeshX() { BedLevelTools.mesh_x = MenuData.Value; }
|
||||
void SetEditMeshX() { HMI_value.Select = 0; SetIntOnClick(0, GRID_MAX_POINTS_X - 1, BedLevelTools.mesh_x, ApplyEditMeshX, LiveEditMesh); }
|
||||
void ApplyEditMeshY() { BedLevelTools.mesh_y = MenuData.Value; }
|
||||
void SetEditMeshY() { HMI_value.Select = 1; SetIntOnClick(0, GRID_MAX_POINTS_Y - 1, BedLevelTools.mesh_y, ApplyEditMeshY, LiveEditMesh); }
|
||||
void SetEditZValue() { SetPFloatOnClick(Z_OFFSET_MIN, Z_OFFSET_MAX, 3); }
|
||||
#endif
|
||||
#endif
|
||||
@@ -3772,14 +3789,14 @@ void Draw_Steps_Menu() {
|
||||
onDrawIntMenu(menuitem, line, bedlevel.storage_slot);
|
||||
}
|
||||
|
||||
void ApplyUBLTiltGrid() { ubl_tools.tilt_grid = MenuData.Value; }
|
||||
void SetUBLTiltGrid() { SetIntOnClick(1, 3, ubl_tools.tilt_grid, ApplyUBLTiltGrid); }
|
||||
void ApplyUBLTiltGrid() { BedLevelTools.tilt_grid = MenuData.Value; }
|
||||
void SetUBLTiltGrid() { SetIntOnClick(1, 3, BedLevelTools.tilt_grid, ApplyUBLTiltGrid); }
|
||||
|
||||
void UBLTiltMesh() {
|
||||
if (bedlevel.storage_slot < 0) bedlevel.storage_slot = 0;
|
||||
char buf[15];
|
||||
if (ubl_tools.tilt_grid > 1) {
|
||||
sprintf_P(buf, PSTR("G28O\nG29 J%i"), ubl_tools.tilt_grid);
|
||||
if (BedLevelTools.tilt_grid > 1) {
|
||||
sprintf_P(buf, PSTR("G28O\nG29 J%i"), BedLevelTools.tilt_grid);
|
||||
gcode.process_subcommands_now(buf);
|
||||
}
|
||||
else
|
||||
@@ -3788,16 +3805,10 @@ void Draw_Steps_Menu() {
|
||||
}
|
||||
|
||||
void UBLSmartFillMesh() {
|
||||
bedlevel.smart_fill_mesh();
|
||||
LOOP_L_N(x, GRID_MAX_POINTS_Y) bedlevel.smart_fill_mesh();
|
||||
LCD_MESSAGE(MSG_UBL_MESH_FILLED);
|
||||
}
|
||||
|
||||
bool UBLValidMesh() {
|
||||
const bool valid = ubl_tools.validate();
|
||||
if (!valid) bedlevel.invalidate();
|
||||
return valid;
|
||||
}
|
||||
|
||||
void UBLSaveMesh() {
|
||||
if (bedlevel.storage_slot < 0) bedlevel.storage_slot = 0;
|
||||
settings.store_mesh(bedlevel.storage_slot);
|
||||
@@ -3808,14 +3819,6 @@ void Draw_Steps_Menu() {
|
||||
void UBLLoadMesh() {
|
||||
if (bedlevel.storage_slot < 0) bedlevel.storage_slot = 0;
|
||||
settings.load_mesh(bedlevel.storage_slot);
|
||||
if (UBLValidMesh()) {
|
||||
ui.status_printf(0, GET_TEXT_F(MSG_MESH_LOADED), bedlevel.storage_slot);
|
||||
DONE_BUZZ(true);
|
||||
}
|
||||
else {
|
||||
LCD_MESSAGE_F("Invalid Mesh Loaded");
|
||||
DONE_BUZZ(false);
|
||||
}
|
||||
}
|
||||
|
||||
#endif // AUTO_BED_LEVELING_UBL
|
||||
@@ -3837,7 +3840,7 @@ void Draw_Steps_Menu() {
|
||||
EDIT_ITEM_F(ICON_UBLActive, MSG_UBL_STORAGE_SLOT, onDrawUBLSlot, SetUBLSlot, &bedlevel.storage_slot);
|
||||
MENU_ITEM_F(ICON_UBLActive, MSG_UBL_SAVE_MESH, onDrawMenuItem, UBLSaveMesh);
|
||||
MENU_ITEM_F(ICON_UBLActive, MSG_UBL_LOAD_MESH, onDrawMenuItem, UBLLoadMesh);
|
||||
EDIT_ITEM_F(ICON_UBLActive, MSG_UBL_TILTING_GRID, onDrawPInt8Menu, SetUBLTiltGrid, &ubl_tools.tilt_grid);
|
||||
EDIT_ITEM_F(ICON_UBLActive, MSG_UBL_TILTING_GRID, onDrawPInt8Menu, SetUBLTiltGrid, &BedLevelTools.tilt_grid);
|
||||
MENU_ITEM_F(ICON_UBLActive, MSG_UBL_TILT_MESH, onDrawMenuItem, UBLTiltMesh);
|
||||
MENU_ITEM_F(ICON_UBLActive, MSG_UBL_SMART_FILLIN, onDrawMenuItem, UBLSmartFillMesh);
|
||||
#endif
|
||||
@@ -3851,13 +3854,15 @@ void Draw_Steps_Menu() {
|
||||
|
||||
#if ENABLED(MESH_EDIT_MENU)
|
||||
void Draw_EditMesh_Menu() {
|
||||
if (!leveling_is_valid()) { LCD_MESSAGE(MSG_UBL_MESH_INVALID); return; }
|
||||
set_bed_leveling_enabled(false);
|
||||
checkkey = Menu;
|
||||
if (SetMenu(EditMeshMenu, GET_TEXT_F(MSG_EDIT_MESH), 4)) {
|
||||
mesh_x = mesh_y = 0;
|
||||
BedLevelTools.mesh_x = BedLevelTools.mesh_y = 0;
|
||||
BACK_ITEM(Draw_MeshSet_Menu);
|
||||
EDIT_ITEM_F(ICON_UBLActive, MSG_MESH_X, onDrawPInt8Menu, SetEditMeshX, &mesh_x);
|
||||
EDIT_ITEM_F(ICON_UBLActive, MSG_MESH_Y, onDrawPInt8Menu, SetEditMeshY, &mesh_y);
|
||||
EditZValueItem = EDIT_ITEM_F(ICON_UBLActive, MSG_MESH_EDIT_Z, onDrawPFloat3Menu, SetEditZValue, &bedlevel.z_values[mesh_x][mesh_y]);
|
||||
EDIT_ITEM_F(ICON_UBLActive, MSG_MESH_X, onDrawPInt8Menu, SetEditMeshX,&BedLevelTools.mesh_x);
|
||||
EDIT_ITEM_F(ICON_UBLActive, MSG_MESH_Y, onDrawPInt8Menu, SetEditMeshY,&BedLevelTools.mesh_y);
|
||||
EditZValueItem = EDIT_ITEM_F(ICON_UBLActive, MSG_MESH_EDIT_Z, onDrawPFloat3Menu, SetEditZValue, &bedlevel.z_values[BedLevelTools.mesh_x][BedLevelTools.mesh_y]);
|
||||
}
|
||||
UpdateMenu(EditMeshMenu);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user