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 :

[Lablgtk] Menu liste déroulante


Sujet :

Caml

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Points : 39
    Points
    39
    Par défaut [Lablgtk] Menu liste déroulante
    Bonjour,

    J'aurais aimé faire un menu avec une liste déroulante. Cependant, je n'arrive pas à obtenir ce que je souhaite.

    Voici ce que j'aimerais :

    J'ai une fenêtre de taille fixe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    value main_window = do {
      GMain.init ();
      let wnd = GWindow.window 
        ~title:("GUI - " ^ Version.txt)
        ~position:`CENTER 
        ~resizable:True 
        ~width:640 ~height:480 () in 
      wnd#connect#destroy ~callback:GMain.quit; 
      wnd 
    };
    dans cette fenêtre, j'active ou désactive différents contenu.
    Mon contenu principal est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    value rec show_main state = do {
      clean_waiting_pids state;
      let databases =
        List.sort compare
          (List.filter (fun fn -> Filename.check_suffix fn ".d")
             (Array.to_list (Sys.readdir state.bases_dir)))
      in
      let vbox = GPack.vbox
        ~spacing:5
        ~packing:main_window#add ()
      in
      GMisc.label
        ~text:(transl "Server is running...")
        ~packing:vbox#pack ();
      if databases = [] then 
        ignore (GMisc.label ~text:(transl "No databases.") ~packing:vbox#pack () )
      else do {
        GMisc.label
          ~text:(transl "Available databases:")
          ~packing:vbox#pack ();
        List.iter
          (fun dbn -> 
             let bn = Filename.chop_extension dbn in
             let hbox = GPack.hbox
               ~spacing:5
               ~packing:vbox#pack ()
             in
             let blab = GMisc.label
               ~text:("- " ^ bn ^ " -")
               ~packing:hbox#pack ()
             in
             let bbut = GButton.button
               ~label:(transl "Browse")
               ~packing:hbox#pack () 
             in
             ignore 
               (bbut#connect#clicked 
                 (fun () -> ignore (browse state state.browser state.port bn) ) ) )
          databases;
    Ce que je voudrais faire, c'est à la place du List.iter, avoir un menu déroulant de ma liste databases. Je ne voudrais pas mettre ce menu dans une toolbar, et les exemples que j'ai trouvé ajouter un menu à un fenêtre et pas un GPack (d'où un certain nombre d'erreur à la compilation).

    Si quelqu'un a une solution a me proposer, ce serait avec plaisir.

    Merci

  2. #2
    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,

    Ce code me semble écrit en syntaxe révisée. S'agissant d'une syntaxe destinée à augmenter la lisibilité et réduire les incohérences historiques, on ne peut que saluer la démarche. Cependant, je t'invite à faire attention avec cette syntaxe : elle reste très peu utilisée, beaucoup d'entre nous ne la pratiquent jamais (c'est mon cas et je ne suis pas le seul, loin s'en faut)... bref, tu risques de t'isoler malgré d'excellentes intentions.

    Pour ta question, regarde du côté de GEdit.combo_box ou GEdit.text_combo si tu veux un widget à placer n'importe où, ou alors du côté des menus de type GMenu.menu à ranger dans des barres de menus (GMenu.menu_bar). Ça ferait peut-être l'affaire non ? Éventuellement je peux te donner un bout de code pour illustrer leur fonctionnement.

    Cordialement,
    Cacophrène

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Points : 39
    Points
    39
    Par défaut
    Hello,

    Merci pour ces pistes ! Je vais dans un premier temps les regarder et si je n'y arrive pas ou si j'ai des questions je reviendrai les poser (et marquer comme résolu).

    Pour le code oui je comprends bien, mais ce n'est pas un choix. C'est un morceau de code qui doit s'ajoute à un programme qui a été développé en Camlp5. La plupart du temps, il n'y a pas d'utilisation d'extension du langage, simplement la syntaxe qui est changée (mais j'en suis pas fan).

    Encore merci !

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/01/2009, 10h29
  2. Créer Un boutton dans la barre de menu sans liste déroulante
    Par melouille56 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/06/2008, 17h43
  3. sous menu de liste déroulante
    Par decarre dans le forum Excel
    Réponses: 11
    Dernier message: 15/04/2008, 09h06
  4. Ajout d'une liste déroulante dans un menu
    Par Domi2 dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/07/2007, 15h45
  5. [PHP-JS] menu liste // menu déroulant
    Par Empty_body dans le forum Langage
    Réponses: 29
    Dernier message: 10/01/2006, 22h49

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