rem: gboolean edit_category ( GtkWidget * button, GtkTreeView * view )
add: gboolean edit_category ( GtkTreeView * view )
context: gboolean edit_category ( GtkWidget * button, GtkTreeView * view ){    GtkWidget * dialog, *paddingbox, *table, *label, *entry, *hbox, *radiogroup;    GtkTreeSelection * selection;    GtkTreeModel * model;    GtkTreeIter iter;    gint no_division = -1, no_sub_division = -1;    struct struct_categ * categ = NULL;    struct struct_sous_categ * sous_categ = NULL;    gchar * title;    selection = gtk_tree_view_get_selection ( view );    if ( selection && gtk_tree_selection_get_selected(selection, &model, &iter))    {	gtk_tree_model_get ( model, &iter, 			     META_TREE_POINTER_COLUMN, &categ,			     META_TREE_NO_DIV_COLUMN, &no_division,			     META_TREE_NO_SUB_DIV_COLUMN, &no_sub_division,			     -1 );    }    if ( !selection || no_division <= 0 || ! categ)	return FALSE;    if ( no_sub_division > 0 )    {	sous_categ = (struct struct_sous_categ *) categ;	title = g_strdup_printf ( _("Properties for %s"), sous_categ -> nom_sous_categ );    }    else    {	title = g_strdup_printf ( _("Properties for %s"), categ -> nom_categ );    }    dialog = gtk_dialog_new_with_buttons ( title, GTK_WINDOW (window), GTK_DIALOG_MODAL,					   GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL);    /* Ugly dance to avoid side effects on dialog's vbox. */    hbox = gtk_hbox_new ( FALSE, 0 );    gtk_box_pack_start ( GTK_BOX(GTK_DIALOG(dialog)->vbox), hbox, FALSE, FALSE, 0 );    paddingbox = new_paddingbox_with_title ( hbox, TRUE, title );    gtk_container_set_border_width ( GTK_CONTAINER(hbox), 6 );    gtk_container_set_border_width ( GTK_CONTAINER(paddingbox), 6 );    table = gtk_table_new ( 0, 2, FALSE );    gtk_box_pack_start ( GTK_BOX ( paddingbox ), table, FALSE, FALSE, 6 );    gtk_table_set_col_spacings ( GTK_TABLE(table), 6 );    gtk_table_set_row_spacings ( GTK_TABLE(table), 6 );    /* Name entry */    label = gtk_label_new ( _("Name"));    gtk_misc_set_alignment ( GTK_MISC ( label ), 0.0, 0.5 );    gtk_table_attach ( GTK_TABLE(table), label, 0, 1, 0, 1,		       GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0 );    if ( sous_categ )	entry = new_text_entry ( &(sous_categ -> nom_sous_categ), NULL );    else	entry = new_text_entry ( &(categ -> nom_categ), NULL );    gtk_widget_set_usize ( entry, 400, 0 );    gtk_table_attach ( GTK_TABLE(table), entry, 1, 2, 0, 1, GTK_EXPAND|GTK_FILL, 0, 0, 0 );    if ( ! sous_categ )    {	/* Description entry */	label = gtk_label_new ( _("Type"));	gtk_misc_set_alignment ( GTK_MISC ( label ), 0.0, 0.5 );	gtk_table_attach ( GTK_TABLE(table), label, 0, 1, 1, 2,			   GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0 );	radiogroup = new_radiogroup ( _("Credit"), _("Debit"), &(categ -> type_categ), NULL );	gtk_table_attach ( GTK_TABLE(table), radiogroup, 			   1, 2, 1, 2, GTK_EXPAND|GTK_FILL, 0, 0, 0 );    }    gtk_widget_show_all ( dialog );    free ( title );    gtk_dialog_run ( GTK_DIALOG(dialog) );    gtk_widget_destroy ( dialog );    mise_a_jour_combofix_categ ();    if ( sous_categ )    {	fill_sub_division_row ( model, category_interface,				get_iter_from_div ( model, no_division, no_sub_division ), 				categ_par_no ( no_division ), sous_categ );    }    else    {	fill_division_row ( model, category_interface,			    get_iter_from_div ( model, no_division, -1 ), categ );    }    return TRUE;}