|
@@ -54,9 +54,7 @@
|
54
|
54
|
// "Motion" > "Move Axis" submenu
|
55
|
55
|
//
|
56
|
56
|
|
57
|
|
-// TODO: Use substitution here with MSG_MOVE_N
|
58
|
|
-
|
59
|
|
-static void _lcd_move_xyz(FSTR_P const name, const AxisEnum axis) {
|
|
57
|
+static void _lcd_move_xyz(const AxisEnum axis) {
|
60
|
58
|
if (ui.use_click()) return ui.goto_previous_screen_no_defer();
|
61
|
59
|
if (ui.encoderPosition && !ui.manual_move.processing) {
|
62
|
60
|
// Get motion limit from software endstops, if any
|
|
@@ -83,37 +81,20 @@ static void _lcd_move_xyz(FSTR_P const name, const AxisEnum axis) {
|
83
|
81
|
const float pos = ui.manual_move.axis_value(axis);
|
84
|
82
|
if (parser.using_inch_units()) {
|
85
|
83
|
const float imp_pos = LINEAR_UNIT(pos);
|
86
|
|
- MenuEditItemBase::draw_edit_screen(name, ftostr63(imp_pos));
|
|
84
|
+ MenuEditItemBase::draw_edit_screen(GET_TEXT_F(MSG_MOVE_N), ftostr63(imp_pos));
|
87
|
85
|
}
|
88
|
86
|
else
|
89
|
|
- MenuEditItemBase::draw_edit_screen(name, ui.manual_move.menu_scale >= 0.1f ? (LARGE_AREA_TEST ? ftostr51sign(pos) : ftostr41sign(pos)) : ftostr63(pos));
|
|
87
|
+ 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));
|
90
|
88
|
}
|
91
|
89
|
}
|
92
|
|
-void lcd_move_x() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_X), X_AXIS); }
|
93
|
|
-#if HAS_Y_AXIS
|
94
|
|
- void lcd_move_y() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_Y), Y_AXIS); }
|
95
|
|
-#endif
|
96
|
|
-#if HAS_Z_AXIS
|
97
|
|
- void lcd_move_z() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_Z), Z_AXIS); }
|
98
|
|
-#endif
|
99
|
|
-#if HAS_I_AXIS
|
100
|
|
- void lcd_move_i() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_I), I_AXIS); }
|
101
|
|
-#endif
|
102
|
|
-#if HAS_J_AXIS
|
103
|
|
- void lcd_move_j() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_J), J_AXIS); }
|
104
|
|
-#endif
|
105
|
|
-#if HAS_K_AXIS
|
106
|
|
- void lcd_move_k() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_K), K_AXIS); }
|
107
|
|
-#endif
|
108
|
|
-#if HAS_U_AXIS
|
109
|
|
- void lcd_move_u() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_U), U_AXIS); }
|
110
|
|
-#endif
|
111
|
|
-#if HAS_V_AXIS
|
112
|
|
- void lcd_move_v() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_V), V_AXIS); }
|
113
|
|
-#endif
|
114
|
|
-#if HAS_W_AXIS
|
115
|
|
- void lcd_move_w() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_W), W_AXIS); }
|
116
|
|
-#endif
|
|
90
|
+
|
|
91
|
+void _lcd_move_axis_n() { _lcd_move_xyz(AxisEnum(MenuItemBase::itemIndex)); }
|
|
92
|
+
|
|
93
|
+// Move functions for non-menu code that hasn't set itemIndex (e.g., keypad)
|
|
94
|
+void lcd_move_axis(const AxisEnum axis) { MenuEditItemBase::itemIndex = int8_t(axis); _lcd_move_axis_n(); }
|
|
95
|
+
|
|
96
|
+// Move Z easy accessor
|
|
97
|
+void lcd_move_z() { lcd_move_axis(Z_AXIS); }
|
117
|
98
|
|
118
|
99
|
#if E_MANUAL
|
119
|
100
|
|
|
@@ -200,6 +181,8 @@ void _menu_move_distance(const AxisEnum axis, const screenFunc_t func, const int
|
200
|
181
|
END_MENU();
|
201
|
182
|
}
|
202
|
183
|
|
|
184
|
+void _menu_move_n_distance() { _menu_move_distance(AxisEnum(MenuItemBase::itemIndex), _lcd_move_axis_n); }
|
|
185
|
+
|
203
|
186
|
#if E_MANUAL
|
204
|
187
|
|
205
|
188
|
inline void _goto_menu_move_distance_e() {
|
|
@@ -230,38 +213,20 @@ void menu_move() {
|
230
|
213
|
EDIT_ITEM(bool, MSG_LCD_SOFT_ENDSTOPS, &soft_endstop._enabled);
|
231
|
214
|
#endif
|
232
|
215
|
|
|
216
|
+ // Move submenu for each axis
|
233
|
217
|
if (NONE(IS_KINEMATIC, NO_MOTION_BEFORE_HOMING) || all_axes_homed()) {
|
234
|
218
|
if (TERN1(DELTA, current_position.z <= delta_clip_start_height)) {
|
235
|
|
- SUBMENU(MSG_MOVE_X, []{ _menu_move_distance(X_AXIS, lcd_move_x); });
|
236
|
|
- #if HAS_Y_AXIS
|
237
|
|
- SUBMENU(MSG_MOVE_Y, []{ _menu_move_distance(Y_AXIS, lcd_move_y); });
|
238
|
|
- #endif
|
|
219
|
+ for (uint8_t a = X_AXIS; a <= min(int(Y_AXIS), NUM_AXES - 1); a++)
|
|
220
|
+ SUBMENU_N(a, MSG_MOVE_N, _menu_move_n_distance);
|
239
|
221
|
}
|
240
|
|
- #if ENABLED(DELTA)
|
241
|
|
- else
|
|
222
|
+ else {
|
|
223
|
+ #if ENABLED(DELTA)
|
242
|
224
|
ACTION_ITEM(MSG_FREE_XY, []{ line_to_z(delta_clip_start_height); ui.synchronize(); });
|
243
|
|
- #endif
|
244
|
|
-
|
|
225
|
+ #endif
|
|
226
|
+ }
|
245
|
227
|
#if HAS_Z_AXIS
|
246
|
|
- SUBMENU(MSG_MOVE_Z, []{ _menu_move_distance(Z_AXIS, lcd_move_z); });
|
247
|
|
- #endif
|
248
|
|
- #if HAS_I_AXIS
|
249
|
|
- SUBMENU(MSG_MOVE_I, []{ _menu_move_distance(I_AXIS, lcd_move_i); });
|
250
|
|
- #endif
|
251
|
|
- #if HAS_J_AXIS
|
252
|
|
- SUBMENU(MSG_MOVE_J, []{ _menu_move_distance(J_AXIS, lcd_move_j); });
|
253
|
|
- #endif
|
254
|
|
- #if HAS_K_AXIS
|
255
|
|
- SUBMENU(MSG_MOVE_K, []{ _menu_move_distance(K_AXIS, lcd_move_k); });
|
256
|
|
- #endif
|
257
|
|
- #if HAS_U_AXIS
|
258
|
|
- SUBMENU(MSG_MOVE_U, []{ _menu_move_distance(U_AXIS, lcd_move_u); });
|
259
|
|
- #endif
|
260
|
|
- #if HAS_V_AXIS
|
261
|
|
- SUBMENU(MSG_MOVE_V, []{ _menu_move_distance(V_AXIS, lcd_move_v); });
|
262
|
|
- #endif
|
263
|
|
- #if HAS_W_AXIS
|
264
|
|
- SUBMENU(MSG_MOVE_W, []{ _menu_move_distance(W_AXIS, lcd_move_w); });
|
|
228
|
+ for (uint8_t a = Z_AXIS; a < NUM_AXES; a++)
|
|
229
|
+ SUBMENU_N(a, MSG_MOVE_N, _menu_move_n_distance);
|
265
|
230
|
#endif
|
266
|
231
|
}
|
267
|
232
|
else
|