#!ruby require 'gtk2' def message_box(mainwnd, text, title="", buttons="ok") dialog = Gtk::Dialog.new(title, mainwnd, Gtk::Dialog::MODAL) case buttons when "close" then dialog.add_button(Gtk::Stock::CLOSE, Gtk::Dialog::RESPONSE_CLOSE) when "yesno" then dialog.add_button(Gtk::Stock::YES, Gtk::Dialog::RESPONSE_YES) dialog.add_button(Gtk::Stock::NO, Gtk::Dialog::RESPONSE_NO) when "okcancel" then dialog.add_button(Gtk::Stock::OK, Gtk::Dialog::RESPONSE_OK) dialog.add_button(Gtk::Stock::CANCEL, Gtk::Dialog::RESPONSE_CANCEL) when "okcancelhelp" then dialog.add_button(Gtk::Stock::OK, Gtk::Dialog::RESPONSE_OK) dialog.add_button(Gtk::Stock::CANCEL, Gtk::Dialog::RESPONSE_CANCEL) dialog.add_button(Gtk::Stock::HELP, Gtk::Dialog::RESPONSE_HELP) else dialog.add_button(Gtk::Stock::OK, Gtk::Dialog::RESPONSE_OK) end dialog.set_default_size(500, 100) dialog.set_window_position(Gtk::Dialog::Position::CENTER) #dialog.signal_connect("response"){dialog.destroy} dialog.vbox.add(Gtk::Label.new(text)) dialog.show_all() dialog.run do |r| case r when Gtk::Dialog::RESPONSE_OK retval = "ok" when Gtk::Dialog::RESPONSE_CANCEL retval = "cancel" when Gtk::Dialog::RESPONSE_YES retval = "yes" when Gtk::Dialog::RESPONSE_NO retval = "no" when Gtk::Dialog::RESPONSE_ACCEPT retval = "accept" when Gtk::Dialog::RESPONSE_REJECT retval = "reject" when Gtk::Dialog::RESPONSE_DELETE_EVENT retval = "deleted" when Gtk::Dialog::RESPONSE_APPLY retval = "apply" when Gtk::Dialog::RESPONSE_HELP retval = "help" when Gtk::Dialog::RESPONSE_NONE retval = "none" else retval = "none" end dialog.destroy return retval end end class Form1 < Gtk::Window def initialize super self.set_title("WindowTitle") self.set_default_size(300, 200) self.set_window_position(Gtk::Window::Position::CENTER) self.signal_connect("destroy"){Gtk.main_quit} @fixed = Gtk::Fixed.new self.add @fixed @button1 = Gtk::Button.new @button1.set_label("click!") @button1.set_size_request(100, 35) @button1.set_tooltip_text("click me!") @button1.signal_connect("clicked"){|sender, e| button1_click(sender, e)} @fixed.put(@button1, 10, 10) @textbox1 = Gtk::Entry.new @textbox1.set_size_request(250, 25) @fixed.put(@textbox1, 10, 50) self.show_all end def button1_click(sender, e) if message_box(self, "Are you sure you want to continue?", "question", "yesno") == "yes" @button1.set_label(@textbox1.text) message_box(self, "done!", "notice") end end end Gtk.init form1 = Form1.new Gtk.main