Bladeren bron

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
Marcio Teixeira 4 jaren geleden
bovenliggende
commit
b6856dcb99

+ 1
- 1
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/language/language_en.h Bestand weergeven

@@ -119,7 +119,7 @@ namespace Language_en {
119 119
   PROGMEM Language_Str MSG_CAUTION                  = u8"Caution:";
120 120
   PROGMEM Language_Str MSG_HOT                      = u8"Hot!";
121 121
   PROGMEM Language_Str MSG_UNLOAD_FILAMENT          = u8"Unload/Retract";
122
-  PROGMEM Language_Str MSG_LOAD_FILAMENT            = u8"Load/Extruder";
122
+  PROGMEM Language_Str MSG_LOAD_FILAMENT            = u8"Load/Extrude";
123 123
   PROGMEM Language_Str MSG_MOMENTARY                = u8"Momentary";
124 124
   PROGMEM Language_Str MSG_CONTINUOUS               = u8"Continuous";
125 125
   PROGMEM Language_Str MSG_PLEASE_WAIT              = u8"Please wait...";

+ 1
- 0
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/change_filament_screen.cpp Bestand weergeven

@@ -84,6 +84,7 @@ void ChangeFilamentScreen::drawTempGradient(uint16_t x, uint16_t y, uint16_t w,
84 84
 }
85 85
 
86 86
 void ChangeFilamentScreen::onEntry() {
87
+  BaseScreen::onEntry();
87 88
   screen_data.ChangeFilamentScreen.e_tag = ExtUI::getActiveTool() + 10;
88 89
   screen_data.ChangeFilamentScreen.t_tag = 0;
89 90
   screen_data.ChangeFilamentScreen.repeat_tag = 0;

+ 7
- 1
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/confirm_abort_print_dialog_box.cpp Bestand weergeven

@@ -26,6 +26,8 @@
26 26
 
27 27
 #include "screens.h"
28 28
 
29
+#include "../../../../../feature/host_actions.h"
30
+
29 31
 using namespace ExtUI;
30 32
 
31 33
 void ConfirmAbortPrintDialogBox::onRedraw(draw_mode_t) {
@@ -37,7 +39,11 @@ bool ConfirmAbortPrintDialogBox::onTouchEnd(uint8_t tag) {
37 39
   switch (tag) {
38 40
     case 1:
39 41
       GOTO_PREVIOUS();
40
-      stopPrint();
42
+      if (ExtUI::isPrintingFromMedia())
43
+         ExtUI::stopPrint();
44
+      #ifdef ACTION_ON_CANCEL
45
+        else host_action_cancel();
46
+      #endif
41 47
       return true;
42 48
     default:
43 49
       return DialogBoxBaseClass::onTouchEnd(tag);

+ 33
- 40
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/leveling_menu.cpp Bestand weergeven

@@ -35,29 +35,27 @@ using namespace ExtUI;
35 35
 using namespace Theme;
36 36
 
37 37
 #ifdef TOUCH_UI_PORTRAIT
38
-  #define GRID_ROWS 10
38
+  #define GRID_ROWS 9
39 39
   #define GRID_COLS 2
40 40
   #define TITLE_POS          BTN_POS(1,1), BTN_SIZE(2,1)
41
-  #define LEVEL_BED_POS      BTN_POS(1,2), BTN_SIZE(2,1)
42
-  #define LEVEL_AXIS_POS     BTN_POS(1,3), BTN_SIZE(2,1)
43
-  #define Z_AUTO_ALIGN_POS   BTN_POS(1,4), BTN_SIZE(2,1)
44
-  #define SHOW_MESH_POS      BTN_POS(1,5), BTN_SIZE(2,1)
45
-  #define BLTOUCH_TITLE_POS  BTN_POS(1,7), BTN_SIZE(2,1)
46
-  #define BLTOUCH_RESET_POS  BTN_POS(1,8), BTN_SIZE(1,1)
47
-  #define BLTOUCH_TEST_POS   BTN_POS(2,8), BTN_SIZE(1,1)
48
-  #define BACK_POS           BTN_POS(1,10), BTN_SIZE(2,1)
49
-#else
50
-  #define GRID_ROWS 8
51
-  #define GRID_COLS 2
52
-  #define TITLE_POS          BTN_POS(1,1), BTN_SIZE(2,1)
53
-  #define LEVEL_BED_POS      BTN_POS(1,2), BTN_SIZE(2,1)
54
-  #define LEVEL_AXIS_POS     BTN_POS(1,3), BTN_SIZE(2,1)
55
-  #define Z_AUTO_ALIGN_POS   BTN_POS(1,4), BTN_SIZE(2,1)
56
-  #define SHOW_MESH_POS      BTN_POS(1,5), BTN_SIZE(2,1)
41
+  #define LEVEL_AXIS_POS     BTN_POS(1,2), BTN_SIZE(2,1)
42
+  #define LEVEL_BED_POS      BTN_POS(1,3), BTN_SIZE(2,1)
43
+  #define SHOW_MESH_POS      BTN_POS(1,4), BTN_SIZE(2,1)
57 44
   #define BLTOUCH_TITLE_POS  BTN_POS(1,6), BTN_SIZE(2,1)
58 45
   #define BLTOUCH_RESET_POS  BTN_POS(1,7), BTN_SIZE(1,1)
59 46
   #define BLTOUCH_TEST_POS   BTN_POS(2,7), BTN_SIZE(1,1)
60
-  #define BACK_POS           BTN_POS(1,8), BTN_SIZE(2,1)
47
+  #define BACK_POS           BTN_POS(1,9), BTN_SIZE(2,1)
48
+#else
49
+  #define GRID_ROWS 7
50
+  #define GRID_COLS 2
51
+  #define TITLE_POS          BTN_POS(1,1), BTN_SIZE(2,1)
52
+  #define LEVEL_AXIS_POS     BTN_POS(1,2), BTN_SIZE(2,1)
53
+  #define LEVEL_BED_POS      BTN_POS(1,3), BTN_SIZE(2,1)
54
+  #define SHOW_MESH_POS      BTN_POS(1,4), BTN_SIZE(2,1)
55
+  #define BLTOUCH_TITLE_POS  BTN_POS(1,5), BTN_SIZE(2,1)
56
+  #define BLTOUCH_RESET_POS  BTN_POS(1,6), BTN_SIZE(1,1)
57
+  #define BLTOUCH_TEST_POS   BTN_POS(2,6), BTN_SIZE(1,1)
58
+  #define BACK_POS           BTN_POS(1,7), BTN_SIZE(2,1)
61 59
 #endif
62 60
 
63 61
 void LevelingMenu::onRedraw(draw_mode_t what) {
@@ -73,21 +71,16 @@ void LevelingMenu::onRedraw(draw_mode_t what) {
73 71
     cmd.font(font_large)
74 72
        .text(TITLE_POS, GET_TEXT_F(MSG_LEVELING))
75 73
        .font(font_medium).colors(normal_btn)
76
-       .tag(2).button(LEVEL_BED_POS, GET_TEXT_F(MSG_LEVEL_BED))
77
-       .enabled(
78
-         #ifdef AXIS_LEVELING_COMMANDS
79
-           1
80
-         #endif
81
-        )
82
-       .tag(3).button(LEVEL_AXIS_POS, GET_TEXT_F(MSG_AUTOLEVEL_X_AXIS))
83
-       .enabled(ENABLED(Z_STEPPER_AUTO_ALIGN))
84
-       .tag(4).button(Z_AUTO_ALIGN_POS, GET_TEXT_F(MSG_AUTO_Z_ALIGN))
74
+    #if EITHER(Z_STEPPER_AUTO_ALIGN,MECHANICAL_GANTRY_CALIBRATION)
75
+       .tag(2).button(LEVEL_AXIS_POS, GET_TEXT_F(MSG_AUTOLEVEL_X_AXIS))
76
+    #endif
77
+       .tag(3).button(LEVEL_BED_POS, GET_TEXT_F(MSG_LEVEL_BED))
85 78
        .enabled(ENABLED(HAS_MESH))
86
-       .tag(5).button(SHOW_MESH_POS, GET_TEXT_F(MSG_SHOW_MESH));
79
+       .tag(4).button(SHOW_MESH_POS, GET_TEXT_F(MSG_SHOW_MESH));
87 80
     #if ENABLED(BLTOUCH)
88 81
       cmd.text(BLTOUCH_TITLE_POS, GET_TEXT_F(MSG_BLTOUCH))
89
-         .tag(6).button(BLTOUCH_RESET_POS, GET_TEXT_F(MSG_BLTOUCH_RESET))
90
-         .tag(7).button(BLTOUCH_TEST_POS,  GET_TEXT_F(MSG_BLTOUCH_SELFTEST));
82
+         .tag(5).button(BLTOUCH_RESET_POS, GET_TEXT_F(MSG_BLTOUCH_RESET))
83
+         .tag(6).button(BLTOUCH_TEST_POS,  GET_TEXT_F(MSG_BLTOUCH_SELFTEST));
91 84
     #endif
92 85
     cmd.colors(action_btn)
93 86
        .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
@@ -97,25 +90,25 @@ void LevelingMenu::onRedraw(draw_mode_t what) {
97 90
 bool LevelingMenu::onTouchEnd(uint8_t tag) {
98 91
   switch (tag) {
99 92
     case 1: GOTO_PREVIOUS();                   break;
100
-    case 2:
93
+    #if EITHER(Z_STEPPER_AUTO_ALIGN,MECHANICAL_GANTRY_CALIBRATION)
94
+    case 2: SpinnerDialogBox::enqueueAndWait_P(F("G34")); break;
95
+    #endif
96
+    case 3:
97
+    #ifndef BED_LEVELING_COMMANDS
98
+      #define BED_LEVELING_COMMANDS "G29"
99
+    #endif
101 100
     #if HAS_MESH
102 101
       BedMeshScreen::startMeshProbe();
103 102
     #else
104 103
       SpinnerDialogBox::enqueueAndWait_P(F(BED_LEVELING_COMMANDS));
105 104
     #endif
106 105
     break;
107
-    #ifdef AXIS_LEVELING_COMMANDS
108
-    case 3: SpinnerDialogBox::enqueueAndWait_P(F(AXIS_LEVELING_COMMANDS)); break;
109
-    #endif
110
-    #if ENABLED(Z_STEPPER_AUTO_ALIGN)
111
-    case 4: SpinnerDialogBox::enqueueAndWait_P(F("G34")); break;
112
-    #endif
113 106
     #if HAS_MESH
114
-    case 5: GOTO_SCREEN(BedMeshScreen); break;
107
+    case 4: GOTO_SCREEN(BedMeshScreen); break;
115 108
     #endif
116 109
     #if ENABLED(BLTOUCH)
117
-    case 6: injectCommands_P(PSTR("M280 P0 S60")); break;
118
-    case 7: SpinnerDialogBox::enqueueAndWait_P(F("M280 P0 S90\nG4 P100\nM280 P0 S120")); break;
110
+    case 5: injectCommands_P(PSTR("M280 P0 S60")); break;
111
+    case 6: SpinnerDialogBox::enqueueAndWait_P(F("M280 P0 S90\nG4 P100\nM280 P0 S120")); break;
119 112
     #endif
120 113
     default: return false;
121 114
   }

+ 3
- 0
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/screens.h Bestand weergeven

@@ -365,6 +365,9 @@ class MainMenu : public BaseScreen, public CachedScreen<MENU_SCREEN_CACHE> {
365 365
 };
366 366
 
367 367
 class TuneMenu : public BaseScreen, public CachedScreen<TUNE_SCREEN_CACHE> {
368
+  private:
369
+    static void pausePrint();
370
+    static void resumePrint();
368 371
   public:
369 372
     static void onRedraw(draw_mode_t);
370 373
     static bool onTouchEnd(uint8_t tag);

+ 39
- 16
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/tune_menu.cpp Bestand weergeven

@@ -26,6 +26,8 @@
26 26
 
27 27
 #include "screens.h"
28 28
 
29
+#include "../../../../../feature/host_actions.h"
30
+
29 31
 using namespace FTDI;
30 32
 using namespace Theme;
31 33
 
@@ -63,23 +65,24 @@ void TuneMenu::onRedraw(draw_mode_t what) {
63 65
   #endif
64 66
 
65 67
   if (what & FOREGROUND) {
66
-    using namespace ExtUI;
68
+    const bool sdOrHostPrinting = ExtUI::isPrinting();
69
+    const bool sdOrHostPaused   = ExtUI::isPrintingPaused();
67 70
 
68 71
     CommandProcessor cmd;
69 72
     cmd.colors(normal_btn)
70 73
        .font(font_medium)
71 74
        .tag(2).button( TEMPERATURE_POS, GET_TEXT_F(MSG_TEMPERATURE))
72
-       .enabled(!isPrinting() || isPrintingFromMediaPaused())
75
+       .enabled(!sdOrHostPrinting || sdOrHostPaused)
73 76
        .tag(3).button( FIL_CHANGE_POS,  GET_TEXT_F(MSG_FILAMENTCHANGE))
74 77
        .enabled(EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR))
75 78
        .tag(9).button( FILAMENT_POS, GET_TEXT_F(MSG_FILAMENT))
76 79
        .enabled(EITHER(HAS_BED_PROBE, BABYSTEPPING))
77 80
        .tag(4).button( NUDGE_NOZ_POS, GET_TEXT_F(TERN(BABYSTEPPING, MSG_NUDGE_NOZZLE, MSG_ZPROBE_ZOFFSET)))
78 81
        .tag(5).button( SPEED_POS, GET_TEXT_F(MSG_PRINT_SPEED))
79
-       .tag(isPrintingFromMediaPaused() ? 7 : 6)
80
-       .enabled(TERN0(SDSUPPORT, isPrintingFromMedia()))
81
-       .button( PAUSE_POS, isPrintingFromMediaPaused() ? GET_TEXT_F(MSG_RESUME_PRINT) : GET_TEXT_F(MSG_PAUSE_PRINT))
82
-       .enabled(TERN0(SDSUPPORT, isPrintingFromMedia()))
82
+       .enabled(sdOrHostPrinting)
83
+       .tag(sdOrHostPaused ? 7 : 6)
84
+       .button( PAUSE_POS, sdOrHostPaused ? GET_TEXT_F(MSG_RESUME_PRINT) : GET_TEXT_F(MSG_PAUSE_PRINT))
85
+       .enabled(sdOrHostPrinting)
83 86
        .tag(8).button( STOP_POS, GET_TEXT_F(MSG_STOP_PRINT))
84 87
        .enabled(ENABLED(CASE_LIGHT_ENABLE))
85 88
        .tag(10).button( CASE_LIGHT_POS, GET_TEXT_F(MSG_CASE_LIGHT))
@@ -94,26 +97,26 @@ bool TuneMenu::onTouchEnd(uint8_t tag) {
94 97
   using namespace Theme;
95 98
   using namespace ExtUI;
96 99
   switch (tag) {
97
-    case 1:  GOTO_PREVIOUS();                    break;
98
-    case 2:  GOTO_SCREEN(TemperatureScreen);     break;
99
-    case 3:  GOTO_SCREEN(ChangeFilamentScreen);  break;
100
-    case 4:
100
+    case  1: GOTO_PREVIOUS();                    break;
101
+    case  2: GOTO_SCREEN(TemperatureScreen);     break;
102
+    case  3: GOTO_SCREEN(ChangeFilamentScreen);  break;
103
+    case  4:
101 104
       #if ENABLED(BABYSTEPPING)
102 105
         GOTO_SCREEN(NudgeNozzleScreen);
103 106
       #elif HAS_BED_PROBE
104 107
         GOTO_SCREEN(ZOffsetScreen);
105 108
       #endif
106 109
       break;
107
-    case 5:  GOTO_SCREEN(FeedratePercentScreen);     break;
108
-    case 6:  sound.play(twinkle, PLAY_ASYNCHRONOUS); ExtUI::pausePrint();  GOTO_SCREEN(StatusScreen); break;
109
-    case 7:  sound.play(twinkle, PLAY_ASYNCHRONOUS); ExtUI::resumePrint(); GOTO_SCREEN(StatusScreen); break;
110
-    case 8:
110
+    case  5: GOTO_SCREEN(FeedratePercentScreen); break;
111
+    case  6: pausePrint(); break;
112
+    case  7: resumePrint(); break;
113
+    case  8:
111 114
       GOTO_SCREEN(ConfirmAbortPrintDialogBox);
112 115
       current_screen.forget();
113 116
       PUSH_SCREEN(StatusScreen);
114 117
       break;
115 118
     #if EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR)
116
-    case 9:  GOTO_SCREEN(FilamentMenu); break;
119
+    case  9: GOTO_SCREEN(FilamentMenu); break;
117 120
     #endif
118 121
     #if ENABLED(CASE_LIGHT_ENABLE)
119 122
     case 10: GOTO_SCREEN(CaseLightScreen); break;
@@ -124,4 +127,24 @@ bool TuneMenu::onTouchEnd(uint8_t tag) {
124 127
   return true;
125 128
 }
126 129
 
127
-#endif // TOUCH_UI_FTDI_EVE
130
+void TuneMenu::pausePrint() {
131
+  sound.play(twinkle, PLAY_ASYNCHRONOUS);
132
+  if (ExtUI::isPrintingFromMedia())
133
+    ExtUI::pausePrint();
134
+  #ifdef ACTION_ON_PAUSE
135
+    else host_action_pause();
136
+  #endif
137
+  GOTO_SCREEN(StatusScreen);
138
+}
139
+
140
+void TuneMenu::resumePrint() {
141
+  sound.play(twinkle, PLAY_ASYNCHRONOUS);
142
+  if (ExtUI::isPrintingFromMedia())
143
+    ExtUI::resumePrint();
144
+  #ifdef ACTION_ON_RESUME
145
+    else host_action_resume();
146
+  #endif
147
+  GOTO_SCREEN(StatusScreen);
148
+}
149
+
150
+#endif // TOUCH_UI_FTDI_EVE && !TOUCH_UI_LULZBOT_BIO

+ 5
- 1
Marlin/src/lcd/extui/ui_api.cpp Bestand weergeven

@@ -972,7 +972,11 @@ namespace ExtUI {
972 972
   }
973 973
 
974 974
   bool isPrinting() {
975
-    return (commandsInQueue() || isPrintingFromMedia() || IFSD(IS_SD_PRINTING(), false));
975
+    return (commandsInQueue() || isPrintingFromMedia() || IFSD(IS_SD_PRINTING(), false)) || print_job_timer.isRunning() || print_job_timer.isPaused();
976
+  }
977
+
978
+  bool isPrintingPaused() {
979
+    return isPrinting() && (isPrintingFromMediaPaused() || print_job_timer.isPaused());
976 980
   }
977 981
 
978 982
   bool isMediaInserted() {

+ 1
- 0
Marlin/src/lcd/extui/ui_api.h Bestand weergeven

@@ -302,6 +302,7 @@ namespace ExtUI {
302 302
   bool isPrintingFromMediaPaused();
303 303
   bool isPrintingFromMedia();
304 304
   bool isPrinting();
305
+  bool isPrintingPaused();
305 306
 
306 307
   void printFile(const char *filename);
307 308
   void stopPrint();

Laden…
Annuleren
Opslaan