Petit coup de pouce en attendant un tutoriel plus complet, parce qu'une recherche et un rapide coup d'oeil sur le forum GTK montrent que certains sont un peu perdus.
Le site: LablGtk2
Le tutoriel officiel: LablGTK2 Tutorial
(certaines fonctions sont deprecated mais le répertoire lablgtk2/examples contient des exemples à jour)
Le tutoriel wiki.cocan.org: Introduction to Gtk
Les tutoriels GTK+: voir les cours GTK sur DVP
Les applications LablGtk2 :
Les premières choses à savoir:
- Gnome n'est pas du tout nécessaire, uniquement GTK2+
- choisissez lablgtk-2.10.1.tar.gz et non pas l'ancien lablgtk-1.2.7.tar.gz
- contrairement à d'autres toolkits, avec GTK vous ne spécifiez ni les coordonnées ni la taille de vos widgets
- à la place vous spécifiez une hiérarchie de containeurs dans laquelle vous placez vos widgets aux feuilles, c'est GTK qui calcule les coordonnées de vos widgets (par propagation de contraintes)
Comment lancer un toplevel "multithreadé" avec lablgtk2 préchargé:
L'exemple de base (une simple fenêtre vierge):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 cd /usr/local/lib/ocaml/lablgtk2 lablgtk2 -thread
C'est plutôt agréable de tester ses GUIs interactivement, par contre le point noir du toplevel ce sont les points-virgules ; et ;; l'interpréteur n'a pas l'air de bien comprendre où un appel de méthode est terminé, sans doute à cause des arguments optionnels.
Code OCaml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 let main () = let window = GWindow.window () in window#show (); GMain.Main.main () let _ = main ()
Un autre petit désagrément c'est que quasiment toutes les fonctions renvoient un résultat, comme souvent on en a pas besoin on se retrouve avec des let _ = ... ou bien ignore(...).
Comment compiler en code natif (ça n'est pas expliqué dans le README) :
Le point noir du natif c'est la taille du code: une simple fenêtre vierge exige déjà un exécutable d'1Mo, et comptez encore au moins 200Ko pour ajouter une barre d'outils et 2 zones de texte redimensionnables. Par contre c'est fiable, efficace et agréable à coder, le graphisme (avec un bon thème GTK ) et l'ergonomie sont assez assez satisfaisants.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ocamlopt -o example -I +lablgtk2 lablgtk.cmxa gtkInit.cmx example.ml
Une capture d'écran LablGtk2 (le gestionnaire de fenêtres est IceWM) :
(je sais lire le texte dans un Gtk_Text_View, par contre pour lire l'unicode )
Edit:
Sous Linux j'ai réussi à créer la plupart des widgets les plus courants
Question: il faut compiler avec -thread ou sans ?
@iocwt IceWM n'est pas un bureau, il faut bien emprunter les icônes quelque part
Une autre capture d'écran LablGtk2 sous win32 cette fois :
(c'est le même code, les barres de défilement c'est simplement parce que j'ai tapé plus de returns)
(sous Win98se ça ne fonctionne pas, problème lors du chargement des DLLs)
J'ai utilisé Gtk+ 2.12.9 Development Environment Revision 1 (13,313KB), en bas de la page Glade pour win32.
J'ai pensé qu'avec MinGW j'aurais peut être plus de chance que bluestorm avec Cygwin.
Au moins ça fonctionne dans le toplevel
Par contre le script d'install pour la compilation native plante un peu avant la fin
Partager