aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormutantturkey <crazycal00@gmail.com>2010-05-31 12:26:21 -0400
committermutantturkey <crazycal00@gmail.com>2010-05-31 12:26:21 -0400
commit18949f0d37666af9191de896352c75630a7bb062 (patch)
tree2bc680b37a2282351554882e72cd7fdc69039508
parent52d99e44c91fc1d1a0ac8d4760e8ea97c3bb009d (diff)
autoshortens tab title length & PoC code for .webkitrc
-rw-r--r--sb.c42
1 files changed, 39 insertions, 3 deletions
diff --git a/sb.c b/sb.c
index 03f6375..29f1e49 100644
--- a/sb.c
+++ b/sb.c
@@ -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);