#!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
Comments