annotate src/filewriter/filewriter.c @ 984:df7b09989aee trunk

[svn] - We got a new plugin, captain! - FileWriter is the ultimate plugin for dumping audio to files. It should be the successor of Disk Writer and Out-Lame, as it supports the same output formats as those (WAVE and MP3). The main advantage of having only one file dumping plugin for many formats is that not every plugin has to think about file handling (where to write files to, how to call them etc.) that much anymore. - FileWriter is also very extensible - adding new output formats should be very easy.
author mf0102
date Mon, 30 Apr 2007 14:16:32 -0700
parents
children 029056fb9f9d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
984
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
1 /* FileWriter-Plugin
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
2 * (C) copyright 2007 merging of Disk Writer and Out-Lame by Michael Färber
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
3 *
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
4 * Original Out-Lame-Plugin:
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
5 * (C) copyright 2002 Lars Siebold <khandha5@gmx.net>
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
6 * (C) copyright 2006-2007 porting to audacious by Yoshiki Yazawa <yaz@cc.rim.or.jp>
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
7 *
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
11 * (at your option) any later version.
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
12 *
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
16 * GNU General Public License for more details.
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
17 *
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
20 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
21 */
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
22
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
23 #include "filewriter.h"
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
24 #include "plugins.h"
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
25
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
26 static GtkWidget *configure_win = NULL, *configure_vbox;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
27 static GtkWidget *path_hbox, *path_label, *path_dirbrowser;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
28 static GtkWidget *configure_bbox, *configure_ok, *configure_cancel;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
29
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
30 static GtkWidget *fileext_hbox, *fileext_label, *fileext_combo, *plugin_button;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
31 enum fileext_t { WAV = 0, MP3, FILEEXT_MAX } ;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
32 static gint fileext = WAV;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
33 static gchar *fileext_str[] = { "wav", "mp3" } ;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
34 static FileWriter plugin;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
35
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
36 static GtkWidget *saveplace_hbox, *saveplace;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
37 static gboolean save_original = TRUE;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
38
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
39 static GtkWidget *filenamefrom_hbox, *filenamefrom_label, *filenamefrom_toggle;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
40 static gboolean filenamefromtags = TRUE;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
41
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
42 static GtkWidget *use_suffix_toggle = NULL;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
43 static gboolean use_suffix = FALSE;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
44
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
45 static GtkWidget *prependnumber_toggle;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
46 static gboolean prependnumber = FALSE;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
47
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
48 static gchar *file_path = NULL;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
49
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
50 gint ctrlsocket_get_session_id(void); /* FIXME */
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
51
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
52 extern TitleInput *input_get_song_tuple(const gchar *filename);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
53
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
54 static void file_init(void);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
55 static void file_about(void);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
56 static gint file_open(AFormat fmt, gint rate, gint nch);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
57 static void file_write(void *ptr, gint length);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
58 static void file_close(void);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
59 static void file_flush(gint time);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
60 static void file_pause(short p);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
61 static gint file_free(void);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
62 static gint file_playing(void);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
63 static gint file_get_written_time(void);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
64 static gint file_get_output_time(void);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
65 static void file_configure(void);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
66
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
67 OutputPlugin file_op =
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
68 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
69 NULL,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
70 NULL,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
71 NULL,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
72 file_init,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
73 NULL,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
74 file_about,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
75 file_configure,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
76 NULL,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
77 NULL,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
78 file_open,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
79 file_write,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
80 file_close,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
81 file_flush,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
82 file_pause,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
83 file_free,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
84 file_playing,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
85 file_get_output_time,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
86 file_get_written_time,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
87 NULL
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
88 };
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
89
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
90 OutputPlugin *get_oplugin_info(void)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
91 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
92 file_op.description = g_strdup_printf("FileWriter %s", VERSION);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
93 return &file_op;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
94 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
95
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
96 static void set_plugin(void)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
97 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
98 if (fileext < 0 || fileext >= FILEEXT_MAX)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
99 fileext = 0;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
100
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
101 if (fileext == WAV)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
102 plugin = wav_plugin;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
103 if (fileext == MP3)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
104 plugin = mp3_plugin;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
105 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
106
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
107 static void file_init(void)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
108 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
109 ConfigDb *db;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
110
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
111 db = bmp_cfg_db_open();
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
112 bmp_cfg_db_get_int(db, "filewriter", "fileext", &fileext);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
113 bmp_cfg_db_get_string(db, "filewriter", "file_path", &file_path);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
114 bmp_cfg_db_get_bool(db, "filewriter", "save_original", &save_original);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
115 bmp_cfg_db_get_bool(db, "filewriter", "use_suffix", &use_suffix);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
116 bmp_cfg_db_get_bool(db, "filewriter", "filenamefromtags", &filenamefromtags);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
117 bmp_cfg_db_get_bool(db, "filewriter", "prependnumber", &prependnumber);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
118 bmp_cfg_db_close(db);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
119
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
120 if (!file_path)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
121 file_path = g_strdup(g_get_home_dir());
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
122
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
123 set_plugin();
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
124 if (plugin.init)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
125 plugin.init();
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
126 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
127
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
128 void file_about(void)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
129 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
130 static GtkWidget *dialog;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
131
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
132 if (dialog != NULL)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
133 return;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
134
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
135 dialog = xmms_show_message("About FileWriter-Plugin",
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
136 "FileWriter-Plugin\n\n"
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
137 "This program is free software; you can redistribute it and/or modify\n"
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
138 "it under the terms of the GNU General Public License as published by\n"
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
139 "the Free Software Foundation; either version 2 of the License, or\n"
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
140 "(at your option) any later version.\n"
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
141 "\n"
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
142 "This program is distributed in the hope that it will be useful,\n"
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
143 "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
144 "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
145 "GNU General Public License for more details.\n"
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
146 "\n"
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
147 "You should have received a copy of the GNU General Public License\n"
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
148 "along with this program; if not, write to the Free Software\n"
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
149 "Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,\n"
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
150 "USA.", "Ok", FALSE, NULL, NULL);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
151 gtk_signal_connect(GTK_OBJECT(dialog), "destroy",
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
152 GTK_SIGNAL_FUNC(gtk_widget_destroyed), &dialog);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
153 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
154
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
155 static gint file_open(AFormat fmt, gint rate, gint nch)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
156 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
157 gchar *origfilename = NULL, *filename = NULL, *temp = NULL;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
158 gint pos;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
159
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
160 if (xmms_check_realtime_priority())
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
161 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
162 xmms_show_message(_("Error"),
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
163 _("You cannot use the FileWriter plugin\n"
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
164 "when you're running in realtime mode."),
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
165 _("OK"), FALSE, NULL, NULL);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
166 return 0;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
167 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
168
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
169 input.format = fmt;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
170 input.frequency = rate;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
171 input.channels = nch;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
172
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
173 pos = xmms_remote_get_playlist_pos(ctrlsocket_get_session_id());
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
174
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
175 origfilename = xmms_remote_get_playlist_file(ctrlsocket_get_session_id(),
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
176 pos);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
177
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
178 tuple = input_get_song_tuple(origfilename);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
179
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
180 if (filenamefromtags)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
181 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
182 gchar *utf8 =
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
183 xmms_remote_get_playlist_title(ctrlsocket_get_session_id(), pos);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
184 g_strchomp(utf8); //chop trailing ^J --yaz
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
185
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
186 filename = g_locale_from_utf8(utf8, -1, NULL, NULL, NULL);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
187 g_free(utf8);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
188 while (filename != NULL && (temp = strchr(filename, '/')) != NULL)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
189 *temp = '-';
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
190 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
191 if (filename == NULL)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
192 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
193 filename = g_path_get_basename(origfilename);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
194 if (!use_suffix)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
195 if ((temp = strrchr(filename, '.')) != NULL)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
196 *temp = '\0';
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
197 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
198 if (filename == NULL)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
199 filename = g_strdup_printf("aud-%d", pos);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
200
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
201
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
202 if (prependnumber)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
203 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
204 gint number;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
205 if (tuple && tuple->track_number)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
206 number = tuple->track_number;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
207 else
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
208 number = pos + 1;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
209
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
210 temp = g_strdup_printf("%.02d %s", number, filename);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
211 g_free(filename);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
212 filename = temp;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
213 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
214
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
215 gchar *directory;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
216 if (save_original)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
217 directory = g_path_get_dirname(origfilename);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
218 else
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
219 directory = g_strdup(file_path);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
220
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
221 g_free(origfilename);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
222
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
223 temp = g_strdup_printf("%s/%s.%s",
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
224 directory, filename, fileext_str[fileext]);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
225 g_free(directory);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
226 g_free(filename);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
227 filename = temp;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
228
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
229 output_file = vfs_fopen(filename, "w");
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
230 g_free(filename);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
231
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
232 if (!output_file)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
233 return 0;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
234
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
235 return plugin.open();
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
236 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
237
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
238 static void convert_buffer(gpointer buffer, gint length)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
239 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
240 gint i;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
241
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
242 if (input.format == FMT_S8)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
243 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
244 guint8 *ptr1 = buffer;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
245 gint8 *ptr2 = buffer;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
246
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
247 for (i = 0; i < length; i++)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
248 *(ptr1++) = *(ptr2++) ^ 128;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
249 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
250 if (input.format == FMT_S16_BE)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
251 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
252 gint16 *ptr = buffer;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
253
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
254 for (i = 0; i < length >> 1; i++, ptr++)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
255 *ptr = GUINT16_SWAP_LE_BE(*ptr);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
256 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
257 if (input.format == FMT_S16_NE)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
258 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
259 gint16 *ptr = buffer;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
260
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
261 for (i = 0; i < length >> 1; i++, ptr++)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
262 *ptr = GINT16_TO_LE(*ptr);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
263 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
264 if (input.format == FMT_U16_BE)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
265 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
266 gint16 *ptr1 = buffer;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
267 guint16 *ptr2 = buffer;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
268
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
269 for (i = 0; i < length >> 1; i++, ptr2++)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
270 *(ptr1++) = GINT16_TO_LE(GUINT16_FROM_BE(*ptr2) ^ 32768);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
271 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
272 if (input.format == FMT_U16_LE)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
273 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
274 gint16 *ptr1 = buffer;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
275 guint16 *ptr2 = buffer;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
276
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
277 for (i = 0; i < length >> 1; i++, ptr2++)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
278 *(ptr1++) = GINT16_TO_LE(GUINT16_FROM_LE(*ptr2) ^ 32768);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
279 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
280 if (input.format == FMT_U16_NE)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
281 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
282 gint16 *ptr1 = buffer;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
283 guint16 *ptr2 = buffer;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
284
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
285 for (i = 0; i < length >> 1; i++, ptr2++)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
286 *(ptr1++) = GINT16_TO_LE((*ptr2) ^ 32768);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
287 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
288 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
289
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
290 static void file_write(void *ptr, gint length)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
291 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
292 AFormat new_format;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
293 int new_frequency, new_channels;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
294 EffectPlugin *ep;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
295
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
296 new_format = input.format;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
297 new_frequency = input.frequency;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
298 new_channels = input.channels;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
299
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
300 ep = get_current_effect_plugin();
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
301 if ( effects_enabled() && ep && ep->query_format ) {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
302 ep->query_format(&new_format,&new_frequency,&new_channels);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
303 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
304
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
305 if ( effects_enabled() && ep && ep->mod_samples ) {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
306 length = ep->mod_samples(&ptr,length,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
307 input.format,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
308 input.frequency,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
309 input.channels );
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
310 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
311
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
312 if (input.format == FMT_S8 || input.format == FMT_S16_BE ||
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
313 input.format == FMT_U16_LE || input.format == FMT_U16_BE ||
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
314 input.format == FMT_U16_NE)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
315 convert_buffer(ptr, length);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
316 #ifdef WORDS_BIGENDIAN
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
317 if (input.format == FMT_S16_NE)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
318 convert_buffer(ptr, length);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
319 #endif
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
320
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
321 plugin.write(ptr, length);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
322 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
323
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
324 static void file_close(void)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
325 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
326 plugin.close();
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
327
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
328 if (output_file)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
329 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
330 written = 0;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
331 vfs_fclose(output_file);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
332 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
333 output_file = NULL;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
334 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
335
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
336 static void file_flush(gint time)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
337 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
338 if (time < 0)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
339 return;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
340
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
341 file_close();
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
342 file_open(input.format, input.frequency, input.channels);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
343
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
344 offset = time;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
345 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
346
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
347 static void file_pause(short p)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
348 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
349 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
350
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
351 static gint file_free(void)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
352 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
353 return plugin.free();
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
354 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
355
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
356 static gint file_playing(void)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
357 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
358 return plugin.playing();
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
359 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
360
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
361 static gint file_get_written_time(void)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
362 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
363 return plugin.get_written_time();
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
364 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
365
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
366 static gint file_get_output_time(void)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
367 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
368 return file_get_written_time();
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
369 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
370
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
371 static void configure_ok_cb(gpointer data)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
372 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
373 ConfigDb *db;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
374
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
375 fileext = gtk_combo_box_get_active(GTK_COMBO_BOX(fileext_combo));
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
376
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
377 g_free(file_path);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
378 file_path = g_strdup(gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(path_dirbrowser)));
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
379
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
380 use_suffix =
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
381 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(use_suffix_toggle));
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
382
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
383 prependnumber =
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
384 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prependnumber_toggle));
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
385
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
386 db = bmp_cfg_db_open();
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
387 bmp_cfg_db_set_int(db, "filewriter", "fileext", fileext);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
388 bmp_cfg_db_set_string(db, "filewriter", "file_path", file_path);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
389 bmp_cfg_db_set_bool(db, "filewriter", "save_original", save_original);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
390 bmp_cfg_db_set_bool(db, "filewriter", "filenamefromtags", filenamefromtags);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
391 bmp_cfg_db_set_bool(db, "filewriter", "use_suffix", use_suffix);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
392 bmp_cfg_db_set_bool(db, "filewriter", "prependnumber", prependnumber);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
393
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
394 bmp_cfg_db_close(db);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
395
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
396 gtk_widget_destroy(configure_win);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
397 if (path_dirbrowser)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
398 gtk_widget_destroy(path_dirbrowser);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
399 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
400
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
401 static void fileext_cb(GtkWidget *combo, gpointer data)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
402 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
403 fileext = gtk_combo_box_get_active(GTK_COMBO_BOX(fileext_combo));
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
404 set_plugin();
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
405
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
406 gtk_widget_set_sensitive(plugin_button, plugin.configure != NULL);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
407 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
408
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
409 static void plugin_configure_cb(GtkWidget *button, gpointer data)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
410 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
411 if (plugin.configure)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
412 plugin.configure();
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
413 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
414
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
415
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
416 static void saveplace_original_cb(GtkWidget *button, gpointer data)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
417 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
418 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
419 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
420 gtk_widget_set_sensitive(path_hbox, FALSE);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
421 save_original = TRUE;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
422 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
423 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
424
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
425 static void saveplace_custom_cb(GtkWidget *button, gpointer data)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
426 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
427 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
428 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
429 gtk_widget_set_sensitive(path_hbox, TRUE);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
430 save_original = FALSE;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
431 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
432 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
433
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
434 static void filenamefromtags_cb(GtkWidget *button, gpointer data)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
435 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
436 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
437 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
438 gtk_widget_set_sensitive(use_suffix_toggle, FALSE);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
439 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(use_suffix_toggle), FALSE);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
440 use_suffix = FALSE;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
441 filenamefromtags = TRUE;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
442 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
443 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
444
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
445 static void filenamefromfilename_cb(GtkWidget *button, gpointer data)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
446 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
447 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
448 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
449 gtk_widget_set_sensitive(use_suffix_toggle, TRUE);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
450 filenamefromtags = FALSE;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
451 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
452 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
453
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
454
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
455 static void configure_destroy(void)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
456 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
457 if (path_dirbrowser)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
458 gtk_widget_destroy(path_dirbrowser);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
459 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
460
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
461 static void file_configure(void)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
462 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
463 GtkTooltips *use_suffix_tooltips;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
464
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
465 if (!configure_win)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
466 {
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
467 configure_win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
468
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
469 gtk_signal_connect(GTK_OBJECT(configure_win), "destroy",
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
470 GTK_SIGNAL_FUNC(configure_destroy), NULL);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
471 gtk_signal_connect(GTK_OBJECT(configure_win), "destroy",
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
472 GTK_SIGNAL_FUNC(gtk_widget_destroyed),
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
473 &configure_win);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
474
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
475 gtk_window_set_title(GTK_WINDOW(configure_win),
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
476 _("Disk Writer Configuration"));
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
477 gtk_window_set_position(GTK_WINDOW(configure_win), GTK_WIN_POS_MOUSE);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
478
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
479 gtk_container_set_border_width(GTK_CONTAINER(configure_win), 10);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
480
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
481 configure_vbox = gtk_vbox_new(FALSE, 10);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
482 gtk_container_add(GTK_CONTAINER(configure_win), configure_vbox);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
483
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
484
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
485 fileext_hbox = gtk_hbox_new(FALSE, 5);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
486 gtk_box_pack_start(GTK_BOX(configure_vbox), fileext_hbox, FALSE, FALSE, 0);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
487
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
488 fileext_label = gtk_label_new(_("Output file extension:"));
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
489 gtk_box_pack_start(GTK_BOX(fileext_hbox), fileext_label, FALSE, FALSE, 0);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
490
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
491 fileext_combo = gtk_combo_box_new_text();
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
492 gtk_combo_box_append_text(GTK_COMBO_BOX(fileext_combo), "WAV");
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
493 gtk_combo_box_append_text(GTK_COMBO_BOX(fileext_combo), "MP3");
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
494 gtk_box_pack_start(GTK_BOX(fileext_hbox), fileext_combo, FALSE, FALSE, 0);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
495 gtk_combo_box_set_active(GTK_COMBO_BOX(fileext_combo), fileext);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
496 g_signal_connect(G_OBJECT(fileext_combo), "changed", G_CALLBACK(fileext_cb), NULL);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
497
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
498 plugin_button = gtk_button_new_with_label(_("Configure"));
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
499 gtk_widget_set_sensitive(plugin_button, plugin.configure != NULL);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
500 g_signal_connect(G_OBJECT(plugin_button), "clicked", G_CALLBACK(plugin_configure_cb), NULL);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
501 gtk_box_pack_end(GTK_BOX(fileext_hbox), plugin_button, FALSE, FALSE, 0);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
502
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
503
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
504
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
505
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
506 gtk_box_pack_start(GTK_BOX(configure_vbox), gtk_hseparator_new(), FALSE, FALSE, 0);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
507
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
508
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
509
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
510 saveplace_hbox = gtk_hbox_new(FALSE, 5);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
511 gtk_container_add(GTK_CONTAINER(configure_vbox), saveplace_hbox);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
512
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
513 saveplace = gtk_radio_button_new_with_label(NULL, _("Save into original directory"));
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
514 g_signal_connect(G_OBJECT(saveplace), "toggled", G_CALLBACK(saveplace_original_cb), NULL);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
515 gtk_box_pack_start(GTK_BOX(saveplace_hbox), saveplace, FALSE, FALSE, 0);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
516
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
517 saveplace = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(saveplace),
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
518 _("Save into custom directory"));
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
519 g_signal_connect(G_OBJECT(saveplace), "toggled", G_CALLBACK(saveplace_custom_cb), NULL);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
520 gtk_box_pack_start(GTK_BOX(saveplace_hbox), saveplace, FALSE, FALSE, 0);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
521
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
522 if (!save_original)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
523 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(saveplace), TRUE);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
524
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
525
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
526
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
527 path_hbox = gtk_hbox_new(FALSE, 5);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
528 gtk_box_pack_start(GTK_BOX(configure_vbox), path_hbox, FALSE, FALSE, 0);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
529
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
530 path_label = gtk_label_new(_("Output file folder:"));
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
531 gtk_box_pack_start(GTK_BOX(path_hbox), path_label, FALSE, FALSE, 0);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
532
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
533 path_dirbrowser =
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
534 gtk_file_chooser_button_new ("Pick a folder",
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
535 GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
536 gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(path_dirbrowser),
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
537 file_path);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
538 gtk_box_pack_start(GTK_BOX(path_hbox), path_dirbrowser, TRUE, TRUE, 0);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
539
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
540 if (save_original)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
541 gtk_widget_set_sensitive(path_hbox, FALSE);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
542
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
543
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
544
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
545
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
546 gtk_box_pack_start(GTK_BOX(configure_vbox), gtk_hseparator_new(), FALSE, FALSE, 0);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
547
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
548
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
549
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
550
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
551 filenamefrom_hbox = gtk_hbox_new(FALSE, 5);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
552 gtk_container_add(GTK_CONTAINER(configure_vbox), filenamefrom_hbox);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
553
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
554 filenamefrom_label = gtk_label_new(_("Get filename from:"));
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
555 gtk_box_pack_start(GTK_BOX(filenamefrom_hbox), filenamefrom_label, FALSE, FALSE, 0);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
556
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
557 filenamefrom_toggle = gtk_radio_button_new_with_label(NULL, _("original file tags"));
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
558 g_signal_connect(G_OBJECT(filenamefrom_toggle), "toggled", G_CALLBACK(filenamefromtags_cb), NULL);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
559 gtk_box_pack_start(GTK_BOX(filenamefrom_hbox), filenamefrom_toggle, FALSE, FALSE, 0);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
560
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
561 filenamefrom_toggle =
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
562 gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(filenamefrom_toggle),
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
563 _("original filename"));
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
564 g_signal_connect(G_OBJECT(filenamefrom_toggle), "toggled", G_CALLBACK(filenamefromfilename_cb), NULL);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
565 gtk_box_pack_start(GTK_BOX(filenamefrom_hbox), filenamefrom_toggle, FALSE, FALSE, 0);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
566
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
567 if (!filenamefromtags)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
568 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filenamefrom_toggle), TRUE);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
569
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
570
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
571
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
572
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
573 use_suffix_toggle = gtk_check_button_new_with_label(_("Don't strip file name extension"));
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
574 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(use_suffix_toggle), use_suffix);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
575 gtk_box_pack_start(GTK_BOX(configure_vbox), use_suffix_toggle, FALSE, FALSE, 0);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
576 use_suffix_tooltips = gtk_tooltips_new();
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
577 gtk_tooltips_set_tip(use_suffix_tooltips, use_suffix_toggle, "If enabled, the extension from the original filename will not be stripped before adding the .wav extension to the end.", NULL);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
578 gtk_tooltips_enable(use_suffix_tooltips);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
579
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
580 if (filenamefromtags)
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
581 gtk_widget_set_sensitive(use_suffix_toggle, FALSE);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
582
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
583
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
584
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
585
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
586 gtk_box_pack_start(GTK_BOX(configure_vbox), gtk_hseparator_new(), FALSE, FALSE, 0);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
587
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
588
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
589
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
590
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
591 prependnumber_toggle = gtk_check_button_new_with_label(_("Prepend track number to filename"));
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
592 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(prependnumber_toggle), prependnumber);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
593 gtk_box_pack_start(GTK_BOX(configure_vbox), prependnumber_toggle, FALSE, FALSE, 0);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
594
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
595
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
596
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
597 configure_bbox = gtk_hbutton_box_new();
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
598 gtk_button_box_set_layout(GTK_BUTTON_BOX(configure_bbox),
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
599 GTK_BUTTONBOX_END);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
600 gtk_button_box_set_spacing(GTK_BUTTON_BOX(configure_bbox), 5);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
601 gtk_box_pack_start(GTK_BOX(configure_vbox), configure_bbox,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
602 FALSE, FALSE, 0);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
603
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
604 configure_cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
605 gtk_signal_connect_object(GTK_OBJECT(configure_cancel), "clicked",
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
606 GTK_SIGNAL_FUNC(gtk_widget_destroy),
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
607 GTK_OBJECT(configure_win));
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
608 gtk_box_pack_start(GTK_BOX(configure_bbox), configure_cancel,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
609 TRUE, TRUE, 0);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
610
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
611 configure_ok = gtk_button_new_from_stock(GTK_STOCK_OK);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
612 gtk_signal_connect(GTK_OBJECT(configure_ok), "clicked",
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
613 GTK_SIGNAL_FUNC(configure_ok_cb), NULL);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
614 gtk_box_pack_start(GTK_BOX(configure_bbox), configure_ok,
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
615 TRUE, TRUE, 0);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
616
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
617 gtk_widget_show_all(configure_win);
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
618 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
619 }
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
620
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
621 VFSFile *output_file = NULL;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
622 guint64 written = 0;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
623 guint64 offset = 0;
df7b09989aee [svn] - We got a new plugin, captain!
mf0102
parents:
diff changeset
624 TitleInput *tuple = NULL;