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/login.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/login.c')
-rw-r--r-- | gtk/login.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/gtk/login.c b/gtk/login.c index c237dec30..2de2996b3 100644 --- a/gtk/login.c +++ b/gtk/login.c @@ -30,7 +30,8 @@ #include "utils/utils.h" #include "desktop/browser.h" -#include "gtk/gui.h" +#include "gtk/resources.h" +#include "gtk/login.h" struct session_401 { nsurl *url; /**< URL being fetched */ @@ -65,28 +66,28 @@ void gui_401login_open(nsurl *url, const char *realm, lwc_string_unref(host); } +/* create a new instance of the login window, and get handles to all + * the widgets we're interested in. + */ void create_login_window(nsurl *url, lwc_string *host, const char *realm, nserror (*cb)(bool proceed, void *pw), void *cbpw) { struct session_401 *session; - - /* create a new instance of the login window, and get handles to all - * the widgets we're interested in. - */ - GtkWindow *wnd; GtkLabel *lhost, *lrealm; GtkEntry *euser, *epass; GtkButton *bok, *bcan; - GError* error = NULL; GtkBuilder* builder; + nserror res; - builder = gtk_builder_new (); - if (!gtk_builder_add_from_file(builder, glade_file_location->login, &error)) { - g_warning ("Couldn't load builder file: %s", error->message); - g_error_free (error); + res = nsgtk_builder_new_from_resname("login", &builder); + if (res != NSERROR_OK) { + LOG("Login UI builder init failed"); + return; } + gtk_builder_connect_signals(builder, NULL); + wnd = GTK_WINDOW(gtk_builder_get_object(builder, "wndLogin")); lhost = GTK_LABEL(gtk_builder_get_object(builder, "labelLoginHost")); lrealm = GTK_LABEL(gtk_builder_get_object(builder, "labelLoginRealm")); |