ruby-****@lists*****
ruby-****@lists*****
2003年 5月 11日 (日) 23:21:17 JST
------------------------- REMOTE_ADDR = 61.26.70.211 REMOTE_HOST = URL = http://ruby-gnome2.sourceforge.jp/?%C9%E1%C4%CC%A4%CE%A5%DC%A5%BF%A5%F3 ------------------------- = 普通のボタン {{image_right "button.png"}} #! /usr/bin/env ruby require 'gtk2' def xpm_label_box(xpm_filename, label_text) box = Gtk::HBox.new(false, 0) box.border_width = 2 image = Gtk::Image.new(xpm_filename) label = Gtk::Label.new(label_text) box.pack_start(image, false, false, 3) box.pack_start(label, false, false, 3) box end Gtk::init window = Gtk::Window.new(Gtk::Window::TOPLEVEL) window.title = "Pixmap'd Buttons!" window.border_width = 10 window.signal_connect("destroy") {Gtk::main_quit} window.signal_connect("delete_event") {Gtk::main_quit} button = Gtk::Button.new button.signal_connect("clicked") do puts "Hello again - cool button was pressed" end box = xpm_label_box("xpm/folder.xpm", "cool button") button.add(box) window.add(button) window.show_all Gtk::main ------------------------- = 普通のボタン これまでにボタンウィジェットについて見るべきものはほとんど全て見て来た。 実に簡単である。 しかし、ボタンを作成する方法は一通りではない. :Gtk::Button.new ボタンウィジェットを作成する. :Gtk::Button.new(text, use_underline = true) Gtk::Button.newにStringを与えると,Gtk::Labelを内包するボタンウィジェットを生成することができる. use_underlineがtrueの場合,text中の'_'は次の文字の下線として表示される. もし'_'自身を表示したい場合,'__'のように'_'を続けて2つ書く. 最初の下線装飾された文字はニーモニックと呼ばれるキーボードアクセラレータとして登録され, Altキーとその文字を同時に押すと"activate"シグナルが発行される. :Gtk::Button.new(stock_id) ストックアイテムとは,"Open"や"Exit"のような一般にメニューやツールバーで使用される部品である. 各ストックアイテムはストックIDで識別される. Gtk::Button.newの引数にストックIDを渡すことで, ストックIDに対応したストックアイテムを内部に含むボタンを作成できる. ストックアイテムについては((<アイテムファクトリ>))を参照. 次のプログラムでは,様々な方法でボタンウィジェットを生成している. 生成方法が実際のボタンウィジェットの振舞いや外観にどのような影響を与えるのか確認しよう. #! /usr/bin/env ruby require 'gtk2' Gtk::init window = Gtk::Window.new(Gtk::Window::TOPLEVEL) window.signal_connect("delete_event") {Gtk::main_quit} window.signal_connect("destroy") {Gtk::main_quit} box = Gtk::VBox.new(false, 0) window.add(box) button = Gtk::Button.new("_Tex_t") button.signal_connect("activate") do puts "activated" end box.pack_start(button, false, false, 5) button = Gtk::Button.new("_Text", false) box.pack_start(button, false, false, 5) count = 0 button = Gtk::Button.new button.signal_connect("clicked") do |b| b.label = "#{count} times" count += 1 end box.pack_start(button, false, false, 5) button = Gtk::Button.new(Gtk::Stock::OK) box.pack_start(button, false, false, 5) window.show_all Gtk::main {{image_right "button.png"}} #! /usr/bin/env ruby require 'gtk2' def xpm_label_box(xpm_filename, label_text) box = Gtk::HBox.new(false, 0) box.border_width = 2 image = Gtk::Image.new(xpm_filename) label = Gtk::Label.new(label_text) box.pack_start(image, false, false, 3) box.pack_start(label, false, false, 3) box end Gtk::init window = Gtk::Window.new(Gtk::Window::TOPLEVEL) window.title = "Pixmap'd Buttons!" window.border_width = 10 window.signal_connect("destroy") {Gtk::main_quit} window.signal_connect("delete_event") {Gtk::main_quit} button = Gtk::Button.new button.signal_connect("clicked") do puts "Hello again - cool button was pressed" end box = xpm_label_box("xpm/folder.xpm", "cool button") button.add(box) window.add(button) window.show_all Gtk::main