diff options
Diffstat (limited to 'sb.c')
-rw-r--r-- | sb.c | 42 |
1 files changed, 39 insertions, 3 deletions
@@ -14,12 +14,14 @@ #include <glib/gstdio.h> typedef struct tab { GtkWidget *scroll; GtkWidget *label; gchar *main_title; gint load_progress; guint status_context_id; WebKitWebView *view; WebKitWebSettings *settings; } tab; -static struct { GtkWidget *win; GtkWidget *bar; GtkWidget *search; GtkWidget *vbox; GtkWidget *notebook; GtkWidget *status; } w; +static struct { WebKitWebSettings *webkitsettings; GtkWidget *win; GtkWidget *bar; GtkWidget *search; GtkWidget *vbox; GtkWidget *notebook; GtkWidget *status; } w; #define get_tab(x, page_idx ) (struct tab*)g_object_get_qdata(G_OBJECT( gtk_notebook_get_nth_page( (GtkNotebook*)w.notebook, page_idx ) ), term_data_id); static GQuark term_data_id = 0; static char *defaultdownload = "xterm -bg black -fg white -e wget -P "; static char *defaultsearchengine = "http://www.google.com/search?q="; +static char *defaultfont = "san-serif"; +int tab_length = 25; static void activate_uri_entry_cb(GtkWidget* entry, gpointer data); static void link_hover(WebKitWebView* page, const gchar* title, const gchar* link, gpointer data); static void title_change_cb(WebKitWebView *v, WebKitWebFrame *f, const char *title, tab *t); @@ -86,8 +88,17 @@ else { gtk_statusbar_push(GTK_STATUSBAR(w.status), 0, ""); } } static void title_change_cb(WebKitWebView *v, WebKitWebFrame *f, const char *title, tab *t) { +gchar *tabtitle; +if(strlen(title) < tab_length) { tabtitle = g_strdup(title); } + else { + tabtitle = g_strndup(title, tab_length); + strcat(tabtitle, "..."); + + } + + gtk_window_set_title(GTK_WINDOW(w.win), title); -gtk_label_set_label(GTK_LABEL(t->label), title); +gtk_label_set_label(GTK_LABEL(t->label), tabtitle); } static void load_commit_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data) { @@ -182,6 +193,7 @@ if (index == 0) { gtk_notebook_set_show_tabs(GTK_NOTEBOOK(w.notebook), FALSE); } else { gtk_notebook_set_show_tabs(GTK_NOTEBOOK(w.notebook), TRUE); } +webkit_web_view_set_settings (WEBKIT_WEB_VIEW(t->view), w.webkitsettings); /*callbacks*/ g_signal_connect (G_OBJECT (t->view), "title-changed", G_CALLBACK (title_change_cb), t); @@ -250,8 +262,32 @@ gtk_box_pack_start(GTK_BOX(w.vbox), w.status, FALSE, FALSE, 0); w.win = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(w.win), 800, 800); -tab_new(); +char property[256], setting[256]; +FILE *webkitrc; +webkitrc = fopen(g_strconcat(g_get_home_dir(), "/.webkitrc", NULL), "r"); +w.webkitsettings = webkit_web_settings_new(); + +while (!feof(webkitrc)) { + if (fscanf(webkitrc, "%s %s", property, setting) != 2) break; + + +if(strcmp(setting, "FALSE") == 0) { + g_object_set(G_OBJECT(w.webkitsettings), property, FALSE, NULL); + break; +} +if(strcmp(setting, "TRUE") == 0) { +g_object_set(G_OBJECT(w.webkitsettings), property, TRUE, NULL); +break; +} + +if(atoi(setting) == 0) + { g_object_set(G_OBJECT(w.webkitsettings), property, setting, NULL); break; } +else { g_object_set(G_OBJECT(w.webkitsettings), property, atoi(setting), NULL); break; } +} + + +tab_new(); g_signal_connect (G_OBJECT (w.search), "activate", G_CALLBACK (search), GINT_TO_POINTER(1)); g_signal_connect (G_OBJECT (w.bar), "activate", G_CALLBACK (activate_uri_entry_cb), NULL); g_signal_connect (G_OBJECT(w.notebook), "switch-page", G_CALLBACK(tab_focus), NULL); |