about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorMarco Peereboom <marco@conformal.com>2010-02-28 04:57:25 +0000
committerMarco Peereboom <marco@conformal.com>2010-02-28 04:57:25 +0000
commit8f9df861ea35a328eef33caae5779588f44c821f (patch)
treeb73c5ee1bc95886b9a8a5278c05229caff775fa7
parent4fa922932fde25b44479e379456c1d19f3b311bb (diff)
downloadxombrero-8f9df861ea35a328eef33caae5779588f44c821f.tar.gz
Proof of concept :set enable_scripts
This needs a lot of work; the whole settings thing needs to go from
static to dynamic and autogenerate everything.  We need some darn
autocompletion too.

Too tired to fix it for real but want to have it in cvs
-rw-r--r--xxxterm.c79
1 files changed, 54 insertions, 25 deletions
diff --git a/xxxterm.c b/xxxterm.c
index 65a5e85..d586607 100644
--- a/xxxterm.c
+++ b/xxxterm.c
@@ -894,7 +894,7 @@ int
 set(struct tab *t, struct karg *args)
 {
 	struct mime_type	*m;
-	char			b[16 * 1024], *s;
+	char			b[16 * 1024], *s, *pars;
 	int			l;
 
 	if (t == NULL || args == NULL)
@@ -905,32 +905,61 @@ set(struct tab *t, struct karg *args)
 
 	s = b;
 	l = sizeof b;
-	mnprintf(&s, &l, "<html><body><pre>");
-	mnprintf(&s, &l, "ctrl_click_focus\t= %d<br>", ctrl_click_focus);
-	mnprintf(&s, &l, "cookies_enabled\t\t= %d<br>", cookies_enabled);
-	mnprintf(&s, &l, "default_font_size\t= %d<br>", default_font_size);
-	mnprintf(&s, &l, "enable_plugins\t\t= %d<br>", enable_plugins);
-	mnprintf(&s, &l, "enable_scripts\t\t= %d<br>", enable_scripts);
-	mnprintf(&s, &l, "fancy_bar\t\t= %d<br>", fancy_bar);
-	mnprintf(&s, &l, "home\t\t\t= %s<br>", home);
-	TAILQ_FOREACH(m, &mtl, entry) {
-		mnprintf(&s, &l, "mime_type\t\t= %s%s,%s<br>",
-		    m->mt_type, m->mt_default ? "*" : "", m->mt_action);
+
+	if ((pars = getparams(args->s, "set")) == NULL) {
+		mnprintf(&s, &l, "<html><body><pre>");
+		mnprintf(&s, &l, "ctrl_click_focus\t= %d<br>", ctrl_click_focus);
+		mnprintf(&s, &l, "cookies_enabled\t\t= %d<br>", cookies_enabled);
+		mnprintf(&s, &l, "default_font_size\t= %d<br>", default_font_size);
+		mnprintf(&s, &l, "enable_plugins\t\t= %d<br>", enable_plugins);
+		mnprintf(&s, &l, "enable_scripts\t\t= %d<br>", enable_scripts);
+		mnprintf(&s, &l, "fancy_bar\t\t= %d<br>", fancy_bar);
+		mnprintf(&s, &l, "home\t\t\t= %s<br>", home);
+		TAILQ_FOREACH(m, &mtl, entry) {
+			mnprintf(&s, &l, "mime_type\t\t= %s%s,%s<br>",
+			    m->mt_type, m->mt_default ? "*" : "", m->mt_action);
+		}
+		mnprintf(&s, &l, "proxy_uri\t\t= %s<br>", proxy_uri);
+		mnprintf(&s, &l, "read_only_cookies\t= %d<br>", read_only_cookies);
+		mnprintf(&s, &l, "search_string\t\t= %s<br>", search_string);
+		mnprintf(&s, &l, "showurl\t\t\t= %d<br>", showurl);
+		mnprintf(&s, &l, "showtabs\t\t= %d<br>", showtabs);
+		mnprintf(&s, &l, "tabless\t\t\t= %d<br>", tabless);
+		mnprintf(&s, &l, "download_dir\t\t= %s<br>", download_dir);
+		mnprintf(&s, &l, "</pre></body></html>");
+
+		webkit_web_view_load_string(t->wv,
+		    b,
+		    NULL,
+		    NULL,
+		    "about:config");
+		goto done;
 	}
-	mnprintf(&s, &l, "proxy_uri\t\t= %s<br>", proxy_uri);
-	mnprintf(&s, &l, "read_only_cookies\t= %d<br>", read_only_cookies);
-	mnprintf(&s, &l, "search_string\t\t= %s<br>", search_string);
-	mnprintf(&s, &l, "showurl\t\t\t= %d<br>", showurl);
-	mnprintf(&s, &l, "showtabs\t\t= %d<br>", showtabs);
-	mnprintf(&s, &l, "tabless\t\t\t= %d<br>", tabless);
-	mnprintf(&s, &l, "download_dir\t\t= %s<br>", download_dir);
-	mnprintf(&s, &l, "</pre></body></html>");
 
-	webkit_web_view_load_string(t->wv,
-	    b,
-	    NULL,
-	    NULL,
-	    "about:config");
+	/* XXX this sucks donkey balls and is a POC only */
+	int			x;
+	char			*e;
+	if (!strncmp(pars, "enable_scripts ", strlen("enable_scripts"))) {
+		s = pars + strlen("enable_scripts");
+		x = strtol(s, &e, 10);
+		if (s[0] == '\0' || *e != '\0')
+			webkit_web_view_load_string(t->wv,
+			    "<html><body>invalid value</body></html>",
+			    NULL,
+			    NULL,
+			    "about:error");
+
+		enable_scripts = x;
+		g_object_set((GObject *)t->settings,
+		    "enable-scripts", enable_scripts, NULL);
+		webkit_web_view_set_settings(t->wv, t->settings);
+	}
+
+done:
+	if (args->s) {
+		free(args->s);
+		args->s = NULL;
+	}
 
 	return (XT_CB_PASSTHROUGH);
 }