Skip to content

Commit 22e82a1

Browse files
committed
🎨 Simplify move menus with substitution
1 parent 70d7235 commit 22e82a1

File tree

3 files changed

+24
-41
lines changed

3 files changed

+24
-41
lines changed

Marlin/src/lcd/menu/menu_advanced.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,7 @@ void menu_backlash();
483483
// M204 T Travel Acceleration
484484
EDIT_ITEM_FAST(float5_25, MSG_A_TRAVEL, &planner.settings.travel_acceleration, 25, max_accel);
485485

486-
#define EDIT_AMAX(Q,L) EDIT_ITEM_FAST(long5_25, MSG_AMAX_##Q, &planner.settings.max_acceleration_mm_per_s2[_AXIS(Q)], L, max_accel_edit_scaled[_AXIS(Q)], []{ planner.reset_acceleration_rates(); })
486+
#define EDIT_AMAX(Q,L) EDIT_ITEM_FAST_N(long5_25, _AXIS(Q), MSG_AMAX_N, &planner.settings.max_acceleration_mm_per_s2[_AXIS(Q)], L, max_accel_edit_scaled[_AXIS(Q)], []{ planner.reset_acceleration_rates(); })
487487
LINEAR_AXIS_CODE(
488488
EDIT_AMAX(A, 100), EDIT_AMAX(B, 100), EDIT_AMAX(C, 10),
489489
EDIT_AMAX(I, 10), EDIT_AMAX(J, 10), EDIT_AMAX(K, 10)

Marlin/src/lcd/menu/menu_motion.cpp

Lines changed: 22 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,7 @@
5757
// "Motion" > "Move Axis" submenu
5858
//
5959

60-
// TODO: Use substitution here with MSG_MOVE_N
61-
62-
static void _lcd_move_xyz(FSTR_P const name, const AxisEnum axis) {
60+
static void _lcd_move_xyz(const AxisEnum axis) {
6361
if (ui.use_click()) return ui.goto_previous_screen_no_defer();
6462
if (ui.encoderPosition && !ui.manual_move.processing) {
6563
// Get motion limit from software endstops, if any
@@ -86,28 +84,20 @@ static void _lcd_move_xyz(FSTR_P const name, const AxisEnum axis) {
8684
const float pos = ui.manual_move.axis_value(axis);
8785
if (parser.using_inch_units()) {
8886
const float imp_pos = LINEAR_UNIT(pos);
89-
MenuEditItemBase::draw_edit_screen(name, ftostr63(imp_pos));
87+
MenuEditItemBase::draw_edit_screen(GET_TEXT_F(MSG_MOVE_N), ftostr63(imp_pos));
9088
}
9189
else
92-
MenuEditItemBase::draw_edit_screen(name, ui.manual_move.menu_scale >= 0.1f ? (LARGE_AREA_TEST ? ftostr51sign(pos) : ftostr41sign(pos)) : ftostr63(pos));
90+
MenuEditItemBase::draw_edit_screen(GET_TEXT_F(MSG_MOVE_N), ui.manual_move.menu_scale >= 0.1f ? (LARGE_AREA_TEST ? ftostr51sign(pos) : ftostr41sign(pos)) : ftostr63(pos));
9391
}
9492
}
95-
void lcd_move_x() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_X), X_AXIS); }
96-
#if HAS_Y_AXIS
97-
void lcd_move_y() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_Y), Y_AXIS); }
98-
#endif
99-
#if HAS_Z_AXIS
100-
void lcd_move_z() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_Z), Z_AXIS); }
101-
#endif
102-
#if HAS_I_AXIS
103-
void lcd_move_i() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_I), I_AXIS); }
104-
#endif
105-
#if HAS_J_AXIS
106-
void lcd_move_j() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_J), J_AXIS); }
107-
#endif
108-
#if HAS_K_AXIS
109-
void lcd_move_k() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_K), K_AXIS); }
110-
#endif
93+
94+
void _lcd_move_axis_n() { _lcd_move_xyz(AxisEnum(MenuItemBase::itemIndex)); }
95+
96+
// Move functions for non-menu code that hasn't set itemIndex (e.g., keypad)
97+
void lcd_move_axis(const AxisEnum axis) { MenuEditItemBase::itemIndex = int8_t(axis); _lcd_move_axis_n(); }
98+
99+
// Move Z easy accessor
100+
void lcd_move_z() { lcd_move_axis(Z_AXIS); }
111101

112102
#if E_MANUAL
113103

@@ -193,6 +183,8 @@ void _menu_move_distance(const AxisEnum axis, const screenFunc_t func, const int
193183
END_MENU();
194184
}
195185

186+
void _menu_move_n_distance() { _menu_move_distance(AxisEnum(MenuItemBase::itemIndex), _lcd_move_axis_n); }
187+
196188
#if E_MANUAL
197189

198190
inline void _goto_menu_move_distance_e() {
@@ -226,29 +218,20 @@ void menu_move() {
226218
EDIT_ITEM(bool, MSG_LCD_SOFT_ENDSTOPS, &soft_endstop._enabled);
227219
#endif
228220

221+
// Move submenu for each axis
229222
if (NONE(IS_KINEMATIC, NO_MOTION_BEFORE_HOMING) || all_axes_homed()) {
230223
if (TERN1(DELTA, current_position.z <= delta_clip_start_height)) {
231-
SUBMENU(MSG_MOVE_X, []{ _menu_move_distance(X_AXIS, lcd_move_x); });
232-
#if HAS_Y_AXIS
233-
SUBMENU(MSG_MOVE_Y, []{ _menu_move_distance(Y_AXIS, lcd_move_y); });
234-
#endif
224+
for (uint8_t a = X_AXIS; a <= min(int(Y_AXIS), LINEAR_AXES - 1); a++)
225+
SUBMENU_N(a, MSG_MOVE_N, _menu_move_n_distance);
235226
}
236-
#if ENABLED(DELTA)
237-
else
227+
else {
228+
#if ENABLED(DELTA)
238229
ACTION_ITEM(MSG_FREE_XY, []{ line_to_z(delta_clip_start_height); ui.synchronize(); });
239-
#endif
240-
230+
#endif
231+
}
241232
#if HAS_Z_AXIS
242-
SUBMENU(MSG_MOVE_Z, []{ _menu_move_distance(Z_AXIS, lcd_move_z); });
243-
#endif
244-
#if HAS_I_AXIS
245-
SUBMENU(MSG_MOVE_I, []{ _menu_move_distance(I_AXIS, lcd_move_i); });
246-
#endif
247-
#if HAS_J_AXIS
248-
SUBMENU(MSG_MOVE_J, []{ _menu_move_distance(J_AXIS, lcd_move_j); });
249-
#endif
250-
#if HAS_K_AXIS
251-
SUBMENU(MSG_MOVE_K, []{ _menu_move_distance(K_AXIS, lcd_move_k); });
233+
for (uint8_t a = Z_AXIS; a < LINEAR_AXES; a++)
234+
SUBMENU_N(a, MSG_MOVE_N, _menu_move_n_distance);
252235
#endif
253236
}
254237
else

Marlin/src/libs/L64XX/L64XX_Marlin.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ uint8_t L64XX_Marlin::dir_commands[MAX_L64XX]; // array to hold direction comma
6868

6969
#define _EN_ITEM(N) , ENABLED(INVERT_E##N##_DIR)
7070
const uint8_t L64XX_Marlin::index_to_dir[MAX_L64XX] = {
71-
NUM_AXIS_LIST(ENABLED(INVERT_X_DIR), ENABLED(INVERT_Y_DIR), ENABLED(INVERT_Z_DIR), ENABLED(INVERT_I_DIR), ENABLED(INVERT_J_DIR), ENABLED(INVERT_K_DIR))
71+
LINEAR_AXIS_LIST(ENABLED(INVERT_X_DIR), ENABLED(INVERT_Y_DIR), ENABLED(INVERT_Z_DIR), ENABLED(INVERT_I_DIR), ENABLED(INVERT_J_DIR), ENABLED(INVERT_K_DIR))
7272
, ENABLED(INVERT_X_DIR) ^ BOTH(HAS_DUAL_X_STEPPERS, INVERT_X2_VS_X_DIR) // X2
7373
, ENABLED(INVERT_Y_DIR) ^ BOTH(HAS_DUAL_Y_STEPPERS, INVERT_Y2_VS_Y_DIR) // Y2
7474
, ENABLED(INVERT_Z_DIR) ^ ENABLED(INVERT_Z2_VS_Z_DIR) // Z2

0 commit comments

Comments
 (0)