Ben moi aussi. Ca fait du bien de débrancher un peu :)
Version imprimable
Bonjour
Je viens de passer par la méthode sans gtk_cell_renderer_text_new et la coloration marche. Mais, mon programme est pour le moment inutilisable car ce ci implique bien plus de changement que ça :(
Je mets ici la méthode de génération car elle est très peu documentée :Code:
1
2
3
4
5 p_combo_classe[i]=gtk_combo_box_text_new(); for (j=0;j<nombre_d_elements;j++) { gtk_combo_box_text_insert_text (GTK_COMBO_BOX_TEXT(p_combo_classe[i]),j,nom_element[j]); }
Tu t'embêtes pour rien à gérer les indices, gtk_combo_box_text_append_text est là pour ça... Pour mémoire le verbe "to append" signifie "ajouter à la fin", "to prepend" signifie "ajouter au début".
Code:
1
2
3
4
5
6 p_combo_classe[i] = gtk_combo_box_text_new(); for (j = 0; j < nombre_d_elements; j++) { gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT(p_combo_classe[i]), nom_element[j]); }
OK...
C'est promis, il faudra que je me mette sérieusement à l'anglais :aie:
Mais, il y a du boulot :mur::france::boulet:
Retiens déjà au moins ces 2 là, c'est utilisé partout dans GTK... Et aussi dans la GLib, notamment pour gérer les éléments ordonnés, comme dans les listes chaînées (GSList, GList) et les tableaux dynamiques (GArray, GPtrArray, GByteArray).
Bonsoir
Ce soir, suite à une mise à jour, je découvre un changement de fonctionnement...
Premier problème :
Il parcourt un élément de plus que d'éléments dans le menu :( comme il l faisait avec GtkCellRendererCode:for (i=0; i < atk_object_get_n_accessible_children (gtk_combo_box_get_popup_accessible (combobox)); i++)
Second problème :
Pour les couleurs, il m'arrive la même chose qu'avec les GtkCellRenderer :gtk_widget_get_allocation me donne le menu entier au lieu de la cellule et le coloriage est effacé lorsque que l'affichage arrive.
On dirait un cauchemar... Comme si je testais un ancien code alors que j'ai le nouveau...
Le même code sous windows me donne bien les couleurs !
Je confirme bien ce que j'ai dit hier soir !
D'où vient cette différence ?
:mur: Je viens de mettre à jour un autre PC au boulot toujours sous Mageia 2. Et cette fois ça marche... :mur:
J'ai perdu une soirée sur ce problème... Et je continue à me poser des questions...
Il y a même une chose que j'avais raporté à plus tard qui marche à nouveau : la coloration des textes !
Passer par la couche d'accessibilité ATK pour récupérer le nombre d'éléments d'une combobox n'est pas vraiment le meilleur moyen... Tu devrais je pense à la place passer par gtk_combo_box_get_model, et appeler gtk_tree_model_iter_n_children avec un itérateur à NULL je pense...
J'ai réussi comme ça (avec toutes les étapes) :Sinon, je me monfond dans l'incompréhention du marche/marche pas :(Code:
1
2
3 model=gtk_combo_box_get_model(GTK_COMBO_BOX (combobox)); iter= gtk_tree_model_iter_n_children(model,NULL); for(i=0;i<iter;i++)
Sur PC que j'ai au boulot, ça marche, mais uniquement si je suis sur ce PC, c'est à dire que l'exécutable fait sur ce PC est exécuté sur le mien ne marche pas. Et pire, si j'exécute de chez moi avec une connexion ssh l'exécutable à distance, ça plante...
Et pire... Je viens juste de tester... Du boulot, je me connecte par ssh sur mon PC et je lance à distance mon programme : il marche... Je rentre dans une phase de bug incompréhensible...
La question est de savoir qui gère l'affichage et comment il est géré.
Comme je te l'ai dit, je pense que c'est une question de compatibilité descendante avec la libc... Au passage, évite d'appeler ta variable iter si ce n'est pas un itérateur... n_combo_entries ou un truc de ce genre serait plus juste.
Le problème de compatibilité n'est pas trop envisageable, car, je fais des tests sur des PC qui ont la même version des logiciels officiellement (tous mageia 2 64 bits).
Je ne comprends plus, tu n'as pas dit que tu avais du Mageia 1 et 2 ?
J'ai aussi deux PC sous Mageia 1, mais gtk3 n'y est pas porté.
Par contre, je viens d'installer de quoi compiler sous une ubuntu que j'ai en double boot : ça marche sur ce PC ;) Mais, c'est mon PC tablette peu puissant et sans clavier :(
Et là, je vois que je peux travailler à distance : quand je lance par ssh mon programme, j'ai la coloration des menus.
Le fait du hasard ou non...
J'ai remis la configuration à zéro de gnome afin de pouvoir faire tourner gnome3 sur mon compte alors qu'il tourbait sur un nouveau compte que je venais juste de créer pour test...
gnome3 a tourné, j'ai lancé alors mon programme à tout hasard et les menu coloriés se sont mis à marcher sous Mageia 2... gnome3 o la mise à jour juste faite avant ? Seul dieu le sait !
J'ai voulu à tout prix faire tourner mon PC avec gnome3 car, xfce4, lxde et nouvellement KDE avaient un problème : http://www.mageialinux-online.org/fo...quote=#m119257
Problème gnome3 : http://www.mageialinux-online.org/fo...-2.php#m119275
Et bien le problème revient... J'ai perdu la couleur dans les menus...
C'est peut-être comme l'autre problème que j'ai déterré. C'est comme si une configuration de gnome prenait le dessus sur mes couleurs :( Ceci dit, je suis sous KDE car il ne prend pas (trop ?) en compte la config gnome et que j'arrive à avoir la couleur désirée dans le fond de mes cadres. Mais, je ne l'ai plus dans mes menus :( :(
Édit : je fais des tests... Sous gnome, j'ai de nouveau toutes mes couleurs ! Mais, il me semble que le thème à changé...
Donc ce problème dépend surement d'une configuration que je ne maîtrise pas, comme celui-ce : http://www.developpez.net/forums/d12...kground_color/
nb : je suis sous mageia 2 avec gtk 3.4 , avec mageia 3 et gtk 3.5 , il y avait trop de problèmes ces derniers temps.
La bonne méthode pour "écraser" les thèmes Gnome serait peut être de passer par les GtkCssProvider (remplaçant des GtkRcStyle).
Tu as des exemples d'utilisation ?
J'avoue que l'idée me tente beaucoup. Dans ce cas, je pourrais modifier le style complet ? Ce serait génial.