[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