ruby-****@lists*****
ruby-****@lists*****
2003年 5月 8日 (木) 21:36:32 JST
------------------------- REMOTE_ADDR = 61.26.70.211 REMOTE_HOST = ------------------------- ------------------------- = テーブルを使ってのパッキング もう一つのパッキングの方法 - テーブル - について見てみよう。 特定の状況においてはこれは非常に便利である。 テーブルを使って、ウィジェットを配置するためのグリッドを作成する。 以降ではこのグリッドの一つ一つの升目をテーブルボックスと呼ぶことにする. 占有するテーブルボックスの数を指定することでウィジェットの大きさを指定することができる. まず最初に見るべきは,もちろんGtk::Table.newである. Gtk::Table.new(rows, columns, homogeneous) 第1引数と第2引数でテーブルの行(rows)と列(columns)の数を指定する. 第3引数のhomogeneousはテーブルボックスの大きさをどのように調整するかを指定する。 もしhomogeneousがtrueならば、全てのテーブルボックスはテーブル中の最大のウィジェットの大きさに合わせられる。 もしhomogeneousがfalseならば、テーブルボックスのサイズは同じ行で一番高いウィジェット、同じ列で一番幅の広いウィジェットによって決定される。 行と列は0からnまでの範囲を取る。 ここでnはGtk::Table.newの引数で与えた数である. よって例えばrows = 2,columns =2のように指定した場合、レイアウトは以下のようになる: .0 1 2 0+----------+----------+ | | | 1+----------+----------+ | | | 2+----------+----------+ 座標系は左上の角から開始することに注意しよう。 ウィジェットをボックスに配置するには、次のメソッドを使う: Gtk::Table#attach(child, left_attach, right_attach, top_attach, bottom_attach, xoptions, yoptions, xpadding, ypadding) 第1引数はこのテーブルに配置したいウィジェットで, (left_attach, top_attach)を左上の頂点,(right_attach, bottom_attach)を右下の頂点とする長方形を占有する. 例えば 2x2テーブルの右下のテーブルボックスにボタンを配置したい場合, left_attach = 1,right_attach = 2,top_attach = 1,bottom_attach = 2となる. また,ウィジェットを2x2テーブルの上側の行全体に配置したい場合, left_attach = 0,right_attach =2,top_attach = 0,bottom_attach = 1となる. xoptionsおよびyoptionsはパッキングオプションを指定するために使われる。 複数のオプションを指定する場合は、or(rubyにおける演算子は(('|')) )を取って指定する. 使用できるオプション: :Gtk::FILL テーブルボックスがウィジェットより広い場合,このウィジェットは利用できる空間全てを使うように拡張される. :Gtk::SHRINK テーブルウィジェットが必要とする空間より小さい空間に配置された場合 (普通はユーザからのウィンドウリサイジングによる)、 通常はこのウィジェットはウィンドウから押し出されて見えなくなる。 もしGtk::SHRINKが指定されていれば,このウィジェットはテーブルに合わせて縮む. :Gtk::EXPAND ウィンドウ中の残りの空間を使うようテーブルを拡張させる. paddingはGtk::Boxと同様,このウィジェットの回りにピクセル値で指定した大きさの余白を作成する. Gtk::Table#attachは(({沢山の}))オプションがあるため,短縮形が用意されている: Gtk::Table#attach_defaults(widget, left_attach, right_attach, top_attach, bottom_attach ) これはx_options, y_optionsに/Gtk::FILL | Gtk::EXPAND を、 x_padding, y_paddingに0を設定したものと同じである。 残りの引数は前述の関数と同一である。 そのほかにもGtk::Table#set_row_spacingおよびGtk::Table#set_col_spacingがある。 これは指定した行または列間に空白を挿入する。 Gtk::Table#set_row_spacing(row, spacing) Gtk::Table#set_col_spacing(column, spacing) 列の場合指定した列(column)の右に空白が置かれ、 行の場合は指定した行(row)の下に空白が置かれることに注意すること。 また、全ての行あるいは列に一定の空白を設定することもできる: Gtk::Table#set_row_spacings(spacing) Gtk::Table#set_col_spacings(spacing) これらの呼び出しを用いた場合、最後の行および列には空白は設定されないことに注意すること。