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
 // Nanoseconds per cycle
61
 // Nanoseconds per cycle
62
 #define NANOSECONDS_PER_CYCLE (1000000000.0 / F_CPU)
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
 // Macros to make a string from a macro
71
 // Macros to make a string from a macro
65
 #define STRINGIFY_(M) #M
72
 #define STRINGIFY_(M) #M
66
 #define STRINGIFY(M) STRINGIFY_(M)
73
 #define STRINGIFY(M) STRINGIFY_(M)

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

715
 
715
 
716
           if (verbose_level) SERIAL_ECHOLNPAIR("Probing mesh point ", int(pt_index), "/", int(GRID_MAX_POINTS), ".");
716
           if (verbose_level) SERIAL_ECHOLNPAIR("Probing mesh point ", int(pt_index), "/", int(GRID_MAX_POINTS), ".");
717
           #if HAS_DISPLAY
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
           #endif
719
           #endif
720
 
720
 
721
           measured_z = faux ? 0.001 * random(-100, 101) : probe_at_point(xProbe, yProbe, raise_after, verbose_level);
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
       SERIAL_ECHO_START();
46
       SERIAL_ECHO_START();
47
       SERIAL_ECHOLNPAIR(MSG_PROBE_OFFSET MSG_Z ": ", probe_offset[Z_AXIS]);
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
         hotend_offset[Z_AXIS][active_extruder] -= offs;
51
         hotend_offset[Z_AXIS][active_extruder] -= offs;
52
         SERIAL_ECHO_START();
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
 #endif
58
 #endif

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

34
   #include "game/game.h"
34
   #include "game/game.h"
35
 #endif
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
 #if ENABLED(PRINTCOUNTER)
40
 #if ENABLED(PRINTCOUNTER)
38
 
41
 
39
   #include "../../module/printcounter.h"
42
   #include "../../module/printcounter.h"
48
       #endif
51
       #endif
49
     );
52
     );
50
 
53
 
51
-    char buffer[21];
54
+    char buffer[21];  // for STATIC_PAIR_P
55
+
52
     printStatistics stats = print_job_timer.getStats();
56
     printStatistics stats = print_job_timer.getStats();
53
 
57
 
54
     START_SCREEN();                                                                                // 12345678901234567890
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
     duration_t elapsed = stats.printTime;
62
     duration_t elapsed = stats.printTime;
59
     elapsed.toString(buffer);
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
     STATIC_ITEM("> ", false, false, buffer);                                                       // > 99y 364d 23h 59m 59s
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
     elapsed = stats.longestPrint;
69
     elapsed = stats.longestPrint;
65
     elapsed.toString(buffer);
70
     elapsed.toString(buffer);
66
-
67
-    STATIC_ITEM(MSG_INFO_PRINT_LONGEST ":", false, false);                                         // Longest job time:
68
     STATIC_ITEM("> ", false, false, buffer);                                                       // > 99y 364d 23h 59m 59s
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
     sprintf_P(buffer, PSTR("%ld.%im"), long(stats.filamentUsed / 1000), int16_t(stats.filamentUsed / 100) % 10);
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
     STATIC_ITEM("> ", false, false, buffer);                                                       // > 125m
75
     STATIC_ITEM("> ", false, false, buffer);                                                       // > 125m
73
 
76
 
74
     #if SERVICE_INTERVAL_1 > 0
77
     #if SERVICE_INTERVAL_1 > 0
77
       STATIC_ITEM(SERVICE_NAME_1 MSG_SERVICE_IN, false, false);                                    // Service X in:
80
       STATIC_ITEM(SERVICE_NAME_1 MSG_SERVICE_IN, false, false);                                    // Service X in:
78
       STATIC_ITEM("> ", false, false, buffer);                                                     // > 7d 12h 11m 10s
81
       STATIC_ITEM("> ", false, false, buffer);                                                     // > 7d 12h 11m 10s
79
     #endif
82
     #endif
83
+
80
     #if SERVICE_INTERVAL_2 > 0
84
     #if SERVICE_INTERVAL_2 > 0
81
       elapsed = stats.nextService2;
85
       elapsed = stats.nextService2;
82
       elapsed.toString(buffer);
86
       elapsed.toString(buffer);
83
       STATIC_ITEM(SERVICE_NAME_2 MSG_SERVICE_IN, false, false);
87
       STATIC_ITEM(SERVICE_NAME_2 MSG_SERVICE_IN, false, false);
84
       STATIC_ITEM("> ", false, false, buffer);
88
       STATIC_ITEM("> ", false, false, buffer);
85
     #endif
89
     #endif
90
+
86
     #if SERVICE_INTERVAL_3 > 0
91
     #if SERVICE_INTERVAL_3 > 0
87
       elapsed = stats.nextService3;
92
       elapsed = stats.nextService3;
88
       elapsed.toString(buffer);
93
       elapsed.toString(buffer);
104
       true
109
       true
105
     #endif
110
     #endif
106
   );
111
   );
112
+
113
+  char buffer[21];  // for STATIC_PAIR_P
114
+
107
   START_SCREEN();
115
   START_SCREEN();
108
   #if EXTRUDERS
116
   #if EXTRUDERS
109
     #define THERMISTOR_ID TEMP_SENSOR_0
117
     #define THERMISTOR_ID TEMP_SENSOR_0
110
     #include "../thermistornames.h"
118
     #include "../thermistornames.h"
111
     STATIC_ITEM("T0: " THERMISTOR_NAME, false, true);
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
   #endif
122
   #endif
115
 
123
 
116
   #if TEMP_SENSOR_1 != 0
124
   #if TEMP_SENSOR_1 != 0
118
     #define THERMISTOR_ID TEMP_SENSOR_1
126
     #define THERMISTOR_ID TEMP_SENSOR_1
119
     #include "../thermistornames.h"
127
     #include "../thermistornames.h"
120
     STATIC_ITEM("T1: " THERMISTOR_NAME, false, true);
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
   #endif
131
   #endif
124
 
132
 
125
   #if TEMP_SENSOR_2 != 0
133
   #if TEMP_SENSOR_2 != 0
127
     #define THERMISTOR_ID TEMP_SENSOR_2
135
     #define THERMISTOR_ID TEMP_SENSOR_2
128
     #include "../thermistornames.h"
136
     #include "../thermistornames.h"
129
     STATIC_ITEM("T2: " THERMISTOR_NAME, false, true);
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
   #endif
140
   #endif
133
 
141
 
134
   #if TEMP_SENSOR_3 != 0
142
   #if TEMP_SENSOR_3 != 0
136
     #define THERMISTOR_ID TEMP_SENSOR_3
144
     #define THERMISTOR_ID TEMP_SENSOR_3
137
     #include "../thermistornames.h"
145
     #include "../thermistornames.h"
138
     STATIC_ITEM("T3: " THERMISTOR_NAME, false, true);
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
   #endif
149
   #endif
142
 
150
 
143
   #if TEMP_SENSOR_4 != 0
151
   #if TEMP_SENSOR_4 != 0
145
     #define THERMISTOR_ID TEMP_SENSOR_4
153
     #define THERMISTOR_ID TEMP_SENSOR_4
146
     #include "../thermistornames.h"
154
     #include "../thermistornames.h"
147
     STATIC_ITEM("T4: " THERMISTOR_NAME, false, true);
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
   #endif
158
   #endif
151
 
159
 
152
   #if TEMP_SENSOR_5 != 0
160
   #if TEMP_SENSOR_5 != 0
154
     #define THERMISTOR_ID TEMP_SENSOR_5
162
     #define THERMISTOR_ID TEMP_SENSOR_5
155
     #include "../thermistornames.h"
163
     #include "../thermistornames.h"
156
     STATIC_ITEM("T5: " THERMISTOR_NAME, false, true);
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
   #endif
167
   #endif
160
 
168
 
161
   #if HAS_HEATED_BED
169
   #if HAS_HEATED_BED
163
     #define THERMISTOR_ID TEMP_SENSOR_BED
171
     #define THERMISTOR_ID TEMP_SENSOR_BED
164
     #include "../thermistornames.h"
172
     #include "../thermistornames.h"
165
     STATIC_ITEM("TBed:" THERMISTOR_NAME, false, true);
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
   #endif
176
   #endif
169
   END_SCREEN();
177
   END_SCREEN();
170
 }
178
 }
178
       true
186
       true
179
     #endif
187
     #endif
180
   );
188
   );
189
+
190
+  char buffer[21];  // for STATIC_PAIR_P
191
+
181
   START_SCREEN();
192
   START_SCREEN();
182
   STATIC_ITEM(BOARD_INFO_NAME, true, true);                       // MyPrinterController
193
   STATIC_ITEM(BOARD_INFO_NAME, true, true);                       // MyPrinterController
183
   #ifdef BOARD_WEBSITE_URL
194
   #ifdef BOARD_WEBSITE_URL
184
     STATIC_ITEM(BOARD_WEBSITE_URL, false, false);                 // www.my3dprinter.com
195
     STATIC_ITEM(BOARD_WEBSITE_URL, false, false);                 // www.my3dprinter.com
185
   #endif
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
   END_SCREEN();
200
   END_SCREEN();
190
 }
201
 }
191
 
202
 

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

82
 #if ENABLED(SD_MENU_CONFIRM_START)
82
 #if ENABLED(SD_MENU_CONFIRM_START)
83
 
83
 
84
   void menu_sd_confirm() {
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
     do_select_screen(
89
     do_select_screen(
86
       PSTR(MSG_BUTTON_PRINT), PSTR(MSG_BUTTON_CANCEL),
90
       PSTR(MSG_BUTTON_PRINT), PSTR(MSG_BUTTON_CANCEL),
87
       sdcard_start_selected_file, ui.goto_previous_screen,
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
     SERIAL_EOL();
373
     SERIAL_EOL();
374
 
374
 
375
     #if HAS_SPI_LCD
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
     #endif
377
     #endif
378
 
378
 
379
     #if BOTH(SD_ABORT_ON_ENDSTOP_HIT, SDSUPPORT)
379
     #if BOTH(SD_ABORT_ON_ENDSTOP_HIT, SDSUPPORT)

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

2933
   #if HOTENDS && HAS_DISPLAY
2933
   #if HOTENDS && HAS_DISPLAY
2934
     void Temperature::set_heating_message(const uint8_t e) {
2934
     void Temperature::set_heating_message(const uint8_t e) {
2935
       const bool heating = isHeatingHotend(e);
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
   #endif
2945
   #endif
2943
 
2946
 

Loading…
Cancel
Save