2009年10月16日

webkit-gtkでHello HTML

オブジェクトというかwebkit-gtkのウィジェットポンの最小コードでブラウザを作った。
但し将来関数として分割化されるでしょうからテンプレにはならない。
今回引数でURLを渡す形にしたのだがローカルファイルは「file://」が必要になる。
geanyでの実行時設定を

./%e



から

./%e file://index.html


のようにしておく

個別に試す場合はコマンドラインで試すなりすればいい。

gtkでWindowを出す部分は2月くらいにちょっと触ったので
その続きからという感じで進める。
当時と違ってX.OrgもバージョンアップしているのでlibXextエラー処理とかはいらない。


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

static WebKitWebView* web_view;

今回グローバル変数の必要性もないのだが
操作対象としてのWebKitWebViewを一つ宣言した。
タブ化時に撤回するかもしれない。
web_viewという名称はよく使われているのでそのまま使っている。


int
main(int argc, char **argv)
{
GtkWidget *window
,*scrolled_window
;//

g_thread_init(NULL);//g_thread初期化 1.1.15用に追加 12/10
gtk_init(&argc, &argv); //← GTK+初期化
window = gtk_window_new(GTK_WINDOW_TOPLEVEL); // トップレベルウィンドウ作成
scrolled_window = gtk_scrolled_window_new(NULL, NULL);//スクロールwindow

web_view = WEBKIT_WEB_VIEW(webkit_web_view_new());//webview


ウィジェット生成まで

webkitを直接トップレベルウィンドウに入れてみたらだめだったので
gnomeのAPI解説ページのとおりscrolled_windowを一つ使う。


gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
//スクロールバーを内部コンテンツに自動的に合わせる。
gtk_container_add(GTK_CONTAINER(scrolled_window), GTK_WIDGET(web_view));//web_viewをscrolled_windowセット
gtk_container_add(GTK_CONTAINER(window),scrolled_window);//

gtk_window_set_title (GTK_WINDOW (window), "Window Open");// タイトル設定
gtk_window_set_default_size (GTK_WINDOW (window), 800, 600);//サイズ設定

g_signal_connect(G_OBJECT(window), "destroy", // destroyシグナルハンドラ
G_CALLBACK(gtk_main_quit), NULL); //←gtk_main_quitに設定

gtk_widget_show_all(window); // ウィジェット可視化



gtk_scrolled_window_set_policyはフレームのスクロールバーの表示の仕方を制限する命令で
どのタイミングで出しても有効。
gtk_container_addで

window→scrolled_window→web_view

と入れ子にしていく。
destroyハンドラはデフォルトをアサイン
今回は
gtk_window_set_title でのタイトル設定と
gtk_window_set_default_size でのサイズ設定を加えた。


webkit_web_view_open(web_view, argv[1]);//サイトを開く

gtk_main(); // メインループ
return 0;
}

引数 argv[1]で開く
何の処理もしていないが右クリックでナビゲートができるので
リンク集でスタートすればこれだけでネットサーフィンができるし
ちゃんとログインの類もできる。

ビルドは前回のとおりgeanyまかせだが

clang -Wall -pipe -O2 \
`pkg-config webkit-1.0 --cflags --libs` \
-o webkit_01 webkit_01.c
strip webkit_01

というところ

webkit-gtkの本質的な問題点(ロケール関連)以外では現時点で充分に使えるブラウザが簡単にできた。
posted by Xo_ox at 19:00| Comment(0) | FreeBSDアプリ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。