aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCalvin Morrison <mutantturke@gmail.com>2012-02-21 12:51:21 -0500
committerCalvin Morrison <mutantturke@gmail.com>2012-02-21 12:51:21 -0500
commit99eeabe5605099cfc80a71f7924e27662ca96fbc (patch)
tree331dbbf7e0d68896c0ca7bb5b1520f94c5a6b134
parentb69fdc25af59f23a4219f94e645370dc00dd6d74 (diff)
cleaned the crap out of the formatting, added some basic code rules
-rw-r--r--README21
-rw-r--r--callbacks.c162
-rw-r--r--callbacks.h2
-rw-r--r--sb.c350
4 files changed, 317 insertions, 218 deletions
diff --git a/README b/README
index 9bde93e..90d9c81 100644
--- a/README
+++ b/README
@@ -37,3 +37,24 @@ Please Note:
You will need dmenu with the vertical tiling patch, wget, xterm and sponge to use sb with its default configuration, you of course can use different programs if you want to.
Swing me some electronic mail MutantTurkey@gmail.com
+
+Coding Guidelines:
+
+Use 2 spaces for each level
+statements open bracket should be on the same line as the statement
+the close bracket should be on the same level of the statement
+all declared variabls shall have 1 line of whitespace after the function head, and then after another line
+
+Example
+
+function (char *foo, int bar) {
+
+ int cake = 1;
+
+ if( int == cake ) {
+ puts(foo);
+ }
+
+return TRUE;
+}
+
diff --git a/callbacks.c b/callbacks.c
index f91d80c..1daefc4 100644
--- a/callbacks.c
+++ b/callbacks.c
@@ -13,81 +13,108 @@
/* key press callback function. NEEDED: a config.h where keys are defined */
gboolean cb_keypress (GtkWidget *widget, GdkEventKey *event) {
-guint(g) = event->keyval;
-
-if ( (event->state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK ) {
- switch(g) {
- case GDK_KEY_l: grab_bar(); return TRUE; break;
- case GDK_KEY_f: show_search(TRUE); return TRUE; break;
- case GDK_KEY_g: tab_and_go(); return TRUE; break;
- case GDK_KEY_Back: cb_go(FALSE); return TRUE; break;
- case GDK_KEY_Forward: cb_go(TRUE); return TRUE; break;
- case GDK_KEY_comma: cb_go(FALSE); return TRUE; break;
- case GDK_KEY_period: cb_go(TRUE); return TRUE; break;
- case GDK_KEY_o: history_command(); return TRUE; break;
- case GDK_KEY_h: toggle(); focus_view(); return TRUE; break;
- case GDK_KEY_Page_Up: tab_switch(FALSE); return TRUE; break;
- case GDK_KEY_Page_Down: tab_switch(TRUE); return TRUE; break;
- case GDK_KEY_t: tab_new(FALSE); gtk_widget_grab_focus(w.bar); return TRUE; break;
- case GDK_KEY_w: tab_close(); return TRUE; break;
- case GDK_KEY_bracketright: tab_zoom(TRUE); return TRUE; break;
- case GDK_KEY_bracketleft: tab_zoom(FALSE); return TRUE; break;
- case GDK_KEY_r: tab_reload(TRUE); return TRUE; break;
- case GDK_KEY_e: tab_reload(FALSE); return TRUE; break;
- case GDK_KEY_s: tab_view_source(); return TRUE; break;
- case GDK_KEY_Return: load_uri(g_strconcat(DEFAULT_SEARCH, gtk_entry_get_text(GTK_ENTRY(w.bar)), NULL)); return TRUE; break;
- default: return FALSE; break;
+
+ guint(g) = event->keyval;
+
+ /* yes while this may look like it doesn't follow coding standards, I find this sane */
+ if ( (event->state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK ) {
+ switch(g) {
+ case GDK_KEY_l: grab_bar(); return TRUE; break;
+ case GDK_KEY_f: show_search(TRUE); return TRUE; break;
+ case GDK_KEY_g: tab_and_go(); return TRUE; break;
+ case GDK_KEY_Back: cb_go(FALSE); return TRUE; break;
+ case GDK_KEY_Forward: cb_go(TRUE); return TRUE; break;
+ case GDK_KEY_comma: cb_go(FALSE); return TRUE; break;
+ case GDK_KEY_period: cb_go(TRUE); return TRUE; break;
+ case GDK_KEY_o: history_command(); return TRUE; break;
+ case GDK_KEY_h: toggle(); focus_view(); return TRUE; break;
+ case GDK_KEY_Page_Up: tab_switch(FALSE); return TRUE; break;
+ case GDK_KEY_Page_Down: tab_switch(TRUE); return TRUE; break;
+ case GDK_KEY_t: tab_new(FALSE); gtk_widget_grab_focus(w.bar); return TRUE; break;
+ case GDK_KEY_w: tab_close(); return TRUE; break;
+ case GDK_KEY_bracketright: tab_zoom(TRUE); return TRUE; break;
+ case GDK_KEY_bracketleft: tab_zoom(FALSE); return TRUE; break;
+ case GDK_KEY_r: tab_reload(TRUE); return TRUE; break;
+ case GDK_KEY_e: tab_reload(FALSE); return TRUE; break;
+ case GDK_KEY_s: tab_view_source(); return TRUE; break;
+ case GDK_KEY_Return: load_uri(g_strconcat(DEFAULT_SEARCH, gtk_entry_get_text(GTK_ENTRY(w.bar)), NULL)); return TRUE; break;
+ default: return FALSE; break;
+ }
}
-}
+ if (gtk_widget_has_focus(w.bar) && g == GDK_KEY_Escape)
+ {
+ gtk_widget_grab_focus(GTK_WIDGET(w.notebook));
+ return TRUE;
+ }
-if (gtk_widget_has_focus(w.bar) && g == GDK_KEY_Escape) { gtk_widget_grab_focus(GTK_WIDGET(w.notebook)); return TRUE; }
-if (gtk_widget_has_focus(w.searchbar)) {
- if (g == GDK_KEY_Escape) { show_search(FALSE); focus_view(); return TRUE; }
- if ((g == GDK_KEY_Return) && (event->state & GDK_MOD1_MASK) == GDK_MOD1_MASK) { search(NULL, FALSE); }
-}
-return FALSE;
+ if (gtk_widget_has_focus(w.searchbar)) {
+ if (g == GDK_KEY_Escape) {
+ show_search(FALSE);
+ focus_view();
+ return TRUE;
+ }
+
+ if ((g == GDK_KEY_Return) && (event->state & GDK_MOD1_MASK) == GDK_MOD1_MASK)
+ {
+ search(NULL, FALSE);
+ }
+ }
+
+ return FALSE;
}
/* download callback */
void cb_download(WebKitWebView *web_view, GObject *d, gpointer user_data) {
- gchar *command;
-const gchar *download_url = webkit_download_get_uri(WEBKIT_DOWNLOAD(d));
-const gchar *requested_name = webkit_download_get_suggested_filename(WEBKIT_DOWNLOAD(d));
-command = g_new0(gchar, strlen(DEFAULT_DOWNLOAD_COMMAND) + strlen(DEFAULT_DOWNLOAD_LOCATION) + strlen(requested_name) + strlen(download_url) + 1);
-g_sprintf(command, DEFAULT_DOWNLOAD_COMMAND, DEFAULT_DOWNLOAD_LOCATION, requested_name, download_url);
+ gchar *command;
+ const gchar *download_url = webkit_download_get_uri(WEBKIT_DOWNLOAD(d));
+ const gchar *requested_name = webkit_download_get_suggested_filename(WEBKIT_DOWNLOAD(d));
-g_spawn_command_line_async(command, NULL);
-g_free(command);
+ command = g_new0(gchar, strlen(DEFAULT_DOWNLOAD_COMMAND) + strlen(DEFAULT_DOWNLOAD_LOCATION) + strlen(requested_name) + strlen(download_url) + 1);
+ g_sprintf(command, DEFAULT_DOWNLOAD_COMMAND, DEFAULT_DOWNLOAD_LOCATION, requested_name, download_url);
+ g_spawn_command_line_async(command, NULL);
+ g_free(command);
}
-
/* entry callback */
void cb_entry (GtkWidget* entry, gpointer data) {
-struct tab *t = get_tab(NULL, gtk_notebook_get_current_page(w.notebook));
-load_uri(g_strdup(gtk_entry_get_text (GTK_ENTRY (w.bar))));
-gtk_widget_grab_focus(GTK_WIDGET(t->view));
+
+ struct tab *t = get_tab(NULL, gtk_notebook_get_current_page(w.notebook));
-if(w.hide) {
- gtk_widget_hide(w.bar);
+ load_uri(g_strdup(gtk_entry_get_text (GTK_ENTRY (w.bar))));
+ gtk_widget_grab_focus(GTK_WIDGET(t->view));
+
+ if(w.hide) {
+ gtk_widget_hide(w.bar);
}
-w.hide = FALSE;
-
+
+ w.hide = FALSE;
}
/* link hovering callback */
void cb_link_hover (WebKitWebView* page, const gchar* title, const gchar* link, gpointer data) {
-if(link != NULL) { gtk_statusbar_push(GTK_STATUSBAR(w.status), 0, link); }
-else { gtk_statusbar_push(GTK_STATUSBAR(w.status), 0, ""); }
+
+ if(link != NULL) {
+ gtk_statusbar_push(GTK_STATUSBAR(w.status), 0, link);
+ }
+ else {
+ gtk_statusbar_push(GTK_STATUSBAR(w.status), 0, "");
+ }
}
/* go forward or backwards, simple enough */
void cb_go(gboolean b) {
-struct tab *t = get_tab(NULL, gtk_notebook_get_current_page(w.notebook));
-if (b) { webkit_web_view_go_forward(t->view); }
-else { webkit_web_view_go_back(t->view); }
+
+ struct tab *t = get_tab(NULL, gtk_notebook_get_current_page(w.notebook));
+
+ if (b) {
+ webkit_web_view_go_forward(t->view);
+ }
+ else {
+ webkit_web_view_go_back(t->view);
+ }
}
@@ -96,9 +123,10 @@ void cb_load_status (GObject* object, GParamSpec* pspec, tab *t) {
const gchar* uri = webkit_web_view_get_uri(t->view);
WebKitLoadStatus status = webkit_web_view_get_load_status(t->view);
+
switch(status) {
case WEBKIT_LOAD_PROVISIONAL:
- break;
+ break;
case WEBKIT_LOAD_COMMITTED:
if (gtk_notebook_get_current_page(w.notebook) == gtk_notebook_page_num(w.notebook, t->scroll)) {
@@ -106,9 +134,12 @@ void cb_load_status (GObject* object, GParamSpec* pspec, tab *t) {
}
FILE *history = fopen(g_build_filename(g_get_home_dir(), DEFAULT_HISTORY_FILE, NULL), "a+");
+
+ if(!history == NULL) {
fprintf(history, "%s \n", uri);
fclose(history);
-
+ }
+
break;
case WEBKIT_LOAD_FIRST_VISUALLY_NON_EMPTY_LAYOUT:
break;
@@ -118,20 +149,25 @@ void cb_load_status (GObject* object, GParamSpec* pspec, tab *t) {
break;
default:
break;
- }
-
+ }
}
-
/* title change callback */
void cb_title_changed(WebKitWebView *v, WebKitWebFrame *f, const char *title, tab *t) {
-gchar *tabtitle;
-if (gtk_notebook_get_current_page(w.notebook) == gtk_notebook_page_num(w.notebook, t->scroll)) {
-gtk_window_set_title(GTK_WINDOW(w.win), g_strconcat(title, NULL));
-}
-if(strlen(title) < DEFAULT_TAB_LENGTH ) { tabtitle = g_strdup(title); }
- else { tabtitle = g_strndup(title, DEFAULT_TAB_LENGTH); strcat(tabtitle, "..."); }
+ gchar *tabtitle;
+
+ if(gtk_notebook_get_current_page(w.notebook) == gtk_notebook_page_num(w.notebook, t->scroll)) {
+ gtk_window_set_title(GTK_WINDOW(w.win), g_strconcat(title, NULL));
+ }
+
+ if(strlen(title) < DEFAULT_TAB_LENGTH ) {
+ tabtitle = g_strdup(title);
+ }
+ else {
+ tabtitle = g_strndup(title, DEFAULT_TAB_LENGTH);
+ strcat(tabtitle, "...");
+ }
-gtk_label_set_label(GTK_LABEL(t->label), tabtitle);
+ gtk_label_set_label(GTK_LABEL(t->label), tabtitle);
}
diff --git a/callbacks.h b/callbacks.h
index 62f2e87..342a6ac 100644
--- a/callbacks.h
+++ b/callbacks.h
@@ -1,3 +1,5 @@
+/* all functions should use this format cb_CALLBACK */
+
gboolean cb_keypress(GtkWidget *widget, GdkEventKey *event);
void cb_entry(GtkWidget* entry, gpointer data);
void cb_link_hover(WebKitWebView* page, const gchar* title, const gchar* link, gpointer data);
diff --git a/sb.c b/sb.c
index 4a503d4..65ccee3 100644
--- a/sb.c
+++ b/sb.c
@@ -1,7 +1,9 @@
-// Simple browser my attempt at an even less-sucking browser than surf.
-//original code is from alot of places, gtkforums.com, gtkwebkit.org provided
-//alot of nice API examples :), and of course, surf (though i was careful not to steal any code because of the damned MIT/X license)
-//uzbl also helped inspire me. along with a previous surf fork named inferno.
+/* Simple browser my attempt at an even less-sucking browser than surf.
+ * original code is from alot of places, gtkforums.com, gtkwebkit.org provided
+ * alot of nice API examples :), and of course, surf (though i was careful not
+ * to steal any code because of the damned MIT/X license)
+ * uzbl also helped inspire me. along with a previous surf fork named inferno.
+*/
#include <gdk/gdkkeysyms.h>
#include <string.h>
@@ -14,24 +16,25 @@
#include "callbacks.h"
#include "sb.h"
-
gchar* tab_get_tab_postition() {
+
gchar *page_info = NULL;
-
- sprintf(page_info, "[ %d / %d ]", gtk_notebook_get_current_page(w.notebook), gtk_notebook_get_n_pages(w.notebook));
- puts(page_info);
+
+ sprintf(page_info, "[ %d / %d ]", gtk_notebook_get_current_page(w.notebook), gtk_notebook_get_n_pages(w.notebook));
+ puts(page_info);
return(page_info);
}
-
void search(GtkEntry *entry, gboolean b) {
+
struct tab *t = get_tab(NULL, gtk_notebook_get_current_page(w.notebook));
+
webkit_web_view_search_text(t->view, gtk_entry_get_text(GTK_ENTRY(w.searchbar)), FALSE, b, TRUE);
}
void show_search(gboolean b) {
-if(b) {
+ if(b) {
gtk_widget_show(w.searchbar);
gtk_widget_grab_focus(w.searchbar);
}
@@ -40,120 +43,147 @@ if(b) {
}
}
-
/* Basic reload function */
void tab_reload(gboolean b) {
-struct tab *t = get_tab(NULL, gtk_notebook_get_current_page(w.notebook));
+ struct tab *t = get_tab(NULL, gtk_notebook_get_current_page(w.notebook));
-if(b) {
- webkit_web_view_reload(t->view);
+ if(b) {
+ webkit_web_view_reload(t->view);
}
else {
- webkit_web_view_reload_bypass_cache(t->view);
+ webkit_web_view_reload_bypass_cache(t->view);
}
}
-
/* close tab, and quit if there are no tabs */
void tab_close() {
-struct tab *t = get_tab(NULL, gtk_notebook_get_current_page(w.notebook));
-gtk_notebook_remove_page(w.notebook, gtk_notebook_get_current_page(w.notebook));
-g_free(t);
+ struct tab *t = get_tab(NULL, gtk_notebook_get_current_page(w.notebook));
-if(gtk_notebook_get_n_pages(w.notebook) == 1) {
- gtk_notebook_set_show_tabs(w.notebook, FALSE);
- gtk_widget_grab_focus(gtk_notebook_get_nth_page(w.notebook, gtk_notebook_get_current_page(w.notebook)));
- focus_view();
+ gtk_notebook_remove_page(w.notebook, gtk_notebook_get_current_page(w.notebook));
+ g_free(t);
+
+ if(gtk_notebook_get_n_pages(w.notebook) == 1) {
+ gtk_notebook_set_show_tabs(w.notebook, FALSE);
+ gtk_widget_grab_focus(gtk_notebook_get_nth_page(w.notebook, gtk_notebook_get_current_page(w.notebook)));
+ focus_view();
}
-if(gtk_notebook_get_n_pages(w.notebook) == 0) {
- gtk_main_quit();
+ if(gtk_notebook_get_n_pages(w.notebook) == 0) {
+ gtk_main_quit();
}
}
-
/* an alternative to the regular tab command, combines tabbing and history command into one */
void tab_and_go() {
-gchar *returned;
-g_spawn_command_line_sync(g_strconcat("sh -c 'sort ", g_build_filename(g_get_home_dir(), ".sb_history", NULL), " | dmenu -l 15 -xs -c'", NULL), &returned, NULL, NULL, NULL);
-if(strcmp(returned, "") == 0) { focus_view(); }
-else { tab_new(FALSE); load_uri(returned); g_free(returned); }
+ gchar *returned;
+
+ g_spawn_command_line_sync(g_strconcat("sh -c 'sort ", g_build_filename(g_get_home_dir(), ".sb_history", NULL),
+ " | dmenu -l 15 -xs -c'", NULL), &returned, NULL, NULL, NULL);
+
+ if(strcmp(returned, "") == 0) {
+ focus_view();
+ }
+ else {
+ tab_new(FALSE);
+ load_uri(returned);
+ g_free(returned);
+ }
}
/* loads the uri, check for the protocol sign */
void load_uri(gchar *uri) {
-gchar *u;
-//Barrowed from surf, no point creating another method, this seems to work well
-struct tab *t = get_tab(NULL, gtk_notebook_get_current_page(w.notebook));
-u = g_strrstr(uri, "://") ? g_strdup(uri)
-: g_strdup_printf("http://%s", uri);
-webkit_web_view_load_uri(t->view, u);
-g_free(u);
-}
+ gchar *u;
+ struct tab *t = get_tab(NULL, gtk_notebook_get_current_page(w.notebook));
+
+ /*Borrowed from surf, no point creating another method, this seems to work well */
+ u = g_strrstr(uri, "://") ? g_strdup(uri) : g_strdup_printf("http://%s", uri);
+ webkit_web_view_load_uri(t->view, u);
+ g_free(u);
+}
/*increase or decrease the zoom of the page */
void tab_zoom (gboolean b) {
+
struct tab *t = get_tab(NULL, gtk_notebook_get_current_page(w.notebook));
- if (b) { webkit_web_view_set_zoom_level(t->view, (webkit_web_view_get_zoom_level(t->view) + DEFAULT_ZOOM_INCREMENT)); }
- else { webkit_web_view_set_zoom_level(t->view, (webkit_web_view_get_zoom_level(t->view) - DEFAULT_ZOOM_INCREMENT)); }
-}
+ if (b) {
+ webkit_web_view_set_zoom_level(t->view, (webkit_web_view_get_zoom_level(t->view) + DEFAULT_ZOOM_INCREMENT));
+ }
+ else {
+ webkit_web_view_set_zoom_level(t->view, (webkit_web_view_get_zoom_level(t->view) - DEFAULT_ZOOM_INCREMENT));
+ }
+}
/* if the bar isn't visible, show it and set the w.hide flag to TRUE*/
void grab_bar( ) {
-if(!gtk_widget_get_visible(w.bar)) {
- gtk_widget_show(w.bar);
- w.hide = TRUE;
- }
+
+ if(!gtk_widget_get_visible(w.bar)) {
+ gtk_widget_show(w.bar);
+ w.hide = TRUE;
+ }
+
gtk_widget_grab_focus(GTK_WIDGET(w.bar));
}
-
/* toggle visibility */
void toggle() {
- if(gtk_widget_get_visible(w.bar)) {
+
+ if(gtk_widget_get_visible(w.bar)) {
gtk_widget_hide(w.bar);
gtk_widget_hide(w.status);
gtk_notebook_set_show_tabs(w.notebook, FALSE);
- }
- else {
+ }
+ else {
gtk_widget_show_all(w.vbox);
gtk_widget_hide(w.searchbar);
- if (gtk_notebook_get_n_pages(w.notebook) == 1) { } else { gtk_notebook_set_show_tabs(w.notebook, TRUE);}
- }
+
+ if (!gtk_notebook_get_n_pages(w.notebook) == 1) {
+ gtk_notebook_set_show_tabs(w.notebook, TRUE);
+ }
+ }
}
/* rotate tabs forward or backwards */
void tab_switch(gboolean b) {
-gint(current) = gtk_notebook_get_current_page(w.notebook);
+ gint(current) = gtk_notebook_get_current_page(w.notebook);
if(b) {
- if (current == gtk_notebook_get_n_pages(w.notebook) -1 ) { current = 0; }
- else { current = current + 1;}
+
+ if (current == gtk_notebook_get_n_pages(w.notebook) -1 ) {
+ current = 0;
+ }
+ else {
+ current = current + 1;
+ }
}
else {
- if (current == 0) { current = gtk_notebook_get_n_pages(w.notebook) - 1; }
- else {current = current -1; }
+
+ if (current == 0) {
+ current = gtk_notebook_get_n_pages(w.notebook) - 1;
+ }
+ else {
+ current = current -1;
+ }
}
- gtk_notebook_set_current_page(w.notebook, current);
-}
+ gtk_notebook_set_current_page(w.notebook, current);
+}
/* when a new tab is requested, return the t->view */
WebKitWebView * tab_new_requested(WebKitWebView *v, WebKitWebFrame *f) {
- puts("lol");
+
tab_new(FALSE);
struct tab *t = get_tab(NULL, gtk_notebook_get_current_page(w.notebook));
+
return t->view;
}
-
/* switch to view source mode - stays in mode until reverted */
void tab_view_source() {
@@ -162,7 +192,6 @@ void tab_view_source() {
if(webkit_web_view_get_view_source_mode(t->view)) {
webkit_web_view_set_view_source_mode(t->view, FALSE);
}
-
else {
webkit_web_view_set_view_source_mode(t->view, TRUE);
}
@@ -170,93 +199,109 @@ void tab_view_source() {
webkit_web_view_reload(t->view);
}
-
/* create a tab */
void tab_new(gboolean b) {
-gchar *stylesheet;
-tab *t;
-t = g_new0(tab, 1);
+ gchar *stylesheet;
+ tab *t;
+ t = g_new0(tab, 1);
-t->scroll = gtk_scrolled_window_new(NULL, NULL);
-t->view = WEBKIT_WEB_VIEW(webkit_web_view_new ());
-t->label = gtk_label_new("new tab");
+ t->scroll = gtk_scrolled_window_new(NULL, NULL);
+ t->view = WEBKIT_WEB_VIEW(webkit_web_view_new ());
+ t->label = gtk_label_new("new tab");
-/*reset status bar*/
-gtk_container_add(GTK_CONTAINER(t->scroll), GTK_WIDGET(t->view));
+ /*reset status bar*/
+ gtk_container_add(GTK_CONTAINER(t->scroll), GTK_WIDGET(t->view));
-int index = gtk_notebook_append_page(w.notebook, t->scroll, t->label);
-gtk_notebook_set_tab_reorderable(w.notebook, t->scroll, TRUE);
-
-if (index == 0) {
-gtk_notebook_set_show_tabs(w.notebook, FALSE);
-} else { gtk_notebook_set_show_tabs(w.notebook, TRUE); }
+ int index = gtk_notebook_append_page(w.notebook, t->scroll, t->label);
+ gtk_notebook_set_tab_reorderable(w.notebook, t->scroll, TRUE);
+ if (index == 0) {
+ gtk_notebook_set_show_tabs(w.notebook, FALSE);
+ }
+ else {
+ gtk_notebook_set_show_tabs(w.notebook, TRUE);
+ }
-/*callbacks*/
-g_object_connect (G_OBJECT (t->view), "signal::title-changed", G_CALLBACK (cb_title_changed), t,
+ /*callbacks*/
+ g_object_connect (G_OBJECT (t->view), "signal::title-changed", G_CALLBACK (cb_title_changed), t,
"signal::notify::load-status", G_CALLBACK (cb_load_status), t,
"signal::hovering-over-link", G_CALLBACK (cb_link_hover), t->view,
"signal::download-requested", G_CALLBACK (cb_download), t->view,
- "signal::create-web-view", G_CALLBACK (tab_new_requested), NULL, NULL);
-/*settings*/
-
-webkit_web_view_set_highlight_text_matches(t->view, TRUE);
-webkit_web_view_set_zoom_level(t->view, DEFAULT_ZOOM_LEVEL);
-gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(t->scroll), GTK_POLICY_NEVER, GTK_POLICY_NEVER);
+ "signal::create-web-view", G_CALLBACK (tab_new_requested), NULL, NULL);
+
+ /*settings*/
+ webkit_web_view_set_highlight_text_matches(t->view, TRUE);
+ webkit_web_view_set_zoom_level(t->view, DEFAULT_ZOOM_LEVEL);
+
+ /* this doesn't actually work - because webkit draws them not GTK or something.. */
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(t->scroll), GTK_POLICY_NEVER, GTK_POLICY_NEVER);
-stylesheet = g_strconcat("file://", g_get_home_dir(), "/", DEFAULT_STYLE_SHEET, NULL);
+ stylesheet = g_strconcat("file://", g_get_home_dir(), "/", DEFAULT_STYLE_SHEET, NULL);
-g_object_set(G_OBJECT(w.webkitsettings), "disable-page-cache", TRUE,
- "enable-java-applet", FALSE,
- "user-stylesheet-uri", stylesheet , NULL);
-g_free(stylesheet);
+ g_object_set(G_OBJECT(w.webkitsettings), "disable-page-cache", TRUE,
+ "enable-java-applet", FALSE,
+ "user-stylesheet-uri", stylesheet , NULL);
+ g_free(stylesheet);
+ /* setup widgets, automatically focus the addressbar */
-/* setup widgets */
+ gtk_statusbar_push(GTK_STATUSBAR(w.status), 0, "");
+ g_object_set_qdata_full(G_OBJECT(gtk_notebook_get_nth_page((GtkNotebook*)w.notebook, index)), term_data_id, t, NULL);
-gtk_statusbar_push(GTK_STATUSBAR(w.status), 0, "");
-g_object_set_qdata_full(G_OBJECT(gtk_notebook_get_nth_page((GtkNotebook*)w.notebook, index)), term_data_id, t, NULL);
+ gtk_widget_show_all(w.win);
+ gtk_widget_hide(w.searchbar);
+
+ if (!b) {
+ gtk_notebook_set_current_page(w.notebook, index);
+ }
-gtk_widget_show_all(w.win);
-gtk_widget_hide(w.searchbar);
-if (!b) { gtk_notebook_set_current_page(w.notebook, index); }
-gtk_widget_grab_focus(w.bar);
+ gtk_widget_grab_focus(w.bar);
}
/* call the history command. should we do it ASYNC?*/
void history_command() {
-gchar *returned, *file, *command;
-file = g_build_filename(g_get_home_dir(), DEFAULT_HISTORY_FILE, NULL);
-command = g_strconcat("sh -c 'sort ", file, " | dmenu -l 15 -xs -c'", NULL);
-g_spawn_command_line_sync(command, &returned, NULL, NULL, NULL);
-if(strcmp(returned, "") == 0) { focus_view(); } else { load_uri(returned); }
-
-g_free(returned);
-g_free(file);
-g_free(command);
-}
+ gchar *returned;
+ gchar *file;
+ gchar *command;
+
+ file = g_build_filename(g_get_home_dir(), DEFAULT_HISTORY_FILE, NULL);
+ command = g_strconcat("sh -c 'sort ", file, " | dmenu -l 15 -xs -c'", NULL);
+
+ g_spawn_command_line_sync(command, &returned, NULL, NULL, NULL);
+
+ if(strcmp(returned, "") == 0) {
+ focus_view();
+ }
+ else {
+ load_uri(returned);
+ }
+
+ g_free(returned);
+ g_free(file);
+ g_free(command);
+}
/*focus on tab after switching, aka title, statusbar, view, etc */
void tab_focus(GtkNotebook *notebook, GtkWidget *page, guint page_num, gpointer user_data) {
-gtk_statusbar_push(GTK_STATUSBAR(w.status), 0, "");
-struct tab *t = get_tab(NULL, page_num);
+ const char *url = webkit_web_view_get_uri(t->view);
+ const char *title = webkit_web_view_get_title(t->view);
+
-const char *url = webkit_web_view_get_uri(t->view);
-const char *title = webkit_web_view_get_title(t->view);
+ gtk_statusbar_push(GTK_STATUSBAR(w.status), 0, "");
-if (title == NULL && url == NULL) {
-title = "sb";
-url = "";
-}
-gtk_window_set_title(GTK_WINDOW(w.win), title);
-gtk_entry_set_text(GTK_ENTRY(w.bar), url);
-}
+ if (title == NULL && url == NULL) {
+ title = "sb";
+ url = "";
+ }
+ gtk_window_set_title(GTK_WINDOW(w.win), title);
+ gtk_entry_set_text(GTK_ENTRY(w.bar), url);
+}
/* focus on view */
void focus_view() {
@@ -264,60 +309,55 @@ void focus_view() {
gtk_widget_grab_focus(GTK_WIDGET(t->view));
}
-
/* misc functions to help initialization */
void window_setup() {
-term_data_id = g_quark_from_static_string("s");
-
-w.vbox = gtk_vbox_new(FALSE, 0);
-w.hbox = gtk_hbox_new(FALSE, 0);
+ term_data_id = g_quark_from_static_string("s");
-w.notebook = gtk_notebook_new();
-w.bar = gtk_entry_new ();
-w.searchbar = gtk_entry_new();
-w.status = gtk_statusbar_new();
+ w.vbox = gtk_vbox_new(FALSE, 0);
+ w.hbox = gtk_hbox_new(FALSE, 0);
-gtk_entry_set_has_frame(GTK_ENTRY(w.bar), FALSE);
+ w.notebook = gtk_notebook_new();
+ w.bar = gtk_entry_new ();
+ w.searchbar = gtk_entry_new();
+ w.status = gtk_statusbar_new();
-gtk_notebook_set_scrollable(w.notebook, TRUE);
-gtk_notebook_set_show_border(w.notebook, FALSE);
-//gtk_notebook_set_tab_border(w.notebook, 0);
+ gtk_entry_set_has_frame(GTK_ENTRY(w.bar), FALSE);
+ gtk_notebook_set_scrollable(w.notebook, TRUE);
+ gtk_notebook_set_show_border(w.notebook, FALSE);
+ gtk_box_pack_start(GTK_BOX (w.vbox), w.bar, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(w.vbox), GTK_WIDGET(w.notebook), TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(w.vbox), w.searchbar, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(w.vbox), w.status, FALSE, FALSE, 0);
-gtk_box_pack_start(GTK_BOX (w.vbox), w.bar, FALSE, FALSE, 0);
-gtk_box_pack_start(GTK_BOX(w.vbox), GTK_WIDGET(w.notebook), TRUE, TRUE, 0);
-gtk_box_pack_start(GTK_BOX(w.vbox), w.searchbar, FALSE, FALSE, 0);
-gtk_box_pack_start(GTK_BOX(w.vbox), w.status, FALSE, FALSE, 0);
-//gtk_box_pack_start(GTK_BOX(w.hbox), w.status, TRUE, FALSE, 0);
-
-w.win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-gtk_window_set_default_size(GTK_WINDOW(w.win), DEFAULT_HEIGHT, DEFAULT_WIDTH);
-w.webkitsettings = webkit_web_settings_new();
-w.webkitwindowfeatures = webkit_web_window_features_new();
+ w.win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_default_size(GTK_WINDOW(w.win), DEFAULT_HEIGHT, DEFAULT_WIDTH);
+
+ w.webkitsettings = webkit_web_settings_new();
+ w.webkitwindowfeatures = webkit_web_window_features_new();
-w.session = webkit_get_default_session();
-w.jar = soup_cookie_jar_text_new(g_build_filename(g_get_home_dir(), DEFAULT_COOKIE_FILE, NULL), FALSE);
-soup_session_add_feature(w.session, SOUP_SESSION_FEATURE(w.jar));
+ w.session = webkit_get_default_session();
+ w.jar = soup_cookie_jar_text_new(g_build_filename(g_get_home_dir(), DEFAULT_COOKIE_FILE, NULL), FALSE);
+ soup_session_add_feature(w.session, SOUP_SESSION_FEATURE(w.jar));
-tab_new(FALSE);
+ tab_new(FALSE);
-g_signal_connect (G_OBJECT (w.searchbar), "activate", G_CALLBACK (search), GINT_TO_POINTER(1));
-g_signal_connect (G_OBJECT (w.bar), "activate", G_CALLBACK (cb_entry), NULL);
-g_signal_connect (G_OBJECT(w.notebook), "switch-page", G_CALLBACK(tab_focus), NULL);
-g_signal_connect (G_OBJECT (w.win), "destroy", G_CALLBACK (gtk_main_quit), NULL);
-g_signal_connect(w.win, "key-press-event", G_CALLBACK(cb_keypress), NULL);
+ g_signal_connect (G_OBJECT (w.searchbar), "activate", G_CALLBACK (search), GINT_TO_POINTER(1));
+ g_signal_connect (G_OBJECT (w.bar), "activate", G_CALLBACK (cb_entry), NULL);
+ g_signal_connect (G_OBJECT(w.notebook), "switch-page", G_CALLBACK(tab_focus), NULL);
+ g_signal_connect (G_OBJECT (w.win), "destroy", G_CALLBACK (gtk_main_quit), NULL);
+ g_signal_connect(w.win, "key-press-event", G_CALLBACK(cb_keypress), NULL);
-gtk_container_add (GTK_CONTAINER (w.win), w.vbox);
-gtk_widget_show_all (w.win);
-gtk_widget_hide(w.searchbar);
-gtk_widget_grab_focus(w.bar);
+ gtk_container_add (GTK_CONTAINER (w.win), w.vbox);
+ gtk_widget_show_all (w.win);
+ gtk_widget_hide(w.searchbar);
+ gtk_widget_grab_focus(w.bar);
}
-
/* main function */
int main (int argc, char* argv[]) {
gtk_init (&argc, &argv);
@@ -328,4 +368,4 @@ if (argc == 2) { load_uri(argv[1]); }
gtk_main();
return 0;
-}
+} \ No newline at end of file