SeedとSignal
GUIアプリを作るためには、signal(WindowsではMessage xlibではeventと呼ばれている)の処理が重要なのですが、seedでsignalを扱う方法がいまいち分かっていない。
例えば、windowを開くだけのプログラム。
#!/usr/bin/env seed const Gtk = imports.gi.Gtk; Gtk.init(Seed.argv); var win = new Gtk.Window(); win.signal.destroy.connect(Gtk.main_quit); win.show_all(); Gtk.main();
今回は、Gtk.Windowのsignal.destroy.connectを使っているけど、vteのサンプルでは、Gtk.Windowのsignal.hide.connectを使っている。
書式はsignalに接続する関数(メソッド)を書くだけなのですが、どのsignalにつなげるべきかがイマイチ分からないのがひとつ。もう一つは、Gtkではsignalが継承されるので、親のsignalを調べると、GtkWidgetにはhideとdestory-eventはあるけど、destroyはGtkWidgetの親のGtkObjectになる。どちらでも動作するのですが、どちらを使うべきか、悩む必要がある。
また、今回のように親のsignalを継承して利用する場合、GtkWindowのsignalだけを追いかけても、マニュアルが見つからないというのも問題になる。
結局、Gtk+を知らないとseedも使いこなせないことがわかった。
どうでも良い話ですが、seedで検索するとガンダムネタが多すぎる。seed linuxやseed gnomeで検索するとvineネタがヒットする。日本語でseedの解説しているページを検索するには、動すべきだろう。goolge で - オプション使っても良いのだが、Linuxユーザはガンダムに興味がある人も多いんだよな〜。