Hello I’m currently playing with wxRuby and RubyMSN to learn to program
desktop-programs. I know it is a hard task instead of just crating a
notepad etc, but I need a bigger task than a notepad.
I now do manage to use them by them self, but I cant get them to work
together. The problem is the loop.
RubyMSN wants to have an endless loop like
while true
sleep 1
end
or using the GUI’s mainloop or something
I currently have this code as the loop
TheApp.new.main_loop()
while true
sleep 1
end
I have my window working, and the main_loop doing something. But I cant
log in, it’s like I doesn’t have any loop (from the tutorial), I only
get one debug line. But as soon as I close the window and lets the
endless loop do it’s job it works like a charm.
answered on stackoverflow, here’s a copy for the sake of the rubytalk
archive:
Worked for me. Try this: copy the minimal sample from the wxruby
distribution, and modify minimal.rb so that you start your msn thread
just before the wx main loop:
Wx::App is the container class for any wxruby app. To start an
application, either define a subclass of Wx::App, create an instance,
and call its main_loop method, OR, simply call the Wx::App.run class
method, as shown here.
Wx::App.run do
self.app_name = ‘Minimal’
frame = MinimalFrame.new(“Minimal wxRuby App”)
frame.show
end
You’ll need to symlink the msn directory inside the minimal directory
to get the require statement working, of course.
You don’t need the while true {sleep 1} loop; that’s just to prevent
the program from exiting so that your msn thread can keep running. The
wx main loop accomplishes the same purpose.