47 #include <sys/types.h>
49 #include <glib/gi18n.h>
61 #include "special_split.h"
63 #include "utilities.h"
66 #include "snackamp_control.h"
67 #include "split_files.h"
68 #include "preferences_tab.h"
69 #include "multiple_files.h"
70 #include "preferences_manager.h"
71 #include "player_tab.h"
73 #include "mp3splt-gtk.h"
75 #include "ui_manager.h"
81 GtkWidget *progress_bar;
86 extern gchar *filename_to_split;
87 extern gchar *filename_path_of_split;
97 extern GtkWidget *spinner_adjust_offset;
99 extern GtkWidget *spinner_adjust_threshold;
101 extern GtkWidget *create_dirs_from_output_files;
107 extern GtkWidget *spinner_silence_minimum;
116 extern GtkWidget *spinner_time;
119 extern gint selected_player;
122 extern gint we_are_splitting;
124 extern gint we_quit_main_program;
126 extern GtkWidget *percent_progress_bar;
129 extern GtkWidget *cancel_button;
136 extern gint split_file_mode;
137 extern GtkWidget *multiple_files_tree;
138 extern gint multiple_files_tree_number;
141 gint split_files = 0;
163 gint fname_status_size = (strlen(filename) + 255);
164 gchar *fname_status = g_malloc(
sizeof(
char) * fname_status_size);
165 g_snprintf(fname_status, fname_status_size,
166 _(
" File '%s' created"), filename);
175 while (gtk_events_pending())
177 gtk_main_iteration();
188 gchar progress_text[1024] =
" ";
193 g_snprintf(progress_text,1023, _(
" preparing \"%s\" (%d of %d)"),
199 g_snprintf(progress_text,1023, _(
" creating \"%s\" (%d of %d)"),
205 g_snprintf(progress_text,1023, _(
" searching for sync errors..."));
208 g_snprintf(progress_text,1023,
209 _(
"S: %02d, Level: %.2f dB; scanning for silence..."),
213 g_snprintf(progress_text,1023,
" ");
217 gchar printed_value[1024] = {
'\0' };
221 gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(percent_progress_bar),
226 gtk_progress_bar_set_text(GTK_PROGRESS_BAR(percent_progress_bar),
230 while (gtk_events_pending())
232 gtk_main_iteration();
243 gint confirmation = SPLT_OK;
257 if ((mp3splt_get_int_option(the_state,
SPLT_OPT_TAGS, &err) !=
260 mp3splt_erase_all_tags(the_state,&err);
269 gchar *format = strdup(gtk_entry_get_text(GTK_ENTRY(
output_entry)));
272 mp3splt_set_oformat(the_state, format, &err);
280 gint output_filenames =
292 if (split_file_mode == FILE_MODE_SINGLE)
305 confirmation = mp3splt_split(the_state);
309 if (multiple_files_tree_number > 0)
313 gchar *filename = NULL;
316 GtkTreeModel *model =
317 gtk_tree_view_get_model(GTK_TREE_VIEW(multiple_files_tree));
322 while (row_number < multiple_files_tree_number)
331 path = gtk_tree_path_new_from_indices(row_number ,-1);
332 gtk_tree_model_get_iter(model, &iter, path);
333 gtk_tree_model_get(model, &iter, MULTIPLE_COL_FILENAME,
341 confirmation = mp3splt_split(the_state);
349 if (confirmation < 0)
358 mp3splt_erase_all_tags(the_state, &err);
387 gtk_widget_set_sensitive(GTK_WIDGET(cancel_button), FALSE);
390 if (we_quit_main_program)
395 if (confirmation >= 0 && !multiple_files_error)
397 gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(percent_progress_bar), 1.0);
398 gtk_progress_bar_set_text(GTK_PROGRESS_BAR(percent_progress_bar),
402 we_are_splitting = FALSE;
421 gboolean sigint_called = FALSE;
427 sigint_called = TRUE;
428 we_quit_main_program = TRUE;
436 gchar *mess = g_strdup(message);
441 for (i = 0;i < strlen(mess);i++)
453 while (gtk_events_pending())
455 gtk_main_iteration();
466 GThread *create_thread(GThreadFunc func, gpointer data,
467 gboolean joinable, GError **error)
474 return g_thread_create(func, data, joinable, error);
511 gint
main(gint argc, gchar *argv[], gchar **envp)
534 setlocale (LC_ALL,
"");
535 textdomain (
"mp3splt-gtk");
538 char mp3splt_uninstall_file[2048] = {
'\0' };
539 DWORD dwType, dwSize =
sizeof(mp3splt_uninstall_file) - 1;
540 SHGetValue(HKEY_LOCAL_MACHINE,
541 TEXT(
"SOFTWARE\\mp3splt-gtk"),
542 TEXT(
"UninstallString"),
544 mp3splt_uninstall_file,
547 gchar *end = strrchr(mp3splt_uninstall_file, SPLT_DIRCHAR);
548 if (end) { *end =
'\0'; }
550 gchar *executable_dir = NULL;
551 gchar *executable = strdup(argv[0]);
553 end = strrchr(executable, SPLT_DIRCHAR);
557 executable_dir = executable;
561 if (mp3splt_uninstall_file[0] !=
'\0')
563 executable_dir = mp3splt_uninstall_file;
567 bindtextdomain(MP3SPLT_LIB_GETTEXT_DOMAIN,
"translations");
568 bindtextdomain(
"mp3splt-gtk",
"translations");
571 bindtextdomain(
"mp3splt-gtk", LOCALEDIR);
574 bind_textdomain_codeset(
"mp3splt-gtk",
"UTF-8");
578 gtk_init(&argc, &argv);
583 while ((OptionChar = getopt (argc, argv,
"d:")) != -1)
587 fprintf (stderr, _(
"Trying to set the output directory to %s.\n"), optarg);
596 fprintf(stderr,_(
"Error: The specified output directory is inaccessible!\n"));
602 fprintf (stderr, _(
"Option -%c requires an argument.\n"), optopt);
603 else if (isprint (optopt))
604 fprintf (stderr, _(
"Unknown option `-%c'.\n"), optopt);
607 _(
"Unknown option character `\\x%x'.\n"),
629 mp3splt_set_int_option(the_state,
634 if (executable != NULL)
636 if (executable[0] !=
'\0')
638 g_setenv(
"GST_PLUGIN_PATH",
".\\", TRUE);
639 mp3splt_append_plugins_scan_dir(the_state, executable);
647 error = mp3splt_find_plugins(the_state);
659 _(
"Cannot open input file %s\n"),
680 mp3splt_free_state(the_state, &error);