Streamline menu item logic (#17664)
This commit is contained in:
@ -45,7 +45,6 @@
|
||||
|
||||
#if ENABLED(FILAMENT_RUNOUT_SENSOR) && FILAMENT_RUNOUT_DISTANCE_MM
|
||||
#include "../../feature/runout.h"
|
||||
float lcd_runout_distance_mm;
|
||||
#endif
|
||||
|
||||
#if ENABLED(EEPROM_SETTINGS) && DISABLED(SLIM_LCD_MENUS)
|
||||
@ -148,9 +147,12 @@ void menu_cancelobject();
|
||||
#endif
|
||||
|
||||
#if ENABLED(FILAMENT_RUNOUT_SENSOR) && FILAMENT_RUNOUT_DISTANCE_MM
|
||||
EDIT_ITEM(float3, MSG_RUNOUT_DISTANCE_MM, &lcd_runout_distance_mm, 1, 30, []{
|
||||
runout.set_runout_distance(lcd_runout_distance_mm);
|
||||
});
|
||||
MENU_ITEM_IF(1) {
|
||||
editable.decimal = runout.runout_distance();
|
||||
EDIT_ITEM(float3, MSG_RUNOUT_DISTANCE_MM, &editable.decimal, 1, 30,
|
||||
[]{ runout.set_runout_distance(editable.decimal); }, true
|
||||
);
|
||||
}
|
||||
#endif
|
||||
|
||||
END_MENU();
|
||||
@ -327,9 +329,6 @@ void menu_cancelobject();
|
||||
|
||||
// M203 / M205 Velocity options
|
||||
void menu_advanced_velocity() {
|
||||
START_MENU();
|
||||
BACK_ITEM(MSG_ADVANCED_SETTINGS);
|
||||
|
||||
// M203 Max Feedrate
|
||||
constexpr xyze_feedrate_t max_fr_edit =
|
||||
#ifdef MAX_FEEDRATE_EDIT_VALUES
|
||||
@ -345,6 +344,10 @@ void menu_cancelobject();
|
||||
#else
|
||||
const xyze_feedrate_t &max_fr_edit_scaled = max_fr_edit;
|
||||
#endif
|
||||
|
||||
START_MENU();
|
||||
BACK_ITEM(MSG_ADVANCED_SETTINGS);
|
||||
|
||||
#define EDIT_VMAX(N) EDIT_ITEM_FAST(float3, MSG_VMAX_##N, &planner.settings.max_feedrate_mm_s[_AXIS(N)], 1, max_fr_edit_scaled[_AXIS(N)])
|
||||
EDIT_VMAX(A);
|
||||
EDIT_VMAX(B);
|
||||
@ -369,18 +372,7 @@ void menu_cancelobject();
|
||||
|
||||
// M201 / M204 Accelerations
|
||||
void menu_advanced_acceleration() {
|
||||
START_MENU();
|
||||
BACK_ITEM(MSG_ADVANCED_SETTINGS);
|
||||
|
||||
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]);
|
||||
// M204 P Acceleration
|
||||
EDIT_ITEM_FAST(float5_25, MSG_ACC, &planner.settings.acceleration, 25, max_accel);
|
||||
|
||||
// M204 R Retract Acceleration
|
||||
EDIT_ITEM_FAST(float5, MSG_A_RETRACT, &planner.settings.retract_acceleration, 100, planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(active_extruder)]);
|
||||
|
||||
// M204 T Travel Acceleration
|
||||
EDIT_ITEM_FAST(float5_25, MSG_A_TRAVEL, &planner.settings.travel_acceleration, 25, max_accel);
|
||||
|
||||
// M201 settings
|
||||
constexpr xyze_ulong_t max_accel_edit =
|
||||
@ -398,6 +390,18 @@ void menu_cancelobject();
|
||||
const xyze_ulong_t &max_accel_edit_scaled = max_accel_edit;
|
||||
#endif
|
||||
|
||||
START_MENU();
|
||||
BACK_ITEM(MSG_ADVANCED_SETTINGS);
|
||||
|
||||
// M204 P Acceleration
|
||||
EDIT_ITEM_FAST(float5_25, MSG_ACC, &planner.settings.acceleration, 25, max_accel);
|
||||
|
||||
// M204 R Retract Acceleration
|
||||
EDIT_ITEM_FAST(float5, MSG_A_RETRACT, &planner.settings.retract_acceleration, 100, planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(active_extruder)]);
|
||||
|
||||
// M204 T Travel Acceleration
|
||||
EDIT_ITEM_FAST(float5_25, MSG_A_TRAVEL, &planner.settings.travel_acceleration, 25, max_accel);
|
||||
|
||||
#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(); })
|
||||
EDIT_AMAX(A, 100);
|
||||
EDIT_AMAX(B, 100);
|
||||
@ -413,8 +417,10 @@ void menu_cancelobject();
|
||||
|
||||
#ifdef XY_FREQUENCY_LIMIT
|
||||
EDIT_ITEM(int8, MSG_XY_FREQUENCY_LIMIT, &planner.xy_freq_limit_hz, 0, 100, planner.refresh_frequency_limit, true);
|
||||
editable.uint8 = uint8_t(LROUND(planner.xy_freq_min_speed_factor * 255 * 100)); // percent to u8
|
||||
EDIT_ITEM(percent, MSG_XY_FREQUENCY_FEEDRATE, &editable.uint8, 3, 255, []{ planner.set_min_speed_factor_u8(editable.uint8); }, true);
|
||||
MENU_ITEM_IF(1) {
|
||||
editable.uint8 = uint8_t(LROUND(planner.xy_freq_min_speed_factor * 255 * 100)); // percent to u8
|
||||
EDIT_ITEM(percent, MSG_XY_FREQUENCY_FEEDRATE, &editable.uint8, 3, 255, []{ planner.set_min_speed_factor_u8(editable.uint8); }, true);
|
||||
}
|
||||
#endif
|
||||
|
||||
END_MENU();
|
||||
@ -496,9 +502,8 @@ void menu_advanced_steps_per_mm() {
|
||||
}
|
||||
|
||||
void menu_advanced_settings() {
|
||||
#if ENABLED(FILAMENT_RUNOUT_SENSOR) && FILAMENT_RUNOUT_DISTANCE_MM
|
||||
lcd_runout_distance_mm = runout.runout_distance();
|
||||
#endif
|
||||
const bool is_busy = printer_busy();
|
||||
|
||||
START_MENU();
|
||||
BACK_ITEM(MSG_CONFIGURATION);
|
||||
|
||||
@ -522,13 +527,13 @@ void menu_advanced_settings() {
|
||||
|
||||
// M851 - Z Probe Offsets
|
||||
#if HAS_BED_PROBE
|
||||
if (!printer_busy())
|
||||
SUBMENU(MSG_ZPROBE_OFFSETS, menu_probe_offsets);
|
||||
if (!is_busy) SUBMENU(MSG_ZPROBE_OFFSETS, menu_probe_offsets);
|
||||
#endif
|
||||
|
||||
#endif // !SLIM_LCD_MENUS
|
||||
|
||||
// M92 - Steps Per mm
|
||||
if (!printer_busy())
|
||||
if (!is_busy)
|
||||
SUBMENU(MSG_STEPS_PER_MM, menu_advanced_steps_per_mm);
|
||||
|
||||
#if ENABLED(BACKLASH_GCODE)
|
||||
@ -571,17 +576,19 @@ void menu_advanced_settings() {
|
||||
#endif
|
||||
|
||||
#if ENABLED(SD_FIRMWARE_UPDATE)
|
||||
bool sd_update_state = settings.sd_update_status();
|
||||
EDIT_ITEM(bool, MSG_MEDIA_UPDATE, &sd_update_state, []{
|
||||
//
|
||||
// Toggle the SD Firmware Update state in EEPROM
|
||||
//
|
||||
const bool new_state = !settings.sd_update_status(),
|
||||
didset = settings.set_sd_update_status(new_state);
|
||||
TERN_(HAS_BUZZER, ui.completion_feedback(didset));
|
||||
ui.return_to_status();
|
||||
if (new_state) LCD_MESSAGEPGM(MSG_RESET_PRINTER); else ui.reset_status();
|
||||
});
|
||||
MENU_ITEM_IF (1) {
|
||||
bool sd_update_state = settings.sd_update_status();
|
||||
EDIT_ITEM(bool, MSG_MEDIA_UPDATE, &sd_update_state, []{
|
||||
//
|
||||
// Toggle the SD Firmware Update state in EEPROM
|
||||
//
|
||||
const bool new_state = !settings.sd_update_status(),
|
||||
didset = settings.set_sd_update_status(new_state);
|
||||
ui.completion_feedback(didset);
|
||||
ui.return_to_status();
|
||||
if (new_state) LCD_MESSAGEPGM(MSG_RESET_PRINTER); else ui.reset_status();
|
||||
});
|
||||
}
|
||||
#endif
|
||||
|
||||
#if ENABLED(EEPROM_SETTINGS) && DISABLED(SLIM_LCD_MENUS)
|
||||
|
Reference in New Issue
Block a user