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

Reply via email to