ruby-****@sourc*****
ruby-****@sourc*****
2003年 8月 14日 (木) 22:35:17 JST
------------------------- REMOTE_ADDR = 61.26.70.211 REMOTE_HOST = URL = http://ruby-gnome2.sourceforge.jp/?%A5%C0%A5%A4%A5%A2%A5%ED%A5%B0 ------------------------- = ダイアログ ダイアログは非常に簡単なウィジェットで,ユーザへのポップアップメッセージなどに使われるあらかじめいくつかのものがパックされたウィンドウである. ダイアログを作成するには: Gtk::Dialog.new Dialogのインスタンスを作成するとウィンドウを1つ生成される. そのウィンドウの最上位にはvboxと呼ばれる垂直ボックス(Gtk::VBox)がパックされ,その内側にはセパレータとaction_areaと呼ばれる水平ボックス(Gtk::HBox)が含まれる. vboxやaction_areaはGtk::Dialog#vbox,Gtk::Dialog#action_areaで取得することができる. vboxにはユーザへの質問や,エラーメッセージを表示する((<ラベル>))などをパックすることができる. そしてaction_areaにOKボタンとキャンセルボタンなどのボタンをパックし,それぞれのボタンに異なったシグナルを接続しユーザが選択した操作を行うことができる. d = Gtk::Dialog.new label = Gtk::Label.new("Dialog is groovy") d.vbox.pack_start(label, true, true, 0) d.add_button("OK", 0) d.vbox.show_all もしvboxの単純な機能だけではあなたのアプリケーションにとって不十分な場合には,他のレイアウトウィジェット(例えばテーブルなど)をvboxにパックするだけで良い。 OK,キャンセルなどのボタンは通常action_areaにパックする. action_areaにボタンを追加するGtk::Dialog#add_buttonというメソッドが用意されている. Gtk::Dialog#add_button(button_text, response_id) ボタンのラベルはbutton_textとなり,response_idはボタンが押されたときのレスポンスIDを設定する. レスポンスIDには整数を渡すことができるが,Ruby/Gtk2ではあらかじめ以下の定数が定義されているので,それを利用してもよい. * Gtk::Dialog::RESPONSE_NONE * Gtk::Dialog::RESPONSE_REJECT * Gtk::Dialog::RESPONSE_DELETE_EVENT * Gtk::Dialog::RESPONSE_OK * Gtk::Dialog::RESPONSE_CANCEL * Gtk::Dialog::RESPONSE_CLOSE * Gtk::Dialog::RESPONSE_YES * Gtk::Dialog::RESPONSE_NO * Gtk::Dialog::RESPONSE_APPLY * Gtk::Dialog::RESPONSE_HELP - {{image_left "dialog1.png"}} - {{image_left "dialog2.png"}} + {{image_right "dialog1.png"}} + {{image_right "dialog2.png"}} + ((*ちょっとイマイチ.後で書き直す*)) require 'gtk2' Gtk.init window = Gtk::Window.new window.signal_connect("destroy") {Gtk.main_quit} box1 = Gtk::HBox.new(false, 0) window.add(box1) button = Gtk::Button.new("dialog") button.signal_connect("clicked") do d = Gtk::Dialog.new label = Gtk::Label.new("Dialog is groovy") d.vbox.pack_start(label, true, true, 0) d.add_button(Gtk::Stock::OK, Gtk::Dialog::RESPONSE_OK) d.add_button(Gtk::Stock::CANCEL, Gtk::Dialog::RESPONSE_CANCEL) d.vbox.show_all case d.run when Gtk::Dialog::RESPONSE_OK puts "OK" when Gtk::Dialog::RESPONSE_CANCEL puts "Cancel" else puts "else" end d.destroy end box1.pack_start(button, true, true, 0) quit = Gtk::Button.new("quit") quit.signal_connect("clicked") {Gtk.main_quit} box1.pack_start(quit, true, true, 0) window.show_all Gtk.main