X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/6eb145f67d6a8d3958b15ab380e5c03a13c4d2fe..9e90c3a511d4ea403d07522fb41d9f44328ecaa0:/src/vikfilelist.c diff --git a/src/vikfilelist.c b/src/vikfilelist.c index 8ed372ca..6bd3529e 100644 --- a/src/vikfilelist.c +++ b/src/vikfilelist.c @@ -34,6 +34,7 @@ struct _VikFileList { GtkWidget *treeview; GtkWidget *file_selector; GtkTreeModel *model; + GtkFileFilter *filter; }; static void file_list_add ( VikFileList *vfl ) @@ -54,6 +55,9 @@ 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 ) { @@ -150,12 +154,18 @@ GType vik_file_list_get_type (void) 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) ); @@ -199,7 +209,7 @@ static gboolean get_file_name(GtkTreeModel *model, GtkTreePath *path, GtkTreeIte 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; }