Callback, structures et boucle
Bonjour,
j'ai déjà parcouru les forums et le net pour essayer de résoudre mon problème mais il est un petit peu différent de ceux liés au passage de structures simples dans un callback.
Je génère un tableau de boutons à l'aide de deux boucles. Chaque bouton contient une image. J'aimerais changer d'image au clic sur le bouton à l'aide de la fonction : gtk_button_set_image(bouton,image);
J'y arrive très bien pour un bouton simple, qui n'est pas compris dans un tableau et avec une image non stockée dans une structure .
Or, mes images sont stockées dans un tableau d'images de la structure suivante :
Code:
1 2 3 4 5 6 7 8
|
typedef struct case_plateau
{
GtkWidget *image1[35];//image visible avant le clic
GtkWidget *image2[35];//image visible après le clic
GtkWidget *bouton[35];//bouton correspondant
int i,j;
}t_case; |
Voici mes boucles qui associent une image à chaque bouton :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
t_case case_jeu;
for(case_jeu.i=0;case_jeu.i<6;case_jeu.i++)
{
for(case_jeu.j=0;case_jeu.j<6;case_jeu.j++)
{
init_image(&case_jeu,a,nb1,nb2);//appel de la fonction qui associe une image à chaque bouton
case_jeu.boutton[case_jeu.j] = gtk_button_new(); gtk_button_set_image(case_jeu.boutton[case_jeu.j],case_jeu.image1[case_jeu.j]);//on associe l'image1 au bouton
...//ajout du bouton à la table
g_signal_connect(G_OBJECT(case_jeu.boutton[case_jeu.j]), "clicked", G_CALLBACK(clic1_sur_case), &case_jeu);//je transmet ma structure à ma fonction callback
}
} |
Le tableau marche et les boutons contiennent bien image1. Image2[j] contient bien des images.
J'aimerais maintenant associer dans mon fonction "clic1_sur_cas" mon image2 à mon bouton. Voilà ce que j'ai fait :
Code:
1 2 3 4 5
| void clic1_sur_case(GtkWidget *monbouton, gpointer data)
{
t_case *testcase = (t_case *)data;//Je cast data
gtk_button_set_image(monbout->boutton[monbout->j],testcase.image2[testcase.j]);
} |
Mon programme plante lorsque je clique sur le bouton.
Pouvez-vous me dire où est-ce que je me suis trompé ?
Je vous remercie d'avance.