[ruby-gnome2-doc-cvs] [Hiki] update - ツールバー

アーカイブの一覧に戻る

ruby-****@lists***** ruby-****@lists*****
2003年 5月 26日 (月) 22:20:25 JST


-------------------------
REMOTE_ADDR = 210.249.193.205
REMOTE_HOST = 
        URL = http://ruby-gnome2.sourceforge.jp/?%A5%C4%A1%BC%A5%EB%A5%D0%A1%BC
-------------------------

-------------------------
= ツールバー

== 基本的な使い方
hoge.xpmは適当にXPM形式ファイルを使ってください。

  require 'gtk'
 
  window = Gtk::Window.new
  window.realize
 
  pix, mask = Gdk::Pixmap::create_from_xpm(window.window, nil, "hoge.xpm")
   
  toolbar = Gtk::Toolbar.new
  toolbar.append_item("Open", "Open File", nil,
                  Gtk::Pixmap.new(pix, mask), nil) do
    p "Open"
  end
  toolbar.append_item("Save", "Save File", nil,
                      Gtk::Pixmap.new(pix, mask), nil) do
    p "Save"
  end
  
  window.add(toolbar)
  window.show_all
  Gtk.main

--- Gtk::Toolbar#append_item(text, tooltip_text, tooltip_private_text, icon, proc) do 〜 end
     * text - 表示文字列
     * tooltip_text - ToolTip用文字列
     * tooltip_private_text - ToolTipのさらに詳細な説明(って使い方よくわかりません)
     * icon - Gtk::Pixmapオブジェクト
     * proc - Procオブジェクト。do 〜 endの代わりに使うことができる。
  
第5引数のprocは本家のGTK+と互換性を残すためにあるようなイメージ。なくても良いと思うんだけどなぁ、ということで、私の場合は上記のように常にnilを設定するようにしてます。
  
それから画像が同じだからと言ってiconを使い回そうとすると(先にGtk::Pixmap.new()しておいてそれを繰り返し使う)エラーが発生します。そんなわけで、この例では、iconのところで毎回Gtk::Pixmap.new()してます。これもバグっぽいんだけどなぁ。まぁ、使い回さなければ良いってことで。

== 表示形式を変える(ツールバー生成時)
次に、ツールバーを縦に表示したり、文字だけ表示したりしてみます。

  require 'gtk'
 
  window = Gtk::Window.new
  window.realize
 
  pix, mask = Gdk::Pixmap::create_from_xpm(window.window, nil, "hoge.xpm")
 
  toolbar = Gtk::Toolbar.new(Gtk::ORIENTATION_VERTICAL, Gtk::Toolbar::TEXT)
  toolbar.append_item("Open", "Open File", nil,
          Gtk::Pixmap.new(pix, mask), nil) do
  p "Open"
  end
  toolbar.append_item("Save", "Save File", nil,
          Gtk::Pixmap.new(pix, mask), nil) do
  p "Save"
  end

  window.add(toolbar)
  window.show_all
  Gtk.main
  

--- Gtk::Toolbar.new(orientation, style)
     * orientation - 表示方向。
        * Gtk::ORIENTATION_VERTICAL - 縦方向
        * Gtk::ORIENTATION_HORIZONTAL - 横方向(デフォルト)
     * style - Toolbarのボタンがテキストのみを含むかアイコンのみ含むかあるいは両方含むかを決める
        * Gtk::Toolbar::TEXT - テキスト
        * Gtk::Toolbar::ICONS - アイコン
        * Gtk::Toolbar::BOTH - 両方
  
ちなみにオイラの環境だとstyleの方、何を指定してもBOTHになってしまいます。なぜなんだろう。そもそも解釈間違えてるかな?

== 表示形式を変える(ツールバー生成後)
今度は、ツールバー生成後に、2と同じことをしてみます。オイラの環境だとこっちはOKなんだよね。

  require 'gtk'

  window = Gtk::Window.new
  window.realize

  pix, mask = Gdk::Pixmap::create_from_xpm(window.window, nil, "hoge.xpm")

  toolbar = Gtk::Toolbar.new
  toolbar.set_orientation(Gtk::ORIENTATION_VERTICAL)

  toolbar.append_item("Open", "Open File", nil,
          Gtk::Pixmap.new(pix, mask), nil) do
  p "Open"
  end
  toolbar.append_item("Save", "Save File", nil,
          Gtk::Pixmap.new(pix, mask), nil) do
  p "Save"
  end

  window.add(toolbar)
  window.show_all

  toolbar.set_style(Gtk::Toolbar::TEXT)

  Gtk.main
   

Gtk::Toolbar#set_orientation(orientation)で縦横方向を、
Gtk::Toolbar#set_style(style)でスタイルを決めてます。
Gtk::Toolbar#set_style()は、ツールバーが画面に表示された後ではないと変更できないみたいです。なんでだろ。

== ボタンのレリーフ(縁の部分)のスタイルを変える
ボタンのレリーフ(縁の部分)のスタイルを設定します。

  require 'gtk'
 
  window = Gtk::Window.new
  window.realize
 
  pix, mask = Gdk::Pixmap::create_from_xpm(window.window, nil, "hoge.xpm")

  toolbar = Gtk::Toolbar.new
  toolbar.set_button_relief(Gtk::RELIEF_NONE)
 
  toolbar.append_item("Open", "Open File", nil,
          Gtk::Pixmap.new(pix, mask), nil) do
  p "Open"
  end
  toolbar.append_item("Save", "Save File", nil,
          Gtk::Pixmap.new(pix, mask), nil) do
  p "Save"
  end
 
  window.add(toolbar)
  window.show_all
  Gtk.main

--- Gtk::Toolbar#set_button_relief(style)
     * Gtk::RELIEF_NONE - 枠が無くなります。
     * Gtk::RELIEF_HALF - 枠の大きさが半分になる?NORMALと同じ?
     * Gtk::RELIEF_NORMAL - 枠が表示されます(デフォルト)。
 
== ボタン間にスペースをあける
ボタン間にスペースをあけます。

  require 'gtk'
 
  window = Gtk::Window.new
  window.realize
 
  pix, mask = Gdk::Pixmap::create_from_xpm(window.window, nil, "hoge.xpm")
 
  toolbar = Gtk::Toolbar.new
  toolbar.set_space_size(30)
  toolbar.set_space_style(Gtk::Toolbar::SPACE_LINE)

  toolbar.append_item("Open", "Open File", nil,
          Gtk::Pixmap.new(pix, mask), nil) do
  p "Open"
  end
  toolbar.append_space
  toolbar.append_item("Save", "Save File", nil,
          Gtk::Pixmap.new(pix, mask), nil) do
  p "Save"
  end
 
  window.add(toolbar)
  window.show_all
  Gtk.main
   
Gtk::Toolbar#set_space_size(size)でツールバーのスペース部分のサイズを設定します。
Gtk::Toolbar#set_space_style(style)でスペース部分のスタイルを設定します。
 
   * Gtk::Toolbar::SPACE_LINE - 仕切線が表示されます。
   * Gtk::Toolbar::SPACE_EMPTY - 何も表示されません(デフォルト)。

実際にスペースを空けたいアイテムの間でGtk::Toolbar#append_space()を呼びます。

== ToolTipを表示しないようにする
まぁ、滅多に使うことも無いでしょうが。

  require 'gtk'

  window = Gtk::Window.new
  window.realize

  pix, mask = Gdk::Pixmap::create_from_xpm(window.window, nil, "hoge.xpm")

  toolbar = Gtk::Toolbar.new
  toolbar.set_tooltips(false)

  toolbar.append_item("Open", "Open File", nil,
          Gtk::Pixmap.new(pix, mask), nil) do
  p "Open"
  end
  toolbar.append_item("Save", "Save File", nil,
          Gtk::Pixmap.new(pix, mask), nil) do
  p "Save"
  end

  window.add(toolbar)
  window.show_all
  Gtk.main
   
Gtk::Toolbar#set_tooltips(enable)で、enableにtrueを設定すると表示、enableにfalseを設定すると非表示となります。

== ツールバーへウィジェットを追加する
ツールバーに別のウィジェットを追加することもできます。ここでは、Gtk::Entryウィジェットを追加してみます。使いようによっては結構使えるかも。

  require 'gtk'
 
  window = Gtk::Window.new
  window.realize
 
  pix, mask = Gdk::Pixmap::create_from_xpm(window.window, nil, "hoge.xpm")
 
  toolbar = Gtk::Toolbar.new
  toolbar.append_item("Open", "Open File", nil,
          Gtk::Pixmap.new(pix, mask), nil) do
  p "Open"
  end
  toolbar.append_widget(Gtk::Entry.new, "Entry Widget", nil)
  toolbar.append_item("Save", "Save File", nil,
          Gtk::Pixmap.new(pix, mask), nil) do
  p "Save"
  end
 
  window.add(toolbar)
  window.show_all
  Gtk.main
   
--- Gtk::Toolbar#append_widget(widget, tooltip_text, tooltip_private_text)
     * widget - 追加するウィジェット
     * tooltip_text - ToolTip用文字列
     * tooltip_private_text - ToolTipのさらに詳細な説明
  
== ある特定のウィジェットを追加する
先ほどのGtk::Toolbar#append_widget()は任意のウィジェットを生成できましたが、同様にいくつかのウィジェットに関してはGtk::Toolbar#append_element()を使うこともできます。

  require 'gtk'
 
  window = Gtk::Window.new
  window.realize
 
  pix, mask = Gdk::Pixmap::create_from_xpm(window.window, nil, "hoge.xpm")
 
  toolbar = Gtk::Toolbar.new
  toolbar.append_element(Gtk::Toolbar::CHILD_BUTTON, nil, "button", 
              "button 1", nil, Gtk::Pixmap.new(pix, mask)) do
  p "button 1"
  end
  toolbar.append_element(Gtk::Toolbar::CHILD_SPACE, nil, nil, nil, nil, nil)
  toolbar.append_element(Gtk::Toolbar::CHILD_TOGGLEBUTTON, nil, "togglebutton", 
             "toggle button 1", nil, Gtk::Pixmap.new(pix, mask)) do
  p "toggle button 1"
  end
  radio1 = toolbar.append_element(Gtk::Toolbar::CHILD_RADIOBUTTON, nil, "radiobutton1", 
              "radio button 1", nil, Gtk::Pixmap.new(pix, mask)) do
  p "radio button 1"
  end
  toolbar.append_element(Gtk::Toolbar::CHILD_RADIOBUTTON, radio1, "radiobutton2", 
              "radio button 2", nil, Gtk::Pixmap.new(pix, mask)) do
  p "radio button 2"
  end
  toolbar.append_element(Gtk::Toolbar::CHILD_WIDGET, Gtk::Entry.new, "widget1", 
              "widget 1", nil, Gtk::Pixmap.new(pix, mask)) do
  p "widget 1"
  end      
 
  window.add(toolbar)
  window.show_all
  Gtk.main

--- Gtk::Toolbar#append_element(type, widget, text, tooltip_text, tooltip_private_text, icon) do 〜 end
     * type - 追加するウィジェットの種類
       * Gtk::Toolbar::CHILD_SPACE - スペースを空けます。Gtk::Toolbar#append_space()と同じです、たぶん。
       * Gtk::Toolbar::CHILD_BUTTON - ボタンを追加します。Gtk::Toolbar#append_item()と同じです。
       * Gtk::Toolbar::CHILD_TOGGLEBUTTON - トグルボタンを追加します。
       * Gtk::Toolbar::CHILD_RADIOBUTTON - ラジオボタンを追加します。
       * Gtk::Toolbar::CHILD_WIDGET - 任意のウィジェットを追加します。Gtk::Toolbar#append_widget()と同じです。
     * widget - typeによって指定するものが異なります。
       * Gtk::Toolbar::CHILD_SPACE, Gtk::Toolbar::CHILD_BUTTON, Gtk::Toolbar::CHILD_TOGGLEBUTTON。それ以外の場合はnilを指定します。
       * Gtk::Toolbar::CHILD_RADIOBUTTON - グループ化したいものに対し最初に取得した(メソッドの戻り値)のGtk::RadioButtonを指定します。詳しくはラジオボタンのところを参照してください。
       * Gtk::Toolbar::CHILD_WIDGET - 追加したいウィジェットを指定します。たとえば、Gtk::Entryなど。
     * tooltip_text - ToolTip用文字列
     * tooltip_private_text - ToolTipのさらに詳細な説明
     * icon - Gtk::Pixmapオブジェクト

上記例ではradio1のところでしか使ってませんが、このメソッドは生成したウィジェットを返します。それから、ブロック(do 〜 end)はあってもなくても大丈夫ですが、Gtk::Toolbar::CHILD_SPACEなどでは意味がありません。

--- Gtk::Toolbar#prepend_xxx(), Gtk::Toolbar#insert_xxx()
今まではすべてGtk::Toolbar#append_xxx()を使っていたのですが、同様なメソッドにGtk::Toolbar#prepend_xxx(), Gtk::Toolbar#insert_xxx()があります。これらは「先に」「場所を指定して」ボタンを追加(挿入)していくということ以外はGtk::Toolbar#append_xxx()と変わりません。

  require 'gtk'
 
  window = Gtk::Window.new
  window.realize
 
  pix, mask = Gdk::Pixmap::create_from_xpm(window.window, nil, "hoge.xpm")
 
  toolbar = Gtk::Toolbar.new
  toolbar.prepend_item("prepend1", "prepend 1", nil,
          Gtk::Pixmap.new(pix, mask), nil) do
  p "prepend1"
  end
  toolbar.prepend_item("prepend2", "prepend 2", nil,
          Gtk::Pixmap.new(pix, mask), nil) do
  p "prepend2"
  end
  toolbar.insert_item("insert", "insert 1", nil,
          Gtk::Pixmap.new(pix, mask), nil, 0) do
  p "insert"
  end
 
  window.add(toolbar)
  window.show_all
  Gtk.main

メソッドの紹介だけ。
--- Gtk::Toolbar#prepend_item(text, tooltip_text, tooltip_private_text, icon, proc) do 〜 end
--- Gtk::Toolbar#insert_item(text, tooltip_text, tooltip_private_text, icon, proc, position) do 〜 end
   
--- Gtk::Toolbar#prepend_space
--- Gtk::Toolbar#insert_space(position)

--- Gtk::Toolbar#prepend_widget(widget, tooltip_text, tooltip_private_text)
--- Gtk::Toolbar#insert_widget(widget, tooltip_text, tooltip_private_text, position)
     * widget - 追加するウィジェット
     * tooltip_text - ToolTip用文字列
     * tooltip_private_text - ToolTipのさらに詳細な説明
  

Gtk::insert_xxx()のpositionは挿入位置です。0が一番左になります。





ruby-gnome2-cvs メーリングリストの案内
アーカイブの一覧に戻る