From 087fe0e9d6cf7ca7e870b6d343494afd558dbf42 Mon Sep 17 00:00:00 2001 From: Marcio Teixeira Date: Mon, 30 Sep 2019 21:15:48 -0600 Subject: [PATCH] Improve and fix LULZBOT_TOUCH_UI (#15434) - Add start print confirmation dialog box - Fix incorrect text colors in UI - Adjust bio printer UI --- .../lib/lulzbot/language/language_en.h | 11 +-- .../lib/lulzbot/language/languages.h | 26 ------- .../base_numeric_adjustment_screen.cpp | 47 +++++++------ .../lulzbot/screens/bio_confirm_home_e.cpp | 8 ++- .../lulzbot/screens/bio_confirm_home_xyz.cpp | 7 +- .../lib/lulzbot/screens/bio_main_menu.cpp | 32 +++++---- .../lib/lulzbot/screens/bio_status_screen.cpp | 2 +- .../lib/lulzbot/screens/bio_tune_menu.cpp | 22 +++--- .../confirm_start_print_dialog_box.cpp | 70 +++++++++++++++++++ .../lib/lulzbot/screens/files_screen.cpp | 22 +++--- .../lib/lulzbot/screens/screen_data.h | 1 + .../lib/lulzbot/screens/screens.cpp | 1 + .../lib/lulzbot/screens/screens.h | 23 +++++- .../lib/lulzbot/screens/string_format.cpp | 6 -- 14 files changed, 178 insertions(+), 100 deletions(-) delete mode 100644 Marlin/src/lcd/extensible_ui/lib/lulzbot/language/languages.h create mode 100644 Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/confirm_start_print_dialog_box.cpp diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_en.h b/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_en.h index 67904ceaef..d9bd63eb35 100644 --- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_en.h +++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_en.h @@ -184,6 +184,7 @@ namespace Language_en { PROGMEM Language_Str ERASING = u8"Erasing..."; PROGMEM Language_Str ERASED = u8"SPI flash erased"; PROGMEM Language_Str CALIBRATION_WARNING = u8"For best results, unload the filament and clean the hotend prior to starting calibration. Continue?"; + PROGMEM Language_Str START_PRINT_CONFIRMATION = u8"Start printing %s?"; PROGMEM Language_Str ABORT_WARNING = u8"Are you sure you want to cancel the print?"; PROGMEM Language_Str EXTRUDER_SELECTION = u8"Extruder Selection"; PROGMEM Language_Str CURRENT_TEMPERATURE = u8"Current Temp"; @@ -222,10 +223,12 @@ namespace Language_en { #ifdef LULZBOT_USE_BIOPRINTER_UI PROGMEM Language_Str MAIN_MENU = u8"Main Menu"; - PROGMEM Language_Str RELEASE_XY_AXIS = u8"Release XY Axis"; - PROGMEM Language_Str LOAD_SYRINGE = u8"Load Syringe"; + PROGMEM Language_Str MOVE_TO_HOME = u8"Move To Home"; + PROGMEM Language_Str RAISE_PLUNGER = u8"Raise Plunger"; + PROGMEM Language_Str RELEASE_XY_AXIS = u8"Release X and Y Axis"; + PROGMEM Language_Str AUTOLEVEL_X_AXIS = u8"Auto-level X Axis"; PROGMEM Language_Str BED_TEMPERATURE = u8"Bed Temperature"; - 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?"; + PROGMEM Language_Str HOME_XYZ_WARNING = u8"About to move to home position. Ensure the top and the bed of the printer are clear.\n\nContinue?"; + PROGMEM Language_Str HOME_E_WARNING = u8"About to re-home plunger and auto-level. Remove syringe prior to proceeding.\n\nContinue?"; #endif }; // namespace Language_en diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/languages.h b/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/languages.h deleted file mode 100644 index 03edc55157..0000000000 --- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/languages.h +++ /dev/null @@ -1,26 +0,0 @@ -/*************** - * languages.h * - ***************/ - -/**************************************************************************** - * Written By Marcio Teixeira 2019 - Aleph Objects, Inc. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 3 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * To view a copy of the GNU General Public License, go to the following * - * location: . * - ****************************************************************************/ - -#pragma once - -#include "language_en.h" -#include "language_de.h" -#include "language_fr.h" diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/base_numeric_adjustment_screen.cpp b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/base_numeric_adjustment_screen.cpp index 480315620c..1d4449097c 100644 --- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/base_numeric_adjustment_screen.cpp +++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/base_numeric_adjustment_screen.cpp @@ -85,12 +85,14 @@ void BaseNumericAdjustmentScreen::widgets_t::_button_style(CommandProcessor &cmd default: break; } - const bool rgb_changed = old_colors->rgb != new_colors->rgb; + const bool rgb_changed = (old_colors->rgb != new_colors->rgb) || + (_style == TEXT_LABEL && style != TEXT_LABEL) || + (_style != TEXT_LABEL && style == TEXT_LABEL); 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 (rgb_changed) cmd.cmd(COLOR_RGB(style == TEXT_LABEL ? bg_text_enabled : 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); @@ -122,6 +124,7 @@ BaseNumericAdjustmentScreen::widgets_t &BaseNumericAdjustmentScreen::widgets_t:: void BaseNumericAdjustmentScreen::widgets_t::heading(progmem_str label) { if (_what & BACKGROUND) { CommandProcessor cmd; + _button_style(cmd, TEXT_LABEL); cmd.font(font_medium) .text( #ifdef TOUCH_UI_PORTRAIT @@ -208,11 +211,12 @@ void BaseNumericAdjustmentScreen::widgets_t::adjuster_sram_val(uint8_t tag, prog CommandProcessor cmd; if (_what & BACKGROUND) { - _button_style(cmd, TEXT_AREA); + _button_style(cmd, TEXT_LABEL); cmd.tag(0) .font(font_small) - .text( BTN_POS(1,_line), BTN_SIZE(4,1), label) - .fgcolor(_color).button( BTN_POS(5,_line), BTN_SIZE(5,1), F(""), OPT_FLAT); + .text( BTN_POS(1,_line), BTN_SIZE(4,1), label); + _button_style(cmd, TEXT_AREA); + cmd.fgcolor(_color).button( BTN_POS(5,_line), BTN_SIZE(5,1), F(""), OPT_FLAT); } cmd.font(font_medium); @@ -267,12 +271,13 @@ void BaseNumericAdjustmentScreen::widgets_t::text_field(uint8_t tag, progmem_str CommandProcessor cmd; if (_what & BACKGROUND) { - _button_style(cmd, TEXT_AREA); + _button_style(cmd, TEXT_LABEL); cmd.enabled(1) .tag(0) .font(font_small) - .text( BTN_POS(1,_line), BTN_SIZE(4,1), label) - .fgcolor(_color) + .text( BTN_POS(1,_line), BTN_SIZE(4,1), label); + _button_style(cmd, TEXT_AREA); + cmd.fgcolor(_color) .tag(tag) .button( BTN_POS(5,_line), BTN_SIZE(9,1), F(""), OPT_FLAT); } @@ -297,14 +302,15 @@ void BaseNumericAdjustmentScreen::widgets_t::toggle(uint8_t tag, progmem_str lab CommandProcessor cmd; if (_what & BACKGROUND) { + _button_style(cmd, TEXT_LABEL); cmd.font(font_small) .text( - #ifdef TOUCH_UI_PORTRAIT - BTN_POS(1, _line), BTN_SIZE( 8,1), - #else - BTN_POS(1, _line), BTN_SIZE(10,1), - #endif - label + #ifdef TOUCH_UI_PORTRAIT + BTN_POS(1, _line), BTN_SIZE( 8,1), + #else + BTN_POS(1, _line), BTN_SIZE(10,1), + #endif + label ); } @@ -314,12 +320,12 @@ void BaseNumericAdjustmentScreen::widgets_t::toggle(uint8_t tag, progmem_str lab .enabled(is_enabled) .font(font_small) .toggle2( - #ifdef TOUCH_UI_PORTRAIT - BTN_POS( 9,_line), BTN_SIZE(5,1), - #else - BTN_POS(10,_line), BTN_SIZE(4,1), - #endif - GET_TEXTF(NO), GET_TEXTF(YES), value + #ifdef TOUCH_UI_PORTRAIT + BTN_POS( 9,_line), BTN_SIZE(5,1), + #else + BTN_POS(10,_line), BTN_SIZE(4,1), + #endif + GET_TEXTF(NO), GET_TEXTF(YES), value ); } @@ -330,6 +336,7 @@ void BaseNumericAdjustmentScreen::widgets_t::home_buttons(uint8_t tag) { CommandProcessor cmd; if (_what & BACKGROUND) { + _button_style(cmd, TEXT_LABEL); cmd.font(font_small) .text(BTN_POS(1, _line), BTN_SIZE(4,1), GET_TEXTF(HOME)); } diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_confirm_home_e.cpp b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_confirm_home_e.cpp index ec6b6045e7..ab4e9e5780 100644 --- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_confirm_home_e.cpp +++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_confirm_home_e.cpp @@ -29,14 +29,18 @@ using namespace FTDI; void BioConfirmHomeE::onRedraw(draw_mode_t) { - drawMessage(GET_TEXTF(HOMING_WARNING)); + drawMessage(GET_TEXTF(HOME_E_WARNING)); drawYesNoButtons(1); } bool BioConfirmHomeE::onTouchEnd(uint8_t tag) { switch (tag) { case 1: - SpinnerDialogBox::enqueueAndWait_P(F(LULZBOT_HOME_E_COMMANDS)); + SpinnerDialogBox::enqueueAndWait_P(F( + "G112\n" + LULZBOT_AXIS_LEVELING_COMMANDS "\n" + LULZBOT_PARK_AND_RELEASE_COMMANDS + )); current_screen.forget(); break; case 2: diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_confirm_home_xyz.cpp b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_confirm_home_xyz.cpp index 71fc02bd14..e1fa9793c0 100644 --- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_confirm_home_xyz.cpp +++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_confirm_home_xyz.cpp @@ -29,14 +29,17 @@ using namespace FTDI; void BioConfirmHomeXYZ::onRedraw(draw_mode_t) { - drawMessage(GET_TEXTF(LOADING_WARNING)); + drawMessage(GET_TEXTF(HOME_XYZ_WARNING)); drawYesNoButtons(1); } bool BioConfirmHomeXYZ::onTouchEnd(uint8_t tag) { switch (tag) { case 1: - SpinnerDialogBox::enqueueAndWait_P(F(LULZBOT_HOME_XYZ_COMMANDS)); + SpinnerDialogBox::enqueueAndWait_P(F( + "G28\n" + LULZBOT_PARK_AND_RELEASE_COMMANDS + )); current_screen.forget(); break; case 2: diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_main_menu.cpp b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_main_menu.cpp index 403376a180..3a2c654ccd 100644 --- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_main_menu.cpp +++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_main_menu.cpp @@ -30,7 +30,7 @@ using namespace FTDI; using namespace Theme; void MainMenu::onRedraw(draw_mode_t what) { - #define GRID_ROWS 8 + #define GRID_ROWS 10 #define GRID_COLS 2 if (what & BACKGROUND) { @@ -45,14 +45,16 @@ void MainMenu::onRedraw(draw_mode_t what) { .font(font_large).text( BTN_POS(1,1), BTN_SIZE(2,1), GET_TEXTF(MAIN_MENU)) .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(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)) - .tag(7).button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXTF(ABOUT_PRINTER)) + .tag(2).button( BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXTF(MOVE_TO_HOME)) + .tag(3).button( BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXTF(RAISE_PLUNGER)) + .tag(4).button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXTF(RELEASE_XY_AXIS)) + .tag(5).button( BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXTF(AUTOLEVEL_X_AXIS)) + .tag(6).button( BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXTF(BED_TEMPERATURE)) + .tag(7).button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXTF(INTERFACE_SETTINGS)) + .tag(8).button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXTF(ADVANCED_SETTINGS)) + .tag(9).button( BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXTF(ABOUT_PRINTER)) .colors(action_btn) - .tag(1).button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXTF(BACK)); + .tag(1).button( BTN_POS(1,10), BTN_SIZE(2,1), GET_TEXTF(BACK)); } #undef GRID_COLS @@ -62,14 +64,18 @@ void MainMenu::onRedraw(draw_mode_t what) { bool MainMenu::onTouchEnd(uint8_t tag) { using namespace ExtUI; + const bool e_homed = isAxisPositionKnown(E0); + switch (tag) { case 1: SaveSettingsDialogBox::promptToSaveSettings(); break; case 2: GOTO_SCREEN(BioConfirmHomeXYZ); break; - case 3: StatusScreen::unlockMotors(); break; - case 4: GOTO_SCREEN(TemperatureScreen); break; - case 5: GOTO_SCREEN(InterfaceSettingsScreen); break; - case 6: GOTO_SCREEN(AdvancedSettingsMenu); break; - case 7: GOTO_SCREEN(AboutScreen); break; + case 3: SpinnerDialogBox::enqueueAndWait_P(e_homed ? F("G0 E0 F120") : F("G112")); break; + case 4: StatusScreen::unlockMotors(); break; + case 5: SpinnerDialogBox::enqueueAndWait_P(F(LULZBOT_AXIS_LEVELING_COMMANDS)); break; + case 6: GOTO_SCREEN(TemperatureScreen); break; + case 7: GOTO_SCREEN(InterfaceSettingsScreen); break; + case 8: GOTO_SCREEN(AdvancedSettingsMenu); break; + case 9: GOTO_SCREEN(AboutScreen); break; default: return false; } diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_status_screen.cpp b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_status_screen.cpp index 1efce50a16..6c8fb384b7 100644 --- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_status_screen.cpp +++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_status_screen.cpp @@ -275,7 +275,7 @@ bool StatusScreen::onTouchEnd(uint8_t tag) { break; case 9: GOTO_SCREEN(FilesScreen); break; case 10: GOTO_SCREEN(MainMenu); break; - case 13: SpinnerDialogBox::enqueueAndWait_P(F("G112")); break; + case 13: GOTO_SCREEN(BioConfirmHomeE); break; case 14: SpinnerDialogBox::enqueueAndWait_P(F("G28 Z")); break; case 15: GOTO_SCREEN(TemperatureScreen); break; case 16: fine_motion = !fine_motion; break; diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_tune_menu.cpp b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_tune_menu.cpp index 2b22876970..04c50597f3 100644 --- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_tune_menu.cpp +++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_tune_menu.cpp @@ -38,7 +38,7 @@ void TuneMenu::onRedraw(draw_mode_t what) { .font(font_medium); } - #define GRID_ROWS 7 + #define GRID_ROWS 8 #define GRID_COLS 2 if (what & FOREGROUND) { @@ -55,9 +55,10 @@ void TuneMenu::onRedraw(draw_mode_t what) { .enabled(false) #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(RELEASE_XY_AXIS)) - .colors(action_btn) .tag(1).button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXTF(BACK)); + .enabled(!isPrinting()).tag(5).button( BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXTF(MOVE_TO_HOME)) + .enabled(!isPrinting()).tag(6).button( BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXTF(RAISE_PLUNGER)) + .enabled(!isPrinting()).tag(7).button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXTF(RELEASE_XY_AXIS)) + .colors(action_btn) .tag(1).button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXTF(BACK)); } #undef GRID_COLS #undef GRID_ROWS @@ -65,12 +66,13 @@ void TuneMenu::onRedraw(draw_mode_t what) { bool TuneMenu::onTouchEnd(uint8_t tag) { switch (tag) { - case 1: GOTO_PREVIOUS(); break; - case 2: GOTO_SCREEN(FeedratePercentScreen); break; - case 3: GOTO_SCREEN(TemperatureScreen); break; - case 4: GOTO_SCREEN(NudgeNozzleScreen); break; - case 5: GOTO_SCREEN(BioConfirmHomeXYZ); break; - case 6: StatusScreen::unlockMotors(); break; + case 1: GOTO_PREVIOUS(); break; + case 2: GOTO_SCREEN(FeedratePercentScreen); break; + 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 7: StatusScreen::unlockMotors(); break; default: return false; } diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/confirm_start_print_dialog_box.cpp b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/confirm_start_print_dialog_box.cpp new file mode 100644 index 0000000000..653d988b0c --- /dev/null +++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/confirm_start_print_dialog_box.cpp @@ -0,0 +1,70 @@ +/************************************** + * confirm_start_print_dialog_box.cpp * + **************************************/ + +/**************************************************************************** + * Written By Mark Pelletier 2017 - Aleph Objects, Inc. * + * Written By Marcio Teixeira 2018 - Aleph Objects, Inc. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * To view a copy of the GNU General Public License, go to the following * + * location: . * + ****************************************************************************/ + +#include "../config.h" + +#if ENABLED(LULZBOT_TOUCH_UI) + +#include "screens.h" +#include "screen_data.h" + +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(START_PRINT_CONFIRMATION)) + strlen(filename) + 1]; + sprintf_P(buffer, GET_TEXT(START_PRINT_CONFIRMATION), filename); + drawMessage((const char *)buffer); + drawYesNoButtons(1); +} + +bool ConfirmStartPrintDialogBox::onTouchEnd(uint8_t tag) { + switch (tag) { + case 1: + printFile(getShortFilename()); + StatusScreen::setStatusMessage(GET_TEXTF(PRINT_STARTING)); + GOTO_SCREEN(StatusScreen); + return true; + case 2: GOTO_PREVIOUS(); return true; + default: return false; + } +} + +const char *ConfirmStartPrintDialogBox::getFilename(bool longName) { + FileList files; + files.seek(screen_data.ConfirmStartPrintDialogBox.file_index, true); + return longName ? files.longFilename() : files.shortFilename(); +} + +void ConfirmStartPrintDialogBox::show(uint8_t file_index) { + screen_data.ConfirmStartPrintDialogBox.file_index = file_index; + GOTO_SCREEN(ConfirmStartPrintDialogBox); +} + +#endif // LULZBOT_TOUCH_UI diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/files_screen.cpp b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/files_screen.cpp index f562573bfd..db2067cbe7 100644 --- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/files_screen.cpp +++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/files_screen.cpp @@ -41,21 +41,15 @@ void FilesScreen::onEntry() { BaseScreen::onEntry(); } -const char *FilesScreen::getSelectedShortFilename() { +const char *FilesScreen::getSelectedFilename(bool longName) { FileList files; - files.seek(getFileForTag(screen_data.FilesScreen.selected_tag), true); - return files.shortFilename(); -} - -const char *FilesScreen::getSelectedLongFilename() { - FileList files; - files.seek(getFileForTag(screen_data.FilesScreen.selected_tag), true); - return files.longFilename(); + files.seek(getSelectedFileIndex(), true); + return longName ? files.longFilename() : files.shortFilename(); } void FilesScreen::drawSelectedFile() { FileList files; - files.seek(getFileForTag(screen_data.FilesScreen.selected_tag), true); + files.seek(getSelectedFileIndex(), true); screen_data.FilesScreen.flags.is_dir = files.isDir(); drawFileButton( files.filename(), @@ -65,6 +59,10 @@ void FilesScreen::drawSelectedFile() { ); } +uint16_t FilesScreen::getSelectedFileIndex() { + return getFileForTag(screen_data.FilesScreen.selected_tag); +} + uint16_t FilesScreen::getFileForTag(uint8_t tag) { return screen_data.FilesScreen.cur_page * files_per_page + tag - 2; } @@ -213,9 +211,7 @@ bool FilesScreen::onTouchEnd(uint8_t tag) { } break; case 243: - printFile(getSelectedShortFilename()); - StatusScreen::setStatusMessage(GET_TEXTF(PRINT_STARTING)); - GOTO_SCREEN(StatusScreen); + ConfirmStartPrintDialogBox::show(getSelectedFileIndex()); return true; case 244: { diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screen_data.h b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screen_data.h index adaccc8e5a..65d6889a6a 100644 --- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screen_data.h +++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screen_data.h @@ -35,6 +35,7 @@ union screen_data_t { struct {char passcode[5];} LockScreen; struct {bool isError;} AlertDialogBox; struct {bool auto_hide;} SpinnerDialogBox; + struct {uint8_t file_index;} ConfirmStartPrintDialogBox; struct { uint8_t e_tag, t_tag, repeat_tag; ExtUI::extruder_t saved_extruder; diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screens.cpp b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screens.cpp index 59d4069d6c..338ec71827 100644 --- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screens.cpp +++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screens.cpp @@ -43,6 +43,7 @@ SCREEN_TABLE { DECL_SCREEN(ConfirmUserRequestAlertBox), DECL_SCREEN(RestoreFailsafeDialogBox), DECL_SCREEN(SaveSettingsDialogBox), + DECL_SCREEN(ConfirmStartPrintDialogBox), DECL_SCREEN(ConfirmAbortPrintDialogBox), #if ENABLED(CALIBRATION_GCODE) DECL_SCREEN(ConfirmAutoCalibrationDialogBox), diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screens.h b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screens.h index 20a1809014..20bb5eb76e 100644 --- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screens.h +++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screens.h @@ -179,6 +179,20 @@ class SaveSettingsDialogBox : public DialogBoxBaseClass, public UncachedScreen { static void settingsChanged() {needs_save = true;} }; +class ConfirmStartPrintDialogBox : public DialogBoxBaseClass, public UncachedScreen { + private: + inline static const char *getShortFilename() {return getFilename(false);} + inline static const char *getLongFilename() {return getFilename(true);} + + static const char *getFilename(bool longName); + public: + static void onEntry(); + static void onRedraw(draw_mode_t); + static bool onTouchEnd(uint8_t); + + static void show(uint8_t file_index); +}; + class ConfirmAbortPrintDialogBox : public DialogBoxBaseClass, public UncachedScreen { public: static void onRedraw(draw_mode_t); @@ -360,7 +374,8 @@ class BaseNumericAdjustmentScreen : public BaseScreen { BTN_ACTION, BTN_TOGGLE, BTN_DISABLED, - TEXT_AREA + TEXT_AREA, + TEXT_LABEL } _style; protected: @@ -637,9 +652,11 @@ class FilesScreen : public BaseScreen, public CachedScreen