[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MGDM Pre Alpha Release



お世話になっております。 A.中村です。

On Mon, 11 Dec 2000 10:24:50 +0900 (JST)
yukihiko@yk.rim.or.jp (Sano Yukihiko) wrote:

> Frame は、御指摘の通り 1つだけです。
> が、サブウィンドウ用に MPW_CMD_FRAME というアイテムを実装予定です。

おお。嬉しい気がします。DelphiでいうPanelクラスっすね。

蛇足ですがCMDってコマンドの略でしょうか。
ああいうものをコマンド云々と呼ぶ流儀が有る様ですが、
なぜそう呼ばれるのかよく判ってない俺でした。
意味としてはFocusを受け取れるモノという含みがあるんでしたっけ。

> mpw はフレーム (ウィンドウ) 作って、アイテム配置して、コールバック書けば
> お終いというのを想定していますので。

ほんとそんな感じですね。

init
f=Frame.new 0,0,200,200,"hogehoge"
b1=Button.new f, 10,20,"exit",24,1
b2=Button.new f,100,20,"move",24,2
t=Text.new f,10,100,"label",12,2,"text",3,10,20
b1.event{|ch|
  p t.get STRING
  0 #to exit mainloop
}
b2.event{|ch|
  x=f.get SX
  y=f.get SY
  f.move x+5,y+5
}
mainloop f
quit

なんてのが今手元で動いてます。わーい。
あ。しまった。mainloopはfのメソッドとすれば良かったかな。
quitもいちいちユーザーが書く必要は無いだろうからmainloopの中に入れて、と。

> 本来は、アイテム配置も自動化すべきなのですが。
> # XView では作った順に垂直方向に並びます。方向は垂直、水平が指定可能で、

最近もといunix系では主流(javaにも)の、
AutoLayouterクラスみたいな奴っすね。

色々な実装例を知っているわけではない俺ですが、
LayouterはFrameのProxyとして実現するのが
やっぱり綺麗なのかなとか思っています。
f=Frame.new 0,0,200,200,"hogehoge"
f2=GridBagLayouter.new f
b1=Button.new f2, 10,20,"exit",24,1

> >> そういやcreateの引数の数が痛し痒しですね。
> 方向的にはもっと増えそうです...

うげ(^^;;;;

create(だけ)じゃなくて後からsetで指定できる属性が
もっと多いと幸せかなと思いました。そうすれば
create時に適当な値を入れてお茶を濁しておき、
後から適宜いじれるので。

究極いえばdelphiとかみたいに、createの引数は
親(ここではFrame)を指定する一つだけ、ってのが理想かも。
ruby拡張ライブラリの仕様の立場もさることながら、
人間にとっても多すぎる引数は色々面倒なので。

ruby側では、getとsetの属性名(?)指定引数を
動的にメソッド名に読みかえる仕組みを
これから作りたいなぁと思っています。
おおげさなもんじゃないですけど。
つまり、create引数よりもsetのほうを重んじたいと
俺は思っていたりします。

可能ならば、そーなって欲しいなぁと(^^;



あと。callback関数をsetしたときの話なんですが、
「Buttonと違って」Textは、callbackを設定すると
システム提供のデフォルトの挙動(文字を表示するとか
カーソル移動するとか)を、全部自分で肩代わりしないと
ならなくなるんですね。callbackを設定してある状態でも
ある程度はデフォ挙動を残したほうが良いかなと、思いました。