Ruby/GTK のレイアウトを作るための DSL を作った

こんなのは DSL って言わないかもしれないけれど、ウィジェットの親子関係がインデントで表せてわかりやすいです。あと、名前付きオプション引数でウィジェットのプロパティが設定できたり、シグナル名を書くだけで convention で名前が付いてコールバックが設定されます。

たとえば ok_button の clicked シグナルにコールバックを設定すると、フォームオブジェクトの on_ok_clicked メソッドが呼ばれる。

最初、YAML で構造を書いてそこからウィジェットを作るようにしようかとも思ったのだけれど、数値や文字列以外のオブジェクトを参照したかったりもするだろうと思って、メソッドとブロックで作ることにした。