ruby-****@sourc*****
ruby-****@sourc*****
2003年 9月 1日 (月) 11:22:02 JST
------------------------- REMOTE_ADDR = 61.204.181.66 REMOTE_HOST = URL = http://ruby-gnome2.sourceforge.jp/ja/?tips_toolbar ------------------------- = ツールバー上のボタンのアイコンだけ変更する ツールバーをはじめ、多くのウィジェットはGtk::Container, Gtk::Binのサブクラスです。それらのウィジェットはいくつかの子ウィジェットがまとまったウィジェットとなっていますので、その一つ一つの子ウィジェットを取り出して、その子ウィジェットのメソッドを呼び出すことができます。 ここではツールバー上のボタンのアイコンを変更してみましょう。 require 'gtk2' Gtk.init toolbar = Gtk::Toolbar.new toolbar.append(Gtk::Stock::NEW) do toolbar.children[0].child.children[0].set(Gtk::Stock::QUIT, Gtk::IconSize::SMALL_TOOLBAR) #(1) end Gtk::Window.new.add(toolbar).show_all Gtk.main (('(1)'))の部分はちょっと説明しづらいので以下のように分解してみます(自分で使う際はどちらでもお好みでどうぞ)。 button = toolbar.children[0] vbox = button.child image = vbox.children[0] image.set(Gtk::Stock::QUIT, Gtk::IconSize::SMALL_TOOLBAR) + 階層図(というか各ウィジェットの包含関係と言った方が良いかな)は以下のようなイメージになります。 + + {{image_right("container.jpg")}} + 具体的な処理の流れは以下のようになります。 (1)Gtk::ToolbarはGtk::ContainerのサブクラスなのでGtk::Container#childrenで子ウィジェットを全て取得できます。で、今回はその1番目の子ウィジェット(Gtk::Button)を変更の対象としますのでtoolbar.children[0]で1番目の子ウィジェットを取得します。 (2)Gtk::ButtonはGtk::Binのサブクラスで子ウィジェットは1つしかありません。子ウィジェットはGtk::Bin#childで取得できます。この場合のGtk::Buttonの子ウィジェットはGtk::VBoxです。 (3)Gtk::VBoxもGtk::Containerのサブクラスです。vbox.children[0]で1番目の子ウィジェットであるGtk::Imageを取得します。 (4)取得したGtk::Imageに対し、新しいアイコンをセットします。 + + - ((<Masao>))