Et bien, je vais essayer...
Version imprimable
Et bien, je vais essayer...
On attend ton retour d'expérience...
Mauvais départ...
https://mail.gnome.org/archives/gtk-.../msg00011.html
Chez moi aussi, il ne se passe rien :(
aie ! :aie: Mal engagé en effet...
Il se passe quelque chose sous windows... Il faudra juste que j'essaie d'analyser pourquoi les couleurs deviennent aussi affreuses... Ce n'est pas ce que je demandais !
Sous windows : il perd sa configuration... Pour arriver à un fond noir et une écriture rose (on dirait, mais sur le noir, ce n'est pas facilement visible).
J'ai modifié le code :
Le fichier ne marche pas... Il sort une erreur :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 file = g_file_new_for_path("mongtk.css"); GdkDisplay *display = gdk_display_get_default (); GdkScreen *screen = gdk_display_get_default_screen (display); css_provider = gtk_css_provider_get_default (); gtk_css_provider_load_from_file (css_provider, file, &error); if (error!=NULL) { fprintf (stderr, "Unable to read file: %s\n", error->message); } gtk_style_context_add_provider_for_screen (screen, GTK_STYLE_PROVIDER (css_provider),GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); /* à faire une seule fois */ gtk_css_provider_load_from_data (css_provider,"GtkButton {font: Monospace 10; background-color: rgba(0%, 76%, 0%, 0.6);} GtkWindow { background-image: url(\"images/dragon.jpg\");}",-1, NULL); g_object_unref (css_provider);
C'est la même si le lien est bon ou non.. Je cherche !Code:Unable to read file: UH��ATSH��@
Par contre, par data, ça marche ! Ou presque... Le fond, c'est bon, mais la couleur des boutons, que lorsque la fenêtre n'est plus sélectionnée !
Donc, si j'arrive à le faire marcher : ce ne sera pas mieux qu'avant :(
Je vais tout de même un peu regarder le fichier... Je ne maîtrise pas (encore) les GFile.
Autre test :
Cette fois :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 file = g_file_new_for_path("mongtk.css"); //GdkDisplay *display = gdk_display_get_default (); //GdkScreen *screen = gdk_display_get_default_screen (display); GtkStyleContext *context= gtk_widget_get_style_context (win); css_provider = gtk_css_provider_get_default (); gtk_css_provider_load_from_file (css_provider, file, &error); if (error!=NULL) { //printf ("Unable to read file: %s\n", error->message); } //gtk_style_context_add_provider_for_screen (screen, GTK_STYLE_PROVIDER (css_provider),GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); /* à faire une seule fois */ gtk_css_provider_load_from_data (css_provider,"GtkButton {font: Monospace 10; background-color: rgba(0%, 76%, 0%, 0.6);} GtkWindow { background-image: url(\"images/dragon.jpg\");}",-1, NULL); gtk_style_context_add_provider (context,GTK_STYLE_PROVIDER (css_provider),GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); g_object_unref (css_provider);
1) J'ai du commenter le fprintf : il fait planter le programme !
2) le vert, je ne le vois jamais :(
3) Le dragon est au fond que de cette première fenêtre, pas des fenêtres filles.
Une remarque qui n'a rien à voir avec ton problème. Une fonction de la Glib encapsule une écriture sur le canal stderr : g_printerr();
Ensuite si le printf(); pose problème cela vient sûrement de error. Comme ton code affiché n'est pas complet je précise qu'error doit être initialisé à NULL avant de l'utiliser.
Merci pour la remarque ;)
Il n'y avais pas de faute finalement à ce niveau !
Ceci marchait avec gtk 3.4, avec le fichier de configuration :Par contre, avec gtk 3.5, ça ne marche plus :(Code:
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 file = g_file_new_for_path("mongtk.css"); GdkDisplay *display = gdk_display_get_default (); GdkScreen *screen = gdk_display_get_default_screen (display); //GtkStyleContext *context= gtk_widget_get_style_context (win); //css_provider = gtk_css_provider_get_default (); css_provider = gtk_css_provider_new (); printf("%s\n\n", gtk_css_provider_to_string(GTK_CSS_PROVIDER (css_provider))); //gtk_style_context_add_provider (context,GTK_STYLE_PROVIDER (css_provider),1); if (error!=NULL) { traite_erreur(error); g_error_free(error); } gtk_css_provider_load_from_file (css_provider, file, &error); if (error!=NULL) { g_printerr ("Unable to read file: %s\n", error->message); traite_erreur(error); g_error_free(error); } gtk_style_context_add_provider_for_screen (screen, GTK_STYLE_PROVIDER (css_provider),GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); /* à faire une seule fois */ /*gtk_css_provider_load_from_data (css_provider,"GtkButton {font: Monospace 10; background-color: rgba(0%, 76%, 0%, 0.6);}" //"GtkWindow { background-image: url(\"images/dragon.jpg\");}" "GtkComboBox {background-color: rgba(100%, 76%, 0%, 0.6);}" ,-1, NULL);*/ printf("%s\n\n", gtk_css_provider_to_string(GTK_CSS_PROVIDER (css_provider))); g_object_unref(file); g_object_unref (css_provider)
Mais :Marche différemment qu'avec gtk 3.4 : même le menu est affecté par l'image de fond. Ce n'était pas le cas avec gtk 3.4 .Code:
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 file = g_file_new_for_path("mongtk.css"); GdkDisplay *display = gdk_display_get_default (); GdkScreen *screen = gdk_display_get_default_screen (display); //GtkStyleContext *context= gtk_widget_get_style_context (win); css_provider = gtk_css_provider_get_default (); //css_provider = gtk_css_provider_new (); printf("%s\n\n", gtk_css_provider_to_string(GTK_CSS_PROVIDER (css_provider))); //gtk_style_context_add_provider (context,GTK_STYLE_PROVIDER (css_provider),1); /*if (error!=NULL) { traite_erreur(error); g_error_free(error); } gtk_css_provider_load_from_file (css_provider, file, &error); if (error!=NULL) { g_printerr ("Unable to read file: %s\n", error->message); traite_erreur(error); g_error_free(error); }*/ gtk_style_context_add_provider_for_screen (screen, GTK_STYLE_PROVIDER (css_provider),GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); /* à faire une seule fois */ gtk_css_provider_load_from_data (css_provider,"GtkButton {font: Monospace 10; background-color: rgba(0%, 76%, 0%, 0.6);}" "GtkWindow { background-image: url(\"images/dragon.jpg\");}" "GtkComboBox {background-color: rgba(100%, 76%, 0%, 0.6);}" ,-1, NULL); //printf("%s\n\n", gtk_css_provider_to_string(GTK_CSS_PROVIDER (css_provider))); g_object_unref(file); g_object_unref (css_provider)
Le coup du bouton vert est toujours le même... Il n'arrive que lorsque la fenêtre est déselectionnée :(
Enfin, il se passe quelque chose sous gnome, mais pas sous kde... Trop volatile tout ça :(
Le gestionnaire du bureau est prioritaire sur le thème de l'application. Il y a peut être quelque chose dans la doc. à ce sujet...
J'ai vu des choses dessus... Des constantes sur lesquelles je ne sais comment agir... http://developer.gnome.org/gtk3/stab...-FALLBACK:CAPS ? Non ?
Je voudrais un thème par défaut inexistant !Citation:
You should not use priorities higher than this, to give the user the last word.
Je travaille encore sur le sujet...
Il faut lancer l'application en mode console pour voir les erreurs du fichier css.
J'en suis là :J'ai toujours la coloration des boutons qui prend effet dès que la fenêtre perd le focus. Pas avant :(Code:
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 GtkWindow { background : url("./images/dragon.jpg"); background-position: top center; } GtkButton GtkBin * { /*font: Sans 10;*/ background-color: rgba(80%,80%,80%,0); } GtkBin * { /*font: Sans 10;*/ background-color: rgba(100%,100%,100%,0.3); } GtkMenu { background-color: rgba(80%,80%,80%,0.3); } GtkLabel {background-color: rgba(100%, 100%, 100%, 0);} /*GtkButton GtkLabel {background-color: rgba(100%, 100%, 100%, 0);}*/ GtkButton { background-color:rgba(50%, 50%, 50%, 0.5); } GtkButton:active { background-color: rgba(80%,80%,80%,0.5); } #sans_fond { background : none; background-color: rgb(80%,80%,80%); }
J'ai écrit un petit code exemple qui n'utilise pas du tout les GtkRcStyle. Il code en dure les différentes couleurs. Si ca peut aider...
Code:
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62 #include <gtk/gtk.h> int main(int argc, char *argv []) { GtkWidget *fenetre_principale; GtkWidget *box; GtkWidget *button; GdkRGBA rgba; /* Initialisation de la librairie Gtk. */ gtk_init(&argc, &argv); // création de la fenêtre principale fenetre_principale =gtk_window_new ( GTK_WINDOW_TOPLEVEL ); gtk_window_set_title(GTK_WINDOW(fenetre_principale), "Test background"); gtk_window_set_position(GTK_WINDOW( fenetre_principale ), GTK_WIN_POS_CENTER_ALWAYS); /* On fixe la couleur de fond de la fenêtre principale */ rgba.red = 1; rgba.green = 0; rgba.blue = 0; rgba.alpha = 1; gtk_widget_override_background_color (fenetre_principale, GTK_STATE_FLAG_NORMAL, &rgba); box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_add (GTK_CONTAINER (fenetre_principale), box); button = gtk_button_new_with_label ("bouton 1"); gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 4); /* On change la couleur de fond du bouton 1 en vert */ rgba.red = 0; rgba.green = 1; rgba.blue = 0; rgba.alpha = 1; gtk_widget_override_background_color (button, GTK_STATE_FLAG_NORMAL, &rgba); button = gtk_button_new_with_label ("bouton 2"); gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 4); /* On change la couleur de fond du bouton 2 en bleu */ rgba.red = 0; rgba.green = 0; rgba.blue = 1; rgba.alpha = 1; gtk_widget_override_background_color (button, GTK_STATE_FLAG_NORMAL, &rgba); /* On fixe la couleur du bouton 2 au blanc lors du passage de la souris dessus */ rgba.red = 1; rgba.green = 1; rgba.blue = 1; rgba.alpha = 1; gtk_widget_override_background_color (button, GTK_STATE_FLAG_PRELIGHT, &rgba); // signaux pour la fermeture de l'application g_signal_connect(G_OBJECT(fenetre_principale), "delete_event", (GCallback)gtk_main_quit, NULL); g_signal_connect(G_OBJECT(fenetre_principale), "destroy",(GCallback)gtk_main_quit, NULL); gtk_widget_show_all(fenetre_principale); gtk_main(); return 0; }
Merci !
Mais mon but est de comprendre les css et aussi de mettre une image de fond ;)
Regarde mon post http://www.developpez.net/forums/d12...sions-gtk-css/
Je crois que le problème actuel est plutôt ça ! En ce moment, on déborde (effet de bord) du sujet initial !