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 :

Probleme Lablgtk Ocaml


Sujet :

Caml

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Probleme Lablgtk Ocaml
    Bonjour a tous,

    Pour un projet au cours de mes etudes, nous devons en groupe developper un programme prenant un plan en 2D pour en faire un "plan 3D", le tout en ocaml.

    j'ai donc commence a creer mon interface graphique en lablgtk.

    jai donc actuellement un bouton GFile.chooser_button pour choisir l'image a traiter.

    Une fois l'image choisie, elle est affichee dans la fenetre.

    J'ai ensuite creer un bouton qui doit normalement prendre le bouton#filename pour passer le chemin d'acces de l'image choisie en parametre de la premiere fonction du traitement en 2D.

    Cependant a l'evenement btn#connect#clicked je ne peux mettre qu'un callback de type unit -> unit et donc je ne peux pas passer cette chaine en parametre etc.

    Quelqu'un a-t-il une idee pour resoudre mon probleme?

    Merci d'avance a vous tous et en esperant des reponses encourageantes ^^

    PS: desole pour tous les accents mais j'envoie ce post depuis mon ecole et les claviers qwerty ...

  2. #2
    Membre actif Avatar de Steki-kun
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 222
    Points : 281
    Points
    281
    Par défaut
    Je ne suis pas sûr de bien comprendre...
    Tu as bien la chaîne au moment où tu dois appeler la méthode btn#connect#clicked ? Auquel cas, tu définis la fonction ailleurs avec 2 arguments le premier la chaîne et le deuxième unit, et tu passes la fonction partiellement appliquée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    let do_something filename () =
      ....
     
    let ailleurs =
       btn#connect#clicked ~callback:(do_something btn#filename)
    I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Je pense que je suis en mesure de récupérer la chaîne à tout moment grâce à "l'attribut" (pas sûr du terme avec OCaml) button#filename.

    En fait ce que tu me suggères c'est de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    let f () = Mod.action button#filename
    Mod.action étant une fonction se trouvant dans le module Mod, prenant en argument le chemin d'accès à l'image et effectuant des traitements sur mon image tels que éventuellement passer cette image dans une matrice, modifier l'image ou autres choses de ce genre.

    Et ensuite au moment de créer mon bouton, je fait un btn#connect#clicked ~callback: f ()

    A ce moment ci, il n'y aurait plus de problèmes de type ?

  4. #4
    Membre actif Avatar de Steki-kun
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 222
    Points : 281
    Points
    281
    Par défaut
    Oui c'est bien ça, note que t'es pas obligé de la définir à côté, tu peux tout simplement faire ton appel comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    btn#connect#clicked ~callback:(fun _ -> Mod.action button#filename) ()
    Le but après tout c'est juste de passer une fonction qui sera appliquée plus tard, c'est pour ça que le callback attend un type unit -> unit. Si tu passais Mod.action button#filename directement il serait calculé au moment où tu fais ton connect, donc on le défère en rajoutant un fun devant.
    I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06

  5. #5
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Bonsoir,

    Une manière de coder très à la mode dans LablGTK consiste tout simplement à passer le widget en paramètre. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    button#connect#clicked ~callback:(foo button);
    Cordialement,
    Cacophrène

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour vos réponses, mon problème est résolu

    Juste avant de mettre ce topic en résolu, une dernière question.

    Quel est le widget permettant de créer un champ de saisie dans lequel l'utilisateur peut saisir du texte afin que je puisse récupérer ce texte ultérieurement?

  7. #7
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Bonjour,

    Le widget le plus simple pour ça est GEdit.entry.

    Cordialement,
    Cacophrène

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci pour cette réponse rapide.

    Je teste ça dans la journée et je vous tiens au courant

    EDIT: j'ai testé et ça marche très bien!
    par contre, je souhaitais ajouter une espèce de titre au dessus du champ de saisie, de quelle classe je dois me servir pour ça?
    Parce que j'ai vu la classe GText, mais je ne suis pas sûr qu'elle puisse beaucoup m'aider.

    De plus, pour créer la zone en 3D, je peux me servir de lablgl pour gérer la 3D et faire une zone en utilisant le module glgtk_area (je crois que c'est ça) de lablgtk, non ?

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonsoir,

    J'utilise également GEdit.entry pour un projet du même genre, et j'aimerai faire en sorte de récupèrer les valeurs que l'utilisateur a ajouté dans ces zones de texte.
    Mais je ne parviens pas à trouver dans la doc la fonction pour récupèrer le texte de ce widget. Pouvez vous m'aider ?

  10. #10
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Bonsoir,

    Citation Envoyé par Schrapnell
    J'utilise également GEdit.entry pour un projet du même genre, et j'aimerai faire en sorte de récupèrer les valeurs que l'utilisateur a ajouté dans ces zones de texte. Mais je ne parviens pas à trouver dans la doc la fonction pour récupèrer le texte de ce widget
    Pour récupérer le contenu d'un GEdit.entry, de mémoire il suffit de faire my_entry#text. Pour les événéments associés tu as peut-être my_entry#connect#changed ou quelque chose comme ça. Tout est ici.

    Citation Envoyé par Suzaku
    je souhaitais ajouter une espèce de titre au dessus du champ de saisie, de quelle classe je dois me servir pour ça?
    Pour ajouter une sorte de titre, pourquoi ne pas utiliser tout simplement un GtkLabel (GMisc.label) combiné au GEdit.entry dans une GtkVBox (GPack.vbox) ? Le mécanisme des boîtes est très souple, il ne faut pas s'en priver !

    Cordialement,
    Cacophrène

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Oui, merci beaucoup, Cacophrene.
    J'avais fini par trouver de moi même la fonction à utiliser assez tard hier soir, du coup tout fonctionne...

Discussions similaires

  1. probleme codage ocaml
    Par nhella22 dans le forum Caml
    Réponses: 2
    Dernier message: 29/04/2013, 11h36
  2. probleme codage ocaml
    Par nhella22 dans le forum Caml
    Réponses: 6
    Dernier message: 14/04/2013, 00h26
  3. Probleme d'installation avec ocaml
    Par Vermiceau dans le forum Caml
    Réponses: 7
    Dernier message: 17/10/2009, 17h21
  4. probleme exercice en ocaml
    Par alix30002000 dans le forum Caml
    Réponses: 8
    Dernier message: 11/10/2007, 16h08

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