about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJosh Rickmar <jrick@devio.us>2012-06-15 13:47:20 -0400
committerJosh Rickmar <jrick@devio.us>2012-06-15 13:48:12 -0400
commit2aaadca5a1351ca1bf34670a97875133a71b8fb3 (patch)
tree2d1e38903567f760333ed49e6ae35aeb71a72a13
parent8aac6ddc8eed06eea81314d2ae01ac12448700a2 (diff)
downloadxombrero-2aaadca5a1351ca1bf34670a97875133a71b8fb3.tar.gz
Add an 'p' option to statusbar_elems to show if the http_proxy is
currently enabled or disabled in the statusbar.
-rw-r--r--settings.c12
-rw-r--r--xombrero.11
-rw-r--r--xombrero.c37
-rw-r--r--xombrero.h2
4 files changed, 41 insertions, 11 deletions
diff --git a/settings.c b/settings.c
index 1fbf989..e3cdc50 100644
--- a/settings.c
+++ b/settings.c
@@ -571,6 +571,8 @@ set_statusbar_font(char *value)
 		    statusbar_font);
 		gtk_widget_modify_font(GTK_WIDGET(t->sbe.position),
 		    statusbar_font);
+		gtk_widget_modify_font(GTK_WIDGET(t->sbe.proxy),
+		    statusbar_font);
 	}
 	return (0);
 }
@@ -2078,10 +2080,14 @@ set_fancy_bar(char *value)
 void
 setup_proxy(char *uri)
 {
+	struct tab		*t;
+
 	if (proxy_uri) {
 		g_object_set(session, "proxy_uri", NULL, (char *)NULL);
 		soup_uri_free(proxy_uri);
 		proxy_uri = NULL;
+		TAILQ_FOREACH(t, &tabs, entry)
+			gtk_entry_set_text(GTK_ENTRY(t->sbe.proxy), "");
 	}
 	if (http_proxy) {
 		if (http_proxy != uri) {
@@ -2094,9 +2100,13 @@ setup_proxy(char *uri)
 		http_proxy = g_strdup(uri);
 		DNPRINTF(XT_D_CONFIG, "setup_proxy: %s\n", uri);
 		proxy_uri = soup_uri_new(http_proxy);
-		if (!(proxy_uri == NULL || !SOUP_URI_VALID_FOR_HTTP(proxy_uri)))
+		if (proxy_uri != NULL && SOUP_URI_VALID_FOR_HTTP(proxy_uri)) {
 			g_object_set(session, "proxy-uri", proxy_uri,
 			    (char *)NULL);
+			TAILQ_FOREACH(t, &tabs, entry)
+				gtk_entry_set_text(GTK_ENTRY(t->sbe.proxy),
+				    "proxy");
+		}
 	}
 }
 
diff --git a/xombrero.1 b/xombrero.1
index 1c73661..d223e9b 100644
--- a/xombrero.1
+++ b/xombrero.1
@@ -1429,6 +1429,7 @@ Define the components of the status bar. The possible components are:
 .Bd -literal -offset indent
 | - separator
 P - page progress percent
+p - proxy enabled/disabled
 B - buffer command
 Z - page zoom level
 T - current tab number
diff --git a/xombrero.c b/xombrero.c
index ddd6632..c284ac5 100644
--- a/xombrero.c
+++ b/xombrero.c
@@ -1821,12 +1821,14 @@ statusbar_modify_attr(struct tab *t, const char *text, const char *base)
 	gtk_widget_modify_text(t->sbe.zoom, GTK_STATE_NORMAL, &c_text);
 	gtk_widget_modify_text(t->sbe.position, GTK_STATE_NORMAL, &c_text);
 	gtk_widget_modify_text(t->sbe.tabs, GTK_STATE_NORMAL, &c_text);
+	gtk_widget_modify_text(t->sbe.proxy, GTK_STATE_NORMAL, &c_text);
 
 	gtk_widget_modify_base(t->sbe.statusbar, GTK_STATE_NORMAL, &c_base);
 	gtk_widget_modify_base(t->sbe.buffercmd, GTK_STATE_NORMAL, &c_base);
 	gtk_widget_modify_base(t->sbe.zoom, GTK_STATE_NORMAL, &c_base);
 	gtk_widget_modify_base(t->sbe.position, GTK_STATE_NORMAL, &c_base);
 	gtk_widget_modify_base(t->sbe.tabs, GTK_STATE_NORMAL, &c_base);
+	gtk_widget_modify_base(t->sbe.proxy, GTK_STATE_NORMAL, &c_base);
 }
 
 void
@@ -7127,8 +7129,9 @@ create_new_tab(char *title, struct undo *u, int focus, int position)
 	GList				*items;
 	GdkColor			color;
 	char				*p;
-	int				sbe_p = 0, sbe_b = 0,
-					sbe_z = 0, sbe_t = 0;
+	int				sbe_P = 0, sbe_B = 0,
+					sbe_Z = 0, sbe_T = 0,
+					sbe_p = 0;
 
 	DNPRINTF(XT_D_TAB, "create_new_tab: title %s focus %d\n", title, focus);
 
@@ -7216,6 +7219,7 @@ create_new_tab(char *title, struct undo *u, int focus, int position)
 	t->sbe.zoom = create_sbe(40);
 	t->sbe.buffercmd = create_sbe(60);
 	t->sbe.tabs = create_sbe(40);
+	t->sbe.proxy = create_sbe(60);
 
 	statusbar_modify_attr(t, XT_COLOR_WHITE, XT_COLOR_BLACK);
 
@@ -7237,45 +7241,58 @@ create_new_tab(char *title, struct undo *u, int focus, int position)
 			break;
 		}
 		case 'P':
-			if (sbe_p) {
+			if (sbe_P) {
 				warnx("flag \"%c\" specified more than "
 				    "once in statusbar_elems\n", *p);
 				break;
 			}
-			sbe_p = 1;
+			sbe_P = 1;
 			gtk_box_pack_start(GTK_BOX(t->statusbar_box),
 			    t->sbe.position, FALSE, FALSE, FALSE);
 			break;
 		case 'B':
-			if (sbe_b) {
+			if (sbe_B) {
 				warnx("flag \"%c\" specified more than "
 				    "once in statusbar_elems\n", *p);
 				break;
 			}
-			sbe_b = 1;
+			sbe_B = 1;
 			gtk_box_pack_start(GTK_BOX(t->statusbar_box),
 			    t->sbe.buffercmd, FALSE, FALSE, FALSE);
 			break;
 		case 'Z':
-			if (sbe_z) {
+			if (sbe_Z) {
 				warnx("flag \"%c\" specified more than "
 				    "once in statusbar_elems\n", *p);
 				break;
 			}
-			sbe_z = 1;
+			sbe_Z = 1;
 			gtk_box_pack_start(GTK_BOX(t->statusbar_box),
 			    t->sbe.zoom, FALSE, FALSE, FALSE);
 			break;
 		case 'T':
-			if (sbe_t) {
+			if (sbe_T) {
 				warnx("flag \"%c\" specified more than "
 				    "once in statusbar_elems\n", *p);
 				break;
 			}
-			sbe_t = 1;
+			sbe_T = 1;
 			gtk_box_pack_start(GTK_BOX(t->statusbar_box),
 			    t->sbe.tabs, FALSE, FALSE, FALSE);
 			break;
+		case 'p':
+			if (sbe_p) {
+				warnx("flag \"%c\" specified more than "
+				    "once in statusbar_elems\n", *p);
+				break;
+			}
+			sbe_p = 1;
+			gtk_box_pack_start(GTK_BOX(t->statusbar_box),
+			    t->sbe.proxy, FALSE, FALSE, FALSE);
+			if (proxy_uri)
+				gtk_entry_set_text(GTK_ENTRY(t->sbe.proxy),
+				    "proxy");
+			break;
 		default:
 			warnx("illegal flag \"%c\" in statusbar_elems\n", *p);
 			break;
diff --git a/xombrero.h b/xombrero.h
index 78e85cb..d49660f 100644
--- a/xombrero.h
+++ b/xombrero.h
@@ -208,6 +208,7 @@ struct tab {
 		GtkWidget	*zoom;
 		GtkWidget	*position;
 		GtkWidget	*tabs;
+		GtkWidget	*proxy;
 	} sbe;
 	GtkWidget		*cmd;
 	GtkWidget		*buffers;
@@ -723,6 +724,7 @@ extern int	fancy_bar;
 extern int	browser_mode;
 extern int	enable_localstorage;
 extern char	*statusbar_elems;
+extern SoupURI	*proxy_uri;
 
 extern int	show_tabs;
 extern int	tab_style;