Mercurial > geeqie.yaz
comparison src/bar_exif.c @ 1309:55ea4962887a
config file format changed to XML
save and restore all layout windows
save and restore sidebar configuration
author | nadvornik |
---|---|
date | Sun, 22 Feb 2009 15:35:37 +0000 |
parents | 48e064b37ba6 |
children | 8cca18bce950 |
comparison
equal
deleted
inserted
replaced
1308:2320339ca8be | 1309:55ea4962887a |
---|---|
19 #include "filedata.h" | 19 #include "filedata.h" |
20 #include "history_list.h" | 20 #include "history_list.h" |
21 #include "misc.h" | 21 #include "misc.h" |
22 #include "ui_misc.h" | 22 #include "ui_misc.h" |
23 #include "bar.h" | 23 #include "bar.h" |
24 #include "rcfile.h" | |
24 | 25 |
25 | 26 |
26 #include <math.h> | 27 #include <math.h> |
27 | 28 |
28 ExifUI ExifUIList[]={ | 29 ExifUI ExifUIList[]={ |
279 | 280 |
280 bar_pane_exif_clear(ped); | 281 bar_pane_exif_clear(ped); |
281 bar_pane_exif_update(ped); | 282 bar_pane_exif_update(ped); |
282 } | 283 } |
283 | 284 |
285 static void bar_pane_exif_write_config(GtkWidget *pane, GString *outstr, gint indent) | |
286 { | |
287 PaneExifData *ped; | |
288 | |
289 ped = g_object_get_data(G_OBJECT(pane), "pane_data"); | |
290 if (!ped) return; | |
291 | |
292 write_indent(outstr, indent); | |
293 g_string_append_printf(outstr, "<pane_exif\n"); | |
294 indent++; | |
295 WRITE_CHAR(*ped, pane.title); | |
296 WRITE_BOOL(*ped, pane.expanded); | |
297 indent--; | |
298 write_indent(outstr, indent); | |
299 g_string_append_printf(outstr, "/>\n"); | |
300 } | |
301 | |
302 | |
284 static void bar_pane_exif_remove_advanced_cb(GtkWidget *widget, gpointer data) | 303 static void bar_pane_exif_remove_advanced_cb(GtkWidget *widget, gpointer data) |
285 { | 304 { |
286 PaneExifData *ped = data; | 305 PaneExifData *ped = data; |
287 const gchar *key; | 306 const gchar *key; |
288 | 307 |
315 g_free(ped->labels); | 334 g_free(ped->labels); |
316 file_data_unref(ped->fd); | 335 file_data_unref(ped->fd); |
317 g_free(ped); | 336 g_free(ped); |
318 } | 337 } |
319 | 338 |
320 GtkWidget *bar_pane_exif_new(const gchar *title) | 339 GtkWidget *bar_pane_exif_new(const gchar *title, gboolean expanded) |
321 { | 340 { |
322 PaneExifData *ped; | 341 PaneExifData *ped; |
323 GtkWidget *table; | 342 GtkWidget *table; |
324 GtkWidget *viewport; | 343 GtkWidget *viewport; |
325 GtkWidget *hbox; | 344 GtkWidget *hbox; |
330 ; | 349 ; |
331 | 350 |
332 ped = g_new0(PaneExifData, 1); | 351 ped = g_new0(PaneExifData, 1); |
333 | 352 |
334 ped->pane.pane_set_fd = bar_pane_exif_set_fd; | 353 ped->pane.pane_set_fd = bar_pane_exif_set_fd; |
354 ped->pane.pane_write_config = bar_pane_exif_write_config; | |
335 ped->pane.title = g_strdup(title); | 355 ped->pane.title = g_strdup(title); |
356 ped->pane.expanded = expanded; | |
336 | 357 |
337 ped->keys = g_new0(GtkWidget *, exif_len); | 358 ped->keys = g_new0(GtkWidget *, exif_len); |
338 ped->labels = g_new0(GtkWidget *, exif_len); | 359 ped->labels = g_new0(GtkWidget *, exif_len); |
339 | 360 |
340 ped->vbox = gtk_vbox_new(FALSE, PREF_PAD_GAP); | 361 ped->vbox = gtk_vbox_new(FALSE, PREF_PAD_GAP); |
393 | 414 |
394 gtk_widget_show(ped->vbox); | 415 gtk_widget_show(ped->vbox); |
395 | 416 |
396 return ped->vbox; | 417 return ped->vbox; |
397 } | 418 } |
419 | |
420 GtkWidget *bar_pane_exif_new_from_config(const gchar **attribute_names, const gchar **attribute_values) | |
421 { | |
422 gchar *title = g_strdup(_("NoName")); | |
423 gboolean expanded = TRUE; | |
424 | |
425 while (*attribute_names) | |
426 { | |
427 const gchar *option = *attribute_names++; | |
428 const gchar *value = *attribute_values++; | |
429 | |
430 READ_CHAR_FULL("pane.title", title); | |
431 READ_BOOL_FULL("pane.expanded", expanded); | |
432 | |
433 | |
434 DEBUG_1("unknown attribute %s = %s", option, value); | |
435 } | |
436 | |
437 return bar_pane_exif_new(title, expanded); | |
438 } | |
439 | |
440 | |
398 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */ | 441 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */ |