#include <math.h>
-ExifUI ExifUIList[]={
- { 0, 0, EXIF_UI_OFF, NULL}
-};
-
-
-
/*
*-------------------------------------------------------------------
* EXIF widget
GtkSizeGroup *size_group;
FileData *fd;
- GList *entries;
};
-static void bar_pane_exif_update_entry(PaneExifData *ped, ExifEntry *ee, gboolean update_title);
+static void bar_pane_exif_update_entry(PaneExifData *ped, GtkWidget *entry, gboolean update_title);
static void bar_pane_exif_entry_destroy(GtkWidget *widget, gpointer data)
{
ee->if_set = if_set;
ee->hbox = gtk_hbox_new(FALSE, 0);
+ g_object_set_data(G_OBJECT(ee->hbox), "entry_data", ee);
g_signal_connect_after(G_OBJECT(ee->hbox), "destroy",
G_CALLBACK(bar_pane_exif_entry_destroy), ee);
gtk_widget_show(ee->value_label);
gtk_box_pack_start(GTK_BOX(ped->vbox), ee->hbox, TRUE, TRUE, 0);
- ped->entries = g_list_append(ped->entries, ee);
- bar_pane_exif_update_entry(ped, ee, TRUE);
+ bar_pane_exif_update_entry(ped, ee->hbox, TRUE);
}
static void bar_pane_exif_entry_update_title(ExifEntry *ee)
g_free(markup);
}
-static void bar_pane_exif_update_entry(PaneExifData *ped, ExifEntry *ee, gboolean update_title)
+static void bar_pane_exif_update_entry(PaneExifData *ped, GtkWidget *entry, gboolean update_title)
{
- gchar *text = metadata_read_string(ped->fd, ee->key, METADATA_FORMATTED);
+ gchar *text;
+ ExifEntry *ee = g_object_get_data(G_OBJECT(entry), "entry_data");
+ if (!ee) return;
+ text = metadata_read_string(ped->fd, ee->key, METADATA_FORMATTED);
if (ee->if_set && (!text || !*text))
{
static void bar_pane_exif_update(PaneExifData *ped)
{
- GList *work;
+ GList *list, *work;
#if 0
ExifData *exif;
bar_pane_exif_sensitive(ped, TRUE);
#endif
-
- work = ped->entries;
+ list = gtk_container_get_children(GTK_CONTAINER(ped->vbox));
+ work = list;
while (work)
{
- ExifEntry *ee = work->data;
+ GtkWidget *entry = work->data;
work = work->next;
- bar_pane_exif_update_entry(ped, ee, FALSE);
+ bar_pane_exif_update_entry(ped, entry, FALSE);
}
+ g_list_free(list);
}
void bar_pane_exif_set_fd(GtkWidget *widget, FileData *fd)
bar_pane_exif_update(ped);
}
-static void bar_pane_exif_entry_write_config(ExifEntry *ee, GString *outstr, gint indent)
+static void bar_pane_exif_entry_write_config(GtkWidget *entry, GString *outstr, gint indent)
{
+ ExifEntry *ee = g_object_get_data(G_OBJECT(entry), "entry_data");
+ if (!ee) return;
+
WRITE_STRING("<entry\n");
indent++;
WRITE_CHAR(*ee, key);
static void bar_pane_exif_write_config(GtkWidget *pane, GString *outstr, gint indent)
{
PaneExifData *ped;
- GList *work;
+ GList *work, *list;
ped = g_object_get_data(G_OBJECT(pane), "pane_data");
if (!ped) return;
indent--;
WRITE_STRING(">\n");
indent++;
- work = ped->entries;
+
+ list = gtk_container_get_children(GTK_CONTAINER(ped->vbox));
+ work = list;
while (work)
{
- ExifEntry *ee = work->data;
+ GtkWidget *entry = work->data;
work = work->next;
- bar_pane_exif_entry_write_config(ee, outstr, indent);
+ bar_pane_exif_entry_write_config(entry, outstr, indent);
}
+ g_list_free(list);
indent--;
WRITE_STRING("</pane_exif>\n");
}
{
PaneExifData *ped = data;
- g_list_free(ped->entries);
g_object_unref(ped->size_group);
file_data_unref(ped->fd);
g_free(ped);