さくっと言語

前に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にスライダー生成コードを作ればいいのかな。スライダーの値をラベルとしてリアルタイムに表示するには、ちゃんとイベント処理しないとだめっぽいのでちょっと面倒そう。