Hello,

here is a patch that makes the new command line switchs
 in surf tip useless while giving hability to change behavior at run time.

- Cosmetic change : fixes the compile warning

surf.c: In function ‘loadstatuschange’:
surf.c:427: warning: enumeration value ‘WEBKIT_LOAD_FAILED’ not handled in 
switch

static gboolean loadimage = 1, plugin = 1, script = 1; line
moved to config.h, 3 keybindings for the three toggle functions
have been added, the new command line switches removed,
the man page updated and that's it.

diff -up a/config.def.h b/config.def.h
--- a/config.def.h	2010-03-25 14:24:49.000000000 +0100
+++ b/config.def.h	2010-03-25 14:33:04.000000000 +0100
@@ -7,6 +7,7 @@ static char *scriptfile     = ".surf/scr
 static char *cookiefile     = ".surf/cookies.txt";
 static char *dldir          = ".surf/dl/";
 static time_t sessiontime   = 3600;
+static gboolean loadimage = 1, plugin = 1, script = 1;
 
 #define SETPROP(p)       { .v = (char *[]){ "/bin/sh", "-c", \
 	"prop=\"`xprop -id $1 $0 | cut -d '\"' -f 2 | dmenu`\" &&" \
@@ -18,6 +19,9 @@ static Key keys[] = {
     { MODKEY|GDK_SHIFT_MASK,GDK_r,      reload,     { .b = TRUE } },
     { MODKEY,               GDK_r,      reload,     { .b = FALSE } },
     { MODKEY|GDK_SHIFT_MASK,GDK_p,      print,      { 0 } },
+    { MODKEY,               GDK_i,      toggleimages,{ 0 } },
+    { MODKEY,               GDK_f,      toggleplugin,{ 0 } },
+    { MODKEY,               GDK_s,      togglescript,{ 0 } },
     { MODKEY,               GDK_p,      clipboard,  { .b = TRUE } },
     { MODKEY,               GDK_y,      clipboard,  { .b = FALSE } },
     { MODKEY|GDK_SHIFT_MASK,GDK_j,      zoom,       { .i = -1 } },
diff -up a/surf.1 b/surf.1
--- a/surf.1	2010-03-25 14:02:58.000000000 +0100
+++ b/surf.1	2010-03-25 14:38:30.000000000 +0100
@@ -4,9 +4,6 @@ surf \- simple webkit-based browser
 .SH SYNOPSIS
 .B surf
 .RB [-e\ xid]
-.RB [-i]
-.RB [-p]
-.RB [-s]
 .RB [-v]
 .RB [-x]
 .RB "URI"
@@ -20,15 +17,6 @@ one can point surf to another URI by set
 .B \-e xid
 Reparents to window specified by xid.
 .TP
-.B \-i
-Disable Images
-.TP
-.B \-p
-Disable Plugins
-.TP
-.B \-s
-Disable Javascript
-.TP
 .B \-v
 Prints version information to standard output, then exits.
 .TP
diff -up a/surf.c b/surf.c
--- a/surf.c	2010-03-25 14:02:58.000000000 +0100
+++ b/surf.c	2010-03-25 14:49:10.000000000 +0100
@@ -62,7 +62,6 @@ static gboolean showxid = FALSE;
 static int ignorexprop = 0;
 static char winid[64];
 static char *progname;
-static gboolean loadimage = 1, plugin = 1, script = 1;
 
 static char *buildpath(const char *path);
 static void cleanup(void);
@@ -108,6 +107,9 @@ static void source(Client *c, const Arg
 static void spawn(Client *c, const Arg *arg);
 static void stop(Client *c, const Arg *arg);
 static void titlechange(WebKitWebView *v, WebKitWebFrame* frame, const char* title, Client *c);
+static void toggleimages(Client *c, const Arg *arg);
+static void toggleplugin(Client *c, const Arg *arg);
+static void togglescript(Client *c, const Arg *arg);
 static void update(Client *c);
 static void updatedownload(WebKitDownload *o, GParamSpec *pspec, Client *c);
 static void updatewinid(Client *c);
@@ -431,6 +433,7 @@ loadstatuschange(WebKitWebView *view, GP
 		update(c);
 		break;
 	case WEBKIT_LOAD_PROVISIONAL:
+	case WEBKIT_LOAD_FAILED:
 	case WEBKIT_LOAD_FIRST_VISUALLY_NON_EMPTY_LAYOUT:
 		break;
 	}
@@ -608,12 +611,6 @@ newwindow(Client *c, const Arg *arg) {
 		snprintf(tmp, LENGTH(tmp), "%u\n", (int)embed);
 		cmd[i++] = tmp;
 	}
-	if(!script)
-		cmd[i++] = "-s";
-	if(!plugin)
-		cmd[i++] = "-p";
-	if(!loadimage)
-		cmd[i++] = "-l";
 	if(showxid)
 		cmd[i++] = "-x";
 	cmd[i++] = "--";
@@ -813,6 +810,30 @@ titlechange(WebKitWebView *v, WebKitWebF
 }
 
 void
+toggleimages(Client *c, const Arg *arg) {
+  WebKitWebSettings *settings = webkit_web_view_get_settings(c->view);
+  g_object_set(G_OBJECT(settings), "auto-load-images", !loadimage, NULL);
+  (loadimage) ? (loadimage = 0) : (loadimage = 1);
+  reload(c, arg);
+}
+
+void
+toggleplugin(Client *c, const Arg *arg) {
+  WebKitWebSettings *settings = webkit_web_view_get_settings(c->view);
+  g_object_set(G_OBJECT(settings), "enable-plugins", !plugin, NULL);
+  (plugin) ? (plugin = 0) : (plugin = 1);
+  reload(c, arg);
+}
+
+void
+togglescript(Client *c, const Arg *arg) {
+  WebKitWebSettings *settings = webkit_web_view_get_settings(c->view);
+  g_object_set(G_OBJECT(settings), "enable-scripts", !script, NULL);
+  (script) ? (script = 0) : (script = 1);
+  reload(c, arg);
+}
+
+void
 update(Client *c) {
 	char *t;
 
@@ -849,7 +870,7 @@ updatewinid(Client *c) {
 void
 usage(void) {
 	fputs("surf - simple browser\n", stderr);
-	die("usage: surf [-e xid] [-i] [-p] [-s] [-v] [-x] [uri]\n");
+	die("usage: surf [-e xid] [-v] [-x] [uri]\n");
 }
 
 void
@@ -898,15 +919,6 @@ main(int argc, char *argv[]) {
 			else
 				usage();
 			break;
-		case 'i':
-			loadimage = 0;
-			break;
-		case 'p':
-			plugin = 0;
-			break;
-		case 's':
-			script = 0;
-			break;
 		case 'x':
 			showxid = TRUE;
 			break;

Reply via email to