GtkWidget *treeview;
GtkWidget *file_selector;
GtkTreeModel *model;
+ GtkFileFilter *filter;
};
static void file_list_add ( VikFileList *vfl )
gtk_file_chooser_set_select_multiple ( GTK_FILE_CHOOSER(vfl->file_selector), TRUE );
gtk_window_set_transient_for ( GTK_WINDOW(vfl->file_selector), GTK_WINDOW(win) );
gtk_window_set_destroy_with_parent ( GTK_WINDOW(vfl->file_selector), TRUE );
+
+ if ( vfl->filter )
+ gtk_file_chooser_add_filter ( GTK_FILE_CHOOSER(vfl->file_selector), vfl->filter );
}
if ( gtk_dialog_run ( GTK_DIALOG(vfl->file_selector) ) == GTK_RESPONSE_ACCEPT ) {
return vs_type;
}
-GtkWidget *vik_file_list_new ( const gchar *title )
+/**
+ * Support just one filter, as that's all that's needed ATM
+ * Probably need to use a GList of them if more than one is required
+ */
+GtkWidget *vik_file_list_new ( const gchar *title, GtkFileFilter *filter )
{
GtkWidget *add_btn, *del_btn;
GtkWidget *hbox, *scrolledwindow;
VikFileList *vfl = VIK_FILE_LIST ( g_object_new ( VIK_FILE_LIST_TYPE, NULL ) );
+ vfl->filter = filter;
+
GtkTreeViewColumn *column;
vfl->model = GTK_TREE_MODEL ( gtk_list_store_new(1, G_TYPE_STRING) );
gchar *str;
gtk_tree_model_get ( model, iter, 0, &str, -1 );
g_debug ("%s: %s", __FUNCTION__, str);
- (*list) = g_list_append((*list), g_strdup(str));
+ (*list) = g_list_append((*list), str); // NB str is already a copy
return FALSE;
}