rem: g_object_set_data ( G_OBJECT ( assistant ), "next1", 2 );
add: gsb_assistant_set_next ( assistant, IMPORT_FILESEL_PAGE, IMPORT_CSV_PAGE ); gsb_assistant_set_prev ( assistant, IMPORT_RESUME_PAGE, IMPORT_CSV_PAGE );
context: gboolean import_select_file ( GtkWidget * button, GtkWidget * assistant ){    GtkWidget * dialog;    dialog = gtk_file_chooser_dialog_new ( _("Choose files to import."),					   NULL, GTK_FILE_CHOOSER_ACTION_OPEN,					   GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,					   GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,					   NULL );    gtk_file_chooser_set_select_multiple ( GTK_FILE_CHOOSER ( dialog ), TRUE );    if ( gtk_dialog_run ( GTK_DIALOG (dialog ) ) == GTK_RESPONSE_ACCEPT )    {	GSList * filenames, * iterator;	GtkTreeModel * model;	filenames = gtk_file_chooser_get_filenames ( GTK_FILE_CHOOSER ( dialog ) );	iterator = filenames;		model = g_object_get_data ( G_OBJECT ( assistant ), "model" );		while ( iterator && model )	{	    GtkTreeIter iter;	    enum import_type type = autodetect_file_type ( iterator -> data, NULL, NULL );	    gtk_tree_store_append ( GTK_TREE_STORE ( model ), &iter, NULL );	    gtk_tree_store_set ( GTK_TREE_STORE ( model ), &iter, 				 IMPORT_FILESEL_SELECTED, TRUE,				 IMPORT_FILESEL_TYPENAME, type_string_representation (type),				 IMPORT_FILESEL_FILENAME, iterator -> data,				 IMPORT_FILESEL_TYPE, type,				 -1 ); 	    /* CSV is special because it needs configuration, so we	     * add a conditional jump there. */	    if ( type == TYPE_CSV )	    {		g_object_set_data ( G_OBJECT ( assistant ), "next1", 2 );	    }	    if ( type != TYPE_UNKNOWN )	    {		/* A valid file was selected, so we can now go ahead. */		gtk_widget_set_sensitive ( g_object_get_data ( assistant, "button_next" ), 					   TRUE );	    }	    iterator = iterator -> next;	}		if ( filenames )	{	    g_slist_free ( filenames );	}    }    gtk_widget_destroy ( dialog );    return FALSE;}