From: Masao M. <mu...@hi...> - 2006-01-28 05:06:26
|
Hi, On Fri, 27 Jan 2006 18:25:38 -0800 Joe Van Dyk <joe...@gm...> wrote: > require 'gtk2' > > Gdk::Threads::init > Gtk::init > > def show_dialog window, text > dialog = Gtk::MessageDialog.new window, > 0, > Gtk::MessageDialog::INFO, > Gtk::MessageDialog::BUTTONS_CLOSE, > text > dialog.run > dialog.destroy > end > > window = Gtk::Window.new > window.set_default_size 300, 300 > button = Gtk::Button.new("Hm.. not much going on here") > button.signal_connect("clicked") { show_dialog window, "from button click" } > window << button > > window.signal_connect("delete-event") { Gtk::main_quit } > window.show_all > > Thread.new do > loop do > sleep 3 > puts "entering critical part here" > Gdk::Threads::synchronize do > show_dialog window, "from thread" > end > puts "leaving critical part here" > end > end > > Gtk::timeout_add(1) do > true > end > > Gtk::main You can't use Gtk::Dialog#run in the Thread. You need to call it in main thread. This is a restrict of Ruby-GNOME2 now. -- .:% Masao Mutoh<mu...@hi...> |