caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* Caml et Gtk+/Gdk ...
@ 1998-11-18 16:02 luther
  1998-11-19  2:57 ` Jacques GARRIGUE
  0 siblings, 1 reply; 8+ messages in thread
From: luther @ 1998-11-18 16:02 UTC (permalink / raw)
  To: caml-list

Bonjour, ...

je suis en train d'experimenter un programme caml avec une boucle main C,
utilisant la premiere methode.

j'ai adapter le deuxieme exemple (avec l'appel de fib), mais j'obtient un :

Segmentation Fault (core dumped)

lors de l'appel de callback dans la la fonction C fib.

Lorsque j'utilise la deuxieme option, bytecode "embeded" dans du C, cela marche
sans probleme.

je pense que cela vient du fait que la fonction caml n'est pas registrer
correctement. La doc dis que caml_main appelle la section d'initialisation du
bytecode, qui devrait effectuer la "registration" des callback.

Comment et ou est defini cette parti d'initialization ? Æi-le mal compris
quelque chose ? Est-ce que quelqu'un a reussit a interfacer gtk/gdk avec ocaml,
avec la premiere methode ? la deuxieme ne permettant pas d'utiliser plus d'un
module.

Amicalement,

Sven LUTHER




^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Caml et Gtk+/Gdk ...
  1998-11-18 16:02 Caml et Gtk+/Gdk luther
@ 1998-11-19  2:57 ` Jacques GARRIGUE
  1998-11-19 12:56   ` luther sven
  0 siblings, 1 reply; 8+ messages in thread
From: Jacques GARRIGUE @ 1998-11-19  2:57 UTC (permalink / raw)
  To: luther; +Cc: caml-list

> Comment et ou est defini cette parti d'initialization ? Æi-le mal
> compris quelque chose ? Est-ce que quelqu'un a reussit a interfacer
> gtk/gdk avec ocaml, avec la premiere methode ? la deuxieme ne
> permettant pas d'utiliser plus d'un module.

Je n'ai jamais utilise' cette methode personnellement, mais il y a
deja une interface par David Monniaux et Pascal Cuoq qui utilise la
premiere methode.

http://www.ens-lyon.fr/~dmonniau/arcs/mlgtk.tar.gz

Le code est legerement alpha, mais ca marche sans probleme. La
fonction main est definie dans mlgtk_stubs.c.

De mon cote je fabrique aussi une interface pour gtk, mais en me
contentant de l'appeler a` partir de caml. Avantage, on peut
construire un toplevel, et experimenter de facon interactive.
Je n'ai pas rencontre' de difficulte' particuliere.

	Jacques
---------------------------------------------------------------------------
Jacques Garrigue      Kyoto University     garrigue at kurims.kyoto-u.ac.jp
		<A HREF=http://wwwfun.kurims.kyoto-u.ac.jp/~garrigue/>JG</A>




^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Caml et Gtk+/Gdk ...
  1998-11-19  2:57 ` Jacques GARRIGUE
@ 1998-11-19 12:56   ` luther sven
  1998-11-19 21:02     ` David Monniaux
                       ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: luther sven @ 1998-11-19 12:56 UTC (permalink / raw)
  To: Jacques GARRIGUE, luther; +Cc: caml-list

On Thu, Nov 19, 1998 at 11:57:47AM +0900, Jacques GARRIGUE wrote:
> > Comment et ou est defini cette parti d'initialization ? Æi-le mal
> > compris quelque chose ? Est-ce que quelqu'un a reussit a interfacer
> > gtk/gdk avec ocaml, avec la premiere methode ? la deuxieme ne
> > permettant pas d'utiliser plus d'un module.
> 

Je crois que j'ai decouvert mon probleme, on ne peut pas mettre de Callback.register dans une librairie .cma, par contre cela marche bien si on les laisse dans des .cmo et qu'on les lie a la fin, avec les objets C.

> Je n'ai jamais utilise' cette methode personnellement, mais il y a
> deja une interface par David Monniaux et Pascal Cuoq qui utilise la
> premiere methode.
> 
> http://www.ens-lyon.fr/~dmonniau/arcs/mlgtk.tar.gz
> 
> Le code est legerement alpha, mais ca marche sans probleme. La
> fonction main est definie dans mlgtk_stubs.c.
> 

Oui je suis au courrant, mais il y a un probleme, avec elle. Il semble qu'il n'est pas possible d'appeller les fonctions print_string et compagnie a l'interieur d'un callback appelle depuis un event_handler Gtk. Le callback est bien appelle, mais rien n'apparait a l'ecran. J'ai rencontrer le meme probleme avec mlgtk, mais j'ai crus que cela ne marchais pas bien. C'est difficile de tester des trucs si on ne peut rien afficher a l'ecran.

Qu'est devenu David Monniaux ? est-ce qu'il travaille toujours sur mlgtk ? avons nous l'autorisation d'etendre son travaille sinon ? sous quelle license ?

> De mon cote je fabrique aussi une interface pour gtk, mais en me
> contentant de l'appeler a` partir de caml. Avantage, on peut
> construire un toplevel, et experimenter de facon interactive.
> Je n'ai pas rencontre' de difficulte' particuliere.
> 

Comment fait tu pour faire interagir la boucle principale ocaml et la boucle d'evenement Gtk ? ou alors est-ce que tu n'utilise gtk que pour afficher des resultat, pas pour qu'on puisse appuyer sur des boutons ou autre chose du style ?

Amicalement,

Sven LUTHER




^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Caml et Gtk+/Gdk ...
  1998-11-19 12:56   ` luther sven
@ 1998-11-19 21:02     ` David Monniaux
  1998-11-20 10:26       ` luther
  1998-11-20 10:01     ` Pascal Cuoq
  1998-11-20 10:36     ` Jacques GARRIGUE
  2 siblings, 1 reply; 8+ messages in thread
From: David Monniaux @ 1998-11-19 21:02 UTC (permalink / raw)
  To: Liste CAML

On Thu, 19 Nov 1998, luther sven wrote:

> Qu'est devenu David Monniaux ? est-ce qu'il travaille toujours sur mlgtk
> ? avons nous l'autorisation d'etendre son travaille sinon ? sous quelle
> license ? 

Pascal Cuoq, Patrick Loiseleur et moi-même y travaillons. J'invite toutes
les personnes intéressées par un tel travail à me demander un accès CVS.

La licence est a priori la LGPL.





^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Caml et Gtk+/Gdk ...
  1998-11-19 12:56   ` luther sven
  1998-11-19 21:02     ` David Monniaux
@ 1998-11-20 10:01     ` Pascal Cuoq
  1998-11-20 10:49       ` luther
  1998-11-20 10:36     ` Jacques GARRIGUE
  2 siblings, 1 reply; 8+ messages in thread
From: Pascal Cuoq @ 1998-11-20 10:01 UTC (permalink / raw)
  To: luther sven; +Cc: garrigue, luther, caml-list

> Oui je suis au courrant, mais il y a un probleme, avec elle. 
> Il semble qu'il n'est pas possible d'appeller les fonctions print_string 
> et compagnie a l'interieur d'un callback appelle depuis un event_handler Gtk.
> Le callback est bien appelle, mais rien n'apparait a l'ecran. 
> J'ai rencontrer le meme probleme avec mlgtk, mais j'ai crus que cela ne 
> marchais pas bien. C'est difficile de tester des trucs si on ne peut 
> rien afficher a l'ecran.

J'avais remarque cette bizarrerie aussi, sans vraiment comprendre
d'ou elle provient.  Il est tout de meme possible d'utiliser un widget 
text pour afficher les messages de debogage.

Pascal




^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Caml et Gtk+/Gdk ...
  1998-11-19 21:02     ` David Monniaux
@ 1998-11-20 10:26       ` luther
  0 siblings, 0 replies; 8+ messages in thread
From: luther @ 1998-11-20 10:26 UTC (permalink / raw)
  To: David Monniaux, Liste CAML

On Thu, Nov 19, 1998 at 10:02:04PM +0100, David Monniaux wrote:
> On Thu, 19 Nov 1998, luther sven wrote:
> 
> > Qu'est devenu David Monniaux ? est-ce qu'il travaille toujours sur mlgtk
> > ? avons nous l'autorisation d'etendre son travaille sinon ? sous quelle
> > license ? 
> 
> Pascal Cuoq, Patrick Loiseleur et moi-même y travaillons. J'invite toutes
> les personnes intéressées par un tel travail à me demander un accès CVS.
> 
> La licence est a priori la LGPL.
> 
> 

Bonjour, ...

je suis interesse par mlgtk, et eventuellement par travailler sur le support de
mlgtk dans glade et eventuellement gIDE plus tard.

est-il possible d'avoir un acces CVS, existe-t-il une mailing liste ? si non,
est-ce que cela vous interreserait ? Ou est-ce trop tot.

J'ai remarque que lorsque l'on appel les fonctions print_string et compagnie
depuis un callback caml lui meme appelle depuis un event handler gtk, rien
n'est afficher a l'ecran. Je crois que la meme chose se passe avec mlgtk,
j'avais essayer de faire un petit programme simple, avec une fenetre, des
menus, et l'affichage d'un petit texte a chaque fois qu'un menu etait
selectionner, et rien ne s'affichait a l'ecran.

Est-ce un probleme du a la double boucle de gestion d'evenement, l'une sous
caml et l'autre sous gtk ? 

Je crois avoir lu sur la mailing list gtk, ou autre part, une suggestion qui
disait d'appeler non pas la boucle principale gtk, mais la fonction interne gtk
qui traite les evenements a l'interieur de la boucle principale caml. Est-ce
possible, est-il possible de prevoir un mecanisme qui permettrait d'ajouter une
fonction quelconque qui serait executer a l'interieur de la boucle principale
caml, cela permettrait de faire cohabiter proprement un top level et une
interface graphique, par exemple.

Amicalement,

Sven LUTHER




^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Caml et Gtk+/Gdk ...
  1998-11-19 12:56   ` luther sven
  1998-11-19 21:02     ` David Monniaux
  1998-11-20 10:01     ` Pascal Cuoq
@ 1998-11-20 10:36     ` Jacques GARRIGUE
  2 siblings, 0 replies; 8+ messages in thread
From: Jacques GARRIGUE @ 1998-11-20 10:36 UTC (permalink / raw)
  To: luther; +Cc: caml-list

> Oui je suis au courrant, mais il y a un probleme, avec elle. Il
> semble qu'il n'est pas possible d'appeller les fonctions
> print_string et compagnie a l'interieur d'un callback appelle depuis
> un event_handler Gtk. Le callback est bien appelle, mais rien
> n'apparait a l'ecran. J'ai rencontrer le meme probleme avec mlgtk,
> mais j'ai crus que cela ne marchais pas bien. C'est difficile de
> tester des trucs si on ne peut rien afficher a l'ecran.

Je ne suis pas sur, mais une raison possible est l'incompatibilite'
entre les fonctions d'affichage C et ML. J'ai eu pas mal de
segmentation faults pour ce genre de raison. La solution est de
rediriger les fonctions g_print et g_warning pour qu'elles appellent
des fonctions ML.

> Comment fait tu pour faire interagir la boucle principale ocaml et
> la boucle d'evenement Gtk ? ou alors est-ce que tu n'utilise gtk que
> pour afficher des resultat, pas pour qu'on puisse appuyer sur des
> boutons ou autre chose du style ?

J'utilise un thread pour la boucle, independant du toplevel. Grace a`
ca je peux programmer pendant que mon programme tourne. C'est assez
agreable de voir les choses se passer en temps reel !
Si on se contente d'interrompre la boucle de temps en temps pour
revenir au toplevel, on peut aussi se passer des threads.

Cordialement,

	Jacques Garrigue




^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Caml et Gtk+/Gdk ...
  1998-11-20 10:01     ` Pascal Cuoq
@ 1998-11-20 10:49       ` luther
  0 siblings, 0 replies; 8+ messages in thread
From: luther @ 1998-11-20 10:49 UTC (permalink / raw)
  To: Pascal Cuoq, luther sven; +Cc: garrigue, luther, caml-list

On Fri, Nov 20, 1998 at 11:01:35AM +0100, Pascal Cuoq wrote:
> > Oui je suis au courrant, mais il y a un probleme, avec elle. 
> > Il semble qu'il n'est pas possible d'appeller les fonctions print_string 
> > et compagnie a l'interieur d'un callback appelle depuis un event_handler Gtk.
> > Le callback est bien appelle, mais rien n'apparait a l'ecran. 
> > J'ai rencontrer le meme probleme avec mlgtk, mais j'ai crus que cela ne 
> > marchais pas bien. C'est difficile de tester des trucs si on ne peut 
> > rien afficher a l'ecran.
> 
> J'avais remarque cette bizarrerie aussi, sans vraiment comprendre
> d'ou elle provient.  Il est tout de meme possible d'utiliser un widget 
> text pour afficher les messages de debogage.

Oui, bonne idee, je vais faire comme cela alors.

Cependant il serait interressant de voir a quoi est du cette bizarrerie,
s'agit-il d'une particularite du systeme caml. il manque surement un flush ou
quelque chose de similaire, qui n'est jamais appelle car l'interface gtk prend
la main totalement, et ne laisse plus ocaml faire son travail. Qu'en est-il du
garbage collector ? Et des autres choses que ocaml fait ?

L'ideal serait de de ne pas appeller gtk_main, mais de modifier la boucle
interne de ocaml, pour qu'elle fasse aussi le travail de gtk_main. Je sais
qu'il existe une fonction gtk qui traite tous les evenements restant, ou alors
les evenements un par un, Il serait interressant alors d'appeler cette fonction
a l'interieur de ocaml.

Peut-etre qu'un mecanisme de pour definir une telle fonction pourrait etre
ajouter a ocaml ? quelque chose comme :

Toplevel.register_additional_main_loop ?

Amicalement,

Sven LUTHER




^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~1998-11-20 18:58 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1998-11-18 16:02 Caml et Gtk+/Gdk luther
1998-11-19  2:57 ` Jacques GARRIGUE
1998-11-19 12:56   ` luther sven
1998-11-19 21:02     ` David Monniaux
1998-11-20 10:26       ` luther
1998-11-20 10:01     ` Pascal Cuoq
1998-11-20 10:49       ` luther
1998-11-20 10:36     ` Jacques GARRIGUE

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).