|
Publicité ' | ||||||||||||||||||||||||
|
|
#21 |
![]() ![]() Bernard SIAUDEnseignant Inscription : novembre 2003 Messages : 4 400 ![]() |
En fait, ce sont les fonctions suivantes :
gboolean callback_background_color_menu_hist (GtkWidget *widget, cairo_t *cr, gpointer param_nb) void callback_background_color_menu_race (GtkWidget *widget, cairo_t *cr, gpointer param) void callback_background_color_menu_classe (GtkWidget *widget, cairo_t *cr, gpointer param) qui sont les trois dernières du fichier callback_menu . J'ai du un peu modifié car avant, je teste l'entrée du menu pour savoir de quelle couleur la mettre. nb : je pense que ton essai de coloriage mériterait ca place dans une aide gtk.
__________________
Modérateur Mandriva Linux Amicalement VOOotre Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org Mes tutoriels |
|
|
00
|
|
|
#22 |
|
Membre Expert
![]() ![]() Gérald Conducteur de train Inscription : février 2008 Messages : 1 287 ![]() |
Nos réponses se sont croisées. J'ai répondu au problème sur la page précédente
__________________
Système d'exploitation : Debian Amd64 Testing / Slackware 13.37 32 bits Site perso : http://gerald3d.developpez.com (article Glade3 et Gtk+) Site perso : http://linechec.sourceforge.net (jeu d'echec) v0.4-1 Site perso : http://m3dlib.tuxfamily.org/ (moteur 3d. Rendu dans un GtkDrawingArea avec utilisation de Cairo.) v0.24 contact jabber : gerald3d@jabber.tuxfamily.org |
|
|
00
|
|
|
#23 |
![]() ![]() Bernard SIAUDEnseignant Inscription : novembre 2003 Messages : 4 400 ![]() |
Je comprends mieux le pourquoi du prototype ! Il fait parti intégrante du tout...
Merci. Sinon, je ne vois pas comment cette méthode pourrait marcher avec les combo-box. La question à se poser est : "les item des combo-box sont-ils des widgets ?". Et, là je n'en suis pas sûr
__________________
Modérateur Mandriva Linux Amicalement VOOotre Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org Mes tutoriels |
|
|
00
|
|
|
#24 |
|
Membre Expert
![]() ![]() Gérald Conducteur de train Inscription : février 2008 Messages : 1 287 ![]() |
J'en suis effectivement là. Le seul moyen que j'ai trouvé jusqu'à présent pour accéder à chaque élément d'un GtkComboBox est de passé par les AtkObject. Autant te dire que ca se complique un tentiné
.J'obtiens le nombre d'élément contenu ainsi que chaque pointeur AtkObject de chacun d'eux. Mais maintenant je n'arrive pas à convertir tout ce petit monde en GtkWidget. Pourtant la souris à bien une action dessus. Ils sont donc des GtkWidgets. La preuve en est qu'en essayer de transtyper j'obtiens une erreur me disant qu'ils sont du type GtkMenuItemAccessible. Malheureusement je ne trouve rien dans la documentation officielle par rapport à ce type de pointeur. Je fouille encore...
__________________
Système d'exploitation : Debian Amd64 Testing / Slackware 13.37 32 bits Site perso : http://gerald3d.developpez.com (article Glade3 et Gtk+) Site perso : http://linechec.sourceforge.net (jeu d'echec) v0.4-1 Site perso : http://m3dlib.tuxfamily.org/ (moteur 3d. Rendu dans un GtkDrawingArea avec utilisation de Cairo.) v0.24 contact jabber : gerald3d@jabber.tuxfamily.org |
|
|
00
|
|
|
#25 |
![]() ![]() Bernard SIAUDEnseignant Inscription : novembre 2003 Messages : 4 400 ![]() |
__________________
Modérateur Mandriva Linux Amicalement VOOotre Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org Mes tutoriels |
|
|
00
|
|
|
#26 | ||
|
Membre Expert
![]() ![]() Gérald Conducteur de train Inscription : février 2008 Messages : 1 287 ![]() |
Tu as tout à fait raison. C'était devant moi tout ce temps
Je te donne donc la méthode pour modifier ton GtkComboBox : Code :
__________________
Système d'exploitation : Debian Amd64 Testing / Slackware 13.37 32 bits Site perso : http://gerald3d.developpez.com (article Glade3 et Gtk+) Site perso : http://linechec.sourceforge.net (jeu d'echec) v0.4-1 Site perso : http://m3dlib.tuxfamily.org/ (moteur 3d. Rendu dans un GtkDrawingArea avec utilisation de Cairo.) v0.24 contact jabber : gerald3d@jabber.tuxfamily.org |
||
|
|
10
|
|
|
#27 |
![]() ![]() Bernard SIAUDEnseignant Inscription : novembre 2003 Messages : 4 400 ![]() |
Je testerai dès que j'aurai un peu de temps devant moi... J'aurai eu un si gros coup de bol ?
__________________
Modérateur Mandriva Linux Amicalement VOOotre Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org Mes tutoriels |
|
|
00
|
|
|
#28 |
|
Membre Expert
![]() ![]() Gérald Conducteur de train Inscription : février 2008 Messages : 1 287 ![]() |
Ben ouais
__________________
Système d'exploitation : Debian Amd64 Testing / Slackware 13.37 32 bits Site perso : http://gerald3d.developpez.com (article Glade3 et Gtk+) Site perso : http://linechec.sourceforge.net (jeu d'echec) v0.4-1 Site perso : http://m3dlib.tuxfamily.org/ (moteur 3d. Rendu dans un GtkDrawingArea avec utilisation de Cairo.) v0.24 contact jabber : gerald3d@jabber.tuxfamily.org |
|
|
00
|
|
|
#29 |
![]() ![]() Bernard SIAUDEnseignant Inscription : novembre 2003 Messages : 4 400 ![]() |
Ceci dit, il va peut-être réfléchir sur ton code : quand et comment utiliser callback_color_cellrender ?
Il va falloir que g_signal_connect ne soit présent qu'une fois par item du menu. Sinon, j'aurais peur de multiples appels et de ralentissement du programme.
__________________
Modérateur Mandriva Linux Amicalement VOOotre Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org Mes tutoriels |
|
|
00
|
|
|
#30 |
|
Membre Expert
![]() ![]() Gérald Conducteur de train Inscription : février 2008 Messages : 1 287 ![]() |
Non. Pas d'inquiètude. Tout widget au sens général du terme passe par le signal "draw". Tu ne vas pas sentir de ralentissement.
__________________
Système d'exploitation : Debian Amd64 Testing / Slackware 13.37 32 bits Site perso : http://gerald3d.developpez.com (article Glade3 et Gtk+) Site perso : http://linechec.sourceforge.net (jeu d'echec) v0.4-1 Site perso : http://m3dlib.tuxfamily.org/ (moteur 3d. Rendu dans un GtkDrawingArea avec utilisation de Cairo.) v0.24 contact jabber : gerald3d@jabber.tuxfamily.org |
|
|
00
|
|
|
#31 | |
![]() ![]() Bernard SIAUDEnseignant Inscription : novembre 2003 Messages : 4 400 ![]() |
Oui, mais le choix de la couleur passe par le parcours comparatifs de plusieurs listes !
Je n'avais pas vu : Citation:
__________________
Modérateur Mandriva Linux Amicalement VOOotre Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org Mes tutoriels |
|
|
|
00
|
|
|
#32 |
![]() ![]() Bernard SIAUDEnseignant Inscription : novembre 2003 Messages : 4 400 ![]() |
C'est la seconde fois que je tombe sur ce problème ici...
Comment vais l'éviter cette fois ? À moins que j'arrive à le résoudre ! Soit je monte une nouvelle structure pour le passage de paramètre afin de dire à l'item lequel il est car sa couleur dépend de l'environnement lors de l'ouverture du menu. C'est à dire, qu'en fonction des paramètres des autres boites de dialogues, un item d'un menu peut changer de couleur.
__________________
Modérateur Mandriva Linux Amicalement VOOotre Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org Mes tutoriels |
|
|
00
|
|
|
#33 |
![]() ![]() Bernard SIAUDEnseignant Inscription : novembre 2003 Messages : 4 400 ![]() |
J'ai encore contourné le problème...
Mais 1) Je vois apparaître la couleur la première fois que j'ouvre le menu et disparaître aussitôt C'est un combobox. 2) J'ai du me planter dans les tests de couleurs, je n'ai pas ce que je cherche À moins que ce ne soit un problème de la récupération de la taille : allocation fait toujours : x=2 y=2 width=112 height=402 Mes tests viennent de montrer que le problème est bien là, si je divise la taille par le nombre d'éléments, j'ai bien juste la hauteur d'une case de coloriée. 3) Si je place un TRUE à la place du FALSE en fin de callback, la couleur est là, unie sur tout le menu, mais sans le texte => où trouver les signaux afin de voir si je peux en choisir un autre ? 4) J'ai un menu avec 27 entrées et atk_object_get_n_accessible_children trouve 28 fils... Toutes les entrées passent bien par le callback, saut celle pour i=0. La fonction callback est à la fin du fichier param.c et la première est appelé à la ligne 279 du fichier modif_caract.c . On peut voir que : le menu est créé avec : Code :
p_combo_classe[i]=gtk_combo_box_new_with_model (GTK_TREE_MODEL (p_model_classe)); Code :
void callback_color_classe_cellrender (GtkComboBox *combobox, struct_param_nb * user_data) Si tu veux, c'est au alentour de la ligne 2800 du fichier caract.c . Je me suis arrangé pour que les item de la fin soit appelé en premier et j'ai fait des rectangles de plus en plus petit pour aller jusqu'au premier.
__________________
Modérateur Mandriva Linux Amicalement VOOotre Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org Mes tutoriels |
|
|
00
|
|
|
#34 |
|
Membre Expert
![]() ![]() Gérald Conducteur de train Inscription : février 2008 Messages : 1 287 ![]() |
"nb : je suis bien arrivé après moult réflexions à faire le fond du menu comme je le souhaitais. Mais, il n'y a pas de texte. Cette fois, je ne comprends pas pourquoi... Il n'y a pas de return TRUE !"
Normal. Comme je te l'ai déjà dit si tu renvoies TRUE tu annules les autres appels attachés à ce signal. Seule ta fonction sera exécutée. Le texte n'apparaît plus.
__________________
Système d'exploitation : Debian Amd64 Testing / Slackware 13.37 32 bits Site perso : http://gerald3d.developpez.com (article Glade3 et Gtk+) Site perso : http://linechec.sourceforge.net (jeu d'echec) v0.4-1 Site perso : http://m3dlib.tuxfamily.org/ (moteur 3d. Rendu dans un GtkDrawingArea avec utilisation de Cairo.) v0.24 contact jabber : gerald3d@jabber.tuxfamily.org |
|
|
00
|
|
|
#35 |
|
Membre Expert
![]() ![]() Gérald Conducteur de train Inscription : février 2008 Messages : 1 287 ![]() |
Il faut avouer qu'il est très difficile de lire ton code. Trop de pointeurs imbriqués les uns dans les autres.
Mais pour essayer de répondre de manière plus générale, si tu veux que ton combobox évolue en fonction de certains choix dans d'autres menus tu peux le faire directement depuis le callback appelé par le signal "draw". Ainsi, lorsque tu ouvres le combobox tu effectues les tests nécessaires et choisi la couleur adéquate en fonction du résultat du test. Tu n'as qu'un callback attaché. Donc pas de risque de ralentissement.
__________________
Système d'exploitation : Debian Amd64 Testing / Slackware 13.37 32 bits Site perso : http://gerald3d.developpez.com (article Glade3 et Gtk+) Site perso : http://linechec.sourceforge.net (jeu d'echec) v0.4-1 Site perso : http://m3dlib.tuxfamily.org/ (moteur 3d. Rendu dans un GtkDrawingArea avec utilisation de Cairo.) v0.24 contact jabber : gerald3d@jabber.tuxfamily.org |
|
|
00
|
|
|
#36 | ||||
![]() ![]() Bernard SIAUDEnseignant Inscription : novembre 2003 Messages : 4 400 ![]() |
Certes mon code est difficile à lire, mais c'est juste les points du choix de la couleur.
Il y a des essais de couleur que j'ai mis dans le callback Code :
Si je les laiise, j'ai mon travail sur le fond qui reste. Pourquoi ? Il y a après un Code :
Là, je vois que la taille est la taille de l'affichage : donc plus petite s'il y a apparition d'ascenseur => mon idée n'est pas bonne. Je ne comprends pas pourquoi chez toi la couleur marche et pas chez moi Ton dessin est pour une GtkComboBoxText, non ? Pour ma part, ce sont des GtkComboBox régit avec des GtkCellRendererText. Le problème viendrait-il des GtkCellRendererText ?
__________________
Modérateur Mandriva Linux Amicalement VOOotre Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org Mes tutoriels |
||||
|
|
00
|
|
|
#37 |
|
Membre Expert
![]() ![]() Gérald Conducteur de train Inscription : février 2008 Messages : 1 287 ![]() |
Si tu passes par des GtkCellRenderer tu peux directement modifier leurs propriétés avec la fonction g_object_set_data();.
__________________
Système d'exploitation : Debian Amd64 Testing / Slackware 13.37 32 bits Site perso : http://gerald3d.developpez.com (article Glade3 et Gtk+) Site perso : http://linechec.sourceforge.net (jeu d'echec) v0.4-1 Site perso : http://m3dlib.tuxfamily.org/ (moteur 3d. Rendu dans un GtkDrawingArea avec utilisation de Cairo.) v0.24 contact jabber : gerald3d@jabber.tuxfamily.org |
|
|
00
|
|
|
#38 |
![]() ![]() Bernard SIAUDEnseignant Inscription : novembre 2003 Messages : 4 400 ![]() |
J'ai déjà testé :
Code :
g_object_set(p_cell,"cell-background-set",1,"cell-background","#00FF00",NULL);
__________________
Modérateur Mandriva Linux Amicalement VOOotre Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org Mes tutoriels |
|
|
00
|
|
|
#39 |
|
Membre Expert
![]() ![]() Gérald Conducteur de train Inscription : février 2008 Messages : 1 287 ![]() |
Ha, ok! Au temps pour moi.
__________________
Système d'exploitation : Debian Amd64 Testing / Slackware 13.37 32 bits Site perso : http://gerald3d.developpez.com (article Glade3 et Gtk+) Site perso : http://linechec.sourceforge.net (jeu d'echec) v0.4-1 Site perso : http://m3dlib.tuxfamily.org/ (moteur 3d. Rendu dans un GtkDrawingArea avec utilisation de Cairo.) v0.24 contact jabber : gerald3d@jabber.tuxfamily.org |
|
|
00
|
|
|
#40 |
![]() ![]() Bernard SIAUDEnseignant Inscription : novembre 2003 Messages : 4 400 ![]() |
Je compte essayer de changer a structure de mon menu. Mais, j'ai passé le WE avec femme et enfants sans trop programmer
__________________
Modérateur Mandriva Linux Amicalement VOOotre Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org Mes tutoriels |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com