Skip to content

Commit

Permalink
Improvements to touch UI.
Browse files Browse the repository at this point in the history
  • Loading branch information
marciot committed Apr 24, 2020
1 parent 44cb189 commit 9b2d023
Show file tree
Hide file tree
Showing 24 changed files with 146 additions and 96 deletions.
5 changes: 5 additions & 0 deletions Marlin/src/gcode/feature/pause/M125.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,11 @@ void GcodeSuite::M125() {
#endif

#if ENABLED(SDSUPPORT)
#if ENABLED(M125_FILAMENT_RUNOUT_WORKAROUND)
const bool sd_printing = card.isFileOpen();
#else
const bool sd_printing = IS_SD_PRINTING();
#endif
#else
constexpr bool sd_printing = false;
#endif
Expand All @@ -100,3 +104,4 @@ void GcodeSuite::M125() {
}

#endif // PARK_HEAD_ON_PAUSE

Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,8 @@ namespace Language_en {
PROGMEM Language_Str MSG_TOUCH_CALIBRATION_START = u8"Release to begin screen calibration";
PROGMEM Language_Str MSG_TOUCH_CALIBRATION_PROMPT = u8"Touch the dots to calibrate";
PROGMEM Language_Str MSG_AUTOLEVEL_X_AXIS = u8"Level X Axis";
PROGMEM Language_Str MSG_BED_MAPPING_DONE = u8"Bed mapping finished";
PROGMEM Language_Str MSG_RESET_BLTOUCH = u8"Reset BLTouch";

#ifdef TOUCH_UI_LULZBOT_BIO
PROGMEM Language_Str MSG_MOVE_TO_HOME = u8"Move to Home";
Expand Down
9 changes: 7 additions & 2 deletions Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/marlin_events.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,14 @@ namespace ExtUI {
}

void onMediaRemoved() {
if (AT_SCREEN(StatusScreen))
if(isPrintingFromMedia()) {
stopPrint();
InterfaceSoundsScreen::playEventSound(InterfaceSoundsScreen::PRINTING_FAILED);
} else {
sound.play(media_removed, PLAY_ASYNCHRONOUS);
}
if (AT_SCREEN(StatusScreen) || isPrintingFromMedia())
StatusScreen::setStatusMessage(GET_TEXT_F(MSG_MEDIA_REMOVED));
sound.play(media_removed, PLAY_ASYNCHRONOUS);
if (AT_SCREEN(FilesScreen)) {
GOTO_SCREEN(StatusScreen)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,13 @@ void AboutScreen::onRedraw(draw_mode_t) {
#endif
, OPT_CENTER, font_xlarge
);
draw_text_box(cmd, FW_VERS_POS, progmem_str(getFirmwareName_str()), OPT_CENTER, font_medium);
draw_text_box(cmd, FW_VERS_POS,
#ifdef TOUCH_UI_VERSION
F(TOUCH_UI_VERSION)
#else
progmem_str(getFirmwareName_str())
#endif
, OPT_CENTER, font_medium);
draw_text_box(cmd, FW_INFO_POS, about_str, OPT_CENTER, font_medium);
draw_text_box(cmd, INSET_POS(LICENSE_POS), GET_TEXT_F(MSG_LICENSE), OPT_CENTER, font_tiny);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,11 +115,17 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) {
)
.tag(14).button( TMC_HOMING_THRS_POS, GET_TEXT_F(MSG_TMC_HOMING_THRS))
.enabled(
#if HOTENDS > 1
#if HOTENDS > 1 || ENABLED(BLTOUCH)
1
#endif
)
.tag(4) .button( OFFSETS_POS, GET_TEXT_F(MSG_OFFSETS_MENU))
.tag(4) .button( OFFSETS_POS, GET_TEXT_F(
#if HOTENDS > 1
MSG_OFFSETS_MENU
#else
MSG_RESET_BLTOUCH
#endif
))
.enabled(
#if EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR)
1
Expand Down Expand Up @@ -157,9 +163,13 @@ bool AdvancedSettingsMenu::onTouchEnd(uint8_t tag) {
case 2: GOTO_SCREEN(ZOffsetScreen); break;
#endif
case 3: GOTO_SCREEN(StepsScreen); break;
#if HOTENDS > 1
case 4: GOTO_SCREEN(NozzleOffsetScreen); break;
#endif
case 4:
#if HOTENDS > 1
GOTO_SCREEN(NozzleOffsetScreen);
#elif ENABLED(BLTOUCH)
injectCommands_P(PSTR("M280 P0 S60"));
#endif
break;
case 5: GOTO_SCREEN(MaxVelocityScreen); break;
case 6: GOTO_SCREEN(DefaultAccelerationScreen); break;
case 7:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,19 +35,19 @@ using namespace ExtUI;
#define GRID_ROWS 10

#define MESH_POS BTN_POS(1, 2), BTN_SIZE(2,5)
#define MESSAGE_POS BTN_POS(1, 7), BTN_SIZE(2,1)
#define Z_LABEL_POS BTN_POS(1, 8), BTN_SIZE(1,1)
#define Z_VALUE_POS BTN_POS(2, 8), BTN_SIZE(1,1)
#define WAIT_POS BTN_POS(1, 8), BTN_SIZE(2,1)
#define BACK_POS BTN_POS(1,10), BTN_SIZE(2,1)
#define OKAY_POS BTN_POS(1,10), BTN_SIZE(2,1)
#else
#define GRID_COLS 5
#define GRID_ROWS 5

#define MESH_POS BTN_POS(1,1), BTN_SIZE(3,5)
#define Z_LABEL_POS BTN_POS(4,2), BTN_SIZE(2,1)
#define Z_VALUE_POS BTN_POS(4,3), BTN_SIZE(2,1)
#define WAIT_POS BTN_POS(4,2), BTN_SIZE(2,2)
#define BACK_POS BTN_POS(4,5), BTN_SIZE(2,1)
#define MESH_POS BTN_POS(1,1), BTN_SIZE(3,5)
#define MESSAGE_POS BTN_POS(4,1), BTN_SIZE(2,1)
#define Z_LABEL_POS BTN_POS(4,2), BTN_SIZE(2,1)
#define Z_VALUE_POS BTN_POS(4,3), BTN_SIZE(2,1)
#define OKAY_POS BTN_POS(4,5), BTN_SIZE(2,1)
#endif

void BedMeshScreen::drawMesh(int16_t x, int16_t y, int16_t w, int16_t h, ExtUI::bed_mesh_t data, uint8_t opts, float autoscale_max) {
Expand Down Expand Up @@ -238,7 +238,7 @@ void BedMeshScreen::drawHighlightedPointValue() {
.text(Z_LABEL_POS, GET_TEXT_F(MSG_MESH_EDIT_Z))
.text(Z_VALUE_POS, str)
.colors(action_btn)
.tag(1).button( BACK_POS, GET_TEXT_F(MSG_BACK))
.tag(1).button( OKAY_POS, GET_TEXT_F(MSG_BUTTON_OKAY))
.tag(0);
}

Expand All @@ -261,7 +261,12 @@ void BedMeshScreen::onRedraw(draw_mode_t what) {
constexpr float autoscale_max_amplitude = 0.03;
const bool levelingFinished = screen_data.BedMeshScreen.count >= GRID_MAX_POINTS;
const float levelingProgress = sq(float(screen_data.BedMeshScreen.count) / GRID_MAX_POINTS);
if (levelingFinished) drawHighlightedPointValue();
if (levelingFinished) {
drawHighlightedPointValue();
CommandProcessor cmd;
cmd.font(Theme::font_medium)
.text(MESSAGE_POS, GET_TEXT_F(MSG_BED_MAPPING_DONE));
}

BedMeshScreen::drawMesh(INSET_POS(MESH_POS), ExtUI::getMeshArray(),
USE_POINTS | USE_HIGHLIGHT | USE_AUTOSCALE | (levelingFinished ? USE_COLORS : 0),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,6 @@ using namespace FTDI;
using namespace Theme;
using namespace ExtUI;

void ConfirmStartPrintDialogBox::onEntry() {
BaseScreen::onEntry();
sound.play(twinkle, PLAY_ASYNCHRONOUS);
}

void ConfirmStartPrintDialogBox::onRedraw(draw_mode_t) {
const char *filename = getLongFilename();
char buffer[strlen_P(GET_TEXT(MSG_START_PRINT_CONFIRMATION)) + strlen(filename) + 1];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,6 @@ class ConfirmStartPrintDialogBox : public DialogBoxBaseClass, public UncachedScr

static const char *getFilename(bool longName);
public:
static void onEntry();
static void onRedraw(draw_mode_t);
static bool onTouchEnd(uint8_t);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ void StatusScreen::draw_progress(draw_mode_t what) {
sprintf_P(progress_str, PSTR("%-3d %%"), getProgress_percent() );

cmd.font(font_medium)
.tag(0).text(TIME_POS, time_str)
.tag(7).text(TIME_POS, time_str)
.text(PROGRESS_POS, progress_str);
}
}
Expand Down Expand Up @@ -386,10 +386,19 @@ bool StatusScreen::onTouchEnd(uint8_t tag) {
break;
case 5: GOTO_SCREEN(TemperatureScreen); break;
case 6:
if (!isPrinting()) {
if (isPrinting()) {
#if ENABLED(BABYSTEPPING)
GOTO_SCREEN(NudgeNozzleScreen);
#elif HAS_BED_PROBE
GOTO_SCREEN(ZOffsetScreen);
#else
return false;
#endif
} else {
GOTO_SCREEN(MoveAxisScreen);
}
break;
case 7: GOTO_SCREEN(FeedratePercentScreen); break;
default:
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ void TemperatureScreen::onRedraw(draw_mode_t what) {
#if TOUCH_UI_LCD_TEMP_SCALING == 10
w.precision(1)
#else
w.precision(0)
w.precision(0, getTargetTemp_celsius(E0) == 0 ? DEFAULT_HIGHEST : DEFAULT_MIDRANGE)
#endif
.color(temp).units(GET_TEXT_F(MSG_UNITS_C));
w.heading(GET_TEXT_F(MSG_TEMPERATURE));
Expand Down
110 changes: 45 additions & 65 deletions Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/tune_menu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,25 @@ void TuneMenu::onRedraw(draw_mode_t what) {
#ifdef TOUCH_UI_PORTRAIT
#define GRID_ROWS 8
#define GRID_COLS 2
#define TEMPERATURE_POS BTN_POS(1,1), BTN_SIZE(2,1)
#define FIL_CHANGE_POS BTN_POS(1,2), BTN_SIZE(2,1)
#define FILAMENT_POS BTN_POS(1,3), BTN_SIZE(2,1)
#define NUDGE_NOZ_POS BTN_POS(1,4), BTN_SIZE(2,1)
#define SPEED_POS BTN_POS(1,5), BTN_SIZE(2,1)
#define PAUSE_POS BTN_POS(1,6), BTN_SIZE(2,1)
#define STOP_POS BTN_POS(1,7), BTN_SIZE(2,1)
#define BACK_POS BTN_POS(1,8), BTN_SIZE(2,1)
#else
#define GRID_ROWS 4
#define GRID_COLS 2
#define TEMPERATURE_POS BTN_POS(1,1), BTN_SIZE(1,1)
#define NUDGE_NOZ_POS BTN_POS(2,1), BTN_SIZE(1,1)
#define FIL_CHANGE_POS BTN_POS(1,2), BTN_SIZE(1,1)
#define SPEED_POS BTN_POS(2,2), BTN_SIZE(1,1)
#define PAUSE_POS BTN_POS(1,3), BTN_SIZE(1,1)
#define STOP_POS BTN_POS(2,3), BTN_SIZE(1,1)
#define FILAMENT_POS BTN_POS(1,4), BTN_SIZE(1,1)
#defome BACK_POS BTN_POS(2,4), BTN_SIZE(1,1)
#endif

if (what & FOREGROUND) {
Expand All @@ -50,81 +66,43 @@ void TuneMenu::onRedraw(draw_mode_t what) {
CommandProcessor cmd;
cmd.colors(normal_btn)
.font(font_medium)
#ifdef TOUCH_UI_PORTRAIT
.tag(2).enabled(1) .button( BTN_POS(1,1), BTN_SIZE(2,1), GET_TEXT_F(MSG_TEMPERATURE))
.tag(3).enabled(!isPrinting()).button( BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXT_F(MSG_FILAMENTCHANGE))
.tag(2).button( TEMPERATURE_POS, GET_TEXT_F(MSG_TEMPERATURE))
.enabled((!isPrinting()) || isPrintingFromMediaPaused())
.tag(3).button( FIL_CHANGE_POS, GET_TEXT_F(MSG_FILAMENTCHANGE))
.enabled(
#if EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR)
1
#endif
#if EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR)
1
#endif
)
.tag(9).button( BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXT_F(MSG_FILAMENT))
#if ENABLED(BABYSTEPPING)
.tag(4).enabled(1) .button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXT_F(MSG_NUDGE_NOZZLE))
#else
.enabled(
#if HAS_BED_PROBE
.tag(9).button( FILAMENT_POS, GET_TEXT_F(MSG_FILAMENT))
.enabled(
#if HAS_BED_PROBE || ENABLED(BABYSTEPPING)
1
#endif
)
.tag(4) .button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXT_F(MSG_ZPROBE_ZOFFSET))
#endif
.tag(5).enabled(1) .button( BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(MSG_PRINT_SPEED))
.tag(4).button( NUDGE_NOZ_POS, GET_TEXT_F(
#if ENABLED(BABYSTEPPING)
MSG_NUDGE_NOZZLE
#else
MSG_ZPROBE_ZOFFSET
#endif
))
.tag(5).button( SPEED_POS, GET_TEXT_F(MSG_PRINT_SPEED))
.tag(isPrintingFromMediaPaused() ? 7 : 6)
.enabled(
#if ENABLED(SDSUPPORT)
isPrintingFromMedia()
#endif
#if ENABLED(SDSUPPORT)
isPrintingFromMedia()
#endif
)
.button( BTN_POS(1,6), BTN_SIZE(2,1), isPrintingFromMediaPaused() ? GET_TEXT_F(MSG_RESUME_PRINT) : GET_TEXT_F(MSG_PAUSE_PRINT))
.enabled(
.button( PAUSE_POS, isPrintingFromMediaPaused() ? GET_TEXT_F(MSG_RESUME_PRINT) : GET_TEXT_F(MSG_PAUSE_PRINT))
.enabled(
#if ENABLED(SDSUPPORT)
isPrintingFromMedia()
#endif
)
.tag(8) .button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(MSG_STOP_PRINT))
.tag(8).button( STOP_POS, GET_TEXT_F(MSG_STOP_PRINT))
.tag(1).colors(action_btn)
.button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK));
#else // TOUCH_UI_PORTRAIT
.tag(2).enabled(1) .button( BTN_POS(1,1), BTN_SIZE(1,1), GET_TEXT_F(MSG_TEMPERATURE))
.tag(3).enabled(!isPrinting()).button( BTN_POS(1,2), BTN_SIZE(1,1), GET_TEXT_F(MSG_FILAMENTCHANGE))
.enabled(
#if ENABLED(BABYSTEPPING)
isPrintingFromMedia()
#endif
)
#if ENABLED(BABYSTEPPING)
.tag(4) .button( BTN_POS(2,1), BTN_SIZE(1,1), GET_TEXT_F(MSG_NUDGE_NOZZLE))
#else
.enabled(
#if HAS_BED_PROBE
isPrintingFromMedia()
#endif
)
.tag(4) .button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXT_F(MSG_ZPROBE_ZOFFSET))
#endif
.tag(5).enabled(1) .button( BTN_POS(2,2), BTN_SIZE(1,1), GET_TEXT_F(MSG_PRINT_SPEED))
.tag(isPrintingFromMediaPaused() ? 7 : 6)
.enabled(
#if ENABLED(SDSUPPORT)
isPrintingFromMedia()
#endif
)
.button( BTN_POS(1,3), BTN_SIZE(1,1), isPrintingFromMediaPaused() ? GET_TEXT_F(MSG_RESUME_PRINT) : GET_TEXT_F(MSG_PAUSE_PRINT))
.enabled(
#if ENABLED(SDSUPPORT)
isPrintingFromMedia()
#endif
)
.tag(8). button( BTN_POS(2,3), BTN_SIZE(1,1), GET_TEXT_F(MSG_STOP_PRINT))
.enabled(
#if ANY(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR)
1
#endif
)
.tag(9).button( BTN_POS(1,4), BTN_SIZE(1,1), GET_TEXT_F(MSG_FILAMENT))
.tag(1).colors(action_btn) .button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXT_F(MSG_BACK));
#endif
.button( BACK_POS, GET_TEXT_F(MSG_BACK));
}
#undef GRID_COLS
#undef GRID_ROWS
Expand Down Expand Up @@ -152,9 +130,11 @@ bool TuneMenu::onTouchEnd(uint8_t tag) {
current_screen.forget();
PUSH_SCREEN(StatusScreen);
break;
#if EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR)
case 9: GOTO_SCREEN(FilamentMenu); break;
#endif
case 9:
#if EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR)
GOTO_SCREEN(FilamentMenu);
#endif
break;
default:
return false;
}
Expand Down
4 changes: 4 additions & 0 deletions Marlin/src/lcd/language/language_en.h
Original file line number Diff line number Diff line change
Expand Up @@ -606,7 +606,11 @@ namespace Language_en {

PROGMEM Language_Str MSG_LEVEL_X_AXIS = _UxGT("Level X Axis");
PROGMEM Language_Str MSG_AUTO_CALIBRATE = _UxGT("Auto Calibrate");
#if ENABLED(TOUCH_UI_FTDI_EVE)
PROGMEM Language_Str MSG_HEATER_TIMEOUT = _UxGT("Idle timeout, temperature decreased. Press Okay to reheat and again to resume.");
#else
PROGMEM Language_Str MSG_HEATER_TIMEOUT = _UxGT("Heater Timeout");
#endif
PROGMEM Language_Str MSG_REHEAT = _UxGT("Reheat");
PROGMEM Language_Str MSG_REHEATING = _UxGT("Reheating...");
}
Expand Down
3 changes: 3 additions & 0 deletions config/default/Configuration.h
Original file line number Diff line number Diff line change
Expand Up @@ -2293,3 +2293,6 @@
//#define NO_MOTION_BEFORE_HOMING_WORKAROUND
//#define NO_TIME_AFTER_SD_PRINT
//#define EMI_MITIGATION
//#define SHORT_BUILD_VERSION
//#define TOUCH_UI_VERSION
//#define M125_FILAMENT_RUNOUT_WORKAROUND
3 changes: 3 additions & 0 deletions config/default/Configuration_DrunkenOctopus.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,6 @@
//#define NO_MOTION_BEFORE_HOMING_WORKAROUND
//#define NO_TIME_AFTER_SD_PRINT
//#define EMI_MITIGATION
//#define SHORT_BUILD_VERSION
//#define TOUCH_UI_VERSION
//#define M125_FILAMENT_RUNOUT_WORKAROUND
Loading

0 comments on commit 9b2d023

Please sign in to comment.