🚸 ProUI "View Mesh (grid)" item (#26181)

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
This commit is contained in:
Andrew 2025-03-19 21:01:47 -04:00 committed by GitHub
parent 4895388909
commit d9f2c6444f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 44 additions and 18 deletions

View file

@ -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;

View file

@ -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

View file

@ -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, &current_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);
}

View file

@ -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)

View file

@ -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); }

View file

@ -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");