From d9f2c6444fb04bc78a146a1cd795d66a64d65a84 Mon Sep 17 00:00:00 2001 From: Andrew <18502096+classicrocker883@users.noreply.github.com> Date: Wed, 19 Mar 2025 21:01:47 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=B8=20ProUI=20"View=20Mesh=20(grid)"?= =?UTF-8?q?=20item=20(#26181)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp | 1 + Marlin/src/lcd/e3v2/proui/bedlevel_tools.h | 6 ++-- Marlin/src/lcd/e3v2/proui/dwin.cpp | 19 ++++++++++-- Marlin/src/lcd/e3v2/proui/dwin_defines.h | 4 +++ Marlin/src/lcd/e3v2/proui/meshviewer.cpp | 31 ++++++++++++-------- Marlin/src/lcd/language/language_en.h | 1 + 6 files changed, 44 insertions(+), 18 deletions(-) diff --git a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp index e4b6fb72a0..b85caaf6cc 100644 --- a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp +++ b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.cpp @@ -63,6 +63,7 @@ BedLevelTools bedLevelTools; #if ENABLED(USE_GRID_MESHVIEWER) + bool BedLevelTools::grid_meshview = false; bool BedLevelTools::viewer_print_value = false; #endif bool BedLevelTools::goto_mesh_value = false; diff --git a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.h b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.h index a0da0ceeb3..5716316ee4 100644 --- a/Marlin/src/lcd/e3v2/proui/bedlevel_tools.h +++ b/Marlin/src/lcd/e3v2/proui/bedlevel_tools.h @@ -46,8 +46,8 @@ class BedLevelTools { public: - #if ENABLED(USE_GRID_MESHVIEWER) - static bool viewer_asymmetric_range; + #if USE_GRID_MESHVIEWER + static bool grid_meshview; static bool viewer_print_value; #endif static bool goto_mesh_value; @@ -69,7 +69,7 @@ public: static float getMaxValue(); static float getMinValue(); static bool meshValidate(); - #if ENABLED(USE_GRID_MESHVIEWER) + #if USE_GRID_MESHVIEWER static void drawBedMesh(int16_t selected=-1, uint8_t gridline_width=1, uint16_t padding_x=8, uint16_t padding_y_top=(40 + 53 - 7)); static void setMeshViewerStatus(); #endif diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index 03f25b5010..a775d2ae27 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -2000,7 +2000,7 @@ void dwinRedrawScreen() { #endif // ADVANCED_PAUSE_FEATURE #if HAS_MESH - void dwinMeshViewer() { + void _dwinMeshViewer() { if (!leveling_is_valid()) dwinPopupContinue(ICON_Leveling_1, GET_TEXT_F(MSG_MESH_VIEWER), GET_TEXT_F(MSG_NO_VALID_MESH)); else { @@ -2008,6 +2008,13 @@ void dwinRedrawScreen() { meshViewer.draw(); } } + void dwinMeshViewer() { + TERN_(USE_GRID_MESHVIEWER, bedLevelTools.grid_meshview = false); + _dwinMeshViewer(); + } + #if ENABLED(USE_GRID_MESHVIEWER) + void dwinMeshViewerGrid() { bedLevelTools.grid_meshview = true; _dwinMeshViewer(); } + #endif #endif #if HAS_LOCKSCREEN @@ -3727,13 +3734,17 @@ void drawFilamentManMenu() { #if ENABLED(MESH_BED_LEVELING) void drawManualMeshMenu() { + constexpr uint8_t items = 6 + ENABLED(USE_GRID_MESHVIEWER); checkkey = ID_Menu; - if (SET_MENU(manualMeshMenu, MSG_UBL_MANUAL_MESH, 6)) { + if (SET_MENU(manualMeshMenu, MSG_UBL_MANUAL_MESH, items)) { BACK_ITEM(drawPrepareMenu); MENU_ITEM(ICON_ManualMesh, MSG_LEVEL_BED, onDrawMenuItem, manualMeshStart); mMeshMoveZItem = EDIT_ITEM(ICON_Zoffset, MSG_MOVE_Z, onDrawMMeshMoveZ, setMMeshMoveZ, ¤t_position.z); MENU_ITEM(ICON_Axis, MSG_UBL_CONTINUE_MESH, onDrawMenuItem, manualMeshContinue); MENU_ITEM(ICON_MeshViewer, MSG_MESH_VIEW, onDrawSubMenu, dwinMeshViewer); + #if USE_GRID_MESHVIEWER + MENU_ITEM(ICON_MeshViewer, MSG_MESH_VIEW_GRID, onDrawSubMenu, dwinMeshViewerGrid); + #endif MENU_ITEM(ICON_MeshSave, MSG_UBL_SAVE_MESH, onDrawMenuItem, manualMeshSave); } updateMenu(manualMeshMenu); @@ -4333,6 +4344,7 @@ void drawMaxAccelMenu() { + TERN0(AUTO_BED_LEVELING_UBL, 6) + TERN0(PROUI_MESH_EDIT, 2) + 1 + + ENABLED(USE_GRID_MESHVIEWER) ); checkkey = ID_Menu; if (SET_MENU(meshMenu, MSG_MESH_LEVELING, items)) { @@ -4358,6 +4370,9 @@ void drawMaxAccelMenu() { MENU_ITEM(ICON_MeshEdit, MSG_EDIT_MESH, onDrawSubMenu, drawEditMeshMenu); #endif MENU_ITEM(ICON_MeshViewer, MSG_MESH_VIEW, onDrawSubMenu, dwinMeshViewer); + #if USE_GRID_MESHVIEWER + MENU_ITEM(ICON_MeshViewer, MSG_MESH_VIEW_GRID, onDrawSubMenu, dwinMeshViewerGrid); + #endif } updateMenu(meshMenu); } diff --git a/Marlin/src/lcd/e3v2/proui/dwin_defines.h b/Marlin/src/lcd/e3v2/proui/dwin_defines.h index b72bdf1d23..832702db8f 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin_defines.h +++ b/Marlin/src/lcd/e3v2/proui/dwin_defines.h @@ -35,6 +35,10 @@ //#define DACAI_DISPLAY // Enable for DACAI display //#define TITLE_CENTERED // Center Menu Title Text +#if HAS_MESH + #define USE_GRID_MESHVIEWER 1 +#endif + #if HAS_MESH #define PROUI_MESH_EDIT // Add a menu to edit mesh points #if ENABLED(PROUI_MESH_EDIT) diff --git a/Marlin/src/lcd/e3v2/proui/meshviewer.cpp b/Marlin/src/lcd/e3v2/proui/meshviewer.cpp index 38d0af4f82..e167af5665 100644 --- a/Marlin/src/lcd/e3v2/proui/meshviewer.cpp +++ b/Marlin/src/lcd/e3v2/proui/meshviewer.cpp @@ -39,7 +39,7 @@ #include "../../../feature/bedlevel/bedlevel.h" #include "meshviewer.h" -#if ENABLED(USE_GRID_MESHVIEWER) +#if USE_GRID_MESHVIEWER #include "bedlevel_tools.h" #endif @@ -112,14 +112,20 @@ void MeshViewer::drawMesh(const bed_mesh_t zval, const uint8_t csizex, const uin void MeshViewer::draw(const bool withsave/*=false*/, const bool redraw/*=true*/) { title.showCaption(GET_TEXT_F(MSG_MESH_VIEWER)); - #if ENABLED(USE_GRID_MESHVIEWER) - DWINUI::clearMainArea(); - bedLevelTools.viewer_print_value = true; - bedLevelTools.drawBedMesh(-1, 1, 8, 10 + TITLE_HEIGHT); - #else + + const bool see_mesh = TERN0(USE_GRID_MESHVIEWER, bedLevelTools.grid_meshview); + if (see_mesh) { + #if USE_GRID_MESHVIEWER + DWINUI::clearMainArea(); + bedLevelTools.viewer_print_value = true; + bedLevelTools.drawBedMesh(-1, 1, 8, 10 + TITLE_HEIGHT); + #endif + } + else { if (redraw) drawMesh(bedlevel.z_values, GRID_MAX_POINTS_X, GRID_MAX_POINTS_Y); else DWINUI::drawBox(1, hmiData.colorBackground, { 89, 305, 99, 38 }); - #endif + } + if (withsave) { DWINUI::drawButton(BTN_Save, 26, 305); DWINUI::drawButton(BTN_Continue, 146, 305); @@ -128,12 +134,11 @@ void MeshViewer::draw(const bool withsave/*=false*/, const bool redraw/*=true*/) else DWINUI::drawButton(BTN_Continue, 86, 305); - #if ENABLED(USE_GRID_MESHVIEWER) - bedLevelTools.setMeshViewerStatus(); - #else - char str_1[6], str_2[6] = ""; - ui.status_printf(0, F("Mesh minZ: %s, maxZ: %s"), dtostrf(min, 1, 2, str_1), dtostrf(max, 1, 2, str_2)); - #endif + if (see_mesh) { + TERN_(USE_GRID_MESHVIEWER, bedLevelTools.setMeshViewerStatus()); + } + else // TODO: in marlinui.h set_status_and_level was defined to (..., const int8_t level=0); remove ", 0" when pulling other PR + ui.set_status_and_level(MString<30>(F("Mesh Z min: "), p_float_t(min, 2), F(", max: "), p_float_t(max, 2)), 0); } void drawMeshViewer() { meshViewer.draw(true, meshredraw); } diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index 6076c6fb30..5762fa150e 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -198,6 +198,7 @@ namespace LanguageNarrow_en { LSTR MSG_MESH_VIEWER = _UxGT("Mesh Viewer"); LSTR MSG_EDIT_MESH = _UxGT("Edit Mesh"); LSTR MSG_MESH_VIEW = _UxGT("View Mesh"); + LSTR MSG_MESH_VIEW_GRID = _UxGT("View Mesh (grid)"); LSTR MSG_EDITING_STOPPED = _UxGT("Mesh Editing Stopped"); LSTR MSG_NO_VALID_MESH = _UxGT("No valid mesh"); LSTR MSG_ACTIVATE_MESH = _UxGT("Activate Leveling");