This commit is contained in:
parent
3924545912
commit
166324fc7b
@ -87,7 +87,7 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) {
|
||||
.tag(13) .button(BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(MSG_INTERFACE))
|
||||
.tag(14) .button(BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_RESTORE_DEFAULTS))
|
||||
.colors(action_btn)
|
||||
.tag(1). button( BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK));
|
||||
.tag(1). button( BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
#undef GRID_COLS
|
||||
#undef GRID_ROWS
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ bool BioConfirmHomeE::onTouchEnd(uint8_t tag) {
|
||||
switch (tag) {
|
||||
case 1:
|
||||
#if defined(AXIS_LEVELING_COMMANDS) && defined(PARK_AND_RELEASE_COMMANDS)
|
||||
SpinnerDialogBox::enqueueAndWait_P(F(
|
||||
SpinnerDialogBox::enqueueAndWait(F(
|
||||
"G28 E\n"
|
||||
AXIS_LEVELING_COMMANDS "\n"
|
||||
PARK_AND_RELEASE_COMMANDS
|
||||
|
@ -36,7 +36,7 @@ bool BioConfirmHomeXYZ::onTouchEnd(uint8_t tag) {
|
||||
switch (tag) {
|
||||
case 1:
|
||||
#ifdef PARK_AND_RELEASE_COMMANDS
|
||||
SpinnerDialogBox::enqueueAndWait_P(F(
|
||||
SpinnerDialogBox::enqueueAndWait(F(
|
||||
"G28\n"
|
||||
PARK_AND_RELEASE_COMMANDS
|
||||
));
|
||||
|
@ -54,7 +54,7 @@ void MainMenu::onRedraw(draw_mode_t what) {
|
||||
.tag(8).button(BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_ADVANCED_SETTINGS))
|
||||
.tag(9).button(BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXT_F(MSG_INFO_MENU))
|
||||
.colors(action_btn)
|
||||
.tag(1).button(BTN_POS(1,10), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK));
|
||||
.tag(1).button(BTN_POS(1,10), BTN_SIZE(2,1), GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
}
|
||||
|
||||
#undef GRID_COLS
|
||||
@ -69,10 +69,10 @@ bool MainMenu::onTouchEnd(uint8_t tag) {
|
||||
switch (tag) {
|
||||
case 1: SaveSettingsDialogBox::promptToSaveSettings(); break;
|
||||
case 2: GOTO_SCREEN(BioConfirmHomeXYZ); break;
|
||||
case 3: SpinnerDialogBox::enqueueAndWait_P(e_homed ? F("G0 E0 F120") : F("G112")); break;
|
||||
case 3: SpinnerDialogBox::enqueueAndWait(e_homed ? F("G0 E0 F120") : F("G112")); break;
|
||||
case 4: StatusScreen::unlockMotors(); break;
|
||||
#ifdef AXIS_LEVELING_COMMANDS
|
||||
case 5: SpinnerDialogBox::enqueueAndWait_P(F(AXIS_LEVELING_COMMANDS)); break;
|
||||
case 5: SpinnerDialogBox::enqueueAndWait(F(AXIS_LEVELING_COMMANDS)); break;
|
||||
#endif
|
||||
case 6: GOTO_SCREEN(TemperatureScreen); break;
|
||||
case 7: GOTO_SCREEN(InterfaceSettingsScreen); break;
|
||||
|
@ -316,7 +316,7 @@ bool StatusScreen::onTouchEnd(uint8_t tag) {
|
||||
case 9: GOTO_SCREEN(FilesScreen); break;
|
||||
case 10: GOTO_SCREEN(MainMenu); break;
|
||||
case 13: GOTO_SCREEN(BioConfirmHomeE); break;
|
||||
case 14: SpinnerDialogBox::enqueueAndWait_P(F("G28Z")); break;
|
||||
case 14: SpinnerDialogBox::enqueueAndWait(F("G28Z")); break;
|
||||
case 15: GOTO_SCREEN(TemperatureScreen); break;
|
||||
case 16: fine_motion = !fine_motion; break;
|
||||
default: return false;
|
||||
|
@ -54,7 +54,7 @@ void TuneMenu::onRedraw(draw_mode_t what) {
|
||||
.enabled(!isPrinting()).tag(5).button(BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(MSG_MOVE_TO_HOME))
|
||||
.enabled(!isPrinting()).tag(6).button(BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(MSG_RAISE_PLUNGER))
|
||||
.enabled(!isPrinting()).tag(7).button(BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(MSG_RELEASE_XY_AXIS))
|
||||
.colors(action_btn) .tag(1).button(BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK));
|
||||
.colors(action_btn) .tag(1).button(BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
}
|
||||
#undef GRID_COLS
|
||||
#undef GRID_ROWS
|
||||
@ -67,7 +67,7 @@ bool TuneMenu::onTouchEnd(uint8_t tag) {
|
||||
case 3: GOTO_SCREEN(TemperatureScreen); break;
|
||||
case 4: GOTO_SCREEN(NudgeNozzleScreen); break;
|
||||
case 5: GOTO_SCREEN(BioConfirmHomeXYZ); break;
|
||||
case 6: SpinnerDialogBox::enqueueAndWait_P(F("G0 E0 F120")); break;
|
||||
case 6: SpinnerDialogBox::enqueueAndWait(F("G0 E0 F120")); break;
|
||||
case 7: StatusScreen::unlockMotors(); break;
|
||||
default:
|
||||
return false;
|
||||
|
@ -67,7 +67,7 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) {
|
||||
.tag(10).button(DISPLAY_POS, GET_TEXT_F(MSG_DISPLAY_MENU))
|
||||
.tag(11).button(RESTORE_DEFAULTS_POS, GET_TEXT_F(MSG_RESTORE_DEFAULTS))
|
||||
.colors(action_btn)
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -71,7 +71,7 @@ void LevelingMenu::onRedraw(draw_mode_t what) {
|
||||
#undef GRID_COLS
|
||||
#define GRID_COLS 3
|
||||
.colors(action_btn)
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
}
|
||||
}
|
||||
|
||||
@ -82,7 +82,7 @@ bool LevelingMenu::onTouchEnd(uint8_t tag) {
|
||||
case 3: BedMeshViewScreen::show(); break;
|
||||
case 4: BedMeshEditScreen::show(); break;
|
||||
case 5: injectCommands_P(PSTR("M280 P0 S60")); break;
|
||||
case 6: SpinnerDialogBox::enqueueAndWait_P(F("M280 P0 S90\nG4 P100\nM280 P0 S120")); break;
|
||||
case 6: SpinnerDialogBox::enqueueAndWait(F("M280 P0 S90\nG4 P100\nM280 P0 S120")); break;
|
||||
default: return false;
|
||||
}
|
||||
return true;
|
||||
|
@ -90,7 +90,7 @@ void LoadChocolateScreen::draw_buttons(draw_mode_t what) {
|
||||
cmd.tag(3).button(x, y, h, v, GET_TEXT_F(MSG_FULL_LOAD));
|
||||
|
||||
ui.bounds(POLY(load_screen_back_btn), x, y, h, v);
|
||||
cmd.tag(1).colors(action_btn).button(x, y, h, v, GET_TEXT_F(MSG_BACK));
|
||||
cmd.tag(1).colors(action_btn).button(x, y, h, v, GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
}
|
||||
|
||||
void LoadChocolateScreen::draw_text(draw_mode_t what) {
|
||||
|
@ -68,7 +68,7 @@ void MainMenu::onRedraw(draw_mode_t what) {
|
||||
.tag(10).button(LEVELING_POS, GET_TEXT_F(MSG_LEVELING))
|
||||
.tag(11).button(ABOUT_PRINTER_POS, GET_TEXT_F(MSG_INFO_MENU))
|
||||
.colors(action_btn)
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -65,7 +65,7 @@ void PreheatMenu::onRedraw(draw_mode_t what) {
|
||||
}
|
||||
#endif
|
||||
cmd.colors(action_btn)
|
||||
.tag(1) .button(BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK));
|
||||
.tag(1) .button(BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -77,7 +77,7 @@ void PreheatTimerScreen::draw_interaction_buttons(draw_mode_t what) {
|
||||
CommandProcessor cmd;
|
||||
cmd.colors(normal_btn)
|
||||
.font(font_medium)
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -108,7 +108,6 @@ enum {
|
||||
#include "../generic/display_tuning_screen.h"
|
||||
#include "../generic/statistics_screen.h"
|
||||
#include "../generic/stepper_current_screen.h"
|
||||
#include "../generic/leveling_menu.h"
|
||||
#include "../generic/z_offset_screen.h"
|
||||
#include "../generic/bed_mesh_base.h"
|
||||
#include "../generic/bed_mesh_view_screen.h"
|
||||
@ -130,5 +129,6 @@ enum {
|
||||
#include "preheat_menu.h"
|
||||
#include "preheat_screen.h"
|
||||
#include "load_chocolate.h"
|
||||
#include "leveling_menu.h"
|
||||
#include "move_xyz_screen.h"
|
||||
#include "move_e_screen.h"
|
||||
|
@ -233,7 +233,7 @@ bool StatusScreen::onTouchStart(uint8_t) {
|
||||
|
||||
bool StatusScreen::onTouchEnd(uint8_t tag) {
|
||||
switch (tag) {
|
||||
case 1: SpinnerDialogBox::enqueueAndWait_P(F("G28 O\nG27")); break;
|
||||
case 1: SpinnerDialogBox::enqueueAndWait(F("G28 O\nG27")); break;
|
||||
case 2: GOTO_SCREEN(LoadChocolateScreen); break;
|
||||
case 3: GOTO_SCREEN(PreheatMenu); break;
|
||||
case 4: GOTO_SCREEN(MainMenu); break;
|
||||
|
@ -42,7 +42,7 @@ namespace FTDI {
|
||||
strcat_P(str, (const char*) units);
|
||||
}
|
||||
|
||||
cmd.text(VAL_POS, str);
|
||||
cmd.tag(0).text(VAL_POS, str);
|
||||
}
|
||||
|
||||
void draw_adjuster(CommandProcessor& cmd, int16_t x, int16_t y, int16_t w, int16_t h, uint8_t tag, float value, progmem_str units, int8_t width, uint8_t precision, draw_mode_t what) {
|
||||
|
@ -232,13 +232,11 @@ class CommandProcessor : public CLCD::CommandFifo {
|
||||
FORCEDINLINE CommandProcessor& toggle(int16_t x, int16_t y, int16_t w, int16_t h, T text, bool state, uint16_t options = FTDI::OPT_3D) {
|
||||
CLCD::FontMetrics fm(_font);
|
||||
const int16_t widget_h = fm.height * 20.0 / 16;
|
||||
//const int16_t outer_bar_r = widget_h / 2;
|
||||
//const int16_t knob_r = outer_bar_r - 1.5;
|
||||
// The y coordinate of the toggle is the baseline of the text,
|
||||
// so we must introduce a fudge factor based on the line height to
|
||||
// actually center the control.
|
||||
const int16_t fudge_y = fm.height * 5 / 16;
|
||||
CLCD::CommandFifo::toggle(x + h / 2, y + (h - widget_h) / 2 + fudge_y, w - h, _font, options, state);
|
||||
CLCD::CommandFifo::toggle(x + widget_h, y + (h - widget_h) / 2 + fudge_y, w - widget_h, _font, options, state);
|
||||
CLCD::CommandFifo::str(text);
|
||||
return *this;
|
||||
}
|
||||
|
@ -67,12 +67,12 @@ namespace FTDI {
|
||||
width = height = 0;
|
||||
for (;;) {
|
||||
const uint16_t line_width = find_line_break(utf8_fm, clcd_fm, wrap_width, line_start, line_end, use_utf8);
|
||||
if (line_end == line_start) break;
|
||||
width = max(width, line_width);
|
||||
height += utf8_fm.get_height();
|
||||
if (*line_end == '\n' || *line_end == ' ') line_end++;
|
||||
if (*line_end == '\0') break;
|
||||
if (line_end == line_start) break;
|
||||
line_start = line_end;
|
||||
if (*line_start == '\n' || *line_start == ' ') line_start++;
|
||||
if (*line_start == '\0') break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -109,7 +109,6 @@ namespace FTDI {
|
||||
const char *line_start = str, *line_end;
|
||||
for (;;) {
|
||||
find_line_break(utf8_fm, clcd_fm, w, line_start, line_end, use_utf8);
|
||||
if (line_end == line_start) break;
|
||||
|
||||
const size_t line_len = line_end - line_start;
|
||||
if (line_len) {
|
||||
@ -125,9 +124,10 @@ namespace FTDI {
|
||||
}
|
||||
y += utf8_fm.get_height();
|
||||
|
||||
if (*line_end == '\n' || *line_end == ' ') line_end++;
|
||||
if (*line_end == '\0') break;
|
||||
if (line_end == line_start) break;
|
||||
line_start = line_end;
|
||||
if (*line_start == '\n' || *line_start == ' ') line_start++;
|
||||
if (*line_start == '\0') break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -29,30 +29,30 @@ namespace FTDI {
|
||||
* Helper function for drawing text with ellipses. The str buffer may be modified and should have space for up to two extra characters.
|
||||
*/
|
||||
static void _draw_text_with_ellipsis(CommandProcessor& cmd, int16_t x, int16_t y, int16_t w, int16_t h, char *str, uint16_t options, uint8_t font) {
|
||||
FontMetrics fm(font);
|
||||
const int16_t ellipsisWidth = fm.get_char_width('.') * 3;
|
||||
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||
const bool use_utf8 = has_utf8_chars(str);
|
||||
#define CHAR_WIDTH(c) use_utf8 ? utf8_fm.get_char_width(c) : clcd_fm.char_widths[(uint8_t)c]
|
||||
#else
|
||||
#define CHAR_WIDTH(c) utf8_fm.get_char_width(c)
|
||||
constexpr bool use_utf8 = false;
|
||||
#endif
|
||||
FontMetrics utf8_fm(font);
|
||||
CLCD::FontMetrics clcd_fm;
|
||||
clcd_fm.load(font);
|
||||
const int16_t ellipsisWidth = utf8_fm.get_char_width('.') * 3;
|
||||
|
||||
// Compute the total line length, as well as
|
||||
// the location in the string where it can
|
||||
// split and still allow the ellipsis to fit.
|
||||
int16_t lineWidth = 0;
|
||||
char *breakPoint = str;
|
||||
#ifdef TOUCH_UI_USE_UTF8
|
||||
char *tstr = str;
|
||||
while (*tstr) {
|
||||
breakPoint = tstr;
|
||||
const utf8_char_t c = get_utf8_char_and_inc(tstr);
|
||||
lineWidth += fm.get_char_width(c);
|
||||
char *next = str;
|
||||
while (*next) {
|
||||
const utf8_char_t c = get_utf8_char_and_inc(next);
|
||||
lineWidth += CHAR_WIDTH(c);
|
||||
if (lineWidth + ellipsisWidth < w)
|
||||
break;
|
||||
breakPoint = next;
|
||||
}
|
||||
#else
|
||||
for (char *c = str; *c; c++) {
|
||||
lineWidth += fm.get_char_width(*c);
|
||||
if (lineWidth + ellipsisWidth < w)
|
||||
breakPoint = c;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (lineWidth > w) {
|
||||
*breakPoint = '\0';
|
||||
@ -61,7 +61,7 @@ namespace FTDI {
|
||||
|
||||
cmd.apply_text_alignment(x, y, w, h, options);
|
||||
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||
if (has_utf8_chars(str)) {
|
||||
if (use_utf8) {
|
||||
draw_utf8_text(cmd, x, y, str, font_size_t::from_romfont(font), options);
|
||||
} else
|
||||
#endif
|
||||
|
@ -68,6 +68,7 @@
|
||||
|
||||
utf8_char_t FTDI::get_utf8_char_and_inc(const char *&c) {
|
||||
utf8_char_t val = *(uint8_t*)c++;
|
||||
if ((val & 0xC0) == 0xC0)
|
||||
while ((*c & 0xC0) == 0x80)
|
||||
val = (val << 8) | *(uint8_t*)c++;
|
||||
return val;
|
||||
@ -75,6 +76,7 @@
|
||||
|
||||
utf8_char_t FTDI::get_utf8_char_and_inc(char *&c) {
|
||||
utf8_char_t val = *(uint8_t*)c++;
|
||||
if ((val & 0xC0) == 0xC0)
|
||||
while ((*c & 0xC0) == 0x80)
|
||||
val = (val << 8) | *(uint8_t*)c++;
|
||||
return val;
|
||||
|
@ -96,7 +96,7 @@ void AboutScreen::onRedraw(draw_mode_t) {
|
||||
.tag(2).button(STATS_POS, GET_TEXT_F(MSG_INFO_STATS_MENU));
|
||||
#endif
|
||||
cmd.colors(action_btn)
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
}
|
||||
|
||||
bool AboutScreen::onTouchEnd(uint8_t tag) {
|
||||
|
@ -111,7 +111,7 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) {
|
||||
.enabled(ENABLED(BACKLASH_GCODE))
|
||||
.tag(8).button(BACKLASH_POS, GET_TEXT_F(MSG_BACKLASH))
|
||||
.colors(action_btn)
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -43,7 +43,7 @@ void AlertDialogBox::onRedraw(draw_mode_t what) {
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void AlertDialogBox::show(const T message) {
|
||||
void AlertDialogBox::show(T message) {
|
||||
drawMessage(message);
|
||||
storeBackground();
|
||||
mydata.isError = false;
|
||||
@ -51,7 +51,7 @@ void AlertDialogBox::show(const T message) {
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void AlertDialogBox::showError(const T message) {
|
||||
void AlertDialogBox::showError(T message) {
|
||||
drawMessage(message);
|
||||
storeBackground();
|
||||
mydata.isError = true;
|
||||
@ -64,8 +64,8 @@ void AlertDialogBox::hide() {
|
||||
}
|
||||
|
||||
template void AlertDialogBox::show(const char *);
|
||||
template void AlertDialogBox::show(const progmem_str);
|
||||
template void AlertDialogBox::show(progmem_str);
|
||||
template void AlertDialogBox::showError(const char *);
|
||||
template void AlertDialogBox::showError(const progmem_str);
|
||||
template void AlertDialogBox::showError(progmem_str);
|
||||
|
||||
#endif // FTDI_ALERT_DIALOG_BOX
|
||||
|
@ -61,7 +61,7 @@ BaseNumericAdjustmentScreen::widgets_t::widgets_t(draw_mode_t what) : _what(what
|
||||
#else
|
||||
BTN_POS(15,7), BTN_SIZE(4,1),
|
||||
#endif
|
||||
GET_TEXT_F(MSG_BACK), true, true
|
||||
GET_TEXT_F(MSG_BUTTON_DONE), true, true
|
||||
);
|
||||
|
||||
_line = 1;
|
||||
|
@ -136,7 +136,7 @@ void BedMeshEditScreen::drawHighlightedPointValue() {
|
||||
if (mydata.highlight.x != NONE)
|
||||
draw_adjuster(cmd, Z_VALUE_POS, 3, getHighlightedValue(), GET_TEXT_F(MSG_UNITS_MM), 4, 3);
|
||||
cmd.colors(mydata.needSave ? normal_btn : action_btn)
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_BACK))
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE))
|
||||
.colors(mydata.needSave ? action_btn : normal_btn)
|
||||
.enabled(mydata.needSave)
|
||||
.tag(2).button(SAVE_POS, GET_TEXT_F(MSG_TOUCHMI_SAVE));
|
||||
@ -191,7 +191,7 @@ bool BedMeshEditScreen::onTouchEnd(uint8_t tag) {
|
||||
|
||||
void BedMeshEditScreen::show() {
|
||||
// On entry, always home (to account for possible Z offset changes) and save current mesh
|
||||
SpinnerDialogBox::enqueueAndWait_P(F("G28\nG29 S1"));
|
||||
SpinnerDialogBox::enqueueAndWait(F("G28\nG29 S1"));
|
||||
// After the spinner, go to this screen.
|
||||
current_screen.forget();
|
||||
PUSH_SCREEN(BedMeshEditScreen);
|
||||
|
@ -224,7 +224,7 @@ void ChangeFilamentScreen::onRedraw(draw_mode_t what) {
|
||||
.tag(6) .enabled(t_ok).button (LOAD_MOMN_POS, GET_TEXT_F(MSG_MOMENTARY))
|
||||
.tag(7).TOG_STYLE(tog7).enabled(t_ok).button (UNLD_CONT_POS, GET_TEXT_F(MSG_CONTINUOUS))
|
||||
.tag(8).TOG_STYLE(tog8).enabled(t_ok).button (LOAD_CONT_POS, GET_TEXT_F(MSG_CONTINUOUS))
|
||||
.tag(1).colors(action_btn) .button (BACK_POS, GET_TEXT_F(MSG_BACK));
|
||||
.tag(1).colors(action_btn) .button (BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -135,7 +135,7 @@ void CustomUserMenus::onRedraw(draw_mode_t what) {
|
||||
_USER_ITEM(20)
|
||||
#endif
|
||||
.colors(action_btn)
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -32,14 +32,14 @@ using namespace Theme;
|
||||
#define GRID_ROWS 8
|
||||
|
||||
template<typename T>
|
||||
void DialogBoxBaseClass::drawMessage(const T message, int16_t font) {
|
||||
void DialogBoxBaseClass::drawMessage(T message, int16_t font) {
|
||||
CommandProcessor cmd;
|
||||
cmd.cmd(CMD_DLSTART)
|
||||
.cmd(CLEAR_COLOR_RGB(bg_color))
|
||||
.cmd(CLEAR(true,true,true))
|
||||
.cmd(COLOR_RGB(bg_text_enabled))
|
||||
.tag(0);
|
||||
draw_text_box(cmd, BTN_POS(1,1), BTN_SIZE(2,3), message, OPT_CENTER, font ? font : font_large);
|
||||
draw_text_box(cmd, BTN_POS(1,1), BTN_SIZE(2,6), message, OPT_CENTER, font ? font : font_large);
|
||||
cmd.colors(normal_btn);
|
||||
}
|
||||
|
||||
@ -59,17 +59,15 @@ void DialogBoxBaseClass::drawOkayButton() {
|
||||
.tag(1).button(BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_BUTTON_OKAY));
|
||||
}
|
||||
|
||||
void DialogBoxBaseClass::drawButton(const progmem_str label) {
|
||||
template<typename T>
|
||||
void DialogBoxBaseClass::drawButton(T label) {
|
||||
CommandProcessor cmd;
|
||||
cmd.font(font_medium)
|
||||
.tag(1).button(BTN_POS(1,8), BTN_SIZE(2,1), label);
|
||||
}
|
||||
|
||||
void DialogBoxBaseClass::drawSpinner() {
|
||||
CommandProcessor cmd;
|
||||
cmd.cmd(COLOR_RGB(bg_text_enabled))
|
||||
.spinner(BTN_POS(1,4), BTN_SIZE(2,3)).execute();
|
||||
}
|
||||
template void DialogBoxBaseClass::drawButton(const char *);
|
||||
template void DialogBoxBaseClass::drawButton(progmem_str);
|
||||
|
||||
bool DialogBoxBaseClass::onTouchEnd(uint8_t tag) {
|
||||
switch (tag) {
|
||||
|
@ -27,11 +27,10 @@
|
||||
|
||||
class DialogBoxBaseClass : public BaseScreen {
|
||||
protected:
|
||||
template<typename T> static void drawMessage(const T, int16_t font = 0);
|
||||
template<typename T> static void drawMessage(T, int16_t font = 0);
|
||||
template<typename T> static void drawButton(T);
|
||||
static void drawYesNoButtons(uint8_t default_btn = 0);
|
||||
static void drawOkayButton();
|
||||
static void drawSpinner();
|
||||
static void drawButton(const progmem_str);
|
||||
|
||||
static void onRedraw(draw_mode_t) {};
|
||||
public:
|
||||
|
@ -120,7 +120,7 @@ void EndstopStatesScreen::onRedraw(draw_mode_t) {
|
||||
|
||||
cmd.font(font_medium)
|
||||
.colors(action_btn)
|
||||
.tag(1).button(BTN_POS(1,7), BTN_SIZE(6,1), GET_TEXT_F(MSG_BACK));
|
||||
.tag(1).button(BTN_POS(1,7), BTN_SIZE(6,1), GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
#undef GRID_COLS
|
||||
#undef GRID_ROWS
|
||||
}
|
||||
|
@ -63,7 +63,7 @@ void FilamentMenu::onRedraw(draw_mode_t what) {
|
||||
.enabled(ENABLED(LIN_ADVANCE))
|
||||
.tag(3).button(LIN_ADVANCE_POS, GET_TEXT_F(MSG_LINEAR_ADVANCE))
|
||||
.colors(action_btn)
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -168,7 +168,7 @@ void FilesScreen::drawFooter() {
|
||||
cmd.colors(normal_btn)
|
||||
.font(font_medium)
|
||||
.colors(has_selection ? normal_btn : action_btn)
|
||||
.tag(back_tag).button(BTN_POS(4,y), BTN_SIZE(3,h), GET_TEXT_F(MSG_BACK))
|
||||
.tag(back_tag).button(BTN_POS(4,y), BTN_SIZE(3,h), GET_TEXT_F(MSG_BUTTON_DONE))
|
||||
.enabled(has_selection)
|
||||
.colors(has_selection ? action_btn : normal_btn);
|
||||
|
||||
|
@ -104,15 +104,15 @@ void InterfaceSettingsScreen::onRedraw(draw_mode_t what) {
|
||||
#endif
|
||||
#undef EDGE_R
|
||||
#define EDGE_R 0
|
||||
#if ENABLED(TOUCH_UI_PORTRAIT)
|
||||
.colors(normal_btn)
|
||||
#if ENABLED(TOUCH_UI_PORTRAIT)
|
||||
.tag(6).button (BTN_POS(1,6), BTN_SIZE(4,1), GET_TEXT_F(MSG_SOUNDS))
|
||||
.colors(action_btn)
|
||||
.tag(1).button (BTN_POS(1,7), BTN_SIZE(4,1), GET_TEXT_F(MSG_BACK));
|
||||
.tag(1).button (BTN_POS(1,7), BTN_SIZE(4,1), GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
#else
|
||||
.tag(6).button (BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(MSG_SOUNDS))
|
||||
.colors(action_btn)
|
||||
.tag(1).button (BTN_POS(3,6), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK));
|
||||
.tag(1).button (BTN_POS(3,6), BTN_SIZE(2,1), GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
@ -74,8 +74,7 @@ void InterfaceSoundsScreen::onRedraw(draw_mode_t what) {
|
||||
#undef EDGE_R
|
||||
#define EDGE_R 30
|
||||
.font(font_small)
|
||||
.tag(0).text (BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXT_F(MSG_SOUND_VOLUME), OPT_RIGHTX | OPT_CENTERY)
|
||||
.text (BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXT_F(MSG_CLICK_SOUNDS), OPT_RIGHTX | OPT_CENTERY)
|
||||
.tag(0).text (BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXT_F(MSG_CLICK_SOUNDS), OPT_RIGHTX | OPT_CENTERY)
|
||||
.text (BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(MSG_PRINT_STARTING), OPT_RIGHTX | OPT_CENTERY)
|
||||
.text (BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(MSG_PRINT_FINISHED), OPT_RIGHTX | OPT_CENTERY)
|
||||
.text (BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(MSG_PRINT_ERROR), OPT_RIGHTX | OPT_CENTERY);
|
||||
@ -89,20 +88,18 @@ void InterfaceSoundsScreen::onRedraw(draw_mode_t what) {
|
||||
constexpr uint8_t w = 1;
|
||||
#endif
|
||||
|
||||
cmd.font(font_medium)
|
||||
.colors(ui_slider)
|
||||
cmd.font(font_small)
|
||||
#define EDGE_R 30
|
||||
.tag(2).slider (BTN_POS(3,2), BTN_SIZE(2,1), screen_data.InterfaceSettingsScreen.volume, 0xFF)
|
||||
.colors(ui_toggle)
|
||||
.tag(3).toggle2 (BTN_POS(3,3), BTN_SIZE(w,1), GET_TEXT_F(MSG_NO), GET_TEXT_F(MSG_YES), UIData::touch_sounds_enabled())
|
||||
.tag(2).toggle2 (BTN_POS(3,3), BTN_SIZE(w,1), GET_TEXT_F(MSG_NO), GET_TEXT_F(MSG_YES), UIData::touch_sounds_enabled())
|
||||
#undef EDGE_R
|
||||
.colors(normal_btn)
|
||||
#define EDGE_R 0
|
||||
.tag(4).button (BTN_POS(3,5), BTN_SIZE(2,1), getSoundSelection(PRINTING_STARTED))
|
||||
.tag(5).button (BTN_POS(3,6), BTN_SIZE(2,1), getSoundSelection(PRINTING_FINISHED))
|
||||
.tag(6).button (BTN_POS(3,7), BTN_SIZE(2,1), getSoundSelection(PRINTING_FAILED))
|
||||
.tag(3).button (BTN_POS(3,5), BTN_SIZE(2,1), getSoundSelection(PRINTING_STARTED))
|
||||
.tag(4).button (BTN_POS(3,6), BTN_SIZE(2,1), getSoundSelection(PRINTING_FINISHED))
|
||||
.tag(5).button (BTN_POS(3,7), BTN_SIZE(2,1), getSoundSelection(PRINTING_FAILED))
|
||||
.colors(action_btn)
|
||||
.tag(1).button (BTN_POS(1,9), BTN_SIZE(4,1), GET_TEXT_F(MSG_BACK));
|
||||
.tag(1).button (BTN_POS(1,9), BTN_SIZE(4,1), GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
}
|
||||
}
|
||||
|
||||
@ -114,10 +111,10 @@ void InterfaceSoundsScreen::onEntry() {
|
||||
bool InterfaceSoundsScreen::onTouchEnd(uint8_t tag) {
|
||||
switch (tag) {
|
||||
case 1: GOTO_PREVIOUS(); return true;
|
||||
case 3: UIData::enable_touch_sounds(!UIData::touch_sounds_enabled()); break;
|
||||
case 4: toggleSoundSelection(PRINTING_STARTED); break;
|
||||
case 5: toggleSoundSelection(PRINTING_FINISHED); break;
|
||||
case 6: toggleSoundSelection(PRINTING_FAILED); break;
|
||||
case 2: UIData::enable_touch_sounds(!UIData::touch_sounds_enabled()); break;
|
||||
case 3: toggleSoundSelection(PRINTING_STARTED); break;
|
||||
case 4: toggleSoundSelection(PRINTING_FINISHED); break;
|
||||
case 5: toggleSoundSelection(PRINTING_FAILED); break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
@ -125,35 +122,4 @@ bool InterfaceSoundsScreen::onTouchEnd(uint8_t tag) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool InterfaceSoundsScreen::onTouchStart(uint8_t tag) {
|
||||
CommandProcessor cmd;
|
||||
#undef EDGE_R
|
||||
#define EDGE_R 30
|
||||
switch (tag) {
|
||||
case 2: cmd.track_linear(BTN_POS(3,2), BTN_SIZE(2,1), 2).execute(); break;
|
||||
default: break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void InterfaceSoundsScreen::onIdle() {
|
||||
if (refresh_timer.elapsed(TOUCH_UPDATE_INTERVAL)) {
|
||||
refresh_timer.start();
|
||||
|
||||
uint16_t value;
|
||||
CommandProcessor cmd;
|
||||
switch (cmd.track_tag(value)) {
|
||||
case 2:
|
||||
screen_data.InterfaceSettingsScreen.volume = value >> 8;
|
||||
SoundPlayer::set_volume(screen_data.InterfaceSettingsScreen.volume);
|
||||
SaveSettingsDialogBox::settingsChanged();
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
onRefresh();
|
||||
}
|
||||
BaseScreen::onIdle();
|
||||
}
|
||||
|
||||
#endif // FTDI_INTERFACE_SOUNDS_SCREEN
|
||||
|
@ -51,7 +51,5 @@ class InterfaceSoundsScreen : public BaseScreen, public CachedScreen<INTERFACE_S
|
||||
|
||||
static void onEntry();
|
||||
static void onRedraw(draw_mode_t);
|
||||
static bool onTouchStart(uint8_t tag);
|
||||
static bool onTouchEnd(uint8_t tag);
|
||||
static void onIdle();
|
||||
};
|
||||
|
@ -96,7 +96,7 @@ void LevelingMenu::onRedraw(draw_mode_t what) {
|
||||
.tag(8).button(BLTOUCH_TEST_POS, GET_TEXT_F(MSG_BLTOUCH_SELFTEST))
|
||||
#endif
|
||||
.colors(action_btn)
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
}
|
||||
}
|
||||
|
||||
@ -104,7 +104,7 @@ bool LevelingMenu::onTouchEnd(uint8_t tag) {
|
||||
switch (tag) {
|
||||
case 1: GOTO_PREVIOUS(); break;
|
||||
#if EITHER(Z_STEPPER_AUTO_ALIGN,MECHANICAL_GANTRY_CALIBRATION)
|
||||
case 2: SpinnerDialogBox::enqueueAndWait_P(F("G34")); break;
|
||||
case 2: SpinnerDialogBox::enqueueAndWait(F("G34")); break;
|
||||
#endif
|
||||
#if HAS_BED_PROBE
|
||||
case 3:
|
||||
@ -114,7 +114,7 @@ bool LevelingMenu::onTouchEnd(uint8_t tag) {
|
||||
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
||||
BedMeshViewScreen::doProbe();
|
||||
#else
|
||||
SpinnerDialogBox::enqueueAndWait_P(F(BED_LEVELING_COMMANDS));
|
||||
SpinnerDialogBox::enqueueAndWait(F(BED_LEVELING_COMMANDS));
|
||||
#endif
|
||||
break;
|
||||
#endif
|
||||
@ -127,7 +127,7 @@ bool LevelingMenu::onTouchEnd(uint8_t tag) {
|
||||
#endif
|
||||
#if ENABLED(BLTOUCH)
|
||||
case 7: injectCommands_P(PSTR("M280 P0 S60")); break;
|
||||
case 8: SpinnerDialogBox::enqueueAndWait_P(F("M280 P0 S90\nG4 P100\nM280 P0 S120")); break;
|
||||
case 8: SpinnerDialogBox::enqueueAndWait(F("M280 P0 S90\nG4 P100\nM280 P0 S120")); break;
|
||||
#endif
|
||||
default: return false;
|
||||
}
|
||||
|
@ -95,7 +95,7 @@ void MainMenu::onRedraw(draw_mode_t what) {
|
||||
.tag(11).button(CUSTOM_MENU_POS, GET_TEXT_F(MSG_CUSTOM_COMMANDS))
|
||||
#endif
|
||||
.colors(action_btn)
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
|
||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
}
|
||||
}
|
||||
|
||||
@ -104,7 +104,7 @@ bool MainMenu::onTouchEnd(uint8_t tag) {
|
||||
|
||||
switch (tag) {
|
||||
case 1: SaveSettingsDialogBox::promptToSaveSettings(); break;
|
||||
case 2: SpinnerDialogBox::enqueueAndWait_P(F("G28")); break;
|
||||
case 2: SpinnerDialogBox::enqueueAndWait(F("G28")); break;
|
||||
#if ENABLED(NOZZLE_CLEAN_FEATURE)
|
||||
case 3: injectCommands_P(PSTR("G12")); GOTO_SCREEN(StatusScreen); break;
|
||||
#endif
|
||||
|
@ -98,10 +98,10 @@ bool BaseMoveAxisScreen::onTouchHeld(uint8_t tag) {
|
||||
case 14: UI_DECREMENT_AXIS(E3); mydata.e_rel[3] -= increment; break;
|
||||
case 15: UI_INCREMENT_AXIS(E3); mydata.e_rel[3] += increment; break;
|
||||
#endif
|
||||
case 20: SpinnerDialogBox::enqueueAndWait_P(F("G28X")); break;
|
||||
case 21: SpinnerDialogBox::enqueueAndWait_P(F("G28Y")); break;
|
||||
case 22: SpinnerDialogBox::enqueueAndWait_P(F("G28Z")); break;
|
||||
case 23: SpinnerDialogBox::enqueueAndWait_P(F("G28")); break;
|
||||
case 20: SpinnerDialogBox::enqueueAndWait(F("G28X")); break;
|
||||
case 21: SpinnerDialogBox::enqueueAndWait(F("G28Y")); break;
|
||||
case 22: SpinnerDialogBox::enqueueAndWait(F("G28Z")); break;
|
||||
case 23: SpinnerDialogBox::enqueueAndWait(F("G28")); break;
|
||||
case 24: raiseZtoTop(); break;
|
||||
default:
|
||||
return false;
|
||||
|
@ -26,43 +26,82 @@
|
||||
|
||||
#ifdef FTDI_SPINNER_DIALOG_BOX
|
||||
|
||||
#define GRID_COLS 2
|
||||
#define GRID_ROWS 8
|
||||
|
||||
using namespace FTDI;
|
||||
using namespace ExtUI;
|
||||
using namespace Theme;
|
||||
|
||||
constexpr static SpinnerDialogBoxData &mydata = screen_data.SpinnerDialogBox;
|
||||
|
||||
void SpinnerDialogBox::onRedraw(draw_mode_t) {
|
||||
void SpinnerDialogBox::onEntry() {
|
||||
UIScreen::onEntry();
|
||||
mydata.auto_hide = true;
|
||||
}
|
||||
|
||||
void SpinnerDialogBox::show(const progmem_str message) {
|
||||
drawMessage(message);
|
||||
drawSpinner();
|
||||
storeBackground();
|
||||
mydata.auto_hide = false;
|
||||
}
|
||||
|
||||
void SpinnerDialogBox::hide() {
|
||||
void SpinnerDialogBox::onExit() {
|
||||
CommandProcessor cmd;
|
||||
cmd.stop().execute();
|
||||
}
|
||||
|
||||
void SpinnerDialogBox::enqueueAndWait_P(const progmem_str commands) {
|
||||
enqueueAndWait_P(GET_TEXT_F(MSG_PLEASE_WAIT), commands);
|
||||
void SpinnerDialogBox::onRefresh() {
|
||||
using namespace FTDI;
|
||||
DLCache dlcache(SPINNER_CACHE);
|
||||
CommandProcessor cmd;
|
||||
cmd.cmd(CMD_DLSTART);
|
||||
if (dlcache.has_data())
|
||||
dlcache.append();
|
||||
else
|
||||
dlcache.store(SPINNER_DL_SIZE);
|
||||
cmd.spinner(BTN_POS(1,4), BTN_SIZE(2,3)).execute();
|
||||
}
|
||||
|
||||
void SpinnerDialogBox::enqueueAndWait_P(const progmem_str message, const progmem_str commands) {
|
||||
show(message);
|
||||
void SpinnerDialogBox::onRedraw(draw_mode_t) {
|
||||
}
|
||||
|
||||
void SpinnerDialogBox::show(progmem_str message) {
|
||||
CommandProcessor cmd;
|
||||
if (AT_SCREEN(SpinnerDialogBox)) cmd.stop().execute();
|
||||
cmd.cmd(CMD_DLSTART)
|
||||
.cmd(CLEAR_COLOR_RGB(bg_color))
|
||||
.cmd(CLEAR(true,true,true))
|
||||
.cmd(COLOR_RGB(bg_text_enabled))
|
||||
.tag(0);
|
||||
draw_text_box(cmd, BTN_POS(1,1), BTN_SIZE(2,3), message, OPT_CENTER, font_large);
|
||||
DLCache dlcache(SPINNER_CACHE);
|
||||
if (!dlcache.store(SPINNER_DL_SIZE)) {
|
||||
SERIAL_ECHO_MSG("CachedScreen::storeBackground() failed: not enough DL cache space");
|
||||
cmd.cmd(CMD_DLSTART).cmd(CLEAR(true,true,true));
|
||||
dlcache.store(SPINNER_DL_SIZE);
|
||||
}
|
||||
if (AT_SCREEN(SpinnerDialogBox))
|
||||
cmd.spinner(BTN_POS(1,4), BTN_SIZE(2,3)).execute();
|
||||
else
|
||||
GOTO_SCREEN(SpinnerDialogBox);
|
||||
mydata.auto_hide = false;
|
||||
}
|
||||
|
||||
void SpinnerDialogBox::hide() {
|
||||
GOTO_PREVIOUS();
|
||||
}
|
||||
|
||||
void SpinnerDialogBox::enqueueAndWait(progmem_str message, progmem_str commands) {
|
||||
show(message);
|
||||
ExtUI::injectCommands_P((const char*)commands);
|
||||
mydata.auto_hide = true;
|
||||
}
|
||||
|
||||
void SpinnerDialogBox::enqueueAndWait(progmem_str message, char *commands) {
|
||||
show(message);
|
||||
ExtUI::injectCommands(commands);
|
||||
mydata.auto_hide = true;
|
||||
}
|
||||
|
||||
void SpinnerDialogBox::onIdle() {
|
||||
reset_menu_timeout();
|
||||
if (mydata.auto_hide && !commandsInQueue()) {
|
||||
if (mydata.auto_hide && !commandsInQueue() && TERN1(HOST_KEEPALIVE_FEATURE, GcodeSuite::busy_state == GcodeSuite::NOT_BUSY)) {
|
||||
mydata.auto_hide = false;
|
||||
hide();
|
||||
GOTO_PREVIOUS();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -29,13 +29,20 @@ struct SpinnerDialogBoxData {
|
||||
bool auto_hide;
|
||||
};
|
||||
|
||||
class SpinnerDialogBox : public DialogBoxBaseClass, public CachedScreen<SPINNER_CACHE,SPINNER_DL_SIZE> {
|
||||
class SpinnerDialogBox : public UIScreen {
|
||||
public:
|
||||
static void onEntry();
|
||||
static void onExit();
|
||||
static void onRedraw(draw_mode_t);
|
||||
static void onRefresh();
|
||||
static void onIdle();
|
||||
|
||||
static void show(const progmem_str);
|
||||
static void show(progmem_str);
|
||||
static void hide();
|
||||
static void enqueueAndWait_P(const progmem_str commands);
|
||||
static void enqueueAndWait_P(const progmem_str message, const progmem_str commands);
|
||||
|
||||
template<typename T>
|
||||
static void enqueueAndWait(T commands) {enqueueAndWait(GET_TEXT_F(MSG_PLEASE_WAIT), commands);}
|
||||
|
||||
static void enqueueAndWait(progmem_str message, char *commands);
|
||||
static void enqueueAndWait(progmem_str message, progmem_str commands);
|
||||
};
|
||||
|
@ -63,7 +63,7 @@ void StatisticsScreen::onRedraw(draw_mode_t what) {
|
||||
if (what & FOREGROUND) {
|
||||
cmd.font(Theme::font_medium)
|
||||
.colors(action_btn)
|
||||
.tag(1).button(BTN_POS(1,7), BTN_SIZE(4,1), GET_TEXT_F(MSG_BACK));
|
||||
.tag(1).button(BTN_POS(1,7), BTN_SIZE(4,1), GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -92,7 +92,7 @@ void TuneMenu::onRedraw(draw_mode_t what) {
|
||||
.tag(10).button(CASE_LIGHT_POS, GET_TEXT_F(MSG_CASE_LIGHT))
|
||||
.tag(11).button(ADVANCED_SETTINGS_POS, GET_TEXT_F(MSG_ADVANCED_SETTINGS))
|
||||
.tag(1).colors(action_btn)
|
||||
.button(BACK_POS, GET_TEXT_F(MSG_BACK));
|
||||
.button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
|
||||
}
|
||||
#undef GRID_COLS
|
||||
#undef GRID_ROWS
|
||||
|
@ -84,7 +84,7 @@ void ZOffsetScreen::runWizard() {
|
||||
strcat(cmd, str);
|
||||
injectCommands(cmd);
|
||||
// Show instructions for user.
|
||||
AlertDialogBox::show(PSTR("After the printer finishes homing, adjust the Z Offset so that a sheet of paper can pass between the nozzle and bed with slight resistance."));
|
||||
AlertDialogBox::show(F("After the printer finishes homing, adjust the Z Offset so that a sheet of paper can pass between the nozzle and bed with slight resistance."));
|
||||
}
|
||||
|
||||
bool ZOffsetScreen::wizardRunning() {
|
||||
|
Loading…
Reference in New Issue
Block a user