gladeの紹介(まだまだαレベルの文章です(^^;))

GTKが登場してから急速にwindowを使用したアプリケーションが登場する雰囲気になっていますが、とうとうGTK用のビルダーまで登場しました。このページではその中でgladeに注目し、インストールからアプリケーション作成まで紹介したいと思います。

まずはgladeのインストール方法

基本的には私がFreeBSD使いなのでFreeBSD中心に説明します。最低限そろえておくものは
automake
バージョンは1.4以上。 portsを使用して入れてしまった方が楽です。
autoconf
バージョンは2.13以上で同様にports 使用して入れてしまった方が楽です。
gtk+-1.2.3
portsを使って/usr/ports/x11-toolkits/gtk12でmakeして入れた方が楽です。
gnomelib等のパッケージ
portsで入れてしまいましょう。場所は/usr/ports/x11/gnome*です。gettext等のその他依存したのもが入ってくれます。
glade-0.5.0.tar.gzのダウンロード
http://glade.pn.org/index.htmlからダウンロードするのがよろしいでしょう。
glade-0.5.0.patchのダウンロード
http://glade.pn.org/index.htmlからダウンロードするのがよろしいでしょう。
gmake
version 3.77をインストール。 同様にportsを用いて入れてしまった方が楽です。
#さすがにこれだけのソフトだともうportsなしではインストール不能に思えてきます。本当にportsさまさまです。

コンパイル準備段階として

のような修正を行ないます。この作業はportsかなりイレギュラーともいえる作業なので今後なくなるでしょう。

ここからgladeのコンパイル開始です。

gzip -dc glade-0.5.0.tar.gz|tar xvf -
cd glade-0.5.0
patch -p1 < ../glade-0.5.0.patch
./configure --prefix=/usr/X11R6
make
su
make install
ちゃんとgladeに依存したパッケージが入っていれば結構おとなしくコンパイルできます。

起動してみましょう。

起動するとまず3つのウインドウが現れます。いきなり日本語でちょっと驚きます。便利な世の中になったもんです(^^;)

GLADE

これがglade本体のウインドウです。機能的には作成したオブジェクトの位置情報の読み込み、書き込みやスケルトンプログラムの生成等のようです。他にもパレット、プロパティ、ウイジェットツリー等のウインドウを出現させる時にも使用します。

GLADE       GLADE

左側の"パレット"とタイトルバーに記述されているウインドウにはさまざまなウイジェットが登録されており、ここからウイジェットを選んでウインドウを構成していきます。

右側の"プロパティ"とタイトルバーに記述されているウインドウは配置した各ウイジェットにパラメータを与えるものです。


ウインドウを作ってみましょう。

まず題材としてGTK Tutorial の日本語訳の最初にかかれている例を題材に説明します。 ちなみに日本語訳は
http://www.aist-nara.ac.jp/~mitsu-o/gtk/
にあります。題材ですが以下のようなウインドウが現れるプログラムです。
これは"こんにちわ"を押すと"こんにちわ"と出力され、"終了"を押すとウインドウが消えるといったプログラムです。またウインドウマネージャーから消去しようとすると"delete event occurred"と出力されるものです。

でわ作成開始です。

  1. まずgladeを起動します。パレットの一番右上のメニューを選択します。するとタイトルバーにwindow1とかかれたウインドウが現れると同時にglade本体のウインドウにはが現れ、そしてプロパティのウインドウにはウイジェットの属性が現れます。

    さらにウイジェットの依存関係を見るためにメニューを選択し、

    Show Widget Treeを選びます。するとウイジェットツリーなるウインドウが現れ、各ウイジェット間の依存関係を示してくれます。

  2. window1にコンテナを張り付ける。

    ベースとなるウインドウはを押し、window1にマウスのポインターを移動する事によって"+"が現れるので、適当な所でマウスの左ボタンを押します。成功すると

         
    window1にはグリットができ, ウイジェットツリーにはコンテナが張り付けられた事を意味する絵が現れます。(現れない人は"+"マークを押して下さい。)
  3. 終了ボタンを作成する。

    パレットウインドウよりを選択し、window1上の適当な所でマウスの左ボタンを押すとボタンが配置されます。ボタンのコーナにある黒い部分をドラッグする事により大きさを変えます。またこの時このボタン名はbutton1と登録されており、そのパラメータがプロパティに示されています。

    このプロパティーではボタンのラベルを図のように”終了”と変えることができ、またボタンに結びつける関数を指定できます。
    ここではシグナルに"clicked", ハンドラが"gtk_widget_destroy", 信号の送り先を"window1"とした。各項目に値を入れ終ったら"追加"ボタンを押してシグナルを追加する。

  4. "こんにちわ"ボタンを作成する。

    先ほど同様パレットウインドウよりを選択し、window1上の適当な所でマウスの左ボタンを押すとボタンが配置されます。終了ボタンと同じようにラベルを変え、シグナルを追加します。

    ボタン"こんにちわ"ではシグナルに"clicked", ハンドラはボタンが押された事によって起動される関数"on_button2_clicked"とした。

  5. window1のシグナル

    ボタン二つができた所で今度はベースウインドウに対してシグナルの定義をおこなう。重要なものが二つありウインドウに対するdestroy信号とウインドウマネージャから来る終了シグナルdelete_eventだ。このプログラムではシグナル"destroy"に対してはハンドラ"quit"を割り当て、シグナル"delete_event"に対してはハンドラ "delete_event"関数を割り当てた。

  6. 保存とソースコードの生成

    ウインドウの構築が終了したら今度はこのウインドウ配置内容の保存とソースコードの生成です。メニューにある"ファイル"を選択しその中にある"保存"を選択すればデータがディスクに書き込まれます。このとき保存場所等を聞いてくるので適切な位置にして上げて下さい。

    同様にBuild Source Codeを選択する事によりソースコードが生成されます。

  7. 生成されたソースコードのコンパイル

    ソースコードが生成された場所までcdで移動していきます。私の場合は ~/Projects/project5でした。この中のディレクトリにsrcがあり作成したウインドウのプログラムがそこに格納されています。先ほど作成したボタンのハンドラとなる関数は./src/callbacks.cにあり、この関数に対して中身を記述する。

    void
    quit                                   (GtkObject       *object,
                                            gpointer         user_data)
    {
      gtk_main_quit ();
    }
    
    void
    on_button2_clicked                     (GtkButton       *button,
                                            gpointer         user_data)
    {
      g_print ("こんにちは\n");
    }
    
    gboolean
    delete_event                           (GtkWidget       *widget,
                                            GdkEvent        *event,
                                            gpointer         user_data)
    {
      g_print ("delete event occurred\n");
     /* TRUE を FALSE に変更すればメインウィンドウは "delete_event"
      * によって破壊される。*/
      return (TRUE); 
      /* return FALSE; */
    
    }
    	  
    修正が終ったら
    	  ./autogen.sh
    	  gmake
    	  
    と行ない実行プログラムを生成する。ここでgmakeでコンパイルを実行しないとpo/cat-id-tbl.cの生成に失敗しコンパイルが途中で停止するので注意しなければならない。

みなさんできましたでしょうか?


yukiya@ee.t-kougei.ac.jp
Last modified: Wed Feb 9 08:45:20 EST 2000