comparison src/bar_exif.c @ 645:b50deb0f9968

Rename bar_exif_validate_text() to utf8_validate_or_convert() and move it to main.[ch].
author zas_
date Mon, 12 May 2008 23:21:35 +0000
parents d062f6b5711a
children 2c9184126cf9
comparison
equal deleted inserted replaced
644:d062f6b5711a 645:b50deb0f9968
139 EXIF_ADVCOL_ELEMENTS, 139 EXIF_ADVCOL_ELEMENTS,
140 EXIF_ADVCOL_DESCRIPTION, 140 EXIF_ADVCOL_DESCRIPTION,
141 EXIF_ADVCOL_COUNT 141 EXIF_ADVCOL_COUNT
142 }; 142 };
143 143
144 gchar *bar_exif_validate_text(gchar *text)
145 {
146 gint len;
147
148 if (!text) return NULL;
149
150 len = strlen(text);
151 if (!g_utf8_validate(text, len, NULL))
152 {
153 gchar *conv_text;
154
155 conv_text = g_convert(text, len, "UTF-8", "ISO-8859-1", NULL, NULL, NULL);
156 g_free(text);
157 text = conv_text;
158 }
159
160 return text;
161 }
162
163 static void bar_exif_sensitive(ExifBar *eb, gint enable) 144 static void bar_exif_sensitive(ExifBar *eb, gint enable)
164 { 145 {
165 gtk_widget_set_sensitive(eb->table, enable); 146 gtk_widget_set_sensitive(eb->table, enable);
166 if (eb->advanced_scrolled) gtk_widget_set_sensitive(eb->advanced_scrolled, enable); 147 if (eb->advanced_scrolled) gtk_widget_set_sensitive(eb->advanced_scrolled, enable);
167 } 148 }
207 gtk_widget_hide(eb->labels[i]); 188 gtk_widget_hide(eb->labels[i]);
208 gtk_widget_hide(eb->keys[i]); 189 gtk_widget_hide(eb->keys[i]);
209 continue; 190 continue;
210 } 191 }
211 text = exif_get_data_as_text(exif, ExifUIList[i].key); 192 text = exif_get_data_as_text(exif, ExifUIList[i].key);
212 text = bar_exif_validate_text(text); 193 text = utf8_validate_or_convert(text);
213 if (ExifUIList[i].current == EXIF_UI_IFSET 194 if (ExifUIList[i].current == EXIF_UI_IFSET
214 && (!text || !*text)) 195 && (!text || !*text))
215 { 196 {
216 gtk_widget_hide(eb->labels[i]); 197 gtk_widget_hide(eb->labels[i]);
217 gtk_widget_hide(eb->keys[i]); 198 gtk_widget_hide(eb->keys[i]);
241 222
242 name = list->data; 223 name = list->data;
243 list = list->prev; 224 list = list->prev;
244 225
245 text = exif_get_data_as_text(exif, name); 226 text = exif_get_data_as_text(exif, name);
246 text = bar_exif_validate_text(text); 227 text = utf8_validate_or_convert(text);
247 228
248 buf = g_strconcat(name, ":", NULL); 229 buf = g_strconcat(name, ":", NULL);
249 gtk_label_set_text(GTK_LABEL(eb->custom_name[i]), buf); 230 gtk_label_set_text(GTK_LABEL(eb->custom_name[i]), buf);
250 g_free(buf); 231 g_free(buf);
251 gtk_label_set_text(GTK_LABEL(eb->custom_value[i]), text); 232 gtk_label_set_text(GTK_LABEL(eb->custom_value[i]), text);
285 266
286 tag = g_strdup_printf("0x%04x", exif_item_get_tag_id(item)); 267 tag = g_strdup_printf("0x%04x", exif_item_get_tag_id(item));
287 tag_name = exif_item_get_tag_name(item); 268 tag_name = exif_item_get_tag_name(item);
288 format = exif_item_get_format_name(item, TRUE); 269 format = exif_item_get_format_name(item, TRUE);
289 text = exif_item_get_data_as_text(item); 270 text = exif_item_get_data_as_text(item);
290 text = bar_exif_validate_text(text); 271 text = utf8_validate_or_convert(text);
291 elements = g_strdup_printf("%d", exif_item_get_elements(item)); 272 elements = g_strdup_printf("%d", exif_item_get_elements(item));
292 description = exif_item_get_description(item); 273 description = exif_item_get_description(item);
293 if (!description) description = g_strdup(""); 274 if (!description) description = g_strdup("");
294 description = bar_exif_validate_text(description); 275 description = utf8_validate_or_convert(description);
295 gtk_list_store_append(store, &iter); 276 gtk_list_store_append(store, &iter);
296 gtk_list_store_set(store, &iter, 277 gtk_list_store_set(store, &iter,
297 EXIF_ADVCOL_ENABLED, bar_exif_row_enabled(tag_name), 278 EXIF_ADVCOL_ENABLED, bar_exif_row_enabled(tag_name),
298 EXIF_ADVCOL_TAG, tag, 279 EXIF_ADVCOL_TAG, tag,
299 EXIF_ADVCOL_NAME, tag_name, 280 EXIF_ADVCOL_NAME, tag_name,