IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Caml Discussion :

[LablGtk2] Petit fil de soutien


Sujet :

Caml

  1. #1
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut [LablGtk2] Petit fil de soutien
    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é:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cd /usr/local/lib/ocaml/lablgtk2
    lablgtk2 -thread
    L'exemple de base (une simple fenêtre vierge):
    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 ()
    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.
    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) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ocamlopt -o example -I +lablgtk2 lablgtk.cmxa gtkInit.cmx example.ml
    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.

    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
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  2. #2
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    IceWM avec des icônes tirées de KDE peut-être ?

    C'est très bien.

    Moi je pense que ce que tu viens d'écrire gagnerait beaucoup plus à être un tout petit peu enrichi (genre mettre le code de l'exemple graphique montré), mis en forme (un tout petit peu, pour pas que ça fasse "à l'arrache") et posté au sein des articles OCaml/Interfaces graphiques. Ici, tout seul, j'ai peur qu'il passe inaperçu, surtout avec le passage du temps.

    Pour ce qui est de la taille des exécutables, t'inquiète pas, c'est tout à fait normal. Ce genre de trucs en C++ sous VisualStudio prend tout autant de place (c'est un copain qui me l'avait montré jadis, dans l'ancien temps...) : ce n'est ni la faute à OCaml ni celle à GTK.
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  3. #3
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    hé hé... un article ?
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  4. #4
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 48
    Points : 64
    Points
    64
    Par défaut
    Ce post m'a donné envie de me réessayer aux interfaces graphiques avec OCaml. J'ai donc téléchargé Gtk+ 2.12.9 Development Environment Revision 2, si j'ai bien compris il faut absolument ça pour faire marcher lablgtk2.

    Mais lors de l'installation je me tape cette erreure sous windows XP SP3 :
    "Error opening file for writing:
    C:\Program Files\Fichiers communs\GTK\2.0\bin\libatk-1.0-0.dll"

    Une idée? Ce ne vous fait pas cette erreur à vous?

  5. #5
    Membre éclairé Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    En parlant de ça, vous avez des nouvelles du OCaml Summer of Code ?

    Notamment Qtcaml.

    Ca m'énerve, ils ont eu le meeting le 12 septembre, où ils ont surement du faire une soutenance, mais là on a aucune information !

    J'ai essayé de fouiner leur forum de dév, rien trouvé d'intéressant sur un quelconque avancement.

    Le blog est silencieux.

    http://osp.janestcapital.com/wordpress/

  6. #6
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    @nonpoluant

    • j'ai utilisé la 2.12.9 revision 1 sous XP-pro SP2 (et logué en admin pour pouvoir écrire dans C:\Program Files\) avec l'environnement MingGW
    • je n'ai pas testé la 2.12.9 revision 2, elle ne corrige aucun bug, c'est uniquement une mise à jour de libs pas forcément indispensables
    • si tu ne comptes pas faire de la compilation native alors le GTK runtime est suffisant, tu n'as pas besoin ni de MingGW ni de la version GTK development
    • il y a une mailing-list ocaml-lablgtk2, non ? il serait intéressant d'avoir un how to pour Windows, dans le cas contraire c'est plus ou moins la galère



    @HanLee

    Un binding GTK est plus naturel pour OCaml car il s'interface avec le C, il suffit alors de rajouter une couche d'abstraction pour avoir une API totalement dans l'esprit Caml. Et ça paye: LablGtk2 est de loin le meilleur binding GTK qu'il m'ait été donné de voir.

    Un binding Qt ça signifie interfacer avec du C++, dès le départ c'est moins Caml-friendly, il ne faudra pas trop s'étonner si ça se fait encore attendre.
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  7. #7
    Membre éclairé Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    Citation Envoyé par SpiceGuid Voir le message
    @nonpoluant

    • j'ai utilisé la 2.12.9 revision 1 sous XP-pro SP2 (et logué en admin pour pouvoir écrire dans C:\Program Files\) avec l'environnement MingGW
    • je n'ai pas testé la 2.12.9 revision 2, elle ne corrige aucun bug, c'est uniquement une mise à jour de libs pas forcément indispensables
    • si tu ne comptes pas faire de la compilation native alors le GTK runtime est suffisant, tu n'as pas besoin ni de MingGW ni de la version GTK development
    • il y a une mailing-list ocaml-lablgtk2, non ? il serait intéressant d'avoir un how to pour Windows, dans le cas contraire c'est plus ou moins la galère


    @HanLee

    Un binding GTK est plus naturel pour OCaml car il s'interface avec le C, il suffit alors de rajouter une couche d'abstraction pour avoir une API totalement dans l'esprit Caml. Et ça paye: LablGtk2 est de loin le meilleur binding GTK qu'il m'ait été donné de voir.

    Un binding Qt ça signifie interfacer avec du C++, dès le départ c'est moins Caml-friendly, il ne faudra pas trop s'étonner si ça se fait encore attendre.

    Oui mais l'approche qu'ils avaient faite me semblait intéressante, parce qu'il allaient travailler avec le front-end GCC XML un truc du style.

    Et puis, je me trompe peut-être, il y a bien QtJambi un binding Java, je sais pas comment ça marche mais, il devait sûrement y avoir les mêmes complications ?

  8. #8
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 48
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par SpiceGuid Voir le message
    @nonpoluant
    • j'ai utilisé la 2.12.9 revision 1 sous XP-pro SP2 (et logué en admin pour pouvoir écrire dans C:\Program Files\) avec l'environnement MingGW
    Si je veux utiliser Cygwin, qu'est ce qui change dans la procédure d'installation?

  9. #9
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Rien, car malheureusement dans les deux cas on arrive pas à compiler en natif

    Pourtant l'auteur de Camelis y arrive lui
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  10. #10
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 48
    Points : 64
    Points
    64
    Par défaut
    Malheureusement pour moi, aucun des 4 executables proposés pour installer GTK sous windows ne fonctionne (toujours le meme message d'erreure).
    Je crois que je vais encore une fois remetre mes premiers pas en matiere d'interface graphique en OCaml à plus tard...

    J'ai cru comprendre que tu préparais un cours sur lablgtk2, je suis impatient de le lire.

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Points : 1 104
    Points
    1 104
    Par défaut
    De toute façon, l'interface graphique c'est (presque) toujours chiant et frustrant. Tu ne rates donc pas grand chose.

Discussions similaires

  1. Aide fork() petit-fils gérés par le père ?
    Par Drexler82 dans le forum Programmation et administration système
    Réponses: 15
    Dernier message: 07/06/2011, 15h04
  2. Réponses: 11
    Dernier message: 22/09/2010, 14h29
  3. [XSLT] Elaguer des noeuds en fonction des petits-fils
    Par Willl dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 23/12/2009, 11h37
  4. [XPath] Selectionner tous les fils sans Petit-fils ?
    Par SONY30 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 11/04/2007, 09h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo