Bonsoir,
j'ai developpe un solveur de Sudoku en C et je me suis lancee dans l'interface graphique en GTK+. Je suis completement debutante et je galere...
Pour la grille j'ai cree une Table contenant une matrice de GtkEntry qui represente les cases de la grille.
J'ai cree un menu egalement dans lequel j'aimerai charger un fichier texte pour remplir ma Table.
J'ai donc cree un signal comme la convention l'indique, avec le gpointer tout ca, il rentre dedans sans probleme, jusque la tout va bien.
En fait quand je veux juste charger mon fichier texte dans ma structure de grille ca marche tres bien, je passe simplement le pointeur de grille en parametre de ma fonction callback mais plus rien ne marche quand je veux passer plusieurs parametres.
En fait je voudrai passer en plus de mon pointeur sur grille, la matrice de Gtkentry afin de mettre les valeurs dedans au chargement.
Mes parametres a passer a la fonction callback :
Initialisation de ces parametres, de la table, des GtkEntry et du menu :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 typedef struct gtk_param { grid *g; GtkWidget **pInput; } param;
Ma callback et ma mise a jour des valeurs des GtkEntry :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 GtkWidget* Table=NULL; Table = gtk_table_new((*g).nbOfValue,(*g).nbOfValue,true); GtkWidget* pInput[(*g).nbOfValue*(*g).nbOfValue]; param *p=(param *)malloc(sizeof(param)); (*p).g=g; (*p).pInput=pInput; gtk_box_pack_start (GTK_BOX (p_main_box), GTK_WIDGET (menu_new (p)), FALSE, FALSE, 0);
Il ne me met meme pas le caractere "b" dans mes cases !
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
20
21
22
23
24
25 void cb_open (GtkWidget *p_widget, gpointer user_data) { GtkWidget *p_dialog = NULL; p_dialog = gtk_file_chooser_dialog_new ("Ouvrir un fichier", NULL, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); if (gtk_dialog_run (GTK_DIALOG (p_dialog)) == GTK_RESPONSE_ACCEPT) { gchar *file_name = NULL; file_name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (p_dialog)); open_file (file_name, (param *)user_data); g_free (file_name), file_name = NULL; } gtk_widget_destroy (p_dialog); } static void open_file (const gchar *file_name, param *p) { /* gros blabla, ouverture fichier, boucle sur chaque case... */ gtk_entry_set_text(GTK_ENTRY((*p).pInput[nb_case]),"b"); }
Y a t-il quelque chose que j'ai oublie ???
Merci beaucoup...
Partager