昨日の続き

昨日からがんばりつづけているプログラムだが、なんとか画面を表示させ、サーバとクライアント間でプロトコルを決めて通信できる段階まではいった。モニタリングするプロセスとサーバは標準入出力で通信するように書き換えた。
結局、クライアント-サーバ間、サーバ-モニター間はS式で通信する。追跡問題は行動に関して引数をとらないので、上下左右あるいは止まったままの5つの行動だけを表現できればよく、S式である必要はないのだが、今後のことも考えて、そしてSchemeのreadで読み込みやすいがためにS式にした。
今問題になっているのが、モニタリング用プログラムへ標準入力からS式が行ったときに、あるイベントを取るようにするGTKのシグナルが分らないということだ。

と思ったら見つけた。ファイルディスクリプタを監視してコールバック関数(ハンドラ)を呼ぶ関数。

gosh> (d gtk-input-add)
#<subr gtk-input-add> is an instance of class <procedure>
slots:
  required  : 3
  optional  : #f
  locked    : #f
  info      : "gtk-input-add"
  setter    : #f

オリジナルはgdk_input_add()だから分らなかった。
gtk-input-removeの引数にgtk-input-addの返値を指定するとファイルディスクリプタの監視をやめる。
(set! eid (gtk-input-add ファイルディスクリプタ 条件 コールバック関数))
(gtk-input-remove eid)
gauche-gtkはguileのgtk-moduleと対応している?