1
|
1 /*
|
3
|
2 XMMS-SID - SIDPlay input plugin for X MultiMedia System (XMMS)
|
1
|
3
|
|
4 Configuration dialog
|
|
5
|
3
|
6 Written by Matti "ccr" Hamalainen <ccr@tnsp.org>
|
1
|
7
|
|
8 This program is free software; you can redistribute it and/or modify
|
|
9 it under the terms of the GNU General Public License as published by
|
|
10 the Free Software Foundation; either version 2 of the License, or
|
|
11 (at your option) any later version.
|
|
12
|
|
13 This program is distributed in the hope that it will be useful,
|
|
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16 GNU General Public License for more details.
|
|
17
|
|
18 You should have received a copy of the GNU General Public License
|
|
19 along with this program; if not, write to the Free Software
|
|
20 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
21 */
|
3
|
22 #include <xmms/configfile.h>
|
|
23 #include <stdio.h>
|
1
|
24 #include "xmms-sid.h"
|
3
|
25 #include "xs_config.h"
|
|
26 #include "xs_glade.h"
|
|
27 #include "xs_interface.h"
|
1
|
28
|
|
29
|
|
30 /*
|
3
|
31 * Global widgets
|
1
|
32 */
|
3
|
33 static GtkWidget *xs_configwin = NULL;
|
1
|
34
|
|
35
|
|
36 /*
|
|
37 * Configuration specific stuff
|
|
38 */
|
3
|
39 #define XS_CFGTABLE_MAX 25
|
|
40
|
|
41 t_xs_cfg_item xs_cfgtable[XS_CFGTABLE_MAX] = {
|
|
42 {ATYPE_INT, &xs_cfg.fmtBitsPerSample, "bitsPerSample"},
|
|
43 {ATYPE_INT, &xs_cfg.fmtChannels, "channels"},
|
|
44 {ATYPE_INT, &xs_cfg.fmtFrequency, "frequency"},
|
|
45
|
|
46 {ATYPE_BOOL,&xs_cfg.muffledOutput, "muffledOutput"},
|
|
47 {ATYPE_BOOL,&xs_cfg.addStaticNoise, "addStaticNoise"},
|
|
48
|
1
|
49
|
3
|
50 {ATYPE_BOOL, &xs_cfg.mos8580, "mos8580"},
|
|
51 {ATYPE_BOOL, &xs_cfg.emulateFilter, "emulateFilter"},
|
|
52 {ATYPE_FLOAT, &xs_cfg.filterFs, "filterFs"},
|
|
53 {ATYPE_FLOAT, &xs_cfg.filterFm, "filterFm"},
|
|
54 {ATYPE_FLOAT, &xs_cfg.filterFt, "filterFt"},
|
|
55 {ATYPE_INT, &xs_cfg.memoryMode, "memoryMode"},
|
|
56 {ATYPE_INT, &xs_cfg.clockSpeed, "clockSpeed"},
|
|
57 {ATYPE_BOOL, &xs_cfg.forceSpeed, "forceSpeed"},
|
|
58
|
|
59
|
|
60 {ATYPE_BOOL,&xs_cfg.playUseMaxTime, "playUseMaxTime"},
|
|
61 {ATYPE_INT, &xs_cfg.playMaxTime, "playMaxTime"},
|
|
62 {ATYPE_INT, &xs_cfg.playMethod, "playMethod"},
|
|
63 {ATYPE_INT, &xs_cfg.playMaxSilentTime, "playMaxSilentTime"},
|
|
64 {ATYPE_INT, &xs_cfg.playSilentPercent, "playSilentPercent"},
|
|
65 {ATYPE_STR, &xs_cfg.playDBPath, "playDBPath"},
|
|
66
|
|
67
|
|
68 {ATYPE_BOOL,&xs_cfg.useSTIL, "useSTIL"},
|
|
69 {ATYPE_STR, &xs_cfg.STILpath, "STILpath"},
|
|
70
|
|
71 {ATYPE_BOOL, &xs_cfg.finfoUseColors, "useColors"},
|
|
72 {ATYPE_BOOL,&xs_cfg.detectMagic, "detectMagic"},
|
|
73
|
|
74
|
|
75 {ATYPE_BOOL, &xs_cfg.titleOverride, "titleOverride"},
|
|
76 {ATYPE_STR, &xs_cfg.titleFormat, "fileInfo"}
|
1
|
77 };
|
|
78
|
|
79
|
3
|
80 /*
|
|
81 * Reset the filter settings
|
|
82 */
|
|
83 void xs_reset_filters(void)
|
|
84 {
|
|
85 /* Reset filter values */
|
|
86 // FIXME FIX ME
|
|
87 /*
|
|
88 xs_cfg.filterFs = XMMS_SID_DEFAULT_FILTERFS;
|
|
89 xs_cfg.filterFm = XMMS_SID_DEFAULT_FILTERFM;
|
|
90 xs_cfg.filterFt = XMMS_SID_DEFAULT_FILTERFT;
|
|
91 */
|
|
92 }
|
|
93
|
1
|
94
|
|
95 /*
|
|
96 * Get the configuration (from file or default)
|
|
97 */
|
|
98 void xs_get_configure(void)
|
|
99 {
|
|
100 gchar *cfg_fn, *tmpstr;
|
|
101 ConfigFile *cfg_file;
|
|
102 gint i;
|
3
|
103
|
|
104 XSDEBUG("initializing configuration ...\n");
|
|
105
|
1
|
106 /* Pre-initialize configuration structure */
|
3
|
107 xs_cfg.fmtBitsPerSample = 16;
|
|
108 xs_cfg.fmtChannels = XMMS_SID_CHN_MONO;
|
|
109 xs_cfg.fmtFrequency = 44100;
|
|
110
|
|
111 xs_cfg.muffledOutput = FALSE;
|
|
112 xs_cfg.addStaticNoise = FALSE;
|
|
113
|
|
114
|
|
115 xs_cfg.mos8580 = FALSE;
|
|
116 xs_cfg.emulateFilter = TRUE;
|
|
117 xs_reset_filters();
|
|
118 xs_cfg.memoryMode = XMMS_SID_MPU_BANK_SWITCHING;
|
|
119 xs_cfg.clockSpeed = XMMS_SID_CLOCK_PAL;
|
|
120 xs_cfg.forceSpeed = FALSE;
|
|
121
|
1
|
122
|
3
|
123 xs_cfg.playUseMaxTime = FALSE;
|
|
124 xs_cfg.playMaxTime = 150;
|
|
125 xs_cfg.playMethod = XMMS_SID_PMETHOD_NONE;
|
|
126 xs_cfg.playMaxSilentTime = 20;
|
|
127 xs_cfg.playSilentPercent = 3;
|
|
128 xs_strcalloc(&xs_cfg.playDBPath, "~/C64Music/Songlength.txt");
|
|
129
|
|
130
|
|
131 xs_cfg.useSTIL = FALSE;
|
|
132 xs_strcalloc(&xs_cfg.STILpath, "~/C64Music/DOCUMENTS/STIL.txt");
|
1
|
133
|
3
|
134 xs_cfg.finfoUseColors = TRUE;
|
|
135 xs_cfg.detectMagic = FALSE;
|
|
136
|
|
137
|
|
138 xs_cfg.titleOverride = FALSE;
|
|
139 xs_strcalloc(&xs_cfg.titleFormat, "%1 - %2");
|
|
140
|
|
141
|
1
|
142 /* Try to open the XMMS configuration file */
|
3
|
143 XSDEBUG("loading from config-file ...\n");
|
|
144
|
1
|
145 cfg_fn = g_strconcat(g_get_home_dir(), "/.xmms/config", NULL);
|
|
146 cfg_file = xmms_cfg_open_file(cfg_fn);
|
|
147 g_free(cfg_fn);
|
3
|
148 if (cfg_file == NULL) return;
|
|
149
|
1
|
150
|
|
151 /* Read the new settings from XMMS configuration file */
|
3
|
152 for (i = 0; i < XS_CFGTABLE_MAX; i++) {
|
1
|
153
|
|
154 switch (xs_cfgtable[i].atype) {
|
3
|
155 case ATYPE_INT:
|
|
156 xmms_cfg_read_int(cfg_file, XMMS_SID_CONFIG_IDENT, xs_cfgtable[i].aname, (gint *) xs_cfgtable[i].adata);
|
|
157 break;
|
|
158
|
|
159 case ATYPE_BOOL:
|
|
160 xmms_cfg_read_boolean(cfg_file, XMMS_SID_CONFIG_IDENT, xs_cfgtable[i].aname, (gboolean *) xs_cfgtable[i].adata);
|
|
161 break;
|
|
162
|
|
163 case ATYPE_FLOAT:
|
|
164 xmms_cfg_read_float(cfg_file, XMMS_SID_CONFIG_IDENT, xs_cfgtable[i].aname, (gfloat *) xs_cfgtable[i].adata);
|
|
165 break;
|
1
|
166
|
3
|
167 case ATYPE_STR:
|
|
168 if (xmms_cfg_read_string(cfg_file, XMMS_SID_CONFIG_IDENT, xs_cfgtable[i].aname, (gchar **) &tmpstr))
|
|
169 {
|
|
170 /* Read was successfull */
|
|
171 xs_strcalloc((gchar **) xs_cfgtable[i].adata, tmpstr);
|
|
172 g_free(tmpstr);
|
|
173 }
|
|
174 break;
|
1
|
175
|
3
|
176 default:
|
|
177 XSERR("Internal: Unsupported setting type found while reading configuration file. Please report to author!\n");
|
|
178 break;
|
1
|
179 }
|
3
|
180 }
|
1
|
181
|
|
182
|
|
183 /* Free the config file */
|
|
184 xmms_cfg_free(cfg_file);
|
3
|
185
|
|
186 XSDEBUG("OK\n");
|
1
|
187 }
|
|
188
|
|
189
|
|
190 /*
|
|
191 * Configuration panel was canceled
|
|
192 */
|
|
193 void xs_configure_cancel(void)
|
|
194 {
|
|
195 gtk_widget_destroy(xs_configwin);
|
3
|
196 xs_configwin = NULL;
|
1
|
197 }
|
|
198
|
|
199
|
|
200 /*
|
|
201 * Configuration was accepted (OK), save the settings
|
|
202 */
|
|
203 void xs_configure_ok(void)
|
|
204 {
|
|
205 ConfigFile *cfg_file;
|
|
206 gchar *cfg_fn;
|
|
207 gint i;
|
3
|
208
|
|
209 XSDEBUG("get data from widgets to config...\n");
|
|
210
|
|
211 /* Check the resolution settings */
|
1
|
212 if (GTK_TOGGLE_BUTTON(cfg_res_16bit)->active)
|
3
|
213 xs_cfg.fmtBitsPerSample = 16;
|
1
|
214 else if (GTK_TOGGLE_BUTTON(cfg_res_8bit)->active)
|
3
|
215 xs_cfg.fmtBitsPerSample = 8;
|
1
|
216
|
3
|
217
|
|
218 /* Channel settings */
|
1
|
219 if (GTK_TOGGLE_BUTTON(cfg_chn_mono)->active)
|
3
|
220 xs_cfg.fmtChannels = XMMS_SID_CHN_MONO;
|
1
|
221 else if (GTK_TOGGLE_BUTTON(cfg_chn_stereo)->active)
|
3
|
222 xs_cfg.fmtChannels = XMMS_SID_CHN_STEREO;
|
1
|
223 else if (GTK_TOGGLE_BUTTON(cfg_chn_autopan)->active)
|
3
|
224 xs_cfg.fmtChannels = XMMS_SID_CHN_AUTOPAN;
|
|
225
|
|
226 /* Frequency setting */
|
|
227 xs_cfg.fmtFrequency = (gint) GTK_ADJUSTMENT(cfg_samplerate_adj)->value;
|
|
228
|
|
229 /* Experimental settings */
|
|
230 xs_cfg.muffledOutput = GTK_TOGGLE_BUTTON(cfg_muffledoutput)->active;
|
|
231 xs_cfg.addStaticNoise = GTK_TOGGLE_BUTTON(cfg_addstaticnoise)->active;
|
|
232
|
|
233
|
|
234 /* Filter and waveform settings */
|
|
235 xs_cfg.mos8580 = ((GTK_TOGGLE_BUTTON(cfg_wav_mos8580)->active) && (!GTK_TOGGLE_BUTTON(cfg_wav_mos6581)->active));
|
|
236
|
|
237 xs_cfg.emulateFilter = GTK_TOGGLE_BUTTON(cfg_emufilters)->active;
|
|
238
|
|
239 xs_cfg.filterFs = GTK_ADJUSTMENT(cfg_filt_fs_adj)->value;
|
|
240 xs_cfg.filterFm = GTK_ADJUSTMENT(cfg_filt_fm_adj)->value;
|
|
241 xs_cfg.filterFt = GTK_ADJUSTMENT(cfg_filt_ft_adj)->value;
|
|
242
|
1
|
243
|
|
244 /* Memorymode settings */
|
|
245 if (GTK_TOGGLE_BUTTON(cfg_mem_banksw)->active)
|
|
246 xs_cfg.memoryMode = XMMS_SID_MPU_BANK_SWITCHING;
|
|
247 else if (GTK_TOGGLE_BUTTON(cfg_mem_transrom)->active)
|
|
248 xs_cfg.memoryMode = XMMS_SID_MPU_TRANSPARENT_ROM;
|
|
249 else if (GTK_TOGGLE_BUTTON(cfg_mem_playsid)->active)
|
|
250 xs_cfg.memoryMode = XMMS_SID_MPU_PLAYSID_ENVIRONMENT;
|
|
251
|
3
|
252
|
1
|
253 /* Clockspeed settings */
|
|
254 if (GTK_TOGGLE_BUTTON(cfg_clock_pal)->active)
|
|
255 xs_cfg.clockSpeed = XMMS_SID_CLOCK_PAL;
|
|
256 else if (GTK_TOGGLE_BUTTON(cfg_clock_ntsc)->active)
|
|
257 xs_cfg.clockSpeed = XMMS_SID_CLOCK_NTSC;
|
|
258
|
|
259 xs_cfg.forceSpeed = GTK_TOGGLE_BUTTON(cfg_clock_force)->active;
|
|
260
|
|
261
|
3
|
262 /* Songlength-detection settings */
|
|
263 xs_cfg.playUseMaxTime = GTK_TOGGLE_BUTTON(cfg_sld_usemaxtime)->active;
|
|
264 xs_cfg.playMaxTime = GTK_ADJUSTMENT(cfg_sld_maxtime_adj)->value;
|
|
265
|
|
266 if (GTK_TOGGLE_BUTTON(cfg_sld_none)->active)
|
|
267 xs_cfg.playMethod = XMMS_SID_PMETHOD_NONE;
|
|
268 else if (GTK_TOGGLE_BUTTON(cfg_sld_maxsilence)->active)
|
|
269 xs_cfg.playMethod = XMMS_SID_PMETHOD_MAXSILENCE;
|
|
270 else if (GTK_TOGGLE_BUTTON(cfg_sld_database)->active)
|
|
271 xs_cfg.playMethod = XMMS_SID_PMETHOD_DATABASE;
|
|
272
|
|
273 xs_cfg.playMaxSilentTime = GTK_ADJUSTMENT(cfg_sld_silencetime_adj)->value;
|
|
274 xs_cfg.playSilentPercent = GTK_ADJUSTMENT(cfg_sld_percentage_adj)->value;
|
|
275
|
|
276 xs_strcalloc(&xs_cfg.playDBPath, gtk_entry_get_text(GTK_ENTRY(cfg_sld_dbpath)));
|
|
277
|
|
278
|
|
279 /* STIL and miscellaneous settings */
|
|
280 xs_cfg.useSTIL = GTK_TOGGLE_BUTTON(cfg_stil_use)->active;
|
1
|
281
|
3
|
282 xs_strcalloc(&xs_cfg.STILpath, gtk_entry_get_text(GTK_ENTRY(cfg_stil_path)));
|
|
283
|
|
284 xs_cfg.finfoUseColors = GTK_TOGGLE_BUTTON(cfg_finfo_usecolors)->active;
|
|
285 xs_cfg.detectMagic = GTK_TOGGLE_BUTTON(cfg_detectmagic)->active;
|
|
286
|
|
287
|
|
288 /* Title settings */
|
|
289 xs_cfg.titleOverride = GTK_TOGGLE_BUTTON(cfg_ftitle_override)->active;
|
1
|
290
|
3
|
291 xs_strcalloc(&xs_cfg.titleFormat, gtk_entry_get_text(GTK_ENTRY(cfg_ftitle_format)));
|
|
292
|
1
|
293
|
3
|
294 /*
|
|
295 * Try to open the XMMS configuration file
|
|
296 */
|
|
297 cfg_fn = g_strconcat(g_get_home_dir(), "/.xmms/config", NULL);
|
1
|
298 cfg_file = xmms_cfg_open_file(cfg_fn);
|
3
|
299
|
|
300 if (!cfg_file)
|
|
301 cfg_file = xmms_cfg_new();
|
1
|
302
|
|
303
|
|
304 /* Write the new settings to XMMS configuration file */
|
|
305 for (i = 0; i < XS_CFGTABLE_MAX; i++) {
|
|
306
|
|
307 switch (xs_cfgtable[i].atype) {
|
3
|
308 case ATYPE_INT:
|
|
309 xmms_cfg_write_int(cfg_file, XMMS_SID_CONFIG_IDENT, xs_cfgtable[i].aname, *(gint *) xs_cfgtable[i].adata);
|
|
310 break;
|
|
311
|
|
312 case ATYPE_BOOL:
|
|
313 xmms_cfg_write_boolean(cfg_file, XMMS_SID_CONFIG_IDENT, xs_cfgtable[i].aname, *(gboolean *) xs_cfgtable[i].adata);
|
|
314 break;
|
|
315
|
|
316 case ATYPE_FLOAT:
|
|
317 xmms_cfg_write_float(cfg_file, XMMS_SID_CONFIG_IDENT, xs_cfgtable[i].aname, *(gfloat *) xs_cfgtable[i].adata);
|
|
318 break;
|
1
|
319
|
3
|
320 case ATYPE_STR:
|
|
321 xmms_cfg_write_string(cfg_file, XMMS_SID_CONFIG_IDENT, xs_cfgtable[i].aname, *(gchar **) xs_cfgtable[i].adata);
|
|
322 break;
|
1
|
323
|
3
|
324 default:
|
|
325 XSERR("Internal: Unsupported setting type found while writing configuration file. Please report to author!\n");
|
|
326 break;
|
|
327 }
|
1
|
328
|
3
|
329 }
|
1
|
330
|
3
|
331 /* Flush the file */
|
1
|
332 xmms_cfg_write_file(cfg_file, cfg_fn);
|
|
333
|
3
|
334 /* Free the memory areas */
|
1
|
335 xmms_cfg_free(cfg_file);
|
|
336
|
|
337 g_free(cfg_fn);
|
|
338
|
|
339 gtk_widget_destroy(xs_configwin);
|
3
|
340 xs_configwin = NULL;
|
1
|
341 }
|
|
342
|
|
343
|
|
344 /*
|
|
345 * Update filter setting sliders
|
|
346 */
|
3
|
347 static void xs_update_filters(void)
|
1
|
348 {
|
|
349 gtk_adjustment_set_value(GTK_ADJUSTMENT(cfg_filt_fs_adj), xs_cfg.filterFs);
|
|
350 gtk_adjustment_set_value(GTK_ADJUSTMENT(cfg_filt_fm_adj), xs_cfg.filterFm);
|
|
351 gtk_adjustment_set_value(GTK_ADJUSTMENT(cfg_filt_ft_adj), xs_cfg.filterFt);
|
|
352 }
|
|
353
|
|
354
|
|
355 /*
|
|
356 * Reset filter settings to defaults
|
|
357 */
|
3
|
358 static void xs_cfg_filter_reset(void)
|
|
359 {
|
|
360 xs_reset_filters();
|
|
361 xs_update_filters();
|
|
362 }
|
|
363
|
|
364
|
|
365 /*
|
|
366 * HVSC songlength-database file selector response-functions
|
|
367 */
|
|
368 void xs_cfg_sld_fs_ok(void)
|
1
|
369 {
|
3
|
370 /* Selection was accepted! */
|
|
371 gtk_entry_set_text(GTK_ENTRY(cfg_sld_dbpath), gtk_file_selection_get_filename(GTK_FILE_SELECTION(xs_sld_fileselector))
|
|
372 );
|
|
373
|
|
374 /* Close file selector window */
|
|
375 gtk_widget_destroy(xs_sld_fileselector);
|
|
376 xs_sld_fileselector = NULL;
|
|
377 }
|
|
378
|
|
379
|
|
380 void xs_cfg_sld_fs_cancel(void)
|
|
381 {
|
|
382 /* Close file selector window */
|
|
383 gtk_widget_destroy(xs_sld_fileselector);
|
|
384 xs_sld_fileselector = NULL;
|
1
|
385 }
|
|
386
|
|
387
|
|
388 /*
|
|
389 * STIL-database file selector response-functions
|
|
390 */
|
3
|
391 void xs_cfg_stil_fs_ok(void)
|
1
|
392 {
|
|
393 /* Selection was accepted! */
|
3
|
394 gtk_entry_set_text(GTK_ENTRY(cfg_stil_path), gtk_file_selection_get_filename(GTK_FILE_SELECTION(xs_stil_fileselector))
|
|
395 );
|
1
|
396
|
|
397 /* Close file selector window */
|
3
|
398 gtk_widget_destroy(xs_stil_fileselector);
|
|
399 xs_stil_fileselector = NULL;
|
1
|
400 }
|
|
401
|
|
402
|
3
|
403 void xs_cfg_stil_fs_cancel(void)
|
1
|
404 {
|
3
|
405 /* Close file selector window */
|
|
406 gtk_widget_destroy(xs_stil_fileselector);
|
|
407 xs_stil_fileselector = NULL;
|
1
|
408 }
|
|
409
|
|
410
|
|
411 /*
|
|
412 * Execute the configuration panel
|
|
413 */
|
|
414 void xs_configure(void)
|
|
415 {
|
|
416
|
3
|
417 /* Check if the window already exists */
|
|
418 if (xs_configwin != NULL) {
|
|
419 gdk_window_raise(xs_configwin->window);
|
|
420 return;
|
1
|
421 }
|
|
422
|
|
423
|
|
424
|
|
425
|
|
426 /* Set the states of widgets */
|
|
427
|
|
428 /* Sound resolution settings */
|
3
|
429 switch (xs_cfg.fmtBitsPerSample) {
|
|
430 case 16:
|
|
431 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_res_16bit), TRUE);
|
|
432 break;
|
|
433 case 8:
|
|
434 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_res_8bit), TRUE);
|
|
435 break;
|
1
|
436 }
|
|
437
|
3
|
438 gtk_adjustment_set_value(GTK_ADJUSTMENT(cfg_samplerate_adj), xs_cfg.fmtFrequency);
|
|
439
|
|
440
|
1
|
441 /* Channel settings */
|
3
|
442 switch (xs_cfg.fmtChannels) {
|
|
443 case 0:
|
|
444 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_chn_mono), TRUE);
|
|
445 break;
|
|
446 case 1:
|
|
447 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_chn_stereo), TRUE);
|
|
448 break;
|
|
449 case 2:
|
|
450 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_chn_autopan), TRUE);
|
|
451 break;
|
1
|
452 }
|
3
|
453
|
|
454
|
1
|
455 /* Memorymode settings */
|
|
456 switch (xs_cfg.memoryMode) {
|
|
457 case XMMS_SID_MPU_BANK_SWITCHING:
|
|
458 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_mem_banksw), TRUE);
|
|
459 break;
|
3
|
460
|
1
|
461 case XMMS_SID_MPU_TRANSPARENT_ROM:
|
|
462 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_mem_transrom), TRUE);
|
|
463 break;
|
3
|
464
|
1
|
465 case XMMS_SID_MPU_PLAYSID_ENVIRONMENT:
|
|
466 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_mem_playsid), TRUE);
|
|
467 break;
|
|
468 }
|
|
469
|
|
470
|
|
471 /* Filter and waveform settings */
|
|
472 if (xs_cfg.mos8580) {
|
3
|
473 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_wav_mos8580), TRUE);
|
|
474 } else {
|
|
475 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_wav_mos6581), TRUE);
|
|
476 }
|
|
477
|
1
|
478
|
|
479 if (xs_cfg.emulateFilter) {
|
|
480 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_emufilters), TRUE);
|
|
481 }
|
|
482
|
|
483 xs_cfg_filt_update();
|
3
|
484
|
|
485
|
|
486 /* Song-length detection */
|
|
487 switch (xs_cfg.playMethod) {
|
|
488 case XMMS_SID_PMETHOD_NONE:
|
|
489 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_sld_none), TRUE);
|
|
490 break;
|
|
491
|
|
492 case XMMS_SID_PMETHOD_MAXSILENCE:
|
|
493 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_sld_maxsilence), TRUE);
|
|
494 break;
|
|
495
|
|
496
|
|
497 case XMMS_SID_PMETHOD_DATABASE:
|
|
498 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_sld_database), TRUE);
|
|
499 break;
|
|
500 }
|
|
501
|
|
502 if (xs_cfg.playUseMaxTime) {
|
|
503 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_sld_usemaxtime), TRUE);
|
|
504 }
|
|
505
|
|
506 gtk_adjustment_set_value(GTK_ADJUSTMENT(cfg_sld_maxtime_adj), xs_cfg.playMaxTime);
|
|
507 gtk_adjustment_set_value(GTK_ADJUSTMENT(cfg_sld_silencetime_adj), xs_cfg.playMaxSilentTime);
|
|
508 gtk_adjustment_set_value(GTK_ADJUSTMENT(cfg_sld_percentage_adj), xs_cfg.playSilentPercent);
|
|
509
|
|
510 if (xs_cfg.playDBPath != NULL) {
|
|
511 gtk_entry_set_text(GTK_ENTRY(cfg_sld_dbpath), xs_cfg.playDBPath);
|
|
512 }
|
|
513
|
1
|
514
|
|
515 /* STIL and miscellaneous settings */
|
3
|
516 if (xs_cfg.useSTIL) {
|
1
|
517 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_stil_use), TRUE);
|
|
518 }
|
|
519
|
3
|
520 if (xs_cfg.STILpath != NULL) {
|
|
521 gtk_entry_set_text(GTK_ENTRY(cfg_stil_path), xs_cfg.STILpath);
|
|
522 }
|
|
523
|
|
524 if (xs_cfg.finfoUseColors) {
|
|
525 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_finfo_usecolors), TRUE);
|
|
526 }
|
|
527
|
1
|
528 if (xs_cfg.detectMagic) {
|
3
|
529 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_detectmagic), TRUE);
|
1
|
530 }
|
|
531
|
|
532
|
3
|
533 /* Title-settings */
|
|
534 if (xs_cfg.titleOverride) {
|
|
535 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_ftitle_override), TRUE);
|
|
536 }
|
1
|
537
|
3
|
538 if (xs_cfg.titleFormat != NULL) {
|
|
539 gtk_entry_set_text(GTK_ENTRY(cfg_ftitle_format), xs_cfg.titleFormat);
|
|
540 }
|
|
541
|
1
|
542
|
|
543 gtk_widget_show(xs_configwin);
|
|
544 }
|
|
545
|