Revision: 1448
http://geeqie.svn.sourceforge.net/geeqie/?rev=1448&view=rev
Author: nadvornik
Date: 2009-03-01 11:59:32 +0000 (Sun, 01 Mar 2009)
Log Message:
-----------
do not use separate list of entries, rely on vbox
Modified Paths:
--------------
trunk/src/bar_exif.c
Modified: trunk/src/bar_exif.c
===================================================================
--- trunk/src/bar_exif.c 2009-03-01 00:10:00 UTC (rev 1447)
+++ trunk/src/bar_exif.c 2009-03-01 11:59:32 UTC (rev 1448)
@@ -26,12 +26,6 @@
#include <math.h>
-ExifUI ExifUIList[]={
- { 0, 0, EXIF_UI_OFF, NULL}
-};
-
-
-
/*
*-------------------------------------------------------------------
* EXIF widget
@@ -61,10 +55,9 @@
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)
{
@@ -94,6 +87,7 @@
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);
@@ -112,8 +106,7 @@
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)
@@ -125,9 +118,12 @@
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))
{
@@ -150,7 +146,7 @@
static void bar_pane_exif_update(PaneExifData *ped)
{
- GList *work;
+ GList *list, *work;
#if 0
ExifData *exif;
@@ -172,15 +168,16 @@
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)
@@ -196,8 +193,11 @@
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);
@@ -210,7 +210,7 @@
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;
@@ -222,14 +222,17 @@
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");
}
@@ -249,7 +252,6 @@
{
PaneExifData *ped = data;
- g_list_free(ped->entries);
g_object_unref(ped->size_group);
file_data_unref(ped->fd);
g_free(ped);
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Geeqie-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geeqie-svn