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 :

[GTK3+] Gestion des styles


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut [GTK3+] Gestion des styles
    Bonjour

    J'aimerai bien trouver un exemple ou avoir une explication afin de pouvoir modifier en cours de route le style d'un widget. Quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    si (test1)
    {
     affecter le style1;
    ]
    sinon
    {
     affecter le style1
    }
    Je n'arrive pas à voir comment faire.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    À priori depuis Gtk+ v3 il faut passer par les GtkStyleContext. Tu as une fonction pour les GtkWiget qui te permet de récupérer le GtkStyleContext : GtkStyleContext *gtk_widget_get_style_context (GtkWidget *widget);.

    Ensuite tu as tout un tas de fonctions pour manipuler ce pointeur.

  3. #3
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Voici le code que j'ai testé :
    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
    void couleur_item(GtkWidget *ChildWidget,signed short couleur)
    {
        GtkStyleContext * css;
        GList * gl, * gl1;
     
        css=gtk_widget_get_style_context (ChildWidget);
        gl=gtk_style_context_list_classes (css);
     
        for(gl1=gl;gl1 != NULL; gl1= g_list_next(gl1))
        {
            gtk_style_context_remove_class (css,(char *)gl1->data);
        }
     
        switch (couleur)
        {
            case GRIS: gtk_style_context_add_class (css,"gris");
                break;
            case ROUGE: gtk_style_context_add_class (css,"rouge");
                break;
            case VERT: gtk_style_context_add_class (css,"vert");
                break;
            case VIOLET: gtk_style_context_add_class (css,"violet");
                break;
            case BLEU: gtk_style_context_add_class (css,"bleu");
                break;
            case JAUNE: gtk_style_context_add_class (css,"jaune");
                break;
            default:
                break;
        }
    }
    Voici mon css qui donen l'impression de marcher en lui-même :
    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
    41
    42
    43
    44
    45
    46
    47
    48
    *
    {
    background-color: rgba(80%,80%,80%,.1);
    }
     
     
    GtkWindow {
        /*background-color: rgba(80%,100%,80%,1);*/
        background-image : url("images/dragon.jpg");
        background-position : top center;
        /*color : #000;*/
    }
     
    GtkLabel
    {
        color : #000;
    }
     
     
    .gris
    {
        background-color: rgba(80%,80%,80%,.5);
    }
     
    .vert
    {
        background-color: rgba(50%,100%,50%,.5);
    }
     
    .jaune
    {
        background-color: rgba(100%,85%,00%,.5);
    }
     
    .violet
    {
        background-color: rgba(100%,85%,92%,.5);
    }
     
    .rouge
    {
        background-color: rgba(100%,0%,0%,.5);
    }
     
    .bleu
    {
        background-color: rgba(0%,100%,0%,.5);
    }
    Le problème (je ne teste pour le moment que avec rouge et gris), c'est que je dois enlever à la main le rouge )si je ne veux pas qu'il reste une fois qu'il s'est affiché.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_style_context_remove_class (css,"rouge");
    En effet, la Glist est toujours vide.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    J'ai tenté de faire la même programmation en gtkmm avec mon propre widget. Effectivement la liste est vide !

    La solution ne semble donc pas être de ce côté là. Peut du côté des GtkCssProvider...

  5. #5
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Il en faudrait une avec une entrée widget non ? Il n'y a rien qui correspond
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  6. #6
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Si j'ai bien tout compris (dans la description des GtkCssProvider), tu ajoutes un GtkCssProvider à un GtkStyleContext avec la fonction gtk_style_context_add_provider();.

    Comme tu vas utiliser un GtkStyleContext extrait du GtkWidget, il me semble, mais ca reste à tester, que tu vas naturellement ajouter un feuille de style indirectement au widget.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. gestion des groupes
    Par muaddib dans le forum QuickReport
    Réponses: 3
    Dernier message: 31/12/2002, 11h01
  2. [reseaux] Gestion des threads en perl
    Par totox17 dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 28/11/2002, 09h40
  3. Gestion des variables - mémoire ?
    Par RIVOLLET dans le forum Langage
    Réponses: 4
    Dernier message: 26/10/2002, 12h44
  4. Réponses: 4
    Dernier message: 04/07/2002, 12h31
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

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