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 :

modifier la couleur de fond d'une popup


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Par défaut modifier la couleur de fond d'une popup
    Bonjour à tous !

    Afin de simuler un écran noir, j'affiche une popup noire (toute simple) sur laquelle est rattachée une event box pour la faire disparait suite à un clic souris. Je n'arrive pas à changer la couleur de fond de cette popup. Dans mon gtkrc, la couleur noire est indiquée par défaut. J'aimerais changer la couleur sans toucher à mon fichier gtkrc.

    Voici le code que j'ai commencé:
    Code C : 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
     
    //GdkColormap *colormap;
    	GdkColor couleur_fond;
     
    	//GtkWidget * widget= GTK_WIDGET(instance->m_black_screen_popup.m_data.m_GTK_black_screen_popup);
    	GtkWidget * widget= GTK_WIDGET(instance->m_black_screen_popup.m_data.m_GTK_BSP_EventBox);
     
    	//colormap = gdk_drawable_get_colormap(widget->window);
     
    	// 1 - On fixe la couleur de fond ( vert ici pour l'exemple )
    	couleur_fond.pixel=0;
    	couleur_fond.red=0;
    	couleur_fond.green=32000;
    	couleur_fond.blue=0;
     
    	// 2 - On affecte cette couleur au gc du widget
    	//gdk_colormap_alloc_color(colormap,&couleur_fond,FALSE,FALSE);
     
    	// 3 - On met à jour la couleur de fond
    	//gdk_gc_set_foreground(widget->style->fg_gc[GTK_WIDGET_STATE(widget)], &couleur_fond);
     
    	//4 - On dessine un rectangle pour mettre à jour la couleur de fond.
    	//gdk_draw_rectangle(widget->window, widget->style->fg_gc[GTK_WIDGET_STATE(widget)], TRUE, widget->allocation.x,  widget->allocation.y, widget->allocation.width, widget->allocation.height);
     
    	gtk_widget_modify_bg(GTK_WIDGET(widget), GTK_STATE_NORMAL, &couleur_fond);
     
    	instance->m_black_screen_popup.display_panel();

    Aucune erreur de compilation mais aucun résultat.
    "m_GTK_black_screen_popup" est le premier conteneur de ma popup
    "m_GTK_BSP_EventBox" est event box attachée

    J'attends vos commentaires

  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
    Vu ton code tu changes la couleur de l'EventBox. Il n'est pas dit que ce widget accepte une couleur, d'autant qu'en plus il est considéré "transparent".
    Lorsque tu changes la couleur du popup vient le problème du widget enfant. Essaies de créer un popup tout simple, sans aucun widget enfant et changes sa couleur de fond pour voir si ca marche.
    En règle général la couleur de fond d'un widget est écrasé par le dessin du widget enfant lorsque ce widget en possède un!

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    Vu ton code tu changes la couleur de l'EventBox. Il n'est pas dit que ce widget accepte une couleur, d'autant qu'en plus il est considéré "transparent".
    Lorsque tu changes la couleur du popup vient le problème du widget enfant. Essaies de créer un popup tout simple, sans aucun widget enfant et changes sa couleur de fond pour voir si ca marche.
    En règle général la couleur de fond d'un widget est écrasé par le dessin du widget enfant lorsque ce widget en possède un!
    J'ai refait la même popup en enlevant l'eventbox. toujours le meme problème.

    Aurais tu une autre solution à proposer ??

  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
    Comme tu l'as dit le changement de couleur d'un widget se fait pas le système des GtkRC. Pour ma part j'utilise la formulation suivante sur différents type de widget :
    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
    style "gVD_buttons"
    {
    	bg_pixmap[NORMAL] = "<parent>"
    	bg[NORMAL] = "#CC9664"
    	bg[INSENSITIVE]="#CC9664"
    	bg[ACTIVE] =  "#935437"
    	bg[PRELIGHT] = "#935437"
    	bg[SELECTED] = "#935437"
    	base[NORMAL] = "#CC9664"
    	base[INSENSITIVE]="gray75"
    	base[ACTIVE] =  "#935437"
    	base[PRELIGHT] = "#935437"
    	base[SELECTED] = "#935437"
    	fg[NORMAL] = "yellow"
    	fg[INSENSITIVE] = "white"
    }
    class "GtkMenu" style "gVD_buttons"
    class "GtkButton" style "gVD_buttons"
    class "GtkPaned" style "gVD_buttons"
    Je place ce code dans un fichier text que je charge ensuite au lancement de l'application grâce à la fonction gtk_rc_parse();

    En espérant t'aider un peu ...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    Comme tu l'as dit le changement de couleur d'un widget se fait pas le système des GtkRC. Pour ma part j'utilise la formulation suivante sur différents type de widget :
    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
    style "gVD_buttons"
    {
    	bg_pixmap[NORMAL] = "<parent>"
    	bg[NORMAL] = "#CC9664"
    	bg[INSENSITIVE]="#CC9664"
    	bg[ACTIVE] =  "#935437"
    	bg[PRELIGHT] = "#935437"
    	bg[SELECTED] = "#935437"
    	base[NORMAL] = "#CC9664"
    	base[INSENSITIVE]="gray75"
    	base[ACTIVE] =  "#935437"
    	base[PRELIGHT] = "#935437"
    	base[SELECTED] = "#935437"
    	fg[NORMAL] = "yellow"
    	fg[INSENSITIVE] = "white"
    }
    class "GtkMenu" style "gVD_buttons"
    class "GtkButton" style "gVD_buttons"
    class "GtkPaned" style "gVD_buttons"
    Je place ce code dans un fichier text que je charge ensuite au lancement de l'application grâce à la fonction gtk_rc_parse();

    En espérant t'aider un peu ...
    Je me suis mal exprimé quand je parlais d'une autre solution ! Pas de problème avec les fichiers gtkrc j'ai pas mal joué avec eux. J'en utilise un d'ailleurs pour mon appli.
    Mais bon revenons-en au topic de cette discussion. En parlant d'autre solution, je parlais d'une autre idée pour modifier le background d'un widget sans avoir à retoucher mon fichier gtkrc (modification temporaire du background)

    J'espère avoir été plus clair !!

    Dans l'attente de vos réponses ....

  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
    Pardon d'avoir répondu à côté.

    J'en suis venu au GtkRC parce que justement je suis coïncé sur le problème qui t'amène. Un solution peut élégante serait peut être de créer un GtkDrawingArea avec un fond noir. Tu insères ensuite dedans un container pour construire ton popup. Mais je suis loin d'être sûr que cette méthode fonctionne sans parler de la lourdeur du code!

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/11/2012, 15h16
  2. Réponses: 0
    Dernier message: 05/01/2011, 15h16
  3. modifier la couleur de fond d'une ligne de gridview
    Par falifalibe2 dans le forum ASP.NET
    Réponses: 0
    Dernier message: 16/02/2010, 08h50
  4. c# Comment modifier la couleur de fond d'une statusBar
    Par padodanle51 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 06/03/2006, 17h36
  5. [JTable] Modifier la couleur de fond d'une ligne
    Par joes_bushi dans le forum Composants
    Réponses: 2
    Dernier message: 20/09/2005, 12h13

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