シグナルハンドラの実装 〜メニューの実装(その1)〜


「quit」に対応するシグナルハンドラの実装

生成したソースをコンパイルし、実行してみます。 メニューには設計通りの項目がありますが、どれをクリックしても反応は ありません。 描画領域に対して何をしても何の変化もありません。 まだ、何もシグナルハンドラを実装していないためです。

まず、「quit」を実装しました。 callback.cのon_quit1_activate関数に以下のように実装します。

void
on_quit1_activate                      (GtkMenuItem     *menuitem,
                                        gpointer         user_data)
{
    gtk_main_quit();
}
gtk_main_quit()は、メインループ(gtk_main())を抜けるための関数です。 gtk_main()を抜けると、main()を抜けるので、プログラムが終了します。 実際に、コンパイルし実行してみると、「File」→「quit」で終了することがわかります。

「about」に対応するシグナルハンドラの実装

「about」をクリックするとバージョンと著作権の情報を出力しようと思います。 本来なら、バージョンと著作権情報を出力するダイアログを表示するのが良いと思いますが、 ここでは簡便のため、標準出力に出力することにしました。 いずれ、ちゃんとダイアログが表示されるようにしようと思います。 GTKで標準出力に出力するには、g_print()関数を用います。

void
on_about1_activate                     (GtkMenuItem     *menuitem,
                                        gpointer         user_data)
{
    g_print("simpledraw version 0.0\n");
    g_print("Copyright (C) 2004 Kohta NAKASHIMA\n");
    g_print("This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\n");
    g_print("This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n");
    g_print("You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n");
}

実際のコンパイルし実行すると、起動の際に使用したterm上で上記のメッセージが 出力されるのが確認できます。尚、本ソフトウエアのライセンスはGPLにしたい ので、その旨出力されるようにしました。
メニュー以外のシグナルハンドラはまだ生成していませんので、 callback.cにはありません。 そこで、次はGTKのチュートリアルの「Hello,World」の作成の際に紹介された ウインドウがクローズされた時に呼び出されるシグナルハンドラを実装します。
シグナルハンドラの実装 〜ウインドウのクローズ〜
GTK/GDK/gladeによるプログラムメモ Topへ
Copyright (C) 2004 Kohta NAKASHIMA
All Rights Reserved.