Bonjour à tous,

je débute en GTK+, et je me heurte à un problème (qui ne doit pas être très compliqué) qui me bloque dans ma progression.
Je dois gérer une liste de commande de clients à l'aide d'un GTKTreeview. Je cherche à ajouter une nouvelle commande à la liste du GTKTreeview.

Pour cela, je créer un bouton qui permet cette action. Je connecte l'appelle de la fonction new_commande au clique sur le bouton à l'aide de la fonction g_signal_connect.

Cependant, lorsque je clique sur le bouton concerné, j'obtiens les messages suivants dans la console :

<Projet KFEE'T.exe:4024>: Gtk-CRITICAL **: gtk_list_store_append: assertion 'GTK_IS_LIST_STORE <list_store>' failed


<Projet KFEE'T.exe:4024>: Gtk-CRITICAL **: gtk_list_store_set_valist: assertion 'GTK_IS_LIST_STORE <list_store>' failed

Selon moi, le problème viens de le fonction g_signal_connect que je n'arrive pas à bien utiliser.
Ci dessous le code des 2 fonctions concernées :
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
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
void new_commande(GtkListStore* a)
 {
    // Declaration du widget
    gchar *sTexte;
    GtkTreeIter pIter;
    GtkListStore* pListStoree;
    sTexte = g_malloc(12);
 
 
    sprintf(sTexte, "Client new");
 
    //Creation de la nouvelle ligne
    gtk_list_store_append(a, &pIter);
    // Mise a jour des donnees
    gtk_list_store_set(a, &pIter,
        0, sTexte,
        1, "6",
        2,NULL,
        3,FALSE,
        4,FALSE,
        -1);
}
 
void fenetre_utilisateur (GtkWidget *Fenetre, gpointer data)
 
{
    GtkWidget *pWindow;
    GtkWidget *pListView;
    GtkWidget *pScrollbar;
    GtkListStore *pListStore;
    GtkTreeViewColumn *pColumn;
    GtkCellRenderer *pCellRenderer;
    GtkCellRenderer *pCellRenderer1;
    GtkCellRenderer *pCellRenderer2;
    gchar *sTexte;
    gint i;
    GtkWidget *test;
    GtkWidget *pAdmin;
    GdkPixbuf *pPixBufA;
    GtkTreeIter pIter;
    gint a=5;
 
 
 
    test=gtk_fixed_new();
 
 
    // Creation de la fenetre principale
    pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_default_size(GTK_WINDOW(pWindow), 640, 400);
    gtk_window_set_title(GTK_WINDOW(pWindow), "Caisse KFEE'T  -  Utilisateur");
    g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
 
 
    // Creation du modele
    pListStore = gtk_list_store_new(5, G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN);
 
    sTexte = g_malloc(12);
    pPixBufA = gdk_pixbuf_new_from_file("./annuler.png", NULL);
 
 
    // Insertion des elements
    for(i = 0 ; i < 5 ; ++i)
    {
 
 
        sprintf(sTexte, "Client n%d\0", i);
       // printf("%d",G_INT(pIter));
 
        // Creation de la nouvelle ligne
        gtk_list_store_append(pListStore, &pIter);
 
        // Mise a jour des donnees
        gtk_list_store_set(pListStore, &pIter,
            0, sTexte,
            1, "5",
            2,pPixBufA,
            3,FALSE,
            4,FALSE,
            -1);
    }
 
 
    g_free(sTexte);
 
 
 
    // Creation de la vue
    pListView = gtk_tree_view_new_with_model(GTK_TREE_MODEL(pListStore));
 
    // Creation de la premiere colonne
    pCellRenderer = gtk_cell_renderer_text_new();
    pColumn = gtk_tree_view_column_new_with_attributes("Client",
        pCellRenderer,
        "text", 0,
        NULL);
    // Ajout de la colonne à la vue
    gtk_tree_view_append_column(GTK_TREE_VIEW(pListView), pColumn);
 
 
    // Creation de la deuxième colonne
    pCellRenderer = gtk_cell_renderer_text_new();
    pColumn = gtk_tree_view_column_new_with_attributes("Prix",
        pCellRenderer,
        "text", 1,
        NULL);
    // Ajout de la colonne à la vue
    gtk_tree_view_append_column(GTK_TREE_VIEW(pListView), pColumn);
 
 
    // Creation de la troisième colonne
    pCellRenderer2 = gtk_cell_renderer_pixbuf_new();
    pColumn = gtk_tree_view_column_new_with_attributes("Image",
        pCellRenderer2,
        "pixbuf", 2,
        NULL);
    // Ajout de la colonne à la vue
    gtk_tree_view_append_column(GTK_TREE_VIEW(pListView), pColumn);
 
 
    // Creation de la qatrième colonne
    pCellRenderer = gtk_cell_renderer_toggle_new();
    pColumn = gtk_tree_view_column_new_with_attributes("Paye",
        pCellRenderer,
        "active", 3,
         NULL);
    // Ajout de la colonne à la vue
    gtk_tree_view_append_column(GTK_TREE_VIEW(pListView), pColumn);
 
 
    // Creation de la cinquième colonne
    pCellRenderer1 = gtk_cell_renderer_toggle_new();
    pColumn = gtk_tree_view_column_new_with_attributes("Servi",
        pCellRenderer1,
        "active", 4,
         NULL);
    // Ajout de la colonne à la vue
    gtk_tree_view_append_column(GTK_TREE_VIEW(pListView), pColumn);
 
 
 
    // Ajout et caractérisation de la vue a la fenetre
    pScrollbar = gtk_scrolled_window_new(NULL, NULL);
    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(pScrollbar),
        GTK_POLICY_AUTOMATIC,
        GTK_POLICY_AUTOMATIC);
    gtk_widget_set_size_request(pListView,440,400);
    gtk_fixed_put(test,pListView,0,0);
    gtk_container_add(GTK_CONTAINER(test), pScrollbar);
 
 
 
    //crétation et caractérisation du bouton "Nouvelle commande"
    pAdmin=gtk_button_new_with_label("Nouvelle commande");
    g_signal_connect(G_OBJECT(pAdmin), "clicked", G_CALLBACK(new_commande),pListStore);
    gtk_widget_set_size_request(pAdmin,200,100);
    gtk_fixed_put(test,pAdmin,440,300);
 
    gtk_container_add(GTK_CONTAINER(pWindow),test);
 
 
    gtk_widget_show_all(pWindow);
    g_signal_connect(G_OBJECT(pCellRenderer), "toggled", (GCallback)cocher_paye,pListStore);
    g_signal_connect(G_OBJECT(pCellRenderer1), "toggled", (GCallback)cocher_servie,pListStore);
    gtk_main();
 
}