juillet
2009
LablGtk2 est le binding GTK+ pour le langage Objective-Caml.
Comme son cousin Gtk2Hs (pour Haskell) il permet aussi le chargement d’interfaces codées en XML généré à l’aide de l’outil Glade.
J’espère avoir réalisé une copie conforme du Hello Developpez de Alp mais si ça n’est pas le cas ça n’est pas bien grave, l’esprit y est.
Dans tous les cas voici ma capture d’écran :

Comme je ne vois aucune raison de générer du XML là où l’on peut coder aussi bien en OCaml je vous donne la source en Objective-Caml pur et dur :
let window = GWindow.window
~title: "Hello, Developpez !" ()
in let button = GButton.button
~packing: window#add ~label:
"Bonjour Developpez, comment vas-tu ?\n\n \
Je suis un programme OCaml qui utilise\n \
LablGtk2, le binding GTK+ pour OCaml.\n\n \
Clique pour fermer."
()
in button#connect#clicked ~callback:
(fun () -> print_endline "Bye"; window#destroy (); GMain.Main.quit ())
window#show ();
GMain.Main.main ()
Où les arguments optionnels (d’où le nom labl pour label/étiquette) jouent le même rôle que les balises XML.
Voici une explication un peu plus détaillée :
- le 1ier let créer la fenêtre (sans l’ouvrir)
- le 2nd let créer le bouton
- la suite associe une action au bouton (écrire « Bye », fermer la fenêtre, quitter GTK)
- puis on affiche la fenêtre
- finalement on passe la main à GTK
En plus des composants GTK standards le binding supporte également les composants suivants :
- LibGlade et GdkPixbuf
- le gadget GtkSourceView
- le gadget GLArea

Un article de SpiceGuid

Très bonne initiative
Au passage, la raison pour laquelle j’ai utilisé le XML est simple : ça établit un (petit) parallèle avec les technologies comme Qt, ASL (toutes deux C++), WPF/Silverlight (toutes deux .NET) et autres qui utilisent un format XML ou similaire pour décrire l’interface graphique, et ainsi dans le code lui-même il n’y a plus qu’à se concentrer sur les évènements, la récupération et le traitement de données, etc.