2009-07-01 Xan Lopez <xlopez@igalia.com>
[WebKit-https.git] / WebKitTools / GtkLauncher / main.c
index 93e39f9..6994674 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "webkitgtkpage.h"
-#include "webkitgtkglobal.h"
 #include <gtk/gtk.h>
+#include <webkit/webkit.h>
 
 static GtkWidget* main_window;
 static GtkWidget* uri_entry;
 static GtkStatusbar* main_statusbar;
-static WebKitPage* web_page;
+static WebKitWebView* web_view;
 static gchar* main_title;
-static gint load_progress;
+static gdouble load_progress;
 static guint status_context_id;
 
 static void
@@ -41,7 +40,7 @@ activate_uri_entry_cb (GtkWidget* entry, gpointer data)
 {
     const gchar* uri = gtk_entry_get_text (GTK_ENTRY (entry));
     g_assert (uri);
-    webkit_page_open (web_page, uri);
+    webkit_web_view_load_uri (web_view, uri);
 }
 
 static void
@@ -50,14 +49,14 @@ 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);
+        g_string_append_printf (string, " (%f%%)", load_progress);
     gchar* title = g_string_free (string, FALSE);
     gtk_window_set_title (window, title);
     g_free (title);
 }
 
 static void
-link_hover_cb (WebKitPage* 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);
@@ -66,10 +65,8 @@ link_hover_cb (WebKitPage* page, const gchar* title, const gchar* link, gpointer
 }
 
 static void
-title_change_cb (WebKitPage* page, const gchar* title, const gchar* uri, gpointer data)
+title_change_cb (WebKitWebView* web_view, WebKitWebFrame* web_frame, const gchar* title, gpointer data)
 {
-    gtk_entry_set_text (GTK_ENTRY (uri_entry), uri);
-
     if (main_title)
         g_free (main_title);
     main_title = g_strdup (title);
@@ -77,9 +74,20 @@ title_change_cb (WebKitPage* page, const gchar* title, const gchar* uri, gpointe
 }
 
 static void
-progress_change_cb (WebKitPage* page, gint progress, gpointer data)
+notify_load_status_cb (WebKitWebView* web_view, GParamSpec* pspec, gpointer data)
+{
+    if (webkit_web_view_get_load_status (web_view) == WEBKIT_LOAD_COMMITTED) {
+        WebKitWebFrame* frame = webkit_web_view_get_main_frame (web_view);
+        const gchar* uri = webkit_web_frame_get_uri (frame);
+        if (uri)
+            gtk_entry_set_text (GTK_ENTRY (uri_entry), uri);
+    }
+}
+
+static void
+notify_progress_cb (WebKitWebView* web_view, GParamSpec* pspec, gpointer data)
 {
-    load_progress = progress;
+    load_progress = webkit_web_view_get_progress (web_view) * 100;
     update_title (GTK_WINDOW (main_window));
 }
 
@@ -92,13 +100,13 @@ destroy_cb (GtkWidget* widget, gpointer data)
 static void
 go_back_cb (GtkWidget* widget, gpointer data)
 {
-    webkit_page_go_backward (web_page);
+    webkit_web_view_go_back (web_view);
 }
 
 static void
 go_forward_cb (GtkWidget* widget, gpointer data)
 {
-    webkit_page_go_forward (web_page);
+    webkit_web_view_go_forward (web_view);
 }
 
 static GtkWidget*
@@ -107,12 +115,13 @@ 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_page = WEBKIT_PAGE (webkit_page_new ());
-    gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (web_page));
+    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_page), "title-changed", G_CALLBACK (title_change_cb), web_page);
-    g_signal_connect (G_OBJECT (web_page), "load-progress-changed", G_CALLBACK (progress_change_cb), web_page);
-    g_signal_connect (G_OBJECT (web_page), "hovering-over-link", G_CALLBACK (link_hover_cb), web_page);
+    g_signal_connect (web_view, "title-changed", G_CALLBACK (title_change_cb), web_view);
+    g_signal_connect (web_view, "notify::load-status", G_CALLBACK (notify_load_status_cb), web_view);
+    g_signal_connect (web_view, "notify::progress", G_CALLBACK (notify_progress_cb), web_view);
+    g_signal_connect (web_view, "hovering-over-link", G_CALLBACK (link_hover_cb), web_view);
 
     return scrolled_window;
 }
@@ -131,7 +140,11 @@ create_toolbar ()
 {
     GtkWidget* toolbar = gtk_toolbar_new ();
 
+#if GTK_CHECK_VERSION(2,15,0)
+    gtk_orientable_set_orientation (GTK_ORIENTABLE (toolbar), GTK_ORIENTATION_HORIZONTAL);
+#else
     gtk_toolbar_set_orientation (GTK_TOOLBAR (toolbar), GTK_ORIENTATION_HORIZONTAL);
+#endif
     gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_BOTH_HORIZ);
 
     GtkToolItem* item;
@@ -168,7 +181,7 @@ 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);
+    g_signal_connect (window, "destroy", G_CALLBACK (destroy_cb), NULL);
 
     return window;
 }
@@ -177,7 +190,8 @@ int
 main (int argc, char* argv[])
 {
     gtk_init (&argc, &argv);
-    webkit_init ();
+    if (!g_thread_supported ())
+        g_thread_init (NULL);
 
     GtkWidget* vbox = gtk_vbox_new (FALSE, 0);
     gtk_box_pack_start (GTK_BOX (vbox), create_toolbar (), FALSE, FALSE, 0);
@@ -188,9 +202,9 @@ main (int argc, char* argv[])
     gtk_container_add (GTK_CONTAINER (main_window), vbox);
 
     gchar* uri = (gchar*) (argc > 1 ? argv[1] : "http://www.google.com/");
-    webkit_page_open (web_page, uri);
+    webkit_web_view_load_uri (web_view, uri);
 
-    gtk_widget_grab_focus (GTK_WIDGET (web_page));
+    gtk_widget_grab_focus (GTK_WIDGET (web_view));
     gtk_widget_show_all (main_window);
     gtk_main ();