hiro1357 icon

Ruby GTK+2 Skeleton

hiro1357 | PRO | 12/16/15 05:46:33 PM UTC | 0 ⭐ | 669 👁️ | Never ⏰ | []
Ruby |

2.75 KB

|

None

|

0 👍

/

0 👎

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