diff options
author | mutantturkey <crazycal00@gmail.com> | 2010-05-07 17:22:36 -0400 |
---|---|---|
committer | mutantturkey <crazycal00@gmail.com> | 2010-05-07 17:22:36 -0400 |
commit | 153071ed896fe8323c6aed815fdfe4f04905e524 (patch) | |
tree | d2faa5bb374716b9ea6b0ea62d716b363964ddbc | |
parent | fe227d33185e15f33f1d4bd1dffc4cae8abdfb59 (diff) |
basic downloading with external program
-rw-r--r-- | sb.c | 15 |
1 files changed, 11 insertions, 4 deletions
@@ -13,6 +13,8 @@ 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 char *defaultdownload = "xterm -e wget "; +static char *defaultsearchengine = "http://www.google.com/search?q="; static void activate_uri_entry_cb(GtkWidget* entry, gpointer data); static void link_hover_cb (WebKitWebView* page, const gchar* title, const gchar* link, gpointer data); static void title_change_cb(WebKitWebView *v, WebKitWebFrame *f, const char *title, tab *t); @@ -24,7 +26,7 @@ static void tab_new(); static void tab_zoom(gboolean b); static void tab_close(); static void tab_focus(GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer user_data); - +static void download(WebKitWebView *web_view, GObject *download, gpointer user_data); static void config(); gboolean key_press_cb(GtkWidget *widget, GdkEventKey *event); @@ -43,8 +45,12 @@ static void tab_close() { if (gtk_notebook_get_n_pages(GTK_NOTEBOOK(w.notebook)) == 1) { gtk_notebook_set_show_tabs(GTK_NOTEBOOK(w.notebook), FALSE); gtk_widget_grab_focus(gtk_notebook_get_nth_page(GTK_NOTEBOOK(w.notebook), gtk_notebook_get_current_page(GTK_NOTEBOOK(w.notebook)))); } if (gtk_notebook_get_n_pages(GTK_NOTEBOOK(w.notebook)) == 0) { gtk_main_quit(); } } - - +static void download(WebKitWebView *web_view, GObject *d, gpointer user_data) { + const gchar *c = webkit_download_get_uri(WEBKIT_DOWNLOAD(d)); + gchar *command = g_strconcat(defaultdownload, g_strdup(c), NULL); + puts(command); + g_spawn_command_line_async(command, NULL); +} static void link_hover_cb (WebKitWebView* page, const gchar* title, const gchar* link, gpointer data) { /* gchar *linkhover; if (link) update_title(NULL, link); @@ -115,6 +121,7 @@ static void tab_new() { g_signal_connect (G_OBJECT (t->view), "load-progress-changed", G_CALLBACK (progress_change_cb), t->view); g_signal_connect (G_OBJECT (t->view), "load-committed", G_CALLBACK (load_commit_cb), t->view); g_signal_connect (G_OBJECT (t->view), "hovering-over-link", G_CALLBACK (link_hover_cb), t->view); + g_signal_connect (G_OBJECT (t->view), "download-requested", G_CALLBACK (download), t->view); /*settings*/ g_object_set_qdata_full(G_OBJECT(gtk_notebook_get_nth_page((GtkNotebook*)w.notebook, index)), term_data_id, t, NULL); @@ -191,7 +198,7 @@ if (event->state == GDK_CONTROL_MASK) { if (gdk_keyval_to_lower(event->keyval) == GDK_w) { tab_close(); return TRUE; } if (gdk_keyval_to_lower(event->keyval) == GDK_bracketright) { tab_zoom(TRUE); return TRUE; } if (gdk_keyval_to_lower(event->keyval) == GDK_bracketleft) { tab_zoom(FALSE); return TRUE; } - if (gtk_widget_has_focus(w.bar) && gdk_keyval_to_lower(event->keyval) == GDK_Return) { load_uri(g_strconcat("http://www.google.com/search?q=", gtk_entry_get_text(GTK_ENTRY(w.bar)), NULL)); return TRUE; } + if (gtk_widget_has_focus(w.bar) && gdk_keyval_to_lower(event->keyval) == GDK_Return) { load_uri(g_strconcat(defaultsearchengine, gtk_entry_get_text(GTK_ENTRY(w.bar)), NULL)); return TRUE; } else { return FALSE; } } if (gtk_widget_has_focus(w.bar) && gdk_keyval_to_lower(event->keyval) == GDK_Escape) { gtk_widget_grab_focus(GTK_WIDGET(w.notebook)); return TRUE; } |