35 #include <libmp3splt/mp3splt.h>
42 #include <audacious/audctrl.h>
43 #include <audacious/dbus.h>
56 void (*update_spinner_value_cb)(GtkWidget *spinner, gpointer data);
57 gpointer user_data_for_cb;
65 void (*update_adjustment_value)(GtkAdjustment *adjustment, gpointer data);
66 gpointer user_data_for_cb;
70 GArray *spinner_int_preferences;
71 GArray *range_preferences;
100 gchar *browser_directory;
102 GList *text_options_list;
105 gint number_of_silence_points;
106 gint malloced_num_of_silence_points;
110 gint player_hundr_secs;
113 gint player_seconds2;
114 gint player_minutes2;
115 gint player_hundr_secs2;
121 gint width_drawing_area;
123 gfloat zoom_coeff_old;
126 gint tens_of_secs_th;
132 gint one_minute_time;
133 gint three_minutes_time;
134 gint six_minutes_time;
135 gint ten_minutes_time;
136 gint twenty_minutes_time;
137 gint fourty_minutes_time;
139 GArray *preview_time_windows;
141 GPtrArray *filtered_points_presence;
142 gint silence_wave_number_of_points_threshold;
144 gint selected_player;
146 gdouble douglas_peucker_thresholds[6];
147 gdouble douglas_peucker_thresholds_defaults[6];
149 gint debug_is_active;
151 gfloat silence_threshold_value;
152 gfloat silence_offset_value;
153 gint silence_number_of_tracks;
154 gfloat silence_minimum_length;
155 gfloat silence_minimum_track_length;
156 gboolean silence_remove_silence_between_tracks;
158 gint freedb_table_number;
159 gint playlist_tree_number;
160 gint multiple_files_tree_number;
162 gint freedb_selected_id;
164 splt_freedb_results *freedb_search_results;
166 gint split_file_mode;
168 GString *outputdirname;
177 const gchar *song_artist;
178 const gchar *song_title;
182 gint _gstreamer_is_running;
186 DBusGProxy *dbus_proxy;
187 DBusGConnection *dbus_connection;
205 GtkActionGroup *action_group;
206 GtkWidget *open_file_chooser_button;
207 GString *input_filename;
209 GtkWidget *player_box;
210 GtkWidget *playlist_box;
212 GtkWidget *song_name_label;
213 GtkWidget *song_infos;
214 GtkWidget *label_time;
216 GtkAdjustment *progress_adj;
217 GtkWidget *progress_bar;
219 GtkTreeView *tree_view;
221 GtkWidget *drawing_area;
222 GtkProgressBar *percent_progress_bar;
223 GtkWidget *drawing_area_expander;
227 gint real_erase_split_length;
228 gint real_move_split_length;
229 gint real_checkbox_length;
230 gint real_wave_length;
232 gint erase_split_ylimit;
233 gint progress_ylimit;
234 gint splitpoint_ypos;
239 GPtrArray *wave_quality_das;
240 GtkWidget *player_scrolled_window;
242 GtkStatusbar *status_bar;
244 GtkWidget *add_button;
245 GtkWidget *remove_row_button;
246 GtkWidget *remove_all_button;
248 GtkTextTagTable *mess_hist_tag_table;
249 GtkTextBuffer *mess_hist_buffer;
251 GtkToggleButton *names_from_filename;
253 GtkWidget *pause_button;
255 GtkBox *player_buttons_hbox;
258 GtkWidget *Go_BegButton_active;
259 GtkWidget *Go_BegButton_inactive;
260 GtkWidget *Go_EndButton_active;
261 GtkWidget *Go_EndButton_inactive;
262 GtkWidget *PlayButton_active;
263 GtkWidget *PlayButton_inactive;
264 GtkWidget *StopButton_active;
265 GtkWidget *StopButton_inactive;
266 GtkWidget *PauseButton_active;
267 GtkWidget *PauseButton_inactive;
270 GtkWidget *play_button;
271 GtkWidget *stop_button;
272 GtkWidget *player_add_button;
273 GtkWidget *go_beg_button;
274 GtkWidget *go_end_button;
276 GtkWidget *connect_button;
277 GtkWidget *disconnect_button;
279 GtkWidget *silence_wave_check_button;
281 GtkWidget *cancel_button;
283 GtkWidget *volume_button;
285 GtkTreeView *playlist_tree;
287 GtkWidget *playlist_remove_file_button;
288 GtkWidget *playlist_remove_all_files_button;
290 GtkWidget *frame_mode;
291 GtkWidget *adjust_mode;
293 GtkWidget *spinner_adjust_offset;
294 GtkWidget *spinner_adjust_gap;
295 GtkWidget *spinner_adjust_min;
296 GtkWidget *spinner_adjust_threshold;
298 GtkWidget *adjust_param_vbox;
300 GtkWidget *spinner_time;
301 GtkWidget *spinner_equal_tracks;
303 GtkWidget *all_spinner_silence_number_tracks;
304 GtkWidget *all_spinner_silence_minimum;
305 GtkWidget *all_spinner_track_minimum;
306 GtkWidget *all_spinner_silence_offset;
307 GtkWidget *all_spinner_trim_silence_threshold;
308 GtkWidget *all_spinner_silence_threshold;
309 GtkWidget *all_silence_remove_silence;
311 GtkWidget *all_threshold_label;
312 GtkWidget *all_trim_threshold_label;
313 GtkWidget *all_offset_label;
314 GtkWidget *all_number_of_tracks_label;
315 GtkWidget *all_min_silence_label;
316 GtkWidget *all_min_track_label;
318 GtkWidget *tags_radio;
319 GtkWidget *tags_version_radio;
321 GtkWidget *output_dir_radio;
322 GtkWidget *custom_dir_file_chooser_button;
323 GtkWidget *example_output_dir_entry;
324 GtkWidget *example_output_dir_box;
326 GtkWidget *replace_underscore_by_space_check_box;
327 GtkComboBox *artist_text_properties_combo;
328 GtkComboBox *album_text_properties_combo;
329 GtkComboBox *title_text_properties_combo;
330 GtkComboBox *comment_text_properties_combo;
331 GtkComboBox *genre_combo;
332 GtkWidget *comment_tag_entry;
333 GtkWidget *regex_entry;
334 GtkWidget *test_regex_fname_entry;
335 GtkWidget *sample_result_label;
336 GtkWidget *extract_tags_box;
338 GtkWidget *create_dirs_from_output_files;
340 GtkWidget *output_entry;
341 GtkWidget *output_label;
342 GtkWidget *output_default_label;
344 GtkTreeView *split_tree;
346 GtkWidget *spinner_minutes;
347 GtkWidget *spinner_seconds;
348 GtkWidget *spinner_hundr_secs;
350 GtkWidget *scan_trim_silence_button;
351 GtkWidget *scan_trim_silence_button_player;
352 GtkWidget *scan_silence_button;
353 GtkWidget *scan_silence_button_player;
355 GtkWidget *spinner_silence_number_tracks;
356 GtkWidget *spinner_silence_minimum;
357 GtkWidget *spinner_silence_minimum_track;
358 GtkWidget *spinner_silence_offset;
359 GtkWidget *spinner_silence_threshold;
360 GtkWidget *silence_remove_silence;
362 GtkWidget *queue_files_button;
363 GtkWidget *remove_file_button;
364 GtkWidget *remove_all_files_button;
366 GtkWidget *freedb_entry;
367 GtkWidget *freedb_search_button;
368 GtkWidget *freedb_spinner;
369 GtkTreeView *freedb_tree;
370 GtkWidget *freedb_add_button;
372 GtkWidget *radio_output;
374 GtkWidget *split_mode_radio_button;
376 GtkWidget *time_label;
377 GtkWidget *time_label_after;
378 GtkWidget *equal_tracks_label;
379 GtkWidget *equal_tracks_label_after;
381 GtkWidget *multiple_files_component;
383 GtkWidget *player_combo_box;
384 GtkWidget *radio_button;
386 GPtrArray *wave_preview_labels;
388 GtkWidget *mess_history_window;
389 GtkWidget *mess_hist_view;
391 GtkTreeView *multiple_files_tree;
393 GtkWidget *multiple_files_remove_file_button;
394 GtkWidget *multiple_files_remove_all_files_button;
396 GtkWidget *preferences_widget;
397 GtkWidget *preferences_window;
399 GtkWidget *split_files_widget;
400 GtkWidget *split_files_window;
402 GtkWidget *freedb_widget;
403 GtkWidget *freedb_window;
405 GtkWidget *splitpoints_widget;
406 GtkWidget *splitpoints_window;
411 gint process_in_progress;
412 gint mouse_on_progress_bar;
413 gint currently_compute_douglas_peucker_filters;
414 gint show_silence_wave;
416 gboolean timer_active;
418 gint quick_preview_end_splitpoint;
419 gint preview_start_splitpoint;
423 gboolean button1_pressed;
424 gboolean button2_pressed;
425 gboolean quick_preview;
432 gboolean move_splitpoints;
433 gint splitpoint_to_move;
434 gboolean remove_splitpoints;
435 gboolean select_splitpoints;
436 gboolean check_splitpoint;
438 gint first_splitpoint_selected;
442 gint spin_hundr_secs;
444 gchar current_description[255];
446 gint preview_start_position;
450 gint currently_scanning_for_silence;
452 gchar *filename_to_split;
454 gint douglas_callback_counter;
458 gint only_press_pause;
460 gboolean change_volume;
461 gboolean on_the_volume_button;
464 gint selected_split_mode;
468 gint file_selection_changed;
472 long previous_first_time_drawed;
473 gint previous_first_x_drawed;
474 long previous_second_time_drawed;
475 gint previous_second_x_drawed;
476 GHashTable *previous_distance_by_time;
477 gfloat previous_zoom_coeff;
478 gint previous_interpolation_level;
480 gint lock_cue_export;
483 #define SPLT_MUTEX GStaticMutex
490 splt_state *mp3splt_state;
497 GPtrArray *files_to_split;
499 SPLT_MUTEX variables_mutex;
501 int importing_cue_from_configuration_directory;