From de790af53e5daea83ab046a6ef02859ae88596e2 Mon Sep 17 00:00:00 2001 From: Dieter Plaetinck Date: Sat, 25 Apr 2009 16:47:22 +0200 Subject: make output format bit more uniform --- uzbl.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'uzbl.c') diff --git a/uzbl.c b/uzbl.c index 7499062..b3142cd 100644 --- a/uzbl.c +++ b/uzbl.c @@ -130,7 +130,7 @@ static void printf ("Possible error creating fifo\n"); } - printf ("Opened control fifo in %s\n", fifopath); + printf ("ontrol fifo opened in %s\n", fifopath); while (true) { @@ -336,7 +336,7 @@ int main (int argc, char* argv[]) } history_file = g_key_file_get_value (config, "behavior", "history_file", NULL); if(history_file) { - printf("setting history file to: %s\n",history_file); + printf("history file: %s\n",history_file); } else { printf("history logging disabled\n"); } @@ -362,8 +362,8 @@ int main (int argc, char* argv[]) gtk_widget_grab_focus (GTK_WIDGET (web_view)); gtk_widget_show_all (main_window); xwin = GDK_WINDOW_XID (GTK_WIDGET (main_window)->window); - printf("My X window id is %i\n",(int) xwin); - + printf("window_id %i\n",(int) xwin); + printf("pid %i\n", getpid ()); setup_commands (); setup_threading (); -- cgit v1.2.3 From 7bbbcff7db94282d57f7c8824ec1c46c8f7aa18e Mon Sep 17 00:00:00 2001 From: Dieter Plaetinck Date: Sat, 25 Apr 2009 16:50:44 +0200 Subject: use x window id for fifo, not pid --- uzbl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'uzbl.c') diff --git a/uzbl.c b/uzbl.c index b3142cd..6c39e4f 100644 --- a/uzbl.c +++ b/uzbl.c @@ -118,11 +118,11 @@ static void { if (fifodir) { - sprintf (fifopath, "%s/uzbl_%d", fifodir, getpid ()); + sprintf (fifopath, "%s/uzbl_%d", fifodir, (int) xwin); } else { - sprintf (fifopath, "/tmp/uzbl_%d", getpid ()); + sprintf (fifopath, "/tmp/uzbl_%d", (int) xwin); } if (mkfifo (fifopath, 0666) == -1) -- cgit v1.2.3 From 0cd86f6fd4304f353e0674cc59a0e7e0f8c25fee Mon Sep 17 00:00:00 2001 From: Dieter Plaetinck Date: Sat, 25 Apr 2009 16:57:23 +0200 Subject: type fixes --- uzbl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'uzbl.c') diff --git a/uzbl.c b/uzbl.c index 6c39e4f..b3d03b1 100644 --- a/uzbl.c +++ b/uzbl.c @@ -49,7 +49,7 @@ static gchar* fifodir = NULL; static char fifopath[64]; static gint load_progress; static guint status_context_id; -static Window xwin = NULL; +static Window xwin = 0; static gchar* uri = NULL; static gboolean verbose = FALSE; @@ -208,7 +208,7 @@ log_history_cb () { static void activate_uri_entry_cb (GtkWidget* entry, gpointer data) { - uri = gtk_entry_get_text (GTK_ENTRY (entry)); + const gchar * uri = gtk_entry_get_text (GTK_ENTRY (entry)); g_assert (uri); webkit_web_view_load_uri (web_view, uri); } -- cgit v1.2.3 From 983d5f20989c9b22676807b2aef39f8f245464e2 Mon Sep 17 00:00:00 2001 From: Dieter Plaetinck Date: Sat, 25 Apr 2009 17:24:31 +0200 Subject: use the callbacks instead of immediate webkit functions when parsing incomming commands + reorganize code a bit --- uzbl.c | 174 +++++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 89 insertions(+), 85 deletions(-) (limited to 'uzbl.c') diff --git a/uzbl.c b/uzbl.c index b3d03b1..e7fcff2 100644 --- a/uzbl.c +++ b/uzbl.c @@ -54,7 +54,6 @@ static gchar* uri = NULL; static gboolean verbose = FALSE; - static GOptionEntry entries[] = { { "uri", 'u', 0, G_OPTION_ARG_STRING, &uri, "Uri to load", NULL }, @@ -72,8 +71,92 @@ static struct command commands[256]; static int numcmds = 0; static void -parse_command(const char*); +update_title (GtkWindow* window); + + +/* --- CALLBACKS --- */ + +static void +go_back_cb (GtkWidget* widget, gpointer data) +{ + webkit_web_view_go_back (web_view); +} + +static void +go_forward_cb (GtkWidget* widget, gpointer data) +{ + webkit_web_view_go_forward (web_view); +} + + +static void +link_hover_cb (WebKitWebView* page, const gchar* title, const gchar* link, gpointer data) +{ + /* underflow is allowed */ + //gtk_statusbar_pop (main_statusbar, status_context_id); + //if (link) + // gtk_statusbar_push (main_statusbar, status_context_id, link); + //TODO implementation roadmap pending.. +} + +static void +title_change_cb (WebKitWebView* web_view, WebKitWebFrame* web_frame, const gchar* title, gpointer data) +{ + if (main_title) + g_free (main_title); + main_title = g_strdup (title); + update_title (GTK_WINDOW (main_window)); +} + +static void +progress_change_cb (WebKitWebView* page, gint progress, gpointer data) +{ + load_progress = progress; + update_title (GTK_WINDOW (main_window)); +} + +static void +load_commit_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data) +{ + const gchar* uri = webkit_web_frame_get_uri(frame); + if (uri) + gtk_entry_set_text (GTK_ENTRY (uri_entry), uri); +} + +static void +destroy_cb (GtkWidget* widget, gpointer data) +{ + gtk_main_quit (); +} + +static void +activate_uri_entry_cb (GtkWidget* entry, gpointer data) +{ + const gchar * uri = gtk_entry_get_text (GTK_ENTRY (entry)); + g_assert (uri); + webkit_web_view_load_uri (web_view, uri); +} + +static void +log_history_cb () { + FILE * output_file = fopen(history_file, "a"); + if (output_file == NULL) { + fprintf(stderr, "Cannot open %s for logging\n", history_file); + } else { + time_t rawtime; + struct tm * timeinfo; + char buffer [80]; + time ( &rawtime ); + timeinfo = localtime ( &rawtime ); + strftime (buffer,80,"%Y-%m-%d %H:%M:%S",timeinfo); + + fprintf(output_file, "%s %s\n",buffer, uri); + fclose(output_file); + } +} + +/* -- CORE FUNCTIONS -- */ static void parse_command(const char *command) @@ -85,8 +168,6 @@ parse_command(const char *command) strcpy(cmdstr, command); - done = false; - printf("Checking commands\n"); for (i = 0; i < numcmds && ! done; i++) { if (!strncmp (cmdstr, commands[i].command, strlen (commands[i].command))) @@ -96,7 +177,7 @@ parse_command(const char *command) } } - printf("Command identified as \"%s\"\n", cmdstr); + printf("command received: \"%s\"\n", cmdstr); if (done) { @@ -169,12 +250,12 @@ setup_commands () { // This func. is nice but currently it cannot be used for functions that require arguments or return data. --sentientswitch // TODO: reload, home - add_command("back", &webkit_web_view_go_back); - add_command("forward", &webkit_web_view_go_forward); + add_command("back", &go_back_cb); + add_command("forward", &go_forward_cb); add_command("refresh", &webkit_web_view_reload); //Buggy add_command("stop", &webkit_web_view_stop_loading); add_command("zoom_in", &webkit_web_view_zoom_in); //Can crash (when max zoom reached?). - add_command("zoom_out", &webkit_web_view_zoom_out); //Crashes as zoom + + add_command("zoom_out", &webkit_web_view_zoom_out); //add_command("get uri", &webkit_web_view_get_uri); } @@ -186,32 +267,7 @@ setup_threading () } -static void -log_history_cb () { - FILE * output_file = fopen(history_file, "a"); - if (output_file == NULL) { - fprintf(stderr, "Cannot open %s for logging\n", history_file); - } else { - time_t rawtime; - struct tm * timeinfo; - char buffer [80]; - time ( &rawtime ); - timeinfo = localtime ( &rawtime ); - strftime (buffer,80,"%Y-%m-%d %H:%M:%S",timeinfo); - - fprintf(output_file, "%s %s\n",buffer, uri); - fclose(output_file); - } -} - -static void -activate_uri_entry_cb (GtkWidget* entry, gpointer data) -{ - const gchar * uri = gtk_entry_get_text (GTK_ENTRY (entry)); - g_assert (uri); - webkit_web_view_load_uri (web_view, uri); -} static void update_title (GtkWindow* window) @@ -225,58 +281,6 @@ update_title (GtkWindow* window) g_free (title); } -static void -link_hover_cb (WebKitWebView* page, const gchar* title, const gchar* link, gpointer data) -{ - /* underflow is allowed */ - //gtk_statusbar_pop (main_statusbar, status_context_id); - //if (link) - // gtk_statusbar_push (main_statusbar, status_context_id, link); - //TODO implementation roadmap pending.. -} - -static void -title_change_cb (WebKitWebView* web_view, WebKitWebFrame* web_frame, const gchar* title, gpointer data) -{ - if (main_title) - g_free (main_title); - main_title = g_strdup (title); - update_title (GTK_WINDOW (main_window)); -} - -static void -progress_change_cb (WebKitWebView* page, gint progress, gpointer data) -{ - load_progress = progress; - update_title (GTK_WINDOW (main_window)); -} - -static void -load_commit_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data) -{ - const gchar* uri = webkit_web_frame_get_uri(frame); - if (uri) - gtk_entry_set_text (GTK_ENTRY (uri_entry), uri); -} - -static void -destroy_cb (GtkWidget* widget, gpointer data) -{ - gtk_main_quit (); -} - -static void -go_back_cb (GtkWidget* widget, gpointer data) -{ - webkit_web_view_go_back (web_view); -} - -static void -go_forward_cb (GtkWidget* widget, gpointer data) -{ - webkit_web_view_go_forward (web_view); -} - static GtkWidget* create_browser () { -- cgit v1.2.3 From a234f04195dcfccb7b052b560e8d6753ffcd866b Mon Sep 17 00:00:00 2001 From: Dieter Plaetinck Date: Sat, 25 Apr 2009 17:27:46 +0200 Subject: code style --- uzbl.c | 102 ++++++++++++++++++++++------------------------------------------- 1 file changed, 35 insertions(+), 67 deletions(-) (limited to 'uzbl.c') diff --git a/uzbl.c b/uzbl.c index e7fcff2..6f7ce88 100644 --- a/uzbl.c +++ b/uzbl.c @@ -77,21 +77,18 @@ update_title (GtkWindow* window); /* --- CALLBACKS --- */ static void -go_back_cb (GtkWidget* widget, gpointer data) -{ +go_back_cb (GtkWidget* widget, gpointer data) { webkit_web_view_go_back (web_view); } static void -go_forward_cb (GtkWidget* widget, gpointer data) -{ +go_forward_cb (GtkWidget* widget, gpointer data) { webkit_web_view_go_forward (web_view); } static void -link_hover_cb (WebKitWebView* page, const gchar* title, const gchar* link, gpointer data) -{ +link_hover_cb (WebKitWebView* page, const gchar* title, const gchar* link, gpointer data) { /* underflow is allowed */ //gtk_statusbar_pop (main_statusbar, status_context_id); //if (link) @@ -100,8 +97,7 @@ link_hover_cb (WebKitWebView* page, const gchar* title, const gchar* link, gpoin } static void -title_change_cb (WebKitWebView* web_view, WebKitWebFrame* web_frame, const gchar* title, gpointer data) -{ +title_change_cb (WebKitWebView* web_view, WebKitWebFrame* web_frame, const gchar* title, gpointer data) { if (main_title) g_free (main_title); main_title = g_strdup (title); @@ -109,29 +105,25 @@ title_change_cb (WebKitWebView* web_view, WebKitWebFrame* web_frame, const gchar } static void -progress_change_cb (WebKitWebView* page, gint progress, gpointer data) -{ +progress_change_cb (WebKitWebView* page, gint progress, gpointer data) { load_progress = progress; update_title (GTK_WINDOW (main_window)); } static void -load_commit_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data) -{ +load_commit_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data) { const gchar* uri = webkit_web_frame_get_uri(frame); if (uri) gtk_entry_set_text (GTK_ENTRY (uri_entry), uri); } static void -destroy_cb (GtkWidget* widget, gpointer data) -{ +destroy_cb (GtkWidget* widget, gpointer data) { gtk_main_quit (); } static void -activate_uri_entry_cb (GtkWidget* entry, gpointer data) -{ +activate_uri_entry_cb (GtkWidget* entry, gpointer data) { const gchar * uri = gtk_entry_get_text (GTK_ENTRY (entry)); g_assert (uri); webkit_web_view_load_uri (web_view, uri); @@ -159,8 +151,7 @@ log_history_cb () { /* -- CORE FUNCTIONS -- */ static void -parse_command(const char *command) -{ +parse_command(const char *command) { int i = 0; bool done = false; char *cmdstr; @@ -168,10 +159,8 @@ parse_command(const char *command) strcpy(cmdstr, command); - for (i = 0; i < numcmds && ! done; i++) - { - if (!strncmp (cmdstr, commands[i].command, strlen (commands[i].command))) - { + for (i = 0; i < numcmds && ! done; i++) { + if (!strncmp (cmdstr, commands[i].command, strlen (commands[i].command))) { func = commands[i].func; done = true; } @@ -179,14 +168,10 @@ parse_command(const char *command) printf("command received: \"%s\"\n", cmdstr); - if (done) - { + if (done) { func (web_view); - } - else - { - if (!strncmp ("http://", command, 7)) - { + } else { + if (!strncmp ("http://", command, 7)) { printf ("Loading URI \"%s\"\n", command); strcpy(uri, command); webkit_web_view_load_uri (web_view, uri); @@ -195,39 +180,30 @@ parse_command(const char *command) } static void -*control_fifo() -{ - if (fifodir) - { +*control_fifo() { + if (fifodir) { sprintf (fifopath, "%s/uzbl_%d", fifodir, (int) xwin); - } - else - { + } else { sprintf (fifopath, "/tmp/uzbl_%d", (int) xwin); } - if (mkfifo (fifopath, 0666) == -1) - { + if (mkfifo (fifopath, 0666) == -1) { printf ("Possible error creating fifo\n"); } printf ("ontrol fifo opened in %s\n", fifopath); - while (true) - { + while (true) { FILE *fifo = fopen(fifopath, "r"); - if (!fifo) - { + if (!fifo) { printf("Could not open %s for reading\n", fifopath); return NULL; } char buffer[256]; memset (buffer, 0, sizeof (buffer)); - while (!feof (fifo) && fgets (buffer, sizeof (buffer), fifo)) - { - if (strcmp (buffer, "\n")) - { + while (!feof (fifo) && fgets (buffer, sizeof (buffer), fifo)) { + if (strcmp (buffer, "\n")) { buffer[strlen (buffer) - 1] = '\0'; // Remove newline parse_command (buffer); } @@ -238,16 +214,14 @@ static void } static void -add_command (char* cmdstr, void* function) -{ +add_command (char* cmdstr, void* function) { strncpy (commands[numcmds].command, cmdstr, strlen (cmdstr)); commands[numcmds].func = function; numcmds++; } static void -setup_commands () -{ +setup_commands () { // This func. is nice but currently it cannot be used for functions that require arguments or return data. --sentientswitch // TODO: reload, home add_command("back", &go_back_cb); @@ -260,8 +234,7 @@ setup_commands () } static void -setup_threading () -{ +setup_threading () { pthread_t control_thread; pthread_create(&control_thread, NULL, control_fifo, NULL); } @@ -270,8 +243,7 @@ setup_threading () static void -update_title (GtkWindow* window) -{ +update_title (GtkWindow* window) { GString* string = g_string_new (main_title); g_string_append (string, " - Uzbl browser"); if (load_progress < 100) @@ -282,8 +254,7 @@ update_title (GtkWindow* window) } static GtkWidget* -create_browser () -{ +create_browser () { GtkWidget* scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_NEVER, GTK_POLICY_NEVER); //todo: some sort of display of position/total length. like what emacs does @@ -300,8 +271,7 @@ create_browser () } static GtkWidget* -create_mainbar () -{ +create_mainbar () { mainbar = gtk_hbox_new(FALSE, 0); uri_entry = gtk_entry_new(); gtk_entry_set_width_chars(GTK_ENTRY(uri_entry), 40); @@ -315,8 +285,7 @@ create_mainbar () } static -GtkWidget* create_window () -{ +GtkWidget* create_window () { GtkWidget* window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); gtk_widget_set_name (window, "Uzbl browser"); @@ -325,8 +294,7 @@ GtkWidget* create_window () return window; } -int main (int argc, char* argv[]) -{ +int main (int argc, char* argv[]) { gtk_init (&argc, &argv); if (!g_thread_supported ()) g_thread_init (NULL); @@ -353,12 +321,12 @@ int main (int argc, char* argv[]) main_window = create_window (); gtk_container_add (GTK_CONTAINER (main_window), vbox); - GError *error = NULL; + GError *error = NULL; - GOptionContext* context = g_option_context_new ("- some stuff here maybe someday"); - g_option_context_add_main_entries (context, entries, NULL); - g_option_context_add_group (context, gtk_get_option_group (TRUE)); - g_option_context_parse (context, &argc, &argv, &error); + GOptionContext* context = g_option_context_new ("- some stuff here maybe someday"); + g_option_context_add_main_entries (context, entries, NULL); + g_option_context_add_group (context, gtk_get_option_group (TRUE)); + g_option_context_parse (context, &argc, &argv, &error); webkit_web_view_load_uri (web_view, uri); -- cgit v1.2.3 From aad63593edbc4805fbeed5d7820662e9df753deb Mon Sep 17 00:00:00 2001 From: Dieter Plaetinck Date: Sat, 25 Apr 2009 23:08:05 +0200 Subject: more elegant way to set up the map of commands --- uzbl.c | 69 ++++++++++++++++++++++++++++++------------------------------------ 1 file changed, 31 insertions(+), 38 deletions(-) (limited to 'uzbl.c') diff --git a/uzbl.c b/uzbl.c index 6f7ce88..e6916f2 100644 --- a/uzbl.c +++ b/uzbl.c @@ -28,6 +28,9 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + +#define LENGTH(x) (sizeof x / sizeof x[0]) + #include #include #include @@ -61,14 +64,12 @@ static GOptionEntry entries[] = { NULL } }; -struct command +typedef struct { - char command[256]; + const char *command; void (*func)(WebKitWebView*); -}; +} Command; -static struct command commands[256]; -static int numcmds = 0; static void update_title (GtkWindow* window); @@ -148,25 +149,37 @@ log_history_cb () { } +/* -- command to callback/function map for things we cannot attach to any signals */ +// TODO: reload, home, quit +static Command commands[] = +{ + { "back", &go_back_cb }, + { "forward", &go_forward_cb }, + { "refresh", &webkit_web_view_reload }, //Buggy + { "stop", &webkit_web_view_stop_loading }, + { "zoom_in", &webkit_web_view_zoom_in }, //Can crash (when max zoom reached?). + { "zoom_out", &webkit_web_view_zoom_out } +//{ "get uri", &webkit_web_view_get_uri}, +}; + /* -- CORE FUNCTIONS -- */ static void parse_command(const char *command) { - int i = 0; - bool done = false; - char *cmdstr; - void (*func)(WebKitWebView*); - - strcpy(cmdstr, command); - - for (i = 0; i < numcmds && ! done; i++) { - if (!strncmp (cmdstr, commands[i].command, strlen (commands[i].command))) { - func = commands[i].func; - done = true; + int i = 0; + bool done = false; + void (*func)(WebKitWebView*); + + Command *c; + for (i = 0; i < LENGTH(commands); i++) { + c = &commands[i]; + if (!strncmp (command, c->command, strlen (c->command))) { + func = c->func; + done = true; } } - printf("command received: \"%s\"\n", cmdstr); + printf("command received: \"%s\"\n", command); if (done) { func (web_view); @@ -205,7 +218,7 @@ static void while (!feof (fifo) && fgets (buffer, sizeof (buffer), fifo)) { if (strcmp (buffer, "\n")) { buffer[strlen (buffer) - 1] = '\0'; // Remove newline - parse_command (buffer); + parse_command (buffer); } } } @@ -213,25 +226,6 @@ static void return NULL; } -static void -add_command (char* cmdstr, void* function) { - strncpy (commands[numcmds].command, cmdstr, strlen (cmdstr)); - commands[numcmds].func = function; - numcmds++; -} - -static void -setup_commands () { - // This func. is nice but currently it cannot be used for functions that require arguments or return data. --sentientswitch - // TODO: reload, home - add_command("back", &go_back_cb); - add_command("forward", &go_forward_cb); - add_command("refresh", &webkit_web_view_reload); //Buggy - add_command("stop", &webkit_web_view_stop_loading); - add_command("zoom_in", &webkit_web_view_zoom_in); //Can crash (when max zoom reached?). - add_command("zoom_out", &webkit_web_view_zoom_out); - //add_command("get uri", &webkit_web_view_get_uri); -} static void setup_threading () { @@ -337,7 +331,6 @@ int main (int argc, char* argv[]) { printf("window_id %i\n",(int) xwin); printf("pid %i\n", getpid ()); - setup_commands (); setup_threading (); gtk_main (); -- cgit v1.2.3