mp3splt-gtk
|
00001 /********************************************************** 00002 * 00003 * mp3splt-gtk -- utility based on mp3splt, 00004 * for mp3/ogg splitting without decoding 00005 * 00006 * Copyright: (C) 2005-2011 Alexandru Munteanu 00007 * Contact: io_fx@yahoo.fr 00008 * 00009 * http://mp3splt.sourceforge.net/ 00010 * 00011 *********************************************************/ 00012 00013 /********************************************************** 00014 * 00015 * This program is free software; you can redistribute it and/or 00016 * modify it under the terms of the GNU General Public License 00017 * as published by the Free Software Foundation; either version 2 00018 * of the License, or (at your option) any later version. 00019 * 00020 * This program is distributed in the hope that it will be useful, 00021 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00022 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00023 * GNU General Public License for more details. 00024 * 00025 * You should have received a copy of the GNU General Public License 00026 * along with this program; if not, write to the Free Software 00027 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 00028 * USA. 00029 * 00030 *********************************************************/ 00031 00032 /*!******************************************************** 00033 * \file 00034 * The batch processing tab 00035 * 00036 * this file is for the special split tab, where automatic 00037 * split modes can be selected 00038 *..*******************************************************/ 00039 00040 #include <gtk/gtk.h> 00041 #include <glib/gi18n.h> 00042 #include <libmp3splt/mp3splt.h> 00043 00044 #include "special_split.h" 00045 #include "preferences_tab.h" 00046 #include "main_win.h" 00047 #include "multiple_files.h" 00048 00049 GtkWidget *time_label = NULL; 00050 GtkWidget *spinner_time = NULL; 00051 00052 GtkWidget *equal_tracks_label = NULL; 00053 GtkWidget *spinner_equal_tracks = NULL; 00054 00055 gint selected_split_mode = SELECTED_SPLIT_NORMAL; 00056 gint split_file_mode = FILE_MODE_SINGLE; 00057 00058 GtkWidget *split_mode_radio_button = NULL; 00059 GtkWidget *file_mode_radio_button = NULL; 00060 00061 GtkWidget *multiple_files_component = NULL; 00062 00063 GtkWidget *all_spinner_silence_number_tracks; 00064 GtkWidget *all_spinner_silence_minimum; 00065 GtkWidget *all_spinner_track_minimum; 00066 GtkWidget *all_spinner_silence_offset; 00067 GtkWidget *all_spinner_silence_threshold; 00068 GtkWidget *all_spinner_trim_silence_threshold; 00069 GtkWidget *all_silence_remove_silence; 00070 00071 GtkWidget *all_threshold_label; 00072 GtkWidget *all_trim_threshold_label; 00073 GtkWidget *all_offset_label; 00074 GtkWidget *all_number_of_tracks_label; 00075 GtkWidget *all_min_silence_label; 00076 GtkWidget *all_min_track_label; 00077 00079 static gint get_selected_split_mode(GtkToggleButton *radio_b) 00080 { 00081 GSList *radio_button_list = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radio_b)); 00082 gint selected = SELECTED_SPLIT_NORMAL; 00083 00084 gint i = 0; 00085 for(i = 0; i < NUMBER_OF_SPLIT_MODES;i++) 00086 { 00087 GtkToggleButton *test = (GtkToggleButton *) g_slist_nth_data(radio_button_list,i); 00088 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(test))) 00089 { 00090 selected = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(test), "split_type_id")); 00091 } 00092 } 00093 00094 return selected; 00095 } 00096 00098 void select_split_mode(int split_mode) 00099 { 00100 GSList *split_mode_radio_button_list = 00101 gtk_radio_button_get_group(GTK_RADIO_BUTTON(split_mode_radio_button)); 00102 00103 gint i = 0; 00104 for(i = 0; i < NUMBER_OF_SPLIT_MODES;i++) 00105 { 00106 GtkToggleButton *test = (GtkToggleButton *) g_slist_nth_data(split_mode_radio_button_list, i); 00107 int id = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(test), "split_type_id")); 00108 if (split_mode == id) 00109 { 00110 gtk_toggle_button_set_active(test, TRUE); 00111 return; 00112 } 00113 } 00114 } 00115 00116 void deactivate_silence_parameters() 00117 { 00118 gtk_widget_set_sensitive(GTK_WIDGET(all_spinner_silence_number_tracks), FALSE); 00119 gtk_widget_set_sensitive(GTK_WIDGET(all_spinner_silence_minimum), FALSE); 00120 gtk_widget_set_sensitive(GTK_WIDGET(all_spinner_track_minimum), FALSE); 00121 gtk_widget_set_sensitive(GTK_WIDGET(all_spinner_silence_offset), FALSE); 00122 gtk_widget_set_sensitive(GTK_WIDGET(all_spinner_silence_threshold), FALSE); 00123 gtk_widget_set_sensitive(GTK_WIDGET(all_silence_remove_silence), FALSE); 00124 gtk_widget_set_sensitive(GTK_WIDGET(all_threshold_label), FALSE); 00125 gtk_widget_set_sensitive(GTK_WIDGET(all_offset_label), FALSE); 00126 gtk_widget_set_sensitive(GTK_WIDGET(all_number_of_tracks_label), FALSE); 00127 gtk_widget_set_sensitive(GTK_WIDGET(all_min_silence_label), FALSE); 00128 gtk_widget_set_sensitive(GTK_WIDGET(all_min_track_label), FALSE); 00129 } 00130 00131 void activate_silence_parameters() 00132 { 00133 gtk_widget_set_sensitive(GTK_WIDGET(all_spinner_silence_number_tracks), TRUE); 00134 gtk_widget_set_sensitive(GTK_WIDGET(all_spinner_silence_minimum), TRUE); 00135 gtk_widget_set_sensitive(GTK_WIDGET(all_spinner_track_minimum), TRUE); 00136 gtk_widget_set_sensitive(GTK_WIDGET(all_spinner_silence_offset), TRUE); 00137 gtk_widget_set_sensitive(GTK_WIDGET(all_spinner_silence_threshold), TRUE); 00138 gtk_widget_set_sensitive(GTK_WIDGET(all_silence_remove_silence), TRUE); 00139 gtk_widget_set_sensitive(GTK_WIDGET(all_threshold_label), TRUE); 00140 gtk_widget_set_sensitive(GTK_WIDGET(all_offset_label), TRUE); 00141 gtk_widget_set_sensitive(GTK_WIDGET(all_number_of_tracks_label), TRUE); 00142 gtk_widget_set_sensitive(GTK_WIDGET(all_min_silence_label), TRUE); 00143 gtk_widget_set_sensitive(GTK_WIDGET(all_min_track_label), TRUE); 00144 } 00145 00146 void deactivate_trim_parameters() 00147 { 00148 gtk_widget_set_sensitive(GTK_WIDGET(all_spinner_trim_silence_threshold), FALSE); 00149 gtk_widget_set_sensitive(GTK_WIDGET(all_trim_threshold_label), FALSE); 00150 } 00151 00152 void activate_trim_parameters() 00153 { 00154 gtk_widget_set_sensitive(GTK_WIDGET(all_spinner_trim_silence_threshold), TRUE); 00155 gtk_widget_set_sensitive(GTK_WIDGET(all_trim_threshold_label), TRUE); 00156 } 00157 00159 void split_mode_changed(GtkToggleButton *radio_b, gpointer data) 00160 { 00161 selected_split_mode = get_selected_split_mode(radio_b); 00162 00163 int enable_time = (selected_split_mode == SELECTED_SPLIT_TIME); 00164 gtk_widget_set_sensitive(GTK_WIDGET(spinner_time), enable_time); 00165 gtk_widget_set_sensitive(GTK_WIDGET(time_label), enable_time); 00166 00167 int enable_split_equal_time = (selected_split_mode == SELECTED_SPLIT_EQUAL_TIME_TRACKS); 00168 gtk_widget_set_sensitive(GTK_WIDGET(spinner_equal_tracks), enable_split_equal_time); 00169 gtk_widget_set_sensitive(GTK_WIDGET(equal_tracks_label), enable_split_equal_time); 00170 00171 if (selected_split_mode == SELECTED_SPLIT_SILENCE) 00172 { 00173 activate_silence_parameters(); 00174 } 00175 else 00176 { 00177 deactivate_silence_parameters(); 00178 } 00179 00180 if (selected_split_mode == SELECTED_SPLIT_TRIM_SILENCE) 00181 { 00182 activate_trim_parameters(); 00183 } 00184 else 00185 { 00186 deactivate_trim_parameters(); 00187 } 00188 00189 save_preferences(NULL, NULL); 00190 } 00191 00193 static void spinner_time_changed(GtkSpinButton *spinner, gpointer data) 00194 { 00195 gint time = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinner)); 00196 gchar time_text[1024] = { '\0' }; 00197 g_snprintf(time_text, 1024, _("\tSplit every %2d seconds."), time); 00198 gtk_label_set_text(GTK_LABEL(time_label), time_text); 00199 00200 save_preferences(NULL, NULL); 00201 } 00202 00204 static void spinner_equal_tracks_changed(GtkSpinButton *spinner, gpointer data) 00205 { 00206 gint equal_tracks = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinner)); 00207 gchar equal_tracks_text[1024] = { '\0' }; 00208 g_snprintf(equal_tracks_text, 1024, _("\tSplit in %2d equal time tracks."), equal_tracks); 00209 gtk_label_set_text(GTK_LABEL(equal_tracks_label), equal_tracks_text); 00210 00211 save_preferences(NULL, NULL); 00212 } 00213 00215 static void split_file_mode_changed(GtkToggleButton *radio_b, gpointer data) 00216 { 00217 GSList *radio_button_list = 00218 gtk_radio_button_get_group(GTK_RADIO_BUTTON(radio_b)); 00219 GtkToggleButton *current_radio_button = (GtkToggleButton *) 00220 g_slist_nth_data(radio_button_list,0); 00221 00222 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(current_radio_button))) 00223 { 00224 split_file_mode = FILE_MODE_MULTIPLE; 00225 gtk_widget_set_sensitive(multiple_files_component, TRUE); 00226 } 00227 else 00228 { 00229 split_file_mode = FILE_MODE_SINGLE; 00230 gtk_widget_set_sensitive(multiple_files_component, FALSE); 00231 } 00232 00233 save_preferences(NULL, NULL); 00234 } 00235 00237 static GtkWidget *create_split_mode() 00238 { 00239 GtkWidget *local_vbox = gtk_vbox_new(FALSE, 0); 00240 gtk_container_set_border_width(GTK_CONTAINER(local_vbox), 5); 00241 00242 //normal split 00243 split_mode_radio_button = gtk_radio_button_new_with_label(NULL, _("Normal")); 00244 gtk_box_pack_start (GTK_BOX (local_vbox), split_mode_radio_button, 00245 FALSE, FALSE, 2); 00246 g_signal_connect(GTK_TOGGLE_BUTTON(split_mode_radio_button), 00247 "toggled", G_CALLBACK (split_mode_changed), NULL); 00248 g_object_set_data(G_OBJECT(split_mode_radio_button), "split_type_id", 00249 GINT_TO_POINTER(SELECTED_SPLIT_NORMAL)); 00250 00251 //time split 00252 split_mode_radio_button = gtk_radio_button_new_with_label_from_widget 00253 (GTK_RADIO_BUTTON(split_mode_radio_button), _("Time")); 00254 gtk_box_pack_start(GTK_BOX(local_vbox), split_mode_radio_button, 00255 FALSE, FALSE, 2); 00256 g_signal_connect(GTK_TOGGLE_BUTTON(split_mode_radio_button), "toggled", 00257 G_CALLBACK(split_mode_changed), NULL); 00258 g_object_set_data(G_OBJECT(split_mode_radio_button), "split_type_id", 00259 GINT_TO_POINTER(SELECTED_SPLIT_TIME)); 00260 00261 // 00262 GtkWidget *horiz_fake = gtk_hbox_new(FALSE,0); 00263 gtk_box_pack_start(GTK_BOX(local_vbox), horiz_fake, FALSE, FALSE, 0); 00264 00265 gint default_time = 60; 00266 00267 gchar time_text[1024] = { '\0' }; 00268 g_snprintf(time_text, 1024, _("\tSplit every %2d seconds."), default_time); 00269 time_label = gtk_label_new(time_text); 00270 gtk_box_pack_start(GTK_BOX(horiz_fake), time_label, FALSE, FALSE, 0); 00271 00272 GtkAdjustment *adj = 00273 (GtkAdjustment *)gtk_adjustment_new(0.0, 1, 2000, 1.0, 10.0, 0.0); 00274 spinner_time = gtk_spin_button_new(adj, 1, 0); 00275 gtk_box_pack_start(GTK_BOX(horiz_fake), spinner_time, FALSE, FALSE, 6); 00276 gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinner_time), default_time); 00277 gtk_widget_set_sensitive(GTK_WIDGET(spinner_time), FALSE); 00278 gtk_widget_set_sensitive(time_label, FALSE); 00279 g_signal_connect(G_OBJECT(spinner_time), "value-changed", 00280 G_CALLBACK(spinner_time_changed), NULL); 00281 00282 //split in equal length 00283 split_mode_radio_button = gtk_radio_button_new_with_label_from_widget 00284 (GTK_RADIO_BUTTON(split_mode_radio_button), _("Equal time tracks")); 00285 gtk_box_pack_start(GTK_BOX(local_vbox), split_mode_radio_button, 00286 FALSE, FALSE, 2); 00287 g_signal_connect(GTK_TOGGLE_BUTTON(split_mode_radio_button), "toggled", 00288 G_CALLBACK(split_mode_changed), NULL); 00289 g_object_set_data(G_OBJECT(split_mode_radio_button), "split_type_id", 00290 GINT_TO_POINTER(SELECTED_SPLIT_EQUAL_TIME_TRACKS)); 00291 00292 // 00293 horiz_fake = gtk_hbox_new(FALSE,0); 00294 gtk_box_pack_start(GTK_BOX(local_vbox), horiz_fake, FALSE, FALSE, 0); 00295 00296 gint default_tracks = 10; 00297 00298 gchar equal_length_text[1024] = { '\0' }; 00299 g_snprintf(equal_length_text, 1024, _("\tSplit in %2d equal time tracks."), default_tracks); 00300 equal_tracks_label = gtk_label_new(time_text); 00301 gtk_box_pack_start(GTK_BOX(horiz_fake), equal_tracks_label, FALSE, FALSE, 0); 00302 00303 adj = (GtkAdjustment *)gtk_adjustment_new(0.0, 1, 2000, 1.0, 10.0, 0.0); 00304 spinner_equal_tracks = gtk_spin_button_new(adj, 1, 0); 00305 gtk_box_pack_start(GTK_BOX(horiz_fake), spinner_equal_tracks, FALSE, FALSE, 6); 00306 gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinner_equal_tracks), default_time); 00307 gtk_widget_set_sensitive(GTK_WIDGET(spinner_equal_tracks), FALSE); 00308 gtk_widget_set_sensitive(equal_tracks_label, FALSE); 00309 g_signal_connect(G_OBJECT(spinner_equal_tracks), "value-changed", 00310 G_CALLBACK(spinner_equal_tracks_changed), NULL); 00311 00312 //trim using silence detection 00313 split_mode_radio_button = gtk_radio_button_new_with_label_from_widget 00314 (GTK_RADIO_BUTTON(split_mode_radio_button), (gchar *)_("Trim using silence detection")); 00315 gtk_box_pack_start(GTK_BOX(local_vbox), split_mode_radio_button, FALSE, FALSE, 2); 00316 g_signal_connect(GTK_TOGGLE_BUTTON(split_mode_radio_button), "toggled", 00317 G_CALLBACK(split_mode_changed), NULL); 00318 g_object_set_data(G_OBJECT(split_mode_radio_button), "split_type_id", 00319 GINT_TO_POINTER(SELECTED_SPLIT_TRIM_SILENCE)); 00320 00321 horiz_fake = gtk_hbox_new(FALSE,0); 00322 gtk_box_pack_start(GTK_BOX(local_vbox), horiz_fake, FALSE, FALSE, 0); 00323 00324 GtkWidget *param_vbox = gtk_vbox_new(FALSE,0); 00325 gtk_box_pack_start(GTK_BOX(horiz_fake), param_vbox, FALSE, FALSE, 25); 00326 00327 horiz_fake = gtk_hbox_new(FALSE,0); 00328 gtk_box_pack_start(GTK_BOX(param_vbox), horiz_fake, FALSE, FALSE, 0); 00329 00330 all_trim_threshold_label = gtk_label_new(_("Threshold level (dB) : ")); 00331 gtk_box_pack_start(GTK_BOX(horiz_fake), all_trim_threshold_label, FALSE, FALSE, 0); 00332 00333 adj = (GtkAdjustment *)gtk_adjustment_new(0.0, -96.0, 0.0, 0.5, 10.0, 0.0); 00334 all_spinner_trim_silence_threshold = gtk_spin_button_new(adj, 0.5, 2); 00335 gtk_box_pack_start(GTK_BOX(horiz_fake), all_spinner_trim_silence_threshold, FALSE, FALSE, 0); 00336 00337 //silence split 00338 split_mode_radio_button = gtk_radio_button_new_with_label_from_widget 00339 (GTK_RADIO_BUTTON(split_mode_radio_button), (gchar *)_("Silence - split with silence detection")); 00340 gtk_box_pack_start(GTK_BOX(local_vbox), split_mode_radio_button, FALSE, FALSE, 2); 00341 g_signal_connect(GTK_TOGGLE_BUTTON(split_mode_radio_button), "toggled", 00342 G_CALLBACK(split_mode_changed), NULL); 00343 g_object_set_data(G_OBJECT(split_mode_radio_button), "split_type_id", 00344 GINT_TO_POINTER(SELECTED_SPLIT_SILENCE)); 00345 00346 horiz_fake = gtk_hbox_new(FALSE,0); 00347 gtk_box_pack_start(GTK_BOX(local_vbox), horiz_fake, FALSE, FALSE, 0); 00348 00349 param_vbox = gtk_vbox_new(FALSE,0); 00350 gtk_box_pack_start(GTK_BOX(horiz_fake), param_vbox, FALSE, FALSE, 25); 00351 00352 horiz_fake = gtk_hbox_new(FALSE,0); 00353 gtk_box_pack_start(GTK_BOX(param_vbox), horiz_fake, FALSE, FALSE, 0); 00354 00355 all_threshold_label = gtk_label_new(_("Threshold level (dB) : ")); 00356 gtk_box_pack_start(GTK_BOX(horiz_fake), all_threshold_label, FALSE, FALSE, 0); 00357 00358 adj = (GtkAdjustment *)gtk_adjustment_new(0.0, -96.0, 0.0, 0.5, 10.0, 0.0); 00359 all_spinner_silence_threshold = gtk_spin_button_new(adj, 0.5, 2); 00360 gtk_box_pack_start(GTK_BOX(horiz_fake), all_spinner_silence_threshold, FALSE, FALSE, 0); 00361 00362 horiz_fake = gtk_hbox_new(FALSE,0); 00363 gtk_box_pack_start(GTK_BOX(param_vbox), horiz_fake, FALSE, FALSE, 0); 00364 00365 all_offset_label = gtk_label_new(_("Cutpoint offset (0 is the begin of silence,and 1 the end) : ")); 00366 gtk_box_pack_start(GTK_BOX(horiz_fake), all_offset_label, FALSE, FALSE, 0); 00367 00368 adj = (GtkAdjustment *)gtk_adjustment_new(0.0, -2, 2, 0.05, 10.0, 0.0); 00369 all_spinner_silence_offset = gtk_spin_button_new(adj, 0.05, 2); 00370 gtk_box_pack_start(GTK_BOX(horiz_fake), all_spinner_silence_offset, FALSE, FALSE, 0); 00371 00372 horiz_fake = gtk_hbox_new(FALSE,0); 00373 gtk_box_pack_start(GTK_BOX(param_vbox), horiz_fake, FALSE, FALSE, 0); 00374 00375 all_number_of_tracks_label = gtk_label_new(_("Number of tracks (0 means all tracks) : ")); 00376 gtk_box_pack_start(GTK_BOX(horiz_fake), all_number_of_tracks_label, FALSE, FALSE, 0); 00377 00378 adj = (GtkAdjustment *)gtk_adjustment_new(0.0, 0, 2000, 1, 10.0, 0.0); 00379 all_spinner_silence_number_tracks = gtk_spin_button_new(adj, 1, 0); 00380 gtk_box_pack_start(GTK_BOX(horiz_fake), all_spinner_silence_number_tracks, FALSE, FALSE, 0); 00381 00382 horiz_fake = gtk_hbox_new(FALSE,0); 00383 gtk_box_pack_start(GTK_BOX(param_vbox), horiz_fake, FALSE, FALSE, 0); 00384 00385 all_min_silence_label = gtk_label_new(_("Minimum silence length (seconds) : ")); 00386 gtk_box_pack_start(GTK_BOX(horiz_fake), all_min_silence_label, FALSE, FALSE, 0); 00387 00388 adj = (GtkAdjustment *)gtk_adjustment_new(0.0, 0, 2000, 0.5, 10.0, 0.0); 00389 all_spinner_silence_minimum = gtk_spin_button_new(adj, 1, 2); 00390 gtk_box_pack_start(GTK_BOX(horiz_fake), all_spinner_silence_minimum, FALSE, FALSE, 0); 00391 00392 horiz_fake = gtk_hbox_new(FALSE,0); 00393 gtk_box_pack_start(GTK_BOX(param_vbox), horiz_fake, FALSE, FALSE, 0); 00394 00395 all_min_track_label = gtk_label_new(_("Minimum track length (seconds) : ")); 00396 gtk_box_pack_start(GTK_BOX(horiz_fake), all_min_track_label, FALSE, FALSE, 0); 00397 00398 adj = (GtkAdjustment *)gtk_adjustment_new(0.0, 0, 2000, 0.5, 10.0, 0.0); 00399 all_spinner_track_minimum = gtk_spin_button_new(adj, 1, 2); 00400 gtk_box_pack_start(GTK_BOX(horiz_fake), all_spinner_track_minimum, FALSE, FALSE, 0); 00401 00402 all_silence_remove_silence = 00403 gtk_check_button_new_with_label(_("Remove silence between tracks")); 00404 gtk_box_pack_start(GTK_BOX(param_vbox), all_silence_remove_silence, FALSE, FALSE, 0); 00405 00406 gtk_spin_button_set_value(GTK_SPIN_BUTTON(all_spinner_silence_number_tracks), 00407 SPLT_DEFAULT_PARAM_TRACKS); 00408 gtk_spin_button_set_value(GTK_SPIN_BUTTON(all_spinner_silence_minimum), 00409 SPLT_DEFAULT_PARAM_MINIMUM_LENGTH); 00410 gtk_spin_button_set_value(GTK_SPIN_BUTTON(all_spinner_silence_offset), 00411 SPLT_DEFAULT_PARAM_OFFSET); 00412 gtk_spin_button_set_value(GTK_SPIN_BUTTON(all_spinner_silence_threshold), 00413 SPLT_DEFAULT_PARAM_THRESHOLD); 00414 00415 gtk_spin_button_set_value(GTK_SPIN_BUTTON(all_spinner_trim_silence_threshold), 00416 SPLT_DEFAULT_PARAM_THRESHOLD); 00417 00418 deactivate_silence_parameters(); 00419 deactivate_trim_parameters(); 00420 00421 //wrap split 00422 split_mode_radio_button = gtk_radio_button_new_with_label_from_widget 00423 (GTK_RADIO_BUTTON(split_mode_radio_button), 00424 _("Wrap - split files created with mp3wrap or albumwrap (mp3 only)")); 00425 gtk_box_pack_start(GTK_BOX(local_vbox), split_mode_radio_button, 00426 FALSE, FALSE, 2); 00427 g_signal_connect(GTK_TOGGLE_BUTTON(split_mode_radio_button), "toggled", 00428 G_CALLBACK(split_mode_changed), NULL); 00429 g_object_set_data(G_OBJECT(split_mode_radio_button), "split_type_id", 00430 GINT_TO_POINTER(SELECTED_SPLIT_WRAP)); 00431 00432 //error mode split 00433 split_mode_radio_button = gtk_radio_button_new_with_label_from_widget 00434 (GTK_RADIO_BUTTON(split_mode_radio_button), _("Error mode (mp3 only)")); 00435 gtk_box_pack_start(GTK_BOX(local_vbox), split_mode_radio_button, 00436 FALSE, FALSE, 2); 00437 g_signal_connect(GTK_TOGGLE_BUTTON(split_mode_radio_button), "toggled", 00438 G_CALLBACK(split_mode_changed), NULL); 00439 g_object_set_data(G_OBJECT(split_mode_radio_button), "split_type_id", 00440 GINT_TO_POINTER(SELECTED_SPLIT_ERROR)); 00441 00442 select_split_mode(SELECTED_SPLIT_NORMAL); 00443 00444 GtkWidget *scrolled_window = create_scrolled_window(); 00445 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_window), 00446 GTK_WIDGET(local_vbox)); 00447 00448 return scrolled_window; 00449 } 00450 00452 static GtkWidget *create_single_multiple_split_modes() 00453 { 00454 GtkWidget *local_vbox = gtk_vbox_new(FALSE, 0); 00455 gtk_container_set_border_width(GTK_CONTAINER(local_vbox), 5); 00456 00457 //single file 00458 file_mode_radio_button = 00459 gtk_radio_button_new_with_label(NULL, _("Single file")); 00460 gtk_box_pack_start(GTK_BOX(local_vbox), file_mode_radio_button, 00461 FALSE, FALSE, 2); 00462 g_signal_connect(GTK_TOGGLE_BUTTON(file_mode_radio_button), 00463 "toggled", G_CALLBACK(split_file_mode_changed), NULL); 00464 00465 //multiple files 00466 file_mode_radio_button = gtk_radio_button_new_with_label_from_widget 00467 (GTK_RADIO_BUTTON(file_mode_radio_button), _("Batch processing")); 00468 gtk_box_pack_start(GTK_BOX(local_vbox), file_mode_radio_button, 00469 FALSE, FALSE, 2); 00470 g_signal_connect(GTK_TOGGLE_BUTTON(file_mode_radio_button), 00471 "toggled", G_CALLBACK(split_file_mode_changed), NULL); 00472 00473 GtkWidget *multiple_files_hbox = gtk_hbox_new(FALSE, 0); 00474 gtk_box_pack_start(GTK_BOX(local_vbox), multiple_files_hbox, TRUE, TRUE, 2); 00475 00476 multiple_files_component = create_multiple_files_component(); 00477 gtk_widget_set_sensitive(multiple_files_component, FALSE); 00478 gtk_box_pack_start(GTK_BOX(multiple_files_hbox), multiple_files_component, 00479 TRUE, TRUE, 20); 00480 00481 GtkWidget *scrolled_window = create_scrolled_window(); 00482 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_window), 00483 GTK_WIDGET(local_vbox)); 00484 00485 return scrolled_window; 00486 } 00487 00489 GtkWidget *create_special_split_page() 00490 { 00491 GtkWidget *vbox = gtk_vbox_new(FALSE, 0);; 00492 00493 /* tabbed notebook */ 00494 GtkWidget *notebook = gtk_notebook_new(); 00495 gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 0); 00496 gtk_notebook_popup_enable(GTK_NOTEBOOK(notebook)); 00497 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(notebook), TRUE); 00498 gtk_notebook_set_show_border(GTK_NOTEBOOK(notebook), FALSE); 00499 gtk_notebook_set_scrollable(GTK_NOTEBOOK(notebook), TRUE); 00500 00501 GtkWidget *notebook_label = gtk_label_new(_("Split mode")); 00502 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), create_split_mode(), 00503 (GtkWidget *)notebook_label); 00504 00505 notebook_label = gtk_label_new(_("File mode")); 00506 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), 00507 create_single_multiple_split_modes(), (GtkWidget *)notebook_label); 00508 00509 return vbox; 00510 } 00511