Merge upstream changes from Marlin 2.1.2.1
This commit is contained in:
@@ -117,13 +117,11 @@ void BrickoutGame::game_screen() {
|
||||
}
|
||||
else if (diff <= 3) {
|
||||
bdat.ballh += fixed_t(random(-64, 0));
|
||||
NOLESS(bdat.ballh, BTOF(-2));
|
||||
NOMORE(bdat.ballh, BTOF(2));
|
||||
LIMIT(bdat.ballh, BTOF(-2), BTOF(2));
|
||||
}
|
||||
else if (diff >= PADDLE_W-1 - 3) {
|
||||
bdat.ballh += fixed_t(random( 0, 64));
|
||||
NOLESS(bdat.ballh, BTOF(-2));
|
||||
NOMORE(bdat.ballh, BTOF(2));
|
||||
LIMIT(bdat.ballh, BTOF(-2), BTOF(2));
|
||||
}
|
||||
|
||||
// Paddle hit after clearing the board? Reset the board.
|
||||
|
@@ -117,8 +117,7 @@ void MenuEditItemBase::edit_screen(strfunc_t strfunc, loadfunc_t loadfunc) {
|
||||
// Reset repeat_delay for Touch Buttons
|
||||
TERN_(HAS_TOUCH_BUTTONS, ui.repeat_delay = BUTTON_DELAY_EDIT);
|
||||
// Constrain ui.encoderPosition to 0 ... maxEditValue (calculated in encoder steps)
|
||||
if (int32_t(ui.encoderPosition) < 0) ui.encoderPosition = 0;
|
||||
if (int32_t(ui.encoderPosition) > maxEditValue) ui.encoderPosition = maxEditValue;
|
||||
ui.encoderPosition = constrain(int32_t(ui.encoderPosition), 0, maxEditValue);
|
||||
// If drawing is flagged then redraw the (whole) edit screen
|
||||
if (ui.should_draw())
|
||||
draw_edit_screen(strfunc(ui.encoderPosition + minEditValue));
|
||||
@@ -272,13 +271,6 @@ void scroll_screen(const uint8_t limit, const bool is_menu) {
|
||||
encoderTopLine = encoderLine;
|
||||
}
|
||||
|
||||
#if HAS_SOUND
|
||||
void MarlinUI::completion_feedback(const bool good/*=true*/) {
|
||||
TERN_(HAS_TOUCH_SLEEP, wakeup_screen()); // Wake up on rotary encoder click...
|
||||
if (good) OKAY_BUZZ(); else ERR_BUZZ();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if HAS_LINE_TO_Z
|
||||
|
||||
void line_to_z(const_float_t z) {
|
||||
|
@@ -640,11 +640,11 @@ void menu_advanced_steps_per_mm() {
|
||||
BACK_ITEM(MSG_ADVANCED_SETTINGS);
|
||||
|
||||
LOOP_NUM_AXES(a)
|
||||
EDIT_ITEM_FAST_N(float61, a, MSG_N_STEPS, &planner.settings.axis_steps_per_mm[a], 5, 9999, []{ planner.refresh_positioning(); });
|
||||
EDIT_ITEM_FAST_N(float72, a, MSG_N_STEPS, &planner.settings.axis_steps_per_mm[a], 5, 9999, []{ planner.refresh_positioning(); });
|
||||
|
||||
#if ENABLED(DISTINCT_E_FACTORS)
|
||||
LOOP_L_N(n, E_STEPPERS)
|
||||
EDIT_ITEM_FAST_N(float61, n, MSG_EN_STEPS, &planner.settings.axis_steps_per_mm[E_AXIS_N(n)], 5, 9999, []{
|
||||
EDIT_ITEM_FAST_N(float72, n, MSG_EN_STEPS, &planner.settings.axis_steps_per_mm[E_AXIS_N(n)], 5, 9999, []{
|
||||
const uint8_t e = MenuItemBase::itemIndex;
|
||||
if (e == active_extruder)
|
||||
planner.refresh_positioning();
|
||||
@@ -652,7 +652,7 @@ void menu_advanced_steps_per_mm() {
|
||||
planner.mm_per_step[E_AXIS_N(e)] = 1.0f / planner.settings.axis_steps_per_mm[E_AXIS_N(e)];
|
||||
});
|
||||
#elif E_STEPPERS
|
||||
EDIT_ITEM_FAST_N(float61, E_AXIS, MSG_N_STEPS, &planner.settings.axis_steps_per_mm[E_AXIS], 5, 9999, []{ planner.refresh_positioning(); });
|
||||
EDIT_ITEM_FAST_N(float72, E_AXIS, MSG_N_STEPS, &planner.settings.axis_steps_per_mm[E_AXIS], 5, 9999, []{ planner.refresh_positioning(); });
|
||||
#endif
|
||||
|
||||
END_MENU();
|
||||
@@ -695,7 +695,7 @@ void menu_advanced_settings() {
|
||||
|
||||
// M593 - Acceleration items
|
||||
#if ENABLED(SHAPING_MENU)
|
||||
SUBMENU(MSG_INPUT_SHAPING, menu_advanced_input_shaping);
|
||||
if (!is_busy) SUBMENU(MSG_INPUT_SHAPING, menu_advanced_input_shaping);
|
||||
#endif
|
||||
|
||||
#if HAS_CLASSIC_JERK
|
||||
|
@@ -68,10 +68,12 @@
|
||||
//
|
||||
void _lcd_level_bed_done() {
|
||||
if (!ui.wait_for_move) {
|
||||
#if Z_AFTER_PROBING > 0 && DISABLED(MESH_BED_LEVELING)
|
||||
// Display "Done" screen and wait for moves to complete
|
||||
line_to_z(Z_AFTER_PROBING);
|
||||
ui.synchronize(GET_TEXT_F(MSG_LEVEL_BED_DONE));
|
||||
#if DISABLED(MESH_BED_LEVELING) && defined(Z_AFTER_PROBING)
|
||||
if (Z_AFTER_PROBING) {
|
||||
// Display "Done" screen and wait for moves to complete
|
||||
line_to_z(Z_AFTER_PROBING);
|
||||
ui.synchronize(GET_TEXT_F(MSG_LEVEL_BED_DONE));
|
||||
}
|
||||
#endif
|
||||
ui.goto_previous_screen_no_defer();
|
||||
ui.completion_feedback();
|
||||
|
@@ -68,8 +68,8 @@ void _man_probe_pt(const xy_pos_t &xy) {
|
||||
float lcd_probe_pt(const xy_pos_t &xy) {
|
||||
_man_probe_pt(xy);
|
||||
ui.defer_status_screen();
|
||||
TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, F("Delta Calibration in progress"), FPSTR(CONTINUE_STR)));
|
||||
TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(F("Delta Calibration in progress")));
|
||||
TERN_(HOST_PROMPT_SUPPORT, hostui.continue_prompt(GET_TEXT_F(MSG_DELTA_CALIBRATION_IN_PROGRESS)));
|
||||
TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_DELTA_CALIBRATION_IN_PROGRESS)));
|
||||
TERN_(HAS_RESUME_CONTINUE, wait_for_user_response());
|
||||
ui.goto_previous_screen_no_defer();
|
||||
return current_position.z;
|
||||
|
@@ -79,10 +79,10 @@ template<typename NAME>
|
||||
class TMenuEditItem : MenuEditItemBase {
|
||||
private:
|
||||
typedef typename NAME::type_t type_t;
|
||||
static float scale(const_float_t value) { return NAME::scale(value); }
|
||||
static float unscale(const_float_t value) { return NAME::unscale(value); }
|
||||
static const char* to_string(const int32_t value) { return NAME::strfunc(unscale(value)); }
|
||||
static void load(void *ptr, const int32_t value) { *((type_t*)ptr) = unscale(value); }
|
||||
static int32_t scaleToEncoder(const type_t &value) { return NAME::scaleToEncoder(value); }
|
||||
static type_t unscaleEncoder(const int32_t value) { return NAME::unscaleEncoder(value); }
|
||||
static const char* to_string(const int32_t value) { return NAME::strfunc(unscaleEncoder(value)); }
|
||||
static void load(void *ptr, const int32_t value) { *((type_t*)ptr) = unscaleEncoder(value); }
|
||||
public:
|
||||
FORCE_INLINE static void draw(const bool sel, const uint8_t row, FSTR_P const fstr, type_t * const data, ...) {
|
||||
MenuEditItemBase::draw(sel, row, fstr, NAME::strfunc(*(data)));
|
||||
@@ -101,9 +101,9 @@ class TMenuEditItem : MenuEditItemBase {
|
||||
const bool live=false // Callback during editing
|
||||
) {
|
||||
// Make sure minv and maxv fit within int32_t
|
||||
const int32_t minv = _MAX(scale(minValue), INT32_MIN),
|
||||
maxv = _MIN(scale(maxValue), INT32_MAX);
|
||||
goto_edit_screen(fstr, ptr, minv, maxv - minv, scale(*ptr) - minv,
|
||||
const int32_t minv = _MAX(scaleToEncoder(minValue), INT32_MIN),
|
||||
maxv = _MIN(scaleToEncoder(maxValue), INT32_MAX);
|
||||
goto_edit_screen(fstr, ptr, minv, maxv - minv, scaleToEncoder(*ptr) - minv,
|
||||
edit_screen, callback, live);
|
||||
}
|
||||
};
|
||||
@@ -119,9 +119,9 @@ class TMenuEditItem : MenuEditItemBase {
|
||||
*
|
||||
* struct MenuEditItemInfo_percent {
|
||||
* typedef uint8_t type_t;
|
||||
* static float scale(const_float_t value) { return value * (100.f/255.f) +0.5f; }
|
||||
* static float unscale(const_float_t value) { return value / (100.f/255.f) +0.5f; }
|
||||
* static const char* strfunc(const_float_t value) { return ui8tostr4pctrj(_DOFIX(uint8_t,value)); }
|
||||
* static int32_t scaleToEncoder(const type_t &value) { return value * (100.f/255.f) +0.5f; }
|
||||
* static type_t unscaleEncoder(const int32_t value) { return type_t(value) / (100.f/255.f) +0.5f; }
|
||||
* static const char* strfunc(const type_t &value) { return ui8tostr4pctrj(_DOFIX(uint8_t,value)); }
|
||||
* };
|
||||
* typedef TMenuEditItem<MenuEditItemInfo_percent> MenuItem_percent
|
||||
*/
|
||||
@@ -130,35 +130,37 @@ class TMenuEditItem : MenuEditItemBase {
|
||||
#define DEFINE_MENU_EDIT_ITEM_TYPE(NAME, TYPE, STRFUNC, SCALE, ETC...) \
|
||||
struct MenuEditItemInfo_##NAME { \
|
||||
typedef TYPE type_t; \
|
||||
static float scale(const_float_t value) { return value * (SCALE) ETC; } \
|
||||
static float unscale(const_float_t value) { return value / (SCALE) ETC; } \
|
||||
static const char* strfunc(const_float_t value) { return STRFUNC(_DOFIX(TYPE,value)); } \
|
||||
/* scale the given value to the encoder */ \
|
||||
static int32_t scaleToEncoder(const type_t &value) { return value * (SCALE) ETC; } \
|
||||
static type_t unscaleEncoder(const int32_t value) { return type_t(value) / (SCALE) ETC; } \
|
||||
static const char* strfunc(const type_t &value) { return STRFUNC(_DOFIX(TYPE,value)); } \
|
||||
}; \
|
||||
typedef TMenuEditItem<MenuEditItemInfo_##NAME> MenuItem_##NAME
|
||||
|
||||
// NAME TYPE STRFUNC SCALE ROUND
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(percent ,uint8_t ,ui8tostr4pctrj , 100.f/255.f, +0.5f); // 100% right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(percent_3 ,uint8_t ,pcttostrpctrj , 1 ); // 100% right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(int3 ,int16_t ,i16tostr3rj , 1 ); // 123, -12 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(int4 ,int16_t ,i16tostr4signrj , 1 ); // 1234, -123 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(int8 ,int8_t ,i8tostr3rj , 1 ); // 123, -12 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(uint8 ,uint8_t ,ui8tostr3rj , 1 ); // 123 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(uint16_3 ,uint16_t ,ui16tostr3rj , 1 ); // 123 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(uint16_4 ,uint16_t ,ui16tostr4rj , 0.1f ); // 1234 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(uint16_5 ,uint16_t ,ui16tostr5rj , 0.01f ); // 12345 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float3 ,float ,ftostr3 , 1 ); // 123 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float42_52 ,float ,ftostr42_52 , 100 ); // _2.34, 12.34, -2.34 or 123.45, -23.45
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float43 ,float ,ftostr43sign ,1000 ); // -1.234, _1.234, +1.234
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float4 ,float ,ftostr4sign , 1 ); // 1234 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float5 ,float ,ftostr5rj , 1 ); // 12345 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float5_25 ,float ,ftostr5rj , 0.04f ); // 12345 right-justified (25 increment)
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float61 ,float ,ftostr61rj , 10 ); // 12345.6 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float31sign ,float ,ftostr31sign , 10 ); // +12.3
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float41sign ,float ,ftostr41sign , 10 ); // +123.4
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float51sign ,float ,ftostr51sign , 10 ); // +1234.5
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float52sign ,float ,ftostr52sign , 100 ); // +123.45
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(long5 ,uint32_t ,ftostr5rj , 0.01f ); // 12345 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(long5_25 ,uint32_t ,ftostr5rj , 0.04f ); // 12345 right-justified (25 increment)
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(percent ,uint8_t ,ui8tostr4pctrj , 100.f/255.f, + 0.5f ); // 100% right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(percent_3 ,uint8_t ,pcttostrpctrj , 1 ); // 100% right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(int3 ,int16_t ,i16tostr3rj , 1 ); // 123, -12 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(int4 ,int16_t ,i16tostr4signrj , 1 ); // 1234, -123 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(int8 ,int8_t ,i8tostr3rj , 1 ); // 123, -12 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(uint8 ,uint8_t ,ui8tostr3rj , 1 ); // 123 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(uint16_3 ,uint16_t ,ui16tostr3rj , 1 ); // 123 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(uint16_4 ,uint16_t ,ui16tostr4rj , 0.1f ); // 1234 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(uint16_5 ,uint16_t ,ui16tostr5rj , 0.01f ); // 12345 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float3 ,float ,ftostr3rj , 1 ); // 123 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float42_52 ,float ,ftostr42_52 , 100 , + 0.001f ); // _2.34, 12.34, -2.34 or 123.45, -23.45
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float43 ,float ,ftostr43sign ,1000 , + 0.0001f); // -1.234, _1.234, +1.234
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float4 ,float ,ftostr4sign , 1 ); // 1234 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float5 ,float ,ftostr5rj , 1 ); // 12345 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float5_25 ,float ,ftostr5rj , 0.04f ); // 12345 right-justified (25 increment)
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float61 ,float ,ftostr61rj , 10 , + 0.01f ); // 12345.6 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float72 ,float ,ftostr72rj , 100 , + 0.001f ); // 12345.67 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float31sign ,float ,ftostr31sign , 10 , + 0.01f ); // +12.3
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float41sign ,float ,ftostr41sign , 10 , + 0.01f ); // +123.4
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float51sign ,float ,ftostr51sign , 10 , + 0.01f ); // +1234.5
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(float52sign ,float ,ftostr52sign , 100 , + 0.001f ); // +123.45
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(long5 ,uint32_t ,ftostr5rj , 0.01f ); // 12345 right-justified
|
||||
DEFINE_MENU_EDIT_ITEM_TYPE(long5_25 ,uint32_t ,ftostr5rj , 0.04f ); // 12345 right-justified (25 increment)
|
||||
|
||||
#if HAS_BED_PROBE
|
||||
#if Z_PROBE_OFFSET_RANGE_MIN >= -9 && Z_PROBE_OFFSET_RANGE_MAX <= 9
|
||||
@@ -554,6 +556,14 @@ class MenuItem_bool : public MenuEditItemBase {
|
||||
#define EDIT_EXTRA_FAN_SPEED(...)
|
||||
#endif
|
||||
|
||||
#if FAN_COUNT == 1
|
||||
#define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED
|
||||
#define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED
|
||||
#else
|
||||
#define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED_N
|
||||
#define MSG_EXTRA_FIRST_FAN_SPEED MSG_EXTRA_FAN_SPEED_N
|
||||
#endif
|
||||
|
||||
#define _FAN_EDIT_ITEMS(F,L) do{ \
|
||||
editable.uint8 = thermalManager.fan_speed[F]; \
|
||||
EDIT_ITEM_FAST_N(percent, F, MSG_##L, &editable.uint8, 0, 255, on_fan_update); \
|
||||
|
@@ -243,43 +243,8 @@ void menu_main() {
|
||||
START_MENU();
|
||||
BACK_ITEM(MSG_INFO_SCREEN);
|
||||
|
||||
#if ENABLED(SDSUPPORT)
|
||||
|
||||
#if !defined(MEDIA_MENU_AT_TOP) && !HAS_ENCODER_WHEEL
|
||||
#define MEDIA_MENU_AT_TOP
|
||||
#endif
|
||||
|
||||
auto sdcard_menu_items = [&]{
|
||||
#if ENABLED(MENU_ADDAUTOSTART)
|
||||
ACTION_ITEM(MSG_RUN_AUTO_FILES, card.autofile_begin); // Run Auto Files
|
||||
#endif
|
||||
|
||||
if (card_detected) {
|
||||
if (!card_open) {
|
||||
#if HAS_SD_DETECT
|
||||
GCODES_ITEM(MSG_CHANGE_MEDIA, F("M21")); // M21 Change Media
|
||||
#else // - or -
|
||||
ACTION_ITEM(MSG_RELEASE_MEDIA, []{ // M22 Release Media
|
||||
queue.inject(F("M22"));
|
||||
#if ENABLED(TFT_COLOR_UI)
|
||||
// Menu display issue on item removal with multi language selection menu
|
||||
if (encoderTopLine > 0) encoderTopLine--;
|
||||
ui.refresh(LCDVIEW_CALL_REDRAW_NEXT);
|
||||
#endif
|
||||
});
|
||||
#endif
|
||||
SUBMENU(MSG_MEDIA_MENU, MEDIA_MENU_GATEWAY); // Media Menu (or Password First)
|
||||
}
|
||||
}
|
||||
else {
|
||||
#if HAS_SD_DETECT
|
||||
ACTION_ITEM(MSG_NO_MEDIA, nullptr); // "No Media"
|
||||
#else
|
||||
GCODES_ITEM(MSG_ATTACH_MEDIA, F("M21")); // M21 Attach Media
|
||||
#endif
|
||||
}
|
||||
};
|
||||
|
||||
#if ENABLED(SDSUPPORT) && !defined(MEDIA_MENU_AT_TOP) && !HAS_ENCODER_WHEEL
|
||||
#define MEDIA_MENU_AT_TOP
|
||||
#endif
|
||||
|
||||
if (busy) {
|
||||
@@ -308,9 +273,43 @@ void menu_main() {
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
|
||||
#if BOTH(SDSUPPORT, MEDIA_MENU_AT_TOP)
|
||||
sdcard_menu_items();
|
||||
// BEGIN MEDIA MENU
|
||||
#if ENABLED(MENU_ADDAUTOSTART)
|
||||
ACTION_ITEM(MSG_RUN_AUTO_FILES, card.autofile_begin); // Run Auto Files
|
||||
#endif
|
||||
|
||||
if (card_detected) {
|
||||
if (!card_open) {
|
||||
#if HAS_SD_DETECT
|
||||
GCODES_ITEM(MSG_CHANGE_MEDIA, F("M21" TERN_(MULTI_VOLUME, "S"))); // M21 Change Media
|
||||
#if ENABLED(MULTI_VOLUME)
|
||||
GCODES_ITEM(MSG_ATTACH_USB_MEDIA, F("M21U")); // M21 Attach USB Media
|
||||
#endif
|
||||
#else // - or -
|
||||
ACTION_ITEM(MSG_RELEASE_MEDIA, []{ // M22 Release Media
|
||||
queue.inject(F("M22"));
|
||||
#if ENABLED(TFT_COLOR_UI)
|
||||
// Menu display issue on item removal with multi language selection menu
|
||||
if (encoderTopLine > 0) encoderTopLine--;
|
||||
ui.refresh(LCDVIEW_CALL_REDRAW_NEXT);
|
||||
#endif
|
||||
});
|
||||
#endif
|
||||
SUBMENU(MSG_MEDIA_MENU, MEDIA_MENU_GATEWAY); // Media Menu (or Password First)
|
||||
}
|
||||
}
|
||||
else {
|
||||
#if HAS_SD_DETECT
|
||||
ACTION_ITEM(MSG_NO_MEDIA, nullptr); // "No Media"
|
||||
#else
|
||||
GCODES_ITEM(MSG_ATTACH_MEDIA, F("M21" TERN_(MULTI_VOLUME, "S"))); // M21 Attach Media
|
||||
#if ENABLED(MULTI_VOLUME)
|
||||
GCODES_ITEM(MSG_ATTACH_USB_MEDIA, F("M21U")); // M21 Attach USB Media
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
// END MEDIA MENU
|
||||
#endif
|
||||
|
||||
if (TERN0(MACHINE_CAN_PAUSE, printingIsPaused()))
|
||||
@@ -390,7 +389,42 @@ void menu_main() {
|
||||
#endif
|
||||
|
||||
#if ENABLED(SDSUPPORT) && DISABLED(MEDIA_MENU_AT_TOP)
|
||||
sdcard_menu_items();
|
||||
// BEGIN MEDIA MENU
|
||||
#if ENABLED(MENU_ADDAUTOSTART)
|
||||
ACTION_ITEM(MSG_RUN_AUTO_FILES, card.autofile_begin); // Run Auto Files
|
||||
#endif
|
||||
|
||||
if (card_detected) {
|
||||
if (!card_open) {
|
||||
#if HAS_SD_DETECT
|
||||
GCODES_ITEM(MSG_CHANGE_MEDIA, F("M21" TERN_(MULTI_VOLUME, "S"))); // M21 Change Media
|
||||
#if ENABLED(MULTI_VOLUME)
|
||||
GCODES_ITEM(MSG_ATTACH_USB_MEDIA, F("M21U")); // M21 Attach USB Media
|
||||
#endif
|
||||
#else // - or -
|
||||
ACTION_ITEM(MSG_RELEASE_MEDIA, []{ // M22 Release Media
|
||||
queue.inject(F("M22"));
|
||||
#if ENABLED(TFT_COLOR_UI)
|
||||
// Menu display issue on item removal with multi language selection menu
|
||||
if (encoderTopLine > 0) encoderTopLine--;
|
||||
ui.refresh(LCDVIEW_CALL_REDRAW_NEXT);
|
||||
#endif
|
||||
});
|
||||
#endif
|
||||
SUBMENU(MSG_MEDIA_MENU, MEDIA_MENU_GATEWAY); // Media Menu (or Password First)
|
||||
}
|
||||
}
|
||||
else {
|
||||
#if HAS_SD_DETECT
|
||||
ACTION_ITEM(MSG_NO_MEDIA, nullptr); // "No Media"
|
||||
#else
|
||||
GCODES_ITEM(MSG_ATTACH_MEDIA, F("M21" TERN_(MULTI_VOLUME, "S"))); // M21 Attach Media
|
||||
#if ENABLED(MULTI_VOLUME)
|
||||
GCODES_ITEM(MSG_ATTACH_USB_MEDIA, F("M21U")); // M21 Attach USB Media
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
// END MEDIA MENU
|
||||
#endif
|
||||
|
||||
#if HAS_SERVICE_INTERVALS
|
||||
|
@@ -50,8 +50,7 @@
|
||||
if (ui.encoderPosition) {
|
||||
zvar += float(int32_t(ui.encoderPosition)) * 0.1;
|
||||
ui.encoderPosition = 0;
|
||||
NOLESS(zvar, 0);
|
||||
NOMORE(zvar, Z_MAX_POS);
|
||||
LIMIT(zvar, 0, Z_MAX_POS);
|
||||
}
|
||||
|
||||
if (ui.should_draw()) {
|
||||
@@ -113,7 +112,7 @@ static uint8_t v_index;
|
||||
#if HAS_DUAL_MIXING
|
||||
void _lcd_draw_mix(const uint8_t y) {
|
||||
char tmp[20]; // "100%_100%"
|
||||
sprintf_P(tmp, PSTR("%3d%% %3d%%"), int(mixer.mix[0]), int(mixer.mix[1]));
|
||||
sprintf_P(tmp, PSTR("%3d%% %3d%% "), int(mixer.mix[0]), int(mixer.mix[1]));
|
||||
SETCURSOR(2, y); lcd_put_u8str(GET_TEXT_F(MSG_MIX));
|
||||
SETCURSOR_RJ(10, y); lcd_put_u8str(tmp);
|
||||
}
|
||||
|
@@ -245,25 +245,15 @@ void menu_move() {
|
||||
#endif
|
||||
}
|
||||
#elif EXTRUDERS == 3
|
||||
if (active_extruder < 2) {
|
||||
if (active_extruder)
|
||||
GCODES_ITEM_N(0, MSG_SELECT_E, F("T0"));
|
||||
else
|
||||
GCODES_ITEM_N(1, MSG_SELECT_E, F("T1"));
|
||||
}
|
||||
if (active_extruder < 2)
|
||||
GCODES_ITEM_N(1 - active_extruder, MSG_SELECT_E, active_extruder ? F("T0") : F("T1"));
|
||||
#else
|
||||
if (active_extruder)
|
||||
GCODES_ITEM_N(0, MSG_SELECT_E, F("T0"));
|
||||
else
|
||||
GCODES_ITEM_N(1, MSG_SELECT_E, F("T1"));
|
||||
GCODES_ITEM_N(1 - active_extruder, MSG_SELECT_E, active_extruder ? F("T0") : F("T1"));
|
||||
#endif
|
||||
|
||||
#elif ENABLED(DUAL_X_CARRIAGE)
|
||||
|
||||
if (active_extruder)
|
||||
GCODES_ITEM_N(0, MSG_SELECT_E, F("T0"));
|
||||
else
|
||||
GCODES_ITEM_N(1, MSG_SELECT_E, F("T1"));
|
||||
GCODES_ITEM_N(1 - active_extruder, MSG_SELECT_E, active_extruder ? F("T0") : F("T1"));
|
||||
|
||||
#endif
|
||||
|
||||
|
@@ -156,37 +156,37 @@ void menu_tune() {
|
||||
#if HAS_FAN0
|
||||
_FAN_EDIT_ITEMS(0,FIRST_FAN_SPEED);
|
||||
#endif
|
||||
#if HAS_FAN1
|
||||
#if HAS_FAN1 && REDUNDANT_PART_COOLING_FAN != 1
|
||||
FAN_EDIT_ITEMS(1);
|
||||
#elif SNFAN(1)
|
||||
singlenozzle_item(1);
|
||||
#endif
|
||||
#if HAS_FAN2
|
||||
#if HAS_FAN2 && REDUNDANT_PART_COOLING_FAN != 2
|
||||
FAN_EDIT_ITEMS(2);
|
||||
#elif SNFAN(2)
|
||||
singlenozzle_item(2);
|
||||
#endif
|
||||
#if HAS_FAN3
|
||||
#if HAS_FAN3 && REDUNDANT_PART_COOLING_FAN != 3
|
||||
FAN_EDIT_ITEMS(3);
|
||||
#elif SNFAN(3)
|
||||
singlenozzle_item(3);
|
||||
#endif
|
||||
#if HAS_FAN4
|
||||
#if HAS_FAN4 && REDUNDANT_PART_COOLING_FAN != 4
|
||||
FAN_EDIT_ITEMS(4);
|
||||
#elif SNFAN(4)
|
||||
singlenozzle_item(4);
|
||||
#endif
|
||||
#if HAS_FAN5
|
||||
#if HAS_FAN5 && REDUNDANT_PART_COOLING_FAN != 5
|
||||
FAN_EDIT_ITEMS(5);
|
||||
#elif SNFAN(5)
|
||||
singlenozzle_item(5);
|
||||
#endif
|
||||
#if HAS_FAN6
|
||||
#if HAS_FAN6 && REDUNDANT_PART_COOLING_FAN != 6
|
||||
FAN_EDIT_ITEMS(6);
|
||||
#elif SNFAN(6)
|
||||
singlenozzle_item(6);
|
||||
#endif
|
||||
#if HAS_FAN7
|
||||
#if HAS_FAN7 && REDUNDANT_PART_COOLING_FAN != 7
|
||||
FAN_EDIT_ITEMS(7);
|
||||
#elif SNFAN(7)
|
||||
singlenozzle_item(7);
|
||||
|
Reference in New Issue
Block a user