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

David Gustafsson tssj at xfce.org
Tue Sep 23 13:50:45 CEST 2008


Author: tssj
Date: 2008-09-23 11:50:45 +0000 (Tue, 23 Sep 2008)
New Revision: 5436

Modified:
   xfbib/branches/gobject/src/Makefile.am
   xfbib/branches/gobject/src/main.c
   xfbib/branches/gobject/src/xfbib-file-io.c
   xfbib/branches/gobject/src/xfbib-file-io.h
   xfbib/branches/gobject/src/xfbib-list-store.c
   xfbib/branches/gobject/src/xfbib-tree-view.c
   xfbib/branches/gobject/src/xfbib-tree-view.h
   xfbib/branches/gobject/src/xfbib-window.c
Log:
Added a static status object to store variables in


Modified: xfbib/branches/gobject/src/Makefile.am
===================================================================
--- xfbib/branches/gobject/src/Makefile.am	2008-09-22 20:10:52 UTC (rev 5435)
+++ xfbib/branches/gobject/src/Makefile.am	2008-09-23 11:50:45 UTC (rev 5436)
@@ -28,6 +28,8 @@
 	xfbib-preamble.h \
 	xfbib-single-input.c \
 	xfbib-single-input.h \
+	xfbib-state.c \
+	xfbib-state.h \
 	xfbib-statusbar.c \
 	xfbib-statusbar.h \
 	xfbib-strbuf.c \

Modified: xfbib/branches/gobject/src/main.c
===================================================================
--- xfbib/branches/gobject/src/main.c	2008-09-22 20:10:52 UTC (rev 5435)
+++ xfbib/branches/gobject/src/main.c	2008-09-23 11:50:45 UTC (rev 5436)
@@ -24,6 +24,8 @@
 #include <stdlib.h>
 #include <gtk/gtk.h>
 
+#include "xfbib-elements.h"
+#include "xfbib-state.h"
 #include "xfbib-window.h"
 
 gboolean 
@@ -37,15 +39,24 @@
 int
 main (int argc, char **argv)
 {
+	XfbibState *state;
+	XfbibElements *elements;
 	GtkWidget *window;
 	GError *error = NULL;
 	gtk_init(&argc, &argv);
+	
+	state = xfbib_state_new();
+	
+	elements = xfbib_elements_new();
+	xfbib_state_set_bibtex_elements(state, elements);
 
 	window = xfbib_window_new();
   	gtk_window_set_title(GTK_WINDOW(window), PACKAGE_NAME);
 	
         g_signal_connect (G_OBJECT(window), "destroy",
 			G_CALLBACK(cb_window_destroy_event), NULL);
+	
+	xfbib_state_set_window(state, window);
 
 	gtk_widget_show_all(window);
 	gtk_main();

Modified: xfbib/branches/gobject/src/xfbib-file-io.c
===================================================================
--- xfbib/branches/gobject/src/xfbib-file-io.c	2008-09-22 20:10:52 UTC (rev 5435)
+++ xfbib/branches/gobject/src/xfbib-file-io.c	2008-09-23 11:50:45 UTC (rev 5436)
@@ -25,6 +25,7 @@
 
 #include "xfbib-file-io.h"
 #include "xfbib-strbuf.h"
+#include "xfbib-state.h"
 #include "xfbib-elements.h"
 #include "xfbib-window.h"
 #include "xfbib-list-store.h"
@@ -77,6 +78,7 @@
 gboolean
 xfbib_file_io_open(XfbibFileIo *file_io, XfbibWindow *window)
 {
+	XfbibState *state;
 	XfbibElements *elements;
 	GtkTreeModel *list_store;
 	gchar *contents, *name;
@@ -85,13 +87,17 @@
 	GError *err = NULL;
 	GtkTreeIter iter;
 	GtkTreePath *path;
-	GtkWidget *dialog = gtk_file_chooser_dialog_new(_("Open BibTeX file"),
-                                                    GTK_WINDOW(window),
-                                                    GTK_FILE_CHOOSER_ACTION_OPEN,
-                                                    GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-                                                    GTK_STOCK_OPEN, GTK_RESPONSE_OK,
-                                                    NULL);
+	GtkWidget *dialog;
+	
+	state = xfbib_state_new();
 
+	dialog = gtk_file_chooser_dialog_new(_("Open BibTeX file"), 
+						GTK_WINDOW(xfbib_state_get_window(state)),
+						GTK_FILE_CHOOSER_ACTION_OPEN,
+						GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+						GTK_STOCK_OPEN, GTK_RESPONSE_OK,
+						NULL);
+
 	if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK)
 	{
 		name = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
@@ -104,15 +110,23 @@
 			xfbib_strbuf_wipe(file_io->filename);
 			xfbib_strbuf_append(file_io->filename, name);
 
-			elements = xfbib_window_get_elements(window);
+			elements = xfbib_state_get_bibtex_elements(state);
 
+			list_store = gtk_tree_view_get_model(GTK_TREE_VIEW(xfbib_window_get_tree_view(window)));
+			
+			for (i = 0; i < xfbib_elements_get_size(elements); i++) {
+				path = gtk_tree_path_new();
+				gtk_tree_path_append_index(path, i);
+				gtk_tree_model_row_deleted(list_store, path);
+				gtk_tree_path_free(path);
+			}
+			
+			/* Parse the file and update the tree view */
 			if (xfbib_elements_parse(elements, contents)) {
 				for (i = 0; i < xfbib_elements_get_size(elements); i++) {
 					path = gtk_tree_path_new();
 					gtk_tree_path_append_index(path, i);
 					
-					list_store = gtk_tree_view_get_model(GTK_TREE_VIEW(xfbib_window_get_tree_view(window)));
-
 					gtk_tree_model_get_iter(list_store, &iter, path);
 
 					gtk_tree_model_row_inserted(list_store, path, &iter);
@@ -120,10 +134,24 @@
 					gtk_tree_path_free(path);
 				}
 			}
-
 		}
 	}
 	gtk_widget_destroy(dialog);
 	
 	return TRUE;
 }
+
+
+gboolean
+xfbib_file_io_save(XfbibFileIo *file_io, XfbibWindow *window)
+{
+	/* TODO: Write the function */
+	return TRUE;
+}
+
+gboolean
+xfbib_file_io_save_as(XfbibFileIo *file_io, XfbibWindow *window)
+{
+	/* TODO: Write the function */
+	return TRUE;
+}

Modified: xfbib/branches/gobject/src/xfbib-file-io.h
===================================================================
--- xfbib/branches/gobject/src/xfbib-file-io.h	2008-09-22 20:10:52 UTC (rev 5435)
+++ xfbib/branches/gobject/src/xfbib-file-io.h	2008-09-23 11:50:45 UTC (rev 5436)
@@ -38,8 +38,9 @@
 
 XfbibFileIo *xfbib_file_io_new();
 gboolean xfbib_file_io_open(XfbibFileIo *, XfbibWindow *);
+gboolean xfbib_file_io_save(XfbibFileIo *, XfbibWindow *);
+gboolean xfbib_file_io_save_as(XfbibFileIo *, XfbibWindow *);
 
 G_END_DECLS
 
 #endif //__XFBIB_FILE_IO_H
-

Modified: xfbib/branches/gobject/src/xfbib-list-store.c
===================================================================
--- xfbib/branches/gobject/src/xfbib-list-store.c	2008-09-22 20:10:52 UTC (rev 5435)
+++ xfbib/branches/gobject/src/xfbib-list-store.c	2008-09-23 11:50:45 UTC (rev 5436)
@@ -155,7 +155,7 @@
 xfbib_list_store_get_column_type (GtkTreeModel *tree_model, gint index)
 {
 	g_return_val_if_fail(XFBIB_IS_LIST_STORE(tree_model), G_TYPE_INVALID);
-	g_return_val_if_fail(index >= 0 && index < XFBIB_FIELD_N_FIELDS , G_TYPE_INVALID);
+	g_return_val_if_fail(index > -1 && index < XFBIB_FIELD_N_FIELDS , G_TYPE_INVALID);
 	
 	/* Everything is strings */
 	return G_TYPE_STRING;
@@ -228,7 +228,8 @@
 
 	tmp = iter->user_data;
 	if (XFBIB_IS_COMMENT(tmp->data)) {
-		g_printf("Comment\n");
+		//g_printf("Comment\n");
+		g_value_set_string(value, "Comment");
 
 	} else if (XFBIB_IS_ENTRY(tmp->data)) {
 		field = xfbib_entry_get_field_by_column(XFBIB_ENTRY(tmp->data), column);
@@ -236,10 +237,12 @@
 			return;
 		g_value_set_string(value, xfbib_field_get_value(field));
 	} else if (XFBIB_IS_PREAMBLE(tmp->data)) {
-		g_printf("Preamble\n");
+		//g_printf("Preamble\n");
+		g_value_set_string(value, "Preamble");
 
 	} else if (XFBIB_IS_STRING(tmp->data)) {
-		g_printf("String\n");
+		//g_printf("String\n");
+		g_value_set_string(value, "String");
 
 	}
 }
@@ -262,6 +265,7 @@
 		return FALSE;
 
 	iter->user_data = next;
+	return TRUE;
 }
 
 static gboolean 

Modified: xfbib/branches/gobject/src/xfbib-tree-view.c
===================================================================
--- xfbib/branches/gobject/src/xfbib-tree-view.c	2008-09-22 20:10:52 UTC (rev 5435)
+++ xfbib/branches/gobject/src/xfbib-tree-view.c	2008-09-23 11:50:45 UTC (rev 5436)
@@ -24,6 +24,7 @@
 
 #include "xfbib-tree-view.h"
 #include "xfbib-elements.h"
+#include "xfbib-state.h"
 #include "xfbib-entry.h"
 
 static struct {
@@ -61,7 +62,6 @@
 struct _XfbibTreeView
 {
 	GtkTreeView parent;
-	XfbibElements *elements;
 };
 
 typedef struct _XfbibTreeViewClass
@@ -111,11 +111,13 @@
 static void
 xfbib_tree_view_init(XfbibTreeView *instance)
 {
-	GtkTreeViewColumn   *column;
-	GtkCellRenderer     *renderer;
-	gint i;
-	gchar *str;
+	XfbibState *state;
+	GtkTreeViewColumn *column;
+	GtkCellRenderer *renderer;
+	GtkTreeModel *model;
 	XfbibEntry *entry;
+	gchar *str;
+	gint i;
 
 	for (i = 0; i < XFBIB_FIELD_N_FIELDS; i++) {
 		switch (i) {
@@ -163,39 +165,11 @@
 		gtk_tree_view_column_add_attribute(column, renderer, "text", i);
 	}
 
+	state = xfbib_state_new();
 
-	/* TODO: REMOVE THIS */
-	/*
-	instance->elements = xfbib_elements_new();
-
-	entry = xfbib_entry_new();
-	xfbib_entry_set_bibtype(entry, "@misc");
-	xfbib_entry_set_key(entry, "patashnik-bibtexing");
-	xfbib_entry_add_field(entry, "author", "Oren Patashnik");
-	xfbib_entry_add_field(entry, "title", "BIBTEXing");
-	xfbib_entry_add_field(entry, "year", "1988");
-	xfbib_elements_add(instance->elements, G_OBJECT(entry));
-
-	entry = xfbib_entry_new();
-	xfbib_entry_set_bibtype(entry, "@Article");
-	xfbib_entry_set_key(entry, "py03");
-	xfbib_entry_add_field(entry, "author", "Xavier Decoret");
-	xfbib_entry_add_field(entry, "title", "PyBiTex");
-	xfbib_entry_add_field(entry, "year", "2003");
-	xfbib_elements_add(instance->elements, G_OBJECT(entry));
-	
-
-	entry = xfbib_entry_new();
-	xfbib_entry_set_bibtype(entry, "@Book");
-	xfbib_entry_set_key(entry, "steward03");
-	xfbib_entry_add_field(entry, "author", "Martha Steward");
-	xfbib_entry_add_field(entry, "address", "Jailway 3");
-	xfbib_entry_add_field(entry, "title", "Cooking behind bars");
-	xfbib_entry_add_field(entry, "publisher", "Culinary Expert Series");
-	xfbib_entry_add_field(entry, "year", "2003");
-	xfbib_elements_add(instance->elements, G_OBJECT(entry));
-*/
-	/* **** */
+	model = GTK_TREE_MODEL(xfbib_list_store_new(xfbib_state_get_bibtex_elements(state)));
+	gtk_tree_view_set_model(GTK_TREE_VIEW(instance), model);
+	g_object_unref(model); /* destroy model automatically with view */
 }
 
 static void
@@ -205,17 +179,10 @@
 }
 
 GtkWidget *
-xfbib_tree_view_new(XfbibElements *elements)
+xfbib_tree_view_new()
 {
-	GtkTreeModel *model;
 	XfbibTreeView *tree_view;
 	tree_view = g_object_new(XFBIB_TYPE_TREE_VIEW, NULL);
-	tree_view->elements = elements;
-
-	model = GTK_TREE_MODEL(xfbib_list_store_new(elements));
-	gtk_tree_view_set_model(GTK_TREE_VIEW(tree_view), model);
-	g_object_unref(model); /* destroy model automatically with view */
-
 	return GTK_WIDGET(tree_view);
 }
 

Modified: xfbib/branches/gobject/src/xfbib-tree-view.h
===================================================================
--- xfbib/branches/gobject/src/xfbib-tree-view.h	2008-09-22 20:10:52 UTC (rev 5435)
+++ xfbib/branches/gobject/src/xfbib-tree-view.h	2008-09-23 11:50:45 UTC (rev 5436)
@@ -21,7 +21,6 @@
 #define __XFBIB_TREE_VIEW_H
 
 #include <gtk/gtk.h>
-#include "xfbib-elements.h"
 
 #define XFBIB_TYPE_TREE_VIEW             (xfbib_tree_view_get_type())
 #define XFBIB_TREE_VIEW(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj), XFBIB_TYPE_TREE_VIEW, XfbibTreeView))
@@ -36,7 +35,7 @@
 
 GType xfbib_tree_view_get_type() G_GNUC_CONST;
 
-GtkWidget *xfbib_tree_view_new(XfbibElements *);
+GtkWidget *xfbib_tree_view_new(void);
 
 G_END_DECLS
 

Modified: xfbib/branches/gobject/src/xfbib-window.c
===================================================================
--- xfbib/branches/gobject/src/xfbib-window.c	2008-09-22 20:10:52 UTC (rev 5435)
+++ xfbib/branches/gobject/src/xfbib-window.c	2008-09-23 11:50:45 UTC (rev 5436)
@@ -39,7 +39,6 @@
 	GtkWidget *tree_view;
 	GtkWidget *status_bar;
 	GtkWidget *file_io;
-	XfbibElements *elements;
 };
 	
 typedef struct _XfbibWindowClass
@@ -89,8 +88,6 @@
 static void
 xfbib_window_init(XfbibWindow *instance)
 {
-	instance->elements = xfbib_elements_new();
-
 	instance->vbox = gtk_vbox_new(FALSE, 0);
 	gtk_container_add(GTK_CONTAINER(instance), instance->vbox);
 	
@@ -100,7 +97,7 @@
 	instance->toolbar = xfbib_toolbar_new(instance);
 	gtk_box_pack_start(GTK_BOX(instance->vbox), instance->toolbar, FALSE, FALSE, 0);
 	
-	instance->tree_view = xfbib_tree_view_new(instance->elements);
+	instance->tree_view = xfbib_tree_view_new();
 	gtk_box_pack_start(GTK_BOX(instance->vbox), instance->tree_view, TRUE , TRUE, 0);
 
 	instance->status_bar = xfbib_statusbar_new();
@@ -137,13 +134,6 @@
 	window->file_io = file_io;
 }
 
-XfbibElements *
-xfbib_window_get_elements(XfbibWindow *window)
-{
-	g_return_val_if_fail(XFBIB_IS_WINDOW(window), NULL);
-	return window->elements;
-}
-
 GtkWidget *
 xfbib_window_get_tree_view(XfbibWindow *window)
 {




More information about the Goodies-commits mailing list