🚸 Immediate Buttons and Menu Items (#28180)
This commit is contained in:
@@ -4123,22 +4123,27 @@
|
||||
#define MAIN_MENU_ITEM_1_DESC "Home & UBL Info"
|
||||
#define MAIN_MENU_ITEM_1_GCODE "G28\nG29 W"
|
||||
//#define MAIN_MENU_ITEM_1_CONFIRM // Show a confirmation dialog before this action
|
||||
//#define MAIN_MENU_ITEM_1_IMMEDIATE // Skip the queue and execute immediately. Rarely needed.
|
||||
|
||||
#define MAIN_MENU_ITEM_2_DESC "Preheat for " PREHEAT_1_LABEL
|
||||
#define MAIN_MENU_ITEM_2_GCODE "M140 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND)
|
||||
//#define MAIN_MENU_ITEM_2_CONFIRM
|
||||
//#define MAIN_MENU_ITEM_2_IMMEDIATE
|
||||
|
||||
//#define MAIN_MENU_ITEM_3_DESC "Preheat for " PREHEAT_2_LABEL
|
||||
//#define MAIN_MENU_ITEM_3_GCODE "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND)
|
||||
//#define MAIN_MENU_ITEM_3_CONFIRM
|
||||
//#define MAIN_MENU_ITEM_3_IMMEDIATE
|
||||
|
||||
//#define MAIN_MENU_ITEM_4_DESC "Heat Bed/Home/Level"
|
||||
//#define MAIN_MENU_ITEM_4_GCODE "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nG28\nG29"
|
||||
//#define MAIN_MENU_ITEM_4_CONFIRM
|
||||
//#define MAIN_MENU_ITEM_4_IMMEDIATE
|
||||
|
||||
//#define MAIN_MENU_ITEM_5_DESC "Home & Info"
|
||||
//#define MAIN_MENU_ITEM_5_GCODE "G28\nM503"
|
||||
//#define MAIN_MENU_ITEM_5_CONFIRM
|
||||
//#define MAIN_MENU_ITEM_5_IMMEDIATE
|
||||
#endif
|
||||
|
||||
// @section custom config menu
|
||||
@@ -4155,22 +4160,27 @@
|
||||
#define CONFIG_MENU_ITEM_1_DESC "Wifi ON"
|
||||
#define CONFIG_MENU_ITEM_1_GCODE "M118 [ESP110] WIFI-STA pwd=12345678"
|
||||
//#define CONFIG_MENU_ITEM_1_CONFIRM // Show a confirmation dialog before this action
|
||||
//#define CONFIG_MENU_ITEM_1_IMMEDIATE // Skip the queue and execute immediately. Rarely needed.
|
||||
|
||||
#define CONFIG_MENU_ITEM_2_DESC "Bluetooth ON"
|
||||
#define CONFIG_MENU_ITEM_2_GCODE "M118 [ESP110] BT pwd=12345678"
|
||||
//#define CONFIG_MENU_ITEM_2_CONFIRM
|
||||
//#define CONFIG_MENU_ITEM_2_IMMEDIATE
|
||||
|
||||
//#define CONFIG_MENU_ITEM_3_DESC "Radio OFF"
|
||||
//#define CONFIG_MENU_ITEM_3_GCODE "M118 [ESP110] OFF pwd=12345678"
|
||||
//#define CONFIG_MENU_ITEM_3_CONFIRM
|
||||
//#define CONFIG_MENU_ITEM_3_IMMEDIATE
|
||||
|
||||
//#define CONFIG_MENU_ITEM_4_DESC "Wifi ????"
|
||||
//#define CONFIG_MENU_ITEM_4_GCODE "M118 ????"
|
||||
//#define CONFIG_MENU_ITEM_4_CONFIRM
|
||||
//#define CONFIG_MENU_ITEM_4_IMMEDIATE
|
||||
|
||||
//#define CONFIG_MENU_ITEM_5_DESC "Wifi ????"
|
||||
//#define CONFIG_MENU_ITEM_5_GCODE "M118 ????"
|
||||
//#define CONFIG_MENU_ITEM_5_CONFIRM
|
||||
//#define CONFIG_MENU_ITEM_5_IMMEDIATE
|
||||
#endif
|
||||
|
||||
// @section custom buttons
|
||||
@@ -4187,6 +4197,7 @@
|
||||
#define BUTTON1_WHEN_PRINTING false // Button allowed to trigger during printing?
|
||||
#define BUTTON1_GCODE "G28"
|
||||
#define BUTTON1_DESC "Homing" // Optional string to set the LCD status
|
||||
//#define BUTTON1_IMMEDIATE // Skip the queue and run the G-code immediately. Rarely needed.
|
||||
#endif
|
||||
|
||||
//#define BUTTON2_PIN -1
|
||||
@@ -4195,6 +4206,7 @@
|
||||
#define BUTTON2_WHEN_PRINTING false
|
||||
#define BUTTON2_GCODE "M140 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND)
|
||||
#define BUTTON2_DESC "Preheat for " PREHEAT_1_LABEL
|
||||
//#define BUTTON2_IMMEDIATE
|
||||
#endif
|
||||
|
||||
//#define BUTTON3_PIN -1
|
||||
@@ -4203,6 +4215,7 @@
|
||||
#define BUTTON3_WHEN_PRINTING false
|
||||
#define BUTTON3_GCODE "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND)
|
||||
#define BUTTON3_DESC "Preheat for " PREHEAT_2_LABEL
|
||||
//#define BUTTON3_IMMEDIATE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
#error "POSTMORTEM_DEBUGGING requires CORE_DISABLE_FAULT_HANDLER to be set."
|
||||
#endif
|
||||
|
||||
#if defined(PANIC_ENABLE)
|
||||
#ifdef PANIC_ENABLE
|
||||
#if defined(PANIC_USART1_TX_PIN) || defined(PANIC_USART2_TX_PIN) || defined(PANIC_USART3_TX_PIN) || defined(PANIC_USART3_TX_PIN)
|
||||
#error "HC32 HAL uses a custom panic handler. Do not define PANIC_USARTx_TX_PIN."
|
||||
#endif
|
||||
|
||||
@@ -171,7 +171,7 @@ void core_hook_sysclock_init() {
|
||||
panic("HRC is not 16 MHz");
|
||||
}
|
||||
|
||||
#if defined(BOARD_XTAL_FREQUENCY)
|
||||
#ifdef BOARD_XTAL_FREQUENCY
|
||||
#warning "No valid XTAL frequency defined, falling back to HRC."
|
||||
#endif
|
||||
|
||||
|
||||
@@ -531,11 +531,15 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) {
|
||||
constexpr millis_t CUB_DEBOUNCE_DELAY_##N = 250UL; \
|
||||
static millis_t next_cub_ms_##N; \
|
||||
if (BUTTON##N##_HIT_STATE == READ(BUTTON##N##_PIN) \
|
||||
&& (ENABLED(BUTTON##N##_WHEN_PRINTING) || printer_not_busy)) { \
|
||||
&& (ENABLED(BUTTON##N##_WHEN_PRINTING) || printer_not_busy) \
|
||||
) { \
|
||||
if (ELAPSED(ms, next_cub_ms_##N)) { \
|
||||
next_cub_ms_##N = ms + CUB_DEBOUNCE_DELAY_##N; \
|
||||
CODE; \
|
||||
queue.inject(F(BUTTON##N##_GCODE)); \
|
||||
if (ENABLED(BUTTON##N##_IMMEDIATE)) \
|
||||
gcode.process_subcommands_now(F(BUTTON##N##_GCODE)); \
|
||||
else \
|
||||
queue.inject(F(BUTTON##N##_GCODE)); \
|
||||
TERN_(HAS_MARLINUI_MENU, ui.quick_feedback()); \
|
||||
} \
|
||||
} \
|
||||
|
||||
@@ -266,7 +266,7 @@ private:
|
||||
uint8_t tilt_grid = 1;
|
||||
|
||||
void manualValueUpdate(bool undefined=false) {
|
||||
gcode.process_subcommands_now(
|
||||
queue.inject(
|
||||
TS(F("M421I"), mesh_x, 'J', mesh_y, 'Z', p_float_t(current_position.z, 3), undefined ? "N" : "")
|
||||
);
|
||||
planner.synchronize();
|
||||
@@ -313,7 +313,7 @@ private:
|
||||
#else
|
||||
|
||||
void manualValueUpdate() {
|
||||
gcode.process_subcommands_now(
|
||||
queue.inject(
|
||||
TS(F("G29I"), mesh_x, 'J', mesh_y, 'Z', p_float_t(current_position.z, 3))
|
||||
);
|
||||
planner.synchronize();
|
||||
@@ -1176,7 +1176,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
thermalManager.wait_for_hotend(0);
|
||||
}
|
||||
popupHandler(Popup_FilChange);
|
||||
gcode.process_subcommands_now(TS(F("M600 B1 R"), thermalManager.degTargetHotend(0)));
|
||||
queue.inject(TS(F("M600 B1 R"), thermalManager.degTargetHotend(0)));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -1225,7 +1225,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
drawMenuItem(row, ICON_MoveX, GET_TEXT_F(MSG_AUTO_HOME_X));
|
||||
else {
|
||||
popupHandler(Popup_Home);
|
||||
gcode.process_subcommands_now(F("G28X"));
|
||||
queue.inject(F("G28X"));
|
||||
planner.synchronize();
|
||||
redrawMenu();
|
||||
}
|
||||
@@ -1235,7 +1235,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
drawMenuItem(row, ICON_MoveY, GET_TEXT_F(MSG_AUTO_HOME_X));
|
||||
else {
|
||||
popupHandler(Popup_Home);
|
||||
gcode.process_subcommands_now(F("G28Y"));
|
||||
queue.inject(F("G28Y"));
|
||||
planner.synchronize();
|
||||
redrawMenu();
|
||||
}
|
||||
@@ -1245,7 +1245,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
drawMenuItem(row, ICON_MoveZ, GET_TEXT_F(MSG_AUTO_HOME_X));
|
||||
else {
|
||||
popupHandler(Popup_Home);
|
||||
gcode.process_subcommands_now(F("G28Z"));
|
||||
queue.inject(F("G28Z"));
|
||||
planner.synchronize();
|
||||
redrawMenu();
|
||||
}
|
||||
@@ -1254,7 +1254,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
if (draw)
|
||||
drawMenuItem(row, ICON_SetHome, F("Set Home Here"));
|
||||
else {
|
||||
gcode.process_subcommands_now(F("G92X0Y0Z0"));
|
||||
queue.inject(F("G92X0Y0Z0"));
|
||||
audioFeedback();
|
||||
}
|
||||
break;
|
||||
@@ -1577,7 +1577,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
drawMenuItem(row, ICON_Homing, GET_TEXT_F(MSG_AUTO_HOME_Z));
|
||||
else {
|
||||
popupHandler(Popup_Home);
|
||||
gcode.process_subcommands_now(F("G28Z"));
|
||||
queue.inject(F("G28Z"));
|
||||
popupHandler(Popup_MoveWait);
|
||||
#if ENABLED(Z_SAFE_HOMING)
|
||||
planner.synchronize();
|
||||
@@ -1809,8 +1809,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
drawMenuItem(row, ICON_Info, F(CONFIG_MENU_ITEM_1_DESC));
|
||||
else {
|
||||
popupHandler(Popup_Custom);
|
||||
//queue.inject(F(CONFIG_MENU_ITEM_1_GCODE)); // Old code
|
||||
gcode.process_subcommands_now(F(CONFIG_MENU_ITEM_1_GCODE));
|
||||
TERN(CONFIG_MENU_ITEM_1_IMMEDIATE, gcode.process_subcommands_now, queue.inject)(F(CONFIG_MENU_ITEM_1_GCODE));
|
||||
planner.synchronize();
|
||||
redrawMenu();
|
||||
#if ENABLED(CUSTOM_MENU_CONFIG_SCRIPT_AUDIBLE_FEEDBACK)
|
||||
@@ -1829,7 +1828,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
drawMenuItem(row, ICON_Info, F(CONFIG_MENU_ITEM_2_DESC));
|
||||
else {
|
||||
popupHandler(Popup_Custom);
|
||||
gcode.process_subcommands_now(F(CONFIG_MENU_ITEM_2_GCODE));
|
||||
TERN(CONFIG_MENU_ITEM_1_IMMEDIATE, gcode.process_subcommands_now, queue.inject)(F(CONFIG_MENU_ITEM_2_GCODE));
|
||||
planner.synchronize();
|
||||
redrawMenu();
|
||||
#if ENABLED(CUSTOM_MENU_CONFIG_SCRIPT_AUDIBLE_FEEDBACK)
|
||||
@@ -1848,7 +1847,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
drawMenuItem(row, ICON_Info, F(CONFIG_MENU_ITEM_3_DESC));
|
||||
else {
|
||||
popupHandler(Popup_Custom);
|
||||
gcode.process_subcommands_now(F(CONFIG_MENU_ITEM_3_GCODE));
|
||||
TERN(CONFIG_MENU_ITEM_1_IMMEDIATE, gcode.process_subcommands_now, queue.inject)(F(CONFIG_MENU_ITEM_3_GCODE));
|
||||
planner.synchronize();
|
||||
redrawMenu();
|
||||
#if ENABLED(CUSTOM_MENU_CONFIG_SCRIPT_AUDIBLE_FEEDBACK)
|
||||
@@ -1867,7 +1866,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
drawMenuItem(row, ICON_Info, F(CONFIG_MENU_ITEM_4_DESC));
|
||||
else {
|
||||
popupHandler(Popup_Custom);
|
||||
gcode.process_subcommands_now(F(CONFIG_MENU_ITEM_4_GCODE));
|
||||
TERN(CONFIG_MENU_ITEM_1_IMMEDIATE, gcode.process_subcommands_now, queue.inject)(F(CONFIG_MENU_ITEM_4_GCODE));
|
||||
planner.synchronize();
|
||||
redrawMenu();
|
||||
#if ENABLED(CUSTOM_MENU_CONFIG_SCRIPT_AUDIBLE_FEEDBACK)
|
||||
@@ -1886,7 +1885,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
drawMenuItem(row, ICON_Info, F(CONFIG_MENU_ITEM_5_DESC));
|
||||
else {
|
||||
popupHandler(Popup_Custom);
|
||||
gcode.process_subcommands_now(F(CONFIG_MENU_ITEM_5_GCODE));
|
||||
TERN(CONFIG_MENU_ITEM_1_IMMEDIATE, gcode.process_subcommands_now, queue.inject)(F(CONFIG_MENU_ITEM_5_GCODE));
|
||||
planner.synchronize();
|
||||
redrawMenu();
|
||||
#if ENABLED(CUSTOM_MENU_CONFIG_SCRIPT_AUDIBLE_FEEDBACK)
|
||||
@@ -2127,7 +2126,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
drawMenuItem(row, ICON_HotendTemp, GET_TEXT_F(MSG_PID_AUTOTUNE));
|
||||
else {
|
||||
popupHandler(Popup_PIDWait);
|
||||
gcode.process_subcommands_now(TS(F("M303E0C"), PID_cycles, 'S', PID_e_temp, 'U'));
|
||||
queue.inject(TS(F("M303E0C"), PID_cycles, 'S', PID_e_temp, 'U'));
|
||||
planner.synchronize();
|
||||
redrawMenu();
|
||||
}
|
||||
@@ -2193,7 +2192,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
drawMenuItem(row, ICON_HotendTemp, GET_TEXT_F(MSG_PID_AUTOTUNE));
|
||||
else {
|
||||
popupHandler(Popup_PIDWait);
|
||||
gcode.process_subcommands_now(TS(F("M303E-1C"), PID_cycles, 'S', PID_bed_temp, 'U'));
|
||||
queue.inject(TS(F("M303E-1C"), PID_cycles, 'S', PID_bed_temp, 'U'));
|
||||
planner.synchronize();
|
||||
redrawMenu();
|
||||
}
|
||||
@@ -3037,7 +3036,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
if (draw)
|
||||
drawMenuItem(row, ICON_StepY, F("M48 Probe Test"));
|
||||
else {
|
||||
gcode.process_subcommands_now(
|
||||
queue.inject(
|
||||
TS(F("G28O\nM48X"), p_float_t((X_BED_SIZE + X_MIN_POS) / 2.0f, 3), 'Y', p_float_t((Y_BED_SIZE + Y_MIN_POS) / 2.0f, 3), 'P', testcount)
|
||||
);
|
||||
}
|
||||
@@ -3231,9 +3230,9 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
gcode.home_all_axes(true);
|
||||
popupHandler(Popup_Level);
|
||||
if (mesh_conf.tilt_grid > 1)
|
||||
gcode.process_subcommands_now(TS(F("G29J"), mesh_conf.tilt_grid));
|
||||
queue.inject(TS(F("G29J"), mesh_conf.tilt_grid));
|
||||
else
|
||||
gcode.process_subcommands_now(F("G29J"));
|
||||
queue.inject(F("G29J"));
|
||||
planner.synchronize();
|
||||
redrawMenu();
|
||||
}
|
||||
@@ -3268,7 +3267,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
#endif
|
||||
#elif HAS_BED_PROBE
|
||||
popupHandler(Popup_Level);
|
||||
gcode.process_subcommands_now(F("G29"));
|
||||
queue.inject(F("G29"));
|
||||
planner.synchronize();
|
||||
popupHandler(Popup_SaveLevel);
|
||||
#else
|
||||
@@ -3276,7 +3275,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
set_bed_leveling_enabled(false);
|
||||
gridpoint = 1;
|
||||
popupHandler(Popup_MoveWait);
|
||||
gcode.process_subcommands_now(F("G29"));
|
||||
queue.inject(F("G29"));
|
||||
planner.synchronize();
|
||||
drawMenu(ID_ManualMesh);
|
||||
#endif
|
||||
@@ -3359,7 +3358,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
popupHandler(Popup_MeshSlot);
|
||||
break;
|
||||
}
|
||||
gcode.process_subcommands_now(F("G29 L"));
|
||||
queue.inject(F("G29 L"));
|
||||
planner.synchronize();
|
||||
audioFeedback(true);
|
||||
}
|
||||
@@ -3372,7 +3371,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
popupHandler(Popup_MeshSlot);
|
||||
break;
|
||||
}
|
||||
gcode.process_subcommands_now(F("G29 S"));
|
||||
queue.inject(F("G29 S"));
|
||||
planner.synchronize();
|
||||
audioFeedback(true);
|
||||
}
|
||||
@@ -3576,7 +3575,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
drawMenuItem(row, ICON_Axis, F("+0.01mm Up"));
|
||||
else if (bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] < MAX_Z_OFFSET) {
|
||||
bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] += 0.01;
|
||||
gcode.process_subcommands_now(F("M290 Z0.01"));
|
||||
queue.inject(F("M290 Z0.01"));
|
||||
planner.synchronize();
|
||||
current_position.z += 0.01f;
|
||||
sync_plan_position();
|
||||
@@ -3588,7 +3587,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
drawMenuItem(row, ICON_AxisD, F("-0.01mm Down"));
|
||||
else if (bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] > MIN_Z_OFFSET) {
|
||||
bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] -= 0.01;
|
||||
gcode.process_subcommands_now(F("M290 Z-0.01"));
|
||||
queue.inject(F("M290 Z-0.01"));
|
||||
planner.synchronize();
|
||||
current_position.z -= 0.01f;
|
||||
sync_plan_position();
|
||||
@@ -3659,7 +3658,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
mesh_conf.manual_mesh_move();
|
||||
}
|
||||
else {
|
||||
gcode.process_subcommands_now(F("G29 S"));
|
||||
queue.inject(F("G29 S"));
|
||||
planner.synchronize();
|
||||
audioFeedback(true);
|
||||
drawMenu(ID_Leveling, LEVELING_GET_MESH);
|
||||
@@ -3697,7 +3696,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
drawMenuItem(row, ICON_Axis, F("+0.01mm Up"));
|
||||
else if (bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] < MAX_Z_OFFSET) {
|
||||
bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] += 0.01;
|
||||
gcode.process_subcommands_now(F("M290 Z0.01"));
|
||||
queue.inject(F("M290 Z0.01"));
|
||||
planner.synchronize();
|
||||
current_position.z += 0.01f;
|
||||
sync_plan_position();
|
||||
@@ -3709,7 +3708,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
drawMenuItem(row, ICON_Axis, F("-0.01mm Down"));
|
||||
else if (bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] > MIN_Z_OFFSET) {
|
||||
bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] -= 0.01;
|
||||
gcode.process_subcommands_now(F("M290 Z-0.01"));
|
||||
queue.inject(F("M290 Z-0.01"));
|
||||
planner.synchronize();
|
||||
current_position.z -= 0.01f;
|
||||
sync_plan_position();
|
||||
@@ -3751,13 +3750,13 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
}
|
||||
else if (gridpoint < GRID_MAX_POINTS) {
|
||||
popupHandler(Popup_MoveWait);
|
||||
gcode.process_subcommands_now(F("G29"));
|
||||
queue.inject(F("G29"));
|
||||
planner.synchronize();
|
||||
gridpoint++;
|
||||
redrawMenu();
|
||||
}
|
||||
else {
|
||||
gcode.process_subcommands_now(F("G29"));
|
||||
queue.inject(F("G29"));
|
||||
planner.synchronize();
|
||||
audioFeedback(settings.save());
|
||||
drawMenu(ID_Leveling, LEVELING_GET_MESH);
|
||||
@@ -4020,26 +4019,26 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
|
||||
switch (last_menu) {
|
||||
case ID_Prepare:
|
||||
popupHandler(Popup_FilChange);
|
||||
gcode.process_subcommands_now(TS(F("M600 B1 R"), thermalManager.degTargetHotend(0)));
|
||||
queue.inject(TS(F("M600 B1 R"), thermalManager.degTargetHotend(0)));
|
||||
break;
|
||||
#if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)
|
||||
case ID_ChangeFilament:
|
||||
switch (last_selection) {
|
||||
case CHANGEFIL_LOAD:
|
||||
popupHandler(Popup_FilLoad);
|
||||
gcode.process_subcommands_now(F("M701"));
|
||||
queue.inject(F("M701"));
|
||||
planner.synchronize();
|
||||
redrawMenu(true, true, true);
|
||||
break;
|
||||
case CHANGEFIL_UNLOAD:
|
||||
popupHandler(Popup_FilLoad, true);
|
||||
gcode.process_subcommands_now(F("M702"));
|
||||
queue.inject(F("M702"));
|
||||
planner.synchronize();
|
||||
redrawMenu(true, true, true);
|
||||
break;
|
||||
case CHANGEFIL_CHANGE:
|
||||
popupHandler(Popup_FilChange);
|
||||
gcode.process_subcommands_now(TS(F("M600 B1 R"), thermalManager.degTargetHotend(0)));
|
||||
queue.inject(TS(F("M600 B1 R"), thermalManager.degTargetHotend(0)));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -4614,10 +4613,10 @@ void JyersDWIN::printScreenControl() {
|
||||
TERN_(POWER_LOSS_RECOVERY, recovery.prepare());
|
||||
#else
|
||||
#if HAS_HEATED_BED
|
||||
gcode.process_subcommands_now(TS(F("M140 S"), pausebed));
|
||||
queue.inject(TS(F("M140 S"), pausebed));
|
||||
#endif
|
||||
#if HAS_EXTRUDERS
|
||||
gcode.process_subcommands_now(TS(F("M109 S"), pausetemp));
|
||||
queue.inject(TS(F("M109 S"), pausetemp));
|
||||
#endif
|
||||
TERN_(HAS_FAN, thermalManager.fan_speed[0] = pausefan);
|
||||
planner.synchronize();
|
||||
@@ -4737,7 +4736,7 @@ void JyersDWIN::popupControl() {
|
||||
thermalManager.wait_for_hotend(0);
|
||||
}
|
||||
popupHandler(Popup_FilChange);
|
||||
gcode.process_subcommands_now(TS(F("M600B1R"), thermalManager.degTargetHotend(0)));
|
||||
queue.inject(TS(F("M600B1R"), thermalManager.degTargetHotend(0)));
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -4760,7 +4759,7 @@ void JyersDWIN::popupControl() {
|
||||
case Popup_SaveLevel:
|
||||
if (selection == 0) {
|
||||
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
||||
gcode.process_subcommands_now(F("G29 S"));
|
||||
queue.inject(F("G29 S"));
|
||||
planner.synchronize();
|
||||
audioFeedback(true);
|
||||
#else
|
||||
|
||||
@@ -42,7 +42,7 @@ void CustomUserMenus::onRedraw(draw_mode_t what) {
|
||||
}
|
||||
|
||||
#if ENABLED(TOUCH_UI_PORTRAIT)
|
||||
#if defined(TOOLHEAD_Legacy_Universal)
|
||||
#ifdef TOOLHEAD_Legacy_Universal
|
||||
#define GRID_ROWS 10
|
||||
#else
|
||||
#define GRID_ROWS 7
|
||||
@@ -61,10 +61,9 @@ void CustomUserMenus::onRedraw(draw_mode_t what) {
|
||||
#define BACK_POS BTN_POS(1,GRID_ROWS), BTN_SIZE(GRID_COLS,1)
|
||||
#endif
|
||||
|
||||
btn_colors thcolor[8] = {normal_btn};
|
||||
btn_colors thcolor[8] = {normal_btn};
|
||||
//.color(TH_color[1])
|
||||
|
||||
|
||||
//.color(TH_color[1])
|
||||
if (what & FOREGROUND) {
|
||||
CommandProcessor cmd;
|
||||
cmd.colors(normal_btn)
|
||||
@@ -72,42 +71,42 @@ btn_colors thcolor[8] = {normal_btn};
|
||||
.tag(0).text(TOOLHEAD_LABL_POS, GET_TEXT_F(MSG_CUSTOM_MENU_MAIN_TITLE));
|
||||
cmd.colors(accent_btn)
|
||||
.font(Theme::font_medium)
|
||||
#if defined(MAIN_MENU_ITEM_1_DESC)
|
||||
#ifdef MAIN_MENU_ITEM_1_DESC
|
||||
//_USER_ITEM(1)
|
||||
.tag(_ITEM_TAG(11)).button(USER_ITEM_POS(1), MAIN_MENU_ITEM_1_DESC)
|
||||
#endif
|
||||
.colors(thcolor[1])
|
||||
#if defined(MAIN_MENU_ITEM_2_DESC)
|
||||
#ifdef MAIN_MENU_ITEM_2_DESC
|
||||
//_USER_ITEM(2)
|
||||
.tag(_ITEM_TAG(12)).button(USER_ITEM_POS(2), MAIN_MENU_ITEM_2_DESC)
|
||||
#endif
|
||||
.colors(thcolor[2])
|
||||
#if defined(MAIN_MENU_ITEM_3_DESC)
|
||||
#ifdef MAIN_MENU_ITEM_3_DESC
|
||||
//_USER_ITEM(3)
|
||||
.tag(_ITEM_TAG(13)).button(USER_ITEM_POS(3), MAIN_MENU_ITEM_3_DESC)
|
||||
#endif
|
||||
.colors(thcolor[3])
|
||||
#if defined(MAIN_MENU_ITEM_4_DESC)
|
||||
#ifdef MAIN_MENU_ITEM_4_DESC
|
||||
//_USER_ITEM(4)
|
||||
.tag(_ITEM_TAG(14)).button(USER_ITEM_POS(4), MAIN_MENU_ITEM_4_DESC)
|
||||
#endif
|
||||
.colors(thcolor[4])
|
||||
#if defined(MAIN_MENU_ITEM_5_DESC)
|
||||
#ifdef MAIN_MENU_ITEM_5_DESC
|
||||
//_USER_ITEM(5)
|
||||
.tag(_ITEM_TAG(15)).button(USER_ITEM_POS(5), MAIN_MENU_ITEM_5_DESC)
|
||||
#endif
|
||||
.colors(thcolor[5])
|
||||
#if defined(MAIN_MENU_ITEM_6_DESC)
|
||||
#ifdef MAIN_MENU_ITEM_6_DESC
|
||||
//_USER_ITEM(6)
|
||||
.tag(_ITEM_TAG(16)).button(USER_ITEM_POS(6), MAIN_MENU_ITEM_6_DESC)
|
||||
#endif
|
||||
.colors(thcolor[6])
|
||||
#if defined(MAIN_MENU_ITEM_7_DESC)
|
||||
#ifdef MAIN_MENU_ITEM_7_DESC
|
||||
//_USER_ITEM(7)
|
||||
.tag(_ITEM_TAG(17)).button(USER_ITEM_POS(7), MAIN_MENU_ITEM_7_DESC)
|
||||
#endif
|
||||
.colors(thcolor[7])
|
||||
#if defined(MAIN_MENU_ITEM_8_DESC)
|
||||
#ifdef MAIN_MENU_ITEM_8_DESC
|
||||
//_USER_ITEM(8)
|
||||
.tag(_ITEM_TAG(18)).button(USER_ITEM_POS(8), MAIN_MENU_ITEM_8_DESC)
|
||||
#endif
|
||||
@@ -123,41 +122,49 @@ btn_colors thcolor[8] = {normal_btn};
|
||||
}
|
||||
}
|
||||
|
||||
#include "../../../../gcode/queue.h"
|
||||
|
||||
template<bool> void _lcd_custom_menu_gcode(FSTR_P const fstr);
|
||||
|
||||
FORCE_INLINE void _lcd_custom_menu_gcode_done() {
|
||||
TERN_(CUSTOM_MENU_MAIN_SCRIPT_AUDIBLE_FEEDBACK, ui.completion_feedback());
|
||||
TERN_(CUSTOM_MENU_MAIN_SCRIPT_RETURN, ui.return_to_status());
|
||||
}
|
||||
template<> void _lcd_custom_menu_gcode<true>(FSTR_P const fstr) {
|
||||
gcode.process_subcommands_now(fstr);
|
||||
_lcd_custom_menu_gcode_done();
|
||||
}
|
||||
template<> void _lcd_custom_menu_gcode<false>(FSTR_P const fstr) {
|
||||
queue.inject(fstr);
|
||||
_lcd_custom_menu_gcode_done();
|
||||
}
|
||||
|
||||
bool CustomUserMenus::onTouchEnd(uint8_t tag) {
|
||||
switch (tag) {
|
||||
#if defined(MAIN_MENU_ITEM_1_DESC)
|
||||
//_USER_ACTION(1)
|
||||
case _ITEM_TAG(11): injectCommands_P(PSTR(MAIN_MENU_ITEM_1_GCODE));sound.play(chimes, PLAY_ASYNCHRONOUS); GOTO_SCREEN(StatusScreen); break;
|
||||
#ifdef MAIN_MENU_ITEM_1_DESC
|
||||
case _ITEM_TAG(11): _lcd_custom_menu_gcode<ENABLED(MAIN_MENU_ITEM_1_IMMEDIATE)>(F(MAIN_MENU_ITEM_1_GCODE)); break;
|
||||
#endif
|
||||
#if defined(MAIN_MENU_ITEM_2_DESC)
|
||||
//_USER_ACTION(2)
|
||||
case _ITEM_TAG(12): injectCommands_P(PSTR(MAIN_MENU_ITEM_2_GCODE));sound.play(chimes, PLAY_ASYNCHRONOUS); GOTO_SCREEN(StatusScreen); break;
|
||||
#ifdef MAIN_MENU_ITEM_2_DESC
|
||||
case _ITEM_TAG(12): _lcd_custom_menu_gcode<ENABLED(MAIN_MENU_ITEM_2_IMMEDIATE)>(F(MAIN_MENU_ITEM_2_GCODE)); break;
|
||||
#endif
|
||||
#if defined(MAIN_MENU_ITEM_3_DESC)
|
||||
//_USER_ACTION(3)
|
||||
case _ITEM_TAG(13): injectCommands_P(PSTR(MAIN_MENU_ITEM_3_GCODE));sound.play(chimes, PLAY_ASYNCHRONOUS); GOTO_SCREEN(StatusScreen); break;
|
||||
#ifdef MAIN_MENU_ITEM_3_DESC
|
||||
case _ITEM_TAG(13): _lcd_custom_menu_gcode<ENABLED(MAIN_MENU_ITEM_3_IMMEDIATE)>(F(MAIN_MENU_ITEM_3_GCODE)); break;
|
||||
#endif
|
||||
#if defined(MAIN_MENU_ITEM_4_DESC)
|
||||
//_USER_ACTION(4)
|
||||
case _ITEM_TAG(14): injectCommands_P(PSTR(MAIN_MENU_ITEM_4_GCODE));sound.play(chimes, PLAY_ASYNCHRONOUS); GOTO_SCREEN(StatusScreen); break;
|
||||
#ifdef MAIN_MENU_ITEM_4_DESC
|
||||
case _ITEM_TAG(14): _lcd_custom_menu_gcode<ENABLED(MAIN_MENU_ITEM_4_IMMEDIATE)>(F(MAIN_MENU_ITEM_4_GCODE)); break;
|
||||
#endif
|
||||
#if defined(MAIN_MENU_ITEM_5_DESC)
|
||||
//_USER_ACTION(5)
|
||||
case _ITEM_TAG(15): injectCommands_P(PSTR(MAIN_MENU_ITEM_5_GCODE));sound.play(chimes, PLAY_ASYNCHRONOUS); GOTO_SCREEN(StatusScreen); break;
|
||||
#ifdef MAIN_MENU_ITEM_5_DESC
|
||||
case _ITEM_TAG(15): _lcd_custom_menu_gcode<ENABLED(MAIN_MENU_ITEM_5_IMMEDIATE)>(F(MAIN_MENU_ITEM_5_GCODE)); break;
|
||||
#endif
|
||||
#if defined(MAIN_MENU_ITEM_6_DESC)
|
||||
//_USER_ACTION(6)
|
||||
case _ITEM_TAG(16): injectCommands_P(PSTR(MAIN_MENU_ITEM_6_GCODE));sound.play(chimes, PLAY_ASYNCHRONOUS); GOTO_SCREEN(StatusScreen); break;
|
||||
#ifdef MAIN_MENU_ITEM_6_DESC
|
||||
case _ITEM_TAG(16): _lcd_custom_menu_gcode<ENABLED(MAIN_MENU_ITEM_6_IMMEDIATE)>(F(MAIN_MENU_ITEM_6_GCODE)); break;
|
||||
#endif
|
||||
#if defined(MAIN_MENU_ITEM_7_DESC)
|
||||
//_USER_ACTION(7)
|
||||
case _ITEM_TAG(17): injectCommands_P(PSTR(MAIN_MENU_ITEM_7_GCODE));sound.play(chimes, PLAY_ASYNCHRONOUS); GOTO_SCREEN(StatusScreen);break;
|
||||
#ifdef MAIN_MENU_ITEM_7_DESC
|
||||
case _ITEM_TAG(17): _lcd_custom_menu_gcode<ENABLED(MAIN_MENU_ITEM_7_IMMEDIATE)>(F(MAIN_MENU_ITEM_7_GCODE)); break;
|
||||
#endif
|
||||
#if defined(MAIN_MENU_ITEM_8_DESC)
|
||||
//_USER_ACTION(8)
|
||||
case _ITEM_TAG(18): injectCommands_P(PSTR(MAIN_MENU_ITEM_8_GCODE));sound.play(chimes, PLAY_ASYNCHRONOUS); GOTO_SCREEN(StatusScreen);break;
|
||||
#ifdef MAIN_MENU_ITEM_8_DESC
|
||||
case _ITEM_TAG(18): _lcd_custom_menu_gcode<ENABLED(MAIN_MENU_ITEM_8_IMMEDIATE)>(F(MAIN_MENU_ITEM_8_GCODE)); break;
|
||||
#endif
|
||||
|
||||
case 1: GOTO_PREVIOUS(); break;
|
||||
#ifdef PARKING_COMMAND_GCODE
|
||||
case 20: injectCommands(F(PARKING_COMMAND_GCODE)); break;
|
||||
|
||||
@@ -94,10 +94,12 @@ void EndstopStatesScreen::onRedraw(draw_mode_t) {
|
||||
#else
|
||||
PIN_DISABLED(3, 4, GET_TEXT_F(MSG_RUNOUT_2), FIL_RUNOUT2)
|
||||
#endif
|
||||
#if PIN_EXISTS(Z_MIN_PROBE)
|
||||
PIN_ENABLED (5, 4, PSTR(STR_Z_PROBE), Z_MIN_PROBE, Z_MIN_PROBE_ENDSTOP_HIT_STATE)
|
||||
#else
|
||||
PIN_DISABLED(5, 4, PSTR(STR_Z_PROBE), Z_MIN_PROBE)
|
||||
#if HAS_BED_PROBE
|
||||
#if PIN_EXISTS(Z_MIN_PROBE)
|
||||
PIN_ENABLED (5, 4, PSTR(STR_Z_PROBE), Z_MIN_PROBE, Z_MIN_PROBE_ENDSTOP_HIT_STATE)
|
||||
#else
|
||||
PIN_DISABLED(5, 4, PSTR(STR_Z_PROBE), Z_MIN_PROBE)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_SOFTWARE_ENDSTOPS
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "draw_set.h"
|
||||
#include "lv_conf.h"
|
||||
#include "draw_ui.h"
|
||||
#include "../../../gcode/gcode.h"
|
||||
#include "../../../gcode/queue.h"
|
||||
|
||||
extern lv_group_t * g;
|
||||
@@ -62,22 +63,22 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
|
||||
switch (obj->mks_obj_id) {
|
||||
case ID_GCODE: lv_clear_more(); lv_draw_gcode(true); break;
|
||||
#if HAS_USER_ITEM(1)
|
||||
case ID_CUSTOM_1: queue.inject(F(MAIN_MENU_ITEM_1_GCODE)); break;
|
||||
case ID_CUSTOM_1: TERN(CONFIG_MENU_ITEM_1_IMMEDIATE, gcode.process_subcommands_now, queue.inject)(F(MAIN_MENU_ITEM_1_GCODE)); break;
|
||||
#endif
|
||||
#if HAS_USER_ITEM(2)
|
||||
case ID_CUSTOM_2: queue.inject(F(MAIN_MENU_ITEM_2_GCODE)); break;
|
||||
case ID_CUSTOM_2: TERN(CONFIG_MENU_ITEM_2_IMMEDIATE, gcode.process_subcommands_now, queue.inject)(F(MAIN_MENU_ITEM_2_GCODE)); break;
|
||||
#endif
|
||||
#if HAS_USER_ITEM(3)
|
||||
case ID_CUSTOM_3: queue.inject(F(MAIN_MENU_ITEM_3_GCODE)); break;
|
||||
case ID_CUSTOM_3: TERN(CONFIG_MENU_ITEM_3_IMMEDIATE, gcode.process_subcommands_now, queue.inject)(F(MAIN_MENU_ITEM_3_GCODE)); break;
|
||||
#endif
|
||||
#if HAS_USER_ITEM(4)
|
||||
case ID_CUSTOM_4: queue.inject(F(MAIN_MENU_ITEM_4_GCODE)); break;
|
||||
case ID_CUSTOM_4: TERN(CONFIG_MENU_ITEM_4_IMMEDIATE, gcode.process_subcommands_now, queue.inject)(F(MAIN_MENU_ITEM_4_GCODE)); break;
|
||||
#endif
|
||||
#if HAS_USER_ITEM(5)
|
||||
case ID_CUSTOM_5: queue.inject(F(MAIN_MENU_ITEM_5_GCODE)); break;
|
||||
case ID_CUSTOM_5: TERN(CONFIG_MENU_ITEM_5_IMMEDIATE, gcode.process_subcommands_now, queue.inject)(F(MAIN_MENU_ITEM_5_GCODE)); break;
|
||||
#endif
|
||||
#if HAS_USER_ITEM(6)
|
||||
case ID_CUSTOM_6: queue.inject(F(MAIN_MENU_ITEM_6_GCODE)); break;
|
||||
case ID_CUSTOM_6: TERN(CONFIG_MENU_ITEM_6_IMMEDIATE, gcode.process_subcommands_now, queue.inject)(F(MAIN_MENU_ITEM_6_GCODE)); break;
|
||||
#endif
|
||||
case ID_M_RETURN:
|
||||
lv_clear_more();
|
||||
|
||||
@@ -132,6 +132,8 @@ namespace ExtUI {
|
||||
inline void injectCommands(FSTR_P const fstr) { injectCommands_P(FTOP(fstr)); }
|
||||
void injectCommands(char * const);
|
||||
bool commandsInQueue();
|
||||
inline void executeCommands(FSTR_P const fstr) { gcode.process_subcommands_now(fstr); }
|
||||
inline void executeCommands(char * const cstr) { gcode.process_subcommands_now(cstr); }
|
||||
|
||||
#if ENABLED(HOST_KEEPALIVE_FEATURE)
|
||||
GcodeSuite::MarlinBusyState getHostKeepaliveState();
|
||||
|
||||
@@ -269,3 +269,7 @@ inline void clear_menu_history() { screen_history_depth = 0; }
|
||||
#if ANY(PROBE_MANUALLY, MESH_BED_LEVELING, X_AXIS_TWIST_COMPENSATION)
|
||||
extern uint8_t manual_probe_index;
|
||||
#endif
|
||||
|
||||
#if ANY(CUSTOM_MENU_MAIN, CUSTOM_MENU_CONFIG)
|
||||
template<bool> void _lcd_custom_menu_gcode(FSTR_P const fstr);
|
||||
#endif
|
||||
|
||||
@@ -464,12 +464,6 @@ void menu_advanced_settings();
|
||||
|
||||
#if ENABLED(CUSTOM_MENU_CONFIG)
|
||||
|
||||
void _lcd_custom_menus_configuration_gcode(FSTR_P const fstr) {
|
||||
queue.inject(fstr);
|
||||
TERN_(CUSTOM_MENU_CONFIG_SCRIPT_AUDIBLE_FEEDBACK, ui.completion_feedback());
|
||||
TERN_(CUSTOM_MENU_CONFIG_SCRIPT_RETURN, ui.return_to_status());
|
||||
}
|
||||
|
||||
void custom_menus_configuration() {
|
||||
START_MENU();
|
||||
BACK_ITEM(MSG_MAIN_MENU);
|
||||
@@ -481,7 +475,7 @@ void menu_advanced_settings();
|
||||
#else
|
||||
#define _DONE_SCRIPT ""
|
||||
#endif
|
||||
#define GCODE_LAMBDA_CONF(N) []{ _lcd_custom_menus_configuration_gcode(F(CONFIG_MENU_ITEM_##N##_GCODE _DONE_SCRIPT)); }
|
||||
#define GCODE_LAMBDA_CONF(N) []{ _lcd_custom_menu_gcode<ENABLED(CONFIG_MENU_ITEM_##N##_IMMEDIATE)>(F(CONFIG_MENU_ITEM_##N##_GCODE _DONE_SCRIPT)); }
|
||||
#define _CUSTOM_ITEM_CONF(N) ACTION_ITEM_F(F(CONFIG_MENU_ITEM_##N##_DESC), GCODE_LAMBDA_CONF(N));
|
||||
#define _CUSTOM_ITEM_CONF_CONFIRM(N) \
|
||||
SUBMENU_F(F(CONFIG_MENU_ITEM_##N##_DESC), []{ \
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
|
||||
#include "menu.h"
|
||||
#include "../marlinui.h"
|
||||
#include "../../gcode/gcode.h" // for process_subcommands_now
|
||||
#include "../../gcode/queue.h" // for inject
|
||||
|
||||
#include "../../inc/MarlinConfigPre.h"
|
||||
@@ -70,6 +71,12 @@ class MenuItem_gcode : public MenuItem_button {
|
||||
static void action(FSTR_P const fstr, const uint8_t, FSTR_P const fgcode) { action(fstr, fgcode); }
|
||||
};
|
||||
|
||||
class MenuItem_command : public MenuItem_gcode {
|
||||
public:
|
||||
static void action(FSTR_P const, FSTR_P const fgcode) { gcode.process_subcommands_now(fgcode); }
|
||||
static void action(FSTR_P const fstr, const uint8_t, FSTR_P const fgcode) { action(fstr, fgcode); }
|
||||
};
|
||||
|
||||
////////////////////////////////////////////
|
||||
///////////// Edit Menu Items //////////////
|
||||
////////////////////////////////////////////
|
||||
@@ -479,6 +486,15 @@ class MenuItem_bool : public MenuEditItemBase {
|
||||
#define GCODES_ITEM_F(FLABEL, GCODES) MENU_ITEM_F(gcode, FLABEL, GCODES)
|
||||
#define GCODES_ITEM(LABEL, GCODES) GCODES_ITEM_F(GET_TEXT_F(LABEL), GCODES)
|
||||
|
||||
#define COMMAND_ITEM_N_S_F(N, S, FLABEL, GCODES) MENU_ITEM_N_S_F(command, N, S, FLABEL, GCODES)
|
||||
#define COMMAND_ITEM_N_S(N, S, LABEL, GCODES) COMMAND_ITEM_N_S_F(N, S, GET_TEXT_F(LABEL), GCODES)
|
||||
#define COMMAND_ITEM_S_F(S, FLABEL, GCODES) MENU_ITEM_S_F(command, S, FLABEL, GCODES)
|
||||
#define COMMAND_ITEM_S(S, LABEL, GCODES) COMMAND_ITEM_S_F(S, GET_TEXT_F(LABEL), GCODES)
|
||||
#define COMMAND_ITEM_N_F(N, FLABEL, GCODES) MENU_ITEM_N_F(command, N, FLABEL, GCODES)
|
||||
#define COMMAND_ITEM_N(N, LABEL, GCODES) COMMAND_ITEM_N_F(N, GET_TEXT_F(LABEL), GCODES)
|
||||
#define COMMAND_ITEM_F(FLABEL, GCODES) MENU_ITEM_F(command, FLABEL, GCODES)
|
||||
#define COMMAND_ITEM(LABEL, GCODES) COMMAND_ITEM_F(GET_TEXT_F(LABEL), GCODES)
|
||||
|
||||
#define SUBMENU_N_S_F(N, S, FLABEL, DEST) MENU_ITEM_N_S_F(submenu, N, S, FLABEL, DEST)
|
||||
#define SUBMENU_N_S(N, S, LABEL, DEST) SUBMENU_N_S_F(N, S, GET_TEXT_F(LABEL), DEST)
|
||||
#define SUBMENU_S_F(S, FLABEL, DEST) MENU_ITEM_S_F(submenu, S, FLABEL, DEST)
|
||||
|
||||
@@ -116,13 +116,24 @@ void menu_configuration();
|
||||
void menu_language();
|
||||
#endif
|
||||
|
||||
#if ENABLED(CUSTOM_MENU_MAIN)
|
||||
#if ANY(CUSTOM_MENU_MAIN, CUSTOM_MENU_CONFIG)
|
||||
|
||||
void _lcd_custom_menu_main_gcode(FSTR_P const fstr) {
|
||||
queue.inject(fstr);
|
||||
FORCE_INLINE void _lcd_custom_menu_gcode_done() {
|
||||
TERN_(CUSTOM_MENU_MAIN_SCRIPT_AUDIBLE_FEEDBACK, ui.completion_feedback());
|
||||
TERN_(CUSTOM_MENU_MAIN_SCRIPT_RETURN, ui.return_to_status());
|
||||
}
|
||||
template<> void _lcd_custom_menu_gcode<true>(FSTR_P const fstr) {
|
||||
gcode.process_subcommands_now(fstr);
|
||||
_lcd_custom_menu_gcode_done();
|
||||
}
|
||||
template<> void _lcd_custom_menu_gcode<false>(FSTR_P const fstr) {
|
||||
queue.inject(fstr);
|
||||
_lcd_custom_menu_gcode_done();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#if ENABLED(CUSTOM_MENU_MAIN)
|
||||
|
||||
void custom_menus_main() {
|
||||
START_MENU();
|
||||
@@ -135,7 +146,7 @@ void menu_configuration();
|
||||
#else
|
||||
#define _DONE_SCRIPT ""
|
||||
#endif
|
||||
#define GCODE_LAMBDA_MAIN(N) []{ _lcd_custom_menu_main_gcode(F(MAIN_MENU_ITEM_##N##_GCODE _DONE_SCRIPT)); }
|
||||
#define GCODE_LAMBDA_MAIN(N) []{ _lcd_custom_menu_gcode<ENABLED(MAIN_MENU_ITEM_##N##_IMMEDIATE)>(F(MAIN_MENU_ITEM_##N##_GCODE _DONE_SCRIPT)); }
|
||||
#define _CUSTOM_ITEM_MAIN(N) ACTION_ITEM_F(F(MAIN_MENU_ITEM_##N##_DESC), GCODE_LAMBDA_MAIN(N));
|
||||
#define _CUSTOM_ITEM_MAIN_CONFIRM(N) \
|
||||
SUBMENU_F(F(MAIN_MENU_ITEM_##N##_DESC), []{ \
|
||||
|
||||
@@ -15,10 +15,12 @@ opt_enable SDSUPPORT EMERGENCY_PARSER
|
||||
exec_test $1 $2 "BigTreeTech SKR E3 DIP v1.0 - Basic Configuration" "$3"
|
||||
|
||||
restore_configs
|
||||
opt_set MOTHERBOARD BOARD_BTT_SKR_CR6 SERIAL_PORT -1 SERIAL_PORT_2 2 TEMP_SENSOR_BED 1
|
||||
opt_set MOTHERBOARD BOARD_BTT_SKR_CR6 SERIAL_PORT -1 SERIAL_PORT_2 2 TEMP_SENSOR_BED 1 BUTTON1_PIN PA12
|
||||
opt_enable CR10_STOCKDISPLAY SDSUPPORT EMERGENCY_PARSER FAN_SOFT_PWM \
|
||||
NOZZLE_AS_PROBE Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN Z_SAFE_HOMING \
|
||||
PROBE_ACTIVATION_SWITCH PROBE_TARE PROBE_TARE_ONLY_WHILE_INACTIVE \
|
||||
PROBING_HEATERS_OFF PREHEAT_BEFORE_PROBING
|
||||
PROBING_HEATERS_OFF PREHEAT_BEFORE_PROBING CUSTOM_USER_BUTTONS BUTTON1_IMMEDIATE \
|
||||
CUSTOM_MENU_MAIN MAIN_MENU_ITEM_1_CONFIRM MAIN_MENU_ITEM_2_IMMEDIATE MAIN_MENU_ITEM_3_DESC MAIN_MENU_ITEM_3_GCODE \
|
||||
CUSTOM_MENU_CONFIG CONFIG_MENU_ITEM_1_CONFIRM CONFIG_MENU_ITEM_2_IMMEDIATE CONFIG_MENU_ITEM_3_DESC CONFIG_MENU_ITEM_3_GCODE
|
||||
opt_disable NOZZLE_TO_PROBE_OFFSET
|
||||
exec_test $1 $2 "BigTreeTech SKR CR6 PROBE_ACTIVATION_SWITCH, Probe Tare" "$3"
|
||||
|
||||
Reference in New Issue
Block a user