From be823d2464230c0a964f6ef5ba6ae3964d37538c Mon Sep 17 00:00:00 2001 From: Peter Hofmann Date: Sat, 14 Jun 2014 11:31:02 +0200 Subject: Refactor to allow for easy creation of new windows --- sn.c | 79 +++++++++++++++++++++++++++----------------------------------------- 1 file changed, 31 insertions(+), 48 deletions(-) diff --git a/sn.c b/sn.c index 2452016..2b6b1b8 100644 --- a/sn.c +++ b/sn.c @@ -4,56 +4,42 @@ #include #include +static void sn_new_window(char *uri); +static void sn_title_changed(GObject *, GParamSpec *, gpointer); -struct sn_gui + +double global_zoom = 1.0; + + +void +sn_new_window(char *uri) { - GtkWidget *window; + GtkWidget *win; GtkWidget *web_view; GtkWidget *scroll; -}; -struct sn_app -{ - struct sn_gui gui; - double global_zoom; -}; + win = gtk_window_new(GTK_WINDOW_TOPLEVEL); + g_signal_connect(G_OBJECT(win), "delete_event", G_CALLBACK(gtk_main_quit), + NULL); + g_signal_connect(G_OBJECT(win), "destroy", G_CALLBACK(gtk_main_quit), + NULL); + gtk_window_set_has_resize_grip(GTK_WINDOW(win), FALSE); + gtk_window_set_title(GTK_WINDOW(win), "sn"); -static void sn_create_gui(struct sn_app *app); -static void sn_init_defaults(struct sn_app *app); -static void sn_title_changed(GObject *obj, GParamSpec *pspec, gpointer app); + web_view = webkit_web_view_new(); + webkit_web_view_set_full_content_zoom(WEBKIT_WEB_VIEW(web_view), TRUE); + webkit_web_view_set_zoom_level(WEBKIT_WEB_VIEW(web_view), global_zoom); + g_signal_connect(G_OBJECT(web_view), "notify::title", + G_CALLBACK(sn_title_changed), win); + scroll = gtk_scrolled_window_new(NULL, NULL); -void -sn_create_gui(struct sn_app *app) -{ - app->gui.window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - g_signal_connect(G_OBJECT(app->gui.window), "delete_event", - G_CALLBACK(gtk_main_quit), NULL); - g_signal_connect(G_OBJECT(app->gui.window), "destroy", - G_CALLBACK(gtk_main_quit), NULL); - gtk_window_set_has_resize_grip(GTK_WINDOW(app->gui.window), FALSE); - gtk_window_set_title(GTK_WINDOW(app->gui.window), "sn"); - - app->gui.web_view = webkit_web_view_new(); - webkit_web_view_set_full_content_zoom(WEBKIT_WEB_VIEW(app->gui.web_view), - TRUE); - webkit_web_view_set_zoom_level(WEBKIT_WEB_VIEW(app->gui.web_view), - app->global_zoom); - g_signal_connect(G_OBJECT(app->gui.web_view), "notify::title", - G_CALLBACK(sn_title_changed), app); - - app->gui.scroll = gtk_scrolled_window_new(NULL, NULL); - - gtk_container_add(GTK_CONTAINER(app->gui.scroll), app->gui.web_view); - gtk_container_add(GTK_CONTAINER(app->gui.window), app->gui.scroll); - - gtk_widget_show_all(app->gui.window); -} + gtk_container_add(GTK_CONTAINER(scroll), web_view); + gtk_container_add(GTK_CONTAINER(win), scroll); -void -sn_init_defaults(struct sn_app *app) -{ - app->global_zoom = 1.0; + gtk_widget_show_all(win); + + webkit_web_view_load_uri(WEBKIT_WEB_VIEW(web_view), uri); } void @@ -61,29 +47,27 @@ sn_title_changed(GObject *obj, GParamSpec *pspec, gpointer data) { const gchar *t; WebKitWebView *view = WEBKIT_WEB_VIEW(obj); - struct sn_app *app = data; + GtkWindow *win = GTK_WINDOW(data); (void)pspec; t = webkit_web_view_get_title(view); - gtk_window_set_title(GTK_WINDOW(app->gui.window), (t == NULL ? "sn" : t)); + gtk_window_set_title(win, (t == NULL ? "sn" : t)); } int main(int argc, char **argv) { int opt; - struct sn_app app; gtk_init(&argc, &argv); - sn_init_defaults(&app); while ((opt = getopt(argc, argv, "z:")) != -1) { switch (opt) { case 'z': - app.global_zoom = atof(optarg); + global_zoom = atof(optarg); break; } } @@ -94,8 +78,7 @@ main(int argc, char **argv) exit(EXIT_FAILURE); } - sn_create_gui(&app); - webkit_web_view_load_uri(WEBKIT_WEB_VIEW(app.gui.web_view), argv[optind]); + sn_new_window(argv[optind]); gtk_main(); exit(EXIT_SUCCESS); } -- cgit v1.2.3