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 : Sélectionner tout - Visualiser dans une fenêtre à part
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...