Merge branch 'experimental' of git://github.com/DuClare/uzbl into experimental
authorBarrucadu <mike@barrucadu.co.uk>
Tue, 19 May 2009 18:27:04 +0000 (19:27 +0100)
committerBarrucadu <mike@barrucadu.co.uk>
Tue, 19 May 2009 18:27:04 +0000 (19:27 +0100)
Conflicts:
uzbl.c

1  2 
uzbl.c
uzbl.h

diff --cc uzbl.c
--- 1/uzbl.c
--- 2/uzbl.c
+++ b/uzbl.c
@@@ -1078,110 -1089,28 +1168,27 @@@ move_statusbar() 
  
  static gboolean
  set_var_value(gchar *name, gchar *val) {
-     void **p = NULL;
+     void *p = NULL;
+     uzbl_cmdprop *c = NULL;
      char *endp = NULL;
 -    char *buf=NULL;
  
-     if( (p = g_hash_table_lookup(uzbl.comm.proto_var, name)) ) {
-         if(var_is("status_message", name)
-            || var_is("status_background", name)
-            || var_is("status_format", name)
-            || var_is("title_format_long", name)
-            || var_is("title_format_short", name)
-            || var_is("load_finish_handler", name)
-            || var_is("load_start_handler", name)
-            || var_is("load_commit_handler", name)
-            || var_is("history_handler", name)
-            || var_is("download_handler", name)
-            || var_is("cookie_handler", name)) {
-             if(*p)
-                 free(*p);
-             *p = g_strdup(val);
-             update_title();
-         }
-         else if(var_is("uri", name)) {
-             if(*p) free(*p);
-             *p = g_strdup(val);
-             GArray *a = g_array_new(TRUE, FALSE, sizeof(gchar*));
-             g_array_append_val(a, *p);
-             load_uri(uzbl.gui.web_view, a);
-             g_array_free(a, TRUE);
-         }
-         else if(var_is("proxy_url", name)) {
-             if(*p) free(*p);
-             *p = g_strdup(val);
-             set_proxy_url();
-         }
-         else if(var_is("fifo_dir", name)) {
-             if(*p) free(*p);
-             *p = init_fifo(g_strdup(val));
-         }
-         else if(var_is("socket_dir", name)) {
-             if(*p) free(*p);
-             *p = init_socket(g_strdup(val));
-         }
-         else if(var_is("modkey", name)) {
-             if(*p) free(*p);
-             int i;
-             *p = g_utf8_strup(val, -1);
-             uzbl.behave.modmask = 0;
-             for (i = 0; modkeys[i].key != NULL; i++) {
-                 if (g_strrstr(*p, modkeys[i].key))
-                     uzbl.behave.modmask |= modkeys[i].mask;
-             }
-         }
-         else if(var_is("useragent", name)) {
-             if(*p) free(*p);
-             *p = set_useragent(g_strdup(val));
-         }
-         else if(var_is("shell_cmd", name)) {
-             if(*p) free(*p);
-             *p = g_strdup(val);
-         }
-         /* variables that take int values */
-         else {
-             int *ip = (int *)p;
+     if( (c = g_hash_table_lookup(uzbl.comm.proto_var, name)) ) {
+         /* check for the variable type */
+         if (c->type == TYPE_STRING) {
+             free(*c->ptr);
+             *c->ptr = g_strdup(val);
+         } else if(c->type == TYPE_INT) {
+             int *ip = c->ptr;
              *ip = (int)strtoul(val, &endp, 10);
-             if(var_is("show_status", name)) {
-                 cmd_set_status();
-             }
-             else if(var_is("always_insert_mode", name)) {
-                 uzbl.behave.insert_mode =
-                     uzbl.behave.always_insert_mode ?  TRUE : FALSE;
-                 update_title();
-             }
-             else if (var_is("max_conns", name)) {
-                 g_object_set(G_OBJECT(uzbl.net.soup_session),
-                              SOUP_SESSION_MAX_CONNS, uzbl.net.max_conns, NULL);
-             }
-             else if (var_is("max_conns_host", name)) {
-                 g_object_set(G_OBJECT(uzbl.net.soup_session),
-                              SOUP_SESSION_MAX_CONNS_PER_HOST, uzbl.net.max_conns_host, NULL);
-             }
-             else if (var_is("http_debug", name)) {
-                 //soup_session_remove_feature
-                 //    (uzbl.net.soup_session, uzbl.net.soup_logger);
-                 soup_session_remove_feature
-                     (uzbl.net.soup_session, SOUP_SESSION_FEATURE(uzbl.net.soup_logger));
-                 /* do we leak if this doesn't get freed? why does it occasionally crash if freed? */
-                 /*g_free(uzbl.net.soup_logger);*/
-                 uzbl.net.soup_logger = soup_logger_new(uzbl.behave.http_debug, -1);
-                 soup_session_add_feature(uzbl.net.soup_session,
-                                          SOUP_SESSION_FEATURE(uzbl.net.soup_logger));
-             }
-             else if (var_is("status_top", name)) {
-                 move_statusbar();
-             }
-             else if (var_is("default_font_size", name)) {
-                 WebKitWebSettings *ws = webkit_web_view_get_settings(uzbl.gui.web_view);
-                 g_object_set (G_OBJECT(ws), "default-font-size", *ip, NULL);
-             }
-             else if (var_is("minimum_font_size", name)) {
-                 WebKitWebSettings *ws = webkit_web_view_get_settings(uzbl.gui.web_view);
-                 g_object_set (G_OBJECT(ws), "minimum-font-size", *ip, NULL);
-             }
          }
+         /* invoke a command specific function */
+         if(c->func) c->func();
+         /* this will be removed as soon as we have converted to
+         * the callback interface
+         */
+         p = *c->ptr;
      }
      return TRUE;
  }
diff --cc uzbl.h
Simple merge