tags:

views:

114

answers:

1

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.

Someone ?

+1  A: 

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:

require 'msn/msn'

conn = MSNConnection.new("[email protected]", "secretpassword123")
conn.start

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

Martin DeMello
Doesn't seem to get any further. This is my code now: http://pastie.org/729297It still stops after "--> Sent: "VER 1 MSNP9 CVR0\r\n" "
Terw
might be a platform issue. your code worked cheerfully for me (did the same thing with and without wx) on my box (ruby 1.9.1 on archlinux)
Martin DeMello
Updated to ruby 1.9.1 and wxruby19 and now it works :) Thanks :)
Terw