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