Browse Source

Do not implicitly concatenate localized strings (#15383)

Marcio Teixeira 4 years ago
parent
commit
a18d16fb8b

+ 7
- 0
Marlin/src/core/macros.h View File

@@ -61,6 +61,13 @@
61 61
 // Nanoseconds per cycle
62 62
 #define NANOSECONDS_PER_CYCLE (1000000000.0 / F_CPU)
63 63
 
64
+// Macros to make sprintf_P read from PROGMEM (AVR extension)
65
+#ifdef __AVR__
66
+  #define S_FMT "%S"
67
+#else
68
+  #define S_FMT "%s"
69
+#endif
70
+
64 71
 // Macros to make a string from a macro
65 72
 #define STRINGIFY_(M) #M
66 73
 #define STRINGIFY(M) STRINGIFY_(M)

+ 1
- 1
Marlin/src/gcode/bedlevel/abl/G29.cpp View File

@@ -715,7 +715,7 @@ G29_TYPE GcodeSuite::G29() {
715 715
 
716 716
           if (verbose_level) SERIAL_ECHOLNPAIR("Probing mesh point ", int(pt_index), "/", int(GRID_MAX_POINTS), ".");
717 717
           #if HAS_DISPLAY
718
-            ui.status_printf_P(0, PSTR(MSG_PROBING_MESH " %i/%i"), int(pt_index), int(GRID_MAX_POINTS));
718
+            ui.status_printf_P(0, PSTR(S_FMT " %i/%i"), PSTR(MSG_PROBING_MESH), int(pt_index), int(GRID_MAX_POINTS));
719 719
           #endif
720 720
 
721 721
           measured_z = faux ? 0.001 * random(-100, 101) : probe_at_point(xProbe, yProbe, raise_after, verbose_level);

+ 5
- 5
Marlin/src/gcode/motion/M290.cpp View File

@@ -46,13 +46,13 @@
46 46
       SERIAL_ECHO_START();
47 47
       SERIAL_ECHOLNPAIR(MSG_PROBE_OFFSET MSG_Z ": ", probe_offset[Z_AXIS]);
48 48
     }
49
-    #if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
50
-      else {
49
+    else {
50
+      #if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
51 51
         hotend_offset[Z_AXIS][active_extruder] -= offs;
52 52
         SERIAL_ECHO_START();
53
-        SERIAL_ECHOLNPAIR(MSG_Z_OFFSET ": ", hotend_offset[Z_AXIS][active_extruder]);
54
-      }
55
-    #endif
53
+        SERIAL_ECHOLNPAIR(MSG_PROBE_OFFSET MSG_Z ": ", hotend_offset[Z_AXIS][active_extruder]);
54
+      #endif
55
+    }
56 56
   }
57 57
 
58 58
 #endif

+ 35
- 24
Marlin/src/lcd/menu/menu_info.cpp View File

@@ -34,6 +34,9 @@
34 34
   #include "game/game.h"
35 35
 #endif
36 36
 
37
+#define STATIC_PAIR(MSG, VALUE, CNTR)    do{ strcpy_P(buffer, PSTR(": ")); strcpy(buffer + 2, VALUE); STATIC_ITEM(MSG, CNTR, false, buffer); }while(0)
38
+#define STATIC_PAIR_P(MSG, PVALUE, CNTR) do{ strcpy_P(buffer, PSTR(": ")); strcpy_P(buffer + 2, PSTR(PVALUE)); STATIC_ITEM(MSG, CNTR, false, buffer); }while(0)
39
+
37 40
 #if ENABLED(PRINTCOUNTER)
38 41
 
39 42
   #include "../../module/printcounter.h"
@@ -48,27 +51,27 @@
48 51
       #endif
49 52
     );
50 53
 
51
-    char buffer[21];
54
+    char buffer[21];  // for STATIC_PAIR_P
55
+
52 56
     printStatistics stats = print_job_timer.getStats();
53 57
 
54 58
     START_SCREEN();                                                                                // 12345678901234567890
55
-    STATIC_ITEM(MSG_INFO_PRINT_COUNT ": ", false, false, i16tostr3left(stats.totalPrints));        // Print Count: 999
56
-    STATIC_ITEM(MSG_INFO_COMPLETED_PRINTS": ", false, false, i16tostr3left(stats.finishedPrints)); // Completed  : 666
59
+    STATIC_PAIR(MSG_INFO_PRINT_COUNT, i16tostr3left(stats.totalPrints), false);                    // Print Count: 999
60
+    STATIC_PAIR(MSG_INFO_COMPLETED_PRINTS, i16tostr3left(stats.finishedPrints), false);            // Completed  : 666
57 61
 
58 62
     duration_t elapsed = stats.printTime;
59 63
     elapsed.toString(buffer);
60 64
 
61
-    STATIC_ITEM(MSG_INFO_PRINT_TIME ":", false, false);                                            // Total print Time:
65
+    STATIC_PAIR_P(MSG_INFO_PRINT_TIME, "", false);                                                 // Total print Time:
62 66
     STATIC_ITEM("> ", false, false, buffer);                                                       // > 99y 364d 23h 59m 59s
63 67
 
68
+    STATIC_PAIR_P(MSG_INFO_PRINT_LONGEST, "", false);                                              // Longest job time:
64 69
     elapsed = stats.longestPrint;
65 70
     elapsed.toString(buffer);
66
-
67
-    STATIC_ITEM(MSG_INFO_PRINT_LONGEST ":", false, false);                                         // Longest job time:
68 71
     STATIC_ITEM("> ", false, false, buffer);                                                       // > 99y 364d 23h 59m 59s
69 72
 
73
+    STATIC_PAIR_P(MSG_INFO_PRINT_FILAMENT, "", false);                                             // Extruded total:
70 74
     sprintf_P(buffer, PSTR("%ld.%im"), long(stats.filamentUsed / 1000), int16_t(stats.filamentUsed / 100) % 10);
71
-    STATIC_ITEM(MSG_INFO_PRINT_FILAMENT ":", false, false);                                        // Extruded total:
72 75
     STATIC_ITEM("> ", false, false, buffer);                                                       // > 125m
73 76
 
74 77
     #if SERVICE_INTERVAL_1 > 0
@@ -77,12 +80,14 @@
77 80
       STATIC_ITEM(SERVICE_NAME_1 MSG_SERVICE_IN, false, false);                                    // Service X in:
78 81
       STATIC_ITEM("> ", false, false, buffer);                                                     // > 7d 12h 11m 10s
79 82
     #endif
83
+
80 84
     #if SERVICE_INTERVAL_2 > 0
81 85
       elapsed = stats.nextService2;
82 86
       elapsed.toString(buffer);
83 87
       STATIC_ITEM(SERVICE_NAME_2 MSG_SERVICE_IN, false, false);
84 88
       STATIC_ITEM("> ", false, false, buffer);
85 89
     #endif
90
+
86 91
     #if SERVICE_INTERVAL_3 > 0
87 92
       elapsed = stats.nextService3;
88 93
       elapsed.toString(buffer);
@@ -104,13 +109,16 @@ void menu_info_thermistors() {
104 109
       true
105 110
     #endif
106 111
   );
112
+
113
+  char buffer[21];  // for STATIC_PAIR_P
114
+
107 115
   START_SCREEN();
108 116
   #if EXTRUDERS
109 117
     #define THERMISTOR_ID TEMP_SENSOR_0
110 118
     #include "../thermistornames.h"
111 119
     STATIC_ITEM("T0: " THERMISTOR_NAME, false, true);
112
-    STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(HEATER_0_MINTEMP), false);
113
-    STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(HEATER_0_MAXTEMP), false);
120
+    STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_0_MINTEMP), false);
121
+    STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_0_MAXTEMP), false);
114 122
   #endif
115 123
 
116 124
   #if TEMP_SENSOR_1 != 0
@@ -118,8 +126,8 @@ void menu_info_thermistors() {
118 126
     #define THERMISTOR_ID TEMP_SENSOR_1
119 127
     #include "../thermistornames.h"
120 128
     STATIC_ITEM("T1: " THERMISTOR_NAME, false, true);
121
-    STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(HEATER_1_MINTEMP), false);
122
-    STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(HEATER_1_MAXTEMP), false);
129
+    STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_1_MINTEMP), false);
130
+    STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_1_MAXTEMP), false);
123 131
   #endif
124 132
 
125 133
   #if TEMP_SENSOR_2 != 0
@@ -127,8 +135,8 @@ void menu_info_thermistors() {
127 135
     #define THERMISTOR_ID TEMP_SENSOR_2
128 136
     #include "../thermistornames.h"
129 137
     STATIC_ITEM("T2: " THERMISTOR_NAME, false, true);
130
-    STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(HEATER_2_MINTEMP), false);
131
-    STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(HEATER_2_MAXTEMP), false);
138
+    STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_2_MINTEMP), false);
139
+    STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_2_MAXTEMP), false);
132 140
   #endif
133 141
 
134 142
   #if TEMP_SENSOR_3 != 0
@@ -136,8 +144,8 @@ void menu_info_thermistors() {
136 144
     #define THERMISTOR_ID TEMP_SENSOR_3
137 145
     #include "../thermistornames.h"
138 146
     STATIC_ITEM("T3: " THERMISTOR_NAME, false, true);
139
-    STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(HEATER_3_MINTEMP), false);
140
-    STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(HEATER_3_MAXTEMP), false);
147
+    STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_3_MINTEMP), false);
148
+    STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_3_MAXTEMP), false);
141 149
   #endif
142 150
 
143 151
   #if TEMP_SENSOR_4 != 0
@@ -145,8 +153,8 @@ void menu_info_thermistors() {
145 153
     #define THERMISTOR_ID TEMP_SENSOR_4
146 154
     #include "../thermistornames.h"
147 155
     STATIC_ITEM("T4: " THERMISTOR_NAME, false, true);
148
-    STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(HEATER_4_MINTEMP), false);
149
-    STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(HEATER_4_MAXTEMP), false);
156
+    STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_4_MINTEMP), false);
157
+    STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_4_MAXTEMP), false);
150 158
   #endif
151 159
 
152 160
   #if TEMP_SENSOR_5 != 0
@@ -154,8 +162,8 @@ void menu_info_thermistors() {
154 162
     #define THERMISTOR_ID TEMP_SENSOR_5
155 163
     #include "../thermistornames.h"
156 164
     STATIC_ITEM("T5: " THERMISTOR_NAME, false, true);
157
-    STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(HEATER_5_MINTEMP), false);
158
-    STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(HEATER_5_MAXTEMP), false);
165
+    STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_5_MINTEMP), false);
166
+    STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_5_MAXTEMP), false);
159 167
   #endif
160 168
 
161 169
   #if HAS_HEATED_BED
@@ -163,8 +171,8 @@ void menu_info_thermistors() {
163 171
     #define THERMISTOR_ID TEMP_SENSOR_BED
164 172
     #include "../thermistornames.h"
165 173
     STATIC_ITEM("TBed:" THERMISTOR_NAME, false, true);
166
-    STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(BED_MINTEMP), false);
167
-    STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(BED_MAXTEMP), false);
174
+    STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(BED_MINTEMP), false);
175
+    STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(BED_MAXTEMP), false);
168 176
   #endif
169 177
   END_SCREEN();
170 178
 }
@@ -178,14 +186,17 @@ void menu_info_board() {
178 186
       true
179 187
     #endif
180 188
   );
189
+
190
+  char buffer[21];  // for STATIC_PAIR_P
191
+
181 192
   START_SCREEN();
182 193
   STATIC_ITEM(BOARD_INFO_NAME, true, true);                       // MyPrinterController
183 194
   #ifdef BOARD_WEBSITE_URL
184 195
     STATIC_ITEM(BOARD_WEBSITE_URL, false, false);                 // www.my3dprinter.com
185 196
   #endif
186
-  STATIC_ITEM(MSG_INFO_BAUDRATE ": " STRINGIFY(BAUDRATE), true);  // Baud: 250000
187
-  STATIC_ITEM(MSG_INFO_PROTOCOL ": " PROTOCOL_VERSION, true);     // Protocol: 1.0
188
-  STATIC_ITEM(MSG_INFO_PSU ": " PSU_NAME, true);
197
+  STATIC_PAIR_P(MSG_INFO_BAUDRATE, STRINGIFY(BAUDRATE), true);    // Baud: 250000
198
+  STATIC_PAIR_P(MSG_INFO_PROTOCOL, PROTOCOL_VERSION, true);       // Protocol: 1.0
199
+  STATIC_PAIR_P(MSG_INFO_PSU,      PSU_NAME, true);
189 200
   END_SCREEN();
190 201
 }
191 202
 

+ 5
- 1
Marlin/src/lcd/menu/menu_media.cpp View File

@@ -82,10 +82,14 @@ inline void sdcard_start_selected_file() {
82 82
 #if ENABLED(SD_MENU_CONFIRM_START)
83 83
 
84 84
   void menu_sd_confirm() {
85
+    char * const longest = card.longest_filename();
86
+    char buffer[strlen(longest) + 2];
87
+    buffer[0] = ' ';
88
+    strcpy(buffer + 1, longest);
85 89
     do_select_screen(
86 90
       PSTR(MSG_BUTTON_PRINT), PSTR(MSG_BUTTON_CANCEL),
87 91
       sdcard_start_selected_file, ui.goto_previous_screen,
88
-      PSTR(MSG_START_PRINT " "), card.longest_filename(), PSTR("?")
92
+      PSTR(MSG_START_PRINT), buffer, PSTR("?")
89 93
     );
90 94
   }
91 95
 

+ 1
- 1
Marlin/src/module/endstops.cpp View File

@@ -373,7 +373,7 @@ void Endstops::event_handler() {
373 373
     SERIAL_EOL();
374 374
 
375 375
     #if HAS_SPI_LCD
376
-      ui.status_printf_P(0, PSTR(MSG_LCD_ENDSTOPS " %c %c %c %c"), chrX, chrY, chrZ, chrP);
376
+      ui.status_printf_P(0, PSTR(S_FMT " %c %c %c %c"), PSTR(MSG_LCD_ENDSTOPS), chrX, chrY, chrZ, chrP);
377 377
     #endif
378 378
 
379 379
     #if BOTH(SD_ABORT_ON_ENDSTOP_HIT, SDSUPPORT)

+ 8
- 5
Marlin/src/module/temperature.cpp View File

@@ -2933,11 +2933,14 @@ void Temperature::isr() {
2933 2933
   #if HOTENDS && HAS_DISPLAY
2934 2934
     void Temperature::set_heating_message(const uint8_t e) {
2935 2935
       const bool heating = isHeatingHotend(e);
2936
-      #if HOTENDS > 1
2937
-        ui.status_printf_P(0, heating ? PSTR("E%c " MSG_HEATING) : PSTR("E%c " MSG_COOLING), '1' + e);
2938
-      #else
2939
-        ui.set_status_P(heating ? PSTR("E " MSG_HEATING) : PSTR("E " MSG_COOLING));
2940
-      #endif
2936
+      ui.status_printf_P(0,
2937
+        #if HOTENDS > 1
2938
+          PSTR("E%c " S_FMT), '1' + e
2939
+        #else
2940
+          PSTR("E " S_FMT)
2941
+        #endif
2942
+        , heating ? PSTR(MSG_HEATING) : PSTR(MSG_COOLING)
2943
+      );
2941 2944
     }
2942 2945
   #endif
2943 2946
 

Loading…
Cancel
Save