[Goodies-commits] r5805 - xfbib/branches/gobject/src

David Gustafsson tssj at xfce.org
Sat Oct 25 22:21:42 CEST 2008


Author: tssj
Date: 2008-10-25 20:21:42 +0000 (Sat, 25 Oct 2008)
New Revision: 5805

Modified:
   xfbib/branches/gobject/src/xfbib-bibtex-field.h
   xfbib/branches/gobject/src/xfbib-bibtex-string.h
   xfbib/branches/gobject/src/xfbib-bibtex.c
   xfbib/branches/gobject/src/xfbib-bibtex.h
   xfbib/branches/gobject/src/xfbib-entry-edit-dialog.c
   xfbib/branches/gobject/src/xfbib-file-io.c
   xfbib/branches/gobject/src/xfbib-list-store.c
   xfbib/branches/gobject/src/xfbib-list-store.h
   xfbib/branches/gobject/src/xfbib-menu-bar.c
   xfbib/branches/gobject/src/xfbib-tree-view.c
Log:
Making XfbibBibtex and XfbibListStore more generic.


Modified: xfbib/branches/gobject/src/xfbib-bibtex-field.h
===================================================================
--- xfbib/branches/gobject/src/xfbib-bibtex-field.h	2008-10-25 15:58:35 UTC (rev 5804)
+++ xfbib/branches/gobject/src/xfbib-bibtex-field.h	2008-10-25 20:21:42 UTC (rev 5805)
@@ -33,33 +33,33 @@
 G_BEGIN_DECLS
 
 enum {
-	XFBIB_FIELD_ADDRESS,
-	XFBIB_FIELD_ANNOTE,
-	XFBIB_FIELD_AUTHOR,
-	XFBIB_FIELD_BOOKTITLE,
-	XFBIB_FIELD_CHAPTER,
-	XFBIB_FIELD_CROSSREF,
-	XFBIB_FIELD_EDITION,
-	XFBIB_FIELD_EDITOR,
-	XFBIB_FIELD_EPRINT,
-	XFBIB_FIELD_HOWPUBLISHED,
-	XFBIB_FIELD_INSTITUTION,
-	XFBIB_FIELD_JOURNAL,
-	XFBIB_FIELD_KEY,
-	XFBIB_FIELD_MONTH,
-	XFBIB_FIELD_NOTE,
-	XFBIB_FIELD_NUMBER,
-	XFBIB_FIELD_ORGANIZATION,
-	XFBIB_FIELD_PAGES,
-	XFBIB_FIELD_PUBLISHER,
-	XFBIB_FIELD_SCHOOL,
-	XFBIB_FIELD_SERIES,
-	XFBIB_FIELD_TITLE,
-	XFBIB_FIELD_TYPE,
-	XFBIB_FIELD_URL,
-	XFBIB_FIELD_VOLUME,
-	XFBIB_FIELD_YEAR,
-	XFBIB_FIELD_N_FIELDS,
+	XFBIB_BIBTEX_FIELD_ADDRESS = 0,
+	XFBIB_BIBTEX_FIELD_ANNOTE,
+	XFBIB_BIBTEX_FIELD_AUTHOR,
+	XFBIB_BIBTEX_FIELD_BOOKTITLE,
+	XFBIB_BIBTEX_FIELD_CHAPTER,
+	XFBIB_BIBTEX_FIELD_CROSSREF,
+	XFBIB_BIBTEX_FIELD_EDITION,
+	XFBIB_BIBTEX_FIELD_EDITOR,
+	XFBIB_BIBTEX_FIELD_EPRINT,
+	XFBIB_BIBTEX_FIELD_HOWPUBLISHED,
+	XFBIB_BIBTEX_FIELD_INSTITUTION,
+	XFBIB_BIBTEX_FIELD_JOURNAL,
+	XFBIB_BIBTEX_FIELD_KEY,
+	XFBIB_BIBTEX_FIELD_MONTH,
+	XFBIB_BIBTEX_FIELD_NOTE,
+	XFBIB_BIBTEX_FIELD_NUMBER,
+	XFBIB_BIBTEX_FIELD_ORGANIZATION,
+	XFBIB_BIBTEX_FIELD_PAGES,
+	XFBIB_BIBTEX_FIELD_PUBLISHER,
+	XFBIB_BIBTEX_FIELD_SCHOOL,
+	XFBIB_BIBTEX_FIELD_SERIES,
+	XFBIB_BIBTEX_FIELD_TITLE,
+	XFBIB_BIBTEX_FIELD_TYPE,
+	XFBIB_BIBTEX_FIELD_URL,
+	XFBIB_BIBTEX_FIELD_VOLUME,
+	XFBIB_BIBTEX_FIELD_YEAR,
+	XFBIB_BIBTEX_FIELD_N_FIELDS,
 };
 
 static struct {

Modified: xfbib/branches/gobject/src/xfbib-bibtex-string.h
===================================================================
--- xfbib/branches/gobject/src/xfbib-bibtex-string.h	2008-10-25 15:58:35 UTC (rev 5804)
+++ xfbib/branches/gobject/src/xfbib-bibtex-string.h	2008-10-25 20:21:42 UTC (rev 5805)
@@ -32,6 +32,12 @@
 
 G_BEGIN_DECLS
 
+enum {
+	XFBIB_BIBTEX_STRING_VARIABLE = 0,
+	XFBIB_BIBTEX_STRING_VALUE,
+	XFBIB_BIBTEX_STRING_N_STRINGS,
+};
+
 typedef struct _XfbibBibtexString         XfbibBibtexString;
 
 GType xfbib_bibtex_string_get_type() G_GNUC_CONST;

Modified: xfbib/branches/gobject/src/xfbib-bibtex.c
===================================================================
--- xfbib/branches/gobject/src/xfbib-bibtex.c	2008-10-25 15:58:35 UTC (rev 5804)
+++ xfbib/branches/gobject/src/xfbib-bibtex.c	2008-10-25 20:21:42 UTC (rev 5805)
@@ -22,6 +22,7 @@
 {
 	GObject parent;
 	gint n_entries;
+	gint n_strings;
 #if G_SEQUENCE
 	GSequence *seq;
 #else
@@ -57,6 +58,7 @@
 	instance->list = NULL;
 #endif
 	instance->n_entries = 0;
+	instance->n_strings = 0;
 
 }
 
@@ -184,6 +186,7 @@
 				if (parse_balanced_brackets(buf, str, &i)) {
 					obj = G_OBJECT(xfbib_bibtex_string_new());
 					if (xfbib_bibtex_string_parse(XFBIB_BIBTEX_STRING(obj), buf->str)) {
+						elements->n_strings++;
 #if G_SEQUENCE
 						g_sequence_append(elements->seq, obj);
 #else
@@ -234,43 +237,53 @@
 }
 
 gint
-xfbib_bibtex_get_n_entries(XfbibBibtex *elements)
+xfbib_bibtex_get_n(XfbibBibtex *elements, enum XFBIB_BIBTEX_TYPE type)
 {
 	g_return_val_if_fail(XFBIB_IS_BIBTEX(elements), 0);
-	return elements->n_entries;
+	if (type == TYPE_ENTRY)
+		return elements->n_entries;
+	else if (type == TYPE_STRING)
+		return elements->n_strings;
+	return 0;
 }
 
-
-XfbibBibtexEntry *
-xfbib_bibtex_get_nth_entry(XfbibBibtex *elements, gint n)
+GObject *
+xfbib_bibtex_get_nth(XfbibBibtex *elements, gint n, enum XFBIB_BIBTEX_TYPE type)
 {
-	GObject *obj;
+	GObject *tmp;
 	gint found;
-	g_return_val_if_fail(XFBIB_IS_BIBTEX(elements)
-			&& n < elements->n_entries, NULL);
+	g_return_val_if_fail(XFBIB_IS_BIBTEX(elements) && 
+			((type == TYPE_ENTRY && n < elements->n_entries) ||
+			(type == TYPE_STRING && n < elements->n_strings)), NULL);
 
-
 #if G_SEQUENCE
 	GSequenceIter *iter;
 	for (iter = g_sequence_get_begin_iter(elements->seq), found = -1;
 			!g_sequence_iter_is_end(iter); iter = g_sequence_iter_next(iter)) {
-		obj = g_sequence_get(iter);
-		if (XFBIB_IS_BIBTEX_ENTRY(obj)) {
+		tmp = g_sequence_get(iter);
+		if (type == TYPE_ENTRY && XFBIB_IS_BIBTEX_ENTRY(tmp)) {
 			if (++found == n) {
-				return XFBIB_BIBTEX_ENTRY(obj);
+				return tmp;
 			}
+		} else if (type == TYPE_STRING && XFBIB_IS_BIBTEX_STRING(tmp)) {
+			if (++found == n) {
+				return tmp;
+			}
 		}
 	}
-	if (g_sequence_iter_is_end(iter))
 #else
 	gint i, len;
 	len = g_list_length(elements->list);
 	for (i = 0, found = -1; i < len; i++) {
-		obj = g_list_nth_data(elements->list, i);
-		if (XFBIB_IS_BIBTEX_ENTRY(obj)) {
+		tmp = g_list_nth_data(elements->list, i);
+		if (type == TYPE_ENTRY && XFBIB_IS_BIBTEX_ENTRY(tmp)) {
 			if (++found == n) {
-				return XFBIB_BIBTEX_ENTRY(obj);
+				return tmp;
 			}
+		} else if (type == TYPE_STRING && XFBIB_IS_BIBTEX_STRING(tmp)) {
+			if (++found == n) {
+				return tmp;
+			}
 		}
 	}
 #endif
@@ -279,9 +292,9 @@
 
 
 gint
-xfbib_bibtex_get_entry_position(XfbibBibtex *elements, XfbibBibtexEntry *entry)
+xfbib_bibtex_get_position(XfbibBibtex *elements, GObject *obj)
 {
-	GObject *obj;
+	GObject *tmp;
 	gint n;
 	g_return_val_if_fail(XFBIB_IS_BIBTEX(elements), -1);
 
@@ -289,47 +302,59 @@
 	GSequenceIter *iter;
 	for (iter = g_sequence_get_begin_iter(elements->seq), n = -1;
 			!g_sequence_iter_is_end(iter); iter = g_sequence_iter_next(iter)) {
-		obj = g_sequence_get(iter);
-		if (XFBIB_IS_BIBTEX_ENTRY(obj)) {
+		tmp = g_sequence_get(iter);
+		if (XFBIB_IS_BIBTEX_ENTRY(obj) && XFBIB_IS_BIBTEX_ENTRY(tmp)) {
 			n++;
-			if (XFBIB_BIBTEX_ENTRY(obj) == entry) {
+			if (G_OBJECT(tmp) == obj) {
 				return n;
 			}
+		} else if (XFBIB_IS_BIBTEX_STRING(obj) && XFBIB_IS_BIBTEX_STRING(tmp)) {
+			n++;
+			if (G_OBJECT(tmp) == obj) {
+				return n;
+			}
 		}
 	}
 #else
 	gint i, len;
 	len = g_list_length(elements->list);
 	for (i = 0, n = -1; i < len; i++) {
-		obj = g_list_nth_data(elements->list, i);
-		if (XFBIB_IS_BIBTEX_ENTRY(obj)) {
+		tmp = g_list_nth_data(elements->list, i);
+		if (XFBIB_IS_BIBTEX_ENTRY(obj) && XFBIB_IS_BIBTEX_ENTRY(tmp)) {
 			n++;
-			if (XFBIB_BIBTEX_ENTRY(obj) == entry) {
+			if (G_OBJECT(tmp) == obj) {
 				return n;
 			}
+		} else if (XFBIB_IS_BIBTEX_STRING(obj) && XFBIB_IS_BIBTEX_STRING(tmp)) {
+			n++;
+			if (G_OBJECT(tmp) == obj) {
+				return n;
+			}
 		}
 	}
 #endif
 	return -1;
 }
 
-XfbibBibtexEntry *
-xfbib_bibtex_get_next_entry(XfbibBibtex *elements, XfbibBibtexEntry *entry)
+GObject *
+xfbib_bibtex_get_next(XfbibBibtex *elements, GObject *obj)
 {
-	GObject *obj;
+	GObject *tmp;
 	g_return_val_if_fail(XFBIB_IS_BIBTEX(elements), NULL);
 
 #if G_SEQUENCE
 	GSequenceIter *iter;
 	for (iter = g_sequence_get_begin_iter(elements->seq);
 			!g_sequence_iter_is_end(iter); iter = g_sequence_iter_next(iter)) {
-		obj = g_sequence_get(iter);
-		if (obj == G_OBJECT(entry)) {
+		tmp = g_sequence_get(iter);
+		if (tmp == obj) {
 			for (iter = g_sequence_iter_next(iter); !g_sequence_iter_is_end(iter);
 					iter = g_sequence_iter_next(iter)) {
-				obj = g_sequence_get(iter);
-				if (XFBIB_IS_BIBTEX_ENTRY(obj)) {
-					return XFBIB_BIBTEX_ENTRY(obj);
+				tmp = g_sequence_get(iter);
+				if (XFBIB_IS_BIBTEX_ENTRY(obj) && XFBIB_IS_BIBTEX_ENTRY(tmp)) {
+					return tmp;
+				} else if (XFBIB_IS_BIBTEX_STRING(obj) && XFBIB_IS_BIBTEX_STRING(tmp)) {
+					return tmp;
 				}
 			}
 		}
@@ -338,12 +363,14 @@
 	gint i, len;
 	len = g_list_length(elements->list);
 	for (i = 0; i < len; i++) {
-		obj = g_list_nth_data(elements->list, i);
-		if (obj == G_OBJECT(entry)) {
+		tmp = g_list_nth_data(elements->list, i);
+		if (tmp == obj) {
 			for (i++; i < len; i++) {
-				obj = g_list_nth_data(elements->list, i);
-				if (XFBIB_IS_BIBTEX_ENTRY(obj)) {
-					return XFBIB_BIBTEX_ENTRY(obj);
+				tmp = g_list_nth_data(elements->list, i);
+				if (XFBIB_IS_BIBTEX_ENTRY(obj) && XFBIB_IS_BIBTEX_ENTRY(tmp)) {
+					return tmp;
+				} else if (XFBIB_IS_BIBTEX_STRING(obj) && XFBIB_IS_BIBTEX_STRING(tmp)) {
+					return tmp;
 				}
 			}
 		}
@@ -365,6 +392,8 @@
 		if ((obj = g_sequence_get(iter)) == data) {
 			if(XFBIB_IS_BIBTEX_ENTRY(obj))
 				elements->n_entries--;
+			else if(XFBIB_IS_BIBTEX_STRING(obj))
+				elements->n_strings--;
 			g_sequence_remove(iter);
 		}
 	}
@@ -375,6 +404,8 @@
 		if ((obj = g_list_nth_data(elements->list, i)) == data) {
 			if(XFBIB_IS_BIBTEX_ENTRY(obj))
 				elements->n_entries--;
+			else if(XFBIB_IS_BIBTEX_STRINGS(obj))
+				elements->n_strings--;
 			elements->list = g_list_remove(elements->list, obj);
 			g_object_unref(obj);
 		}
@@ -395,44 +426,53 @@
 	g_list_free (elements->list);
 	elements->list = NULL;
 #endif
+	elements->n_strings = 0;
 	elements->n_entries = 0;
 }
 
 void
-xfbib_bibtex_add_entry(XfbibBibtex *elements, XfbibBibtexEntry *entry)
+xfbib_bibtex_add(XfbibBibtex *elements, GObject *obj)
 {
 	g_return_if_fail(XFBIB_IS_BIBTEX(elements));
-	g_return_if_fail(XFBIB_IS_BIBTEX_ENTRY(entry));
+	g_return_if_fail(XFBIB_IS_BIBTEX_ENTRY(obj) || XFBIB_IS_BIBTEX_STRING(obj));
 
 #if G_SEQUENCE
-	g_sequence_append(elements->seq, G_OBJECT(entry));
+	g_sequence_append(elements->seq, G_OBJECT(obj));
 #else
-	elements->list = g_list_append(elements->list, G_OBJECT(entry));
+	elements->list = g_list_append(elements->list, G_OBJECT(obj));
 #endif
-	elements->n_entries++;
+	if (XFBIB_IS_BIBTEX_ENTRY(obj))
+		elements->n_entries++;
+	else if (XFBIB_IS_BIBTEX_STRING(obj))
+		elements->n_strings++;
 }
 
 /*
  * Return the position of the new entry, counting from 0
  */
 gint
-xfbib_bibtex_replace_entry(XfbibBibtex *elements, XfbibBibtexEntry *old_entry, XfbibBibtexEntry *new_entry)
+xfbib_bibtex_replace(XfbibBibtex *elements, GObject *old_obj, GObject *new_obj)
 {
 	GObject *obj;
 	gint n = 0;
-	g_return_val_if_fail(XFBIB_IS_BIBTEX(elements), -1);
-	g_return_val_if_fail(XFBIB_IS_BIBTEX_ENTRY(old_entry) && XFBIB_IS_BIBTEX_ENTRY(new_entry), -1);
+	g_return_val_if_fail(XFBIB_IS_BIBTEX(elements) &&
+			(XFBIB_IS_BIBTEX_ENTRY(old_obj) && 
+			XFBIB_IS_BIBTEX_ENTRY(new_obj)) ||
+			(XFBIB_IS_BIBTEX_STRING(old_obj) && 
+			XFBIB_IS_BIBTEX_STRING(new_obj)), -1);
 
 #if G_SEQUENCE
 	GSequenceIter *iter;
 	for (iter = g_sequence_get_begin_iter(elements->seq);
 			!g_sequence_iter_is_end(iter); iter = g_sequence_iter_next(iter)) {
 		obj = g_sequence_get(iter);
-		if (XFBIB_IS_BIBTEX_ENTRY(obj))
+		if (XFBIB_IS_BIBTEX_ENTRY(old_obj) && XFBIB_IS_BIBTEX_ENTRY(obj))
 			n++;
+		else if (XFBIB_IS_BIBTEX_STRING(old_obj) && XFBIB_IS_BIBTEX_STRING(obj))
+			n++;
 
-		if (obj == G_OBJECT(old_entry)) {
-			g_sequence_insert_before(iter, new_entry);
+		if (obj == old_obj) {
+			g_sequence_insert_before(iter, new_obj);
 			g_sequence_remove(iter);
 			return n;
 		}
@@ -442,11 +482,13 @@
 	len = g_list_length(elements->list);
 	for (i = 0; i < len; i++) {
 		obj = g_list_nth(elements->list, i);
-		if (XFBIB_IS_BIBTEX_ENTRY(obj->data))
+		if (XFBIB_IS_BIBTEX_ENTRY(old_obj) && XFBIB_IS_BIBTEX_ENTRY(obj))
 			n++;
+		else if (XFBIB_IS_BIBTEX_STRING(old_obj) && XFBIB_IS_BIBTEX_STRING(obj))		
+			n++;
 
-		if (obj->data == G_OBJECT(old_entry)) {
-			elements->list = g_list_insert_before(elements->list, obj, new_entry);
+		if (obj->data == old_obj) {
+			elements->list = g_list_insert_before(elements->list, obj, new_obj);
 			elements->list = g_list_remove(elements->list, obj);
 			return n;
 		}

Modified: xfbib/branches/gobject/src/xfbib-bibtex.h
===================================================================
--- xfbib/branches/gobject/src/xfbib-bibtex.h	2008-10-25 15:58:35 UTC (rev 5804)
+++ xfbib/branches/gobject/src/xfbib-bibtex.h	2008-10-25 20:21:42 UTC (rev 5805)
@@ -2,7 +2,7 @@
 #define __XFBIB_BIBTEX_H
 
 #include <glib-object.h>
-#include <xfbib-bibtex-entry.h>
+#include "xfbib-bibtex-entry.h"
 
 #define XFBIB_TYPE_BIBTEX             (xfbib_bibtex_get_type())
 #define XFBIB_BIBTEX(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj), XFBIB_TYPE_BIBTEX, XfbibBibtex))
@@ -13,6 +13,12 @@
 
 G_BEGIN_DECLS
 
+
+enum XFBIB_BIBTEX_TYPE {
+	TYPE_ENTRY,
+	TYPE_STRING,
+};
+
 typedef struct _XfbibBibtex         XfbibBibtex;
 
 GType xfbib_bibtex_get_type() G_GNUC_CONST;
@@ -20,14 +26,14 @@
 XfbibBibtex *xfbib_bibtex_new();
 gboolean xfbib_bibtex_parse(XfbibBibtex *, const gchar *);
 void xfbib_bibtex_foreach(XfbibBibtex *, GFunc, gpointer);
-gint xfbib_bibtex_get_n_entries(XfbibBibtex *);
-XfbibBibtexEntry *xfbib_bibtex_get_nth_entry(XfbibBibtex *, gint);
-gint xfbib_bibtex_get_entry_position(XfbibBibtex *, XfbibBibtexEntry *);
-XfbibBibtexEntry *xfbib_bibtex_get_next_entry(XfbibBibtex *, XfbibBibtexEntry *);
+gint xfbib_bibtex_get_n(XfbibBibtex *, enum XFBIB_BIBTEX_TYPE);
+GObject *xfbib_bibtex_get_nth(XfbibBibtex *, gint, enum XFBIB_BIBTEX_TYPE);
+gint xfbib_bibtex_get_position(XfbibBibtex *, GObject *);
+GObject *xfbib_bibtex_get_next(XfbibBibtex *, GObject *);
 void xfbib_bibtex_remove(XfbibBibtex *, GObject *);
 void xfbib_bibtex_remove_all(XfbibBibtex *);
-void xfbib_bibtex_add_entry(XfbibBibtex *, XfbibBibtexEntry *);
-gint xfbib_bibtex_replace_entry(XfbibBibtex *, XfbibBibtexEntry *, XfbibBibtexEntry *);
+void xfbib_bibtex_add(XfbibBibtex *, GObject *);
+gint xfbib_bibtex_replace(XfbibBibtex *, GObject *, GObject *);
 
 G_END_DECLS
 

Modified: xfbib/branches/gobject/src/xfbib-entry-edit-dialog.c
===================================================================
--- xfbib/branches/gobject/src/xfbib-entry-edit-dialog.c	2008-10-25 15:58:35 UTC (rev 5804)
+++ xfbib/branches/gobject/src/xfbib-entry-edit-dialog.c	2008-10-25 20:21:42 UTC (rev 5805)
@@ -58,9 +58,9 @@
 	GtkWidget *key_label;
 	GtkWidget *key_entry;
 	GtkWidget *key_button;
-	GtkWidget *inputs_label[XFBIB_FIELD_N_FIELDS];	/* Label and NULL objects */
-	GtkWidget *inputs[XFBIB_FIELD_N_FIELDS];	/* Entry and multiple inputs */
-	GtkWidget *inputs_button[XFBIB_FIELD_N_FIELDS];
+	GtkWidget *inputs_label[XFBIB_BIBTEX_FIELD_N_FIELDS];	/* Label and NULL objects */
+	GtkWidget *inputs[XFBIB_BIBTEX_FIELD_N_FIELDS];	/* Entry and multiple inputs */
+	GtkWidget *inputs_button[XFBIB_BIBTEX_FIELD_N_FIELDS];
 	GtkWidget *note_boxes[5];
 	GtkWidget *notebook;
 };
@@ -89,15 +89,15 @@
 	char *tmp;
 	str = g_string_new("");
 
-	lastname = xfbib_multiple_input_get_nth_row_ith_column(XFBIB_MULTIPLE_INPUT (XFBIB_ENTRY_EDIT_DIALOG (user_data)->inputs[XFBIB_FIELD_AUTHOR]),0,0);
+	lastname = xfbib_multiple_input_get_nth_row_ith_column(XFBIB_MULTIPLE_INPUT (XFBIB_ENTRY_EDIT_DIALOG (user_data)->inputs[XFBIB_BIBTEX_FIELD_AUTHOR]),0,0);
 	if(lastname != NULL) {
 		tmp = strrchr(lastname, ' ') + 1;
 		g_string_append(str, tmp);
 	}
 
-	g_string_append(str, (gtk_entry_get_text(GTK_ENTRY (XFBIB_ENTRY_EDIT_DIALOG (user_data)->inputs[XFBIB_FIELD_YEAR])) + 2));
+	g_string_append(str, (gtk_entry_get_text(GTK_ENTRY (XFBIB_ENTRY_EDIT_DIALOG (user_data)->inputs[XFBIB_BIBTEX_FIELD_YEAR])) + 2));
 
-	title = gtk_entry_get_text(GTK_ENTRY (XFBIB_ENTRY_EDIT_DIALOG (user_data)->inputs[XFBIB_FIELD_TITLE]));
+	title = gtk_entry_get_text(GTK_ENTRY (XFBIB_ENTRY_EDIT_DIALOG (user_data)->inputs[XFBIB_BIBTEX_FIELD_TITLE]));
 	split = g_strsplit(title, " ", 2);
 	title = split[0];
 	g_string_append(str, title);
@@ -251,9 +251,9 @@
 		gtk_container_set_border_width(GTK_CONTAINER (instance->note_boxes[i]), 6);
 	}
 
-	for (i = 0; i < XFBIB_FIELD_N_FIELDS; i++) {
+	for (i = 0; i < XFBIB_BIBTEX_FIELD_N_FIELDS; i++) {
 		/* Create the Input object */
-		if (i == XFBIB_FIELD_AUTHOR || i == XFBIB_FIELD_EDITOR) {
+		if (i == XFBIB_BIBTEX_FIELD_AUTHOR || i == XFBIB_BIBTEX_FIELD_EDITOR) {
 			instance->inputs[i] = xfbib_multiple_input_new(xfbib_bibtex_field_constants[i].label, xfbib_bibtex_field_constants[i].tooltip);
 		} else {
 			instance->inputs_label[i] = gtk_label_new(xfbib_bibtex_field_constants[i].label);
@@ -269,44 +269,44 @@
 
 		/* Add the input object to the correct box */
 		switch (i) {
-			case XFBIB_FIELD_INSTITUTION:
-			case XFBIB_FIELD_ORGANIZATION:
-			case XFBIB_FIELD_SCHOOL:
-			case XFBIB_FIELD_TITLE:
-			case XFBIB_FIELD_TYPE:
+			case XFBIB_BIBTEX_FIELD_INSTITUTION:
+			case XFBIB_BIBTEX_FIELD_ORGANIZATION:
+			case XFBIB_BIBTEX_FIELD_SCHOOL:
+			case XFBIB_BIBTEX_FIELD_TITLE:
+			case XFBIB_BIBTEX_FIELD_TYPE:
 				box = 0;
 				break;
-			case XFBIB_FIELD_AUTHOR:
-			case XFBIB_FIELD_EDITOR:
+			case XFBIB_BIBTEX_FIELD_AUTHOR:
+			case XFBIB_BIBTEX_FIELD_EDITOR:
 				box = 1;
 				break;
-			case XFBIB_FIELD_BOOKTITLE:
-			case XFBIB_FIELD_CHAPTER:
-			case XFBIB_FIELD_EDITION:
-			case XFBIB_FIELD_MONTH:
-			case XFBIB_FIELD_NUMBER:
-			case XFBIB_FIELD_PAGES:
-			case XFBIB_FIELD_VOLUME:
-			case XFBIB_FIELD_YEAR:
+			case XFBIB_BIBTEX_FIELD_BOOKTITLE:
+			case XFBIB_BIBTEX_FIELD_CHAPTER:
+			case XFBIB_BIBTEX_FIELD_EDITION:
+			case XFBIB_BIBTEX_FIELD_MONTH:
+			case XFBIB_BIBTEX_FIELD_NUMBER:
+			case XFBIB_BIBTEX_FIELD_PAGES:
+			case XFBIB_BIBTEX_FIELD_VOLUME:
+			case XFBIB_BIBTEX_FIELD_YEAR:
 				box = 2;
 				break;
-			case XFBIB_FIELD_ADDRESS:
-			case XFBIB_FIELD_HOWPUBLISHED:
-			case XFBIB_FIELD_JOURNAL:
-			case XFBIB_FIELD_PUBLISHER:
-			case XFBIB_FIELD_SERIES:
+			case XFBIB_BIBTEX_FIELD_ADDRESS:
+			case XFBIB_BIBTEX_FIELD_HOWPUBLISHED:
+			case XFBIB_BIBTEX_FIELD_JOURNAL:
+			case XFBIB_BIBTEX_FIELD_PUBLISHER:
+			case XFBIB_BIBTEX_FIELD_SERIES:
 				box = 3;
 				break;
-			case XFBIB_FIELD_ANNOTE:
-			case XFBIB_FIELD_CROSSREF:
-			case XFBIB_FIELD_EPRINT:
-			case XFBIB_FIELD_KEY:
-			case XFBIB_FIELD_NOTE:
-			case XFBIB_FIELD_URL:
+			case XFBIB_BIBTEX_FIELD_ANNOTE:
+			case XFBIB_BIBTEX_FIELD_CROSSREF:
+			case XFBIB_BIBTEX_FIELD_EPRINT:
+			case XFBIB_BIBTEX_FIELD_KEY:
+			case XFBIB_BIBTEX_FIELD_NOTE:
+			case XFBIB_BIBTEX_FIELD_URL:
 				box = 4;
 				break;
 		}
-		if (i == XFBIB_FIELD_AUTHOR || i == XFBIB_FIELD_EDITOR) {
+		if (i == XFBIB_BIBTEX_FIELD_AUTHOR || i == XFBIB_BIBTEX_FIELD_EDITOR) {
 			gtk_table_attach_defaults(GTK_TABLE(instance->note_boxes[box]), instance->inputs[i], row[box], row[box]+1, 0, 1);
 		} else {
 			gtk_table_attach(GTK_TABLE(instance->note_boxes[box]), instance->inputs_label[i], 0, 1, row[box], row[box]+1, GTK_FILL, GTK_FILL, 0, 0);
@@ -370,7 +370,7 @@
 
 		gtk_entry_set_text(GTK_ENTRY (entry_edit_dialog->key_entry), xfbib_bibtex_entry_get_key(entry));
 
-		for (n = 0; n < XFBIB_FIELD_N_FIELDS; n++) {
+		for (n = 0; n < XFBIB_BIBTEX_FIELD_N_FIELDS; n++) {
 
 			list = xfbib_bibtex_entry_get_fields(entry);
 
@@ -389,7 +389,7 @@
 			}
 			if (g_list_length(xfbib_bibtex_value_get(value)) == 1) {
 				/* Single value */
-				if (n == XFBIB_FIELD_AUTHOR || n == XFBIB_FIELD_EDITOR) {
+				if (n == XFBIB_BIBTEX_FIELD_AUTHOR || n == XFBIB_BIBTEX_FIELD_EDITOR) {
 					xfbib_multiple_input_set_text (XFBIB_MULTIPLE_INPUT (entry_edit_dialog->inputs[n]),
 							xfbib_bibtex_value_get_str(value));
 				} else {
@@ -400,7 +400,7 @@
 				gtk_widget_set_sensitive(entry_edit_dialog->inputs[n], FALSE);
 				gtk_entry_set_invisible_char(entry, ' ');
 				gtk_entry_set_visibility(entry, FALSE);
-				if (n == XFBIB_FIELD_AUTHOR || n == XFBIB_FIELD_EDITOR) {
+				if (n == XFBIB_BIBTEX_FIELD_AUTHOR || n == XFBIB_BIBTEX_FIELD_EDITOR) {
 					xfbib_multiple_input_set(XFBIB_MULTIPLE_INPUT(entry_edit_dialog->inputs[n]),
 							xfbib_bibtex_value_get(value));
 				} else {
@@ -428,8 +428,8 @@
 	entry = xfbib_bibtex_entry_new();
 	xfbib_bibtex_entry_set_key(entry, gtk_entry_get_text(GTK_ENTRY(entry_edit_dialog->key_entry)));
 	xfbib_bibtex_entry_set_bibtype(entry, gtk_combo_box_get_active_text(GTK_COMBO_BOX(entry_edit_dialog->type_combo_box)));
-	for (n = 0; n < XFBIB_FIELD_N_FIELDS; n++) {
-		if (n == XFBIB_FIELD_AUTHOR || n == XFBIB_FIELD_EDITOR) {
+	for (n = 0; n < XFBIB_BIBTEX_FIELD_N_FIELDS; n++) {
+		if (n == XFBIB_BIBTEX_FIELD_AUTHOR || n == XFBIB_BIBTEX_FIELD_EDITOR) {
 			str = xfbib_multiple_input_get_str(XFBIB_MULTIPLE_INPUT(entry_edit_dialog->inputs[n]));
 			if(str == NULL) {
 				field = xfbib_bibtex_field_new();

Modified: xfbib/branches/gobject/src/xfbib-file-io.c
===================================================================
--- xfbib/branches/gobject/src/xfbib-file-io.c	2008-10-25 15:58:35 UTC (rev 5804)
+++ xfbib/branches/gobject/src/xfbib-file-io.c	2008-10-25 20:21:42 UTC (rev 5805)
@@ -53,10 +53,10 @@
 {
 	XfbibState *state;
 	XfbibBibtex *elements;
-	GtkTreeModel *list_store;
+	GtkTreeModel *list_store_entries;
 	gchar *contents, *name;
 	gsize length;
-	gint i, ret, n;
+	gint i, ret, n_entries, n_strings;
 	GError *err = NULL;
 	GtkWidget *dialog, *window;
 	GtkFileFilter *filter;
@@ -65,7 +65,7 @@
 
 	window = xfbib_state_get_window(state);
 	elements = xfbib_state_get_bibtex_elements(state);
-	list_store = gtk_tree_view_get_model(GTK_TREE_VIEW(xfbib_window_get_tree_view(XFBIB_WINDOW(window))));
+	list_store_entries = gtk_tree_view_get_model(GTK_TREE_VIEW(xfbib_window_get_tree_view(XFBIB_WINDOW(window))));
 	
 	name = filename;
 
@@ -82,7 +82,7 @@
 		gtk_file_filter_add_pattern(filter, "*.bib");
 		gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter);
 		if ((ret = gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK)) {
-			xfbib_list_store_clear(XFBIB_LIST_STORE(list_store));
+			xfbib_list_store_clear(XFBIB_LIST_STORE(list_store_entries));
 			name = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
 		} else {
 			gtk_widget_destroy(dialog);
@@ -97,11 +97,16 @@
 		g_error_free(err);
 		return NULL;
 	} else {
-		n = xfbib_bibtex_get_n_entries(elements);
+		n_entries = xfbib_bibtex_get_n(elements, TYPE_ENTRY);
+		n_strings = xfbib_bibtex_get_n(elements, TYPE_STRING);
 		/* Parse the file and update the tree view */
 		if (xfbib_bibtex_parse(elements, contents)) {
-			for (i = n; i < xfbib_bibtex_get_n_entries(elements); i++)
-				xfbib_list_store_row_inserted(XFBIB_LIST_STORE(list_store), i);
+			for (i = n_entries; i < xfbib_bibtex_get_n(elements, TYPE_ENTRY); i++)
+				xfbib_list_store_row_inserted(XFBIB_LIST_STORE(list_store_entries), i);
+			/* TODO: Update the string tree_view */
+/*			for (i = n_entries; i < xfbib_bibtex_get_n(elements, TYPE_ENTRY); i++)
+				xfbib_list_store_row_inserted(XFBIB_LIST_STORE(list_store_entries), i);
+*/
 		}
 	}
 	

Modified: xfbib/branches/gobject/src/xfbib-list-store.c
===================================================================
--- xfbib/branches/gobject/src/xfbib-list-store.c	2008-10-25 15:58:35 UTC (rev 5804)
+++ xfbib/branches/gobject/src/xfbib-list-store.c	2008-10-25 20:21:42 UTC (rev 5805)
@@ -32,17 +32,13 @@
 #include "xfbib-bibtex-preamble.h"
 #include "xfbib-bibtex-string.h"
 
-enum {
-	TYPE_ENTRY,
-};
 
-
 struct _XfbibListStore
 {
 	GtkListStore parent;
 	XfbibState *state;
 	gint stamp;
-	gint type;
+	enum XFBIB_BIBTEX_TYPE type;
 };
 
 typedef struct _XfbibListStoreClass
@@ -137,7 +133,6 @@
 {
 	instance->stamp = g_random_int();
 	instance->state = xfbib_state_new();
-	instance->type = TYPE_ENTRY;
 }
 
 static void
@@ -163,7 +158,9 @@
 
 	switch (list_store->type) {
 		case TYPE_ENTRY:
-			return XFBIB_FIELD_N_FIELDS;
+			return XFBIB_BIBTEX_FIELD_N_FIELDS;
+		case TYPE_STRING:
+			return XFBIB_BIBTEX_STRING_N_STRINGS;
 		default:
 			return 0;
 	}
@@ -178,10 +175,13 @@
 	list_store = XFBIB_LIST_STORE(tree_model);
 	switch (list_store->type) {
 		case TYPE_ENTRY:
-			if (index >= XFBIB_FIELD_N_FIELDS) {
+			if (index >= XFBIB_BIBTEX_FIELD_N_FIELDS)
 				return G_TYPE_INVALID;
-			}
 			return G_TYPE_STRING;
+		case TYPE_STRING:
+			if (index >= XFBIB_BIBTEX_STRING_N_STRINGS)
+				return G_TYPE_INVALID;
+			return G_TYPE_STRING;
 		default:
 			return G_TYPE_INVALID;
 	}
@@ -203,11 +203,12 @@
 
 	switch (list_store->type) {
 		case TYPE_ENTRY:
-			if (n >= xfbib_bibtex_get_n_entries(elements))
+		case TYPE_STRING:
+			if (n >= xfbib_bibtex_get_n(elements, list_store->type))
 				return FALSE;
 
 			iter->stamp = list_store->stamp;
-			iter->user_data = xfbib_bibtex_get_nth_entry(elements, n);
+			iter->user_data = xfbib_bibtex_get_nth(elements, n, list_store->type);
 			break;
 		default:
 			return FALSE;
@@ -233,11 +234,12 @@
 
 	switch (list_store->type) {
 		case TYPE_ENTRY:
-			if ((n = xfbib_bibtex_get_entry_position(elements,
+		case TYPE_STRING:
+			if ((n = xfbib_bibtex_get_position(elements,
 							iter->user_data)) == -1) {
 				return NULL;
 			}
-		break;
+			break;
 		default:
 			return NULL;
 	}
@@ -268,7 +270,7 @@
 
 	switch (list_store->type) {
 		case TYPE_ENTRY:
-			g_return_if_fail(column < XFBIB_FIELD_N_FIELDS
+			g_return_if_fail(column < XFBIB_BIBTEX_FIELD_N_FIELDS
 					 && XFBIB_IS_BIBTEX_ENTRY(iter->user_data));
 
 
@@ -287,15 +289,12 @@
 				return;
 			}
 
-#if 0
-			field = xfbib_bibtex_entry_get_field_by_column(XFBIB_BIBTEX_ENTRY(iter->user_data), column);
-
-			if (field == NULL)
-				return;
-#endif			
 			tmp = xfbib_bibtex_value_get_str(xfbib_bibtex_field_get_value(field));
 			g_value_set_string(value, (tmp == NULL) ? "" : tmp);
 			break;
+		case TYPE_STRING:
+			g_value_set_string(value, "TODO");
+			break;
 		default:
 			return;
 	}
@@ -306,7 +305,7 @@
 {
 	XfbibListStore *list_store;
 	XfbibBibtex *elements;
-	XfbibBibtexEntry *next;
+	GObject *next;
 
 	g_return_val_if_fail(XFBIB_IS_LIST_STORE(tree_model), FALSE);
 
@@ -320,7 +319,8 @@
 
 	switch (list_store->type) {
 		case TYPE_ENTRY:
-			if ((next = xfbib_bibtex_get_next_entry(elements, iter->user_data)) == NULL) {
+		case TYPE_STRING:
+			if ((next = xfbib_bibtex_get_next(elements, iter->user_data)) == NULL) {
 				iter->stamp = 0;
 				return FALSE;
 			}
@@ -350,11 +350,12 @@
 
 	switch (list_store->type) {
 		case TYPE_ENTRY:
-			if (xfbib_bibtex_get_n_entries(elements) == 0)
+		case TYPE_STRING:
+			if (xfbib_bibtex_get_n(elements, list_store->type) == 0)
 				return FALSE;
 
 			iter->stamp = list_store->stamp;
-			if ((iter->user_data = xfbib_bibtex_get_nth_entry(elements, 0)) == NULL)
+			if ((iter->user_data = xfbib_bibtex_get_nth(elements, 0, list_store->type)) == NULL)
 				return FALSE;
 			break;
 		default:
@@ -382,8 +383,9 @@
 
 	switch (list_store->type) {
 		case TYPE_ENTRY:
+		case TYPE_STRING:
 			if (iter == NULL)
-				return xfbib_bibtex_get_n_entries(elements);
+				return xfbib_bibtex_get_n(elements, list_store->type);
 			break;
 		default:
 			return -1;
@@ -408,11 +410,12 @@
 
 	switch (list_store->type) {
 		case TYPE_ENTRY:
-			if (n >= xfbib_bibtex_get_n_entries(elements))
+		case TYPE_STRING:
+			if (n >= xfbib_bibtex_get_n(elements, list_store->type))
 				return FALSE;
 
 			iter->stamp = list_store->stamp;
-			if ((iter->user_data = xfbib_bibtex_get_nth_entry(elements, n)) == NULL)
+			if ((iter->user_data = xfbib_bibtex_get_nth(elements, n, list_store->type)) == NULL)
 				return FALSE;
 			break;
 		default:
@@ -428,59 +431,15 @@
 }
 
 XfbibListStore *
-xfbib_list_store_new()
+xfbib_list_store_new(enum XFBIB_BIBTEX_TYPE type)
 {
 	XfbibListStore *list_store;
 	list_store = g_object_new(XFBIB_TYPE_LIST_STORE, NULL);
+	list_store->type = type;
 	return list_store;
 }
 
-#if 0
-/**
- * gtk_list_store_remove:
- * @list_store: A #GtkListStore
- * @iter: A valid #GtkTreeIter
- *
- * Removes the given row from the list store.  After being removed,
- * @iter is set to be the next valid row, or invalidated if it pointed
- * to the last row in @list_store.
- *
- * Return value: %TRUE if @iter is valid, %FALSE if not.
- **/
-gboolean
-gtk_list_store_remove (GtkListStore *list_store,
-		       GtkTreeIter  *iter)
-{
-	GtkTreePath *path;
-	GSequenceIter *ptr, *next;
 
-	g_return_val_if_fail (GTK_IS_LIST_STORE (list_store), FALSE);
-	g_return_val_if_fail (VALID_ITER (iter, list_store), FALSE);
-
-	path = gtk_list_store_get_path (GTK_TREE_MODEL (list_store), iter);
-
-	ptr = iter->user_data;
-	next = g_sequence_iter_next (ptr);
-
-	_gtk_tree_data_list_free (g_sequence_get (ptr), list_store->column_headers);
-	g_sequence_remove (iter->user_data);
-
-	list_store->length--;
-
-	gtk_tree_model_row_deleted (GTK_TREE_MODEL (list_store), path);
-	gtk_tree_path_free (path);
-
-	if (g_sequence_iter_is_end (next)) {
-		iter->stamp = 0;
-		return FALSE;
-	} else {
-		iter->stamp = list_store->stamp;
-		iter->user_data = next;
-		return TRUE;
-	}
-}
-#endif
-
 gboolean
 xfbib_list_store_remove(XfbibListStore *list_store, GtkTreeIter *iter)
 {
@@ -516,31 +475,7 @@
 }
 
 
-#if 0
-/**
- * gtk_list_store_clear:
- * @list_store: a #GtkListStore.
- *
- * Removes all rows from the list store.
- *
- **/
 void
-gtk_list_store_clear (GtkListStore *list_store)
-{
-  GtkTreeIter iter;
-  g_return_if_fail (GTK_IS_LIST_STORE (list_store));
-
-  while (g_sequence_get_length (list_store->seq) > 0)
-    {
-      iter.stamp = list_store->stamp;
-      iter.user_data = g_sequence_get_begin_iter (list_store->seq);
-      gtk_list_store_remove (list_store, &iter);
-    }
-
-  gtk_list_store_increment_stamp (list_store);
-}
-#endif
-void
 xfbib_list_store_clear(XfbibListStore *list_store)
 {
 	XfbibBibtex *elements;
@@ -549,9 +484,9 @@
 
 	elements = xfbib_state_get_bibtex_elements(list_store->state);
 
-	while (xfbib_bibtex_get_n_entries(elements) > 0) {
+	while (xfbib_bibtex_get_n(elements, list_store->type) > 0) {
 		iter.stamp = list_store->stamp;
-		iter.user_data = xfbib_bibtex_get_nth_entry(elements, 0);
+		iter.user_data = xfbib_bibtex_get_nth(elements, 0, list_store->type);
 		xfbib_list_store_remove(list_store, &iter);
 	}
 
@@ -596,45 +531,46 @@
 	gtk_tree_path_free(path);
 }
 
-XfbibBibtexEntry *
-xfbib_list_store_get_entry(XfbibListStore *list_store, GtkTreeIter *iter)
+GObject *
+xfbib_list_store_get(XfbibListStore *list_store, GtkTreeIter *iter)
 {
 	g_return_val_if_fail(XFBIB_IS_LIST_STORE (list_store), NULL);
 	g_return_val_if_fail(list_store->stamp == iter->stamp, NULL);
 	g_return_val_if_fail(iter->user_data != NULL, NULL);
 
-	return XFBIB_BIBTEX_ENTRY(iter->user_data);
+	return G_OBJECT(iter->user_data);
 }
 
 void
-xfbib_list_store_add_entry(XfbibListStore *list_store, XfbibBibtexEntry *entry)
+xfbib_list_store_add(XfbibListStore *list_store, GObject *obj)
 {
 	XfbibBibtex *elements;
 	gint n;
-	g_return_if_fail(XFBIB_IS_LIST_STORE(list_store));
-	g_return_if_fail(XFBIB_BIBTEX_ENTRY(entry));
+	g_return_if_fail(XFBIB_IS_LIST_STORE(list_store) &&
+			(XFBIB_BIBTEX_ENTRY(obj) ||
+			 XFBIB_BIBTEX_STRING(obj)));
 
 	elements = xfbib_state_get_bibtex_elements(list_store->state);
 
-	xfbib_bibtex_add_entry(elements, entry);
+	xfbib_bibtex_add(elements, obj);
 
-	n = xfbib_bibtex_get_n_entries(elements);
+	n = xfbib_bibtex_get_n(elements, list_store->type);
 	xfbib_list_store_row_inserted(list_store, n-1);
 }
 
 void
-xfbib_list_store_replace_entry(XfbibListStore *list_store, XfbibBibtexEntry *old_entry,
-		XfbibBibtexEntry *new_entry)
+xfbib_list_store_replace_entry(XfbibListStore *list_store, GObject *old_obj, GObject *new_obj)
 {
 	XfbibBibtex *elements;
 	gint n;
 	
-	g_return_if_fail(XFBIB_IS_LIST_STORE(list_store));
-	g_return_if_fail(XFBIB_BIBTEX_ENTRY(old_entry) && XFBIB_BIBTEX_ENTRY(new_entry));
+	g_return_if_fail(XFBIB_IS_LIST_STORE(list_store) &&
+			XFBIB_BIBTEX_ENTRY(old_obj) &&
+			XFBIB_BIBTEX_ENTRY(new_obj));
 	
 	elements = xfbib_state_get_bibtex_elements(list_store->state);
 
-	n = xfbib_bibtex_replace_entry(elements, old_entry, new_entry);
+	n = xfbib_bibtex_replace(elements, old_obj, new_obj);
 	
 	xfbib_list_store_row_changed(list_store, n);
 }

Modified: xfbib/branches/gobject/src/xfbib-list-store.h
===================================================================
--- xfbib/branches/gobject/src/xfbib-list-store.h	2008-10-25 15:58:35 UTC (rev 5804)
+++ xfbib/branches/gobject/src/xfbib-list-store.h	2008-10-25 20:21:42 UTC (rev 5805)
@@ -21,6 +21,7 @@
 #define __XFBIB_LIST_STORE_H
 
 #include <gtk/gtk.h>
+#include "xfbib-bibtex.h"
 #include "xfbib-bibtex-entry.h"
 
 #define XFBIB_TYPE_LIST_STORE             (xfbib_list_store_get_type())
@@ -36,15 +37,14 @@
 
 GType xfbib_list_store_get_type() G_GNUC_CONST;
 
-XfbibListStore *xfbib_list_store_new();
+XfbibListStore *xfbib_list_store_new(enum XFBIB_BIBTEX_TYPE);
 gboolean xfbib_list_store_remove(XfbibListStore *, GtkTreeIter  *);
 void xfbib_list_store_clear(XfbibListStore *);
 void xfbib_list_store_row_inserted(XfbibListStore *, gint);
-XfbibBibtexEntry *xfbib_list_store_get_entry(XfbibListStore *, GtkTreeIter *);
-void xfbib_list_store_add_entry(XfbibListStore *, XfbibBibtexEntry *);
-void xfbib_list_store_replace_entry(XfbibListStore *, XfbibBibtexEntry *, XfbibBibtexEntry *);
+GObject *xfbib_list_store_get(XfbibListStore *, GtkTreeIter *);
+void xfbib_list_store_add(XfbibListStore *, GObject *);
+void xfbib_list_store_replace(XfbibListStore *, GObject *, GObject *);
 
-
 G_END_DECLS
 
 #endif //__XFBIB_LIST_STORE_H

Modified: xfbib/branches/gobject/src/xfbib-menu-bar.c
===================================================================
--- xfbib/branches/gobject/src/xfbib-menu-bar.c	2008-10-25 15:58:35 UTC (rev 5804)
+++ xfbib/branches/gobject/src/xfbib-menu-bar.c	2008-10-25 20:21:42 UTC (rev 5805)
@@ -120,7 +120,7 @@
 
 	if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) {
 		new_entry = xfbib_entry_edit_dialog_get_entry(XFBIB_ENTRY_EDIT_DIALOG(dialog));
-		xfbib_list_store_add_entry(XFBIB_LIST_STORE(model), new_entry);
+		xfbib_list_store_add(XFBIB_LIST_STORE(model), G_OBJECT(new_entry));
 	}
 	gtk_widget_destroy(dialog);
 }
@@ -164,7 +164,7 @@
 	/* This will only work in single or browse selection mode! */
 	selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree_view));
 	if (gtk_tree_selection_get_selected(selection, &model, &iter)) {
-		entry = xfbib_list_store_get_entry(XFBIB_LIST_STORE(model), &iter);
+		entry = XFBIB_BIBTEX_ENTRY(xfbib_list_store_get(XFBIB_LIST_STORE(model), &iter));
 
 		dialog = xfbib_entry_edit_dialog_new(entry);
 		if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) {
@@ -350,7 +350,7 @@
 
 	/* Columns submenu */
 	/*
-	for (i = 0; i < XFBIB_FIELD_N_FIELDS; i++) {
+	for (i = 0; i < XFBIB_BIBTEX_FIELD_N_FIELDS; i++) {
 		str = g_strdup_printf("Show %s", xfbib_field_get_column_name(i));
 		item = gtk_check_menu_item_new_with_mnemonic(str);
 		g_free(str);

Modified: xfbib/branches/gobject/src/xfbib-tree-view.c
===================================================================
--- xfbib/branches/gobject/src/xfbib-tree-view.c	2008-10-25 15:58:35 UTC (rev 5804)
+++ xfbib/branches/gobject/src/xfbib-tree-view.c	2008-10-25 20:21:42 UTC (rev 5805)
@@ -92,7 +92,7 @@
 	model = gtk_tree_view_get_model(tree_view);
 
 	if (gtk_tree_model_get_iter(model, &iter, path)) {
-		entry = xfbib_list_store_get_entry(XFBIB_LIST_STORE(model), &iter);
+		entry = XFBIB_BIBTEX_ENTRY(xfbib_list_store_get(XFBIB_LIST_STORE(model), &iter));
 		dialog = xfbib_entry_edit_dialog_new(entry);
 		if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) {
 			new_entry = xfbib_entry_edit_dialog_get_entry(XFBIB_ENTRY_EDIT_DIALOG(dialog));
@@ -133,7 +133,7 @@
 
 		if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) {
 			new_entry = xfbib_entry_edit_dialog_get_entry(XFBIB_ENTRY_EDIT_DIALOG(dialog));
-			xfbib_list_store_add_entry(XFBIB_LIST_STORE(model), new_entry);
+			xfbib_list_store_add(XFBIB_LIST_STORE(model), G_OBJECT(new_entry));
 		}
 		gtk_widget_destroy(dialog);
 
@@ -190,30 +190,30 @@
 	g_signal_connect(GTK_WIDGET(instance), "button-press-event", (GCallback) cb_button_press, NULL);
 
 
-	for (i = 0; i < XFBIB_FIELD_N_FIELDS; i++) {
+	for (i = 0; i < XFBIB_BIBTEX_FIELD_N_FIELDS; i++) {
 		switch (i) {
-			case XFBIB_FIELD_ANNOTE:
-			case XFBIB_FIELD_BOOKTITLE:
-			case XFBIB_FIELD_CHAPTER:
-			case XFBIB_FIELD_CROSSREF:
-			case XFBIB_FIELD_EDITION:
-			case XFBIB_FIELD_EDITOR:
-			case XFBIB_FIELD_EPRINT:
-			case XFBIB_FIELD_HOWPUBLISHED:
-			case XFBIB_FIELD_INSTITUTION:
-			case XFBIB_FIELD_JOURNAL:
-			case XFBIB_FIELD_KEY:
-			case XFBIB_FIELD_MONTH:
-			case XFBIB_FIELD_NOTE:
-			case XFBIB_FIELD_NUMBER:
-			case XFBIB_FIELD_ORGANIZATION:
-			case XFBIB_FIELD_PAGES:
-			case XFBIB_FIELD_PUBLISHER:
-			case XFBIB_FIELD_SCHOOL:
-			case XFBIB_FIELD_SERIES:
-			case XFBIB_FIELD_TYPE:
-			case XFBIB_FIELD_URL:
-			case XFBIB_FIELD_VOLUME:
+			case XFBIB_BIBTEX_FIELD_ANNOTE:
+			case XFBIB_BIBTEX_FIELD_BOOKTITLE:
+			case XFBIB_BIBTEX_FIELD_CHAPTER:
+			case XFBIB_BIBTEX_FIELD_CROSSREF:
+			case XFBIB_BIBTEX_FIELD_EDITION:
+			case XFBIB_BIBTEX_FIELD_EDITOR:
+			case XFBIB_BIBTEX_FIELD_EPRINT:
+			case XFBIB_BIBTEX_FIELD_HOWPUBLISHED:
+			case XFBIB_BIBTEX_FIELD_INSTITUTION:
+			case XFBIB_BIBTEX_FIELD_JOURNAL:
+			case XFBIB_BIBTEX_FIELD_KEY:
+			case XFBIB_BIBTEX_FIELD_MONTH:
+			case XFBIB_BIBTEX_FIELD_NOTE:
+			case XFBIB_BIBTEX_FIELD_NUMBER:
+			case XFBIB_BIBTEX_FIELD_ORGANIZATION:
+			case XFBIB_BIBTEX_FIELD_PAGES:
+			case XFBIB_BIBTEX_FIELD_PUBLISHER:
+			case XFBIB_BIBTEX_FIELD_SCHOOL:
+			case XFBIB_BIBTEX_FIELD_SERIES:
+			case XFBIB_BIBTEX_FIELD_TYPE:
+			case XFBIB_BIBTEX_FIELD_URL:
+			case XFBIB_BIBTEX_FIELD_VOLUME:
 				continue;
 				break;
 		}
@@ -236,7 +236,7 @@
 		gtk_tree_view_column_add_attribute(column, renderer, "text", i);
 	}
 
-	model = GTK_TREE_MODEL(xfbib_list_store_new());
+	model = GTK_TREE_MODEL(xfbib_list_store_new(TYPE_ENTRY));
 	gtk_tree_view_set_model(GTK_TREE_VIEW(instance), model);
 	g_object_unref(model); /* destroy model automatically with view */
 }




More information about the Goodies-commits mailing list