[ruby-gnome2-doc-cvs] [Hiki] update - ボックスの詳細

Back to archive index

ruby-****@lists***** ruby-****@lists*****
2003年 5月 6日 (火) 23:50:08 JST


-------------------------
REMOTE_ADDR = 61.26.70.211
REMOTE_HOST = 
-------------------------
=ボックスの詳細
この柔軟性が理由で、GTKのパッキングボックスは最初は解りにくいかもしれない。
沢山のオプションがあり、これらどのように組み合わされるのかすぐには理解しにくいだろう。
しかし結局は、基本的に5つの異るスタイルにまとめられる。 

{{image_left("packbox1.png")}}{{br}}


 
各行は幾つかのボタンを持った水平ボックス(HBox)を一つ含んでいる。
Gtk::Box#backはこれらのボタンをこの水平ボックスにパックする呼び出しを短くしたものである。
各々のボタンはこの水平ボックスに同じ方法でパックされる(つまり、Gtk::Box#pack_start関数で同じ引数が使用される)。 

これはGtk::Box#pack_startメソッドのシグニチャである.

  Gtk::Box#pack_start(child, expand, fill, padding)

最初の引数はボックス内にパックされるオブジェクトでる.
ここではオブジェクトは全てボタンであるので、ボックスの中にはボタンがパックされる。 

Gtk::Box#pack_startやGtk::Box#pack_endのexpand引数が

:trueの場合
  ウィジェットがボックスの余分な領域全体に渡って配置されるため、ボックスは与えられた領域を全て使うように広がる
:falseの場合
  ボックスはウィジェットの大きさにまで縮められる

expandをfalseに設定することで右や左にウィジェットを寄せることができる。
さもなければ、これらはボックスにフィットするように拡張される。
Gtk::Box#pack_start あるいはGtk::Box#pack_endで一つだけしかパッキングされない場合でも同様の効果が得られる。 

Gtk::Box#packのfill引数が

:trueの場合
  オブジェクトの大きさをすき間を埋めるように広げる
:falseの場合
  オブジェクトの周りにすき間をつくる

これはexpand引数がtrueの場合のみ効果を持つ。 

新しいボックスを作成する際の引数は次のようになる.

  Gtk::HBox.new(homogeneous, spacing)

Gtk::HBox.newのhomogeneous引数(Gtk::VBox.newも同様)はこのボックス中の全オブジェクトが同じサイズであるかどうかを制御する.
(つまりGtk::HBoxでは同じ幅、あるいはGtk::VBoxでは同じ高さ)。
もしこの引数がtrueの場合、 Gtk::HBox#packのexpand引数は常にtrueになる。 

spacing(ボックスを作成する時に設定)とpadding(オブジェクトをパックする時に設定)の違いは何であろうか?
スペーシングはオブジェクト同士の間に加えられ、パディングはオブジェクトの両サイドに加えられる。
次の図によってこれがはっきりするだろう。 


 
次は上記のイメージを作成するスクリプトである。
かなり詳しくコメントを書いてあるので,理解するのはそれほど難しくないだろう.
実際に動かして遊んでみよう.

-------------------------
=ボックスの詳細
この柔軟性が理由で、GTKのパッキングボックスは最初は解りにくいかもしれない。
沢山のオプションがあり、これらどのように組み合わされるのかすぐには理解しにくいだろう。
しかし結局は、基本的に5つの異るスタイルにまとめられる。 

{{image_left("packbox1.png")}}{{br}}

各行は幾つかのボタンを持った水平ボックス(HBox)を一つ含んでいる。
Gtk::Box#backはこれらのボタンをこの水平ボックスにパックする呼び出しを短くしたものである。
各々のボタンはこの水平ボックスに同じ方法でパックされる(つまり、Gtk::Box#pack_start関数で同じ引数が使用される)。 

これはGtk::Box#pack_startメソッドのシグニチャである.

  Gtk::Box#pack_start(child, expand, fill, padding)

最初の引数はボックス内にパックされるオブジェクトでる.
ここではオブジェクトは全てボタンであるので、ボックスの中にはボタンがパックされる。 

Gtk::Box#pack_startやGtk::Box#pack_endのexpand引数が

:trueの場合
  ウィジェットがボックスの余分な領域全体に渡って配置されるため、ボックスは与えられた領域を全て使うように広がる
:falseの場合
  ボックスはウィジェットの大きさにまで縮められる

expandをfalseに設定することで右や左にウィジェットを寄せることができる。
さもなければ、これらはボックスにフィットするように拡張される。
Gtk::Box#pack_start あるいはGtk::Box#pack_endで一つだけしかパッキングされない場合でも同様の効果が得られる。 

Gtk::Box#packのfill引数が

:trueの場合
  オブジェクトの大きさをすき間を埋めるように広げる
:falseの場合
  オブジェクトの周りにすき間をつくる

これはexpand引数がtrueの場合のみ効果を持つ。 

新しいボックスを作成する際の引数は次のようになる.

  Gtk::HBox.new(homogeneous, spacing)

Gtk::HBox.newのhomogeneous引数(Gtk::VBox.newも同様)はこのボックス中の全オブジェクトが同じサイズであるかどうかを制御する.
(つまりGtk::HBoxでは同じ幅、あるいはGtk::VBoxでは同じ高さ)。
もしこの引数がtrueの場合、 Gtk::HBox#packのexpand引数は常にtrueになる。 

spacing(ボックスを作成する時に設定)とpadding(オブジェクトをパックする時に設定)の違いは何であろうか?
スペーシングはオブジェクト同士の間に加えられ、パディングはオブジェクトの両サイドに加えられる。
次の図によってこれがはっきりするだろう。 

{{image_left("packbox2.png")}}{{br}}
 
次は上記のイメージを作成するスクリプトである。
かなり詳しくコメントを書いてあるので,理解するのはそれほど難しくないだろう.
実際に動かして遊んでみよう.




ruby-gnome2-cvs メーリングリストの案内
Back to archive index