Improvement and fixes to FTDI touch UI
- Fixed incorrect LCD text string - Fixed incorrect refresh of filament change screens - Allow host control via touch UI - Updates to leveling menu - Modified ExtUI::isPrinting() to check if the job timer is running - Added ExtUI method to check whether a host print is paused
This commit is contained in:
parent
54ec6a0ce2
commit
b6856dcb99
@ -119,7 +119,7 @@ namespace Language_en {
|
|||||||
PROGMEM Language_Str MSG_CAUTION = u8"Caution:";
|
PROGMEM Language_Str MSG_CAUTION = u8"Caution:";
|
||||||
PROGMEM Language_Str MSG_HOT = u8"Hot!";
|
PROGMEM Language_Str MSG_HOT = u8"Hot!";
|
||||||
PROGMEM Language_Str MSG_UNLOAD_FILAMENT = u8"Unload/Retract";
|
PROGMEM Language_Str MSG_UNLOAD_FILAMENT = u8"Unload/Retract";
|
||||||
PROGMEM Language_Str MSG_LOAD_FILAMENT = u8"Load/Extruder";
|
PROGMEM Language_Str MSG_LOAD_FILAMENT = u8"Load/Extrude";
|
||||||
PROGMEM Language_Str MSG_MOMENTARY = u8"Momentary";
|
PROGMEM Language_Str MSG_MOMENTARY = u8"Momentary";
|
||||||
PROGMEM Language_Str MSG_CONTINUOUS = u8"Continuous";
|
PROGMEM Language_Str MSG_CONTINUOUS = u8"Continuous";
|
||||||
PROGMEM Language_Str MSG_PLEASE_WAIT = u8"Please wait...";
|
PROGMEM Language_Str MSG_PLEASE_WAIT = u8"Please wait...";
|
||||||
|
@ -84,6 +84,7 @@ void ChangeFilamentScreen::drawTempGradient(uint16_t x, uint16_t y, uint16_t w,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ChangeFilamentScreen::onEntry() {
|
void ChangeFilamentScreen::onEntry() {
|
||||||
|
BaseScreen::onEntry();
|
||||||
screen_data.ChangeFilamentScreen.e_tag = ExtUI::getActiveTool() + 10;
|
screen_data.ChangeFilamentScreen.e_tag = ExtUI::getActiveTool() + 10;
|
||||||
screen_data.ChangeFilamentScreen.t_tag = 0;
|
screen_data.ChangeFilamentScreen.t_tag = 0;
|
||||||
screen_data.ChangeFilamentScreen.repeat_tag = 0;
|
screen_data.ChangeFilamentScreen.repeat_tag = 0;
|
||||||
|
@ -26,6 +26,8 @@
|
|||||||
|
|
||||||
#include "screens.h"
|
#include "screens.h"
|
||||||
|
|
||||||
|
#include "../../../../../feature/host_actions.h"
|
||||||
|
|
||||||
using namespace ExtUI;
|
using namespace ExtUI;
|
||||||
|
|
||||||
void ConfirmAbortPrintDialogBox::onRedraw(draw_mode_t) {
|
void ConfirmAbortPrintDialogBox::onRedraw(draw_mode_t) {
|
||||||
@ -37,7 +39,11 @@ bool ConfirmAbortPrintDialogBox::onTouchEnd(uint8_t tag) {
|
|||||||
switch (tag) {
|
switch (tag) {
|
||||||
case 1:
|
case 1:
|
||||||
GOTO_PREVIOUS();
|
GOTO_PREVIOUS();
|
||||||
stopPrint();
|
if (ExtUI::isPrintingFromMedia())
|
||||||
|
ExtUI::stopPrint();
|
||||||
|
#ifdef ACTION_ON_CANCEL
|
||||||
|
else host_action_cancel();
|
||||||
|
#endif
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return DialogBoxBaseClass::onTouchEnd(tag);
|
return DialogBoxBaseClass::onTouchEnd(tag);
|
||||||
|
@ -35,29 +35,27 @@ using namespace ExtUI;
|
|||||||
using namespace Theme;
|
using namespace Theme;
|
||||||
|
|
||||||
#ifdef TOUCH_UI_PORTRAIT
|
#ifdef TOUCH_UI_PORTRAIT
|
||||||
#define GRID_ROWS 10
|
#define GRID_ROWS 9
|
||||||
#define GRID_COLS 2
|
#define GRID_COLS 2
|
||||||
#define TITLE_POS BTN_POS(1,1), BTN_SIZE(2,1)
|
#define TITLE_POS BTN_POS(1,1), BTN_SIZE(2,1)
|
||||||
#define LEVEL_BED_POS BTN_POS(1,2), BTN_SIZE(2,1)
|
#define LEVEL_AXIS_POS BTN_POS(1,2), BTN_SIZE(2,1)
|
||||||
#define LEVEL_AXIS_POS BTN_POS(1,3), BTN_SIZE(2,1)
|
#define LEVEL_BED_POS BTN_POS(1,3), BTN_SIZE(2,1)
|
||||||
#define Z_AUTO_ALIGN_POS BTN_POS(1,4), BTN_SIZE(2,1)
|
#define SHOW_MESH_POS BTN_POS(1,4), BTN_SIZE(2,1)
|
||||||
#define SHOW_MESH_POS BTN_POS(1,5), BTN_SIZE(2,1)
|
|
||||||
#define BLTOUCH_TITLE_POS BTN_POS(1,7), BTN_SIZE(2,1)
|
|
||||||
#define BLTOUCH_RESET_POS BTN_POS(1,8), BTN_SIZE(1,1)
|
|
||||||
#define BLTOUCH_TEST_POS BTN_POS(2,8), BTN_SIZE(1,1)
|
|
||||||
#define BACK_POS BTN_POS(1,10), BTN_SIZE(2,1)
|
|
||||||
#else
|
|
||||||
#define GRID_ROWS 8
|
|
||||||
#define GRID_COLS 2
|
|
||||||
#define TITLE_POS BTN_POS(1,1), BTN_SIZE(2,1)
|
|
||||||
#define LEVEL_BED_POS BTN_POS(1,2), BTN_SIZE(2,1)
|
|
||||||
#define LEVEL_AXIS_POS BTN_POS(1,3), BTN_SIZE(2,1)
|
|
||||||
#define Z_AUTO_ALIGN_POS BTN_POS(1,4), BTN_SIZE(2,1)
|
|
||||||
#define SHOW_MESH_POS BTN_POS(1,5), BTN_SIZE(2,1)
|
|
||||||
#define BLTOUCH_TITLE_POS BTN_POS(1,6), BTN_SIZE(2,1)
|
#define BLTOUCH_TITLE_POS BTN_POS(1,6), BTN_SIZE(2,1)
|
||||||
#define BLTOUCH_RESET_POS BTN_POS(1,7), BTN_SIZE(1,1)
|
#define BLTOUCH_RESET_POS BTN_POS(1,7), BTN_SIZE(1,1)
|
||||||
#define BLTOUCH_TEST_POS BTN_POS(2,7), BTN_SIZE(1,1)
|
#define BLTOUCH_TEST_POS BTN_POS(2,7), BTN_SIZE(1,1)
|
||||||
#define BACK_POS BTN_POS(1,8), BTN_SIZE(2,1)
|
#define BACK_POS BTN_POS(1,9), BTN_SIZE(2,1)
|
||||||
|
#else
|
||||||
|
#define GRID_ROWS 7
|
||||||
|
#define GRID_COLS 2
|
||||||
|
#define TITLE_POS BTN_POS(1,1), BTN_SIZE(2,1)
|
||||||
|
#define LEVEL_AXIS_POS BTN_POS(1,2), BTN_SIZE(2,1)
|
||||||
|
#define LEVEL_BED_POS BTN_POS(1,3), BTN_SIZE(2,1)
|
||||||
|
#define SHOW_MESH_POS BTN_POS(1,4), BTN_SIZE(2,1)
|
||||||
|
#define BLTOUCH_TITLE_POS BTN_POS(1,5), BTN_SIZE(2,1)
|
||||||
|
#define BLTOUCH_RESET_POS BTN_POS(1,6), BTN_SIZE(1,1)
|
||||||
|
#define BLTOUCH_TEST_POS BTN_POS(2,6), BTN_SIZE(1,1)
|
||||||
|
#define BACK_POS BTN_POS(1,7), BTN_SIZE(2,1)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void LevelingMenu::onRedraw(draw_mode_t what) {
|
void LevelingMenu::onRedraw(draw_mode_t what) {
|
||||||
@ -73,21 +71,16 @@ void LevelingMenu::onRedraw(draw_mode_t what) {
|
|||||||
cmd.font(font_large)
|
cmd.font(font_large)
|
||||||
.text(TITLE_POS, GET_TEXT_F(MSG_LEVELING))
|
.text(TITLE_POS, GET_TEXT_F(MSG_LEVELING))
|
||||||
.font(font_medium).colors(normal_btn)
|
.font(font_medium).colors(normal_btn)
|
||||||
.tag(2).button(LEVEL_BED_POS, GET_TEXT_F(MSG_LEVEL_BED))
|
#if EITHER(Z_STEPPER_AUTO_ALIGN,MECHANICAL_GANTRY_CALIBRATION)
|
||||||
.enabled(
|
.tag(2).button(LEVEL_AXIS_POS, GET_TEXT_F(MSG_AUTOLEVEL_X_AXIS))
|
||||||
#ifdef AXIS_LEVELING_COMMANDS
|
#endif
|
||||||
1
|
.tag(3).button(LEVEL_BED_POS, GET_TEXT_F(MSG_LEVEL_BED))
|
||||||
#endif
|
|
||||||
)
|
|
||||||
.tag(3).button(LEVEL_AXIS_POS, GET_TEXT_F(MSG_AUTOLEVEL_X_AXIS))
|
|
||||||
.enabled(ENABLED(Z_STEPPER_AUTO_ALIGN))
|
|
||||||
.tag(4).button(Z_AUTO_ALIGN_POS, GET_TEXT_F(MSG_AUTO_Z_ALIGN))
|
|
||||||
.enabled(ENABLED(HAS_MESH))
|
.enabled(ENABLED(HAS_MESH))
|
||||||
.tag(5).button(SHOW_MESH_POS, GET_TEXT_F(MSG_SHOW_MESH));
|
.tag(4).button(SHOW_MESH_POS, GET_TEXT_F(MSG_SHOW_MESH));
|
||||||
#if ENABLED(BLTOUCH)
|
#if ENABLED(BLTOUCH)
|
||||||
cmd.text(BLTOUCH_TITLE_POS, GET_TEXT_F(MSG_BLTOUCH))
|
cmd.text(BLTOUCH_TITLE_POS, GET_TEXT_F(MSG_BLTOUCH))
|
||||||
.tag(6).button(BLTOUCH_RESET_POS, GET_TEXT_F(MSG_BLTOUCH_RESET))
|
.tag(5).button(BLTOUCH_RESET_POS, GET_TEXT_F(MSG_BLTOUCH_RESET))
|
||||||
.tag(7).button(BLTOUCH_TEST_POS, GET_TEXT_F(MSG_BLTOUCH_SELFTEST));
|
.tag(6).button(BLTOUCH_TEST_POS, GET_TEXT_F(MSG_BLTOUCH_SELFTEST));
|
||||||
#endif
|
#endif
|
||||||
cmd.colors(action_btn)
|
cmd.colors(action_btn)
|
||||||
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
|
.tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
|
||||||
@ -97,25 +90,25 @@ void LevelingMenu::onRedraw(draw_mode_t what) {
|
|||||||
bool LevelingMenu::onTouchEnd(uint8_t tag) {
|
bool LevelingMenu::onTouchEnd(uint8_t tag) {
|
||||||
switch (tag) {
|
switch (tag) {
|
||||||
case 1: GOTO_PREVIOUS(); break;
|
case 1: GOTO_PREVIOUS(); break;
|
||||||
case 2:
|
#if EITHER(Z_STEPPER_AUTO_ALIGN,MECHANICAL_GANTRY_CALIBRATION)
|
||||||
|
case 2: SpinnerDialogBox::enqueueAndWait_P(F("G34")); break;
|
||||||
|
#endif
|
||||||
|
case 3:
|
||||||
|
#ifndef BED_LEVELING_COMMANDS
|
||||||
|
#define BED_LEVELING_COMMANDS "G29"
|
||||||
|
#endif
|
||||||
#if HAS_MESH
|
#if HAS_MESH
|
||||||
BedMeshScreen::startMeshProbe();
|
BedMeshScreen::startMeshProbe();
|
||||||
#else
|
#else
|
||||||
SpinnerDialogBox::enqueueAndWait_P(F(BED_LEVELING_COMMANDS));
|
SpinnerDialogBox::enqueueAndWait_P(F(BED_LEVELING_COMMANDS));
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
#ifdef AXIS_LEVELING_COMMANDS
|
|
||||||
case 3: SpinnerDialogBox::enqueueAndWait_P(F(AXIS_LEVELING_COMMANDS)); break;
|
|
||||||
#endif
|
|
||||||
#if ENABLED(Z_STEPPER_AUTO_ALIGN)
|
|
||||||
case 4: SpinnerDialogBox::enqueueAndWait_P(F("G34")); break;
|
|
||||||
#endif
|
|
||||||
#if HAS_MESH
|
#if HAS_MESH
|
||||||
case 5: GOTO_SCREEN(BedMeshScreen); break;
|
case 4: GOTO_SCREEN(BedMeshScreen); break;
|
||||||
#endif
|
#endif
|
||||||
#if ENABLED(BLTOUCH)
|
#if ENABLED(BLTOUCH)
|
||||||
case 6: injectCommands_P(PSTR("M280 P0 S60")); break;
|
case 5: injectCommands_P(PSTR("M280 P0 S60")); break;
|
||||||
case 7: SpinnerDialogBox::enqueueAndWait_P(F("M280 P0 S90\nG4 P100\nM280 P0 S120")); break;
|
case 6: SpinnerDialogBox::enqueueAndWait_P(F("M280 P0 S90\nG4 P100\nM280 P0 S120")); break;
|
||||||
#endif
|
#endif
|
||||||
default: return false;
|
default: return false;
|
||||||
}
|
}
|
||||||
|
@ -365,6 +365,9 @@ class MainMenu : public BaseScreen, public CachedScreen<MENU_SCREEN_CACHE> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
class TuneMenu : public BaseScreen, public CachedScreen<TUNE_SCREEN_CACHE> {
|
class TuneMenu : public BaseScreen, public CachedScreen<TUNE_SCREEN_CACHE> {
|
||||||
|
private:
|
||||||
|
static void pausePrint();
|
||||||
|
static void resumePrint();
|
||||||
public:
|
public:
|
||||||
static void onRedraw(draw_mode_t);
|
static void onRedraw(draw_mode_t);
|
||||||
static bool onTouchEnd(uint8_t tag);
|
static bool onTouchEnd(uint8_t tag);
|
||||||
|
@ -26,6 +26,8 @@
|
|||||||
|
|
||||||
#include "screens.h"
|
#include "screens.h"
|
||||||
|
|
||||||
|
#include "../../../../../feature/host_actions.h"
|
||||||
|
|
||||||
using namespace FTDI;
|
using namespace FTDI;
|
||||||
using namespace Theme;
|
using namespace Theme;
|
||||||
|
|
||||||
@ -63,23 +65,24 @@ void TuneMenu::onRedraw(draw_mode_t what) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (what & FOREGROUND) {
|
if (what & FOREGROUND) {
|
||||||
using namespace ExtUI;
|
const bool sdOrHostPrinting = ExtUI::isPrinting();
|
||||||
|
const bool sdOrHostPaused = ExtUI::isPrintingPaused();
|
||||||
|
|
||||||
CommandProcessor cmd;
|
CommandProcessor cmd;
|
||||||
cmd.colors(normal_btn)
|
cmd.colors(normal_btn)
|
||||||
.font(font_medium)
|
.font(font_medium)
|
||||||
.tag(2).button( TEMPERATURE_POS, GET_TEXT_F(MSG_TEMPERATURE))
|
.tag(2).button( TEMPERATURE_POS, GET_TEXT_F(MSG_TEMPERATURE))
|
||||||
.enabled(!isPrinting() || isPrintingFromMediaPaused())
|
.enabled(!sdOrHostPrinting || sdOrHostPaused)
|
||||||
.tag(3).button( FIL_CHANGE_POS, GET_TEXT_F(MSG_FILAMENTCHANGE))
|
.tag(3).button( FIL_CHANGE_POS, GET_TEXT_F(MSG_FILAMENTCHANGE))
|
||||||
.enabled(EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR))
|
.enabled(EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR))
|
||||||
.tag(9).button( FILAMENT_POS, GET_TEXT_F(MSG_FILAMENT))
|
.tag(9).button( FILAMENT_POS, GET_TEXT_F(MSG_FILAMENT))
|
||||||
.enabled(EITHER(HAS_BED_PROBE, BABYSTEPPING))
|
.enabled(EITHER(HAS_BED_PROBE, BABYSTEPPING))
|
||||||
.tag(4).button( NUDGE_NOZ_POS, GET_TEXT_F(TERN(BABYSTEPPING, MSG_NUDGE_NOZZLE, MSG_ZPROBE_ZOFFSET)))
|
.tag(4).button( NUDGE_NOZ_POS, GET_TEXT_F(TERN(BABYSTEPPING, MSG_NUDGE_NOZZLE, MSG_ZPROBE_ZOFFSET)))
|
||||||
.tag(5).button( SPEED_POS, GET_TEXT_F(MSG_PRINT_SPEED))
|
.tag(5).button( SPEED_POS, GET_TEXT_F(MSG_PRINT_SPEED))
|
||||||
.tag(isPrintingFromMediaPaused() ? 7 : 6)
|
.enabled(sdOrHostPrinting)
|
||||||
.enabled(TERN0(SDSUPPORT, isPrintingFromMedia()))
|
.tag(sdOrHostPaused ? 7 : 6)
|
||||||
.button( PAUSE_POS, isPrintingFromMediaPaused() ? GET_TEXT_F(MSG_RESUME_PRINT) : GET_TEXT_F(MSG_PAUSE_PRINT))
|
.button( PAUSE_POS, sdOrHostPaused ? GET_TEXT_F(MSG_RESUME_PRINT) : GET_TEXT_F(MSG_PAUSE_PRINT))
|
||||||
.enabled(TERN0(SDSUPPORT, isPrintingFromMedia()))
|
.enabled(sdOrHostPrinting)
|
||||||
.tag(8).button( STOP_POS, GET_TEXT_F(MSG_STOP_PRINT))
|
.tag(8).button( STOP_POS, GET_TEXT_F(MSG_STOP_PRINT))
|
||||||
.enabled(ENABLED(CASE_LIGHT_ENABLE))
|
.enabled(ENABLED(CASE_LIGHT_ENABLE))
|
||||||
.tag(10).button( CASE_LIGHT_POS, GET_TEXT_F(MSG_CASE_LIGHT))
|
.tag(10).button( CASE_LIGHT_POS, GET_TEXT_F(MSG_CASE_LIGHT))
|
||||||
@ -94,26 +97,26 @@ bool TuneMenu::onTouchEnd(uint8_t tag) {
|
|||||||
using namespace Theme;
|
using namespace Theme;
|
||||||
using namespace ExtUI;
|
using namespace ExtUI;
|
||||||
switch (tag) {
|
switch (tag) {
|
||||||
case 1: GOTO_PREVIOUS(); break;
|
case 1: GOTO_PREVIOUS(); break;
|
||||||
case 2: GOTO_SCREEN(TemperatureScreen); break;
|
case 2: GOTO_SCREEN(TemperatureScreen); break;
|
||||||
case 3: GOTO_SCREEN(ChangeFilamentScreen); break;
|
case 3: GOTO_SCREEN(ChangeFilamentScreen); break;
|
||||||
case 4:
|
case 4:
|
||||||
#if ENABLED(BABYSTEPPING)
|
#if ENABLED(BABYSTEPPING)
|
||||||
GOTO_SCREEN(NudgeNozzleScreen);
|
GOTO_SCREEN(NudgeNozzleScreen);
|
||||||
#elif HAS_BED_PROBE
|
#elif HAS_BED_PROBE
|
||||||
GOTO_SCREEN(ZOffsetScreen);
|
GOTO_SCREEN(ZOffsetScreen);
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case 5: GOTO_SCREEN(FeedratePercentScreen); break;
|
case 5: GOTO_SCREEN(FeedratePercentScreen); break;
|
||||||
case 6: sound.play(twinkle, PLAY_ASYNCHRONOUS); ExtUI::pausePrint(); GOTO_SCREEN(StatusScreen); break;
|
case 6: pausePrint(); break;
|
||||||
case 7: sound.play(twinkle, PLAY_ASYNCHRONOUS); ExtUI::resumePrint(); GOTO_SCREEN(StatusScreen); break;
|
case 7: resumePrint(); break;
|
||||||
case 8:
|
case 8:
|
||||||
GOTO_SCREEN(ConfirmAbortPrintDialogBox);
|
GOTO_SCREEN(ConfirmAbortPrintDialogBox);
|
||||||
current_screen.forget();
|
current_screen.forget();
|
||||||
PUSH_SCREEN(StatusScreen);
|
PUSH_SCREEN(StatusScreen);
|
||||||
break;
|
break;
|
||||||
#if EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR)
|
#if EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR)
|
||||||
case 9: GOTO_SCREEN(FilamentMenu); break;
|
case 9: GOTO_SCREEN(FilamentMenu); break;
|
||||||
#endif
|
#endif
|
||||||
#if ENABLED(CASE_LIGHT_ENABLE)
|
#if ENABLED(CASE_LIGHT_ENABLE)
|
||||||
case 10: GOTO_SCREEN(CaseLightScreen); break;
|
case 10: GOTO_SCREEN(CaseLightScreen); break;
|
||||||
@ -124,4 +127,24 @@ bool TuneMenu::onTouchEnd(uint8_t tag) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // TOUCH_UI_FTDI_EVE
|
void TuneMenu::pausePrint() {
|
||||||
|
sound.play(twinkle, PLAY_ASYNCHRONOUS);
|
||||||
|
if (ExtUI::isPrintingFromMedia())
|
||||||
|
ExtUI::pausePrint();
|
||||||
|
#ifdef ACTION_ON_PAUSE
|
||||||
|
else host_action_pause();
|
||||||
|
#endif
|
||||||
|
GOTO_SCREEN(StatusScreen);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TuneMenu::resumePrint() {
|
||||||
|
sound.play(twinkle, PLAY_ASYNCHRONOUS);
|
||||||
|
if (ExtUI::isPrintingFromMedia())
|
||||||
|
ExtUI::resumePrint();
|
||||||
|
#ifdef ACTION_ON_RESUME
|
||||||
|
else host_action_resume();
|
||||||
|
#endif
|
||||||
|
GOTO_SCREEN(StatusScreen);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // TOUCH_UI_FTDI_EVE && !TOUCH_UI_LULZBOT_BIO
|
||||||
|
@ -972,7 +972,11 @@ namespace ExtUI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool isPrinting() {
|
bool isPrinting() {
|
||||||
return (commandsInQueue() || isPrintingFromMedia() || IFSD(IS_SD_PRINTING(), false));
|
return (commandsInQueue() || isPrintingFromMedia() || IFSD(IS_SD_PRINTING(), false)) || print_job_timer.isRunning() || print_job_timer.isPaused();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isPrintingPaused() {
|
||||||
|
return isPrinting() && (isPrintingFromMediaPaused() || print_job_timer.isPaused());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isMediaInserted() {
|
bool isMediaInserted() {
|
||||||
|
@ -302,6 +302,7 @@ namespace ExtUI {
|
|||||||
bool isPrintingFromMediaPaused();
|
bool isPrintingFromMediaPaused();
|
||||||
bool isPrintingFromMedia();
|
bool isPrintingFromMedia();
|
||||||
bool isPrinting();
|
bool isPrinting();
|
||||||
|
bool isPrintingPaused();
|
||||||
|
|
||||||
void printFile(const char *filename);
|
void printFile(const char *filename);
|
||||||
void stopPrint();
|
void stopPrint();
|
||||||
|
Loading…
Reference in New Issue
Block a user