2.4.1 GTK+アプリケーションの基本構造

 他の多くのGUIツールキットと同じく、GTK+はイベント駆動のプログラミングモデルを採用しています。プログラムのユーザが何もしていない時には、メインループ(ユーザの操作を待つための無限ループ)が繰り返され、GTK+はただ待機しているだけですが、ひとたびユーザによって何らかの操作が行われると、GTK+にイベント(event)が送られます。このイベントを待つという状態は、HSPのstop命令を実行した時と同じようなものです。

イベントはそれが起こったウィジェットに伝えられ、ウィジェットはイベントの種類に応じて1つ以上のシグナル(signal)を発生させます。プログラムはシグナルによって「何かが起こった」ことを知ることができ、そのシグナルに関連付けられた(connectされた)関数があればそれを実行します。この関数のことをコールバック(callback)関数といいます。

この「コールバック関数」という名前は、C言語(や同じ機能が使えるその他の言語)の言語機能に着目した場合の呼び方です。GTK+を利用したプログラム内での役割に着目した場合は、シグナルハンドラ(signal handler)と呼ばれます。

コールバック関数では、通常シグナルの種類(=プログラムで何が起こったか)に応じた処理を行います。例えば、フォントを選択するためのボタン(GtkButton)が押された(clicked)のであれば、フォント選択ダイアログ(GtkFontChooserDialog)を表示して、そこでユーザが入力した内容で何らかのフォント設定を更新する、などといったことです。必要な処理を行った後、コールバック関数がreturnされると、再びメインループに戻り、GTK+は待機状態になります。

Prev - Table of contents - Next