Merge upstream changes from Marlin 2.1.2
This commit is contained in:
@@ -61,7 +61,7 @@ typedef struct {
|
||||
screenFunc_t menu_function; // The screen's function
|
||||
uint32_t encoder_position; // The position of the encoder
|
||||
int8_t top_line, items; // The amount of scroll, and the number of items
|
||||
#if SCREENS_CAN_TIME_OUT
|
||||
#if HAS_SCREEN_TIMEOUT
|
||||
bool sticky; // The screen is sticky
|
||||
#endif
|
||||
} menuPosition;
|
||||
@@ -89,7 +89,7 @@ void MarlinUI::return_to_status() { goto_screen(status_screen); }
|
||||
|
||||
void MarlinUI::push_current_screen() {
|
||||
if (screen_history_depth < COUNT(screen_history))
|
||||
screen_history[screen_history_depth++] = { currentScreen, encoderPosition, encoderTopLine, screen_items OPTARG(SCREENS_CAN_TIME_OUT, screen_is_sticky()) };
|
||||
screen_history[screen_history_depth++] = { currentScreen, encoderPosition, encoderTopLine, screen_items OPTARG(HAS_SCREEN_TIMEOUT, screen_is_sticky()) };
|
||||
}
|
||||
|
||||
void MarlinUI::_goto_previous_screen(TERN_(TURBO_BACK_MENU_ITEM, const bool is_back/*=false*/)) {
|
||||
@@ -102,7 +102,7 @@ void MarlinUI::_goto_previous_screen(TERN_(TURBO_BACK_MENU_ITEM, const bool is_b
|
||||
is_back ? 0 : sh.top_line,
|
||||
sh.items
|
||||
);
|
||||
defer_status_screen(TERN_(SCREENS_CAN_TIME_OUT, sh.sticky));
|
||||
defer_status_screen(TERN_(HAS_SCREEN_TIMEOUT, sh.sticky));
|
||||
}
|
||||
else
|
||||
return_to_status();
|
||||
@@ -175,7 +175,7 @@ void MarlinUI::goto_screen(screenFunc_t screen, const uint16_t encoder/*=0*/, co
|
||||
|
||||
TERN_(HAS_TOUCH_BUTTONS, repeat_delay = BUTTON_DELAY_MENU);
|
||||
|
||||
TERN_(LCD_SET_PROGRESS_MANUALLY, progress_reset());
|
||||
TERN_(SET_PROGRESS_PERCENT, progress_reset());
|
||||
|
||||
#if BOTH(DOUBLECLICK_FOR_Z_BABYSTEPPING, BABYSTEPPING)
|
||||
static millis_t doubleclick_expire_ms = 0;
|
||||
|
@@ -31,6 +31,7 @@
|
||||
#include "menu_item.h"
|
||||
#include "../../MarlinCore.h"
|
||||
#include "../../module/planner.h"
|
||||
#include "../../module/stepper.h"
|
||||
|
||||
#if DISABLED(NO_VOLUMETRICS)
|
||||
#include "../../gcode/parser.h"
|
||||
@@ -80,8 +81,6 @@ void menu_backlash();
|
||||
|
||||
#if HAS_MOTOR_CURRENT_PWM
|
||||
|
||||
#include "../../module/stepper.h"
|
||||
|
||||
void menu_pwm() {
|
||||
START_MENU();
|
||||
BACK_ITEM(MSG_ADVANCED_SETTINGS);
|
||||
@@ -109,9 +108,9 @@ void menu_backlash();
|
||||
BACK_ITEM(MSG_ADVANCED_SETTINGS);
|
||||
|
||||
#if ENABLED(LIN_ADVANCE)
|
||||
#if EXTRUDERS == 1
|
||||
#if DISTINCT_E < 2
|
||||
EDIT_ITEM(float42_52, MSG_ADVANCE_K, &planner.extruder_advance_K[0], 0, 10);
|
||||
#elif HAS_MULTI_EXTRUDER
|
||||
#else
|
||||
EXTRUDER_LOOP()
|
||||
EDIT_ITEM_N(float42_52, e, MSG_ADVANCE_K_E, &planner.extruder_advance_K[e], 0, 10);
|
||||
#endif
|
||||
@@ -209,37 +208,59 @@ void menu_backlash();
|
||||
|
||||
#if ENABLED(PID_EDIT_MENU)
|
||||
|
||||
float raw_Ki, raw_Kd; // place-holders for Ki and Kd edits
|
||||
// Placeholders for PID editing
|
||||
float raw_Kp, raw_Ki, raw_Kd;
|
||||
#if ENABLED(PID_EXTRUSION_SCALING)
|
||||
float raw_Kc;
|
||||
#endif
|
||||
#if ENABLED(PID_FAN_SCALING)
|
||||
float raw_Kf;
|
||||
#endif
|
||||
|
||||
// Helpers for editing PID Ki & Kd values
|
||||
// grab the PID value out of the temp variable; scale it; then update the PID driver
|
||||
void copy_and_scalePID_i(const int8_t e) {
|
||||
// Helpers for editing PID Kp, Ki and Kd values
|
||||
void apply_PID_p(const int8_t e) {
|
||||
switch (e) {
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
case H_BED: thermalManager.temp_bed.pid.Ki = scalePID_i(raw_Ki); break;
|
||||
case H_BED: thermalManager.temp_bed.pid.set_Kp(raw_Kp); break;
|
||||
#endif
|
||||
#if ENABLED(PIDTEMPCHAMBER)
|
||||
case H_CHAMBER: thermalManager.temp_chamber.pid.Ki = scalePID_i(raw_Ki); break;
|
||||
case H_CHAMBER: thermalManager.temp_chamber.pid.set_Kp(raw_Kp); break;
|
||||
#endif
|
||||
default:
|
||||
#if ENABLED(PIDTEMP)
|
||||
PID_PARAM(Ki, e) = scalePID_i(raw_Ki);
|
||||
SET_HOTEND_PID(Kp, e, raw_Kp);
|
||||
thermalManager.updatePID();
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
void copy_and_scalePID_d(const int8_t e) {
|
||||
void apply_PID_i(const int8_t e) {
|
||||
switch (e) {
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
case H_BED: thermalManager.temp_bed.pid.Kd = scalePID_d(raw_Kd); break;
|
||||
case H_BED: thermalManager.temp_bed.pid.set_Ki(raw_Ki); break;
|
||||
#endif
|
||||
#if ENABLED(PIDTEMPCHAMBER)
|
||||
case H_CHAMBER: thermalManager.temp_chamber.pid.Kd = scalePID_d(raw_Kd); break;
|
||||
case H_CHAMBER: thermalManager.temp_chamber.pid.set_Ki(raw_Ki); break;
|
||||
#endif
|
||||
default:
|
||||
#if ENABLED(PIDTEMP)
|
||||
PID_PARAM(Kd, e) = scalePID_d(raw_Kd);
|
||||
SET_HOTEND_PID(Ki, e, raw_Ki);
|
||||
thermalManager.updatePID();
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
void apply_PID_d(const int8_t e) {
|
||||
switch (e) {
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
case H_BED: thermalManager.temp_bed.pid.set_Kd(raw_Kd); break;
|
||||
#endif
|
||||
#if ENABLED(PIDTEMPCHAMBER)
|
||||
case H_CHAMBER: thermalManager.temp_chamber.pid.set_Kd(raw_Kd); break;
|
||||
#endif
|
||||
default:
|
||||
#if ENABLED(PIDTEMP)
|
||||
SET_HOTEND_PID(Kd, e, raw_Kd);
|
||||
thermalManager.updatePID();
|
||||
#endif
|
||||
break;
|
||||
@@ -291,16 +312,18 @@ void menu_backlash();
|
||||
|
||||
#if BOTH(PIDTEMP, PID_EDIT_MENU)
|
||||
#define __PID_HOTEND_MENU_ITEMS(N) \
|
||||
raw_Ki = unscalePID_i(PID_PARAM(Ki, N)); \
|
||||
raw_Kd = unscalePID_d(PID_PARAM(Kd, N)); \
|
||||
EDIT_ITEM_FAST_N(float41sign, N, MSG_PID_P_E, &PID_PARAM(Kp, N), 1, 9990); \
|
||||
EDIT_ITEM_FAST_N(float52sign, N, MSG_PID_I_E, &raw_Ki, 0.01f, 9990, []{ copy_and_scalePID_i(N); }); \
|
||||
EDIT_ITEM_FAST_N(float41sign, N, MSG_PID_D_E, &raw_Kd, 1, 9990, []{ copy_and_scalePID_d(N); })
|
||||
raw_Kp = thermalManager.temp_hotend[N].pid.p(); \
|
||||
raw_Ki = thermalManager.temp_hotend[N].pid.i(); \
|
||||
raw_Kd = thermalManager.temp_hotend[N].pid.d(); \
|
||||
EDIT_ITEM_FAST_N(float41sign, N, MSG_PID_P_E, &raw_Kp, 1, 9990, []{ apply_PID_p(N); }); \
|
||||
EDIT_ITEM_FAST_N(float52sign, N, MSG_PID_I_E, &raw_Ki, 0.01f, 9990, []{ apply_PID_i(N); }); \
|
||||
EDIT_ITEM_FAST_N(float41sign, N, MSG_PID_D_E, &raw_Kd, 1, 9990, []{ apply_PID_d(N); })
|
||||
|
||||
#if ENABLED(PID_EXTRUSION_SCALING)
|
||||
#define _PID_HOTEND_MENU_ITEMS(N) \
|
||||
__PID_HOTEND_MENU_ITEMS(N); \
|
||||
EDIT_ITEM_N(float4, N, MSG_PID_C_E, &PID_PARAM(Kc, N), 1, 9990)
|
||||
raw_Kc = thermalManager.temp_hotend[N].pid.c(); \
|
||||
EDIT_ITEM_N(float4, N, MSG_PID_C_E, &raw_Kc, 1, 9990, []{ SET_HOTEND_PID(Kc, N, raw_Kc); thermalManager.updatePID(); });
|
||||
#else
|
||||
#define _PID_HOTEND_MENU_ITEMS(N) __PID_HOTEND_MENU_ITEMS(N)
|
||||
#endif
|
||||
@@ -308,7 +331,8 @@ void menu_backlash();
|
||||
#if ENABLED(PID_FAN_SCALING)
|
||||
#define _HOTEND_PID_EDIT_MENU_ITEMS(N) \
|
||||
_PID_HOTEND_MENU_ITEMS(N); \
|
||||
EDIT_ITEM_N(float4, N, MSG_PID_F_E, &PID_PARAM(Kf, N), 1, 9990)
|
||||
raw_Kf = thermalManager.temp_hotend[N].pid.f(); \
|
||||
EDIT_ITEM_N(float4, N, MSG_PID_F_E, &raw_Kf, 1, 9990, []{ SET_HOTEND_PID(Kf, N, raw_Kf); thermalManager.updatePID(); });
|
||||
#else
|
||||
#define _HOTEND_PID_EDIT_MENU_ITEMS(N) _PID_HOTEND_MENU_ITEMS(N)
|
||||
#endif
|
||||
@@ -321,11 +345,12 @@ void menu_backlash();
|
||||
|
||||
#if ENABLED(PID_EDIT_MENU) && EITHER(PIDTEMPBED, PIDTEMPCHAMBER)
|
||||
#define _PID_EDIT_ITEMS_TMPL(N,T) \
|
||||
raw_Ki = unscalePID_i(T.pid.Ki); \
|
||||
raw_Kd = unscalePID_d(T.pid.Kd); \
|
||||
EDIT_ITEM_FAST_N(float41sign, N, MSG_PID_P_E, &T.pid.Kp, 1, 9990); \
|
||||
EDIT_ITEM_FAST_N(float52sign, N, MSG_PID_I_E, &raw_Ki, 0.01f, 9990, []{ copy_and_scalePID_i(N); }); \
|
||||
EDIT_ITEM_FAST_N(float41sign, N, MSG_PID_D_E, &raw_Kd, 1, 9990, []{ copy_and_scalePID_d(N); })
|
||||
raw_Kp = T.pid.p(); \
|
||||
raw_Ki = T.pid.i(); \
|
||||
raw_Kd = T.pid.d(); \
|
||||
EDIT_ITEM_FAST_N(float41sign, N, MSG_PID_P_E, &raw_Kp, 1, 9990, []{ apply_PID_p(N); }); \
|
||||
EDIT_ITEM_FAST_N(float52sign, N, MSG_PID_I_E, &raw_Ki, 0.01f, 9990, []{ apply_PID_i(N); }); \
|
||||
EDIT_ITEM_FAST_N(float41sign, N, MSG_PID_D_E, &raw_Kd, 1, 9990, []{ apply_PID_d(N); })
|
||||
#endif
|
||||
|
||||
#if ENABLED(PIDTEMP)
|
||||
@@ -451,7 +476,9 @@ void menu_backlash();
|
||||
|
||||
// M201 / M204 Accelerations
|
||||
void menu_advanced_acceleration() {
|
||||
const float max_accel = _MAX(planner.settings.max_acceleration_mm_per_s2[A_AXIS], planner.settings.max_acceleration_mm_per_s2[B_AXIS], planner.settings.max_acceleration_mm_per_s2[C_AXIS]);
|
||||
float max_accel = planner.settings.max_acceleration_mm_per_s2[A_AXIS];
|
||||
TERN_(HAS_Y_AXIS, NOLESS(max_accel, planner.settings.max_acceleration_mm_per_s2[B_AXIS]));
|
||||
TERN_(HAS_Z_AXIS, NOLESS(max_accel, planner.settings.max_acceleration_mm_per_s2[C_AXIS]));
|
||||
|
||||
// M201 settings
|
||||
constexpr xyze_ulong_t max_accel_edit =
|
||||
@@ -510,6 +537,43 @@ void menu_backlash();
|
||||
END_MENU();
|
||||
}
|
||||
|
||||
#if ENABLED(SHAPING_MENU)
|
||||
|
||||
void menu_advanced_input_shaping() {
|
||||
constexpr float min_frequency = TERN(__AVR__, float(STEPPER_TIMER_RATE) / 2 / 0x10000, 1.0f);
|
||||
|
||||
START_MENU();
|
||||
BACK_ITEM(MSG_ADVANCED_SETTINGS);
|
||||
|
||||
// M593 F Frequency and D Damping ratio
|
||||
#if ENABLED(INPUT_SHAPING_X)
|
||||
editable.decimal = stepper.get_shaping_frequency(X_AXIS);
|
||||
if (editable.decimal) {
|
||||
ACTION_ITEM_N(X_AXIS, MSG_SHAPING_DISABLE, []{ stepper.set_shaping_frequency(X_AXIS, 0.0f); });
|
||||
EDIT_ITEM_FAST_N(float61, X_AXIS, MSG_SHAPING_FREQ, &editable.decimal, min_frequency, 200.0f, []{ stepper.set_shaping_frequency(X_AXIS, editable.decimal); });
|
||||
editable.decimal = stepper.get_shaping_damping_ratio(X_AXIS);
|
||||
EDIT_ITEM_FAST_N(float42_52, X_AXIS, MSG_SHAPING_ZETA, &editable.decimal, 0.0f, 1.0f, []{ stepper.set_shaping_damping_ratio(X_AXIS, editable.decimal); });
|
||||
}
|
||||
else
|
||||
ACTION_ITEM_N(X_AXIS, MSG_SHAPING_ENABLE, []{ stepper.set_shaping_frequency(X_AXIS, SHAPING_FREQ_X); });
|
||||
#endif
|
||||
#if ENABLED(INPUT_SHAPING_Y)
|
||||
editable.decimal = stepper.get_shaping_frequency(Y_AXIS);
|
||||
if (editable.decimal) {
|
||||
ACTION_ITEM_N(Y_AXIS, MSG_SHAPING_DISABLE, []{ stepper.set_shaping_frequency(Y_AXIS, 0.0f); });
|
||||
EDIT_ITEM_FAST_N(float61, Y_AXIS, MSG_SHAPING_FREQ, &editable.decimal, min_frequency, 200.0f, []{ stepper.set_shaping_frequency(Y_AXIS, editable.decimal); });
|
||||
editable.decimal = stepper.get_shaping_damping_ratio(Y_AXIS);
|
||||
EDIT_ITEM_FAST_N(float42_52, Y_AXIS, MSG_SHAPING_ZETA, &editable.decimal, 0.0f, 1.0f, []{ stepper.set_shaping_damping_ratio(Y_AXIS, editable.decimal); });
|
||||
}
|
||||
else
|
||||
ACTION_ITEM_N(Y_AXIS, MSG_SHAPING_ENABLE, []{ stepper.set_shaping_frequency(Y_AXIS, SHAPING_FREQ_Y); });
|
||||
#endif
|
||||
|
||||
END_MENU();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#if HAS_CLASSIC_JERK
|
||||
|
||||
void menu_advanced_jerk() {
|
||||
@@ -606,10 +670,20 @@ void menu_advanced_settings() {
|
||||
|
||||
#if DISABLED(SLIM_LCD_MENUS)
|
||||
|
||||
#if ENABLED(POLARGRAPH)
|
||||
// M665 - Polargraph Settings
|
||||
if (!is_busy) {
|
||||
EDIT_ITEM_FAST(float4, MSG_SEGMENTS_PER_SECOND, &segments_per_second, 100, 9999); // M665 S
|
||||
EDIT_ITEM_FAST(float51sign, MSG_DRAW_MIN_X, &draw_area_min.x, X_MIN_POS, draw_area_max.x - 10); // M665 L
|
||||
EDIT_ITEM_FAST(float51sign, MSG_DRAW_MAX_X, &draw_area_max.x, draw_area_min.x + 10, X_MAX_POS); // M665 R
|
||||
EDIT_ITEM_FAST(float51sign, MSG_DRAW_MIN_Y, &draw_area_min.y, Y_MIN_POS, draw_area_max.y - 10); // M665 T
|
||||
EDIT_ITEM_FAST(float51sign, MSG_DRAW_MAX_Y, &draw_area_max.y, draw_area_min.y + 10, Y_MAX_POS); // M665 B
|
||||
EDIT_ITEM_FAST(float51sign, MSG_MAX_BELT_LEN, &polargraph_max_belt_len, 500, 2000); // M665 H
|
||||
}
|
||||
#endif
|
||||
|
||||
#if HAS_M206_COMMAND
|
||||
//
|
||||
// Set Home Offsets
|
||||
//
|
||||
// M428 - Set Home Offsets
|
||||
ACTION_ITEM(MSG_SET_HOME_OFFSETS, []{ queue.inject(F("M428")); ui.return_to_status(); });
|
||||
#endif
|
||||
|
||||
@@ -619,6 +693,11 @@ void menu_advanced_settings() {
|
||||
// M201 - Acceleration items
|
||||
SUBMENU(MSG_ACCELERATION, menu_advanced_acceleration);
|
||||
|
||||
// M593 - Acceleration items
|
||||
#if ENABLED(SHAPING_MENU)
|
||||
SUBMENU(MSG_INPUT_SHAPING, menu_advanced_input_shaping);
|
||||
#endif
|
||||
|
||||
#if HAS_CLASSIC_JERK
|
||||
// M205 - Max Jerk
|
||||
SUBMENU(MSG_JERK, menu_advanced_jerk);
|
||||
@@ -661,11 +740,11 @@ void menu_advanced_settings() {
|
||||
#if DISABLED(NO_VOLUMETRICS) || ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
SUBMENU(MSG_FILAMENT, menu_advanced_filament);
|
||||
#elif ENABLED(LIN_ADVANCE)
|
||||
#if EXTRUDERS == 1
|
||||
#if DISTINCT_E < 2
|
||||
EDIT_ITEM(float42_52, MSG_ADVANCE_K, &planner.extruder_advance_K[0], 0, 10);
|
||||
#elif HAS_MULTI_EXTRUDER
|
||||
LOOP_L_N(n, E_STEPPERS)
|
||||
EDIT_ITEM_N(float42_52, n, MSG_ADVANCE_K_E, &planner.extruder_advance_K[n], 0, 10);
|
||||
#else
|
||||
EXTRUDER_LOOP()
|
||||
EDIT_ITEM_N(float42_52, n, MSG_ADVANCE_K_E, &planner.extruder_advance_K[e], 0, 10);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@@ -178,7 +178,7 @@ static void _lcd_level_bed_corners_get_next_position() {
|
||||
lcd_put_u8str(GET_TEXT_F(MSG_BED_TRAMMING_GOOD_POINTS));
|
||||
IF_ENABLED(TFT_COLOR_UI, lcd_moveto(12, cy));
|
||||
lcd_put_u8str(GOOD_POINTS_TO_STR(good_points));
|
||||
lcd_put_lchar('/');
|
||||
lcd_put_u8str(F("/"));
|
||||
lcd_put_u8str(GOOD_POINTS_TO_STR(nr_edge_points));
|
||||
}
|
||||
|
||||
|
@@ -79,7 +79,7 @@ void menu_advanced_settings();
|
||||
LIMIT(bar_percent, 0, 100);
|
||||
ui.encoderPosition = 0;
|
||||
MenuItem_static::draw(0, GET_TEXT_F(MSG_PROGRESS_BAR_TEST), SS_DEFAULT|SS_INVERT);
|
||||
lcd_put_int((LCD_WIDTH) / 2 - 2, LCD_HEIGHT - 2, bar_percent); lcd_put_lchar('%');
|
||||
lcd_put_int((LCD_WIDTH) / 2 - 2, LCD_HEIGHT - 2, bar_percent); lcd_put_u8str(F("%"));
|
||||
lcd_moveto(0, LCD_HEIGHT - 1); ui.draw_progress_bar(bar_percent);
|
||||
}
|
||||
|
||||
@@ -124,6 +124,7 @@ void menu_advanced_settings();
|
||||
EDIT_ITEM_FAST(int4, MSG_SINGLENOZZLE_UNRETRACT_SPEED, &toolchange_settings.unretract_speed, 10, 5400);
|
||||
EDIT_ITEM(float3, MSG_FILAMENT_PURGE_LENGTH, &toolchange_settings.extra_prime, 0, max_extrude);
|
||||
EDIT_ITEM_FAST(int4, MSG_SINGLENOZZLE_PRIME_SPEED, &toolchange_settings.prime_speed, 10, 5400);
|
||||
EDIT_ITEM_FAST(int4, MSG_SINGLENOZZLE_WIPE_RETRACT, &toolchange_settings.wipe_retract, 0, 100);
|
||||
EDIT_ITEM_FAST(uint8, MSG_SINGLENOZZLE_FAN_SPEED, &toolchange_settings.fan_speed, 0, 255);
|
||||
EDIT_ITEM_FAST(uint8, MSG_SINGLENOZZLE_FAN_TIME, &toolchange_settings.fan_time, 1, 30);
|
||||
#endif
|
||||
@@ -547,10 +548,10 @@ void menu_configuration() {
|
||||
//
|
||||
// Set display backlight / sleep timeout
|
||||
//
|
||||
#if LCD_BACKLIGHT_TIMEOUT && LCD_BKL_TIMEOUT_MIN < LCD_BKL_TIMEOUT_MAX
|
||||
EDIT_ITEM(uint16_4, MSG_LCD_TIMEOUT_SEC, &ui.lcd_backlight_timeout, LCD_BKL_TIMEOUT_MIN, LCD_BKL_TIMEOUT_MAX, ui.refresh_backlight_timeout);
|
||||
#if LCD_BACKLIGHT_TIMEOUT_MINS
|
||||
EDIT_ITEM(uint8, MSG_SCREEN_TIMEOUT, &ui.backlight_timeout_minutes, ui.backlight_timeout_min, ui.backlight_timeout_max, ui.refresh_backlight_timeout);
|
||||
#elif HAS_DISPLAY_SLEEP
|
||||
EDIT_ITEM(uint8, MSG_SCREEN_TIMEOUT, &ui.sleep_timeout_minutes, SLEEP_TIMEOUT_MIN, SLEEP_TIMEOUT_MAX, ui.refresh_screen_timeout);
|
||||
EDIT_ITEM(uint8, MSG_SCREEN_TIMEOUT, &ui.sleep_timeout_minutes, ui.sleep_timeout_min, ui.sleep_timeout_max, ui.refresh_screen_timeout);
|
||||
#endif
|
||||
|
||||
#if ENABLED(FWRETRACT)
|
||||
|
@@ -402,8 +402,13 @@ class MenuItem_bool : public MenuEditItemBase {
|
||||
|
||||
// Predefined menu item types //
|
||||
|
||||
#define BACK_ITEM_F(FLABEL) MENU_ITEM_F(back, FLABEL)
|
||||
#define BACK_ITEM(LABEL) MENU_ITEM(back, LABEL)
|
||||
#if DISABLED(DISABLE_ENCODER)
|
||||
#define BACK_ITEM_F(FLABEL) MENU_ITEM_F(back, FLABEL)
|
||||
#define BACK_ITEM(LABEL) MENU_ITEM(back, LABEL)
|
||||
#else
|
||||
#define BACK_ITEM_F(FLABEL) NOOP
|
||||
#define BACK_ITEM(LABEL) NOOP
|
||||
#endif
|
||||
|
||||
#define ACTION_ITEM_N_S_F(N, S, FLABEL, ACTION) MENU_ITEM_N_S_F(function, N, S, FLABEL, ACTION)
|
||||
#define ACTION_ITEM_N_S(N, S, LABEL, ACTION) ACTION_ITEM_N_S_F(N, S, GET_TEXT_F(LABEL), ACTION)
|
||||
|
@@ -222,6 +222,16 @@ void menu_configuration();
|
||||
|
||||
#endif // CUSTOM_MENU_MAIN
|
||||
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
// This menu item is last with an encoder. Otherwise, somewhere in the middle.
|
||||
#if E_STEPPERS == 1 && DISABLED(FILAMENT_LOAD_UNLOAD_GCODES)
|
||||
#define FILAMENT_CHANGE_ITEM() YESNO_ITEM(MSG_FILAMENTCHANGE, menu_change_filament, nullptr, \
|
||||
GET_TEXT_F(MSG_FILAMENTCHANGE), (const char *)nullptr, F("?"))
|
||||
#else
|
||||
#define FILAMENT_CHANGE_ITEM() SUBMENU(MSG_FILAMENTCHANGE, menu_change_filament)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
void menu_main() {
|
||||
const bool busy = printingIsActive()
|
||||
#if ENABLED(SDSUPPORT)
|
||||
@@ -317,6 +327,10 @@ void menu_main() {
|
||||
SUBMENU(MSG_MOTION, menu_motion);
|
||||
}
|
||||
|
||||
#if BOTH(ADVANCED_PAUSE_FEATURE, DISABLE_ENCODER)
|
||||
FILAMENT_CHANGE_ITEM();
|
||||
#endif
|
||||
|
||||
#if HAS_CUTTER
|
||||
SUBMENU(MSG_CUTTER(MENU), STICKY_SCREEN(menu_spindle_laser));
|
||||
#endif
|
||||
@@ -349,17 +363,6 @@ void menu_main() {
|
||||
}
|
||||
#endif
|
||||
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#if E_STEPPERS == 1 && DISABLED(FILAMENT_LOAD_UNLOAD_GCODES)
|
||||
YESNO_ITEM(MSG_FILAMENTCHANGE,
|
||||
menu_change_filament, nullptr,
|
||||
GET_TEXT_F(MSG_FILAMENTCHANGE), (const char *)nullptr, F("?")
|
||||
);
|
||||
#else
|
||||
SUBMENU(MSG_FILAMENTCHANGE, menu_change_filament);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ENABLED(LCD_INFO_MENU)
|
||||
SUBMENU(MSG_INFO_MENU, menu_info);
|
||||
#endif
|
||||
@@ -458,6 +461,10 @@ void menu_main() {
|
||||
});
|
||||
#endif
|
||||
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE) && DISABLED(DISABLE_ENCODER)
|
||||
FILAMENT_CHANGE_ITEM();
|
||||
#endif
|
||||
|
||||
END_MENU();
|
||||
}
|
||||
|
||||
|
@@ -28,7 +28,13 @@
|
||||
|
||||
#if HAS_MARLINUI_MENU
|
||||
|
||||
#define LARGE_AREA_TEST ((X_BED_SIZE) >= 1000 || (Y_BED_SIZE) >= 1000 || (Z_MAX_POS) >= 1000)
|
||||
#if ENABLED(TRULY_LARGE_AREA)
|
||||
#define LARGE_AREA_TEST true
|
||||
#elif ENABLED(SLIM_LCD_MENUS)
|
||||
#define LARGE_AREA_TEST false
|
||||
#else
|
||||
#define LARGE_AREA_TEST ((X_BED_SIZE) >= 1000 || TERN0(HAS_Y_AXIS, (Y_BED_SIZE) >= 1000) || TERN0(HAS_Z_AXIS, (Z_MAX_POS) >= 1000))
|
||||
#endif
|
||||
|
||||
#include "menu_item.h"
|
||||
#include "menu_addon.h"
|
||||
@@ -150,18 +156,26 @@ void _menu_move_distance(const AxisEnum axis, const screenFunc_t func, const int
|
||||
|
||||
BACK_ITEM(MSG_MOVE_AXIS);
|
||||
if (parser.using_inch_units()) {
|
||||
if (LARGE_AREA_TEST) SUBMENU(MSG_MOVE_1IN, []{ _goto_manual_move(IN_TO_MM(1.000f)); });
|
||||
if (LARGE_AREA_TEST) {
|
||||
SUBMENU(MSG_MOVE_1IN, []{ _goto_manual_move(IN_TO_MM(1.000f)); });
|
||||
SUBMENU(MSG_MOVE_05IN, []{ _goto_manual_move(IN_TO_MM(0.500f)); });
|
||||
}
|
||||
SUBMENU(MSG_MOVE_01IN, []{ _goto_manual_move(IN_TO_MM(0.100f)); });
|
||||
SUBMENU(MSG_MOVE_001IN, []{ _goto_manual_move(IN_TO_MM(0.010f)); });
|
||||
SUBMENU(MSG_MOVE_0001IN, []{ _goto_manual_move(IN_TO_MM(0.001f)); });
|
||||
}
|
||||
else {
|
||||
if (LARGE_AREA_TEST) SUBMENU(MSG_MOVE_100MM, []{ _goto_manual_move(100); });
|
||||
if (LARGE_AREA_TEST) {
|
||||
SUBMENU(MSG_MOVE_100MM, []{ _goto_manual_move(100); });
|
||||
SUBMENU(MSG_MOVE_50MM, []{ _goto_manual_move(50); });
|
||||
}
|
||||
SUBMENU(MSG_MOVE_10MM, []{ _goto_manual_move(10); });
|
||||
SUBMENU(MSG_MOVE_1MM, []{ _goto_manual_move( 1); });
|
||||
SUBMENU(MSG_MOVE_01MM, []{ _goto_manual_move( 0.1f); });
|
||||
if (axis == Z_AXIS && (FINE_MANUAL_MOVE) > 0.0f && (FINE_MANUAL_MOVE) < 0.1f)
|
||||
SUBMENU_f(F(STRINGIFY(FINE_MANUAL_MOVE)), MSG_MOVE_N_MM, []{ _goto_manual_move(float(FINE_MANUAL_MOVE)); });
|
||||
#if HAS_Z_AXIS
|
||||
if (axis == Z_AXIS && (FINE_MANUAL_MOVE) > 0.0f && (FINE_MANUAL_MOVE) < 0.1f)
|
||||
SUBMENU_f(F(STRINGIFY(FINE_MANUAL_MOVE)), MSG_MOVE_N_MM, []{ _goto_manual_move(float(FINE_MANUAL_MOVE)); });
|
||||
#endif
|
||||
}
|
||||
END_MENU();
|
||||
}
|
||||
@@ -354,6 +368,13 @@ void menu_motion() {
|
||||
GCODES_ITEM(MSG_MANUAL_STOW, F("M402"));
|
||||
#endif
|
||||
|
||||
//
|
||||
// Probe Offset Wizard
|
||||
//
|
||||
#if ENABLED(PROBE_OFFSET_WIZARD)
|
||||
SUBMENU(MSG_PROBE_WIZARD, goto_probe_offset_wizard);
|
||||
#endif
|
||||
|
||||
//
|
||||
// Assisted Bed Tramming
|
||||
//
|
||||
|
@@ -61,10 +61,10 @@ void Password::menu_password_entry() {
|
||||
FSTR_P const label = GET_TEXT_F(MSG_ENTER_DIGIT);
|
||||
EDIT_ITEM_F(uint8, label, &editable.uint8, 0, 9, digit_entered);
|
||||
MENU_ITEM_ADDON_START(utf8_strlen(label) + 1);
|
||||
lcd_put_lchar(' ');
|
||||
lcd_put_u8str(F(" "));
|
||||
lcd_put_lchar('1' + digit_no);
|
||||
SETCURSOR_X(LCD_WIDTH - 2);
|
||||
lcd_put_lchar('>');
|
||||
lcd_put_u8str(F(">"));
|
||||
MENU_ITEM_ADDON_END();
|
||||
|
||||
ACTION_ITEM(MSG_START_OVER, start_over);
|
||||
|
@@ -79,7 +79,7 @@
|
||||
EDIT_ITEM_FAST(CUTTER_MENU_PULSE_TYPE, MSG_LASER_PULSE_MS, &cutter.testPulse, LASER_TEST_PULSE_MIN, LASER_TEST_PULSE_MAX);
|
||||
ACTION_ITEM(MSG_LASER_FIRE_PULSE, cutter.test_fire_pulse);
|
||||
#if ENABLED(HAL_CAN_SET_PWM_FREQ) && SPINDLE_LASER_FREQUENCY
|
||||
EDIT_ITEM_FAST(CUTTER_MENU_FREQUENCY_TYPE, MSG_CUTTER_FREQUENCY, &cutter.frequency, 2000, 80000, cutter.refresh_frequency);
|
||||
EDIT_ITEM_FAST(CUTTER_MENU_FREQUENCY_TYPE, MSG_CUTTER_FREQUENCY, &cutter.frequency, 2000, 65535, cutter.refresh_frequency);
|
||||
#endif
|
||||
#endif
|
||||
END_MENU();
|
||||
|
@@ -76,12 +76,12 @@
|
||||
#if ENABLED(TFT_COLOR_UI)
|
||||
lcd_moveto(4, 3);
|
||||
lcd_put_u8str(GET_TEXT_F(MSG_BABYSTEP_TOTAL));
|
||||
lcd_put_lchar(':');
|
||||
lcd_put_u8str(F(":"));
|
||||
lcd_moveto(10, 3);
|
||||
#else
|
||||
lcd_moveto(0, TERN(HAS_MARLINUI_U8GLIB, LCD_PIXEL_HEIGHT - MENU_FONT_DESCENT, LCD_HEIGHT - 1));
|
||||
lcd_put_u8str(GET_TEXT_F(MSG_BABYSTEP_TOTAL));
|
||||
lcd_put_lchar(':');
|
||||
lcd_put_u8str(F(":"));
|
||||
#endif
|
||||
lcd_put_u8str(BABYSTEP_TO_STR(mps * babystep.axis_total[BS_TOTAL_IND(axis)]));
|
||||
}
|
||||
@@ -210,9 +210,9 @@ void menu_tune() {
|
||||
// Advance K:
|
||||
//
|
||||
#if ENABLED(LIN_ADVANCE) && DISABLED(SLIM_LCD_MENUS)
|
||||
#if EXTRUDERS == 1
|
||||
#if DISTINCT_E < 2
|
||||
EDIT_ITEM(float42_52, MSG_ADVANCE_K, &planner.extruder_advance_K[0], 0, 10);
|
||||
#elif HAS_MULTI_EXTRUDER
|
||||
#else
|
||||
EXTRUDER_LOOP()
|
||||
EDIT_ITEM_N(float42_52, e, MSG_ADVANCE_K_E, &planner.extruder_advance_K[e], 0, 10);
|
||||
#endif
|
||||
|
@@ -35,6 +35,9 @@
|
||||
#include "../../module/planner.h"
|
||||
#include "../../module/settings.h"
|
||||
#include "../../feature/bedlevel/bedlevel.h"
|
||||
#if HAS_HOTEND
|
||||
#include "../../module/temperature.h"
|
||||
#endif
|
||||
|
||||
static int16_t ubl_storage_slot = 0,
|
||||
custom_hotend_temp = 150,
|
||||
@@ -312,11 +315,7 @@ void _lcd_ubl_build_mesh() {
|
||||
START_MENU();
|
||||
BACK_ITEM(MSG_UBL_TOOLS);
|
||||
#if HAS_PREHEAT
|
||||
#if HAS_HEATED_BED
|
||||
#define PREHEAT_BED_GCODE(M) "M190I" STRINGIFY(M) "\n"
|
||||
#else
|
||||
#define PREHEAT_BED_GCODE(M) ""
|
||||
#endif
|
||||
#define PREHEAT_BED_GCODE(M) TERN(HAS_HEATED_BED, "M190I" STRINGIFY(M) "\n", "")
|
||||
#define BUILD_MESH_GCODE_ITEM(M) GCODES_ITEM_f(ui.get_preheat_label(M), MSG_UBL_BUILD_MESH_M, \
|
||||
F( \
|
||||
"G28\n" \
|
||||
@@ -325,20 +324,8 @@ void _lcd_ubl_build_mesh() {
|
||||
"G29P1\n" \
|
||||
"M104S0\n" \
|
||||
"M140S0" \
|
||||
) )
|
||||
BUILD_MESH_GCODE_ITEM(0);
|
||||
#if PREHEAT_COUNT > 1
|
||||
BUILD_MESH_GCODE_ITEM(1);
|
||||
#if PREHEAT_COUNT > 2
|
||||
BUILD_MESH_GCODE_ITEM(2);
|
||||
#if PREHEAT_COUNT > 3
|
||||
BUILD_MESH_GCODE_ITEM(3);
|
||||
#if PREHEAT_COUNT > 4
|
||||
BUILD_MESH_GCODE_ITEM(4);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
) );
|
||||
REPEAT(PREHEAT_COUNT, BUILD_MESH_GCODE_ITEM)
|
||||
#endif // HAS_PREHEAT
|
||||
|
||||
SUBMENU(MSG_UBL_BUILD_CUSTOM_MESH, _lcd_ubl_custom_mesh);
|
||||
|
Reference in New Issue
Block a user