[Ruby] Executer une methode toutes les x secondes
Bonjour,
Je développe une petite appli de chat en ruby en utilisant Glade et GTK pour l'interface.
Avec un tutorial, j'ai réussi à faire fonctionner quelque chose de mon application. J'envoie un message à un serveur (utilisation de DRB/rinda etc...). Un élément de mon programme doit toutes les 1 secondes lire un tuplespace sur le serveur. Pour l'instant, j'ai fait un bouton qui appelle une fonction qui lit ce tuplespace. Moi j'aimerais que l'appel à cette fonction se fasse tout seul.
J'ai bien crée une boucle du genre :
While 1
check()
end
mais ça ne fonctionne pas. Voici le code de mon programme :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
class MonAppli
def initialize(file, root,ts)
@main_glade_xml = GladeXML.new(file, root) {|handler| method(handler)}
@ts=ts
end
def on_send_clicked
mess = @main_glade_xml["message"].text
#@main_glade_xml["Chatwindow"].text = mess
@ts.write [:message, mess]
sleep(0.5)
messlu = @ts.read([:message, nil])[1]
@main_glade_xml["Chatwindow"].text = messlu
end
def on_reload_ok_pressed
check()
end
def check
messlu = @ts.take([:message, nil])[1]
@main_glade_xml["Chatwindow"].text = messlu
end
end
DRb.start_service
tuple_space = Rinda::RingFinger.primary
Gtk.init
MonAppli.new("rubyIM.glade",nil,tuple_space)
Gtk.main
DRb.thread.join |
peux-t-on dans Glade spécifier un signal qui permettrait à l'appli d'appeler check() automatiquement toutes les x secondes (sleep(1))? Ou dois-je mettre une boucle quelque part?
PS: Je suis un très très grand débutant en Ruby et je n'y connais presque rien sur GTK (tout fait avec des tutos).
Merci d'avance... :)