Skip to content

Commit

Permalink
🐛 Fix FTDI Eve Touch UI progmem strings (#22439)
Browse files Browse the repository at this point in the history
  • Loading branch information
marciot authored Jul 28, 2021
1 parent 885c63c commit 4111d1d
Show file tree
Hide file tree
Showing 18 changed files with 53 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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(PSTR(
SpinnerDialogBox::enqueueAndWait(F(
"G28 E\n"
AXIS_LEVELING_COMMANDS "\n"
PARK_AND_RELEASE_COMMANDS
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ bool BioConfirmHomeXYZ::onTouchEnd(uint8_t tag) {
switch (tag) {
case 1:
#ifdef PARK_AND_RELEASE_COMMANDS
SpinnerDialogBox::enqueueAndWait_P(PSTR(
SpinnerDialogBox::enqueueAndWait(F(
"G28\n"
PARK_AND_RELEASE_COMMANDS
));
Expand Down
18 changes: 9 additions & 9 deletions Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/main_menu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,17 +67,17 @@ bool MainMenu::onTouchEnd(uint8_t tag) {
const bool e_homed = isAxisPositionKnown(E0);

switch (tag) {
case 1: SaveSettingsDialogBox::promptToSaveSettings(); break;
case 2: GOTO_SCREEN(BioConfirmHomeXYZ); break;
case 3: SpinnerDialogBox::enqueueAndWait_P(e_homed ? PSTR("G0 E0 F120") : PSTR("G112")); break;
case 4: StatusScreen::unlockMotors(); break;
case 1: SaveSettingsDialogBox::promptToSaveSettings(); break;
case 2: GOTO_SCREEN(BioConfirmHomeXYZ); 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(PSTR(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;
case 8: GOTO_SCREEN(AdvancedSettingsMenu); break;
case 9: GOTO_SCREEN(AboutScreen); 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;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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(PSTR("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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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(PSTR("G0 E0 F120")); break;
case 6: SpinnerDialogBox::enqueueAndWait(F("G0 E0 F120")); break;
case 7: StatusScreen::unlockMotors(); break;
default:
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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(PSTR("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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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"
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ bool StatusScreen::onTouchStart(uint8_t) {

bool StatusScreen::onTouchEnd(uint8_t tag) {
switch (tag) {
case 1: SpinnerDialogBox::enqueueAndWait_P(PSTR("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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,15 @@ 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;
GOTO_SCREEN(AlertDialogBox);
}

template<typename T>
void AlertDialogBox::showError(const T message) {
void AlertDialogBox::showError(T message) {
drawMessage(message);
storeBackground();
mydata.isError = true;
Expand All @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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(PSTR("G28\nG29 S1"));
SpinnerDialogBox::enqueueAndWait(F("G28\nG29 S1"));
// After the spinner, go to this screen.
current_screen.forget();
PUSH_SCREEN(BedMeshEditScreen);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ 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))
Expand All @@ -59,12 +59,16 @@ 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);
}

template void DialogBoxBaseClass::drawButton(const char *);
template void DialogBoxBaseClass::drawButton(progmem_str);

void DialogBoxBaseClass::drawSpinner() {
CommandProcessor cmd;
cmd.cmd(COLOR_RGB(bg_text_enabled))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@

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:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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(PSTR("G34")); break;
case 2: SpinnerDialogBox::enqueueAndWait(F("G34")); break;
#endif
#if HAS_BED_PROBE
case 3:
Expand All @@ -114,7 +114,7 @@ bool LevelingMenu::onTouchEnd(uint8_t tag) {
#if ENABLED(AUTO_BED_LEVELING_UBL)
BedMeshViewScreen::doProbe();
#else
SpinnerDialogBox::enqueueAndWait_P(PSTR(BED_LEVELING_COMMANDS));
SpinnerDialogBox::enqueueAndWait(F(BED_LEVELING_COMMANDS));
#endif
break;
#endif
Expand All @@ -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(PSTR("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;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ bool MainMenu::onTouchEnd(uint8_t tag) {

switch (tag) {
case 1: SaveSettingsDialogBox::promptToSaveSettings(); break;
case 2: SpinnerDialogBox::enqueueAndWait_P(PSTR("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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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(PSTR("G28X")); break;
case 21: SpinnerDialogBox::enqueueAndWait_P(PSTR("G28Y")); break;
case 22: SpinnerDialogBox::enqueueAndWait_P(PSTR("G28Z")); break;
case 23: SpinnerDialogBox::enqueueAndWait_P(PSTR("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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ constexpr static SpinnerDialogBoxData &mydata = screen_data.SpinnerDialogBox;
void SpinnerDialogBox::onRedraw(draw_mode_t) {
}

void SpinnerDialogBox::show(const progmem_str message) {
void SpinnerDialogBox::show(progmem_str message) {
drawMessage(message);
drawSpinner();
storeBackground();
Expand All @@ -46,14 +46,17 @@ void SpinnerDialogBox::hide() {
cmd.stop().execute();
}

void SpinnerDialogBox::enqueueAndWait_P(const progmem_str commands) {
enqueueAndWait_P(GET_TEXT_F(MSG_PLEASE_WAIT), commands);
void SpinnerDialogBox::enqueueAndWait(progmem_str message, progmem_str commands) {
show(message);
GOTO_SCREEN(SpinnerDialogBox);
ExtUI::injectCommands_P((const char*)commands);
mydata.auto_hide = true;
}

void SpinnerDialogBox::enqueueAndWait_P(const progmem_str message, const progmem_str commands) {
void SpinnerDialogBox::enqueueAndWait(progmem_str message, char *commands) {
show(message);
GOTO_SCREEN(SpinnerDialogBox);
ExtUI::injectCommands_P((const char*)commands);
ExtUI::injectCommands(commands);
mydata.auto_hide = true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,12 @@ class SpinnerDialogBox : public DialogBoxBaseClass, public CachedScreen<SPINNER_
static void onRedraw(draw_mode_t);
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);
};
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down

0 comments on commit 4111d1d

Please sign in to comment.