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