Mercurial > audlegacy
annotate Plugins/Input/flac/fileinfo.c @ 1218:aaf012a5529c trunk
[svn] - more Makefile conversion
author | nenolod |
---|---|
date | Wed, 14 Jun 2006 01:16:45 -0700 |
parents | 9563c642d436 |
children | f12d7e208b43 |
rev | line source |
---|---|
61 | 1 /* XMMS - Cross-platform multimedia player |
2 * Copyright (C) 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson and 4Front Technologies | |
3 * Copyright (C) 1999,2000 Håvard Kvålen | |
4 * Copyright (C) 2002,2003,2004,2005 Daisuke Shimamura | |
5 * | |
6 * This program is free software; you can redistribute it and/or modify | |
7 * it under the terms of the GNU General Public License as published by | |
8 * the Free Software Foundation; either version 2 of the License, or | |
9 * (at your option) any later version. | |
10 * | |
11 * This program is distributed in the hope that it will be useful, | |
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 * GNU General Public License for more details. | |
15 * | |
16 * You should have received a copy of the GNU General Public License | |
17 * along with this program; if not, write to the Free Software | |
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
19 */ | |
20 | |
21 #include <stdlib.h> | |
22 #include <string.h> /* for strlen() */ | |
23 #include <sys/types.h> | |
24 #include <sys/stat.h> | |
25 #include <unistd.h> | |
26 #include <stdarg.h> | |
27 #include <gtk/gtk.h> | |
28 | |
1139
9563c642d436
[svn] - convert filenames to UTF-8, as in vorbis plugin. Patch by: Kazuki Shimura <kazuki@ma.ccnw.ne.jp>.
nenolod
parents:
251
diff
changeset
|
29 #include "audacious/util.h" |
61 | 30 #include "FLAC/metadata.h" |
31 #include "charset.h" | |
32 #include "configure.h" | |
33 #include "plugin_common/tags.h" | |
34 #include "plugin_common/locale_hack.h" | |
35 | |
36 static GtkWidget *window = NULL; | |
37 static GList *genre_list = NULL; | |
38 static GtkWidget *filename_entry, *tag_frame; | |
39 static GtkWidget *title_entry, *artist_entry, *album_entry, *date_entry, *tracknum_entry, *comment_entry; | |
40 static GtkWidget *genre_combo; | |
41 static GtkWidget *flac_samplerate, *flac_channels, *flac_bits_per_sample, *flac_blocksize, *flac_filesize, *flac_samples, *flac_bitrate; | |
42 | |
43 static gchar *current_filename = NULL; | |
44 static FLAC__StreamMetadata *tags_ = NULL; | |
45 | |
46 static const gchar *vorbis_genres[] = | |
47 { | |
48 N_("Blues"), N_("Classic Rock"), N_("Country"), N_("Dance"), | |
49 N_("Disco"), N_("Funk"), N_("Grunge"), N_("Hip-Hop"), | |
50 N_("Jazz"), N_("Metal"), N_("New Age"), N_("Oldies"), | |
51 N_("Other"), N_("Pop"), N_("R&B"), N_("Rap"), N_("Reggae"), | |
52 N_("Rock"), N_("Techno"), N_("Industrial"), N_("Alternative"), | |
53 N_("Ska"), N_("Death Metal"), N_("Pranks"), N_("Soundtrack"), | |
54 N_("Euro-Techno"), N_("Ambient"), N_("Trip-Hop"), N_("Vocal"), | |
55 N_("Jazz+Funk"), N_("Fusion"), N_("Trance"), N_("Classical"), | |
56 N_("Instrumental"), N_("Acid"), N_("House"), N_("Game"), | |
57 N_("Sound Clip"), N_("Gospel"), N_("Noise"), N_("Alt"), | |
58 N_("Bass"), N_("Soul"), N_("Punk"), N_("Space"), | |
59 N_("Meditative"), N_("Instrumental Pop"), | |
60 N_("Instrumental Rock"), N_("Ethnic"), N_("Gothic"), | |
61 N_("Darkwave"), N_("Techno-Industrial"), N_("Electronic"), | |
62 N_("Pop-Folk"), N_("Eurodance"), N_("Dream"), | |
63 N_("Southern Rock"), N_("Comedy"), N_("Cult"), | |
64 N_("Gangsta Rap"), N_("Top 40"), N_("Christian Rap"), | |
65 N_("Pop/Funk"), N_("Jungle"), N_("Native American"), | |
66 N_("Cabaret"), N_("New Wave"), N_("Psychedelic"), N_("Rave"), | |
67 N_("Showtunes"), N_("Trailer"), N_("Lo-Fi"), N_("Tribal"), | |
68 N_("Acid Punk"), N_("Acid Jazz"), N_("Polka"), N_("Retro"), | |
69 N_("Musical"), N_("Rock & Roll"), N_("Hard Rock"), N_("Folk"), | |
70 N_("Folk/Rock"), N_("National Folk"), N_("Swing"), | |
71 N_("Fast-Fusion"), N_("Bebob"), N_("Latin"), N_("Revival"), | |
72 N_("Celtic"), N_("Bluegrass"), N_("Avantgarde"), | |
73 N_("Gothic Rock"), N_("Progressive Rock"), | |
74 N_("Psychedelic Rock"), N_("Symphonic Rock"), N_("Slow Rock"), | |
75 N_("Big Band"), N_("Chorus"), N_("Easy Listening"), | |
76 N_("Acoustic"), N_("Humour"), N_("Speech"), N_("Chanson"), | |
77 N_("Opera"), N_("Chamber Music"), N_("Sonata"), N_("Symphony"), | |
78 N_("Booty Bass"), N_("Primus"), N_("Porn Groove"), | |
79 N_("Satire"), N_("Slow Jam"), N_("Club"), N_("Tango"), | |
80 N_("Samba"), N_("Folklore"), N_("Ballad"), N_("Power Ballad"), | |
81 N_("Rhythmic Soul"), N_("Freestyle"), N_("Duet"), | |
82 N_("Punk Rock"), N_("Drum Solo"), N_("A Cappella"), | |
83 N_("Euro-House"), N_("Dance Hall"), N_("Goa"), | |
84 N_("Drum & Bass"), N_("Club-House"), N_("Hardcore"), | |
85 N_("Terror"), N_("Indie"), N_("BritPop"), N_("Negerpunk"), | |
86 N_("Polsk Punk"), N_("Beat"), N_("Christian Gangsta Rap"), | |
87 N_("Heavy Metal"), N_("Black Metal"), N_("Crossover"), | |
88 N_("Contemporary Christian"), N_("Christian Rock"), | |
89 N_("Merengue"), N_("Salsa"), N_("Thrash Metal"), | |
90 N_("Anime"), N_("JPop"), N_("Synthpop") | |
91 }; | |
92 | |
93 static void label_set_text(GtkWidget * label, char *str, ...) | |
94 { | |
95 va_list args; | |
96 gchar *tempstr; | |
97 | |
98 va_start(args, str); | |
99 tempstr = g_strdup_vprintf(str, args); | |
100 va_end(args); | |
101 | |
102 gtk_label_set_text(GTK_LABEL(label), tempstr); | |
103 g_free(tempstr); | |
104 } | |
105 | |
106 static void set_entry_tag(GtkEntry * entry, const char * utf8) | |
107 { | |
108 if(utf8) { | |
109 if(flac_cfg.title.convert_char_set) { | |
110 char *text = convert_from_utf8_to_user(utf8); | |
111 gtk_entry_set_text(entry, text); | |
112 free(text); | |
113 } | |
114 else | |
115 gtk_entry_set_text(entry, utf8); | |
116 } | |
117 else | |
118 gtk_entry_set_text(entry, ""); | |
119 } | |
120 | |
121 static void get_entry_tag(GtkEntry * entry, const char *name) | |
122 { | |
123 gchar *text; | |
124 char *utf8; | |
125 | |
248 | 126 text = g_strdup(gtk_entry_get_text(entry)); |
127 if (!text || strlen(text) == 0) | |
128 { | |
129 g_free(text); | |
61 | 130 return; |
248 | 131 } |
61 | 132 if(flac_cfg.title.convert_char_set) |
133 utf8 = convert_from_user_to_utf8(text); | |
134 else | |
135 utf8 = text; | |
136 | |
137 FLAC_plugin__tags_add_tag_utf8(tags_, name, utf8, /*separator=*/0); | |
138 | |
139 if(flac_cfg.title.convert_char_set) | |
140 free(utf8); | |
248 | 141 g_free(text); |
61 | 142 } |
143 | |
144 static void show_tag() | |
145 { | |
146 set_entry_tag(GTK_ENTRY(title_entry) , FLAC_plugin__tags_get_tag_utf8(tags_, "TITLE")); | |
147 set_entry_tag(GTK_ENTRY(artist_entry) , FLAC_plugin__tags_get_tag_utf8(tags_, "ARTIST")); | |
148 set_entry_tag(GTK_ENTRY(album_entry) , FLAC_plugin__tags_get_tag_utf8(tags_, "ALBUM")); | |
149 set_entry_tag(GTK_ENTRY(date_entry) , FLAC_plugin__tags_get_tag_utf8(tags_, "DATE")); | |
150 set_entry_tag(GTK_ENTRY(tracknum_entry) , FLAC_plugin__tags_get_tag_utf8(tags_, "TRACKNUMBER")); | |
151 set_entry_tag(GTK_ENTRY(comment_entry) , FLAC_plugin__tags_get_tag_utf8(tags_, "DESCRIPTION")); | |
152 set_entry_tag(GTK_ENTRY(GTK_COMBO(genre_combo)->entry), FLAC_plugin__tags_get_tag_utf8(tags_, "GENRE")); | |
153 } | |
154 | |
155 static void save_tag(GtkWidget * w, gpointer data) | |
156 { | |
157 (void)w; | |
158 (void)data; | |
159 | |
160 FLAC_plugin__tags_delete_tag(tags_, "TITLE"); | |
161 FLAC_plugin__tags_delete_tag(tags_, "ARTIST"); | |
162 FLAC_plugin__tags_delete_tag(tags_, "ALBUM"); | |
163 FLAC_plugin__tags_delete_tag(tags_, "DATE"); | |
164 FLAC_plugin__tags_delete_tag(tags_, "TRACKNUMBER"); | |
165 FLAC_plugin__tags_delete_tag(tags_, "DESCRIPTION"); | |
166 FLAC_plugin__tags_delete_tag(tags_, "GENRE"); | |
167 | |
168 get_entry_tag(GTK_ENTRY(title_entry) , "TITLE"); | |
169 get_entry_tag(GTK_ENTRY(artist_entry) , "ARTIST"); | |
170 get_entry_tag(GTK_ENTRY(album_entry) , "ALBUM"); | |
171 get_entry_tag(GTK_ENTRY(date_entry) , "DATE"); | |
172 get_entry_tag(GTK_ENTRY(tracknum_entry) , "TRACKNUMBER"); | |
173 get_entry_tag(GTK_ENTRY(comment_entry) , "DESCRIPTION"); | |
174 get_entry_tag(GTK_ENTRY(GTK_COMBO(genre_combo)->entry), "GENRE"); | |
175 | |
176 FLAC_plugin__tags_set(current_filename, tags_); | |
177 gtk_widget_destroy(window); | |
178 } | |
179 | |
180 static void remove_tag(GtkWidget * w, gpointer data) | |
181 { | |
182 (void)w; | |
183 (void)data; | |
184 | |
185 FLAC_plugin__tags_delete_tag(tags_, "TITLE"); | |
186 FLAC_plugin__tags_delete_tag(tags_, "ARTIST"); | |
187 FLAC_plugin__tags_delete_tag(tags_, "ALBUM"); | |
188 FLAC_plugin__tags_delete_tag(tags_, "DATE"); | |
189 FLAC_plugin__tags_delete_tag(tags_, "TRACKNUMBER"); | |
190 FLAC_plugin__tags_delete_tag(tags_, "DESCRIPTION"); | |
191 FLAC_plugin__tags_delete_tag(tags_, "GENRE"); | |
192 | |
193 FLAC_plugin__tags_set(current_filename, tags_); | |
194 gtk_widget_destroy(window); | |
195 } | |
196 | |
197 static void show_file_info() | |
198 { | |
199 FLAC__StreamMetadata streaminfo; | |
200 struct stat _stat; | |
201 | |
202 gtk_label_set_text(GTK_LABEL(flac_samplerate), ""); | |
203 gtk_label_set_text(GTK_LABEL(flac_channels), ""); | |
204 gtk_label_set_text(GTK_LABEL(flac_bits_per_sample), ""); | |
205 gtk_label_set_text(GTK_LABEL(flac_blocksize), ""); | |
206 gtk_label_set_text(GTK_LABEL(flac_filesize), ""); | |
207 gtk_label_set_text(GTK_LABEL(flac_samples), ""); | |
208 gtk_label_set_text(GTK_LABEL(flac_bitrate), ""); | |
209 | |
210 if(!FLAC__metadata_get_streaminfo(current_filename, &streaminfo)) { | |
211 return; | |
212 } | |
213 | |
214 label_set_text(flac_samplerate, _("Samplerate: %d Hz"), streaminfo.data.stream_info.sample_rate); | |
215 label_set_text(flac_channels, _("Channels: %d"), streaminfo.data.stream_info.channels); | |
216 label_set_text(flac_bits_per_sample, _("Bits/Sample: %d"), streaminfo.data.stream_info.bits_per_sample); | |
217 if(streaminfo.data.stream_info.min_blocksize == streaminfo.data.stream_info.max_blocksize) | |
218 label_set_text(flac_blocksize, _("Blocksize: %d"), streaminfo.data.stream_info.min_blocksize); | |
219 else | |
220 label_set_text(flac_blocksize, _("Blocksize: variable\n min/max: %d/%d"), streaminfo.data.stream_info.min_blocksize, streaminfo.data.stream_info.max_blocksize); | |
221 | |
222 if (streaminfo.data.stream_info.total_samples) | |
223 label_set_text(flac_samples, _("Samples: %llu\nLength: %d:%.2d"), | |
224 streaminfo.data.stream_info.total_samples, | |
225 (int)(streaminfo.data.stream_info.total_samples / streaminfo.data.stream_info.sample_rate / 60), | |
226 (int)(streaminfo.data.stream_info.total_samples / streaminfo.data.stream_info.sample_rate % 60)); | |
227 | |
228 if(!stat(current_filename, &_stat) && S_ISREG(_stat.st_mode)) { | |
229 label_set_text(flac_filesize, _("Filesize: %ld B"), _stat.st_size); | |
230 if (streaminfo.data.stream_info.total_samples) | |
231 label_set_text(flac_bitrate, _("Avg. bitrate: %.1f kb/s\nCompression ratio: %.1f%%"), | |
232 8.0 * (float)(_stat.st_size) / (1000.0 * (float)streaminfo.data.stream_info.total_samples / (float)streaminfo.data.stream_info.sample_rate), | |
233 100.0 * (float)_stat.st_size / (float)(streaminfo.data.stream_info.bits_per_sample / 8 * streaminfo.data.stream_info.channels * streaminfo.data.stream_info.total_samples)); | |
234 } | |
235 } | |
236 | |
237 void FLAC_XMMS__file_info_box(char *filename) | |
238 { | |
239 unsigned i; | |
240 gchar *title; | |
1139
9563c642d436
[svn] - convert filenames to UTF-8, as in vorbis plugin. Patch by: Kazuki Shimura <kazuki@ma.ccnw.ne.jp>.
nenolod
parents:
251
diff
changeset
|
241 gchar *filename_utf8; |
61 | 242 |
243 if (!window) | |
244 { | |
245 GtkWidget *vbox, *hbox, *left_vbox, *table; | |
246 GtkWidget *flac_frame, *flac_box; | |
247 GtkWidget *label, *filename_hbox; | |
248 GtkWidget *bbox, *save, *remove, *cancel; | |
249 | |
250 window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
251 gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE); | |
252 gtk_signal_connect(GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &window); | |
253 gtk_container_set_border_width(GTK_CONTAINER(window), 10); | |
254 | |
255 vbox = gtk_vbox_new(FALSE, 10); | |
256 gtk_container_add(GTK_CONTAINER(window), vbox); | |
257 | |
258 filename_hbox = gtk_hbox_new(FALSE, 5); | |
259 gtk_box_pack_start(GTK_BOX(vbox), filename_hbox, FALSE, TRUE, 0); | |
260 | |
261 label = gtk_label_new(_("Filename:")); | |
262 gtk_box_pack_start(GTK_BOX(filename_hbox), label, FALSE, TRUE, 0); | |
263 filename_entry = gtk_entry_new(); | |
264 gtk_editable_set_editable(GTK_EDITABLE(filename_entry), FALSE); | |
265 gtk_box_pack_start(GTK_BOX(filename_hbox), filename_entry, TRUE, TRUE, 0); | |
266 | |
267 hbox = gtk_hbox_new(FALSE, 10); | |
268 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); | |
269 | |
270 left_vbox = gtk_vbox_new(FALSE, 10); | |
271 gtk_box_pack_start(GTK_BOX(hbox), left_vbox, FALSE, FALSE, 0); | |
272 | |
273 tag_frame = gtk_frame_new(_("Tag:")); | |
274 gtk_box_pack_start(GTK_BOX(left_vbox), tag_frame, FALSE, FALSE, 0); | |
275 | |
276 table = gtk_table_new(5, 5, FALSE); | |
277 gtk_container_set_border_width(GTK_CONTAINER(table), 5); | |
278 gtk_container_add(GTK_CONTAINER(tag_frame), table); | |
279 | |
280 label = gtk_label_new(_("Title:")); | |
281 gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); | |
282 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 5, 5); | |
283 | |
284 title_entry = gtk_entry_new(); | |
285 gtk_table_attach(GTK_TABLE(table), title_entry, 1, 4, 0, 1, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); | |
286 | |
287 label = gtk_label_new(_("Artist:")); | |
288 gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); | |
289 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 5, 5); | |
290 | |
291 artist_entry = gtk_entry_new(); | |
292 gtk_table_attach(GTK_TABLE(table), artist_entry, 1, 4, 1, 2, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); | |
293 | |
294 label = gtk_label_new(_("Album:")); | |
295 gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); | |
296 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3, GTK_FILL, GTK_FILL, 5, 5); | |
297 | |
298 album_entry = gtk_entry_new(); | |
299 gtk_table_attach(GTK_TABLE(table), album_entry, 1, 4, 2, 3, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); | |
300 | |
301 label = gtk_label_new(_("Comment:")); | |
302 gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); | |
303 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 3, 4, GTK_FILL, GTK_FILL, 5, 5); | |
304 | |
305 comment_entry = gtk_entry_new(); | |
306 gtk_table_attach(GTK_TABLE(table), comment_entry, 1, 4, 3, 4, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); | |
307 | |
308 label = gtk_label_new(_("Date:")); | |
309 gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); | |
310 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 4, 5, GTK_FILL, GTK_FILL, 5, 5); | |
311 | |
312 date_entry = gtk_entry_new(); | |
313 gtk_widget_set_usize(date_entry, 40, -1); | |
314 gtk_table_attach(GTK_TABLE(table), date_entry, 1, 2, 4, 5, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); | |
315 | |
316 label = gtk_label_new(_("Track number:")); | |
317 gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); | |
318 gtk_table_attach(GTK_TABLE(table), label, 2, 3, 4, 5, GTK_FILL, GTK_FILL, 5, 5); | |
319 | |
320 tracknum_entry = gtk_entry_new(); | |
321 gtk_widget_set_usize(tracknum_entry, 40, -1); | |
322 gtk_table_attach(GTK_TABLE(table), tracknum_entry, 3, 4, 4, 5, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); | |
323 | |
324 label = gtk_label_new(_("Genre:")); | |
325 gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); | |
326 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 5, 6, GTK_FILL, GTK_FILL, 5, 5); | |
327 | |
328 genre_combo = gtk_combo_new(); | |
329 gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(genre_combo)->entry), TRUE); | |
330 | |
331 if (!genre_list) | |
332 { | |
333 for (i = 0; i < sizeof(vorbis_genres) / sizeof(*vorbis_genres) ; i++) | |
334 genre_list = g_list_prepend(genre_list, (char *)vorbis_genres[i]); | |
335 genre_list = g_list_prepend(genre_list, ""); | |
336 genre_list = g_list_sort(genre_list, (GCompareFunc)g_strcasecmp); | |
337 } | |
338 gtk_combo_set_popdown_strings(GTK_COMBO(genre_combo), genre_list); | |
339 | |
340 gtk_table_attach(GTK_TABLE(table), genre_combo, 1, 4, 5, 6, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); | |
341 | |
342 bbox = gtk_hbutton_box_new(); | |
343 gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); | |
344 gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); | |
345 gtk_box_pack_start(GTK_BOX(left_vbox), bbox, FALSE, FALSE, 0); | |
346 | |
347 save = gtk_button_new_with_label(_("Save")); | |
348 gtk_signal_connect(GTK_OBJECT(save), "clicked", GTK_SIGNAL_FUNC(save_tag), NULL); | |
349 GTK_WIDGET_SET_FLAGS(save, GTK_CAN_DEFAULT); | |
350 gtk_box_pack_start(GTK_BOX(bbox), save, TRUE, TRUE, 0); | |
351 gtk_widget_grab_default(save); | |
352 | |
353 remove= gtk_button_new_with_label(_("Remove Tag")); | |
354 gtk_signal_connect(GTK_OBJECT(remove), "clicked", GTK_SIGNAL_FUNC(remove_tag), NULL); | |
355 GTK_WIDGET_SET_FLAGS(remove, GTK_CAN_DEFAULT); | |
356 gtk_box_pack_start(GTK_BOX(bbox), remove, TRUE, TRUE, 0); | |
357 | |
358 cancel = gtk_button_new_with_label(_("Cancel")); | |
359 gtk_signal_connect_object(GTK_OBJECT(cancel), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(window)); | |
360 GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT); | |
361 gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 0); | |
362 | |
363 flac_frame = gtk_frame_new(_("FLAC Info:")); | |
364 gtk_box_pack_start(GTK_BOX(hbox), flac_frame, FALSE, FALSE, 0); | |
365 | |
366 flac_box = gtk_vbox_new(FALSE, 5); | |
367 gtk_container_add(GTK_CONTAINER(flac_frame), flac_box); | |
368 gtk_container_set_border_width(GTK_CONTAINER(flac_box), 10); | |
369 gtk_box_set_spacing(GTK_BOX(flac_box), 0); | |
370 | |
371 flac_samplerate = gtk_label_new(""); | |
372 gtk_misc_set_alignment(GTK_MISC(flac_samplerate), 0, 0); | |
373 gtk_label_set_justify(GTK_LABEL(flac_samplerate), GTK_JUSTIFY_LEFT); | |
374 gtk_box_pack_start(GTK_BOX(flac_box), flac_samplerate, FALSE, FALSE, 0); | |
375 | |
376 flac_channels = gtk_label_new(""); | |
377 gtk_misc_set_alignment(GTK_MISC(flac_channels), 0, 0); | |
378 gtk_label_set_justify(GTK_LABEL(flac_channels), GTK_JUSTIFY_LEFT); | |
379 gtk_box_pack_start(GTK_BOX(flac_box), flac_channels, FALSE, FALSE, 0); | |
380 | |
381 flac_bits_per_sample = gtk_label_new(""); | |
382 gtk_misc_set_alignment(GTK_MISC(flac_bits_per_sample), 0, 0); | |
383 gtk_label_set_justify(GTK_LABEL(flac_bits_per_sample), GTK_JUSTIFY_LEFT); | |
384 gtk_box_pack_start(GTK_BOX(flac_box), flac_bits_per_sample, FALSE, FALSE, 0); | |
385 | |
386 flac_blocksize = gtk_label_new(""); | |
387 gtk_misc_set_alignment(GTK_MISC(flac_blocksize), 0, 0); | |
388 gtk_label_set_justify(GTK_LABEL(flac_blocksize), GTK_JUSTIFY_LEFT); | |
389 gtk_box_pack_start(GTK_BOX(flac_box), flac_blocksize, FALSE, FALSE, 0); | |
390 | |
391 flac_filesize = gtk_label_new(""); | |
392 gtk_misc_set_alignment(GTK_MISC(flac_filesize), 0, 0); | |
393 gtk_label_set_justify(GTK_LABEL(flac_filesize), GTK_JUSTIFY_LEFT); | |
394 gtk_box_pack_start(GTK_BOX(flac_box), flac_filesize, FALSE, FALSE, 0); | |
395 | |
396 flac_samples = gtk_label_new(""); | |
397 gtk_misc_set_alignment(GTK_MISC(flac_samples), 0, 0); | |
398 gtk_label_set_justify(GTK_LABEL(flac_samples), GTK_JUSTIFY_LEFT); | |
399 gtk_box_pack_start(GTK_BOX(flac_box), flac_samples, FALSE, FALSE, 0); | |
400 | |
401 flac_bitrate = gtk_label_new(""); | |
402 gtk_misc_set_alignment(GTK_MISC(flac_bitrate), 0, 0); | |
403 gtk_label_set_justify(GTK_LABEL(flac_bitrate), GTK_JUSTIFY_LEFT); | |
404 gtk_box_pack_start(GTK_BOX(flac_box), flac_bitrate, FALSE, FALSE, 0); | |
405 | |
406 gtk_widget_show_all(window); | |
407 } | |
408 | |
409 if(current_filename) | |
410 g_free(current_filename); | |
411 if(!(current_filename = g_strdup(filename))) | |
412 return; | |
413 | |
1139
9563c642d436
[svn] - convert filenames to UTF-8, as in vorbis plugin. Patch by: Kazuki Shimura <kazuki@ma.ccnw.ne.jp>.
nenolod
parents:
251
diff
changeset
|
414 filename_utf8 = filename_to_utf8(current_filename); |
9563c642d436
[svn] - convert filenames to UTF-8, as in vorbis plugin. Patch by: Kazuki Shimura <kazuki@ma.ccnw.ne.jp>.
nenolod
parents:
251
diff
changeset
|
415 title = g_strdup_printf(_("File Info - %s"), g_basename(filename_utf8)); |
61 | 416 gtk_window_set_title(GTK_WINDOW(window), title); |
417 g_free(title); | |
418 | |
1139
9563c642d436
[svn] - convert filenames to UTF-8, as in vorbis plugin. Patch by: Kazuki Shimura <kazuki@ma.ccnw.ne.jp>.
nenolod
parents:
251
diff
changeset
|
419 gtk_entry_set_text(GTK_ENTRY(filename_entry), filename_utf8); |
61 | 420 gtk_editable_set_position(GTK_EDITABLE(filename_entry), -1); |
421 | |
1139
9563c642d436
[svn] - convert filenames to UTF-8, as in vorbis plugin. Patch by: Kazuki Shimura <kazuki@ma.ccnw.ne.jp>.
nenolod
parents:
251
diff
changeset
|
422 g_free(filename_utf8); |
9563c642d436
[svn] - convert filenames to UTF-8, as in vorbis plugin. Patch by: Kazuki Shimura <kazuki@ma.ccnw.ne.jp>.
nenolod
parents:
251
diff
changeset
|
423 |
61 | 424 if(tags_) |
425 FLAC_plugin__tags_destroy(&tags_); | |
426 | |
427 FLAC_plugin__tags_get(current_filename, &tags_); | |
428 | |
429 show_tag(); | |
430 show_file_info(); | |
431 | |
432 gtk_widget_set_sensitive(tag_frame, TRUE); | |
433 } |