diff options
author | Vincent Sanders <vince@kyllikki.org> | 2015-06-13 11:31:23 +0100 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2015-06-17 21:35:40 +0100 |
commit | 8ef292b9caf5cae2197493a87480723138f10344 (patch) | |
tree | fa39583104ab806b81f382eb85bc9f5a05331dfd /gtk/download.c | |
parent | 16fbb97dbb1688fd9b6f19546792b4173bc30bf1 (diff) | |
download | netsurf-8ef292b9caf5cae2197493a87480723138f10344.tar.gz netsurf-8ef292b9caf5cae2197493a87480723138f10344.tar.bz2 |
Change GTK UI builder handling to use resource API
GTK UI builder resources have till now been exclusively stored on disc
requiring netsurf to ship numerous additional resource files. This
requires going to disc every time a UI action is performed which can
become a lot of unwanted file handling.
GLib/GTK has moved towards GResource handling for such resources
instead. It now seems that migrating to this style of usage is
expected and indeed the only portable way to include pixbufs.
This introduces an API to hide the various implementation details of
how resources are handled from the rest of the codebase.
Diffstat (limited to 'gtk/download.c')
-rw-r--r-- | gtk/download.c | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/gtk/download.c b/gtk/download.c index 74b49f69c..23832ded9 100644 --- a/gtk/download.c +++ b/gtk/download.c @@ -32,9 +32,10 @@ #include "desktop/gui_download.h" #include "gtk/scaffolding.h" -#include "gtk/download.h" #include "gtk/window.h" #include "gtk/compat.h" +#include "gtk/resources.h" +#include "gtk/download.h" #define UPDATE_RATE 500 /* In milliseconds */ @@ -458,24 +459,26 @@ static void nsgtk_download_store_cancel_item (struct gui_download_window *dl) } } -static gboolean nsgtk_download_hide (GtkWidget *window) +static gboolean nsgtk_download_hide(GtkWidget *window) { gtk_widget_hide(window); return TRUE; } -bool nsgtk_download_init(const char *glade_file_location) +/* exported interface documented in gtk/download.h */ +nserror nsgtk_download_init(void) { - GError* error = NULL; - GtkBuilder* builder = gtk_builder_new(); - - if (!gtk_builder_add_from_file(builder, glade_file_location, &error)) - { - g_warning("Couldn't load builder file: %s", error->message); - g_error_free(error); - return false; + GtkBuilder* builder; + nserror res; + + res = nsgtk_builder_new_from_resname("downloads", &builder); + if (res != NSERROR_OK) { + LOG("Download UI builder init failed"); + return res; } + gtk_builder_connect_signals(builder, NULL); + nsgtk_download_button_pause = GTK_BUTTON(gtk_builder_get_object(builder, "buttonPause")); nsgtk_download_button_clear = GTK_BUTTON(gtk_builder_get_object(builder, "buttonClear")); nsgtk_download_button_cancel = GTK_BUTTON(gtk_builder_get_object(builder, "buttonCancel")); @@ -538,7 +541,7 @@ bool nsgtk_download_init(const char *glade_file_location) g_signal_connect(G_OBJECT(nsgtk_download_window), "delete-event", G_CALLBACK(nsgtk_download_hide), NULL); - return true; + return NSERROR_OK; } void nsgtk_download_destroy () |