Advertisement
hiro1357

Ruby GTK+2 Skeleton

Dec 16th, 2015
423
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.75 KB | None | 0 0
  1. #!ruby
  2. require 'gtk2'
  3.  
  4. def message_box(mainwnd, text, title="", buttons="ok")
  5.   dialog = Gtk::Dialog.new(title, mainwnd, Gtk::Dialog::MODAL)
  6.   case buttons
  7.   when "close" then
  8.     dialog.add_button(Gtk::Stock::CLOSE, Gtk::Dialog::RESPONSE_CLOSE)
  9.   when "yesno" then
  10.     dialog.add_button(Gtk::Stock::YES, Gtk::Dialog::RESPONSE_YES)
  11.     dialog.add_button(Gtk::Stock::NO, Gtk::Dialog::RESPONSE_NO)
  12.   when "okcancel" then
  13.     dialog.add_button(Gtk::Stock::OK, Gtk::Dialog::RESPONSE_OK)
  14.     dialog.add_button(Gtk::Stock::CANCEL, Gtk::Dialog::RESPONSE_CANCEL)
  15.   when "okcancelhelp" then
  16.     dialog.add_button(Gtk::Stock::OK, Gtk::Dialog::RESPONSE_OK)
  17.     dialog.add_button(Gtk::Stock::CANCEL, Gtk::Dialog::RESPONSE_CANCEL)
  18.     dialog.add_button(Gtk::Stock::HELP, Gtk::Dialog::RESPONSE_HELP)
  19.   else
  20.     dialog.add_button(Gtk::Stock::OK, Gtk::Dialog::RESPONSE_OK)
  21.   end
  22.   dialog.set_default_size(500, 100)
  23.   dialog.set_window_position(Gtk::Dialog::Position::CENTER)
  24.   #dialog.signal_connect("response"){dialog.destroy}
  25.  
  26.   dialog.vbox.add(Gtk::Label.new(text))
  27.   dialog.show_all()
  28.   dialog.run do |r|
  29.     case r
  30.     when Gtk::Dialog::RESPONSE_OK
  31.       retval = "ok"
  32.     when Gtk::Dialog::RESPONSE_CANCEL
  33.       retval = "cancel"
  34.     when Gtk::Dialog::RESPONSE_YES
  35.       retval = "yes"
  36.     when Gtk::Dialog::RESPONSE_NO
  37.       retval = "no"
  38.     when Gtk::Dialog::RESPONSE_ACCEPT
  39.       retval = "accept"
  40.     when Gtk::Dialog::RESPONSE_REJECT
  41.       retval = "reject"
  42.     when Gtk::Dialog::RESPONSE_DELETE_EVENT
  43.       retval = "deleted"
  44.     when Gtk::Dialog::RESPONSE_APPLY
  45.       retval = "apply"
  46.     when Gtk::Dialog::RESPONSE_HELP
  47.       retval = "help"
  48.     when Gtk::Dialog::RESPONSE_NONE
  49.       retval = "none"
  50.     else
  51.       retval = "none"
  52.     end
  53.     dialog.destroy
  54.     return retval
  55.   end
  56. end
  57.  
  58.  
  59. class Form1 < Gtk::Window
  60.   def initialize
  61.     super
  62.     self.set_title("WindowTitle")
  63.     self.set_default_size(300, 200)
  64.     self.set_window_position(Gtk::Window::Position::CENTER)
  65.     self.signal_connect("destroy"){Gtk.main_quit}
  66.    
  67.     @fixed = Gtk::Fixed.new
  68.     self.add @fixed
  69.  
  70.     @button1 = Gtk::Button.new
  71.     @button1.set_label("click!")
  72.     @button1.set_size_request(100, 35)
  73.     @button1.set_tooltip_text("click me!")
  74.     @button1.signal_connect("clicked"){|sender, e| button1_click(sender, e)}
  75.     @fixed.put(@button1, 10, 10)
  76.  
  77.     @textbox1 = Gtk::Entry.new
  78.     @textbox1.set_size_request(250, 25)
  79.     @fixed.put(@textbox1, 10, 50)
  80.  
  81.     self.show_all
  82.   end
  83.  
  84.   def button1_click(sender, e)
  85.     if message_box(self, "Are you sure you want to continue?", "question", "yesno") == "yes"
  86.       @button1.set_label(@textbox1.text)
  87.       message_box(self, "done!", "notice")
  88.     end
  89.   end
  90. end
  91.  
  92. Gtk.init
  93. form1 = Form1.new
  94. Gtk.main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement