aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormutantturkey <crazycal00@gmail.com>2010-05-06 16:22:25 -0400
committermutantturkey <crazycal00@gmail.com>2010-05-06 16:22:25 -0400
commit0c83b07a1d9a76830a92edeaba4b505a920092ee (patch)
treed38bc574b6c14d1126abf74451bd18f5dff1fa38
parent4cfa162eaa5ed89a3671d640e656e286ccd17f89 (diff)
IT IS ALIVE. sb finnally works
-rw-r--r--sb.c57
1 files changed, 32 insertions, 25 deletions
diff --git a/sb.c b/sb.c
index 1f95a23..4281696 100644
--- a/sb.c
+++ b/sb.c
@@ -11,7 +11,7 @@ static struct { GtkWidget *win; GtkWidget *bar; GtkWidget *search; GtkWidget *vb
#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 void activate_uri_entry_cb(GtkWidget* entry, tab *t);
+static void activate_uri_entry_cb(GtkWidget* entry, gpointer data);
static void update_title(const gchar* title, gchar* linkhover);
static void link_hover_cb (WebKitWebView* page, const gchar* title, const gchar* link, gpointer data);
static void title_change_cb (WebKitWebView* web_view, WebKitWebFrame* web_frame, const gchar* title, gpointer data);
@@ -23,8 +23,12 @@ static void new_tab();
static void config();
gboolean key_press_cb(GtkWidget *widget, GdkEventKey *event);
-static void activate_uri_entry_cb (GtkWidget* entry, tab *t) {
- const gchar* uri = gtk_entry_get_text (GTK_ENTRY (w.bar));
+static void activate_uri_entry_cb (GtkWidget* entry, gpointer data) {
+ struct tab *t;
+ gint page = gtk_notebook_get_current_page(GTK_NOTEBOOK(w.notebook));
+ t = get_tab(NULL, page);
+ const gchar* uri = gtk_entry_get_text (GTK_ENTRY (w.bar));
+
webkit_web_view_open (t->view, uri);
gtk_widget_grab_focus(GTK_WIDGET(t->view));
}
@@ -47,14 +51,15 @@ static void title_change_cb (WebKitWebView* web_view, WebKitWebFrame* web_frame,
update_title (title, NULL);
}
-static void progress_change_cb (WebKitWebView* page, gint progress, gpointer data) {
+static void progress_change_cb (WebKitWebView* p, gint progress, gpointer data) {
/*nothing needed yet*/
}
-static void load_commit_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data) {
+static void load_commit_cb (WebKitWebView* p, WebKitWebFrame* frame, gpointer data) {
const gchar* uri = webkit_web_frame_get_uri(frame);
- if (uri)
- gtk_entry_set_text (GTK_ENTRY (w.bar), uri);
+ //gint page = gtk_notebook_get_current_page(GTK_NOTEBOOK(w.notebook));
+
+ gtk_entry_set_text (GTK_ENTRY (w.bar), uri);
}
static void destroy_cb (GtkWidget* widget, gpointer data) {
@@ -68,6 +73,7 @@ static void go_cb (gboolean b) {
if (b) { webkit_web_view_go_forward(t->view); }
else { webkit_web_view_go_back(t->view); }
}
+
static void new_tab() {
/*seperate function so it will be easier to setup the webkit crap*/
tab *t;
@@ -86,7 +92,7 @@ static void new_tab() {
if ( gtk_notebook_get_n_pages(GTK_NOTEBOOK(w.notebook)) == 1) { }
if (index == 0) {
- gtk_notebook_set_show_tabs(GTK_NOTEBOOK(w.notebook), FALSE);
+ //gtk_notebook_set_show_tabs(GTK_NOTEBOOK(w.notebook), FALSE);
} else { gtk_notebook_set_show_tabs(GTK_NOTEBOOK(w.notebook), TRUE); }
@@ -103,49 +109,50 @@ static void new_tab() {
g_object_set (G_OBJECT(t->settings), "enable-java-applet", FALSE, NULL);
g_object_set (G_OBJECT(t->settings), "print-backgrounds", FALSE, NULL);
webkit_web_view_set_settings (WEBKIT_WEB_VIEW(t->view), t->settings);
+
+ gtk_widget_show_all(w.win);
}
static void config() {
- term_data_id = g_quark_from_static_string("mt");
+ term_data_id = g_quark_from_static_string("sb");
/*sb is orginized with a vbox. much the simplest way to orginize things*/
+
w.vbox = gtk_vbox_new(FALSE, 0);
- /*entry bar*/
+ w.notebook = gtk_notebook_new();
w.bar = gtk_entry_new ();
- gtk_entry_set_has_frame(GTK_ENTRY(w.bar), FALSE);
- g_signal_connect (G_OBJECT (w.bar), "activate", G_CALLBACK (activate_uri_entry_cb), NULL);
- gtk_box_pack_start (GTK_BOX (w.vbox), w.bar, FALSE, FALSE, 0);
+ gtk_entry_set_has_frame(GTK_ENTRY(w.bar), FALSE);
+ gtk_notebook_set_scrollable(GTK_NOTEBOOK(w.notebook), TRUE);
+
+ g_signal_connect (G_OBJECT (w.bar), "activate", G_CALLBACK (activate_uri_entry_cb), NULL);
- /*notebook*/
- w.notebook = gtk_notebook_new();
- gtk_box_pack_start(GTK_BOX(w.vbox), w.notebook, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX (w.vbox), w.bar, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(w.vbox), w.notebook, TRUE, TRUE, 0);
/* status bar*/
- w.status = gtk_statusbar_new();
- gtk_box_pack_start(GTK_BOX(w.vbox), w.status, FALSE, FALSE, 0);
+ //w.status = gtk_statusbar_new();
+ //gtk_box_pack_start(GTK_BOX(w.vbox), w.status, FALSE, FALSE, 0);
- /*window initialization & callbacks*/
w.win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ //gtk_window_set_default_size(GTK_WINDOW(w.win), 800, 800);
+
g_signal_connect (G_OBJECT (w.win), "destroy", G_CALLBACK (destroy_cb), NULL);
g_signal_connect(w.win, "key-press-event", G_CALLBACK(key_press_cb), NULL);
gtk_container_add (GTK_CONTAINER (w.win), w.vbox);
- gtk_window_set_default_size(GTK_WINDOW(w.win), 800, 800);
-
- /*open argument, or default page*/
- //gtk_widget_grab_focus (GTK_WIDGET (w.view));
- new_tab();
+ new_tab();
gtk_widget_show_all (w.win);
}
gboolean key_press_cb (GtkWidget *widget, GdkEventKey *event) {
if (event->state == GDK_CONTROL_MASK) {
-
+
if (gdk_keyval_to_lower(event->keyval) == GDK_f) { gtk_widget_grab_focus(GTK_WIDGET(w.bar)); return TRUE; }
if (gdk_keyval_to_lower(event->keyval) == GDK_l) { gtk_widget_grab_focus(GTK_WIDGET(w.bar)); return TRUE; }
if (gdk_keyval_to_lower(event->keyval) == GDK_j) { go_cb(FALSE); return TRUE; }
if (gdk_keyval_to_lower(event->keyval) == GDK_k) { go_cb(TRUE); return TRUE; }
+ if (gdk_keyval_to_lower(event->keyval) == GDK_t) { new_tab(); return TRUE; }
//if (gdk_keyval_to_lower(event->keyval) == GDK_bracketright) { webkit_web_view_set_zoom_level(t->view, (webkit_web_view_get_zoom_level(t->view) + .05)); return TRUE; }
//if (gdk_keyval_to_lower(event->keyval) == GDK_bracketleft) { webkit_web_view_set_zoom_level(t->view, (webkit_web_view_get_zoom_level(t->view) - .05)); return TRUE; }
else { return FALSE; }