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

GTK+ avec C & C++ Discussion :

ComboBox aux différentes couleurs


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 108
    Par défaut ComboBox aux différentes couleurs
    Bonjour,
    Nous avons créé un GtkComboBox possédant plusieurs choix. Chaque choix correspond simplement à une chaîne de caractères. Nous souhaitons que chacune de ces chaînes de caractères peut avoir une couleur différente.

    Nous aimerions savoir si quelqu'un parmi vous a une idée sur les fonctions à écrire pour obtenir ces différentes couleurs à l'intérieur d'un combobox.

    Merci à l'avance et cordialement.

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Par défaut
    En utilisant les propriétés pango sur les chaines de caractères ? il y a la fonction set_markup qui permet l'utilisation de balises style xml pour les chaines. Je sais que ça fonctionne pour mettre une taille de police small, peut-être que ça fonctionne avec des couleurs ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 108
    Par défaut Précisions
    Ce que je cherche à faire, c'est de pouvoir gérer dynamiquement les couleurs sur des différents choix d'un GtkComboBox. Par exemple, récupérer la couleur de la chaîne de caractères du choix 1 et la mettre sur celle du choix 2. Le parseur XML permettrait sans doute d'initialiser les couleurs. Mais pour les modifier en dynamique, je n'arrive pas à en trouver un moyen raisonnable de le faire.
    J'aimerais si quelqu'un parmi vous des idées pour une solution à ce problème.
    Cordialement

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Par défaut
    hmm, vu que les balises sont mises avec le set_markup, si tu rappelles le set markup avec les nouvelles balises ça pourrait marcher (si bien possible avec pango) ...
    tu n'aurais qu'à preparer dynamiquement l'argument du set_markup...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 108
    Par défaut Suite
    Je sais utiliser Pango pour gérer les fonts mais pour gérer les couleurs avec Pango à l'intérieur des widgets, je ne trouve pas d'exemples concrets.

    Cordialement.

  6. #6
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,

    Il faut que tu créé ton propre GtkTreeModel à associé au GtkComboBox.

    Lorsque tu crées t'as colonne, à la place d'utiliser text, il faut préciser markup et tu pourras utiliser les balises xml de mise en forme Pango :
    Code vala : Sélectionner tout - Visualiser dans une fenêtre à part
    Gtk.TreeViewColumn column = new Gtk.TreeViewColumn.with_attributes ("Projects", render, "markup", 0, null);


  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Par défaut
    hmm je ne savais pas ça, je me serais pris la tête à utiliser une cellRenderer, et une colonne supplémentaire qui contiendrait la couleur que la cellRenderer utiliserait :s par contre, je me demande si on peut rendre une colonne du model invisible, puisque l'on ne controle pas vraiment la view dans une combobox ??

  8. #8
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par drKzs Voir le message
    hmm je ne savais pas ça, je me serais pris la tête à utiliser une cellRenderer, et une colonne supplémentaire qui contiendrait la couleur que la cellRenderer utiliserait :s par contre, je me demande si on peut rendre une colonne du model invisible, puisque l'on ne controle pas vraiment la view dans une combobox ??
    Si tu fait ce que tu veux, comme pour les GtkTreeView (regarde le programme gtk-demo, il crée une combo box avec une colonne avec une image et une autre avec tu texte). Après si tu veux ne pas afficher une colonne, suffit de ne pas créer de rendu (GtkRenderer)

  9. #9
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Par défaut
    hmm ok.. c'est intéressant ça
    En somme, dans un treeview, on utilise "append_column" pour rendre une colonne du modèle visible... et dans une combobox, c'est implicite selon si le rendu est spécifié ?

  10. #10
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par drKzs Voir le message
    hmm ok.. c'est intéressant ça
    En somme, dans un treeview, on utilise "append_column" pour rendre une colonne du modèle visible... et dans une combobox, c'est implicite selon si le rendu est spécifié ?
    Apparemment il faut utiliser un système de cellule que tu pack, voici le code de démo :
    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
        model = create_stock_icon_store ();
        combo = gtk_combo_box_new_with_model (model);
        g_object_unref (model);
        gtk_container_add (GTK_CONTAINER (box), combo);
     
        renderer = gtk_cell_renderer_pixbuf_new ();
        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, FALSE);
        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), renderer,
    				    "pixbuf", PIXBUF_COL, 
    				    NULL);
     
        gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combo),
    					renderer,
    					set_sensitive,
    					NULL, NULL);
     
        renderer = gtk_cell_renderer_text_new ();
        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, TRUE);
        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), renderer,
    				    "text", TEXT_COL,
    				    NULL);
     
        gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combo),
    					renderer,
    					set_sensitive,
    					NULL, NULL);
     
        gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combo), 
    					  is_separator, NULL, NULL);

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 108
    Par défaut Excellente voie
    Un grand merci de m'avoir mis sur la bonne piste. C'est exactement l'interface GtkCellLayout que je dois implémenter pour traiter les différentes couleurs à l'intérieur d'un GtkComboBox.
    Je vous tiendrai au courant pour la suite.

    Cordialement.

Discussions similaires

  1. [XL-2003] Comment avoir des lignes de différentes couleurs dans un combobox
    Par MichaSarah dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/10/2009, 05h10
  2. Différentes couleurs dans un ComboBox (c++/cli)
    Par bonofred dans le forum Windows Forms
    Réponses: 1
    Dernier message: 27/03/2009, 13h09
  3. [swing] contenu d'un combobox en différentes couleurs
    Par d_token dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 27/07/2006, 11h54
  4. Réponses: 12
    Dernier message: 24/01/2006, 12h38
  5. Réponses: 17
    Dernier message: 16/10/2005, 21h01

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