2.4.2 シグナルとコールバック関数を関連付ける

 次に、コールバック関数のシグナルへの関連付け(connect)について、スクリプトの書式を挙げて説明します。


g_signal_connect widget, "signal", callback, 0

 関連付けはg_signal_connect関数で行います。この関数を使うのに必要な#uselib命令と#func命令の行は、ここでは省略します。詳しくは、3章で説明します。

 g_signal_connect関数の、1つ目の引数のwidgetには、生成済みのウィジェット(インスタンス)を指定します。前節で説明したように、ウィジェットを生成する関数の戻り値(stat)がインスタンスを表す値になっていますので、それを利用します。

 次の"signal"には、関連付けしたいシグナルの名前を指定します。シグナル名は、その元となるイベントを表すものになっていることが多いです。起こるイベント(=受け取れるシグナル)は、プロパティと同じようにウィジェットごとにあらかじめ決まっており、例えば、GtkButtonウィジェットであれば、clickedシグナルに関数をconnectする場合が圧倒的に多いでしょう。clickedシグナルは、ウィジェットがクリックされた時に発生するシグナルです。

 3番目のcallbackには、コールバック関数設定モジュールmodclbk3b2の、newclbk3命令の1つ目の引数に指定した変数を指定します。

modclbk3b2を使用した場合、コールバック関数はラベルで始まりreturn命令で終わることになりますが、既に説明した通り、このラベルとreturnの間に、イベントが起こった時に実行したい処理を記述します。

 そして、最後の4つ目の引数ですが、ここには、コールバック関数が呼び出される時に引数として受け取りたいデータが入った変数のポインタを指定できます。変数のポインタを取得するには、varptr関数を使い、varptr( data )のように記述します。特に受け渡したいデータがない場合には、無効なポインタを表す0を指定してください。

Prev - Table of contents - Next