From d8543bb6618c17b12da906afa77d216f58cf4058 Mon Sep 17 00:00:00 2001 From: Upstream Date: Mon, 12 Jan 1970 13:46:40 +0000 Subject: external/webkit r30707 --- WebKitTools/GtkLauncher/GtkLauncher.pro | 10 ++ WebKitTools/GtkLauncher/main.c | 203 ++++++++++++++++++++++++++++++++ WebKitTools/GtkLauncher/simple.svg | 15 +++ WebKitTools/GtkLauncher/text.html | 9 ++ 4 files changed, 237 insertions(+) create mode 100644 WebKitTools/GtkLauncher/GtkLauncher.pro create mode 100644 WebKitTools/GtkLauncher/main.c create mode 100644 WebKitTools/GtkLauncher/simple.svg create mode 100644 WebKitTools/GtkLauncher/text.html (limited to 'WebKitTools/GtkLauncher') diff --git a/WebKitTools/GtkLauncher/GtkLauncher.pro b/WebKitTools/GtkLauncher/GtkLauncher.pro new file mode 100644 index 0000000..b8c4aa8 --- /dev/null +++ b/WebKitTools/GtkLauncher/GtkLauncher.pro @@ -0,0 +1,10 @@ +TEMPLATE = app +SOURCES += main.c +CONFIG -= app_bundle + +BASE_DIR = $$PWD/../.. + +include(../../WebKit.pri) + + +QMAKE_RPATHDIR += $$OUTPUT_DIR/lib diff --git a/WebKitTools/GtkLauncher/main.c b/WebKitTools/GtkLauncher/main.c new file mode 100644 index 0000000..8ed2690 --- /dev/null +++ b/WebKitTools/GtkLauncher/main.c @@ -0,0 +1,203 @@ +/* + * Copyright (C) 2006, 2007 Apple Inc. + * Copyright (C) 2007 Alp Toker + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include + +static GtkWidget* main_window; +static GtkWidget* uri_entry; +static GtkStatusbar* main_statusbar; +static WebKitWebView* web_view; +static gchar* main_title; +static gint load_progress; +static guint status_context_id; + +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_open (web_view, uri); +} + +static void +update_title (GtkWindow* window) +{ + GString* string = g_string_new (main_title); + g_string_append (string, " - WebKit Launcher"); + if (load_progress < 100) + g_string_append_printf (string, " (%d%%)", load_progress); + gchar* title = g_string_free (string, FALSE); + gtk_window_set_title (window, title); + 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); +} + +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 () +{ + GtkWidget* scrolled_window = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + + web_view = WEBKIT_WEB_VIEW (webkit_web_view_new ()); + gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (web_view)); + + g_signal_connect (G_OBJECT (web_view), "title-changed", G_CALLBACK (title_change_cb), web_view); + g_signal_connect (G_OBJECT (web_view), "load-progress-changed", G_CALLBACK (progress_change_cb), web_view); + g_signal_connect (G_OBJECT (web_view), "load-committed", G_CALLBACK (load_commit_cb), web_view); + g_signal_connect (G_OBJECT (web_view), "hovering-over-link", G_CALLBACK (link_hover_cb), web_view); + + return scrolled_window; +} + +static GtkWidget* +create_statusbar () +{ + main_statusbar = GTK_STATUSBAR (gtk_statusbar_new ()); + status_context_id = gtk_statusbar_get_context_id (main_statusbar, "Link Hover"); + + return (GtkWidget*)main_statusbar; +} + +static GtkWidget* +create_toolbar () +{ + GtkWidget* toolbar = gtk_toolbar_new (); + + gtk_toolbar_set_orientation (GTK_TOOLBAR (toolbar), GTK_ORIENTATION_HORIZONTAL); + gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_BOTH_HORIZ); + + GtkToolItem* item; + + /* the back button */ + item = gtk_tool_button_new_from_stock (GTK_STOCK_GO_BACK); + g_signal_connect (G_OBJECT (item), "clicked", G_CALLBACK (go_back_cb), NULL); + gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1); + + /* The forward button */ + item = gtk_tool_button_new_from_stock (GTK_STOCK_GO_FORWARD); + g_signal_connect (G_OBJECT (item), "clicked", G_CALLBACK (go_forward_cb), NULL); + gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1); + + /* The URL entry */ + item = gtk_tool_item_new (); + gtk_tool_item_set_expand (item, TRUE); + uri_entry = gtk_entry_new (); + gtk_container_add (GTK_CONTAINER (item), uri_entry); + g_signal_connect (G_OBJECT (uri_entry), "activate", G_CALLBACK (activate_uri_entry_cb), NULL); + gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1); + + /* The go button */ + item = gtk_tool_button_new_from_stock (GTK_STOCK_OK); + g_signal_connect_swapped (G_OBJECT (item), "clicked", G_CALLBACK (activate_uri_entry_cb), (gpointer)uri_entry); + gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1); + + return toolbar; +} + +static 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, "GtkLauncher"); + g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy_cb), NULL); + + return window; +} + +int +main (int argc, char* argv[]) +{ + gtk_init (&argc, &argv); + + GtkWidget* vbox = gtk_vbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (vbox), create_toolbar (), FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (vbox), create_browser (), TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (vbox), create_statusbar (), FALSE, FALSE, 0); + + main_window = create_window (); + gtk_container_add (GTK_CONTAINER (main_window), vbox); + + gchar* uri = (gchar*) (argc > 1 ? argv[1] : "http://www.google.com/"); + webkit_web_view_open (web_view, uri); + + gtk_widget_grab_focus (GTK_WIDGET (web_view)); + gtk_widget_show_all (main_window); + gtk_main (); + + return 0; +} diff --git a/WebKitTools/GtkLauncher/simple.svg b/WebKitTools/GtkLauncher/simple.svg new file mode 100644 index 0000000..30b13ac --- /dev/null +++ b/WebKitTools/GtkLauncher/simple.svg @@ -0,0 +1,15 @@ + + + +Four separate rectangles + + + + + + + + diff --git a/WebKitTools/GtkLauncher/text.html b/WebKitTools/GtkLauncher/text.html new file mode 100644 index 0000000..607df72 --- /dev/null +++ b/WebKitTools/GtkLauncher/text.html @@ -0,0 +1,9 @@ + + +Hello World + +

+Hello world +

+ + -- cgit v1.1