gtk-demo
GUIアプリの基本はXlibだが、Xlibをそのまま使ってプログラムを書くのは非常に面倒。
http://www.postgresql.jp/branch/shikoku/300c30aa30fc30f330bb30df30ca30fc2007-5fb35cf6300d306e30bb30df30ca30fc8cc76599/5fb35cf630bb30df30ca30fc-897f5c3e.pdf/view
で以前発表してるけど、フォントを指定したり、文字色や背景色を指定しないと、どうにもならない。
しかし、GUIアプリの基本である。
- 1.初期化
- 2.無限ループ(イベント・シグナルの処理)
- 3.終了処理
というパターンで一応作成可能。
面倒なことが嫌いな場合は、toolkitを使う。基本はXt(X toolkit)であるが、これも非常に面倒。ということで、gtk+というGIMPという画像処理ソフト用に開発されたツールキット(Gimp ToolKit)を調査する。
URLは以下の通り。
http://www.gtk.org/
上記のpdfファイルにも書いてあるが、基本的にはデモを見てから作るのが楽だと思う。そのデモはgtk-demoというコマンドで実行できる。手元の環境では、
$ which gtk-demo /usr/bin/gtk-demo
$ rpm -qf /usr/bin/gtk-demo gtk2-devel-2.16.3-1m.mo6.i686
となっている。
とりあえず、ソースコードを眺めてみる。
http://www.gtk.org/download-linux.html
ここからダウンロードし、
$ tar xzf gtk+-2.16.3.tar.bz2 $ cd gtk+-2.16.3
gtk-demoのソースコードを探すため、Makefile.amを調査する。
$ find . -name "Makefile.am" -exec grep gtk-demo {} \+ ./demos/Makefile.am:SUBDIRS = gtk-demo ./demos/gtk-demo/Makefile.am:bin_PROGRAMS = gtk-demo
これより、./demos/gtk-demoというディレクトリにあることが分かる。findコマンドの使い方は、infoを読むこと。findのセキュリティに対する修正は読む価値がある。
./demos/gtk-demo/Makefile.amを読むと、
gtk_demo_SOURCES = \ $(demos) \ demo-common.h \ main.c \ demos.h
こんな記述がある。これで、gtk-demoをビルドするために使用するソースコードがこれだけあるということが分かる。$(demo)というのは、それより上でdemoという変数に代入されている。
しかし、それらのソースコードはgtk-demoというアプリケーションを実行するとソースコードが見れるので、そちらを見ていく。
$ gtk-demo
で起動すると、左右に二つの枠で表示されるアプリケーションが実行される。左側がデモのリストで、右側に情報タブとソースタブがある。
左側のリストをダブルクリックすると、デモウィンドウが表示され、もう一度ダブルクリックすると、デモウィンドウが消える。Sourceタブをクリックすると、そのウィンドウを表示するソースコードを見ることができる。
残念ながら、このソースコードはウィンドウを表示する(または消去する)ためのものなので、単体でビルドすることはできないし、ヘッダファイルdemo-common.hをincludeするものは、かなり編集しないとビルドできない。
しかし、基本的には、
GtkWidget * do_demoname
ではじまるところを、
int main
で書き直し、
if (!window)
の内部をmain関数として記述するとビルド可能なソースコードになる。ビルドするためには、gccへオプションを渡してあげる必要があるのだが、
http://openseminar.okaya.ma/2009/wiki.cgi?page=%B8%F8%B3%AB%BB%F1%CE%C1
ここの、GUIプログラム入門(3)を見てもらいたい。
pkg-configについては、別の機会に書こうと思う。
さて、これで簡単なGUIプログラムが書くコードサンプルが揃ったので、今度は適当なサンプルを使ってパッケージにしてみる。