Hello Everyone,
I am trying to get the Gtk app to close when redirected to a specific page. It's not closing. I have a callback when page finishes loading going to a function and have a if statement on the url if should close the app.
Any Suggestions?
Code:
#include <config.h>
#include <gtk/gtk.h>
#include <glib/gi18n.h>
#include <webkit/webkit.h>
#include <stdio.h>
#include <string.h>
static WebKitWebView* web_view;
typedef struct _Private Private;
static struct _Private
{
};
static struct Private* priv = NULL;
/* #define UI_FILE PACKAGE_DATA_DIR"/ui/myapp.ui" */
#define UI_FILE "src/myapp.ui"
#define TOP_WINDOW "window"
void
destroy (GtkWidget *widget, gpointer data)
{
gtk_main_quit ();
}
static GtkWidget* create_window (void)
{
GtkWidget *window;
GtkBuilder *builder;
GError* error = NULL;
/* Load UI from file */
builder = gtk_builder_new ();
if (!gtk_builder_add_from_file (builder, UI_FILE, &error))
{
g_critical ("Couldn't load builder file: %s", error->message);
g_error_free (error);
}
/* Auto-connect signal handlers */
gtk_builder_connect_signals (builder, NULL);
/* Get the window object from the ui file */
window = GTK_WIDGET (gtk_builder_get_object (builder, TOP_WINDOW));
if (!window)
{
g_critical ("Widget \"%s\" is missing in file %s.",
TOP_WINDOW,
UI_FILE);
}
priv = g_malloc (sizeof (struct _Private));
g_object_unref (builder);
return window;
}
static void
load_commit_cb (WebKitWebView* web_view, gpointer data)
{
WebKitLoadStatus status = webkit_web_view_get_load_status (web_view);
if(status == WEBKIT_LOAD_FINISHED)
{
const gchar* uri = webkit_web_view_get_uri (web_view);
const gchar* uri_logout = "http://localhost/?i=logout";
if(uri == uri_logout)
{
gtk_main_quit ();
}
}
}
void scrolledwindow_draw_cb (GtkWidget *scrolledwindow, GtkWidget *buttonbox)
{
GtkWidget *scrolled_window;
scrolled_window = GTK_WIDGET(scrolledwindow);
web_view = WEBKIT_WEB_VIEW (webkit_web_view_new ());
gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (web_view));
gchar* uri = (gchar*) ("http://localhost/?i=login");
webkit_web_view_open (web_view, uri);
gtk_widget_show_all (scrolled_window);
}
int main (int argc, char *argv[])
{
GtkWidget *window;
#ifdef ENABLE_NLS
bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
textdomain (GETTEXT_PACKAGE);
#endif
gtk_init (&argc, &argv);
window = create_window ();
g_signal_connect (G_OBJECT (web_view), "load-progress-changed", G_CALLBACK (load_commit_cb), web_view);
gtk_widget_show (window);
gtk_main ();
g_free (priv);
return 0;
}