前にUIをさくっと作りたい(id:ABA:20050118#p1)けどwxPythonじゃバイナリがでかくて使い物にならないよー(id:ABA:20050123#p1)とか文句だけ言ってたらid:w_o氏が言語を作ってくれたよ!
- ちょっとしたUIをさくっと作りたいランゲージ(id:w_o:20050128#1106936236)
これを使って、たとえば画面サイズとウィンドウモードの切り替えを設定するウィンドウを作るとすると、
funcname WinMain; this_win.text = "Config"; move(this_win, 100, 100, 300, 210); LABEL res_label("Resolution", 20, 20, 100, 20); RADIO res0_radio("640x480", 20, 40, 100, 20, 0); RADIO res1_radio("800x600", 150, 40, 100, 20, 0); RADIO res2_radio("1024x768", 20, 60, 100, 20, 0); RADIO res3_radio("1200x1024", 150, 60, 100, 20, 0); res0_radio.check = 1; LABEL scr_label("Screen mode", 20, 90, 100, 20); RADIO scr0_radio("Full screen", 20, 110, 100, 20, 1); RADIO scr1_radio("Window", 150, 110, 100, 20, 1); scr0_radio.check = 1; BUTTON ok_button("OK", 180, 150, 100, 20, 0); popup(this_win);
こんな感じらしい。とりあえずUIの表示部分だけね。なんかラジオボタンのグルーピングがうまくいかなくて、'Window'のラジオボタンが上の画面サイズ群のとグルーピングされちゃうんだけど、groupパラメタの使い方が分からん。
相当簡単にUIが書けて、上記プログラムでバイナリは29.6KB。いいね。
ちなみに私がやりたいのは、コマンドラインオプション(e.g. -window -res 800 600)が書かれたoptions.iniっていうファイルから設定を読み込んでUI上に表示、UI上で設定後その結果をoptions.iniに書き戻したいっていうことなんだけど、あとif文が扱えるようになればだいたいその目的は達成できるのかなあ。
あーあと画面の明るさ(e.g. -brightness 85)を設定するにはスライダーがいるってのもあるや。parser.ilogとtype.ilogを適当に書き足して、support_win32.cにスライダー生成コードを作ればいいのかな。スライダーの値をラベルとしてリアルタイムに表示するには、ちゃんとイベント処理しないとだめっぽいのでちょっと面倒そう。