summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hofmann <scm@uninformativ.de>2014-06-14 11:31:02 +0200
committerPeter Hofmann <scm@uninformativ.de>2014-06-14 11:31:02 +0200
commitbe823d2464230c0a964f6ef5ba6ae3964d37538c (patch)
tree8216b8bec67ab07cbf581a8bc1f139a4de3706df
parent76edc528c4245391b53a08a8fb56cfdba926e57d (diff)
downloadlariza-be823d2464230c0a964f6ef5ba6ae3964d37538c.tar.gz
Refactor to allow for easy creation of new windows
-rw-r--r--sn.c79
1 files 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 <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);
}