rem: gtk_tree_store_set (GTK_TREE_STORE (categ_tree_model), &iter_categ, CATEGORY_TREE_TEXT_COLUMN, text[0], CATEGORY_TREE_POINTER_COLUMN, categ, CATEGORY_TREE_BALANCE_COLUMN, text[1], CATEGORY_TREE_XALIGN_COLUMN, 1.0, CATEGORY_TREE_NO_CATEG_COLUMN, categ -> no_categ, CATEGORY_TREE_NO_SUB_CATEG_COLUMN, -1, CATEGORY_TREE_FONT_COLUMN, 800, -1);
add: fill_categ_row ( &iter_categ, categ, place_categ + 1 );
context: void remplit_arbre_categ ( void ){    gchar *text[4];    GSList *liste_categ_tmp;    gint place_categ;    gint i;    GtkTreeIter iter_categ, iter_sous_categ, dumb_iter;    /*   efface l'ancien arbre */    gtk_tree_store_clear ( GTK_TREE_STORE (categ_tree_model) );    /*   le devise est choisie dans les paramètres */    p_tab_nom_de_compte_variable = p_tab_nom_de_compte;    if ( !devise_compte	 ||	 devise_compte -> no_devise != no_devise_totaux_tiers )	devise_compte = devise_par_no ( no_devise_totaux_tiers );    /* calcule les montants des catég et sous categ */    calcule_total_montant_categ ();    /* remplit l'arbre */    liste_categ_tmp = liste_struct_categories;    place_categ = 0;    while ( liste_categ_tmp )    {	struct struct_categ *categ;	GSList *liste_sous_categ_tmp;	gint place_sous_categ;	categ = liste_categ_tmp -> data;	if ( etat.affiche_nb_ecritures_listes	     &&	     nb_ecritures_par_categ[place_categ+1] )	    text[0] = g_strconcat ( categ -> nom_categ,				    " (",				    itoa ( nb_ecritures_par_categ[place_categ+1] ),				    ")",				    NULL );	else	    text[0] = categ -> nom_categ ;	if ( tab_montant_categ[place_categ+1] )	    text[1] = g_strdup_printf ( _("%4.2f %s"),					tab_montant_categ[place_categ+1],					devise_code ( devise_compte ) );	else	    text[1] = NULL;	text[2] = NULL;	text[3] = NULL;	/* Populate tree */	gtk_tree_store_append (GTK_TREE_STORE (categ_tree_model), &iter_categ, NULL);	gtk_tree_store_set (GTK_TREE_STORE (categ_tree_model), &iter_categ,			    CATEGORY_TREE_TEXT_COLUMN, text[0],			    CATEGORY_TREE_POINTER_COLUMN, categ,			    CATEGORY_TREE_BALANCE_COLUMN, text[1],			    CATEGORY_TREE_XALIGN_COLUMN, 1.0,			    CATEGORY_TREE_NO_CATEG_COLUMN, categ -> no_categ,			    CATEGORY_TREE_NO_SUB_CATEG_COLUMN, -1,			    CATEGORY_TREE_FONT_COLUMN, 800,			    -1);	/*       pour chaque categ, on met ses sous-categ */	liste_sous_categ_tmp = categ -> liste_sous_categ;	place_sous_categ = 0;	while ( liste_sous_categ_tmp )	{	    struct struct_sous_categ *sous_categ;	    gboolean children = FALSE;	    sous_categ = liste_sous_categ_tmp -> data;	    if ( tab_montant_sous_categ[place_categ]		 &&		 tab_montant_sous_categ[place_categ][place_sous_categ+1]		 &&		 etat.affiche_nb_ecritures_listes		 &&		 nb_ecritures_par_sous_categ[place_categ][place_sous_categ+1] )		{		    text[0] = g_strconcat ( sous_categ -> nom_sous_categ,					    " (",					    itoa ( nb_ecritures_par_sous_categ[place_categ][place_sous_categ+1] ),					    ")",					    NULL );		    children = TRUE;		}	    else		text[0] = sous_categ -> nom_sous_categ ;	    text[1] = NULL;	    if ( tab_montant_sous_categ[place_categ]		 &&		 tab_montant_sous_categ[place_categ][place_sous_categ+1] )		text[2] = g_strdup_printf ( _("%4.2f %s"),					    tab_montant_sous_categ[place_categ][place_sous_categ+1],					    devise_code ( devise_compte ) );	    else		text[2] = NULL;	    text[3] = NULL;	    /* Populate tree */	    gtk_tree_store_append (GTK_TREE_STORE (categ_tree_model), &iter_sous_categ, &iter_categ);	    gtk_tree_store_set (GTK_TREE_STORE (categ_tree_model), &iter_sous_categ,				CATEGORY_TREE_TEXT_COLUMN, text[0],				CATEGORY_TREE_POINTER_COLUMN, sous_categ,				CATEGORY_TREE_BALANCE_COLUMN, text[2],				CATEGORY_TREE_XALIGN_COLUMN, 1.0,				CATEGORY_TREE_NO_CATEG_COLUMN, categ -> no_categ,				CATEGORY_TREE_NO_SUB_CATEG_COLUMN, sous_categ -> no_sous_categ,				CATEGORY_TREE_FONT_COLUMN, 400,				-1);	    if ( children )	    {		gtk_tree_store_append (GTK_TREE_STORE (categ_tree_model), &dumb_iter, &iter_sous_categ);	    }	    place_sous_categ++;	    liste_sous_categ_tmp = liste_sous_categ_tmp -> next;	}	/*       on a fini de saisir les sous catégories, s'il y avait des opés sans sous catég, on les mets ici */	if ( tab_montant_sous_categ[place_categ]	     &&	     nb_ecritures_par_sous_categ[place_categ][0])	{	    if ( etat.affiche_nb_ecritures_listes )		text[0] = g_strdup_printf ( _("No sub-category (%d)"),					    nb_ecritures_par_sous_categ[place_categ][0] );	    else		text[0] = g_strdup ( _("No sub-category"));	    text[1] = NULL;	    if ( tab_montant_sous_categ[place_categ][0] )		text[2] = g_strdup_printf ( _("%4.2f %s"),					    tab_montant_sous_categ[place_categ][0],					    devise_code ( devise_compte ) );	    else		text[2] = NULL;	    text[3] = NULL;	    /* Populate tree */	    gtk_tree_store_append (GTK_TREE_STORE (categ_tree_model), &iter_sous_categ, &iter_categ);	    gtk_tree_store_set (GTK_TREE_STORE (categ_tree_model), &iter_sous_categ,				CATEGORY_TREE_TEXT_COLUMN, text[0],				CATEGORY_TREE_POINTER_COLUMN, NULL,				CATEGORY_TREE_BALANCE_COLUMN, text[2],				CATEGORY_TREE_XALIGN_COLUMN, 1.0,				CATEGORY_TREE_NO_CATEG_COLUMN, categ -> no_categ,				CATEGORY_TREE_NO_SUB_CATEG_COLUMN, -1,				CATEGORY_TREE_FONT_COLUMN, 400,				-1);	}	place_categ++;	liste_categ_tmp = liste_categ_tmp -> next;    }    /*   on a fini de mettre les catégories, on met ici les opés sans catég */    if ( tab_montant_categ[0] )    {	if ( etat.affiche_nb_ecritures_listes	     &&	     nb_ecritures_par_categ[0] )	    text[0] = g_strdup_printf ( _("No category (%d)"),					nb_ecritures_par_categ[0] );	else	    text[0] = _("No category");	text[1] = g_strdup_printf ( _("%4.2f %s"),				    tab_montant_categ[0],				    devise_code ( devise_compte ) );	text[2] = NULL;	text[3] = NULL;	/* Populate tree */	gtk_tree_store_append (GTK_TREE_STORE (categ_tree_model), &iter_categ, NULL);	gtk_tree_store_set (GTK_TREE_STORE (categ_tree_model), &iter_categ,			    CATEGORY_TREE_TEXT_COLUMN, text[0],			    CATEGORY_TREE_POINTER_COLUMN, NULL,			    CATEGORY_TREE_BALANCE_COLUMN, text[1],			    CATEGORY_TREE_XALIGN_COLUMN, 1.0,			    CATEGORY_TREE_NO_CATEG_COLUMN, -1,			    CATEGORY_TREE_NO_SUB_CATEG_COLUMN, -1,			    CATEGORY_TREE_FONT_COLUMN, 800,			    -1);	/* on met aucune sous categ */	if ( etat.affiche_nb_ecritures_listes	     &&	     nb_ecritures_par_categ[0] )	    text[0] = g_strdup_printf ( _("No sub-category (%d)"),					nb_ecritures_par_categ[0]);	else	    text[0] = _("No sub-category");	text[1] = NULL;	text[2] = g_strdup_printf ( _("%4.2f %s"),				    tab_montant_categ[0],				    devise_code ( devise_compte ) );	text[3] = NULL;	/* Populate tree */	gtk_tree_store_append (GTK_TREE_STORE (categ_tree_model), &iter_sous_categ, &iter_categ);	gtk_tree_store_set (GTK_TREE_STORE (categ_tree_model), &iter_sous_categ,			    CATEGORY_TREE_TEXT_COLUMN, text[0],			    CATEGORY_TREE_POINTER_COLUMN, NULL,			    CATEGORY_TREE_BALANCE_COLUMN, text[2],			    CATEGORY_TREE_XALIGN_COLUMN, 1.0,			    CATEGORY_TREE_NO_CATEG_COLUMN, -1,			    CATEGORY_TREE_NO_SUB_CATEG_COLUMN, -1,			    CATEGORY_TREE_FONT_COLUMN, 400,			    -1 );    }    /*   on efface les variables */    free ( tab_montant_categ );    free ( nb_ecritures_par_categ );    for ( i=0 ; i<nb_enregistrements_categories ; i++ )	free ( tab_montant_sous_categ[i] );    free ( tab_montant_sous_categ );    for ( i=0 ; i<nb_enregistrements_categories ; i++ )	free ( nb_ecritures_par_sous_categ[i] );    free ( nb_ecritures_par_sous_categ );    enleve_selection_ligne_categ ();    modif_categ = 0;}