Touch UI fixes for Cocoa Press (#15847)
This commit is contained in:
		
				
					committed by
					
						 Scott Lahteine
						Scott Lahteine
					
				
			
			
				
	
			
			
			
						parent
						
							28e1614c2e
						
					
				
				
					commit
					5639b8ca20
				
			| @@ -19,6 +19,9 @@ void sd_mmc_spi_mem_init() { | ||||
| } | ||||
|  | ||||
| Ctrl_status sd_mmc_spi_test_unit_ready() { | ||||
|   #if defined(DISABLE_DUE_SD_MMC) | ||||
|     return CTRL_NO_PRESENT; | ||||
|   #endif | ||||
|   if (!IS_SD_INSERTED() || IS_SD_PRINTING() || IS_SD_FILE_OPEN() || !card.isMounted()) | ||||
|     return CTRL_NO_PRESENT; | ||||
|   return CTRL_GOOD; | ||||
| @@ -55,6 +58,9 @@ uint8_t sector_buf[SD_MMC_BLOCK_SIZE]; | ||||
| // #define DEBUG_MMC | ||||
|  | ||||
| Ctrl_status sd_mmc_spi_usb_read_10(uint32_t addr, uint16_t nb_sector) { | ||||
|   #if defined(DISABLE_DUE_SD_MMC) | ||||
|     return CTRL_NO_PRESENT; | ||||
|   #endif | ||||
|   if (!IS_SD_INSERTED() || IS_SD_PRINTING() || IS_SD_FILE_OPEN() || !card.isMounted()) | ||||
|     return CTRL_NO_PRESENT; | ||||
|  | ||||
| @@ -92,6 +98,9 @@ Ctrl_status sd_mmc_spi_usb_read_10(uint32_t addr, uint16_t nb_sector) { | ||||
| } | ||||
|  | ||||
| Ctrl_status sd_mmc_spi_usb_write_10(uint32_t addr, uint16_t nb_sector) { | ||||
|   #if defined(DISABLE_DUE_SD_MMC) | ||||
|     return CTRL_NO_PRESENT; | ||||
|   #endif | ||||
|   if (!IS_SD_INSERTED() || IS_SD_PRINTING() || IS_SD_FILE_OPEN() || !card.isMounted()) | ||||
|     return CTRL_NO_PRESENT; | ||||
|  | ||||
|   | ||||
| @@ -598,8 +598,12 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS | ||||
| /** | ||||
|  * Custom Boot and Status screens | ||||
|  */ | ||||
| #if EITHER(SHOW_CUSTOM_BOOTSCREEN, CUSTOM_STATUS_SCREEN_IMAGE) && !HAS_GRAPHICAL_LCD | ||||
|   #error "Graphical LCD is required for SHOW_CUSTOM_BOOTSCREEN and CUSTOM_STATUS_SCREEN_IMAGE." | ||||
| #if ENABLED(SHOW_CUSTOM_BOOTSCREEN) && !HAS_GRAPHICAL_LCD && !ENABLED(LULZBOT_TOUCH_UI) | ||||
|   #error "Graphical LCD is required for SHOW_CUSTOM_BOOTSCREEN." | ||||
| #endif | ||||
|  | ||||
| #if ENABLED(CUSTOM_STATUS_SCREEN_IMAGE) && !HAS_GRAPHICAL_LCD | ||||
|   #error "Graphical LCD is required for CUSTOM_STATUS_SCREEN_IMAGE." | ||||
| #endif | ||||
|  | ||||
| /** | ||||
|   | ||||
| @@ -68,7 +68,7 @@ class UIFlashStorage : private SPIFlash { | ||||
|     static void     set_media_file_size(uint8_t slot, uint32_t size); | ||||
|     static uint32_t get_media_file_size(uint8_t slot); | ||||
|  | ||||
|     static constexpr uint32_t delimiter = 0x4C554C5A; // 'LULZ' | ||||
|     static constexpr uint32_t delimiter = 0x4D524C4E; // 'MRLN' | ||||
|   public: | ||||
|     enum error_t { | ||||
|       SUCCESS, | ||||
|   | ||||
| @@ -1015,8 +1015,8 @@ template <class T> bool CLCD::CommandFifo::write(T data, uint16_t len) { | ||||
|   if (Command_Space < (len + padding)) { | ||||
|     #if ENABLED(TOUCH_UI_DEBUG) | ||||
|       SERIAL_ECHO_START(); | ||||
|       SERIAL_ECHOPAIR("Waiting for ", len + padding, | ||||
|                       " bytes in command queue, now free: ", Command_Space); | ||||
|       SERIAL_ECHOPAIR("Waiting for ", len + padding); | ||||
|       SERIAL_ECHOLNPAIR(" bytes in command queue, now free: ", Command_Space); | ||||
|     #endif | ||||
|     do { | ||||
|       Command_Space = mem_read_32(REG::CMDB_SPACE) & 0x0FFF; | ||||
|   | ||||
| @@ -197,6 +197,7 @@ | ||||
|   #define SERIAL_ECHO_START() | ||||
|   #define SERIAL_ECHOLNPGM(str)        Serial.println(F(str)) | ||||
|   #define SERIAL_ECHOPGM(str)          Serial.print(F(str)) | ||||
|   #define SERIAL_ECHO_MSG(str)         Serial.println(str) | ||||
|   #define SERIAL_ECHOLNPAIR(str, val) {Serial.print(F(str)); Serial.println(val);} | ||||
|   #define SERIAL_ECHOPAIR(str, val)   {Serial.print(F(str)); Serial.print(val);} | ||||
|  | ||||
|   | ||||
| @@ -129,15 +129,15 @@ bool DLCache::store(uint32_t num_bytes /* = 0*/) { | ||||
|     // Not enough memory to cache the display list. | ||||
|     #if ENABLED(TOUCH_UI_DEBUG) | ||||
|       SERIAL_ECHO_START(); | ||||
|       SERIAL_ECHOLNPAIR("Not enough space in GRAM to cache display list, free space: ", free_space, | ||||
|                         " Required: ", dl_size); | ||||
|       SERIAL_ECHOPAIR  ("Not enough space in GRAM to cache display list, free space: ", free_space); | ||||
|       SERIAL_ECHOLNPAIR(  " Required: ", dl_size); | ||||
|     #endif | ||||
|     return false; | ||||
|   } else { | ||||
|     #if ENABLED(TOUCH_UI_DEBUG) | ||||
|       SERIAL_ECHO_START(); | ||||
|       SERIAL_ECHOLNPAIR("Saving DL to RAMG cache, bytes: ", dl_size, | ||||
|                         " Free space: ", free_space); | ||||
|       SERIAL_ECHOPAIR  ("Saving DL to RAMG cache, bytes: ", dl_size); | ||||
|       SERIAL_ECHOLNPAIR(" Free space: ", free_space); | ||||
|     #endif | ||||
|     cmd.memcpy(dl_addr, MAP::RAM_DL, dl_size); | ||||
|     cmd.execute(); | ||||
| @@ -167,8 +167,8 @@ void DLCache::append() { | ||||
|     cmd.execute(); | ||||
|     wait_until_idle(); | ||||
|     SERIAL_ECHO_START(); | ||||
|     SERIAL_ECHOLNPAIR("Appending to DL from RAMG cache, bytes: ", dl_size, | ||||
|                       " REG_CMD_DL: ", CLCD::mem_read_32(REG::CMD_DL)); | ||||
|     SERIAL_ECHOPAIR  ("Appending to DL from RAMG cache, bytes: ", dl_size); | ||||
|     SERIAL_ECHOLNPAIR(" REG_CMD_DL: ", CLCD::mem_read_32(REG::CMD_DL)); | ||||
|   #endif | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -31,25 +31,25 @@ constexpr float _hsl_fmod(float x, float y) { | ||||
|   return x - int(x/y)*y; | ||||
| } | ||||
|  | ||||
| constexpr float _hsl_c(int, float S, float L) { | ||||
| constexpr float _hsl_c(float, float S, float L) { | ||||
|   return (1.0f - fabs(2*L-1.0f)) * S; | ||||
| } | ||||
|  | ||||
| constexpr float _hsl_x(int H, float S, float L) { | ||||
|   return _hsl_c(H,S,L) * (1.0f - fabs(_hsl_fmod(float(H)/60, 2) - 1)); | ||||
| constexpr float _hsl_x(float H, float S, float L) { | ||||
|   return _hsl_c(H,S,L) * (1.0f - fabs(_hsl_fmod(H/60, 2) - 1)); | ||||
| } | ||||
|  | ||||
| constexpr float _hsl_m(int H, float S, float L) { | ||||
| constexpr float _hsl_m(float H, float S, float L) { | ||||
|   return L - _hsl_c(H,S,L)/2; | ||||
| } | ||||
|  | ||||
| constexpr float _hsl_rgb(int H, float S, float L, float r, float g, float b) { | ||||
| constexpr float _hsl_rgb(float H, float S, float L, float r, float g, float b) { | ||||
|   return ((uint32_t((r + _hsl_m(H,S,L))*255+0.5) << 16) | | ||||
|           (uint32_t((g + _hsl_m(H,S,L))*255+0.5) <<  8) | | ||||
|           (uint32_t((b + _hsl_m(H,S,L))*255+0.5) <<  0)); | ||||
| } | ||||
|  | ||||
| constexpr uint32_t hsl_to_rgb(int H, float S, float L) { | ||||
| constexpr uint32_t hsl_to_rgb(float H, float S, float L) { | ||||
|   return (H <  60) ? _hsl_rgb(H,S,L,_hsl_c(H,S,L), _hsl_x(H,S,L), 0) : | ||||
|          (H < 120) ? _hsl_rgb(H,S,L,_hsl_x(H,S,L), _hsl_c(H,S,L), 0) : | ||||
|          (H < 180) ? _hsl_rgb(H,S,L,            0, _hsl_c(H,S,L), _hsl_x(H,S,L)) : | ||||
|   | ||||
| @@ -38,7 +38,8 @@ namespace FTDI { | ||||
|  | ||||
|     #if ENABLED(TOUCH_UI_DEBUG) | ||||
|       SERIAL_ECHO_START(); | ||||
|       SERIAL_ECHOLNPAIR("Playing note ", int(note), ", instrument ", int(effect)); | ||||
|       SERIAL_ECHOPAIR("Playing note ", int(note)); | ||||
|       SERIAL_ECHOLNPAIR(", instrument ", int(effect)); | ||||
|     #endif | ||||
|  | ||||
|     // Play the note | ||||
|   | ||||
| @@ -53,9 +53,10 @@ | ||||
|  */ | ||||
|  | ||||
| class PolyReader { | ||||
|   private: | ||||
|   public: | ||||
|     typedef uint16_t type_t; | ||||
|  | ||||
|   private: | ||||
|     static constexpr type_t eol = 0xFFFF; | ||||
|  | ||||
|     const type_t *p, *top, *end; | ||||
| @@ -321,10 +322,10 @@ class GenericPolyUI { | ||||
|       int16_t x_max = INT16_MIN; | ||||
|       int16_t y_max = INT16_MIN; | ||||
|       for(r.start(); r.has_more(); r.next()) { | ||||
|         x_min = min(x_min, r.x); | ||||
|         x_max = max(x_max, r.x); | ||||
|         y_min = min(y_min, r.y); | ||||
|         y_max = max(y_max, r.y); | ||||
|         x_min = min(x_min, int16_t(r.x)); | ||||
|         x_max = max(x_max, int16_t(r.x)); | ||||
|         y_min = min(y_min, int16_t(r.y)); | ||||
|         y_max = max(y_max, int16_t(r.y)); | ||||
|       } | ||||
|       x = x_min; | ||||
|       y = y_min; | ||||
|   | ||||
| @@ -126,7 +126,7 @@ class WriteDataStructure: | ||||
|     self.hex_words = [] | ||||
|  | ||||
|   def push(self, value): | ||||
|     self.hex_words.append("0x%04X" % value) | ||||
|     self.hex_words.append("0x%04X" % (0xffff & int(value))) | ||||
|  | ||||
|   def command(self, type, x, y): | ||||
|     if type == "M": | ||||
|   | ||||
| @@ -21,5 +21,3 @@ | ||||
| #pragma once | ||||
|  | ||||
| #include "language_en.h" | ||||
| #include "language_de.h" | ||||
| #include "language_fr.h" | ||||
|   | ||||
| @@ -1,78 +0,0 @@ | ||||
| /***************** | ||||
|  * language_de.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: <http://www.gnu.org/licenses/>.                              * | ||||
|  ****************************************************************************/ | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| namespace Language_de { | ||||
|   using namespace Language_en; // Inherit undefined strings from English | ||||
|  | ||||
|   PROGMEM Language_Str YES                      = u8"JA"; | ||||
|   PROGMEM Language_Str NO                       = u8"NEIN"; | ||||
|   PROGMEM Language_Str BACK                     = u8"Zurück"; | ||||
|  | ||||
|   PROGMEM Language_Str MOVE_AXIS                = u8"Achsen bewegen"; | ||||
|   PROGMEM Language_Str MOTORS_OFF               = u8"Motoren deaktivieren"; | ||||
|   PROGMEM Language_Str TEMPERATURE              = u8"Temperatur"; | ||||
|   PROGMEM Language_Str CHANGE_FILAMENT          = u8"Filament wechseln"; | ||||
|   PROGMEM Language_Str ADVANCED_SETTINGS        = u8"Erw. Einstellungen"; | ||||
|   PROGMEM Language_Str ABOUT_PRINTER            = u8"Über den Drucker"; | ||||
|   PROGMEM Language_Str PRINTER_STATISTICS       = u8"Drucker-Statistik"; | ||||
|  | ||||
|   PROGMEM Language_Str ZPROBE_ZOFFSET           = u8"Sondenversatz Z"; | ||||
|   PROGMEM Language_Str TOOL_OFFSETS             = u8"Werkzeugversätze"; | ||||
|   PROGMEM Language_Str VELOCITY                 = u8"Geschwindigkeit"; | ||||
|   PROGMEM Language_Str ACCELERATION             = u8"Beschleunigung"; | ||||
|   PROGMEM Language_Str ACCEL_PRINTING           = u8"Beschleunigung"; | ||||
|   PROGMEM Language_Str ACCEL_TRAVEL             = u8"A Einzug"; | ||||
|   PROGMEM Language_Str ACCEL_RETRACT            = u8"A Leerfahrt"; | ||||
|   PROGMEM Language_Str BACKLASH                 = u8"Spiel"; | ||||
|   PROGMEM Language_Str SMOOTHING                = u8"Glätten"; | ||||
|   PROGMEM Language_Str CORRECTION               = u8"Korrektur"; | ||||
|   PROGMEM Language_Str ENDSTOPS                 = u8"Endstopp"; | ||||
|   PROGMEM Language_Str SOFT_ENDSTOPS            = u8"Software-Endstopp"; | ||||
|   PROGMEM Language_Str RESTORE_DEFAULTS         = u8"Standardwerte laden"; | ||||
|  | ||||
|  | ||||
|   PROGMEM Language_Str HOTEND                   = u8"Düse"; | ||||
|   PROGMEM Language_Str HOTEND1                  = u8"Düse 1"; | ||||
|   PROGMEM Language_Str HOTEND2                  = u8"Düse 2"; | ||||
|   PROGMEM Language_Str HOTEND3                  = u8"Düse 3"; | ||||
|   PROGMEM Language_Str HOTEND4                  = u8"Düse 4"; | ||||
|   PROGMEM Language_Str BED                      = u8"Bett"; | ||||
|   PROGMEM Language_Str AXIS_ALL                 = u8"Alle"; | ||||
|  | ||||
|   PROGMEM Language_Str FAN_SPEED                = u8"Lüfter"; | ||||
|  | ||||
|   PROGMEM Language_Str PRINT_FILE               = u8"Drucken"; | ||||
|  | ||||
|   PROGMEM Language_Str RESUME_PRINT             = u8"SD-Druck fortsetzen"; | ||||
|   PROGMEM Language_Str PAUSE_PRINT              = u8"SD-Druck pausieren"; | ||||
|   PROGMEM Language_Str STOP_PRINT               = u8"SD-Druck abbrechen"; | ||||
|  | ||||
|   PROGMEM Language_Str INFO_PRINT_COUNT         = u8"Gesamte Drucke"; | ||||
|   PROGMEM Language_Str INFO_COMPLETED_PRINTS    = u8"Komplette Drucke"; | ||||
|   PROGMEM Language_Str INFO_PRINT_TIME          = u8"Gesamte Druckzeit"; | ||||
|   PROGMEM Language_Str INFO_PRINT_LONGEST       = u8"Längste Druckzeit"; | ||||
|   PROGMEM Language_Str INFO_PRINT_FILAMENT      = u8"Gesamt Extrudiert"; | ||||
|  | ||||
|   PROGMEM Language_Str PRINTER_HALTED           = u8"DRUCKER GESTOPPT"; | ||||
|   PROGMEM Language_Str PLEASE_RESET             = u8"Bitte neustarten"; | ||||
| }; // namespace Language_de | ||||
| @@ -23,210 +23,139 @@ | ||||
|  | ||||
| #include "language.h" | ||||
|  | ||||
| #if ENABLED(TOUCH_UI_UTF8_COPYRIGHT) | ||||
|   #define COPYRIGHT_SIGN    u8"©" | ||||
| #else | ||||
|   #define COPYRIGHT_SIGN    u8"(c)" | ||||
| #endif | ||||
|  | ||||
| #if ENABLED(TOUCH_UI_UTF8_SUPERSCRIPTS) | ||||
|   #define SUPERSCRIPT_TWO   u8"²" | ||||
| #else | ||||
|   #define SUPERSCRIPT_TWO   u8"^2" | ||||
| #endif | ||||
|  | ||||
| #if ENABLED(TOUCH_UI_UTF8_WESTERN_CHARSET) | ||||
|   #define DEGREE_SIGN       u8"°" | ||||
| #else | ||||
|   #define DEGREE_SIGN       u8" " | ||||
| #endif | ||||
|  | ||||
| namespace Language_en { | ||||
|   PROGMEM Language_Str YES                      = u8"Yes"; | ||||
|   PROGMEM Language_Str NO                       = u8"No"; | ||||
|   PROGMEM Language_Str BACK                     = u8"Back"; | ||||
|   PROGMEM Language_Str OKAY                     = u8"Okay"; | ||||
|   PROGMEM Language_Str MENU                     = u8"Menu"; | ||||
|   PROGMEM Language_Str MEDIA                    = u8"Media"; | ||||
|   PROGMEM Language_Str MSG_BUTTON_OKAY              = u8"Okay"; | ||||
|   PROGMEM Language_Str MSG_BUTTON_MENU              = u8"Menu"; | ||||
|   PROGMEM Language_Str MSG_BUTTON_MEDIA             = u8"Media"; | ||||
|   PROGMEM Language_Str MSG_BUTTON_OPEN              = u8"Open"; | ||||
|   PROGMEM Language_Str MSG_CLEAN_NOZZLE             = u8"Clean Nozzle"; | ||||
|   PROGMEM Language_Str MSG_VMAX_X                   = u8"Vmax X"; | ||||
|   PROGMEM Language_Str MSG_VMAX_Y                   = u8"Vmax Y"; | ||||
|   PROGMEM Language_Str MSG_VMAX_Z                   = u8"Vmax Z"; | ||||
|   PROGMEM Language_Str MSG_ACCEL_PRINTING           = u8"Printing"; | ||||
|   PROGMEM Language_Str MSG_ACCEL_TRAVEL             = u8"Travel"; | ||||
|   PROGMEM Language_Str MSG_ACCEL_RETRACT            = u8"Retraction"; | ||||
|   PROGMEM Language_Str MSG_AMAX_X                   = u8"Amax X"; | ||||
|   PROGMEM Language_Str MSG_AMAX_Y                   = u8"Amax Y"; | ||||
|   PROGMEM Language_Str MSG_AMAX_Z                   = u8"Amax Z"; | ||||
|   PROGMEM Language_Str MSG_AXIS_X                   = u8"X"; | ||||
|   PROGMEM Language_Str MSG_AXIS_Y                   = u8"Y"; | ||||
|   PROGMEM Language_Str MSG_AXIS_Z                   = u8"Z"; | ||||
|   PROGMEM Language_Str MSG_AXIS_E                   = u8"E"; | ||||
|   PROGMEM Language_Str MSG_AXIS_E1                  = u8"E1"; | ||||
|   PROGMEM Language_Str MSG_AXIS_E2                  = u8"E2"; | ||||
|   PROGMEM Language_Str MSG_AXIS_E3                  = u8"E3"; | ||||
|   PROGMEM Language_Str MSG_AXIS_E4                  = u8"E4"; | ||||
|   PROGMEM Language_Str MSG_AXIS_ALL                 = u8"All"; | ||||
|   PROGMEM Language_Str MSG_HOME                     = u8"Home"; | ||||
|   PROGMEM Language_Str MSG_PRINT_STARTING           = u8"Print starting"; | ||||
|   PROGMEM Language_Str MSG_PRINT_FINISHED           = u8"Print finished"; | ||||
|   PROGMEM Language_Str MSG_PRINT_ERROR              = u8"Print error"; | ||||
|   PROGMEM Language_Str MSG_ABOUT_TOUCH_PANEL_1      = u8"Color Touch Panel"; | ||||
|   PROGMEM Language_Str MSG_ABOUT_TOUCH_PANEL_2      = u8"Portions " COPYRIGHT_SIGN " 2019 Aleph Objects, Inc."; | ||||
|   PROGMEM Language_Str MSG_FIRMWARE_FOR_TOOLHEAD    = u8"Firmware for toolhead:\n%s\n\n"; | ||||
|   PROGMEM Language_Str MSG_RUNOUT_1                 = u8"Runout 1"; | ||||
|   PROGMEM Language_Str MSG_RUNOUT_2                 = u8"Runout 2"; | ||||
|   PROGMEM Language_Str MSG_DISPLAY_MENU             = u8"Display"; | ||||
|   PROGMEM Language_Str MSG_INTERFACE_SETTINGS       = u8"Interface Settings"; | ||||
|   PROGMEM Language_Str MSG_MEASURE_AUTOMATICALLY    = u8"Measure automatically"; | ||||
|   PROGMEM Language_Str MSG_H_OFFSET                 = u8"H Offset"; | ||||
|   PROGMEM Language_Str MSG_V_OFFSET                 = u8"V Offset"; | ||||
|   PROGMEM Language_Str MSG_TOUCH_SCREEN             = u8"Touch Screen"; | ||||
|   PROGMEM Language_Str MSG_CALIBRATE                = u8"Calibrate"; | ||||
|   PROGMEM Language_Str MSG_UNITS_MILLIAMP           = u8"mA"; | ||||
|   PROGMEM Language_Str MSG_UNITS_MM                 = u8"mm"; | ||||
|   PROGMEM Language_Str MSG_UNITS_MM_S               = u8"mm/s"; | ||||
|   PROGMEM Language_Str MSG_UNITS_MM_S2              = u8"mm/s" SUPERSCRIPT_TWO; | ||||
|   PROGMEM Language_Str MSG_UNITS_STEP_MM            = u8"st/mm"; | ||||
|   PROGMEM Language_Str MSG_UNITS_PERCENT            = u8"%"; | ||||
|   PROGMEM Language_Str MSG_UNITS_C                  = DEGREE_SIGN u8"C"; | ||||
|   PROGMEM Language_Str MSG_MATERIAL_PLA             = u8"PLA"; | ||||
|   PROGMEM Language_Str MSG_MATERIAL_ABS             = u8"ABS"; | ||||
|   PROGMEM Language_Str MSG_MATERIAL_HIGH_TEMP       = u8"High"; | ||||
|   PROGMEM Language_Str MSG_IDLE                     = u8"idle"; | ||||
|   PROGMEM Language_Str MSG_SET_MAXIMUM              = u8"Set Maximum"; | ||||
|   PROGMEM Language_Str MSG_PRINT_SPEED              = u8"Print Speed"; | ||||
|   PROGMEM Language_Str MSG_LINEAR_ADVANCE           = u8"Linear Advance"; | ||||
|   PROGMEM Language_Str MSG_LINEAR_ADVANCE_K         = u8"K"; | ||||
|   PROGMEM Language_Str MSG_LINEAR_ADVANCE_K1        = u8"K E1"; | ||||
|   PROGMEM Language_Str MSG_LINEAR_ADVANCE_K2        = u8"K E2"; | ||||
|   PROGMEM Language_Str MSG_LINEAR_ADVANCE_K3        = u8"K E3"; | ||||
|   PROGMEM Language_Str MSG_LINEAR_ADVANCE_K4        = u8"K E4"; | ||||
|   PROGMEM Language_Str MSG_NUDGE_NOZZLE             = u8"Nudge Nozzle"; | ||||
|   PROGMEM Language_Str MSG_ADJUST_BOTH_NOZZLES      = u8"Adjust Both Nozzles"; | ||||
|   PROGMEM Language_Str MSG_SHOW_OFFSETS             = u8"Show Offsets"; | ||||
|   PROGMEM Language_Str MSG_INCREMENT                = u8"Increment"; | ||||
|   PROGMEM Language_Str MSG_ERASE_FLASH_WARNING      = u8"Are you sure? SPI flash will be erased."; | ||||
|   PROGMEM Language_Str MSG_ERASING                  = u8"Erasing..."; | ||||
|   PROGMEM Language_Str MSG_ERASED                   = u8"SPI flash erased"; | ||||
|   PROGMEM Language_Str MSG_CALIBRATION_WARNING      = u8"For best results, unload the filament and clean the hotend prior to starting calibration. Continue?"; | ||||
|   PROGMEM Language_Str MSG_START_PRINT_CONFIRMATION = u8"Start printing %s?"; | ||||
|   PROGMEM Language_Str MSG_ABORT_WARNING            = u8"Are you sure you want to cancel the print?"; | ||||
|   PROGMEM Language_Str MSG_EXTRUDER_SELECTION       = u8"Extruder Selection"; | ||||
|   PROGMEM Language_Str MSG_CURRENT_TEMPERATURE      = u8"Current Temp"; | ||||
|   PROGMEM Language_Str MSG_REMOVAL_TEMPERATURE      = u8"Removal Temp"; | ||||
|   PROGMEM Language_Str MSG_CAUTION                  = u8"Caution:"; | ||||
|   PROGMEM Language_Str MSG_HOT                      = u8"Hot!"; | ||||
|   PROGMEM Language_Str MSG_UNLOAD_FILAMENT          = u8"Unload/Retract"; | ||||
|   PROGMEM Language_Str MSG_LOAD_FILAMENT            = u8"Load/Extruder"; | ||||
|   PROGMEM Language_Str MSG_MOMENTARY                = u8"Momentary"; | ||||
|   PROGMEM Language_Str MSG_CONTINUOUS               = u8"Continuous"; | ||||
|   PROGMEM Language_Str MSG_PLEASE_WAIT              = u8"Please wait..."; | ||||
|   PROGMEM Language_Str MSG_PRINT_MENU               = u8"Print Menu"; | ||||
|   PROGMEM Language_Str MSG_FINE_MOTION              = u8"Fine motion"; | ||||
|   PROGMEM Language_Str MSG_ENABLE_MEDIA             = u8"Enable Media"; | ||||
|   PROGMEM Language_Str MSG_INSERT_MEDIA             = u8"Insert Media..."; | ||||
|   PROGMEM Language_Str MSG_LCD_BRIGHTNESS           = u8"LCD brightness"; | ||||
|   PROGMEM Language_Str MSG_SOUND_VOLUME             = u8"Sound volume"; | ||||
|   PROGMEM Language_Str MSG_SCREEN_LOCK              = u8"Screen lock"; | ||||
|   PROGMEM Language_Str MSG_BOOT_SCREEN              = u8"Boot screen"; | ||||
|   PROGMEM Language_Str MSG_INTERFACE_SOUNDS         = u8"Interface Sounds"; | ||||
|   PROGMEM Language_Str MSG_CLICK_SOUNDS             = u8"Click sounds"; | ||||
|   PROGMEM Language_Str MSG_EEPROM_RESTORED          = u8"Settings restored from backup"; | ||||
|   PROGMEM Language_Str MSG_EEPROM_RESET             = u8"Settings restored to default"; | ||||
|   PROGMEM Language_Str MSG_EEPROM_SAVED             = u8"Settings saved!"; | ||||
|   PROGMEM Language_Str MSG_EEPROM_SAVE_PROMPT       = u8"Do you wish to save these settings as defaults?"; | ||||
|   PROGMEM Language_Str MSG_EEPROM_RESET_WARNING     = u8"Are you sure? Customizations will be lost."; | ||||
|  | ||||
|   PROGMEM Language_Str AUTO_HOME                = u8"Auto Home"; | ||||
|   PROGMEM Language_Str CLEAN_NOZZLE             = u8"Clean Nozzle"; | ||||
|   PROGMEM Language_Str MOVE_AXIS                = u8"Move Axis"; | ||||
|   PROGMEM Language_Str MOTORS_OFF               = u8"Motors Off"; | ||||
|   PROGMEM Language_Str TEMPERATURE              = u8"Temperature"; | ||||
|   PROGMEM Language_Str CHANGE_FILAMENT          = u8"Change Filament"; | ||||
|   PROGMEM Language_Str ADVANCED_SETTINGS        = u8"Advanced Settings"; | ||||
|   PROGMEM Language_Str ABOUT_PRINTER            = u8"About Printer"; | ||||
|   PROGMEM Language_Str PRINTER_STATISTICS       = u8"Printer Statistics"; | ||||
|   PROGMEM Language_Str MSG_PASSCODE_REJECTED        = u8"Wrong passcode!"; | ||||
|   PROGMEM Language_Str MSG_PASSCODE_ACCEPTED        = u8"Passcode accepted!"; | ||||
|   PROGMEM Language_Str MSG_PASSCODE_SELECT          = u8"Select Passcode:"; | ||||
|   PROGMEM Language_Str MSG_PASSCODE_REQUEST         = u8"Enter Passcode:"; | ||||
|  | ||||
|   PROGMEM Language_Str ZPROBE_ZOFFSET           = u8"Z Offset"; | ||||
|   PROGMEM Language_Str STEPS_PER_MM             = u8"Steps/mm"; | ||||
|   PROGMEM Language_Str TOOL_OFFSETS             = u8"Tool Offsets"; | ||||
|   PROGMEM Language_Str VELOCITY                 = u8"Velocity"; | ||||
|   PROGMEM Language_Str VMAX_X                   = u8"Vmax X"; | ||||
|   PROGMEM Language_Str VMAX_Y                   = u8"Vmax Y"; | ||||
|   PROGMEM Language_Str VMAX_Z                   = u8"Vmax Z"; | ||||
|   PROGMEM Language_Str VMAX_E1                  = u8"Vmax E1"; | ||||
|   PROGMEM Language_Str VMAX_E2                  = u8"Vmax E2"; | ||||
|   PROGMEM Language_Str VMAX_E3                  = u8"Vmax E3"; | ||||
|   PROGMEM Language_Str VMAX_E4                  = u8"Vmax E4"; | ||||
|   PROGMEM Language_Str ACCELERATION             = u8"Acceleration"; | ||||
|   PROGMEM Language_Str ACCEL_PRINTING           = u8"Printing"; | ||||
|   PROGMEM Language_Str ACCEL_TRAVEL             = u8"Travel"; | ||||
|   PROGMEM Language_Str ACCEL_RETRACT            = u8"Retraction"; | ||||
|   PROGMEM Language_Str AMAX_X                   = u8"Amax X"; | ||||
|   PROGMEM Language_Str AMAX_Y                   = u8"Amax Y"; | ||||
|   PROGMEM Language_Str AMAX_Z                   = u8"Amax Z"; | ||||
|   PROGMEM Language_Str AMAX_E1                  = u8"Amax E1"; | ||||
|   PROGMEM Language_Str AMAX_E2                  = u8"Amax E2"; | ||||
|   PROGMEM Language_Str AMAX_E3                  = u8"Amax E3"; | ||||
|   PROGMEM Language_Str AMAX_E4                  = u8"Amax E4"; | ||||
|   PROGMEM Language_Str JERK                     = u8"Jerk"; | ||||
|   PROGMEM Language_Str JUNC_DEVIATION           = u8"Junc Dev"; | ||||
|   PROGMEM Language_Str BACKLASH                 = u8"Backlash"; | ||||
|   PROGMEM Language_Str SMOOTHING                = u8"Smoothing"; | ||||
|   PROGMEM Language_Str CORRECTION               = u8"Correction"; | ||||
|   PROGMEM Language_Str MOTOR_CURRENT            = u8"Currents"; | ||||
|   PROGMEM Language_Str FILAMENT                 = u8"Filament"; | ||||
|   PROGMEM Language_Str ENDSTOPS                 = u8"Endstops"; | ||||
|   PROGMEM Language_Str SOFT_ENDSTOPS            = u8"Soft Endstops"; | ||||
|   PROGMEM Language_Str RESTORE_DEFAULTS         = u8"Restore Defaults"; | ||||
|   PROGMEM Language_Str MSG_TOUCH_CALIBRATION_START  = u8"Release to begin screen calibration"; | ||||
|   PROGMEM Language_Str MSG_TOUCH_CALIBRATION_PROMPT = u8"Touch the dots to calibrate"; | ||||
|  | ||||
|   PROGMEM Language_Str HOTEND                   = u8"Hot End"; | ||||
|   PROGMEM Language_Str HOTEND1                  = u8"Hot End 1"; | ||||
|   PROGMEM Language_Str HOTEND2                  = u8"Hot End 2"; | ||||
|   PROGMEM Language_Str HOTEND3                  = u8"Hot End 3"; | ||||
|   PROGMEM Language_Str HOTEND4                  = u8"Hot End 4"; | ||||
|   PROGMEM Language_Str BED                      = u8"Bed"; | ||||
|   PROGMEM Language_Str AXIS_X                   = u8"X"; | ||||
|   PROGMEM Language_Str AXIS_Y                   = u8"Y"; | ||||
|   PROGMEM Language_Str AXIS_Z                   = u8"Z"; | ||||
|   PROGMEM Language_Str AXIS_E                   = u8"E"; | ||||
|   PROGMEM Language_Str AXIS_E1                  = u8"E1"; | ||||
|   PROGMEM Language_Str AXIS_E2                  = u8"E2"; | ||||
|   PROGMEM Language_Str AXIS_E3                  = u8"E3"; | ||||
|   PROGMEM Language_Str AXIS_E4                  = u8"E4"; | ||||
|   PROGMEM Language_Str AXIS_ALL                 = u8"All"; | ||||
|   PROGMEM Language_Str HOME                     = u8"Home"; | ||||
|  | ||||
|   PROGMEM Language_Str FAN_SPEED                = u8"Fan Speed"; | ||||
|   PROGMEM Language_Str RUNOUT_SENSOR            = u8"Runout Sensor"; | ||||
|  | ||||
|   PROGMEM Language_Str OPEN_DIR                 = u8"Open"; | ||||
|   PROGMEM Language_Str PRINT_FILE               = u8"Print"; | ||||
|  | ||||
|   PROGMEM Language_Str RESUME_PRINT             = u8"Resume Print"; | ||||
|   PROGMEM Language_Str PAUSE_PRINT              = u8"Pause Print"; | ||||
|   PROGMEM Language_Str STOP_PRINT               = u8"Stop Print"; | ||||
|  | ||||
|   PROGMEM Language_Str PRINT_STARTING           = u8"Print starting"; | ||||
|   PROGMEM Language_Str PRINT_FINISHED           = u8"Print finished"; | ||||
|   PROGMEM Language_Str PRINT_ERROR              = u8"Print error"; | ||||
|  | ||||
|   PROGMEM Language_Str INFO_PRINT_COUNT         = u8"Print Count"; | ||||
|   PROGMEM Language_Str INFO_COMPLETED_PRINTS    = u8"Total Prints"; | ||||
|   PROGMEM Language_Str INFO_PRINT_TIME          = u8"Total Print Time"; | ||||
|   PROGMEM Language_Str INFO_PRINT_LONGEST       = u8"Longest Print"; | ||||
|   PROGMEM Language_Str INFO_PRINT_FILAMENT      = u8"Filament Used"; | ||||
|  | ||||
|   PROGMEM Language_Str PRINTER_HALTED           = u8"PRINTER HALTED"; | ||||
|   PROGMEM Language_Str PLEASE_RESET             = u8"Please reset"; | ||||
|  | ||||
|   PROGMEM Language_Str COLOR_TOUCH_PANEL        = u8"Color Touch Panel"; | ||||
|   #if ENABLED(TOUCH_UI_UTF8_COPYRIGHT) | ||||
|     PROGMEM Language_Str ABOUT_ALEPH_OBJECTS    = u8"© 2019 Aleph Objects, Inc.\n\nwww.lulzbot.com"; | ||||
|   #else | ||||
|     PROGMEM Language_Str ABOUT_ALEPH_OBJECTS    = u8"(C) 2019 Aleph Objects, Inc.\n\nwww.lulzbot.com"; | ||||
|   #ifdef TOUCH_UI_LULZBOT_BIO | ||||
|     PROGMEM Language_Str MSG_MOVE_TO_HOME           = u8"Move to Home"; | ||||
|     PROGMEM Language_Str MSG_RAISE_PLUNGER          = u8"Raise Plunger"; | ||||
|     PROGMEM Language_Str MSG_RELEASE_XY_AXIS        = u8"Release X and Y Axis"; | ||||
|     PROGMEM Language_Str MSG_AUTOLEVEL_X_AXIS       = u8"Auto-level X Axis"; | ||||
|     PROGMEM Language_Str MSG_BED_TEMPERATURE        = u8"Bed Temperature"; | ||||
|     PROGMEM Language_Str MSG_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 MSG_HOME_E_WARNING         = u8"About to re-home plunger and auto-level. Remove syringe prior to proceeding.\n\nContinue?"; | ||||
|   #endif | ||||
|  | ||||
|   PROGMEM Language_Str FIRMWARE_FOR_TOOLHEAD    = u8"Firmware for toolhead:\n%s\n\n"; | ||||
|  | ||||
|   PROGMEM Language_Str HOME_SENSE               = u8"Home Sense"; | ||||
|   PROGMEM Language_Str X_MAX                    = u8"X Max"; | ||||
|   PROGMEM Language_Str X_MIN                    = u8"X Min"; | ||||
|   PROGMEM Language_Str Y_MAX                    = u8"Y Max"; | ||||
|   PROGMEM Language_Str Y_MIN                    = u8"Y Min"; | ||||
|   PROGMEM Language_Str Z_MAX                    = u8"Z Max"; | ||||
|   PROGMEM Language_Str Z_MIN                    = u8"Z Min"; | ||||
|   PROGMEM Language_Str Z_PROBE                  = u8"Z Probe"; | ||||
|   PROGMEM Language_Str RUNOUT_1                 = u8"Runout 1"; | ||||
|   PROGMEM Language_Str RUNOUT_2                 = u8"Runout 2"; | ||||
|   PROGMEM Language_Str DISPLAY_MENU             = u8"Display"; | ||||
|   PROGMEM Language_Str INTERFACE_SETTINGS       = u8"Interface Settings"; | ||||
|   PROGMEM Language_Str MEASURE_AUTOMATICALLY    = u8"Measure automatically"; | ||||
|   PROGMEM Language_Str H_OFFSET                 = u8"H Offset"; | ||||
|   PROGMEM Language_Str V_OFFSET                 = u8"V Offset"; | ||||
|   PROGMEM Language_Str TOUCH_SCREEN             = u8"Touch Screen"; | ||||
|   PROGMEM Language_Str CALIBRATE                = u8"Calibrate"; | ||||
|  | ||||
|   PROGMEM Language_Str UNITS_MILLIAMP           = u8"mA"; | ||||
|   PROGMEM Language_Str UNITS_MM                 = u8"mm"; | ||||
|   PROGMEM Language_Str UNITS_MM_S               = u8"mm/s"; | ||||
|   #if ENABLED(TOUCH_UI_UTF8_WESTERN_CHARSET) | ||||
|     PROGMEM Language_Str UNITS_MM_S2            = u8"mm/s²"; | ||||
|   #else | ||||
|     PROGMEM Language_Str UNITS_MM_S2            = u8"mm/s^2"; | ||||
|   #endif | ||||
|   PROGMEM Language_Str UNITS_STEP_MM            = u8"st/mm"; | ||||
|   PROGMEM Language_Str UNITS_PERCENT            = u8"%"; | ||||
|   #if ENABLED(TOUCH_UI_UTF8_WESTERN_CHARSET) | ||||
|     PROGMEM Language_Str UNITS_C                = u8"°C"; | ||||
|   #else | ||||
|     PROGMEM Language_Str UNITS_C                = u8" C"; | ||||
|   #endif | ||||
|   PROGMEM Language_Str MATERIAL_PLA             = u8"PLA"; | ||||
|   PROGMEM Language_Str MATERIAL_ABS             = u8"ABS"; | ||||
|   PROGMEM Language_Str MATERIAL_HIGH_TEMP       = u8"High"; | ||||
|   PROGMEM Language_Str TEMP_IDLE                = u8"idle"; | ||||
|  | ||||
|   PROGMEM Language_Str PRINTING                 = u8"Printing"; | ||||
|   PROGMEM Language_Str SET_MAXIMUM              = u8"Set Maximum"; | ||||
|   PROGMEM Language_Str DETECTION_THRESHOLD      = u8"Detection Threshold"; | ||||
|   PROGMEM Language_Str DISTANCE                 = u8"Distance"; | ||||
|   PROGMEM Language_Str COOLDOWN                 = u8"Cooldown (All Off)"; | ||||
|   PROGMEM Language_Str PRINT_SPEED              = u8"Print Speed"; | ||||
|   PROGMEM Language_Str SPEED                    = u8"Speed"; | ||||
|   PROGMEM Language_Str LINEAR_ADVANCE           = u8"Linear Advance"; | ||||
|   PROGMEM Language_Str LINEAR_ADVANCE_K         = u8"K"; | ||||
|   PROGMEM Language_Str LINEAR_ADVANCE_K1        = u8"K E1"; | ||||
|   PROGMEM Language_Str LINEAR_ADVANCE_K2        = u8"K E2"; | ||||
|   PROGMEM Language_Str LINEAR_ADVANCE_K3        = u8"K E3"; | ||||
|   PROGMEM Language_Str LINEAR_ADVANCE_K4        = u8"K E4"; | ||||
|   PROGMEM Language_Str NUDGE_NOZZLE             = u8"Nudge Nozzle"; | ||||
|   PROGMEM Language_Str ADJUST_BOTH_NOZZLES      = u8"Adjust Both Nozzles"; | ||||
|   PROGMEM Language_Str SHOW_OFFSETS             = u8"Show Offsets"; | ||||
|   PROGMEM Language_Str INCREMENT                = u8"Increment"; | ||||
|   PROGMEM Language_Str ERASE_FLASH_WARNING      = u8"Are you sure? SPI flash will be erased."; | ||||
|   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"; | ||||
|   PROGMEM Language_Str REMOVAL_TEMPERATURE      = u8"Removal Temp"; | ||||
|   PROGMEM Language_Str HEATING                  = u8"Heating"; | ||||
|   PROGMEM Language_Str CAUTION                  = u8"Caution:"; | ||||
|   PROGMEM Language_Str HOT                      = u8"Hot!"; | ||||
|   PROGMEM Language_Str UNLOAD_FILAMENT          = u8"Unload"; | ||||
|   PROGMEM Language_Str LOAD_FILAMENT            = u8"Load/Extruder"; | ||||
|   PROGMEM Language_Str MOMENTARY                = u8"Momentary"; | ||||
|   PROGMEM Language_Str CONTINUOUS               = u8"Continuous"; | ||||
|   PROGMEM Language_Str PLEASE_WAIT              = u8"Please wait..."; | ||||
|   PROGMEM Language_Str PRINT_MENU               = u8"Print Menu"; | ||||
|   PROGMEM Language_Str FINE_MOTION              = u8"Fine motion"; | ||||
|   PROGMEM Language_Str ENABLE_MEDIA             = u8"Enable Media"; | ||||
|   PROGMEM Language_Str INSERT_MEDIA             = u8"Insert Media..."; | ||||
|   PROGMEM Language_Str LCD_BRIGHTNESS           = u8"LCD brightness"; | ||||
|   PROGMEM Language_Str SOUND_VOLUME             = u8"Sound volume"; | ||||
|   PROGMEM Language_Str SCREEN_LOCK              = u8"Screen lock"; | ||||
|   PROGMEM Language_Str BOOT_SCREEN              = u8"Boot screen"; | ||||
|   PROGMEM Language_Str INTERFACE_SOUNDS         = u8"Interface Sounds"; | ||||
|   PROGMEM Language_Str CLICK_SOUNDS             = u8"Click sounds"; | ||||
|   PROGMEM Language_Str EEPROM_RESTORED          = u8"Settings restored from backup"; | ||||
|   PROGMEM Language_Str EEPROM_RESET             = u8"Settings restored to default"; | ||||
|   PROGMEM Language_Str EEPROM_SAVED             = u8"Settings saved!"; | ||||
|   PROGMEM Language_Str EEPROM_SAVE_PROMPT       = u8"Do you wish to save these settings as defaults?"; | ||||
|   PROGMEM Language_Str EEPROM_RESET_WARNING     = u8"Are you sure? Customizations will be lost."; | ||||
|  | ||||
|   PROGMEM Language_Str PASSCODE_REJECTED        = u8"Wrong passcode!"; | ||||
|   PROGMEM Language_Str PASSCODE_ACCEPTED        = u8"Passcode accepted!"; | ||||
|   PROGMEM Language_Str PASSCODE_SELECT          = u8"Select Passcode:"; | ||||
|   PROGMEM Language_Str PASSCODE_REQUEST         = u8"Enter Passcode:"; | ||||
|  | ||||
|   PROGMEM Language_Str TOUCH_CALIBRATION_START  = u8"Release to begin screen calibration"; | ||||
|   PROGMEM Language_Str TOUCH_CALIBRATION_PROMPT = u8"Touch the dots to calibrate"; | ||||
|  | ||||
|   #ifdef LULZBOT_USE_BIOPRINTER_UI | ||||
|     PROGMEM Language_Str MAIN_MENU              = u8"Main Menu"; | ||||
|     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 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?"; | ||||
|    | ||||
|   #ifdef TOUCH_UI_COCOA_PRESS | ||||
|     PROGMEM Language_Str MSG_ZONE_1                 = u8"Zone 1:"; | ||||
|     PROGMEM Language_Str MSG_ZONE_2                 = u8"Zone 2:"; | ||||
|   #endif | ||||
| }; // namespace Language_en | ||||
|   | ||||
| @@ -1,84 +0,0 @@ | ||||
| /***************** | ||||
|  * language_fr.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: <http://www.gnu.org/licenses/>.                              * | ||||
|  ****************************************************************************/ | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| namespace Language_fr { | ||||
|   using namespace Language_en; // Inherit undefined strings from English | ||||
|  | ||||
|   PROGMEM Language_Str YES                      = u8"oui"; | ||||
|   PROGMEM Language_Str NO                       = u8"non"; | ||||
|   PROGMEM Language_Str BACK                     = u8"Retour"; | ||||
|  | ||||
|   PROGMEM Language_Str AUTO_HOME                = u8"Origine auto"; | ||||
|   //PROGMEM Language_Str CLEAN_NOZZLE             = u8"Clean Nozzle"; | ||||
|   PROGMEM Language_Str MOVE_AXIS                = u8"Déplacer un axe"; | ||||
|   PROGMEM Language_Str MOTORS_OFF               = u8"Arrêter moteurs"; | ||||
|   PROGMEM Language_Str TEMPERATURE              = u8"Température"; | ||||
|   PROGMEM Language_Str CHANGE_FILAMENT          = u8"Changer filament"; | ||||
|   PROGMEM Language_Str ADVANCED_SETTINGS        = u8"Config. avancée"; | ||||
|   PROGMEM Language_Str ABOUT_PRINTER            = u8"Infos imprimante"; | ||||
|   PROGMEM Language_Str PRINTER_STATISTICS       = u8"Stats. imprimante"; | ||||
|  | ||||
|   PROGMEM Language_Str ZPROBE_ZOFFSET           = u8"Décalage Z"; | ||||
|   PROGMEM Language_Str STEPS_PER_MM             = u8"Pas/mm"; | ||||
|   PROGMEM Language_Str TOOL_OFFSETS             = u8"Offsets Outil"; | ||||
|   PROGMEM Language_Str VELOCITY                 = u8"Vélocité"; | ||||
|   PROGMEM Language_Str ACCELERATION             = u8"Accélération"; | ||||
|   PROGMEM Language_Str ACCEL_PRINTING           = u8"A impr."; | ||||
|   PROGMEM Language_Str ACCEL_TRAVEL             = u8"A dépl."; | ||||
|   PROGMEM Language_Str ACCEL_RETRACT            = u8"A retrait"; | ||||
|   PROGMEM Language_Str JUNC_DEVIATION           = u8"Déviat. jonct."; | ||||
|   //PROGMEM Language_Str BACKLASH                 = u8"Backlash"; | ||||
|   PROGMEM Language_Str SMOOTHING                = u8"Lissage"; | ||||
|   PROGMEM Language_Str MOTOR_CURRENT            = u8"Courant"; | ||||
|   PROGMEM Language_Str ENDSTOPS                 = u8"Butées"; | ||||
|   PROGMEM Language_Str SOFT_ENDSTOPS            = u8"Butées SW"; | ||||
|   PROGMEM Language_Str RESTORE_DEFAULTS         = u8"Restaurer défauts"; | ||||
|  | ||||
|  | ||||
|   PROGMEM Language_Str HOTEND                   = u8"Buse"; | ||||
|   PROGMEM Language_Str HOTEND1                  = u8"Buse 1"; | ||||
|   PROGMEM Language_Str HOTEND2                  = u8"Buse 2"; | ||||
|   PROGMEM Language_Str HOTEND3                  = u8"Buse 3"; | ||||
|   PROGMEM Language_Str HOTEND4                  = u8"Buse 4"; | ||||
|   PROGMEM Language_Str BED                      = u8"Lit"; | ||||
|   PROGMEM Language_Str AXIS_ALL                 = u8"Tous"; | ||||
|   PROGMEM Language_Str HOME                     = u8"Origine"; | ||||
|  | ||||
|   PROGMEM Language_Str FAN_SPEED                = u8"Vitesse ventil."; | ||||
|   PROGMEM Language_Str RUNOUT_SENSOR            = u8"Capteur fil."; | ||||
|  | ||||
|   PROGMEM Language_Str PRINT_FILE               = u8"Imprimer"; | ||||
|  | ||||
|   PROGMEM Language_Str RESUME_PRINT             = u8"Reprendre impr."; | ||||
|   PROGMEM Language_Str PAUSE_PRINT              = u8"Pause impression"; | ||||
|   PROGMEM Language_Str STOP_PRINT               = u8"Arrêter impr."; | ||||
|  | ||||
|   PROGMEM Language_Str INFO_PRINT_COUNT         = u8"Nbre impressions"; | ||||
|   PROGMEM Language_Str INFO_COMPLETED_PRINTS    = u8"Terminées"; | ||||
|   PROGMEM Language_Str INFO_PRINT_TIME          = u8"Tps impr. total"; | ||||
|   PROGMEM Language_Str INFO_PRINT_LONGEST       = u8"Impr. la + longue"; | ||||
|   PROGMEM Language_Str INFO_PRINT_FILAMENT      = u8"Total filament"; | ||||
|  | ||||
|   PROGMEM Language_Str PRINTER_HALTED           = u8"IMPR. STOPPÉE"; | ||||
|   PROGMEM Language_Str PLEASE_RESET             = u8"Redémarrer SVP"; | ||||
| }; // namespace Language_fr | ||||
| @@ -103,7 +103,7 @@ namespace ExtUI { | ||||
|   } | ||||
|  | ||||
|   void onConfigurationStoreWritten(bool success) { | ||||
|     #ifdef LULZBOT_EEPROM_BACKUP_SIZE | ||||
|     #ifdef ARCHIM2_SPI_FLASH_EEPROM_BACKUP_SIZE | ||||
|       if (success && InterfaceSettingsScreen::backupEEPROM()) { | ||||
|         SERIAL_ECHOLNPGM("Made backup of EEPROM to SPI Flash"); | ||||
|       } | ||||
|   | ||||
| @@ -45,43 +45,43 @@ void AboutScreen::onRedraw(draw_mode_t) { | ||||
|      .cmd(COLOR_RGB(bg_text_enabled)) | ||||
|      .tag(0); | ||||
|  | ||||
|   draw_text_box(cmd, BTN_POS(1,2), BTN_SIZE(4,1), F( | ||||
|       #ifdef LULZBOT_LCD_MACHINE_NAME | ||||
|       LULZBOT_LCD_MACHINE_NAME | ||||
|   draw_text_box(cmd, BTN_POS(1,2), BTN_SIZE(4,1), | ||||
|       #ifdef CUSTOM_MACHINE_NAME | ||||
|         F(CUSTOM_MACHINE_NAME) | ||||
|       #else | ||||
|       GET_TEXT_F(COLOR_TOUCH_PANEL) | ||||
|         GET_TEXT_F(MSG_ABOUT_TOUCH_PANEL_1) | ||||
|       #endif | ||||
|     ), OPT_CENTER, font_xlarge); | ||||
|  | ||||
|   #ifdef LULZBOT_LCD_TOOLHEAD_NAME | ||||
|   , OPT_CENTER, font_xlarge); | ||||
|    | ||||
|   #ifdef TOOLHEAD_NAME | ||||
|    char about_str[ | ||||
|      strlen_P(GET_TEXT(FIRMWARE_FOR_TOOLHEAD)) + | ||||
|      strlen_P(LULZBOT_LCD_TOOLHEAD_NAME) + | ||||
|      strlen_P(GET_TEXT(ABOUT_ALEPH_OBJECTS)) + 1]; | ||||
|      strlen_P(TOOLHEAD_NAME) + | ||||
|      strlen_P(GET_TEXT(ABOUT_TOUCH_PANEL_2)) + 1]; | ||||
|  | ||||
|    sprintf_P(about_str, GET_TEXT(FIRMWARE_FOR_TOOLHEAD), LULZBOT_LCD_TOOLHEAD_NAME); | ||||
|    strcat_P(about_str,  GET_TEXT(ABOUT_ALEPH_OBJECTS)); | ||||
|    sprintf_P(about_str, GET_TEXT(FIRMWARE_FOR_TOOLHEAD), TOOLHEAD_NAME); | ||||
|    strcat_P (about_str, GET_TEXT(ABOUT_TOUCH_PANEL_2)); | ||||
|   #endif | ||||
|  | ||||
|   cmd.tag(2); | ||||
|   draw_text_box(cmd, BTN_POS(1,3), BTN_SIZE(4,3), | ||||
|       #ifdef LULZBOT_LCD_TOOLHEAD_NAME | ||||
|       #ifdef TOOLHEAD_NAME | ||||
|         about_str | ||||
|       #else | ||||
|         GET_TEXT_F(ABOUT_ALEPH_OBJECTS) | ||||
|         GET_TEXT_F(MSG_ABOUT_TOUCH_PANEL_2) | ||||
|       #endif | ||||
|   , OPT_CENTER, font_medium); | ||||
|  | ||||
|   cmd.tag(0); | ||||
|   draw_text_box(cmd, BTN_POS(1,6), BTN_SIZE(4,2), progmem_str(getFirmwareName_str()), OPT_CENTER, font_medium); | ||||
|  | ||||
|   cmd.font(font_medium).colors(action_btn).tag(1).button(BTN_POS(2,8), BTN_SIZE(2,1), GET_TEXT_F(OKAY)); | ||||
|   cmd.font(font_medium).colors(action_btn).tag(1).button(BTN_POS(2,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_BUTTON_OKAY)); | ||||
| } | ||||
|  | ||||
| bool AboutScreen::onTouchEnd(uint8_t tag) { | ||||
|   switch (tag) { | ||||
|     case 1: GOTO_PREVIOUS();            return true; | ||||
| #if ENABLED(DEVELOPER_SCREENS) | ||||
| #if ENABLED(TOUCH_UI_DEVELOPER_MENU) | ||||
|     case 2: GOTO_SCREEN(DeveloperMenu); return true; | ||||
| #endif | ||||
|     default:                            return false; | ||||
|   | ||||
| @@ -22,7 +22,7 @@ | ||||
|  | ||||
| #include "../config.h" | ||||
|  | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && !defined(LULZBOT_USE_BIOPRINTER_UI) | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && !defined(TOUCH_UI_LULZBOT_BIO) | ||||
|  | ||||
| #include "screens.h" | ||||
|  | ||||
| @@ -49,52 +49,52 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) { | ||||
|       #else | ||||
|         .enabled(0) | ||||
|       #endif | ||||
|       .tag(2) .button( BTN_POS(1,1), BTN_SIZE(1,1), GET_TEXT_F(ZPROBE_ZOFFSET)) | ||||
|       .tag(2) .button( BTN_POS(1,1), BTN_SIZE(1,1), GET_TEXT_F(MSG_ZPROBE_ZOFFSET)) | ||||
|       .enabled(1) | ||||
|       .tag(3) .button( BTN_POS(2,1), BTN_SIZE(1,1), GET_TEXT_F(STEPS_PER_MM)) | ||||
|       .tag(3) .button( BTN_POS(2,1), BTN_SIZE(1,1), GET_TEXT_F(MSG_STEPS_PER_MM)) | ||||
|       #if HAS_TRINAMIC | ||||
|         .enabled(1) | ||||
|       #else | ||||
|         .enabled(0) | ||||
|       #endif | ||||
|       .tag(13).button( BTN_POS(1,5), BTN_SIZE(1,1), GET_TEXT_F(MOTOR_CURRENT)) | ||||
|       .tag(13).button( BTN_POS(1,5), BTN_SIZE(1,1), GET_TEXT_F(MSG_TMC_CURRENT)) | ||||
|       #if HAS_TRINAMIC | ||||
|         .enabled(1) | ||||
|       #else | ||||
|         .enabled(0) | ||||
|       #endif | ||||
|       .tag(14).button( BTN_POS(1,4), BTN_SIZE(1,1), GET_TEXT_F(HOME_SENSE)) | ||||
|       .tag(14).button( BTN_POS(1,4), BTN_SIZE(1,1), GET_TEXT_F(MSG_TMC_HOMING_THRS)) | ||||
|       #if HOTENDS > 1 | ||||
|       .enabled(1) | ||||
|       #else | ||||
|       .enabled(0) | ||||
|       #endif | ||||
|       .tag(4) .button( BTN_POS(1,2), BTN_SIZE(1,1), GET_TEXT_F(TOOL_OFFSETS)) | ||||
|       .tag(4) .button( BTN_POS(1,2), BTN_SIZE(1,1), GET_TEXT_F(MSG_OFFSETS_MENU)) | ||||
|       #if EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR) | ||||
|       .enabled(1) | ||||
|       #else | ||||
|       .enabled(0) | ||||
|       #endif | ||||
|       .tag(11).button( BTN_POS(1,3), BTN_SIZE(1,1), GET_TEXT_F(FILAMENT)) | ||||
|       .tag(12).button( BTN_POS(1,6), BTN_SIZE(1,1), GET_TEXT_F(ENDSTOPS)) | ||||
|       .tag(15).button( BTN_POS(2,6), BTN_SIZE(1,1), GET_TEXT_F(DISPLAY_MENU)) | ||||
|       .tag(9) .button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(INTERFACE_SETTINGS)) | ||||
|       .tag(10).button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(RESTORE_DEFAULTS)) | ||||
|       .tag(5) .button( BTN_POS(2,2), BTN_SIZE(1,1), GET_TEXT_F(VELOCITY)) | ||||
|       .tag(6) .button( BTN_POS(2,3), BTN_SIZE(1,1), GET_TEXT_F(ACCELERATION)) | ||||
|       .tag(11).button( BTN_POS(1,3), BTN_SIZE(1,1), GET_TEXT_F(MSG_FILAMENT)) | ||||
|       .tag(12).button( BTN_POS(1,6), BTN_SIZE(1,1), GET_TEXT_F(MSG_LCD_ENDSTOPS)) | ||||
|       .tag(15).button( BTN_POS(2,6), BTN_SIZE(1,1), GET_TEXT_F(MSG_DISPLAY_MENU)) | ||||
|       .tag(9) .button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(MSG_INTERFACE_SETTINGS)) | ||||
|       .tag(10).button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_RESTORE_FAILSAFE)) | ||||
|       .tag(5) .button( BTN_POS(2,2), BTN_SIZE(1,1), GET_TEXT_F(MSG_VELOCITY)) | ||||
|       .tag(6) .button( BTN_POS(2,3), BTN_SIZE(1,1), GET_TEXT_F(MSG_ACCELERATION)) | ||||
|       #if DISABLED(CLASSIC_JERK) | ||||
|       .tag(7) .button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXT_F(JUNC_DEVIATION)) | ||||
|       .tag(7) .button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXT_F(MSG_JUNCTION_DEVIATION)) | ||||
|       #else | ||||
|       .tag(7) .button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXT_F(JERK)) | ||||
|       .tag(7) .button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXT_F(MSG_JERK)) | ||||
|       #endif | ||||
|       #if ENABLED(BACKLASH_GCODE) | ||||
|       .enabled(1) | ||||
|       #else | ||||
|       .enabled(0) | ||||
|       #endif | ||||
|       .tag(8).button( BTN_POS(2,5), BTN_SIZE(1,1), GET_TEXT_F(BACKLASH)) | ||||
|       .tag(8).button( BTN_POS(2,5), BTN_SIZE(1,1), GET_TEXT_F(MSG_BACKLASH)) | ||||
|       .colors(action_btn) | ||||
|       .tag(1) .button( BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXT_F(BACK)); | ||||
|       .tag(1) .button( BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK)); | ||||
|       #undef GRID_COLS | ||||
|       #undef GRID_ROWS | ||||
|     #else | ||||
| @@ -105,47 +105,47 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) { | ||||
|       #else | ||||
|         .enabled(0) | ||||
|       #endif | ||||
|       .tag(2) .button( BTN_POS(1,1),  BTN_SIZE(1,2), GET_TEXT_F(ZPROBE_ZOFFSET)) | ||||
|       .tag(2) .button( BTN_POS(1,1),  BTN_SIZE(1,2), GET_TEXT_F(MSG_ZPROBE_ZOFFSET)) | ||||
|       .enabled(1) | ||||
|       .tag(3) .button( BTN_POS(2,1),  BTN_SIZE(1,1), GET_TEXT_F(STEPS_PER_MM)) | ||||
|       .tag(3) .button( BTN_POS(2,1),  BTN_SIZE(1,1), GET_TEXT_F(MSG_STEPS_PER_MM)) | ||||
|       #if HAS_TRINAMIC | ||||
|         .enabled(1) | ||||
|       #else | ||||
|         .enabled(0) | ||||
|       #endif | ||||
|       .tag(13).button( BTN_POS(3,1), BTN_SIZE(1,1), GET_TEXT_F(MOTOR_CURRENT)) | ||||
|       .tag(13).button( BTN_POS(3,1), BTN_SIZE(1,1), GET_TEXT_F(MSG_TMC_CURRENT)) | ||||
|       #if HAS_TRINAMIC | ||||
|         .enabled(1) | ||||
|       #else | ||||
|         .enabled(0) | ||||
|       #endif | ||||
|       .tag(14).button( BTN_POS(3,2), BTN_SIZE(1,1), GET_TEXT_F(HOME_SENSE)) | ||||
|       .tag(14).button( BTN_POS(3,2), BTN_SIZE(1,1), GET_TEXT_F(MSG_TMC_HOMING_THRS)) | ||||
|       #if ENABLED(BACKLASH_GCODE) | ||||
|       .enabled(1) | ||||
|       #else | ||||
|       .enabled(0) | ||||
|       #endif | ||||
|       .tag(8).button( BTN_POS(3,3),  BTN_SIZE(1,1), GET_TEXT_F(BACKLASH)) | ||||
|       .tag(8).button( BTN_POS(3,3),  BTN_SIZE(1,1), GET_TEXT_F(MSG_BACKLASH)) | ||||
|       #if HOTENDS > 1 | ||||
|       .enabled(1) | ||||
|       #else | ||||
|       .enabled(0) | ||||
|       #endif | ||||
|       .tag(4) .button( BTN_POS(1,3),  BTN_SIZE(1,1), GET_TEXT_F(TOOL_OFFSETS)) | ||||
|       .tag(12).button( BTN_POS(3,4),  BTN_SIZE(1,1), GET_TEXT_F(ENDSTOPS)) | ||||
|       .tag(5) .button( BTN_POS(2,2),  BTN_SIZE(1,1), GET_TEXT_F(VELOCITY)) | ||||
|       .tag(6) .button( BTN_POS(2,3),  BTN_SIZE(1,1), GET_TEXT_F(ACCELERATION)) | ||||
|       .tag(4) .button( BTN_POS(1,3),  BTN_SIZE(1,1), GET_TEXT_F(MSG_OFFSETS_MENU)) | ||||
|       .tag(12).button( BTN_POS(3,4),  BTN_SIZE(1,1), GET_TEXT_F(MSG_LCD_ENDSTOPS)) | ||||
|       .tag(5) .button( BTN_POS(2,2),  BTN_SIZE(1,1), GET_TEXT_F(MSG_VELOCITY)) | ||||
|       .tag(6) .button( BTN_POS(2,3),  BTN_SIZE(1,1), GET_TEXT_F(MSG_ACCELERATION)) | ||||
|       #if DISABLED(CLASSIC_JERK) | ||||
|       .tag(7) .button( BTN_POS(2,4),  BTN_SIZE(1,1), GET_TEXT_F(JUNC_DEVIATION)) | ||||
|       .tag(7) .button( BTN_POS(2,4),  BTN_SIZE(1,1), GET_TEXT_F(MSG_JUNCTION_DEVIATION)) | ||||
|       #else | ||||
|       .tag(7) .button( BTN_POS(2,4),  BTN_SIZE(1,1), GET_TEXT_F(JERK)) | ||||
|       .tag(7) .button( BTN_POS(2,4),  BTN_SIZE(1,1), GET_TEXT_F(MSG_JERK)) | ||||
|       #endif | ||||
|       .tag(11).button( BTN_POS(1,4),  BTN_SIZE(1,1), GET_TEXT_F(FILAMENT)) | ||||
|       .tag(15).button( BTN_POS(3,5),  BTN_SIZE(1,1), GET_TEXT_F(DISPLAY_MENU)) | ||||
|       .tag(9) .button( BTN_POS(1,5),  BTN_SIZE(2,1), GET_TEXT_F(INTERFACE_SETTINGS)) | ||||
|       .tag(10).button( BTN_POS(1,6),  BTN_SIZE(2,1), GET_TEXT_F(RESTORE_DEFAULTS)) | ||||
|       .tag(11).button( BTN_POS(1,4),  BTN_SIZE(1,1), GET_TEXT_F(MSG_FILAMENT)) | ||||
|       .tag(15).button( BTN_POS(3,5),  BTN_SIZE(1,1), GET_TEXT_F(MSG_DISPLAY_MENU)) | ||||
|       .tag(9) .button( BTN_POS(1,5),  BTN_SIZE(2,1), GET_TEXT_F(MSG_INTERFACE_SETTINGS)) | ||||
|       .tag(10).button( BTN_POS(1,6),  BTN_SIZE(2,1), GET_TEXT_F(MSG_RESTORE_FAILSAFE)) | ||||
|       .colors(action_btn) | ||||
|       .tag(1) .button( BTN_POS(3,6),  BTN_SIZE(1,1), GET_TEXT_F(BACK)); | ||||
|       .tag(1) .button( BTN_POS(3,6),  BTN_SIZE(1,1), GET_TEXT_F(MSG_BACK)); | ||||
|     #endif | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -32,17 +32,17 @@ using namespace Theme; | ||||
|  | ||||
| void BacklashCompensationScreen::onRedraw(draw_mode_t what) { | ||||
|   widgets_t w(what); | ||||
|   w.precision(2).units(       GET_TEXT_F(UNITS_MM)); | ||||
|   w.heading(                  GET_TEXT_F(BACKLASH)); | ||||
|   w.color(x_axis).adjuster(2, GET_TEXT_F(AXIS_X), getAxisBacklash_mm(X)); | ||||
|   w.color(y_axis).adjuster(4, GET_TEXT_F(AXIS_Y), getAxisBacklash_mm(Y)); | ||||
|   w.color(z_axis).adjuster(6, GET_TEXT_F(AXIS_Z), getAxisBacklash_mm(Z)); | ||||
|   w.precision(2).units(       GET_TEXT_F(MSG_UNITS_MM)); | ||||
|   w.heading(                  GET_TEXT_F(MSG_BACKLASH)); | ||||
|   w.color(x_axis).adjuster(2, GET_TEXT_F(MSG_AXIS_X), getAxisBacklash_mm(X)); | ||||
|   w.color(y_axis).adjuster(4, GET_TEXT_F(MSG_AXIS_Y), getAxisBacklash_mm(Y)); | ||||
|   w.color(z_axis).adjuster(6, GET_TEXT_F(MSG_AXIS_Z), getAxisBacklash_mm(Z)); | ||||
|   #if ENABLED(CALIBRATION_GCODE) | ||||
|   w.button(12, GET_TEXT_F(MEASURE_AUTOMATICALLY)); | ||||
|   w.button(12, GET_TEXT_F(MSG_MEASURE_AUTOMATICALLY)); | ||||
|   #endif | ||||
|   w.color(other).adjuster(8,  GET_TEXT_F(SMOOTHING), getBacklashSmoothing_mm()); | ||||
|   w.precision(0).units(GET_TEXT_F(UNITS_PERCENT)) | ||||
|                 .adjuster(10, GET_TEXT_F(CORRECTION), getBacklashCorrection_percent()); | ||||
|   w.color(other).adjuster(8,  GET_TEXT_F(MSG_SMOOTHING), getBacklashSmoothing_mm()); | ||||
|   w.precision(0).units(GET_TEXT_F(MSG_UNITS_PERCENT)) | ||||
|                 .adjuster(10, GET_TEXT_F(MSG_CORRECTION), getBacklashCorrection_percent()); | ||||
|   w.precision(2).increments(); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -58,7 +58,7 @@ BaseNumericAdjustmentScreen::widgets_t::widgets_t(draw_mode_t what) : _what(what | ||||
|     #else | ||||
|       BTN_POS(15,7), BTN_SIZE(4,1), | ||||
|     #endif | ||||
|     GET_TEXT_F(BACK), true, true | ||||
|     GET_TEXT_F(MSG_BACK), true, true | ||||
|   ); | ||||
|  | ||||
|   _line = 1; | ||||
| @@ -197,7 +197,7 @@ void BaseNumericAdjustmentScreen::widgets_t::increments() { | ||||
|       #else | ||||
|         BTN_POS(15,    1), BTN_SIZE(4,1), | ||||
|       #endif | ||||
|       GET_TEXT_F(INCREMENT) | ||||
|       GET_TEXT_F(MSG_INCREMENT) | ||||
|     ); | ||||
|   } | ||||
|  | ||||
| @@ -328,7 +328,7 @@ void BaseNumericAdjustmentScreen::widgets_t::toggle(uint8_t tag, progmem_str lab | ||||
|         #else | ||||
|           BTN_POS(10,_line), BTN_SIZE(4,1), | ||||
|         #endif | ||||
|         GET_TEXT_F(NO), GET_TEXT_F(YES), value | ||||
|         GET_TEXT_F(MSG_NO), GET_TEXT_F(MSG_YES), value | ||||
|        ); | ||||
|   } | ||||
|  | ||||
| @@ -341,14 +341,14 @@ void BaseNumericAdjustmentScreen::widgets_t::home_buttons(uint8_t tag) { | ||||
|   if (_what & BACKGROUND) { | ||||
|     _button_style(cmd, TEXT_LABEL); | ||||
|     cmd.font(font_small) | ||||
|        .text(BTN_POS(1, _line), BTN_SIZE(4,1), GET_TEXT_F(HOME)); | ||||
|        .text(BTN_POS(1, _line), BTN_SIZE(4,1), GET_TEXT_F(MSG_HOME)); | ||||
|   } | ||||
|  | ||||
|   cmd.font(LAYOUT_FONT); | ||||
|  _button(cmd, tag+0, BTN_POS(5,_line),  BTN_SIZE(2,1), GET_TEXT_F(AXIS_X)); | ||||
|  _button(cmd, tag+1, BTN_POS(7,_line),  BTN_SIZE(2,1), GET_TEXT_F(AXIS_Y)); | ||||
|  _button(cmd, tag+2, BTN_POS(9,_line),  BTN_SIZE(2,1), GET_TEXT_F(AXIS_Z)); | ||||
|  _button(cmd, tag+3, BTN_POS(11,_line), BTN_SIZE(3,1), GET_TEXT_F(AXIS_ALL)); | ||||
|  _button(cmd, tag+0, BTN_POS(5,_line),  BTN_SIZE(2,1), GET_TEXT_F(MSG_AXIS_X)); | ||||
|  _button(cmd, tag+1, BTN_POS(7,_line),  BTN_SIZE(2,1), GET_TEXT_F(MSG_AXIS_Y)); | ||||
|  _button(cmd, tag+2, BTN_POS(9,_line),  BTN_SIZE(2,1), GET_TEXT_F(MSG_AXIS_Z)); | ||||
|  _button(cmd, tag+3, BTN_POS(11,_line), BTN_SIZE(3,1), GET_TEXT_F(MSG_AXIS_ALL)); | ||||
|  | ||||
|   _line++; | ||||
| } | ||||
|   | ||||
| @@ -22,7 +22,7 @@ | ||||
|  | ||||
| #include "../config.h" | ||||
|  | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && defined(LULZBOT_USE_BIOPRINTER_UI) | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && defined(TOUCH_UI_LULZBOT_BIO) | ||||
|  | ||||
| #include "screens.h" | ||||
|  | ||||
| @@ -43,52 +43,52 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) { | ||||
|     #define GRID_ROWS 9 | ||||
|     #define GRID_COLS 2 | ||||
|  | ||||
|       .tag(2) .button( BTN_POS(1,1), BTN_SIZE(1,1), GET_TEXT_F(DISPLAY_MENU)) | ||||
|       .tag(2) .button( BTN_POS(1,1), BTN_SIZE(1,1), GET_TEXT_F(MSG_DISPLAY_MENU)) | ||||
|       #if HAS_TRINAMIC | ||||
|        .enabled(1) | ||||
|       #else | ||||
|        .enabled(0) | ||||
|       #endif | ||||
|       .tag(3) .button( BTN_POS(1,2), BTN_SIZE(1,1), GET_TEXT_F(MOTOR_CURRENT)) | ||||
|       .tag(3) .button( BTN_POS(1,2), BTN_SIZE(1,1), GET_TEXT_F(MSG_TMC_CURRENT)) | ||||
|       #if HAS_TRINAMIC | ||||
|        .enabled(1) | ||||
|       #else | ||||
|        .enabled(0) | ||||
|       #endif | ||||
|       .tag(4) .button( BTN_POS(1,3), BTN_SIZE(1,1), GET_TEXT_F(HOME_SENSE)) | ||||
|       .tag(5) .button( BTN_POS(1,4), BTN_SIZE(1,1), GET_TEXT_F(ENDSTOPS)) | ||||
|       .tag(4) .button( BTN_POS(1,3), BTN_SIZE(1,1), GET_TEXT_F(MSG_TMC_HOMING_THRS)) | ||||
|       .tag(5) .button( BTN_POS(1,4), BTN_SIZE(1,1), GET_TEXT_F(MSG_LCD_ENDSTOPS)) | ||||
|       #if HOTENDS > 1 | ||||
|       .enabled(1) | ||||
|       #else | ||||
|       .enabled(0) | ||||
|       #endif | ||||
|       .tag(6) .button( BTN_POS(1,5), BTN_SIZE(1,1), GET_TEXT_F(TOOL_OFFSETS)) | ||||
|       .tag(6) .button( BTN_POS(1,5), BTN_SIZE(1,1), GET_TEXT_F(MSG_OFFSETS_MENU)) | ||||
|  | ||||
|  | ||||
|       .tag(7) .button( BTN_POS(2,1), BTN_SIZE(1,1), GET_TEXT_F(STEPS_PER_MM)) | ||||
|       .tag(8) .button( BTN_POS(2,2), BTN_SIZE(1,1), GET_TEXT_F(VELOCITY)) | ||||
|       .tag(9) .button( BTN_POS(2,3), BTN_SIZE(1,1), GET_TEXT_F(ACCELERATION)) | ||||
|       .tag(7) .button( BTN_POS(2,1), BTN_SIZE(1,1), GET_TEXT_F(MSG_STEPS_PER_MM)) | ||||
|       .tag(8) .button( BTN_POS(2,2), BTN_SIZE(1,1), GET_TEXT_F(MSG_VELOCITY)) | ||||
|       .tag(9) .button( BTN_POS(2,3), BTN_SIZE(1,1), GET_TEXT_F(MSG_ACCELERATION)) | ||||
|       #if DISABLED(CLASSIC_JERK) | ||||
|         .tag(10) .button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXT_F(JUNC_DEVIATION)) | ||||
|         .tag(10) .button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXT_F(MSG_JUNCTION_DEVIATION)) | ||||
|       #else | ||||
|         .tag(10) .button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXT_F(JERK)) | ||||
|         .tag(10) .button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXT_F(MSG_JERK)) | ||||
|       #endif | ||||
|       #if ENABLED(BACKLASH_GCODE) | ||||
|       .enabled(1) | ||||
|       #else | ||||
|       .enabled(0) | ||||
|       #endif | ||||
|       .tag(11) .button( BTN_POS(2,5), BTN_SIZE(1,1), GET_TEXT_F(BACKLASH)) | ||||
|       .tag(11) .button( BTN_POS(2,5), BTN_SIZE(1,1), GET_TEXT_F(MSG_BACKLASH)) | ||||
|       #if ENABLED(LIN_ADVANCE) | ||||
|       .enabled(1) | ||||
|       #else | ||||
|       .enabled(0) | ||||
|       #endif | ||||
|       .tag(12) .button( BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(LINEAR_ADVANCE)) | ||||
|       .tag(13) .button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(INTERFACE_SETTINGS)) | ||||
|       .tag(14) .button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(RESTORE_DEFAULTS)) | ||||
|       .tag(12) .button( BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(MSG_LINEAR_ADVANCE)) | ||||
|       .tag(13) .button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(MSG_INTERFACE_SETTINGS)) | ||||
|       .tag(14) .button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_RESTORE_FAILSAFE)) | ||||
|       .colors(action_btn) | ||||
|       .tag(1). button( BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXT_F(BACK)); | ||||
|       .tag(1). button( BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK)); | ||||
|     #undef GRID_COLS | ||||
|     #undef GRID_ROWS | ||||
|   } | ||||
|   | ||||
| @@ -22,14 +22,14 @@ | ||||
|  | ||||
| #include "../config.h" | ||||
|  | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && defined(LULZBOT_USE_BIOPRINTER_UI) | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && defined(TOUCH_UI_LULZBOT_BIO) | ||||
|  | ||||
| #include "screens.h" | ||||
|  | ||||
| using namespace FTDI; | ||||
|  | ||||
| void BioConfirmHomeE::onRedraw(draw_mode_t) { | ||||
|   drawMessage(GET_TEXT_F(HOME_E_WARNING)); | ||||
|   drawMessage(GET_TEXT_F(MSG_HOME_E_WARNING)); | ||||
|   drawYesNoButtons(1); | ||||
| } | ||||
|  | ||||
| @@ -37,9 +37,9 @@ bool BioConfirmHomeE::onTouchEnd(uint8_t tag) { | ||||
|   switch (tag) { | ||||
|     case 1: | ||||
|       SpinnerDialogBox::enqueueAndWait_P(F( | ||||
|         "G112\n" | ||||
|         LULZBOT_AXIS_LEVELING_COMMANDS "\n" | ||||
|         LULZBOT_PARK_AND_RELEASE_COMMANDS | ||||
|         "G28 E\n" | ||||
|         AXIS_LEVELING_COMMANDS "\n" | ||||
|         PARK_AND_RELEASE_COMMANDS | ||||
|       )); | ||||
|       current_screen.forget(); | ||||
|       break; | ||||
|   | ||||
| @@ -22,14 +22,14 @@ | ||||
|  | ||||
| #include "../config.h" | ||||
|  | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && defined(LULZBOT_USE_BIOPRINTER_UI) | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && defined(TOUCH_UI_LULZBOT_BIO) | ||||
|  | ||||
| #include "screens.h" | ||||
|  | ||||
| using namespace FTDI; | ||||
|  | ||||
| void BioConfirmHomeXYZ::onRedraw(draw_mode_t) { | ||||
|   drawMessage(GET_TEXT_F(HOME_XYZ_WARNING)); | ||||
|   drawMessage(GET_TEXT_F(MSG_HOME_XYZ_WARNING)); | ||||
|   drawYesNoButtons(1); | ||||
| } | ||||
|  | ||||
| @@ -38,7 +38,7 @@ bool BioConfirmHomeXYZ::onTouchEnd(uint8_t tag) { | ||||
|     case 1: | ||||
|       SpinnerDialogBox::enqueueAndWait_P(F( | ||||
|        "G28\n" | ||||
|        LULZBOT_PARK_AND_RELEASE_COMMANDS | ||||
|        PARK_AND_RELEASE_COMMANDS | ||||
|       )); | ||||
|       current_screen.forget(); | ||||
|       break; | ||||
|   | ||||
| @@ -22,7 +22,7 @@ | ||||
|  | ||||
| #include "../config.h" | ||||
|  | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && defined(LULZBOT_USE_BIOPRINTER_UI) | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && defined(TOUCH_UI_LULZBOT_BIO) | ||||
|  | ||||
| #include "screens.h" | ||||
|  | ||||
| @@ -43,19 +43,19 @@ void MainMenu::onRedraw(draw_mode_t what) { | ||||
|   if (what & FOREGROUND) { | ||||
|     CommandProcessor cmd; | ||||
|     cmd.cmd(COLOR_RGB(bg_text_enabled)) | ||||
|        .font(font_large).text( BTN_POS(1,1), BTN_SIZE(2,1), GET_TEXT_F(MAIN_MENU)) | ||||
|        .font(font_large).text( BTN_POS(1,1), BTN_SIZE(2,1), GET_TEXT_F(MSG_MAIN)) | ||||
|        .colors(normal_btn) | ||||
|        .font(font_medium) | ||||
|        .tag(2).button( BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXT_F(MOVE_TO_HOME)) | ||||
|        .tag(3).button( BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXT_F(RAISE_PLUNGER)) | ||||
|        .tag(4).button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXT_F(RELEASE_XY_AXIS)) | ||||
|        .tag(5).button( BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(AUTOLEVEL_X_AXIS)) | ||||
|        .tag(6).button( BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(BED_TEMPERATURE)) | ||||
|        .tag(7).button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(INTERFACE_SETTINGS)) | ||||
|        .tag(8).button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(ADVANCED_SETTINGS)) | ||||
|        .tag(9).button( BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXT_F(ABOUT_PRINTER)) | ||||
|        .tag(2).button( BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXT_F(MSG_MOVE_TO_HOME)) | ||||
|        .tag(3).button( BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXT_F(MSG_RAISE_PLUNGER)) | ||||
|        .tag(4).button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXT_F(MSG_RELEASE_XY_AXIS)) | ||||
|        .tag(5).button( BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(MSG_AUTOLEVEL_X_AXIS)) | ||||
|        .tag(6).button( BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(MSG_BED_TEMPERATURE)) | ||||
|        .tag(7).button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(MSG_INTERFACE_SETTINGS)) | ||||
|        .tag(8).button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_ADVANCED_SETTINGS)) | ||||
|        .tag(9).button( BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXT_F(MSG_INFO_MENU)) | ||||
|        .colors(action_btn) | ||||
|        .tag(1).button( BTN_POS(1,10), BTN_SIZE(2,1), GET_TEXT_F(BACK)); | ||||
|        .tag(1).button( BTN_POS(1,10), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK)); | ||||
|   } | ||||
|  | ||||
|   #undef GRID_COLS | ||||
| @@ -72,7 +72,7 @@ bool MainMenu::onTouchEnd(uint8_t tag) { | ||||
|     case 2: GOTO_SCREEN(BioConfirmHomeXYZ);                                              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 5: SpinnerDialogBox::enqueueAndWait_P(F(AXIS_LEVELING_COMMANDS));               break; | ||||
|     case 6: GOTO_SCREEN(TemperatureScreen);                                              break; | ||||
|     case 7: GOTO_SCREEN(InterfaceSettingsScreen);                                        break; | ||||
|     case 8: GOTO_SCREEN(AdvancedSettingsMenu);                                           break; | ||||
|   | ||||
| @@ -0,0 +1,82 @@ | ||||
|  | ||||
| /**************************************************************************** | ||||
|  *   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: <http://www.gnu.org/licenses/>.                              * | ||||
|  ****************************************************************************/ | ||||
|  | ||||
| /** | ||||
|  * This file was auto-generated using "svg2cpp.pl" | ||||
|  * | ||||
|  * The encoding consists of x,y pairs with the min and max scaled to | ||||
|  * 0x0000 and 0xFFFE. A single 0xFFFF in the data stream indicates the | ||||
|  * start of a new closed path. | ||||
|  */ | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| constexpr float x_min = 0.000000; | ||||
|  | ||||
| constexpr float x_max = 480.000000; | ||||
|  | ||||
| constexpr float y_min = 0.000000; | ||||
|  | ||||
| constexpr float y_max = 272.000000; | ||||
|  | ||||
| const PROGMEM uint16_t z_neg[] = {0x7950, 0x51EA, 0x824E, 0x51EA, 0x824E, 0x71E2, 0x86CD, 0x71E2, 0x7DCF, 0x81DF, 0x74D1, 0x71E2, 0x7950, 0x71E2, 0x7950, 0x51EA}; | ||||
|  | ||||
| const PROGMEM uint16_t z_pos[] = {0x7950, 0x41EE, 0x824E, 0x41EE, 0x824E, 0x21F5, 0x86CD, 0x21F5, 0x7DCF, 0x11F9, 0x74D0, 0x21F5, 0x7950, 0x21F5, 0x7950, 0x41EE}; | ||||
|  | ||||
| const PROGMEM uint16_t y_neg[] = {0x3479, 0x56CF, 0x3EC6, 0x56CF, 0x3747, 0x7281, 0x3C6D, 0x7281, 0x2E61, 0x8059, 0x27D4, 0x7281, 0x2CFA, 0x7281, 0x3479, 0x56CF}; | ||||
|  | ||||
| const PROGMEM uint16_t y_pos[] = {0x3BF9, 0x3B1D, 0x4645, 0x3B1D, 0x4DC4, 0x1F6B, 0x52EB, 0x1F6B, 0x4C5E, 0x1192, 0x3E52, 0x1F6B, 0x4378, 0x1F6B, 0x3BF9, 0x3B1D}; | ||||
|  | ||||
| const PROGMEM uint16_t x_neg[] = {0x350E, 0x4209, 0x314E, 0x4FE2, 0x1CB5, 0x4FE2, 0x1AD6, 0x56CF, 0x1449, 0x48F6, 0x2255, 0x3B1D, 0x2075, 0x4209, 0x350E, 0x4209}; | ||||
|  | ||||
| const PROGMEM uint16_t x_pos[] = {0x498C, 0x4209, 0x45CC, 0x4FE2, 0x5A65, 0x4FE2, 0x5885, 0x56CF, 0x6691, 0x48F6, 0x6004, 0x3B1D, 0x5E25, 0x4209, 0x498C, 0x4209}; | ||||
|  | ||||
| const PROGMEM uint16_t syringe_fluid[] = {0xB4E9, 0x78BE, 0xBB12, 0x7C44, 0xBDE3, 0x7C44, 0xC426, 0x78BE, 0xC426, 0x250D, 0xB4E9, 0x250D, 0xB4E9, 0x78BE}; | ||||
|  | ||||
| const PROGMEM uint16_t syringe[] = {0xB8AD, 0x6BB1, 0xB8AD, 0x6E0C, 0xBE02, 0x6E0C, 0xBE02, 0x6BB1, 0xFFFF, 0xB8AD, 0x6248, 0xB8AD, 0x64A2, 0xBE02, 0x64A2, 0xBE02, 0x6248, 0xFFFF, 0xB8AD, 0x58DF, 0xB8AD, 0x5B39, 0xBE02, 0x5B39, 0xBE02, 0x58DF, 0xFFFF, 0xB8AD, 0x4F75, 0xB8AD, 0x51D0, 0xBE02, 0x51D0, 0xBE02, 0x4F75, 0xFFFF, 0xB8AD, 0x460C, 0xB8AD, 0x4866, 0xBE02, 0x4866, 0xBE02, 0x460C, 0xFFFF, 0xB8AD, 0x3CA3, 0xB8AD, 0x3EFD, 0xBE02, 0x3EFD, 0xBE02, 0x3CA3, 0xFFFF, 0xB8AD, 0x3339, 0xB8AD, 0x3594, 0xBE02, 0x3594, 0xBE02, 0x3339, 0xFFFF, 0xB396, 0x110A, 0xB396, 0x1818, 0xB995, 0x1818, 0xB995, 0x22AD, 0xB396, 0x22AD, 0xB396, 0x7ADA, 0xB995, 0x7E61, 0xB995, 0x88F5, 0xBB95, 0x88F5, 0xBB95, 0xA8B4, 0xBD94, 0xAC3B, 0xBD94, 0x88F5, 0xBF94, 0x88F5, 0xBF94, 0x7E61, 0xC593, 0x7ADA, 0xC593, 0x22AD, 0xBF94, 0x22AD, 0xBF94, 0x1818, 0xC593, 0x1818, 0xC593, 0x110A, 0xFFFF, 0xBB95, 0x1818, 0xBD94, 0x1818, 0xBD94, 0x22AD, 0xBB95, 0x22AD, 0xBB95, 0x1818, 0xFFFF, 0xB596, 0x2634, 0xC393, 0x2634, 0xC393, 0x7753, 0xBD94, 0x7ADA, 0xBB95, 0x7ADA, 0xB596, 0x7753, 0xB596, 0x2634}; | ||||
|  | ||||
| const PROGMEM uint16_t syringe_outline[] = {0xB396, 0x110A, 0xB396, 0x1818, 0xB995, 0x1818, 0xB995, 0x22AD, 0xB396, 0x22AD, 0xB396, 0x7ADA, 0xB995, 0x7E61, 0xB995, 0x88F5, 0xBB95, 0x88F5, 0xBB95, 0xA8B4, 0xBD94, 0xAC3B, 0xBD94, 0x88F5, 0xBF94, 0x88F5, 0xBF94, 0x7E61, 0xC593, 0x7ADA, 0xC593, 0x22AD, 0xBF94, 0x22AD, 0xBF94, 0x1818, 0xC593, 0x1818, 0xC593, 0x110A, 0xB396, 0x110A}; | ||||
|  | ||||
| const PROGMEM uint16_t padlock[] = {0x3FE3, 0x2A04, 0x3D34, 0x2AF9, 0x3AFF, 0x2D93, 0x397D, 0x316D, 0x38E8, 0x3626, 0x38E8, 0x3A14, 0x39B3, 0x3C8F, 0x3B50, 0x3C8F, 0x3C1C, 0x3A14, 0x3C1C, 0x363C, 0x3C6B, 0x33A9, 0x3D3A, 0x3193, 0x3E6C, 0x302D, 0x3FE3, 0x2FAA, 0x415A, 0x302D, 0x428C, 0x3192, 0x435B, 0x33A8, 0x43AB, 0x363C, 0x43AB, 0x4492, 0x38C3, 0x4492, 0x3741, 0x45AC, 0x36A1, 0x4856, 0x36A1, 0x5C41, 0x3741, 0x5EEC, 0x38C3, 0x6005, 0x4703, 0x6005, 0x4886, 0x5EEC, 0x4925, 0x5C41, 0x4925, 0x4856, 0x4886, 0x45AC, 0x4703, 0x4492, 0x46DE, 0x362B, 0x4649, 0x316D, 0x44C7, 0x2D92, 0x4292, 0x2AF9}; | ||||
|  | ||||
| const PROGMEM uint16_t home_z[] = {0x80BB, 0x2B43, 0x712C, 0x46B9, 0x750F, 0x46B9, 0x750F, 0x622F, 0x7CD7, 0x622F, 0x7CD7, 0x5474, 0x849F, 0x5474, 0x849F, 0x622F, 0x8C67, 0x622F, 0x8C67, 0x46B9, 0x904B, 0x46B9, 0x8A48, 0x3C1D, 0x8A48, 0x2ECD, 0x8664, 0x2ECD, 0x8664, 0x3540}; | ||||
|  | ||||
| const PROGMEM uint16_t usb_btn[] = {0x0558, 0xC0D6, 0x44A4, 0xC0D6, 0x44A4, 0xF431, 0x0558, 0xF431, 0x0558, 0xC0D6}; | ||||
|  | ||||
| const PROGMEM uint16_t menu_btn[] = {0x4B18, 0xC0D6, 0x8A64, 0xC0D6, 0x8A64, 0xF431, 0x4B18, 0xF431, 0x4B18, 0xC0D6}; | ||||
|  | ||||
| const PROGMEM uint16_t e_pos[] = {0xE04E, 0x5E7B, 0xE94C, 0x5E7B, 0xE94C, 0x7E74, 0xEDCB, 0x7E74, 0xE4CD, 0x8E70, 0xDBCF, 0x7E74, 0xE04E, 0x7E74, 0xE04E, 0x5E7B}; | ||||
|  | ||||
| const PROGMEM uint16_t e_neg[] = {0xE04E, 0x4E7F, 0xE94C, 0x4E7F, 0xE94C, 0x2E87, 0xEDCB, 0x2E87, 0xE4CD, 0x1E8A, 0xDBCF, 0x2E87, 0xE04E, 0x2E87, 0xE04E, 0x4E7F}; | ||||
|  | ||||
| const PROGMEM uint16_t home_e[] = {0xD705, 0x3885, 0xC775, 0x53FB, 0xCB59, 0x53FB, 0xCB59, 0x6F71, 0xD321, 0x6F71, 0xD321, 0x61B6, 0xDAE9, 0x61B6, 0xDAE9, 0x6F71, 0xE2B1, 0x6F71, 0xE2B1, 0x53FB, 0xE695, 0x53FB, 0xE092, 0x495F, 0xE092, 0x3C0E, 0xDCAE, 0x3C0E, 0xDCAE, 0x4281}; | ||||
|  | ||||
| const PROGMEM uint16_t fine_label[] = {0x0D92, 0x9444, 0x5211, 0x9444, 0x5211, 0xA9EA, 0x0D92, 0xA9EA}; | ||||
|  | ||||
| const PROGMEM uint16_t fine_toggle[] = {0x56E7, 0x9444, 0x8007, 0x9444, 0x8007, 0xA9EA, 0x56E7, 0xA9EA}; | ||||
|  | ||||
| const PROGMEM uint16_t zone2_temp[] = {0xC620, 0xD35A, 0xFD0E, 0xD35A, 0xFD0E, 0xF075, 0xC620, 0xF075}; | ||||
|  | ||||
| const PROGMEM uint16_t zone1_temp[] = {0x8E04, 0xD35A, 0xC4F3, 0xD35A, 0xC4F3, 0xF075, 0x8E04, 0xF075}; | ||||
|  | ||||
| const PROGMEM uint16_t zone2_label[] = {0xC620, 0xB4AD, 0xFD0A, 0xB4AD, 0xFD0A, 0xD1C8, 0xC620, 0xD1C8}; | ||||
|  | ||||
| const PROGMEM uint16_t zone1_label[] = {0x8E04, 0xB4AD, 0xC4F3, 0xB4AD, 0xC4F3, 0xD1C8, 0x8E04, 0xD1C8}; | ||||
|  | ||||
| const PROGMEM uint16_t actual_temp[] = {0xCDF6, 0xD037, 0xF7CA, 0xD037, 0xF7CA, 0xF424, 0xCDF6, 0xF424}; | ||||
|  | ||||
| const PROGMEM uint16_t bed_icon[] = {0xCDF6, 0xA5CC, 0xF7CA, 0xA5CC, 0xF7CA, 0xC9B9, 0xCDF6, 0xC9B9}; | ||||
|  | ||||
| @@ -22,7 +22,7 @@ | ||||
|  | ||||
| #include "../config.h" | ||||
|  | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && defined(LULZBOT_USE_BIOPRINTER_UI) | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && defined(TOUCH_UI_LULZBOT_BIO) | ||||
|  | ||||
| #include "screens.h" | ||||
|  | ||||
|   | ||||
| @@ -5,6 +5,7 @@ | ||||
| /**************************************************************************** | ||||
|  *   Written By Mark Pelletier  2017 - Aleph Objects, Inc.                  * | ||||
|  *   Written By Marcio Teixeira 2018 - Aleph Objects, Inc.                  * | ||||
|  *   Written By Marcio Teixeira 2019 - Cocoa Press                          * | ||||
|  *                                                                          * | ||||
|  *   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   * | ||||
| @@ -22,12 +23,17 @@ | ||||
|  | ||||
| #include "../config.h" | ||||
|  | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && defined(LULZBOT_USE_BIOPRINTER_UI) | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && (ENABLED(TOUCH_UI_LULZBOT_BIO) || ENABLED(TOUCH_UI_COCOA_PRESS)) | ||||
|  | ||||
| #include "screens.h" | ||||
|  | ||||
| #include "../ftdi_eve_lib/extras/poly_ui.h" | ||||
| #include "bio_printer_ui.h" | ||||
|  | ||||
| #ifdef TOUCH_UI_PORTRAIT | ||||
|   #include "bio_printer_ui_portrait.h" | ||||
| #else | ||||
|   #include "bio_printer_ui_landscape.h" | ||||
| #endif | ||||
|  | ||||
| #define GRID_COLS 2 | ||||
| #define GRID_ROWS 9 | ||||
| @@ -64,22 +70,46 @@ void StatusScreen::draw_temperature(draw_mode_t what) { | ||||
|   if (what & BACKGROUND) { | ||||
|     cmd.cmd(COLOR_RGB(bg_color)); | ||||
|  | ||||
|     // Draw touch surfaces | ||||
|     ui.bounds(POLY(target_temp), x, y, h, v); | ||||
|     cmd.rectangle(x, y, h, v); | ||||
|     ui.bounds(POLY(actual_temp), x, y, h, v); | ||||
|     cmd.rectangle(x, y, h, v); | ||||
|     ui.bounds(POLY(bed_icon), x, y, h, v); | ||||
|     cmd.rectangle(x, y, h, v); | ||||
|  | ||||
|     // Draw bed icon | ||||
|     cmd.cmd(BITMAP_SOURCE(Bed_Heat_Icon_Info)) | ||||
|        .cmd(BITMAP_LAYOUT(Bed_Heat_Icon_Info)) | ||||
|        .cmd(BITMAP_SIZE  (Bed_Heat_Icon_Info)) | ||||
|        .cmd(COLOR_RGB(shadow_rgb)) | ||||
|        .icon (x + 2, y + 2, h, v, Bed_Heat_Icon_Info, icon_scale * 2) | ||||
|        .cmd(COLOR_RGB(bg_text_enabled)) | ||||
|        .icon (x, y, h, v, Bed_Heat_Icon_Info, icon_scale * 2); | ||||
|     #if ENABLED(TOUCH_UI_LULZBOT_BIO) | ||||
|        // The LulzBot Bio shows the temperature for | ||||
|        // the bed. | ||||
|        | ||||
|       #ifdef TOUCH_UI_PORTRAIT | ||||
|         // Draw touch surfaces | ||||
|         ui.bounds(POLY(target_temp), x, y, h, v); | ||||
|         cmd.rectangle(x, y, h, v); | ||||
|         ui.bounds(POLY(actual_temp), x, y, h, v); | ||||
|         cmd.rectangle(x, y, h, v); | ||||
|       #else | ||||
|         ui.bounds(POLY(bed_temp), x, y, h, v); | ||||
|         cmd.rectangle(x, y, h, v); | ||||
|       #endif | ||||
|       ui.bounds(POLY(bed_icon), x, y, h, v); | ||||
|       cmd.rectangle(x, y, h, v); | ||||
|      | ||||
|       // Draw bed icon | ||||
|       cmd.cmd(BITMAP_SOURCE(Bed_Heat_Icon_Info)) | ||||
|          .cmd(BITMAP_LAYOUT(Bed_Heat_Icon_Info)) | ||||
|          .cmd(BITMAP_SIZE  (Bed_Heat_Icon_Info)) | ||||
|          .cmd(COLOR_RGB(shadow_rgb)) | ||||
|          .icon (x + 2, y + 2, h, v, Bed_Heat_Icon_Info, icon_scale * 2) | ||||
|          .cmd(COLOR_RGB(bg_text_enabled)) | ||||
|          .icon (x, y, h, v, Bed_Heat_Icon_Info, icon_scale * 2); | ||||
|     #endif | ||||
|      | ||||
|     #if ENABLED(TOUCH_UI_COCOA_PRESS) | ||||
|       // The CocoaPress shows the temperature for two | ||||
|       // heating zones, but has no bed temperature | ||||
|        | ||||
|       cmd.cmd(COLOR_RGB(bg_text_enabled)); | ||||
|       cmd.font(font_medium); | ||||
|        | ||||
|       ui.bounds(POLY(zone1_label), x, y, h, v); | ||||
|       cmd.text(x, y, h, v, GET_TEXT_F(MSG_ZONE_1)); | ||||
|        | ||||
|       ui.bounds(POLY(zone2_label), x, y, h, v); | ||||
|       cmd.text(x, y, h, v, GET_TEXT_F(MSG_ZONE_2)); | ||||
|     #endif | ||||
|  | ||||
|     #ifdef TOUCH_UI_USE_UTF8 | ||||
|       load_utf8_bitmaps(cmd); // Restore font bitmap handles | ||||
| @@ -87,33 +117,71 @@ void StatusScreen::draw_temperature(draw_mode_t what) { | ||||
|   } | ||||
|  | ||||
|   if (what & FOREGROUND) { | ||||
|     char bed_str[15]; | ||||
|     char str[15]; | ||||
|     cmd.cmd(COLOR_RGB(bg_text_enabled)); | ||||
|     #if ENABLED(TOUCH_UI_LULZBOT_BIO) | ||||
|       cmd.font(font_medium); | ||||
|         | ||||
|       #ifdef TOUCH_UI_PORTRAIT | ||||
|         if (!isHeaterIdle(BED) && getTargetTemp_celsius(BED) > 0) | ||||
|           format_temp(str, getTargetTemp_celsius(BED)); | ||||
|         else | ||||
|           strcpy_P(str, GET_TEXT(MSG_BED)); | ||||
|      | ||||
|         ui.bounds(POLY(target_temp), x, y, h, v); | ||||
|         cmd.text(x, y, h, v, str); | ||||
|  | ||||
|     cmd.font(font_xlarge) | ||||
|        .cmd(COLOR_RGB(bg_text_enabled)); | ||||
|  | ||||
|     if (!isHeaterIdle(BED) && getTargetTemp_celsius(BED) > 0) | ||||
|       format_temp(bed_str, getTargetTemp_celsius(BED)); | ||||
|     else | ||||
|       strcpy_P(bed_str, PSTR(MSG_BED)); | ||||
|  | ||||
|     ui.bounds(POLY(target_temp), x, y, h, v); | ||||
|     cmd.text(x, y, h, v, bed_str); | ||||
|  | ||||
|     format_temp(bed_str, getActualTemp_celsius(BED)); | ||||
|     ui.bounds(POLY(actual_temp), x, y, h, v); | ||||
|     cmd.text(x, y, h, v, bed_str); | ||||
|         format_temp(str, getActualTemp_celsius(BED)); | ||||
|         ui.bounds(POLY(actual_temp), x, y, h, v); | ||||
|         cmd.text(x, y, h, v, str); | ||||
|       #else | ||||
|         if (!isHeaterIdle(BED) && getTargetTemp_celsius(BED) > 0) | ||||
|           format_temp_and_temp(str, getActualTemp_celsius(BED), getTargetTemp_celsius(BED)); | ||||
|         else | ||||
|           format_temp_and_idle(str, getActualTemp_celsius(BED)); | ||||
|          | ||||
|         ui.bounds(POLY(bed_temp), x, y, h, v); | ||||
|         cmd.text(x, y, h, v, str); | ||||
|       #endif | ||||
|     #endif | ||||
|      | ||||
|     #if ENABLED(TOUCH_UI_COCOA_PRESS) | ||||
|       // The CocoaPress shows the temperature for two | ||||
|       // heating zones, but has no bed temperature | ||||
|        | ||||
|       cmd.font(font_large); | ||||
|        | ||||
|       if (!isHeaterIdle(E0) && getTargetTemp_celsius(E0) > 0) | ||||
|         format_temp_and_temp(str, getActualTemp_celsius(E0), getTargetTemp_celsius(E0)); | ||||
|       else | ||||
|         format_temp_and_idle(str, getActualTemp_celsius(E0)); | ||||
|        | ||||
|       ui.bounds(POLY(zone1_temp), x, y, h, v); | ||||
|       cmd.text(x, y, h, v, str); | ||||
|        | ||||
|       if (!isHeaterIdle(E1) && getTargetTemp_celsius(E1) > 0) | ||||
|         format_temp_and_temp(str, getActualTemp_celsius(E1), getTargetTemp_celsius(E1)); | ||||
|       else | ||||
|         format_temp_and_idle(str, getActualTemp_celsius(E1)); | ||||
|        | ||||
|       ui.bounds(POLY(zone2_temp), x, y, h, v); | ||||
|       cmd.text(x, y, h, v, str); | ||||
|     #endif | ||||
|   } | ||||
| } | ||||
|  | ||||
| void StatusScreen::draw_syringe(draw_mode_t what) { | ||||
|   int16_t x, y, h, v; | ||||
|   #ifdef LULZBOT_E_TRAVEL_LIMIT | ||||
|     const float fill_level = 1.0 - min(1.0, max(0.0, getAxisPosition_mm(E0) / LULZBOT_E_TRAVEL_LIMIT)); | ||||
|   #ifdef E_MAX_POS | ||||
|     const float fill_level = 1.0 - min(1.0, max(0.0, getAxisPosition_mm(E0) / E_MAX_POS)); | ||||
|   #else | ||||
|     const float fill_level = 0.75; | ||||
|   #endif | ||||
|   const bool  e_homed = isAxisPositionKnown(E0); | ||||
|   #if ENABLED(TOUCH_UI_LULZBOT_BIO) | ||||
|     const bool  e_homed = isAxisPositionKnown(E0); | ||||
|   #else | ||||
|     const bool  e_homed = true; | ||||
|   #endif | ||||
|  | ||||
|   CommandProcessor cmd; | ||||
|   PolyUI ui(cmd, what); | ||||
| @@ -143,7 +211,11 @@ void StatusScreen::draw_syringe(draw_mode_t what) { | ||||
| } | ||||
|  | ||||
| void StatusScreen::draw_arrows(draw_mode_t what) { | ||||
|   const bool  e_homed = isAxisPositionKnown(E0); | ||||
|   #if ENABLED(TOUCH_UI_LULZBOT_BIO) | ||||
|     const bool  e_homed = isAxisPositionKnown(E0); | ||||
|   #else | ||||
|     const bool  e_homed = true; | ||||
|   #endif | ||||
|   const bool  z_homed = isAxisPositionKnown(Z); | ||||
|  | ||||
|   CommandProcessor cmd; | ||||
| @@ -176,25 +248,34 @@ void StatusScreen::draw_fine_motion(draw_mode_t what) { | ||||
|   CommandProcessor cmd; | ||||
|   PolyUI ui(cmd, what); | ||||
|  | ||||
|   cmd.font(font_medium) | ||||
|      .tag(16); | ||||
|   cmd.font( | ||||
|     #ifdef TOUCH_UI_PORTRAIT | ||||
|       font_medium | ||||
|     #else | ||||
|       font_small | ||||
|     #endif | ||||
|   ) | ||||
|   .tag(16);  | ||||
|  | ||||
|   if (what & BACKGROUND) { | ||||
|  | ||||
|     ui.bounds(POLY(fine_label), x, y, h, v); | ||||
|     cmd.cmd(COLOR_RGB(bg_text_enabled)) | ||||
|        .text(x, y, h, v, GET_TEXT_F(FINE_MOTION)); | ||||
|        .text(x, y, h, v, GET_TEXT_F(MSG_FINE_MOTION)); | ||||
|   } | ||||
|  | ||||
|   if (what & FOREGROUND) { | ||||
|     ui.bounds(POLY(fine_toggle), x, y, h, v); | ||||
|     cmd.colors(ui_toggle) | ||||
|        .toggle2(x, y, h, v, GET_TEXT_F(NO), GET_TEXT_F(YES), fine_motion); | ||||
|        .toggle2(x, y, h, v, GET_TEXT_F(MSG_NO), GET_TEXT_F(MSG_YES), fine_motion); | ||||
|   } | ||||
| } | ||||
|  | ||||
| void StatusScreen::draw_overlay_icons(draw_mode_t what) { | ||||
|   const bool  e_homed = isAxisPositionKnown(E0); | ||||
|   #if ENABLED(TOUCH_UI_LULZBOT_BIO) | ||||
|     const bool  e_homed = isAxisPositionKnown(E0); | ||||
|   #else | ||||
|     const bool  e_homed = true; | ||||
|   #endif | ||||
|   const bool  z_homed = isAxisPositionKnown(Z); | ||||
|  | ||||
|   CommandProcessor cmd; | ||||
| @@ -211,22 +292,27 @@ void StatusScreen::draw_overlay_icons(draw_mode_t what) { | ||||
|   } | ||||
| } | ||||
|  | ||||
| void StatusScreen::draw_buttons(draw_mode_t) { | ||||
| void StatusScreen::draw_buttons(draw_mode_t what) { | ||||
|   int16_t x, y, h, v; | ||||
|    | ||||
|   const bool has_media = isMediaInserted() && !isPrintingFromMedia(); | ||||
|  | ||||
|   CommandProcessor cmd; | ||||
|  | ||||
|   PolyUI ui(cmd, what); | ||||
|    | ||||
|   ui.bounds(POLY(usb_btn), x, y, h, v); | ||||
|   cmd.font(font_medium) | ||||
|      .colors(normal_btn) | ||||
|      .enabled(has_media) | ||||
|      .colors(has_media ? action_btn : normal_btn) | ||||
|      .tag(9).button(BTN_POS(1,9), BTN_SIZE(1,1), | ||||
|      .tag(9).button(x, y, h, v, | ||||
|         isPrintingFromMedia() ? | ||||
|           GET_TEXT_F(PRINTING) : | ||||
|           GET_TEXT_F(MEDIA) | ||||
|           GET_TEXT_F(MSG_PRINTING) : | ||||
|           GET_TEXT_F(MSG_BUTTON_MEDIA) | ||||
|       ); | ||||
|  | ||||
|   cmd.colors(!has_media ? action_btn : normal_btn).tag(10).button(BTN_POS(2,9), BTN_SIZE(1,1), GET_TEXT_F(MENU)); | ||||
|        | ||||
|   ui.bounds(POLY(menu_btn), x, y, h, v); | ||||
|   cmd.colors(!has_media ? action_btn : normal_btn).tag(10).button(x, y, h, v, GET_TEXT_F(MSG_BUTTON_MENU)); | ||||
| } | ||||
|  | ||||
| void StatusScreen::loadBitmaps() { | ||||
| @@ -280,7 +366,9 @@ bool StatusScreen::onTouchEnd(uint8_t tag) { | ||||
|       break; | ||||
|     case  9: GOTO_SCREEN(FilesScreen); break; | ||||
|     case 10: GOTO_SCREEN(MainMenu); break; | ||||
|     case 13: GOTO_SCREEN(BioConfirmHomeE); break; | ||||
|     #if ENABLED(TOUCH_UI_LULZBOT_BIO) | ||||
|       case 13: GOTO_SCREEN(BioConfirmHomeE); break; | ||||
|     #endif | ||||
|     case 14: SpinnerDialogBox::enqueueAndWait_P(F("G28 Z")); break; | ||||
|     case 15: GOTO_SCREEN(TemperatureScreen);  break; | ||||
|     case 16: fine_motion = !fine_motion; break; | ||||
| @@ -320,19 +408,30 @@ bool StatusScreen::onTouchHeld(uint8_t tag) { | ||||
| } | ||||
|  | ||||
| void StatusScreen::setStatusMessage(progmem_str pstr) { | ||||
|   BioPrintingDialogBox::setStatusMessage(pstr); | ||||
|   #if defined(TOUCH_UI_LULZBOT_BIO) | ||||
|     BioPrintingDialogBox::setStatusMessage(pstr); | ||||
|   #else | ||||
|     UNUSED(pstr); | ||||
|   #endif | ||||
| } | ||||
|  | ||||
| void StatusScreen::setStatusMessage(const char * const str) { | ||||
|   BioPrintingDialogBox::setStatusMessage(str); | ||||
|   #if defined(TOUCH_UI_LULZBOT_BIO) | ||||
|     BioPrintingDialogBox::setStatusMessage(str); | ||||
|   #else | ||||
|     UNUSED(str); | ||||
|   #endif | ||||
| } | ||||
|  | ||||
| void StatusScreen::onIdle() { | ||||
|   reset_menu_timeout(); | ||||
|   if (refresh_timer.elapsed(STATUS_UPDATE_INTERVAL)) { | ||||
|     if (!EventLoop::is_touch_held()) | ||||
|       onRefresh(); | ||||
|     if (isPrintingFromMedia()) | ||||
|       BioPrintingDialogBox::show(); | ||||
|     #if defined(TOUCH_UI_LULZBOT_BIO) | ||||
|       if (isPrintingFromMedia()) | ||||
|         BioPrintingDialogBox::show(); | ||||
|     #endif | ||||
|     refresh_timer.start(); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -22,7 +22,7 @@ | ||||
|  | ||||
| #include "../config.h" | ||||
|  | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && defined(LULZBOT_USE_BIOPRINTER_UI) | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && defined(TOUCH_UI_LULZBOT_BIO) | ||||
|  | ||||
| #include "screens.h" | ||||
|  | ||||
| @@ -41,25 +41,25 @@ void TuneMenu::onRedraw(draw_mode_t what) { | ||||
|        .cmd(COLOR_RGB(bg_text_enabled)) | ||||
|        .tag(0) | ||||
|        .font(font_large) | ||||
|        .text( BTN_POS(1,1), BTN_SIZE(2,1), GET_TEXT_F(PRINT_MENU)); | ||||
|        .text( BTN_POS(1,1), BTN_SIZE(2,1), GET_TEXT_F(MSG_PRINT_MENU)); | ||||
|   } | ||||
|  | ||||
|   if (what & FOREGROUND) { | ||||
|     CommandProcessor cmd; | ||||
|     cmd.colors(normal_btn) | ||||
|        .font(font_medium) | ||||
|        .enabled( isPrinting()).tag(2).button( BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXT_F(PRINT_SPEED)) | ||||
|                               .tag(3).button( BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXT_F(BED_TEMPERATURE)) | ||||
|        .enabled( isPrinting()).tag(2).button( BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXT_F(MSG_PRINT_SPEED)) | ||||
|                               .tag(3).button( BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXT_F(MSG_BED_TEMPERATURE)) | ||||
|         #if ENABLED(BABYSTEPPING) | ||||
|           .enabled(true) | ||||
|         #else | ||||
|           .enabled(false) | ||||
|         #endif | ||||
|                               .tag(4).button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXT_F(NUDGE_NOZZLE)) | ||||
|        .enabled(!isPrinting()).tag(5).button( BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(MOVE_TO_HOME)) | ||||
|        .enabled(!isPrinting()).tag(6).button( BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(RAISE_PLUNGER)) | ||||
|        .enabled(!isPrinting()).tag(7).button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(RELEASE_XY_AXIS)) | ||||
|        .colors(action_btn)    .tag(1).button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(BACK)); | ||||
|                               .tag(4).button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXT_F(MSG_NUDGE_NOZZLE)) | ||||
|        .enabled(!isPrinting()).tag(5).button( BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(MSG_MOVE_TO_HOME)) | ||||
|        .enabled(!isPrinting()).tag(6).button( BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(MSG_RAISE_PLUNGER)) | ||||
|        .enabled(!isPrinting()).tag(7).button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(MSG_RELEASE_XY_AXIS)) | ||||
|        .colors(action_btn)    .tag(1).button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK)); | ||||
|   } | ||||
|   #undef GRID_COLS | ||||
|   #undef GRID_ROWS | ||||
|   | ||||
| @@ -5,6 +5,7 @@ | ||||
| /**************************************************************************** | ||||
|  *   Written By Mark Pelletier  2017 - Aleph Objects, Inc.                  * | ||||
|  *   Written By Marcio Teixeira 2018 - Aleph Objects, Inc.                  * | ||||
|  *   Written By Marcio Teixeira 2019 - Cocoa Press                          * | ||||
|  *                                                                          * | ||||
|  *   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   * | ||||
| @@ -29,10 +30,18 @@ | ||||
| #include "../ftdi_eve_lib/extras/poly_ui.h" | ||||
| #include "../archim2-flash/flash_storage.h" | ||||
|  | ||||
| #ifdef TOUCH_UI_PORTRAIT | ||||
|   #include "../theme/bootscreen_logo_portrait.h" | ||||
| #ifdef SHOW_CUSTOM_BOOTSCREEN | ||||
|   #ifdef TOUCH_UI_PORTRAIT | ||||
|     #include "../theme/_bootscreen_portrait.h" | ||||
|   #else | ||||
|     #include "../theme/_bootscreen_landscape.h" | ||||
|   #endif | ||||
| #else | ||||
|   #include "../theme/bootscreen_logo_landscape.h" | ||||
|   #ifdef TOUCH_UI_PORTRAIT | ||||
|     #include "../theme/marlin_bootscreen_portrait.h" | ||||
|   #else | ||||
|     #include "../theme/marlin_bootscreen_landscape.h" | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| using namespace FTDI; | ||||
| @@ -62,10 +71,11 @@ void BootScreen::onIdle() { | ||||
|     GOTO_SCREEN(TouchCalibrationScreen); | ||||
|     current_screen.forget(); | ||||
|     PUSH_SCREEN(StatusScreen); | ||||
|     StatusScreen::setStatusMessage(GET_TEXT_F(WELCOME_MSG)); | ||||
|   } else { | ||||
|     if (!UIFlashStorage::is_valid()) { | ||||
|       StatusScreen::loadBitmaps(); | ||||
|       SpinnerDialogBox::show(GET_TEXT_F(PLEASE_WAIT)); | ||||
|       SpinnerDialogBox::show(GET_TEXT_F(MSG_PLEASE_WAIT)); | ||||
|       UIFlashStorage::format_flash(); | ||||
|       SpinnerDialogBox::hide(); | ||||
|     } | ||||
| @@ -79,7 +89,7 @@ void BootScreen::onIdle() { | ||||
|  | ||||
|     StatusScreen::loadBitmaps(); | ||||
|  | ||||
|     #ifdef LULZBOT_USE_BIOPRINTER_UI | ||||
|     #ifdef TOUCH_UI_LULZBOT_BIO | ||||
|       GOTO_SCREEN(BioConfirmHomeXYZ); | ||||
|       current_screen.forget(); | ||||
|       PUSH_SCREEN(StatusScreen); | ||||
| @@ -97,21 +107,15 @@ void BootScreen::onIdle() { | ||||
| void BootScreen::showSplashScreen() { | ||||
|   CommandProcessor cmd; | ||||
|   cmd.cmd(CMD_DLSTART); | ||||
|   cmd.cmd(CLEAR_COLOR_RGB(logo_bg)); | ||||
|   cmd.cmd(CLEAR_COLOR_RGB(LOGO_BACKGROUND)); | ||||
|   cmd.cmd(CLEAR(true,true,true)); | ||||
|  | ||||
|   #define POLY(A) PolyUI::poly_reader_t(A, sizeof(A)/sizeof(A[0])) | ||||
|  | ||||
|   #define LOGO_PAINT_PATH(rgb, path) cmd.cmd(COLOR_RGB(rgb)); ui.fill(POLY(path)); | ||||
|    | ||||
|   PolyUI ui(cmd); | ||||
|  | ||||
|   cmd.cmd(COLOR_RGB(logo_fg)); | ||||
|   ui.fill(POLY(logo_green)); | ||||
|   cmd.cmd(COLOR_RGB(logo_stroke)); | ||||
|   ui.fill(POLY(logo_black)); | ||||
|   ui.fill(POLY(logo_type)); | ||||
|   ui.fill(POLY(logo_mark)); | ||||
|   cmd.cmd(COLOR_RGB(0xFFFFFF)); | ||||
|   ui.fill(POLY(logo_white)); | ||||
|   LOGO_PAINT_PATHS | ||||
|  | ||||
|   cmd.cmd(DL::DL_DISPLAY); | ||||
|   cmd.cmd(CMD_SWAP); | ||||
|   | ||||
| @@ -88,6 +88,9 @@ void ChangeFilamentScreen::onEntry() { | ||||
|   screen_data.ChangeFilamentScreen.t_tag = 0; | ||||
|   screen_data.ChangeFilamentScreen.repeat_tag = 0; | ||||
|   screen_data.ChangeFilamentScreen.saved_extruder = getActiveTool(); | ||||
|   #if FILAMENT_UNLOAD_PURGE_LENGTH > 0 | ||||
|     screen_data.ChangeFilamentScreen.need_purge = true; | ||||
|   #endif | ||||
| } | ||||
|  | ||||
| void ChangeFilamentScreen::onExit() { | ||||
| @@ -114,14 +117,14 @@ void ChangeFilamentScreen::onRedraw(draw_mode_t what) { | ||||
|     #else | ||||
|        .font(font_medium) | ||||
|     #endif | ||||
|        .text(BTN_POS(1,1), BTN_SIZE(2,1), GET_TEXT_F(EXTRUDER_SELECTION)) | ||||
|        .text(BTN_POS(1,1), BTN_SIZE(2,1), GET_TEXT_F(MSG_EXTRUDER_SELECTION)) | ||||
|     #ifdef TOUCH_UI_PORTRAIT | ||||
|        .text(BTN_POS(1,7), BTN_SIZE(1,1), F("")) | ||||
|     #else | ||||
|        .text(BTN_POS(3,1), BTN_SIZE(2,1), GET_TEXT_F(CURRENT_TEMPERATURE)) | ||||
|        .text(BTN_POS(3,1), BTN_SIZE(2,1), GET_TEXT_F(MSG_CURRENT_TEMPERATURE)) | ||||
|        .font(font_small) | ||||
|     #endif | ||||
|        .text(BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXT_F(REMOVAL_TEMPERATURE)); | ||||
|        .text(BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXT_F(MSG_REMOVAL_TEMPERATURE)); | ||||
|     drawTempGradient(BTN_POS(1,4), BTN_SIZE(1,3)); | ||||
|   } | ||||
|  | ||||
| @@ -154,12 +157,12 @@ void ChangeFilamentScreen::onRedraw(draw_mode_t what) { | ||||
|     const bool t_ok = getActualTemp_celsius(e) > getSoftenTemp() - 10; | ||||
|  | ||||
|     if (screen_data.ChangeFilamentScreen.t_tag && !t_ok) { | ||||
|       cmd.text(BTN_POS(1,6), BTN_SIZE(1,1), GET_TEXT_F(HEATING)); | ||||
|       cmd.text(BTN_POS(1,6), BTN_SIZE(1,1), GET_TEXT_F(MSG_HEATING)); | ||||
|     } else if (getActualTemp_celsius(e) > 100) { | ||||
|       cmd.cmd(COLOR_RGB(0xFF0000)) | ||||
|          .text(BTN_POS(1,4), BTN_SIZE(1,1), GET_TEXT_F(CAUTION)) | ||||
|          .text(BTN_POS(1,4), BTN_SIZE(1,1), GET_TEXT_F(MSG_CAUTION)) | ||||
|          .colors(normal_btn) | ||||
|          .text(BTN_POS(1,6), BTN_SIZE(1,1), GET_TEXT_F(HOT)); | ||||
|          .text(BTN_POS(1,6), BTN_SIZE(1,1), GET_TEXT_F(MSG_HOT)); | ||||
|     } | ||||
|  | ||||
|     #define TOG_STYLE(A) colors(A ? action_btn : normal_btn) | ||||
| @@ -200,13 +203,13 @@ void ChangeFilamentScreen::onRedraw(draw_mode_t what) { | ||||
|     { | ||||
|       char str[30]; | ||||
|  | ||||
|       format_temp_and_material(str, LOW_TEMP, GET_TEXT(MATERIAL_PLA)); | ||||
|       format_temp_and_material(str, LOW_TEMP, GET_TEXT(MSG_MATERIAL_PLA)); | ||||
|       cmd.tag(2) .TOG_STYLE(tog2) .button (BTN_POS(2,6), BTN_SIZE(1,1), str); | ||||
|  | ||||
|       format_temp_and_material(str, MED_TEMP, GET_TEXT(MATERIAL_ABS)); | ||||
|       format_temp_and_material(str, MED_TEMP, GET_TEXT(MSG_MATERIAL_ABS)); | ||||
|       cmd.tag(3) .TOG_STYLE(tog3) .button (BTN_POS(2,5), BTN_SIZE(1,1), str); | ||||
|  | ||||
|       format_temp_and_material(str, HIGH_TEMP, GET_TEXT(MATERIAL_HIGH_TEMP)); | ||||
|       format_temp_and_material(str, HIGH_TEMP, GET_TEXT(MSG_MATERIAL_HIGH_TEMP)); | ||||
|       cmd.tag(4) .TOG_STYLE(tog4) .button (BTN_POS(2,4), BTN_SIZE(1,1), str); | ||||
|     } | ||||
|     cmd.colors(normal_btn) | ||||
| @@ -221,23 +224,23 @@ void ChangeFilamentScreen::onRedraw(draw_mode_t what) { | ||||
|     .cmd(COLOR_RGB(t_ok ? bg_text_enabled : bg_text_disabled)) | ||||
|     #ifdef TOUCH_UI_PORTRAIT | ||||
|        .font(font_large) | ||||
|        .tag(0)                              .text   (BTN_POS(1,8),  BTN_SIZE(1,1), GET_TEXT_F(UNLOAD_FILAMENT)) | ||||
|                                             .text   (BTN_POS(2,8),  BTN_SIZE(1,1), GET_TEXT_F(LOAD_FILAMENT)) | ||||
|        .tag(5)                .enabled(t_ok).button (BTN_POS(1,9),  BTN_SIZE(1,1), GET_TEXT_F(MOMENTARY)) | ||||
|        .tag(6)                .enabled(t_ok).button (BTN_POS(2,9),  BTN_SIZE(1,1), GET_TEXT_F(MOMENTARY)) | ||||
|        .tag(7).TOG_STYLE(tog7).enabled(t_ok).button (BTN_POS(1,10), BTN_SIZE(1,1), GET_TEXT_F(CONTINUOUS)) | ||||
|        .tag(8).TOG_STYLE(tog8).enabled(t_ok).button (BTN_POS(2,10), BTN_SIZE(1,1), GET_TEXT_F(CONTINUOUS)) | ||||
|        .tag(1).colors(action_btn)           .button (BTN_POS(1,11), BTN_SIZE(2,1), GET_TEXT_F(BACK)); | ||||
|        .tag(0)                              .text   (BTN_POS(1,8),  BTN_SIZE(1,1), GET_TEXT_F(MSG_UNLOAD_FILAMENT)) | ||||
|                                             .text   (BTN_POS(2,8),  BTN_SIZE(1,1), GET_TEXT_F(MSG_LOAD_FILAMENT)) | ||||
|        .tag(5)                .enabled(t_ok).button (BTN_POS(1,9),  BTN_SIZE(1,1), GET_TEXT_F(MSG_MOMENTARY)) | ||||
|        .tag(6)                .enabled(t_ok).button (BTN_POS(2,9),  BTN_SIZE(1,1), GET_TEXT_F(MSG_MOMENTARY)) | ||||
|        .tag(7).TOG_STYLE(tog7).enabled(t_ok).button (BTN_POS(1,10), BTN_SIZE(1,1), GET_TEXT_F(MSG_CONTINUOUS)) | ||||
|        .tag(8).TOG_STYLE(tog8).enabled(t_ok).button (BTN_POS(2,10), BTN_SIZE(1,1), GET_TEXT_F(MSG_CONTINUOUS)) | ||||
|        .tag(1).colors(action_btn)           .button (BTN_POS(1,11), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK)); | ||||
|     #else | ||||
|        .font(font_small) | ||||
|        .tag(0)                              .text   (BTN_POS(3,3),  BTN_SIZE(1,1), GET_TEXT_F(UNLOAD_FILAMENT)) | ||||
|                                             .text   (BTN_POS(4,3),  BTN_SIZE(1,1), GET_TEXT_F(LOAD_FILAMENT)) | ||||
|        .tag(5)                .enabled(t_ok).button (BTN_POS(3,4),  BTN_SIZE(1,1), GET_TEXT_F(MOMENTARY)) | ||||
|        .tag(6)                .enabled(t_ok).button (BTN_POS(4,4),  BTN_SIZE(1,1), GET_TEXT_F(MOMENTARY)) | ||||
|        .tag(7).TOG_STYLE(tog7).enabled(t_ok).button (BTN_POS(3,5),  BTN_SIZE(1,1), GET_TEXT_F(CONTINUOUS)) | ||||
|        .tag(8).TOG_STYLE(tog8).enabled(t_ok).button (BTN_POS(4,5),  BTN_SIZE(1,1), GET_TEXT_F(CONTINUOUS)) | ||||
|        .tag(0)                              .text   (BTN_POS(3,3),  BTN_SIZE(1,1), GET_TEXT_F(MSG_UNLOAD_FILAMENT)) | ||||
|                                             .text   (BTN_POS(4,3),  BTN_SIZE(1,1), GET_TEXT_F(MSG_LOAD_FILAMENT)) | ||||
|        .tag(5)                .enabled(t_ok).button (BTN_POS(3,4),  BTN_SIZE(1,1), GET_TEXT_F(MSG_MOMENTARY)) | ||||
|        .tag(6)                .enabled(t_ok).button (BTN_POS(4,4),  BTN_SIZE(1,1), GET_TEXT_F(MSG_MOMENTARY)) | ||||
|        .tag(7).TOG_STYLE(tog7).enabled(t_ok).button (BTN_POS(3,5),  BTN_SIZE(1,1), GET_TEXT_F(MSG_CONTINUOUS)) | ||||
|        .tag(8).TOG_STYLE(tog8).enabled(t_ok).button (BTN_POS(4,5),  BTN_SIZE(1,1), GET_TEXT_F(MSG_CONTINUOUS)) | ||||
|        .font(font_medium) | ||||
|        .tag(1).colors(action_btn)           .button (BTN_POS(3,6),  BTN_SIZE(2,1), GET_TEXT_F(BACK)); | ||||
|        .tag(1).colors(action_btn)           .button (BTN_POS(3,6),  BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK)); | ||||
|     #endif | ||||
|   } | ||||
|   #undef GRID_COLS | ||||
| @@ -262,10 +265,24 @@ ExtUI::extruder_t ChangeFilamentScreen::getExtruder() { | ||||
|   } | ||||
| } | ||||
|  | ||||
| void ChangeFilamentScreen::doPurge() { | ||||
|   #if FILAMENT_UNLOAD_PURGE_LENGTH > 0 | ||||
|     constexpr float purge_distance_mm = FILAMENT_UNLOAD_PURGE_LENGTH; | ||||
|     if (screen_data.ChangeFilamentScreen.need_purge) { | ||||
|       screen_data.ChangeFilamentScreen.need_purge = false; | ||||
|       MoveAxisScreen::setManualFeedrate(getExtruder(), purge_distance_mm); | ||||
|       ExtUI::setAxisPosition_mm(ExtUI::getAxisPosition_mm(getExtruder()) + purge_distance_mm, getExtruder()); | ||||
|     } | ||||
|   #endif | ||||
| } | ||||
|  | ||||
| bool ChangeFilamentScreen::onTouchStart(uint8_t tag) { | ||||
|   // Make the Momentary and Continuous buttons slightly more responsive | ||||
|   switch (tag) { | ||||
|     case 5: case 6: case 7: case 8: | ||||
|       #if FILAMENT_UNLOAD_PURGE_LENGTH > 0 | ||||
|         if (tag == 5 || tag == 7) doPurge(); | ||||
|       #endif | ||||
|       return ChangeFilamentScreen::onTouchHeld(tag); | ||||
|     default: | ||||
|       return false; | ||||
| @@ -295,6 +312,9 @@ bool ChangeFilamentScreen::onTouchEnd(uint8_t tag) { | ||||
|       screen_data.ChangeFilamentScreen.e_tag      = tag; | ||||
|       screen_data.ChangeFilamentScreen.t_tag      = 0; | ||||
|       screen_data.ChangeFilamentScreen.repeat_tag = 0; | ||||
|       #if FILAMENT_UNLOAD_PURGE_LENGTH > 0 | ||||
|         screen_data.ChangeFilamentScreen.need_purge = true; | ||||
|       #endif | ||||
|       setActiveTool(getExtruder(), true); | ||||
|       break; | ||||
|     case 15: GOTO_SCREEN(TemperatureScreen); break; | ||||
| @@ -318,6 +338,7 @@ bool ChangeFilamentScreen::onTouchHeld(uint8_t tag) { | ||||
| } | ||||
|  | ||||
| void ChangeFilamentScreen::onIdle() { | ||||
|   reset_menu_timeout(); | ||||
|   if (screen_data.ChangeFilamentScreen.repeat_tag) onTouchHeld(screen_data.ChangeFilamentScreen.repeat_tag); | ||||
|   if (refresh_timer.elapsed(STATUS_UPDATE_INTERVAL)) { | ||||
|     onRefresh(); | ||||
|   | ||||
| @@ -29,7 +29,7 @@ | ||||
| using namespace ExtUI; | ||||
|  | ||||
| void ConfirmAbortPrintDialogBox::onRedraw(draw_mode_t) { | ||||
|   drawMessage(GET_TEXT_F(ABORT_WARNING)); | ||||
|   drawMessage(GET_TEXT_F(MSG_ABORT_WARNING)); | ||||
|   drawYesNoButtons(); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -30,7 +30,7 @@ using namespace ExtUI; | ||||
| using namespace Theme; | ||||
|  | ||||
| void ConfirmAutoCalibrationDialogBox::onRedraw(draw_mode_t) { | ||||
|   drawMessage(GET_TEXT_F(CALIBRATION_WARNING)); | ||||
|   drawMessage(GET_TEXT_F(MSG_CALIBRATION_WARNING)); | ||||
|   drawYesNoButtons(); | ||||
| } | ||||
|  | ||||
| @@ -38,7 +38,7 @@ bool ConfirmAutoCalibrationDialogBox::onTouchEnd(uint8_t tag) { | ||||
|   switch (tag) { | ||||
|     case 1: | ||||
|       GOTO_SCREEN(StatusScreen); | ||||
|       injectCommands_P(PSTR(LULZBOT_CALIBRATION_COMMANDS)); | ||||
|       injectCommands_P(PSTR(CALIBRATION_COMMANDS)); | ||||
|       return true; | ||||
|     default: | ||||
|       return DialogBoxBaseClass::onTouchEnd(tag); | ||||
|   | ||||
| @@ -22,7 +22,7 @@ | ||||
|  | ||||
| #include "../config.h" | ||||
|  | ||||
| #if BOTH(LULZBOT_TOUCH_UI, DEVELOPER_SCREENS) | ||||
| #if BOTH(LULZBOT_TOUCH_UI, TOUCH_UI_DEVELOPER_MENU) | ||||
|  | ||||
| #include "screens.h" | ||||
|  | ||||
| @@ -31,17 +31,17 @@ | ||||
| using namespace FTDI; | ||||
|  | ||||
| void ConfirmEraseFlashDialogBox::onRedraw(draw_mode_t) { | ||||
|   drawMessage(GET_TEXT_F(ERASE_FLASH_WARNING)); | ||||
|   drawMessage(GET_TEXT_F(MSG_ERASE_FLASH_WARNING)); | ||||
|   drawYesNoButtons(); | ||||
| } | ||||
|  | ||||
| bool ConfirmEraseFlashDialogBox::onTouchEnd(uint8_t tag) { | ||||
|   switch (tag) { | ||||
|     case 1: | ||||
|       SpinnerDialogBox::show(GET_TEXT_F(ERASING)); | ||||
|       SpinnerDialogBox::show(GET_TEXT_F(MSG_ERASING)); | ||||
|       UIFlashStorage::format_flash(); | ||||
|       SpinnerDialogBox::hide(); | ||||
|       AlertDialogBox::show(GET_TEXT_F(ERASED)); | ||||
|       AlertDialogBox::show(GET_TEXT_F(MSG_ERASED)); | ||||
|       // Remove ConfirmEraseFlashDialogBox from the stack | ||||
|       // so the alert box doesn't return to me. | ||||
|       current_screen.forget(); | ||||
|   | ||||
| @@ -38,8 +38,8 @@ void ConfirmStartPrintDialogBox::onEntry() { | ||||
|  | ||||
| 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); | ||||
|   char buffer[strlen_P(GET_TEXT(MSG_START_PRINT_CONFIRMATION)) + strlen(filename) + 1]; | ||||
|   sprintf_P(buffer, GET_TEXT(MSG_START_PRINT_CONFIRMATION), filename); | ||||
|   drawMessage((const char *)buffer); | ||||
|   drawYesNoButtons(1); | ||||
| } | ||||
| @@ -48,7 +48,7 @@ bool ConfirmStartPrintDialogBox::onTouchEnd(uint8_t tag) { | ||||
|   switch (tag) { | ||||
|     case 1: | ||||
|       printFile(getShortFilename()); | ||||
|       StatusScreen::setStatusMessage(GET_TEXT_F(PRINT_STARTING)); | ||||
|       StatusScreen::setStatusMessage(GET_TEXT_F(MSG_PRINT_STARTING)); | ||||
|       GOTO_SCREEN(StatusScreen); | ||||
|       return true; | ||||
|     case 2: GOTO_PREVIOUS(); return true; | ||||
|   | ||||
| @@ -33,14 +33,14 @@ using namespace Theme; | ||||
| void DefaultAccelerationScreen::onRedraw(draw_mode_t what) { | ||||
|   widgets_t w(what); | ||||
|   w.precision(0); | ||||
|   w.units(GET_TEXT_F(UNITS_MM_S2)); | ||||
|   w.heading(      GET_TEXT_F(ACCELERATION)); | ||||
|   w.units(GET_TEXT_F(MSG_UNITS_MM_S2)); | ||||
|   w.heading(      GET_TEXT_F(MSG_ACCELERATION)); | ||||
|   w.color(other); | ||||
|   w.adjuster(  2, GET_TEXT_F(ACCEL_PRINTING), getPrintingAcceleration_mm_s2() ); | ||||
|   w.adjuster(  4, GET_TEXT_F(ACCEL_TRAVEL),   getTravelAcceleration_mm_s2() ); | ||||
|   w.adjuster(  6, GET_TEXT_F(ACCEL_RETRACT),  getRetractAcceleration_mm_s2() ); | ||||
|   w.adjuster(  2, GET_TEXT_F(MSG_ACCEL_PRINTING), getPrintingAcceleration_mm_s2() ); | ||||
|   w.adjuster(  4, GET_TEXT_F(MSG_ACCEL_TRAVEL),   getTravelAcceleration_mm_s2() ); | ||||
|   w.adjuster(  6, GET_TEXT_F(MSG_ACCEL_RETRACT),  getRetractAcceleration_mm_s2() ); | ||||
|   w.increments(); | ||||
|   w.button(    8, GET_TEXT_F(SET_MAXIMUM)); | ||||
|   w.button(    8, GET_TEXT_F(MSG_SET_MAXIMUM)); | ||||
| } | ||||
|  | ||||
| bool DefaultAccelerationScreen::onTouchHeld(uint8_t tag) { | ||||
|   | ||||
| @@ -22,7 +22,7 @@ | ||||
|  | ||||
| #include "../config.h" | ||||
|  | ||||
| #if BOTH(LULZBOT_TOUCH_UI, DEVELOPER_SCREENS) | ||||
| #if BOTH(LULZBOT_TOUCH_UI, TOUCH_UI_DEVELOPER_MENU) | ||||
|  | ||||
| #include "screens.h" | ||||
|  | ||||
|   | ||||
| @@ -50,14 +50,14 @@ template void DialogBoxBaseClass::drawMessage(progmem_str, int16_t font); | ||||
| void DialogBoxBaseClass::drawYesNoButtons(uint8_t default_btn) { | ||||
|   CommandProcessor cmd; | ||||
|   cmd.font(font_medium) | ||||
|      .colors(default_btn == 1 ? action_btn : normal_btn).tag(1).button( BTN_POS(1,8), BTN_SIZE(1,1), GET_TEXT_F(YES)) | ||||
|      .colors(default_btn == 2 ? action_btn : normal_btn).tag(2).button( BTN_POS(2,8), BTN_SIZE(1,1), GET_TEXT_F(NO)); | ||||
|      .colors(default_btn == 1 ? action_btn : normal_btn).tag(1).button( BTN_POS(1,8), BTN_SIZE(1,1), GET_TEXT_F(MSG_YES)) | ||||
|      .colors(default_btn == 2 ? action_btn : normal_btn).tag(2).button( BTN_POS(2,8), BTN_SIZE(1,1), GET_TEXT_F(MSG_NO)); | ||||
| } | ||||
|  | ||||
| void DialogBoxBaseClass::drawOkayButton() { | ||||
|   CommandProcessor cmd; | ||||
|   cmd.font(font_medium) | ||||
|      .tag(1).button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(OKAY)); | ||||
|      .tag(1).button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_BUTTON_OKAY)); | ||||
| } | ||||
|  | ||||
| void DialogBoxBaseClass::drawButton(const progmem_str label) { | ||||
|   | ||||
| @@ -33,13 +33,13 @@ void DisplayTuningScreen::onRedraw(draw_mode_t what) { | ||||
|   widgets_t w(what); | ||||
|   w.precision(0, BaseNumericAdjustmentScreen::DEFAULT_LOWEST); | ||||
|   w.units(F("")); | ||||
|   w.heading(GET_TEXT_F(DISPLAY_MENU)); | ||||
|   w.heading(GET_TEXT_F(MSG_DISPLAY_MENU)); | ||||
|   w.color(other); | ||||
|   w.adjuster( 2, GET_TEXT_F(H_OFFSET), CLCD::mem_read_16(CLCD::REG::HOFFSET) ); | ||||
|   w.adjuster( 4, GET_TEXT_F(V_OFFSET), CLCD::mem_read_16(CLCD::REG::VOFFSET) ); | ||||
|   w.adjuster( 2, GET_TEXT_F(MSG_H_OFFSET), CLCD::mem_read_16(CLCD::REG::HOFFSET) ); | ||||
|   w.adjuster( 4, GET_TEXT_F(MSG_V_OFFSET), CLCD::mem_read_16(CLCD::REG::VOFFSET) ); | ||||
|   w.increments(); | ||||
|   w.heading(     GET_TEXT_F(TOUCH_SCREEN)); | ||||
|   w.button(6,    GET_TEXT_F(CALIBRATE)); | ||||
|   w.heading(     GET_TEXT_F(MSG_TOUCH_SCREEN)); | ||||
|   w.button(6,    GET_TEXT_F(MSG_CALIBRATE)); | ||||
| } | ||||
|  | ||||
| bool DisplayTuningScreen::onTouchHeld(uint8_t tag) { | ||||
|   | ||||
| @@ -32,12 +32,10 @@ using namespace ExtUI; | ||||
|  | ||||
| void EndstopStatesScreen::onEntry() { | ||||
|   BaseScreen::onEntry(); | ||||
|   enable_emi_pins(true); | ||||
| } | ||||
|  | ||||
| void EndstopStatesScreen::onExit() { | ||||
|   BaseScreen::onExit(); | ||||
|   enable_emi_pins(false); | ||||
| } | ||||
|  | ||||
| void EndstopStatesScreen::onRedraw(draw_mode_t) { | ||||
| @@ -51,60 +49,60 @@ void EndstopStatesScreen::onRedraw(draw_mode_t) { | ||||
|   #define GRID_COLS 6 | ||||
|  | ||||
|   #define PIN_BTN(X,Y,PIN,LABEL)          button(BTN_POS(X,Y), BTN_SIZE(2,1), LABEL) | ||||
|   #define PIN_ENABLED(LABEL,PIN,INV,X,Y)  cmd.enabled(1).colors(READ(PIN##_PIN) != INV ? action_btn : normal_btn).PIN_BTN(X,Y,PIN,LABEL); | ||||
|   #define PIN_DISABLED(LABEL,PIN,INV,X,Y) cmd.enabled(0).PIN_BTN(X,Y,PIN,LABEL); | ||||
|   #define PIN_ENABLED(X,Y,LABEL,PIN,INV)  cmd.enabled(1).colors(READ(PIN##_PIN) != INV ? action_btn : normal_btn).PIN_BTN(X,Y,PIN,LABEL); | ||||
|   #define PIN_DISABLED(X,Y,LABEL,PIN)     cmd.enabled(0).PIN_BTN(X,Y,PIN,LABEL); | ||||
|  | ||||
|   #ifdef TOUCH_UI_PORTRAIT | ||||
|   cmd.font(font_large) | ||||
|   #else | ||||
|   cmd.font(font_medium) | ||||
|   #endif | ||||
|      .text(BTN_POS(1,1), BTN_SIZE(6,1), GET_TEXT_F(ENDSTOPS)) | ||||
|      .text(BTN_POS(1,1), BTN_SIZE(6,1), GET_TEXT_F(MSG_LCD_ENDSTOPS)) | ||||
|      .font(font_tiny); | ||||
|   #if PIN_EXISTS(X_MAX) | ||||
|     PIN_ENABLED (GET_TEXT_F(X_MAX), X_MAX,X_MAX_ENDSTOP_INVERTING,1,2) | ||||
|     PIN_ENABLED (1, 2, PSTR(MSG_X_MAX), X_MAX, X_MAX_ENDSTOP_INVERTING) | ||||
|   #else | ||||
|     PIN_DISABLED(GET_TEXT_F(X_MAX),X_MAX,X_MAX_ENDSTOP_INVERTING,1,2) | ||||
|     PIN_DISABLED(1, 2, PSTR(MSG_X_MAX), X_MAX) | ||||
|   #endif | ||||
|   #if PIN_EXISTS(Y_MAX) | ||||
|     PIN_ENABLED (GET_TEXT_F(Y_MAX),Y_MAX,Y_MAX_ENDSTOP_INVERTING,3,2) | ||||
|     PIN_ENABLED (3, 2, PSTR(MSG_Y_MAX), Y_MAX, Y_MAX_ENDSTOP_INVERTING) | ||||
|   #else | ||||
|     PIN_DISABLED(GET_TEXT_F(Y_MAX),Y_MAX,Y_MAX_ENDSTOP_INVERTING,3,2) | ||||
|     PIN_DISABLED(3, 2, PSTR(MSG_Y_MAX), Y_MAX) | ||||
|   #endif | ||||
|   #if PIN_EXISTS(Z_MAX) | ||||
|     PIN_ENABLED (GET_TEXT_F(Z_MAX),Z_MAX,Z_MAX_ENDSTOP_INVERTING,5,2) | ||||
|     PIN_ENABLED (5, 2, PSTR(MSG_Z_MAX), Z_MAX, Z_MAX_ENDSTOP_INVERTING) | ||||
|   #else | ||||
|     PIN_DISABLED(GET_TEXT_F(Z_MAX),Z_MAX,Z_MAX_ENDSTOP_INVERTING,5,2) | ||||
|     PIN_DISABLED(5, 2, PSTR(MSG_Z_MAX), Z_MAX) | ||||
|   #endif | ||||
|   #if PIN_EXISTS(X_MIN) | ||||
|     PIN_ENABLED (GET_TEXT_F(X_MIN),X_MIN,X_MIN_ENDSTOP_INVERTING,1,3) | ||||
|     PIN_ENABLED (1, 3, PSTR(MSG_X_MIN), X_MIN, X_MIN_ENDSTOP_INVERTING) | ||||
|   #else | ||||
|     PIN_DISABLED(GET_TEXT_F(X_MIN),X_MIN,X_MIN_ENDSTOP_INVERTING,1,3) | ||||
|     PIN_DISABLED(1, 3, PSTR(MSG_X_MIN), X_MIN) | ||||
|   #endif | ||||
|   #if PIN_EXISTS(Y_MIN) | ||||
|     PIN_ENABLED (GET_TEXT_F(Y_MIN),Y_MIN,Y_MIN_ENDSTOP_INVERTING,3,3) | ||||
|     PIN_ENABLED (3, 3, PSTR(MSG_Y_MIN), Y_MIN, Y_MIN_ENDSTOP_INVERTING) | ||||
|   #else | ||||
|     PIN_DISABLED(GET_TEXT_F(Y_MIN),Y_MIN,Y_MIN_ENDSTOP_INVERTING,3,3) | ||||
|     PIN_DISABLED(3, 3, PSTR(MSG_Y_MIN), Y_MIN) | ||||
|   #endif | ||||
|   #if PIN_EXISTS(Z_MIN) | ||||
|     PIN_ENABLED (GET_TEXT_F(Z_MIN),Z_MIN,Z_MIN_ENDSTOP_INVERTING,5,3) | ||||
|     PIN_ENABLED (5, 3, PSTR(MSG_Z_MIN), Z_MIN, Z_MIN_ENDSTOP_INVERTING) | ||||
|   #else | ||||
|     PIN_DISABLED(GET_TEXT_F(Z_MIN),Z_MIN,Z_MIN_ENDSTOP_INVERTING,5,3) | ||||
|     PIN_DISABLED(5, 3, PSTR(MSG_Z_MIN), Z_MIN) | ||||
|   #endif | ||||
|   #if ENABLED(FILAMENT_RUNOUT_SENSOR) && PIN_EXISTS(FIL_RUNOUT) | ||||
|     PIN_ENABLED (GET_TEXT_F(RUNOUT_1),FIL_RUNOUT, FIL_RUNOUT_INVERTING,1,4) | ||||
|     PIN_ENABLED (1, 4, GET_TEXT_F(MSG_RUNOUT_1), FIL_RUNOUT, FIL_RUNOUT_INVERTING) | ||||
|   #else | ||||
|     PIN_DISABLED(GET_TEXT_F(RUNOUT_1),FIL_RUNOUT, FIL_RUNOUT_INVERTING,1,4) | ||||
|     PIN_DISABLED(1, 4, GET_TEXT_F(MSG_RUNOUT_1), FIL_RUNOUT) | ||||
|   #endif | ||||
|   #if ENABLED(FILAMENT_RUNOUT_SENSOR) && PIN_EXISTS(FIL_RUNOUT2) | ||||
|     PIN_ENABLED (GET_TEXT_F(RUNOUT_2),FIL_RUNOUT2,FIL_RUNOUT_INVERTING,3,4) | ||||
|     PIN_ENABLED (3, 4, GET_TEXT_F(MSG_RUNOUT_2), FIL_RUNOUT2, FIL_RUNOUT_INVERTING) | ||||
|   #else | ||||
|     PIN_DISABLED(GET_TEXT_F(RUNOUT_2),FIL_RUNOUT2,FIL_RUNOUT_INVERTING,3,4) | ||||
|     PIN_DISABLED(3, 4, GET_TEXT_F(MSG_RUNOUT_2), FIL_RUNOUT2) | ||||
|   #endif | ||||
|   #if PIN_EXISTS(Z_MIN_PROBE) | ||||
|     PIN_ENABLED (GET_TEXT_F(Z_PROBE),Z_MIN_PROBE,Z_MIN_PROBE_ENDSTOP_INVERTING,5,4) | ||||
|     PIN_ENABLED (5, 4, PSTR(MSG_Z_PROBE), Z_MIN_PROBE, Z_MIN_PROBE_ENDSTOP_INVERTING) | ||||
|   #else | ||||
|     PIN_DISABLED(GET_TEXT_F(Z_PROBE),Z_MIN_PROBE,Z_MIN_PROBE_ENDSTOP_INVERTING,5,4) | ||||
|     PIN_DISABLED(5, 4, PSTR(MSG_Z_PROBE), Z_MIN_PROBE) | ||||
|   #endif | ||||
|  | ||||
|   #if HAS_SOFTWARE_ENDSTOPS | ||||
| @@ -112,16 +110,16 @@ void EndstopStatesScreen::onRedraw(draw_mode_t) { | ||||
|     #define EDGE_R 30 | ||||
|     cmd.cmd(COLOR_RGB(bg_text_enabled)) | ||||
|        .font(font_small) | ||||
|        .text         (BTN_POS(1,5), BTN_SIZE(3,1), GET_TEXT_F(SOFT_ENDSTOPS), OPT_RIGHTX | OPT_CENTERY) | ||||
|        .text          (BTN_POS(1,5), BTN_SIZE(3,1), GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS), OPT_RIGHTX | OPT_CENTERY) | ||||
|        .colors(ui_toggle) | ||||
|        .tag(2).toggle2(BTN_POS(4,5), BTN_SIZE(3,1), GET_TEXT_F(NO), GET_TEXT_F(YES), getSoftEndstopState()); | ||||
|        .tag(2).toggle2(BTN_POS(4,5), BTN_SIZE(3,1), GET_TEXT_F(MSG_NO), GET_TEXT_F(MSG_YES), getSoftEndstopState()); | ||||
|       #undef EDGE_R | ||||
|       #define EDGE_R 0 | ||||
|   #endif | ||||
|  | ||||
|   cmd.font(font_medium) | ||||
|      .colors(action_btn) | ||||
|      .tag(1).button( BTN_POS(1,7), BTN_SIZE(6,1), GET_TEXT_F(BACK)); | ||||
|      .tag(1).button( BTN_POS(1,7), BTN_SIZE(6,1), GET_TEXT_F(MSG_BACK)); | ||||
|   #undef GRID_COLS | ||||
|   #undef GRID_ROWS | ||||
| } | ||||
|   | ||||
| @@ -31,10 +31,10 @@ using namespace ExtUI; | ||||
|  | ||||
| void FeedratePercentScreen::onRedraw(draw_mode_t what) { | ||||
|   widgets_t w(what); | ||||
|   w.precision(0).units(GET_TEXT_F(UNITS_PERCENT)); | ||||
|   w.precision(0).units(GET_TEXT_F(MSG_UNITS_PERCENT)); | ||||
|  | ||||
|   w.heading(GET_TEXT_F(PRINT_SPEED)); | ||||
|   w.adjuster(4,  GET_TEXT_F(SPEED), getFeedrate_percent()); | ||||
|   w.heading(GET_TEXT_F(MSG_PRINT_SPEED)); | ||||
|   w.adjuster(4,  GET_TEXT_F(MSG_SPEED), getFeedrate_percent()); | ||||
|   w.increments(); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -44,43 +44,43 @@ void FilamentMenu::onRedraw(draw_mode_t what) { | ||||
|     #ifdef TOUCH_UI_PORTRAIT | ||||
|       #define GRID_ROWS 9 | ||||
|       #define GRID_COLS 2 | ||||
|          .text  ( BTN_POS(1,1),      BTN_SIZE(2,1), GET_TEXT_F(FILAMENT)) | ||||
|          .text  ( BTN_POS(1,1),      BTN_SIZE(2,1), GET_TEXT_F(MSG_FILAMENT)) | ||||
|          .font(font_medium).colors(normal_btn) | ||||
|       #if ENABLED(FILAMENT_RUNOUT_SENSOR) | ||||
|         .enabled(1) | ||||
|       #else | ||||
|         .enabled(0) | ||||
|       #endif | ||||
|       .tag(2).button( BTN_POS(1,2),  BTN_SIZE(2,1), GET_TEXT_F(RUNOUT_SENSOR)) | ||||
|       .tag(2).button( BTN_POS(1,2),  BTN_SIZE(2,1), GET_TEXT_F(MSG_RUNOUT_SENSOR)) | ||||
|       #if ENABLED(LIN_ADVANCE) | ||||
|         .enabled(1) | ||||
|       #else | ||||
|         .enabled(0) | ||||
|       #endif | ||||
|       .tag(3).button( BTN_POS(1,3),  BTN_SIZE(2,1), GET_TEXT_F(LINEAR_ADVANCE)) | ||||
|       .tag(3).button( BTN_POS(1,3),  BTN_SIZE(2,1), GET_TEXT_F(MSG_LINEAR_ADVANCE)) | ||||
|       .colors(action_btn) | ||||
|       .tag(1) .button( BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXT_F(BACK)); | ||||
|       .tag(1) .button( BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK)); | ||||
|       #undef GRID_COLS | ||||
|       #undef GRID_ROWS | ||||
|     #else | ||||
|       #define GRID_ROWS 6 | ||||
|       #define GRID_COLS 3 | ||||
|          .text  ( BTN_POS(1,1),      BTN_SIZE(3,1), GET_TEXT_F(FILAMENT)) | ||||
|          .text  ( BTN_POS(1,1),      BTN_SIZE(3,1), GET_TEXT_F(MSG_FILAMENT)) | ||||
|          .font(font_medium).colors(normal_btn) | ||||
|       #if ENABLED(FILAMENT_RUNOUT_SENSOR) | ||||
|         .enabled(1) | ||||
|       #else | ||||
|         .enabled(0) | ||||
|       #endif | ||||
|       .tag(2).button( BTN_POS(1,2),  BTN_SIZE(3,1), GET_TEXT_F(RUNOUT_SENSOR)) | ||||
|       .tag(2).button( BTN_POS(1,2),  BTN_SIZE(3,1), GET_TEXT_F(MSG_RUNOUT_SENSOR)) | ||||
|       #if ENABLED(LIN_ADVANCE) | ||||
|         .enabled(1) | ||||
|       #else | ||||
|         .enabled(0) | ||||
|       #endif | ||||
|       .tag(3).button( BTN_POS(1,3),  BTN_SIZE(3,1), GET_TEXT_F(LINEAR_ADVANCE)) | ||||
|       .tag(3).button( BTN_POS(1,3),  BTN_SIZE(3,1), GET_TEXT_F(MSG_LINEAR_ADVANCE)) | ||||
|       .colors(action_btn) | ||||
|       .tag(1) .button( BTN_POS(1,6), BTN_SIZE(3,1), GET_TEXT_F(BACK)); | ||||
|       .tag(1) .button( BTN_POS(1,6), BTN_SIZE(3,1), GET_TEXT_F(MSG_BACK)); | ||||
|     #endif | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -32,15 +32,15 @@ using namespace Theme; | ||||
|  | ||||
| void FilamentRunoutScreen::onRedraw(draw_mode_t what) { | ||||
|   widgets_t w(what); | ||||
|   w.heading(   GET_TEXT_F(FILAMENT)); | ||||
|   w.toggle( 2, GET_TEXT_F(RUNOUT_SENSOR), getFilamentRunoutEnabled()); | ||||
|   w.heading(   GET_TEXT_F(MSG_FILAMENT)); | ||||
|   w.toggle( 2, GET_TEXT_F(MSG_RUNOUT_SENSOR), getFilamentRunoutEnabled()); | ||||
|  | ||||
|   #ifdef FILAMENT_RUNOUT_DISTANCE_MM | ||||
|     w.heading(GET_TEXT_F(DETECTION_THRESHOLD)); | ||||
|     w.units(GET_TEXT_F(UNITS_MM)); | ||||
|     w.heading(GET_TEXT_F(MSG_RUNOUT_DISTANCE_MM)); | ||||
|     w.units(GET_TEXT_F(MSG_UNITS_MM)); | ||||
|     w.precision(0); | ||||
|     w.color(e_axis); | ||||
|     w.adjuster( 10, GET_TEXT_F(DISTANCE), getFilamentRunoutDistance_mm(), getFilamentRunoutEnabled()); | ||||
|     w.adjuster( 10, PSTR(""), getFilamentRunoutDistance_mm(), getFilamentRunoutEnabled()); | ||||
|     w.increments(); | ||||
|   #endif | ||||
| } | ||||
|   | ||||
| @@ -167,13 +167,13 @@ void FilesScreen::drawFooter() { | ||||
|   cmd.colors(normal_btn) | ||||
|      .font(font_medium) | ||||
|      .colors(has_selection ? normal_btn : action_btn) | ||||
|      .tag(back_tag).button( BTN_POS(4,y), BTN_SIZE(3,h), GET_TEXT_F(BACK)) | ||||
|      .tag(back_tag).button( BTN_POS(4,y), BTN_SIZE(3,h), GET_TEXT_F(MSG_BACK)) | ||||
|      .enabled(has_selection) | ||||
|      .colors(has_selection ? action_btn : normal_btn); | ||||
|   if (screen_data.FilesScreen.flags.is_dir) { | ||||
|     cmd.tag(244).button( BTN_POS(1, y), BTN_SIZE(3,h), GET_TEXT_F(OPEN_DIR)); | ||||
|     cmd.tag(244).button( BTN_POS(1, y), BTN_SIZE(3,h), GET_TEXT_F(MSG_BUTTON_OPEN)); | ||||
|   } else { | ||||
|     cmd.tag(243).button( BTN_POS(1, y), BTN_SIZE(3,h), GET_TEXT_F(PRINT_FILE)); | ||||
|     cmd.tag(243).button( BTN_POS(1, y), BTN_SIZE(3,h), GET_TEXT_F(MSG_BUTTON_PRINT)); | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -69,15 +69,15 @@ void InterfaceSettingsScreen::onRedraw(draw_mode_t what) { | ||||
|        .cmd(COLOR_RGB(bg_text_enabled)) | ||||
|        .tag(0) | ||||
|        .font(font_medium) | ||||
|        .text(BTN_POS(1,1), BTN_SIZE(4,1), GET_TEXT_F(INTERFACE_SETTINGS)) | ||||
|        .text(BTN_POS(1,1), BTN_SIZE(4,1), GET_TEXT_F(MSG_INTERFACE_SETTINGS)) | ||||
|     #undef EDGE_R | ||||
|     #define EDGE_R 30 | ||||
|        .font(font_small) | ||||
|        .tag(0) | ||||
|        .text(BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXT_F(LCD_BRIGHTNESS), OPT_RIGHTX | OPT_CENTERY) | ||||
|        .text(BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXT_F(SOUND_VOLUME),   OPT_RIGHTX | OPT_CENTERY) | ||||
|        .text(BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXT_F(SCREEN_LOCK),    OPT_RIGHTX | OPT_CENTERY); | ||||
|     cmd.text(BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(BOOT_SCREEN),    OPT_RIGHTX | OPT_CENTERY); | ||||
|        .text(BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXT_F(MSG_LCD_BRIGHTNESS), OPT_RIGHTX | OPT_CENTERY) | ||||
|        .text(BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXT_F(MSG_SOUND_VOLUME),   OPT_RIGHTX | OPT_CENTERY) | ||||
|        .text(BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXT_F(MSG_SCREEN_LOCK),    OPT_RIGHTX | OPT_CENTERY); | ||||
|     cmd.text(BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(MSG_BOOT_SCREEN),    OPT_RIGHTX | OPT_CENTERY); | ||||
|     #undef EDGE_R | ||||
|   } | ||||
|  | ||||
| @@ -94,19 +94,19 @@ void InterfaceSettingsScreen::onRedraw(draw_mode_t what) { | ||||
|        .tag(2).slider(BTN_POS(3,2), BTN_SIZE(2,1), screen_data.InterfaceSettingsScreen.brightness, 128) | ||||
|        .tag(3).slider(BTN_POS(3,3), BTN_SIZE(2,1), screen_data.InterfaceSettingsScreen.volume,     0xFF) | ||||
|        .colors(ui_toggle) | ||||
|        .tag(4).toggle2(BTN_POS(3,4), BTN_SIZE(w,1), GET_TEXT_F(NO), GET_TEXT_F(YES), LockScreen::is_enabled()) | ||||
|        .tag(5).toggle2(BTN_POS(3,5), BTN_SIZE(w,1), GET_TEXT_F(NO), GET_TEXT_F(YES), UIData::animations_enabled()) | ||||
|        .tag(4).toggle2(BTN_POS(3,4), BTN_SIZE(w,1), GET_TEXT_F(MSG_NO), GET_TEXT_F(MSG_YES), LockScreen::is_enabled()) | ||||
|        .tag(5).toggle2(BTN_POS(3,5), BTN_SIZE(w,1), GET_TEXT_F(MSG_NO), GET_TEXT_F(MSG_YES), UIData::animations_enabled()) | ||||
|     #undef EDGE_R | ||||
|     #define EDGE_R 0 | ||||
|     #ifdef TOUCH_UI_PORTRAIT | ||||
|        .colors(normal_btn) | ||||
|        .tag(6).button (BTN_POS(1,6), BTN_SIZE(4,1), GET_TEXT_F(INTERFACE_SOUNDS)) | ||||
|        .tag(6).button (BTN_POS(1,6), BTN_SIZE(4,1), GET_TEXT_F(MSG_INTERFACE_SOUNDS)) | ||||
|        .colors(action_btn) | ||||
|        .tag(1).button (BTN_POS(1,7), BTN_SIZE(4,1), GET_TEXT_F(BACK)); | ||||
|        .tag(1).button (BTN_POS(1,7), BTN_SIZE(4,1), GET_TEXT_F(MSG_BACK)); | ||||
|     #else | ||||
|        .tag(6).button (BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(INTERFACE_SOUNDS)) | ||||
|        .tag(6).button (BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(MSG_INTERFACE_SOUNDS)) | ||||
|        .colors(action_btn) | ||||
|        .tag(1).button (BTN_POS(3,6), BTN_SIZE(2,1), GET_TEXT_F(BACK)); | ||||
|        .tag(1).button (BTN_POS(3,6), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK)); | ||||
|     #endif | ||||
|   } | ||||
| } | ||||
| @@ -246,37 +246,37 @@ void InterfaceSettingsScreen::loadSettings(const char *buff) { | ||||
|   for(uint8_t i = 0; i < InterfaceSoundsScreen::NUM_EVENTS; i++) | ||||
|     InterfaceSoundsScreen::event_sounds[i] = eeprom.event_sounds[i]; | ||||
|  | ||||
|   #if ENABLED(DEVELOPER_SCREENS) | ||||
|   #if ENABLED(TOUCH_UI_DEVELOPER_MENU) | ||||
|     StressTestScreen::startupCheck(); | ||||
|   #endif | ||||
| } | ||||
|  | ||||
| #ifdef LULZBOT_EEPROM_BACKUP_SIZE | ||||
| #ifdef ARCHIM2_SPI_FLASH_EEPROM_BACKUP_SIZE | ||||
|   #include "../../../../../HAL/shared/persistent_store_api.h" | ||||
|  | ||||
|   bool restoreEEPROM() { | ||||
|     uint8_t data[LULZBOT_EEPROM_BACKUP_SIZE]; | ||||
|     uint8_t data[ARCHIM2_SPI_FLASH_EEPROM_BACKUP_SIZE]; | ||||
|  | ||||
|     bool success = UIFlashStorage::read_config_data(data, LULZBOT_EEPROM_BACKUP_SIZE); | ||||
|     bool success = UIFlashStorage::read_config_data(data, ARCHIM2_SPI_FLASH_EEPROM_BACKUP_SIZE); | ||||
|  | ||||
|     if (success) | ||||
|       success = persistentStore.write_data(0, data, LULZBOT_EEPROM_BACKUP_SIZE) == PERSISTENT_STORE_SUCCESS; | ||||
|       success = persistentStore.write_data(0, data, ARCHIM2_SPI_FLASH_EEPROM_BACKUP_SIZE) == PERSISTENT_STORE_SUCCESS; | ||||
|  | ||||
|     if (success) | ||||
|       StatusScreen::setStatusMessage(GET_TEXT_F(EEPROM_RESTORED)); | ||||
|       StatusScreen::setStatusMessage(GET_TEXT_F(MSG_EEPROM_RESTORED)); | ||||
|     else | ||||
|       StatusScreen::setStatusMessage(GET_TEXT_F(EEPROM_RESET)); | ||||
|       StatusScreen::setStatusMessage(GET_TEXT_F(MSG_EEPROM_RESET)); | ||||
|  | ||||
|     return success; | ||||
|   } | ||||
|  | ||||
|   bool InterfaceSettingsScreen::backupEEPROM() { | ||||
|     uint8_t data[LULZBOT_EEPROM_BACKUP_SIZE]; | ||||
|     uint8_t data[ARCHIM2_SPI_FLASH_EEPROM_BACKUP_SIZE]; | ||||
|  | ||||
|     if (persistentStore.read_data(0, data, LULZBOT_EEPROM_BACKUP_SIZE) != PERSISTENT_STORE_SUCCESS) | ||||
|     if (persistentStore.read_data(0, data, ARCHIM2_SPI_FLASH_EEPROM_BACKUP_SIZE) != PERSISTENT_STORE_SUCCESS) | ||||
|       return false; | ||||
|  | ||||
|     UIFlashStorage::write_config_data(data, LULZBOT_EEPROM_BACKUP_SIZE); | ||||
|     UIFlashStorage::write_config_data(data, ARCHIM2_SPI_FLASH_EEPROM_BACKUP_SIZE); | ||||
|  | ||||
|     return true; | ||||
|   } | ||||
|   | ||||
| @@ -71,15 +71,15 @@ void InterfaceSoundsScreen::onRedraw(draw_mode_t what) { | ||||
|     #define GRID_ROWS 9 | ||||
|  | ||||
|        .font(font_medium) | ||||
|        .text(BTN_POS(1,1), BTN_SIZE(4,1), GET_TEXT_F(INTERFACE_SOUNDS)) | ||||
|        .text(BTN_POS(1,1), BTN_SIZE(4,1), GET_TEXT_F(MSG_INTERFACE_SOUNDS)) | ||||
|     #undef EDGE_R | ||||
|     #define EDGE_R 30 | ||||
|        .font(font_small) | ||||
|        .tag(0).text      (BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXT_F(SOUND_VOLUME),   OPT_RIGHTX | OPT_CENTERY) | ||||
|               .text      (BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXT_F(CLICK_SOUNDS),   OPT_RIGHTX | OPT_CENTERY) | ||||
|               .text      (BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(PRINT_STARTING), OPT_RIGHTX | OPT_CENTERY) | ||||
|               .text      (BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(PRINT_FINISHED), OPT_RIGHTX | OPT_CENTERY) | ||||
|               .text      (BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(PRINT_ERROR),    OPT_RIGHTX | OPT_CENTERY); | ||||
|        .tag(0).text      (BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXT_F(MSG_SOUND_VOLUME),   OPT_RIGHTX | OPT_CENTERY) | ||||
|               .text      (BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXT_F(MSG_CLICK_SOUNDS),   OPT_RIGHTX | OPT_CENTERY) | ||||
|               .text      (BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(MSG_PRINT_STARTING), OPT_RIGHTX | OPT_CENTERY) | ||||
|               .text      (BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(MSG_PRINT_FINISHED), OPT_RIGHTX | OPT_CENTERY) | ||||
|               .text      (BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(MSG_PRINT_ERROR),    OPT_RIGHTX | OPT_CENTERY); | ||||
|     #undef EDGE_R | ||||
|   } | ||||
|  | ||||
| @@ -95,7 +95,7 @@ void InterfaceSoundsScreen::onRedraw(draw_mode_t what) { | ||||
|     #define EDGE_R 30 | ||||
|        .tag(2).slider    (BTN_POS(3,2), BTN_SIZE(2,1), screen_data.InterfaceSettingsScreen.volume, 0xFF) | ||||
|        .colors(ui_toggle) | ||||
|        .tag(3).toggle2   (BTN_POS(3,3), BTN_SIZE(w,1), GET_TEXT_F(NO), GET_TEXT_F(YES), UIData::touch_sounds_enabled()) | ||||
|        .tag(3).toggle2   (BTN_POS(3,3), BTN_SIZE(w,1), GET_TEXT_F(MSG_NO), GET_TEXT_F(MSG_YES), UIData::touch_sounds_enabled()) | ||||
|     #undef EDGE_R | ||||
|        .colors(normal_btn) | ||||
|     #define EDGE_R 0 | ||||
| @@ -103,7 +103,7 @@ void InterfaceSoundsScreen::onRedraw(draw_mode_t what) { | ||||
|        .tag(5).button    (BTN_POS(3,6), BTN_SIZE(2,1), getSoundSelection(PRINTING_FINISHED)) | ||||
|        .tag(6).button    (BTN_POS(3,7), BTN_SIZE(2,1), getSoundSelection(PRINTING_FAILED)) | ||||
|        .colors(action_btn) | ||||
|        .tag(1).button    (BTN_POS(1,9), BTN_SIZE(4,1), GET_TEXT_F(BACK)); | ||||
|        .tag(1).button    (BTN_POS(1,9), BTN_SIZE(4,1), GET_TEXT_F(MSG_BACK)); | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -34,12 +34,12 @@ void JerkScreen::onRedraw(draw_mode_t what) { | ||||
|  | ||||
|   widgets_t w(what); | ||||
|   w.precision(1); | ||||
|   w.units(GET_TEXT_F(UNITS_MM_S)); | ||||
|   w.heading(GET_TEXT_F(JERK)); | ||||
|   w.color(x_axis) .adjuster( 2, GET_TEXT_F(AXIS_X), getAxisMaxJerk_mm_s(X) ); | ||||
|   w.color(y_axis) .adjuster( 4, GET_TEXT_F(AXIS_Y), getAxisMaxJerk_mm_s(Y) ); | ||||
|   w.color(z_axis) .adjuster( 6, GET_TEXT_F(AXIS_Z), getAxisMaxJerk_mm_s(Z) ); | ||||
|   w.color(e_axis) .adjuster( 8, GET_TEXT_F(AXIS_E), getAxisMaxJerk_mm_s(E0) ); | ||||
|   w.units(GET_TEXT_F(MSG_UNITS_MM_S)); | ||||
|   w.heading(GET_TEXT_F(MSG_JERK)); | ||||
|   w.color(x_axis) .adjuster( 2, GET_TEXT_F(MSG_AXIS_X), getAxisMaxJerk_mm_s(X) ); | ||||
|   w.color(y_axis) .adjuster( 4, GET_TEXT_F(MSG_AXIS_Y), getAxisMaxJerk_mm_s(Y) ); | ||||
|   w.color(z_axis) .adjuster( 6, GET_TEXT_F(MSG_AXIS_Z), getAxisMaxJerk_mm_s(Z) ); | ||||
|   w.color(e_axis) .adjuster( 8, GET_TEXT_F(MSG_AXIS_E), getAxisMaxJerk_mm_s(E0) ); | ||||
|   w.increments(); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -33,8 +33,8 @@ using namespace Theme; | ||||
| void JunctionDeviationScreen::onRedraw(draw_mode_t what) { | ||||
|   widgets_t w(what); | ||||
|   w.precision(2); | ||||
|   w.units(GET_TEXT_F(UNITS_MM)); | ||||
|   w.heading(GET_TEXT_F(JUNC_DEVIATION)); | ||||
|   w.units(GET_TEXT_F(MSG_UNITS_MM)); | ||||
|   w.heading(GET_TEXT_F(MSG_JUNCTION_DEVIATION)); | ||||
|   w.color(other) .adjuster( 2, F(""), getJunctionDeviation_mm() ); | ||||
|   w.increments(); | ||||
| } | ||||
|   | ||||
| @@ -46,8 +46,8 @@ void KillScreen::show(const char *message) { | ||||
|   cmd.font(Theme::font_large) | ||||
|      .cmd(COLOR_RGB(Theme::bg_text_enabled)) | ||||
|      .text(BTN_POS(1,2), BTN_SIZE(4,1), message) | ||||
|      .text(BTN_POS(1,3), BTN_SIZE(4,1), GET_TEXT_F(PRINTER_HALTED)) | ||||
|      .text(BTN_POS(1,6), BTN_SIZE(4,1), GET_TEXT_F(PLEASE_RESET)); | ||||
|      .text(BTN_POS(1,3), BTN_SIZE(4,1), GET_TEXT_F(MSG_HALTED)) | ||||
|      .text(BTN_POS(1,6), BTN_SIZE(4,1), GET_TEXT_F(MSG_PLEASE_RESET)); | ||||
|  | ||||
|   #undef GRID_COLS | ||||
|   #undef GRID_ROWS | ||||
|   | ||||
| @@ -33,16 +33,16 @@ using namespace Theme; | ||||
| void LinearAdvanceScreen::onRedraw(draw_mode_t what) { | ||||
|   widgets_t w(what); | ||||
|   w.precision(2, DEFAULT_LOWEST).color(e_axis); | ||||
|   w.heading(           GET_TEXT_F(LINEAR_ADVANCE)); | ||||
|   w.heading(           GET_TEXT_F(MSG_LINEAR_ADVANCE)); | ||||
|   #if EXTRUDERS == 1 | ||||
|     w.adjuster(     2, GET_TEXT_F(LINEAR_ADVANCE_K),    getLinearAdvance_mm_mm_s(E0) ); | ||||
|     w.adjuster(     2, GET_TEXT_F(MSG_LINEAR_ADVANCE_K),    getLinearAdvance_mm_mm_s(E0) ); | ||||
|   #else | ||||
|     w.adjuster(     2, GET_TEXT_F(LINEAR_ADVANCE_K1), getLinearAdvance_mm_mm_s(E0) ); | ||||
|     w.adjuster(     4, GET_TEXT_F(LINEAR_ADVANCE_K2), getLinearAdvance_mm_mm_s(E1) ); | ||||
|     w.adjuster(     2, GET_TEXT_F(MSG_LINEAR_ADVANCE_K1), getLinearAdvance_mm_mm_s(E0) ); | ||||
|     w.adjuster(     4, GET_TEXT_F(MSG_LINEAR_ADVANCE_K2), getLinearAdvance_mm_mm_s(E1) ); | ||||
|     #if EXTRUDERS > 2 | ||||
|       w.adjuster(   6, GET_TEXT_F(LINEAR_ADVANCE_K3), getLinearAdvance_mm_mm_s(E2) ); | ||||
|       w.adjuster(   6, GET_TEXT_F(MSG_LINEAR_ADVANCE_K3), getLinearAdvance_mm_mm_s(E2) ); | ||||
|       #if EXTRUDERS > 3 | ||||
|         w.adjuster( 8, GET_TEXT_F(LINEAR_ADVANCE_K4), getLinearAdvance_mm_mm_s(E3) ); | ||||
|         w.adjuster( 8, GET_TEXT_F(MSG_LINEAR_ADVANCE_K4), getLinearAdvance_mm_mm_s(E3) ); | ||||
|       #endif | ||||
|     #endif | ||||
|   #endif | ||||
|   | ||||
| @@ -66,16 +66,16 @@ void LockScreen::onRedraw(draw_mode_t what) { | ||||
|     progmem_str message; | ||||
|     switch (message_style()) { | ||||
|       case 'w': | ||||
|         message = GET_TEXT_F(PASSCODE_REJECTED); | ||||
|         message = GET_TEXT_F(MSG_PASSCODE_REJECTED); | ||||
|         break; | ||||
|       case 'g': | ||||
|         message = GET_TEXT_F(PASSCODE_ACCEPTED); | ||||
|         message = GET_TEXT_F(MSG_PASSCODE_ACCEPTED); | ||||
|         break; | ||||
|       default: | ||||
|         if (passcode == 0) { | ||||
|           message = GET_TEXT_F(PASSCODE_SELECT); | ||||
|           message = GET_TEXT_F(MSG_PASSCODE_SELECT); | ||||
|         } else { | ||||
|           message = GET_TEXT_F(PASSCODE_REQUEST); | ||||
|           message = GET_TEXT_F(MSG_PASSCODE_REQUEST); | ||||
|         } | ||||
|     } | ||||
|     message_style() = '\0'; // Terminate the string. | ||||
|   | ||||
| @@ -5,6 +5,7 @@ | ||||
| /**************************************************************************** | ||||
|  *   Written By Mark Pelletier  2017 - Aleph Objects, Inc.                  * | ||||
|  *   Written By Marcio Teixeira 2018 - Aleph Objects, Inc.                  * | ||||
|  *   Written By Marcio Teixeira 2019 - Cocoa Press                          * | ||||
|  *                                                                          * | ||||
|  *   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   * | ||||
| @@ -22,7 +23,7 @@ | ||||
|  | ||||
| #include "../config.h" | ||||
|  | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && !defined(LULZBOT_USE_BIOPRINTER_UI) | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && !defined(TOUCH_UI_LULZBOT_BIO) | ||||
|  | ||||
| #include "screens.h" | ||||
|  | ||||
| @@ -43,53 +44,63 @@ void MainMenu::onRedraw(draw_mode_t what) { | ||||
|     #ifdef TOUCH_UI_PORTRAIT | ||||
|       #define GRID_ROWS 8 | ||||
|       #define GRID_COLS 2 | ||||
|         .tag(2).button( BTN_POS(1,1), BTN_SIZE(1,1), GET_TEXT_F(AUTO_HOME)) | ||||
|         #ifdef NOZZLE_CLEAN_FEATURE | ||||
|          .enabled(1) | ||||
|         #else | ||||
|          .enabled(0) | ||||
|         #endif | ||||
|         .tag(3).button( BTN_POS(2,1), BTN_SIZE(1,1), GET_TEXT_F(CLEAN_NOZZLE)) | ||||
|         .tag(4).button( BTN_POS(1,2), BTN_SIZE(1,1), GET_TEXT_F(MOVE_AXIS)) | ||||
|         .tag(5).button( BTN_POS(2,2), BTN_SIZE(1,1), GET_TEXT_F(MOTORS_OFF)) | ||||
|         .tag(6).button( BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXT_F(TEMPERATURE)) | ||||
|         .tag(7).button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXT_F(CHANGE_FILAMENT)) | ||||
|         .tag(8).button( BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(ADVANCED_SETTINGS)) | ||||
|         #ifdef PRINTCOUNTER | ||||
|          .enabled(1) | ||||
|         #else | ||||
|          .enabled(0) | ||||
|         #endif | ||||
|         .tag(9).button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(PRINTER_STATISTICS)) | ||||
|         .tag(10).button( BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(ABOUT_PRINTER)) | ||||
|         .colors(action_btn) | ||||
|         .tag(1).button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(BACK)); | ||||
|       #undef GRID_COLS | ||||
|       #undef GRID_ROWS | ||||
|     #else | ||||
|       #define GRID_ROWS 5 | ||||
|       #define GRID_COLS 2 | ||||
|         .tag(2).button( BTN_POS(1,1), BTN_SIZE(1,1), GET_TEXT_F(AUTO_HOME)) | ||||
|         .tag(2).button( BTN_POS(1,1), BTN_SIZE(1,1), GET_TEXT_F(MSG_AUTO_HOME)) | ||||
|         #if ENABLED(NOZZLE_CLEAN_FEATURE) | ||||
|          .enabled(1) | ||||
|         #else | ||||
|          .enabled(0) | ||||
|         #endif | ||||
|         .tag(3).button( BTN_POS(2,1), BTN_SIZE(1,1), GET_TEXT_F(CLEAN_NOZZLE)) | ||||
|         .tag(4).button( BTN_POS(1,2), BTN_SIZE(1,1), GET_TEXT_F(MOVE_AXIS)) | ||||
|         .tag(5).button( BTN_POS(2,2), BTN_SIZE(1,1), GET_TEXT_F(MOTORS_OFF)) | ||||
|         .tag(6).button( BTN_POS(1,3), BTN_SIZE(1,1), GET_TEXT_F(TEMPERATURE)) | ||||
|         .tag(7).button( BTN_POS(2,3), BTN_SIZE(1,1), GET_TEXT_F(CHANGE_FILAMENT)) | ||||
|         .tag(8).button( BTN_POS(1,4), BTN_SIZE(1,1), GET_TEXT_F(ADVANCED_SETTINGS)) | ||||
|         .tag(3).button( BTN_POS(2,1), BTN_SIZE(1,1), GET_TEXT_F(MSG_CLEAN_NOZZLE)) | ||||
|         .tag(4).button( BTN_POS(1,2), BTN_SIZE(1,1), GET_TEXT_F(MSG_MOVE_AXIS)) | ||||
|         .tag(5).button( BTN_POS(2,2), BTN_SIZE(1,1), GET_TEXT_F(MSG_DISABLE_STEPPERS)) | ||||
|         .tag(6).button( BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXT_F(MSG_TEMPERATURE)) | ||||
|         #if DISABLED(TOUCH_UI_LULZBOT_BIO) && DISABLED(TOUCH_UI_COCOA_PRESS) | ||||
|          .enabled(1) | ||||
|         #else | ||||
|          .enabled(0) | ||||
|         #endif | ||||
|         .tag(7).button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXT_F(MSG_FILAMENTCHANGE)) | ||||
|         .tag(8).button( BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(MSG_ADVANCED_SETTINGS)) | ||||
|         #ifdef PRINTCOUNTER | ||||
|          .enabled(1) | ||||
|         #else | ||||
|          .enabled(0) | ||||
|         #endif | ||||
|         .tag(9).button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXT_F(PRINTER_STATISTICS)) | ||||
|         .tag(10).button( BTN_POS(1,5), BTN_SIZE(1,1), GET_TEXT_F(ABOUT_PRINTER)) | ||||
|         .tag(9).button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(MSG_INFO_STATS_MENU)) | ||||
|         .tag(10).button( BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(MSG_INFO_MENU)) | ||||
|         .colors(action_btn) | ||||
|         .tag(1).button( BTN_POS(2,5), BTN_SIZE(1,1), GET_TEXT_F(BACK)); | ||||
|         .tag(1).button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK)); | ||||
|       #undef GRID_COLS | ||||
|       #undef GRID_ROWS | ||||
|     #else | ||||
|       #define GRID_ROWS 5 | ||||
|       #define GRID_COLS 2 | ||||
|         .tag(2).button( BTN_POS(1,1), BTN_SIZE(1,1), GET_TEXT_F(MSG_AUTO_HOME)) | ||||
|         #if ENABLED(NOZZLE_CLEAN_FEATURE) | ||||
|          .enabled(1) | ||||
|         #else | ||||
|          .enabled(0) | ||||
|         #endif | ||||
|         .tag(3).button( BTN_POS(2,1), BTN_SIZE(1,1), GET_TEXT_F(MSG_CLEAN_NOZZLE)) | ||||
|         .tag(4).button( BTN_POS(1,2), BTN_SIZE(1,1), GET_TEXT_F(MSG_MOVE_AXIS)) | ||||
|         .tag(5).button( BTN_POS(2,2), BTN_SIZE(1,1), GET_TEXT_F(MSG_DISABLE_STEPPERS)) | ||||
|         .tag(6).button( BTN_POS(1,3), BTN_SIZE(1,1), GET_TEXT_F(MSG_TEMPERATURE)) | ||||
|         #if DISABLED(TOUCH_UI_LULZBOT_BIO) && DISABLED(TOUCH_UI_COCOA_PRESS) | ||||
|          .enabled(1) | ||||
|         #else | ||||
|          .enabled(0) | ||||
|         #endif | ||||
|         .tag(7).button( BTN_POS(2,3), BTN_SIZE(1,1), GET_TEXT_F(MSG_FILAMENTCHANGE)) | ||||
|         .tag(8).button( BTN_POS(1,4), BTN_SIZE(1,1), GET_TEXT_F(MSG_ADVANCED_SETTINGS)) | ||||
|         #ifdef PRINTCOUNTER | ||||
|          .enabled(1) | ||||
|         #else | ||||
|          .enabled(0) | ||||
|         #endif | ||||
|         .tag(9).button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXT_F(MSG_INFO_STATS_MENU)) | ||||
|         .tag(10).button( BTN_POS(1,5), BTN_SIZE(1,1), GET_TEXT_F(MSG_INFO_MENU)) | ||||
|         .colors(action_btn) | ||||
|         .tag(1).button( BTN_POS(2,5), BTN_SIZE(1,1), GET_TEXT_F(MSG_BACK)); | ||||
|       #undef GRID_COLS | ||||
|       #undef GRID_ROWS | ||||
|     #endif | ||||
|   | ||||
| @@ -33,21 +33,21 @@ using namespace Theme; | ||||
| void MaxAccelerationScreen::onRedraw(draw_mode_t what) { | ||||
|   widgets_t w(what); | ||||
|   w.precision(0); | ||||
|   w.units(GET_TEXT_F(UNITS_MM_S2)); | ||||
|   w.heading(GET_TEXT_F(ACCELERATION)); | ||||
|   w.color(x_axis)  .adjuster( 2, GET_TEXT_F(AMAX_X),  getAxisMaxAcceleration_mm_s2(X) ); | ||||
|   w.color(y_axis)  .adjuster( 4, GET_TEXT_F(AMAX_Y),  getAxisMaxAcceleration_mm_s2(Y) ); | ||||
|   w.color(z_axis)  .adjuster( 6, GET_TEXT_F(AMAX_Z),  getAxisMaxAcceleration_mm_s2(Z) ); | ||||
|   w.units(GET_TEXT_F(MSG_UNITS_MM_S2)); | ||||
|   w.heading(GET_TEXT_F(MSG_ACCELERATION)); | ||||
|   w.color(x_axis)  .adjuster( 2, GET_TEXT_F(MSG_AMAX_X),  getAxisMaxAcceleration_mm_s2(X) ); | ||||
|   w.color(y_axis)  .adjuster( 4, GET_TEXT_F(MSG_AMAX_Y),  getAxisMaxAcceleration_mm_s2(Y) ); | ||||
|   w.color(z_axis)  .adjuster( 6, GET_TEXT_F(MSG_AMAX_Z),  getAxisMaxAcceleration_mm_s2(Z) ); | ||||
|   #if EXTRUDERS == 1 || DISABLED(DISTINCT_E_FACTORS) | ||||
|     w.color(e_axis).adjuster( 8, GET_TEXT_F(AMAX_E0), getAxisMaxAcceleration_mm_s2(E0) ); | ||||
|     w.color(e_axis).adjuster( 8, GET_TEXT_F(MSG_AMAX_E0), getAxisMaxAcceleration_mm_s2(E0) ); | ||||
|   #elif EXTRUDERS > 1 | ||||
|     w.color(e_axis).adjuster( 8, GET_TEXT_F(AMAX_E0), getAxisMaxAcceleration_mm_s2(E0) ); | ||||
|     w.color(e_axis).adjuster(10, GET_TEXT_F(AMAX_E1), getAxisMaxAcceleration_mm_s2(E1) ); | ||||
|     w.color(e_axis).adjuster( 8, GET_TEXT_F(MSG_AMAX_E0), getAxisMaxAcceleration_mm_s2(E0) ); | ||||
|     w.color(e_axis).adjuster(10, GET_TEXT_F(MSG_AMAX_E1), getAxisMaxAcceleration_mm_s2(E1) ); | ||||
|     #if EXTRUDERS > 2 | ||||
|     w.color(e_axis).adjuster(12, GET_TEXT_F(AMAX_E2), getAxisMaxAcceleration_mm_s2(E2) ); | ||||
|     w.color(e_axis).adjuster(12, GET_TEXT_F(MSG_AMAX_E2), getAxisMaxAcceleration_mm_s2(E2) ); | ||||
|     #endif | ||||
|     #if EXTRUDERS > 3 | ||||
|     w.color(e_axis).adjuster(14, GET_TEXT_F(AMAX_E3), getAxisMaxAcceleration_mm_s2(E3) ); | ||||
|     w.color(e_axis).adjuster(14, GET_TEXT_F(MSG_AMAX_E3), getAxisMaxAcceleration_mm_s2(E3) ); | ||||
|     #endif | ||||
|   #endif | ||||
|   w.increments(); | ||||
|   | ||||
| @@ -34,21 +34,21 @@ void MaxVelocityScreen::onRedraw(draw_mode_t what) { | ||||
|   using namespace ExtUI; | ||||
|   widgets_t w(what); | ||||
|   w.precision(0); | ||||
|   w.units(GET_TEXT_F(UNITS_MM_S)); | ||||
|   w.heading(                        GET_TEXT_F(VELOCITY)); | ||||
|   w.color(x_axis)    .adjuster(  2, GET_TEXT_F(VMAX_X), getAxisMaxFeedrate_mm_s(X) ); | ||||
|   w.color(y_axis)    .adjuster(  4, GET_TEXT_F(VMAX_Y), getAxisMaxFeedrate_mm_s(Y) ); | ||||
|   w.color(z_axis)    .adjuster(  6, GET_TEXT_F(VMAX_Z), getAxisMaxFeedrate_mm_s(Z) ); | ||||
|   w.units(GET_TEXT_F(MSG_UNITS_MM_S)); | ||||
|   w.heading(                        GET_TEXT_F(MSG_VELOCITY)); | ||||
|   w.color(x_axis)    .adjuster(  2, GET_TEXT_F(MSG_VMAX_X), getAxisMaxFeedrate_mm_s(X) ); | ||||
|   w.color(y_axis)    .adjuster(  4, GET_TEXT_F(MSG_VMAX_Y), getAxisMaxFeedrate_mm_s(Y) ); | ||||
|   w.color(z_axis)    .adjuster(  6, GET_TEXT_F(MSG_VMAX_Z), getAxisMaxFeedrate_mm_s(Z) ); | ||||
|   #if EXTRUDERS == 1 || DISABLED(DISTINCT_E_FACTORS) | ||||
|     w.color(e_axis)  .adjuster(  8, GET_TEXT_F(VMAX_E1), getAxisMaxFeedrate_mm_s(E0) ); | ||||
|     w.color(e_axis)  .adjuster(  8, GET_TEXT_F(MSG_VMAX_E1), getAxisMaxFeedrate_mm_s(E0) ); | ||||
|   #elif EXTRUDERS > 1 | ||||
|     w.color(e_axis)  .adjuster(  8, GET_TEXT_F(VMAX_E1), getAxisMaxFeedrate_mm_s(E0) ); | ||||
|     w.color(e_axis)  .adjuster( 10, GET_TEXT_F(VMAX_E2), getAxisMaxFeedrate_mm_s(E1) ); | ||||
|     w.color(e_axis)  .adjuster(  8, GET_TEXT_F(MSG_VMAX_E1), getAxisMaxFeedrate_mm_s(E0) ); | ||||
|     w.color(e_axis)  .adjuster( 10, GET_TEXT_F(MSG_VMAX_E2), getAxisMaxFeedrate_mm_s(E1) ); | ||||
|     #if EXTRUDERS > 2 | ||||
|       w.color(e_axis).adjuster( 12, GET_TEXT_F(VMAX_E3), getAxisMaxFeedrate_mm_s(E2) ); | ||||
|       w.color(e_axis).adjuster( 12, GET_TEXT_F(MSG_VMAX_E3), getAxisMaxFeedrate_mm_s(E2) ); | ||||
|     #endif | ||||
|     #if EXTRUDERS > 3 | ||||
|       w.color(e_axis).adjuster( 14, GET_TEXT_F(VMAX_E4), getAxisMaxFeedrate_mm_s(E3) ); | ||||
|       w.color(e_axis).adjuster( 14, GET_TEXT_F(MSG_VMAX_E4), getAxisMaxFeedrate_mm_s(E3) ); | ||||
|     #endif | ||||
|   #endif | ||||
|   w.increments(); | ||||
|   | ||||
| @@ -45,24 +45,24 @@ void MoveAxisScreen::onEntry() { | ||||
| void MoveAxisScreen::onRedraw(draw_mode_t what) { | ||||
|   widgets_t w(what); | ||||
|   w.precision(1); | ||||
|   w.units(GET_TEXT_F(UNITS_MM)); | ||||
|   w.heading(                           GET_TEXT_F(MOVE_AXIS)); | ||||
|   w.units(GET_TEXT_F(MSG_UNITS_MM)); | ||||
|   w.heading(                           GET_TEXT_F(MSG_MOVE_AXIS)); | ||||
|   w.home_buttons(20); | ||||
|   w.color(Theme::x_axis).adjuster(  2, GET_TEXT_F(AXIS_X),  getAxisPosition_mm(X), canMove(X)); | ||||
|   w.color(Theme::y_axis).adjuster(  4, GET_TEXT_F(AXIS_Y),  getAxisPosition_mm(Y), canMove(Y)); | ||||
|   w.color(Theme::z_axis).adjuster(  6, GET_TEXT_F(AXIS_Z),  getAxisPosition_mm(Z), canMove(Z)); | ||||
|   w.color(Theme::x_axis).adjuster(  2, GET_TEXT_F(MSG_AXIS_X),  getAxisPosition_mm(X), canMove(X)); | ||||
|   w.color(Theme::y_axis).adjuster(  4, GET_TEXT_F(MSG_AXIS_Y),  getAxisPosition_mm(Y), canMove(Y)); | ||||
|   w.color(Theme::z_axis).adjuster(  6, GET_TEXT_F(MSG_AXIS_Z),  getAxisPosition_mm(Z), canMove(Z)); | ||||
|  | ||||
|   w.color(Theme::e_axis); | ||||
|   #if EXTRUDERS == 1 | ||||
|     w.adjuster(  8, GET_TEXT_F(AXIS_E),  screen_data.MoveAxisScreen.e_rel[0], canMove(E0)); | ||||
|     w.adjuster(  8, GET_TEXT_F(MSG_AXIS_E),  screen_data.MoveAxisScreen.e_rel[0], canMove(E0)); | ||||
|   #elif EXTRUDERS > 1 | ||||
|     w.adjuster(  8, GET_TEXT_F(AXIS_E1), screen_data.MoveAxisScreen.e_rel[0], canMove(E0)); | ||||
|     w.adjuster( 10, GET_TEXT_F(AXIS_E2), screen_data.MoveAxisScreen.e_rel[1], canMove(E1)); | ||||
|     w.adjuster(  8, GET_TEXT_F(MSG_AXIS_E1), screen_data.MoveAxisScreen.e_rel[0], canMove(E0)); | ||||
|     w.adjuster( 10, GET_TEXT_F(MSG_AXIS_E2), screen_data.MoveAxisScreen.e_rel[1], canMove(E1)); | ||||
|     #if EXTRUDERS > 2 | ||||
|       w.adjuster( 12, GET_TEXT_F(AXIS_E3), screen_data.MoveAxisScreen.e_rel[2], canMove(E2)); | ||||
|       w.adjuster( 12, GET_TEXT_F(MSG_AXIS_E3), screen_data.MoveAxisScreen.e_rel[2], canMove(E2)); | ||||
|     #endif | ||||
|     #if EXTRUDERS > 3 | ||||
|       w.adjuster( 14, GET_TEXT_F(AXIS_E4), screen_data.MoveAxisScreen.e_rel[3], canMove(E3)); | ||||
|       w.adjuster( 14, GET_TEXT_F(MSG_AXIS_E4), screen_data.MoveAxisScreen.e_rel[3], canMove(E3)); | ||||
|     #endif | ||||
|   #endif | ||||
|   w.increments(); | ||||
|   | ||||
| @@ -39,14 +39,14 @@ void NozzleOffsetScreen::onEntry() { | ||||
|  | ||||
| void NozzleOffsetScreen::onRedraw(draw_mode_t what) { | ||||
|   widgets_t w(what); | ||||
|   w.precision(2).units(GET_TEXT_F(UNITS_MM)); | ||||
|   w.precision(2).units(GET_TEXT_F(MSG_UNITS_MM)); | ||||
|  | ||||
|   w.heading(                          GET_TEXT_F(TOOL_OFFSETS)); | ||||
|   w.color(Theme::x_axis).adjuster(2,  GET_TEXT_F(AXIS_X), ExtUI::getNozzleOffset_mm(X, E1)); | ||||
|   w.color(Theme::y_axis).adjuster(4,  GET_TEXT_F(AXIS_Y), ExtUI::getNozzleOffset_mm(Y, E1)); | ||||
|   w.color(Theme::z_axis).adjuster(6,  GET_TEXT_F(AXIS_Z), ExtUI::getNozzleOffset_mm(Z, E1)); | ||||
|   w.heading(                          GET_TEXT_F(MSG_OFFSETS_MENU)); | ||||
|   w.color(Theme::x_axis).adjuster(2,  GET_TEXT_F(MSG_AXIS_X), ExtUI::getNozzleOffset_mm(X, E1)); | ||||
|   w.color(Theme::y_axis).adjuster(4,  GET_TEXT_F(MSG_AXIS_Y), ExtUI::getNozzleOffset_mm(Y, E1)); | ||||
|   w.color(Theme::z_axis).adjuster(6,  GET_TEXT_F(MSG_AXIS_Z), ExtUI::getNozzleOffset_mm(Z, E1)); | ||||
|   #if ENABLED(CALIBRATION_GCODE) | ||||
|   w.button(8, GET_TEXT_F(MEASURE_AUTOMATICALLY), !isPrinting()); | ||||
|   w.button(8, GET_TEXT_F(MSG_MEASURE_AUTOMATICALLY), !isPrinting()); | ||||
|   #endif | ||||
|   w.increments(); | ||||
| } | ||||
|   | ||||
| @@ -43,21 +43,21 @@ void NudgeNozzleScreen::onEntry() { | ||||
|  | ||||
| void NudgeNozzleScreen::onRedraw(draw_mode_t what) { | ||||
|   widgets_t w(what); | ||||
|   w.precision(2, BaseNumericAdjustmentScreen::DEFAULT_MIDRANGE).units(GET_TEXT_F(UNITS_MM)); | ||||
|   w.precision(2, BaseNumericAdjustmentScreen::DEFAULT_MIDRANGE).units(GET_TEXT_F(MSG_UNITS_MM)); | ||||
|  | ||||
|   w.heading(                   GET_TEXT_F(NUDGE_NOZZLE)); | ||||
|   w.heading(                   GET_TEXT_F(MSG_NUDGE_NOZZLE)); | ||||
|   #if ENABLED(BABYSTEP_XY) | ||||
|   w.color(x_axis).adjuster(2,  GET_TEXT_F(AXIS_X), screen_data.NudgeNozzleScreen.rel.x / getAxisSteps_per_mm(X)); | ||||
|   w.color(y_axis).adjuster(4,  GET_TEXT_F(AXIS_Y), screen_data.NudgeNozzleScreen.rel.y / getAxisSteps_per_mm(Y)); | ||||
|   w.color(x_axis).adjuster(2,  GET_TEXT_F(MSG_AXIS_X), screen_data.NudgeNozzleScreen.rel.x / getAxisSteps_per_mm(X)); | ||||
|   w.color(y_axis).adjuster(4,  GET_TEXT_F(MSG_AXIS_Y), screen_data.NudgeNozzleScreen.rel.y / getAxisSteps_per_mm(Y)); | ||||
|   #endif | ||||
|   w.color(z_axis).adjuster(6,  GET_TEXT_F(AXIS_Z), screen_data.NudgeNozzleScreen.rel.z / getAxisSteps_per_mm(Z)); | ||||
|   w.color(z_axis).adjuster(6,  GET_TEXT_F(MSG_AXIS_Z), screen_data.NudgeNozzleScreen.rel.z / getAxisSteps_per_mm(Z)); | ||||
|   w.increments(); | ||||
|   #if EXTRUDERS > 1 | ||||
|     w.toggle  (8,  GET_TEXT_F(ADJUST_BOTH_NOZZLES), screen_data.NudgeNozzleScreen.link_nozzles); | ||||
|     w.toggle  (8,  GET_TEXT_F(MSG_ADJUST_BOTH_NOZZLES), screen_data.NudgeNozzleScreen.link_nozzles); | ||||
|   #endif | ||||
|  | ||||
|   #if EXTRUDERS > 1 || HAS_BED_PROBE | ||||
|     w.toggle  (9,  GET_TEXT_F(SHOW_OFFSETS), screen_data.NudgeNozzleScreen.show_offsets); | ||||
|     w.toggle  (9,  GET_TEXT_F(MSG_SHOW_OFFSETS), screen_data.NudgeNozzleScreen.show_offsets); | ||||
|  | ||||
|     if (screen_data.NudgeNozzleScreen.show_offsets) { | ||||
|       char str[19]; | ||||
| @@ -69,12 +69,12 @@ void NudgeNozzleScreen::onRedraw(draw_mode_t what) { | ||||
|         dtostrf(getZOffset_mm(), 4, 2, str); | ||||
|         strcat(str, " "); | ||||
|         strcat_P(str, GET_TEXT(UNITS_MM)); | ||||
|         w.text_field  (0,  GET_TEXT_F(ZPROBE_ZOFFSET), str); | ||||
|         w.text_field  (0,  GET_TEXT_F(MSG_ZPROBE_ZOFFSET), str); | ||||
|       #endif | ||||
|  | ||||
|       #if EXTRUDERS > 1 | ||||
|         format_position(str, getNozzleOffset_mm(X, E1), getNozzleOffset_mm(Y, E1), getNozzleOffset_mm(Z, E1)); | ||||
|         w.text_field  (0, GET_TEXT_F(TOOL_OFFSETS), str); | ||||
|         w.text_field  (0, GET_TEXT_F(MSG_OFFSETS_MENU), str); | ||||
|       #endif | ||||
|     } | ||||
|   #endif | ||||
|   | ||||
| @@ -29,7 +29,7 @@ | ||||
| using namespace ExtUI; | ||||
|  | ||||
| void RestoreFailsafeDialogBox::onRedraw(draw_mode_t) { | ||||
|   drawMessage(GET_TEXT_F(EEPROM_RESET_WARNING)); | ||||
|   drawMessage(GET_TEXT_F(MSG_EEPROM_RESET_WARNING)); | ||||
|   drawYesNoButtons(); | ||||
| } | ||||
|  | ||||
| @@ -37,7 +37,7 @@ bool RestoreFailsafeDialogBox::onTouchEnd(uint8_t tag) { | ||||
|   switch (tag) { | ||||
|     case 1: | ||||
|       ExtUI::injectCommands_P(PSTR("M502")); | ||||
|       AlertDialogBox::show(GET_TEXT_F(EEPROM_RESET)); | ||||
|       AlertDialogBox::show(GET_TEXT_F(MSG_EEPROM_RESET)); | ||||
|       // Remove RestoreFailsafeDialogBox from the stack | ||||
|       // so the alert box doesn't return to it. | ||||
|       current_screen.forget(); | ||||
|   | ||||
| @@ -31,7 +31,7 @@ using namespace ExtUI; | ||||
| bool SaveSettingsDialogBox::needs_save = false; | ||||
|  | ||||
| void SaveSettingsDialogBox::onRedraw(draw_mode_t) { | ||||
|   drawMessage(GET_TEXT_F(EEPROM_SAVE_PROMPT)); | ||||
|   drawMessage(GET_TEXT_F(MSG_EEPROM_SAVE_PROMPT)); | ||||
|   drawYesNoButtons(); | ||||
| } | ||||
|  | ||||
| @@ -40,7 +40,7 @@ bool SaveSettingsDialogBox::onTouchEnd(uint8_t tag) { | ||||
|   switch (tag) { | ||||
|     case 1: | ||||
|       injectCommands_P(PSTR("M500")); | ||||
|       AlertDialogBox::show(GET_TEXT_F(EEPROM_SAVED)); | ||||
|       AlertDialogBox::show(GET_TEXT_F(MSG_EEPROM_SAVED)); | ||||
|       // Remove SaveSettingsDialogBox from the stack | ||||
|       // so the alert box doesn't return to me. | ||||
|       current_screen.forget(); | ||||
|   | ||||
| @@ -39,6 +39,9 @@ union screen_data_t { | ||||
|   struct { | ||||
|     uint8_t e_tag, t_tag, repeat_tag; | ||||
|     ExtUI::extruder_t saved_extruder; | ||||
|     #if FILAMENT_UNLOAD_PURGE_LENGTH > 0 | ||||
|       bool need_purge; | ||||
|     #endif | ||||
|   } ChangeFilamentScreen; | ||||
|   struct { | ||||
|     struct { | ||||
| @@ -57,7 +60,7 @@ union screen_data_t { | ||||
|     struct base_numeric_adjustment_t placeholder; | ||||
|     float e_rel[ExtUI::extruderCount]; | ||||
|   } MoveAxisScreen; | ||||
| #if ENABLED(DEVELOPER_SCREENS) | ||||
| #if ENABLED(TOUCH_UI_DEVELOPER_MENU) | ||||
|   struct { | ||||
|     uint32_t next_watchdog_trigger; | ||||
|     const char*  message; | ||||
|   | ||||
| @@ -96,12 +96,12 @@ SCREEN_TABLE { | ||||
|   DECL_SCREEN(LockScreen), | ||||
|   DECL_SCREEN(FilesScreen), | ||||
|   DECL_SCREEN(EndstopStatesScreen), | ||||
| #ifdef LULZBOT_USE_BIOPRINTER_UI | ||||
| #ifdef TOUCH_UI_LULZBOT_BIO | ||||
|   DECL_SCREEN(BioPrintingDialogBox), | ||||
|   DECL_SCREEN(BioConfirmHomeXYZ), | ||||
|   DECL_SCREEN(BioConfirmHomeE), | ||||
| #endif | ||||
| #if ENABLED(DEVELOPER_SCREENS) | ||||
| #if ENABLED(TOUCH_UI_DEVELOPER_MENU) | ||||
|   DECL_SCREEN(DeveloperMenu), | ||||
|   DECL_SCREEN(ConfirmEraseFlashDialogBox), | ||||
|   DECL_SCREEN(WidgetsScreen), | ||||
|   | ||||
| @@ -69,7 +69,7 @@ enum { | ||||
| #if ENABLED(FILAMENT_RUNOUT_SENSOR) | ||||
|   FILAMENT_RUNOUT_SCREEN_CACHE, | ||||
| #endif | ||||
| #ifdef LULZBOT_USE_BIOPRINTER_UI | ||||
| #ifdef TOUCH_UI_LULZBOT_BIO | ||||
|   PRINTING_SCREEN_CACHE, | ||||
| #endif | ||||
|   CHANGE_FILAMENT_SCREEN_CACHE, | ||||
| @@ -226,7 +226,7 @@ class SpinnerDialogBox : public DialogBoxBaseClass, public CachedScreen<SPINNER_ | ||||
|     static void enqueueAndWait_P(const progmem_str message, const progmem_str commands); | ||||
| }; | ||||
|  | ||||
| #ifndef LULZBOT_USE_BIOPRINTER_UI | ||||
| #if DISABLED(TOUCH_UI_LULZBOT_BIO) && DISABLED(TOUCH_UI_COCOA_PRESS) | ||||
| class StatusScreen : public BaseScreen, public CachedScreen<STATUS_SCREEN_CACHE,STATUS_SCREEN_DL_SIZE> { | ||||
|   private: | ||||
|     static void draw_axis_position(draw_mode_t); | ||||
| @@ -273,7 +273,9 @@ class StatusScreen : public BaseScreen, public CachedScreen<STATUS_SCREEN_CACHE, | ||||
|       static void onIdle(); | ||||
|  | ||||
|   }; | ||||
| #endif | ||||
|  | ||||
| #if ENABLED(TOUCH_UI_LULZBOT_BIO) | ||||
|   class BioPrintingDialogBox : public BaseScreen, public CachedScreen<PRINTING_SCREEN_CACHE,PRINTING_SCREEN_DL_SIZE> { | ||||
|     private: | ||||
|       static void draw_status_message(draw_mode_t, const char * const); | ||||
| @@ -343,6 +345,7 @@ class ChangeFilamentScreen : public BaseScreen, public CachedScreen<CHANGE_FILAM | ||||
|     static ExtUI::extruder_t getExtruder(); | ||||
|     static void drawTempGradient(uint16_t x, uint16_t y, uint16_t w, uint16_t h); | ||||
|     static uint32_t getTempColor(uint32_t temp); | ||||
|     static void doPurge(); | ||||
|   public: | ||||
|     static void onEntry(); | ||||
|     static void onExit(); | ||||
| @@ -597,7 +600,7 @@ class InterfaceSettingsScreen : public BaseScreen, public CachedScreen<INTERFACE | ||||
|     }; | ||||
|  | ||||
|   public: | ||||
|     #ifdef LULZBOT_EEPROM_BACKUP_SIZE | ||||
|     #ifdef ARCHIM2_SPI_FLASH_EEPROM_BACKUP_SIZE | ||||
|       static bool backupEEPROM(); | ||||
|     #endif | ||||
|  | ||||
| @@ -687,7 +690,7 @@ class DisplayTuningScreen : public BaseNumericAdjustmentScreen, public CachedScr | ||||
|     static bool onTouchHeld(uint8_t tag); | ||||
| }; | ||||
|  | ||||
| #if ENABLED(DEVELOPER_SCREENS) | ||||
| #if ENABLED(TOUCH_UI_DEVELOPER_MENU) | ||||
|   class DeveloperMenu : public BaseScreen, public UncachedScreen { | ||||
|     public: | ||||
|       static void onRedraw(draw_mode_t); | ||||
|   | ||||
| @@ -46,7 +46,7 @@ void SpinnerDialogBox::hide() { | ||||
| } | ||||
|  | ||||
| void SpinnerDialogBox::enqueueAndWait_P(const progmem_str commands) { | ||||
|   enqueueAndWait_P(GET_TEXT_F(PLEASE_WAIT), commands); | ||||
|   enqueueAndWait_P(GET_TEXT_F(MSG_PLEASE_WAIT), commands); | ||||
| } | ||||
|  | ||||
| void SpinnerDialogBox::enqueueAndWait_P(const progmem_str message, const progmem_str commands) { | ||||
|   | ||||
| @@ -44,14 +44,14 @@ void StatisticsScreen::onRedraw(draw_mode_t what) { | ||||
|        .tag(0) | ||||
|  | ||||
|        .font(Theme::font_medium) | ||||
|        .text(BTN_POS(1,1), BTN_SIZE(4,1), GET_TEXT_F(PRINTER_STATISTICS)) | ||||
|        .text(BTN_POS(1,1), BTN_SIZE(4,1), GET_TEXT_F(MSG_INFO_STATS_MENU)) | ||||
|        .font(Theme::font_small) | ||||
|        .tag(0) | ||||
|        .text(BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXT_F(INFO_PRINT_COUNT),      OPT_RIGHTX | OPT_CENTERY) | ||||
|        .text(BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXT_F(INFO_COMPLETED_PRINTS), OPT_RIGHTX | OPT_CENTERY) | ||||
|        .text(BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXT_F(INFO_PRINT_TIME),       OPT_RIGHTX | OPT_CENTERY) | ||||
|        .text(BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(INFO_PRINT_LONGEST),    OPT_RIGHTX | OPT_CENTERY) | ||||
|        .text(BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(INFO_PRINT_FILAMENT),   OPT_RIGHTX | OPT_CENTERY); | ||||
|        .text(BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXT_F(MSG_INFO_PRINT_COUNT),      OPT_RIGHTX | OPT_CENTERY) | ||||
|        .text(BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXT_F(MSG_INFO_COMPLETED_PRINTS), OPT_RIGHTX | OPT_CENTERY) | ||||
|        .text(BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXT_F(MSG_INFO_PRINT_TIME),       OPT_RIGHTX | OPT_CENTERY) | ||||
|        .text(BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(MSG_INFO_PRINT_LONGEST),    OPT_RIGHTX | OPT_CENTERY) | ||||
|        .text(BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(MSG_INFO_PRINT_FILAMENT),   OPT_RIGHTX | OPT_CENTERY); | ||||
|     // Don't chain the following, it causes strange issues with evaluation ordering! | ||||
|     cmd.text(BTN_POS(3,2), BTN_SIZE(2,1), getTotalPrints_str(buffer)); | ||||
|     cmd.text(BTN_POS(3,3), BTN_SIZE(2,1), getFinishedPrints_str(buffer)); | ||||
| @@ -63,7 +63,7 @@ void StatisticsScreen::onRedraw(draw_mode_t what) { | ||||
|   if (what & FOREGROUND) { | ||||
|     cmd.font(Theme::font_medium) | ||||
|        .colors(action_btn) | ||||
|        .tag(1).button(BTN_POS(1,7), BTN_SIZE(4,1), GET_TEXT_F(BACK)); | ||||
|        .tag(1).button(BTN_POS(1,7), BTN_SIZE(4,1), GET_TEXT_F(MSG_BACK)); | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -22,7 +22,7 @@ | ||||
|  | ||||
| #include "../config.h" | ||||
|  | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && DISABLED(LULZBOT_USE_BIOPRINTER_UI) | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && DISABLED(TOUCH_UI_LULZBOT_BIO) && DISABLED(TOUCH_UI_COCOA_PRESS) | ||||
|  | ||||
| #include "screens.h" | ||||
| #include "screen_data.h" | ||||
| @@ -53,9 +53,9 @@ void StatusScreen::draw_axis_position(draw_mode_t what) { | ||||
|                          .button( BTN_POS(1,7), BTN_SIZE(2,1), F(""), OPT_FLAT) | ||||
|  | ||||
|         .font(Theme::font_small) | ||||
|                          .text  ( BTN_POS(1,5), BTN_SIZE(1,1), GET_TEXT_F(AXIS_X)) | ||||
|                          .text  ( BTN_POS(1,6), BTN_SIZE(1,1), GET_TEXT_F(AXIS_Y)) | ||||
|                          .text  ( BTN_POS(1,7), BTN_SIZE(1,1), GET_TEXT_F(AXIS_Z)) | ||||
|                          .text  ( BTN_POS(1,5), BTN_SIZE(1,1), GET_TEXT_F(MSG_AXIS_X)) | ||||
|                          .text  ( BTN_POS(1,6), BTN_SIZE(1,1), GET_TEXT_F(MSG_AXIS_Y)) | ||||
|                          .text  ( BTN_POS(1,7), BTN_SIZE(1,1), GET_TEXT_F(MSG_AXIS_Z)) | ||||
|  | ||||
|         .font(Theme::font_medium) | ||||
|         .fgcolor(Theme::x_axis) .button( BTN_POS(2,5), BTN_SIZE(2,1), F(""), OPT_FLAT) | ||||
| @@ -69,9 +69,9 @@ void StatusScreen::draw_axis_position(draw_mode_t what) { | ||||
|                          .button( BTN_POS(3,5), BTN_SIZE(1,2), F(""),  OPT_FLAT) | ||||
|  | ||||
|         .font(Theme::font_small) | ||||
|                          .text  ( BTN_POS(1,5), BTN_SIZE(1,1), GET_TEXT_F(AXIS_X)) | ||||
|                          .text  ( BTN_POS(2,5), BTN_SIZE(1,1), GET_TEXT_F(AXIS_Y)) | ||||
|                          .text  ( BTN_POS(3,5), BTN_SIZE(1,1), GET_TEXT_F(AXIS_Z)) | ||||
|                          .text  ( BTN_POS(1,5), BTN_SIZE(1,1), GET_TEXT_F(MSG_AXIS_X)) | ||||
|                          .text  ( BTN_POS(2,5), BTN_SIZE(1,1), GET_TEXT_F(MSG_AXIS_Y)) | ||||
|                          .text  ( BTN_POS(3,5), BTN_SIZE(1,1), GET_TEXT_F(MSG_AXIS_Z)) | ||||
|                          .font(Theme::font_medium) | ||||
|  | ||||
|         .fgcolor(Theme::x_axis) .button( BTN_POS(1,6), BTN_SIZE(1,1), F(""), OPT_FLAT) | ||||
| @@ -279,12 +279,12 @@ void StatusScreen::draw_interaction_buttons(draw_mode_t what) { | ||||
|           #else | ||||
|             BTN_POS(1,7), BTN_SIZE(2,2), | ||||
|           #endif | ||||
|           isPrintingFromMedia() ? GET_TEXT_F(PRINTING) : GET_TEXT_F(MEDIA) | ||||
|           isPrintingFromMedia() ? GET_TEXT_F(MSG_PRINTING) : GET_TEXT_F(MSG_BUTTON_MEDIA) | ||||
|         ).colors(!has_media ? action_btn : normal_btn) | ||||
|       #ifdef TOUCH_UI_PORTRAIT | ||||
|        .tag(4).button( BTN_POS(3,8), BTN_SIZE(2,1), GET_TEXT_F(MENU)); | ||||
|        .tag(4).button( BTN_POS(3,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_BUTTON_MENU)); | ||||
|       #else | ||||
|        .tag(4).button( BTN_POS(3,7), BTN_SIZE(2,2), GET_TEXT_F(MENU)); | ||||
|        .tag(4).button( BTN_POS(3,7), BTN_SIZE(2,2), GET_TEXT_F(MSG_BUTTON_MENU)); | ||||
|     #endif | ||||
|   } | ||||
|   #undef  GRID_COLS | ||||
|   | ||||
| @@ -33,22 +33,22 @@ using namespace Theme; | ||||
| void StepperBumpSensitivityScreen::onRedraw(draw_mode_t what) { | ||||
|   widgets_t w(what); | ||||
|   w.precision(0, BaseNumericAdjustmentScreen::DEFAULT_LOWEST); | ||||
|   w.heading(                     GET_TEXT_F(HOME_SENSE)); | ||||
|   w.color(x_axis)  .adjuster( 2, GET_TEXT_F(AXIS_X),  getTMCBumpSensitivity(X), | ||||
|   w.heading(                     GET_TEXT_F(MSG_TMC_HOMING_THRS)); | ||||
|   w.color(x_axis)  .adjuster( 2, GET_TEXT_F(MSG_AXIS_X),  getTMCBumpSensitivity(X), | ||||
|   #if X_SENSORLESS | ||||
|     true | ||||
|   #else | ||||
|     false | ||||
|   #endif | ||||
|   ); | ||||
|   w.color(y_axis)  .adjuster( 4, GET_TEXT_F(AXIS_Y),  getTMCBumpSensitivity(Y), | ||||
|   w.color(y_axis)  .adjuster( 4, GET_TEXT_F(MSG_AXIS_Y),  getTMCBumpSensitivity(Y), | ||||
|    #if Y_SENSORLESS | ||||
|      true | ||||
|    #else | ||||
|      false | ||||
|    #endif | ||||
|   ); | ||||
|   w.color(z_axis)  .adjuster( 6, GET_TEXT_F(AXIS_Z),  getTMCBumpSensitivity(Z), | ||||
|   w.color(z_axis)  .adjuster( 6, GET_TEXT_F(MSG_AXIS_Z),  getTMCBumpSensitivity(Z), | ||||
|    #if Z_SENSORLESS | ||||
|      true | ||||
|    #else | ||||
|   | ||||
| @@ -33,21 +33,21 @@ using namespace Theme; | ||||
| void StepperCurrentScreen::onRedraw(draw_mode_t what) { | ||||
|   widgets_t w(what); | ||||
|   w.precision(0); | ||||
|   w.units(GET_TEXT_F(UNITS_MILLIAMP)); | ||||
|   w.heading(                     GET_TEXT_F(MOTOR_CURRENT)); | ||||
|   w.color(x_axis)  .adjuster( 2, GET_TEXT_F(AXIS_X),  getAxisCurrent_mA(X) ); | ||||
|   w.color(y_axis)  .adjuster( 4, GET_TEXT_F(AXIS_Y),  getAxisCurrent_mA(Y) ); | ||||
|   w.color(z_axis)  .adjuster( 6, GET_TEXT_F(AXIS_Z),  getAxisCurrent_mA(Z) ); | ||||
|   w.units(GET_TEXT_F(MSG_UNITS_MILLIAMP)); | ||||
|   w.heading(                     GET_TEXT_F(MSG_TMC_CURRENT)); | ||||
|   w.color(x_axis)  .adjuster( 2, GET_TEXT_F(MSG_AXIS_X),  getAxisCurrent_mA(X) ); | ||||
|   w.color(y_axis)  .adjuster( 4, GET_TEXT_F(MSG_AXIS_Y),  getAxisCurrent_mA(Y) ); | ||||
|   w.color(z_axis)  .adjuster( 6, GET_TEXT_F(MSG_AXIS_Z),  getAxisCurrent_mA(Z) ); | ||||
|   #if EXTRUDERS == 1 | ||||
|     w.color(e_axis).adjuster( 8, GET_TEXT_F(AXIS_E),  getAxisCurrent_mA(E0) ); | ||||
|     w.color(e_axis).adjuster( 8, GET_TEXT_F(MSG_AXIS_E),  getAxisCurrent_mA(E0) ); | ||||
|   #elif EXTRUDERS > 1 | ||||
|     w.color(e_axis).adjuster( 8, GET_TEXT_F(AXIS_E1), getAxisCurrent_mA(E0) ); | ||||
|     w.color(e_axis).adjuster(10, GET_TEXT_F(AXIS_E2), getAxisCurrent_mA(E1) ); | ||||
|     w.color(e_axis).adjuster( 8, GET_TEXT_F(MSG_AXIS_E1), getAxisCurrent_mA(E0) ); | ||||
|     w.color(e_axis).adjuster(10, GET_TEXT_F(MSG_AXIS_E2), getAxisCurrent_mA(E1) ); | ||||
|     #if EXTRUDERS > 2 | ||||
|     w.color(e_axis).adjuster(12, GET_TEXT_F(AXIS_E3), getAxisCurrent_mA(E2) ); | ||||
|     w.color(e_axis).adjuster(12, GET_TEXT_F(MSG_AXIS_E3), getAxisCurrent_mA(E2) ); | ||||
|     #endif | ||||
|     #if EXTRUDERS > 3 | ||||
|     w.color(e_axis).adjuster(14, GET_TEXT_F(AXIS_E4), getAxisCurrent_mA(E3) ); | ||||
|     w.color(e_axis).adjuster(14, GET_TEXT_F(MSG_AXIS_E4), getAxisCurrent_mA(E3) ); | ||||
|     #endif | ||||
|   #endif | ||||
|   w.increments(); | ||||
|   | ||||
| @@ -33,21 +33,21 @@ using namespace Theme; | ||||
| void StepsScreen::onRedraw(draw_mode_t what) { | ||||
|   widgets_t w(what); | ||||
|   w.precision(0); | ||||
|   w.units(GET_TEXT_F(UNITS_STEP_MM)); | ||||
|   w.heading(                        GET_TEXT_F(STEPS_PER_MM)); | ||||
|   w.color(x_axis)     .adjuster( 2, GET_TEXT_F(AXIS_X),  getAxisSteps_per_mm(X) ); | ||||
|   w.color(y_axis)     .adjuster( 4, GET_TEXT_F(AXIS_Y),  getAxisSteps_per_mm(Y) ); | ||||
|   w.color(z_axis)     .adjuster( 6, GET_TEXT_F(AXIS_Z),  getAxisSteps_per_mm(Z) ); | ||||
|   w.units(GET_TEXT_F(MSG_UNITS_STEP_MM)); | ||||
|   w.heading(                        GET_TEXT_F(MSG_STEPS_PER_MM)); | ||||
|   w.color(x_axis)     .adjuster( 2, GET_TEXT_F(MSG_AXIS_X),  getAxisSteps_per_mm(X) ); | ||||
|   w.color(y_axis)     .adjuster( 4, GET_TEXT_F(MSG_AXIS_Y),  getAxisSteps_per_mm(Y) ); | ||||
|   w.color(z_axis)     .adjuster( 6, GET_TEXT_F(MSG_AXIS_Z),  getAxisSteps_per_mm(Z) ); | ||||
|   #if EXTRUDERS == 1 || DISABLED(DISTINCT_E_FACTORS) | ||||
|     w.color(e_axis)   .adjuster( 8, GET_TEXT_F(AXIS_E),  getAxisSteps_per_mm(E0) ); | ||||
|     w.color(e_axis)   .adjuster( 8, GET_TEXT_F(MSG_AXIS_E),  getAxisSteps_per_mm(E0) ); | ||||
|   #elif EXTRUDERS > 1 | ||||
|     w.color(e_axis)   .adjuster( 8, GET_TEXT_F(AXIS_E1), getAxisSteps_per_mm(E0) ); | ||||
|     w.color(e_axis)   .adjuster(10, GET_TEXT_F(AXIS_E2), getAxisSteps_per_mm(E1) ); | ||||
|     w.color(e_axis)   .adjuster( 8, GET_TEXT_F(MSG_AXIS_E1), getAxisSteps_per_mm(E0) ); | ||||
|     w.color(e_axis)   .adjuster(10, GET_TEXT_F(MSG_AXIS_E2), getAxisSteps_per_mm(E1) ); | ||||
|     #if EXTRUDERS > 2 | ||||
|       w.color(e_axis) .adjuster(12, GET_TEXT_F(AXIS_E3), getAxisSteps_per_mm(E2) ); | ||||
|       w.color(e_axis) .adjuster(12, GET_TEXT_F(MSG_AXIS_E3), getAxisSteps_per_mm(E2) ); | ||||
|     #endif | ||||
|     #if EXTRUDERS > 3 | ||||
|       w.color(e_axis) .adjuster(14, GET_TEXT_F(AXIS_E4), getAxisSteps_per_mm(E3) ); | ||||
|       w.color(e_axis) .adjuster(14, GET_TEXT_F(MSG_AXIS_E4), getAxisSteps_per_mm(E3) ); | ||||
|     #endif | ||||
|   #endif | ||||
|   w.increments(); | ||||
|   | ||||
| @@ -22,7 +22,7 @@ | ||||
|  | ||||
| #include "../config.h" | ||||
|  | ||||
| #if BOTH(LULZBOT_TOUCH_UI, DEVELOPER_SCREENS) | ||||
| #if BOTH(LULZBOT_TOUCH_UI, TOUCH_UI_DEVELOPER_MENU) | ||||
|  | ||||
| #include "screens.h" | ||||
| #include "screen_data.h" | ||||
| @@ -121,6 +121,7 @@ void StressTestScreen::onIdle() { | ||||
|  | ||||
|   if (!commandsInQueue()) { | ||||
|       if (!isPositionKnown()) { | ||||
|         extern const char G28_STR[]; | ||||
|         injectCommands_P(G28_STR); | ||||
|       } else { | ||||
|         injectCommands_P(PSTR( | ||||
|   | ||||
| @@ -34,28 +34,28 @@ | ||||
|  * Formats a temperature string (e.g. "100°C") | ||||
|  */ | ||||
| void format_temp(char *str, float t1) { | ||||
|   sprintf_P(str, PSTR("%3d" S_FMT), ROUND(t1), GET_TEXT(UNITS_C)); | ||||
|   sprintf_P(str, PSTR("%3d" S_FMT), ROUND(t1), GET_TEXT(MSG_UNITS_C)); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Formats a temperature string for an idle heater (e.g. "100 °C / idle") | ||||
|  */ | ||||
| void format_temp_and_idle(char *str, float t1) { | ||||
|   sprintf_P(str, PSTR("%3d" S_FMT " / " S_FMT), ROUND(t1), GET_TEXT(UNITS_C), GET_TEXT(TEMP_IDLE)); | ||||
|   sprintf_P(str, PSTR("%3d" S_FMT " / " S_FMT), ROUND(t1), GET_TEXT(MSG_UNITS_C), GET_TEXT(MSG_IDLE)); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Formats a temperature string for an active heater (e.g. "100 / 200°C") | ||||
|  */ | ||||
| void format_temp_and_temp(char *str, float t1, float t2) { | ||||
|   sprintf_P(str, PSTR("%3d / %3d" S_FMT), ROUND(t1), ROUND(t2), GET_TEXT(UNITS_C)); | ||||
|   sprintf_P(str, PSTR("%3d / %3d" S_FMT), ROUND(t1), ROUND(t2), GET_TEXT(MSG_UNITS_C)); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Formats a temperature string for a material (e.g. "100°C (PLA)") | ||||
|  */ | ||||
| void format_temp_and_material(char *str, float t1, const char *material) { | ||||
|   sprintf_P(str, PSTR("%3d" S_FMT " (" S_FMT ")"), ROUND(t1), GET_TEXT(UNITS_C), material); | ||||
|   sprintf_P(str, PSTR("%3d" S_FMT " (" S_FMT ")"), ROUND(t1), GET_TEXT(MSG_UNITS_C), material); | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -64,7 +64,7 @@ void format_temp_and_material(char *str, float t1, const char *material) { | ||||
| void format_position(char *str, float p) { | ||||
|   dtostrf(p, 5, 1, str); | ||||
|   strcat_P(str, PSTR(" ")); | ||||
|   strcat_P(str, GET_TEXT(UNITS_MM)); | ||||
|   strcat_P(str, GET_TEXT(MSG_UNITS_MM)); | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -75,7 +75,7 @@ void format_position(char *str, float x, float y, float z) { | ||||
|   dtostrf(x, 4, 2, num1); | ||||
|   dtostrf(y, 4, 2, num2); | ||||
|   dtostrf(z, 4, 2, num3); | ||||
|   sprintf_P(str, PSTR("%s; %s; %s " S_FMT), num1, num2, num3, GET_TEXT(UNITS_MM)); | ||||
|   sprintf_P(str, PSTR("%s; %s; %s " S_FMT), num1, num2, num3, GET_TEXT(MSG_UNITS_MM)); | ||||
| } | ||||
|  | ||||
| #pragma GCC diagnostic pop | ||||
|   | ||||
| @@ -32,29 +32,29 @@ using namespace ExtUI; | ||||
|  | ||||
| void TemperatureScreen::onRedraw(draw_mode_t what) { | ||||
|   widgets_t w(what); | ||||
|   w.precision(0).color(temp).units(GET_TEXT_F(UNITS_C)); | ||||
|   w.heading(GET_TEXT_F(TEMPERATURE)); | ||||
|   w.button(30, GET_TEXT_F(COOLDOWN)); | ||||
|   #ifndef LULZBOT_DISABLE_TOOLHEAD_HEATER | ||||
|   w.precision(0).color(temp).units(GET_TEXT_F(MSG_UNITS_C)); | ||||
|   w.heading(GET_TEXT_F(MSG_TEMPERATURE)); | ||||
|   w.button(30, GET_TEXT_F(MSG_COOLDOWN)); | ||||
|   #ifndef NO_TOOLHEAD_HEATER_GCODE | ||||
|     #if HOTENDS == 1 | ||||
|       w.adjuster(   2, GET_TEXT_F(HOTEND),   getTargetTemp_celsius(E0)); | ||||
|       w.adjuster(   2, GET_TEXT_F(MSG_NOZZLE),   getTargetTemp_celsius(E0)); | ||||
|     #else | ||||
|       w.adjuster(   2, GET_TEXT_F(HOTEND1), getTargetTemp_celsius(E0)); | ||||
|       w.adjuster(   4, GET_TEXT_F(HOTEND2), getTargetTemp_celsius(E1)); | ||||
|       w.adjuster(   2, GET_TEXT_F(MSG_NOZZLE_0), getTargetTemp_celsius(E0)); | ||||
|       w.adjuster(   4, GET_TEXT_F(MSG_NOZZLE_1), getTargetTemp_celsius(E1)); | ||||
|       #if HOTENDS > 2 | ||||
|         w.adjuster( 6, GET_TEXT_F(HOTEND3), getTargetTemp_celsius(E2)); | ||||
|         w.adjuster( 6, GET_TEXT_F(MSG_NOZZLE_2), getTargetTemp_celsius(E2)); | ||||
|       #endif | ||||
|       #if HOTENDS > 3 | ||||
|         w.adjuster( 8, GET_TEXT_F(HOTEND4), getTargetTemp_celsius(E3)); | ||||
|         w.adjuster( 8, GET_TEXT_F(MSG_NOZZLE_3), getTargetTemp_celsius(E3)); | ||||
|       #endif | ||||
|     #endif | ||||
|   #endif | ||||
|   #if HAS_HEATED_BED | ||||
|     w.adjuster(    20, GET_TEXT_F(BED),     getTargetTemp_celsius(BED)); | ||||
|     w.adjuster(    20, GET_TEXT_F(MSG_BED),     getTargetTemp_celsius(BED)); | ||||
|   #endif | ||||
|   #if FAN_COUNT > 0 | ||||
|     w.color(fan_speed).units(GET_TEXT_F(UNITS_PERCENT)); | ||||
|     w.adjuster(    10, GET_TEXT_F(FAN_SPEED), getTargetFan_percent(FAN0)); | ||||
|     w.color(fan_speed).units(GET_TEXT_F(MSG_UNITS_PERCENT)); | ||||
|     w.adjuster(    10, GET_TEXT_F(MSG_FAN_SPEED), getTargetFan_percent(FAN0)); | ||||
|   #endif | ||||
|   w.increments(); | ||||
| } | ||||
| @@ -64,7 +64,7 @@ bool TemperatureScreen::onTouchHeld(uint8_t tag) { | ||||
|   switch (tag) { | ||||
|     case 20: UI_DECREMENT(TargetTemp_celsius, BED); break; | ||||
|     case 21: UI_INCREMENT(TargetTemp_celsius, BED); break; | ||||
|     #ifndef LULZBOT_DISABLE_TOOLHEAD_HEATER | ||||
|     #ifndef NO_TOOLHEAD_HEATER_GCODE | ||||
|     case  2: UI_DECREMENT(TargetTemp_celsius, E0); break; | ||||
|     case  3: UI_INCREMENT(TargetTemp_celsius, E0); break; | ||||
|     #endif | ||||
|   | ||||
| @@ -45,7 +45,7 @@ void TouchCalibrationScreen::onEntry() { | ||||
|        .cmd(CLEAR_COLOR_RGB(bg_color)) | ||||
|        .cmd(CLEAR(true,true,true)) | ||||
|        .cmd(COLOR_RGB(bg_text_enabled)); | ||||
|     draw_text_box(cmd, BTN_POS(1,1), BTN_SIZE(4,16), GET_TEXT_F(TOUCH_CALIBRATION_START), OPT_CENTER, font_large); | ||||
|     draw_text_box(cmd, BTN_POS(1,1), BTN_SIZE(4,16), GET_TEXT_F(MSG_TOUCH_CALIBRATION_START), OPT_CENTER, font_large); | ||||
|     cmd.cmd(DL::DL_DISPLAY) | ||||
|        .cmd(CMD_SWAP) | ||||
|        .execute(); | ||||
| @@ -76,7 +76,7 @@ void TouchCalibrationScreen::onRedraw(draw_mode_t) { | ||||
|      .cmd(CLEAR(true,true,true)) | ||||
|      .cmd(COLOR_RGB(bg_text_enabled)); | ||||
|  | ||||
|   draw_text_box(cmd, BTN_POS(1,1), BTN_SIZE(4,16), GET_TEXT_F(TOUCH_CALIBRATION_PROMPT), OPT_CENTER, font_large); | ||||
|   draw_text_box(cmd, BTN_POS(1,1), BTN_SIZE(4,16), GET_TEXT_F(MSG_TOUCH_CALIBRATION_PROMPT), OPT_CENTER, font_large); | ||||
|   cmd.cmd(CMD_CALIBRATE); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -22,7 +22,7 @@ | ||||
|  | ||||
| #include "../config.h" | ||||
|  | ||||
| #if BOTH(LULZBOT_TOUCH_UI, DEVELOPER_SCREENS) | ||||
| #if BOTH(LULZBOT_TOUCH_UI, TOUCH_UI_DEVELOPER_MENU) | ||||
|  | ||||
| #include "screens.h" | ||||
|  | ||||
|   | ||||
| @@ -22,7 +22,7 @@ | ||||
|  | ||||
| #include "../config.h" | ||||
|  | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && !defined(LULZBOT_USE_BIOPRINTER_UI) | ||||
| #if ENABLED(LULZBOT_TOUCH_UI) && !defined(TOUCH_UI_LULZBOT_BIO) | ||||
|  | ||||
| #include "screens.h" | ||||
|  | ||||
| @@ -51,79 +51,79 @@ void TuneMenu::onRedraw(draw_mode_t what) { | ||||
|     cmd.colors(normal_btn) | ||||
|        .font(font_medium) | ||||
|     #ifdef TOUCH_UI_PORTRAIT | ||||
|        .tag(2).enabled(1)      .button( BTN_POS(1,1), BTN_SIZE(2,1), GET_TEXT_F(TEMPERATURE)) | ||||
|        .tag(3).enabled(!isPrinting()).button( BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXT_F(CHANGE_FILAMENT)) | ||||
|        .tag(2).enabled(1)      .button( BTN_POS(1,1), BTN_SIZE(2,1), GET_TEXT_F(MSG_TEMPERATURE)) | ||||
|        .tag(3).enabled(!isPrinting()).button( BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXT_F(MSG_FILAMENTCHANGE)) | ||||
|        #if EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR) | ||||
|           .enabled(1) | ||||
|         #else | ||||
|           .enabled(0) | ||||
|         #endif | ||||
|        .tag(9).button( BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXT_F(FILAMENT)) | ||||
|        .tag(9).button( BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXT_F(MSG_FILAMENT)) | ||||
|       #if ENABLED(BABYSTEPPING) | ||||
|        .tag(4).enabled(1)      .button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXT_F(NUDGE_NOZZLE)) | ||||
|        .tag(4).enabled(1)      .button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXT_F(MSG_NUDGE_NOZZLE)) | ||||
|       #else | ||||
|         #if HAS_BED_PROBE | ||||
|           .enabled(1) | ||||
|         #else | ||||
|           .enabled(0) | ||||
|         #endif | ||||
|        .tag(4)                 .button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXT_F(ZPROBE_ZOFFSET)) | ||||
|        .tag(4)                 .button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXT_F(MSG_ZPROBE_ZOFFSET)) | ||||
|       #endif | ||||
|        .tag(5).enabled(1)      .button( BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(PRINT_SPEED)) | ||||
|        .tag(5).enabled(1)      .button( BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(MSG_PRINT_SPEED)) | ||||
|        .tag(isPrintingFromMediaPaused() ? 7 : 6) | ||||
|       #if ENABLED(SDSUPPORT) | ||||
|         .enabled(isPrintingFromMedia()) | ||||
|       #else | ||||
|         .enabled(0) | ||||
|       #endif | ||||
|         .button( BTN_POS(1,6), BTN_SIZE(2,1), isPrintingFromMediaPaused() ? GET_TEXT_F(RESUME_PRINT) : GET_TEXT_F(PAUSE_PRINT)) | ||||
|         .button( BTN_POS(1,6), BTN_SIZE(2,1), isPrintingFromMediaPaused() ? GET_TEXT_F(MSG_RESUME_PRINT) : GET_TEXT_F(MSG_PAUSE_PRINT)) | ||||
|       #if ENABLED(SDSUPPORT) | ||||
|         .enabled(isPrintingFromMedia()) | ||||
|       #else | ||||
|         .enabled(0) | ||||
|       #endif | ||||
|       .tag(8)             .button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(STOP_PRINT)) | ||||
|       .tag(8)             .button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(MSG_STOP_PRINT)) | ||||
|       .tag(1).colors(action_btn) | ||||
|                           .button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(BACK)); | ||||
|                           .button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK)); | ||||
|     #else // TOUCH_UI_PORTRAIT | ||||
|        .tag(2).enabled(1) .button( BTN_POS(1,1), BTN_SIZE(1,1), GET_TEXT_F(TEMPERATURE)) | ||||
|        .tag(3).enabled(!isPrinting()).button( BTN_POS(1,2), BTN_SIZE(1,1), GET_TEXT_F(CHANGE_FILAMENT)) | ||||
|        .tag(2).enabled(1) .button( BTN_POS(1,1), BTN_SIZE(1,1), GET_TEXT_F(MSG_TEMPERATURE)) | ||||
|        .tag(3).enabled(!isPrinting()).button( BTN_POS(1,2), BTN_SIZE(1,1), GET_TEXT_F(MSG_FILAMENTCHANGE)) | ||||
|       #if ENABLED(BABYSTEPPING) | ||||
|        .enabled(1) | ||||
|       #else | ||||
|        .enabled(0) | ||||
|       #endif | ||||
|         #if ENABLED(BABYSTEPPING) | ||||
|           .tag(4)         .button( BTN_POS(2,1), BTN_SIZE(1,1), GET_TEXT_F(NUDGE_NOZZLE)) | ||||
|           .tag(4)         .button( BTN_POS(2,1), BTN_SIZE(1,1), GET_TEXT_F(MSG_NUDGE_NOZZLE)) | ||||
|         #else | ||||
|           #if HAS_BED_PROBE | ||||
|             .enabled(1) | ||||
|           #else | ||||
|             .enabled(0) | ||||
|           #endif | ||||
|           .tag(4)         .button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXT_F(ZPROBE_ZOFFSET)) | ||||
|           .tag(4)         .button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXT_F(MSG_ZPROBE_ZOFFSET)) | ||||
|         #endif | ||||
|        .tag(5).enabled(1) .button( BTN_POS(2,2), BTN_SIZE(1,1), GET_TEXT_F(PRINT_SPEED)) | ||||
|        .tag(5).enabled(1) .button( BTN_POS(2,2), BTN_SIZE(1,1), GET_TEXT_F(MSG_PRINT_SPEED)) | ||||
|        .tag(isPrintingFromMediaPaused() ? 7 : 6) | ||||
|       #if ENABLED(SDSUPPORT) | ||||
|         .enabled(isPrintingFromMedia()) | ||||
|       #else | ||||
|         .enabled(0) | ||||
|       #endif | ||||
|                           .button( BTN_POS(1,3), BTN_SIZE(1,1), isPrintingFromMediaPaused() ? GET_TEXT_F(RESUME_PRINT) : GET_TEXT_F(PAUSE_PRINT)) | ||||
|                           .button( BTN_POS(1,3), BTN_SIZE(1,1), isPrintingFromMediaPaused() ? GET_TEXT_F(MSG_RESUME_PRINT) : GET_TEXT_F(MSG_PAUSE_PRINT)) | ||||
|       #if ENABLED(SDSUPPORT) | ||||
|         .enabled(isPrintingFromMedia()) | ||||
|       #else | ||||
|         .enabled(0) | ||||
|       #endif | ||||
|        .tag(8).           button( BTN_POS(2,3), BTN_SIZE(1,1), GET_TEXT_F(STOP_PRINT)) | ||||
|        .tag(8).           button( BTN_POS(2,3), BTN_SIZE(1,1), GET_TEXT_F(MSG_STOP_PRINT)) | ||||
|        #if ENABLED(LIN_ADVANCE) || ENABLED(FILAMENT_RUNOUT_SENSOR) | ||||
|           .enabled(1) | ||||
|         #else | ||||
|           .enabled(0) | ||||
|         #endif | ||||
|        .tag(9).button( BTN_POS(1,4), BTN_SIZE(1,1), GET_TEXT_F(FILAMENT)) | ||||
|        .tag(1).colors(action_btn) .button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXT_F(BACK)); | ||||
|        .tag(9).button( BTN_POS(1,4), BTN_SIZE(1,1), GET_TEXT_F(MSG_FILAMENT)) | ||||
|        .tag(1).colors(action_btn) .button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXT_F(MSG_BACK)); | ||||
|     #endif | ||||
|   } | ||||
|   #undef GRID_COLS | ||||
|   | ||||
| @@ -22,7 +22,7 @@ | ||||
|  | ||||
| #include "../config.h" | ||||
|  | ||||
| #if BOTH(LULZBOT_TOUCH_UI, DEVELOPER_SCREENS) | ||||
| #if BOTH(LULZBOT_TOUCH_UI, TOUCH_UI_DEVELOPER_MENU) | ||||
|  | ||||
| #include "screens.h" | ||||
|  | ||||
| @@ -155,4 +155,4 @@ void WidgetsScreen::onIdle() { | ||||
|   BaseScreen::onIdle(); | ||||
| } | ||||
|  | ||||
| #endif // LULZBOT_TOUCH_UI && DEVELOPER_SCREENS | ||||
| #endif // LULZBOT_TOUCH_UI && TOUCH_UI_DEVELOPER_MENU | ||||
|   | ||||
| @@ -32,10 +32,10 @@ using namespace Theme; | ||||
|  | ||||
| void ZOffsetScreen::onRedraw(draw_mode_t what) { | ||||
|   widgets_t w(what); | ||||
|   w.precision(2, BaseNumericAdjustmentScreen::DEFAULT_MIDRANGE).units(GET_TEXT_F(UNITS_MM)); | ||||
|   w.precision(2, BaseNumericAdjustmentScreen::DEFAULT_MIDRANGE).units(GET_TEXT_F(MSG_UNITS_MM)); | ||||
|  | ||||
|   w.heading(                  GET_TEXT_F(ZPROBE_ZOFFSET)); | ||||
|   w.color(z_axis).adjuster(4, GET_TEXT_F(ZPROBE_ZOFFSET), getZOffset_mm()); | ||||
|   w.heading(                  GET_TEXT_F(MSG_ZPROBE_ZOFFSET)); | ||||
|   w.color(z_axis).adjuster(4, GET_TEXT_F(MSG_ZPROBE_ZOFFSET), getZOffset_mm()); | ||||
|   w.increments(); | ||||
| } | ||||
|  | ||||
|   | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -5,6 +5,7 @@ | ||||
| /**************************************************************************** | ||||
|  *   Written By Mark Pelletier  2017 - Aleph Objects, Inc.                  * | ||||
|  *   Written By Marcio Teixeira 2018 - Aleph Objects, Inc.                  * | ||||
|  *   Written By Marcio Teixeira 2019 - Cocoa Press                          * | ||||
|  *                                                                          * | ||||
|  *   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   * | ||||
| @@ -23,16 +24,16 @@ | ||||
| #pragma once | ||||
|  | ||||
| namespace Theme { | ||||
|   #ifdef LULZBOT_USE_BIOPRINTER_UI | ||||
|   #ifdef TOUCH_UI_LULZBOT_BIO | ||||
|     // The Lulzbot Bio uses the color PANTONE 2175C on the case silkscreen. | ||||
|     // This translates to HSL(208°, 100%, 39%) as an accent color on the GUI. | ||||
|  | ||||
|     constexpr int   accent_hue          = 208; | ||||
|     constexpr float accent_sat          = 0.5; | ||||
|  | ||||
|     constexpr uint32_t logo_bg          = 0xffffff; | ||||
|     constexpr uint32_t logo_fg          = 0xffffff; | ||||
|     constexpr uint32_t logo_stroke      = hsl_to_rgb(accent_hue, 1.0, 0.39); | ||||
|     constexpr uint32_t logo_bg_rgb      = 0xffffff; | ||||
|     constexpr uint32_t logo_fill_rgb    = 0xffffff; | ||||
|     constexpr uint32_t logo_stroke_rgb  = hsl_to_rgb(accent_hue, 1.0, 0.39); | ||||
|   #else | ||||
|     // The Lulzbot logo uses the color PANTONE 382c. | ||||
|     // This translates to HSL(68°, 68%, 52%) as an accent color on the GUI. | ||||
| @@ -40,19 +41,28 @@ namespace Theme { | ||||
|     constexpr int   accent_hue          = 68; | ||||
|     constexpr float accent_sat          = 0.68; | ||||
|  | ||||
|     constexpr uint32_t logo_bg          = hsl_to_rgb(accent_hue, 0.77, 0.64); | ||||
|     constexpr uint32_t logo_fg          = hsl_to_rgb(accent_hue, 0.68, 0.52); // Lulzbot Green | ||||
|     constexpr uint32_t logo_stroke      = 0x000000; | ||||
|     constexpr uint32_t logo_bg_rgb      = hsl_to_rgb(accent_hue, 0.77, 0.64); | ||||
|     constexpr uint32_t logo_fill_rgb    = hsl_to_rgb(accent_hue, 0.68, 0.52); // Lulzbot Green | ||||
|     constexpr uint32_t logo_stroke_rgb  = 0x000000; | ||||
|   #endif | ||||
|  | ||||
|   // Shades of accent color | ||||
|  | ||||
|   constexpr uint32_t accent_color_1     = hsl_to_rgb(accent_hue, accent_sat, 0.26); // Darkest | ||||
|   constexpr uint32_t accent_color_2     = hsl_to_rgb(accent_hue, accent_sat, 0.39); | ||||
|   constexpr uint32_t accent_color_3     = hsl_to_rgb(accent_hue, accent_sat, 0.52); | ||||
|   constexpr uint32_t accent_color_4     = hsl_to_rgb(accent_hue, accent_sat, 0.65); | ||||
|   constexpr uint32_t accent_color_5     = hsl_to_rgb(accent_hue, accent_sat, 0.78); | ||||
|   constexpr uint32_t accent_color_6     = hsl_to_rgb(accent_hue, accent_sat, 0.91); // Lightest | ||||
|   #ifdef TOUCH_UI_COCOA_PRESS | ||||
|     constexpr uint32_t accent_color_1     = hsl_to_rgb(12.8,0.597,0.263); // Darkest | ||||
|     constexpr uint32_t accent_color_2     = hsl_to_rgb(12.8,0.597,0.263); | ||||
|     constexpr uint32_t accent_color_3     = hsl_to_rgb( 9.6,0.664,0.443); | ||||
|     constexpr uint32_t accent_color_4     = hsl_to_rgb(16.3,0.873,0.537); | ||||
|     constexpr uint32_t accent_color_5     = hsl_to_rgb(23.0,0.889,0.539); | ||||
|     constexpr uint32_t accent_color_6     = hsl_to_rgb(23.0,0.889,0.539); // Lightest | ||||
|   #else | ||||
|     constexpr uint32_t accent_color_1     = hsl_to_rgb(accent_hue, accent_sat, 0.26); // Darkest | ||||
|     constexpr uint32_t accent_color_2     = hsl_to_rgb(accent_hue, accent_sat, 0.39); | ||||
|     constexpr uint32_t accent_color_3     = hsl_to_rgb(accent_hue, accent_sat, 0.52); | ||||
|     constexpr uint32_t accent_color_4     = hsl_to_rgb(accent_hue, accent_sat, 0.65); | ||||
|     constexpr uint32_t accent_color_5     = hsl_to_rgb(accent_hue, accent_sat, 0.78); | ||||
|     constexpr uint32_t accent_color_6     = hsl_to_rgb(accent_hue, accent_sat, 0.91); // Lightest | ||||
|   #endif | ||||
|  | ||||
|   // Shades of gray | ||||
|  | ||||
| @@ -65,7 +75,7 @@ namespace Theme { | ||||
|   constexpr uint32_t gray_color_5       = hsl_to_rgb(accent_hue, gray_sat, 0.78); | ||||
|   constexpr uint32_t gray_color_6       = hsl_to_rgb(accent_hue, gray_sat, 0.91); // Lightest | ||||
|  | ||||
|   #ifndef LULZBOT_USE_BIOPRINTER_UI | ||||
|   #if DISABLED(TOUCH_UI_LULZBOT_BIO) && DISABLED(TOUCH_UI_COCOA_PRESS) | ||||
|     // Lulzbot TAZ Pro | ||||
|     constexpr uint32_t theme_darkest    = gray_color_1; | ||||
|     constexpr uint32_t theme_dark       = gray_color_2; | ||||
|   | ||||
| @@ -0,0 +1,43 @@ | ||||
|  | ||||
| /**************************************************************************** | ||||
|  *   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: <http://www.gnu.org/licenses/>.                              * | ||||
|  ****************************************************************************/ | ||||
|  | ||||
| /** | ||||
|  * This file was auto-generated using "svg2cpp.pl" | ||||
|  * | ||||
|  * The encoding consists of x,y pairs with the min and max scaled to | ||||
|  * 0x0000 and 0xFFFE. A single 0xFFFF in the data stream indicates the | ||||
|  * start of a new closed path. | ||||
|  */ | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| constexpr float x_min = 0.000000; | ||||
|  | ||||
| constexpr float x_max = 480.000000; | ||||
|  | ||||
| constexpr float y_min = 0.000000; | ||||
|  | ||||
| constexpr float y_max = 272.000000; | ||||
|  | ||||
| const PROGMEM uint16_t logo_fill[] = {0x419D, 0x546F, 0x3D05, 0x5615, 0x3942, 0x5A92, 0x36B7, 0x6136, 0x35C8, 0x6950, 0x35C8, 0x96B0, 0x36B7, 0x9ECA, 0x3942, 0xA56E, 0x3D05, 0xA9EB, 0x419D, 0xAB91, 0xBE60, 0xAB91, 0xC2F8, 0xA9EB, 0xC6BB, 0xA56E, 0xC946, 0x9ECA, 0xCA35, 0x96B0, 0xCA32, 0x546C, 0x419D, 0x546F}; | ||||
|  | ||||
| const PROGMEM uint16_t logo_stroke[] = {0xADF3, 0x546C, 0x419D, 0x546F, 0x3D05, 0x5615, 0x3942, 0x5A92, 0x36B7, 0x6136, 0x35C8, 0x6950, 0x35C8, 0x96B0, 0x36B7, 0x9ECA, 0x3942, 0xA56E, 0x3D05, 0xA9EB, 0x419D, 0xAB91, 0xBE60, 0xAB91, 0xC2F8, 0xA9EB, 0xC6BB, 0xA56E, 0xC946, 0x9ECA, 0xCA35, 0x96B0, 0xCA32, 0x546C, 0xADF3, 0x546C, 0xFFFF, 0x419D, 0x5913, 0xB08C, 0x5913, 0xC794, 0x8250, 0xC794, 0x96B0, 0xC6DA, 0x9CFF, 0xC4E1, 0xA229, 0xC1F4, 0xA5A5, 0xBE60, 0xA6ED, 0x419D, 0xA6ED, 0x3E09, 0xA5A5, 0x3B1C, 0xA229, 0x3923, 0x9CFF, 0x3869, 0x96B0, 0x3869, 0x6950, 0x3923, 0x6301, 0x3B1C, 0x5DD7, 0x3E09, 0x5A5B, 0x419D, 0x5913, 0xFFFF, 0xAC7A, 0x8620, 0xAC7A, 0x9373, 0xA767, 0x9373, 0xA767, 0x75CB, 0xA1C6, 0x75CB, 0xA1C6, 0x9373, 0xA1C6, 0x9C8E, 0xA767, 0x9C8E, 0xAC7A, 0x9C8E, 0xB21C, 0x9C8E, 0xB21C, 0x9373, 0xB21C, 0x85E7, 0xB350, 0x8093, 0xB65F, 0x7E86, 0xB9D5, 0x8165, 0xBA83, 0x85E7, 0xBA83, 0x9C8E, 0xBEFE, 0x9C8E, 0xC024, 0x99E1, 0xC024, 0x8620, 0xBF7B, 0x7F22, 0xBD8F, 0x79A9, 0xBA7E, 0x7617, 0xB65F, 0x74D0, 0xB24F, 0x7622, 0xAF30, 0x79C6, 0xAD2F, 0x7F43, 0xAC7A, 0x8620, 0xAC7A, 0x8620, 0xAC7A, 0x8620, 0xFFFF, 0x8179, 0x9C8E, 0x7CE9, 0x9C8E, 0x7747, 0x9C8E, 0x7747, 0x92EC, 0x7747, 0x8949, 0x75A2, 0x81A3, 0x71A6, 0x7E73, 0x6DAB, 0x818B, 0x6C05, 0x88FC, 0x6DAF, 0x9019, 0x71C7, 0x92EC, 0x7505, 0x92EC, 0x7505, 0x9C8E, 0x7118, 0x9C8E, 0x6CD3, 0x9B06, 0x696B, 0x96D6, 0x6729, 0x909E, 0x6658, 0x88FC, 0x672D, 0x8133, 0x6980, 0x7AC7, 0x6D13, 0x766C, 0x71A6, 0x74D0, 0x7632, 0x766D, 0x79C2, 0x7AD1, 0x7C14, 0x8153, 0x7CE9, 0x8949, 0x7CE9, 0x92EC, 0x8179, 0x92EC, 0x8179, 0x8620, 0x822E, 0x7F43, 0x842E, 0x79C6, 0x874E, 0x7622, 0x8B5E, 0x74D0, 0x8F7C, 0x7617, 0x928E, 0x79A9, 0x9479, 0x7F22, 0x9523, 0x8620, 0x9523, 0x87DB, 0x8F81, 0x87DB, 0x8F81, 0x85E7, 0x8ED4, 0x8165, 0x8B5E, 0x7E86, 0x884F, 0x8093, 0x871A, 0x85E7, 0x871A, 0x92EC, 0x871A, 0x9C8F, 0x8179, 0x9C8F, 0x8179, 0x9C8E, 0x8179, 0x9C8E, 0xFFFF, 0x6515, 0x79DB, 0x644C, 0x7281, 0x6218, 0x6C86, 0x5EB2, 0x6882, 0x5A56, 0x670A, 0x55D9, 0x68E0, 0x5272, 0x6DD0, 0x4F0B, 0x68E0, 0x4A8E, 0x670A, 0x4638, 0x6882, 0x42D5, 0x6C86, 0x40A2, 0x7281, 0x3FD9, 0x79DB, 0x3FD9, 0x9AC9, 0x40E4, 0x9C8E, 0x456F, 0x9C8E, 0x456F, 0x79B5, 0x46D4, 0x735D, 0x4A8E, 0x70C0, 0x4E3E, 0x735D, 0x4FA1, 0x79B5, 0x4FA1, 0x9C8E, 0x554D, 0x9C8E, 0x554D, 0x79B5, 0x56A7, 0x735D, 0x5A56, 0x70C0, 0x5E0C, 0x735D, 0x5F74, 0x79B5, 0x5F74, 0x9C8E, 0x6515, 0x9C8E, 0x6515, 0x79DB, 0x6515, 0x79DB, 0x6515, 0x79DB, 0xFFFF, 0x9672, 0x8C4C, 0x9714, 0x9379, 0x98F5, 0x98D2, 0x9C0B, 0x9BF4, 0xA04C, 0x9C7B, 0xA04C, 0x9373, 0x9D2B, 0x920C, 0x9C1E, 0x8C4C, 0x9C1E, 0x648E, 0x9672, 0x648E, 0x9672, 0x8C4C, 0x9672, 0x8C4C, 0x9672, 0x8C4C, 0xFFFF, 0xA767, 0x7194, 0xA767, 0x6C02, 0xA692, 0x687A, 0xA496, 0x670A, 0xA291, 0x687A, 0xA1BB, 0x6C02, 0xA1BB, 0x7194, 0xA767, 0x7194, 0xA767, 0x7194, 0xA767, 0x7194}; | ||||
|  | ||||
| #define LOGO_BACKGROUND logo_bg_rgb | ||||
| #define LOGO_PAINT_PATHS \ | ||||
|   LOGO_PAINT_PATH(logo_stroke_rgb, logo_stroke) \ | ||||
|   LOGO_PAINT_PATH(logo_fill_rgb,   logo_fill) | ||||
|  | ||||
| @@ -0,0 +1,42 @@ | ||||
|  | ||||
| /**************************************************************************** | ||||
|  *   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: <http://www.gnu.org/licenses/>.                              * | ||||
|  ****************************************************************************/ | ||||
|  | ||||
| /** | ||||
|  * This file was auto-generated using "svg2cpp.pl" | ||||
|  * | ||||
|  * The encoding consists of x,y pairs with the min and max scaled to | ||||
|  * 0x0000 and 0xFFFE. A single 0xFFFF in the data stream indicates the | ||||
|  * start of a new closed path. | ||||
|  */ | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| constexpr float x_min = 0.000000; | ||||
|  | ||||
| constexpr float x_max = 272.000000; | ||||
|  | ||||
| constexpr float y_min = 0.000000; | ||||
|  | ||||
| constexpr float y_max = 480.000000; | ||||
|  | ||||
| const PROGMEM uint16_t logo_fill[] = {0x3C19, 0x70C5, 0x371A, 0x7159, 0x3302, 0x72EA, 0x303D, 0x753C, 0x2F39, 0x7811, 0x2F39, 0x87ED, 0x303D, 0x8AC2, 0x3302, 0x8D14, 0x371A, 0x8EA5, 0x3C19, 0x8F39, 0xC3E4, 0x8F39, 0xC8E3, 0x8EA5, 0xCCFB, 0x8D14, 0xCFC0, 0x8AC2, 0xD0C4, 0x87ED, 0xD0C0, 0x70C4, 0x3C19, 0x70C5}; | ||||
|  | ||||
| const PROGMEM uint16_t logo_stroke[] = {0x3C19, 0x70C5, 0x371A, 0x7159, 0x3302, 0x72EA, 0x303D, 0x753C, 0x2F39, 0x7811, 0x2F39, 0x87ED, 0x303D, 0x8AC2, 0x3302, 0x8D14, 0x371A, 0x8EA5, 0x3C19, 0x8F39, 0xC3E4, 0x8F39, 0xC8E3, 0x8EA5, 0xCCFB, 0x8D14, 0xCFC0, 0x8AC2, 0xD0C4, 0x87ED, 0xD0C0, 0x70C4, 0x3C19, 0x70C5, 0xFFFF, 0x3C19, 0x7264, 0xB4D6, 0x7264, 0xCDE7, 0x80CE, 0xCDE7, 0x87ED, 0xCD1D, 0x8A21, 0xCAF7, 0x8BEF, 0xC7C8, 0x8D27, 0xC3E4, 0x8D9A, 0x3C19, 0x8D9A, 0x3835, 0x8D27, 0x3506, 0x8BEF, 0x32E0, 0x8A21, 0x3216, 0x87ED, 0x3216, 0x7811, 0x32E0, 0x75DD, 0x3506, 0x740F, 0x3835, 0x72D7, 0x3C19, 0x7264, 0xFFFF, 0xB069, 0x8223, 0xB069, 0x86CB, 0xAAE2, 0x86CB, 0xAAE2, 0x7C6E, 0xA4C2, 0x7C6E, 0xA4C2, 0x86CB, 0xA4C2, 0x89FA, 0xAAE2, 0x89FA, 0xB069, 0x89FA, 0xB689, 0x89FA, 0xB689, 0x86CB, 0xB689, 0x820F, 0xB7D9, 0x8033, 0xBB2E, 0x7F7B, 0xBEF2, 0x807C, 0xBFAE, 0x820F, 0xBFAE, 0x89FA, 0xC48F, 0x89FA, 0xC5CF, 0x890A, 0xC5CF, 0x8223, 0xC517, 0x7FB2, 0xC300, 0x7DC8, 0xBFA9, 0x7C88, 0xBB2E, 0x7C16, 0xB6C1, 0x7C8C, 0xB35B, 0x7DD2, 0xB12D, 0x7FBD, 0xB069, 0x8223, 0xB069, 0x8223, 0xB069, 0x8223, 0xFFFF, 0x819B, 0x89FA, 0x7CA3, 0x89FA, 0x7682, 0x89FA, 0x7682, 0x869C, 0x7682, 0x833E, 0x74B7, 0x8092, 0x7062, 0x7F74, 0x6C0C, 0x8089, 0x6A41, 0x8323, 0x6C10, 0x859F, 0x7085, 0x869C, 0x740C, 0x869C, 0x740C, 0x89FA, 0x6FC7, 0x89FA, 0x6B21, 0x8971, 0x676C, 0x87FA, 0x64F8, 0x85CE, 0x6414, 0x8323, 0x64FC, 0x806A, 0x6784, 0x7E2C, 0x6B67, 0x7CA6, 0x7062, 0x7C16, 0x7555, 0x7CA6, 0x7935, 0x7E2F, 0x7BBC, 0x8076, 0x7CA3, 0x833E, 0x7CA3, 0x869C, 0x819A, 0x869C, 0x819A, 0x8223, 0x825F, 0x7FBD, 0x848D, 0x7DD2, 0x87F3, 0x7C8C, 0x8C60, 0x7C16, 0x90DB, 0x7C88, 0x9432, 0x7DC8, 0x9648, 0x7FB2, 0x9701, 0x8223, 0x9701, 0x82BE, 0x90E0, 0x82BE, 0x90E0, 0x820F, 0x9024, 0x807C, 0x8C60, 0x7F7B, 0x890B, 0x8033, 0x87BB, 0x820F, 0x87BB, 0x869C, 0x87BB, 0x89FA, 0x819B, 0x89FA, 0x819B, 0x89FA, 0x819B, 0x89FA, 0xFFFF, 0x62B5, 0x7DD9, 0x61DA, 0x7B47, 0x5F73, 0x7931, 0x5BC1, 0x77C9, 0x5702, 0x7746, 0x521F, 0x77EA, 0x4E6B, 0x79A4, 0x4AB8, 0x77EA, 0x45D5, 0x7746, 0x411D, 0x77C9, 0x3D6E, 0x7931, 0x3B09, 0x7B47, 0x3A2E, 0x7DD9, 0x3A2E, 0x895C, 0x3B51, 0x89FA, 0x4043, 0x89FA, 0x4043, 0x7DCC, 0x41C6, 0x7B95, 0x45D5, 0x7AAB, 0x49D9, 0x7B95, 0x4B5B, 0x7DCC, 0x4B5B, 0x89FA, 0x5188, 0x89FA, 0x5188, 0x7DCC, 0x52FF, 0x7B95, 0x5702, 0x7AAB, 0x5B0C, 0x7B95, 0x5C94, 0x7DCC, 0x5C94, 0x89FA, 0x62B5, 0x89FA, 0x62B5, 0x7DD9, 0x62B5, 0x7DD9, 0x62B5, 0x7DD9, 0xFFFF, 0x986E, 0x844B, 0x991E, 0x86CD, 0x9B2A, 0x88AC, 0x9E85, 0x89C4, 0xA327, 0x89F3, 0xA327, 0x86CB, 0x9FBF, 0x864E, 0x9E9A, 0x844B, 0x9E9A, 0x7668, 0x986E, 0x7668, 0x986E, 0x844B, 0x986E, 0x844B, 0x986E, 0x844B, 0xFFFF, 0xAAE2, 0x7AF5, 0xAAE2, 0x7902, 0xA9FB, 0x77C7, 0xA7D2, 0x7746, 0xA59F, 0x77C7, 0xA4B6, 0x7902, 0xA4B6, 0x7AF5, 0xAAE2, 0x7AF5, 0xAAE2, 0x7AF5, 0xAAE2, 0x7AF5}; | ||||
|  | ||||
| #define LOGO_BACKGROUND logo_bg_rgb | ||||
| #define LOGO_PAINT_PATHS \ | ||||
|   LOGO_PAINT_PATH(logo_stroke_rgb, logo_stroke) \ | ||||
|   LOGO_PAINT_PATH(logo_fill_rgb,   logo_fill) | ||||
| @@ -581,6 +581,7 @@ namespace ExtUI { | ||||
|   } | ||||
|  | ||||
|   void setAxisMaxFeedrate_mm_s(const feedRate_t value, const extruder_t extruder) { | ||||
|     UNUSED_E(extruder); | ||||
|     planner.set_max_feedrate(E_AXIS_N(extruder - E0), value); | ||||
|   } | ||||
|  | ||||
| @@ -598,6 +599,7 @@ namespace ExtUI { | ||||
|   } | ||||
|  | ||||
|   void setAxisMaxAcceleration_mm_s2(const float value, const extruder_t extruder) { | ||||
|     UNUSED_E(extruder); | ||||
|     planner.set_max_acceleration(E_AXIS_N(extruder - E0), value); | ||||
|   } | ||||
|  | ||||
| @@ -908,6 +910,7 @@ namespace ExtUI { | ||||
|   } | ||||
|  | ||||
|   void printFile(const char *filename) { | ||||
|     UNUSED(filename); | ||||
|     IFSD(card.openAndPrintFile(filename), NOOP); | ||||
|   } | ||||
|  | ||||
| @@ -961,6 +964,8 @@ namespace ExtUI { | ||||
|       card.getfilename_sorted(nr); | ||||
|       return card.filename[0] != '\0'; | ||||
|     #else | ||||
|       UNUSED(pos); | ||||
|       UNUSED(skip_range_check); | ||||
|       return false; | ||||
|     #endif | ||||
|   } | ||||
| @@ -1004,6 +1009,8 @@ namespace ExtUI { | ||||
|     #if ENABLED(SDSUPPORT) | ||||
|       card.cd(dirname); | ||||
|       num_files = 0xFFFF; | ||||
|     #else | ||||
|       UNUSED(dirname); | ||||
|     #endif | ||||
|   } | ||||
|  | ||||
|   | ||||
| @@ -446,6 +446,13 @@ void MarlinSettings::postprocess() { | ||||
|  | ||||
| #endif // SD_FIRMWARE_UPDATE | ||||
|  | ||||
| #ifdef ARCHIM2_SPI_FLASH_EEPROM_BACKUP_SIZE | ||||
|   static_assert( | ||||
|       EEPROM_OFFSET + sizeof(SettingsData) < ARCHIM2_SPI_FLASH_EEPROM_BACKUP_SIZE, | ||||
|       "ARCHIM2_SPI_FLASH_EEPROM_BACKUP_SIZE is insufficient to capture all EEPROM data." | ||||
|     ); | ||||
| #endif | ||||
|  | ||||
| #define DEBUG_OUT ENABLED(EEPROM_CHITCHAT) | ||||
| #include "../core/debug_out.h" | ||||
|  | ||||
| @@ -2076,9 +2083,21 @@ void MarlinSettings::postprocess() { | ||||
|     return !eeprom_error; | ||||
|   } | ||||
|  | ||||
|   #ifdef ARCHIM2_SPI_FLASH_EEPROM_BACKUP_SIZE | ||||
|     extern bool restoreEEPROM(); | ||||
|   #endif | ||||
|  | ||||
|   bool MarlinSettings::validate() { | ||||
|     validating = true; | ||||
|     #ifdef ARCHIM2_SPI_FLASH_EEPROM_BACKUP_SIZE | ||||
|       bool success = _load(); | ||||
|       if(!success && restoreEEPROM()) { | ||||
|         SERIAL_ECHOLNPGM("Recovered backup EEPROM settings from SPI Flash"); | ||||
|         success = _load(); | ||||
|       } | ||||
|     #else | ||||
|     const bool success = _load(); | ||||
|     #endif | ||||
|     validating = false; | ||||
|     return success; | ||||
|   } | ||||
|   | ||||
| @@ -478,6 +478,7 @@ class Temperature { | ||||
|       #endif | ||||
|  | ||||
|       static inline uint8_t scaledFanSpeed(const uint8_t target, const uint8_t fs) { | ||||
|         UNUSED(target); // Potentially unused! | ||||
|         return (fs * uint16_t( | ||||
|           #if ENABLED(ADAPTIVE_FAN_SLOWING) | ||||
|             fan_speed_scaler[target] | ||||
|   | ||||
		Reference in New Issue
	
	Block a user