mp3splt-gtk
options_manager.c
Go to the documentation of this file.
1 /**********************************************************
2  *
3  * mp3splt-gtk -- utility based on mp3splt,
4  * for mp3/ogg splitting without decoding
5  *
6  * Copyright: (C) 2005-2012 Alexandru Munteanu
7  * Contact: io_fx@yahoo.fr
8  *
9  * http://mp3splt.sourceforge.net/
10  *
11  *********************************************************/
12 
13 /**********************************************************
14  *
15  * This program is free software; you can redistribute it and/or
16  * modify it under the terms of the GNU General Public License
17  * as published by the Free Software Foundation; either version 2
18  * of the License, or (at your option) any later version.
19  *
20  * This program is distributed in the hope that it will be useful,
21  * but WITHOUT ANY WARRANTY; without even the implied warranty of
22  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23  * GNU General Public License for more details.
24  *
25  * You should have received a copy of the GNU General Public License
26  * along with this program; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
28  * USA.
29  *
30  *********************************************************/
31 
32 /*!********************************************************
33  * \file
34  * Get the current state of all GUI buttons
35  *
36  * The code contained in this file reads out the current
37  * state of all GUI buttons and saves it into the structure
38  * ui->mp3splt_state.
39  ********************************************************/
40 
41 #include "options_manager.h"
42 
51 {
52  lock_mutex(&ui->variables_mutex);
53  mp3splt_set_filename_to_split(ui->mp3splt_state, get_input_filename(ui->gui));
54  unlock_mutex(&ui->variables_mutex);
55 
56  if (get_checked_output_radio_box(ui) == 0)
57  {
58  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_OUTPUT_FILENAMES, SPLT_OUTPUT_FORMAT);
59  const char *data = gtk_entry_get_text(GTK_ENTRY(ui->gui->output_entry));
60  gint error = SPLT_OUTPUT_FORMAT_OK;
61  mp3splt_set_oformat(ui->mp3splt_state, data, &error);
63  }
64  else
65  {
66  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_OUTPUT_FILENAMES, SPLT_OUTPUT_DEFAULT);
67  }
68 }
69 
78 {
79  gui_state *gui = ui->gui;
80 
81  if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gui->frame_mode)))
82  {
83  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_FRAME_MODE, SPLT_TRUE);
84  }
85  else
86  {
87  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_FRAME_MODE, SPLT_FALSE);
88  }
89 
90  if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gui->adjust_mode)))
91  {
92  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_AUTO_ADJUST, SPLT_TRUE);
93  mp3splt_set_float_option(ui->mp3splt_state, SPLT_OPT_PARAM_OFFSET,
94  gtk_spin_button_get_value(GTK_SPIN_BUTTON(gui->spinner_adjust_offset)));
95  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_PARAM_GAP,
96  gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(gui->spinner_adjust_gap)));
97  mp3splt_set_float_option(ui->mp3splt_state, SPLT_OPT_PARAM_THRESHOLD,
98  gtk_spin_button_get_value(GTK_SPIN_BUTTON(gui->spinner_adjust_threshold)));
99  }
100  else
101  {
102  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_AUTO_ADJUST, SPLT_FALSE);
103  }
104 
105  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_INPUT_NOT_SEEKABLE, SPLT_FALSE);
106  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_SPLIT_MODE, SPLT_OPTION_NORMAL_MODE);
107 
108  if (get_split_file_mode_safe(ui) == FILE_MODE_SINGLE)
109  {
110  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_SPLIT_MODE, SPLT_OPTION_NORMAL_MODE);
111  }
112  else
113  {
114  switch (get_selected_split_mode_safe(ui))
115  {
116  case SELECTED_SPLIT_NORMAL:
117  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_SPLIT_MODE, SPLT_OPTION_NORMAL_MODE);
118  break;
119  case SELECTED_SPLIT_WRAP:
120  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_SPLIT_MODE, SPLT_OPTION_WRAP_MODE);
121  break;
122  case SELECTED_SPLIT_TIME:
123  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_SPLIT_MODE, SPLT_OPTION_TIME_MODE);
124  mp3splt_set_float_option(ui->mp3splt_state, SPLT_OPT_SPLIT_TIME,
125  gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(gui->spinner_time)));
126  break;
127  case SELECTED_SPLIT_EQUAL_TIME_TRACKS:
128  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_SPLIT_MODE, SPLT_OPTION_LENGTH_MODE);
129  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_LENGTH_SPLIT_FILE_NUMBER,
130  gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(gui->spinner_equal_tracks)));
131  break;
132  case SELECTED_SPLIT_SILENCE:
133  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_SPLIT_MODE, SPLT_OPTION_SILENCE_MODE);
134  mp3splt_set_float_option(ui->mp3splt_state, SPLT_OPT_PARAM_THRESHOLD,
135  gtk_spin_button_get_value(GTK_SPIN_BUTTON(gui->all_spinner_silence_threshold)));
136  mp3splt_set_float_option(ui->mp3splt_state, SPLT_OPT_PARAM_OFFSET,
137  gtk_spin_button_get_value(GTK_SPIN_BUTTON(gui->all_spinner_silence_offset)));
138  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_PARAM_NUMBER_TRACKS,
139  gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(gui->all_spinner_silence_number_tracks)));
140  mp3splt_set_float_option(ui->mp3splt_state, SPLT_OPT_PARAM_MIN_LENGTH,
141  gtk_spin_button_get_value(GTK_SPIN_BUTTON(gui->all_spinner_silence_minimum)));
142  mp3splt_set_float_option(ui->mp3splt_state, SPLT_OPT_PARAM_MIN_TRACK_LENGTH,
143  gtk_spin_button_get_value(GTK_SPIN_BUTTON(gui->all_spinner_track_minimum)));
144  if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gui->all_silence_remove_silence)))
145  {
146  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_PARAM_REMOVE_SILENCE, SPLT_TRUE);
147  }
148  else
149  {
150  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_PARAM_REMOVE_SILENCE, SPLT_FALSE);
151  }
152  break;
153  case SELECTED_SPLIT_TRIM_SILENCE:
154  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_SPLIT_MODE, SPLT_OPTION_TRIM_SILENCE_MODE);
155  mp3splt_set_float_option(ui->mp3splt_state, SPLT_OPT_PARAM_THRESHOLD,
156  gtk_spin_button_get_value(GTK_SPIN_BUTTON(gui->all_spinner_trim_silence_threshold)));
157  break;
158  case SELECTED_SPLIT_ERROR:
159  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_SPLIT_MODE, SPLT_OPTION_ERROR_MODE);
160  break;
161  default:
162  break;
163  }
164  }
165 
166  gint selected_tags_value = rh_get_active_value(gui->tags_radio);
167  if (selected_tags_value == NO_TAGS)
168  {
169  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_TAGS, SPLT_NO_TAGS);
170  }
171  else if (selected_tags_value == DEFAULT_TAGS)
172  {
173  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_TAGS, SPLT_CURRENT_TAGS);
174  }
175  else if (selected_tags_value == ORIGINAL_FILE_TAGS)
176  {
177  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_TAGS, SPLT_TAGS_ORIGINAL_FILE);
178  }
179  else if (selected_tags_value == TAGS_FROM_FILENAME)
180  {
181  put_tags_from_filename_regex_options(ui);
182  }
183 
184  gint tags_radio_choice = get_checked_tags_version_radio_box(gui);
185  if (tags_radio_choice == 0)
186  {
187  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_FORCE_TAGS_VERSION, 0);
188  }
189  else if (tags_radio_choice == 1)
190  {
191  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_FORCE_TAGS_VERSION, 1);
192  }
193  else if (tags_radio_choice == 2)
194  {
195  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_FORCE_TAGS_VERSION, 2);
196  }
197  else if (tags_radio_choice == 3)
198  {
199  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_FORCE_TAGS_VERSION, 12);
200  }
201 
202  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_CREATE_DIRS_FROM_FILENAMES,
203  gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gui->create_dirs_from_output_files)));
204 }
205 
206 void put_tags_from_filename_regex_options(ui_state *ui)
207 {
208  gui_state *gui = ui->gui;
209 
210  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_TAGS, SPLT_TAGS_FROM_FILENAME_REGEX);
211 
212  gint underscores =
213  gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gui->replace_underscore_by_space_check_box));
214  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_REPLACE_UNDERSCORES_TAG_FORMAT, underscores);
215 
216  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_ARTIST_TAG_FORMAT,
217  ch_get_active_value(gui->artist_text_properties_combo));
218  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_ALBUM_TAG_FORMAT,
219  ch_get_active_value(gui->album_text_properties_combo));
220  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_TITLE_TAG_FORMAT,
221  ch_get_active_value(gui->title_text_properties_combo));
222  mp3splt_set_int_option(ui->mp3splt_state, SPLT_OPT_COMMENT_TAG_FORMAT,
223  ch_get_active_value(gui->comment_text_properties_combo));
224 
225  const gchar *regular_expression = gtk_entry_get_text(GTK_ENTRY(gui->regex_entry));
226  mp3splt_set_input_filename_regex(ui->mp3splt_state, regular_expression);
227 
228  const gchar *default_comment = gtk_entry_get_text(GTK_ENTRY(gui->comment_tag_entry));
229  if (strlen(default_comment) == 0)
230  {
231  default_comment = NULL;
232  }
233  mp3splt_set_default_comment_tag(ui->mp3splt_state, default_comment);
234 
235  mp3splt_set_default_genre_tag(ui->mp3splt_state, ch_get_active_str_value(gui->genre_combo));
236 }
237