*
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include <gtk/gtk.h>
+#include <glib/gi18n.h>
#include "vikfilelist.h"
-#include "vikfileentry.h"
struct _VikFileList {
GtkVBox parent;
- VikFileEntry *file_entry;
GtkWidget *treeview;
+ GtkWidget *file_selector;
GtkTreeModel *model;
};
static void file_list_add ( VikFileList *vfl )
{
- GtkTreeIter iter;
- gtk_list_store_append ( GTK_LIST_STORE(vfl->model), &iter );
- gtk_list_store_set ( GTK_LIST_STORE(vfl->model), &iter, 0, vik_file_entry_get_filename(vfl->file_entry), -1 );
+ GSList *files = NULL;
+ GSList *fiter = NULL;
+
+ if ( ! vfl->file_selector )
+ {
+ GtkWidget *win;
+ g_assert ( (win = gtk_widget_get_toplevel(GTK_WIDGET(vfl))) );
+ vfl->file_selector = gtk_file_chooser_dialog_new (_("Choose file(s)"),
+ GTK_WINDOW(win),
+ 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(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 ( gtk_dialog_run ( GTK_DIALOG(vfl->file_selector) ) == GTK_RESPONSE_ACCEPT ) {
+ files = gtk_file_chooser_get_filenames (GTK_FILE_CHOOSER(vfl->file_selector) );
+ fiter = files;
+ GtkTreeIter iter;
+ while ( fiter ) {
+ gchar *file_name = fiter->data;
+
+ gtk_list_store_append ( GTK_LIST_STORE(vfl->model), &iter );
+ gtk_list_store_set ( GTK_LIST_STORE(vfl->model), &iter, 0, file_name, -1 );
+
+ g_free (file_name);
+
+ fiter = g_slist_next (fiter);
+ }
+ g_slist_free (files);
+ }
+ gtk_widget_hide ( vfl->file_selector );
}
static void file_list_del ( VikFileList *vfl )
gtk_widget_set_size_request ( vfl->treeview, 200, 100);
- vfl->file_entry = VIK_FILE_ENTRY(vik_file_entry_new());
- add_btn = gtk_button_new_with_label("Add");
- del_btn = gtk_button_new_with_label("Delete");
+ add_btn = gtk_button_new_with_label(_("Add..."));
+ del_btn = gtk_button_new_with_label(_("Delete"));
g_signal_connect_swapped ( G_OBJECT(add_btn), "clicked", G_CALLBACK(file_list_add), vfl );
g_signal_connect_swapped ( G_OBJECT(del_btn), "clicked", G_CALLBACK(file_list_del), vfl );
gtk_box_pack_start ( GTK_BOX(vfl), scrolledwindow, TRUE, TRUE, 3 );
- gtk_box_pack_start ( GTK_BOX(hbox), GTK_WIDGET(vfl->file_entry), TRUE, TRUE, 3 );
gtk_box_pack_start ( GTK_BOX(hbox), add_btn, TRUE, TRUE, 3 );
gtk_box_pack_start ( GTK_BOX(hbox), del_btn, TRUE, TRUE, 3 );
gtk_box_pack_start ( GTK_BOX(vfl), hbox, FALSE, FALSE, 3 );
gtk_widget_show_all(GTK_WIDGET(vfl));
+ vfl->file_selector = NULL;
return GTK_WIDGET(vfl);
}
{
gchar *str;
gtk_tree_model_get ( model, iter, 0, &str, -1 );
- printf("%s\n\n\n", str);
+ g_debug ("%s: %s", __FUNCTION__, str);
(*list) = g_list_append((*list), g_strdup(str));
return FALSE;
}