LULZBOT_TOUCH_UI performance/cosmetic fixes (#15319)
This commit is contained in:
parent
6fc4d4c3b7
commit
bafcd084cc
|
@ -199,6 +199,9 @@ class CachedScreen {
|
|||
|
||||
public:
|
||||
static void onRefresh() {
|
||||
#if ENABLED(TOUCH_UI_DEBUG)
|
||||
const uint32_t start_time = millis();
|
||||
#endif
|
||||
using namespace FTDI;
|
||||
DLCache dlcache(DL_SLOT);
|
||||
CommandProcessor cmd;
|
||||
|
@ -220,5 +223,8 @@ class CachedScreen {
|
|||
cmd.cmd(DL::DL_DISPLAY);
|
||||
cmd.cmd(CMD_SWAP);
|
||||
cmd.execute();
|
||||
#if ENABLED(TOUCH_UI_DEBUG)
|
||||
SERIAL_ECHOLNPAIR("Time to draw screen (ms): ", millis() - start_time);
|
||||
#endif
|
||||
}
|
||||
};
|
||||
|
|
|
@ -197,7 +197,7 @@
|
|||
#else
|
||||
#define LULZBOT_BIOPRINTER_STRINGS ,\
|
||||
MAIN_MENU, \
|
||||
UNLOCK_XY_AXIS, \
|
||||
RELEASE_XY_AXIS, \
|
||||
LOAD_SYRINGE, \
|
||||
BED_TEMPERATURE, \
|
||||
LOADING_WARNING, \
|
||||
|
@ -302,7 +302,11 @@ namespace Language_en {
|
|||
PROGMEM Language_Str PLEASE_RESET = u8"Please reset";
|
||||
|
||||
PROGMEM Language_Str COLOR_TOUCH_PANEL = u8"Color Touch Panel";
|
||||
#if ENABLED(TOUCH_UI_UTF8_COPYRIGHT)
|
||||
PROGMEM Language_Str ABOUT_ALEPH_OBJECTS = u8"© 2019 Aleph Objects, Inc.\n\nwww.lulzbot.com";
|
||||
#else
|
||||
PROGMEM Language_Str ABOUT_ALEPH_OBJECTS = u8"(C) 2019 Aleph Objects, Inc.\n\nwww.lulzbot.com";
|
||||
#endif
|
||||
|
||||
PROGMEM Language_Str FIRMWARE_FOR_TOOLHEAD = u8"Firmware for toolhead:\n%s\n\n";
|
||||
|
||||
|
@ -327,10 +331,14 @@ namespace Language_en {
|
|||
PROGMEM Language_Str UNITS_MILLIAMP = u8"mA";
|
||||
PROGMEM Language_Str UNITS_MM = u8"mm";
|
||||
PROGMEM Language_Str UNITS_MM_S = u8"mm/s";
|
||||
#if ENABLED(TOUCH_UI_UTF8_WESTERN_CHARSET)
|
||||
PROGMEM Language_Str UNITS_MM_S2 = u8"mm/s²";
|
||||
#else
|
||||
PROGMEM Language_Str UNITS_MM_S2 = u8"mm/s^2";
|
||||
#endif
|
||||
PROGMEM Language_Str UNITS_STEP_MM = u8"st/mm";
|
||||
PROGMEM Language_Str UNITS_PERCENT = u8"%";
|
||||
#if defined(TOUCH_UI_USE_UTF8) && defined(TOUCH_UI_UTF8_WESTERN_CHARSET)
|
||||
#if ENABLED(TOUCH_UI_UTF8_WESTERN_CHARSET)
|
||||
PROGMEM Language_Str UNITS_C = u8"°C";
|
||||
#else
|
||||
PROGMEM Language_Str UNITS_C = u8" C";
|
||||
|
@ -399,10 +407,10 @@ namespace Language_en {
|
|||
|
||||
#ifdef LULZBOT_USE_BIOPRINTER_UI
|
||||
PROGMEM Language_Str MAIN_MENU = u8"Main Menu";
|
||||
PROGMEM Language_Str UNLOCK_XY_AXIS = u8"Unlock XY Axis";
|
||||
PROGMEM Language_Str RELEASE_XY_AXIS = u8"Release XY Axis";
|
||||
PROGMEM Language_Str LOAD_SYRINGE = u8"Load Syringe";
|
||||
PROGMEM Language_Str BED_TEMPERATURE = u8"Bed Temperature";
|
||||
PROGMEM Language_Str LOADING_WARNING = u8"About to home to loading position.\nEnsure the top and the bed of the printer are clear.\n\nContinue?";
|
||||
PROGMEM Language_Str LOADING_WARNING = u8"About to home to loading position. Ensure the top and the bed of the printer are clear.\n\nContinue?";
|
||||
PROGMEM Language_Str HOMING_WARNING = u8"About to re-home plunger and auto-level. Remove syringe prior to proceeding.\n\nContinue?";
|
||||
#endif
|
||||
|
||||
|
|
|
@ -33,34 +33,84 @@ using namespace Theme;
|
|||
#ifdef TOUCH_UI_PORTRAIT
|
||||
#define GRID_COLS 13
|
||||
#define GRID_ROWS 10
|
||||
#define LAYOUT_FONT font_small
|
||||
#else
|
||||
#define GRID_COLS 18
|
||||
#define GRID_ROWS 7
|
||||
#define LAYOUT_FONT font_medium
|
||||
#endif
|
||||
|
||||
BaseNumericAdjustmentScreen::widgets_t::widgets_t(draw_mode_t what) : _what(what) {
|
||||
if (what & BACKGROUND) {
|
||||
CommandProcessor cmd;
|
||||
|
||||
if (what & BACKGROUND) {
|
||||
cmd.cmd(CLEAR_COLOR_RGB(bg_color))
|
||||
.cmd(CLEAR(true,true,true));
|
||||
.cmd(CLEAR(true,true,true))
|
||||
.colors(normal_btn)
|
||||
.cmd(COLOR_RGB(bg_text_enabled));
|
||||
}
|
||||
|
||||
if (what & FOREGROUND) {
|
||||
CommandProcessor cmd;
|
||||
cmd.font(font_medium)
|
||||
.colors(action_btn)
|
||||
cmd.font(font_medium);
|
||||
_button(cmd, 1,
|
||||
#ifdef TOUCH_UI_PORTRAIT
|
||||
.tag(1).button( BTN_POS(1,10), BTN_SIZE(13,1), GET_TEXTF(BACK))
|
||||
BTN_POS(1,10), BTN_SIZE(13,1),
|
||||
#else
|
||||
.tag(1).button( BTN_POS(15,7), BTN_SIZE(4,1), GET_TEXTF(BACK))
|
||||
BTN_POS(15,7), BTN_SIZE(4,1),
|
||||
#endif
|
||||
.colors(normal_btn);
|
||||
}
|
||||
GET_TEXTF(BACK), true, true
|
||||
);
|
||||
|
||||
_line = 1;
|
||||
_units = F("");
|
||||
}
|
||||
|
||||
/**
|
||||
* Speed optimization for changing button style.
|
||||
*/
|
||||
void BaseNumericAdjustmentScreen::widgets_t::_button_style(CommandProcessor &cmd, BaseNumericAdjustmentScreen::widgets_t::style_t style) {
|
||||
if (_style != style) {
|
||||
const btn_colors *old_colors = &normal_btn;
|
||||
const btn_colors *new_colors = &normal_btn;
|
||||
|
||||
switch(_style) {
|
||||
case BTN_ACTION: old_colors = &action_btn; break;
|
||||
case BTN_TOGGLE: old_colors = &ui_toggle; break;
|
||||
case BTN_DISABLED: old_colors = &disabled_btn; break;
|
||||
default: break;
|
||||
}
|
||||
switch(style) {
|
||||
case BTN_ACTION: new_colors = &action_btn; break;
|
||||
case BTN_TOGGLE: new_colors = &ui_toggle; break;
|
||||
case BTN_DISABLED: new_colors = &disabled_btn; break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
const bool rgb_changed = old_colors->rgb != new_colors->rgb;
|
||||
const bool grad_changed = old_colors->grad != new_colors->grad;
|
||||
const bool fg_changed = (old_colors->fg != new_colors->fg) || (_style == TEXT_AREA);
|
||||
const bool bg_changed = old_colors->bg != new_colors->bg;
|
||||
|
||||
if (rgb_changed) cmd.cmd(COLOR_RGB(new_colors->rgb));
|
||||
if (grad_changed) cmd.gradcolor(new_colors->grad);
|
||||
if (fg_changed) cmd.fgcolor(new_colors->fg);
|
||||
if (bg_changed) cmd.bgcolor(new_colors->bg);
|
||||
|
||||
_style = style;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Speed optimization for drawing buttons. Draw all unpressed buttons in the
|
||||
* background layer and draw only the pressed button in the foreground layer.
|
||||
*/
|
||||
void BaseNumericAdjustmentScreen::widgets_t::_button(CommandProcessor &cmd, uint8_t tag, int16_t x, int16_t y, int16_t w, int16_t h, progmem_str text, bool enabled, bool highlight) {
|
||||
if (_what & BACKGROUND) enabled = true;
|
||||
if ((_what & BACKGROUND) || buttonIsPressed(tag) || highlight || !enabled) {
|
||||
_button_style(cmd, (!enabled) ? BTN_DISABLED : (highlight ? BTN_ACTION : BTN_NORMAL));
|
||||
cmd.tag(enabled ? tag : 0).button(x, y, w, h, text);
|
||||
}
|
||||
}
|
||||
|
||||
BaseNumericAdjustmentScreen::widgets_t &BaseNumericAdjustmentScreen::widgets_t::precision(uint8_t decimals, precision_default_t initial) {
|
||||
_decimals = decimals;
|
||||
if (screen_data.BaseNumericAdjustmentScreen.increment == 0) {
|
||||
|
@ -70,14 +120,17 @@ BaseNumericAdjustmentScreen::widgets_t &BaseNumericAdjustmentScreen::widgets_t::
|
|||
}
|
||||
|
||||
void BaseNumericAdjustmentScreen::widgets_t::heading(progmem_str label) {
|
||||
CommandProcessor cmd;
|
||||
cmd.font(font_medium).cmd(COLOR_RGB(bg_text_enabled));
|
||||
if (_what & BACKGROUND) {
|
||||
CommandProcessor cmd;
|
||||
cmd.font(font_medium)
|
||||
.text(
|
||||
#ifdef TOUCH_UI_PORTRAIT
|
||||
cmd.tag(0).fgcolor(bg_color).button( BTN_POS(1, _line), BTN_SIZE(12,1), label, OPT_FLAT);
|
||||
BTN_POS(1, _line), BTN_SIZE(12,1),
|
||||
#else
|
||||
cmd.tag(0).fgcolor(bg_color).button( BTN_POS(5, _line), BTN_SIZE(8,1), label, OPT_FLAT);
|
||||
BTN_POS(5, _line), BTN_SIZE(8,1),
|
||||
#endif
|
||||
label
|
||||
);
|
||||
}
|
||||
|
||||
_line++;
|
||||
|
@ -93,8 +146,7 @@ void BaseNumericAdjustmentScreen::widgets_t::heading(progmem_str label) {
|
|||
#endif
|
||||
#endif
|
||||
|
||||
void BaseNumericAdjustmentScreen::widgets_t::_draw_increment_btn(uint8_t, const uint8_t tag) {
|
||||
CommandProcessor cmd;
|
||||
void BaseNumericAdjustmentScreen::widgets_t::_draw_increment_btn(CommandProcessor &cmd, uint8_t, const uint8_t tag) {
|
||||
const char *label = PSTR("?");
|
||||
uint8_t pos;
|
||||
uint8_t & increment = screen_data.BaseNumericAdjustmentScreen.increment;
|
||||
|
@ -112,45 +164,40 @@ void BaseNumericAdjustmentScreen::widgets_t::_draw_increment_btn(uint8_t, const
|
|||
default: label = PSTR("100" ); pos = _decimals + 2; break;
|
||||
}
|
||||
|
||||
cmd.tag(tag)
|
||||
.colors(increment == tag ? action_btn : normal_btn)
|
||||
#ifdef TOUCH_UI_PORTRAIT
|
||||
.font(font_small);
|
||||
#else
|
||||
.font(font_medium);
|
||||
#endif
|
||||
const bool highlight = (_what & FOREGROUND) && (increment == tag);
|
||||
|
||||
switch (pos) {
|
||||
#ifdef TOUCH_UI_PORTRAIT
|
||||
case 0: cmd.button( BTN_POS(5,_line), BTN_SIZE(2,1), progmem_str(label)); break;
|
||||
case 1: cmd.button( BTN_POS(7,_line), BTN_SIZE(2,1), progmem_str(label)); break;
|
||||
case 2: cmd.button( BTN_POS(9,_line), BTN_SIZE(2,1), progmem_str(label)); break;
|
||||
case 0: _button(cmd, tag, BTN_POS(5,_line), BTN_SIZE(2,1), progmem_str(label), true, highlight); break;
|
||||
case 1: _button(cmd, tag, BTN_POS(7,_line), BTN_SIZE(2,1), progmem_str(label), true, highlight); break;
|
||||
case 2: _button(cmd, tag, BTN_POS(9,_line), BTN_SIZE(2,1), progmem_str(label), true, highlight); break;
|
||||
#else
|
||||
case 0: cmd.button( BTN_POS(15,2), BTN_SIZE(4,1), progmem_str(label)); break;
|
||||
case 1: cmd.button( BTN_POS(15,3), BTN_SIZE(4,1), progmem_str(label)); break;
|
||||
case 2: cmd.button( BTN_POS(15,4), BTN_SIZE(4,1), progmem_str(label)); break;
|
||||
case 0: _button(cmd, tag, BTN_POS(15,2), BTN_SIZE(4,1), progmem_str(label), true, highlight); break;
|
||||
case 1: _button(cmd, tag, BTN_POS(15,3), BTN_SIZE(4,1), progmem_str(label), true, highlight); break;
|
||||
case 2: _button(cmd, tag, BTN_POS(15,4), BTN_SIZE(4,1), progmem_str(label), true, highlight); break;
|
||||
#endif
|
||||
}
|
||||
cmd.colors(normal_btn);
|
||||
}
|
||||
|
||||
|
||||
void BaseNumericAdjustmentScreen::widgets_t::increments() {
|
||||
if (_what & BACKGROUND) {
|
||||
CommandProcessor cmd;
|
||||
cmd.fgcolor(bg_color)
|
||||
.tag(0)
|
||||
|
||||
cmd.font(LAYOUT_FONT);
|
||||
|
||||
if (_what & BACKGROUND) {
|
||||
cmd.text(
|
||||
#ifdef TOUCH_UI_PORTRAIT
|
||||
.font(font_small).button( BTN_POS(1, _line), BTN_SIZE(4,1), GET_TEXTF(INCREMENT), OPT_FLAT);
|
||||
BTN_POS(1, _line), BTN_SIZE(4,1),
|
||||
#else
|
||||
.font(font_medium).button( BTN_POS(15,1), BTN_SIZE(4,1), GET_TEXTF(INCREMENT), OPT_FLAT);
|
||||
BTN_POS(15, 1), BTN_SIZE(4,1),
|
||||
#endif
|
||||
GET_TEXTF(INCREMENT)
|
||||
);
|
||||
}
|
||||
|
||||
if (_what & FOREGROUND) {
|
||||
_draw_increment_btn(_line+1, 245 - _decimals);
|
||||
_draw_increment_btn(_line+1, 244 - _decimals);
|
||||
_draw_increment_btn(_line+1, 243 - _decimals);
|
||||
}
|
||||
_draw_increment_btn(cmd, _line+1, 245 - _decimals);
|
||||
_draw_increment_btn(cmd, _line+1, 244 - _decimals);
|
||||
_draw_increment_btn(cmd, _line+1, 243 - _decimals);
|
||||
|
||||
#ifdef TOUCH_UI_PORTRAIT
|
||||
_line++;
|
||||
|
@ -161,19 +208,22 @@ void BaseNumericAdjustmentScreen::widgets_t::adjuster_sram_val(uint8_t tag, prog
|
|||
CommandProcessor cmd;
|
||||
|
||||
if (_what & BACKGROUND) {
|
||||
cmd.enabled(1)
|
||||
_button_style(cmd, TEXT_AREA);
|
||||
cmd.tag(0)
|
||||
.font(font_small)
|
||||
.fgcolor(_color) .tag(0).button( BTN_POS(5,_line), BTN_SIZE(5,1), F(""), OPT_FLAT)
|
||||
.cmd(COLOR_RGB(bg_text_enabled))
|
||||
.fgcolor(bg_color) .tag(0).button( BTN_POS(1,_line), BTN_SIZE(4,1), (progmem_str) label, OPT_FLAT);
|
||||
.text( BTN_POS(1,_line), BTN_SIZE(4,1), label)
|
||||
.fgcolor(_color).button( BTN_POS(5,_line), BTN_SIZE(5,1), F(""), OPT_FLAT);
|
||||
}
|
||||
|
||||
if (_what & FOREGROUND) {
|
||||
cmd.colors(normal_btn)
|
||||
.font(font_medium)
|
||||
.tag(is_enabled ? tag : 0).enabled(is_enabled).button( BTN_POS(10,_line), BTN_SIZE(2,1), F("-"))
|
||||
.tag(is_enabled ? tag+1 : 0).enabled(is_enabled).button( BTN_POS(12,_line), BTN_SIZE(2,1), F("+"))
|
||||
.tag(0).font(font_small) .text ( BTN_POS(5,_line), BTN_SIZE(5,1), is_enabled ? value : "-");
|
||||
cmd.font(font_medium);
|
||||
_button(cmd, tag, BTN_POS(10,_line), BTN_SIZE(2,1), F("-"), is_enabled);
|
||||
_button(cmd, tag + 1, BTN_POS(12,_line), BTN_SIZE(2,1), F("+"), is_enabled);
|
||||
|
||||
if ((_what & FOREGROUND) && is_enabled) {
|
||||
_button_style(cmd, BTN_NORMAL);
|
||||
cmd.tag(0)
|
||||
.font(font_small)
|
||||
.text(BTN_POS(5,_line), BTN_SIZE(5,1), value);
|
||||
}
|
||||
|
||||
_line++;
|
||||
|
@ -206,18 +256,9 @@ void BaseNumericAdjustmentScreen::widgets_t::adjuster(uint8_t tag, progmem_str l
|
|||
}
|
||||
|
||||
void BaseNumericAdjustmentScreen::widgets_t::button(uint8_t tag, progmem_str label, bool is_enabled) {
|
||||
if (_what & FOREGROUND) {
|
||||
CommandProcessor cmd;
|
||||
cmd.colors(normal_btn)
|
||||
.tag(is_enabled ? tag : 0)
|
||||
.enabled(is_enabled)
|
||||
#ifdef TOUCH_UI_PORTRAIT
|
||||
.font(font_small)
|
||||
#else
|
||||
.font(font_medium)
|
||||
#endif
|
||||
.button(BTN_POS(5,_line), BTN_SIZE(9,1), label);
|
||||
}
|
||||
cmd.font(LAYOUT_FONT);
|
||||
_button(cmd, tag, BTN_POS(5,_line), BTN_SIZE(9,1), label, is_enabled);
|
||||
|
||||
_line++;
|
||||
}
|
||||
|
@ -226,89 +267,78 @@ void BaseNumericAdjustmentScreen::widgets_t::text_field(uint8_t tag, progmem_str
|
|||
CommandProcessor cmd;
|
||||
|
||||
if (_what & BACKGROUND) {
|
||||
_button_style(cmd, TEXT_AREA);
|
||||
cmd.enabled(1)
|
||||
.tag(0)
|
||||
.font(font_small)
|
||||
.cmd(COLOR_RGB(bg_text_enabled))
|
||||
.fgcolor(_color).tag(0).button( BTN_POS(5,_line), BTN_SIZE(9,1), F(""), OPT_FLAT)
|
||||
.fgcolor(bg_color) .tag(0).button( BTN_POS(1,_line), BTN_SIZE(4,1), label, OPT_FLAT);
|
||||
.text( BTN_POS(1,_line), BTN_SIZE(4,1), label)
|
||||
.fgcolor(_color)
|
||||
.tag(tag)
|
||||
.button( BTN_POS(5,_line), BTN_SIZE(9,1), F(""), OPT_FLAT);
|
||||
}
|
||||
|
||||
if (_what & FOREGROUND) {
|
||||
cmd.colors(normal_btn)
|
||||
.font(font_medium)
|
||||
.tag(tag).font(font_small).text ( BTN_POS(5,_line), BTN_SIZE(9,1), is_enabled ? value : "-");
|
||||
cmd.font(font_small).text( BTN_POS(5,_line), BTN_SIZE(9,1), is_enabled ? value : "-");
|
||||
}
|
||||
|
||||
_line++;
|
||||
}
|
||||
|
||||
void BaseNumericAdjustmentScreen::widgets_t::two_buttons(uint8_t tag1, progmem_str label1, uint8_t tag2, progmem_str label2, bool is_enabled) {
|
||||
if (_what & FOREGROUND) {
|
||||
CommandProcessor cmd;
|
||||
cmd.enabled(is_enabled)
|
||||
#ifdef TOUCH_UI_PORTRAIT
|
||||
.font(font_small)
|
||||
#else
|
||||
.font(font_medium)
|
||||
#endif
|
||||
.tag(is_enabled ? tag1: 0).button(BTN_POS(5,_line), BTN_SIZE(4.5,1), label1)
|
||||
.tag(is_enabled ? tag2: 0).button(BTN_POS(9.5,_line), BTN_SIZE(4.5,1), label2);
|
||||
}
|
||||
cmd.font(LAYOUT_FONT);
|
||||
_button(cmd, tag1, BTN_POS(5,_line), BTN_SIZE(4.5,1), label1, is_enabled);
|
||||
_button(cmd, tag2, BTN_POS(9.5,_line), BTN_SIZE(4.5,1), label2, is_enabled);
|
||||
|
||||
_line++;
|
||||
}
|
||||
|
||||
void BaseNumericAdjustmentScreen::widgets_t::toggle(uint8_t tag, progmem_str label, bool value, bool is_enabled) {
|
||||
if (_what & BACKGROUND) {
|
||||
CommandProcessor cmd;
|
||||
cmd.fgcolor(bg_color)
|
||||
.tag(0)
|
||||
.font(font_small)
|
||||
|
||||
if (_what & BACKGROUND) {
|
||||
cmd.font(font_small)
|
||||
.text(
|
||||
#ifdef TOUCH_UI_PORTRAIT
|
||||
.button( BTN_POS(1, _line), BTN_SIZE( 8,1), label, OPT_FLAT);
|
||||
BTN_POS(1, _line), BTN_SIZE( 8,1),
|
||||
#else
|
||||
.button( BTN_POS(1, _line), BTN_SIZE(10,1), label, OPT_FLAT);
|
||||
BTN_POS(1, _line), BTN_SIZE(10,1),
|
||||
#endif
|
||||
label
|
||||
);
|
||||
}
|
||||
|
||||
if (_what & FOREGROUND) {
|
||||
CommandProcessor cmd;
|
||||
_button_style(cmd, BTN_TOGGLE);
|
||||
cmd.tag(is_enabled ? tag : 0)
|
||||
.enabled(is_enabled)
|
||||
.font(font_small)
|
||||
.colors(ui_toggle)
|
||||
.toggle2(
|
||||
#ifdef TOUCH_UI_PORTRAIT
|
||||
.toggle2(BTN_POS( 9,_line), BTN_SIZE(5,1), GET_TEXTF(NO), GET_TEXTF(YES), value);
|
||||
BTN_POS( 9,_line), BTN_SIZE(5,1),
|
||||
#else
|
||||
.toggle2(BTN_POS(10,_line), BTN_SIZE(4,1), GET_TEXTF(NO), GET_TEXTF(YES), value);
|
||||
BTN_POS(10,_line), BTN_SIZE(4,1),
|
||||
#endif
|
||||
GET_TEXTF(NO), GET_TEXTF(YES), value
|
||||
);
|
||||
}
|
||||
|
||||
_line++;
|
||||
}
|
||||
|
||||
void BaseNumericAdjustmentScreen::widgets_t::home_buttons(uint8_t tag) {
|
||||
if (_what & BACKGROUND) {
|
||||
CommandProcessor cmd;
|
||||
cmd.fgcolor(bg_color)
|
||||
.tag(0)
|
||||
.font(font_small)
|
||||
.button( BTN_POS(1, _line), BTN_SIZE(4,1), GET_TEXTF(HOME), OPT_FLAT);
|
||||
|
||||
if (_what & BACKGROUND) {
|
||||
cmd.font(font_small)
|
||||
.text(BTN_POS(1, _line), BTN_SIZE(4,1), GET_TEXTF(HOME));
|
||||
}
|
||||
|
||||
if (_what & FOREGROUND) {
|
||||
CommandProcessor cmd;
|
||||
cmd
|
||||
#ifdef TOUCH_UI_PORTRAIT
|
||||
.font(font_small)
|
||||
#else
|
||||
.font(font_medium)
|
||||
#endif
|
||||
.tag(tag+0).button(BTN_POS(5,_line), BTN_SIZE(2,1), GET_TEXTF(AXIS_X))
|
||||
.tag(tag+1).button(BTN_POS(7,_line), BTN_SIZE(2,1), GET_TEXTF(AXIS_Y))
|
||||
.tag(tag+2).button(BTN_POS(9,_line), BTN_SIZE(2,1), GET_TEXTF(AXIS_Z))
|
||||
.tag(tag+3).button(BTN_POS(11,_line), BTN_SIZE(3,1), GET_TEXTF(AXIS_ALL));
|
||||
}
|
||||
cmd.font(LAYOUT_FONT);
|
||||
_button(cmd, tag+0, BTN_POS(5,_line), BTN_SIZE(2,1), GET_TEXTF(AXIS_X));
|
||||
_button(cmd, tag+1, BTN_POS(7,_line), BTN_SIZE(2,1), GET_TEXTF(AXIS_Y));
|
||||
_button(cmd, tag+2, BTN_POS(9,_line), BTN_SIZE(2,1), GET_TEXTF(AXIS_Z));
|
||||
_button(cmd, tag+3, BTN_POS(11,_line), BTN_SIZE(3,1), GET_TEXTF(AXIS_ALL));
|
||||
|
||||
_line++;
|
||||
}
|
||||
|
@ -316,6 +346,8 @@ void BaseNumericAdjustmentScreen::widgets_t::home_buttons(uint8_t tag) {
|
|||
void BaseNumericAdjustmentScreen::onEntry() {
|
||||
screen_data.BaseNumericAdjustmentScreen.increment = 0; // This will force the increment to be picked while drawing.
|
||||
BaseScreen::onEntry();
|
||||
CommandProcessor cmd;
|
||||
cmd.set_button_style_callback(nullptr);
|
||||
}
|
||||
|
||||
bool BaseNumericAdjustmentScreen::onTouchEnd(uint8_t tag) {
|
||||
|
|
|
@ -36,6 +36,10 @@ void BaseScreen::onEntry() {
|
|||
UIScreen::onEntry();
|
||||
}
|
||||
|
||||
bool BaseScreen::buttonIsPressed(uint8_t tag) {
|
||||
return tag != 0 && EventLoop::get_pressed_tag() == tag;
|
||||
}
|
||||
|
||||
bool BaseScreen::buttonStyleCallback(CommandProcessor &cmd, uint8_t tag, uint8_t &style, uint16_t &options, bool post) {
|
||||
if (post) {
|
||||
cmd.colors(normal_btn);
|
||||
|
@ -48,7 +52,7 @@ bool BaseScreen::buttonStyleCallback(CommandProcessor &cmd, uint8_t tag, uint8_t
|
|||
}
|
||||
#endif
|
||||
|
||||
if (tag != 0 && EventLoop::get_pressed_tag() == tag) {
|
||||
if (buttonIsPressed(tag)) {
|
||||
options = OPT_FLAT;
|
||||
}
|
||||
|
||||
|
@ -65,7 +69,7 @@ void BaseScreen::onIdle() {
|
|||
#ifdef LCD_TIMEOUT_TO_STATUS
|
||||
if ((millis() - last_interaction) > LCD_TIMEOUT_TO_STATUS) {
|
||||
reset_menu_timeout();
|
||||
#ifdef UI_FRAMEWORK_DEBUG
|
||||
#if ENABLED(TOUCH_UI_DEBUG)
|
||||
SERIAL_ECHO_MSG("Returning to status due to menu timeout");
|
||||
#endif
|
||||
GOTO_SCREEN(StatusScreen);
|
||||
|
|
|
@ -46,7 +46,7 @@ void MainMenu::onRedraw(draw_mode_t what) {
|
|||
.colors(normal_btn)
|
||||
.font(font_medium)
|
||||
.tag(2).button( BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXTF(LOAD_SYRINGE))
|
||||
.tag(3).button( BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXTF(UNLOCK_XY_AXIS))
|
||||
.tag(3).button( BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXTF(RELEASE_XY_AXIS))
|
||||
.tag(4).button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXTF(BED_TEMPERATURE))
|
||||
.tag(5).button( BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXTF(INTERFACE_SETTINGS))
|
||||
.tag(6).button( BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXTF(ADVANCED_SETTINGS))
|
||||
|
|
|
@ -37,9 +37,10 @@
|
|||
#define POLY(A) PolyUI::poly_reader_t(A, sizeof(A)/sizeof(A[0]))
|
||||
|
||||
const uint8_t shadow_depth = 5;
|
||||
const float max_speed = 0.30;
|
||||
const float min_speed = 0.05;
|
||||
const uint8_t num_speeds = 10;
|
||||
const float max_speed = 1.00;
|
||||
const float min_speed = 0.02;
|
||||
const float emax_speed = 2.00;
|
||||
const float emin_speed = 0.70;
|
||||
|
||||
using namespace FTDI;
|
||||
using namespace Theme;
|
||||
|
@ -251,7 +252,7 @@ void StatusScreen::onRedraw(draw_mode_t what) {
|
|||
}
|
||||
|
||||
bool StatusScreen::onTouchStart(uint8_t) {
|
||||
increment = min_speed;
|
||||
increment = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -288,7 +289,7 @@ bool StatusScreen::onTouchEnd(uint8_t tag) {
|
|||
|
||||
bool StatusScreen::onTouchHeld(uint8_t tag) {
|
||||
if (tag >= 1 && tag <= 4 && !jog_xy) return false;
|
||||
const float s = fine_motion ? min_speed : increment;
|
||||
const float s = min_speed + (fine_motion ? 0 : (max_speed - min_speed) * sq(increment));
|
||||
switch (tag) {
|
||||
case 1: jog(-s, 0, 0); break;
|
||||
case 2: jog( s, 0, 0); break;
|
||||
|
@ -297,22 +298,20 @@ bool StatusScreen::onTouchHeld(uint8_t tag) {
|
|||
case 5: jog( 0, 0, -s); break;
|
||||
case 6: jog( 0, 0, s); break;
|
||||
case 7:
|
||||
case 8:
|
||||
{
|
||||
if (ExtUI::isMoving()) return false;
|
||||
MoveAxisScreen::setManualFeedrate(E0, 1);
|
||||
const float feedrate = emin_speed + (fine_motion ? 0 : (emax_speed - emin_speed) * sq(increment));
|
||||
const float increment = 0.25 * feedrate * (tag == 7 ? -1 : 1);
|
||||
MoveAxisScreen::setManualFeedrate(E0, feedrate);
|
||||
UI_INCREMENT(AxisPosition_mm, E0);
|
||||
current_screen.onRefresh();
|
||||
break;
|
||||
case 8:
|
||||
if (ExtUI::isMoving()) return false;
|
||||
MoveAxisScreen::setManualFeedrate(E0, 1);
|
||||
UI_DECREMENT(AxisPosition_mm, E0);
|
||||
current_screen.onRefresh();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
if (increment < max_speed)
|
||||
increment += (max_speed - min_speed) / num_speeds;
|
||||
increment = min(1.0f, increment + 0.1f);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -325,11 +324,11 @@ void StatusScreen::setStatusMessage(const char * const str) {
|
|||
}
|
||||
|
||||
void StatusScreen::onIdle() {
|
||||
if (refresh_timer.elapsed(STATUS_UPDATE_INTERVAL)) {
|
||||
if (!EventLoop::is_touch_held())
|
||||
onRefresh();
|
||||
if (isPrintingFromMedia())
|
||||
BioPrintingDialogBox::show();
|
||||
|
||||
if (refresh_timer.elapsed(STATUS_UPDATE_INTERVAL)) {
|
||||
onRefresh();
|
||||
refresh_timer.start();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ void TuneMenu::onRedraw(draw_mode_t what) {
|
|||
#endif
|
||||
.tag(4).button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXTF(NUDGE_NOZZLE))
|
||||
.enabled(!isPrinting()).tag(5).button( BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXTF(LOAD_SYRINGE))
|
||||
.enabled(!isPrinting()).tag(6).button( BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXTF(UNLOCK_XY_AXIS))
|
||||
.enabled(!isPrinting()).tag(6).button( BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXTF(RELEASE_XY_AXIS))
|
||||
.colors(action_btn) .tag(1).button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXTF(BACK));
|
||||
}
|
||||
#undef GRID_COLS
|
||||
|
|
|
@ -48,28 +48,29 @@ void MoveAxisScreen::onRedraw(draw_mode_t what) {
|
|||
w.units(GET_TEXTF(UNITS_MM));
|
||||
w.heading( GET_TEXTF(MOVE_AXIS));
|
||||
w.home_buttons(20);
|
||||
w.color(Theme::x_axis ) .adjuster( 2, GET_TEXTF(AXIS_X), getAxisPosition_mm(X), canMove(X));
|
||||
w.color(Theme::y_axis ) .adjuster( 4, GET_TEXTF(AXIS_Y), getAxisPosition_mm(Y), canMove(Y));
|
||||
w.color(Theme::z_axis ) .adjuster( 6, GET_TEXTF(AXIS_Z), getAxisPosition_mm(Z), canMove(Z));
|
||||
w.color(Theme::x_axis).adjuster( 2, GET_TEXTF(AXIS_X), getAxisPosition_mm(X), canMove(X));
|
||||
w.color(Theme::y_axis).adjuster( 4, GET_TEXTF(AXIS_Y), getAxisPosition_mm(Y), canMove(Y));
|
||||
w.color(Theme::z_axis).adjuster( 6, GET_TEXTF(AXIS_Z), getAxisPosition_mm(Z), canMove(Z));
|
||||
|
||||
w.color(Theme::e_axis);
|
||||
#if EXTRUDERS == 1
|
||||
w.color(Theme::e_axis) .adjuster( 8, GET_TEXTF(AXIS_E), screen_data.MoveAxisScreen.e_rel[0], canMove(E0));
|
||||
w.adjuster( 8, GET_TEXTF(AXIS_E), screen_data.MoveAxisScreen.e_rel[0], canMove(E0));
|
||||
#elif EXTRUDERS > 1
|
||||
w.color(Theme::e_axis) .adjuster( 8, GET_TEXTF(AXIS_E1), screen_data.MoveAxisScreen.e_rel[0], canMove(E0));
|
||||
w.color(Theme::e_axis) .adjuster( 10, GET_TEXTF(AXIS_E2), screen_data.MoveAxisScreen.e_rel[1], canMove(E1));
|
||||
w.adjuster( 8, GET_TEXTF(AXIS_E1), screen_data.MoveAxisScreen.e_rel[0], canMove(E0));
|
||||
w.adjuster( 10, GET_TEXTF(AXIS_E2), screen_data.MoveAxisScreen.e_rel[1], canMove(E1));
|
||||
#if EXTRUDERS > 2
|
||||
w.color(Theme::e_axis) .adjuster( 12, GET_TEXTF(AXIS_E3), screen_data.MoveAxisScreen.e_rel[2], canMove(E2));
|
||||
w.adjuster( 12, GET_TEXTF(AXIS_E3), screen_data.MoveAxisScreen.e_rel[2], canMove(E2));
|
||||
#endif
|
||||
#if EXTRUDERS > 3
|
||||
w.color(Theme::e_axis) .adjuster( 14, GET_TEXTF(AXIS_E4), screen_data.MoveAxisScreen.e_rel[3], canMove(E3));
|
||||
w.adjuster( 14, GET_TEXTF(AXIS_E4), screen_data.MoveAxisScreen.e_rel[3], canMove(E3));
|
||||
#endif
|
||||
#endif
|
||||
w.increments();
|
||||
}
|
||||
|
||||
bool MoveAxisScreen::onTouchHeld(uint8_t tag) {
|
||||
#define UI_INCREMENT_AXIS(axis) setManualFeedrate(axis, increment); UI_INCREMENT(AxisPosition_mm, axis);
|
||||
#define UI_DECREMENT_AXIS(axis) setManualFeedrate(axis, increment); UI_DECREMENT(AxisPosition_mm, axis);
|
||||
#define UI_INCREMENT_AXIS(axis) UI_INCREMENT(AxisPosition_mm, axis);
|
||||
#define UI_DECREMENT_AXIS(axis) UI_DECREMENT(AxisPosition_mm, axis);
|
||||
const float increment = getIncrement();
|
||||
switch (tag) {
|
||||
case 2: UI_DECREMENT_AXIS(X); break;
|
||||
|
@ -93,10 +94,10 @@ bool MoveAxisScreen::onTouchHeld(uint8_t tag) {
|
|||
case 14: UI_DECREMENT_AXIS(E3); screen_data.MoveAxisScreen.e_rel[3] -= increment; break;
|
||||
case 15: UI_INCREMENT_AXIS(E3); screen_data.MoveAxisScreen.e_rel[3] += increment; break;
|
||||
#endif
|
||||
case 20: injectCommands_P(PSTR("G28 X")); break;
|
||||
case 21: injectCommands_P(PSTR("G28 Y")); break;
|
||||
case 22: injectCommands_P(PSTR("G28 Z")); break;
|
||||
case 23: injectCommands_P(PSTR("G28")); break;
|
||||
case 20: SpinnerDialogBox::enqueueAndWait_P(F("G28 X")); break;
|
||||
case 21: SpinnerDialogBox::enqueueAndWait_P(F("G28 Y")); break;
|
||||
case 22: SpinnerDialogBox::enqueueAndWait_P(F("G28 Z")); break;
|
||||
case 23: SpinnerDialogBox::enqueueAndWait_P(F("G28")); break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
@ -109,9 +110,9 @@ float MoveAxisScreen::getManualFeedrate(uint8_t axis, float increment_mm) {
|
|||
// Compute feedrate so that the tool lags the adjuster when it is
|
||||
// being held down, this allows enough margin for the planner to
|
||||
// connect segments and even out the motion.
|
||||
constexpr float max_manual_feedrate[XYZE] = MAX_MANUAL_FEEDRATE;
|
||||
return min(max_manual_feedrate[axis]/60, abs(increment_mm * TOUCH_REPEATS_PER_SECOND * 0.80));
|
||||
return min(max_manual_feedrate[axis] / 60, abs(increment_mm * TOUCH_REPEATS_PER_SECOND * 0.80));
|
||||
constexpr float manual_feedrate[XYZE] = MANUAL_FEEDRATE;
|
||||
return min(manual_feedrate[axis] / 60, abs(increment_mm * TOUCH_REPEATS_PER_SECOND * 0.80));
|
||||
return min(manual_feedrate[axis] / 60, abs(increment_mm * TOUCH_REPEATS_PER_SECOND * 0.80));
|
||||
}
|
||||
|
||||
void MoveAxisScreen::setManualFeedrate(ExtUI::axis_t axis, float increment_mm) {
|
||||
|
|
|
@ -97,6 +97,8 @@ class BaseScreen : public UIScreen {
|
|||
static uint32_t last_interaction;
|
||||
#endif
|
||||
|
||||
static bool buttonIsPressed(uint8_t tag);
|
||||
|
||||
public:
|
||||
static bool buttonStyleCallback(CommandProcessor &, uint8_t, uint8_t &, uint16_t &, bool);
|
||||
|
||||
|
@ -353,10 +355,18 @@ class BaseNumericAdjustmentScreen : public BaseScreen {
|
|||
uint32_t _color;
|
||||
uint8_t _decimals;
|
||||
progmem_str _units;
|
||||
enum style_t {
|
||||
BTN_NORMAL,
|
||||
BTN_ACTION,
|
||||
BTN_TOGGLE,
|
||||
BTN_DISABLED,
|
||||
TEXT_AREA
|
||||
} _style;
|
||||
|
||||
protected:
|
||||
void _draw_increment_btn(uint8_t line, const uint8_t tag);
|
||||
|
||||
void _draw_increment_btn(CommandProcessor &, uint8_t line, const uint8_t tag);
|
||||
void _button(CommandProcessor &, uint8_t tag, int16_t x, int16_t y, int16_t w, int16_t h, progmem_str, bool enabled = true, bool highlight = false);
|
||||
void _button_style(CommandProcessor &cmd, style_t style);
|
||||
public:
|
||||
widgets_t(draw_mode_t);
|
||||
|
||||
|
|
Loading…
Reference in a new issue