Mark many strings translatable
[viking.git] / src / garminsymbols.c
blobac2802bc3f5b1b47df65fc812ecd5688db85a63d
1 /*
2 * viking -- GPS Data and Topo Analyzer, Explorer, and Manager
4 * Copyright (C) 2003-2005, Evan Battaglia <gtoevan@gmx.net>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 #include "viking.h"
23 #include "garminsymbols.h"
24 #include "icons/icons.h"
26 #include <string.h>
27 #include <stdlib.h>
29 struct {
30 gchar *sym;
31 gint num;
32 gchar *desc;
33 const GdkPixdata *data;
34 GdkPixbuf *icon;
35 } garmin_syms[] = {
36 /*---------------------------------------------------------------
37 Marine symbols
38 ---------------------------------------------------------------*/
39 { "anchor", 0, "white anchor symbol", &wp_anchor, NULL },
40 { "bell", 1, "white bell symbol", &wp_bell, NULL },
41 { "diamond_grn", 2, "green diamond symbol", &wp_diamond_grn, NULL },
42 { "diamond_red", 3, "red diamond symbol", &wp_diamond_red, NULL },
43 { "dive1", 4, "diver down flag 1", &wp_dive1, NULL },
44 { "dive2", 5, "diver down flag 2", &wp_dive2, NULL },
45 { "dollar", 6, "white dollar symbol", &wp_dollar, NULL },
46 { "fish", 7, "white fish symbol", &wp_fish, NULL },
47 { "fuel", 8, "white fuel symbol", &wp_fuel, NULL },
48 { "horn", 9, "white horn symbol", &wp_horn, NULL },
49 { "house", 10, "white house symbol", &wp_house, NULL },
50 { "knife", 11, "white knife & fork symbol", &wp_knife, NULL },
51 { "light", 12, "white light symbol", &wp_light, NULL },
52 { "mug", 13, "white mug symbol", &wp_mug, NULL },
53 { "skull", 14, "white skull and crossbones symbol", &wp_skull, NULL },
54 { "square_grn", 15, "green square symbol", &wp_square_grn, NULL },
55 { "square_red", 16, "red square symbol", &wp_square_red, NULL },
56 { "wbuoy", 17, "white buoy waypoint symbol", &wp_wbuoy, NULL },
57 { "wpt_dot", 18, "waypoint dot", &wp_wpt_dot, NULL },
58 { "wreck", 19, "white wreck symbol", &wp_wreck, NULL },
59 { "null", 20, "null symbol (transparent)", &wp_null, NULL },
60 { "mob", 21, "man overboard symbol", &wp_mob, NULL },
61 { "buoy_ambr", 22, "amber map buoy symbol", &wp_buoy_ambr, NULL },
62 { "buoy_blck", 23, "black map buoy symbol", &wp_buoy_blck, NULL },
63 { "buoy_blue", 24, "blue map buoy symbol", &wp_buoy_blue, NULL },
64 { "buoy_grn", 25, "green map buoy symbol", &wp_buoy_grn, NULL },
65 { "buoy_grn_red", 26, "green/red map buoy symbol", &wp_buoy_grn_red, NULL },
66 { "buoy_grn_wht", 27, "green/white map buoy symbol", &wp_buoy_grn_wht, NULL },
67 { "buoy_orng", 28, "orange map buoy symbol", &wp_buoy_orng, NULL },
68 { "buoy_red", 29, "red map buoy symbol", &wp_buoy_red, NULL },
69 { "buoy_red_grn", 30, "red/green map buoy symbol", &wp_buoy_red_grn, NULL },
70 { "buoy_red_wht", 31, "red/white map buoy symbol", &wp_buoy_red_wht, NULL },
71 { "buoy_violet", 32, "violet map buoy symbol", &wp_buoy_violet, NULL },
72 { "buoy_wht", 33, "white map buoy symbol", &wp_buoy_wht, NULL },
73 { "buoy_wht_grn", 34, "white/green map buoy symbol", &wp_buoy_wht_grn, NULL },
74 { "buoy_wht_red", 35, "white/red map buoy symbol", &wp_buoy_wht_red, NULL },
75 { "dot", 36, "white dot symbol", &wp_dot, NULL },
76 { "rbcn", 37, "radio beacon symbol", &wp_rbcn, NULL },
77 { "boat_ramp", 150, "boat ramp symbol", &wp_boat_ramp, NULL },
78 { "camp", 151, "campground symbol", &wp_camp, NULL },
79 { "restrooms", 152, "restrooms symbol", &wp_restroom, NULL },
80 { "showers", 153, "shower symbol", &wp_shower, NULL },
81 { "drinking_wtr", 154, "drinking water symbol", &wp_drinking_wtr, NULL },
82 { "phone", 155, "telephone symbol", &wp_phone, NULL },
83 { "1st_aid", 156, "first aid symbol", &wp_1st_aid, NULL },
84 { "info", 157, "information symbol", &wp_info, NULL },
85 { "parking", 158, "parking symbol", &wp_parking, NULL },
86 { "park", 159, "park symbol", &wp_park, NULL },
87 { "picnic", 160, "picnic symbol", &wp_picnic, NULL },
88 { "scenic", 161, "scenic area symbol", &wp_scenic, NULL },
89 { "skiing", 162, "skiing symbol", &wp_skiing, NULL },
90 { "swimming", 163, "swimming symbol", &wp_swimming, NULL },
91 { "dam", 164, "dam symbol", &wp_dam, NULL },
92 { "controlled", 165, "controlled area symbol", &wp_controlled, NULL },
93 { "danger", 166, "danger symbol", &wp_danger, NULL },
94 { "restricted", 167, "restricted area symbol", &wp_restricted, NULL },
95 { "null_2", 168, "null symbol", NULL, NULL },
96 { "ball", 169, "ball symbol", &wp_ball, NULL },
97 { "car", 170, "car symbol", &wp_car, NULL },
98 { "deer", 171, "deer symbol", &wp_deer, NULL },
99 { "shpng_cart", 172, "shopping cart symbol", NULL, NULL },
100 { "lodging", 173, "lodging symbol", NULL, NULL },
101 { "mine", 174, "mine symbol", &wp_mine, NULL },
102 { "trail_head", 175, "trail head symbol", NULL, NULL },
103 { "truck_stop", 176, "truck stop symbol", NULL, NULL },
104 { "user_exit", 177, "user exit symbol", NULL, NULL },
105 { "flag", 178, "flag symbol", &wp_flag, NULL },
106 { "circle_x", 179, "circle with x in the center", NULL, NULL },
107 { "open_24hr", 180, "open 24 hours symbol", NULL, NULL },
108 { "fhs_facility", 181, "U Fishing Hot SpotsTM Facility", NULL, NULL },
109 { "bot_cond", 182, "Bottom Conditions", NULL, NULL },
110 { "tide_pred_stn", 183, "Tide/Current Prediction Station", NULL, NULL },
111 { "anchor_prohib", 184, "U anchor prohibited symbol", NULL, NULL },
112 { "beacon", 185, "U beacon symbol", NULL, NULL },
113 { "coast_guard", 186, "U coast guard symbol", NULL, NULL },
114 { "reef", 187, "U reef symbol", NULL, NULL },
115 { "weedbed", 188, "U weedbed symbol", NULL, NULL },
116 { "dropoff", 189, "U dropoff symbol", NULL, NULL },
117 { "dock", 190, "U dock symbol", NULL, NULL },
118 { "marina", 191, "U marina symbol", NULL, NULL },
119 { "bait_tackle", 192, "U bait and tackle symbol", NULL, NULL },
120 { "stump", 193, "U stump symbol", NULL, NULL },
121 /*---------------------------------------------------------------
122 User customizable symbols
123 The values from begin_custom to end_custom inclusive are
124 reserved for the identification of user customizable symbols.
125 ---------------------------------------------------------------*/
126 { "begin_custom", 7680, "first user customizable symbol", NULL, NULL },
127 { "end_custom", 8191, "last user customizable symbol", NULL, NULL },
128 /*---------------------------------------------------------------
129 Land symbols
130 ---------------------------------------------------------------*/
131 { "is_hwy", 8192, "interstate hwy symbol", NULL, NULL },
132 { "us_hwy", 8193, "us hwy symbol", NULL, NULL },
133 { "st_hwy", 8194, "state hwy symbol", NULL, NULL },
134 { "mi_mrkr", 8195, "mile marker symbol", NULL, NULL },
135 { "trcbck", 8196, "TracBack (feet) symbol", NULL, NULL },
136 { "golf", 8197, "golf symbol", &wp_golf, NULL },
137 { "sml_cty", 8198, "small city symbol", &wp_sml_cty, NULL },
138 { "med_cty", 8199, "medium city symbol", &wp_med_cty, NULL },
139 { "lrg_cty", 8200, "large city symbol", &wp_lrg_cty, NULL },
140 { "freeway", 8201, "intl freeway hwy symbol", NULL, NULL },
141 { "ntl_hwy", 8202, "intl national hwy symbol", NULL, NULL },
142 { "cap_cty", 8203, "capitol city symbol (star)", &wp_cap_cty, NULL },
143 { "amuse_pk", 8204, "amusement park symbol", NULL, NULL },
144 { "bowling", 8205, "bowling symbol", NULL, NULL },
145 { "car_rental", 8206, "car rental symbol", NULL, NULL },
146 { "car_repair", 8207, "car repair symbol", NULL, NULL },
147 { "fastfood", 8208, "fast food symbol", NULL, NULL },
148 { "fitness", 8209, "fitness symbol", NULL, NULL },
149 { "movie", 8210, "movie symbol", NULL, NULL },
150 { "museum", 8211, "museum symbol", NULL, NULL },
151 { "pharmacy", 8212, "pharmacy symbol", NULL, NULL },
152 { "pizza", 8213, "pizza symbol", NULL, NULL },
153 { "post_ofc", 8214, "post office symbol", NULL, NULL },
154 { "rv_park", 8215, "RV park symbol", &wp_rv_park, NULL },
155 { "school", 8216, "school symbol", &wp_school, NULL },
156 { "stadium", 8217, "stadium symbol", NULL, NULL },
157 { "store", 8218, "dept. store symbol", NULL, NULL },
158 { "zoo", 8219, "zoo symbol", NULL, NULL },
159 { "gas_plus", 8220, "convenience store symbol", NULL, NULL },
160 { "faces", 8221, "live theater symbol", NULL, NULL },
161 { "ramp_int", 8222, "ramp intersection symbol", NULL, NULL },
162 { "st_int", 8223, "street intersection symbol", NULL, NULL },
163 { "weigh_sttn", 8226, "inspection/weigh station symbol", NULL, NULL },
164 { "toll_booth", 8227, "toll booth symbol", NULL, NULL },
165 { "elev_pt", 8228, "elevation point symbol", NULL, NULL },
166 { "ex_no_srvc", 8229, "exit without services symbol", NULL, NULL },
167 { "geo_place_mm", 8230, "Geographic place name, man-made", NULL, NULL },
168 { "geo_place_wtr", 8231, "Geographic place name, water", NULL, NULL },
169 { "geo_place_lnd", 8232, "Geographic place name, land", NULL, NULL },
170 { "bridge", 8233, "bridge symbol", &wp_bridge, NULL },
171 { "building", 8234, "building symbol", &wp_building, NULL },
172 { "cemetery", 8235, "cemetery symbol", &wp_cemetery, NULL },
173 { "church", 8236, "church symbol", &wp_church, NULL },
174 { "civil", 8237, "civil location symbol", NULL, NULL },
175 { "crossing", 8238, "crossing symbol", NULL, NULL },
176 { "hist_town", 8239, "historical town symbol", NULL, NULL },
177 { "levee", 8240, "levee symbol", NULL, NULL },
178 { "military", 8241, "military location symbol", &wp_military, NULL },
179 { "oil_field", 8242, "oil field symbol", NULL, NULL },
180 { "tunnel", 8243, "tunnel symbol", &wp_tunnel, NULL },
181 { "beach", 8244, "beach symbol", &wp_beach, NULL },
182 { "forest", 8245, "forest symbol", &wp_forest, NULL },
183 { "summit", 8246, "summit symbol", &wp_summit, NULL },
184 { "lrg_ramp_int", 8247, "large ramp intersection symbol", NULL, NULL },
185 { "lrg_ex_no_srvc", 8248, "large exit without services smbl", NULL, NULL },
186 { "badge", 8249, "police/official badge symbol", NULL, NULL },
187 { "cards", 8250, "gambling/casino symbol", NULL, NULL },
188 { "snowski", 8251, "snow skiing symbol", NULL, NULL },
189 { "iceskate", 8252, "ice skating symbol", NULL, NULL },
190 { "wrecker", 8253, "tow truck (wrecker) symbol", NULL, NULL },
191 { "border", 8254, "border crossing (port of entry)", NULL, NULL },
192 { "geocache", 8255, "geocache location", &wp_geocache, NULL },
193 { "geocache_fnd", 8256, "found geocache", &wp_geocache_fnd, NULL },
194 { "cntct_smiley", 8257, "Rino contact symbol, ""smiley""", NULL, NULL },
195 { "cntct_ball_cap", 8258, "Rino contact symbol, ""ball cap""", NULL, NULL },
196 { "cntct_big_ears", 8259, "Rino contact symbol, ""big ear""", NULL, NULL },
197 { "cntct_spike", 8260, "Rino contact symbol, ""spike""", NULL, NULL },
198 { "cntct_goatee", 8261, "Rino contact symbol, ""goatee""", NULL, NULL },
199 { "cntct_afro", 8262, "Rino contact symbol, ""afro""", NULL, NULL },
200 { "cntct_dreads", 8263, "Rino contact symbol, ""dreads""", NULL, NULL },
201 { "cntct_female1", 8264, "Rino contact symbol, ""female 1""", NULL, NULL },
202 { "cntct_female2", 8265, "Rino contact symbol, ""female 2""", NULL, NULL },
203 { "cntct_female3", 8266, "Rino contact symbol, ""female 3""", NULL, NULL },
204 { "cntct_ranger", 8267, "Rino contact symbol, ""ranger""", NULL, NULL },
205 { "cntct_kung_fu", 8268, "Rino contact symbol, ""kung fu""", NULL, NULL },
206 { "cntct_sumo", 8269, "Rino contact symbol, ""sumo""", NULL, NULL },
207 { "cntct_pirate", 8270, "Rino contact symbol, ""pirate""", NULL, NULL },
208 { "cntct_biker", 8271, "Rino contact symbol, ""biker""", NULL, NULL },
209 { "cntct_alien", 8272, "Rino contact symbol, ""alien""", NULL, NULL },
210 { "cntct_bug", 8273, "Rino contact symbol, ""bug""", NULL, NULL },
211 { "cntct_cat", 8274, "Rino contact symbol, ""cat""", NULL, NULL },
212 { "cntct_dog", 8275, "Rino contact symbol, ""dog""", NULL, NULL },
213 { "cntct_pig", 8276, "Rino contact symbol, ""pig""", NULL, NULL },
214 { "hydrant", 8282, "water hydrant symbol", NULL, NULL },
215 { "flag_blue", 8284, "blue flag symbol", NULL, NULL },
216 { "flag_green", 8285, "green flag symbol", NULL, NULL },
217 { "flag_red", 8286, "red flag symbol", NULL, NULL },
218 { "pin_blue", 8287, "blue pin symbol", NULL, NULL },
219 { "pin_green", 8288, "green pin symbol", NULL, NULL },
220 { "pin_red", 8289, "red pin symbol", NULL, NULL },
221 { "block_blue", 8290, "blue block symbol", NULL, NULL },
222 { "block_green", 8291, "green block symbol", NULL, NULL },
223 { "block_red", 8292, "red block symbol", NULL, NULL },
224 { "bike_trail", 8293, "bike trail symbol", NULL, NULL },
225 { "circle_red", 8294, "red circle symbol", NULL, NULL },
226 { "circle_green", 8295, "green circle symbol", NULL, NULL },
227 { "circle_blue", 8296, "blue circle symbol", NULL, NULL },
228 { "diamond_blue", 8299, "blue diamond symbol", NULL, NULL },
229 { "oval_red", 8300, "red oval symbol", NULL, NULL },
230 { "oval_green", 8301, "green oval symbol", NULL, NULL },
231 { "oval_blue", 8302, "blue oval symbol", NULL, NULL },
232 { "rect_red", 8303, "red rectangle symbol", NULL, NULL },
233 { "rect_green", 8304, "green rectangle symbol", NULL, NULL },
234 { "rect_blue", 8305, "blue rectangle symbol", NULL, NULL },
235 { "square_blue", 8308, "blue square symbol", NULL, NULL },
236 { "letter_a_red", 8309, "red letter 'A' symbol", NULL, NULL },
237 { "letter_b_red", 8310, "red letter 'B' symbol", NULL, NULL },
238 { "letter_c_red", 8311, "red letter 'C' symbol", NULL, NULL },
239 { "letter_d_red", 8312, "red letter 'D' symbol", NULL, NULL },
240 { "letter_a_green", 8313, "green letter 'A' symbol", NULL, NULL },
241 { "letter_c_green", 8314, "green letter 'C' symbol", NULL, NULL },
242 { "letter_b_green", 8315, "green letter 'B' symbol", NULL, NULL },
243 { "letter_d_green", 8316, "green letter 'D' symbol", NULL, NULL },
244 { "letter_a_blue", 8317, "blue letter 'A' symbol", NULL, NULL },
245 { "letter_b_blue", 8318, "blue letter 'B' symbol", NULL, NULL },
246 { "letter_c_blue", 8319, "blue letter 'C' symbol", NULL, NULL },
247 { "letter_d_blue", 8320, "blue letter 'D' symbol", NULL, NULL },
248 { "number_0_red", 8321, "red number '0' symbol", NULL, NULL },
249 { "number_1_red", 8322, "red number '1' symbol", NULL, NULL },
250 { "number_2_red", 8323, "red number '2' symbol", NULL, NULL },
251 { "number_3_red", 8324, "red number '3' symbol", NULL, NULL },
252 { "number_4_red", 8325, "red number '4' symbol", NULL, NULL },
253 { "number_5_red", 8326, "red number '5' symbol", NULL, NULL },
254 { "number_6_red", 8327, "red number '6' symbol", NULL, NULL },
255 { "number_7_red", 8328, "red number '7' symbol", NULL, NULL },
256 { "number_8_red", 8329, "red number '8' symbol", NULL, NULL },
257 { "number_9_red", 8330, "red number '9' symbol", NULL, NULL },
258 { "number_0_green", 8331, "green number '0' symbol", NULL, NULL },
259 { "number_1_green", 8332, "green number '1' symbol", NULL, NULL },
260 { "number_2_green", 8333, "green number '2' symbol", NULL, NULL },
261 { "number_3_green", 8334, "green number '3' symbol", NULL, NULL },
262 { "number_4_green", 8335, "green number '4' symbol", NULL, NULL },
263 { "number_5_green", 8336, "green number '5' symbol", NULL, NULL },
264 { "number_6_green", 8337, "green number '6' symbol", NULL, NULL },
265 { "number_7_green", 8338, "green number '7' symbol", NULL, NULL },
266 { "number_8_green", 8339, "green number '8' symbol", NULL, NULL },
267 { "number_9_green", 8340, "green number '9' symbol", NULL, NULL },
268 { "number_0_blue", 8341, "blue number '0' symbol", NULL, NULL },
269 { "number_1_blue", 8342, "blue number '1' symbol", NULL, NULL },
270 { "number_2_blue", 8343, "blue number '2' symbol", NULL, NULL },
271 { "number_3_blue", 8344, "blue number '3' symbol", NULL, NULL },
272 { "number_4_blue", 8345, "blue number '4' symbol", NULL, NULL },
273 { "number_5_blue", 8346, "blue number '5' symbol", NULL, NULL },
274 { "number_6_blue", 8347, "blue number '6' symbol", NULL, NULL },
275 { "number_7_blue", 8348, "blue number '7' symbol", NULL, NULL },
276 { "number_8_blue", 8349, "blue number '8' symbol", NULL, NULL },
277 { "number_9_blue", 8350, "blue number '9' symbol", NULL, NULL },
278 { "triangle_blue", 8351, "blue triangle symbol", NULL, NULL },
279 { "triangle_green", 8352, "green triangle symbol", NULL, NULL },
280 { "triangle_red", 8353, "red triangle symbol", NULL, NULL },
281 /*---------------------------------------------------------------
282 Aviation symbols
283 ---------------------------------------------------------------*/
284 { "airport", 16384, "airport symbol", &wp_airplane, NULL },
285 { "int", 16385, "intersection symbol", NULL, NULL },
286 { "ndb", 16386, "non-directional beacon symbol", NULL, NULL },
287 { "vor", 16387, "VHF omni-range symbol", NULL, NULL },
288 { "heliport", 16388, "heliport symbol", NULL, NULL },
289 { "private", 16389, "private field symbol", NULL, NULL },
290 { "soft_fld", 16390, "soft field symbol", NULL, NULL },
291 { "tall_tower", 16391, "tall tower symbol", NULL, NULL },
292 { "short_tower", 16392, "short tower symbol", NULL, NULL },
293 { "glider", 16393, "glider symbol", NULL, NULL },
294 { "ultralight", 16394, "ultralight symbol", NULL, NULL },
295 { "parachute", 16395, "parachute symbol", NULL, NULL },
296 { "vortac", 16396, "VOR/TACAN symbol", NULL, NULL },
297 { "vordme", 16397, "VOR-DME symbol", NULL, NULL },
298 { "faf", 16398, "first approach fix", NULL, NULL },
299 { "lom", 16399, "localizer outer marker", NULL, NULL },
300 { "map", 16400, "missed approach point", NULL, NULL },
301 { "tacan", 16401, "TACAN symbol", NULL, NULL },
302 { "seaplane", 16402, "Seaplane Base", NULL, NULL }
305 GHashTable *icons = NULL;
307 static void init_icons() {
308 icons = g_hash_table_new_full ( g_str_hash, g_str_equal, NULL, NULL);
309 gint i;
310 for (i=0; i<G_N_ELEMENTS(garmin_syms); i++) {
311 g_hash_table_insert(icons, garmin_syms[i].sym, (gpointer)i);
315 static GdkPixbuf *get_wp_sym_from_index ( gint i ) {
316 if ( !garmin_syms[i].icon && garmin_syms[i].data ) {
317 garmin_syms[i].icon = gdk_pixbuf_from_pixdata ( garmin_syms[i].data, FALSE, NULL );
319 return garmin_syms[i].icon;
322 GdkPixbuf *a_get_wp_sym ( const gchar *sym ) {
323 if (!sym) {
324 return NULL;
326 if (!icons) {
327 init_icons();
329 return get_wp_sym_from_index((gint)g_hash_table_lookup(icons, sym));
332 void a_populate_sym_list ( GtkListStore *list ) {
333 gint i;
334 for (i=0; i<G_N_ELEMENTS(garmin_syms); i++) {
335 if (garmin_syms[i].data) {
336 GtkTreeIter iter;
337 gtk_list_store_append(list, &iter);
338 gtk_list_store_set(list, &iter, 0, garmin_syms[i].sym, 1, get_wp_sym_from_index(i), -1);