43 #include <glib/gi18n.h>
45 #include "player_tab.h"
47 #include "freedb_tab.h"
49 #include "options_manager.h"
50 #include "mp3splt-gtk.h"
51 #include "utilities.h"
52 #include "ui_manager.h"
53 #include "widgets_helper.h"
58 static void set_import_filters(GtkFileChooser *chooser);
59 static void build_import_filter(GtkFileChooser *chooser,
60 const gchar *filter_name,
const gchar *filter_pattern,
61 const gchar *filter_pattern_upper,
62 GList **filters, GtkFileFilter *all_filter);
63 static gpointer add_audacity_labels_splitpoints(gpointer data);
64 static gpointer add_cddb_splitpoints(gpointer data);
65 static gpointer add_cue_splitpoints(gpointer data);
70 GtkWidget *file_chooser =
71 gtk_file_chooser_dialog_new(_(
"Choose file to import"),
73 GTK_FILE_CHOOSER_ACTION_OPEN,
80 wh_set_browser_directory_handler(ui, file_chooser);
82 set_import_filters(GTK_FILE_CHOOSER(file_chooser));
84 if (gtk_dialog_run(GTK_DIALOG(file_chooser)) == GTK_RESPONSE_ACCEPT)
87 gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(file_chooser));
97 gtk_widget_destroy(file_chooser);
106 if (filename == NULL)
111 gchar *ext = strrchr(filename,
'.');
112 GString *ext_str = g_string_new(ext);
114 g_string_ascii_up(ext_str);
116 if ((strstr(ext_str->str,
".MP3") != NULL) ||
117 (strstr(ext_str->str,
".OGG") != NULL))
119 file_chooser_ok_event(filename);
122 else if ((strstr(ext_str->str,
".CUE") != NULL))
125 create_thread(add_cue_splitpoints, strdup(filename), TRUE, NULL);
127 else if ((strstr(ext_str->str,
".CDDB") != NULL))
130 create_thread(add_cddb_splitpoints, strdup(filename), TRUE, NULL);
132 else if ((strstr(ext_str->str,
".TXT") != NULL))
134 create_thread(add_audacity_labels_splitpoints, strdup(filename), TRUE, NULL);
139 g_string_free(ext_str, FALSE);
144 static void set_import_filters(GtkFileChooser *chooser)
146 GtkFileFilter *all_filter = gtk_file_filter_new();
147 gtk_file_filter_set_name(GTK_FILE_FILTER(all_filter),
148 _(
"CDDB (*.cddb), CUE (*.cue), Audacity labels (*.txt)"));
150 GList *filters = NULL;
152 build_import_filter(chooser, _(
"CDDB files (*.cddb)"),
"*.cddb",
"*.CDDB",
153 &filters, all_filter);
154 build_import_filter(chooser, _(
"CUE files (*.cue)"),
"*.cue",
"*.CUE",
155 &filters, all_filter);
156 build_import_filter(chooser, _(
"Audacity labels files (*.txt)"),
"*.txt",
"*.TXT",
157 &filters, all_filter);
158 build_import_filter(chooser, _(
"All files"),
"*", NULL, &filters, NULL);
160 gtk_file_chooser_add_filter(chooser, all_filter);
163 for (iter = filters; iter != NULL; iter = g_list_next(iter))
165 gtk_file_chooser_add_filter(chooser, iter->data);
169 static void build_import_filter(GtkFileChooser *chooser,
170 const gchar *filter_name,
const gchar *filter_pattern,
171 const gchar *filter_pattern_upper,
172 GList **filters, GtkFileFilter *all_filter)
174 GtkFileFilter *filter = gtk_file_filter_new();
175 gtk_file_filter_set_name(GTK_FILE_FILTER(filter), filter_name);
177 gtk_file_filter_add_pattern(GTK_FILE_FILTER(filter), filter_pattern);
179 if (filter_pattern_upper)
181 gtk_file_filter_add_pattern(GTK_FILE_FILTER(filter), filter_pattern_upper);
186 gtk_file_filter_add_pattern(GTK_FILE_FILTER(all_filter), filter_pattern);
187 if (filter_pattern_upper)
189 gtk_file_filter_add_pattern(GTK_FILE_FILTER(all_filter), filter_pattern_upper);
193 *filters = g_list_append(*filters, filter);
200 static gpointer add_audacity_labels_splitpoints(gpointer data)
202 gchar *filename = data;
205 mp3splt_put_audacity_labels_splitpoints_from_file(the_state, filename, &err);
228 static gpointer add_cddb_splitpoints(gpointer data)
230 gchar *filename = data;
233 mp3splt_put_cddb_splitpoints_from_file(the_state, filename, &err);
255 static gpointer add_cue_splitpoints(gpointer data)
257 gchar *filename = data;
261 mp3splt_put_cue_splitpoints_from_file(the_state, filename, &err);