2009年5月3日日曜日

WebkitでWebブラウザを作ってみた

GTKLauncherのコードを参考に作成。

コード:

#include <gtk/gtk.h>
#include <webkit/webkit.h>
#include <iostream>


static WebKitWebView* 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));

return scrolled_window;
}

static void destroy_cb(GtkWidget* widget, gpointer data)
{
gtk_main_quit();
}
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[]){
//テスト出力
std::cout<< "START PROCESS" << std::endl;
//↓スタート
gtk_init(&argc, &argv);

GtkWidget* vbox = gtk_vbox_new(FALSE, 0);
gtk_box_pack_start(GTK_BOX(vbox), create_browser(), TRUE, TRUE, 0);

GtkWidget* _main_window;
_main_window = create_window();
gtk_container_add(GTK_CONTAINER(_main_window),vbox);

webkit_web_view_open(web_view, "http://www.google.com/");

//↓おまじない**********************
gtk_widget_grab_focus(GTK_WIDGET(web_view));
gtk_widget_show_all(_main_window);
gtk_main();
//**********************************
return 0;
}

コンパイルする:

$ g++ -o brow brow.cc `pkg-config --cflags --libs gtk+-2.0` `pkg-config --cflags --libs webkit-1.0`

なんせこんなことしたの今回が初めてだからよく分からないが
error while loading shared libraries: libwebkit-1.0.so.1: cannot open shared object file: No such file or directory
こんなエラーが出た。

調べてみるとライブラリが認識されていないために起きるエラーらしい。そこで
$lfconfig
$sudo ldconfig
を実行

再コンパイルしてみるとエラーは出なくなった。
出来たのはこんな感じ↓


…Javascriptも動くブラウザをこうも簡単に作れるのはすごい。感動した。

0 件のコメント:

コメントを投稿