]> git.armaanb.net Git - chorizo.git/commitdiff
Refactor to allow for easy creation of new windows
authorPeter Hofmann <scm@uninformativ.de>
Sat, 14 Jun 2014 09:31:02 +0000 (11:31 +0200)
committerPeter Hofmann <scm@uninformativ.de>
Sat, 14 Jun 2014 09:31:02 +0000 (11:31 +0200)
sn.c

diff --git a/sn.c b/sn.c
index 2452016006a417ace7539dd61ce016f5c405b137..2b6b1b82e5cc83754ddaa896e8fe1452b3dd2956 100644 (file)
--- a/sn.c
+++ b/sn.c
@@ -4,56 +4,42 @@
 #include <gtk/gtk.h>
 #include <webkit/webkit.h>
 
+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);
 }