Streamline menu item logic (#17664)

This commit is contained in:
Scott Lahteine
2020-04-27 23:52:11 -05:00
committed by GitHub
parent f709c565a1
commit 4f003fc7a7
17 changed files with 303 additions and 251 deletions

View File

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