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
|
typedef struct page{
gint index;
GtkWidget *HugeHbox;
GtkWidget *FiltresVbox, *PicVbox, *ResultVbox;
GtkWidget *OriginalPic, *ResultPic;
GtkWidget *TabLabel;
}page;
GList *pages = NULL;
// Fonction de création de nouvel onglet :
void cb_new (GtkWidget *p_widget, gpointer user_data)
{
// Déclaration des variables :
page *newp = NULL;
apli *app = NULL;
// On récupére l'application :
app = (apli*)malloc(sizeof(apli));
app = user_data;
// On crée une nouvelle page :
newp = (page*)malloc(sizeof(page));
newp->index = 0;
newp->HugeHbox = gtk_hbox_new(TRUE,0);
newp->FiltresVbox = gtk_vbox_new(TRUE,0);
newp->PicVbox = gtk_vbox_new(TRUE,0);
newp->ResultVbox = gtk_vbox_new(TRUE,0);
newp->OriginalPic = gtk_image_new_from_file("Pics/test_image13.jpg");
newp->ResultPic = gtk_image_new_from_file("Pics/test_image13.jpg");;
newp->TabLabel = create_label(g_strdup_printf("Doc %d", app->index));
app->index ++;
// On place les éléments dans les box correspondantes :
gtk_box_pack_start(GTK_BOX(newp->PicVbox), newp->OriginalPic, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(newp->ResultVbox), newp->ResultPic, FALSE, FALSE, 0);
// On empile les boxs :
gtk_box_pack_start(GTK_BOX(newp->HugeHbox), newp->FiltresVbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(newp->HugeHbox), newp->PicVbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(newp->HugeHbox), newp->ResultVbox, FALSE, FALSE, 0);
// On met la hugeHbox dans l'onglet :
newp->index = gtk_notebook_append_page(GTK_NOTEBOOK(app->notebook), newp->HugeHbox, newp->TabLabel);
// On affiche le tout :
gtk_notebook_set_current_page(GTK_NOTEBOOK(app->notebook), newp->index - 1);
gtk_widget_show_all(GTK_WIDGET(app->notebook));
// Ajout de la page au document :
g_list_append(app->pages, newp);
printf("page : %d\n", newp->index);
free(newp);
newp = NULL;
Pause(2);
newp = g_list_nth_data(app->pages, 0);
// C'est la que ca plante (erreur acces memoire)
printf("page : %d\n", newp->index);
} |
Partager