changeset 3953:de76dbec8e1e

Automated merge with file:/home/ccr/audacious/core
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 16 Nov 2007 05:36:42 +0200
parents 4f6c614aee5d (current diff) 57ff64831bec (diff)
children 7afbcd87cd65
files Skins/Classic/.depend Skins/Classic/.depend-done Skins/Default/.depend Skins/Default/.depend-done Skins/Ivory/.depend Skins/Ivory/.depend-done Skins/Osmosis/.depend Skins/Osmosis/.depend-done Skins/TinyPlayer/.depend Skins/TinyPlayer/.depend-done pixmaps/.depend pixmaps/.depend-done po/ChangeLog src/audacious/memorypool.c src/audacious/memorypool.h
diffstat 237 files changed, 5239 insertions(+), 3458 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Wed Oct 24 10:41:53 2007 +0300
+++ b/.hgtags	Fri Nov 16 05:36:42 2007 +0200
@@ -5,3 +5,4 @@
 e00e1ab06ba63ac4122d2b122b072e299f2ab3f9 audacious-1.4.0-dr3
 45f44e987b127ce4610d9b0c9c3a6463c496f67d audacious-1.4.0-dr3
 2835f4f3f38801e11778570245ddddded73d3102 audacious-1.4.0-beta2
+2f0eaf15300baa2bb2267101fd35a6fc49f2bb3c audacious-1.4.0
--- a/AUTHORS	Wed Oct 24 10:41:53 2007 +0300
+++ b/AUTHORS	Fri Nov 16 05:36:42 2007 +0200
@@ -7,11 +7,13 @@
 Kieran Clancy <clancy.kieran+audacious@gmail.com>
 Michael Färber <0102@gmx.at>
 Giacomo Lozito <james@develia.org>
+Tomasz Moń <desowin@gmail.com>
 William Pitcock <nenolod@sacredspiral.co.uk>
 Derek Pomery <nemo@m8y.org>
 Mohammed Sameer <msameer@foolab.org>
-Jonathan Schleifer <js@h3c.de>
+Jonathan Schleifer <js-audacious@webkeks.org>
 Stephen Sokolow <deitarion@gmail.com>
+Ben Tucker <ben@tucker.org>
 Tony Vroon <chainsaw@gentoo.org>
 Yoshiki Yazawa <yaz@cc.or.rim.jp>
 
--- a/ChangeLog	Wed Oct 24 10:41:53 2007 +0300
+++ b/ChangeLog	Fri Nov 16 05:36:42 2007 +0200
@@ -128,7 +128,7 @@
   1 file changed, 4 insertions(+), 4 deletions(-)
 
 
-2007-06-01 23:02:59 +0000  Jonathan Schleifer <js@h3c.de>
+2007-06-01 23:02:59 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [4660]
   FreeBSD make doesn't support -include. Revert until it's fixed.
   
@@ -136,7 +136,7 @@
   1 file changed, 1 insertion(+), 1 deletion(-)
 
 
-2007-06-01 22:45:56 +0000  Jonathan Schleifer <js@h3c.de>
+2007-06-01 22:45:56 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [4658]
   - Fixed annoying ".depend: No such file or directory".
   - Removed /.depend.
@@ -445,7 +445,7 @@
   0 files changed
 
 
-2007-05-18 21:01:45 +0000  Jonathan Schleifer <js@h3c.de>
+2007-05-18 21:01:45 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [4586]
   Moved migrate_config.sh to contrib.
   trunk/contrib/migrate_config.sh |   28 ++++++++++++++++++++++++++++
@@ -1698,7 +1698,7 @@
   1 file changed, 3 insertions(+), 4 deletions(-)
 
 
-2007-03-26 16:21:40 +0000  Jonathan Schleifer <js@h3c.de>
+2007-03-26 16:21:40 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [4312]
   Don't show a warning dialog when trying to add .{jpeg,jpg,txt} files.
   
@@ -2522,7 +2522,7 @@
   1 file changed, 1 insertion(+), 1 deletion(-)
 
 
-2007-02-20 12:54:56 +0000  Jonathan Schleifer <js@h3c.de>
+2007-02-20 12:54:56 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [4118]
   Use VFS.
   trunk/src/libid3tag/file.c |    2 +-
@@ -3274,21 +3274,21 @@
   1 file changed, 7 insertions(+), 1 deletion(-)
 
 
-2007-02-07 18:06:49 +0000  Jonathan Schleifer <js@h3c.de>
+2007-02-07 18:06:49 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [3976]
   (I really hate my shell's escaping, ignore this)
   trunk/ChangeLog |    2 +-
   1 file changed, 1 insertion(+), 1 deletion(-)
 
 
-2007-02-07 18:05:19 +0000  Jonathan Schleifer <js@h3c.de>
+2007-02-07 18:05:19 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [3974]
   Too much was reverted here. Removing the " around %U would've been sufficient.
   trunk/src/audacious/audacious.desktop.in |    2 +-
   1 file changed, 1 insertion(+), 1 deletion(-)
 
 
-2007-02-07 15:49:45 +0000  Jonathan Schleifer <js@h3c.de>
+2007-02-07 15:49:45 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [3972]
   Reverted rev 3958 - it breaks opening files with nautilus completely
   trunk/src/audacious/audacious.desktop.in |    2 +-
@@ -4667,14 +4667,14 @@
   2 files changed, 21 insertions(+), 19 deletions(-)
 
 
-2007-01-16 19:12:11 +0000  Jonathan Schleifer <js@h3c.de>
+2007-01-16 19:12:11 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [3710]
   D'oh. I was really too tired when I wrote this. Fixed stupid bugs.
   trunk/migrate_config.sh |    8 ++++----
   1 file changed, 4 insertions(+), 4 deletions(-)
 
 
-2007-01-16 18:35:30 +0000  Jonathan Schleifer <js@h3c.de>
+2007-01-16 18:35:30 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [3708]
   Replaced intricate part.
   trunk/migrate_config.sh |    8 ++++----
@@ -4850,14 +4850,14 @@
   1 file changed, 1 insertion(+)
 
 
-2007-01-14 01:02:39 +0000  Jonathan Schleifer <js@h3c.de>
+2007-01-14 01:02:39 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [3668]
   Fixed make install.
   trunk/Makefile |    4 +---
   1 file changed, 1 insertion(+), 3 deletions(-)
 
 
-2007-01-14 00:41:21 +0000  Jonathan Schleifer <js@h3c.de>
+2007-01-14 00:41:21 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [3666]
   - Added script for migration to XDG basedir.
   - Fixed tons of warnings.
@@ -4877,14 +4877,14 @@
   12 files changed, 49 insertions(+), 28 deletions(-)
 
 
-2007-01-14 00:09:38 +0000  Jonathan Schleifer <js@h3c.de>
+2007-01-14 00:09:38 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [3664]
   Fixed: audtool.c:883: warning: implicit declaration of function 'strncmp'
   trunk/src/audtool/audtool.c |    1 +
   1 file changed, 1 insertion(+)
 
 
-2007-01-14 00:07:48 +0000  Jonathan Schleifer <js@h3c.de>
+2007-01-14 00:07:48 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [3662]
   Fixed: configdb_rcfile.c:57: warning: suggest parentheses around assignment used as truth value
   trunk/src/libaudacious/configdb_rcfile.c |    2 +-
@@ -4952,14 +4952,14 @@
   1 file changed, 25 insertions(+), 25 deletions(-)
 
 
-2007-01-13 17:34:48 +0000  Jonathan Schleifer <js@h3c.de>
+2007-01-13 17:34:48 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [3648]
   Fix missing s
   trunk/src/audacious/main.c |    2 +-
   1 file changed, 1 insertion(+), 1 deletion(-)
 
 
-2007-01-13 17:33:35 +0000  Jonathan Schleifer <js@h3c.de>
+2007-01-13 17:33:35 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [3646]
   Remove old shit.
   trunk/configure.ac                       |    3 +--
@@ -4967,7 +4967,7 @@
   2 files changed, 2 insertions(+), 17 deletions(-)
 
 
-2007-01-13 17:19:52 +0000  Jonathan Schleifer <js@h3c.de>
+2007-01-13 17:19:52 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [3644]
   Full support for XDG basedir added. The old config doesn't get automatically converted yet.
   trunk/src/audacious/main.c            |   66 +++++++++++++++++++++++-----------
@@ -4976,14 +4976,14 @@
   3 files changed, 48 insertions(+), 34 deletions(-)
 
 
-2007-01-12 20:33:07 +0000  Jonathan Schleifer <js@h3c.de>
+2007-01-12 20:33:07 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [3642]
   Same for -pipe.
   trunk/configure.ac |    2 +-
   1 file changed, 1 insertion(+), 1 deletion(-)
 
 
-2007-01-12 20:32:12 +0000  Jonathan Schleifer <js@h3c.de>
+2007-01-12 20:32:12 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [3640]
   Add -Wall to CFLAGS by default if the CC is gcc
   trunk/configure.ac |    2 ++
@@ -5183,7 +5183,7 @@
   176 files changed, 52955 insertions(+), 52937 deletions(-)
 
 
-2007-01-11 13:47:16 +0000  Jonathan Schleifer <js@h3c.de>
+2007-01-11 13:47:16 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [3634]
   Added #ifdefs around $HOME/.audacious compatibility code
   trunk/configure.ac                   |    1 +
@@ -5253,14 +5253,14 @@
   1 file changed, 1 insertion(+), 1 deletion(-)
 
 
-2007-01-09 22:53:19 +0000  Jonathan Schleifer <js@h3c.de>
+2007-01-09 22:53:19 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [3618]
   Fuck, I forgot to quote the $ in the commit msg, so my home was in the ChangeLog.
   trunk/ChangeLog |    2 +-
   1 file changed, 1 insertion(+), 1 deletion(-)
 
 
-2007-01-09 22:51:38 +0000  Jonathan Schleifer <js@h3c.de>
+2007-01-09 22:51:38 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [3616]
   Initial XDG basedir support.
   trunk/libaudacious/configdb_rcfile.c |   23 ++++++++++++++++++++---
@@ -5274,7 +5274,7 @@
   1 file changed, 1 insertion(+), 1 deletion(-)
 
 
-2007-01-09 15:45:01 +0000  Jonathan Schleifer <js@h3c.de>
+2007-01-09 15:45:01 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [3612]
   Change $HOME/.audacious to $HOME/.config/audacious
   trunk/configure.ac |    2 +-
@@ -5374,7 +5374,7 @@
   2 files changed, 3 insertions(+), 12 deletions(-)
 
 
-2007-01-07 22:14:14 +0000  Jonathan Schleifer <js@h3c.de>
+2007-01-07 22:14:14 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [3594]
   WTF addr? ITYM ptr!
   trunk/audacious/memorypool.c |    2 +-
@@ -8476,7 +8476,7 @@
   1 file changed, 17 insertions(+), 22 deletions(-)
 
 
-2006-11-24 17:49:06 +0000  Jonathan Schleifer <js@h3c.de>
+2006-11-24 17:49:06 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [3003]
   Fixed wrong help, it has to be --with-rc-path.
   Found by Benny Siegert <bsiegert@gmx.de>
@@ -8654,7 +8654,7 @@
   1 file changed, 40 insertions(+), 2030 deletions(-)
 
 
-2006-11-19 18:50:21 +0000  Jonathan Schleifer <js@h3c.de>
+2006-11-19 18:50:21 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2963]
   Fixed broken Classic skin.
   
@@ -9953,7 +9953,7 @@
   1 file changed, 8 insertions(+), 7 deletions(-)
 
 
-2006-10-07 20:31:15 +0000  Jonathan Schleifer <js@h3c.de>
+2006-10-07 20:31:15 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2641]
   - Replace ?= at CFLAGS, CPPFLAGS and CXXFLAGS with +=
   - Replace ?= at CC, CPP and CXX with =
@@ -10292,7 +10292,7 @@
   3 files changed, 301 insertions(+), 13 deletions(-)
 
 
-2006-10-05 04:05:51 +0000  Jonathan Schleifer <js@h3c.de>
+2006-10-05 04:05:51 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2563]
   WTF, and now even a typo in the ChangeLog! (Fixed.)
   
@@ -10300,7 +10300,7 @@
   1 file changed, 1 insertion(+), 1 deletion(-)
 
 
-2006-10-05 04:04:50 +0000  Jonathan Schleifer <js@h3c.de>
+2006-10-05 04:04:50 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2561]
   Just saw that it's ordered by last name. Of course, I was too blind
   to see that and just added myself at the wrong place. oO
@@ -10309,7 +10309,7 @@
   1 file changed, 2 insertions(+), 2 deletions(-)
 
 
-2006-10-05 04:02:06 +0000  Jonathan Schleifer <js@h3c.de>
+2006-10-05 04:02:06 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2559]
   Just saw that we have an AUTHORS file here as well, so I added myself
   here, too.
@@ -10469,7 +10469,7 @@
   4 files changed, 25 insertions(+), 11 deletions(-)
 
 
-2006-10-04 19:47:37 +0000  Jonathan Schleifer <js@h3c.de>
+2006-10-04 19:47:37 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2523]
   The default values for old skins were wrong. But since changing from
   the new skin to an old doesn't work anyway, we can set these to 0 so
@@ -10964,7 +10964,7 @@
   +1 -1           trunk/configure.ac  
 
 
-2006-09-17 02:37:08 +0000  Jonathan Schleifer <js@h3c.de>
+2006-09-17 02:37:08 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2395]
   Fixed unused variable and missing type conversion
 
@@ -10973,7 +10973,7 @@
   +4 -2           trunk/Plugins/Visualization/paranormal/client.c  
 
 
-2006-09-17 02:21:06 +0000  Jonathan Schleifer <js@h3c.de>
+2006-09-17 02:21:06 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2393]
   Add #undef FSCALE, since it's already defined on OpenBSD
 
@@ -10981,7 +10981,7 @@
   +1 -0           trunk/Plugins/Input/timidity/libtimidity/options.h  
 
 
-2006-09-17 02:18:59 +0000  Jonathan Schleifer <js@h3c.de>
+2006-09-17 02:18:59 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2391]
   #undef TRUE and FALSE before inclusion of mpcdec.h since both, GTK and mpcdev, define this, which leads to a hard error on OpenBSD
 
@@ -10989,7 +10989,7 @@
   +2 -0           trunk/Plugins/Input/musepack/libmpc.h  
 
 
-2006-09-17 02:13:26 +0000  Jonathan Schleifer <js@h3c.de>
+2006-09-17 02:13:26 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2389]
   #undef ALIGN, since it's already defined on OpenBSD.
 
@@ -10997,7 +10997,7 @@
   +1 -0           trunk/Plugins/Input/wma/libffwma/utils.c  
 
 
-2006-09-17 02:10:07 +0000  Jonathan Schleifer <js@h3c.de>
+2006-09-17 02:10:07 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2387]
   Seems like someone did a fix for Linux' iconv like I did for BSD's in another file. Added an #ifdef here, too.
 
@@ -11005,7 +11005,7 @@
   +4 -0           trunk/Plugins/Input/flac/plugin_common/charset.c  
 
 
-2006-09-17 01:58:23 +0000  Jonathan Schleifer <js@h3c.de>
+2006-09-17 01:58:23 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2385]
   nenolod's fix for the soundcard.h check was incomplete, fixed
 
@@ -11061,7 +11061,7 @@
   +0 -58          trunk/Plugins/Input/wma/libffwma/mms.c  
 
 
-2006-09-17 00:17:22 +0000  Jonathan Schleifer <js@h3c.de>
+2006-09-17 00:17:22 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2373]
   Fixed a LOT of warnings showing up with -Wall. This is the first step
   towards making Audacious compile with -Wall -Werror, but it's still far
@@ -11085,7 +11085,7 @@
   +3 -3           trunk/Plugins/Input/wma/libffwma/futils.c  
 
 
-2006-09-16 23:26:54 +0000  Jonathan Schleifer <js@h3c.de>
+2006-09-16 23:26:54 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2371]
   Fixed a lot of warnings that only showed up on *BSD.
 
@@ -11109,7 +11109,7 @@
   +1 -1           trunk/configure.ac  
 
 
-2006-09-16 17:08:23 +0000  Jonathan Schleifer <js@h3c.de>
+2006-09-16 17:08:23 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2367]
   Fixed 3 warnings, 2 unused variables and 1 missing include
 
@@ -11126,7 +11126,7 @@
   +4 -3           trunk/Plugins/Input/cue/cuesheet.c  
 
 
-2006-09-16 14:33:28 +0000  Jonathan Schleifer <js@h3c.de>
+2006-09-16 14:33:28 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2363]
   More .cpp -> .cxx. Noticed by Chainsaw. Shame on me that I forgot some ;).
   
@@ -11339,7 +11339,7 @@
   +0 -1           trunk/audacious/Makefile  
 
 
-2006-09-15 15:01:40 +0000  Jonathan Schleifer <js@h3c.de>
+2006-09-15 15:01:40 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2331]
   This adds -lossaudio to the OSS and esd plugin on platforms having that libs. With this, Audacious finally build & runs perfectly on OpenBSD.
   
@@ -11360,7 +11360,7 @@
   +2 -2           trunk/audacious/mainwin.c  
 
 
-2006-09-15 13:36:26 +0000  Jonathan Schleifer <js@h3c.de>
+2006-09-15 13:36:26 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2327]
   - Removed .cpp.o target since we don't have any .cpp files anymore.
   - A test build then revealed that we still had two .cpp files in
@@ -11391,7 +11391,7 @@
   +2 -0           trunk/mk/init.mk  
 
 
-2006-09-14 20:56:35 +0000  Jonathan Schleifer <js@h3c.de>
+2006-09-14 20:56:35 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2323]
   * One more .cpp -> .cxx
   * Changed sinclude -> include for OpenBSD make compatibility
@@ -11406,7 +11406,7 @@
   +0 -5           trunk/mk/objective.mk  
 
 
-2006-09-14 20:38:05 +0000  Jonathan Schleifer <js@h3c.de>
+2006-09-14 20:38:05 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2321]
   Forgot to change .cpp -> .cxx in the Makefile.in. Shame on me...
   
@@ -11415,7 +11415,7 @@
   +35 -35         trunk/Plugins/Input/console/Makefile.in  
 
 
-2006-09-14 20:33:10 +0000  Jonathan Schleifer <js@h3c.de>
+2006-09-14 20:33:10 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2319]
   .cpp -> .cxx
   This has the nice side effect that we don't need to add .cpp to .SUFFIXES for OpenBSD.
@@ -11467,7 +11467,7 @@
   +4 -4           trunk/audacious/playlist.c  
 
 
-2006-09-14 15:46:01 +0000  Jonathan Schleifer <js@h3c.de>
+2006-09-14 15:46:01 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2315]
   Install audacious_player.xpm as well, so one can use it as a desktop icon.
   Requested by Jan Schummers <darkadmiral@onlinehome.de>.
@@ -11477,7 +11477,7 @@
   +1 -0           trunk/audacious/images/Makefile.in  
 
 
-2006-09-14 14:50:44 +0000  Jonathan Schleifer <js@h3c.de>
+2006-09-14 14:50:44 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2313]
   Made the content of the password field in the AudioScrobbler plugin invisible.
   
@@ -11486,7 +11486,7 @@
   +1 -0           trunk/Plugins/General/scrobbler/configure.c  
 
 
-2006-09-14 14:40:39 +0000  Jonathan Schleifer <js@h3c.de>
+2006-09-14 14:40:39 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2311]
   Just saw another bug in the same line. The if was always false.
   
@@ -11495,7 +11495,7 @@
   +1 -1           trunk/mk/objective.mk  
 
 
-2006-09-14 14:38:06 +0000  Jonathan Schleifer <js@h3c.de>
+2006-09-14 14:38:06 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2309]
   Fixed mk/objective.mk so that there won't be any
   [: ==: unexpected operator
@@ -11536,7 +11536,7 @@
   +12 -0          trunk/libaudacious/vfs_stdio.c  
 
 
-2006-09-13 21:01:54 +0000  Jonathan Schleifer <js@h3c.de>
+2006-09-13 21:01:54 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2301]
   Added BSD make to the recommended make versions since it's officially supported now.
   
@@ -11554,7 +11554,7 @@
   +1 -1           trunk/ChangeLog  
 
 
-2006-09-13 20:56:08 +0000  Jonathan Schleifer <js@h3c.de>
+2006-09-13 20:56:08 +0000  Jonathan Schleifer <js-audacious@webkeks.org>
   revision [2297]
   Fixed some Makefiles to make it work with BSD make.
   I checked that it doesn't break gmake (compile & run works).
@@ -11571,7 +11571,7 @@
 
 2006-09-13 18:03:25 +0000  Tony Vroon <chainsaw@gentoo.org>
   revision [2295]
-  Link C++ plugins correctly on *BSD, by Jonathan Schleifer <js@h3c.de>.
+  Link C++ plugins correctly on *BSD, by Jonathan Schleifer <js-audacious@webkeks.org>.
 
   Changes:        Modified:
   +1 -1           trunk/Plugins/Input/modplug/gui/support.h  
@@ -11580,7 +11580,7 @@
 
 2006-09-13 16:40:07 +0000  Tony Vroon <chainsaw@gentoo.org>
   revision [2293]
-  Remove built-in soundcard.h silliness so OSS actually works on *BSD, by Jonathan Schleifer <js@h3c.de>.
+  Remove built-in soundcard.h silliness so OSS actually works on *BSD, by Jonathan Schleifer <js-audacious@webkeks.org>.
 
   Changes:        Modified:
   +5 -1           trunk/Plugins/Input/cdaudio/cdaudio.h  
@@ -11598,7 +11598,7 @@
 
 2006-09-13 15:06:57 +0000  Tony Vroon <chainsaw@gentoo.org>
   revision [2289]
-  4-way scroll support in the main window (volume & seek) by Jonathan Schleifer <js@h3c.de>.
+  4-way scroll support in the main window (volume & seek) by Jonathan Schleifer <js-audacious@webkeks.org>.
 
   Changes:        Modified:
   +20 -8          trunk/audacious/mainwin.c  
@@ -11606,7 +11606,7 @@
 
 2006-09-13 13:38:40 +0000  Tony Vroon <chainsaw@gentoo.org>
   revision [2287]
-  Fixes for NetBSD by Jonathan Schleifer <js@h3c.de>
+  Fixes for NetBSD by Jonathan Schleifer <js-audacious@webkeks.org>
 
   Changes:        Modified:
   +2 -0           trunk/Plugins/Container/xspf/xspf.c  
--- a/Makefile	Wed Oct 24 10:41:53 2007 +0300
+++ b/Makefile	Fri Nov 16 05:36:42 2007 +0200
@@ -17,7 +17,24 @@
        Skins/Classic/titlebar.png	\
        Skins/Classic/viscolor.txt	\
        Skins/Classic/volume.png		\
-       Skins/Default/balance.png	\
+       Skins/Classic1.3/balance.png	\
+       Skins/Classic1.3/cbuttons.png	\
+       Skins/Classic1.3/eq_ex.png		\
+       Skins/Classic1.3/eqmain.png		\
+       Skins/Classic1.3/main.png		\
+       Skins/Classic1.3/monoster.png	\
+       Skins/Classic1.3/nums_ex.png	\
+       Skins/Classic1.3/playpaus.png	\
+       Skins/Classic1.3/pledit.png		\
+       Skins/Classic1.3/pledit.txt		\
+       Skins/Classic1.3/posbar.png		\
+       Skins/Classic1.3/shufrep.png	\
+       Skins/Classic1.3/skin-classic.hints	\
+       Skins/Classic1.3/skin.hints		\
+       Skins/Classic1.3/text.png		\
+       Skins/Classic1.3/titlebar.png	\
+       Skins/Classic1.3/viscolor.txt	\
+       Skins/Classic1.3/volume.png		\
        Skins/Default/cbuttons.png	\
        Skins/Default/eq_ex.png		\
        Skins/Default/eqmain.png		\
@@ -29,12 +46,106 @@
        Skins/Default/pledit.txt		\
        Skins/Default/posbar.png		\
        Skins/Default/shufrep.png	\
-       Skins/Default/skin-classic.hints	\
        Skins/Default/skin.hints		\
        Skins/Default/text.png		\
        Skins/Default/titlebar.png	\
        Skins/Default/viscolor.txt	\
        Skins/Default/volume.png		\
+       Skins/Default/gtk-2.0/Arrows/arrow-down.png \
+       Skins/Default/gtk-2.0/Arrows/arrow-insens.png \
+       Skins/Default/gtk-2.0/Arrows/arrow-left.png \
+       Skins/Default/gtk-2.0/Arrows/arrow-right.png \
+       Skins/Default/gtk-2.0/Arrows/arrow-up.png \
+       Skins/Default/gtk-2.0/Buttons/button-insensitive.png \
+       Skins/Default/gtk-2.0/Buttons/button-normal.png \
+       Skins/Default/gtk-2.0/Buttons/button-prelight.png \
+       Skins/Default/gtk-2.0/Check-Radio/check1.png \
+       Skins/Default/gtk-2.0/Check-Radio/check2.png \
+       Skins/Default/gtk-2.0/Check-Radio/check3.png \
+       Skins/Default/gtk-2.0/Check-Radio/check4.png \
+       Skins/Default/gtk-2.0/Check-Radio/check5.png \
+       Skins/Default/gtk-2.0/Check-Radio/check6.png \
+       Skins/Default/gtk-2.0/Check-Radio/option1.png \
+       Skins/Default/gtk-2.0/Check-Radio/option2.png \
+       Skins/Default/gtk-2.0/Check-Radio/option3.png \
+       Skins/Default/gtk-2.0/Check-Radio/option4.png \
+       Skins/Default/gtk-2.0/Check-Radio/option5.png \
+       Skins/Default/gtk-2.0/Check-Radio/option6.png \
+       Skins/Default/gtk-2.0/Frame-Gap/frame-gap-end.png \
+       Skins/Default/gtk-2.0/Frame-Gap/frame-gap-start.png \
+       Skins/Default/gtk-2.0/Frame-Gap/frame.png \
+       Skins/Default/gtk-2.0/Handles/handle-h.png \
+       Skins/Default/gtk-2.0/Handles/handle-v.png \
+       Skins/Default/gtk-2.0/Lines/line-h.png \
+       Skins/Default/gtk-2.0/Lines/line-v.png \
+       Skins/Default/gtk-2.0/ListHeaders/list_header-insens.png \
+       Skins/Default/gtk-2.0/ListHeaders/list_header-prelight.png \
+       Skins/Default/gtk-2.0/ListHeaders/list_header-pressed.png \
+       Skins/Default/gtk-2.0/ListHeaders/list_header.png \
+       Skins/Default/gtk-2.0/Menu-Menubar/menu.png \
+       Skins/Default/gtk-2.0/Menu-Menubar/menubar-item-active.png \
+       Skins/Default/gtk-2.0/Menu-Menubar/menubar-item.png \
+       Skins/Default/gtk-2.0/Menu-Menubar/menubar.png \
+       Skins/Default/gtk-2.0/Others/null.png \
+       Skins/Default/gtk-2.0/Others/ruler.png \
+       Skins/Default/gtk-2.0/Panel/panel-bg.png \
+       Skins/Default/gtk-2.0/ProgressBar/progressbar-horiz.png \
+       Skins/Default/gtk-2.0/ProgressBar/trough-progressbar-horiz.png \
+       Skins/Default/gtk-2.0/Range/slider-horiz-prelight.png \
+       Skins/Default/gtk-2.0/Range/slider-horiz.png \
+       Skins/Default/gtk-2.0/Range/slider-vert-prelight.png \
+       Skins/Default/gtk-2.0/Range/slider-vert.png \
+       Skins/Default/gtk-2.0/Range/trough-horizontal.png \
+       Skins/Default/gtk-2.0/Range/trough-vertical.png \
+       Skins/Default/gtk-2.0/Scrollbars/scroll-thumb-horiz-pre.png \
+       Skins/Default/gtk-2.0/Scrollbars/scroll-thumb-horiz.png \
+       Skins/Default/gtk-2.0/Scrollbars/scroll-thumb-vert-pre.png \
+       Skins/Default/gtk-2.0/Scrollbars/scroll-thumb-vert.png \
+       Skins/Default/gtk-2.0/Scrollbars/slider-horiz-pre.png \
+       Skins/Default/gtk-2.0/Scrollbars/slider-horiz.png \
+       Skins/Default/gtk-2.0/Scrollbars/slider-vert-pre.png \
+       Skins/Default/gtk-2.0/Scrollbars/slider-vert.png \
+       Skins/Default/gtk-2.0/Scrollbars/stepper-down-prelight.png \
+       Skins/Default/gtk-2.0/Scrollbars/stepper-down.png \
+       Skins/Default/gtk-2.0/Scrollbars/stepper-left-prelight.png \
+       Skins/Default/gtk-2.0/Scrollbars/stepper-left.png \
+       Skins/Default/gtk-2.0/Scrollbars/stepper-right-prelight.png \
+       Skins/Default/gtk-2.0/Scrollbars/stepper-right.png \
+       Skins/Default/gtk-2.0/Scrollbars/stepper-up-prelight.png \
+       Skins/Default/gtk-2.0/Scrollbars/stepper-up.png \
+       Skins/Default/gtk-2.0/Scrollbars/trough-scrollbar-horiz.png \
+       Skins/Default/gtk-2.0/Scrollbars/trough-scrollbar-vert.png \
+       Skins/Default/gtk-2.0/Shadows/shadow-in.png \
+       Skins/Default/gtk-2.0/Shadows/shadow-out.png \
+       Skins/Default/gtk-2.0/Shadows/text-.png \
+       Skins/Default/gtk-2.0/Shadows/text-entry.png \
+       Skins/Default/gtk-2.0/Spin/spin-down-disable.png \
+       Skins/Default/gtk-2.0/Spin/spin-down-prelight.png \
+       Skins/Default/gtk-2.0/Spin/spin-down.png \
+       Skins/Default/gtk-2.0/Spin/spin-up-disable.png \
+       Skins/Default/gtk-2.0/Spin/spin-up-prelight.png \
+       Skins/Default/gtk-2.0/Spin/spin-up.png \
+       Skins/Default/gtk-2.0/Tabs/gap-bottom-left.png \
+       Skins/Default/gtk-2.0/Tabs/gap-bottom-right.png \
+       Skins/Default/gtk-2.0/Tabs/gap-left-bottom.png \
+       Skins/Default/gtk-2.0/Tabs/gap-left-top.png \
+       Skins/Default/gtk-2.0/Tabs/gap-right-bottom.png \
+       Skins/Default/gtk-2.0/Tabs/gap-right-top.png \
+       Skins/Default/gtk-2.0/Tabs/gap-top-current.png \
+       Skins/Default/gtk-2.0/Tabs/gap-top-left.png \
+       Skins/Default/gtk-2.0/Tabs/gap-top-right.png \
+       Skins/Default/gtk-2.0/Tabs/notebook.png \
+       Skins/Default/gtk-2.0/Tabs/tab-bottom-active.png \
+       Skins/Default/gtk-2.0/Tabs/tab-bottom.png \
+       Skins/Default/gtk-2.0/Tabs/tab-left-active.png \
+       Skins/Default/gtk-2.0/Tabs/tab-left.png \
+       Skins/Default/gtk-2.0/Tabs/tab-right-active.png \
+       Skins/Default/gtk-2.0/Tabs/tab-right.png \
+       Skins/Default/gtk-2.0/Tabs/tab-top-active.png \
+       Skins/Default/gtk-2.0/Tabs/tab-top.png \
+       Skins/Default/gtk-2.0/Toolbar/toolbar.png \
+       Skins/Default/gtk-2.0/gtkrc \
+       Skins/Default/gtk-2.0/panel.rc \
        Skins/Ivory/balance.png		\
        Skins/Ivory/cbuttons.png		\
        Skins/Ivory/eq_ex.png		\
@@ -124,6 +235,9 @@
 			${INSTALL_FAILED}; \
 		fi \
 	done
+	if [ -f ${DESTDIR}${datadir}/audacious/Skins/Default/balance.png ]; then \
+		rm -f ${DESTDIR}${datadir}/audacious/Skins/Default/balance.png; \
+	fi
 
 uninstall-extra:
 	for i in audacious.pc audclient.pc; do \
--- a/NEWS	Wed Oct 24 10:41:53 2007 +0300
+++ b/NEWS	Fri Nov 16 05:36:42 2007 +0200
@@ -1,3 +1,30 @@
+Audacious 1.4.1 (2007-11-??)
+
+Enhancements:
+* The skin code has been tweaked a little to fix loading of
+  more substandard winamp skins.
+  (http://boards.nenolod.net/viewtopic.php?f=5&t=859)
+* Playlists now carry an atomic serial number in order to avoid
+  unnecessary reloading of metadata.
+* The command names used by audtool have been sanitized in order
+  to make some leve of sense.
+* Add many new calls to libaudclient which were unimplemented after
+  DBus transition.
+
+Bugfixes:
+* [Bugzilla #53]: UTF-8 validation gives false positives
+  (Reported by Kosma Moczek; Fixed by Yoshiki Yazawa)
+* [Bugzilla #20]: status icon plugin breaks the 'always on top' feature
+  (Reported by Dorian Scholz; Fixed by Tomasz Moń)
+* playback_get_length() was returning the typecode of FIELD_LENGTH, not
+  it's value (Fixed by Yoshiki Yazawa)
+* audctrl.h was dependent on #ifdef __cplusplus being a valid macro,
+  now we use G_BEGIN_DECLS/G_END_DECLS to handle that.
+
+Audacious 1.4.0 (2007-11-01)
+
+* Everything ;)
+
 Audacious 1.3.0 (2007-03-02)
 
 Enhancements
Binary file Skins/Classic1.3/balance.png has changed
Binary file Skins/Classic1.3/cbuttons.png has changed
Binary file Skins/Classic1.3/eq_ex.png has changed
Binary file Skins/Classic1.3/eqmain.png has changed
Binary file Skins/Classic1.3/main.png has changed
Binary file Skins/Classic1.3/monoster.png has changed
Binary file Skins/Classic1.3/nums_ex.png has changed
Binary file Skins/Classic1.3/playpaus.png has changed
Binary file Skins/Classic1.3/pledit.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Skins/Classic1.3/pledit.txt	Fri Nov 16 05:36:42 2007 +0200
@@ -0,0 +1,6 @@
+[Text]
+Normal=#a6c1df
+Current=#eeeeee
+NormalBG=#000000
+SelectedBG=#666666
+Font=Helvetica
Binary file Skins/Classic1.3/posbar.png has changed
Binary file Skins/Classic1.3/shufrep.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Skins/Classic1.3/skin-classic.hints	Fri Nov 16 05:36:42 2007 +0200
@@ -0,0 +1,3 @@
+[skin]
+skinDescription=The default skin for Audacious. (Classic variant)
+mainwinOthertext=1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Skins/Classic1.3/skin.hints	Fri Nov 16 05:36:42 2007 +0200
@@ -0,0 +1,28 @@
+[skin]
+skinDescription=The default skin for Audacious.
+mainwinOthertext=1
+mainwinVisX=19
+mainwinVisY=39
+mainwinTextX=19
+mainwinTextY=26
+mainwinTextWidth=246
+mainwinInfobarX=111
+mainwinInfobarY=42
+mainwinNumber0X=30
+mainwinNumber0Y=56
+mainwinNumber1X=42
+mainwinNumber1Y=56
+mainwinNumber2X=54
+mainwinNumber2Y=56
+mainwinNumber3X=72
+mainwinNumber3Y=56
+mainwinNumber4X=84
+mainwinNumber4Y=56
+mainwinPlayStatusX=19
+mainwinPlayStatusY=58
+mainwinMenurowVisible=1
+mainwinOthertextIsStatus=1
+mainwinOthertextVisible=1
+mainwinTextVisible=1
+mainwinVisVisible=1
+
Binary file Skins/Classic1.3/text.png has changed
Binary file Skins/Classic1.3/titlebar.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Skins/Classic1.3/viscolor.txt	Fri Nov 16 05:36:42 2007 +0200
@@ -0,0 +1,24 @@
+0,0,0		// [background color 1]
+0,0,0		// [background color 2]
+9,13,15
+19,26,31
+29,39,47
+39,52,63
+49,65,79
+59,78,95
+69,91,111
+79,105,127
+88,118,143
+98,131,159
+108,144,175
+118,157,191
+128,170,207
+138,183,223
+148,196,239
+158,210,255
+240,240,240		// [osc 1]
+220,220,220		// [osc 2]
+170,170,170		// [osc 3]
+100,100,100		// [osc 4]
+20,20,20		// [osc 5]
+200,200,220		// [peak color]
Binary file Skins/Classic1.3/volume.png has changed
Binary file Skins/Default/cbuttons.png has changed
Binary file Skins/Default/eq_ex.png has changed
Binary file Skins/Default/eqmain.png has changed
Binary file Skins/Default/gtk-2.0/Arrows/arrow-down.png has changed
Binary file Skins/Default/gtk-2.0/Arrows/arrow-insens.png has changed
Binary file Skins/Default/gtk-2.0/Arrows/arrow-left.png has changed
Binary file Skins/Default/gtk-2.0/Arrows/arrow-right.png has changed
Binary file Skins/Default/gtk-2.0/Arrows/arrow-up.png has changed
Binary file Skins/Default/gtk-2.0/Buttons/button-insensitive.png has changed
Binary file Skins/Default/gtk-2.0/Buttons/button-normal.png has changed
Binary file Skins/Default/gtk-2.0/Buttons/button-prelight.png has changed
Binary file Skins/Default/gtk-2.0/Check-Radio/check1.png has changed
Binary file Skins/Default/gtk-2.0/Check-Radio/check2.png has changed
Binary file Skins/Default/gtk-2.0/Check-Radio/check3.png has changed
Binary file Skins/Default/gtk-2.0/Check-Radio/check4.png has changed
Binary file Skins/Default/gtk-2.0/Check-Radio/check5.png has changed
Binary file Skins/Default/gtk-2.0/Check-Radio/check6.png has changed
Binary file Skins/Default/gtk-2.0/Check-Radio/option1.png has changed
Binary file Skins/Default/gtk-2.0/Check-Radio/option2.png has changed
Binary file Skins/Default/gtk-2.0/Check-Radio/option3.png has changed
Binary file Skins/Default/gtk-2.0/Check-Radio/option4.png has changed
Binary file Skins/Default/gtk-2.0/Check-Radio/option5.png has changed
Binary file Skins/Default/gtk-2.0/Check-Radio/option6.png has changed
Binary file Skins/Default/gtk-2.0/Frame-Gap/frame-gap-end.png has changed
Binary file Skins/Default/gtk-2.0/Frame-Gap/frame-gap-start.png has changed
Binary file Skins/Default/gtk-2.0/Frame-Gap/frame.png has changed
Binary file Skins/Default/gtk-2.0/Handles/handle-h.png has changed
Binary file Skins/Default/gtk-2.0/Handles/handle-v.png has changed
Binary file Skins/Default/gtk-2.0/Lines/line-h.png has changed
Binary file Skins/Default/gtk-2.0/Lines/line-v.png has changed
Binary file Skins/Default/gtk-2.0/ListHeaders/list_header-insens.png has changed
Binary file Skins/Default/gtk-2.0/ListHeaders/list_header-prelight.png has changed
Binary file Skins/Default/gtk-2.0/ListHeaders/list_header-pressed.png has changed
Binary file Skins/Default/gtk-2.0/ListHeaders/list_header.png has changed
Binary file Skins/Default/gtk-2.0/Menu-Menubar/menu.png has changed
Binary file Skins/Default/gtk-2.0/Menu-Menubar/menubar-item-active.png has changed
Binary file Skins/Default/gtk-2.0/Menu-Menubar/menubar-item.png has changed
Binary file Skins/Default/gtk-2.0/Menu-Menubar/menubar.png has changed
Binary file Skins/Default/gtk-2.0/Others/null.png has changed
Binary file Skins/Default/gtk-2.0/Others/ruler.png has changed
Binary file Skins/Default/gtk-2.0/Panel/panel-bg.png has changed
Binary file Skins/Default/gtk-2.0/ProgressBar/progressbar-horiz.png has changed
Binary file Skins/Default/gtk-2.0/ProgressBar/trough-progressbar-horiz.png has changed
Binary file Skins/Default/gtk-2.0/Range/slider-horiz-prelight.png has changed
Binary file Skins/Default/gtk-2.0/Range/slider-horiz.png has changed
Binary file Skins/Default/gtk-2.0/Range/slider-vert-prelight.png has changed
Binary file Skins/Default/gtk-2.0/Range/slider-vert.png has changed
Binary file Skins/Default/gtk-2.0/Range/trough-horizontal.png has changed
Binary file Skins/Default/gtk-2.0/Range/trough-vertical.png has changed
Binary file Skins/Default/gtk-2.0/Scrollbars/scroll-thumb-horiz-pre.png has changed
Binary file Skins/Default/gtk-2.0/Scrollbars/scroll-thumb-horiz.png has changed
Binary file Skins/Default/gtk-2.0/Scrollbars/scroll-thumb-vert-pre.png has changed
Binary file Skins/Default/gtk-2.0/Scrollbars/scroll-thumb-vert.png has changed
Binary file Skins/Default/gtk-2.0/Scrollbars/slider-horiz-pre.png has changed
Binary file Skins/Default/gtk-2.0/Scrollbars/slider-horiz.png has changed
Binary file Skins/Default/gtk-2.0/Scrollbars/slider-vert-pre.png has changed
Binary file Skins/Default/gtk-2.0/Scrollbars/slider-vert.png has changed
Binary file Skins/Default/gtk-2.0/Scrollbars/stepper-down-prelight.png has changed
Binary file Skins/Default/gtk-2.0/Scrollbars/stepper-down.png has changed
Binary file Skins/Default/gtk-2.0/Scrollbars/stepper-left-prelight.png has changed
Binary file Skins/Default/gtk-2.0/Scrollbars/stepper-left.png has changed
Binary file Skins/Default/gtk-2.0/Scrollbars/stepper-right-prelight.png has changed
Binary file Skins/Default/gtk-2.0/Scrollbars/stepper-right.png has changed
Binary file Skins/Default/gtk-2.0/Scrollbars/stepper-up-prelight.png has changed
Binary file Skins/Default/gtk-2.0/Scrollbars/stepper-up.png has changed
Binary file Skins/Default/gtk-2.0/Scrollbars/trough-scrollbar-horiz.png has changed
Binary file Skins/Default/gtk-2.0/Scrollbars/trough-scrollbar-vert.png has changed
Binary file Skins/Default/gtk-2.0/Shadows/shadow-in.png has changed
Binary file Skins/Default/gtk-2.0/Shadows/shadow-out.png has changed
Binary file Skins/Default/gtk-2.0/Shadows/text-.png has changed
Binary file Skins/Default/gtk-2.0/Shadows/text-entry.png has changed
Binary file Skins/Default/gtk-2.0/Spin/spin-down-disable.png has changed
Binary file Skins/Default/gtk-2.0/Spin/spin-down-prelight.png has changed
Binary file Skins/Default/gtk-2.0/Spin/spin-down.png has changed
Binary file Skins/Default/gtk-2.0/Spin/spin-up-disable.png has changed
Binary file Skins/Default/gtk-2.0/Spin/spin-up-prelight.png has changed
Binary file Skins/Default/gtk-2.0/Spin/spin-up.png has changed
Binary file Skins/Default/gtk-2.0/Tabs/gap-bottom-left.png has changed
Binary file Skins/Default/gtk-2.0/Tabs/gap-bottom-right.png has changed
Binary file Skins/Default/gtk-2.0/Tabs/gap-left-bottom.png has changed
Binary file Skins/Default/gtk-2.0/Tabs/gap-left-top.png has changed
Binary file Skins/Default/gtk-2.0/Tabs/gap-right-bottom.png has changed
Binary file Skins/Default/gtk-2.0/Tabs/gap-right-top.png has changed
Binary file Skins/Default/gtk-2.0/Tabs/gap-top-current.png has changed
Binary file Skins/Default/gtk-2.0/Tabs/gap-top-left.png has changed
Binary file Skins/Default/gtk-2.0/Tabs/gap-top-right.png has changed
Binary file Skins/Default/gtk-2.0/Tabs/notebook.png has changed
Binary file Skins/Default/gtk-2.0/Tabs/tab-bottom-active.png has changed
Binary file Skins/Default/gtk-2.0/Tabs/tab-bottom.png has changed
Binary file Skins/Default/gtk-2.0/Tabs/tab-left-active.png has changed
Binary file Skins/Default/gtk-2.0/Tabs/tab-left.png has changed
Binary file Skins/Default/gtk-2.0/Tabs/tab-right-active.png has changed
Binary file Skins/Default/gtk-2.0/Tabs/tab-right.png has changed
Binary file Skins/Default/gtk-2.0/Tabs/tab-top-active.png has changed
Binary file Skins/Default/gtk-2.0/Tabs/tab-top.png has changed
Binary file Skins/Default/gtk-2.0/Toolbar/toolbar.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Skins/Default/gtk-2.0/gtkrc	Fri Nov 16 05:36:42 2007 +0200
@@ -0,0 +1,1534 @@
+include "panel.rc"
+
+gtk-menu-drop-shadow = 0
+gtk-menu-shadow-delay = 0
+
+style "default"
+{
+GtkWidget::interior_focus			= 7
+GtkWidget::focus_padding			= 1
+GtkButton::default_border			= {0,0,0,0}
+GtkButton::default_outside_border	= {0,0,0,0}
+
+GtkRange::trough_border			= 1
+GtkRange::slider_width			= 14
+GtkRange::stepper_size			= 14
+
+GtkVScale::slider_length 			= 29
+GtkVScale::slider_width 			= 15
+GtkHScale::slider_length 			= 29
+GtkHScale::slider_width 			= 15
+
+GtkPaned::handle_size			= 6
+GtkScrollbar::min_slider_length		= 50
+GtkCheckButton::indicator_size		= 12
+GtkCheckButton::indicator_spacing	= 3
+GtkMenuBar::internal_padding		= 1
+#GtkOptionMenu::indicator_size		= {15,8}
+#GtkOptionMenu::indicator_spacing	= {8,2,0,0}
+GtkStatusbar::shadow_type 		= GTK_SHADOW_NONE
+GtkSpinButton::shadow_type 		= GTK_SHADOW_NONE
+
+xthickness	= 2
+ythickness	= 2
+
+GtkEntry::cursor_color			= "#ffffff"
+GtkTextView::cursor_color			= "#ffffff"
+GtkTextView::secondary_cursor_color	= "#ffffff"
+GtkWidget::cursor_color			= "#ffffff"
+GtkWidget::secondary_cursor_color	= "#ffffff"
+
+fg[NORMAL]		= "#ffffff"
+fg[PRELIGHT]		= "#ffffff"
+fg[ACTIVE]		= "#ffffff"
+fg[SELECTED]		= "#909090"
+fg[INSENSITIVE]		= "#909090"
+
+bg[NORMAL]		= "#080808"
+bg[PRELIGHT]		= "#000000"
+bg[ACTIVE]		= "#000000"
+bg[SELECTED]		= "#080808"
+bg[INSENSITIVE] 	= "#3f3f3f"
+
+base[NORMAL]		= "#000000"
+base[PRELIGHT]	= "#313131"
+base[ACTIVE]		= "#071f46"
+base[SELECTED]	= "#0d377c"
+base[INSENSITIVE]	= "#000000"
+
+text[NORMAL]		= "#ffffff"
+text[PRELIGHT]		= "#ffffff"
+text[ACTIVE]		= "#ffffff"
+text[SELECTED]		= "#ffffff"
+text[INSENSITIVE]	= "#606060"
+
+engine "pixmap"
+{
+image
+{
+function		= HANDLE
+overlay_file	= "Handles/handle-h.png"
+overlay_stretch	= FALSE
+orientation	= HORIZONTAL
+}
+image
+{
+function		= HANDLE
+overlay_file	= "Handles/handle-v.png"
+overlay_stretch	= FALSE
+orientation	= VERTICAL
+}
+
+image
+{
+function	= SHADOW
+shadow	= IN
+file		= "Shadows/shadow-in.png"
+border	= {2,2,2,2}
+stretch	= TRUE
+}
+image
+{
+function	= SHADOW
+shadow	= OUT
+file		= "Shadows/shadow-out.png"
+stretch	= TRUE
+}
+
+image
+{
+function	= SHADOW
+shadow	= ETCHED_IN
+file		= "Frame-Gap/frame.png"
+border	= {2,2,2,2}
+stretch	= TRUE
+}
+image
+{
+function	= SHADOW
+shadow	= ETCHED_OUT
+file		= "Others/null.png"
+border	= {0,0,0,0}
+stretch	= TRUE
+}
+image
+{
+function			= SHADOW_GAP
+file				= "Frame-Gap/frame.png"
+border			= {2,2,2,2}
+stretch			= TRUE
+gap_start_file		= "Frame-Gap/frame-gap-start.png"
+gap_start_border	= {2,0,2,0}
+gap_end_file		= "Frame-Gap/frame-gap-end.png"
+gap_end_border	= {0,2,2,0}
+gap_side			= TOP
+}
+image
+{
+function	= VLINE
+file		= "Lines/line-v.png"
+border	= {0,0,0,0}
+stretch	= TRUE
+}
+image
+{
+function	= HLINE
+file		= "Lines/line-h.png"
+border	= {0,0,0,0}
+stretch	= TRUE
+}
+
+image
+{
+function		= ARROW
+overlay_file	= "Arrows/arrow-up.png"
+overlay_border	= {0,0,0,0}
+overlay_stretch	= FALSE
+arrow_direction	= UP
+}
+image
+{
+function		= ARROW
+overlay_file	= "Arrows/arrow-down.png"
+overlay_border	= {0,0,0,0}
+overlay_stretch	= FALSE
+arrow_direction	= DOWN
+}
+image
+{
+function		= ARROW
+overlay_file	= "Arrows/arrow-left.png"
+overlay_border	= {0,0,0,0}
+overlay_stretch	= FALSE
+arrow_direction	= LEFT
+}
+image
+{
+function		= ARROW
+overlay_file	= "Arrows/arrow-right.png"
+overlay_border	= {0,0,0,0}
+overlay_stretch	= FALSE
+arrow_direction	= RIGHT
+}
+image
+{
+function	= BOX
+file		= "Toolbar/toolbar.png"
+border	= {2,2,2,2}
+stretch	= TRUE
+}
+}
+
+}
+
+gtk-font-name = "Sans 8"
+
+class "GtkWidget" style "default"
+
+style "button" = "default"
+{
+engine "pixmap"
+{
+image
+{
+function	= BOX
+detail	= "buttondefault"
+file		= "Buttons/button-normal.png"
+border	= {2,2,2,2}
+stretch	= TRUE
+}
+image
+{
+function	= BOX
+state		= PRELIGHT
+file		= "Buttons/button-prelight.png"
+border	= {2,2,2,2}
+stretch	= TRUE
+}
+image
+{
+function	= BOX
+state		= ACTIVE
+file		= "Buttons/button-prelight.png"
+border	= {2,2,2,2}
+stretch	= TRUE
+}
+image
+{
+function	= BOX
+state		= INSENSITIVE
+file		= "Buttons/button-insensitive.png"
+border	= {2,2,2,2}
+stretch	= TRUE
+}
+image
+{
+function	= BOX
+file		= "Buttons/button-normal.png"
+border	= {2,2,2,2}
+stretch	= TRUE
+}
+}
+}
+
+style "checkradiobutton" {
+engine "pixmap" {
+image
+{
+function	= FLAT_BOX
+file		= "Others/null.png"
+border	= {0,0,0,0}
+stretch	= TRUE
+}
+}
+}
+
+class "GtkRadioButton" style "checkradiobutton"
+class "GtkCheckButton" style "checkradiobutton"
+
+style "optionmenu" = "default"
+{
+engine "pixmap"
+{
+image
+{
+function	= BOX
+state		= PRELIGHT
+file		= "Buttons/button-prelight.png"
+border	= {2,2,2,2}
+stretch	= TRUE
+}
+image
+{
+function	= BOX
+detail	= "buttondefault"
+state		= NORMAL
+file		= "Buttons/button-normal.png"
+border	= {2,2,2,2}
+stretch	= TRUE
+}
+
+image
+{
+function	= BOX
+state		= ACTIVE
+file		= "Buttons/button-prelight.png"
+border	= {2,2,2,2}
+stretch	= TRUE
+}
+image
+{
+function	= BOX
+state		= INSENSITIVE
+file		= "Buttons/button-insensitive.png"
+border	= {2,2,2,2}
+stretch	= TRUE
+}
+image
+{
+function		= TAB
+state			= INSENSITIVE
+overlay_file	= "Arrows/arrow-insens.png"
+overlay_stretch	= FALSE
+}
+image
+{
+function		= TAB
+state			= NORMAL
+overlay_file	= "Arrows/arrow-down.png"
+overlay_border	= {0,0,0,0}
+overlay_stretch	= FALSE
+}
+image
+{
+function		= TAB
+state			= PRELIGHT
+overlay_file	= "Arrows/arrow-down.png"
+overlay_border	= {0,0,0,0}
+overlay_stretch	= FALSE
+}
+}
+}
+
+widget_class "*Combo*" style "optionmenu"
+
+style "radiobutton"	= "default"
+{
+engine "pixmap"
+{
+image
+{
+function 		= OPTION
+state 		= NORMAL
+shadow 		= OUT
+overlay_file 	= "Check-Radio/option1.png"
+overlay_stretch 	= FALSE
+}
+image
+{
+function 		= OPTION
+state			= PRELIGHT
+shadow 		= OUT
+overlay_file 	= "Check-Radio/option3.png"
+overlay_stretch 	= FALSE
+}
+image
+{
+function 		= OPTION
+state 		= ACTIVE
+shadow 		= OUT
+overlay_file 	= "Check-Radio/option1.png"
+overlay_stretch 	= FALSE
+}
+image
+{
+function 		= OPTION
+state 		= INSENSITIVE
+shadow 		= OUT
+overlay_file 	= "Check-Radio/option5.png"
+overlay_stretch 	= FALSE
+}
+
+image
+{
+function 		= OPTION
+state 		= NORMAL
+shadow 		= IN
+overlay_file 	= "Check-Radio/option2.png"
+overlay_stretch 	= FALSE
+}
+image
+{
+function 		= OPTION
+state 		= PRELIGHT
+shadow 		= IN
+overlay_file 	= "Check-Radio/option4.png"
+overlay_stretch 	= FALSE
+}
+image
+{
+function 		= OPTION
+state 		= ACTIVE
+shadow 		= IN
+overlay_file 	= "Check-Radio/option2.png"
+overlay_stretch 	= FALSE
+}
+image
+{
+function 		= OPTION
+state 		= INSENSITIVE
+shadow 		= IN
+overlay_file 	= "Check-Radio/option6.png"
+overlay_stretch 	= FALSE
+}
+
+image
+{
+function 	= FLAT_BOX
+stretch	= TRUE
+file 		= "Others/null.png"
+border 	= {0,0,0,0}
+}
+}
+}
+
+style "checkbutton"	= "default"
+{
+engine "pixmap"
+{
+image
+{
+function 		= CHECK
+state 		= NORMAL
+shadow 		= OUT
+overlay_file 	= "Check-Radio/check1.png"
+overlay_stretch 	= FALSE
+}
+image
+{
+function 		= CHECK
+state 		= PRELIGHT
+shadow 		= OUT
+overlay_file 	= "Check-Radio/check3.png"
+overlay_stretch 	= FALSE
+}
+image
+{
+function 		= CHECK
+state 		= ACTIVE
+shadow 		= OUT
+overlay_file 	= "Check-Radio/check1.png"
+overlay_stretch 	= FALSE
+}
+image
+{
+function 		= CHECK
+state 		= INSENSITIVE
+shadow 		= OUT
+overlay_file 	= "Check-Radio/check5.png"
+overlay_stretch 	= FALSE
+}
+
+image
+{
+function 		= CHECK
+state 		= NORMAL
+shadow 		= IN
+overlay_file 	= "Check-Radio/check2.png"
+overlay_stretch 	= FALSE
+}
+image
+{
+function 		= CHECK
+state 		= PRELIGHT
+shadow 		= IN
+overlay_file 	= "Check-Radio/check4.png"
+overlay_stretch 	= FALSE
+}
+image
+{
+function 		= CHECK
+state 		= ACTIVE
+shadow 		= IN
+overlay_file 	= "Check-Radio/check4.png"
+overlay_stretch 	= FALSE
+}
+image
+{
+function 		= CHECK
+state 		= INSENSITIVE
+shadow 		= IN
+overlay_file 	= "Check-Radio/check6.png"
+overlay_stretch 	= FALSE
+}
+
+image
+{
+function 	= FLAT_BOX
+stretch	= TRUE
+file 		= "Others/null.png"
+border 	= {2,2,2,2}
+}
+}
+}
+
+style "entry" = "default"
+{
+
+xthickness = 3
+ythickness = 1
+
+GtkWidget::interior_focus = 0
+
+engine "pixmap"
+{
+image
+{
+function	= FOCUS
+file		= "Shadows/text-entry.png"
+border	= {1,1,1,1}
+stretch	= TRUE
+}
+image
+{
+function	= BOX
+shadow	= IN
+state		= NORMAL
+file		= "Shadows/text-entry.png"
+border	= {1,1,1,1}
+stretch	= TRUE
+}
+image
+{
+function	= BOX
+shadow	= OUT
+state		= NORMAL
+file		= "Shadows/text-entry.png"
+border	= {1,1,1,1}
+stretch	= TRUE
+}
+image
+{
+function	= SHADOW
+detail	= "entry"
+shadow	= IN
+file		= "Shadows/text-entry.png"
+border	= {1,1,1,1}
+stretch	= TRUE
+}
+}
+}
+
+
+style "spinbutton" = "entry"
+{
+
+
+engine "pixmap"
+{
+image
+{
+function = ARROW
+}
+
+image
+{
+function		= BOX
+state 		= NORMAL
+detail		= "spinbutton_up"
+file			= "Others/null.png"
+border		= {0,0,0,0}
+stretch		= TRUE
+overlay_file	= "Spin/spin-up.png"
+overlay_stretch	= FALSE
+}
+image
+{
+function		= BOX
+state 		= PRELIGHT
+detail		= "spinbutton_up"
+file			= "Others/null.png"
+border		= {0,0,0,0}
+stretch		= TRUE
+overlay_file	= "Spin/spin-up-prelight.png"
+overlay_stretch	= FALSE
+}
+image
+{
+function		= BOX
+state 		= INSENSITIVE
+detail		= "spinbutton_up"
+file			= "Others/null.png"
+border		= {0,0,0,0}
+stretch		= TRUE
+overlay_file	= "Spin/spin-up-disable.png"
+overlay_stretch	= FALSE
+}
+image
+{
+function		= BOX
+state 		= ACTIVE
+detail		= "spinbutton_up"
+file			= "Others/null.png"
+border		= {0,0,0,0}
+stretch		= TRUE
+overlay_file	= "Spin/spin-up-prelight.png"
+overlay_stretch	= FALSE
+}
+
+image
+{
+function		= BOX
+state 		= NORMAL
+detail		= "spinbutton_down"
+file			= "Others/null.png"
+border		= {0,0,0,0}
+stretch		= TRUE
+overlay_file	= "Spin/spin-down.png"
+overlay_stretch	= FALSE
+}
+image
+{
+function		= BOX
+state 		= PRELIGHT
+detail		= "spinbutton_down"
+file			= "Others/null.png"
+border		= {0,0,0,0}
+stretch		= TRUE
+overlay_file	= "Spin/spin-down-prelight.png"
+overlay_stretch	= FALSE
+}
+image
+{
+function		= BOX
+state 		= INSENSITIVE
+detail		= "spinbutton_down"
+file			= "Others/null.png"
+border		= {0,0,0,0}
+stretch		= TRUE
+overlay_file	= "Spin/spin-down-disable.png"
+overlay_stretch	= FALSE
+}
+
+image
+{
+function		= BOX
+state 		= ACTIVE
+detail		= "spinbutton_down"
+file			= "Others/null.png"
+border		= {0,0,0,0}
+stretch		= TRUE
+overlay_file	= "Spin/spin-down-prelight.png"
+overlay_stretch	= FALSE
+}
+}
+}
+
+style "scrollbar" = "default"
+{
+engine "pixmap"
+{
+
+image
+{
+function	= BOX
+detail	= "trough"
+file		= "Scrollbars/trough-scrollbar-horiz.png"
+border	= {16,16,2,2}
+stretch	= TRUE
+orientation = HORIZONTAL
+}
+image
+{
+function	= BOX
+detail	= "trough"
+file		= "Scrollbars/trough-scrollbar-vert.png"
+border	= {2,2,16,16}
+stretch	= TRUE
+orientation = VERTICAL
+}
+
+
+image
+{
+function		= SLIDER
+state 		= NORMAL
+file			= "Scrollbars/slider-horiz.png"
+border		= {2,2,2,2}
+stretch		= TRUE
+orientation	= HORIZONTAL
+}
+image
+{
+function		= SLIDER
+state 		= ACTIVE
+shadow		= IN
+file			= "Scrollbars/slider-horiz-pre.png"
+border		= {2,2,2,2}
+stretch		= TRUE
+orientation	= HORIZONTAL
+}
+
+image
+{
+function		= SLIDER
+state 		= PRELIGHT
+file			= "Scrollbars/slider-horiz-pre.png"
+border		= {2,2,2,2}
+stretch		= TRUE
+orientation	= HORIZONTAL
+}
+image
+{
+function		= SLIDER
+state 		= INSENSITIVE
+file			= "Scrollbars/slider-horiz.png"
+border		= {2,2,2,2}
+stretch		= TRUE
+orientation	= HORIZONTAL
+}
+
+
+image
+{
+function		= SLIDER
+state 		= NORMAL
+file			= "Scrollbars/slider-vert.png"
+border		= {2,2,2,2}
+stretch		= TRUE
+orientation	= VERTICAL
+}
+image
+{
+function		= SLIDER
+state 		= ACTIVE
+shadow		= IN
+file			= "Scrollbars/slider-vert-pre.png"
+border		= {2,2,2,2}
+stretch		= TRUE
+orientation	= VERTICAL
+}
+image
+{
+function		= SLIDER
+state 		= PRELIGHT
+file			= "Scrollbars/slider-vert-pre.png"
+border		= {2,2,2,2}
+stretch		= TRUE
+orientation	= VERTICAL
+}
+image
+{
+function		= SLIDER
+state 		= INSENSITIVE
+file			= "Scrollbars/slider-vert.png"
+border		= {2,2,2,2}
+stretch		= TRUE
+orientation	= VERTICAL
+}
+
+image
+{
+function		= STEPPER
+state			= NORMAL
+file			= "Scrollbars/stepper-up.png"
+stretch		= TRUE
+arrow_direction	= UP
+}
+image
+{
+function		= STEPPER
+state			= PRELIGHT
+file			= "Scrollbars/stepper-up-prelight.png"
+stretch		= TRUE
+arrow_direction	= UP
+}
+image
+{
+function		= STEPPER
+state			= ACTIVE
+file			= "Scrollbars/stepper-up-prelight.png"
+stretch		= TRUE
+arrow_direction	= UP
+}
+image
+{
+function		= STEPPER
+state			= INSENSITIVE
+file			= "Scrollbars/stepper-up.png"
+stretch		= TRUE
+arrow_direction	= UP
+}
+
+
+image
+{
+function		= STEPPER
+state			= NORMAL
+file			= "Scrollbars/stepper-down.png"
+stretch		= TRUE
+arrow_direction	= DOWN
+}
+image
+{
+function		= STEPPER
+state			= PRELIGHT
+file			= "Scrollbars/stepper-down-prelight.png"
+stretch		= TRUE
+arrow_direction	= DOWN
+}
+image
+{
+function		= STEPPER
+state			= ACTIVE
+file			= "Scrollbars/stepper-down-prelight.png"
+stretch		= TRUE
+arrow_direction	= DOWN
+}
+image
+{
+function		= STEPPER
+state			= INSENSITIVE
+file			= "Scrollbars/stepper-down.png"
+stretch		= TRUE
+arrow_direction	= DOWN
+}
+
+image
+{
+function		= STEPPER
+state			= NORMAL
+file			= "Scrollbars/stepper-right.png"
+stretch		= TRUE
+arrow_direction	= RIGHT
+}
+image
+{
+function		= STEPPER
+state			= PRELIGHT
+file			= "Scrollbars/stepper-right-prelight.png"
+stretch		= TRUE
+arrow_direction	= RIGHT
+}
+image
+{
+function		= STEPPER
+state			= ACTIVE
+file			= "Scrollbars/stepper-right-prelight.png"
+stretch		= TRUE
+arrow_direction	= RIGHT
+}
+image
+{
+function		= STEPPER
+state			= INSENSITIVE
+file			= "Scrollbars/stepper-right.png"
+stretch		= TRUE
+arrow_direction	= RIGHT
+}
+
+image
+{
+function		= STEPPER
+state			= NORMAL
+file			= "Scrollbars/stepper-left.png"
+stretch		= TRUE
+arrow_direction	= LEFT
+}
+image
+{
+function		= STEPPER
+state			= PRELIGHT
+file			= "Scrollbars/stepper-left-prelight.png"
+stretch		= TRUE
+arrow_direction	= LEFT
+}
+image
+{
+function		= STEPPER
+state			= ACTIVE
+file			= "Scrollbars/stepper-left-prelight.png"
+stretch		= TRUE
+arrow_direction	= LEFT
+}
+image
+{
+function		= STEPPER
+state			= INSENSITIVE
+file			= "Scrollbars/stepper-left.png"
+stretch		= TRUE
+arrow_direction	= LEFT
+}
+}
+}
+
+style "progressbar" {
+fg[PRELIGHT] 	= "#ffffff"
+text[PRELIGHT] = "#ffffff"
+xthickness 	= 2
+ythickness 	= 2
+
+engine "pixmap"
+{
+image
+{
+function		= BOX
+detail		= "trough"
+file			= "ProgressBar/trough-progressbar-horiz.png"
+border		= {1,1,1,1}
+stretch		= TRUE
+}
+image
+{
+function		= BOX
+detail		= "bar"
+file			= "ProgressBar/progressbar-horiz.png"
+border		= {1,1,1,1}
+stretch		= TRUE
+}
+}
+}
+
+style "range" = "default"
+{
+engine "pixmap"
+{
+image
+{
+function		= BOX
+detail		= "trough"
+file			= "Range/trough-horizontal.png"
+border		= {2,2,8,7}
+stretch		= TRUE
+orientation	= HORIZONTAL
+}
+image
+{
+function		= BOX
+detail		= "trough"
+file			= "Range/trough-vertical.png"
+border		= {7,8,2,2}
+stretch		= TRUE
+orientation	= VERTICAL
+}
+
+image
+{
+function		= SLIDER
+state 		= NORMAL
+file			= "Others/null.png"
+border		= {0,0,0,0}
+stretch		= TRUE
+overlay_file	= "Range/slider-horiz.png"
+overlay_stretch	= FALSE
+orientation	= HORIZONTAL
+}
+image
+{
+function		= SLIDER
+state 		= PRELIGHT
+file			= "Others/null.png"
+border		= {0,0,0,0}
+stretch		= TRUE
+overlay_file	= "Range/slider-horiz-prelight.png"
+overlay_stretch	= FALSE
+orientation	= HORIZONTAL
+}
+image
+{
+function		= SLIDER
+state 		= INSENSITIVE
+file			= "Others/null.png"
+border		= {0,0,0,0}
+stretch		= TRUE
+overlay_file	= "Range/slider-horiz.png"
+overlay_stretch	= FALSE
+orientation	= HORIZONTAL
+}
+
+image
+{
+function		= SLIDER
+state 		= NORMAL
+file			= "Others/null.png"
+border		= {0,0,0,0}
+stretch		= TRUE
+overlay_file	= "Range/slider-vert.png"
+overlay_stretch	= FALSE
+orientation	= VERTICAL
+}
+image
+{
+function		= SLIDER
+state 		= PRELIGHT
+file			= "Others/null.png"
+border		= {0,0,0,0}
+stretch		= TRUE
+overlay_file	= "Range/slider-vert-prelight.png"
+overlay_stretch	= FALSE
+orientation	= VERTICAL
+}
+image
+{
+function		= SLIDER
+state 		= INSENSITIVE
+file			= "Others/null.png"
+border		= {0,0,0,0}
+stretch		= TRUE
+overlay_file	= "Range/slider-vert.png"
+overlay_stretch	= FALSE
+orientation	= VERTICAL
+}
+}
+}
+
+style "toolbar"
+{
+
+engine "pixmap"
+{
+image
+{
+function	= BOX
+file		= "Toolbar/toolbar.png"
+border	= {2,2,2,2}
+stretch	= TRUE
+}
+}
+}
+#widget_class "*BonoboDockItem" style "toolbar"
+#class "*BonoboDockItem" style "toolbar"
+
+widget_class "*HandleBox" style "toolbar"
+class "*HandleBox" style "toolbar"
+
+widget_class "*Toolbar" style "toolbar"
+class "*Toolbar" style "toolbar"
+
+style "toolbuttons" = "default"
+{
+xthickness = 1
+ythickness = 1
+
+GtkWidget::focus_padding = 2
+
+engine "pixmap" {
+
+image
+{
+function 	= BOX
+state		= NORMAL
+file		= "Buttons/button-normal.png"
+border	= {2,2,2,2}
+stretch 	= TRUE
+}
+image
+{
+function 	= BOX
+state		= PRELIGHT
+file 		= "Buttons/button-prelight.png"
+border	= {2,2,2,2}
+stretch 	= TRUE
+}
+image
+{
+function 	= BOX
+state		= ACTIVE
+file 		= "Buttons/button-prelight.png"
+border	= {2,2,2,2}
+stretch 	= TRUE
+}
+image
+{
+function 	= BOX
+state		= INSENSITIVE
+file 		= "Buttons/button-normal.png"
+border	= {2,2,2,2}
+stretch 	= TRUE
+}
+}
+}
+widget_class "*Tool*GtkToggleButton" style "toolbuttons"
+widget_class "*Tool*GtkButton" style "toolbuttons"
+
+style "menu" = "default"
+{
+#bg_pixmap[NORMAL] = "Menu-Menubar/menu-overlay.png"
+xthickness	= 1
+ythickness	= 1
+
+engine "pixmap"
+{
+image
+{
+function	= BOX
+detail	= "menu"
+file		= "Menu-Menubar/menu.png"
+border	= {2,2,14,2}
+stretch	= TRUE
+}
+}
+}
+
+style "menuitem" = "default"
+{
+xthickness		= 1
+fg[PRELIGHT] 	= "#ffffff"
+text[PRELIGHT]	= "#949494"
+
+engine "pixmap"
+{
+image
+{
+function		= BOX
+file			= "Menu-Menubar/menubar-item-active.png"
+border		= {2,2,2,2}
+stretch		= TRUE
+}
+image
+{
+function		= ARROW
+state			= NORMAL
+overlay_file	= "Arrows/arrow-right.png"
+overlay_stretch	= FALSE
+arrow_direction	= RIGHT
+}
+image
+{
+function		= ARROW
+state			= PRELIGHT
+overlay_file	= "Arrows/arrow-right.png"
+overlay_stretch	= FALSE
+arrow_direction	= RIGHT
+}
+}
+}
+
+style "tearoffmenuitem" = "menuitem"
+{
+engine "pixmap"
+{
+image
+{
+function		= ARROW
+file			= "Arrows/arrow-left.png"
+stretch		= TRUE
+arrow_direction	= LEFT
+}
+}
+}
+
+style "menubar"
+{
+fg[NORMAL]		= "#ffffff"
+text[NORMAL]		= "#ffffff"
+fg[PRELIGHT]		= "#ffffff"
+fg[ACTIVE]		= "#ffffff"
+fg[INSENSITIVE]		= "#909090"
+bg[INSENSITIVE]	= "#3f3f3f"
+text[PRELIGHT]		= "#ffffff"
+
+xthickness	= 1
+ythickness	= 1
+engine "pixmap"
+{
+image
+{
+function	= BOX
+state 	= NORMAL
+file		= "Menu-Menubar/menubar.png"
+border	= {2,2,2,2}
+stretch	= TRUE
+}
+
+image
+{
+function	= BOX
+state 	= ACTIVE
+file		= "Menu-Menubar/menubar.png"
+border	= {2,2,2,2}
+stretch	= TRUE
+}
+
+image
+{
+function	= BOX
+state 	= INSENSITIVE
+file		= "Menu-Menubar/menubar.png"
+border	= {2,2,2,2}
+stretch	= TRUE
+}
+
+image
+{
+function	= BOX
+state 	= PRELIGHT
+file		= "Menu-Menubar/menubar-item.png"
+border	= {2,2,14,1}
+stretch	= TRUE
+}
+}
+}
+
+style "notebook" = "default"
+{
+
+xthickness = 2
+ythickness = 2
+engine "pixmap"
+{
+image
+{
+function	= EXTENSION
+state		= ACTIVE
+file		= "Tabs/tab-bottom.png"
+border	= {3,3,1,4}
+stretch	= TRUE
+gap_side	= TOP
+}
+image
+{
+function	= EXTENSION
+state		= ACTIVE
+file		= "Tabs/tab-top.png"
+border	= {3,3,4,1}
+stretch	= TRUE
+gap_side	= BOTTOM
+}
+image
+{
+function	= EXTENSION
+state		= ACTIVE
+file		= "Tabs/tab-left.png"
+border	= {4,1,3,3}
+stretch	= TRUE
+gap_side	= RIGHT
+}
+image
+{
+function	= EXTENSION
+state		= ACTIVE
+file		= "Tabs/tab-right.png"
+border	= {1,4,3,3}
+stretch	= TRUE
+gap_side	= LEFT
+}
+image
+{
+function	= EXTENSION
+file		= "Tabs/tab-top-active.png"
+border	= {3,3,3,1}
+stretch	= TRUE
+gap_side	= BOTTOM
+}
+image
+{
+function	= EXTENSION
+file		= "Tabs/tab-bottom-active.png"
+border	= {3,3,1,3}
+stretch	= TRUE
+gap_side	= TOP
+}
+image
+{
+function	= EXTENSION
+file		= "Tabs/tab-left-active.png"
+border	= {3,1,3,3}
+stretch	= TRUE
+gap_side	= RIGHT
+}
+image
+{
+function	= EXTENSION
+file		= "Tabs/tab-right-active.png"
+border	= {1,3,3,3}
+stretch	= TRUE
+gap_side	= LEFT
+}
+
+image
+{
+function		= BOX_GAP
+file			= "Tabs/notebook.png"
+border			= {1,1,1,1}
+stretch			= TRUE
+gap_file		= "Tabs/gap-top-current.png"
+gap_border		= {2,2,2,2}
+gap_start_file		= "Tabs/gap-top-left.png"
+gap_start_border	= {1,0,1,0}
+gap_end_file		= "Tabs/gap-top-right.png"
+gap_end_border		= {0,1,1,0}
+gap_side			= TOP
+}
+image
+{
+function			= BOX_GAP
+file				= "Tabs/notebook.png"
+border			= {1,1,1,1}
+stretch			= TRUE
+gap_file		= "Tabs/gap-top-current.png"
+gap_border		= {2,2,2,2}
+gap_start_file		= "Tabs/gap-bottom-left.png"
+gap_start_border	= {1,0,1,0}
+gap_end_file		= "Tabs/gap-bottom-right.png"
+gap_end_border		= {0,1,1,0}
+gap_side			= BOTTOM
+}
+image
+{
+function			= BOX_GAP
+file				= "Tabs/notebook.png"
+border			= {1,1,1,1}
+stretch			= TRUE
+gap_file		= "Tabs/gap-top-current.png"
+gap_border		= {2,2,2,2}
+gap_start_file		= "Tabs/gap-left-top.png"
+gap_start_border	= {1,0,1,0}
+gap_end_file		= "Tabs/gap-left-bottom.png"
+gap_end_border		= {1,0,0,1}
+gap_side			= LEFT
+}
+image
+{
+function			= BOX_GAP
+file				= "Tabs/notebook.png"
+border			= {1,1,1,1}
+stretch			= TRUE
+gap_file		= "Tabs/gap-top-current.png"
+gap_border		= {2,2,2,2}
+gap_start_file		= "Tabs/gap-right-top.png"
+gap_start_border	= {0,1,1,0}
+gap_end_file		= "Tabs/gap-right-bottom.png"
+gap_end_border		= {0,1,0,1}
+gap_side			= RIGHT
+}
+
+# Notebook with no tabs
+image
+{
+function			= BOX
+file				= "Tabs/notebook.png"
+border			= {1,1,1,1}
+stretch			= TRUE
+}
+}
+}
+
+style "tooltips"	= "default"
+{
+bg[NORMAL]	= "#070707"
+}
+
+style "ruler" = "default"
+{
+engine "pixmap" {
+image
+{
+function	= BOX
+detail	= "vruler"
+file		= "Others/ruler.png"
+border	= {1,1,1,1}
+stretch	= TRUE
+}
+image
+{
+function	= BOX
+detail	= "hruler"
+file		= "Others/ruler.png"
+border	= {1,1,1,1}
+stretch	= TRUE
+}
+}
+}
+
+style "handlebox" = "default"
+{
+engine "pixmap"
+{
+image
+{
+}
+image
+{
+function		= HANDLE
+overlay_file	= "Handles/handle-v.png"
+overlay_stretch	= FALSE
+orientation	= VERTICAL
+}
+image
+{
+function		= HANDLE
+overlay_file	= "Handles/handle-h.png"
+overlay_stretch 	= FALSE
+orientation	= HORIZONTAL
+}
+}
+}
+
+style "flat" = "default"
+{
+engine "pixmap"
+{
+image
+{
+function = SHADOW
+}
+}
+}
+
+style "layout" = "default"
+{
+engine "pixmap"
+{
+image
+{
+function	= SHADOW
+detail	= "entry"
+shadow	= IN
+file		= "Shadows/text-.png"
+border	= {1,1,1,1}
+stretch	= TRUE
+}
+image
+{
+function	= BOX
+detail	= "button"
+state		= NORMAL
+file		= "Buttons/button-normal.png"
+border	= {2,2,2,2}
+stretch	= TRUE
+}
+}
+}
+
+style "list-header"
+{
+ythickness = 3
+GtkTreeView::odd_row_color = "#171717"
+GtkTreeView::even_row_color = "#000000"
+
+engine "pixmap"
+{
+image
+{
+function 	= BOX
+state		= NORMAL
+file 		= "ListHeaders/list_header.png"
+border 	= {1,2,1,2}
+stretch 	= TRUE
+}
+
+image
+{
+function 	= BOX
+state		= PRELIGHT
+file 		= "ListHeaders/list_header-prelight.png"
+border 	= {1,2,5,2}
+stretch 	= TRUE
+}
+
+image
+{
+function 	= BOX
+state		= ACTIVE
+file		= "ListHeaders/list_header-pressed.png"
+border 	= {0,0,0,0}
+stretch 	= TRUE
+}
+image
+{
+function 	= BOX
+state		= SELECTED
+file		= "ListHeaders/list_header-prelight.png"
+border 	= {4,5,2,2}
+stretch 	= TRUE
+}
+image
+{
+function 	= BOX
+state		= INSENSITIVE
+file		= "ListHeaders/list_header-insens.png"
+border 	= {1,2,1,2}
+stretch 	= TRUE
+}
+}
+}
+
+widget_class "*List" style "list-header"
+widget_class "*GtkTree*" style "list-header"
+widget_class "*GtkCList*" style "list-header"
+#widget_class "*Tree*" style "list-header"
+
+# Sodipodi bug
+style "unstyle"
+{
+engine ""
+{
+}
+}
+class "SPColorSlider" 			style "unstyle"
+
+style "SPbutton"
+{
+engine "pixmap"
+{
+image
+{
+function	= BOX
+shadow	= IN
+file		= "Shadows/shadow-out.png"
+border	= {2,2,2,2}
+stretch	= TRUE
+}
+image
+{
+function	= BOX
+}
+}
+}
+
+style "treecol"
+{
+bg[NORMAL] = "#000000"
+}
+
+class "GtkButton" 			style "button"
+class "GtkRadioButton" 		style "radiobutton"
+class "GtkRadioMenuItem" 	style "radiobutton"
+class "GtkCheckButton" 		style "checkbutton"
+class "GtkCheckMenuItem" 	style "checkbutton"
+class "GtkOptionMenu" 		style "optionmenu"
+class "GtkCombo*" 			style "optionmenu"
+class "*Font*" 				style "optionmenu"
+class "GtkEntry" 			style "entry"
+class "GtkOldEditable" 		style "entry"
+class "GtkSpinButton" 	 	style "spinbutton"
+class "GtkRuler" 			style "ruler"
+class "GtkScrollbar" 			style "scrollbar"
+class "GtkProgressBar" 		style "progressbar"
+class "GtkRange" 			style "range"
+class "GtkMenu" 			style "menu"
+class "GtkMenuBar*" 		 	style "menubar"
+widget_class "*MenuBar.*" 	style "menubar"
+class "GtkMenuItem"			style "menuitem"
+class "GtkTearoffMenuItem"	style "menuitem"
+class "GtkNotebook"	 		style "notebook"
+class "GtkToolbar" 			style "flat"
+class "GtkHandleBox" 		style "handlebox"
+class "GtkEventBox" 			style "flat"
+class "GtkPaned" 			style "handlebox"
+class "GtkLayout" 			style "layout"
+class "SPButton" 			style "SPbutton"
+widget "gtk-tooltips" 		style "tooltips"
+
+# colorize ugly white line at the top of the vertical scrollbar in Nautilus
+style "searchbar" {
+bg[NORMAL] = "#080808"
+}
+widget "*.nautilus-extra-view-widget" style:highest "searchbar"
+
+# separator in Nautilus sidebar
+style "separator" {
+bg[NORMAL] = "#191919"
+}
+widget "*nautilus*side*" 		style:highest "separator"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Skins/Default/gtk-2.0/panel.rc	Fri Nov 16 05:36:42 2007 +0200
@@ -0,0 +1,50 @@
+style "tasklist-button"
+{
+xthickness	= 0
+ythickness = 0
+engine "pixmap" 
+{
+image
+{
+function	= BOX
+state		= NORMAL
+file		= "Buttons/button-normal.png"
+border	= {6,6,14,2}
+stretch	= TRUE
+}
+image
+{
+function	= BOX
+state		= ACTIVE
+file		= "Buttons/button-prelight.png"
+border	= {6,6,14,2}
+stretch	= TRUE
+}
+image
+{
+function	= BOX
+state		= PRELIGHT
+file		= "Buttons/button-prelight.png"
+border	= {6,6,14,2}
+stretch	= TRUE
+}
+}
+}
+widget "*.tasklist-button" style "tasklist-button" 
+style "panel-menubar"
+{
+xthickness	= 1
+ythickness	= 0
+engine "pixmap" 
+{
+image
+{
+function	= BOX
+state		= NORMAL
+file		= "Panel/panel-bg.png"
+border	= {0,0,0,0}
+stretch	= FALSE
+}
+}
+}
+class "*Panel*" style "panel-menubar"
Binary file Skins/Default/main.png has changed
Binary file Skins/Default/monoster.png has changed
Binary file Skins/Default/nums_ex.png has changed
Binary file Skins/Default/playpaus.png has changed
Binary file Skins/Default/pledit.png has changed
--- a/Skins/Default/pledit.txt	Wed Oct 24 10:41:53 2007 +0300
+++ b/Skins/Default/pledit.txt	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
-[Text]
-Normal=#a6c1df
-Current=#eeeeee
-NormalBG=#000000
-SelectedBG=#666666
-Font=Helvetica
+[Text]
+Normal=#2499FF
+Current=#FFEEFF
+NormalBG=#000000
+SelectedBG=#0A124A
+
Binary file Skins/Default/posbar.png has changed
Binary file Skins/Default/shufrep.png has changed
--- a/Skins/Default/skin.hints	Wed Oct 24 10:41:53 2007 +0300
+++ b/Skins/Default/skin.hints	Fri Nov 16 05:36:42 2007 +0200
@@ -1,28 +1,32 @@
+# Hints for "Starsidhe", the Audacious 1.4 Default Skin.
+
 [skin]
-skinDescription=The default skin for Audacious.
+skinDescription=Starsidhe, the Audacious 1.4 default skin.
 mainwinOthertext=1
-mainwinVisX=19
-mainwinVisY=39
-mainwinTextX=19
-mainwinTextY=26
-mainwinTextWidth=246
-mainwinInfobarX=111
-mainwinInfobarY=42
-mainwinNumber0X=30
-mainwinNumber0Y=56
-mainwinNumber1X=42
-mainwinNumber1Y=56
-mainwinNumber2X=54
-mainwinNumber2Y=56
-mainwinNumber3X=72
-mainwinNumber3Y=56
-mainwinNumber4X=84
-mainwinNumber4Y=56
-mainwinPlayStatusX=19
-mainwinPlayStatusY=58
-mainwinMenurowVisible=1
-mainwinOthertextIsStatus=1
 mainwinOthertextVisible=1
 mainwinTextVisible=1
 mainwinVisVisible=1
-
+mainwinMenurowVisible=0
+mainwinNumber0X=28
+mainwinNumber0Y=26
+mainwinNumber1X=40
+mainwinNumber1Y=26
+mainwinNumber2X=52
+mainwinNumber2Y=26
+mainwinNumber3X=70
+mainwinNumber3Y=26
+mainwinNumber4X=82
+mainwinNumber4Y=26
+mainwinPlayStatusX=18
+mainwinPlayStatusY=28
+mainwinVisX=18
+mainwinVisY=49
+mainwinTextX=98
+mainwinTextY=27
+mainwinTextWidth=167
+mainwinInfobarX=98
+mainwinInfobarY=43
+mainwinVolumeX=98
+mainwinVolumeY=57
+mainwinBalanceX=174
+mainwinBalanceY=57
Binary file Skins/Default/text.png has changed
Binary file Skins/Default/titlebar.png has changed
--- a/Skins/Default/viscolor.txt	Wed Oct 24 10:41:53 2007 +0300
+++ b/Skins/Default/viscolor.txt	Fri Nov 16 05:36:42 2007 +0200
@@ -1,24 +1,24 @@
-0,0,0		// [background color 1]
-0,0,0		// [background color 2]
-9,13,15
-19,26,31
-29,39,47
-39,52,63
-49,65,79
-59,78,95
-69,91,111
-79,105,127
-88,118,143
-98,131,159
-108,144,175
-118,157,191
-128,170,207
-138,183,223
-148,196,239
-158,210,255
-240,240,240		// [osc 1]
-220,220,220		// [osc 2]
-170,170,170		// [osc 3]
-100,100,100		// [osc 4]
-20,20,20		// [osc 5]
-200,200,220		// [peak color]
+8,8,8			// 0 = black (background color #1)
+8,8,8		// 1 = grey (background color #2)
+8,8,8		// 2
+8,58,116	// 3
+8,8,8		// 4
+8,66,132	// 5
+8,8,8		// 6
+8,74,148	// 7
+8,8,8		// 8
+8,82,164	// 9
+8,8,8		// 10
+8,92,184	// 11
+8,8,8		// 12
+8,104,208	// 13
+8,8,8		// 14
+8,116,232	// 15
+8,8,8		// 16
+8,128,255	// 17 = bottom of spec
+0,128,255	// 18 = osc 1 (brightest)
+0,104,208	// 19 = osc 2
+0,80,160	// 20 = osc 3
+0,56,112	// 21 = osc 4
+0,32,64		// 22 = osc 5 (dimmest)
+200,200,200
Binary file Skins/Default/volume.png has changed
--- a/buildsys.mk.in	Wed Oct 24 10:41:53 2007 +0300
+++ b/buildsys.mk.in	Fri Nov 16 05:36:42 2007 +0200
@@ -1,5 +1,5 @@
 #
-#  Copyright (c) 2007, Jonathan Schleifer <js@h3c.de>
+#  Copyright (c) 2007, Jonathan Schleifer <js-buildsys@webkeks.org>
 #
 #  Permission to use, copy, modify, and/or distribute this software for any
 #  purpose with or without fee is hereby granted, provided that the above
@@ -43,6 +43,7 @@
 LIB_LDFLAGS = @LIB_LDFLAGS@
 LIB_PREFIX = @LIB_PREFIX@
 LIB_SUFFIX = @LIB_SUFFIX@
+LIBDIR ?= ${libdir}
 PLUGIN_CPPFLAGS = @PLUGIN_CPPFLAGS@
 PLUGIN_CFLAGS = @PLUGIN_CFLAGS@
 PLUGIN_LDFLAGS = @PLUGIN_LDFLAGS@
@@ -203,7 +204,7 @@
 
 	for i in ${LIB}; do \
 		${INSTALL_STATUS}; \
-		if ${MKDIR_P} ${DESTDIR}${libdir} && ${INSTALL_LIB}; then \
+		if ${MKDIR_P} ${DESTDIR}${LIBDIR} && ${INSTALL_LIB}; then \
 			${INSTALL_OK}; \
 		else \
 			${INSTALL_FAILED}; \
--- a/configure.ac	Wed Oct 24 10:41:53 2007 +0300
+++ b/configure.ac	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 
 dnl Process this file with autoconf to produce a configure script.
-AC_INIT([audacious], [1.4.0], [bugs+audacious@atheme.org])
+AC_INIT([audacious], [1.4.1], [bugs+audacious@atheme.org])
 AC_PREREQ([2.59])
 
 AC_CANONICAL_HOST
@@ -87,8 +87,8 @@
 
 dnl Check for GTK/GLib/GThread/Pango
 
-PKG_CHECK_MODULES(GTK, [glib-2.0 >= 2.10.0 gtk+-2.0 >= 2.6.0 gthread-2.0 pango],
-    [ADD_PC_REQUIRES([glib-2.0 >= 2.10.0, gtk+-2.0 >= 2.6.0])],
+PKG_CHECK_MODULES(GTK, [glib-2.0 >= 2.10.0 gtk+-2.0 >= 2.10.0 gthread-2.0 pango],
+    [ADD_PC_REQUIRES([glib-2.0 >= 2.10.0, gtk+-2.0 >= 2.10.0])],
     [AC_MSG_ERROR([Cannot find glib2/gtk2/pango])]
 )
 
--- a/m4/buildsys.m4	Wed Oct 24 10:41:53 2007 +0300
+++ b/m4/buildsys.m4	Fri Nov 16 05:36:42 2007 +0200
@@ -1,5 +1,5 @@
 dnl
-dnl Copyright (c) 2007, Jonathan Schleifer <js@h3c.de>
+dnl Copyright (c) 2007, Jonathan Schleifer <js-buildsys@webkeks.org>
 dnl
 dnl Permission to use, copy, modify, and/or distribute this software for any
 dnl purpose with or without fee is hereby granted, provided that the above
@@ -106,8 +106,8 @@
 			PLUGIN_CFLAGS='-fPIC'
 			PLUGIN_LDFLAGS='-shared -fPIC'
 			PLUGIN_SUFFIX='.so'
-			INSTALL_LIB='${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0 && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i'
-			UNINSTALL_LIB='rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0'
+			INSTALL_LIB='${INSTALL} -m 755 $$i ${DESTDIR}${LIBDIR}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0 && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${LIBDIR}/$$i.${LIB_MAJOR} && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${LIBDIR}/$$i'
+			UNINSTALL_LIB='rm -f ${DESTDIR}${LIBDIR}/$$i ${DESTDIR}${LIBDIR}/$$i.${LIB_MAJOR} ${DESTDIR}${LIBDIR}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0'
 			CLEAN_LIB=''
 			;;
 	esac
--- a/po/ChangeLog	Wed Oct 24 10:41:53 2007 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1211 +0,0 @@
-
-Wed Nov 26 09:20:47 SGT 2003  Chong Kai Xiong  <descender@phreaker.net>
-
-	* Makefile.in.in: New file, from gettext-0.12.1.
-
-	* en@boldquot.header: New file, from gettext-0.12.1.
-
-	* en@quot.header: New file, from gettext-0.12.1.
-
-Fri Aug  8 17:12:10 CEST 2003  Håvard Kvålen  <havardk@xmms.org>
-
-	* sl.po: New translation by Tadej Panjtar <panjtar@email.si>
-
-	* LINGUAS: Add "sl" (Slovenian).
-
-Wed Jul 16 01:41:20 CEST 2003  Håvard Kvålen  <havardk@xmms.org>
-
-	* no.po: Updated.
-
-Mon Jul 14 00:34:06 CEST 2003  Håvard Kvålen  <havardk@xmms.org>
-
-	* en.po: New "translation".  The only things that are translated
-	are non-ascii characters.
-
-	* LINGUAS: Add "en".
-
-Sat Jul  5 02:18:03 CEST 2003  Håvard Kvålen  <havardk@xmms.org>
-
-	* LINGUAS: Add Belarusian (be) and Welsh (cy).
-
-	* cy.po: New translation by: 
-	Rhoslyn Prys <rhoslyn.prys@meddal.org.uk>
-
-	* be.po: New translation by: Smaliakou Zmicer <damaviku@pisem.net>
-
-	* pt.po: Updated translation by Jorge Costa <Jorgercosta@netc.pt>
-
-	* uk.po: Updated translation by 
-	Dmytro Koval'ov <kov@tokyo.email.ne.jp>
-
-Tue Jan  7 23:43:10 CET 2003  Håvard Kvålen  <havardk@xmms.org>
-
-	* ja.po: Updated translation by Hiroshi Takekawa <sian@big.or.jp>.
-
-Wed Dec 11 23:17:10 CET 2002  Håvard Kvålen  <havardk@xmms.org>
-
-	* zh_TW.po: Updated translation by 
-	Chun-Chung Chen <cjj@u.washington.edu>
-
-Fri Nov 22 22:10:48 BRST 2002 Juan Carlos C. y Castro <jcastro@vialink.com.br>
-
-	* pt_BR.po: Updated translation.
-
-Sun Oct 27 20:17:45 CET 2002  Håvard Kvålen  <havardk@xmms.org>
-
-	* ca.po: Updated translation by 
-	Albert Astals Cid <astals11@terra.es>
-
-	* ro.po: Updated translation by Miºu Moldovan <dumol@go.ro>
-
-	* no.po: Updated translation.
-
-Wed Sep 11 11:25:37 CEST 2002  Håvard Kvålen  <havardk@xmms.org>
-
-	* nl.po: Fixed two errors that new gettext's would abort on.
-
-Tue Jul 30 23:24:12 BRT 2002 Juan Carlos C. y Castro <jcastro@vialink.com.br>
-
-	* pt_BR.po: Some language names were missing the ':'.
-
-Tue Jul 30 23:04:05 BRT 2002 Juan Carlos C. y Castro <jcastro@vialink.com.br>
-
-	* pt_BR.po: Updated translation.
-
-Mon Jul 29 12:56:24 CEST 2002  Håvard Kvålen  <havardk@xmms.org>
-
-	* ru.po: Updated translation by 
-	Alexandr P. Kovalenko <never@nevermind.kiev.ua>
-
-	* nl.po: Updated translation by Bart Coppens <coppensbart@pi.be>
-
-Tue May 21 02:09:36 BRT 2002 Juan Carlos C. y Castro <jcastro@vialink.com.br>
-
-	* pt_BR.po: Updated translation.
-
-Sun May 12 17:41:35 CEST 2002  Håvard Kvålen  <havardk@xmms.org>
-
-	* mk.po: New translation by Stojcev Darko <atom1c@linux.net.mk>
-
-Mon May  6 16:50:28 CEST 2002  Håvard Kvålen  <havardk@xmms.org>
-
-	* no.po: Updated translation by 
-	Terje Bjerkelia <terje@bjerkelia.com>
-
-Wed Apr 10 15:19:22 CEST 2002  Håvard Kvålen  <havardk@xmms.org>
-
-	* ru.po: Updated translation by 
-	Alexandr P. Kovalenko <never@nevermind.kiev.ua>
-
-Tue Mar 26 15:20:20 CET 2002  Håvard Kvålen  <havardk@xmms.org>
-
-	* cs.po: One string updated.
-	Patch by Martin Macok <martin.macok@underground.cz>
-
-2002-03-14  Christian Rose  <menthos@menthos.com>
-
-	* sv.po: Changed Swedish translation.
-
-Tue Mar  5 15:47:41 CET 2002  Håvard Kvålen  <havardk@xmms.org>
-
-	* es.po: Updated translation by 
-	Jordi Mallach <jordi@sindominio.net>
-
-2002-03-03  Christian Rose  <menthos@menthos.com>
-
-	* sv.po: Changed Swedish translation.
-
-2002-03-02  Christian Rose  <menthos@menthos.com>
-
-	* sv.po: Updated Swedish translation.
-
-Mon Feb 11 13:08:44 CET 2002  Thomas Nilsson <thomas@xmms.org>
-
-	* *.po: Updated copyright year.
-
-Fri Jan 25 18:48:08 CET 2002  Håvard Kvålen  <havardk@xmms.org>
-
-	* ru.po: Updated translation by 
-	Alexandr P. Kovalenko <never@nevermind.kiev.ua>
-
-Thu Jan 24 19:48:47 BRST 2002 Juan Carlos C. y Castro <jcastro@vialink.com.br>
-
-	* pt_BR.po: Updated translation.
-
-Sun Jan 20 21:35:24 CET 2002  Håvard Kvålen  <havardk@xmms.org>
-
-	* ru.po: Updated translation by 
-	Alexandr P. Kovalenko <never@nevermind.kiev.ua>
-
-2002-01-04  Håvard Kvålen  <havardk@xmms.org>
-
-	* no.po: Updated.
-
-Sat Dec 29 19:36:18 CET 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* fr.po: Updated translation by 
-	Arnaud Boissinot <arnaud.boissinot@wanadoo.fr>
-
-2001-12-29  Christian Rose  <menthos@menthos.com>
-
-	* POTFILES.in: Sorted.
-	* sv.po: Updated Swedish translation.
-
-Fri Dec 14 22:36:08 CET 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* ro.po: Updated translation by 
-	Miºu Moldovan <dumol@go.ro>
-
-	* az.po: Updated translation by 
-	Vasif Cabbarli <azerb_linux@hotmail.com>
-
-Tue Dec 11 23:44:35 CET 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* uk.po: Updated translation by Dmytro Koval'ov
-
-	* de.po: Updated translation by 
-	Colin Marquardt <colin@marquardt-home.de>
-
-	* ro.po: Updated translation by 
-	Miºu Moldovan <dumol@go.ro>
-
-	* tr.po: Updated translation by 
-	Ömer Fadýl USTA <omer_fad@hotmail.com>
-
-	* cs.po: Updated translation by 
-	Radek Vybiral <Radek.Vybiral@vsb.cz>
-
-	* hu.po: Updated translation by Arpad Biro <biro_arpad@yahoo.com>
-
-	* th.po: Updated translation by 
-	Supphachoke Suntiwichaya <webmaster@mrchoke.f2s.com>
-
-Sat Dec  8 12:08:22 BRST 2001 Juan Carlos C. y Castro <jcastro@vialink.com.br>
-
-	* pt_BR.po: Fixed inconsistencies in menu translation.
-
-Sat Dec  8 12:11:58 CET 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* ja.po: Updated translation by 
-	Hiroshi Takekawa <takekawa@sr3.t.u-tokyo.ac.jp>
-
-	* zh_TW.po: Updated translation by 
-	Chun-Chung Chen <cjj@u.washington.edu>
-
-	* el.po: Updated translation by 
-	Thanos Kyritsis <djart@hellug.gr>
-
-	* pl.po: Updated translation by 
-	GNOME PL Team <translators@gnome.pl>
-
-	* de.po: Updated translation by 
-	Colin Marquardt <colin@marquardt-home.de>
-
-	* hr.po: Updated translation by 
-	Vlatko Kosturjak <kost@iname.com>
-
-	* es.po: Updated translation by 
-	Jordi Mallach <jordi@sindominio.net>
-
-	* fr.po: Updated translation by 
-	Arnaud Boissinot <arnaud.boissinot@wanadoo.fr>
-
-	* gl.po: Updated translation by 
-	Alberto García <berto@gpul.org>
-
-	* nn.po: Updated translation by 
-	Roy-Magne Mo <rmo@sunnmore.net>
-
-2001-12-07  Christian Rose  <menthos@menthos.com>
-
-	* sv.po: Updated Swedish translation.
-
-Tue Dec  4 19:42:25 BRST 2001 Juan Carlos C. y Castro <jcastro@vialink.com.br>
-
-	* pt_BR.po: Updated translation.
-
-2001-12-03  Christian Rose  <menthos@menthos.com>
-
-	* sv.po: Updated Swedish translation.
-
-2001-11-27  Christian Rose  <menthos@menthos.com>
-
-	* sv.po: Updated Swedish translation.
-
-Thu Nov 15 22:06:11 BRST 2001 Juan Carlos C. y Castro <jcastro@vialink.com.br>
-
-	* pt_BR.po: Updated translation.
-
-Wed Nov 14 00:02:51 CET 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* ja.po: Updated translation by 
-	Hiroshi Takekawa <takekawa@sr3.t.u-tokyo.ac.jp>
-
-Mon Nov 12 22:44:20 CET 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* sv.po: Updated translation by 
-	Christian Rose <menthos@menthos.com>
-
-Sat Nov 10 22:11:37 BRST 2001 Juan Carlos C. y Castro <jcastro@vialink.com.br>
-
-	* pt_BR.po: Updated translation.
-
-Sat Nov 10 18:46:14 CET 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* sv.po: Updated translation by 
-	Christian Rose <menthos@menthos.com>
-
-	* pl.po: Updated translation by 
-	GNOME PL Team <translators@gnome.pl>
-
-Wed Nov  7 01:26:26 CET 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* th.po: New translation by 
-	Supphachoke Suntiwichaya <webmaster@mrchoke.f2s.com>
-
-Fri Sep 21 10:57:54 BRT 2001 Juan Carlos C. y Castro <jcastro@vialink.com.br>
-
-	* pt_BR.po: Updated translation.
-
-Tue Sep 18 21:03:21 CEST 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* es.po: Updated translation by 
-	Jordi Mallach <jordi@sindominio.net>
-
-	* tr.po: Updated translation by 
-	Ömer Fadýl USTA	<omer_fad@hotmail.com>
-
-	* sk.po: Updated translation by Jan Matis <damned@hq.sk>
-
-	* lv.po: Updated translation by Juris Kudiòð <cooker@inbox.lv>
-
-	* ko.po: Updated translation by Jaegeum <baedaron@hananet.net>
-
-	* ga.po: Updated translation by 
-	Alastair McKinstry <mckinstry@computer.org>
-
-	* es.po: Updated translation by 
-	Juan Manuel García Molina <juanmagm@mail.com>
-
-	* da.po: Updated translation by Keld Simonsen <keld@dkuug.dk>
-
-	* eu.po: New translation by 
-	Iñigo Salvador Azurmendi <xalba@euskalnet.net>
-
-	* tg.po: New translation by 
-	Dilshod Marupov	<abdula@khujandcomptech.dyn.tj> and
-	Roger Kovacs <rkovacs@khujandcomptech.dyn.tj>
-
-	* vi.po: New translation by Trinh Minh Thanh <tmthanh@yahoo.com>
-
-	* nn.po: Fixed one error.
-
-Tue Sep 18 00:28:00 BRT 2001 Juan Carlos C. y Castro <jcastro@vialink.com.br>
-
-	* pt_BR.po: Updated translation.
-
-Sun Aug 26 19:20:02 CEST 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* ja.po: Updated translation by 
-	Hiroshi Takekawa <takekawa@sr3.t.u-tokyo.ac.jp>
-
-	* nn.po: New translation by Roy-Magne Mo <rmo@sunnmore.net>.
-
-Sun Aug 19 19:07:04 CEST 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* pt_BR.po: Updated translation by 
-	Juan Carlos Castro y Castro <jcastro@appi.com.br>
-
-	* sk.po: Updated translation by 
-	Pavol Cvengros <orpheus@hq.alert.sk>
-
-	* hu.po: Updated translation by 
-	Arpad Biro <biro_arpad@yahoo.com>
-
-	* es.po: Updated translation by 
-	Juan Manuel García Molina <juanmagm@mail.com>
-
-	* eo.po: Updated translation by 
-	D. Dale Gulledge <dsplat@rochester.rr.com>
-
-	* no.po: Updated translation by 
-	Andreas Bergstrøm <abergstr@halden.net>
-
-Thu Jun 21 01:23:37 CEST 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* *.po: Update the bugreport url for all translations.
-	Patch by Thomas Nilsson <thomas@xmms.org>.
-
-Mon Jun 18 18:50:37 CEST 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* sv.po: Updated translation by 
-	Christian Rose <menthos@menthos.com>
-
-Wed Jun 13 16:59:34 CEST 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* az.po, es.po, fr.po, ko.po, no.po, sk.po: Fixed some typos in
-	menus.
-
-Sun Jun 10 23:20:21 CEST 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* pl.po: Updated translation by 
-	Grzegorz Kowal <g_kowal@poczta.onet.pl>
-
-	* az.po, da.po, es.po, fr.po, ga.po, hr.po, ro.po, uk.po: Fixed
-	errors with menus.
-
-	* no.po: Updated.
-
-Thu Jun  7 18:31:40 CEST 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* de.po: Updated translation by 
-	Colin Marquardt <colin@marquardt-home.de>
-
-Wed Jun  6 14:15:09 CEST 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* hu.po: Commit the right version this time.  Update by 
-	Arpad Biro <biro_arpad@yahoo.com>
-
-Tue Jun  5 15:44:08 CEST 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* no.po: Updated.
-
-	* da.po: Updated translation by 
-	Nikolaj Berg Amodsen <mr_nba@rapanden.dk>
-
-	* zh_TW.po: File renamed from "zh_TW.Big5.po" and updated by 
-	Chun-Chung Chen <cjj@u.washington.edu> and 
-	Jouston Huang <jouston@housediy.com>
-
-Sun Jun  3 22:35:40 CEST 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* es.po: Updated translation by 
-	Jordi Mallach <jordi@sindominio.net>
-
-	* uk.po: Dmytro Kovalov <dmytro.kovalov@nssmb.com>
-
-	* pt_BR.po: Updated translation by
-	Juan Carlos Castro y Castro <jcastro@appi.com.br>
-
-	* hu.po: Updated translation by
-	Arpad Biro <biro_arpad@yahoo.com>
-
-	* az.po: Updated translation by
-	Vasif Ismailoglu <azerb_linux@hotmail.com>
-
-	* lt.po: Updated translation by 
-	Gediminas Paulauskas <menesis@delfi.lt>
-
-	* cs.po: Updated translation by 
-	Radek Vybiral <Radek.Vybiral@vsb.cz>
-
-	* hr.po: Updated translation by 
-	Vlatko Kosturjak <kost@iname.com>
-
-	* tr.po: Updated translation by
-	Ömer Fadýl USTA <omer_fad@hotmail.com>
-
-	* ru.po: Updated translation by 
-	Maxim Koshelev <chuchelo@krasu.ru>
-
-	* gl.po: Updated translation by 
-	Alberto García <berto@gpul.org>
-
-	* ro.po: Updated translation by Misu Moldovan <dumol@go.ro>
-
-	* sk.po: Updated translation by
-	Pavol Cvengros <orpheus@hq.alert.sk>
-
-	* fr.po: Updated translation by
-	Arnaud Boissinot <arnaud.boissinot@wanadoo.fr>
-
-	* ko.po: Updated translation by 
-	Jaegeum Choe <baedaron@hananet.net>
-
-	* ja.po: Updated translation by 
-	Hiroshi Takekawa <takekawa@sr3.t.u-tokyo.ac.jp>
-
-	* sv.po: Updated translation by 
-	Christian Rose <menthos@menthos.com>
-
-	* el.po: Updated translation by 
-	Kyritsis Athanasios <djart@linux.gr>
-
-Wed May  9 00:52:48 CEST 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* *.po: Ran 'make update-po'.
-
-	* ja.po: Updated translation by 
-	Hiroshi Takekawa <takekawa@sr3.t.u-tokyo.ac.jp>
-
-	* sv.po: Updated translation by 
-	Christian Rose <menthos@menthos.com>
-
-Tue Apr 10 17:29:14 CEST 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* bg.po: Updated translation by 
-	Yovko D. Lambrev <yovko@sdf.lonestar.org>
-
-	* az.po: Updated translation by 
-	Vasif Ismailoglu <azerb_linux@hotmail.com>
-
-	* pt_BR.po: Updated translation by 
-	Juan Carlos Castro y Castro <jcastro@appi.com.br>
-
-	* sv.po: Updated translation by 
-	Christian Rose <menthos@menthos.com>
-
-Mon Mar 26 03:36:41 CEST 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* sr.po: New translation by Tomislav Jankovic_<tomaja@net.yu>
-
-	* wa.po: Updated translation by 
-	Pablo Saratxaga <pablo@mandrakesoft.com>
-
-	* tr.po: Updated translation by 
-	Ömer Fadýl USTA <omer_fad@hotmail.com>
-
-	* ko.po: Updated translation by 
-	Jaegeum Choe <baedaron@hananet.net>
-
-	* id.po: Updated translation by Budi Rachmanto <rac@techie.com>
-
-	* hr.po: Updated translation by Vlatko Kosturjak <kost@iname.com>
-
-	* de.po: Updated translation by 
-	Colin Marquardt <colin@marquardt-home.de>
-
-	* az.po: Updated translation by 
-	Vasif Ismailoglu <azerb_linux@hotmail.com>
-
-Tue Mar 20 17:08:41 EST 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* no.po: Updated translation.
-
-Tue Mar 20 01:22:44 CET 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* pt_BR.po: Updated translation by 
-	Juan Carlos Castro y Castro <jcastro@appi.com.br>
-
-Tue Mar 13 22:00:03 CET 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* pt.po: New translation by Jorge Costa <Jorgercosta@netc.pt>
-
-Fri Mar  9 01:47:22 CET 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* sv.po: Updated translation by
-	Fuad Sabanovic <manijak@telia.com>
-
-	* sk.po: Updated translation by
-	Pavol Cvengros <orpheus@hq.alert.sk>
-
-	* pt_BR.po: Updated translation by
-	Juan Carlos Castro y Castro <jcastro@appi.com.br>
-
-	* lt.po: Updated translation by
-	Gediminas Paulauskas <menesis@delfi.lt>
-
-	* ja.po: Updated translation by
-	Hiroshi Takekawa <takekawa@sr3.t.u-tokyo.ac.jp>
-
-	* bg.po: Updated translation by
-	Yovko D. Lambrev <yovko@sdf.lonestar.org>
-
-Fri Mar  2 18:32:16 CET 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* tr.po: Updated translation by
-	Ömer Fadýl USTA <omer_fad@hotmail.com>
-
-	* ru.po: Updated translation by Valek Filippov <frob@df.ru>
-
-	* pl.po: Updated translation by 
-	Grzegorz Kowal <g_kowal@poczta.onet.pl>
-
-	* id.po: New translation by Budi Rachmanto <rac@techie.com>
-
-Fri Feb 16 23:21:53 CET 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* gl.po: Updated translation by Alberto García <berto@gpul.org>
-
-	* wa.po: Updated translation by 
-	Pablo Saratxaga <pablo@mandrakesoft.com>
-
-	* tr.po: Updated translation by Nazmi Savga <savga@catlover.com>
-
-	* no.po: Updated translation by 
-	Terje Bjerkelia <terje@bjerkelia.com>
-
-	* hr.po: Updated translation by Vlatko Kosturjak <kost@iname.com>
-
-	* az.po: Updated traslation by 
-	Vasif Ismailoglu <azerb_linux@hotmail.com> 
-
-Wed Feb  7 20:34:54 CET 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* hr.po: Updated translation by Vlatko Kosturjak <kost@iname.com>
-
-	* de.po: Updated translation by
-	Colin Marquardt <colin@marquardt-home.de>
-
-	* da.po: Updated translation by Keld Simonsen <keld@dkuug.dk>
-
-	* cs.po: Updated translation by
-	Radek Vybiral <Radek.Vybiral@vsb.cz>
-
-	* pt_BR.po: Updated translation by
-	Juan Carlos Castro y Castro <jcastro@appi.com.br>
-
-Thu Jan  4 21:54:46 CET 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* ja.po: Updated translation by
-	Hiroshi Takekawa <takekawa@sr3.t.u-tokyo.ac.jp>
-
-Tue Jan  2 00:19:16 CET 2001  Håvard Kvålen  <havardk@xmms.org>
-
-	* pt_BR.po: Updated translation by
-	Juan Carlos Castro y Castro <jcastro@appi.com.br>
-
-	* ru.po: Updated translation by
-	Alexandr P. Kovalenko <never@nevermind.kiev.ua>
-
-Tue Dec 19 18:36:10 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* ru.po: Updated translation by 
-	Alexandr P. Kovalenko <never@nevermind.kiev.ua>
-
-Sun Dec 10 23:44:00 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* wa.po: Updated translation by 
-	Pablo Saratxaga <pablo@mandrakesoft.com>
-
-	* ru.po: Updated translation by 
-	Aleksey Smirnov <smi@logic.ru>
-
-	* ga.po: The charset was slightly wrong.  
-	Fix by Pablo Saratxaga <pablo@mandrakesoft.com>.
-
-	* es.po: Updated translation by 
-	Fabian Mandelbaum <fabman@einstein.com.ar>
-
-	* az.po: Converted to UTF-8.  Supposed to work better. Thanks to
-	Pablo Saratxaga <pablo@mandrakesoft.com> 
-
-	* no.po: Updated translation by 
-	Andreas Bergstrøm <abergstr(at)halden.net> 
-
-	* it.po: Fixed a couple of errors.  One of them caused segfaults
-	with XMMS 1.2.4.
-
-Wed Nov 29 12:46:20 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* gl.po: New translation by Alberto García <berto@gpul.org>
-
-Mon Nov 27 15:17:08 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* es.po: Fixed a typo.
-
-Mon Nov 27 14:52:43 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* ro.po: Updated translation by 
-	Miºu Moldovan <dumol@go.ro>
-
-	* sk.po: Updated translation by
-	Pavol Cvengros <orpheus@hq.alert.sk>
-
-	* pl.po: Updated translation by
-	Grzegorz Kowal <g_kowal@poczta.onet.pl>
-
-	* no.po: Updated translation by 
-	Terje Bjerkelia <terje@bjerkelia.com>
-
-	* lv.po: Updated translation by	Vitauts Stochka <vit@dpu.lv>
-
-	* cs.po: Updated translation by
-	Vladimír Marek <vlmarek@volny.cz>
-
-	* ca.po: Updated translation by
-	Quico Llach <tradgnome@softcatala.org>
-
-	* da.po: Some corrections by 
-	Kenneth Christiansen <kenneth@gnu.org> and 
-	Keld Simonsen <keld@dkuug.dk>
-
-	* az.po: Updated translation by 
-	Vasif Ismailoglu <azerb_linux@hotmail.com>
-
-	* pt_BR.po: Updated translation by
-	Juan Carlos Castro y Castro <jcastro@appi.com.br>
-
-	* sv.po: Updated translation by 
-	Christian Rose <menthos@menthos.com> 
-
-	* it.po: Updated translation by Paolo Lorenzin <pasusu@tin.it>
-
-Tue Nov 21 23:22:02 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* uk.po: Updated translation by 
-	Dmytro Koval'ov <kov@tokyo.email.ne.jp>
-
-	* it.po: Updated translation by Paolo Lorenzin <pasusu@tin.it>
-
-	* zh_TW.Big5.po: One correction.
-
-Tue Nov 21 01:34:15 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* zh_TW.Big5.po: Updated translation by 
-	Chun-Chung Chen <cjj@u.washington.edu>
-
-	* hu.po: Updated translation by 
-	Arpad BIRO <biro_arpad@hotmail.com>
-
-	* de.po: Updated translation by 
-	Colin Marquardt <colin@marquardt-home.de>
-
-	* da.po: Updated translation by 
-	Nikolaj Berg Amondsen <mr_nba@get2net.dk>
-
-Sun Nov 19 17:08:16 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* ja.po: Updated translation by
-	Hiroshi Takekawa <takekawa@sr3.t.u-tokyo.ac.jp>
-
-	* lt.po: Updated translation by
-	Gediminas Paulauskas <menesis@delfi.lt>
-
-Fri Nov 17 14:39:39 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* ko.po: Updated translation by
-	Man-Yong Lee <yong@linuxkorea.co.kr>
-
-	* bg.po: Updated translation by
-	Yovko D. Lambrev <yovko@sdf.lonestar.org>
-
-	* sv.po: Updated translation by 
-	Christian Rose <menthos@menthos.com> 
-
-Fri Nov 17 00:20:08 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* el.po: Updated translation by 
-	Kyritsis Athanasios <djart@linux.gr> 
-
-Wed Nov  8 22:07:11 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* tr.po: Updated translation by
-	Nazmi Savga <savga@catlover.com>
-
-	* sv.po: Updated translations by
-	Christian Rose <menthos@menthos.com>
-
-	* pl.po: Updated translation by
-	Grzegorz Kowal <g_kowal@poczta.onet.pl>
-
-	* es.po: Updated translation by 
-	Fabian Mandelbaum <fabman@einstein.com.ar>
-
-	* az.po: Updated translation by 
-	Vasif Ismailoglu <azerb_linux@hotmail.com> 
-
-	* zh_CN.GB2312.po: A missing slash was causing crashes on start.
-
-Wed Oct 25 18:41:51 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* uk.po: Updated translation by
-	Dmytro Koval'ov <kov@tokyo.email.ne.jp>
-
-	* ja.po: Updated translation by
-	Hiroshi Takekawa <takekawa@sr3.t.u-tokyo.ac.jp>
-
-	* pt_BR.po: Updated translation by
-	Juan Carlos Castro y Castro <jcastro@appi.com.br>
-
-Wed Oct 18 13:35:48 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* pt_BR.po: Updated translation by
-	Juan Carlos Castro y Castro <jcastro@appi.com.br>
-
-	* tr.po: New translation by Nazmi Savga <savga@catlover.com>
-
-Mon Oct  2 11:37:24 2000  Espen Skoglund  <esk@ira.uka.de>
-
-	* ja.po: Update strings for 3DNow! patch:
-	Osamu Kayasono <kayasono@mb.infoweb.ne.jp>
-
-Sun Oct  1 19:45:07 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* da.po: Updated translation by:
-	Nikolaj Berg Amondsen <mr_nba@get2net.dk>
-
-	* ga.po: Updated translation by: 
-	Alastair McKinstry <mckinstry@computer.org>
-
-Tue Sep 26 23:03:21 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* it.po: New translation by: Paolo Lorenzin <pasusu@tin.it>
-
-	* az.po: New translation by: 
-	Vasif Ismailoglu <azerb_linux@hotmail.com>
-
-	* eo.po: Updated translation by:
-	D. Dale Gulledge <dsplat@rochester.rr.com>
-
-	* sk.po: Updated translation by:
-	Pavol Cvengros <orpheus@hq.alert.sk>
-
-Tue Sep 26 00:40:31 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* ko.po: Updated translation by: 
-	Byeong-Chan Kim <redhands@linux.sarang.net> 
-
-Tue Sep 19 17:11:41 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* cs.po: Update by Vladimír Marek <vlmarek@volny.cz>.
-
-Mon Sep 18 02:03:32 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* lv.po: New translation by: Vitauts Stochka <vit@dpu.lv>
-
-	* af.po: Updated translation by:
-	Schalk W. Cronjé <schalkc@ntaba.co.za>
-
-	* nl.po: Updated translation by:
-	Tom Laermans <sidewinder@linuxfreak.com>
-
-	* ga.po: Updated translaion by:
-	Alastair McKinstry <mckinstry@computer.org>
-
-	* pl.po: Updated translation by:
-	Grzegorz Kowal <g_kowal@poczta.onet.pl>
-
-	* ca.po: Updated translation by:
-	Quico Llach <tradgnome@softcatala.org>
-
-	* zh_TW.Big5.po: Fixed two duplicate strings.
-
-Mon Sep 11 23:18:20 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* ga.po: New translation by: 
-	Alastair McKinstry <mckinstry@computer.org>
-
-	* zh_TW.Big5.po: Updated translation by:
-	Jouston Huang <jouston@housediy.com> and others.
-
-	* zh_CN.GB2312.po: Updated translation by:
-	Danny Zeng <danny@zeng.com.cn>
-
-	* wa.po: Updated translation by:
-	Pablo Saratxaga <pablo@mandrakesoft.com>
-
-	* uk.po: Updated translation by:
-	Dmytro Kovalov <kov@tokyo.email.ne.jp>
-
-	* ru.po: Updated translation by:
-	Maxim Koshelev <mdem@chat.ru>
-
-	* pt_BR.po: Updated translation by:
-	Juan Carlos Castro y Castro <jcastro@appi.com.br>
-
-	* pl.po: Updated translation by:
-	Grzegorz Kowal <g_kowal@poczta.onet.pl>
-
-	* no.po: Updated translation by: 
-	Terje Bjerkelia <terje@bjerkelia.com>
-
-	* lt.po: Updated translation by:
-	Gediminas Paulauskas <menesis@delfi.lt>
-
-	* ja.po: Updated translation by:
-	Hiroshi Takekawa <takekawa@sr3.t.u-tokyo.ac.jp>
-
-	* hu.po: Updated translation by:
-	Arpad BIRO <biro_arpad@hotmail.com>
-
-	* fr.po: Updated translation by:
-	Eric Fernandez-Bellot <fernandez@cgm.cnrs-gif.fr>
-
-	* es.po: Updated translation by:
-	Fabian Mandelbaum <fabman@einstein.com.ar>
-
-	* el.po: el_GR.po renamed to el.po.  Also updated by:
-	Kyritsis Athanasios <djart@linux.gr>
-
-	* de.po: Updated translation by:
-	Colin Marquardt <colin@marquardt-home.de>
-
-	* cs.po: Updated translation by:
-	Radek Vybiral <Radek.Vybiral@vsb.cz>
-
-	* bg.po: Updated translation by:
-	Yovko D. Lambrev <yovko@sdf.lonestar.org>
-
-Sun Sep  3 22:24:28 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* sv.po: Updated translation by:
-	Christian Rose <menthos@menthos.com>
-
-	* *.po: Ran 'make update-po'.
-
-Fri Aug 11 20:20:27 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* sv.po: Updated translation by: 
-	Christian Rose <menthos@menthos.com> 
-
-	* pt_BR.po: Updated translation by: 
-	Juan Carlos Castro y Castro <jcastro@appi.com.br>
-
-Wed Aug  9 23:54:22 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* pt_BR.po: Updated translation by: 
-	Juan Carlos Castro y Castro <jcastro@appi.com.br>
-
-Wed Aug  9 16:47:33 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* sv.po: Updated translation by: Thomas Nilsson <thomas@xmms.org>
-
-Mon Aug  7 17:38:26 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* ja.po: Updated translation by: 
-	Hiroshi Takekawa <takekawa@sr3.t.u-tokyo.ac.jp>
-
-Fri Jul 28 18:39:18 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* pt_BR.po: Updated translation by:
-	Juan Carlos Castro y Castro <jcastro@appi.com.br>
-
-Fri Jul 14 01:24:03 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* sv.po: Updated translation by: 
-	Christian Rose <menthos@menthos.com> 
-
-Tue Jul  4 19:21:59 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* bg.po: Updated translation by: 
-	Yovko D. Lambrev <yovko@sdf.lonestar.org> 
-
-	* cs.po: Updated translation by: 
-	Radek Vybiral <Radek.Vybiral@vsb.cz> 
-
-Tue Jun 27 16:07:18 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* el_GR.po: New translation by: 
-	Kyritsis Athanasios <djart@linux.gr> 
-
-	* pl.po: New translation by: 
-	Grzegorz Kowal <g_kowal@poczta.onet.pl>
-
-Sat Jun 17 19:54:49 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* sv.po: Updated translation by: Thomas Nilsson <thomas@xmms.org>
-
-Sat Jun 17 18:38:14 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* eo.po: New translation by: 
-	D. Dale Gulledge <dsplat@rochester.rr.com>
-
-	* hr.po, ja.po, ko.po, ru.po, sv.po, uk.po, wa.po, zh_TW.Big5.po,
-	zh_CN.GB2312.po: Various small fixes by Pablo Saratxaga
-	<pablo@mandrakesoft.com> 
-
-	* no.po: Updated translation by: 
-	Terje Bjerkelia <terje@bjerkelia.com>. A couple of strings altered
-	by me.
-
-Tue Jun 13 23:40:15 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* ja.po: Updated translation by: 
-	Hiroshi Takekawa <takekawa@sr3.t.u-tokyo.ac.jp>
-
-Mon Jun 12 16:56:55 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* pt_BR.po: One string added by: 
-	Juan Carlos Castro y Castro <jcastro@appi.com.br>
-
-Mon Jun 12 15:39:23 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* *.po: Ran 'make update-po' and updated the copyright string from
-	about.c for all translations.
-
-Fri Jun  9 10:40:42 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* zh_CN.GB2312.po: Updated translation by:
-	Danny Zeng <danny@zeng.com.cn>
-
-	* fr.po: Update which fixes a incorrect string (again).
-
-	* pt_BR.po: Updated translation by: 
-	Juan Carlos Castro y Castro <jcastro@appi.com.br>
-
-Wed May 31 00:58:34 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* cs.po: New translation by: Radek Vybiral <Radek.Vybiral@vsb.cz>
-
-	* fr.po: Updated translation by:
-	Eric Fernandez-Bellot <fernandez@cgm.cnrs-gif.fr>
-
-	* da.po: Updated translation by: 
-	Nikolaj Berg Amondsen <mr_nba@get2net.dk>
-
-	* ro.po: Updated translation by:
-	Florin Grad <florin@mandrakesoft.com>
-
-	* es.po: Updated translation by: 
-	Fabian Mandelbaum <fabman@einstein.com.ar>
-
-	* sk.po: Updated translation by: 
-	Jan Matis <damned@hq.alert.sk>
-
-	* lt.po: Updated translation by: 
-	Gediminas Paulauskas <menesis@delfi.lt>
-
-	* hu.po: Updated tranlation by: 
-	Arpad BIRO <biro_arpad@hotmail.com>
-
-	* ca.po: Updated translation by: 
-	Quico Llach <quico@softcatala.org>
-
-	* af.po: Update translation by: 
-	Schalk W. Cronjé <schalkc@ntaba.co.za>
-
-Tue May 30 01:50:32 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* de.po: Updated translation by:
-	Colin Marquardt <colin@marquardt-home.de>
-
-Mon May 22 22:10:54 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* fr.po: Updated translation by: 
-	Eric Fernandez-Bellot <fernandez@cgm.cnrs-gif.fr>
-
-	* wa.po: Updated translation by: 
-	Pablo Saratxaga <pablo@mandrakesoft.com>, 
-	Lucyin Mahin
-
-	* bg.po: Updated translation by: 
-	Yovko D. Lambrev <yovko@sdf.lonestar.org>
-
-	* ca.po: Updated translation by: 
-	Quico Llach <quico@softcatala.org> 
-
-	* uk.po: Updated translation by: 
-	Dmytro Koval'ov	<kov@tokyo.email.ne.jp> 
-
-	* hu.po: New translation by: Arpad BIRO <biro_arpad@hotmail.com>
-
-	* af.po: New translation by: 
-	Schalk W. Cronjé <schalkc@ntaba.co.za> 
-
-	* es.po: Updated translation by: 
-	Fabian Mandelbaum <fabman@einstein.com.ar> 
-
-Fri May 19 13:36:02 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* sk.po: Updated translation by: Jan Matis <damned@hq.alert.sk>
-
-	* lt.po: Updated translation by: 
-	Gediminas Paulauskas <menesis@delfi.lt> 
-
-	* hr.po: Updated translation by: Vladimir Vuksan <vuksan@veus.hr>
-
-Tue May  9 00:05:04 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* uk.po: Updated translation by: 
-	Dmytro Kovalov <kov@tokyo.email.ne.jp> 
-
-Wed May  3 14:21:47 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* ro.po: New translation by: Florin Grad <florin@mandrakesoft.com>
-
-	* hr.po: New translation by: Vladimir Vuksan <vuksan@veus.hr>
-
-	* es.po: New translation by: 
-	Fabian Mandelbaum <fabman@einstein.com.ar> 
-
-	* no.po: Fixed a typo that affected the Visualization menu.
-
-Wed Apr 12 13:55:01 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* da.po: Updated translation by:
-	Nikolaj Berg Amondsen <mr_nba@get2net.dk>,
-	Kenneth Christiansen,
-	Troels Liebe Bentsen <tlb@iname.com>
-
-Mon Apr  3 00:54:10 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* lt.po: New translation by: 
-	Gediminas Paulauskas <menesis@delfi.lt>
-
-	* sk.po: Updated translation by: Jan Matis <damned@hq.alert.sk>
-
-Thu Mar 30 00:42:05 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* zh_TW.Big5.po: Updated translation by: 
-	Jouston Huang <jouston@housediy.com>
-
-Tue Mar 28 11:26:57 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* sk.po: New translation by:
-	TOMAS HORNICEK <dumber@hq.alert.sk>, 
-	Jan Matis <damned@hq.alert.sk>
-
-Mon Mar 27 02:26:29 CEST 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* no.po: Updated translation by: 
-	Terje Bjerkelia <terje@bjerkelia.com> 
-
-Fri Mar 24 17:37:10 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* bg.po: Updated translation by: 
-	Yovko D. Lambrev <yovko@sdf.lonestar.org>
-
-	* ru.po: Updated translation by: Maxim Koshelev <mdem@chat.ru>
-
-Thu Mar 23 13:21:17 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* fr.po: One string corrected. Thanks to:
-	Guillaume Cottenceau <gc@mandrakesoft.com>
-
-Tue Mar 21 23:05:19 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* de.po: Updated translation by:
-	Colin Marquardt <colin@marquardt-home.de>
-
-	* ja.po: Updated translation by: 
-	Hiroshi Takekawa <takekawa@sr3.t.u-tokyo.ac.jp>
-
-Mon Mar 20 23:27:51 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* bg.po: Updated translation by:
-	Yovko D. Lambrev <yovko@sdf.lonestar.org>
-
-Mon Mar 20 18:50:23 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* ca.po: Updated translation by:
-	Quico Llach <quico@softcatala.org>
-
-	* da.po: Updated translation by: 
-	Nikolaj Berg Amondsen <mr_nba@get2net.dk>
-
-	* zh_CN.GB2312.po: Updated translation by:
-	Danny Zeng <danny@zeng.com.cn>
-
-Sun Mar 19 01:36:19 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* wa.po: Updated translation by:
-	Pablo Saratxaga <pablo@mandrakesoft.com>
-
-	* nl.po: New translation by: 
-	Tom Laermans <sidewinder@linuxfreak.com>
-
-	* da.po: New translation by: 
-	Nikolaj Berg Amondsen <mr_nba@get2net.dk> 
-
-Thu Mar  9 15:41:20 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* ko.po: Updated translation by:
-	Byeong-Chan Kim <redhands@linux.sarang.net>
-
-Tue Mar  7 23:17:24 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* ja.po: Updated translation by: 
-	Hiroshi Takekawa <takekawa@sr3.t.u-tokyo.ac.jp>
-
-Mon Mar  6 15:57:58 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* no.po: Updated translation.
-
-	* fr.po: Updated translation by:
-	Eric Fernandez-Bellot <fernandez@cgm.cnrs-gif.fr>
-
-	* ca.po: Updated translation by: 
-	Quico Llach <quico@softcatala.org> 
-
-Sun Mar  5 00:20:11 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* uk.po: Updated translation by:
-	Dmytro Koval'ov <kov@tokyo.email.ne.jp>
-
-	* de.po: Updated translation by: 
-	Colin Marquardt	<colin@marquardt-home.de> 
-
-	* pt_BR.po: Updated translation by:
-	Juan Carlos Castro y Castro <jcastro@appi.com.br>
-
-Sat Feb 26 00:35:44 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* ca.po: New translation by: Quico Llach <quico@softcatala.org>
-
-	* bg.po: New translation by: 
-	Yovko D. Lambrev <yovko@plov.omega.bg> 
-
-	* sv.po: New translation by: Olle Hällnäs <olle@xmms.org>
-
-	* pt_BR.po: Updated translation by:
-	Juan Carlos Castro y Castro <jcastro@appi.com.br>
-
-Thu Feb 17 10:50:41 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* ko.po: Updated translation by:
-	Byeong-Chan Kim <redhands@linux.sarang.net>
-
-Wed Feb 16 22:19:51 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* pt_BR.po: Updated translation by:
-	Juan Carlos Castro y Castro <jcastro@appi.com.br>
-
-Wed Feb 16 02:09:22 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* no.po: Updated translation.
-
-Wed Feb 16 00:00:20 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* pt_BR.po: New translation by:
-	Juan Carlos Castro y Castro <jcastro@appi.com.br>
-
-Tue Feb 15 21:13:03 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* ko.po: Updated translation by:
-	Byeong-Chan Kim <redhands@linux.sarang.net>
-
-Thu Feb 10 22:15:00 CET 2000  Håvard Kvålen  <havardk@xmms.org>
-
-	* ko.po: New translation by:
-	Sang-Jin Hwang <accel@accellinux.org>, 
-	Updated by: Byeong-Chan Kim <redhands@linux.sarang.net>
-
-Thu Feb 10 14:14:48 CET 2000  Håvard Kvålen  <havardk@sol.no>
-
-	* ru.po: New translation by: Koshelev Maxim <mdem@chat.ru>
-
-Mon Feb  7 22:48:26 CET 2000  Håvard Kvålen  <havardk@sol.no>
-
-	* de.po: Updated translation by:
-	Colin Marquardt	<colin@marquardt-home.de>
-
-Mon Feb  7 14:15:42 CET 2000  Håvard Kvålen  <havardk@sol.no>
-
-	* ja.po: New translation by:
-	Hiroshi Takekawa <takekawa@sr3.t.u-tokyo.ac.jp>
-
-Sun Feb  6 13:33:35 CET 2000  Håvard Kvålen  <havardk@sol.no>
-
-	* zh_CN.GB2312.po: Added translation by:
-	Jouston Huang <jouston@linuxfab.cx>,
-	Andrew Lee <andrew@cle.linux.org.tw>,
-	Chih-Wei Huang <cwhuang@linux.org.tw>.
-
-	* zh_TW.Big5.po: Added translation by: 
-	Jouston Huang <http://Linuxfab.cx> <jouston@linuxfab.cx>,
-	Andrew Lee <andrew@cle.linux.org.tw>,
-	Chih-Wei Huang <cwhuang@linux.org.tw>.
-
-	* wa.po: Added translation by: 
-	Pablo Saratxaga	<srtxg@chanae.alphanet.ch>
-
-	* uk.po: Added translation by: 
-	"Dmytro Koval'ov" <kov@tokyo.email.ne.jp>
-
-	* fr.po: Added translation by:
-	Eric Fernandez-Bellot <fernandez@cgm.cnrs-gif.fr>
-
-	* de.po: Added translation by: 
-	Colin Marquardt	<colin@marquardt-home.de>
-
--- a/po/bg.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/bg.po	Fri Nov 16 05:36:42 2007 +0200
@@ -531,6 +531,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr ""
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
 msgstr ""
--- a/po/br.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/br.po	Fri Nov 16 05:36:42 2007 +0200
@@ -498,6 +498,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr ""
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 #, fuzzy
 msgid "Interpolation Engine:"
--- a/po/ca.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/ca.po	Fri Nov 16 05:36:42 2007 +0200
@@ -534,6 +534,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr ""
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
 msgstr ""
--- a/po/cs.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/cs.po	Fri Nov 16 05:36:42 2007 +0200
@@ -6,10 +6,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: audacious svn-4131\n"
+"Project-Id-Version: audacious hg-3877\n"
 "Report-Msgid-Bugs-To: http://bugs.audacious-media-player.org\n"
-"POT-Creation-Date: 2007-10-13 14:15+0200\n"
-"PO-Revision-Date: 2007-02-26 13:41+0100\n"
+"POT-Creation-Date: 2007-11-01 16:25+0100\n"
+"PO-Revision-Date: 2007-11-01 17:59+0100\n"
 "Last-Translator: Petr Písař <petr.pisar@atlas.cz>\n"
 "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
@@ -125,12 +125,11 @@
 
 #: src/audacious/glade/prefswin.glade:1050
 msgid "Select main player window font:"
-msgstr "Font v hlavním oknÄ› pÅ™ehrávaÄe:"
+msgstr "Vyberte font pro hlavní okno pÅ™ehrávaÄe:"
 
 #: src/audacious/glade/prefswin.glade:1072
-#, fuzzy
 msgid "Select playlist font:"
-msgstr "Font v hlavním oknÄ› pÅ™ehrávaÄe:"
+msgstr "Vyberte font pro seznam skladeb:"
 
 #: src/audacious/glade/prefswin.glade:1112
 msgid ""
@@ -188,10 +187,12 @@
 "If selected, the file information text in the main window will scroll back "
 "and forth. If not selected, the text will only scroll in one direction."
 msgstr ""
+"Bude-li vybráno, text s informacemi o souboru v hlavním okně bude běhat tam "
+"a zpět. Nebude-li vybráno, text se bude pohybovat jen jedním směrem."
 
 #: src/audacious/glade/prefswin.glade:1380
 msgid "Use two-way text scroller"
-msgstr ""
+msgstr "Pohybovat textem v obou směrech"
 
 #: src/audacious/glade/prefswin.glade:1422 src/audacious/ui_preferences.c:111
 msgid "Appearance"
@@ -429,7 +430,6 @@
 msgstr "Velikost vyrovnávací paměti:"
 
 #: src/audacious/glade/prefswin.glade:3593
-#, fuzzy
 msgid ""
 "<span size=\"small\">This is the amount of time to prebuffer audio streams "
 "by, in milliseconds.\n"
@@ -440,7 +440,7 @@
 "<span size=\"small\">UrÄuje délku zvukového proudu v milisekundách, který "
 "bude pÅ™edpoÄítán do vyrovnávací pamÄ›ti.\n"
 "Pokud máte problémy s přeskakováním zvuku, zvyšte tuto hodnotu.\n"
-"Prosím, vezměte na vědomí, že příliš vysoké hodnoty mohou vézt ke zhoršení "
+"Prosím, vezměte na vědomí, že příliš vysoké hodnoty mohou vést ke zhoršení "
 "výkonu Audacious.</span>"
 
 #: src/audacious/glade/prefswin.glade:3663
@@ -465,7 +465,7 @@
 "in a messier playlist, but delivers a major speed benefit."
 msgstr ""
 "Je-li zatrhnuto, Audacious bude rozpoznávat formát souboru, až bude potřeba. "
-"Toto může vézt k oÅ¡klivému seznamu skladeb, ale znaÄnÄ› urychluje jeho "
+"Toto může vést k oÅ¡klivému seznamu skladeb, ale znaÄnÄ› urychluje jeho "
 "zpracování."
 
 #: src/audacious/glade/prefswin.glade:3937
@@ -480,7 +480,7 @@
 msgstr ""
 "Je-li zatrhnuto, Audacious bude rozpoznávat formát souboru podle přípony. "
 "Tento způsob je o něco pomalejší než rozpoznávání na požádání, ale poskytuje "
-"alespoň základní úrověň rozpoznání formátu. "
+"alespoň základní úroveň rozpoznání formátu. "
 
 #: src/audacious/glade/prefswin.glade:3973
 msgid "Detect file formats by extension."
@@ -522,18 +522,30 @@
 msgstr "s"
 
 #: src/audacious/glade/prefswin.glade:4249
-#, fuzzy
 msgid "<b>Sampling Rate Converter</b>"
-msgstr "Vzorkovací kmitoÄet"
+msgstr "<b>Konvertor vzorkovacího kmitoÄtu</b>"
 
 #: src/audacious/glade/prefswin.glade:4289
-#, fuzzy
 msgid "Enable Sampling Rate Converter"
-msgstr "Vzorkovací kmitoÄet"
+msgstr "Zapnout konvertor vzorkovacího kmitoÄtu"
+
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+"Nejlepší sinová interpolace\n"
+"Střední sinová interpolace\n"
+"Nejrychlejší sinová interpolace\n"
+"ZOH interpolace\n"
+"Lineární interpolace"
 
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
-msgstr ""
+msgstr "Způsob interpolace:"
 
 #: src/audacious/glade/prefswin.glade:4389
 msgid ""
@@ -541,31 +553,34 @@
 "This should be the max supported sampling rate of\n"
 "the sound card or output plugin.</span>"
 msgstr ""
+"<span size=\"small\">Všechny proudy budou převedeny na tento vzorkovací "
+"kmitoÄet.\n"
+"Ten by mÄ›l pÅ™edstavovat maximální vzorkovací kmitoÄet zvukové karty "
+"nebo výstupního modulu.</span>"
 
 #: src/audacious/glade/prefswin.glade:4461
-#, fuzzy
 msgid "Sampling Rate [Hz]:"
-msgstr "Vzorkovací kmitoÄet"
+msgstr "Vzorkovací kmitoÄet [Hz]:"
 
 #: src/audacious/glade/prefswin.glade:4517
-#, fuzzy
 msgid "<b>Volume Control</b>"
-msgstr "Ovládání hlasitosti:"
+msgstr "<b>Ovládání hlasitosti</b>"
 
 #: src/audacious/glade/prefswin.glade:4556
 msgid ""
 "Use software volume control. This may be useful for situations where your "
 "audio system does not support controlling the playback volume."
 msgstr ""
+"Použije softwarové ovládání hlasitosti. Toto je užiteÄné, nepodporuje-li "
+"váš zvukový systém změnu hlasitosti přehrávání."
 
 #: src/audacious/glade/prefswin.glade:4558
 msgid "Use software volume control"
 msgstr "Hlasitost nastavit softwarovÄ›"
 
 #: src/audacious/glade/prefswin.glade:4746
-#, fuzzy
 msgid "Reload Plugins"
-msgstr "Moduly"
+msgstr "Znovu naÄíst moduly"
 
 #: src/audacious/glade/prefswin.glade:4807
 msgid "Popup Information Settings"
@@ -625,7 +640,7 @@
 "Audacious allows you to alter the color balance of the skinned UI. The "
 "sliders below will allow you to do this."
 msgstr ""
-"Audacious umožňuje změnit zabarvení oskinovaného uživatelského rozhraní "
+"Audacious umožňuje změnit zabarvení vzhledu uživatelského rozhraní "
 "pomocí následujících jezdců."
 
 #: src/audacious/glade/prefswin.glade:5359
@@ -661,7 +676,7 @@
 #: src/audacious/logger.c:125
 #, c-format
 msgid "Unable to create log file (%s)!\n"
-msgstr "Nepodařilo se vytvořit prokolovací soubor (%s)!\n"
+msgstr "Nepodařilo se vytvořit protokolovací soubor (%s)!\n"
 
 #: src/audacious/main.c:90 src/audacious/main.c:92 src/audacious/ui_main.c:491
 #: src/audacious/ui_main.c:2466
@@ -808,6 +823,18 @@
 "report:\n"
 "\n"
 msgstr ""
+"\n"
+"Audacious zachytil signál Ä. 11 (SIGSEGV).\n"
+"\n"
+"Omlouváme se za potíže, ale Audacious zhavaroval.\n"
+"Toto je chyba programu a za běžbých okolností by k ní nikdy nemělo dojít.\n"
+"VaÅ¡e souÄasná konfigurace byla uložena a nemÄ›la by být poÅ¡kozena.\n"
+"\n"
+"I vy můžete pomoci zlepšit Audacious tím, že vyplníte chybové hlášení na "
+"http://bugs-meta.atheme.org\n"
+"Prosím, zahrňte celý text této hlášky a popis toho, co jste dělali, když\n"
+"došlo k pádu. Pomůžete tím k rychlejšímu odbavení vašho chybového hlášení:\n"
+"\n"
 
 #: src/audacious/signals.c:80
 msgid ""
@@ -815,12 +842,17 @@
 "Bugs can be reported at http://bugs-meta.atheme.org against the Audacious "
 "product.\n"
 msgstr ""
+"\n"
+"Chyby mohou být hlášeny na http://bugs-meta.atheme.org pod položkou\n"
+"„Audacious product“.\n"
 
 #: src/audacious/signals.c:266
 msgid ""
 "Your signaling implementation is broken.\n"
 "Expect unusable crash reports.\n"
 msgstr ""
+"Vaše implementace signálů je rozbitá.\n"
+"OÄekávejte nepoužitelné hlášení o pádu.\n"
 
 #: src/audacious/strings.c:170
 msgid "  (invalid UTF-8)"
@@ -837,17 +869,17 @@
 "\n"
 "Copyright © 2005–2007 vývojový tým Audacious"
 
-#: src/audacious/ui_about.c:125 src/audacious/ui_credits.c:357
+#: src/audacious/ui_about.c:125 src/audacious/ui_credits.c:358
 #: src/audacious/ui_manager.c:391 src/audacious/ui_manager.c:392
 msgid "About Audacious"
 msgstr "O Audacious"
 
-#: src/audacious/ui_about.c:174 src/audacious/ui_credits.c:400
+#: src/audacious/ui_about.c:174 src/audacious/ui_credits.c:401
 msgid "Credits"
 msgstr "Zásluhy"
 
 #: src/audacious/ui_credits.c:47
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "<big><b>Audacious %s</b></big>\n"
 "A skinned multimedia player for many platforms.\n"
@@ -855,7 +887,7 @@
 "Copyright (C) 2005-2007 Audacious Development Team\n"
 msgstr ""
 "<big><b>Audacious %s</b></big>\n"
-"Budoucnost multimédií v UNIXu\n"
+"PÅ™ehrávaÄ multimédií s mÄ›nitelným vzhledem a pro různé platformy\n"
 "\n"
 "Copyright © 2005–2007 vývojový tým Audacious\n"
 
@@ -871,152 +903,151 @@
 msgid "Default skin:"
 msgstr "Standardní skin:"
 
-#: src/audacious/ui_credits.c:81
+#: src/audacious/ui_credits.c:82
 msgid "Plugin development:"
 msgstr "Vývoj zásuvných modulů:"
 
-#: src/audacious/ui_credits.c:97
+#: src/audacious/ui_credits.c:98
 msgid "Patch authors:"
 msgstr "Autoři záplat:"
 
-#: src/audacious/ui_credits.c:117
+#: src/audacious/ui_credits.c:118
 msgid "0.1.x developers:"
 msgstr "Vývojáři v. 0.1.x:"
 
-#: src/audacious/ui_credits.c:123
+#: src/audacious/ui_credits.c:124
 msgid "BMP Developers:"
 msgstr "Vývojáři Audacious:"
 
-#: src/audacious/ui_credits.c:155
+#: src/audacious/ui_credits.c:156
 msgid "Brazilian Portuguese:"
 msgstr "Brazilská portugalština:"
 
-#: src/audacious/ui_credits.c:159
+#: src/audacious/ui_credits.c:160
 msgid "Breton:"
 msgstr "Bretonština:"
 
-#: src/audacious/ui_credits.c:162
+#: src/audacious/ui_credits.c:163
 msgid "Bulgarian:"
 msgstr "Bulharština:"
 
-#: src/audacious/ui_credits.c:165
-#, fuzzy
+#: src/audacious/ui_credits.c:166
 msgid "Catalan:"
-msgstr "Italština:"
-
-#: src/audacious/ui_credits.c:168
+msgstr "Katalánština:"
+
+#: src/audacious/ui_credits.c:169
 msgid "Croatian:"
 msgstr "Chorvatština:"
 
-#: src/audacious/ui_credits.c:171
+#: src/audacious/ui_credits.c:172
 msgid "Czech:"
 msgstr "Čeština:"
 
-#: src/audacious/ui_credits.c:174
+#: src/audacious/ui_credits.c:175
 msgid "Dutch:"
 msgstr "Holandština:"
 
-#: src/audacious/ui_credits.c:178
+#: src/audacious/ui_credits.c:179
 msgid "Finnish:"
 msgstr "Finština:"
 
-#: src/audacious/ui_credits.c:181
+#: src/audacious/ui_credits.c:182
 msgid "French:"
 msgstr "Francouzština:"
 
-#: src/audacious/ui_credits.c:185
+#: src/audacious/ui_credits.c:186
 msgid "German:"
 msgstr "NÄ›mÄina:"
 
-#: src/audacious/ui_credits.c:190
+#: src/audacious/ui_credits.c:191
 msgid "Georgian:"
 msgstr "Gruzínština:"
 
-#: src/audacious/ui_credits.c:193
+#: src/audacious/ui_credits.c:194
 msgid "Greek:"
 msgstr "ŘeÄtina:"
 
-#: src/audacious/ui_credits.c:198
+#: src/audacious/ui_credits.c:199
 msgid "Hindi:"
 msgstr "Hindština:"
 
-#: src/audacious/ui_credits.c:201
+#: src/audacious/ui_credits.c:202
 msgid "Hungarian:"
 msgstr "MaÄarÅ¡tina:"
 
-#: src/audacious/ui_credits.c:204
+#: src/audacious/ui_credits.c:205
 msgid "Italian:"
 msgstr "Italština:"
 
-#: src/audacious/ui_credits.c:208
+#: src/audacious/ui_credits.c:209
 msgid "Japanese:"
 msgstr "Japonština:"
 
-#: src/audacious/ui_credits.c:211
+#: src/audacious/ui_credits.c:212
 msgid "Korean:"
 msgstr "Korejština:"
 
-#: src/audacious/ui_credits.c:214
+#: src/audacious/ui_credits.c:215
 msgid "Lithuanian:"
 msgstr "Litevština:"
 
-#: src/audacious/ui_credits.c:217
+#: src/audacious/ui_credits.c:218
 msgid "Macedonian:"
 msgstr "Makedonština:"
 
-#: src/audacious/ui_credits.c:220
+#: src/audacious/ui_credits.c:221
 msgid "Polish:"
 msgstr "Polština:"
 
-#: src/audacious/ui_credits.c:223
+#: src/audacious/ui_credits.c:224
 msgid "Romanian:"
 msgstr "Rumunština:"
 
-#: src/audacious/ui_credits.c:227
+#: src/audacious/ui_credits.c:228
 msgid "Russian:"
 msgstr "Ruština:"
 
-#: src/audacious/ui_credits.c:230
+#: src/audacious/ui_credits.c:231
 msgid "Serbian (Latin):"
 msgstr "Srbština (latinka):"
 
-#: src/audacious/ui_credits.c:233
+#: src/audacious/ui_credits.c:234
 msgid "Serbian (Cyrillic):"
 msgstr "Srbština (cyrilice):"
 
-#: src/audacious/ui_credits.c:236
+#: src/audacious/ui_credits.c:237
 msgid "Simplified Chinese:"
 msgstr "ZjednoduÅ¡ená ÄínÅ¡tina:"
 
-#: src/audacious/ui_credits.c:239
+#: src/audacious/ui_credits.c:240
 msgid "Slovak:"
 msgstr "Slovenština:"
 
-#: src/audacious/ui_credits.c:242
+#: src/audacious/ui_credits.c:243
 msgid "Spanish:"
 msgstr "Španělština:"
 
-#: src/audacious/ui_credits.c:245
+#: src/audacious/ui_credits.c:246
 msgid "Swedish:"
 msgstr "Švédština:"
 
-#: src/audacious/ui_credits.c:248
+#: src/audacious/ui_credits.c:249
 msgid "Traditional Chinese:"
 msgstr "TradiÄní ÄínÅ¡tina:"
 
-#: src/audacious/ui_credits.c:251
+#: src/audacious/ui_credits.c:252
 msgid "Turkish:"
 msgstr "TureÄtina:"
 
-#: src/audacious/ui_credits.c:255
+#: src/audacious/ui_credits.c:256
 msgid "Ukrainian:"
 msgstr "Ukrajinština:"
 
-#: src/audacious/ui_credits.c:258
+#: src/audacious/ui_credits.c:259
 msgid "Welsh:"
 msgstr "Welština:"
 
-#: src/audacious/ui_credits.c:404
+#: src/audacious/ui_credits.c:405
 msgid "Translators"
 msgstr "Překladatelé"
 
@@ -1111,9 +1142,8 @@
 msgstr "_Filtr:"
 
 #: src/audacious/ui_jumptotrack.c:594
-#, fuzzy
 msgid "Close on Jump"
-msgstr "Zavřít dialog při otevření"
+msgstr "Zavřít při skoku"
 
 #: src/audacious/ui_main.c:489
 #, c-format
@@ -1147,17 +1177,15 @@
 
 #: src/audacious/ui_main.c:1228
 msgid "Audacious - visibility warning"
-msgstr ""
+msgstr "Audacious – viditelnost varování"
 
 #: src/audacious/ui_main.c:1230
-#, fuzzy
 msgid "Show main player window"
-msgstr "Font v hlavním oknÄ› pÅ™ehrávaÄe:"
+msgstr "Ukázat hlavní okno pÅ™ehrávaÄe:"
 
 #: src/audacious/ui_main.c:1231
-#, fuzzy
 msgid "Ignore"
-msgstr "žádný"
+msgstr "Ignorovat"
 
 #: src/audacious/ui_main.c:1235
 msgid ""
@@ -1166,73 +1194,70 @@
 "otherwise, you'll have to control it remotely via audtool or enabled plugins "
 "(such as the statusicon plugin)."
 msgstr ""
+"Audacious byl spuštěn se všemi okny skrytými.\n"
+"Možná budete chtít kvůli ovládání okno pÅ™ehrávaÄe opÄ›t zobrazit. V opaÄném "
+"případÄ› budete muset pÅ™ehrávaÄ ovládat vzdálenÄ› pomocí audtool nebo pomocí "
+"zapnutého modulu (např. modulu statusicon [stavová ikona])."
 
 #: src/audacious/ui_main.c:1241
 msgid "Always ignore, show/hide is controlled remotely"
-msgstr ""
+msgstr "Vždy ignorovat, ukázat/skrýt je ovládáno vzdáleně"
 
 #: src/audacious/ui_main.c:1259
 msgid "Enter location to play:"
 msgstr "Zadejte adresu, z které se má hrát:"
 
 #: src/audacious/ui_main.c:1504
-#, fuzzy, c-format
+#, c-format
 msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)"
-msgstr "PŘEJÃT NA %d:%-2.2d/%d:%-2.2d (%d%%)"
+msgstr "Přejít na: %d:%-2.2d/%d:%-2.2d (%d %%)"
 
 #: src/audacious/ui_main.c:1536
-#, fuzzy, c-format
+#, c-format
 msgid "Volume: %d%%"
-msgstr "Hlasitost"
+msgstr "Hlasitost %d %%"
 
 #: src/audacious/ui_main.c:1566
 #, c-format
 msgid "Balance: %d%% left"
-msgstr ""
+msgstr "Vyvážení: %d %% vlevo"
 
 #: src/audacious/ui_main.c:1570
 msgid "Balance: center"
-msgstr ""
+msgstr "Vyvážení: střed"
 
 #: src/audacious/ui_main.c:1574
 #, c-format
 msgid "Balance: %d%% right"
-msgstr ""
+msgstr "Vyvážení: %d %% vpravo"
 
 #: src/audacious/ui_main.c:1916
-#, fuzzy
 msgid "Options Menu"
-msgstr "Nastavení"
+msgstr "Nabídka s nastavením"
 
 #: src/audacious/ui_main.c:1920
-#, fuzzy
 msgid "Disable 'Always On Top'"
-msgstr "Vždy na vrchu"
+msgstr "Vypnout „Vždy na vrchu“"
 
 #: src/audacious/ui_main.c:1922
-#, fuzzy
 msgid "Enable 'Always On Top'"
-msgstr "Vždy na vrchu"
+msgstr "Zapnout „Vždy na vrchu“"
 
 #: src/audacious/ui_main.c:1925
-#, fuzzy
 msgid "File Info Box"
 msgstr "Informace o souboru"
 
 #: src/audacious/ui_main.c:1929
-#, fuzzy
 msgid "Disable 'Doublesize'"
-msgstr "Dvojitá velikost"
+msgstr "Vypnout „Dvojitou velikost“"
 
 #: src/audacious/ui_main.c:1931
-#, fuzzy
 msgid "Enable 'Doublesize'"
-msgstr "Dvojitá velikost"
+msgstr "Zapnout „Dvojitou velikost“"
 
 #: src/audacious/ui_main.c:1934
-#, fuzzy
 msgid "Visualization Menu"
-msgstr "Typ znázornění"
+msgstr "Nabídka s typem znázornění"
 
 #: src/audacious/ui_main.c:1982
 msgid ""
@@ -1485,7 +1510,7 @@
 
 #: src/audacious/ui_manager.c:208 src/audacious/ui_manager.c:209
 msgid "Select Next Playlist"
-msgstr "Vybrat následujicí seznam skladeb"
+msgstr "Vybrat následující seznam skladeb"
 
 #: src/audacious/ui_manager.c:211 src/audacious/ui_manager.c:212
 msgid "Select Previous Playlist"
@@ -1643,7 +1668,7 @@
 
 #: src/audacious/ui_manager.c:293
 msgid "Removes all entries from the playlist."
-msgstr "Ze seznamu odstraní věechny skladby."
+msgstr "Ze seznamu odstraní všechny skladby."
 
 #: src/audacious/ui_manager.c:296
 msgid "Remove Unselected"
@@ -1699,7 +1724,7 @@
 
 #: src/audacious/ui_manager.c:329 src/audacious/ui_manager.c:359
 msgid "Sorts the list by full pathname."
-msgstr "Skladby v seznmu seřadí podle celé cesty."
+msgstr "Skladby v seznamu seřadí podle celé cesty."
 
 #: src/audacious/ui_manager.c:332 src/audacious/ui_manager.c:362
 msgid "By Date"
@@ -1730,18 +1755,16 @@
 msgstr "Seřadit vybrané"
 
 #: src/audacious/ui_manager.c:380
-#, fuzzy
 msgid "File"
-msgstr "Oheň"
+msgstr "Soubor"
 
 #: src/audacious/ui_manager.c:381
 msgid "Help"
 msgstr "Nápověda"
 
 #: src/audacious/ui_manager.c:383
-#, fuzzy
 msgid "Plugin Services"
-msgstr "Moduly"
+msgstr "Služby modulu"
 
 #: src/audacious/ui_manager.c:385 src/audacious/ui_manager.c:388
 msgid "View Track Details"
@@ -1768,9 +1791,8 @@
 msgstr "Přehrát média z vybrané adresy"
 
 #: src/audacious/ui_manager.c:400
-#, fuzzy
 msgid "Plugin services"
-msgstr "Moduly"
+msgstr "Služby modulu"
 
 #: src/audacious/ui_manager.c:402
 msgid "Preferences"
@@ -1860,7 +1882,7 @@
 
 #: src/audacious/ui_manager.c:446
 msgid "Set equalizer preset levels to zero"
-msgstr "Vynulovat předovolby ekvalizéru"
+msgstr "Vynulovat předvolby ekvalizéru"
 
 #: src/audacious/ui_manager.c:448
 msgid "From file"
@@ -1939,14 +1961,12 @@
 "vyhledat."
 
 #: src/audacious/ui_playlist.c:493
-#, fuzzy
 msgid "Title: "
-msgstr "Název:"
+msgstr "Název: "
 
 #: src/audacious/ui_playlist.c:500
-#, fuzzy
 msgid "Album: "
-msgstr "Album:"
+msgstr "Album: "
 
 #: src/audacious/ui_playlist.c:507
 msgid "Artist: "
@@ -1990,13 +2010,12 @@
 "Neznámý typ souboru %s.\n"
 
 #: src/audacious/ui_playlist.c:911
-#, fuzzy
 msgid "Save as Static Playlist"
-msgstr "Uložit seznam skladeb"
+msgstr "Uložit statický seznam skladeb"
 
 #: src/audacious/ui_playlist.c:918
 msgid "Use Relative Path"
-msgstr ""
+msgstr "Použít relativní cesty"
 
 #: src/audacious/ui_playlist.c:940
 msgid "Load Playlist"
@@ -2047,9 +2066,8 @@
 msgstr "Komentář"
 
 #: src/audacious/ui_preferences.c:133
-#, fuzzy
 msgid "Codec"
-msgstr "Zavřít"
+msgstr "Kodek"
 
 #: src/audacious/ui_preferences.c:134
 msgid "Quality"
@@ -2071,7 +2089,7 @@
 msgid "Category"
 msgstr "Kategorie"
 
-#: src/audacious/ui_preferences.c:1963
+#: src/audacious/ui_preferences.c:1931
 msgid "Preferences Window"
 msgstr "Okno nastavení"
 
@@ -2131,40 +2149,46 @@
 msgid "Add/Open URL Dialog"
 msgstr "Dialog Přidat/otevřít URL"
 
-#~ msgid "Show window manager decorations"
-#~ msgstr "Zobrazovat dekorace podle správce oken"
-
-#, fuzzy
-#~ msgid "<b>Artist:</b> %s"
-#~ msgstr "<i>Umělec</i>"
-
-#, fuzzy
-#~ msgid "<b>Title:</b> %s"
-#~ msgstr "<i>Název</i>"
-
-#, fuzzy
-#~ msgid "<b>Album:</b> %s"
-#~ msgstr "<i>Album</i>"
-
-#, fuzzy
-#~ msgid "Audacious last.fm radio tuner"
-#~ msgstr "Zobrazit editor seznamu skladeb"
-
-#, fuzzy
-#~ msgid "Station:"
-#~ msgstr "Umístění:"
-
-#, fuzzy
-#~ msgid "<b>Artist:</b>"
-#~ msgstr "<i>Umělec</i>"
-
-#, fuzzy
-#~ msgid "<b>Title:</b>"
-#~ msgstr "<i>Název</i>"
-
-#, fuzzy
-#~ msgid "<b>Album:</b>"
-#~ msgstr "<i>Album</i>"
+#~ msgid ""
+#~ "<b><big>Unable to play files.</big></b>\n"
+#~ "\n"
+#~ "The following files could not be played. Please check that:\n"
+#~ "1. they are accessible.\n"
+#~ "2. you have enabled the media plugins required."
+#~ msgstr ""
+#~ "<b><big>Soubory nelze přehrát</big></b>\n"
+#~ "\n"
+#~ "Následující soubory nelze přehrát. Zkontrolujte zda:\n"
+#~ "1. jsou přístupné,\n"
+#~ "2. máte povolené příslušné moduly."
+
+#~ msgid "Don't show this warning anymore"
+#~ msgstr "Příště již nevarovat"
+
+#~ msgid "Show more _details"
+#~ msgstr "Ukaž podrobné _informace"
+
+#~ msgid ""
+#~ "Sorry, your GTK+ version (%d.%d.%d) does not work with Audacious.\n"
+#~ "Please use GTK+ %s or newer.\n"
+#~ msgstr ""
+#~ "Verze knihovny GTK+ (%d.%d.%d) není kompatibilní s Audacious.\n"
+#~ "Použijte GTK+ %s nebo novější.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Received SIGSEGV\n"
+#~ "\n"
+#~ "This could be a bug in Audacious. If you don't know why this happened, "
+#~ "file a bug at http://bugs-meta.atheme.org/\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Zachycen SIGSEGV\n"
+#~ "\n"
+#~ "Asi jste narazili na chybu v programu Audacious. Pokud netušíte proÄ, "
+#~ "nahlaste chybu (anglicky) na http://bugs-meta.atheme.org/\n"
+#~ "\n"
 
 #~ msgid "VOLUME: %d%%"
 #~ msgstr "Hlasitost: %d%%"
@@ -2178,17 +2202,26 @@
 #~ msgid "BALANCE: %d%% RIGHT"
 #~ msgstr "VYROVNÃNÃ: %d%% VPRAVO"
 
-#, fuzzy
-#~ msgid "Last.fm radio"
-#~ msgstr "Hrát z adresy"
-
-#, fuzzy
-#~ msgid "Play Last.fm radio"
-#~ msgstr "Hrát z adresy"
-
-#, fuzzy
-#~ msgid "Converter Type:"
-#~ msgstr "Změnit znakovou sadu"
+#~ msgid "OPTIONS MENU"
+#~ msgstr "NASTAVENÃ"
+
+#~ msgid "DISABLE ALWAYS ON TOP"
+#~ msgstr "ZAKÃZAT FCI „VŽDY NA VRCHU“"
+
+#~ msgid "ENABLE ALWAYS ON TOP"
+#~ msgstr "POVOLIT FCI „VŽDY NA VRCHU“"
+
+#~ msgid "FILE INFO BOX"
+#~ msgstr "INFORMACE O SOUBORU"
+
+#~ msgid "DISABLE DOUBLESIZE"
+#~ msgstr "ZAKÃZAT DVOJITOU VELIKOST"
+
+#~ msgid "ENABLE DOUBLESIZE"
+#~ msgstr "POVOLIT DVOJITOU VELIKOST"
+
+#~ msgid "VISUALIZATION MENU"
+#~ msgstr "NASTAVENÃ ZOBRAZENÃ"
 
 #~ msgid ""
 #~ "<b><big>No playable CD found.</big></b>\n"
@@ -2199,14 +2232,20 @@
 #~ "\n"
 #~ "Není vloženo CD, nebo vložené CD není typu Audio CD.\n"
 
+#~ msgid "Play CD"
+#~ msgstr "Přehrát CD"
+
 #~ msgid "Add CD..."
 #~ msgstr "Přidat CD…"
 
 #~ msgid "Adds a CD to the playlist."
 #~ msgstr "Přidá CD do seznamu skladeb"
 
-#~ msgid "Play CD"
-#~ msgstr "Přehrát CD"
+#~ msgid "Track name: "
+#~ msgstr "Název skladby: "
+
+#~ msgid "Album name: "
+#~ msgstr "Název alba: "
 
 #~ msgid "Performer/Artist"
 #~ msgstr "Interpret/umělec"
@@ -2229,73 +2268,8 @@
 #~ msgid "%{n:...%}: Display \"...\" only if element %n is present"
 #~ msgstr "%{n:…%}: Zobraz „…“ pouze pokud %n nechybí"
 
-#~ msgid ""
-#~ "Sorry, your GTK+ version (%d.%d.%d) does not work with Audacious.\n"
-#~ "Please use GTK+ %s or newer.\n"
-#~ msgstr ""
-#~ "Verze knihovny GTK+ (%d.%d.%d) není kompatibilní s Audacious.\n"
-#~ "Použijte GTK+ %s nebo novější.\n"
-
-#~ msgid "OPTIONS MENU"
-#~ msgstr "NASTAVENÃ"
-
-#~ msgid "DISABLE ALWAYS ON TOP"
-#~ msgstr "ZAKÃZAT FCI „VŽDY NA VRCHU“"
-
-#~ msgid "ENABLE ALWAYS ON TOP"
-#~ msgstr "POVOLIT FCI „VŽDY NA VRCHU“"
-
-#~ msgid "FILE INFO BOX"
-#~ msgstr "INFORMACE O SOUBORU"
-
-#~ msgid "DISABLE DOUBLESIZE"
-#~ msgstr "ZAKÃZAT DVOJITOU VELIKOST"
-
-#~ msgid "ENABLE DOUBLESIZE"
-#~ msgstr "POVOLIT DVOJITOU VELIKOST"
-
-#~ msgid "VISUALIZATION MENU"
-#~ msgstr "NASTAVENÃ ZOBRAZENÃ"
-
-#~ msgid "Track name: "
-#~ msgstr "Název skladby: "
-
-#~ msgid "Album name: "
-#~ msgstr "Název alba: "
-
-#~ msgid ""
-#~ "<b><big>Unable to play files.</big></b>\n"
-#~ "\n"
-#~ "The following files could not be played. Please check that:\n"
-#~ "1. they are accessible.\n"
-#~ "2. you have enabled the media plugins required."
-#~ msgstr ""
-#~ "<b><big>Soubory nelze přehrát</big></b>\n"
-#~ "\n"
-#~ "Následující soubory nelze přehrát. Zkontrolujte zda:\n"
-#~ "1. jsou přístupné,\n"
-#~ "2. máte povolené příslušné moduly."
-
-#~ msgid "Don't show this warning anymore"
-#~ msgstr "Příště již nevarovat"
-
-#~ msgid "Show more _details"
-#~ msgstr "Ukaž podrobné _informace"
-
-#~ msgid ""
-#~ "\n"
-#~ "Received SIGSEGV\n"
-#~ "\n"
-#~ "This could be a bug in Audacious. If you don't know why this happened, "
-#~ "file a bug at http://bugs-meta.atheme.org/\n"
-#~ "\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Zachycen SIGSEGV\n"
-#~ "\n"
-#~ "Asi jste narazili na chybu v programu Audacious. Pokud netušíte proÄ, "
-#~ "nahlaste chybu (anglicky) na http://bugs-meta.atheme.org/\n"
-#~ "\n"
+#~ msgid "Show window manager decorations"
+#~ msgstr "Zobrazovat dekorace podle správce oken"
 
 #~ msgid "Chinese:"
 #~ msgstr "Čínský:"
@@ -2533,6 +2507,15 @@
 #~ msgid "Artist Popup"
 #~ msgstr "Vyskakovací okno o umělci"
 
+#~ msgid "<i>Title</i>"
+#~ msgstr "<i>Název</i>"
+
+#~ msgid "<i>Artist</i>"
+#~ msgstr "<i>Umělec</i>"
+
+#~ msgid "<i>Album</i>"
+#~ msgstr "<i>Album</i>"
+
 #~ msgid "<i>Genre</i>"
 #~ msgstr "<i>Žánr</i>"
 
@@ -3025,6 +3008,9 @@
 #~ msgid "Tag Handling"
 #~ msgstr "Zpracování tagů"
 
+#~ msgid "Convert Character Set"
+#~ msgstr "Změnit znakovou sadu"
+
 #~ msgid "Convert character set from :"
 #~ msgstr "Změnit znakovou sadu z :"
 
@@ -3918,6 +3904,9 @@
 #~ msgid "Description:"
 #~ msgstr "Popis:"
 
+#~ msgid "Location:"
+#~ msgstr "Umístění:"
+
 #~ msgid "Version:"
 #~ msgstr "Verze:"
 
--- a/po/cy.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/cy.po	Fri Nov 16 05:36:42 2007 +0200
@@ -513,6 +513,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr "Galluogi Dychweliad Graddfa Samplo"
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
 msgstr ""
--- a/po/de.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/de.po	Fri Nov 16 05:36:42 2007 +0200
@@ -4,7 +4,7 @@
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: http://bugs.audacious-media-player.org\n"
 "POT-Creation-Date: 2007-10-13 14:15+0200\n"
-"PO-Revision-Date: 2007-10-13 14:27+0100\n"
+"PO-Revision-Date: 2007-10-27 13:29+0100\n"
 "Last-Translator: Michael Färber <0102@gmx.at>\n"
 "Language-Team: german <psic4t@netbands.de>\n"
 "MIME-Version: 1.0\n"
@@ -21,8 +21,7 @@
 msgstr ""
 "<b><big>Konnte %s nicht erstellen.</big></b>\n"
 "\n"
-"Konnte die Glade-Datei nicht öffnen (%s). Bitte die Installation "
-"überprüfen.\n"
+"Konnte die Glade-Datei nicht öffnen (%s). Bitte die Installation überprüfen.\n"
 
 #: src/audacious/glade/fileinfo.glade:8
 msgid "Track Information"
@@ -96,7 +95,8 @@
 msgid "<b>Effects</b>"
 msgstr "<b>Effekte</b>"
 
-#: src/audacious/glade/prefswin.glade:693 src/audacious/ui_preferences.c:117
+#: src/audacious/glade/prefswin.glade:693
+#: src/audacious/ui_preferences.c:117
 msgid "Plugins"
 msgstr "Plugins"
 
@@ -129,12 +129,8 @@
 msgstr "Schriftart für Playlist wählen:"
 
 #: src/audacious/glade/prefswin.glade:1112
-msgid ""
-"Use bitmap fonts if they are available. Bitmap fonts do not support Unicode "
-"strings."
-msgstr ""
-"Bitmap-Schriftarten benutzen, sofern vorhanden. Bitmap-Schriften "
-"unterstützen kein Unicode."
+msgid "Use bitmap fonts if they are available. Bitmap fonts do not support Unicode strings."
+msgstr "Bitmap-Schriftarten benutzen, sofern vorhanden. Bitmap-Schriften unterstützen kein Unicode."
 
 #: src/audacious/glade/prefswin.glade:1114
 msgid "Use Bitmap fonts if available"
@@ -165,33 +161,23 @@
 msgstr "Window-Manager-Dekoration anzeigen"
 
 #: src/audacious/glade/prefswin.glade:1342
-msgid ""
-"This enables the XMMS/GTK1-style file selection dialogs. This selector is "
-"provided by Audacious itself and is faster than the default GTK2 selector "
-"(but sadly not as user-friendly)."
-msgstr ""
-"XMMS/GTK1-artigen Dateiauswahldialog aktivieren. Dieser wird von Audacious "
-"zur Verfügung gestellt und ist schneller als derjenige von GTK2, dafür aber "
-"nicht so benutzerfreundlich."
+msgid "This enables the XMMS/GTK1-style file selection dialogs. This selector is provided by Audacious itself and is faster than the default GTK2 selector (but sadly not as user-friendly)."
+msgstr "XMMS/GTK1-artigen Dateiauswahldialog aktivieren. Dieser wird von Audacious zur Verfügung gestellt und ist schneller als derjenige von GTK2, dafür aber nicht so benutzerfreundlich."
 
 #: src/audacious/glade/prefswin.glade:1344
 msgid "Use XMMS-style file selector instead of the default selector"
 msgstr "Benutze XMMS-mäßige Dateiauswahl statt der standardmäßigen"
 
 #: src/audacious/glade/prefswin.glade:1378
-msgid ""
-"If selected, the file information text in the main window will scroll back "
-"and forth. If not selected, the text will only scroll in one direction."
-msgstr ""
-"Wenn aktiviert, wird der Dateiinformationstext im Hauptfenster vor und "
-"zurück scrollen. Wenn deaktiviert, wird der Text nur in eine Richtung "
-"scrollen."
+msgid "If selected, the file information text in the main window will scroll back and forth. If not selected, the text will only scroll in one direction."
+msgstr "Wenn aktiviert, wird der Dateiinformationstext im Hauptfenster vor und zurück scrollen. Wenn deaktiviert, wird der Text nur in eine Richtung scrollen."
 
 #: src/audacious/glade/prefswin.glade:1380
 msgid "Use two-way text scroller"
 msgstr "Benutze Zweiweg-Textscroller"
 
-#: src/audacious/glade/prefswin.glade:1422 src/audacious/ui_preferences.c:111
+#: src/audacious/glade/prefswin.glade:1422
+#: src/audacious/ui_preferences.c:111
 msgid "Appearance"
 msgstr "Aussehen"
 
@@ -215,7 +201,8 @@
 msgid "Changes volume by"
 msgstr "Lautstärke verändern um"
 
-#: src/audacious/glade/prefswin.glade:1701 src/audacious/ui_preferences.c:115
+#: src/audacious/glade/prefswin.glade:1701
+#: src/audacious/ui_preferences.c:115
 msgid "Mouse"
 msgstr "Maus"
 
@@ -249,9 +236,7 @@
 
 #: src/audacious/glade/prefswin.glade:1971
 msgid "Load metadata when adding the file to the playlist or opening it"
-msgstr ""
-"Metadaten laden, wenn eine Datei zur Wiedergabeliste hinzugefügt oder "
-"geöffnet wird"
+msgstr "Metadaten laden, wenn eine Datei zur Wiedergabeliste hinzugefügt oder geöffnet wird"
 
 #: src/audacious/glade/prefswin.glade:1973
 msgid "On load"
@@ -270,16 +255,8 @@
 msgstr "Automatische Zeichensatzerkennung für:"
 
 #: src/audacious/glade/prefswin.glade:2070
-msgid ""
-"List of character encodings used for fall back conversion of metadata. If "
-"automatic character encoding detector failed or has been disabled, encodings "
-"in this list would be treated as candidates of the encoding of metadata, and "
-"fall back conversion from these encodings to UTF-8 would be attempted."
-msgstr ""
-"Alternativ für Metadaten verwendete Zeichensätze. Wenn die automatische "
-"Erkennung des Zeichensatzes fehlgeschlagen oder deaktiviert ist, werden die "
-"nachfolgend aufgelisteten Zeichensätze ausprobiert. Nach diesen wird dann "
-"noch einmal probiert, von diesen Zeichensätzen nach UTF-8 zu dekodieren."
+msgid "List of character encodings used for fall back conversion of metadata. If automatic character encoding detector failed or has been disabled, encodings in this list would be treated as candidates of the encoding of metadata, and fall back conversion from these encodings to UTF-8 would be attempted."
+msgstr "Alternativ für Metadaten verwendete Zeichensätze. Wenn die automatische Erkennung des Zeichensatzes fehlgeschlagen oder deaktiviert ist, werden die nachfolgend aufgelisteten Zeichensätze ausprobiert. Nach diesen wird dann noch einmal probiert, von diesen Zeichensätzen nach UTF-8 zu dekodieren."
 
 #: src/audacious/glade/prefswin.glade:2094
 msgid "Fallback character encodings:"
@@ -290,12 +267,8 @@
 msgstr "<b>Datei-Dialog</b>"
 
 #: src/audacious/glade/prefswin.glade:2189
-msgid ""
-"Always refresh the file dialog (this will slow opening the dialog on large "
-"directories, and Gnome VFS should handle automatically)."
-msgstr ""
-"Dateidialog immer aktualisieren (dies wird das Öffnen des Dialogs mit großen "
-"Verzeichnissen langsamer machen, und Gnome VFS sollte das automatisch machen)"
+msgid "Always refresh the file dialog (this will slow opening the dialog on large directories, and Gnome VFS should handle automatically)."
+msgstr "Dateidialog immer aktualisieren (dies wird das Öffnen des Dialogs mit großen Verzeichnissen langsamer machen, und Gnome VFS sollte das automatisch machen)"
 
 #: src/audacious/glade/prefswin.glade:2191
 msgid "Always refresh directory when opening file dialog"
@@ -340,15 +313,8 @@
 msgstr "<b>Popup-Information</b>"
 
 #: src/audacious/glade/prefswin.glade:2475
-msgid ""
-"Toggles popup information window for the pointed entry in the playlist. The "
-"window shows title of song, name of album, genre, year of publish, track "
-"number, track length, and artwork."
-msgstr ""
-"Schaltet die Popup-Informationen ein und aus. Diese werden angezeigt, wenn "
-"mit der Maus über einen Wiedergabelisteneintrag gefahren wird. Gezeigt "
-"werden Titel, Album, Genre, Publikationsjahr, Titelnummer, Titellänge und "
-"Cover-Bild."
+msgid "Toggles popup information window for the pointed entry in the playlist. The window shows title of song, name of album, genre, year of publish, track number, track length, and artwork."
+msgstr "Schaltet die Popup-Informationen ein und aus. Diese werden angezeigt, wenn mit der Maus über einen Wiedergabelisteneintrag gefahren wird. Gezeigt werden Titel, Album, Genre, Publikationsjahr, Titelnummer, Titellänge und Cover-Bild."
 
 #: src/audacious/glade/prefswin.glade:2477
 msgid "Show popup information for playlist entries"
@@ -358,8 +324,10 @@
 msgid "Edit settings for popup information"
 msgstr "Einstellungen für Popup-Informationen bearbeiten"
 
-#: src/audacious/glade/prefswin.glade:2553 src/audacious/ui_manager.c:203
-#: src/audacious/ui_playlist_manager.c:402 src/audacious/ui_preferences.c:116
+#: src/audacious/glade/prefswin.glade:2553
+#: src/audacious/ui_manager.c:203
+#: src/audacious/ui_playlist_manager.c:402
+#: src/audacious/ui_preferences.c:116
 msgid "Playlist"
 msgstr "Wiedergabeliste"
 
@@ -379,7 +347,8 @@
 msgid "Available _Presets:"
 msgstr "Verfügbare Equalizer-_Voreinstellungen:"
 
-#: src/audacious/glade/prefswin.glade:2921 src/audacious/ui_preferences.c:114
+#: src/audacious/glade/prefswin.glade:2921
+#: src/audacious/ui_preferences.c:114
 msgid "Equalizer"
 msgstr "Equalizer"
 
@@ -412,12 +381,8 @@
 msgstr "Benutzername für Proxy:"
 
 #: src/audacious/glade/prefswin.glade:3354
-msgid ""
-"<span size=\"small\">Changing these settings will require a restart of "
-"Audacious.</span>"
-msgstr ""
-"<span size=\"small\">Das Ändern dieser Einstellungen benötigt einen Neustart "
-"von Audacious.</span>"
+msgid "<span size=\"small\">Changing these settings will require a restart of Audacious.</span>"
+msgstr "<span size=\"small\">Das Ändern dieser Einstellungen benötigt einen Neustart von Audacious.</span>"
 
 #: src/audacious/glade/prefswin.glade:3493
 msgid "<b>Audio System</b>"
@@ -429,16 +394,12 @@
 
 #: src/audacious/glade/prefswin.glade:3593
 msgid ""
-"<span size=\"small\">This is the amount of time to prebuffer audio streams "
-"by, in milliseconds.\n"
+"<span size=\"small\">This is the amount of time to prebuffer audio streams by, in milliseconds.\n"
 "Increase this value if you are experiencing audio skipping.\n"
-"Please note however, that high values will result in Audacious performing "
-"poorly.</span>"
+"Please note however, that high values will result in Audacious performing poorly.</span>"
 msgstr ""
-"<span size=\"small\">Dies ist die Grösse des Puffers für Audio-Streams, "
-"angegeben in Millisekunden.\n"
-"Dieser Wert sollte erhöht werden, wenn Unterbrechungen im Ton festgestellt "
-"werden.\n"
+"<span size=\"small\">Dies ist die Grösse des Puffers für Audio-Streams, angegeben in Millisekunden.\n"
+"Dieser Wert sollte erhöht werden, wenn Unterbrechungen im Ton festgestellt werden.\n"
 "Hohe Werte können jedoch dazu führen, dass Audacious langsamer läuft.</span>"
 
 #: src/audacious/glade/prefswin.glade:3663
@@ -458,27 +419,16 @@
 msgstr "<b>Formaterkennung</b>"
 
 #: src/audacious/glade/prefswin.glade:3935
-msgid ""
-"When checked, Audacious will detect file formats on demand. This can result "
-"in a messier playlist, but delivers a major speed benefit."
-msgstr ""
-"Falls aktiviert, wird Audacious Dateiformate nur bei Bedarf ermitteln. Dies "
-"kann zu einer unordentlichen Wiedergabeliste führen, bringt gleichzeitig "
-"aber eine beträchtliche Geschwindigkeitserhöhung."
+msgid "When checked, Audacious will detect file formats on demand. This can result in a messier playlist, but delivers a major speed benefit."
+msgstr "Falls aktiviert, wird Audacious Dateiformate nur bei Bedarf ermitteln. Dies kann zu einer unordentlichen Wiedergabeliste führen, bringt gleichzeitig aber eine beträchtliche Geschwindigkeitserhöhung."
 
 #: src/audacious/glade/prefswin.glade:3937
 msgid "Detect file formats on demand, instead of immediately."
 msgstr "Dateiformate nicht sofort ermitteln, sondern nur bei Bedarf."
 
 #: src/audacious/glade/prefswin.glade:3971
-msgid ""
-"When checked, Audacious will detect file formats based by extension. This is "
-"slightly slower than detection on demand, but still provides a minimal level "
-"of format detection."
-msgstr ""
-"Falls aktiviert, wird Audacious das Dateiformat anhand der Dateierweiterung "
-"erkennen. Dies ist etwas langsamer als die Erkennung bei Bedarf, garantiert "
-"aber trotzdem einen minimalen Grad an Format-Erkennung."
+msgid "When checked, Audacious will detect file formats based by extension. This is slightly slower than detection on demand, but still provides a minimal level of format detection."
+msgstr "Falls aktiviert, wird Audacious das Dateiformat anhand der Dateierweiterung erkennen. Dies ist etwas langsamer als die Erkennung bei Bedarf, garantiert aber trotzdem einen minimalen Grad an Format-Erkennung."
 
 #: src/audacious/glade/prefswin.glade:3973
 msgid "Detect file formats by extension."
@@ -489,11 +439,8 @@
 msgstr "<b>Wiedergabe</b>"
 
 #: src/audacious/glade/prefswin.glade:4046
-msgid ""
-"When Audacious starts, automatically begin playing from the point where we "
-"stopped before."
-msgstr ""
-"Mit der Wiedergabe am letzten Ort starten, wenn Audacious gestartet wird."
+msgid "When Audacious starts, automatically begin playing from the point where we stopped before."
+msgstr "Mit der Wiedergabe am letzten Ort starten, wenn Audacious gestartet wird."
 
 #: src/audacious/glade/prefswin.glade:4048
 msgid "Continue playback on startup"
@@ -501,9 +448,7 @@
 
 #: src/audacious/glade/prefswin.glade:4082
 msgid "When finished playing a song, don't automatically advance to the next."
-msgstr ""
-"Nicht automatisch mit dem nächsten Titel fortfahren, wenn ein Titel zuende "
-"gespielt wurde."
+msgstr "Nicht automatisch mit dem nächsten Titel fortfahren, wenn ein Titel zuende gespielt wurde."
 
 #: src/audacious/glade/prefswin.glade:4084
 msgid "Don't advance in the playlist"
@@ -529,6 +474,20 @@
 msgid "Enable Sampling Rate Converter"
 msgstr "Aktiviere Abtastfrequenz-Umwandler"
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+"Beste Sinc-Interpolation\n"
+"Mittlere Sinc-Interpolation\n"
+"Schnellste Sinc-Interpolation\n"
+"ZOH-Interpolation\n"
+"Lineare Interpolation"
+
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
 msgstr "Interpolations-Engine:"
@@ -539,8 +498,7 @@
 "This should be the max supported sampling rate of\n"
 "the sound card or output plugin.</span>"
 msgstr ""
-"<span size=\"small\">Alle Streams werden in diese Abtastfrequenz "
-"umgewandelt.\n"
+"<span size=\"small\">Alle Streams werden in diese Abtastfrequenz umgewandelt.\n"
 "Sie sollte die maximal unterstützte Abtastfrequenz der\n"
 "Soundkarte oder des Ausgabe-Plugins sein.</span>"
 
@@ -553,13 +511,8 @@
 msgstr "<b>Lautstärkeregelung</b>"
 
 #: src/audacious/glade/prefswin.glade:4556
-msgid ""
-"Use software volume control. This may be useful for situations where your "
-"audio system does not support controlling the playback volume."
-msgstr ""
-"Benutze Software-Lautstärkeregelung. Das kann nützlich sein für den Fall, "
-"dass das gewählte Audio-System die Kontrolle der Wiedergabelautstärke nicht "
-"unterstützt."
+msgid "Use software volume control. This may be useful for situations where your audio system does not support controlling the playback volume."
+msgstr "Benutze Software-Lautstärkeregelung. Das kann nützlich sein für den Fall, dass das gewählte Audio-System die Kontrolle der Wiedergabelautstärke nicht unterstützt."
 
 #: src/audacious/glade/prefswin.glade:4558
 msgid "Use software volume control"
@@ -578,14 +531,8 @@
 msgstr "<b>Cover-Bild finden</b>"
 
 #: src/audacious/glade/prefswin.glade:4856
-msgid ""
-"While searching for the album's cover, Audacious looks for certain words in "
-"the filename. You can specify those words in the lists below, separated "
-"using commas."
-msgstr ""
-"Wenn Audacious das Titelbild sucht, sucht es nach bestimmten Worten im "
-"Dateinamen. Diese können nachfolgend eingegeben werden, jeweils durch "
-"Beistriche getrennt."
+msgid "While searching for the album's cover, Audacious looks for certain words in the filename. You can specify those words in the lists below, separated using commas."
+msgstr "Wenn Audacious das Titelbild sucht, sucht es nach bestimmten Worten im Dateinamen. Diese können nachfolgend eingegeben werden, jeweils durch Beistriche getrennt."
 
 #: src/audacious/glade/prefswin.glade:4911
 msgid "Exclude:"
@@ -624,12 +571,8 @@
 msgstr "Farbanpassung"
 
 #: src/audacious/glade/prefswin.glade:5325
-msgid ""
-"Audacious allows you to alter the color balance of the skinned UI. The "
-"sliders below will allow you to do this."
-msgstr ""
-"Audacious erlaubt es, die Farbe der Oberfläche mit der Schiebeleiste unten "
-"zu ändern."
+msgid "Audacious allows you to alter the color balance of the skinned UI. The sliders below will allow you to do this."
+msgstr "Audacious erlaubt es, die Farbe der Oberfläche mit der Schiebeleiste unten zu ändern."
 
 #: src/audacious/glade/prefswin.glade:5359
 msgid "Blue"
@@ -666,7 +609,9 @@
 msgid "Unable to create log file (%s)!\n"
 msgstr "Konnte Logdatei nicht erstellen (%s)!\n"
 
-#: src/audacious/main.c:90 src/audacious/main.c:92 src/audacious/ui_main.c:491
+#: src/audacious/main.c:90
+#: src/audacious/main.c:92
+#: src/audacious/ui_main.c:491
 #: src/audacious/ui_main.c:2466
 msgid "Audacious"
 msgstr "Audacious"
@@ -756,27 +701,22 @@
 msgid ""
 "<b><big>Unable to load skin.</big></b>\n"
 "\n"
-"Check that skin at '%s' is usable and default skin is properly installed at "
-"'%s'\n"
+"Check that skin at '%s' is usable and default skin is properly installed at '%s'\n"
 msgstr ""
 "<b><big>Konnte Skin nicht laden.</big></b>\n"
 "\n"
-"Bitte überprüfen, dass der Skin in '%s' benutzbar ist und der Standard-Skin "
-"ordnungsgemäß in '%s' installiert wurde.\n"
+"Bitte überprüfen, dass der Skin in '%s' benutzbar ist und der Standard-Skin ordnungsgemäß in '%s' installiert wurde.\n"
 
 #: src/audacious/main.c:1320
 msgid ""
 "Sorry, threads isn't supported on your platform.\n"
 "\n"
-"If you're on a libc5 based linux system and installed Glib & GTK+ before "
-"you\n"
+"If you're on a libc5 based linux system and installed Glib & GTK+ before you\n"
 "installed LinuxThreads you need to recompile Glib & GTK+.\n"
 msgstr ""
 "Tut uns Leid, aber Threads werden auf dieser Plattform nicht unterstützt.\n"
 "\n"
-"Wenn dies ein libc5-basiertes Linux-System ist und Glib & GTK+ vor "
-"LinuxThreads installiert wurden, müssen Glib und GTK+ erneut kompiliert "
-"werden.\n"
+"Wenn dies ein libc5-basiertes Linux-System ist und Glib & GTK+ vor LinuxThreads installiert wurden, müssen Glib und GTK+ erneut kompiliert werden.\n"
 
 #: src/audacious/main.c:1351
 msgid "- play multimedia files"
@@ -810,16 +750,12 @@
 "Audacious has caught signal 11 (SIGSEGV).\n"
 "\n"
 "We apologize for the inconvenience, but Audacious has crashed.\n"
-"This is a bug in the program, and should never happen under normal "
-"circumstances.\n"
+"This is a bug in the program, and should never happen under normal circumstances.\n"
 "Your current configuration has been saved and should not be damaged.\n"
 "\n"
-"You can help improve the quality of Audacious by filing a bug at http://bugs-"
-"meta.atheme.org\n"
-"Please include the entire text of this message and a description of what you "
-"were doing when\n"
-"this crash occured in order to quickly expedite the handling of your bug "
-"report:\n"
+"You can help improve the quality of Audacious by filing a bug at http://bugs-meta.atheme.org\n"
+"Please include the entire text of this message and a description of what you were doing when\n"
+"this crash occured in order to quickly expedite the handling of your bug report:\n"
 "\n"
 msgstr ""
 "\n"
@@ -840,8 +776,7 @@
 #: src/audacious/signals.c:80
 msgid ""
 "\n"
-"Bugs can be reported at http://bugs-meta.atheme.org against the Audacious "
-"product.\n"
+"Bugs can be reported at http://bugs-meta.atheme.org against the Audacious product.\n"
 msgstr ""
 "\n"
 "Fehler in Audacious können bei http://bugs-meta.atheme.org gemeldet werden.\n"
@@ -869,12 +804,15 @@
 "\n"
 "Copyright (C) 2005-2007 Audacious-Enwicklerteam"
 
-#: src/audacious/ui_about.c:125 src/audacious/ui_credits.c:357
-#: src/audacious/ui_manager.c:391 src/audacious/ui_manager.c:392
+#: src/audacious/ui_about.c:125
+#: src/audacious/ui_credits.c:357
+#: src/audacious/ui_manager.c:391
+#: src/audacious/ui_manager.c:392
 msgid "About Audacious"
 msgstr "Ãœber Audacious"
 
-#: src/audacious/ui_about.c:174 src/audacious/ui_credits.c:400
+#: src/audacious/ui_about.c:174
+#: src/audacious/ui_credits.c:400
 msgid "Credits"
 msgstr "Credits"
 
@@ -1063,24 +1001,29 @@
 msgid "Track Information Window"
 msgstr "Titel-Informationsfenster"
 
-#: src/audacious/ui_fileinfopopup.c:252 src/audacious/ui_fileinfopopup.c:364
+#: src/audacious/ui_fileinfopopup.c:252
+#: src/audacious/ui_fileinfopopup.c:364
 #: src/audacious/ui_preferences.c:125
 msgid "Title"
 msgstr "Titel"
 
-#: src/audacious/ui_fileinfopopup.c:255 src/audacious/ui_preferences.c:123
+#: src/audacious/ui_fileinfopopup.c:255
+#: src/audacious/ui_preferences.c:123
 msgid "Artist"
 msgstr "Künstler"
 
-#: src/audacious/ui_fileinfopopup.c:258 src/audacious/ui_preferences.c:124
+#: src/audacious/ui_fileinfopopup.c:258
+#: src/audacious/ui_preferences.c:124
 msgid "Album"
 msgstr "Album"
 
-#: src/audacious/ui_fileinfopopup.c:261 src/audacious/ui_preferences.c:127
+#: src/audacious/ui_fileinfopopup.c:261
+#: src/audacious/ui_preferences.c:127
 msgid "Genre"
 msgstr "Genre"
 
-#: src/audacious/ui_fileinfopopup.c:264 src/audacious/ui_preferences.c:131
+#: src/audacious/ui_fileinfopopup.c:264
+#: src/audacious/ui_preferences.c:131
 msgid "Year"
 msgstr "Jahr"
 
@@ -1092,7 +1035,8 @@
 msgid "Track Length"
 msgstr "Titellänge:"
 
-#: src/audacious/ui_fileinfopopup.c:373 src/audacious/ui_preferences.c:128
+#: src/audacious/ui_fileinfopopup.c:373
+#: src/audacious/ui_preferences.c:128
 #: src/audacious/ui_preferences.c:420
 msgid "Filename"
 msgstr "Dateiname"
@@ -1125,7 +1069,8 @@
 msgid "Un_queue"
 msgstr "Aus _Queue entfernen"
 
-#: src/audacious/ui_jumptotrack.c:140 src/audacious/ui_jumptotrack.c:603
+#: src/audacious/ui_jumptotrack.c:140
+#: src/audacious/ui_jumptotrack.c:603
 msgid "_Queue"
 msgstr "Zu _Queue hinzufügen"
 
@@ -1154,15 +1099,18 @@
 msgid "VBR"
 msgstr "VBR"
 
-#: src/audacious/ui_main.c:761 src/audacious/ui_main.c:765
+#: src/audacious/ui_main.c:761
+#: src/audacious/ui_main.c:765
 msgid "stereo"
 msgstr "stereo"
 
-#: src/audacious/ui_main.c:761 src/audacious/ui_main.c:765
+#: src/audacious/ui_main.c:761
+#: src/audacious/ui_main.c:765
 msgid "mono"
 msgstr "mono"
 
-#: src/audacious/ui_main.c:1060 src/audacious/ui_manager.c:420
+#: src/audacious/ui_main.c:1060
+#: src/audacious/ui_manager.c:420
 #: src/audacious/ui_manager.c:421
 msgid "Jump to Time"
 msgstr "Zu Zeitpunkt springen"
@@ -1190,14 +1138,10 @@
 #: src/audacious/ui_main.c:1235
 msgid ""
 "Audacious has been started with all of its windows hidden.\n"
-"You may want to show the player window again to control Audacious; "
-"otherwise, you'll have to control it remotely via audtool or enabled plugins "
-"(such as the statusicon plugin)."
+"You may want to show the player window again to control Audacious; otherwise, you'll have to control it remotely via audtool or enabled plugins (such as the statusicon plugin)."
 msgstr ""
 "Audacious wurde ohne sichtbare Fenster gestartet.\n"
-"Wenn das Hauptfenster nicht wieder geöffnet wird, muss Audacious via audtool "
-"oder durch aktivierte Plugins (wie das statusicon-Plugin) ferngesteuert "
-"werden."
+"Wenn das Hauptfenster nicht wieder geöffnet wird, muss Audacious via audtool oder durch aktivierte Plugins (wie das statusicon-Plugin) ferngesteuert werden."
 
 #: src/audacious/ui_main.c:1241
 msgid "Always ignore, show/hide is controlled remotely"
@@ -1279,68 +1223,84 @@
 msgid "Error in Audacious."
 msgstr "Fehler in Audacious."
 
-#: src/audacious/ui_manager.c:48 src/audacious/ui_manager.c:49
+#: src/audacious/ui_manager.c:48
+#: src/audacious/ui_manager.c:49
 msgid "Autoscroll Songname"
 msgstr "Songname automatisch scrollen"
 
 #  -s, --stop switch
-#: src/audacious/ui_manager.c:51 src/audacious/ui_manager.c:52
+#: src/audacious/ui_manager.c:51
+#: src/audacious/ui_manager.c:52
 msgid "Stop after Current Song"
 msgstr "Nach aktuellem Song stoppen"
 
-#: src/audacious/ui_manager.c:54 src/audacious/ui_manager.c:55
+#: src/audacious/ui_manager.c:54
+#: src/audacious/ui_manager.c:55
 msgid "Peaks"
 msgstr "Spitzen"
 
-#: src/audacious/ui_manager.c:57 src/audacious/ui_manager.c:58
+#: src/audacious/ui_manager.c:57
+#: src/audacious/ui_manager.c:58
 msgid "Repeat"
 msgstr "Wiederholen"
 
-#: src/audacious/ui_manager.c:60 src/audacious/ui_manager.c:61
+#: src/audacious/ui_manager.c:60
+#: src/audacious/ui_manager.c:61
 msgid "Shuffle"
 msgstr "Zufällige Wiedergabe"
 
-#: src/audacious/ui_manager.c:63 src/audacious/ui_manager.c:64
+#: src/audacious/ui_manager.c:63
+#: src/audacious/ui_manager.c:64
 msgid "No Playlist Advance"
 msgstr "In der Wiedergabeliste nicht weiterspringen"
 
-#: src/audacious/ui_manager.c:66 src/audacious/ui_manager.c:67
+#: src/audacious/ui_manager.c:66
+#: src/audacious/ui_manager.c:67
 msgid "Show Player"
 msgstr "Player zeigen"
 
-#: src/audacious/ui_manager.c:69 src/audacious/ui_manager.c:70
+#: src/audacious/ui_manager.c:69
+#: src/audacious/ui_manager.c:70
 msgid "Show Playlist Editor"
 msgstr "Wiedergabeliste zeigen"
 
-#: src/audacious/ui_manager.c:72 src/audacious/ui_manager.c:73
+#: src/audacious/ui_manager.c:72
+#: src/audacious/ui_manager.c:73
 msgid "Show Equalizer"
 msgstr "Equalizer zeigen"
 
-#: src/audacious/ui_manager.c:75 src/audacious/ui_manager.c:76
+#: src/audacious/ui_manager.c:75
+#: src/audacious/ui_manager.c:76
 msgid "Always on Top"
 msgstr "Immer im Vordergrund"
 
-#: src/audacious/ui_manager.c:78 src/audacious/ui_manager.c:79
+#: src/audacious/ui_manager.c:78
+#: src/audacious/ui_manager.c:79
 msgid "Put on All Workspaces"
 msgstr "Auf allen Arbeitsflächen anzeigen"
 
-#: src/audacious/ui_manager.c:81 src/audacious/ui_manager.c:82
+#: src/audacious/ui_manager.c:81
+#: src/audacious/ui_manager.c:82
 msgid "Roll up Player"
 msgstr "Player aufrollen"
 
-#: src/audacious/ui_manager.c:84 src/audacious/ui_manager.c:85
+#: src/audacious/ui_manager.c:84
+#: src/audacious/ui_manager.c:85
 msgid "Roll up Playlist Editor"
 msgstr "Wiedergabeliste aufrollen"
 
-#: src/audacious/ui_manager.c:87 src/audacious/ui_manager.c:88
+#: src/audacious/ui_manager.c:87
+#: src/audacious/ui_manager.c:88
 msgid "Roll up Equalizer"
 msgstr "Equalizer aufrollen"
 
-#: src/audacious/ui_manager.c:90 src/audacious/ui_manager.c:91
+#: src/audacious/ui_manager.c:90
+#: src/audacious/ui_manager.c:91
 msgid "DoubleSize"
 msgstr "Doppelte Grösse"
 
-#: src/audacious/ui_manager.c:93 src/audacious/ui_manager.c:94
+#: src/audacious/ui_manager.c:93
+#: src/audacious/ui_manager.c:94
 msgid "Easy Move"
 msgstr "Vereinfachtes Verschieben"
 
@@ -1360,12 +1320,14 @@
 msgid "Off"
 msgstr "Aus"
 
-#: src/audacious/ui_manager.c:109 src/audacious/ui_manager.c:126
+#: src/audacious/ui_manager.c:109
+#: src/audacious/ui_manager.c:126
 #: src/audacious/ui_manager.c:132
 msgid "Normal"
 msgstr "Normal"
 
-#: src/audacious/ui_manager.c:110 src/audacious/ui_manager.c:127
+#: src/audacious/ui_manager.c:110
+#: src/audacious/ui_manager.c:127
 msgid "Fire"
 msgstr "Feuer"
 
@@ -1417,23 +1379,28 @@
 msgid "Eighth (~6 fps)"
 msgstr "Achtel (~6 fps)"
 
-#: src/audacious/ui_manager.c:144 src/audacious/ui_manager.c:152
+#: src/audacious/ui_manager.c:144
+#: src/audacious/ui_manager.c:152
 msgid "Slowest"
 msgstr "Am langsamsten"
 
-#: src/audacious/ui_manager.c:145 src/audacious/ui_manager.c:153
+#: src/audacious/ui_manager.c:145
+#: src/audacious/ui_manager.c:153
 msgid "Slow"
 msgstr "Langsam"
 
-#: src/audacious/ui_manager.c:146 src/audacious/ui_manager.c:154
+#: src/audacious/ui_manager.c:146
+#: src/audacious/ui_manager.c:154
 msgid "Medium"
 msgstr "Mittel"
 
-#: src/audacious/ui_manager.c:147 src/audacious/ui_manager.c:155
+#: src/audacious/ui_manager.c:147
+#: src/audacious/ui_manager.c:155
 msgid "Fast"
 msgstr "Schnell"
 
-#: src/audacious/ui_manager.c:148 src/audacious/ui_manager.c:156
+#: src/audacious/ui_manager.c:148
+#: src/audacious/ui_manager.c:156
 msgid "Fastest"
 msgstr "Am schnellsten"
 
@@ -1449,23 +1416,28 @@
 msgid "Playback"
 msgstr "Wiedergabe"
 
-#: src/audacious/ui_manager.c:172 src/audacious/ui_manager.c:173
+#: src/audacious/ui_manager.c:172
+#: src/audacious/ui_manager.c:173
 msgid "Play"
 msgstr "Wiedergeben"
 
-#: src/audacious/ui_manager.c:175 src/audacious/ui_manager.c:176
+#: src/audacious/ui_manager.c:175
+#: src/audacious/ui_manager.c:176
 msgid "Pause"
 msgstr "Pause"
 
-#: src/audacious/ui_manager.c:178 src/audacious/ui_manager.c:179
+#: src/audacious/ui_manager.c:178
+#: src/audacious/ui_manager.c:179
 msgid "Stop"
 msgstr "Stop"
 
-#: src/audacious/ui_manager.c:181 src/audacious/ui_manager.c:182
+#: src/audacious/ui_manager.c:181
+#: src/audacious/ui_manager.c:182
 msgid "Previous"
 msgstr "Zurück"
 
-#: src/audacious/ui_manager.c:184 src/audacious/ui_manager.c:185
+#: src/audacious/ui_manager.c:184
+#: src/audacious/ui_manager.c:185
 msgid "Next"
 msgstr "Vorwärts"
 
@@ -1505,19 +1477,23 @@
 msgid "Peaks Falloff"
 msgstr "Spitzen-Falloff"
 
-#: src/audacious/ui_manager.c:205 src/audacious/ui_manager.c:206
+#: src/audacious/ui_manager.c:205
+#: src/audacious/ui_manager.c:206
 msgid "New Playlist"
 msgstr "Neue Wiedergabeliste"
 
-#: src/audacious/ui_manager.c:208 src/audacious/ui_manager.c:209
+#: src/audacious/ui_manager.c:208
+#: src/audacious/ui_manager.c:209
 msgid "Select Next Playlist"
 msgstr "Nächste Wiedergabeliste wählen"
 
-#: src/audacious/ui_manager.c:211 src/audacious/ui_manager.c:212
+#: src/audacious/ui_manager.c:211
+#: src/audacious/ui_manager.c:212
 msgid "Select Previous Playlist"
 msgstr "Vorherige Wiedergabeliste wählen"
 
-#: src/audacious/ui_manager.c:214 src/audacious/ui_manager.c:215
+#: src/audacious/ui_manager.c:214
+#: src/audacious/ui_manager.c:215
 msgid "Delete Playlist"
 msgstr "Wiedergabeliste löschen"
 
@@ -1588,12 +1564,8 @@
 msgstr "Suchen und auswählen"
 
 #: src/audacious/ui_manager.c:253
-msgid ""
-"Searches the playlist and selects playlist entries based on specific "
-"criteria."
-msgstr ""
-"Durchsucht die Wiedergabeliste und selektiert Einträge anhand verschiedener "
-"Kriterien"
+msgid "Searches the playlist and selects playlist entries based on specific criteria."
+msgstr "Durchsucht die Wiedergabeliste und selektiert Einträge anhand verschiedener Kriterien"
 
 #: src/audacious/ui_manager.c:256
 msgid "Invert Selection"
@@ -1639,7 +1611,8 @@
 msgid "Remove Duplicates"
 msgstr "Duplikate entfernen"
 
-#: src/audacious/ui_manager.c:280 src/audacious/ui_manager.c:316
+#: src/audacious/ui_manager.c:280
+#: src/audacious/ui_manager.c:316
 #: src/audacious/ui_manager.c:346
 msgid "By Title"
 msgstr "Nach Titel"
@@ -1648,26 +1621,25 @@
 msgid "Removes duplicate entries from the playlist by title."
 msgstr "Anhand des Titels doppelte Einträge aus der Wiedergabeliste löschen"
 
-#: src/audacious/ui_manager.c:284 src/audacious/ui_manager.c:324
+#: src/audacious/ui_manager.c:284
+#: src/audacious/ui_manager.c:324
 #: src/audacious/ui_manager.c:354
 msgid "By Filename"
 msgstr "Nach Dateiname"
 
 #: src/audacious/ui_manager.c:285
 msgid "Removes duplicate entries from the playlist by filename."
-msgstr ""
-"Anhand des Dateinamens doppelte Einträge aus der Wiedergabeliste entfernen"
-
-#: src/audacious/ui_manager.c:288 src/audacious/ui_manager.c:328
+msgstr "Anhand des Dateinamens doppelte Einträge aus der Wiedergabeliste entfernen"
+
+#: src/audacious/ui_manager.c:288
+#: src/audacious/ui_manager.c:328
 #: src/audacious/ui_manager.c:358
 msgid "By Path + Filename"
 msgstr "Nach Pfad & Dateinamen"
 
 #: src/audacious/ui_manager.c:289
 msgid "Removes duplicate entries from the playlist by their full path."
-msgstr ""
-"Anhand des vollen Dateipfads doppelte Einträge aus der Wiedergabeliste "
-"löschen"
+msgstr "Anhand des vollen Dateipfads doppelte Einträge aus der Wiedergabeliste löschen"
 
 #: src/audacious/ui_manager.c:292
 msgid "Remove All"
@@ -1714,47 +1686,58 @@
 msgid "Sort List"
 msgstr "Wiedergabeliste sortieren"
 
-#: src/audacious/ui_manager.c:317 src/audacious/ui_manager.c:347
+#: src/audacious/ui_manager.c:317
+#: src/audacious/ui_manager.c:347
 msgid "Sorts the list by title."
 msgstr "Wiedergabeliste nach dem Titel sortieren"
 
-#: src/audacious/ui_manager.c:320 src/audacious/ui_manager.c:350
+#: src/audacious/ui_manager.c:320
+#: src/audacious/ui_manager.c:350
 msgid "By Artist"
 msgstr "Nach Künstler"
 
-#: src/audacious/ui_manager.c:321 src/audacious/ui_manager.c:351
+#: src/audacious/ui_manager.c:321
+#: src/audacious/ui_manager.c:351
 msgid "Sorts the list by artist."
 msgstr "Wiedergabeliste nach Künstler sortieren"
 
-#: src/audacious/ui_manager.c:325 src/audacious/ui_manager.c:355
+#: src/audacious/ui_manager.c:325
+#: src/audacious/ui_manager.c:355
 msgid "Sorts the list by filename."
 msgstr "Wiedergabeliste nach Dateinamen sortieren"
 
-#: src/audacious/ui_manager.c:329 src/audacious/ui_manager.c:359
+#: src/audacious/ui_manager.c:329
+#: src/audacious/ui_manager.c:359
 msgid "Sorts the list by full pathname."
 msgstr "Wiedergabeliste nach vollem Pfadnamen sortieren"
 
-#: src/audacious/ui_manager.c:332 src/audacious/ui_manager.c:362
+#: src/audacious/ui_manager.c:332
+#: src/audacious/ui_manager.c:362
 msgid "By Date"
 msgstr "Nach Datum"
 
-#: src/audacious/ui_manager.c:333 src/audacious/ui_manager.c:363
+#: src/audacious/ui_manager.c:333
+#: src/audacious/ui_manager.c:363
 msgid "Sorts the list by modification time."
 msgstr "Wiedergabeliste nach Modifikationsdatum sortieren"
 
-#: src/audacious/ui_manager.c:336 src/audacious/ui_manager.c:366
+#: src/audacious/ui_manager.c:336
+#: src/audacious/ui_manager.c:366
 msgid "By Track Number"
 msgstr "Nach Titelnummer"
 
-#: src/audacious/ui_manager.c:337 src/audacious/ui_manager.c:367
+#: src/audacious/ui_manager.c:337
+#: src/audacious/ui_manager.c:367
 msgid "Sorts the list by track number."
 msgstr "Wiedergabeliste nach Titelnummer sortieren"
 
-#: src/audacious/ui_manager.c:340 src/audacious/ui_manager.c:370
+#: src/audacious/ui_manager.c:340
+#: src/audacious/ui_manager.c:370
 msgid "By Playlist Entry"
 msgstr "Nach Wiedergabelisteneintrag"
 
-#: src/audacious/ui_manager.c:341 src/audacious/ui_manager.c:371
+#: src/audacious/ui_manager.c:341
+#: src/audacious/ui_manager.c:371
 msgid "Sorts the list by playlist entry."
 msgstr "Wiedergabeliste nach Wiedergabelisteneintrag sortieren"
 
@@ -1774,11 +1757,13 @@
 msgid "Plugin Services"
 msgstr "Plugin-Dienste"
 
-#: src/audacious/ui_manager.c:385 src/audacious/ui_manager.c:388
+#: src/audacious/ui_manager.c:385
+#: src/audacious/ui_manager.c:388
 msgid "View Track Details"
 msgstr "Titel-Details anzeigen"
 
-#: src/audacious/ui_manager.c:386 src/audacious/ui_manager.c:389
+#: src/audacious/ui_manager.c:386
+#: src/audacious/ui_manager.c:389
 msgid "View track details"
 msgstr "Titel-Details anzeigen"
 
@@ -1819,19 +1804,23 @@
 msgid "Quit Audacious"
 msgstr "Audacious beenden"
 
-#: src/audacious/ui_manager.c:408 src/audacious/ui_manager.c:409
+#: src/audacious/ui_manager.c:408
+#: src/audacious/ui_manager.c:409
 msgid "Set A-B"
 msgstr "A-B setzen"
 
-#: src/audacious/ui_manager.c:411 src/audacious/ui_manager.c:412
+#: src/audacious/ui_manager.c:411
+#: src/audacious/ui_manager.c:412
 msgid "Clear A-B"
 msgstr "A-B löschen"
 
-#: src/audacious/ui_manager.c:414 src/audacious/ui_manager.c:415
+#: src/audacious/ui_manager.c:414
+#: src/audacious/ui_manager.c:415
 msgid "Jump to Playlist Start"
 msgstr "Zum Anfang der Wiedergabeliste springen"
 
-#: src/audacious/ui_manager.c:417 src/audacious/ui_manager.c:418
+#: src/audacious/ui_manager.c:417
+#: src/audacious/ui_manager.c:418
 msgid "Jump to File"
 msgstr "Zu Datei springen"
 
@@ -1859,7 +1848,8 @@
 msgid "Delete"
 msgstr "Löschen"
 
-#: src/audacious/ui_manager.c:436 src/audacious/ui_manager.c:457
+#: src/audacious/ui_manager.c:436
+#: src/audacious/ui_manager.c:457
 #: src/audacious/ui_manager.c:472
 msgid "Preset"
 msgstr "Equalizer-Voreinstellung"
@@ -1868,7 +1858,8 @@
 msgid "Load preset"
 msgstr "Equalizer-Voreinstellung laden"
 
-#: src/audacious/ui_manager.c:439 src/audacious/ui_manager.c:460
+#: src/audacious/ui_manager.c:439
+#: src/audacious/ui_manager.c:460
 #: src/audacious/ui_manager.c:475
 msgid "Auto-load preset"
 msgstr "Automatisch geladene Equalizer-Voreinstellung"
@@ -1877,7 +1868,8 @@
 msgid "Load auto-load preset"
 msgstr "Automatisch geladene Equalizer-Voreinstellung laden"
 
-#: src/audacious/ui_manager.c:442 src/audacious/ui_manager.c:463
+#: src/audacious/ui_manager.c:442
+#: src/audacious/ui_manager.c:463
 msgid "Default"
 msgstr "Standard"
 
@@ -1958,17 +1950,8 @@
 msgstr "Einträge in der aktiven Wiedergabeliste suchen"
 
 #: src/audacious/ui_playlist.c:485
-msgid ""
-"Select entries in playlist by filling one or more fields. Fields use regular "
-"expressions syntax, case-insensitive. If you don't know how regular "
-"expressions work, simply insert a literal portion of what you're searching "
-"for."
-msgstr ""
-"Wiedergabelisteneinträge können durch Ausfüllen von einem oder mehreren "
-"Feldern auswählt werden. Die Felder benutzen reguläre Ausdrücke ohne "
-"Beachtung der Gross- und Kleinschreibung. Falls der Umgang mit regulären "
-"Ausdrücken nicht vertraut ist, kann auch einfach ein Suchbegriff eingegeben "
-"werden."
+msgid "Select entries in playlist by filling one or more fields. Fields use regular expressions syntax, case-insensitive. If you don't know how regular expressions work, simply insert a literal portion of what you're searching for."
+msgstr "Wiedergabelisteneinträge können durch Ausfüllen von einem oder mehreren Feldern auswählt werden. Die Felder benutzen reguläre Ausdrücke ohne Beachtung der Gross- und Kleinschreibung. Falls der Umgang mit regulären Ausdrücken nicht vertraut ist, kann auch einfach ein Suchbegriff eingegeben werden."
 
 #: src/audacious/ui_playlist.c:493
 msgid "Title: "
@@ -2159,3 +2142,4 @@
 #: src/audacious/ui_urlopener.c:88
 msgid "Add/Open URL Dialog"
 msgstr "«URL hinzufügen/öffnen»-Fenster"
+
--- a/po/el.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/el.po	Fri Nov 16 05:36:42 2007 +0200
@@ -538,6 +538,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr "Ρυθμός δειγματοληψίας"
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
 msgstr ""
--- a/po/es.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/es.po	Fri Nov 16 05:36:42 2007 +0200
@@ -551,6 +551,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr "Tasa de muestreo"
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
 msgstr ""
--- a/po/fi.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/fi.po	Fri Nov 16 05:36:42 2007 +0200
@@ -529,6 +529,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr "Näytetaajuus:"
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 #, fuzzy
 msgid "Interpolation Engine:"
--- a/po/fr.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/fr.po	Fri Nov 16 05:36:42 2007 +0200
@@ -10,7 +10,7 @@
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: http://bugs.audacious-media-player.org\n"
 "POT-Creation-Date: 2007-10-13 14:15+0200\n"
-"PO-Revision-Date: 2007-10-17 03:45+0100\n"
+"PO-Revision-Date: 2007-10-27 10:18+0100\n"
 "Last-Translator: Stany Henry <StrassBoy@gmail.com>\n"
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
@@ -1120,7 +1120,7 @@
 
 #: src/audacious/ui_main.c:1228
 msgid "Audacious - visibility warning"
-msgstr "Audacious - avertissement quant à la visibilité"
+msgstr "Audacious - avertissement"
 
 #: src/audacious/ui_main.c:1230
 msgid "Show main player window"
@@ -1136,14 +1136,16 @@
 "You may want to show the player window again to control Audacious; otherwise, you'll have to control it remotely via audtool or enabled plugins (such as the statusicon plugin)."
 msgstr ""
 "Audacious a démarré, mais toutes les fenêtres de l'interface sont cachées.\n"
-"Peut-être voulez-vous voir à nouveau la fenêtre principale, afin de pouvoir\n"
-"contrôler Audacious. Dans le cas contraire, vous devrez utiliser les commandes\n"
-"distantes, par l'intermédiaire de 'audtool' ou des extensions activées\n"
-"('statusicon', par exemple)."
+"\n"
+"Peut-être voulez-vous voir à nouveau la fenêtre principale, afin de pouvoir contrôler Audacious.\n"
+"Dans le cas contraire, vous devrez utiliser les commandes distantes, par l'intermédiaire de 'audtool' ou des extensions activées (le module 'statusicon', par exemple).\n"
+" "
 
 #: src/audacious/ui_main.c:1241
 msgid "Always ignore, show/hide is controlled remotely"
-msgstr "Toujours ignorer : la fonction 'montrer'/'cacher' est contrôlée de manière distante."
+msgstr ""
+"Toujours ignorer : la fonction 'montrer/cacher'\n"
+"est contrôlée de manière distante."
 
 #: src/audacious/ui_main.c:1259
 msgid "Enter location to play:"
@@ -2071,6 +2073,7 @@
 msgid "Description"
 msgstr "Description"
 
+#: src/audacious/ui_preferences.c:1395
 msgid "Category"
 msgstr "Catégorie"
 
@@ -2133,4 +2136,3 @@
 #: src/audacious/ui_urlopener.c:88
 msgid "Add/Open URL Dialog"
 msgstr "Ouvrir/Ajouter un flux"
-
--- a/po/hi.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/hi.po	Fri Nov 16 05:36:42 2007 +0200
@@ -531,6 +531,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr "सैमà¥à¤ªà¤² की दर:"
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 #, fuzzy
 msgid "Interpolation Engine:"
--- a/po/hr.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/hr.po	Fri Nov 16 05:36:42 2007 +0200
@@ -532,6 +532,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr ""
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
 msgstr ""
--- a/po/hu.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/hu.po	Fri Nov 16 05:36:42 2007 +0200
@@ -530,6 +530,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr ""
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
 msgstr ""
--- a/po/it.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/it.po	Fri Nov 16 05:36:42 2007 +0200
@@ -541,6 +541,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr ""
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
 msgstr ""
--- a/po/ja.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/ja.po	Fri Nov 16 05:36:42 2007 +0200
@@ -533,6 +533,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr "サンプリングレートコンãƒãƒ¼ã‚¿ã‚’有効ã«ã™ã‚‹"
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
 msgstr "インターãƒãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚¨ãƒ³ã‚¸ãƒ³:"
--- a/po/ka.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/ka.po	Fri Nov 16 05:36:42 2007 +0200
@@ -529,6 +529,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr "სემპლირების სიხშირე:"
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 #, fuzzy
 msgid "Interpolation Engine:"
--- a/po/ko.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/ko.po	Fri Nov 16 05:36:42 2007 +0200
@@ -528,6 +528,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr "샘플ë§ìœ¨:"
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 #, fuzzy
 msgid "Interpolation Engine:"
--- a/po/lt.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/lt.po	Fri Nov 16 05:36:42 2007 +0200
@@ -527,6 +527,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr "Semplų dažnis:"
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 #, fuzzy
 msgid "Interpolation Engine:"
--- a/po/mk.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/mk.po	Fri Nov 16 05:36:42 2007 +0200
@@ -533,6 +533,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr ""
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
 msgstr ""
--- a/po/nl.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/nl.po	Fri Nov 16 05:36:42 2007 +0200
@@ -538,6 +538,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr ""
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
 msgstr ""
--- a/po/pl.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/pl.po	Fri Nov 16 05:36:42 2007 +0200
@@ -539,6 +539,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr "Włącz konwersję częstotliwości próbkowania"
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 #, fuzzy
 msgid "Interpolation Engine:"
--- a/po/pt_BR.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/pt_BR.po	Fri Nov 16 05:36:42 2007 +0200
@@ -524,6 +524,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr "Ativar Conversor de Taxa de Amostragem"
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
 msgstr "Motor de interpolação:"
--- a/po/ro.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/ro.po	Fri Nov 16 05:36:42 2007 +0200
@@ -528,6 +528,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr "Activează conversia ratei de eșantionare"
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
 msgstr ""
--- a/po/ru.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/ru.po	Fri Nov 16 05:36:42 2007 +0200
@@ -1,22 +1,26 @@
 # Russian translation for Audacious.
 # Copyright (C) 2006,2007 Alexander Orlov <alxorlov@pochta.ru>
 # This file is distributed under the same license as the Audacious package.
-# Alexander Orlov <alxorlov@pochta.ru>, 2007.
 #
 # За оÑнову взÑÑ‚ перевод Ð’Ð¸Ñ‚Ð°Ð»Ð¸Ñ Ð›Ð¸Ð¿Ð°Ñ‚Ð¾Ð²Ð° Ð´Ð»Ñ BMP.
 # Ð£Ð»ÑƒÑ‡ÑˆÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð° приветÑтвуютÑÑ :)
 #
+# Alexander Orlov <alxorlov@pochta.ru>, 2007.
+# Vitaly Lipatov <lav@etersoft.ru>, 2007.
+#
 msgid ""
 msgstr ""
-"Project-Id-Version: audacious 1.3\n"
+"Project-Id-Version: audacious 1.4\n"
 "Report-Msgid-Bugs-To: http://bugs.audacious-media-player.org\n"
 "POT-Creation-Date: 2007-10-13 14:15+0200\n"
-"PO-Revision-Date: 2007-04-12 21:52+0300\n"
-"Last-Translator: Alexander Orlov <alxorlov@pochta.ru>\n"
+"PO-Revision-Date: 2007-11-02 02:05+0300\n"
+"Last-Translator: Vitaly Lipatov <lav@etersoft.ru>\n"
 "Language-Team: none\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
 #: src/audacious/glade.c:45
 #, c-format
@@ -47,7 +51,7 @@
 
 #: src/audacious/glade/fileinfo.glade:255
 msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\"><b>Коментарии</b></span>"
+msgstr "<span size=\"small\"><b>Комментарии</b></span>"
 
 #: src/audacious/glade/fileinfo.glade:313
 msgid "<span size=\"small\">Genre</span>"
@@ -130,9 +134,8 @@
 msgstr "Выбор шрифта Ð´Ð»Ñ Ð³Ð»Ð°Ð²Ð½Ð¾Ð³Ð¾ окна"
 
 #: src/audacious/glade/prefswin.glade:1072
-#, fuzzy
 msgid "Select playlist font:"
-msgstr "Выбор шрифта Ð´Ð»Ñ Ð³Ð»Ð°Ð²Ð½Ð¾Ð³Ð¾ окна"
+msgstr "Выбор шрифта Ð´Ð»Ñ ÑпиÑка воÑпроизведениÑ"
 
 #: src/audacious/glade/prefswin.glade:1112
 msgid ""
@@ -189,10 +192,12 @@
 "If selected, the file information text in the main window will scroll back "
 "and forth. If not selected, the text will only scroll in one direction."
 msgstr ""
+"ЕÑли выбрано, текÑÑ‚Ð¾Ð²Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ файле в главном окне будет прокручиватьÑÑ Ð²Ð·Ð°Ð´ и вперёд. "
+"ЕÑли не выбрано, текÑÑ‚ прокручиваетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в одном направлении."
 
 #: src/audacious/glade/prefswin.glade:1380
 msgid "Use two-way text scroller"
-msgstr ""
+msgstr "Ð”Ð²ÑƒÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‚ÐºÐ° текÑта"
 
 #: src/audacious/glade/prefswin.glade:1422 src/audacious/ui_preferences.c:111
 msgid "Appearance"
@@ -306,7 +311,7 @@
 
 #: src/audacious/glade/prefswin.glade:2191
 msgid "Always refresh directory when opening file dialog"
-msgstr "Ð’Ñевгда обновлÑÑ‚ÑŒ каталог при открытии окна выбора файлов"
+msgstr "Ð’Ñегда обновлÑÑ‚ÑŒ каталог при открытии окна выбора файлов"
 
 #: src/audacious/glade/prefswin.glade:2225
 msgid "<b>Song Display</b>"
@@ -434,7 +439,6 @@
 msgstr "Размер буфера:"
 
 #: src/audacious/glade/prefswin.glade:3593
-#, fuzzy
 msgid ""
 "<span size=\"small\">This is the amount of time to prebuffer audio streams "
 "by, in milliseconds.\n"
@@ -445,7 +449,7 @@
 "<span size=\"small\">Это Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ буферизации звуковых потоков, "
 "в миллиÑекундах.\n"
 "Увеличьте Ñто значение, еÑли при проигрывании звук прерываетÑÑ. \n"
-"Учтите, что при Ñлишком больших значениÑÑ… Audacious будет работать медленно."
+"Учтите, что при Ñлишком больших значениÑÑ… Audacious будет работать замедленно."
 "</span>"
 
 #: src/audacious/glade/prefswin.glade:3663
@@ -531,15 +535,24 @@
 
 #: src/audacious/glade/prefswin.glade:4249
 msgid "<b>Sampling Rate Converter</b>"
-msgstr ""
+msgstr "<b>Преобразование чаÑтоты диÑкретизации</b>"
 
 #: src/audacious/glade/prefswin.glade:4289
 msgid "Enable Sampling Rate Converter"
+msgstr "Включить преобразование чаÑтоты диÑкретизации"
+
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
 msgstr ""
 
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
-msgstr ""
+msgstr "Ðлгоритм интерполÑции:"
 
 #: src/audacious/glade/prefswin.glade:4389
 msgid ""
@@ -547,30 +560,34 @@
 "This should be the max supported sampling rate of\n"
 "the sound card or output plugin.</span>"
 msgstr ""
+"<span size=\"small\">Ð’Ñе потоки будут преобразованы к Ñтой чаÑтоте\n"
+"диÑкретизации, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° быть макÑимальной поддерживаемой\n"
+"чаÑтотой звуковой карты или выходного модулÑ.</span>"
 
 #: src/audacious/glade/prefswin.glade:4461
 msgid "Sampling Rate [Hz]:"
-msgstr ""
+msgstr "ЧаÑтота диÑкретизации [Гц]:"
 
 #: src/audacious/glade/prefswin.glade:4517
-#, fuzzy
 msgid "<b>Volume Control</b>"
-msgstr "<b>КолеÑо мыши</b>"
+msgstr "<b>Регулировка громкоÑти</b>"
 
 #: src/audacious/glade/prefswin.glade:4556
 msgid ""
 "Use software volume control. This may be useful for situations where your "
 "audio system does not support controlling the playback volume."
 msgstr ""
+"ИÑпользовать программное управление громкоÑтью. "
+"Это может быть полезно, еÑли ваша Ð·Ð²ÑƒÐºÐ¾Ð²Ð°Ñ ÑиÑтема не поддерживает "
+"управление громкоÑтью воÑпроизведениÑ."
 
 #: src/audacious/glade/prefswin.glade:4558
 msgid "Use software volume control"
-msgstr ""
+msgstr "ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ Ñ€ÐµÐ³ÑƒÐ»Ð¸Ñ€Ð¾Ð²ÐºÐ° громкоÑти"
 
 #: src/audacious/glade/prefswin.glade:4746
-#, fuzzy
 msgid "Reload Plugins"
-msgstr "Модули"
+msgstr "Перезагрузить модули"
 
 #: src/audacious/glade/prefswin.glade:4807
 msgid "Popup Information Settings"
@@ -684,7 +701,7 @@
 
 #: src/audacious/main.c:1066
 msgid "Skip backwards in playlist"
-msgstr "Перейти к предыдущей пеÑне в ÑпиÑке пеÑен"
+msgstr "Перейти к предыдущей пеÑне в ÑпиÑке воÑпроизведениÑ"
 
 #: src/audacious/main.c:1067
 msgid "Start playing current playlist"
@@ -732,7 +749,7 @@
 
 #: src/audacious/main.c:1078
 msgid "Print all errors and warnings to stdout"
-msgstr "Выводить вÑе ошибки и Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ñтандартный вывод"
+msgstr "Выводить вÑе ошибки и Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð² Ñтандартный вывод"
 
 #: src/audacious/main.c:1079
 msgid "Show version and builtin features"
@@ -813,6 +830,19 @@
 "report:\n"
 "\n"
 msgstr ""
+"\n"
+"Audacious получил Ñигнал 11 (SIGSEGV).\n"
+"\n"
+"Мы приноÑим Ð¸Ð·Ð²Ð¸Ð½ÐµÐ½Ð¸Ñ Ð·Ð° неудобÑтво, но Audacious аварийно завершает работу.\n"
+"Это ошибка программы, и такого не должно проиÑходить в нормальных уÑловиÑÑ….\n"
+"Текущие параметры будут Ñохранены и не должны быть повреждены.\n"
+"\n"
+"Ð’Ñ‹ можете помочь улучшить качеÑтво Audacious заполнением отчёта о проблеме на http://bugs-"
+"meta.atheme.org\n"
+"Приведите там веÑÑŒ текÑÑ‚ Ñледующего ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¸ опишите что именно вы делали\n"
+"когда произошла Ð´Ð°Ð½Ð½Ð°Ñ Ð°Ð²Ð°Ñ€Ð¸Ñ.\n"
+"Это поможет быÑтро обработать ваш отчёт и понÑÑ‚ÑŒ в чём проблема:\n"
+"\n"
 
 #: src/audacious/signals.c:80
 msgid ""
@@ -820,12 +850,16 @@
 "Bugs can be reported at http://bugs-meta.atheme.org against the Audacious "
 "product.\n"
 msgstr ""
+"\n"
+"Об ошибках в Audacious можно Ñообщить на http://bugs-meta.atheme.org .\n"
 
 #: src/audacious/signals.c:266
 msgid ""
 "Your signaling implementation is broken.\n"
 "Expect unusable crash reports.\n"
 msgstr ""
+"Ð ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ ÑиÑтемы Ñигналов некорректна.\n"
+"Возможны беÑполезные ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ падении программы.\n"
 
 #: src/audacious/strings.c:170
 msgid "  (invalid UTF-8)"
@@ -852,7 +886,7 @@
 msgstr "Ðвторы"
 
 #: src/audacious/ui_credits.c:47
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "<big><b>Audacious %s</b></big>\n"
 "A skinned multimedia player for many platforms.\n"
@@ -860,7 +894,7 @@
 "Copyright (C) 2005-2007 Audacious Development Team\n"
 msgstr ""
 "<big><b>Audacious %s</b></big>\n"
-"Мультимедийный проигрыватель будущего Ð´Ð»Ñ UNIX.\n"
+"Многофункциональный мультимедийный проигрыватель Ð´Ð»Ñ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ñ… платформ.\n"
 "\n"
 "Copyright (C) 2005-2007 Команда разработчиков Audacious\n"
 
@@ -905,9 +939,8 @@
 msgstr "БолгарÑкий:"
 
 #: src/audacious/ui_credits.c:165
-#, fuzzy
 msgid "Catalan:"
-msgstr "ИтальÑнÑкий:"
+msgstr "КаталанÑкий:"
 
 #: src/audacious/ui_credits.c:168
 msgid "Croatian:"
@@ -1116,9 +1149,8 @@
 msgstr "_Фильтр:"
 
 #: src/audacious/ui_jumptotrack.c:594
-#, fuzzy
 msgid "Close on Jump"
-msgstr "Закрыть окно при Открытии"
+msgstr "Закрыть поÑле"
 
 #: src/audacious/ui_main.c:489
 #, c-format
@@ -1152,16 +1184,15 @@
 
 #: src/audacious/ui_main.c:1228
 msgid "Audacious - visibility warning"
-msgstr ""
+msgstr "Audacious - предупреждение видимоÑти"
 
 #: src/audacious/ui_main.c:1230
-#, fuzzy
 msgid "Show main player window"
-msgstr "Выбор шрифта Ð´Ð»Ñ Ð³Ð»Ð°Ð²Ð½Ð¾Ð³Ð¾ окна"
+msgstr "Показывать главное окно проигрывателÑ"
 
 #: src/audacious/ui_main.c:1231
 msgid "Ignore"
-msgstr ""
+msgstr "Игнорировать"
 
 #: src/audacious/ui_main.c:1235
 msgid ""
@@ -1170,71 +1201,70 @@
 "otherwise, you'll have to control it remotely via audtool or enabled plugins "
 "(such as the statusicon plugin)."
 msgstr ""
+"Audacious был запущен, но вÑе окна ÑпрÑтаны.\n"
+"Ð”Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Audacious вам возможно потребуетÑÑ Ð¿Ð¾ÐºÐ°Ð·Ð°Ñ‚ÑŒ окно "
+"Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ñ‚ÐµÐ»Ñ Ð²Ð½Ð¾Ð²ÑŒ; в противном Ñлучае вы можете управлÑÑ‚ÑŒ "
+"им удалённо через audtool или дополнительный модуль (такой как statusicon). "
 
 #: src/audacious/ui_main.c:1241
 msgid "Always ignore, show/hide is controlled remotely"
-msgstr ""
+msgstr "Ð’Ñегда игнорировать, показывать/прÑтать управлÑетÑÑ ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ð¾"
 
 #: src/audacious/ui_main.c:1259
 msgid "Enter location to play:"
 msgstr "Введите Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ Ð²Ð¾ÑпроизведениÑ:"
 
 #: src/audacious/ui_main.c:1504
-#, fuzzy, c-format
+#, c-format
 msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)"
-msgstr "ПЕРЕМЕЩЕÐИЕ: %d:%-2.2d/%d:%-2.2d (%d%%)"
+msgstr "Перемещение: %d:%-2.2d/%d:%-2.2d (%d%%)"
 
 #: src/audacious/ui_main.c:1536
 #, c-format
 msgid "Volume: %d%%"
-msgstr ""
+msgstr "ГромкоÑÑ‚ÑŒ: %d%%"
 
 #: src/audacious/ui_main.c:1566
 #, c-format
 msgid "Balance: %d%% left"
-msgstr ""
+msgstr "БаланÑ: %d%% влево"
 
 #: src/audacious/ui_main.c:1570
 msgid "Balance: center"
-msgstr ""
+msgstr "БаланÑ: центр"
 
 #: src/audacious/ui_main.c:1574
 #, c-format
 msgid "Balance: %d%% right"
-msgstr ""
+msgstr "БаланÑ: %d%% вправо"
 
 #: src/audacious/ui_main.c:1916
 msgid "Options Menu"
-msgstr ""
+msgstr "Меню параметров"
 
 #: src/audacious/ui_main.c:1920
-#, fuzzy
 msgid "Disable 'Always On Top'"
-msgstr "ПоднÑÑ‚ÑŒ на передний план"
+msgstr "Выключить \"Ð’Ñегда на переднем плане\""
 
 #: src/audacious/ui_main.c:1922
-#, fuzzy
 msgid "Enable 'Always On Top'"
-msgstr "ПоднÑÑ‚ÑŒ на передний план"
+msgstr "Включить \"Ð’Ñегда на переднем плане\""
 
 #: src/audacious/ui_main.c:1925
 msgid "File Info Box"
-msgstr ""
+msgstr "Окно информации о файле"
 
 #: src/audacious/ui_main.c:1929
-#, fuzzy
 msgid "Disable 'Doublesize'"
-msgstr "Двойной размер"
+msgstr "Выключить \"Двойной размер\""
 
 #: src/audacious/ui_main.c:1931
-#, fuzzy
 msgid "Enable 'Doublesize'"
-msgstr "Двойной размер"
+msgstr "Включить \"Двойной размер\""
 
 #: src/audacious/ui_main.c:1934
-#, fuzzy
 msgid "Visualization Menu"
-msgstr "Режим визуализации"
+msgstr "Меню визуализации"
 
 #: src/audacious/ui_main.c:1982
 msgid ""
@@ -1427,7 +1457,7 @@
 
 #: src/audacious/ui_manager.c:172 src/audacious/ui_manager.c:173
 msgid "Play"
-msgstr "ВоÑпроизведение"
+msgstr "ВоÑпроизвеÑти"
 
 #: src/audacious/ui_manager.c:175 src/audacious/ui_manager.c:176
 msgid "Pause"
@@ -1733,18 +1763,16 @@
 msgstr "Сортировать выбранные"
 
 #: src/audacious/ui_manager.c:380
-#, fuzzy
 msgid "File"
-msgstr "ПламÑ"
+msgstr "Файл"
 
 #: src/audacious/ui_manager.c:381
 msgid "Help"
-msgstr ""
+msgstr "Справка"
 
 #: src/audacious/ui_manager.c:383
-#, fuzzy
 msgid "Plugin Services"
-msgstr "Модули"
+msgstr "Ð’Ñпомогательные модули"
 
 #: src/audacious/ui_manager.c:385 src/audacious/ui_manager.c:388
 msgid "View Track Details"
@@ -1771,9 +1799,8 @@
 msgstr "ВоÑпроизвеÑти запиÑÑŒ Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ адреÑа"
 
 #: src/audacious/ui_manager.c:400
-#, fuzzy
 msgid "Plugin services"
-msgstr "Модули"
+msgstr "Ð’Ñпомогательные модули"
 
 #: src/audacious/ui_manager.c:402
 msgid "Preferences"
@@ -1793,7 +1820,7 @@
 
 #: src/audacious/ui_manager.c:408 src/audacious/ui_manager.c:409
 msgid "Set A-B"
-msgstr "ПоÑтавить метку A-B"
+msgstr "ПоÑтавить метки A-B"
 
 #: src/audacious/ui_manager.c:411 src/audacious/ui_manager.c:412
 msgid "Clear A-B"
@@ -1942,14 +1969,12 @@
 "чаÑÑ‚ÑŒ того, что вы ищете."
 
 #: src/audacious/ui_playlist.c:493
-#, fuzzy
 msgid "Title: "
-msgstr "Ðазвание"
+msgstr "Ðазвание: "
 
 #: src/audacious/ui_playlist.c:500
-#, fuzzy
 msgid "Album: "
-msgstr "Ðльбом"
+msgstr "Ðльбом: "
 
 #: src/audacious/ui_playlist.c:507
 msgid "Artist: "
@@ -1993,13 +2018,12 @@
 "ÐеизвеÑтный формат файла '%s'.\n"
 
 #: src/audacious/ui_playlist.c:911
-#, fuzzy
 msgid "Save as Static Playlist"
-msgstr "Сохранение ÑпиÑка воÑпроизведениÑ"
+msgstr "Сохранить ÑтатичеÑкий ÑпиÑок воÑпроизведениÑ"
 
 #: src/audacious/ui_playlist.c:918
 msgid "Use Relative Path"
-msgstr ""
+msgstr "ИÑпользовать отноÑительный путь"
 
 #: src/audacious/ui_playlist.c:940
 msgid "Load Playlist"
@@ -2051,12 +2075,11 @@
 
 #: src/audacious/ui_preferences.c:133
 msgid "Codec"
-msgstr ""
+msgstr "Кодек"
 
 #: src/audacious/ui_preferences.c:134
-#, fuzzy
 msgid "Quality"
-msgstr "_Выход"
+msgstr "КачеÑтво"
 
 #: src/audacious/ui_preferences.c:155
 msgid "localhost"
@@ -2133,178 +2156,3 @@
 #: src/audacious/ui_urlopener.c:88
 msgid "Add/Open URL Dialog"
 msgstr "Добавить/Открыть URL"
-
-#~ msgid "Show window manager decorations"
-#~ msgstr "Показывать заголовки менеджера окон"
-
-#, fuzzy
-#~ msgid "<b>Artist:</b> %s"
-#~ msgstr "<b>ПредуÑтановки</b>"
-
-#, fuzzy
-#~ msgid "<b>Title:</b> %s"
-#~ msgstr "<b>Ðазвание файла</b>"
-
-#, fuzzy
-#~ msgid "<b>Album:</b> %s"
-#~ msgstr "Ðльбом"
-
-#, fuzzy
-#~ msgid "Audacious last.fm radio tuner"
-#~ msgstr "СпиÑок воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Audacious"
-
-#, fuzzy
-#~ msgid "Station:"
-#~ msgstr "ИтальÑнÑкий:"
-
-#, fuzzy
-#~ msgid "<b>Artist:</b>"
-#~ msgstr "<b>ПредуÑтановки</b>"
-
-#, fuzzy
-#~ msgid "<b>Title:</b>"
-#~ msgstr "<b>Ðазвание файла</b>"
-
-#, fuzzy
-#~ msgid "<b>Album:</b>"
-#~ msgstr "<b>Ðазвание файла</b>"
-
-#~ msgid "VOLUME: %d%%"
-#~ msgstr "ГРОМКОСТЬ: %d%%"
-
-#~ msgid "BALANCE: %d%% LEFT"
-#~ msgstr "БÐЛÐÐС: %d%% ВЛЕВО"
-
-#~ msgid "BALANCE: CENTER"
-#~ msgstr "БÐЛÐÐС: ЦЕÐТР"
-
-#~ msgid "BALANCE: %d%% RIGHT"
-#~ msgstr "БÐЛÐÐС: %d%% ВПРÐВО"
-
-#, fuzzy
-#~ msgid "Last.fm radio"
-#~ msgstr "Открыть адреÑ"
-
-#, fuzzy
-#~ msgid "Play Last.fm radio"
-#~ msgstr "Открыть адреÑ"
-
-#~ msgid ""
-#~ "<b><big>No playable CD found.</big></b>\n"
-#~ "\n"
-#~ "No CD inserted, or inserted CD is not an audio CD.\n"
-#~ msgstr ""
-#~ "<b><big>Ðе найдено воÑпроизводимого CD.</big></b>\n"
-#~ "\n"
-#~ "Компакт-диÑк отÑутÑтвует или не Ñодержит аудио-дорожек.\n"
-
-#~ msgid "Add CD..."
-#~ msgstr "Добавить CD..."
-
-#~ msgid "Adds a CD to the playlist."
-#~ msgstr "ДобавлÑет запиÑи Ñ ÐºÐ¾Ð¼Ð¿Ð°ÐºÑ‚-диÑка в ÑпиÑок воÑпроизведениÑ."
-
-#~ msgid "Play CD"
-#~ msgstr "ВоÑпроизвеÑти CD"
-
-#~ msgid "Performer/Artist"
-#~ msgstr "ИÑполнитель"
-
-#~ msgid "File name"
-#~ msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°"
-
-#~ msgid "File path"
-#~ msgstr "Путь к файлу"
-
-#~ msgid "File extension"
-#~ msgstr "РаÑширение файла"
-
-#~ msgid "Track name"
-#~ msgstr "Ðазвание"
-
-#~ msgid "Track number"
-#~ msgstr "Ðомер дорожки"
-
-#~ msgid "%{n:...%}: Display \"...\" only if element %n is present"
-#~ msgstr "%{n:...%}: Отображать \"...\", когда Ñлемент %n приÑутÑтвует"
-
-#~ msgid ""
-#~ "Sorry, your GTK+ version (%d.%d.%d) does not work with Audacious.\n"
-#~ "Please use GTK+ %s or newer.\n"
-#~ msgstr ""
-#~ "ПроÑтите, ваша верÑÐ¸Ñ GTK+ (%d.%d.%d) не будет работать Ñ Audacious.\n"
-#~ "ПожалуйÑта, иÑпользуйте GTK+ %s или новее.\n"
-
-#~ msgid "OPTIONS MENU"
-#~ msgstr "МЕÐЮ ÐÐСТРОЕК"
-
-#~ msgid "DISABLE ALWAYS ON TOP"
-#~ msgstr "ОТКЛЮЧИТЬ ВСЕГДРÐÐВЕРХУ"
-
-#~ msgid "ENABLE ALWAYS ON TOP"
-#~ msgstr "ВКЛЮЧИТЬ ВСЕГДРÐÐВЕРХУ"
-
-#~ msgid "FILE INFO BOX"
-#~ msgstr "ОКÐО ИÐФОРМÐЦИИ О ФÐЙЛЕ"
-
-#~ msgid "DISABLE DOUBLESIZE"
-#~ msgstr "ОТКЛЮЧИТЬ ДВОЙÐОЙ РÐЗМЕР"
-
-#~ msgid "ENABLE DOUBLESIZE"
-#~ msgstr "ВКЛЮЧИТЬ ДВОЙÐОЙ РÐЗМЕР"
-
-#~ msgid "VISUALIZATION MENU"
-#~ msgstr "МЕÐЮ ВИЗУÐЛИЗÐЦИИ"
-
-#~ msgid "Track name: "
-#~ msgstr "Ðазвание: "
-
-#~ msgid "Album name: "
-#~ msgstr "Ðльбом: "
-
-#~ msgid ""
-#~ "<b><big>Unable to play files.</big></b>\n"
-#~ "\n"
-#~ "The following files could not be played. Please check that:\n"
-#~ "1. they are accessible.\n"
-#~ "2. you have enabled the media plugins required."
-#~ msgstr ""
-#~ "<b><big>Ðевозможно воÑпроизвеÑти файлы.</big></b>\n"
-#~ "\n"
-#~ "Ðекоторые файлы не могут быть воÑпроизведены. ПожалуйÑта, проверьте "
-#~ "Ñледующее:\n"
-#~ "1. ДоÑтупноÑÑ‚ÑŒ Ñтих файлов.\n"
-#~ "2. Включены необходимые аудио-модули."
-
-#~ msgid "Don't show this warning anymore"
-#~ msgstr "Больше не показывать Ñто предупреждение"
-
-#~ msgid "Show more _details"
-#~ msgstr "_Подробнее"
-
-#~ msgid ""
-#~ "\n"
-#~ "Received SIGSEGV\n"
-#~ "\n"
-#~ "This could be a bug in Audacious. If you don't know why this happened, "
-#~ "file a bug at http://bugs-meta.atheme.org/\n"
-#~ "\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Получен SIGSEGV\n"
-#~ "\n"
-#~ "Возможно Ñто ошибка в Audacious. ЕÑли вы не знаете, почему Ñто произошло, "
-#~ "то напишите Ñообщение об ошибке на http://bugs-meta.atheme.org/\n"
-#~ "\n"
-
-#~ msgid ""
-#~ "Enables playlist transparency. This is not recommended for slower "
-#~ "machines as it requires some CPU time to create and cache the pixmaps "
-#~ "used for the transparency."
-#~ msgstr ""
-#~ "Включает прозрачноÑÑ‚ÑŒ ÑпиÑка воÑпроизведениÑ. Ðе рекомендуетÑÑ Ð´Ð»Ñ "
-#~ "медленных машин потому что Ñто требует дополнительное процеÑÑорное Ð²Ñ€ÐµÐ¼Ñ "
-#~ "Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸ кÑÑˆÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ð¹ необходимых Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð·Ñ€Ð°Ñ‡Ð½Ð¾Ñти."
-
-#~ msgid "Enable playlist transparency"
-#~ msgstr "Прозрачный ÑпиÑок воÑпроизведениÑ"
--- a/po/sk.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/sk.po	Fri Nov 16 05:36:42 2007 +0200
@@ -530,6 +530,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr ""
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
 msgstr ""
--- a/po/sr.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/sr.po	Fri Nov 16 05:36:42 2007 +0200
@@ -525,6 +525,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr "Укључи претварач учеÑталоÑти одабирања узорака"
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
 msgstr ""
--- a/po/sr@Latn.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/sr@Latn.po	Fri Nov 16 05:36:42 2007 +0200
@@ -526,6 +526,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr "UkljuÄi pretvaraÄ uÄestalosti odabiranja uzoraka"
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
 msgstr ""
--- a/po/sv.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/sv.po	Fri Nov 16 05:36:42 2007 +0200
@@ -545,6 +545,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr "Uppsamlingstakt:"
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 #, fuzzy
 msgid "Interpolation Engine:"
--- a/po/tr.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/tr.po	Fri Nov 16 05:36:42 2007 +0200
@@ -530,6 +530,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr ""
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
 msgstr ""
--- a/po/uk.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/uk.po	Fri Nov 16 05:36:42 2007 +0200
@@ -531,6 +531,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr "ЧаÑтота:"
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 #, fuzzy
 msgid "Interpolation Engine:"
--- a/po/zh_CN.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/zh_CN.po	Fri Nov 16 05:36:42 2007 +0200
@@ -2,7 +2,7 @@
 msgstr ""
 "Project-Id-Version: Audacious\n"
 "Report-Msgid-Bugs-To: http://bugs.audacious-media-player.org\n"
-"POT-Creation-Date: 2007-10-13 14:15+0200\n"
+"POT-Creation-Date: 2007-09-05 19:18+0200\n"
 "PO-Revision-Date: 2007-04-18 20:00+0700\n"
 "Last-Translator: Yang Zhang <zyangmath@gmail.com>\n"
 "Language-Team: Chinese/Simplified\n"
@@ -93,191 +93,187 @@
 msgid "<b>Effects</b>"
 msgstr "<b>效果</b>"
 
-#: src/audacious/glade/prefswin.glade:693 src/audacious/ui_preferences.c:117
+#: src/audacious/glade/prefswin.glade:693 src/audacious/ui_manager.c:403
+#: src/audacious/ui_preferences.c:116
 msgid "Plugins"
 msgstr "æ’件"
 
-#: src/audacious/glade/prefswin.glade:758
+#: src/audacious/glade/prefswin.glade:746
 msgid "<b>_Skin</b>"
 msgstr "<b>皮肤(_S)</b>"
 
-#: src/audacious/glade/prefswin.glade:811
+#: src/audacious/glade/prefswin.glade:799
 msgid "Refresh skin list"
 msgstr "刷新皮肤列表"
 
-#: src/audacious/glade/prefswin.glade:926
+#: src/audacious/glade/prefswin.glade:893
 msgid "<b>_Fonts</b>"
 msgstr "<b>字体(_F)</b>"
 
-#: src/audacious/glade/prefswin.glade:975
+#: src/audacious/glade/prefswin.glade:948
 msgid "_Player:"
 msgstr "播放器(_P):"
 
-#: src/audacious/glade/prefswin.glade:1018
+#: src/audacious/glade/prefswin.glade:991
 msgid "_Playlist:"
 msgstr "播放列表(_P):"
 
-#: src/audacious/glade/prefswin.glade:1050
+#: src/audacious/glade/prefswin.glade:1023
 msgid "Select main player window font:"
-msgstr "选择主窗å£å­—体:"
-
-#: src/audacious/glade/prefswin.glade:1072
+msgstr "选择播放窗å£å­—体:"
+
+#: src/audacious/glade/prefswin.glade:1045
 #, fuzzy
 msgid "Select playlist font:"
-msgstr "选择主窗å£å­—体:"
-
-#: src/audacious/glade/prefswin.glade:1112
+msgstr "选择播放列表字体:"
+
+#: src/audacious/glade/prefswin.glade:1091
 msgid ""
 "Use bitmap fonts if they are available. Bitmap fonts do not support Unicode "
 "strings."
 msgstr "如果å¯èƒ½ï¼Œåˆ™ä½¿ç”¨ç‚¹é˜µå­—体。点阵字体ä¸æ”¯æŒ Unicode 字符串。"
 
-#: src/audacious/glade/prefswin.glade:1114
+#: src/audacious/glade/prefswin.glade:1093
 msgid "Use Bitmap fonts if available"
 msgstr "如果å¯èƒ½åˆ™ä½¿ç”¨ç‚¹é˜µå­—体"
 
-#: src/audacious/glade/prefswin.glade:1161
+#: src/audacious/glade/prefswin.glade:1127
 msgid "<b>_Miscellaneous</b>"
 msgstr "<b>æ‚项(_M)</b>"
 
-#: src/audacious/glade/prefswin.glade:1202
+#: src/audacious/glade/prefswin.glade:1175
 msgid "Show track numbers in playlist"
 msgstr "在播放列表中显示编å·"
 
-#: src/audacious/glade/prefswin.glade:1237
+#: src/audacious/glade/prefswin.glade:1210
 msgid "Show separators in playlist"
 msgstr "在播放列表中显示分隔符"
 
-#: src/audacious/glade/prefswin.glade:1272
+#: src/audacious/glade/prefswin.glade:1245
 msgid "Use custom cursors"
-msgstr "使用自定光标"
-
-#: src/audacious/glade/prefswin.glade:1306
+msgstr "使用自定义光标"
+
+#: src/audacious/glade/prefswin.glade:1279
+#: src/audacious/glade/prefswin.glade:1290
 msgid "This enables the window manager to show decorations for windows."
 msgstr "这个选项å¯ç”¨çª—å£ç®¡ç†å™¨æ˜¾ç¤ºçª—å£è£…饰。"
 
-#: src/audacious/glade/prefswin.glade:1308
+#: src/audacious/glade/prefswin.glade:1281
 msgid "Show window manager decoration"
 msgstr "显示窗å£ç®¡ç†å™¨è£…饰"
 
-#: src/audacious/glade/prefswin.glade:1342
+#: src/audacious/glade/prefswin.glade:1289
+msgid "Show window manager decorations"
+msgstr "显示窗å£ç®¡ç†å™¨è£…饰"
+
+#: src/audacious/glade/prefswin.glade:1319
 msgid ""
 "This enables the XMMS/GTK1-style file selection dialogs. This selector is "
 "provided by Audacious itself and is faster than the default GTK2 selector "
 "(but sadly not as user-friendly)."
 msgstr ""
 "这将å¯ç”¨ XMMS/GTK-1 æ ·å¼çš„文件选择对è¯æ¡†ã€‚该选择是 Audadious 自身æ供的,比默"
-"认的 GTK2 选择器快(但å¯æƒœä¸å¦‚它对用户å‹å¥½)。"
-
-#: src/audacious/glade/prefswin.glade:1344
+"认的 GTK2 选择器快(但å¯æƒœå¯¹ç”¨æˆ·ä¸å¤ªå‹å¥½)。"
+
+#: src/audacious/glade/prefswin.glade:1321
 msgid "Use XMMS-style file selector instead of the default selector"
 msgstr "使用 XMMS æ ·å¼çš„文件选择器"
 
-#: src/audacious/glade/prefswin.glade:1378
-msgid ""
-"If selected, the file information text in the main window will scroll back "
-"and forth. If not selected, the text will only scroll in one direction."
-msgstr ""
-
-#: src/audacious/glade/prefswin.glade:1380
-msgid "Use two-way text scroller"
-msgstr ""
-
-#: src/audacious/glade/prefswin.glade:1422 src/audacious/ui_preferences.c:111
+#: src/audacious/glade/prefswin.glade:1363 src/audacious/ui_preferences.c:110
 msgid "Appearance"
 msgstr "外观"
 
-#: src/audacious/glade/prefswin.glade:1469
+#: src/audacious/glade/prefswin.glade:1410
 msgid "<b>Mouse wheel</b>"
 msgstr "<b>鼠标滚轮</b>"
 
-#: src/audacious/glade/prefswin.glade:1542
-msgid "lines"
-msgstr "行"
-
-#: src/audacious/glade/prefswin.glade:1595
-msgid "Scrolls playlist by"
-msgstr "列表滑动"
-
-#: src/audacious/glade/prefswin.glade:1623
+#: src/audacious/glade/prefswin.glade:1458
+msgid "Changes volume by"
+msgstr "调节音é‡"
+
+#: src/audacious/glade/prefswin.glade:1486
 msgid "percent"
 msgstr "%"
 
-#: src/audacious/glade/prefswin.glade:1651
-msgid "Changes volume by"
-msgstr "调节音é‡"
-
-#: src/audacious/glade/prefswin.glade:1701 src/audacious/ui_preferences.c:115
+#: src/audacious/glade/prefswin.glade:1514
+msgid "Scrolls playlist by"
+msgstr "列表滑动"
+
+#: src/audacious/glade/prefswin.glade:1567
+msgid "lines"
+msgstr "行"
+
+#: src/audacious/glade/prefswin.glade:1642 src/audacious/ui_preferences.c:114
 msgid "Mouse"
 msgstr "é¼ æ ‡"
 
-#: src/audacious/glade/prefswin.glade:1748
+#: src/audacious/glade/prefswin.glade:1689
 msgid "<b>Filename</b>"
 msgstr "<b>文件å</b>"
 
-#: src/audacious/glade/prefswin.glade:1788
+#: src/audacious/glade/prefswin.glade:1729
 msgid "Convert underscores to blanks"
 msgstr "将下划线转æ¢æˆç©ºæ ¼"
 
-#: src/audacious/glade/prefswin.glade:1823
+#: src/audacious/glade/prefswin.glade:1764
 msgid "Convert %20 to blanks"
 msgstr "å°† %20 转æ¢æˆç©ºæ ¼"
 
-#: src/audacious/glade/prefswin.glade:1858
+#: src/audacious/glade/prefswin.glade:1799
 msgid "Convert backslash '\\' to forward slash '/'"
 msgstr "转æ¢åæ–œæ â€œ\\â€ä¸ºæ­£æ–œæ â€œ/â€"
 
-#: src/audacious/glade/prefswin.glade:1892
+#: src/audacious/glade/prefswin.glade:1833
 msgid "<b>Metadata</b>"
 msgstr "<b>元数æ®</b>"
 
-#: src/audacious/glade/prefswin.glade:1931
+#: src/audacious/glade/prefswin.glade:1872
 msgid "Load metadata (tag information) from music files."
 msgstr "从文件中获å–元数æ®(标签信æ¯)。"
 
-#: src/audacious/glade/prefswin.glade:1933
+#: src/audacious/glade/prefswin.glade:1874
 msgid "Load metadata from playlists and files"
-msgstr "使用播放列表中的元数æ®"
-
-#: src/audacious/glade/prefswin.glade:1971
+msgstr "从播放列表和文件中载入元数æ®"
+
+#: src/audacious/glade/prefswin.glade:1912
 msgid "Load metadata when adding the file to the playlist or opening it"
-msgstr "打开文件或者把文件加入列表时加载原数æ®"
-
-#: src/audacious/glade/prefswin.glade:1973
+msgstr "打开文件或者把文件加入列表时载入元数æ®"
+
+#: src/audacious/glade/prefswin.glade:1914
 msgid "On load"
 msgstr "装入时"
 
-#: src/audacious/glade/prefswin.glade:1993
+#: src/audacious/glade/prefswin.glade:1934
 msgid "Load metadata on demand when displaying the file in the playlist"
-msgstr "当文件在列表中显示时根æ®éœ€è¦åŠ è½½åŽŸæ•°æ®"
-
-#: src/audacious/glade/prefswin.glade:1995
+msgstr "当文件在列表中显示时根æ®éœ€è¦åŠ è½½å…ƒæ•°æ®"
+
+#: src/audacious/glade/prefswin.glade:1936
 msgid "On display"
 msgstr "显示时"
 
-#: src/audacious/glade/prefswin.glade:2025
-msgid "Auto character encoding detector for:"
-msgstr "使用自动编ç æ£€æµ‹å™¨ï¼š"
-
-#: src/audacious/glade/prefswin.glade:2070
+#: src/audacious/glade/prefswin.glade:1966
+msgid "Fallback character encodings:"
+msgstr "备用字符编ç ï¼š"
+
+#: src/audacious/glade/prefswin.glade:1994
 msgid ""
 "List of character encodings used for fall back conversion of metadata. If "
 "automatic character encoding detector failed or has been disabled, encodings "
 "in this list would be treated as candidates of the encoding of metadata, and "
 "fall back conversion from these encodings to UTF-8 would be attempted."
 msgstr ""
-"缺çœçš„元数æ®è½¬æ¢ä½¿ç”¨çš„字符编ç åˆ—表。如果自动编ç è½¬æ¢æ£€æµ‹å™¨å¤±è´¥æˆ–被ç¦ç”¨ï¼Œè¿™ä¸ª"
-"列表中的编ç å°†è¢«ä½œä¸ºå…ƒæ•°æ®ç¼–ç çš„候选,并将试图由此转æ¢åˆ°UTF-8。"
-
-#: src/audacious/glade/prefswin.glade:2094
-msgid "Fallback character encodings:"
-msgstr "缺çœå­—符编ç ï¼š"
-
-#: src/audacious/glade/prefswin.glade:2150
+"元数æ®è½¬æ¢ä½¿ç”¨çš„备用字符编ç åˆ—表。如果自动编ç è½¬æ¢æ£€æµ‹å™¨å¤±è´¥æˆ–被ç¦ç”¨ï¼Œ"
+"列表中的编ç å°†è¢«ä½œä¸ºå…ƒæ•°æ®ç¼–ç çš„候选,并将试图由此转æ¢åˆ° UTF-8。"
+
+#: src/audacious/glade/prefswin.glade:2035
+msgid "Auto character encoding detector for:"
+msgstr "使用自动编ç æ£€æµ‹å™¨ï¼š"
+
+#: src/audacious/glade/prefswin.glade:2091
 msgid "<b>File Dialog</b>"
 msgstr "<b>文件对è¯æ¡†</b>"
 
-#: src/audacious/glade/prefswin.glade:2189
+#: src/audacious/glade/prefswin.glade:2130
 msgid ""
 "Always refresh the file dialog (this will slow opening the dialog on large "
 "directories, and Gnome VFS should handle automatically)."
@@ -285,19 +281,23 @@
 "总是自动刷新文件对è¯æ¡† (这将使在大目录打开时文件打开对è¯æ¡†å˜æ…¢ï¼Œå¹¶ä¸” Gnome "
 "VFS 应该能够自动处ç†ã€‚)。"
 
-#: src/audacious/glade/prefswin.glade:2191
+#: src/audacious/glade/prefswin.glade:2132
 msgid "Always refresh directory when opening file dialog"
 msgstr "当打开文件对è¯æ¡†æ—¶æ€»æ˜¯è‡ªåŠ¨åˆ·æ–°ç›®å½•"
 
-#: src/audacious/glade/prefswin.glade:2225
+#: src/audacious/glade/prefswin.glade:2166
 msgid "<b>Song Display</b>"
 msgstr "<b> 歌曲显示</b>"
 
-#: src/audacious/glade/prefswin.glade:2273
-msgid "Show information about titlestring format"
-msgstr "显示标题格å¼ä¿¡æ¯"
-
-#: src/audacious/glade/prefswin.glade:2302
+#: src/audacious/glade/prefswin.glade:2214
+msgid "Title format:"
+msgstr "标题格å¼ï¼š"
+
+#: src/audacious/glade/prefswin.glade:2242
+msgid "Custom string:"
+msgstr "自定字符串:"
+
+#: src/audacious/glade/prefswin.glade:2293
 msgid ""
 "TITLE\n"
 "ARTIST - TITLE\n"
@@ -313,21 +313,17 @@
 "艺术家 ï¼ å”±ç‰‡ ï¼ éŸ³è½¨. 标题\n"
 "艺术家 [唱片] ï¼ éŸ³è½¨. 标题\n"
 "唱片 ï¼ æ ‡é¢˜\n"
-"自定"
-
-#: src/audacious/glade/prefswin.glade:2347
-msgid "Custom string:"
-msgstr "自定格å¼ï¼š"
-
-#: src/audacious/glade/prefswin.glade:2375
-msgid "Title format:"
-msgstr "标题格å¼ï¼š"
-
-#: src/audacious/glade/prefswin.glade:2424
+"自定义"
+
+#: src/audacious/glade/prefswin.glade:2315
+msgid "Show information about titlestring format"
+msgstr "显示标题格å¼ä¿¡æ¯"
+
+#: src/audacious/glade/prefswin.glade:2365
 msgid "<b>Popup Information</b>"
 msgstr "<b>弹出信æ¯</b>"
 
-#: src/audacious/glade/prefswin.glade:2475
+#: src/audacious/glade/prefswin.glade:2416
 msgid ""
 "Toggles popup information window for the pointed entry in the playlist. The "
 "window shows title of song, name of album, genre, year of publish, track "
@@ -336,82 +332,82 @@
 "切æ¢æ’­æ”¾åˆ—表中鼠标指å‘的项的弹出信æ¯çª—å£ã€‚该窗å£æ˜¾ç¤ºæ­Œæ›²æ ‡é¢˜ã€ä¸“辑åã€æµæ´¾ä¿¡"
 "æ¯ã€å‘布年份,音轨编å·ï¼ŒéŸ³è½¨é•¿åº¦å’Œè‰ºæœ¯å“(专辑å°é¢)。"
 
-#: src/audacious/glade/prefswin.glade:2477
+#: src/audacious/glade/prefswin.glade:2418
 msgid "Show popup information for playlist entries"
-msgstr "为播放列表项显示弹出信æ¯"
-
-#: src/audacious/glade/prefswin.glade:2504
+msgstr "显示播放列表项弹出信æ¯"
+
+#: src/audacious/glade/prefswin.glade:2445
 msgid "Edit settings for popup information"
-msgstr "编辑弹出信æ¯è®¾ç½®"
-
-#: src/audacious/glade/prefswin.glade:2553 src/audacious/ui_manager.c:203
-#: src/audacious/ui_playlist_manager.c:402 src/audacious/ui_preferences.c:116
+msgstr "编辑弹出信æ¯çš„设置"
+
+#: src/audacious/glade/prefswin.glade:2494 src/audacious/ui_manager.c:203
+#: src/audacious/ui_playlist_manager.c:290 src/audacious/ui_preferences.c:115
 msgid "Playlist"
 msgstr "播放列表"
 
-#: src/audacious/glade/prefswin.glade:2612
+#: src/audacious/glade/prefswin.glade:2553
 msgid "<b>Presets</b>"
 msgstr "<b>预设</b>"
 
-#: src/audacious/glade/prefswin.glade:2666
-msgid "File preset extension:"
-msgstr "文件预设扩展å:"
-
-#: src/audacious/glade/prefswin.glade:2694
+#: src/audacious/glade/prefswin.glade:2653
 msgid "Directory preset file:"
 msgstr "目录预设文件:"
 
-#: src/audacious/glade/prefswin.glade:2788
+#: src/audacious/glade/prefswin.glade:2681
+msgid "File preset extension:"
+msgstr "文件预设扩展å:"
+
+#: src/audacious/glade/prefswin.glade:2729
 msgid "Available _Presets:"
-msgstr "å¯ç”¨é¢„设:"
-
-#: src/audacious/glade/prefswin.glade:2921 src/audacious/ui_preferences.c:114
+msgstr "å¯ç”¨é¢„设(_P):"
+
+#: src/audacious/glade/prefswin.glade:2862 src/audacious/ui_preferences.c:113
 msgid "Equalizer"
 msgstr "å‡è¡¡å™¨"
 
-#: src/audacious/glade/prefswin.glade:2968
+#: src/audacious/glade/prefswin.glade:2909
 msgid "<b>Proxy Configuration</b>"
-msgstr "<b>代ç†æœåŠ¡å™¨è®¾ç½®</b>"
-
-#: src/audacious/glade/prefswin.glade:3026
+msgstr "<b>代ç†æœåŠ¡å™¨é…ç½®</b>"
+
+#: src/audacious/glade/prefswin.glade:2967
 msgid "Enable proxy usage"
 msgstr "å¯ç”¨ä»£ç†æœåŠ¡å™¨"
 
-#: src/audacious/glade/prefswin.glade:3103
+#: src/audacious/glade/prefswin.glade:2998
+msgid "Proxy hostname:"
+msgstr "代ç†ä¸»æœºå:"
+
+#: src/audacious/glade/prefswin.glade:3026
 msgid "Proxy port:"
-msgstr "端å£ï¼š"
-
-#: src/audacious/glade/prefswin.glade:3131
-msgid "Proxy hostname:"
-msgstr "主机å:"
+msgstr "代ç†ç«¯å£ï¼š"
+
+#: src/audacious/glade/prefswin.glade:3120
+msgid "Use authentication with proxy"
+msgstr "使用代ç†èº«ä»½éªŒè¯"
+
+#: src/audacious/glade/prefswin.glade:3151
+msgid "Proxy username:"
+msgstr "代ç†ç”¨æˆ·å:"
 
 #: src/audacious/glade/prefswin.glade:3179
-msgid "Use authentication with proxy"
-msgstr "使用身份验è¯"
-
-#: src/audacious/glade/prefswin.glade:3256
 msgid "Proxy password:"
-msgstr "密ç ï¼š"
-
-#: src/audacious/glade/prefswin.glade:3284
-msgid "Proxy username:"
-msgstr "用户å:"
-
-#: src/audacious/glade/prefswin.glade:3354
+msgstr "代ç†å¯†ç ï¼š"
+
+#: src/audacious/glade/prefswin.glade:3295
 msgid ""
 "<span size=\"small\">Changing these settings will require a restart of "
 "Audacious.</span>"
 msgstr "<span size=\"small\">这些设置将在é‡å¯ Audacious åŽç”Ÿæ•ˆã€‚</span>"
 
-#: src/audacious/glade/prefswin.glade:3493
+#: src/audacious/glade/prefswin.glade:3419
 msgid "<b>Audio System</b>"
 msgstr "<b>音频系统</b>"
 
-#: src/audacious/glade/prefswin.glade:3566
-msgid "Buffer size:"
-msgstr "缓冲区大å°ï¼š"
-
-#: src/audacious/glade/prefswin.glade:3593
+#: src/audacious/glade/prefswin.glade:3473
+msgid "Current output plugin:"
+msgstr "当å‰è¾“出æ’件:"
+
+#: src/audacious/glade/prefswin.glade:3541
 #, fuzzy
 msgid ""
 "<span size=\"small\">This is the amount of time to prebuffer audio streams "
@@ -424,94 +420,94 @@
 "如果您碰到跳音,请增加这个值。\n"
 "但需è¦æ³¨æ„的是:增大这个值å¯èƒ½ä¼šä½¿ Audacious 表现很糟糕。</span>"
 
-#: src/audacious/glade/prefswin.glade:3663
-msgid "Current output plugin:"
-msgstr "当å‰è¾“出æ’件:"
-
-#: src/audacious/glade/prefswin.glade:3769
+#: src/audacious/glade/prefswin.glade:3571
+msgid "Buffer size:"
+msgstr "缓冲区大å°ï¼š"
+
+#: src/audacious/glade/prefswin.glade:3695
 msgid "Output Plugin Preferences"
 msgstr "输出æ’件首选项"
 
-#: src/audacious/glade/prefswin.glade:3844
+#: src/audacious/glade/prefswin.glade:3770
 msgid "Output Plugin Information"
 msgstr "输出æ’件信æ¯"
 
-#: src/audacious/glade/prefswin.glade:3896
+#: src/audacious/glade/prefswin.glade:3822
 msgid "<b>Format Detection</b>"
 msgstr "<b>æ ¼å¼æ£€æµ‹</b>"
 
-#: src/audacious/glade/prefswin.glade:3935
+#: src/audacious/glade/prefswin.glade:3861
 msgid ""
 "When checked, Audacious will detect file formats on demand. This can result "
 "in a messier playlist, but delivers a major speed benefit."
 msgstr ""
-"当选中时,Audacious 将在需è¦æ—¶æ‰æ£€æµ‹æ–‡ä»¶æ ¼å¼ã€‚这会使播放列表有些混乱,但会使"
-"速度大大æ高。"
-
-#: src/audacious/glade/prefswin.glade:3937
+"当选中时,Audacious 将在需è¦æ—¶æ‰æ£€æµ‹æ–‡ä»¶æ ¼å¼ã€‚这会使播放列表有些混乱,但速度"
+"有很大æ高。"
+
+#: src/audacious/glade/prefswin.glade:3863
 msgid "Detect file formats on demand, instead of immediately."
 msgstr "在需è¦æ—¶è€Œä¸æ˜¯ç«‹å³æ£€æµ‹æ–‡ä»¶æ ¼å¼"
 
-#: src/audacious/glade/prefswin.glade:3971
+#: src/audacious/glade/prefswin.glade:3897
 msgid ""
 "When checked, Audacious will detect file formats based by extension. This is "
 "slightly slower than detection on demand, but still provides a minimal level "
 "of format detection."
 msgstr ""
-"当选中时,Audacious 将会根æ®æ‰©å±•åæ¥æ£€æµ‹æ–‡ä»¶æ ¼å¼ã€‚这样会轻微的慢于根æ®éœ€è¦æ£€"
-"测格å¼ã€‚但是å´èƒ½æ供一个最简å•çš„文件格å¼æ£€æµ‹ã€‚"
-
-#: src/audacious/glade/prefswin.glade:3973
+"选中时,Audacious 将会根æ®æ‰©å±•åæ¥æ£€æµ‹æ–‡ä»¶æ ¼å¼ã€‚这样会略微慢于根æ®éœ€è¦æ£€"
+"测格å¼ã€‚但是ä»ç„¶æ供了一个最简å•çš„文件格å¼æ£€æµ‹ã€‚"
+
+#: src/audacious/glade/prefswin.glade:3899
 msgid "Detect file formats by extension."
 msgstr "æ ¹æ®æ‰©å±•å检测文件格å¼"
 
-#: src/audacious/glade/prefswin.glade:4007
+#: src/audacious/glade/prefswin.glade:3933
 msgid "<b>Playback</b>"
 msgstr "<b>播放</b>"
 
-#: src/audacious/glade/prefswin.glade:4046
+#: src/audacious/glade/prefswin.glade:3972
 msgid ""
 "When Audacious starts, automatically begin playing from the point where we "
 "stopped before."
 msgstr "当 Audacious å¯åŠ¨æ—¶ï¼Œè‡ªåŠ¨ä»Žä¸Šæ¬¡åœæ­¢çš„地方开始播放。"
 
-#: src/audacious/glade/prefswin.glade:4048
+#: src/audacious/glade/prefswin.glade:3974
 msgid "Continue playback on startup"
-msgstr "在å¯åŠ¨æ—¶æ¢å¤å›žæ”¾"
-
-#: src/audacious/glade/prefswin.glade:4082
+msgstr "在å¯åŠ¨æ—¶æ¢å¤æ’­æ”¾"
+
+#: src/audacious/glade/prefswin.glade:4008
 msgid "When finished playing a song, don't automatically advance to the next."
-msgstr "歌曲播完åŽï¼Œä¸è¦è‡ªåŠ¨å¿«è¿›åˆ°ä¸‹ä¸€æ›²ã€‚"
-
-#: src/audacious/glade/prefswin.glade:4084
+msgstr "歌曲播完åŽï¼Œä¸è¦è‡ªåŠ¨æ’­æ”¾ä¸‹ä¸€æ›²ã€‚"
+
+#: src/audacious/glade/prefswin.glade:4010
 msgid "Don't advance in the playlist"
-msgstr "ä¸å…许列表快进"
-
-#: src/audacious/glade/prefswin.glade:4119
+msgstr "ä¸å…许在列表å‰è¿›"
+
+#: src/audacious/glade/prefswin.glade:4045
 msgid "Pause between songs"
 msgstr "在歌曲之间暂åœ"
 
-#: src/audacious/glade/prefswin.glade:4157
+#: src/audacious/glade/prefswin.glade:4083
 msgid "Pause for"
 msgstr "æš‚åœ"
 
-#: src/audacious/glade/prefswin.glade:4203
+#: src/audacious/glade/prefswin.glade:4129
 msgid "seconds"
 msgstr "秒"
 
-#: src/audacious/glade/prefswin.glade:4249
+#: src/audacious/glade/prefswin.glade:4175
 msgid "<b>Sampling Rate Converter</b>"
 msgstr "<b>采样率转æ¢å™¨</b>"
 
-#: src/audacious/glade/prefswin.glade:4289
+#: src/audacious/glade/prefswin.glade:4215
 msgid "Enable Sampling Rate Converter"
 msgstr "å¯ç”¨é‡‡æ ·çŽ‡è½¬æ¢å™¨"
 
-#: src/audacious/glade/prefswin.glade:4361
-msgid "Interpolation Engine:"
-msgstr ""
-
-#: src/audacious/glade/prefswin.glade:4389
+#: src/audacious/glade/prefswin.glade:4264
+msgid "Sampling Rate [Hz]:"
+msgstr "采样率 [Hz]:"
+
+#: src/audacious/glade/prefswin.glade:4334
 #, fuzzy
 msgid ""
 "<span size=\"small\">All streams will be converted to this sampling rate.\n"
@@ -521,38 +517,23 @@
 "<span size=\"small\">所有音频æµå°†è¢«è½¬æ¢åˆ°æ­¤é‡‡æ ·çŽ‡ã€‚\n"
 "这应当是您的声å¡æˆ–输出æ’件支æŒçš„最大采样率。</span>"
 
-#: src/audacious/glade/prefswin.glade:4461
-msgid "Sampling Rate [Hz]:"
-msgstr "采样率 [Hz]:"
-
-#: src/audacious/glade/prefswin.glade:4517
-#, fuzzy
-msgid "<b>Volume Control</b>"
-msgstr "<b>鼠标滚轮</b>"
-
-#: src/audacious/glade/prefswin.glade:4556
-msgid ""
-"Use software volume control. This may be useful for situations where your "
-"audio system does not support controlling the playback volume."
-msgstr ""
-
-#: src/audacious/glade/prefswin.glade:4558
-msgid "Use software volume control"
-msgstr ""
-
-#: src/audacious/glade/prefswin.glade:4746
+#: src/audacious/glade/prefswin.glade:4364
+msgid "Interpolation Engine:"
+msgstr "æ’值引擎"
+
+#: src/audacious/glade/prefswin.glade:4593
 msgid "Reload Plugins"
 msgstr "é‡æ–°åŠ è½½æ’件"
 
-#: src/audacious/glade/prefswin.glade:4807
+#: src/audacious/glade/prefswin.glade:4654
 msgid "Popup Information Settings"
 msgstr "弹出信æ¯è®¾ç½®"
 
-#: src/audacious/glade/prefswin.glade:4831
+#: src/audacious/glade/prefswin.glade:4678
 msgid "<b>Cover image retrieve</b>"
 msgstr "<b>专辑å°é¢æ£€ç´¢</b>"
 
-#: src/audacious/glade/prefswin.glade:4856
+#: src/audacious/glade/prefswin.glade:4703
 msgid ""
 "While searching for the album's cover, Audacious looks for certain words in "
 "the filename. You can specify those words in the lists below, separated "
@@ -561,158 +542,158 @@
 "当æœç´¢ä¸“辑å°é¢æ—¶ï¼ŒAudacious æœç´¢æ–‡ä»¶å中的关键字。您å¯ä»¥åœ¨ä¸‹é¢åˆ—表中指定它"
 "们,用逗å·éš”开。"
 
-#: src/audacious/glade/prefswin.glade:4911
-msgid "Exclude:"
-msgstr "排除:"
-
-#: src/audacious/glade/prefswin.glade:4939
+#: src/audacious/glade/prefswin.glade:4758
 msgid "Include:"
 msgstr "包括:"
 
-#: src/audacious/glade/prefswin.glade:5008
+#: src/audacious/glade/prefswin.glade:4786
+msgid "Exclude:"
+msgstr "排除:"
+
+#: src/audacious/glade/prefswin.glade:4855
 msgid "Recursively search for cover"
 msgstr "递归æœç´¢å°é¢"
 
-#: src/audacious/glade/prefswin.glade:5046
+#: src/audacious/glade/prefswin.glade:4893
 msgid "Search depth: "
 msgstr "æœç´¢æ·±åº¦ï¼š"
 
-#: src/audacious/glade/prefswin.glade:5112
+#: src/audacious/glade/prefswin.glade:4959
 msgid "Use per-file cover"
 msgstr "为æ¯ä¸ªæ–‡ä»¶ä½¿ç”¨å•ç‹¬å°é¢"
 
-#: src/audacious/glade/prefswin.glade:5132
+#: src/audacious/glade/prefswin.glade:4979
 msgid "<b>Miscellaneous</b>"
 msgstr "<b>æ‚项</b>"
 
-#: src/audacious/glade/prefswin.glade:5170
+#: src/audacious/glade/prefswin.glade:5017
 msgid "Show Progress bar for the current track"
 msgstr "为当å‰éŸ³è½¨æ˜¾ç¤ºè¿›åº¦æ¡"
 
-#: src/audacious/glade/prefswin.glade:5208
+#: src/audacious/glade/prefswin.glade:5055
 msgid "Delay until filepopup comes up: "
 msgstr "延迟直到文件弹出信æ¯æ˜¾ç¤ºï¼š"
 
-#: src/audacious/glade/prefswin.glade:5302
+#: src/audacious/glade/prefswin.glade:5149
 msgid "Color Adjustment"
 msgstr "颜色调节"
 
-#: src/audacious/glade/prefswin.glade:5325
+#: src/audacious/glade/prefswin.glade:5172
 msgid ""
 "Audacious allows you to alter the color balance of the skinned UI. The "
 "sliders below will allow you to do this."
 msgstr "Audacious å…许你修改使用皮肤的界é¢è‰²è°ƒã€‚下é¢çš„滑动æ¡å…许你作这个调整。"
 
-#: src/audacious/glade/prefswin.glade:5359
-msgid "Blue"
-msgstr "è“"
-
-#: src/audacious/glade/prefswin.glade:5387
+#: src/audacious/glade/prefswin.glade:5268
+msgid "Red"
+msgstr "红"
+
+#: src/audacious/glade/prefswin.glade:5296
 msgid "Green"
 msgstr "绿"
 
-#: src/audacious/glade/prefswin.glade:5415
-msgid "Red"
-msgstr "红"
-
-#: src/audacious/input.c:627
+#: src/audacious/glade/prefswin.glade:5324
+msgid "Blue"
+msgstr "è“"
+
+#: src/audacious/input.c:657
 #, c-format
 msgid "audacious: %s"
 msgstr "audacious: %s"
 
-#: src/audacious/input.c:643
+#: src/audacious/input.c:673
 msgid "Filename:"
 msgstr "文件å:"
 
-#: src/audacious/input.c:662
+#: src/audacious/input.c:692
 msgid "No input plugin recognized this file"
 msgstr "没有输入æ’件å¯è¯†åˆ«æ­¤æ–‡ä»¶"
 
-#: src/audacious/input.c:664
+#: src/audacious/input.c:694
 #, c-format
 msgid "Input plugin: %s"
 msgstr "输入æ’件:%s"
 
-#: src/audacious/logger.c:125
+#: src/audacious/logger.c:124
 #, c-format
 msgid "Unable to create log file (%s)!\n"
 msgstr "无法创建日志文件 (%s)ï¼\n"
 
-#: src/audacious/main.c:90 src/audacious/main.c:92 src/audacious/ui_main.c:491
-#: src/audacious/ui_main.c:2466
+#: src/audacious/main.c:90 src/audacious/main.c:92 src/audacious/ui_main.c:502
+#: src/audacious/ui_main.c:2514
 msgid "Audacious"
 msgstr "Audacious"
 
-#: src/audacious/main.c:477
+#: src/audacious/main.c:475
 #, c-format
 msgid "Could not create directory (%s): %s\n"
 msgstr "新建目录 %s 失败,错误:%s\n"
 
-#: src/audacious/main.c:1065
+#: src/audacious/main.c:891
 msgid "Select which Audacious session ID to use"
 msgstr "选择 Audacious ä¼šè¯ ID"
 
-#: src/audacious/main.c:1066
+#: src/audacious/main.c:892
 msgid "Skip backwards in playlist"
 msgstr "在播放列表中å‘åŽè·³"
 
-#: src/audacious/main.c:1067
+#: src/audacious/main.c:893
 msgid "Start playing current playlist"
-msgstr "开始播放现有列表"
-
-#: src/audacious/main.c:1068
+msgstr "开始播放当å‰åˆ—表"
+
+#: src/audacious/main.c:894
 msgid "Pause current song"
 msgstr "æš‚åœå½“å‰æ­Œæ›²"
 
-#: src/audacious/main.c:1069
+#: src/audacious/main.c:895
 msgid "Stop current song"
 msgstr "åœæ­¢å½“å‰æ­Œæ›²"
 
-#: src/audacious/main.c:1070
+#: src/audacious/main.c:896
 msgid "Pause if playing, play otherwise"
 msgstr "如正播放则暂åœï¼Œå¦åˆ™æ’­æ”¾"
 
-#: src/audacious/main.c:1071
+#: src/audacious/main.c:897
 msgid "Skip forward in playlist"
 msgstr "在播放列表中å‘å‰è·³"
 
-#: src/audacious/main.c:1072
+#: src/audacious/main.c:898
 msgid "Display Jump to File dialog"
 msgstr "显示 “跳到文件†对è¯æ¡†"
 
-#: src/audacious/main.c:1073
+#: src/audacious/main.c:899
 msgid "Don't clear the playlist"
 msgstr "ä¸è¦æ¸…除播放列表"
 
-#: src/audacious/main.c:1074
+#: src/audacious/main.c:900
 msgid "Add new files to a temporary playlist"
 msgstr "添加新文件到临时列表"
 
-#: src/audacious/main.c:1075
+#: src/audacious/main.c:901
 msgid "Display the main window"
 msgstr "显示主窗å£"
 
-#: src/audacious/main.c:1076
+#: src/audacious/main.c:902
 msgid "Display all open Audacious windows"
 msgstr "显示全部开打的 Audacious 窗å£"
 
-#: src/audacious/main.c:1077
+#: src/audacious/main.c:903
 msgid "Enable headless operation"
 msgstr "å¯åŠ¨æ— ç•Œé¢æ“作"
 
-#: src/audacious/main.c:1078
+#: src/audacious/main.c:904
 msgid "Print all errors and warnings to stdout"
 msgstr "打å°æ‰€æœ‰é”™è¯¯å’Œè­¦å‘Šåˆ°æ ‡å‡†è¾“出"
 
-#: src/audacious/main.c:1079
+#: src/audacious/main.c:905
 msgid "Show version and builtin features"
 msgstr "显示版本和内建特性"
 
-#: src/audacious/main.c:1080
+#: src/audacious/main.c:906
 msgid "FILE..."
 msgstr "文件..."
 
-#: src/audacious/main.c:1239
+#: src/audacious/main.c:1065
 #, c-format
 msgid ""
 "<b><big>Unable to load skin.</big></b>\n"
@@ -724,7 +705,7 @@
 "\n"
 "请检查设在'%s'的皮肤是å¯ç”¨çš„,并且确ä¿é»˜è®¤çš®è‚¤ä¹Ÿå·²æ­£ç¡®å®‰è£…到'%s'。\n"
 
-#: src/audacious/main.c:1320
+#: src/audacious/main.c:1123
 msgid ""
 "Sorry, threads isn't supported on your platform.\n"
 "\n"
@@ -737,11 +718,11 @@
 "如果你原本使用 libc5 的 Linux 并且装了 GLIB & GTK+ \n"
 "之åŽåˆå®‰è£…了 LinuxThreads,请é‡æ–°ç¼–译 GLIB & GTK+。\n"
 
-#: src/audacious/main.c:1351
+#: src/audacious/main.c:1154
 msgid "- play multimedia files"
 msgstr "- 播放多媒体文件"
 
-#: src/audacious/main.c:1358
+#: src/audacious/main.c:1161
 #, c-format
 msgid ""
 "%s: %s\n"
@@ -750,12 +731,12 @@
 "%s: %s\n"
 "å°è¯• `%s --help' æ¥èŽ·å¾—更多信æ¯.\n"
 
-#: src/audacious/main.c:1368
+#: src/audacious/main.c:1171
 #, c-format
 msgid "%s: Unable to open display, exiting.\n"
 msgstr "%s: 无法打开显示,å³å°†é€€å‡ºã€‚\n"
 
-#: src/audacious/playback.c:343
+#: src/audacious/playback.c:274
 msgid ""
 "<b><big>No output plugin selected.</big></b>\n"
 "You have not selected an output plugin."
@@ -807,7 +788,7 @@
 "Your signaling implementation is broken.\n"
 "Expect unusable crash reports.\n"
 msgstr ""
-"您的信å·çš„实现已æŸå。\n"
+"您信å·çš„实现已æŸå。\n"
 "崩溃报告将会ä¸èƒ½ä½¿ç”¨ã€‚\n"
 
 #: src/audacious/strings.c:170
@@ -825,25 +806,25 @@
 "\n"
 "Copyright (C) 2005-2006 Audacious å¼€å‘å°ç»„"
 
-#: src/audacious/ui_about.c:125 src/audacious/ui_credits.c:357
+#: src/audacious/ui_about.c:125 src/audacious/ui_credits.c:355
 #: src/audacious/ui_manager.c:391 src/audacious/ui_manager.c:392
 msgid "About Audacious"
 msgstr "关于 Audacious"
 
-#: src/audacious/ui_about.c:174 src/audacious/ui_credits.c:400
+#: src/audacious/ui_about.c:174 src/audacious/ui_credits.c:398
 msgid "Credits"
 msgstr "致谢"
 
 #: src/audacious/ui_credits.c:47
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "<big><b>Audacious %s</b></big>\n"
-"A skinned multimedia player for many platforms.\n"
+"The future of UNIX multimedia.\n"
 "\n"
 "Copyright (C) 2005-2007 Audacious Development Team\n"
 msgstr ""
 "<big><b>Audacious %s</b></big>\n"
-"The future of UNIX multimedia.\n"
+"UNIX 多媒体的未æ¥ã€‚\n"
 "\n"
 "Copyright (C) 2005-2006 Audacious å¼€å‘å°ç»„\n"
 
@@ -863,147 +844,147 @@
 msgid "Plugin development:"
 msgstr "æ’件开å‘:"
 
-#: src/audacious/ui_credits.c:97
+#: src/audacious/ui_credits.c:96
 msgid "Patch authors:"
 msgstr "è¡¥ä¸ä½œè€…:"
 
-#: src/audacious/ui_credits.c:117
+#: src/audacious/ui_credits.c:116
 msgid "0.1.x developers:"
 msgstr "0.1.x å¼€å‘者:"
 
-#: src/audacious/ui_credits.c:123
+#: src/audacious/ui_credits.c:122
 msgid "BMP Developers:"
 msgstr "BMP å¼€å‘者:"
 
-#: src/audacious/ui_credits.c:155
+#: src/audacious/ui_credits.c:154
 msgid "Brazilian Portuguese:"
 msgstr "巴西葡è„牙语:"
 
-#: src/audacious/ui_credits.c:159
+#: src/audacious/ui_credits.c:158
 msgid "Breton:"
 msgstr "布列塔尼语:"
 
-#: src/audacious/ui_credits.c:162
+#: src/audacious/ui_credits.c:161
 msgid "Bulgarian:"
 msgstr "匈牙利语:"
 
-#: src/audacious/ui_credits.c:165
+#: src/audacious/ui_credits.c:164
 msgid "Catalan:"
 msgstr "加泰罗尼亚语:"
 
-#: src/audacious/ui_credits.c:168
+#: src/audacious/ui_credits.c:167
 msgid "Croatian:"
 msgstr "罗马尼亚语:"
 
-#: src/audacious/ui_credits.c:171
+#: src/audacious/ui_credits.c:170
 msgid "Czech:"
 msgstr "æ·å…‹è¯­ï¼š"
 
-#: src/audacious/ui_credits.c:174
+#: src/audacious/ui_credits.c:173
 msgid "Dutch:"
 msgstr "è·å…°è¯­ï¼š"
 
-#: src/audacious/ui_credits.c:178
+#: src/audacious/ui_credits.c:177
 msgid "Finnish:"
 msgstr "芬兰语:"
 
-#: src/audacious/ui_credits.c:181
+#: src/audacious/ui_credits.c:180
 msgid "French:"
 msgstr "法语:"
 
-#: src/audacious/ui_credits.c:185
+#: src/audacious/ui_credits.c:183
 msgid "German:"
 msgstr "德语:"
 
-#: src/audacious/ui_credits.c:190
+#: src/audacious/ui_credits.c:188
 msgid "Georgian:"
 msgstr "乔治亚语:"
 
-#: src/audacious/ui_credits.c:193
+#: src/audacious/ui_credits.c:191
 msgid "Greek:"
 msgstr "希腊语:"
 
-#: src/audacious/ui_credits.c:198
+#: src/audacious/ui_credits.c:196
 msgid "Hindi:"
 msgstr "北å°åº¦è¯­:"
 
-#: src/audacious/ui_credits.c:201
+#: src/audacious/ui_credits.c:199
 msgid "Hungarian:"
 msgstr "匈牙利语:"
 
-#: src/audacious/ui_credits.c:204
+#: src/audacious/ui_credits.c:202
 msgid "Italian:"
 msgstr "æ„大利语:"
 
-#: src/audacious/ui_credits.c:208
+#: src/audacious/ui_credits.c:206
 msgid "Japanese:"
 msgstr "日语:"
 
-#: src/audacious/ui_credits.c:211
+#: src/audacious/ui_credits.c:209
 msgid "Korean:"
 msgstr "æœè¯­ï¼š"
 
-#: src/audacious/ui_credits.c:214
+#: src/audacious/ui_credits.c:212
 msgid "Lithuanian:"
 msgstr "立陶宛语:"
 
-#: src/audacious/ui_credits.c:217
+#: src/audacious/ui_credits.c:215
 msgid "Macedonian:"
 msgstr "马其顿语:"
 
-#: src/audacious/ui_credits.c:220
+#: src/audacious/ui_credits.c:218
 msgid "Polish:"
 msgstr "波兰语:"
 
-#: src/audacious/ui_credits.c:223
+#: src/audacious/ui_credits.c:221
 msgid "Romanian:"
 msgstr "罗马尼亚语:"
 
-#: src/audacious/ui_credits.c:227
+#: src/audacious/ui_credits.c:225
 msgid "Russian:"
 msgstr "俄语:"
 
-#: src/audacious/ui_credits.c:230
+#: src/audacious/ui_credits.c:228
 msgid "Serbian (Latin):"
 msgstr "塞尔维亚语(拉ä¸æ–‡)"
 
-#: src/audacious/ui_credits.c:233
+#: src/audacious/ui_credits.c:231
 msgid "Serbian (Cyrillic):"
 msgstr "塞尔维亚语(斯拉夫文)"
 
-#: src/audacious/ui_credits.c:236
+#: src/audacious/ui_credits.c:234
 msgid "Simplified Chinese:"
 msgstr "简体中文:"
 
-#: src/audacious/ui_credits.c:239
+#: src/audacious/ui_credits.c:237
 msgid "Slovak:"
 msgstr "斯洛ä¼å…‹è¯­ï¼š"
 
-#: src/audacious/ui_credits.c:242
+#: src/audacious/ui_credits.c:240
 msgid "Spanish:"
 msgstr "西ç­ç‰™è¯­ï¼š"
 
-#: src/audacious/ui_credits.c:245
+#: src/audacious/ui_credits.c:243
 msgid "Swedish:"
 msgstr "瑞典语:"
 
-#: src/audacious/ui_credits.c:248
+#: src/audacious/ui_credits.c:246
 msgid "Traditional Chinese:"
 msgstr "ç¹ä½“中文:"
 
-#: src/audacious/ui_credits.c:251
+#: src/audacious/ui_credits.c:249
 msgid "Turkish:"
 msgstr "土耳其语:"
 
-#: src/audacious/ui_credits.c:255
+#: src/audacious/ui_credits.c:253
 msgid "Ukrainian:"
 msgstr "乌克兰语:"
 
-#: src/audacious/ui_credits.c:258
+#: src/audacious/ui_credits.c:256
 msgid "Welsh:"
 msgstr "å¨å°”斯语:"
 
-#: src/audacious/ui_credits.c:404
+#: src/audacious/ui_credits.c:402
 msgid "Translators"
 msgstr "翻译者"
 
@@ -1020,23 +1001,23 @@
 msgstr "音轨信æ¯çª—å£"
 
 #: src/audacious/ui_fileinfopopup.c:252 src/audacious/ui_fileinfopopup.c:364
-#: src/audacious/ui_preferences.c:125
+#: src/audacious/ui_preferences.c:124
 msgid "Title"
 msgstr "标题"
 
-#: src/audacious/ui_fileinfopopup.c:255 src/audacious/ui_preferences.c:123
+#: src/audacious/ui_fileinfopopup.c:255 src/audacious/ui_preferences.c:122
 msgid "Artist"
 msgstr "艺术家"
 
-#: src/audacious/ui_fileinfopopup.c:258 src/audacious/ui_preferences.c:124
+#: src/audacious/ui_fileinfopopup.c:258 src/audacious/ui_preferences.c:123
 msgid "Album"
 msgstr "专辑"
 
-#: src/audacious/ui_fileinfopopup.c:261 src/audacious/ui_preferences.c:127
+#: src/audacious/ui_fileinfopopup.c:261 src/audacious/ui_preferences.c:126
 msgid "Genre"
 msgstr "风格"
 
-#: src/audacious/ui_fileinfopopup.c:264 src/audacious/ui_preferences.c:131
+#: src/audacious/ui_fileinfopopup.c:264 src/audacious/ui_preferences.c:130
 msgid "Year"
 msgstr "年份"
 
@@ -1048,103 +1029,186 @@
 msgid "Track Length"
 msgstr "音轨长度"
 
-#: src/audacious/ui_fileinfopopup.c:373 src/audacious/ui_preferences.c:128
-#: src/audacious/ui_preferences.c:420
+#: src/audacious/ui_fileinfopopup.c:373 src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:426 src/audacious/ui_preferences.c:514
+#: src/audacious/ui_preferences.c:603 src/audacious/ui_preferences.c:699
 msgid "Filename"
 msgstr "文件å"
 
-#: src/audacious/ui_fileopener.c:127
+#: src/audacious/ui_fileopener.c:128
 msgid "Open Files"
 msgstr "打开文件"
 
-#: src/audacious/ui_fileopener.c:127
+#: src/audacious/ui_fileopener.c:128
 msgid "Add Files"
 msgstr "添加文件"
 
-#: src/audacious/ui_fileopener.c:129
+#: src/audacious/ui_fileopener.c:130
 msgid "Close dialog on Open"
 msgstr "打开åŽå…³é—­å¯¹è¯æ¡†"
 
-#: src/audacious/ui_fileopener.c:129
+#: src/audacious/ui_fileopener.c:130
 msgid "Close dialog on Add"
 msgstr "添加åŽå…³é—­å¯¹è¯æ¡†"
 
-#: src/audacious/ui_fileopener.c:356
+#: src/audacious/ui_fileopener.c:357
 msgid "Play files"
 msgstr "播放文件"
 
-#: src/audacious/ui_fileopener.c:358
+#: src/audacious/ui_fileopener.c:359
 msgid "Load files"
 msgstr "装入文件"
 
-#: src/audacious/ui_jumptotrack.c:138
+#: src/audacious/ui_jumptotrack.c:140
 msgid "Un_queue"
 msgstr "ä¸æŽ’队(_q)"
 
-#: src/audacious/ui_jumptotrack.c:140 src/audacious/ui_jumptotrack.c:603
+#: src/audacious/ui_jumptotrack.c:142 src/audacious/ui_jumptotrack.c:605
 msgid "_Queue"
 msgstr "排队(_Q)"
 
-#: src/audacious/ui_jumptotrack.c:518
+#: src/audacious/ui_jumptotrack.c:520
 msgid "Jump to Track"
 msgstr "跳到音轨"
 
-#: src/audacious/ui_jumptotrack.c:559
+#: src/audacious/ui_jumptotrack.c:561
 msgid "Filter: "
 msgstr "过滤: "
 
-#: src/audacious/ui_jumptotrack.c:560
+#: src/audacious/ui_jumptotrack.c:562
 msgid "_Filter:"
 msgstr "过滤(_F): "
 
-#: src/audacious/ui_jumptotrack.c:594
+#: src/audacious/ui_jumptotrack.c:596
 #, fuzzy
 msgid "Close on Jump"
 msgstr "打开åŽå…³é—­å¯¹è¯æ¡†"
 
-#: src/audacious/ui_main.c:489
+#: src/audacious/ui_lastfm.c:65
+msgid "Not last.fm stream"
+msgstr "ä¸æ˜¯ last.fm æµ"
+
+#: src/audacious/ui_lastfm.c:90
+#, fuzzy, c-format
+msgid "<b>Artist:</b> %s"
+msgstr "<i>艺术家</i>"
+
+#: src/audacious/ui_lastfm.c:98
+#, fuzzy, c-format
+msgid "<b>Title:</b> %s"
+msgstr "<i>标题</i>"
+
+#: src/audacious/ui_lastfm.c:102
+#, fuzzy, c-format
+msgid "<b>Album:</b> %s"
+msgstr "<i>唱片</i>"
+
+#: src/audacious/ui_lastfm.c:117
+msgid ""
+"<b><big>Couldn't find your lastfm login data.</big></b>\n"
+"\n"
+"Check if your Scrobbler's plugin login settings are configured properly.\n"
+msgstr ""
+
+#: src/audacious/ui_lastfm.c:238
+#, fuzzy
+msgid "Audacious last.fm radio tuner"
+msgstr "Audacious last.fm 广播调è°å™¨"
+
+#: src/audacious/ui_lastfm.c:239
+#, fuzzy
+msgid "Station:"
+msgstr "广播站:"
+
+#: src/audacious/ui_lastfm.c:245
+#, fuzzy
+msgid "<b>Artist:</b>"
+msgstr "<i>艺术家</i>"
+
+#: src/audacious/ui_lastfm.c:249
+#, fuzzy
+msgid "<b>Title:</b>"
+msgstr "<i>标题</i>"
+
+#: src/audacious/ui_lastfm.c:253
+#, fuzzy
+msgid "<b>Album:</b>"
+msgstr "<i>唱片</i>"
+
+#: src/audacious/ui_lastfm.c:257
+msgid "Love"
+msgstr ""
+
+#: src/audacious/ui_lastfm.c:258
+msgid "Ban"
+msgstr "å±è”½"
+
+#: src/audacious/ui_lastfm.c:259
+msgid "Skip"
+msgstr "跳过"
+
+#: src/audacious/ui_lastfm.c:260
+msgid "Tune in"
+msgstr ""
+
+#: src/audacious/ui_lastfm.c:262
+msgid "Neighbours' radio"
+msgstr "邻居的广播"
+
+#: src/audacious/ui_lastfm.c:263
+msgid "Personal radio"
+msgstr "个人广播"
+
+#: src/audacious/ui_lastfm.c:337
+msgid ""
+"<b><big>The lastfm radio plugin could not be found.</big></b>\n"
+"\n"
+"Check if the AudioScrobbler plugin was compiled in\n"
+msgstr ""
+
+#: src/audacious/ui_main.c:500
 #, c-format
 msgid "%s - Audacious"
 msgstr "%s - Audacious"
 
-#: src/audacious/ui_main.c:744
+#: src/audacious/ui_main.c:755
 msgid "VBR"
 msgstr "å¯å˜ä½æ•°çŽ‡"
 
-#: src/audacious/ui_main.c:761 src/audacious/ui_main.c:765
+#: src/audacious/ui_main.c:772 src/audacious/ui_main.c:776
 msgid "stereo"
 msgstr "立体声"
 
-#: src/audacious/ui_main.c:761 src/audacious/ui_main.c:765
+#: src/audacious/ui_main.c:772 src/audacious/ui_main.c:776
 msgid "mono"
 msgstr "å•å£°é“"
 
-#: src/audacious/ui_main.c:1060 src/audacious/ui_manager.c:420
-#: src/audacious/ui_manager.c:421
+#: src/audacious/ui_main.c:1032 src/audacious/ui_manager.c:423
+#: src/audacious/ui_manager.c:424
 msgid "Jump to Time"
 msgstr "跳到特定时间"
 
-#: src/audacious/ui_main.c:1081
+#: src/audacious/ui_main.c:1053
 msgid "minutes:seconds"
 msgstr "分:秒"
 
-#: src/audacious/ui_main.c:1091
+#: src/audacious/ui_main.c:1063
 msgid "Track length:"
 msgstr "音轨长度:"
 
-#: src/audacious/ui_main.c:1228
+#: src/audacious/ui_main.c:1200
 msgid "Audacious - visibility warning"
 msgstr "Audacious - å¯è§æ€§è­¦å‘Š"
 
-#: src/audacious/ui_main.c:1230
+#: src/audacious/ui_main.c:1202
 msgid "Show main player window"
 msgstr "显示播放器主窗å£"
 
-#: src/audacious/ui_main.c:1231
+#: src/audacious/ui_main.c:1203
 msgid "Ignore"
 msgstr "忽略"
 
-#: src/audacious/ui_main.c:1235
+#: src/audacious/ui_main.c:1207
 msgid ""
 "Audacious has been started with all of its windows hidden.\n"
 "You may want to show the player window again to control Audacious; "
@@ -1155,72 +1219,72 @@
 "您或许想è¦æ˜¾ç¤ºæ’­æ”¾å™¨çª—å£ä»¥æŽ§åˆ¶ Audaciousï¼›å¦åˆ™æ‚¨å°†ä¸å¾—ä¸é€šè¿‡ audtool 远程控制"
 "或通过å¯ç”¨çš„æ’件(如 statusicon æ’件)æ¥æŽ§åˆ¶ã€‚"
 
-#: src/audacious/ui_main.c:1241
+#: src/audacious/ui_main.c:1213
 msgid "Always ignore, show/hide is controlled remotely"
 msgstr "总是忽略,并远程控制 显示/éšè—"
 
-#: src/audacious/ui_main.c:1259
+#: src/audacious/ui_main.c:1231
 msgid "Enter location to play:"
 msgstr "输入è¦æ’­æ”¾çš„ä½ç½®ï¼š"
 
-#: src/audacious/ui_main.c:1504
+#: src/audacious/ui_main.c:1465
 #, fuzzy, c-format
 msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)"
 msgstr "æœå¯»ï¼š%d:%-2.2d/%d:%-2.2d (%d%%)"
 
+#: src/audacious/ui_main.c:1497
+#, c-format
+msgid "Volume: %d%%"
+msgstr "音é‡: %d%%"
+
+#: src/audacious/ui_main.c:1528
+#, c-format
+msgid "Balance: %d%% left"
+msgstr "平衡: %d%% 左"
+
+#: src/audacious/ui_main.c:1532
+msgid "Balance: center"
+msgstr "平衡: 中间"
+
 #: src/audacious/ui_main.c:1536
 #, c-format
-msgid "Volume: %d%%"
-msgstr ""
-
-#: src/audacious/ui_main.c:1566
-#, c-format
-msgid "Balance: %d%% left"
-msgstr ""
-
-#: src/audacious/ui_main.c:1570
-msgid "Balance: center"
-msgstr ""
-
-#: src/audacious/ui_main.c:1574
-#, c-format
 msgid "Balance: %d%% right"
-msgstr ""
-
-#: src/audacious/ui_main.c:1916
+msgstr "平衡: %d%% å³"
+
+#: src/audacious/ui_main.c:1879
 msgid "Options Menu"
-msgstr ""
-
-#: src/audacious/ui_main.c:1920
+msgstr "选项èœå•"
+
+#: src/audacious/ui_main.c:1883
 #, fuzzy
 msgid "Disable 'Always On Top'"
-msgstr "永远在上层"
-
-#: src/audacious/ui_main.c:1922
+msgstr "ç¦ç”¨æ°¸è¿œåœ¨ä¸Šå±‚"
+
+#: src/audacious/ui_main.c:1885
 #, fuzzy
 msgid "Enable 'Always On Top'"
-msgstr "永远在上层"
-
-#: src/audacious/ui_main.c:1925
+msgstr "å¯ç”¨æ°¸è¿œåœ¨ä¸Šå±‚"
+
+#: src/audacious/ui_main.c:1888
 msgid "File Info Box"
-msgstr ""
-
-#: src/audacious/ui_main.c:1929
+msgstr "文件信æ¯æ¡†"
+
+#: src/audacious/ui_main.c:1892
 #, fuzzy
 msgid "Disable 'Doublesize'"
-msgstr "两å€æ”¾å¤§"
-
-#: src/audacious/ui_main.c:1931
+msgstr "ç¦ç”¨ä¸¤å€æ”¾å¤§"
+
+#: src/audacious/ui_main.c:1894
 #, fuzzy
 msgid "Enable 'Doublesize'"
-msgstr "两å€æ”¾å¤§"
-
-#: src/audacious/ui_main.c:1934
+msgstr "å¯ç”¨ä¸¤å€æ”¾å¤§"
+
+#: src/audacious/ui_main.c:1897
 #, fuzzy
 msgid "Visualization Menu"
-msgstr "视觉化模å¼"
-
-#: src/audacious/ui_main.c:1982
+msgstr "视觉化èœå•"
+
+#: src/audacious/ui_main.c:1945
 msgid ""
 "<b><big>Couldn't open audio.</big></b>\n"
 "\n"
@@ -1229,13 +1293,32 @@
 "2. No other programs is blocking the soundcard.\n"
 "3. Your soundcard is configured properly.\n"
 msgstr ""
-"<b><big>无法使用音频设备。</big></b>\n"
+"<b><big>无法打开音频。</big></b>\n"
 "请确定:\n"
 "1. 您是å¦é€‰æ‹©äº†æ­£ç¡®çš„输出æ’件。\n"
-"2. 没有其他的程å¼æ­£åœ¨ä½¿ç”¨éŸ³æ•ˆå¡ã€‚\n"
-"3. 您的音效å¡æœ‰æ­£å¸¸é©±åŠ¨ã€‚\n"
-
-#: src/audacious/ui_main.c:2446
+"2. 没有其他的程åºé˜»å¡žäº†å£°å¡ã€‚\n"
+"3. 您声å¡çš„é…置是å¦æ­£ç¡®ã€‚\n"
+
+#: src/audacious/ui_main.c:2025
+#, c-format
+msgid "VOLUME: %d%%"
+msgstr "音é‡ï¼š%d%%"
+
+#: src/audacious/ui_main.c:2028
+#, c-format
+msgid "BALANCE: %d%% LEFT"
+msgstr "平衡:%d%% 左"
+
+#: src/audacious/ui_main.c:2031
+msgid "BALANCE: CENTER"
+msgstr "平衡:中心"
+
+#: src/audacious/ui_main.c:2033
+#, c-format
+msgid "BALANCE: %d%% RIGHT"
+msgstr "平衡:%d%% å³"
+
+#: src/audacious/ui_main.c:2496
 msgid "Error in Audacious."
 msgstr "Audacious 错误"
 
@@ -1261,7 +1344,7 @@
 
 #: src/audacious/ui_manager.c:63 src/audacious/ui_manager.c:64
 msgid "No Playlist Advance"
-msgstr "无预设播放列表"
+msgstr "播放列表ä¸å‰è¿›"
 
 #: src/audacious/ui_manager.c:66 src/audacious/ui_manager.c:67
 msgid "Show Player"
@@ -1269,7 +1352,7 @@
 
 #: src/audacious/ui_manager.c:69 src/audacious/ui_manager.c:70
 msgid "Show Playlist Editor"
-msgstr "显示播放列表"
+msgstr "显示播放列表编辑器"
 
 #: src/audacious/ui_manager.c:72 src/audacious/ui_manager.c:73
 msgid "Show Equalizer"
@@ -1289,7 +1372,7 @@
 
 #: src/audacious/ui_manager.c:84 src/audacious/ui_manager.c:85
 msgid "Roll up Playlist Editor"
-msgstr "å·èµ·æ’­æ”¾åˆ—表"
+msgstr "å·èµ·æ’­æ”¾åˆ—表编辑器"
 
 #: src/audacious/ui_manager.c:87 src/audacious/ui_manager.c:88
 msgid "Roll up Equalizer"
@@ -1301,11 +1384,11 @@
 
 #: src/audacious/ui_manager.c:93 src/audacious/ui_manager.c:94
 msgid "Easy Move"
-msgstr "如æ„移动"
+msgstr "简å•ç§»åŠ¨"
 
 #: src/audacious/ui_manager.c:102
 msgid "Analyzer"
-msgstr "分æžå™¨æ¨¡å¼"
+msgstr "分æžå™¨"
 
 #: src/audacious/ui_manager.c:103
 msgid "Scope"
@@ -1406,7 +1489,7 @@
 
 #: src/audacious/ui_manager.c:170
 msgid "Playback"
-msgstr "回放"
+msgstr "é‡æ”¾"
 
 #: src/audacious/ui_manager.c:172 src/audacious/ui_manager.c:173
 msgid "Play"
@@ -1486,7 +1569,7 @@
 
 #: src/audacious/ui_manager.c:218
 msgid "Loads a playlist file into the selected playlist."
-msgstr "加入一个列表到当å‰åˆ—表"
+msgstr "将一个列表文件加入到当å‰æ’­æ”¾åˆ—表"
 
 #: src/audacious/ui_manager.c:220
 msgid "Save List"
@@ -1498,7 +1581,7 @@
 
 #: src/audacious/ui_manager.c:223
 msgid "Save Default List"
-msgstr "ä¿å­˜ä¸ºé»˜è®¤åˆ—表"
+msgstr "ä¿å­˜é»˜è®¤åˆ—表"
 
 #: src/audacious/ui_manager.c:224
 msgid "Saves the selected playlist to the default location."
@@ -1510,7 +1593,7 @@
 
 #: src/audacious/ui_manager.c:228
 msgid "Refreshes metadata associated with a playlist entry."
-msgstr "刷新媒体è”åˆä¿¡æ¯åˆ°åˆ—表æ¡ç›®ã€‚"
+msgstr "刷新媒体元信æ¯åˆ°åˆ—表æ¡ç›®ã€‚"
 
 #: src/audacious/ui_manager.c:231
 msgid "List Manager"
@@ -1530,7 +1613,7 @@
 
 #: src/audacious/ui_manager.c:243
 msgid "Adds a remote track to the playlist."
-msgstr "添加音轨到列表"
+msgstr "添加远程音轨到列表"
 
 #: src/audacious/ui_manager.c:246
 msgid "Add Files..."
@@ -1542,7 +1625,7 @@
 
 #: src/audacious/ui_manager.c:252
 msgid "Search and Select"
-msgstr "æœç´¢å¹¶ä¸”选定"
+msgstr "æœç´¢å¹¶é€‰æ‹©"
 
 #: src/audacious/ui_manager.c:253
 msgid ""
@@ -1592,12 +1675,12 @@
 
 #: src/audacious/ui_manager.c:278
 msgid "Remove Duplicates"
-msgstr "移除é‡å¤"
+msgstr "移除é‡å¤é¡¹"
 
 #: src/audacious/ui_manager.c:280 src/audacious/ui_manager.c:316
 #: src/audacious/ui_manager.c:346
 msgid "By Title"
-msgstr "基于标题"
+msgstr "æ ¹æ®æ ‡é¢˜"
 
 #: src/audacious/ui_manager.c:281
 msgid "Removes duplicate entries from the playlist by title."
@@ -1606,7 +1689,7 @@
 #: src/audacious/ui_manager.c:284 src/audacious/ui_manager.c:324
 #: src/audacious/ui_manager.c:354
 msgid "By Filename"
-msgstr "基于文件å"
+msgstr "æ ¹æ®æ–‡ä»¶å"
 
 #: src/audacious/ui_manager.c:285
 msgid "Removes duplicate entries from the playlist by filename."
@@ -1615,7 +1698,7 @@
 #: src/audacious/ui_manager.c:288 src/audacious/ui_manager.c:328
 #: src/audacious/ui_manager.c:358
 msgid "By Path + Filename"
-msgstr "按路径+文件å"
+msgstr "æ ¹æ®è·¯å¾„+文件å"
 
 #: src/audacious/ui_manager.c:289
 msgid "Removes duplicate entries from the playlist by their full path."
@@ -1623,7 +1706,7 @@
 
 #: src/audacious/ui_manager.c:292
 msgid "Remove All"
-msgstr "删除全部"
+msgstr "全部删除"
 
 #: src/audacious/ui_manager.c:293
 msgid "Removes all entries from the playlist."
@@ -1639,7 +1722,7 @@
 
 #: src/audacious/ui_manager.c:300
 msgid "Remove Selected"
-msgstr "删除选中"
+msgstr "删除选中的"
 
 #: src/audacious/ui_manager.c:301
 msgid "Remove selected entries from the playlist."
@@ -1711,29 +1794,29 @@
 
 #: src/audacious/ui_manager.c:344
 msgid "Sort Selected"
-msgstr "排åºé€‰æ‹©"
+msgstr "排åºé€‰æ‹©çš„项"
 
 #: src/audacious/ui_manager.c:380
 #, fuzzy
 msgid "File"
-msgstr "ç«ç„°"
+msgstr "文件"
 
 #: src/audacious/ui_manager.c:381
 msgid "Help"
-msgstr ""
+msgstr "帮助"
 
 #: src/audacious/ui_manager.c:383
 #, fuzzy
 msgid "Plugin Services"
-msgstr "æ’件"
+msgstr "æ’件æœåŠ¡"
 
 #: src/audacious/ui_manager.c:385 src/audacious/ui_manager.c:388
 msgid "View Track Details"
-msgstr "查看音轨信æ¯"
+msgstr "查看音轨详细信æ¯"
 
 #: src/audacious/ui_manager.c:386 src/audacious/ui_manager.c:389
 msgid "View track details"
-msgstr "查看音轨信æ¯"
+msgstr "查看音轨详细信æ¯"
 
 #: src/audacious/ui_manager.c:394
 msgid "Play File"
@@ -1753,164 +1836,169 @@
 
 #: src/audacious/ui_manager.c:400
 #, fuzzy
-msgid "Plugin services"
-msgstr "æ’件"
-
-#: src/audacious/ui_manager.c:402
+msgid "Last.fm radio"
+msgstr "Last.fm 广播"
+
+#: src/audacious/ui_manager.c:401
+#, fuzzy
+msgid "Play Last.fm radio"
+msgstr "Last.fm 广播"
+
+#: src/audacious/ui_manager.c:405
 msgid "Preferences"
 msgstr "首选项"
 
-#: src/audacious/ui_manager.c:403
-msgid "Open preferences window"
-msgstr "打开首选项窗å£"
-
-#: src/audacious/ui_manager.c:405
-msgid "_Quit"
-msgstr "退出(_Q)"
-
 #: src/audacious/ui_manager.c:406
+msgid "Open preferences window"
+msgstr "打开首选项窗å£"
+
+#: src/audacious/ui_manager.c:408
+msgid "_Quit"
+msgstr "退出(_Q)"
+
+#: src/audacious/ui_manager.c:409
 msgid "Quit Audacious"
 msgstr "退出 Audacious"
 
-#: src/audacious/ui_manager.c:408 src/audacious/ui_manager.c:409
-msgid "Set A-B"
-msgstr "设置 A-B"
-
 #: src/audacious/ui_manager.c:411 src/audacious/ui_manager.c:412
-msgid "Clear A-B"
-msgstr "清除 A-B"
+msgid "Set A-B"
+msgstr "设置 A-B"
 
 #: src/audacious/ui_manager.c:414 src/audacious/ui_manager.c:415
-msgid "Jump to Playlist Start"
-msgstr "跳到列表最å‰"
+msgid "Clear A-B"
+msgstr "清除 A-B"
 
 #: src/audacious/ui_manager.c:417 src/audacious/ui_manager.c:418
+msgid "Jump to Playlist Start"
+msgstr "跳到列表开始处"
+
+#: src/audacious/ui_manager.c:420 src/audacious/ui_manager.c:421
 msgid "Jump to File"
 msgstr "跳到文件"
 
-#: src/audacious/ui_manager.c:423
+#: src/audacious/ui_manager.c:426
 msgid "Queue Toggle"
 msgstr "队列切æ¢"
 
-#: src/audacious/ui_manager.c:424
+#: src/audacious/ui_manager.c:427
 msgid "Enables/disables the entry in the playlist's queue."
 msgstr "打开/关闭列表队列项目"
 
-#: src/audacious/ui_manager.c:431
+#: src/audacious/ui_manager.c:434
 msgid "Load"
 msgstr "装入"
 
-#: src/audacious/ui_manager.c:432
+#: src/audacious/ui_manager.c:435
 msgid "Import"
 msgstr "导入"
 
-#: src/audacious/ui_manager.c:433
+#: src/audacious/ui_manager.c:436
 msgid "Save"
 msgstr "ä¿å­˜"
 
-#: src/audacious/ui_manager.c:434
+#: src/audacious/ui_manager.c:437
 msgid "Delete"
 msgstr "删除"
 
-#: src/audacious/ui_manager.c:436 src/audacious/ui_manager.c:457
-#: src/audacious/ui_manager.c:472
-msgid "Preset"
-msgstr "å‡è¡¡è®¾ç½®"
-
-#: src/audacious/ui_manager.c:437
-msgid "Load preset"
-msgstr "读å–å‡è¡¡è®¾ç½®"
-
 #: src/audacious/ui_manager.c:439 src/audacious/ui_manager.c:460
 #: src/audacious/ui_manager.c:475
-msgid "Auto-load preset"
-msgstr "自动装入å‡è¡¡è®¾ç½®"
+msgid "Preset"
+msgstr "å‡è¡¡è®¾ç½®"
 
 #: src/audacious/ui_manager.c:440
-msgid "Load auto-load preset"
-msgstr "读å–自动装入å‡è¡¡è®¾ç½®"
+msgid "Load preset"
+msgstr "读å–å‡è¡¡è®¾ç½®"
 
 #: src/audacious/ui_manager.c:442 src/audacious/ui_manager.c:463
-msgid "Default"
-msgstr "默认"
+#: src/audacious/ui_manager.c:478
+msgid "Auto-load preset"
+msgstr "自动载入å‡è¡¡è®¾ç½®"
 
 #: src/audacious/ui_manager.c:443
-msgid "Load default preset into equalizer"
-msgstr "读å–默认å‡è¡¡è®¾ç½®åˆ°å‡è¡¡å™¨"
-
-#: src/audacious/ui_manager.c:445
-msgid "Zero"
-msgstr "无增益调节"
+msgid "Load auto-load preset"
+msgstr "载入自动装载的å‡è¡¡è®¾ç½®"
+
+#: src/audacious/ui_manager.c:445 src/audacious/ui_manager.c:466
+msgid "Default"
+msgstr "默认"
 
 #: src/audacious/ui_manager.c:446
-msgid "Set equalizer preset levels to zero"
-msgstr "设置å‡è¡¡å™¨å‡è¡¡è®¾ç½®ä¸ºæ— å¢žç›Šè°ƒèŠ‚"
+msgid "Load default preset into equalizer"
+msgstr "读å–默认å‡è¡¡è®¾ç½®åˆ°å‡è¡¡å™¨"
 
 #: src/audacious/ui_manager.c:448
+msgid "Zero"
+msgstr "无增益调节"
+
+#: src/audacious/ui_manager.c:449
+msgid "Set equalizer preset levels to zero"
+msgstr "设置å‡è¡¡å™¨å‡è¡¡è®¾ç½®ä¸ºæ— å¢žç›Šè°ƒèŠ‚"
+
+#: src/audacious/ui_manager.c:451
 msgid "From file"
 msgstr "从文件"
 
-#: src/audacious/ui_manager.c:449
+#: src/audacious/ui_manager.c:452
 msgid "Load preset from file"
 msgstr "从文件读å–å‡è¡¡è®¾ç½®"
 
-#: src/audacious/ui_manager.c:451
+#: src/audacious/ui_manager.c:454
 msgid "From WinAMP EQF file"
 msgstr "从 WinAMP EQF 文件"
 
-#: src/audacious/ui_manager.c:452
-msgid "Load preset from WinAMP EQF file"
-msgstr "从 WinAMP EQF 文件读å–å‡è¡¡è®¾ç½®"
-
-#: src/audacious/ui_manager.c:454
-msgid "WinAMP Presets"
-msgstr "WinAMP å‡è¡¡è®¾ç½®"
-
 #: src/audacious/ui_manager.c:455
-msgid "Import WinAMP presets"
-msgstr "导入 WinAMP 预设å‡è¡¡è®¾ç½®"
+msgid "Load preset from WinAMP EQF file"
+msgstr "从 WinAMP EQF 文件读å–å‡è¡¡è®¾ç½®"
+
+#: src/audacious/ui_manager.c:457
+msgid "WinAMP Presets"
+msgstr "WinAMP å‡è¡¡è®¾ç½®"
 
 #: src/audacious/ui_manager.c:458
+msgid "Import WinAMP presets"
+msgstr "导入 WinAMP 预设å‡è¡¡è®¾ç½®"
+
+#: src/audacious/ui_manager.c:461
 msgid "Save preset"
 msgstr "ä¿å­˜å‡è¡¡è®¾ç½®"
 
-#: src/audacious/ui_manager.c:461
+#: src/audacious/ui_manager.c:464
 msgid "Save auto-load preset"
 msgstr "ä¿å­˜è‡ªåŠ¨è¯»å–å‡è¡¡è®¾ç½®"
 
-#: src/audacious/ui_manager.c:464
+#: src/audacious/ui_manager.c:467
 msgid "Save default preset"
 msgstr "ä¿å­˜é»˜è®¤å‡è¡¡è®¾ç½®"
 
-#: src/audacious/ui_manager.c:466
+#: src/audacious/ui_manager.c:469
 msgid "To file"
 msgstr "到文件"
 
-#: src/audacious/ui_manager.c:467
+#: src/audacious/ui_manager.c:470
 msgid "Save preset to file"
 msgstr "ä¿å­˜å‡è¡¡è®¾ç½®åˆ°æ–‡ä»¶"
 
-#: src/audacious/ui_manager.c:469
+#: src/audacious/ui_manager.c:472
 msgid "To WinAMP EQF file"
 msgstr "到 WinAMP EQF 文件"
 
-#: src/audacious/ui_manager.c:470
+#: src/audacious/ui_manager.c:473
 msgid "Save preset to WinAMP EQF file"
 msgstr "ä¿å­˜å‡è¡¡è®¾ç½®åˆ° WinAMP EQF 文件"
 
-#: src/audacious/ui_manager.c:473
+#: src/audacious/ui_manager.c:476
 msgid "Delete preset"
 msgstr "删除å‡è¡¡è®¾ç½®"
 
-#: src/audacious/ui_manager.c:476
+#: src/audacious/ui_manager.c:479
 msgid "Delete auto-load preset"
 msgstr "删除自动读å–å‡è¡¡è®¾ç½®"
 
-#: src/audacious/ui_playlist.c:477
+#: src/audacious/ui_playlist.c:476
 msgid "Search entries in active playlist"
 msgstr "在当å‰åˆ—表中æœç´¢æ¡ç›®"
 
-#: src/audacious/ui_playlist.c:485
+#: src/audacious/ui_playlist.c:484
 msgid ""
 "Select entries in playlist by filling one or more fields. Fields use regular "
 "expressions syntax, case-insensitive. If you don't know how regular "
@@ -1920,47 +2008,47 @@
 "填写一个或多个域æ¥åœ¨åˆ—表中选择项目。 域中å¯ä»¥ä½¿ç”¨æ­£è§„表达å¼ã€‚如果你ä¸çŸ¥é“如何"
 "使用正规表达å¼ã€‚åªè¦è¾“入你想æœç´¢çš„文字一部分就å¯ä»¥äº†ã€‚"
 
-#: src/audacious/ui_playlist.c:493
+#: src/audacious/ui_playlist.c:492
 #, fuzzy
 msgid "Title: "
 msgstr "标题"
 
-#: src/audacious/ui_playlist.c:500
+#: src/audacious/ui_playlist.c:499
 #, fuzzy
 msgid "Album: "
 msgstr "专辑"
 
-#: src/audacious/ui_playlist.c:507
+#: src/audacious/ui_playlist.c:506
 msgid "Artist: "
 msgstr "艺术家:"
 
-#: src/audacious/ui_playlist.c:514
+#: src/audacious/ui_playlist.c:513
 msgid "Filename: "
 msgstr "文件å:"
 
-#: src/audacious/ui_playlist.c:522
+#: src/audacious/ui_playlist.c:521
 msgid "Clear previous selection before searching"
 msgstr "在æœç´¢å‰æ¸…除以å‰çš„选择"
 
-#: src/audacious/ui_playlist.c:525
+#: src/audacious/ui_playlist.c:524
 msgid "Automatically toggle queue for matching entries"
 msgstr "æœç´¢ç»“果自动排åº"
 
-#: src/audacious/ui_playlist.c:528
+#: src/audacious/ui_playlist.c:527
 msgid "Create a new playlist with matching entries"
 msgstr "å°†æœç´¢ç»“果建立为新的播放列表"
 
-#: src/audacious/ui_playlist.c:748
+#: src/audacious/ui_playlist.c:747
 #, c-format
 msgid "Error writing playlist \"%s\": %s"
 msgstr "写入播放列表“%sâ€ï¼š%s 出错"
 
-#: src/audacious/ui_playlist.c:770
+#: src/audacious/ui_playlist.c:769
 #, c-format
 msgid "%s already exist. Continue?"
 msgstr "%s å·²ç»å­˜åœ¨ã€‚继续å—?"
 
-#: src/audacious/ui_playlist.c:785
+#: src/audacious/ui_playlist.c:784
 #, c-format
 msgid ""
 "<b><big>Unable to save playlist.</big></b>\n"
@@ -1970,89 +2058,82 @@
 "<b><big>无法ä¿å­˜æ’­æ”¾åˆ—表ï¼</big></b>\n"
 "未知文件类型 %s\n"
 
-#: src/audacious/ui_playlist.c:911
+#: src/audacious/ui_playlist.c:907
 #, fuzzy
 msgid "Save as Static Playlist"
-msgstr "ä¿å­˜æ’­æ”¾åˆ—表"
-
-#: src/audacious/ui_playlist.c:918
+msgstr "ä¿å­˜ä¸ºé™æ€æ’­æ”¾åˆ—表"
+
+#: src/audacious/ui_playlist.c:914
 msgid "Use Relative Path"
-msgstr ""
-
-#: src/audacious/ui_playlist.c:940
+msgstr "使用相对路径"
+
+#: src/audacious/ui_playlist.c:936
 msgid "Load Playlist"
-msgstr "装入播放列表"
-
-#: src/audacious/ui_playlist.c:953
+msgstr "载入播放列表"
+
+#: src/audacious/ui_playlist.c:949
 msgid "Save Playlist"
 msgstr "ä¿å­˜æ’­æ”¾åˆ—表"
 
-#: src/audacious/ui_playlist.c:1508
+#: src/audacious/ui_playlist.c:1500
 msgid "Audacious Playlist Editor"
 msgstr "Audacious 播放列表编辑器"
 
-#: src/audacious/ui_playlist_manager.c:363
+#: src/audacious/ui_playlist_manager.c:255
 msgid "Playlist Manager"
 msgstr "列表管ç†å™¨"
 
-#: src/audacious/ui_playlist_manager.c:409
+#: src/audacious/ui_playlist_manager.c:294
 msgid "Entries"
 msgstr "æ¡ç›®"
 
-#: src/audacious/ui_playlist_manager.c:424
+#: src/audacious/ui_playlist_manager.c:306
 msgid "_Rename"
-msgstr "文件å(_R)"
+msgstr "é‡å‘½å(_R)"
+
+#: src/audacious/ui_preferences.c:111
+msgid "Audio"
+msgstr "音频"
 
 #: src/audacious/ui_preferences.c:112
-msgid "Audio"
-msgstr "音频"
-
-#: src/audacious/ui_preferences.c:113
 msgid "Connectivity"
 msgstr "连接"
 
-#: src/audacious/ui_preferences.c:126
+#: src/audacious/ui_preferences.c:125
 msgid "Tracknumber"
 msgstr "音轨编å·"
 
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:128
 msgid "Filepath"
 msgstr "文件路径"
 
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:129
 msgid "Date"
 msgstr "日期"
 
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:131
 msgid "Comment"
 msgstr "备注"
 
-#: src/audacious/ui_preferences.c:133
-msgid "Codec"
-msgstr ""
-
-#: src/audacious/ui_preferences.c:134
-#, fuzzy
-msgid "Quality"
-msgstr "退出(_Q)"
-
-#: src/audacious/ui_preferences.c:155
+#: src/audacious/ui_preferences.c:152
 msgid "localhost"
-msgstr "本地 (localhost)"
-
-#: src/audacious/ui_preferences.c:390
+msgstr "本地主机 (localhost)"
+
+#: src/audacious/ui_preferences.c:396 src/audacious/ui_preferences.c:483
+#: src/audacious/ui_preferences.c:572 src/audacious/ui_preferences.c:668
 msgid "Enabled"
 msgstr "å¯ç”¨"
 
-#: src/audacious/ui_preferences.c:406
+#: src/audacious/ui_preferences.c:412 src/audacious/ui_preferences.c:499
+#: src/audacious/ui_preferences.c:588 src/audacious/ui_preferences.c:684
 msgid "Description"
 msgstr "æè¿°"
 
-#: src/audacious/ui_preferences.c:1395
+#: src/audacious/ui_preferences.c:1684
 msgid "Category"
-msgstr "项目"
-
-#: src/audacious/ui_preferences.c:1963
+msgstr "ç§ç±»"
+
+#: src/audacious/ui_preferences.c:2231
 msgid "Preferences Window"
 msgstr "首选项窗å£"
 
@@ -2112,61 +2193,6 @@
 msgid "Add/Open URL Dialog"
 msgstr "打开/添加 URL 对è¯æ¡†"
 
-#~ msgid "Show window manager decorations"
-#~ msgstr "显示窗å£ç®¡ç†å™¨è£…饰"
-
-#, fuzzy
-#~ msgid "<b>Artist:</b> %s"
-#~ msgstr "<i>艺术家</i>"
-
-#, fuzzy
-#~ msgid "<b>Title:</b> %s"
-#~ msgstr "<i>标题</i>"
-
-#, fuzzy
-#~ msgid "<b>Album:</b> %s"
-#~ msgstr "<i>唱片</i>"
-
-#, fuzzy
-#~ msgid "Audacious last.fm radio tuner"
-#~ msgstr "Audacious 播放列表编辑器"
-
-#, fuzzy
-#~ msgid "Station:"
-#~ msgstr "æ„大利语:"
-
-#, fuzzy
-#~ msgid "<b>Artist:</b>"
-#~ msgstr "<i>艺术家</i>"
-
-#, fuzzy
-#~ msgid "<b>Title:</b>"
-#~ msgstr "<i>标题</i>"
-
-#, fuzzy
-#~ msgid "<b>Album:</b>"
-#~ msgstr "<i>唱片</i>"
-
-#~ msgid "VOLUME: %d%%"
-#~ msgstr "音é‡ï¼š%d%%"
-
-#~ msgid "BALANCE: %d%% LEFT"
-#~ msgstr "平衡:%d%% 左"
-
-#~ msgid "BALANCE: CENTER"
-#~ msgstr "平衡:中心"
-
-#~ msgid "BALANCE: %d%% RIGHT"
-#~ msgstr "平衡:%d%% å³"
-
-#, fuzzy
-#~ msgid "Last.fm radio"
-#~ msgstr "播放ä½ç½®"
-
-#, fuzzy
-#~ msgid "Play Last.fm radio"
-#~ msgstr "播放ä½ç½®"
-
 #~ msgid "Converter Type:"
 #~ msgstr "转æ¢å™¨ç±»åž‹ï¼š"
 
--- a/po/zh_TW.po	Wed Oct 24 10:41:53 2007 +0300
+++ b/po/zh_TW.po	Fri Nov 16 05:36:42 2007 +0200
@@ -518,6 +518,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr "å–樣率:"
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
 msgstr ""
--- a/src/audacious/Makefile	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/Makefile	Fri Nov 16 05:36:42 2007 +0200
@@ -25,7 +25,6 @@
        input.c				\
        logger.c				\
        main.c				\
-       memorypool.c			\
        mime.c				\
        output.c				\
        pixbuf_effects.c			\
--- a/src/audacious/dbus-service.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/dbus-service.h	Fri Nov 16 05:36:42 2007 +0200
@@ -111,8 +111,7 @@
 
 /* Legacy API */
 // Audacious General Information
-gboolean audacious_rc_version(RemoteObject *obj, gchar **version,
-                              GError **error);
+gboolean audacious_rc_version(RemoteObject *obj, gchar **version, GError **error);
 gboolean audacious_rc_quit(RemoteObject *obj, GError **error);
 gboolean audacious_rc_eject(RemoteObject *obj, GError **error);
 gboolean audacious_rc_main_win_visible(RemoteObject *obj,
@@ -183,4 +182,36 @@
 gboolean audacious_rc_shuffle(RemoteObject *obj, gboolean *is_shuffle,
                               GError **error);
 gboolean audacious_rc_toggle_shuffle(RemoteObject *obj, GError **error);
+
+/* new */
+gboolean audacious_rc_show_prefs_box(RemoteObject *obj, gboolean show, GError **error);
+gboolean audacious_rc_show_about_box(RemoteObject *obj, gboolean show, GError **error);
+gboolean audacious_rc_show_jtf_box(RemoteObject *obj, gboolean show, GError **error);
+gboolean audacious_rc_show_filebrowser(RemoteObject *obj, gboolean show, GError **error); //new Nov 8
+gboolean audacious_rc_play_pause(RemoteObject *obj, GError **error);
+gboolean audacious_rc_activate(RemoteObject *obj, GError **error);
+gboolean audacious_rc_queue_get_list_pos(RemoteObject *obj, gint qpos, gint *pos, GError **error);
+gboolean audacious_rc_queue_get_queue_pos(RemoteObject *obj, gint pos, gint *qpos, GError **error);
+gboolean audacious_rc_get_skin(RemoteObject *obj, gchar **skin, GError **error);
+gboolean audacious_rc_set_skin(RemoteObject *obj, gchar *skin, GError **error);
+gboolean audacious_rc_get_info(RemoteObject *obj, gint *rate, gint *freq, gint *nch, GError **error);
+gboolean audacious_rc_toggle_aot(RemoteObject *obj, gboolean ontop, GError **error);
+gboolean audacious_rc_get_playqueue_length(RemoteObject *obj, gint *length, GError **error);
+gboolean audacious_rc_playqueue_add(RemoteObject *obj, gint pos, GError **error);
+gboolean audacious_rc_playqueue_remove(RemoteObject *obj, gint pos, GError **error);
+gboolean audacious_rc_playqueue_clear(RemoteObject *obj, GError **error);
+gboolean audacious_rc_playqueue_is_queued(RemoteObject *obj, gint pos, gboolean *is_queued, GError **error);
+gboolean audacious_rc_playlist_ins_url_string(RemoteObject *obj, gchar *url, gint pos, GError **error);
+gboolean audacious_rc_playlist_enqueue_to_temp(RemoteObject *obj, gchar *url, GError **error);
+gboolean audacious_rc_playlist_add(RemoteObject *obj, gpointer list, GError **error);
+
+/* new on nov 7 */
+gboolean audacious_rc_get_eq(RemoteObject *obj, gdouble *preamp, GArray **bands, GError **error);
+gboolean audacious_rc_get_eq_preamp(RemoteObject *obj, gdouble *preamp, GError **error);
+gboolean audacious_rc_get_eq_band(RemoteObject *obj, gint band, gdouble *value, GError **error);
+gboolean audacious_rc_set_eq(RemoteObject *obj, gdouble preamp, GArray *bands, GError **error);
+gboolean audacious_rc_set_eq_preamp(RemoteObject *obj, gdouble preamp, GError **error);
+gboolean audacious_rc_set_eq_band(RemoteObject *obj, gint band, gdouble value, GError **error);
+gboolean audacious_rc_equalizer_activate(RemoteObject *obj, gboolean active, GError **error);
+
 #endif // !_DBUS_SERVICE_H
--- a/src/audacious/dbus.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/dbus.c	Fri Nov 16 05:36:42 2007 +0200
@@ -23,7 +23,10 @@
 #endif
 
 #include <glib.h>
+#include <dbus/dbus.h>
+#include <dbus/dbus-glib.h>
 #include <dbus/dbus-glib-bindings.h>
+#include <dbus/dbus-glib-lowlevel.h>
 #include "dbus.h"
 #include "dbus-service.h"
 #include "dbus-server-bindings.h"
@@ -37,10 +40,12 @@
 #include "playlist.h"
 #include "ui_playlist.h"
 #include "ui_preferences.h"
-#include "memorypool.h"
 #include "tuple.h"
 #include "ui_jumptotrack.h"
 #include "strings.h"
+#include "ui_credits.h"
+#include "skin.h"
+#include "ui_fileopener.h"
 
 static DBusGConnection *dbus_conn = NULL;
 static guint signals[LAST_SIG] = { 0 };
@@ -159,6 +164,7 @@
 
 void init_dbus() {
     GError *error = NULL;
+    DBusConnection *local_conn;
     // Initialize the DBus connection
     dbus_conn = dbus_g_bus_get(DBUS_BUS_SESSION, &error);
     if (dbus_conn == NULL) {
@@ -173,6 +179,9 @@
     mpris = g_object_new(mpris_player_get_type(), NULL);
     g_object_new(mpris_tracklist_get_type(), NULL);
     g_message("D-Bus support has been activated");
+
+    local_conn = dbus_g_connection_get_connection(dbus_conn);
+    dbus_connection_set_exit_on_disconnect(local_conn, FALSE);
 }
 
 GValue *tuple_value_to_gvalue(Tuple *tuple, const gchar *key) {
@@ -484,8 +493,7 @@
 }
 
 // Audacious General Information
-gboolean audacious_rc_version(RemoteObject *obj, gchar **version,
-                              GError **error) {
+gboolean audacious_rc_version(RemoteObject *obj, gchar **version, GError **error) {
     *version = g_strdup(VERSION);
     return TRUE;
 }
@@ -792,6 +800,229 @@
     return TRUE;
 }
 
+/* New on Oct 5 */
+gboolean audacious_rc_show_prefs_box(RemoteObject *obj, gboolean show, GError **error) {
+    if (has_x11_connection) {
+        if (show)
+            show_prefs_window();
+        else
+            hide_prefs_window();
+    }
+    return TRUE;
+}
+gboolean audacious_rc_show_about_box(RemoteObject *obj, gboolean show, GError **error) {
+    if (has_x11_connection) {
+        if (show)
+            show_about_window();
+        else
+            hide_about_window();
+    }
+    return TRUE;
+}
+
+gboolean audacious_rc_show_jtf_box(RemoteObject *obj, gboolean show, GError **error) {
+    if (has_x11_connection) {
+        if (show)
+            ui_jump_to_track();
+        else
+            ui_jump_to_track_hide();
+    }
+    return TRUE;
+}
+
+gboolean audacious_rc_show_filebrowser(RemoteObject *obj, gboolean show, GError **error)
+{
+    if (has_x11_connection) {
+        if (show)
+            run_filebrowser(FALSE);
+        else
+            hide_filebrowser();
+    }
+    return TRUE;
+}
+
+gboolean audacious_rc_play_pause(RemoteObject *obj, GError **error) {
+    if (playback_get_playing())
+        playback_pause();
+    else
+        playback_initiate();
+    return TRUE;
+}
+
+gboolean audacious_rc_activate(RemoteObject *obj, GError **error) {
+    gtk_window_present(GTK_WINDOW(mainwin));
+    return TRUE;
+}
+
+gboolean audacious_rc_get_skin(RemoteObject *obj, gchar **skin, GError **error) {
+    *skin = g_strdup(bmp_active_skin->path);
+    return TRUE;
+}
+
+gboolean audacious_rc_set_skin(RemoteObject *obj, gchar *skin, GError **error) {
+    if (has_x11_connection == TRUE)
+        bmp_active_skin_load(skin);
+    return TRUE;
+}
+
+gboolean audacious_rc_get_info(RemoteObject *obj, gint *rate, gint *freq, gint *nch, GError **error) {
+    playback_get_sample_params(rate, freq, nch);
+    return TRUE;
+}
+
+gboolean audacious_rc_toggle_aot(RemoteObject *obj, gboolean ontop, GError **error) {
+    if (has_x11_connection) {
+        mainwin_set_always_on_top(ontop);
+    }
+    return TRUE;
+}
+
+/* New on Oct 9: Queue */
+gboolean audacious_rc_playqueue_add(RemoteObject *obj, gint pos, GError **error) {
+    if (pos < (guint)playlist_get_length(playlist_get_active()))
+        playlist_queue_position(playlist_get_active(), pos);
+    return TRUE;
+}
+
+gboolean audacious_rc_playqueue_remove(RemoteObject *obj, gint pos, GError **error) {
+    if (pos < (guint)playlist_get_length(playlist_get_active()))
+        playlist_queue_remove(playlist_get_active(), pos);
+    return TRUE;
+}
+
+gboolean audacious_rc_playqueue_clear(RemoteObject *obj, GError **error) {
+    playlist_clear_queue(playlist_get_active());
+    return TRUE;
+}
+
+gboolean audacious_rc_get_playqueue_length(RemoteObject *obj, gint *length, GError **error) {
+    *length = playlist_queue_get_length(playlist_get_active());
+    return TRUE;
+}
+
+gboolean audacious_rc_queue_get_list_pos(RemoteObject *obj, gint qpos, gint *pos, GError **error) {
+    if (playback_get_playing())
+        *pos = playlist_get_queue_qposition_number(playlist_get_active(), qpos);
+
+    return TRUE;
+}
+
+gboolean audacious_rc_queue_get_queue_pos(RemoteObject *obj, gint pos, gint *qpos, GError **error) {
+    if (playback_get_playing())
+        *qpos = playlist_get_queue_position_number(playlist_get_active(), pos);
+
+    return TRUE;
+}
+
+gboolean audacious_rc_playqueue_is_queued(RemoteObject *obj, gint pos, gboolean *is_queued, GError **error) {
+    *is_queued = playlist_is_position_queued(playlist_get_active(), pos);
+    return TRUE;
+}
+
+gboolean audacious_rc_playlist_ins_url_string(RemoteObject *obj, gchar *url, gint pos, GError **error) {
+    if (pos >= 0 && url && strlen(url)) {
+        playlist_ins_url(playlist_get_active(), url, pos);
+    }
+    return TRUE;
+}
+
+static void call_playlist_add_url(GList *list, gpointer *data) {
+        playlist_add_url(playlist_get_active(), list->data);
+}
+
+gboolean audacious_rc_playlist_add(RemoteObject *obj, gpointer list, GError **error) {
+    g_list_foreach((GList *)list, (GFunc)call_playlist_add_url, NULL);
+    return TRUE;
+}
+
+gboolean audacious_rc_playlist_enqueue_to_temp(RemoteObject *obj, gchar *url, GError **error) {
+    GList *playlists = NULL;
+    Playlist *new_pl = playlist_new();
+    gchar *pl_name = NULL;
+
+    pl_name = (gchar*)playlist_get_current_name(new_pl);
+    if(!pl_name)
+        pl_name = g_strdup("New Playlist");
+    playlist_set_current_name(new_pl, pl_name);
+    g_free(pl_name);
+
+    playlists = playlist_get_playlists();
+    playlist_add_playlist(new_pl);
+
+//    DISABLE_MANAGER_UPDATE();
+    playlist_select_playlist(new_pl);
+//    ENABLE_MANAGER_UPDATE();
+
+    playlist_add_url(new_pl, url);
+
+    return TRUE;
+}
+
+/* New on Nov 7: Equalizer */ 
+gboolean audacious_rc_get_eq(RemoteObject *obj, gdouble *preamp, GArray **bands, GError **error)
+{
+    int i;
+
+    *preamp = (gdouble)equalizerwin_get_preamp();
+    *bands = g_array_sized_new(FALSE, FALSE, sizeof(gdouble), 10);
+
+    for(i=0; i<10; i++){
+        gdouble val = (gdouble)equalizerwin_get_band(i);
+        g_array_append_val(*bands, val);
+    }
+
+    return TRUE;
+}
+
+gboolean audacious_rc_get_eq_preamp(RemoteObject *obj, gdouble *preamp, GError **error)
+{
+    *preamp = (gdouble)equalizerwin_get_preamp();
+    return TRUE;
+}
+
+gboolean audacious_rc_get_eq_band(RemoteObject *obj, gint band, gdouble *value, GError **error)
+{
+    *value = (gdouble)equalizerwin_get_band(band);
+    return TRUE;
+}
+
+gboolean audacious_rc_set_eq(RemoteObject *obj, gdouble preamp, GArray *bands, GError **error)
+{
+    gdouble element;
+    int i;
+    
+    equalizerwin_set_preamp((gfloat)preamp);
+
+    for (i = 0; i < 10; i++) {
+        element = g_array_index(bands, gdouble, i);
+        equalizerwin_set_band(i, (gfloat)element);
+    }
+    equalizerwin_eq_changed();
+
+    return TRUE;
+}
+
+gboolean audacious_rc_set_eq_preamp(RemoteObject *obj, gdouble preamp, GError **error)
+{
+    equalizerwin_set_preamp((gfloat)preamp);
+    equalizerwin_eq_changed();
+    return TRUE;
+}
+
+gboolean audacious_rc_set_eq_band(RemoteObject *obj, gint band, gdouble value, GError **error)
+{
+    equalizerwin_set_band(band, (gfloat)value);
+    equalizerwin_eq_changed();
+    return TRUE;
+}
+
+gboolean audacious_rc_equalizer_activate(RemoteObject *obj, gboolean active, GError **error)
+{
+    equalizer_activate(active);
+    return TRUE;
+}
+
+
 DBusGProxy *audacious_get_dbus_proxy(void)
 {
     DBusGConnection *connection = NULL;
--- a/src/audacious/glade/prefswin.glade	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/glade/prefswin.glade	Fri Nov 16 05:36:42 2007 +0200
@@ -4698,7 +4698,6 @@
 
 	      <child>
 		<widget class="GtkButton" id="reload_plugins">
-		  <property name="visible">True</property>
 		  <property name="can_default">True</property>
 		  <property name="can_focus">True</property>
 		  <property name="relief">GTK_RELIEF_NORMAL</property>
--- a/src/audacious/main.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/main.c	Fri Nov 16 05:36:42 2007 +0200
@@ -1081,6 +1081,13 @@
     {NULL},
 };
 
+static gboolean
+aud_start_playback(gpointer unused)
+{
+    drct_play();
+    return FALSE;
+}
+
 static void
 handle_cmd_line_options(BmpCmdLineOpt * options,
                         gboolean remote)
@@ -1088,6 +1095,9 @@
     gchar **filenames = options->filenames;
 #ifdef USE_DBUS
     DBusGProxy *session = audacious_get_dbus_proxy();
+    gboolean is_running = audacious_remote_is_running(session);
+#else
+    gboolean is_running = FALSE;
 #endif
 
     if (options->version)
@@ -1097,65 +1107,74 @@
     }
 
 #ifdef USE_DBUS
-    if (filenames != NULL)
+    if (is_running)
     {
-        gint pos = 0;
-        gint i = 0;
-        GList *fns = NULL;
-
-        for (i = 0; filenames[i] != NULL; i++)
+        if (filenames != NULL)
         {
-            gchar *filename;
-            gchar *current_dir = g_get_current_dir();
+            gint pos = 0;
+            gint i = 0;
+            GList *fns = NULL;
 
-            if (filenames[i][0] == '/' || strstr(filenames[i], "://"))
-                filename = g_strdup(filenames[i]);
-            else
-                filename = g_build_filename(current_dir, filenames[i], NULL);
-
-            fns = g_list_prepend(fns, filename);
+            for (i = 0; filenames[i] != NULL; i++)
+            {
+                gchar *filename;
+                gchar *current_dir = g_get_current_dir();
 
-            g_free(current_dir);
-        }
-
-        fns = g_list_reverse(fns);
+		if (!strstr(filenames[i], "://"))
+		{
+                    if (filenames[i][0] == '/')
+   	               filename = g_strdup_printf("file:///%s", filenames[i]);
+                    else
+	               filename = g_strdup_printf("file:///%s/%s", current_dir, filenames[i]);
+		}
+                else
+                    filename = g_strdup(filenames[i]);
 
-        if (options->load_skins)
-        {
-            audacious_remote_set_skin(session, filenames[0]);
-            skin_install_skin(filenames[0]);
-        }
-        else
-        {
-            if (options->enqueue_to_temp)
-                audacious_remote_playlist_enqueue_to_temp(session, filenames[0]);
+                fns = g_list_prepend(fns, filename);
 
-            if (options->enqueue && options->play)
-                pos = audacious_remote_get_playlist_length(session);
-
-            if (!options->enqueue)
-            {
-                audacious_remote_playlist_clear(session);
-                audacious_remote_stop(session);
+                g_free(current_dir);
             }
 
-            audacious_remote_playlist_add(session, fns);
+            fns = g_list_reverse(fns);
 
-            if (options->enqueue && options->play &&
-                audacious_remote_get_playlist_length(session) > pos)
-                audacious_remote_set_playlist_pos(session, pos);
+            if (options->load_skins)
+            {
+                audacious_remote_set_skin(session, filenames[0]);
+                skin_install_skin(filenames[0]);
+            }
+            else
+            {
+                GList *i;
+
+                if (options->enqueue_to_temp)
+                    audacious_remote_playlist_enqueue_to_temp(session, filenames[0]);
+
+                if (options->enqueue && options->play)
+                    pos = audacious_remote_get_playlist_length(session);
 
-            if (!options->enqueue)
-                audacious_remote_play(session);
-        }
+                if (!options->enqueue)
+                {
+                    audacious_remote_playlist_clear(session);
+                    audacious_remote_stop(session);
+                }
+
+                for (i = fns; i != NULL; i = i->next)
+                    audacious_remote_playlist_add_url_string(session, i->data);
 
-        g_list_foreach(fns, (GFunc) g_free, NULL);
-        g_list_free(fns);
+                if (options->enqueue && options->play &&
+                    audacious_remote_get_playlist_length(session) > pos)
+                    audacious_remote_set_playlist_pos(session, pos);
 
-        g_strfreev(filenames);
-    } /* filename */
+                if (!options->enqueue)
+                    audacious_remote_play(session);
+            }
 
-    if (remote) {
+            g_list_foreach(fns, (GFunc) g_free, NULL);
+            g_list_free(fns);
+
+            g_strfreev(filenames);
+        } /* filename */
+
         if (options->rew)
             audacious_remote_playlist_prev(session);
 
@@ -1182,7 +1201,69 @@
 
         if (options->activate)
             audacious_remote_activate(session);
-    } else {
+
+        exit(EXIT_SUCCESS);
+    }
+    else
+#endif
+    {
+        if (filenames != NULL)
+        {
+            gint pos = 0;
+            gint i = 0;
+            GList *fns = NULL;
+
+            for (i = 0; filenames[i] != NULL; i++)
+            {
+                gchar *filename;
+                gchar *current_dir = g_get_current_dir();
+
+		if (!strstr(filenames[i], "://"))
+		{
+                    if (filenames[i][0] == '/')
+   	               filename = g_strdup_printf("file:///%s", filenames[i]);
+                    else
+	               filename = g_strdup_printf("file:///%s/%s", current_dir, filenames[i]);
+		}
+                else
+                    filename = g_strdup(filenames[i]);
+
+                fns = g_list_prepend(fns, filename);
+
+                g_free(current_dir);
+            }
+
+            fns = g_list_reverse(fns);
+
+            {
+                if (options->enqueue_to_temp)
+                    drct_pl_enqueue_to_temp(filenames[0]);
+
+                if (options->enqueue && options->play)
+                    pos = drct_pl_get_length();
+
+                if (!options->enqueue)
+                {
+                    drct_pl_clear();
+                    drct_stop();
+                }
+
+                drct_pl_add(fns);
+
+                if (options->enqueue && options->play &&
+                    drct_pl_get_length() > pos)
+                    drct_pl_set_pos(pos);
+
+                if (!options->enqueue)
+                    g_idle_add(aud_start_playback, NULL);
+            }
+
+            g_list_foreach(fns, (GFunc) g_free, NULL);
+            g_list_free(fns);
+
+            g_strfreev(filenames);
+        } /* filename */
+
         if (options->rew)
             drct_pl_prev();
 
@@ -1214,13 +1295,6 @@
         if (options->activate)
             drct_activate();
     }
-
-    if(remote) {
-        gboolean is_running = audacious_remote_is_running(session);
-        if (is_running)
-            exit(EXIT_SUCCESS);
-    }
-#endif
 }
 
 static void
@@ -1385,11 +1459,6 @@
 
     bmp_config_load();
 
-    handle_cmd_line_options(&options, TRUE);
-
-#ifdef USE_DBUS
-    init_dbus();
-#endif
     mowgli_init();
 
     if (options.headless != 1)
@@ -1405,6 +1474,15 @@
 
     /* Initialize the playlist system. */
     playlist_init();
+    playlist = playlist_get_active();
+    playlist_load(playlist, bmp_paths[BMP_PATH_PLAYLIST_FILE]);
+    playlist_set_position(playlist, cfg.playlist_position);
+
+    handle_cmd_line_options(&options, TRUE);
+
+#ifdef USE_DBUS
+    init_dbus();
+#endif
 
     if (options.headless != 1)
     {
@@ -1426,11 +1504,6 @@
         GDK_THREADS_ENTER();
     }
 
-    /* Load the default playlist in. */
-    playlist = playlist_get_active();
-    playlist_load(playlist, bmp_paths[BMP_PATH_PLAYLIST_FILE]);
-    playlist_set_position(playlist, cfg.playlist_position);
-
     /* Load extra playlists */
     if(!dir_foreach(bmp_paths[BMP_PATH_PLAYLISTS_DIR], load_extra_playlist,
             playlist, NULL)) {
--- a/src/audacious/memorypool.c	Wed Oct 24 10:41:53 2007 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-/*  Audacious
- *  Copyright (c) 2007 William Pitcock <nenolod -at- atheme.org>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; under version 3 of the License.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program.  If not, see <http://www.gnu.org/licenses>.
- *
- *  The Audacious team does not consider modular code linking to
- *  Audacious or using our public API to be a derived work.
- */
-
-#include <glib.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "util.h"
-#include "memorypool.h"
-
-/* visibility of this object is not available to the outside */
-struct _MemoryPool {
-    GList *stack;
-    GDestroyNotify notify;
-    GMutex *mutex;
-};
-
-MemoryPool *
-memory_pool_new(void)
-{
-    MemoryPool *pool;
-
-    pool = g_new0(MemoryPool, 1);
-    pool->notify = g_free;
-    pool->mutex = g_mutex_new();
-
-    return pool;
-}
-
-MemoryPool *
-memory_pool_with_custom_destructor(GDestroyNotify notify)
-{
-    MemoryPool *pool;
-
-    pool = g_new0(MemoryPool, 1);
-    pool->notify = notify;
-    pool->mutex = g_mutex_new();
-
-    return pool;
-}
-
-gpointer
-memory_pool_add(MemoryPool * pool, gpointer ptr)
-{
-    g_mutex_lock(pool->mutex);
-    pool->stack = g_list_append(pool->stack, ptr);
-    g_mutex_unlock(pool->mutex);
-
-    return ptr;
-}
-
-gpointer
-memory_pool_allocate(MemoryPool * pool, gsize sz)
-{
-    gpointer addr;
-
-    g_mutex_lock(pool->mutex);
-    addr = g_malloc0(sz);
-    pool->stack = g_list_append(pool->stack, addr);
-    g_mutex_unlock(pool->mutex);
-
-    return addr;
-}
-
-void
-memory_pool_release(MemoryPool * pool, gpointer addr)
-{
-    g_mutex_lock(pool->mutex);
-
-    pool->stack = g_list_remove(pool->stack, addr);
-    pool->notify(addr);
-
-    g_mutex_unlock(pool->mutex);
-}
-
-static void
-memory_pool_cleanup_nolock(MemoryPool * pool)
-{
-    GList *iter;
-
-    for (iter = pool->stack; iter != NULL; iter = g_list_next(iter))
-    {
-        pool->stack = g_list_delete_link(pool->stack, iter);
-        g_warning("MemoryPool<%p> element at %p was not released until cleanup!", pool, iter->data);
-        pool->notify(iter->data);
-    }
-}
-
-void
-memory_pool_cleanup(MemoryPool * pool)
-{
-    g_mutex_lock(pool->mutex);
-    memory_pool_cleanup_nolock(pool);
-    g_mutex_unlock(pool->mutex);
-}
-
-void
-memory_pool_destroy(MemoryPool * pool)
-{
-    g_mutex_lock(pool->mutex);
-    memory_pool_cleanup_nolock(pool);
-    g_mutex_unlock(pool->mutex);
-
-    g_mutex_free(pool->mutex);
-    g_free(pool);
-}
-
-gchar *
-memory_pool_strdup(MemoryPool * pool, gchar * src)
-{
-    gchar *out;
-    gsize sz = strlen(src) + 1;
-
-    out = memory_pool_allocate(pool, sz);
-    g_strlcpy(out, src, sz);
-
-    return out;
-}
--- a/src/audacious/memorypool.h	Wed Oct 24 10:41:53 2007 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*  Audacious
- *  Copyright (c) 2007 William Pitcock <nenolod -at- atheme.org>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; under version 3 of the License.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program.  If not, see <http://www.gnu.org/licenses>.
- *
- *  The Audacious team does not consider modular code linking to
- *  Audacious or using our public API to be a derived work.
- */
-
-#ifndef AUDACIOUS_MEMORYPOOL_H
-#define AUDACIOUS_MEMORYPOOL_H
-
-typedef struct _MemoryPool MemoryPool;
-
-MemoryPool * memory_pool_new(void);
-MemoryPool * memory_pool_with_custom_destructor(GDestroyNotify notify);
-
-gpointer memory_pool_add(MemoryPool * pool, gpointer ptr);
-gpointer memory_pool_allocate(MemoryPool * pool, gsize sz);
-void memory_pool_release(MemoryPool * pool, gpointer addr);
-
-void memory_pool_cleanup(MemoryPool * pool);
-
-void memory_pool_destroy(MemoryPool * pool);
-
-gchar * memory_pool_strdup(MemoryPool * pool, gchar * src);
-
-#define memory_pool_alloc_object(pool, obj) \
-	memory_pool_allocate(pool, sizeof(obj))
-
-#endif
--- a/src/audacious/objects.xml	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/objects.xml	Fri Nov 16 05:36:42 2007 +0200
@@ -19,7 +19,7 @@
 
 <!--
     Defined:
-    CMD_GET_VERSION
+    CMD_GET_VERSION //CHANGED: now it returns audacious version instead of protocol version.
     CMD_PLAY
     CMD_PAUSE
     CMD_STOP
@@ -56,37 +56,39 @@
     CMD_PLAYLIST_GET_TUPLE_DATA
     CMD_IS_ADVANCE
     CMD_TOGGLE_ADVANCE
-
+    CMD_SHOW_PREFS_BOX
+    CMD_SHOW_ABOUT_BOX
+    CMD_SHOW_JTF_BOX
 
-    Remaining:
-    CMD_PLAYLIST_ADD
+    Newly defined:
+    CMD_PLAY_PAUSE
+    CMD_ACTIVATE
     CMD_GET_SKIN
     CMD_SET_SKIN
     CMD_GET_INFO
-    CMD_GET_EQ_DATA
-    CMD_SET_EQ_DATA
-    CMD_SHOW_PREFS_BOX
     CMD_TOGGLE_AOT
-    CMD_SHOW_ABOUT_BOX
-    CMD_GET_EQ
+    CMD_GET_PLAYQUEUE_LENGTH
+    CMD_PLAYQUEUE_ADD
+    CMD_PLAYQUEUE_REMOVE
+    CMD_PLAYQUEUE_CLEAR
+    CMD_PLAYQUEUE_GET_LIST_POS //CHANGED: get list position by queue position
+    CMD_PLAYQUEUE_GET_QUEUE_POS //CHANGED: get queue position by list postion
+    CMD_PLAYQUEUE_IS_QUEUED
+    CMD_PLAYLIST_INS_URL_STRING
+    CMD_PLAYLIST_ENQUEUE_TO_TEMP
+    CMD_PLAYLIST_ADD
+    CMD_GET_EQ //CHANGED: now these functions use double due to dbus-glib restriction
     CMD_GET_EQ_PREAMP
-    CMD_GET_EQ_BAND
+    CMD_GET_EQ_BAND //NOTE: GArray is used for bands
     CMD_SET_EQ
     CMD_SET_EQ_PREAMP
     CMD_SET_EQ_BAND
-    CMD_PLAYLIST_INS_URL_STRING
-    CMD_PLAYLIST_INS
-    CMD_PLAY_PAUSE
-    CMD_PLAYQUEUE_ADD
-    CMD_GET_PLAYQUEUE_LENGTH
-    CMD_PLAYQUEUE_REMOVE
-    CMD_ACTIVATE
-    CMD_SHOW_JTF_BOX
-    CMD_PLAYQUEUE_CLEAR
-    CMD_PLAYQUEUE_IS_QUEUED
-    CMD_PLAYQUEUE_GET_POS
-    CMD_PLAYQUEUE_GET_QPOS
-    CMD_PLAYLIST_ENQUEUE_TO_TEMP
+
+    Obsolete:
+    CMD_PLAYLIST_INS //unnecessary?
+    CMD_GET_EQ_DATA //obsolete
+    CMD_SET_EQ_DATA //obsolete
+
 -->
 
 <node name="/">
@@ -358,5 +360,155 @@
         <method name="ToggleShuffle">
             <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
         </method>
+
+        <!-- Show preferences window -->
+        <method name="ShowPrefsBox">
+            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
+            <arg type="b" name="show"/>
+        </method>
+
+        <!-- Show about window -->
+        <method name="ShowAboutBox">
+            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
+            <arg type="b" name="show"/>
+        </method>
+
+        <!-- Show jump to file window -->
+        <method name="ShowJtfBox">
+            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
+            <arg type="b" name="show"/>
+        </method>
+
+        <!-- Show filebrowser -->
+        <method name="ShowFilebrowser">
+            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
+            <arg type="b" name="show"/>
+        </method>
+
+        <!-- Either play or pause -->
+        <method name="PlayPause">
+            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
+        </method>
+
+        <!-- Activate -->
+        <method name="Activate">
+            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
+        </method>
+
+        <!-- Playqueue get playlist pos -->
+        <method name="QueueGetListPos">
+            <arg type="u" name="qpos"/>
+            <arg type="u" direction="out" name="pos"/>
+        </method>
+
+        <!-- Playqueue get playqueue pos -->
+        <method name="QueueGetQueuePos">
+            <arg type="u" name="pos"/>
+            <arg type="u" direction="out" name="qpos"/>
+        </method>
+
+        <!-- Get skin -->
+        <method name="GetSkin">
+            <!-- Return filename of desired song -->
+            <arg type="s" direction="out" name="skin"/>
+        </method>
+
+        <!-- Set skin -->
+        <method name="SetSkin">
+            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
+            <!-- Return filename of desired song -->
+            <arg type="s" name="skin"/>
+        </method>
+
+        <!-- Get Info -->
+        <method name="GetInfo">
+            <arg type="i" direction="out" name="rate"/>
+            <arg type="i" direction="out" name="freq"/>
+            <arg type="i" direction="out" name="nch"/>
+        </method>
+
+        <method name="ToggleAot">
+            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
+            <arg type="b" name="ontop"/>
+        </method>
+
+        <method name="GetPlayqueueLength">
+            <arg type="i" direction="out" name="length"/>
+        </method>
+
+        <method name="PlaylistInsUrlString">
+            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
+            <arg type="s" name="url"/>
+            <arg type="i" name="pos"/>
+        </method>
+
+        <method name="PlaylistAdd">
+            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
+            <arg type="s" name="list"/>
+        </method>
+
+        <method name="PlayqueueAdd">
+            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
+            <arg type="i" name="pos"/>
+        </method>
+
+        <method name="PlayqueueRemove">
+            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
+            <arg type="i" name="pos"/>
+        </method>
+
+        <method name="PlayqueueClear">
+            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
+        </method>
+
+        <method name="PlayqueueIsQueued">
+            <arg type="i" name="pos"/>
+            <arg type="b" direction="out" name="is_queued"/>
+        </method>
+
+        <method name="PlaylistEnqueueToTemp">
+            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
+            <arg type="s" name="url"/>
+        </method>
+
+        <!-- equalizer -->
+        <method name="GetEq">
+            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
+            <arg type="d" direction="out" name="preamp"/>
+            <arg type="ad" direction="out" name="bands"/>
+        </method>
+
+        <method name="GetEqPreamp">
+            <arg type="d" direction="out" name="preamp"/>
+        </method>
+
+        <method name="GetEqBand">
+            <arg type="i" name="band"/>
+            <arg type="d" direction="out" name="value"/>
+        </method>
+
+        <method name="SetEq">
+            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
+            <arg type="d" name="preamp"/>
+            <arg type="ad" name="bands"/>
+        </method>
+
+        <method name="SetEqPreamp">
+            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
+            <arg type="d" name="preamp"/>
+        </method>
+
+        <method name="SetEqBand">
+            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
+            <arg type="i" name="band"/>
+            <arg type="d" name="value"/>
+        </method>
+
+       <!-- Activate/Deactivate Equalizer -->
+        <method name="EqualizerActivate">
+            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
+            <arg type="b" name="active"/>
+        </method>
+
     </interface>
 </node>
--- a/src/audacious/playback.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/playback.c	Fri Nov 16 05:36:42 2007 +0200
@@ -168,7 +168,7 @@
     if (playback && playback->plugin->get_song_tuple) {
         Tuple *tuple = playback->plugin->get_song_tuple(playback->filename);
         if (tuple_get_value_type(tuple, FIELD_LENGTH, NULL) == TUPLE_INT)
-            return tuple_get_value_type(tuple, FIELD_LENGTH, NULL);
+            return tuple_get_int(tuple, FIELD_LENGTH, NULL);
     }
 
     return -1;
--- a/src/audacious/playlist.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/playlist.c	Fri Nov 16 05:36:42 2007 +0200
@@ -110,6 +110,8 @@
 static gboolean playlist_get_info_going = FALSE;
 static GThread *playlist_get_info_thread;
 
+extern GHashTable *ext_hash;
+
 static gint path_compare(const gchar * a, const gchar * b);
 static gint playlist_compare_path(PlaylistEntry * a, PlaylistEntry * b);
 static gint playlist_compare_filename(PlaylistEntry * a, PlaylistEntry * b);
@@ -143,6 +145,8 @@
 static void playlist_recalc_total_time(Playlist *);
 static gboolean playlist_entry_get_info(PlaylistEntry * entry);
 
+static gboolean filter_by_extension(const gchar *filename);
+
 static mowgli_heap_t *playlist_entry_heap = NULL;
 
 /* *********************** playlist entry code ********************** */
@@ -451,6 +455,7 @@
     playlist->entries = NULL;
     playlist->tail = NULL;
     playlist->attribute = PLAYLIST_PLAIN;
+    playlist->serial = 0;
 
     PLAYLIST_UNLOCK(playlist);
 }
@@ -465,6 +470,7 @@
     playlist_generate_shuffle_list(playlist);
     playlistwin_update_list(playlist);
     playlist_recalc_total_time(playlist);
+    PLAYLIST_INCR_SERIAL(playlist);
     playlist_manager_update();
 }
 
@@ -524,6 +530,7 @@
     g_list_free_1(node);
 
     playlist_recalc_total_time_nolock(playlist);
+    PLAYLIST_INCR_SERIAL(playlist);
 }
 
 void
@@ -549,6 +556,7 @@
     PLAYLIST_UNLOCK(playlist);
 
     playlist_recalc_total_time(playlist);
+    PLAYLIST_INCR_SERIAL(playlist);
 
     playlistwin_update_list(playlist);
     if (restart_playing) {
@@ -586,6 +594,7 @@
     PLAYLIST_UNLOCK(playlist);
 
     playlist_recalc_total_time(playlist);
+    PLAYLIST_INCR_SERIAL(playlist);
     playlistwin_update_list(playlist);
 
     if (restart_playing) {
@@ -626,6 +635,7 @@
     PLAYLIST_UNLOCK(playlist);
 
     playlist_recalc_total_time(playlist);
+    PLAYLIST_INCR_SERIAL(playlist);
 
     if (restart_playing) {
         if (playlist->position)
@@ -658,6 +668,7 @@
     playlist_get_info_scan_active = TRUE;
     g_mutex_unlock(mutex_scan);
     g_cond_signal(cond_scan);
+    PLAYLIST_INCR_SERIAL(playlist);
 }
 
 static void
@@ -743,13 +754,14 @@
     if (parent_tuple)
         tuple_free(parent_tuple);
 
-    if (tuple != NULL && tuple_get_int(tuple, FIELD_MTIME, NULL) == -1) {
-        // kick the scanner thread only if mtime = -1 (uninitialized)
+    if (!tuple || (tuple && tuple_get_int(tuple, FIELD_MTIME, NULL) == -1)) {
+        // kick the scanner thread when tuple == NULL or mtime = -1 (uninitialized)
         g_mutex_lock(mutex_scan);
         playlist_get_info_scan_active = TRUE;
         g_mutex_unlock(mutex_scan);
         g_cond_signal(cond_scan);
     }
+    PLAYLIST_INCR_SERIAL(playlist);
 }
 
 gboolean
@@ -772,10 +784,13 @@
         return TRUE;
     }
 
-    if (playlist->loading_playlist == TRUE || cfg.playlist_detect == TRUE)
-	dec = NULL;
+    if (playlist->loading_playlist == TRUE || cfg.playlist_detect == TRUE) {
+        dec = NULL;
+        if(!filter_by_extension(filename))
+            return FALSE;
+    }
     else if (!str_has_prefix_nocase(filename, "http://") && 
-	     !str_has_prefix_nocase(filename, "https://")) {
+             !str_has_prefix_nocase(filename, "https://")) {
         pr = input_check_file(filename, TRUE);
 
         if (pr) {
@@ -788,7 +803,9 @@
     if (cfg.playlist_detect == TRUE || playlist->loading_playlist == TRUE ||
        (playlist->loading_playlist == FALSE && dec != NULL) ||
        (playlist->loading_playlist == FALSE && !is_playlist_name(filename) &&
-       str_has_prefix_nocase(filename, "http"))) {
+        str_has_prefix_nocase(filename, "http"))) {
+        if(!filter_by_extension(filename))
+            return FALSE;
         __playlist_ins_with_info_tuple(playlist, filename, pos, tuple, dec);
         playlist_generate_shuffle_list(playlist);
         playlistwin_update_list(playlist);
@@ -948,8 +965,11 @@
             g_free(filename);
             list = g_list_concat(list, sub);
         }
-        else if (cfg.playlist_detect == TRUE)
-            list = g_list_prepend(list, filename);
+        else if (cfg.playlist_detect == TRUE) {
+            if(filter_by_extension(filename)) {
+                list = g_list_prepend(list, filename);
+            }
+        }
         else if ((pr = input_check_file(filename, TRUE)) != NULL)
         {
             list = g_list_prepend(list, filename);
@@ -985,7 +1005,6 @@
 {
     guint entries;
     entries = playlist_ins_url(playlist, url, -1);
-//    printf("playlist_add_url: entries = %d\n", entries);
     return entries;
 }
 
@@ -1038,8 +1057,6 @@
     g_return_val_if_fail(playlist != NULL, 0);
     g_return_val_if_fail(string != NULL, 0);
 
-//    playlistwin_update_list(playlist); // is this necessary? --yaz
-
     while (*string) {
         GList *node;
         guint i = 0;
@@ -1081,6 +1098,7 @@
     }
 
     playlist_recalc_total_time(playlist);
+    PLAYLIST_INCR_SERIAL(playlist); //probably necessary because there is no underlying __playlist_ins --yaz
     playlist_generate_shuffle_list(playlist);
     playlistwin_update_list(playlist);
 
@@ -1145,6 +1163,7 @@
     }
 
     playlist_recalc_total_time(playlist);
+    PLAYLIST_INCR_SERIAL(playlist); //tentative --yaz
 
     mainwin_set_song_info(rate, freq, nch);
 
@@ -1368,7 +1387,7 @@
 playlist_is_position_queued(Playlist *playlist, guint pos)
 {
     PlaylistEntry *entry;
-    GList *tmp;
+    GList *tmp = NULL;
 
     PLAYLIST_LOCK(playlist);
     entry = g_list_nth_data(playlist->entries, pos);
@@ -1683,7 +1702,7 @@
 
 void
 playlist_load_ins_file(Playlist *playlist,
-		       const gchar * filename_p,
+                       const gchar * filename_p,
                        const gchar * playlist_name, gint pos,
                        const gchar * title, gint len)
 {
@@ -1707,22 +1726,27 @@
             *tmp = '\0';
         else {
 	    if ((playlist->loading_playlist == TRUE ||
-		cfg.playlist_detect == TRUE))
+             cfg.playlist_detect == TRUE)) {
                 pr = NULL;
+                if(!filter_by_extension(filename))
+                    return;
+        }
 	    else if (!str_has_prefix_nocase(filename, "http://") && 
 	        !str_has_prefix_nocase(filename, "https://"))
 		pr = input_check_file(filename, FALSE);
 
             __playlist_ins_with_info(playlist, filename, pos, title, len, pr ? pr->ip : NULL);
-
             g_free(pr);
             return;
         }
         tmp = g_build_filename(path, filename, NULL);
 
-	if (playlist->loading_playlist == TRUE && cfg.playlist_detect == TRUE)
-	    pr = NULL;
-        else if (!str_has_prefix_nocase(tmp, "http://") && 
+        if (playlist->loading_playlist == TRUE && cfg.playlist_detect == TRUE) {
+            pr = NULL;
+            if(!filter_by_extension(filename))
+                return;
+        }
+    else if (!str_has_prefix_nocase(tmp, "http://") && 
 	    !str_has_prefix_nocase(tmp, "https://"))
 	    pr = input_check_file(tmp, FALSE);
 
@@ -1734,14 +1758,16 @@
     else
     {
         if ((playlist->loading_playlist == TRUE ||
-  	    cfg.playlist_detect == TRUE))
+             cfg.playlist_detect == TRUE)) {
             pr = NULL;
+        if(!filter_by_extension(filename))
+            return;
+        }
 	else if (!str_has_prefix_nocase(filename, "http://") && 
 	    !str_has_prefix_nocase(filename, "https://"))
 	    pr = input_check_file(filename, FALSE);
 
         __playlist_ins_with_info(playlist, filename, pos, title, len, pr ? pr->ip : NULL);
-
         g_free(pr);
     }
 
@@ -1775,25 +1801,30 @@
             *tmp = '\0';
         else {
             if ((playlist->loading_playlist == TRUE ||
-    	        cfg.playlist_detect == TRUE))
+                 cfg.playlist_detect == TRUE)) {
                 pr = NULL;
+                if(!filter_by_extension(filename))
+                    return;
+            }
 	    else if (!str_has_prefix_nocase(filename, "http://") && 
 	        !str_has_prefix_nocase(filename, "https://"))
 	        pr = input_check_file(filename, FALSE);
 
             __playlist_ins_with_info_tuple(playlist, filename, pos, tuple, pr ? pr->ip : NULL);
-
             g_free(pr);
             return;
         }
         tmp = g_build_filename(path, filename, NULL);
 
         if ((playlist->loading_playlist == TRUE ||
-            cfg.playlist_detect == TRUE))
+             cfg.playlist_detect == TRUE)) {
             pr = NULL;
+            if(!filter_by_extension(filename))
+                return;
+        }
         else if (!str_has_prefix_nocase(filename, "http://") && 
             !str_has_prefix_nocase(filename, "https://"))
-            pr = input_check_file(filename, FALSE);
+            pr = input_check_file(filename, FALSE); //here! --yaz
 
         __playlist_ins_with_info_tuple(playlist, tmp, pos, tuple, pr ? pr->ip : NULL);
         g_free(tmp);
@@ -1803,8 +1834,11 @@
     else
     {
         if ((playlist->loading_playlist == TRUE ||
-            cfg.playlist_detect == TRUE))
+             cfg.playlist_detect == TRUE)) {
             pr = NULL;
+            if(!filter_by_extension(filename))
+                return;
+        }
         else if (!str_has_prefix_nocase(filename, "http://") && 
             !str_has_prefix_nocase(filename, "https://"))
             pr = input_check_file(filename, FALSE);
@@ -1850,6 +1884,9 @@
     playlistwin_update_list(playlist);
     playlist_manager_update();
 
+    playlist_recalc_total_time(playlist); //tentative --yaz
+    PLAYLIST_INCR_SERIAL(playlist);
+
     return new_len - old_len;
 }
 
@@ -2613,7 +2650,7 @@
             for (node = playlist->entries; node; node = g_list_next(node)) {
                 entry = node->data;
 
-                if(playlist->attribute & PLAYLIST_STATIC ||
+                if(playlist->attribute & PLAYLIST_STATIC || // live lock fix
                    (entry->tuple && tuple_get_int(entry->tuple, FIELD_LENGTH, NULL) > -1 &&
                     tuple_get_int(entry->tuple, FIELD_MTIME, NULL) != -1)) {
                     update_playlistwin = TRUE;
@@ -2658,7 +2695,7 @@
 
                  entry = node->data;
 
-                 if(playlist->attribute & PLAYLIST_STATIC ||
+                 if(playlist->attribute & PLAYLIST_STATIC || // live lock fix
                    (entry->tuple && tuple_get_int(entry->tuple, FIELD_LENGTH, NULL) > -1 &&
                     tuple_get_int(entry->tuple, FIELD_MTIME, NULL) != -1)) {
                     update_playlistwin = TRUE;
@@ -2710,6 +2747,8 @@
         g_cond_wait(cond_scan, mutex_scan);
         g_mutex_unlock(mutex_scan);
 
+//        g_print("scanner invoked\n");
+
     } // while
 
     g_thread_exit(NULL);
@@ -2793,6 +2832,7 @@
     playlist_generate_shuffle_list(playlist);
     playlistwin_update_list(playlist);
     playlist_recalc_total_time(playlist);
+    PLAYLIST_INCR_SERIAL(playlist);
     playlist_manager_update();
 }
 
@@ -2912,6 +2952,7 @@
 
     playlistwin_update_list(playlist);
     playlist_recalc_total_time(playlist);
+    PLAYLIST_INCR_SERIAL(playlist);
 
     playlist_manager_update();
 }
@@ -2931,7 +2972,6 @@
     PLAYLIST_UNLOCK(playlist);
 }
 
-
 static void
 playlist_recalc_total_time_nolock(Playlist *playlist)
 {
@@ -2977,10 +3017,10 @@
     gboolean is_first_search = TRUE;
     gint num_of_entries_found = 0;
     const gchar *regex_pattern;
-    const gchar *track_name = tuple_get_string( tuple, FIELD_TITLE, NULL );
-    const gchar *album_name = tuple_get_string( tuple, FIELD_ALBUM, NULL );
-    const gchar *performer = tuple_get_string( tuple, FIELD_PERFORMER, NULL );
-    const gchar *file_name = tuple_get_string( tuple, FIELD_FILE_NAME, NULL );
+    const gchar *track_name;
+    const gchar *album_name;
+    const gchar *performer;
+    const gchar *file_name;
 
 #if defined(USE_REGEX_ONIGURUMA)
     /* set encoding for Oniguruma regex to UTF-8 */
@@ -2990,7 +3030,8 @@
 
     PLAYLIST_LOCK(playlist);
 
-    if ( (regex_pattern = tuple_get_string(tuple, FIELD_TITLE, NULL)) != NULL )
+    if ( (regex_pattern = tuple_get_string(tuple, FIELD_TITLE, NULL)) != NULL &&
+         (*regex_pattern != '\0') )
     {
         /* match by track_name */
         regex_t regex;
@@ -3006,10 +3047,14 @@
             for ( ; entry_list ; entry_list = g_list_next(entry_list) )
             {
                 PlaylistEntry *entry = entry_list->data;
-                if ( ( entry->tuple != NULL ) && ( track_name != NULL ) &&
-                   ( regexec( &regex , track_name , 0 , NULL , 0 ) == 0 ) )
+                if ( entry->tuple != NULL )
                 {
-                    tfound_list = g_list_append( tfound_list , entry );
+                   track_name = tuple_get_string( entry->tuple, FIELD_TITLE, NULL );
+                   if (( track_name != NULL ) &&
+                       ( regexec( &regex , track_name , 0 , NULL , 0 ) == 0 ) )
+                   {
+                        tfound_list = g_list_append( tfound_list , entry );
+                   }
                 }
             }
             g_list_free( found_list ); /* wipe old found_list */
@@ -3019,7 +3064,8 @@
         is_first_search = FALSE;
     }
 
-    if ( (regex_pattern = tuple_get_string(tuple, FIELD_ALBUM, NULL)) != NULL )
+    if ( (regex_pattern = tuple_get_string(tuple, FIELD_ALBUM, NULL)) != NULL &&
+         (*regex_pattern != '\0') )
     {
         /* match by album_name */
         regex_t regex;
@@ -3035,10 +3081,14 @@
             for ( ; entry_list ; entry_list = g_list_next(entry_list) )
             {
                 PlaylistEntry *entry = entry_list->data;
-                if ( ( entry->tuple != NULL ) && ( album_name != NULL ) &&
-                   ( regexec( &regex , album_name , 0 , NULL , 0 ) == 0 ) )
+                if ( entry->tuple != NULL )
                 {
-                    tfound_list = g_list_append( tfound_list , entry );
+                    album_name = tuple_get_string( entry->tuple, FIELD_ALBUM, NULL );
+                    if ( ( album_name != NULL ) &&
+                        ( regexec( &regex , album_name , 0 , NULL , 0 ) == 0 ) )
+                    {
+                        tfound_list = g_list_append( tfound_list , entry );
+                    }
                 }
             }
             g_list_free( found_list ); /* wipe old found_list */
@@ -3048,7 +3098,8 @@
         is_first_search = FALSE;
     }
 
-    if ( (regex_pattern = tuple_get_string(tuple, FIELD_ARTIST, NULL)) != NULL )
+    if ( (regex_pattern = tuple_get_string(tuple, FIELD_ARTIST, NULL)) != NULL &&
+         (*regex_pattern != '\0') )
     {
         /* match by performer */
         regex_t regex;
@@ -3064,10 +3115,14 @@
             for ( ; entry_list ; entry_list = g_list_next(entry_list) )
             {
                 PlaylistEntry *entry = entry_list->data;
-                if ( ( entry->tuple != NULL ) && ( performer != NULL ) &&
-                   ( regexec( &regex , performer , 0 , NULL , 0 ) == 0 ) )
+                if ( entry->tuple != NULL )
                 {
-                    tfound_list = g_list_append( tfound_list , entry );
+                    performer = tuple_get_string( entry->tuple, FIELD_ARTIST, NULL );
+                    if ( ( entry->tuple != NULL ) && ( performer != NULL ) &&
+                        ( regexec( &regex , performer , 0 , NULL , 0 ) == 0 ) )
+                    {
+                        tfound_list = g_list_append( tfound_list , entry );
+                    }
                 }
             }
             g_list_free( found_list ); /* wipe old found_list */
@@ -3077,7 +3132,8 @@
         is_first_search = FALSE;
     }
 
-    if ( (regex_pattern = tuple_get_string(tuple, FIELD_FILE_NAME, NULL)) != NULL )
+    if ( (regex_pattern = tuple_get_string(tuple, FIELD_FILE_NAME, NULL)) != NULL &&
+         (*regex_pattern != '\0') )
     {
         /* match by file_name */
         regex_t regex;
@@ -3093,10 +3149,14 @@
             for ( ; entry_list ; entry_list = g_list_next(entry_list) )
             {
                 PlaylistEntry *entry = entry_list->data;
-                if ( ( entry->tuple != NULL ) && ( file_name != NULL ) &&
-                   ( regexec( &regex , file_name , 0 , NULL , 0 ) == 0 ) )
+                if ( entry->tuple != NULL )
                 {
-                    tfound_list = g_list_append( tfound_list , entry );
+                    file_name = tuple_get_string( entry->tuple, FIELD_FILE_NAME, NULL );
+                    if ( ( file_name != NULL ) &&
+                        ( regexec( &regex , file_name , 0 , NULL , 0 ) == 0 ) )
+                    {
+                        tfound_list = g_list_append( tfound_list , entry );
+                    }
                 }
             }
             g_list_free( found_list ); /* wipe old found_list */
@@ -3120,6 +3180,7 @@
 
     PLAYLIST_UNLOCK(playlist);
     playlist_recalc_total_time(playlist);
+//    PLAYLIST_INCR_SERIAL(playlist); //unnecessary? --yaz
 
     return num_of_entries_found;
 }
@@ -3233,6 +3294,7 @@
 
     playlistwin_update_list(playlist);
     playlist_recalc_total_time(playlist);
+    PLAYLIST_INCR_SERIAL(playlist); //tentative --yaz
 
     return retval;
 }
@@ -3255,6 +3317,7 @@
 
     playlistwin_update_list(playlist);
     playlist_recalc_total_time(playlist);
+    PLAYLIST_INCR_SERIAL(playlist); //tentative --yaz
 }
 
 Playlist *
@@ -3295,6 +3358,9 @@
     playlist->title = NULL;
     playlist->filename = NULL;
     playlist_clear(playlist);
+    playlist->tail = NULL;
+    playlist->attribute = PLAYLIST_PLAIN;
+    playlist->serial = 0;
 
     return playlist;
 }
@@ -3307,6 +3373,7 @@
     
     g_mutex_free( playlist->mutex );
     g_free( playlist );
+    playlist = NULL; //XXX lead to crash? --yaz
 }
 
 Playlist *
@@ -3400,3 +3467,33 @@
     } while(1);
     return TRUE;
 }
+
+static gboolean
+filter_by_extension(const gchar *uri)
+{
+    gchar *base, *ext, *lext, *filename;
+    gchar *tmp = g_filename_from_uri(uri, NULL, NULL);
+    gboolean rv;
+
+    filename = g_strdup(tmp ? tmp : uri);
+    g_free(tmp);
+
+    base = g_path_get_basename(filename);
+    ext = g_strrstr(base, ".");
+
+    if(!ext) {
+        g_free(base);
+        return FALSE;
+    }
+
+    lext = g_utf8_strdown(ext+1, -1);
+
+    if(g_hash_table_lookup(ext_hash, lext))
+        rv = TRUE;
+    else
+        rv = FALSE;
+
+    g_free(lext);
+    g_free(base);
+    return rv;
+}
--- a/src/audacious/playlist.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/playlist.h	Fri Nov 16 05:36:42 2007 +0200
@@ -77,7 +77,7 @@
 typedef enum {
     PLAYLIST_PLAIN = 0,
     PLAYLIST_STATIC = 1,
-    PLAYLIST_USE_RELATIVE = 1 << 1,
+    PLAYLIST_USE_RELATIVE = 1 << 1
 } PlaylistAttribute;
 
 struct _Playlist {
@@ -94,8 +94,9 @@
     gboolean       pl_selection_more;
     gboolean       loading_playlist;
     GMutex        *mutex;       /* this is required for multiple playlist */
-    GList *tail; /* marker for the last element in playlist->entries */
+    GList         *tail; /* marker for the last element in playlist->entries */
     gint           attribute; /* PlaylistAttribute */
+    gulong         serial;     /* serial number */
 };
 
 typedef enum {
@@ -223,8 +224,9 @@
 
 gboolean is_playlist_name(const gchar * filename);
 
-#define PLAYLIST_LOCK(pl)    g_mutex_lock(pl->mutex)
-#define PLAYLIST_UNLOCK(pl)  g_mutex_unlock(pl->mutex)
+#define PLAYLIST_LOCK(pl)    g_mutex_lock((pl)->mutex)
+#define PLAYLIST_UNLOCK(pl)  g_mutex_unlock((pl)->mutex)
+#define PLAYLIST_INCR_SERIAL(pl)    (pl)->serial++
 
 G_LOCK_EXTERN(playlists);
 
--- a/src/audacious/plugin.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/plugin.h	Fri Nov 16 05:36:42 2007 +0200
@@ -926,7 +926,9 @@
 #include "audacious/auddrct.h"
 
 /* for multi-file plugins :( */
+G_BEGIN_DECLS
 extern struct _AudaciousFuncTableV1 *_audvt;
+G_END_DECLS
 
 #define DECLARE_PLUGIN(name, init, fini, ...) \
 	G_BEGIN_DECLS \
--- a/src/audacious/pluginenum.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/pluginenum.c	Fri Nov 16 05:36:42 2007 +0200
@@ -68,6 +68,8 @@
     NULL
 };
 
+GHashTable *ext_hash = NULL;
+
 /*****************************************************************/
 
 static struct _AudaciousFuncTableV1 _aud_papi_v1 = {
@@ -517,6 +519,14 @@
     /* XXX: we need something better than p->filename if plugins
        will eventually provide multiple plugins --nenolod */
     mowgli_dictionary_add(plugin_dict, g_basename(p->filename), p);
+
+    /* build the extension hash table */
+    gint i;
+    if(p->vfs_extensions) {
+        for(i = 0; p->vfs_extensions[i] != NULL; i++) {
+            g_hash_table_replace(ext_hash, g_strdup(p->vfs_extensions[i]), g_strdup(p->description));
+        }
+    }
 }
 
 static void
@@ -752,6 +762,9 @@
 
     plugin_dict = mowgli_dictionary_create(g_ascii_strcasecmp);
 
+    /* make extension hash */
+    ext_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
+
 #ifndef DISABLE_USER_PLUGIN_DIR
     scan_plugins(bmp_paths[BMP_PATH_USER_PLUGIN_DIR]);
     /*
@@ -1030,4 +1043,5 @@
     }
 
     mowgli_dictionary_destroy(plugin_dict, NULL, NULL);
+    g_hash_table_remove_all(ext_hash);
 }
--- a/src/audacious/skin.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/skin.c	Fri Nov 16 05:36:42 2007 +0200
@@ -48,6 +48,10 @@
 #include "vfs.h"
 
 #include "ui_skinned_window.h"
+#include "ui_skinned_button.h"
+#include "ui_skinned_number.h"
+#include "ui_skinned_horizontal_slider.h"
+#include "ui_skinned_playstatus.h"
 
 #define EXTENSION_TARGETS 7
 
@@ -1348,7 +1352,6 @@
     vfs_fclose(file);
 }
 
-#if 0
 static void
 skin_numbers_generate_dash(Skin * skin)
 {
@@ -1362,22 +1365,22 @@
     if (!numbers->pixmap || numbers->current_width < 99)
         return;
 
-    gc = gdk_gc_new(numbers->pixmap);
-    pixmap = gdk_pixmap_new(mainwin->window, 108,
+    pixmap = gdk_pixmap_new(NULL, 108,
                             numbers->current_height,
-                            -1);
+                            gdk_rgb_get_visual()->depth);
+    gc = gdk_gc_new(pixmap);
 
-    skin_draw_pixmap(skin, pixmap, gc, SKIN_NUMBERS, 0, 0, 0, 0, 99, 13);
-    skin_draw_pixmap(skin, pixmap, gc, SKIN_NUMBERS, 90, 0, 99, 0, 9, 13);
-    skin_draw_pixmap(skin, pixmap, gc, SKIN_NUMBERS, 20, 6, 101, 6, 5, 1);
+    skin_draw_pixmap(NULL, skin, pixmap, gc, SKIN_NUMBERS, 0, 0, 0, 0, 99, numbers->current_height);
+    skin_draw_pixmap(NULL, skin, pixmap, gc, SKIN_NUMBERS, 90, 0, 99, 0, 9, numbers->current_height);
+    skin_draw_pixmap(NULL, skin, pixmap, gc, SKIN_NUMBERS, 20, 6, 101, 6, 5, 1);
 
     g_object_unref(numbers->pixmap);
     g_object_unref(gc);
 
     numbers->pixmap = pixmap;
     numbers->current_width = 108;
+    numbers->width = 108;
 }
-#endif
 
 static void
 skin_load_cursor(Skin * skin, const gchar * dirname)
@@ -1428,10 +1431,9 @@
     if (text_pm)
         skin_get_textcolors(text_pm, skin->textbg, skin->textfg);
 
-#if 0
-    if (skin->pixmaps[SKIN_NUMBERS].pixmap)
+    if (skin->pixmaps[SKIN_NUMBERS].pixmap &&
+        skin->pixmaps[SKIN_NUMBERS].width < 108 )
         skin_numbers_generate_dash(skin);
-#endif
 
     filename = find_file_recursively(path, "pledit.txt");
     inifile = open_ini_file(filename);
@@ -1464,11 +1466,13 @@
 }
 
 static void
-skin_set_gtk_theme(GtkSettings * settings, Skin * skin, gboolean tmp_clean)
+skin_set_gtk_theme(GtkSettings * settings, Skin * skin)
 {
     if (original_gtk_theme == NULL)
          g_object_get(settings, "gtk-theme-name", &original_gtk_theme, NULL);
 
+    /* the way GTK does things can be very broken. --nenolod */
+
     gchar *tmp = g_strdup_printf("%s/.themes/aud-%s", g_get_home_dir(),
                                  basename(skin->path));
 
@@ -1479,14 +1483,7 @@
     symlink(skin->path, tmp);
     gtk_settings_set_string_property(settings, "gtk-theme-name",
                                      basename(tmp), "audacious");
-
-#if 0
-    if (tmp_clean)
-    {
-        unlink(tmp);
-        g_free(tmp);
-    }
-#endif
+    g_free(tmp);
 }
 
 static gboolean
@@ -1532,12 +1529,8 @@
 
 #ifndef _WIN32
         gtkrcpath = find_path_recursively(skin->path, "gtkrc");
-
-        /* the way GTK does things can be very broken. --nenolod */
-        if (gtkrcpath != NULL) {
-            skin_set_gtk_theme(settings, skin, FALSE);
-        }
-
+        if (gtkrcpath != NULL)
+            skin_set_gtk_theme(settings, skin);
         g_free(gtkrcpath);
 #endif
 
@@ -1563,12 +1556,8 @@
 
 #ifndef _WIN32
     gtkrcpath = find_path_recursively(skin->path, "gtkrc");
-
-    /* the way GTK does things can be very broken. --nenolod */
-    if (gtkrcpath != NULL) {
-        skin_set_gtk_theme(settings, skin, TRUE);
-    }
-
+    if (gtkrcpath != NULL)
+        skin_set_gtk_theme(settings, skin);
     g_free(gtkrcpath);
 #endif
 
@@ -1594,6 +1583,14 @@
     g_free(command);
 }
 
+static SkinPixmap *
+skin_get_pixmap(Skin * skin, SkinPixmapId map_id)
+{
+    g_return_val_if_fail(skin != NULL, NULL);
+    g_return_val_if_fail(map_id < SKIN_PIXMAP_COUNT, NULL);
+
+    return &skin->pixmaps[map_id];
+}
 
 gboolean
 skin_load(Skin * skin, const gchar * path)
@@ -1608,7 +1605,29 @@
     skin_lock(skin);
     error = skin_load_nolock(skin, path, FALSE);
     skin_unlock(skin);
-    
+
+    SkinPixmap *pixmap = NULL;
+    pixmap = skin_get_pixmap(skin, SKIN_NUMBERS);
+    if (pixmap) {
+        ui_skinned_number_set_size(mainwin_minus_num, 9, pixmap->height);
+        ui_skinned_number_set_size(mainwin_10min_num, 9, pixmap->height);
+        ui_skinned_number_set_size(mainwin_min_num, 9, pixmap->height);
+        ui_skinned_number_set_size(mainwin_10sec_num, 9, pixmap->height);
+        ui_skinned_number_set_size(mainwin_sec_num, 9, pixmap->height);
+    }
+
+    pixmap = skin_get_pixmap(skin, SKIN_MAIN);
+    if (pixmap && skin->properties.mainwin_height > pixmap->height)
+        skin->properties.mainwin_height = pixmap->height;
+
+    pixmap = skin_get_pixmap(skin, SKIN_PLAYPAUSE);
+    if (pixmap)
+        ui_skinned_playstatus_set_size(mainwin_playstatus, 11, pixmap->height);
+
+    pixmap = skin_get_pixmap(skin, SKIN_EQMAIN);
+    if (pixmap->height >= 313)
+        gtk_widget_show(equalizerwin_graph);
+
     return error;
 }
 
@@ -1631,16 +1650,6 @@
     skin_load_nolock(skin, skin->path, TRUE);
 }
 
-
-static SkinPixmap *
-skin_get_pixmap(Skin * skin, SkinPixmapId map_id)
-{
-    g_return_val_if_fail(skin != NULL, NULL);
-    g_return_val_if_fail(map_id < SKIN_PIXMAP_COUNT, NULL);
-
-    return &skin->pixmaps[map_id];
-}
-
 GdkBitmap *
 skin_get_mask(Skin * skin, SkinMaskId mi)
 {
@@ -1702,7 +1711,7 @@
 }
 
 void
-skin_draw_pixmap(Skin * skin, GdkDrawable * drawable, GdkGC * gc,
+skin_draw_pixmap(GtkWidget *widget, Skin * skin, GdkDrawable * drawable, GdkGC * gc,
                  SkinPixmapId pixmap_id,
                  gint xsrc, gint ysrc, gint xdest, gint ydest,
                  gint width, gint height)
@@ -1715,20 +1724,51 @@
     g_return_if_fail(pixmap != NULL);
     g_return_if_fail(pixmap->pixmap != NULL);
 
+    /* perhaps we should use transparency or resize widget? */
     if (xsrc+width > pixmap->width || ysrc+height > pixmap->height) {
-        if (pixmap_id == SKIN_NUMBERS)
-            xsrc = 90;
-        else if (pixmap_id == SKIN_VOLUME) {
-            /* some winamp skins have too strait SKIN_VOLUME, so let's copy what's remain from SKIN_MAIN */
-            gdk_draw_drawable(drawable, gc, skin_get_pixmap(bmp_active_skin, SKIN_MAIN)->pixmap,
-                              skin->properties.mainwin_volume_x, skin->properties.mainwin_volume_y,
-                              pixmap->width, ydest, width - pixmap->width, height);
-            width = pixmap->width;
-        } else if (pixmap_id == SKIN_MONOSTEREO) {
-            /* XMMS skins seems to have SKIN_MONOSTEREO with size 58x20 instead of 58x24 */
-            gdk_draw_drawable(drawable, gc, skin_get_pixmap(bmp_active_skin, SKIN_MAIN)->pixmap,
-                              212 + xdest, 41, xdest, ydest, width, height);
-            height = pixmap->height/2;
+        if (widget) {
+            /* it's better to hide widget using SKIN_PLAYPAUSE/SKIN_POSBAR than display mess */
+            if ((pixmap_id == SKIN_PLAYPAUSE && pixmap->width != 42) || pixmap_id == SKIN_POSBAR) {
+                gtk_widget_hide(widget);
+                return;
+            }
+            gint x, y;
+            x = -1;
+            y = -1;
+
+            if (gtk_widget_get_parent(widget) == SKINNED_WINDOW(mainwin)->fixed) {
+                GList *iter;
+                for (iter = GTK_FIXED (SKINNED_WINDOW(mainwin)->fixed)->children; iter; iter = g_list_next (iter)) {
+                     GtkFixedChild *child_data = (GtkFixedChild *) iter->data;
+                     if (child_data->widget == widget) {
+                         x = child_data->x;
+                         y = child_data->y;
+                         break;
+                     }
+                }
+
+                if (x != -1 && y != -1) {
+                    /* Some skins include SKIN_VOLUME and/or SKIN_BALANCE
+                       without knobs */
+                    if (pixmap_id == SKIN_VOLUME || pixmap_id == SKIN_BALANCE) {
+                        if (ysrc+height > 421 && xsrc+width <= pixmap->width)
+                            return;
+                    }
+                    /* let's copy what's under widget */
+                    gdk_draw_drawable(drawable, gc, skin_get_pixmap(bmp_active_skin, SKIN_MAIN)->pixmap,
+                                      x, y, xdest, ydest, width, height);
+
+                    /* XMMS skins seems to have SKIN_MONOSTEREO with size 58x20 instead of 58x24 */
+                    if (pixmap_id == SKIN_MONOSTEREO)
+                        height = pixmap->height/2;
+                }
+            } else if (gtk_widget_get_parent(widget) == SKINNED_WINDOW(equalizerwin)->fixed) {
+                   if (!(pixmap_id == SKIN_EQMAIN && ysrc == 314)) /* equalizer preamp on equalizer graph */
+                         gtk_widget_hide(widget);
+            } else if (gtk_widget_get_parent(widget) == SKINNED_WINDOW(playlistwin)->fixed) {
+                   /* I haven't seen any skin with substandard playlist */
+                   gtk_widget_hide(widget);
+            }
         } else
             return;
     }
@@ -1796,14 +1836,14 @@
         y = 21;
 
     /* left corner */
-    skin_draw_pixmap(skin, drawable, gc, SKIN_PLEDIT, 0, y, 0, 0, 25, 20);
+    skin_draw_pixmap(NULL, skin, drawable, gc, SKIN_PLEDIT, 0, y, 0, 0, 25, 20);
 
     /* titlebar title */
-    skin_draw_pixmap(skin, drawable, gc, SKIN_PLEDIT, 26, y,
+    skin_draw_pixmap(NULL, skin, drawable, gc, SKIN_PLEDIT, 26, y,
                      (width - 100) / 2, 0, 100, 20);
 
     /* titlebar right corner  */
-    skin_draw_pixmap(skin, drawable, gc, SKIN_PLEDIT, 153, y,
+    skin_draw_pixmap(NULL, skin, drawable, gc, SKIN_PLEDIT, 153, y,
                      width - 25, 0, 25, 20);
 
     /* tile draw the remaining frame */
@@ -1813,20 +1853,20 @@
 
     for (i = 0; i < c / 2; i++) {
         /* left of title */
-        skin_draw_pixmap(skin, drawable, gc, SKIN_PLEDIT, 127, y,
+        skin_draw_pixmap(NULL, skin, drawable, gc, SKIN_PLEDIT, 127, y,
                          25 + i * 25, 0, 25, 20);
 
         /* right of title */
-        skin_draw_pixmap(skin, drawable, gc, SKIN_PLEDIT, 127, y,
+        skin_draw_pixmap(NULL, skin, drawable, gc, SKIN_PLEDIT, 127, y,
                          (width + 100) / 2 + i * 25, 0, 25, 20);
     }
 
     if (c & 1) {
         /* Odd tile count, so one remaining to draw. Here we split
          * it into two and draw half on either side of the title */
-        skin_draw_pixmap(skin, drawable, gc, SKIN_PLEDIT, 127, y,
+        skin_draw_pixmap(NULL, skin, drawable, gc, SKIN_PLEDIT, 127, y,
                          ((c / 2) * 25) + 25, 0, 12, 20);
-        skin_draw_pixmap(skin, drawable, gc, SKIN_PLEDIT, 127, y,
+        skin_draw_pixmap(NULL, skin, drawable, gc, SKIN_PLEDIT, 127, y,
                          (width / 2) + ((c / 2) * 25) + 50, 0, 13, 20);
     }
 }
@@ -1851,7 +1891,7 @@
     gint i, c;
 
     /* bottom left corner (menu buttons) */
-    skin_draw_pixmap(skin, drawable, gc, SKIN_PLEDIT, 0, 72,
+    skin_draw_pixmap(NULL, skin, drawable, gc, SKIN_PLEDIT, 0, 72,
                      0, height - 38, 125, 38);
 
     c = (width - 275) / 25;
@@ -1859,17 +1899,17 @@
     /* draw visualization window, if width allows */
     if (c >= 3) {
         c -= 3;
-        skin_draw_pixmap(skin, drawable, gc, SKIN_PLEDIT, 205, 0,
+        skin_draw_pixmap(NULL, skin, drawable, gc, SKIN_PLEDIT, 205, 0,
                          width - (150 + 75), height - 38, 75, 38);
     }
 
     /* Bottom right corner (playbuttons etc) */
-    skin_draw_pixmap(skin, drawable, gc, SKIN_PLEDIT,
+    skin_draw_pixmap(NULL, skin, drawable, gc, SKIN_PLEDIT,
                      126, 72, width - 150, height - 38, 150, 38);
 
     /* Tile draw the remaining undrawn portions */
     for (i = 0; i < c; i++)
-        skin_draw_pixmap(skin, drawable, gc, SKIN_PLEDIT, 179, 0,
+        skin_draw_pixmap(NULL, skin, drawable, gc, SKIN_PLEDIT, 179, 0,
                          125 + i * 25, height - 38, 25, 38);
 }
 
@@ -1890,11 +1930,11 @@
     /* frame sides */
     for (i = 0; i < (height - (20 + 38)) / 29; i++) {
         /* left */
-        skin_draw_pixmap(skin, drawable, gc, SKIN_PLEDIT, 0, 42,
+        skin_draw_pixmap(NULL, skin, drawable, gc, SKIN_PLEDIT, 0, 42,
                          0, 20 + i * 29, 12, 29);
 
         /* right */
-        skin_draw_pixmap(skin, drawable, gc, SKIN_PLEDIT, 32, 42,
+        skin_draw_pixmap(NULL, skin, drawable, gc, SKIN_PLEDIT, 32, 42,
                          width - 19, 20 + i * 29, 19, 29);
     }
 }
@@ -1928,15 +1968,15 @@
     gint i;
 
     /* left corner */
-    skin_draw_pixmap(skin, drawable, gc, SKIN_PLEDIT, 72, 42, 0, 0, 25, 14);
+    skin_draw_pixmap(NULL, skin, drawable, gc, SKIN_PLEDIT, 72, 42, 0, 0, 25, 14);
 
     /* bar tile */
     for (i = 0; i < (width - 75) / 25; i++)
-        skin_draw_pixmap(skin, drawable, gc, SKIN_PLEDIT, 72, 57,
+        skin_draw_pixmap(NULL, skin, drawable, gc, SKIN_PLEDIT, 72, 57,
                          (i * 25) + 25, 0, 25, 14);
 
     /* right corner */
-    skin_draw_pixmap(skin, drawable, gc, SKIN_PLEDIT, 99, focus ? 42 : 57,
+    skin_draw_pixmap(NULL, skin, drawable, gc, SKIN_PLEDIT, 99, focus ? 42 : 57,
                      width - 50, 0, 50, 14);
 }
 
@@ -1972,7 +2012,7 @@
             y_offset = 15;
     }
 
-    skin_draw_pixmap(skin, drawable, gc, SKIN_TITLEBAR, 27, y_offset,
+    skin_draw_pixmap(NULL, skin, drawable, gc, SKIN_TITLEBAR, 27, y_offset,
                      0, 0, bmp_active_skin->properties.mainwin_width, MAINWIN_TITLEBAR_HEIGHT);
 }
 
--- a/src/audacious/skin.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/skin.h	Fri Nov 16 05:36:42 2007 +0200
@@ -29,7 +29,7 @@
 
 #include <glib.h>
 #include <gdk/gdk.h>
-
+#include <gtk/gtk.h>
 
 #define BMP_DEFAULT_SKIN_PATH \
   DATA_DIR G_DIR_SEPARATOR_S "Skins" G_DIR_SEPARATOR_S "Default"
@@ -219,7 +219,7 @@
 
 void skin_get_viscolor(Skin * skin, guchar vis_color[24][3]);
 gint skin_get_id(void);
-void skin_draw_pixmap(Skin * skin, GdkDrawable * drawable, GdkGC * gc,
+void skin_draw_pixmap(GtkWidget * widget, Skin * skin, GdkDrawable * drawable, GdkGC * gc,
                       SkinPixmapId pixmap_id,
                       gint xsrc, gint ysrc, gint xdest, gint ydest,
                       gint width, gint height);
--- a/src/audacious/tuple_formatter.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/tuple_formatter.c	Fri Nov 16 05:36:42 2007 +0200
@@ -24,6 +24,7 @@
 #include "config.h"
 #include "tuple.h"
 #include "tuple_formatter.h"
+#include "strings.h"
 
 /*
  * TUPLE_USE_COMPILER:
@@ -528,6 +529,7 @@
 #ifdef TUPLE_USE_COMPILER
     static TupleEvalContext *last_ctx = NULL;
     static TupleEvalNode *last_ev = NULL;
+    gchar *result = NULL;
 #endif
 
     if (initialized == FALSE)
@@ -556,6 +558,12 @@
         last_ctx = tuple_evalctx_new();
         last_string = g_strdup(string);
         last_ev = tuple_formatter_compile(last_ctx, last_string);
+        if (last_ctx->iserror) {
+            fprintf(stderr, "[TuplezCC]: %s", last_ctx->errmsg);
+        }
+        if (!last_ev) {
+            fprintf(stderr, "[TuplezCC]: Compilation failed!\n");
+        }
     }
 
 #ifdef TUPLE_COMPILER_DEBUG
@@ -567,7 +575,11 @@
 #endif
 
     tuple_evalctx_reset(last_ctx);
-    return tuple_formatter_eval(last_ctx, last_ev, tuple);
+    result = tuple_formatter_eval(last_ctx, last_ev, tuple);
+    if (last_ctx->iserror) {
+        fprintf(stderr, "[TuplezEV]: %s", last_ctx->errmsg);
+    }
+    return result;
 #else
     return tuple_formatter_process_construct(tuple, string);
 #endif
@@ -585,8 +597,12 @@
     rv = tuple_formatter_process_string(tuple, string);
 
     if(!rv || !strcmp(rv, "")) {
+        const gchar *file_name = tuple_get_string(tuple, FIELD_FILE_NAME, NULL);
+        gchar *realfn = g_filename_from_uri(file_name, NULL, NULL);
+
         g_free(rv);
-        rv = g_strdup(tuple_get_string(tuple, FIELD_FILE_NAME, NULL));
+        rv = str_to_utf8(realfn ? realfn : file_name);
+        g_free(realfn);
     }
 
     return rv;
--- a/src/audacious/ui_about.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_about.c	Fri Nov 16 05:36:42 2007 +0200
@@ -203,3 +203,10 @@
     gtk_widget_show_all(about_window);
     gtk_window_present(GTK_WINDOW(about_window));
 }
+
+void
+hide_about_window(void)
+{
+    g_return_if_fail(about_window);
+    gtk_widget_hide(GTK_WIDGET(about_window));
+}
--- a/src/audacious/ui_credits.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_credits.c	Fri Nov 16 05:36:42 2007 +0200
@@ -75,6 +75,7 @@
 
     N_("Default skin:"),
     "George Averill",
+	"Michael Färber",
     "William Pitcock",
     NULL,
 
--- a/src/audacious/ui_credits.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_credits.h	Fri Nov 16 05:36:42 2007 +0200
@@ -3,6 +3,7 @@
 #define ABOUT_H
 
 void show_about_window(void);
+void hide_about_window(void);
 void show_credits_window(void);
 
 #endif
--- a/src/audacious/ui_equalizer.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_equalizer.c	Fri Nov 16 05:36:42 2007 +0200
@@ -74,6 +74,7 @@
 
 
 GtkWidget *equalizerwin;
+GtkWidget *equalizerwin_graph;
 
 static GtkWidget *equalizerwin_load_window = NULL;
 static GtkWidget *equalizerwin_load_auto_window = NULL;
@@ -87,7 +88,6 @@
 static GtkWidget *equalizerwin_on, *equalizerwin_auto;
 
 static GtkWidget *equalizerwin_close, *equalizerwin_presets, *equalizerwin_shade;
-static GtkWidget *equalizerwin_graph;
 static GtkWidget *equalizerwin_preamp,*equalizerwin_bands[10];
 static GtkWidget *equalizerwin_volume, *equalizerwin_balance;
 
@@ -1282,7 +1282,7 @@
 gfloat
 equalizerwin_get_band(gint band)
 {
-    g_return_val_if_fail(band >= 0 && band < 10, 0);
+    g_return_val_if_fail(band >= 0 && band < 10, 0.0);
     return ui_skinned_equalizer_slider_get_position(equalizerwin_bands[band]);
 }
 
@@ -1515,3 +1515,13 @@
                                     G_CALLBACK(equalizerwin_delete_auto_delete),
                                     NULL);
 }
+
+void
+equalizer_activate(gboolean active)
+{
+    cfg.equalizer_active = active;
+    UI_SKINNED_BUTTON(equalizerwin_on)->inside = active;
+    gtk_widget_queue_draw(equalizerwin_on);
+
+    equalizerwin_eq_changed();
+}
--- a/src/audacious/ui_equalizer.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_equalizer.h	Fri Nov 16 05:36:42 2007 +0200
@@ -58,6 +58,9 @@
 gboolean equalizerwin_has_focus(void);
 
 extern GtkWidget *equalizerwin;
+extern GtkWidget *equalizerwin_graph;
 extern gboolean equalizerwin_focus;
 
+void equalizer_activate(gboolean active);
+
 #endif
--- a/src/audacious/ui_fileinfopopup.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_fileinfopopup.c	Fri Nov 16 05:36:42 2007 +0200
@@ -220,6 +220,8 @@
     GtkWidget *filepopup_progress;
 
     filepopup_win = gtk_window_new(GTK_WINDOW_POPUP);
+    gtk_window_set_type_hint(GTK_WINDOW(filepopup_win),
+		    		 GDK_WINDOW_TYPE_HINT_TOOLTIP);
     gtk_window_set_decorated(GTK_WINDOW(filepopup_win), FALSE);
     gtk_container_set_border_width(GTK_CONTAINER(filepopup_win), 6);
     gtk_window_set_transient_for(GTK_WINDOW(filepopup_win),
--- a/src/audacious/ui_fileopener.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_fileopener.c	Fri Nov 16 05:36:42 2007 +0200
@@ -108,8 +108,8 @@
     return FALSE;
 }
 
-void
-util_run_filebrowser_gtk2style(gboolean play_button)
+static void
+util_run_filebrowser_gtk2style(gboolean play_button, gboolean show)
 {
     static GtkWidget *window = NULL;
     GtkWidget *vbox, *hbox, *bbox;
@@ -119,9 +119,19 @@
     gchar *window_title, *toggle_text;
     gpointer action_stock, storage;
 
-    if(window) {
-        gtk_window_present(GTK_WINDOW(window)); /* raise filebrowser */
-        return;
+    if(!show) {
+        if(window){
+            gtk_widget_hide(window);
+            return;
+        }
+        else
+            return;
+    }
+    else {
+        if(window) {
+            gtk_window_present(GTK_WINDOW(window)); /* raise filebrowser */
+            return;
+        }
     }
     
     window_title = play_button ? _("Open Files") : _("Add Files");
@@ -339,17 +349,27 @@
     gtk_entry_set_text(GTK_ENTRY(filesel->selection_entry), "");
 }
 
-void
-util_run_filebrowser_classic(gboolean play_button)
+static void
+util_run_filebrowser_classic(gboolean play_button, gboolean show)
 {
     static GtkWidget *dialog;
     GtkWidget *button_add_selected, *button_add_all, *button_close,
     *button_add;
     char *title;
 
-    if (dialog != NULL) {
-    gtk_window_present(GTK_WINDOW(dialog));
-    return;
+    if (!show) {
+        if(dialog) {
+            gtk_widget_hide(dialog);
+            return;
+        }
+        else
+            return;
+    }
+    else {
+        if (dialog) {
+            gtk_window_present(GTK_WINDOW(dialog));
+            return;
+        }
     }
 
     if (play_button)
@@ -450,7 +470,16 @@
 run_filebrowser(gboolean play_button)
 {
     if (!cfg.use_xmms_style_fileselector)
-        util_run_filebrowser_gtk2style(play_button);
+        util_run_filebrowser_gtk2style(play_button, TRUE);
     else
-        util_run_filebrowser_classic(play_button);
+        util_run_filebrowser_classic(play_button, TRUE);
 }
+
+void
+hide_filebrowser(void)
+{
+    if (!cfg.use_xmms_style_fileselector)
+        util_run_filebrowser_gtk2style(FALSE, FALSE);
+    else
+        util_run_filebrowser_classic(FALSE, FALSE);
+}
--- a/src/audacious/ui_fileopener.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_fileopener.h	Fri Nov 16 05:36:42 2007 +0200
@@ -26,5 +26,6 @@
 #define PLAY_BUTTON     TRUE
 
 void run_filebrowser(gboolean clear_pl_on_ok);
+void hide_filebrowser(void);
 
 #endif
--- a/src/audacious/ui_jumptotrack.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_jumptotrack.c	Fri Nov 16 05:36:42 2007 +0200
@@ -80,6 +80,7 @@
 #include "ui_skinned_window.h"
 
 static GtkWidget *jump_to_track_win = NULL;
+static gulong serial = 0;
 
 static void
 change_song(guint pos)
@@ -91,6 +92,13 @@
     playback_initiate();
 }
 
+void
+ui_jump_to_track_hide(void)
+{
+    g_return_if_fail(jump_to_track_win);
+    gtk_widget_hide(jump_to_track_win);
+}
+
 static void
 ui_jump_to_track_jump(GtkTreeView * treeview)
 {
@@ -109,11 +117,8 @@
 
     change_song(pos - 1);
 
-    /* FIXME: should only hide window */
-    if(cfg.close_jtf_dialog){
-        gtk_widget_destroy(jump_to_track_win);
-        jump_to_track_win = NULL;
-    }
+    if(cfg.close_jtf_dialog)
+        ui_jump_to_track_hide();
 }
 
 static void
@@ -212,9 +217,7 @@
 {
     switch (event->keyval) {
     case GDK_Escape:
-        /* FIXME: show only hide window */
-        gtk_widget_destroy(jump_to_track_win);
-        jump_to_track_win = NULL;
+        ui_jump_to_track_hide();
         return TRUE;
     case GDK_KP_Enter:
         ui_jump_to_track_queue_cb(NULL, data);
@@ -247,12 +250,9 @@
     return rv;
 }
 
-/* FIXME: Clear the entry when the list gets updated */
 void
 ui_jump_to_track_update(GtkWidget * widget, gpointer user_data)
 {
-    /* FIXME: Is not in sync with playlist due to delayed extinfo
-     * reading */
     guint row;
     GList *playlist_glist;
     gchar *desc_buf = NULL;
@@ -262,10 +262,18 @@
 
     GtkTreeModel *store;
 
+    GtkTreeView *tree = GTK_TREE_VIEW(g_object_get_data(user_data, "treeview"));
+    GtkEntry *edit = g_object_get_data(user_data, "edit");
+
     if (!jump_to_track_win)
         return;
 
-    store = gtk_tree_view_get_model(GTK_TREE_VIEW(user_data));
+    /* clear edit widget */
+    if(edit){
+        gtk_entry_set_text(edit, "\0");
+    }
+
+    store = gtk_tree_view_get_model(tree);
     gtk_list_store_clear(GTK_LIST_STORE(store));
 
     row = 1;
@@ -296,8 +304,9 @@
     }
 
     gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter);
-    selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(user_data));
+    selection = gtk_tree_view_get_selection(tree);
     gtk_tree_selection_select_iter(selection, &iter);
+    serial = playlist->serial; // important. --yaz
 }
 
 static void
@@ -443,11 +452,9 @@
     gtk_list_store_clear(jtf_store);
 
     row = 1;
-
     playlist = playlist_get_active();
 
     PLAYLIST_LOCK(playlist);
-
     for (playlist_glist = playlist->entries; playlist_glist;
          playlist_glist = g_list_next(playlist_glist)) {
 
@@ -470,36 +477,50 @@
                            0, row, 1, desc_buf, -1);
         row++;
 
-        if (desc_buf) {
-            g_free(desc_buf);
-            desc_buf = NULL;
-        }
+        g_free(desc_buf);
+        desc_buf = NULL;
     }
-
     PLAYLIST_UNLOCK(playlist);
 
     /* attach liststore to treeview */
     gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), GTK_TREE_MODEL(jtf_store));
     g_object_unref(jtf_store);
+    serial = playlist->serial;
     return FALSE;
 }
 
+static gboolean
+watchdog(gpointer storage)
+{
+    GtkWidget *widget;
+    Playlist *playlist = playlist_get_active();
+
+    if(serial == playlist->serial)
+        return TRUE;
+
+    widget = g_object_get_data(storage, "widget");
+    ui_jump_to_track_update(widget, storage);
+    return TRUE;
+}
+
 void
 ui_jump_to_track(void)
 {
     GtkWidget *scrollwin;
     GtkWidget *vbox, *bbox, *sep;
     GtkWidget *toggle;
-    GtkWidget *jump, *queue, *cancel;
+    GtkWidget *jump, *queue, *close;
     GtkWidget *rescan, *edit;
     GtkWidget *search_label, *hbox;
 
-    GtkWidget *treeview;
+    GtkWidget *treeview = NULL;
     GtkListStore *jtf_store;
 
     GtkCellRenderer *renderer;
     GtkTreeViewColumn *column;
 
+    gpointer storage;
+
     if (jump_to_track_win) {
         gtk_window_present(GTK_WINDOW(jump_to_track_win));
         return;
@@ -612,8 +633,16 @@
 
     rescan = gtk_button_new_from_stock(GTK_STOCK_REFRESH);
     gtk_box_pack_start(GTK_BOX(bbox), rescan, FALSE, FALSE, 0);
+
+    /* pack to container */
+    storage = g_object_new(G_TYPE_OBJECT, NULL);
+    g_object_set_data(storage, "widget", rescan);
+    g_object_set_data(storage, "treeview", treeview);
+    g_object_set_data(storage, "edit", edit);
+
     g_signal_connect(rescan, "clicked",
-                     G_CALLBACK(ui_jump_to_track_update), treeview);
+                     G_CALLBACK(ui_jump_to_track_update), storage);
+
     GTK_WIDGET_SET_FLAGS(rescan, GTK_CAN_DEFAULT);
     gtk_widget_grab_default(rescan);
 
@@ -627,14 +656,18 @@
     GTK_WIDGET_SET_FLAGS(jump, GTK_CAN_DEFAULT);
     gtk_widget_grab_default(jump);
 
-    cancel = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
-    gtk_box_pack_start(GTK_BOX(bbox), cancel, FALSE, FALSE, 0);
-    g_signal_connect_swapped(cancel, "clicked",
-                             G_CALLBACK(gtk_widget_destroy),
-                             jump_to_track_win);
-    GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT);
+    close = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
+    gtk_box_pack_start(GTK_BOX(bbox), close, FALSE, FALSE, 0);
+/*     g_signal_connect_swapped(close, "clicked", */
+/*                              G_CALLBACK(gtk_widget_destroy), */
+/*                              jump_to_track_win); */
+    g_signal_connect_swapped(close, "clicked",
+                             G_CALLBACK(gtk_widget_hide),
+                             jump_to_track_win); // just hide --yaz
+    GTK_WIDGET_SET_FLAGS(close, GTK_CAN_DEFAULT);
 
     g_timeout_add(100, (GSourceFunc)ui_jump_to_track_fill, treeview);
+    g_timeout_add(500, (GSourceFunc)watchdog, storage);
 
     gtk_widget_show_all(jump_to_track_win);
     gtk_widget_grab_focus(edit);
--- a/src/audacious/ui_jumptotrack.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_jumptotrack.h	Fri Nov 16 05:36:42 2007 +0200
@@ -28,5 +28,6 @@
 
 extern void ui_jump_to_track_update(GtkWidget * widget, gpointer user_data);
 extern void ui_jump_to_track(void);
+extern void ui_jump_to_track_hide(void);
 
 #endif
--- a/src/audacious/ui_main.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_main.c	Fri Nov 16 05:36:42 2007 +0200
@@ -694,23 +694,16 @@
         cfg.player_shaded ? 3 : bmp_active_skin->properties.mainwin_close_y);
 
     mainwin_refresh_visible();
+
     /* window size, mainwinWidth && mainwinHeight properties */
     if (bmp_active_skin->properties.mainwin_height && bmp_active_skin->properties.mainwin_width)
     {
-    gint width, height;
-
-    gdk_window_get_size(mainwin->window, &width, &height);
-
-        if (width == bmp_active_skin->properties.mainwin_width * (cfg.doublesize + 1) &&
-        height == bmp_active_skin->properties.mainwin_height * (cfg.doublesize + 1))
-            return;
-
         dock_window_resize(GTK_WINDOW(mainwin), cfg.player_shaded ? MAINWIN_SHADED_WIDTH * (cfg.doublesize + 1) : bmp_active_skin->properties.mainwin_width * (cfg.doublesize + 1),
-        cfg.player_shaded ? MAINWIN_SHADED_HEIGHT * (cfg.doublesize + 1) : bmp_active_skin->properties.mainwin_height * (cfg.doublesize + 1),
-        bmp_active_skin->properties.mainwin_width * (cfg.doublesize + 1),
-        bmp_active_skin->properties.mainwin_height * (cfg.doublesize + 1));
-
-    gdk_flush();
+            cfg.player_shaded ? MAINWIN_SHADED_HEIGHT * (cfg.doublesize + 1) : bmp_active_skin->properties.mainwin_height * (cfg.doublesize + 1),
+            bmp_active_skin->properties.mainwin_width * (cfg.doublesize + 1),
+            bmp_active_skin->properties.mainwin_height * (cfg.doublesize + 1));
+
+        gdk_flush();
     }
 }
 
@@ -1697,17 +1690,11 @@
       nullmask = NULL;
     }
 
-    gtk_window_resize(GTK_WINDOW(mainwin),
-                         !bmp_active_skin->properties.mainwin_width ? PLAYER_WIDTH :
-                bmp_active_skin->properties.mainwin_width,
-                         !bmp_active_skin->properties.mainwin_height ? PLAYER_HEIGHT :
-                bmp_active_skin->properties.mainwin_height);
-
     if (cfg.player_x != -1 && cfg.save_window_position)
         gtk_window_move(GTK_WINDOW(mainwin), cfg.player_x, cfg.player_y);
 
+    mainwin_refresh_hints();
     gtk_window_present(GTK_WINDOW(mainwin));
-    mainwin_refresh_hints();
 }
 
 void
--- a/src/audacious/ui_main_evlisteners.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_main_evlisteners.c	Fri Nov 16 05:36:42 2007 +0200
@@ -19,6 +19,8 @@
  */
 
 #include <glib.h>
+#include <math.h>
+
 #include "hook.h"
 #include "playback.h"
 #include "playlist.h"
@@ -26,6 +28,7 @@
 #include "playlist_evlisteners.h"
 
 #include "ui_main.h"
+#include "ui_equalizer.h"
 #include "ui_skinned_textbox.h"
 #include "ui_playlist.h"
 
@@ -45,9 +48,33 @@
     mainwin_disable_seekbar();
 }
 
+static void
+ui_main_evlistener_volume_change(gpointer hook_data, gpointer user_data)
+{
+    gint *h_vol = (gint *) hook_data;
+    gint vl, vr, b, v;
+
+    vl = CLAMP(h_vol[0], 0, 100);
+    vr = CLAMP(h_vol[1], 0, 100);
+    v = MAX(vl, vr);
+    if (vl > vr)
+        b = (gint) rint(((gdouble) vr / vl) * 100) - 100;
+    else if (vl < vr)
+        b = 100 - (gint) rint(((gdouble) vl / vr) * 100);
+    else
+        b = 0;
+
+    mainwin_set_volume_slider(v);
+    equalizerwin_set_volume_slider(v);
+    mainwin_set_balance_slider(b);
+    equalizerwin_set_balance_slider(b);
+}
+
 void
 ui_main_evlistener_init(void)
 {
     hook_associate("title change", ui_main_evlistener_title_change, NULL);
     hook_associate("hide seekbar", ui_main_evlistener_hide_seekbar, NULL);
+    hook_associate("volume set", ui_main_evlistener_volume_change, NULL);
 }
+
--- a/src/audacious/ui_preferences.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_preferences.c	Fri Nov 16 05:36:42 2007 +0200
@@ -1634,66 +1634,34 @@
 }
 
 static void
+reload_skin()
+{
+    /* reload the skin to apply the change */
+    skin_reload_forced();
+    ui_skinned_window_draw_all(mainwin);
+    ui_skinned_window_draw_all(equalizerwin);
+    ui_skinned_window_draw_all(playlistwin);
+}
+
+static void
 on_red_scale_value_changed(GtkHScale *scale, gpointer data)
 {
-	//GladeXML *xml = prefswin_get_xml();
-	//GtkWidget *widget;
-	gint value;
-
-	value = gtk_range_get_value(GTK_RANGE(scale));
-
-	if (value != cfg.colorize_r)
-	{
-		cfg.colorize_r = value;
-
-		/* reload the skin to apply the change */
-		skin_reload_forced();
-		ui_skinned_window_draw_all(mainwin);
-		ui_skinned_window_draw_all(equalizerwin);
-		ui_skinned_window_draw_all(playlistwin);
-	}
+    cfg.colorize_r = gtk_range_get_value(GTK_RANGE(scale));
+    reload_skin();
 }
 
 static void
 on_green_scale_value_changed(GtkHScale *scale, gpointer data)
 {
-	//GladeXML *xml = prefswin_get_xml();
-	//GtkWidget *widget;
-	gint value;
-
-	value = gtk_range_get_value(GTK_RANGE(scale));
-
-	if (value != cfg.colorize_r)
-	{
-		cfg.colorize_g = value;
-
-		/* reload the skin to apply the change */
-		skin_reload_forced();
-		ui_skinned_window_draw_all(mainwin);
-		ui_skinned_window_draw_all(equalizerwin);
-		ui_skinned_window_draw_all(playlistwin);
-	}
+    cfg.colorize_g = gtk_range_get_value(GTK_RANGE(scale));
+    reload_skin();
 }
 
 static void
 on_blue_scale_value_changed(GtkHScale *scale, gpointer data)
 {
-	//GladeXML *xml = prefswin_get_xml();
-	//GtkWidget *widget;
-	gint value;
-
-	value = gtk_range_get_value(GTK_RANGE(scale));
-
-	if (value != cfg.colorize_r)
-	{
-		cfg.colorize_b = value;
-
-		/* reload the skin to apply the change */
-		skin_reload_forced();
-		ui_skinned_window_draw_all(mainwin);
-		ui_skinned_window_draw_all(equalizerwin);
-		ui_skinned_window_draw_all(playlistwin);
-	}
+    cfg.colorize_b = gtk_range_get_value(GTK_RANGE(scale));
+    reload_skin();
 }
 
 static void
@@ -2214,6 +2182,13 @@
     }
 }
 
+void
+hide_prefs_window(void)
+{
+    g_return_if_fail(prefswin);
+    gtk_widget_hide(GTK_WIDGET(prefswin));
+}
+
 static void
 prefswin_page_queue_new(GtkWidget *container, gchar *name, gchar *imgurl)
 {
--- a/src/audacious/ui_preferences.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_preferences.h	Fri Nov 16 05:36:42 2007 +0200
@@ -22,6 +22,7 @@
 
 void create_prefs_window(void);
 void show_prefs_window(void);
+void hide_prefs_window(void);
 
 gint prefswin_page_new(GtkWidget *container, gchar *name, gchar *imgurl);
 void prefswin_page_destroy(GtkWidget *container);
--- a/src/audacious/ui_skinned_button.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_button.c	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -40,7 +40,6 @@
     gint             h;
     SkinPixmapId     skin_index1;
     SkinPixmapId     skin_index2;
-    GtkWidget        *fixed;
     gboolean         double_size;
     gint             move_x, move_y;
 
@@ -307,7 +306,7 @@
 
     switch (button->type) {
         case TYPE_PUSH:
-            skin_draw_pixmap(bmp_active_skin, obj, gc,
+            skin_draw_pixmap(widget, bmp_active_skin, obj, gc,
                              button->pressed ? priv->skin_index2 : priv->skin_index1,
                              button->pressed ? priv->px : priv->nx,
                              button->pressed ? priv->py : priv->ny,
@@ -315,13 +314,13 @@
             break;
         case TYPE_TOGGLE:
             if (button->inside)
-                skin_draw_pixmap(bmp_active_skin, obj, gc,
+                skin_draw_pixmap(widget, bmp_active_skin, obj, gc,
                                  button->pressed ? priv->skin_index2 : priv->skin_index1,
                                  button->pressed ? priv->ppx : priv->pnx,
                                  button->pressed ? priv->ppy : priv->pny,
                                  0, 0, priv->w, priv->h);
             else
-                skin_draw_pixmap(bmp_active_skin, obj, gc,
+                skin_draw_pixmap(widget, bmp_active_skin, obj, gc,
                                  button->pressed ? priv->skin_index2 : priv->skin_index1,
                                  button->pressed ? priv->px : priv->nx,
                                  button->pressed ? priv->py : priv->ny,
@@ -372,10 +371,9 @@
     sbutton->type = TYPE_PUSH;
     priv->skin_index1 = si;
     priv->skin_index2 = si;
-    priv->fixed = fixed;
     priv->double_size = FALSE;
 
-    gtk_fixed_put(GTK_FIXED(priv->fixed),GTK_WIDGET(button), sbutton->x, sbutton->y);
+    gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(button), sbutton->x, sbutton->y);
 }
 
 void ui_skinned_toggle_button_setup(GtkWidget *button, GtkWidget *fixed, gint x, gint y, gint w, gint h, gint nx, gint ny, gint px, gint py, gint pnx, gint pny, gint ppx, gint ppy, SkinPixmapId si) {
@@ -397,10 +395,9 @@
     sbutton->type = TYPE_TOGGLE;
     priv->skin_index1 = si;
     priv->skin_index2 = si;
-    priv->fixed = fixed;
     priv->double_size = FALSE;
 
-    gtk_fixed_put(GTK_FIXED(priv->fixed),GTK_WIDGET(button), sbutton->x, sbutton->y);
+    gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(button), sbutton->x, sbutton->y);
 }
 
 void ui_skinned_small_button_setup(GtkWidget *button, GtkWidget *fixed, gint x, gint y, gint w, gint h) {
@@ -412,10 +409,9 @@
     sbutton->x = x;
     sbutton->y = y;
     sbutton->type = TYPE_SMALL;
-    priv->fixed = fixed;
     priv->double_size = FALSE;
 
-    gtk_fixed_put(GTK_FIXED(priv->fixed),GTK_WIDGET(button), sbutton->x, sbutton->y);
+    gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(button), sbutton->x, sbutton->y);
 }
 
 static void button_pressed(UiSkinnedButton *button) {
@@ -516,7 +512,8 @@
 static void ui_skinned_button_redraw(UiSkinnedButton *button) {
     UiSkinnedButtonPrivate *priv = UI_SKINNED_BUTTON_GET_PRIVATE (button);
     if (priv->move_x || priv->move_y)
-        gtk_fixed_move(GTK_FIXED(priv->fixed), GTK_WIDGET(button), button->x+priv->move_x, button->y+priv->move_y);
+        gtk_fixed_move(GTK_FIXED(gtk_widget_get_parent(GTK_WIDGET(button))), GTK_WIDGET(button),
+                       button->x+priv->move_x, button->y+priv->move_y);
 
     gtk_widget_queue_draw(GTK_WIDGET(button));
 }
--- a/src/audacious/ui_skinned_button.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_button.h	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
--- a/src/audacious/ui_skinned_equalizer_graph.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_equalizer_graph.c	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * Based on:
  * BMP - Cross-platform multimedia player
@@ -101,10 +101,9 @@
     equalizer_graph->x = x;
     equalizer_graph->y = y;
     equalizer_graph->skin_index = SKIN_EQMAIN;
-    equalizer_graph->fixed = fixed;
     equalizer_graph->double_size = FALSE;
 
-    gtk_fixed_put(GTK_FIXED(equalizer_graph->fixed), GTK_WIDGET(equalizer_graph), equalizer_graph->x, equalizer_graph->y);
+    gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(equalizer_graph), equalizer_graph->x, equalizer_graph->y);
 
     return GTK_WIDGET(equalizer_graph);
 }
@@ -246,9 +245,9 @@
      */
     void (*__init_spline) (gfloat *, gfloat *, gint, gfloat *) = init_spline;
 
-    skin_draw_pixmap(bmp_active_skin, obj, gc, equalizer_graph->skin_index, 0, 294, 0, 0,
+    skin_draw_pixmap(widget, bmp_active_skin, obj, gc, equalizer_graph->skin_index, 0, 294, 0, 0,
                      equalizer_graph->width, equalizer_graph->height);
-    skin_draw_pixmap(bmp_active_skin, obj, gc, equalizer_graph->skin_index, 0, 314,
+    skin_draw_pixmap(widget, bmp_active_skin, obj, gc, equalizer_graph->skin_index, 0, 314,
                      0, 9 + ((cfg.equalizer_preamp * 9) / 20),
                      equalizer_graph->width, 1);
 
--- a/src/audacious/ui_skinned_equalizer_graph.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_equalizer_graph.h	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * Based on:
  * BMP - Cross-platform multimedia player
@@ -46,7 +46,6 @@
 
     gint             x, y, width, height;
     SkinPixmapId     skin_index;
-    GtkWidget        *fixed;
     gboolean         double_size;
 };
 
--- a/src/audacious/ui_skinned_equalizer_slider.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_equalizer_slider.c	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * Based on:
  * BMP - Cross-platform multimedia player
@@ -38,7 +38,6 @@
 };
 
 struct _UiSkinnedEqualizerSliderPrivate {
-    GtkWidget        *fixed;
     SkinPixmapId     skin_index;
     gboolean         double_size;
     gint             position;
@@ -129,9 +128,8 @@
     priv->width = 14;
     priv->height = 63;
     priv->skin_index = SKIN_EQMAIN;
-    priv->fixed = fixed;
 
-    gtk_fixed_put(GTK_FIXED(priv->fixed), GTK_WIDGET(es), es->x, es->y);
+    gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(es), es->x, es->y);
 
     return GTK_WIDGET(es);
 }
@@ -216,14 +214,14 @@
     gint frame;
     frame = 27 - ((priv->position * 27) / 50);
     if (frame < 14)
-        skin_draw_pixmap(bmp_active_skin, obj, gc, priv->skin_index, (frame * 15) + 13, 164, 0, 0, priv->width, priv->height);
+        skin_draw_pixmap(widget, bmp_active_skin, obj, gc, priv->skin_index, (frame * 15) + 13, 164, 0, 0, priv->width, priv->height);
     else
-        skin_draw_pixmap(bmp_active_skin, obj, gc, priv->skin_index, ((frame - 14) * 15) + 13, 229, 0, 0, priv->width, priv->height);
+        skin_draw_pixmap(widget, bmp_active_skin, obj, gc, priv->skin_index, ((frame - 14) * 15) + 13, 229, 0, 0, priv->width, priv->height);
 
     if (priv->pressed)
-        skin_draw_pixmap(bmp_active_skin, obj, gc, priv->skin_index, 0, 176, 1, priv->position, 11, 11);
+        skin_draw_pixmap(widget, bmp_active_skin, obj, gc, priv->skin_index, 0, 176, 1, priv->position, 11, 11);
     else
-        skin_draw_pixmap(bmp_active_skin, obj, gc, priv->skin_index, 0, 164, 1, priv->position, 11, 11);
+        skin_draw_pixmap(widget, bmp_active_skin, obj, gc, priv->skin_index, 0, 164, 1, priv->position, 11, 11);
 
     GdkPixmap *image = NULL;
 
--- a/src/audacious/ui_skinned_equalizer_slider.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_equalizer_slider.h	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * Based on:
  * BMP - Cross-platform multimedia player
--- a/src/audacious/ui_skinned_horizontal_slider.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_horizontal_slider.c	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * Based on:
  * BMP - Cross-platform multimedia player
@@ -39,7 +39,6 @@
 };
 
 struct _UiSkinnedHorizontalSliderPrivate {
-    GtkWidget        *fixed;
     SkinPixmapId     skin_index;
     gboolean         double_size;
     gint             frame, frame_offset, frame_height, min, max;
@@ -141,7 +140,6 @@
     hs->y = y;
     priv->width = w;
     priv->height = h;
-    priv->fixed = fixed;
     hs->knob_nx = knx;
     hs->knob_ny = kny;
     hs->knob_px = kpx;
@@ -158,7 +156,7 @@
         priv->frame = priv->frame_cb(0);
     priv->skin_index = si;
 
-    gtk_fixed_put(GTK_FIXED(priv->fixed), GTK_WIDGET(hs), hs->x, hs->y);
+    gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(hs), hs->x, hs->y);
 
     return GTK_WIDGET(hs);
 }
@@ -249,18 +247,18 @@
     obj = gdk_pixmap_new(NULL, priv->width, priv->height, gdk_rgb_get_visual()->depth);
     gc = gdk_gc_new(obj);
 
-    skin_draw_pixmap(bmp_active_skin, obj, gc,
+    skin_draw_pixmap(widget, bmp_active_skin, obj, gc,
                      priv->skin_index, priv->frame_offset,
                      priv->frame * priv->frame_height,
                      0, 0, priv->width, priv->height);
     if (hs->pressed)
-        skin_draw_pixmap(bmp_active_skin, obj, gc,
+        skin_draw_pixmap(widget, bmp_active_skin, obj, gc,
                          priv->skin_index, hs->knob_px,
                          hs->knob_py, priv->position,
                          ((priv->height - priv->knob_height) / 2),
                          priv->knob_width, priv->knob_height);
     else
-        skin_draw_pixmap(bmp_active_skin, obj, gc,
+        skin_draw_pixmap(widget, bmp_active_skin, obj, gc,
                          priv->skin_index, hs->knob_nx,
                          hs->knob_ny, priv->position,
                          ((priv->height - priv->knob_height) / 2),
--- a/src/audacious/ui_skinned_horizontal_slider.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_horizontal_slider.h	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * Based on:
  * BMP - Cross-platform multimedia player
--- a/src/audacious/ui_skinned_menurow.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_menurow.c	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * Based on:
  * BMP - Cross-platform multimedia player
@@ -133,10 +133,9 @@
 
     menurow->skin_index = si;
 
-    menurow->fixed = fixed;
     menurow->double_size = FALSE;
 
-    gtk_fixed_put(GTK_FIXED(menurow->fixed), GTK_WIDGET(menurow), menurow->x, menurow->y);
+    gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(menurow), menurow->x, menurow->y);
 
     return GTK_WIDGET(menurow);
 }
@@ -219,23 +218,23 @@
 
     if (menurow->selected == MENUROW_NONE) {
         if (cfg.always_show_cb || menurow->pushed)
-            skin_draw_pixmap(bmp_active_skin, obj, gc, menurow->skin_index,
+            skin_draw_pixmap(widget, bmp_active_skin, obj, gc, menurow->skin_index,
                              menurow->nx, menurow->ny, 0, 0, 8, 43);
         else
-            skin_draw_pixmap(bmp_active_skin, obj, gc, menurow->skin_index,
+            skin_draw_pixmap(widget, bmp_active_skin, obj, gc, menurow->skin_index,
                              menurow->nx + 8, menurow->ny, 0, 0, 8, 43);
     }
     else {
-        skin_draw_pixmap(bmp_active_skin, obj, gc, menurow->skin_index,
+        skin_draw_pixmap(widget, bmp_active_skin, obj, gc, menurow->skin_index,
                          menurow->sx + ((menurow->selected - 1) * 8),
                          menurow->sy, 0, 0, 8, 43);
     }
     if (cfg.always_show_cb || menurow->pushed) {
         if (menurow->always_selected)
-            skin_draw_pixmap(bmp_active_skin, obj, gc, menurow->skin_index,
+            skin_draw_pixmap(widget, bmp_active_skin, obj, gc, menurow->skin_index,
                              menurow->sx + 8, menurow->sy + 10, 0, 10, 8, 8);
         if (menurow->doublesize_selected)
-            skin_draw_pixmap(bmp_active_skin, obj, gc, menurow->skin_index,
+            skin_draw_pixmap(widget, bmp_active_skin, obj, gc, menurow->skin_index,
                              menurow->sx + 24, menurow->sy + 26, 0, 26, 8, 8);
     }
 
--- a/src/audacious/ui_skinned_menurow.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_menurow.h	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * Based on:
  * BMP - Cross-platform multimedia player
@@ -50,7 +50,6 @@
     GtkWidget        widget;
 
     gint             x, y, width, height;
-    GtkWidget        *fixed;
     gboolean         double_size;
     gint             nx, ny;
     gint             sx, sy;
--- a/src/audacious/ui_skinned_monostereo.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_monostereo.c	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * Based on:
  * BMP - Cross-platform multimedia player
@@ -102,10 +102,9 @@
     monostereo->x = x;
     monostereo->y = y;
     monostereo->skin_index = si;
-    monostereo->fixed = fixed;
     monostereo->double_size = FALSE;
 
-    gtk_fixed_put(GTK_FIXED(monostereo->fixed), GTK_WIDGET(monostereo), monostereo->x, monostereo->y);
+    gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(monostereo), monostereo->x, monostereo->y);
 
     return GTK_WIDGET(monostereo);
 }
@@ -187,17 +186,17 @@
 
     switch (monostereo->num_channels) {
     case 1:
-        skin_draw_pixmap(bmp_active_skin, obj, gc, monostereo->skin_index, 29, 0, 0, 0, 27, 12);
-        skin_draw_pixmap(bmp_active_skin, obj, gc, monostereo->skin_index, 0, 12, 27, 0, 29, 12);
+        skin_draw_pixmap(widget, bmp_active_skin, obj, gc, monostereo->skin_index, 29, 0, 0, 0, 27, 12);
+        skin_draw_pixmap(widget, bmp_active_skin, obj, gc, monostereo->skin_index, 0, 12, 27, 0, 29, 12);
         break;
     case 2:
-        skin_draw_pixmap(bmp_active_skin, obj, gc, monostereo->skin_index, 29, 12, 0, 0, 27, 12);
-        skin_draw_pixmap(bmp_active_skin, obj, gc, monostereo->skin_index, 0, 0, 27, 0, 29, 12);
+        skin_draw_pixmap(widget, bmp_active_skin, obj, gc, monostereo->skin_index, 29, 12, 0, 0, 27, 12);
+        skin_draw_pixmap(widget, bmp_active_skin, obj, gc, monostereo->skin_index, 0, 0, 27, 0, 29, 12);
         break;
     default:
     case 0:
-        skin_draw_pixmap(bmp_active_skin, obj, gc, monostereo->skin_index, 29, 12, 0, 0, 27, 12);
-        skin_draw_pixmap(bmp_active_skin, obj, gc, monostereo->skin_index, 0, 12, 27, 0, 29, 12);
+        skin_draw_pixmap(widget, bmp_active_skin, obj, gc, monostereo->skin_index, 29, 12, 0, 0, 27, 12);
+        skin_draw_pixmap(widget, bmp_active_skin, obj, gc, monostereo->skin_index, 0, 12, 27, 0, 29, 12);
         break;
     }
 
--- a/src/audacious/ui_skinned_monostereo.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_monostereo.h	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * Based on:
  * BMP - Cross-platform multimedia player
@@ -47,7 +47,6 @@
     gint             x, y, width, height;
     gint             num_channels;
     SkinPixmapId     skin_index;
-    GtkWidget        *fixed;
     gboolean         double_size;
 };
 
--- a/src/audacious/ui_skinned_number.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_number.c	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * Based on:
  * BMP - Cross-platform multimedia player
@@ -108,10 +108,9 @@
     number->num = 0;
     number->skin_index = si;
 
-    number->fixed = fixed;
     number->double_size = FALSE;
 
-    gtk_fixed_put(GTK_FIXED(number->fixed), GTK_WIDGET(number), number->x, number->y);
+    gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(number), number->x, number->y);
 
     return GTK_WIDGET(number);
 }
@@ -193,7 +192,7 @@
     if (number->num > 11 || number->num < 0)
         number->num = 10;
 
-    skin_draw_pixmap(bmp_active_skin, obj, gc,
+    skin_draw_pixmap(widget, bmp_active_skin, obj, gc,
                      number->skin_index, number->num * 9, 0,
                      0, 0, number->width, number->height);
 
@@ -227,6 +226,7 @@
 }
 
 void ui_skinned_number_set_number(GtkWidget *widget, gint num) {
+    g_return_if_fail(UI_SKINNED_IS_NUMBER(widget));
     UiSkinnedNumber *number = UI_SKINNED_NUMBER (widget);
 
     if (number->num == num)
@@ -235,3 +235,13 @@
     number->num = num;
     gtk_widget_queue_draw(GTK_WIDGET(number));
 }
+
+void ui_skinned_number_set_size(GtkWidget *widget, gint width, gint height) {
+    g_return_if_fail(UI_SKINNED_IS_NUMBER(widget));
+    UiSkinnedNumber *number = UI_SKINNED_NUMBER (widget);
+
+    number->width = width;
+    number->height = height;
+
+    gtk_widget_set_size_request(widget, width*(1+number->double_size), height*(1+number->double_size));
+}
--- a/src/audacious/ui_skinned_number.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_number.h	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -42,7 +42,6 @@
     gint             num;
     gboolean         double_size;
     SkinPixmapId     skin_index;
-    GtkWidget        *fixed;
 };
 
 struct _UiSkinnedNumberClass {
@@ -53,6 +52,7 @@
 GtkWidget* ui_skinned_number_new (GtkWidget *fixed, gint x, gint y, SkinPixmapId si);
 GtkType ui_skinned_number_get_type(void);
 void ui_skinned_number_set_number(GtkWidget *widget, gint num);
+void ui_skinned_number_set_size(GtkWidget *widget, gint width, gint height);
 
 #ifdef __cplusplus
 }
--- a/src/audacious/ui_skinned_playlist.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_playlist.c	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * Based on:
  * BMP - Cross-platform multimedia player
@@ -72,7 +72,6 @@
 };
 
 struct _UiSkinnedPlaylistPrivate {
-    GtkWidget        *fixed;
     SkinPixmapId     skin_index;
     gint             width, height;
     gint             resize_width, resize_height;
@@ -179,10 +178,9 @@
     hs->y = y;
     priv->width = w;
     priv->height = h;
-    priv->fixed = fixed;
     priv->skin_index = SKIN_PLEDIT;
 
-    gtk_fixed_put(GTK_FIXED(priv->fixed), GTK_WIDGET(hs), hs->x, hs->y);
+    gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(hs), hs->x, hs->y);
 
     return GTK_WIDGET(hs);
 }
--- a/src/audacious/ui_skinned_playlist.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_playlist.h	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * Based on:
  * BMP - Cross-platform multimedia player
--- a/src/audacious/ui_skinned_playlist_slider.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_playlist_slider.c	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * Based on:
  * BMP - Cross-platform multimedia player
@@ -39,7 +39,6 @@
 };
 
 struct _UiSkinnedPlaylistSliderPrivate {
-    GtkWidget        *fixed;
     SkinPixmapId     skin_index;
     gint             width, height;
 
@@ -133,10 +132,9 @@
     hs->y = y;
     priv->width = 8;
     priv->height = h;
-    priv->fixed = fixed;
     priv->skin_index = SKIN_PLEDIT;
 
-    gtk_fixed_put(GTK_FIXED(priv->fixed), GTK_WIDGET(hs), hs->x, hs->y);
+    gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(hs), hs->x, hs->y);
 
     return GTK_WIDGET(hs);
 }
@@ -251,7 +249,7 @@
     }
 
     /* drawing knob */
-    skin_draw_pixmap(bmp_active_skin, obj, gc, priv->skin_index, ps->pressed ? 61 : 52, 53, 0, y, priv->width, 18);
+    skin_draw_pixmap(widget, bmp_active_skin, obj, gc, priv->skin_index, ps->pressed ? 61 : 52, 53, 0, y, priv->width, 18);
 
     gdk_draw_drawable(widget->window, gc, obj, 0, 0, 0, 0, priv->width, priv->height);
     g_object_unref(obj);
@@ -326,7 +324,8 @@
     if (priv->resize_height)
         gtk_widget_set_size_request(GTK_WIDGET(playlist_slider), priv->width, priv->height+priv->resize_height);
     if (priv->move_x)
-        gtk_fixed_move(GTK_FIXED(priv->fixed), GTK_WIDGET(playlist_slider), playlist_slider->x+priv->move_x, playlist_slider->y);
+        gtk_fixed_move(GTK_FIXED(gtk_widget_get_parent(GTK_WIDGET(playlist_slider))), GTK_WIDGET(playlist_slider),
+                       playlist_slider->x+priv->move_x, playlist_slider->y);
 
     gtk_widget_queue_draw(GTK_WIDGET(playlist_slider));
 }
--- a/src/audacious/ui_skinned_playlist_slider.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_playlist_slider.h	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * Based on:
  * BMP - Cross-platform multimedia player
--- a/src/audacious/ui_skinned_playstatus.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_playstatus.c	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * Based on:
  * BMP - Cross-platform multimedia player
@@ -104,10 +104,9 @@
     playstatus->x = x;
     playstatus->y = y;
 
-    playstatus->fixed = fixed;
     playstatus->double_size = FALSE;
 
-    gtk_fixed_put(GTK_FIXED(playstatus->fixed), GTK_WIDGET(playstatus), playstatus->x, playstatus->y);
+    gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(playstatus), playstatus->x, playstatus->y);
 
     return GTK_WIDGET(playstatus);
 }
@@ -190,20 +189,20 @@
     if (playstatus->status == STATUS_STOP && playstatus->buffering == TRUE)
         playstatus->buffering = FALSE;
     if (playstatus->status == STATUS_PLAY && playstatus->buffering == TRUE)
-        skin_draw_pixmap(bmp_active_skin, obj, gc, SKIN_PLAYPAUSE, 39, 0, 0, 0, 3, 9);
+        skin_draw_pixmap(widget, bmp_active_skin, obj, gc, SKIN_PLAYPAUSE, 39, 0, 0, 0, 3, playstatus->height);
     else if (playstatus->status == STATUS_PLAY)
-        skin_draw_pixmap(bmp_active_skin, obj, gc, SKIN_PLAYPAUSE, 36, 0, 0, 0, 3, 9);
+        skin_draw_pixmap(widget, bmp_active_skin, obj, gc, SKIN_PLAYPAUSE, 36, 0, 0, 0, 3, playstatus->height);
     else
-        skin_draw_pixmap(bmp_active_skin, obj, gc, SKIN_PLAYPAUSE, 27, 0, 0, 0, 2, 9);
+        skin_draw_pixmap(widget, bmp_active_skin, obj, gc, SKIN_PLAYPAUSE, 27, 0, 0, 0, 2, playstatus->height);
     switch (playstatus->status) {
     case STATUS_STOP:
-        skin_draw_pixmap(bmp_active_skin, obj, gc, SKIN_PLAYPAUSE, 18, 0, 2, 0, 9, 9);
+        skin_draw_pixmap(widget, bmp_active_skin, obj, gc, SKIN_PLAYPAUSE, 18, 0, 2, 0, 9, playstatus->height);
         break;
     case STATUS_PAUSE:
-        skin_draw_pixmap(bmp_active_skin, obj, gc, SKIN_PLAYPAUSE, 9, 0, 2, 0, 9, 9);
+        skin_draw_pixmap(widget, bmp_active_skin, obj, gc, SKIN_PLAYPAUSE, 9, 0, 2, 0, 9, playstatus->height);
         break;
     case STATUS_PLAY:
-        skin_draw_pixmap(bmp_active_skin, obj, gc, SKIN_PLAYPAUSE, 1, 0, 3, 0, 8, 9);
+        skin_draw_pixmap(widget, bmp_active_skin, obj, gc, SKIN_PLAYPAUSE, 1, 0, 3, 0, 8, playstatus->height);
         break;
     }
 
@@ -250,3 +249,13 @@
     playstatus->buffering = status;
     gtk_widget_queue_draw(widget);
 }
+
+void ui_skinned_playstatus_set_size(GtkWidget *widget, gint width, gint height) {
+    g_return_if_fail (UI_SKINNED_IS_PLAYSTATUS (widget));
+    UiSkinnedPlaystatus *playstatus = UI_SKINNED_PLAYSTATUS (widget);
+
+    playstatus->width = width;
+    playstatus->height = height;
+
+    gtk_widget_set_size_request(widget, width*(1+playstatus->double_size), height*(1+playstatus->double_size));
+}
--- a/src/audacious/ui_skinned_playstatus.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_playstatus.h	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * Based on:
  * BMP - Cross-platform multimedia player
@@ -48,7 +48,6 @@
     GtkWidget        widget;
 
     gint             x, y, width, height;
-    GtkWidget        *fixed;
     gboolean         double_size;
     PStatus          status;
     gboolean         buffering;
@@ -63,6 +62,7 @@
 GtkType ui_skinned_playstatus_get_type(void);
 void ui_skinned_playstatus_set_status(GtkWidget *widget, PStatus status);
 void ui_skinned_playstatus_set_buffering(GtkWidget *widget, gboolean status);
+void ui_skinned_playstatus_set_size(GtkWidget *widget, gint width, gint height);
 
 #ifdef __cplusplus
 }
--- a/src/audacious/ui_skinned_textbox.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_textbox.c	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * Based on:
  * BMP - Cross-platform multimedia player
@@ -47,7 +47,6 @@
 
 struct _UiSkinnedTextboxPrivate {
     SkinPixmapId     skin_index;
-    GtkWidget        *fixed;
     gboolean         double_size;
     gboolean         scroll_back;
     gint             nominal_y, nominal_height;
@@ -184,10 +183,9 @@
     priv->scroll_timeout = 0;
     priv->scroll_dummy = 0;
 
-    priv->fixed = fixed;
     priv->double_size = FALSE;
 
-    gtk_fixed_put(GTK_FIXED(priv->fixed), GTK_WIDGET(textbox), textbox->x, textbox->y);
+    gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(textbox), textbox->x, textbox->y);
 
     return GTK_WIDGET(textbox);
 }
@@ -431,7 +429,8 @@
     UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE(textbox);
 
     if (priv->move_x || priv->move_y)
-        gtk_fixed_move(GTK_FIXED(priv->fixed), GTK_WIDGET(textbox), textbox->x+priv->move_x, textbox->y+priv->move_y);
+        gtk_fixed_move(GTK_FIXED(gtk_widget_get_parent(GTK_WIDGET(textbox))), GTK_WIDGET(textbox),
+                       textbox->x+priv->move_x, textbox->y+priv->move_y);
 
     gtk_widget_queue_draw(GTK_WIDGET(textbox));
 }
@@ -707,7 +706,7 @@
         else
             textbox_handle_special_char(tmp, &x, &y);
 
-        skin_draw_pixmap(bmp_active_skin,
+        skin_draw_pixmap(GTK_WIDGET(textbox), bmp_active_skin,
                          priv->pixmap, gc, priv->skin_index,
                          x, y, i * bmp_active_skin->properties.textbox_bitmap_font_width, 0,
                          bmp_active_skin->properties.textbox_bitmap_font_width, 
--- a/src/audacious/ui_skinned_textbox.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_textbox.h	Fri Nov 16 05:36:42 2007 +0200
@@ -1,6 +1,6 @@
 /*
  * Audacious - a cross-platform multimedia player
- * Copyright (c) 2007  Audacious development team.
+ * Copyright (c) 2007 Tomasz Moń
  *
  * Based on:
  * BMP - Cross-platform multimedia player
--- a/src/audacious/ui_skinned_window.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/ui_skinned_window.c	Fri Nov 16 05:36:42 2007 +0200
@@ -102,6 +102,8 @@
     window->x = event->x;
     window->y = event->y;
 
+    gtk_window_set_keep_above(GTK_WINDOW(widget), cfg.always_on_top);
+
     return FALSE;
 }
 
@@ -164,21 +166,21 @@
 
     switch (window->type) {
         case WINDOW_MAIN:
-            skin_draw_pixmap(bmp_active_skin, obj, gc, SKIN_MAIN, 0, 0, 0, 0, width, height);
+            skin_draw_pixmap(widget, bmp_active_skin, obj, gc, SKIN_MAIN, 0, 0, 0, 0, width, height);
             skin_draw_mainwin_titlebar(bmp_active_skin, obj, gc, cfg.player_shaded, focus || !cfg.dim_titlebar);
             break;
         case WINDOW_EQ:
-            skin_draw_pixmap(bmp_active_skin, obj, gc, SKIN_EQMAIN, 0, 0, 0, 0, width, height);
+            skin_draw_pixmap(widget, bmp_active_skin, obj, gc, SKIN_EQMAIN, 0, 0, 0, 0, width, height);
             if (focus || !cfg.dim_titlebar) {
                 if (!cfg.equalizer_shaded)
-                    skin_draw_pixmap(bmp_active_skin, obj, gc, SKIN_EQMAIN, 0, 134, 0, 0, width, 14);
+                    skin_draw_pixmap(widget, bmp_active_skin, obj, gc, SKIN_EQMAIN, 0, 134, 0, 0, width, 14);
                 else
-                    skin_draw_pixmap(bmp_active_skin, obj, gc, SKIN_EQ_EX, 0, 0, 0, 0, width, 14);
+                    skin_draw_pixmap(widget, bmp_active_skin, obj, gc, SKIN_EQ_EX, 0, 0, 0, 0, width, 14);
             } else {
                 if (!cfg.equalizer_shaded)
-                    skin_draw_pixmap(bmp_active_skin, obj, gc, SKIN_EQMAIN, 0, 149, 0, 0, width, 14);
+                    skin_draw_pixmap(widget, bmp_active_skin, obj, gc, SKIN_EQMAIN, 0, 149, 0, 0, width, 14);
                 else
-                    skin_draw_pixmap(bmp_active_skin, obj, gc, SKIN_EQ_EX, 0, 15, 0, 0, width, 14);
+                    skin_draw_pixmap(widget, bmp_active_skin, obj, gc, SKIN_EQ_EX, 0, 15, 0, 0, width, 14);
             }
             break;
         case WINDOW_PLAYLIST:
--- a/src/audacious/vfs.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/vfs.c	Fri Nov 16 05:36:42 2007 +0200
@@ -470,14 +470,11 @@
 vfs_is_streaming(VFSFile *file)
 {
     off_t size = 0;
-    glong curpos;
 
     if(!file)
         return FALSE;
 
-    curpos = file->base->vfs_ftell_impl(file);
     size = file->base->vfs_fsize_impl(file);
-    file->base->vfs_fseek_impl(file, curpos, SEEK_SET);
 
     if(size == -1)
         return TRUE;
--- a/src/audacious/vfs_buffered_file.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audacious/vfs_buffered_file.c	Fri Nov 16 05:36:42 2007 +0200
@@ -221,7 +221,7 @@
 
     handle = g_new0(VFSFile, 1);
     fd = g_new0(VFSBufferedFile, 1);
-    fd->mem = g_malloc0(40000);
+    fd->mem = g_malloc0(128000);
     fd->fd = vfs_fopen(uri, "rb");
 
     if (fd->fd == NULL)
@@ -233,11 +233,12 @@
 	return NULL;
     }
 
-    sz = vfs_fread(fd->mem, 1, 40000, fd->fd);
+    sz = vfs_fread(fd->mem, 1, 128000, fd->fd);
     vfs_rewind(fd->fd);
 
     if (!sz)
     {
+	vfs_fclose(fd->fd);
 	g_free(fd->mem);
 	g_free(fd);
 	g_free(handle);
--- a/src/audtool/Makefile	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audtool/Makefile	Fri Nov 16 05:36:42 2007 +0200
@@ -5,6 +5,7 @@
        audtool_handlers_playlist.c	\
        audtool_handlers_playqueue.c	\
        audtool_handlers_vitals.c	\
+       audtool_handlers_test.c	\
        audtool_report.c
 
 include ../../buildsys.mk
--- a/src/audtool/audtool.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audtool/audtool.h	Fri Nov 16 05:36:42 2007 +0200
@@ -87,8 +87,8 @@
 extern void playqueue_add(gint, gchar **);
 extern void playqueue_remove(gint, gchar **);
 extern void playqueue_is_queued(gint, gchar **);
-extern void playqueue_get_position(gint, gchar **);
-extern void playqueue_get_qposition(gint, gchar **);
+extern void playqueue_get_queue_position(gint, gchar **);
+extern void playqueue_get_list_position(gint, gchar **);
 extern void playqueue_display(gint, gchar **);
 extern void playqueue_length(gint, gchar **);
 extern void playqueue_clear(gint, gchar **);
@@ -107,9 +107,29 @@
 extern void equalizer_show(gint, gchar **);
 extern void show_preferences_window(gint, gchar **);
 extern void show_jtf_window(gint, gchar **);
+extern void show_filebrowser(gint, gchar **);
 extern void shutdown_audacious_server(gint, gchar **);
+extern void show_about_window(gint, gchar **);
 
 extern void audtool_report(const gchar *str, ...);
 extern void audtool_whine(const gchar *str, ...);
 
+/* test suite */
+extern void test_activate(gint argc, gchar **argv);
+extern void test_enqueue_to_temp(gint argc, gchar **argv);
+extern void test_toggle_aot(gint argc, gchar **argv);
+extern void test_get_skin(gint argc, gchar **argv);
+extern void test_set_skin(gint argc, gchar **argv);
+extern void test_get_info(gint argc, gchar **argv);
+extern void test_ins_url_string(gint argc, gchar **argv);
+extern void test_get_version(gint argc, gchar **argv);
+
+extern void test_get_eq(gint argc, gchar **argv);
+extern void test_get_eq_preamp(gint argc, gchar **argv);
+extern void test_get_eq_band(gint argc, gchar **argv);
+extern void test_set_eq(gint argc, gchar **argv);
+extern void test_set_eq_preamp(gint argc, gchar **argv);
+extern void test_set_eq_band(gint argc, gchar **argv);
+void test_equalizer_active(gint argc, gchar **argv);
+
 #endif
--- a/src/audtool/audtool_handlers_general.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audtool/audtool_handlers_general.c	Fri Nov 16 05:36:42 2007 +0200
@@ -54,7 +54,7 @@
 	{
 		audtool_whine("invalid parameters for %s.", argv[0]);
 		audtool_whine("syntax: %s <level>", argv[0]);
-		return;
+		exit(1);
 	}
 
 	current_volume = audacious_remote_get_main_volume(dbus_proxy);
@@ -74,63 +74,167 @@
 
 void mainwin_show(gint argc, gchar **argv)
 {
-	if (argc > 1)
-	{
-		if (!g_ascii_strcasecmp(argv[1], "on")) {
-			audacious_remote_main_win_toggle(dbus_proxy, TRUE);
-			return;
-		}
-		else if (!g_ascii_strcasecmp(argv[1], "off")) {
-			audacious_remote_main_win_toggle(dbus_proxy, FALSE);
-			return;
-		}
-	}
-	audtool_whine("invalid parameter for %s.", argv[0]);
-	audtool_whine("syntax: %s <on/off>", argv[0]);
+	if (argc < 2) {
+        audtool_whine("invalid parameter for %s.", argv[0]);
+        audtool_whine("syntax: %s <on/off>", argv[0]);
+        exit(1);
+    }
+
+    if (!g_ascii_strcasecmp(argv[1], "on")) {
+        audacious_remote_main_win_toggle(dbus_proxy, TRUE);
+        return;
+    }
+    else if (!g_ascii_strcasecmp(argv[1], "off")) {
+        audacious_remote_main_win_toggle(dbus_proxy, FALSE);
+        return;
+    }
 }
 
 void playlist_show(gint argc, gchar **argv)
 {
-	if (argc > 1)
-	{
-		if (!g_ascii_strcasecmp(argv[1], "on")) {
-			audacious_remote_pl_win_toggle(dbus_proxy, TRUE);
-			return;
-		}
-		else if (!g_ascii_strcasecmp(argv[1], "off")) {
-			audacious_remote_pl_win_toggle(dbus_proxy, FALSE);
-			return;
-		}
-	}
-	audtool_whine("invalid parameter for %s.", argv[0]);
-	audtool_whine("syntax: %s <on/off>", argv[0]);
+	if (argc < 2) {
+        audtool_whine("invalid parameter for %s.", argv[0]);
+        audtool_whine("syntax: %s <on/off>", argv[0]);
+        exit(1);
+    }
+
+    if (!g_ascii_strcasecmp(argv[1], "on")) {
+        audacious_remote_pl_win_toggle(dbus_proxy, TRUE);
+        return;
+    }
+    else if (!g_ascii_strcasecmp(argv[1], "off")) {
+        audacious_remote_pl_win_toggle(dbus_proxy, FALSE);
+        return;
+    }
 }
 
 void equalizer_show(gint argc, gchar **argv)
 {
-	if (argc > 1)
-	{
-		if (!g_ascii_strcasecmp(argv[1] ,"on")) {
-			audacious_remote_eq_win_toggle(dbus_proxy, TRUE);
-			return;
-		}
-		else if (!g_ascii_strcasecmp(argv[1] ,"off")) {
-			audacious_remote_eq_win_toggle(dbus_proxy, FALSE);
-			return;
-		}
-	}
-	audtool_whine("invalid parameter for %s.", argv[0]);
-	audtool_whine("syntax: %s <on/off>", argv[0]);
+	if (argc < 2) {
+        audtool_whine("invalid parameter for %s.", argv[0]);
+        audtool_whine("syntax: %s <on/off>", argv[0]);
+        exit(1);
+    }
+
+    if (!g_ascii_strcasecmp(argv[1] ,"on")) {
+        audacious_remote_eq_win_toggle(dbus_proxy, TRUE);
+        return;
+    }
+    else if (!g_ascii_strcasecmp(argv[1] ,"off")) {
+        audacious_remote_eq_win_toggle(dbus_proxy, FALSE);
+        return;
+    }
 }
 
 void show_preferences_window(gint argc, gchar **argv)
 {
-	audacious_remote_show_prefs_box(dbus_proxy);
+    gboolean show = TRUE;
+
+	if (argc < 2) {
+#if 0
+        audtool_whine("invalid parameter for %s.", argv[0]);
+        audtool_whine("syntax: %s <on/off>", argv[0]);
+        exit(1);
+#else
+        audacious_remote_toggle_prefs_box(dbus_proxy, show);
+        return;
+#endif
+    }
+
+    if (!g_ascii_strcasecmp(argv[1], "on"))
+        show = TRUE;
+    else if (!g_ascii_strcasecmp(argv[1], "off"))
+        show = FALSE;
+    else {
+        audtool_whine("invalid parameter for %s.", argv[0]);
+        audtool_whine("syntax: %s <on/off>", argv[0]);
+        exit (1);
+    }
+
+	audacious_remote_toggle_prefs_box(dbus_proxy, show);
+}
+
+void show_about_window(gint argc, gchar **argv)
+{
+    gboolean show = TRUE;
+
+	if (argc < 2) {
+#if 0
+        audtool_whine("invalid parameter for %s.", argv[0]);
+        audtool_whine("syntax: %s <on/off>", argv[0]);
+        exit(1);
+#else
+        audacious_remote_toggle_about_box(dbus_proxy, show);
+        return;
+#endif
+    }
+
+    if (!g_ascii_strcasecmp(argv[1], "on"))
+        show = TRUE;
+    else if (!g_ascii_strcasecmp(argv[1], "off"))
+        show = FALSE;
+    else {
+        audtool_whine("invalid parameter for %s.", argv[0]);
+        audtool_whine("syntax: %s <on/off>", argv[0]);
+        exit (1);
+    }
+
+	audacious_remote_toggle_about_box(dbus_proxy, show);
 }
 
 void show_jtf_window(gint argc, gchar **argv)
 {
-	audacious_remote_show_jtf_box(dbus_proxy);
+    gboolean show = TRUE;
+
+	if (argc < 2) {
+#if 0
+        audtool_whine("invalid parameter for %s.", argv[0]);
+        audtool_whine("syntax: %s <on/off>", argv[0]);
+        exit(1);
+#else
+        audacious_remote_toggle_jtf_box(dbus_proxy, show);
+        return;
+#endif
+    }
+    if (!g_ascii_strcasecmp(argv[1], "on"))
+        show = TRUE;
+    else if (!g_ascii_strcasecmp(argv[1], "off"))
+        show = FALSE;
+    else {
+        audtool_whine("invalid parameter for %s.", argv[0]);
+        audtool_whine("syntax: %s <on/off>", argv[0]);
+        exit (1);
+    }
+
+	audacious_remote_toggle_jtf_box(dbus_proxy, show);
+}
+
+void show_filebrowser(gint argc, gchar **argv)
+{
+    gboolean show = TRUE;
+
+	if (argc < 2) {
+#if 0
+        audtool_whine("invalid parameter for %s.", argv[0]);
+        audtool_whine("syntax: %s <on/off>", argv[0]);
+        exit(1);
+#else
+        audacious_remote_toggle_filebrowser(dbus_proxy, show);
+        return;
+#endif
+    }
+
+    if (!g_ascii_strcasecmp(argv[1], "on"))
+        show = TRUE;
+    else if (!g_ascii_strcasecmp(argv[1], "off"))
+        show = FALSE;
+    else {
+        audtool_whine("invalid parameter for %s.", argv[0]);
+        audtool_whine("syntax: %s <on/off>", argv[0]);
+        exit (1);
+    }
+
+	audacious_remote_toggle_filebrowser(dbus_proxy, show);
 }
 
 void shutdown_audacious_server(gint argc, gchar **argv)
@@ -150,6 +254,7 @@
 			audtool_report("   %-34s - %s", handlers[i].name, handlers[i].desc);
 	}
 
+    audtool_report("");
 	audtool_report("Handlers may be prefixed with `--' (GNU-style long-options) or not, your choice.");
 	audtool_report("Report bugs to http://bugs-meta.atheme.org/");
 }
--- a/src/audtool/audtool_handlers_playback.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audtool/audtool_handlers_playback.c	Fri Nov 16 05:36:42 2007 +0200
@@ -118,7 +118,7 @@
 	{
 		audtool_whine("invalid parameters for %s.", argv[0]);
 		audtool_whine("syntax: %s <position>", argv[0]);
-		return;
+		exit(1);
 	}
 
 	audacious_remote_jump_to_time(dbus_proxy, atoi(argv[1]) * 1000);
@@ -132,7 +132,7 @@
 	{
 		audtool_whine("invalid parameters for %s.", argv[0]);
 		audtool_whine("syntax: %s <position>", argv[0]);
-		return;
+		exit(1);
 	}
 
 	oldtime = audacious_remote_get_output_time(dbus_proxy);
--- a/src/audtool/audtool_handlers_playlist.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audtool/audtool_handlers_playlist.c	Fri Nov 16 05:36:42 2007 +0200
@@ -53,7 +53,7 @@
 	{
 		audtool_whine("invalid parameters for %s.", argv[0]);
 		audtool_whine("syntax: %s <url>", argv[0]);
-		return;
+		exit(1);
 	}
 
 	audacious_remote_playlist_add_url_string(dbus_proxy, argv[1]);
@@ -67,7 +67,7 @@
 	{
 		audtool_whine("invalid parameters for %s.", argv[0]);
 		audtool_whine("syntax: %s <position>", argv[0]);
-		return;
+		exit(1);
 	}
 
 	playpos = atoi(argv[1]);
@@ -99,7 +99,7 @@
 	{
 		audtool_whine("invalid parameters for %s.", argv[0]);
 		audtool_whine("syntax: %s <position>", argv[0]);
-		return;
+		exit(1);
 	}
 
 	playpos = atoi(argv[1]);
@@ -107,7 +107,7 @@
 	if (playpos < 1 || playpos > audacious_remote_get_playlist_length(dbus_proxy))
 	{
 		audtool_whine("invalid playlist position %d", playpos);
-		return;
+		exit(1);
 	}
 
 	song = audacious_remote_get_playlist_title(dbus_proxy, playpos - 1);
@@ -124,7 +124,7 @@
 	{
 		audtool_whine("invalid parameters for %s.", argv[0]);
 		audtool_whine("syntax: %s <position>", argv[0]);
-		return;
+		exit(1);
 	}
 
 	playpos = atoi(argv[1]);
@@ -132,7 +132,7 @@
 	if (playpos < 1 || playpos > audacious_remote_get_playlist_length(dbus_proxy))
 	{
 		audtool_whine("invalid playlist position %d", playpos);
-		return;
+		exit(1);
 	}
 
 	frames = audacious_remote_get_playlist_time(dbus_proxy, playpos - 1);
@@ -149,7 +149,7 @@
 	{
 		audtool_whine("invalid parameters for %s.", argv[0]);
 		audtool_whine("syntax: %s <position>", argv[0]);
-		return;
+		exit(1);
 	}
 
 	playpos = atoi(argv[1]);
@@ -157,7 +157,7 @@
 	if (playpos < 1 || playpos > audacious_remote_get_playlist_length(dbus_proxy))
 	{
 		audtool_whine("invalid playlist position %d", playpos);
-		return;
+		exit(1);
 	}
 
 	frames = audacious_remote_get_playlist_time(dbus_proxy, playpos - 1);
@@ -174,7 +174,7 @@
 	{
 		audtool_whine("invalid parameters for %s.", argv[0]);
 		audtool_whine("syntax: %s <position>", argv[0]);
-		return;
+		exit(1);
 	}
 
 	playpos = atoi(argv[1]);
@@ -182,7 +182,7 @@
 	if (playpos < 1 || playpos > audacious_remote_get_playlist_length(dbus_proxy))
 	{
 		audtool_whine("invalid playlist position %d", playpos);
-		return;
+		exit(1);
 	}
 
 	frames = audacious_remote_get_playlist_time(dbus_proxy, playpos - 1);
@@ -257,7 +257,7 @@
 	{
 		audtool_whine("invalid parameters for %s.", argv[0]);
 		audtool_whine("syntax: %s <position>", argv[0]);
-		return;
+		exit(1);
 	}
 
 	i = atoi(argv[1]);
@@ -265,7 +265,7 @@
 	if (i < 1 || i > audacious_remote_get_playlist_length(dbus_proxy))
 	{
 		audtool_whine("invalid playlist position %d", i);
-		return;
+		exit(1);
 	}
 
 	audtool_report("%s", audacious_remote_get_playlist_file(dbus_proxy, i - 1));
@@ -279,7 +279,7 @@
 	{
 		audtool_whine("invalid parameters for %s.", argv[0]);
 		audtool_whine("syntax: %s <position>", argv[0]);
-		return;
+		exit(1);
 	}
 
 	i = atoi(argv[1]);
@@ -287,7 +287,7 @@
 	if (i < 1 || i > audacious_remote_get_playlist_length(dbus_proxy))
 	{
 		audtool_whine("invalid playlist position %d", i);
-		return;
+		exit(1);
 	}
 
 	audacious_remote_set_playlist_pos(dbus_proxy, i - 1);
@@ -295,6 +295,7 @@
 
 void playlist_clear(gint argc, gchar **argv)
 {
+	audacious_remote_stop(dbus_proxy);
 	audacious_remote_playlist_clear(dbus_proxy);
 }
 
@@ -339,17 +340,17 @@
 void playlist_tuple_field_data(gint argc, gchar **argv)
 {
 	gint i;
-	gpointer data;
+	gchar *data;
 
 	if (argc < 3)
 	{
 		audtool_whine("invalid parameters for %s.", argv[0]);
 		audtool_whine("syntax: %s <fieldname> <position>", argv[0]);
-		audtool_whine("  - fieldname example choices: performer, album_name,");
-		audtool_whine("      track_name, track_number, year, date, genre, comment,");
-		audtool_whine("      file_name, file_ext, file_path, length, formatter,");
-		audtool_whine("      custom, mtime");
-		return;
+		audtool_whine("  - fieldname example choices include but are not limited to:");
+		audtool_whine("      artist, album, title, track_number, year, date,");
+		audtool_whine("      genre, comment, file_name, file_ext, file_path,");
+		audtool_whine("      length, formatter, custom, mtime");
+		exit(1);
 	}
 
 	i = atoi(argv[2]);
@@ -357,7 +358,7 @@
 	if (i < 1 || i > audacious_remote_get_playlist_length(dbus_proxy))
 	{
 		audtool_whine("invalid playlist position %d", i);
-		return;
+		exit(1);
 	}
 
 	if (!(data = audacious_get_tuple_field_data(dbus_proxy, argv[1], i - 1)))
@@ -365,14 +366,7 @@
 		return;
 	}
 	
-	if (!g_ascii_strcasecmp(argv[1], "track_number") || !g_ascii_strcasecmp(argv[1], "year") || !g_ascii_strcasecmp(argv[1], "length") || !g_ascii_strcasecmp(argv[1], "mtime"))
-	{
-		if (*(gint *)data > 0)
-		{
-			audtool_report("%d", *(gint *)data);
-		}
-		return;
-	}
+	audtool_report("%s", data);
 
-	audtool_report("%s", (gchar *)data);
+	g_free(data);
 }
--- a/src/audtool/audtool_handlers_playqueue.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audtool/audtool_handlers_playqueue.c	Fri Nov 16 05:36:42 2007 +0200
@@ -45,7 +45,7 @@
 	{
 		audtool_whine("invalid parameters for %s.", argv[0]);
 		audtool_whine("syntax: %s <position>", argv[0]);
-		return;
+		exit(1);
 	}
 
 	i = atoi(argv[1]);
@@ -53,7 +53,7 @@
 	if (i < 1 || i > audacious_remote_get_playlist_length(dbus_proxy))
 	{
 		audtool_whine("invalid playlist position %d", i);
-		return;
+		exit(1);
 	}
 
 	if (!(audacious_remote_playqueue_is_queued(dbus_proxy, i - 1)))
@@ -68,7 +68,7 @@
 	{
 		audtool_whine("invalid parameters for %s.", argv[0]);
 		audtool_whine("syntax: %s <position>", argv[0]);
-		return;
+		exit(1);
 	}
 
 	i = atoi(argv[1]);
@@ -76,7 +76,7 @@
 	if (i < 1 || i > audacious_remote_get_playlist_length(dbus_proxy))
 	{
 		audtool_whine("invalid playlist position %d", i);
-		return;
+		exit(1);
 	}
 
 	if (audacious_remote_playqueue_is_queued(dbus_proxy, i - 1))
@@ -91,29 +91,7 @@
 	{
 		audtool_whine("invalid parameters for playqueue-is-queued.", argv[0]);
 		audtool_whine("syntax: %s playqueue-is-queued <position>", argv[0]);
-		return;
-	}
-
-	i = atoi(argv[1]);
-
-	if (i < 1 || i > audacious_remote_get_playlist_length(dbus_proxy))
-	{
-		audtool_whine("invalid playlist position %d", i);
-		return;
-	}
-
-	exit(!(audacious_remote_playqueue_is_queued(dbus_proxy, i - 1)));
-}
-
-void playqueue_get_position(gint argc, gchar **argv)
-{
-	gint i, pos;
-
-	if (argc < 2)
-	{
-		audtool_whine("invalid parameters for %s.", argv[0]);
-		audtool_whine("syntax: %s <position>", argv[0]);
-		return;
+		exit(1);
 	}
 
 	i = atoi(argv[1]);
@@ -121,10 +99,36 @@
 	if (i < 1 || i > audacious_remote_get_playlist_length(dbus_proxy))
 	{
 		audtool_whine("invalid playlist position %d", i);
-		return;
+		exit(1);
+	}
+    if(audacious_remote_playqueue_is_queued(dbus_proxy, i - 1)) {
+        audtool_report("OK");
+        exit(0);
+    }
+    else
+        exit(1);
+}
+
+void playqueue_get_queue_position(gint argc, gchar **argv)
+{
+	gint i, pos;
+
+	if (argc < 2)
+	{
+		audtool_whine("invalid parameters for %s.", argv[0]);
+		audtool_whine("syntax: %s <position>", argv[0]);
+		exit(1);
 	}
 
-	pos = audacious_remote_get_playqueue_position(dbus_proxy, i - 1) + 1;
+	i = atoi(argv[1]);
+
+	if (i < 1 || i > audacious_remote_get_playlist_length(dbus_proxy))
+	{
+		audtool_whine("invalid playlist position %d", i);
+		exit(1);
+	}
+
+	pos = audacious_remote_get_playqueue_queue_position(dbus_proxy, i - 1) + 1;
 
 	if (pos < 1)
 		return;
@@ -132,7 +136,7 @@
 	audtool_report("%d", pos);
 }
 
-void playqueue_get_qposition(gint argc, gchar **argv)
+void playqueue_get_list_position(gint argc, gchar **argv)
 {
 	gint i, pos;
 
@@ -140,7 +144,7 @@
 	{
 		audtool_whine("invalid parameters for %s.", argv[0]);
 		audtool_whine("syntax: %s <position>", argv[0]);
-		return;
+		exit(1);
 	}
 
 	i = atoi(argv[1]);
@@ -148,10 +152,10 @@
 	if (i < 1 || i > audacious_remote_get_playqueue_length(dbus_proxy))
 	{
 		audtool_whine("invalid playlist position %d", i);
-		return;
+		exit(1);
 	}
 
-	pos = audacious_remote_get_playqueue_queue_position(dbus_proxy, i - 1) + 1;
+	pos = audacious_remote_get_playqueue_list_position(dbus_proxy, i - 1) + 1;
 
 	if (pos < 1)
 		return;
@@ -174,7 +178,7 @@
 
 	for (ii = 0; ii < i; ii++)
 	{
-		position = audacious_remote_get_playqueue_queue_position(dbus_proxy, ii);
+		position = audacious_remote_get_playqueue_list_position(dbus_proxy, ii);
 		songname = audacious_remote_get_playlist_title(dbus_proxy, position);
 		frames = audacious_remote_get_playlist_time(dbus_proxy, position);
 		length = frames / 1000;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/audtool/audtool_handlers_test.c	Fri Nov 16 05:36:42 2007 +0200
@@ -0,0 +1,250 @@
+/*
+ * Audtool2
+ * Copyright (c) 2007 Audacious development team
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <mowgli.h>
+#include <locale.h>
+#include "libaudclient/audctrl.h"
+#include "audtool.h"
+
+void test_activate(gint argc, gchar **argv)
+{
+    audacious_remote_activate(dbus_proxy);
+}
+
+void test_enqueue_to_temp(gint argc, gchar **argv)
+{
+    if (argc < 2)
+    {
+        audtool_whine("invalid parameters for %s.", argv[0]);
+        audtool_whine("syntax: %s <url>", argv[0]);
+        exit(1);
+    }
+
+    audacious_remote_playlist_enqueue_to_temp(dbus_proxy, argv[1]);
+}
+
+void test_toggle_aot(gint argc, gchar **argv)
+{
+    if (argc < 2)
+    {
+        audtool_whine("invalid parameters for %s.", argv[0]);
+        audtool_whine("syntax: %s <on/off>", argv[0]);
+        exit(1);
+    }
+
+    if (!g_ascii_strcasecmp(argv[1], "on")) {
+        audacious_remote_toggle_aot(dbus_proxy, TRUE);
+        return;
+    }
+    else if (!g_ascii_strcasecmp(argv[1], "off")) {
+        audacious_remote_toggle_aot(dbus_proxy, FALSE);
+        return;
+    }
+}
+
+void test_get_skin(gint argc, gchar **argv)
+{
+    gchar *skin = NULL;
+    skin = audacious_remote_get_skin(dbus_proxy);
+    audtool_report("%s", skin);
+    g_free(skin);
+}
+
+void test_set_skin(gint argc, gchar **argv)
+{
+    if (argc < 2)
+    {
+        audtool_whine("invalid parameters for %s.", argv[0]);
+        audtool_whine("syntax: %s <skin>", argv[0]);
+        exit(1);
+    }
+
+    if(!argv[1] || !strcmp(argv[1], ""))
+       return;
+
+    audacious_remote_set_skin(dbus_proxy, argv[1]);
+}
+
+void test_get_info(gint argc, gchar **argv)
+{
+    gint rate, freq, nch;
+
+    audacious_remote_get_info(dbus_proxy, &rate, &freq, &nch);
+    audtool_report("rate = %d freq = %d nch = %d", rate, freq, nch);
+}
+
+void test_ins_url_string(gint argc, gchar **argv)
+{
+    gint pos = -1;
+
+    if (argc < 3)
+    {
+        audtool_whine("invalid parameters for %s.", argv[0]);
+        audtool_whine("syntax: %s <url> <position>", argv[0]);
+        exit(1);
+    }
+
+    pos = atoi(argv[2]) - 1;
+    if(pos >= 0)
+        audacious_remote_playlist_ins_url_string(dbus_proxy, argv[1], pos);
+}
+
+void test_get_version(gint argc, gchar **argv)
+{
+    gchar *version = NULL;
+    version = audacious_remote_get_version(dbus_proxy);
+    if(version)
+        audtool_report("Audacious %s", version);
+    g_free(version);
+}
+
+void test_get_eq(gint argc, gchar **argv)
+{
+    double preamp;
+    GArray *bands;
+    int i;
+
+    audacious_remote_get_eq(dbus_proxy, &preamp, &bands);
+
+    audtool_report("preamp = %.2f", preamp);
+    for(i=0; i<10; i++){
+        printf("%.2f ", g_array_index(bands, gdouble, i));
+    }
+    printf("\n");
+    g_array_free(bands, TRUE);
+}
+
+void test_get_eq_preamp(gint argc, gchar **argv)
+{
+    audtool_report("preamp = %.2f", audacious_remote_get_eq_preamp(dbus_proxy));
+}
+
+void test_get_eq_band(gint argc, gchar **argv)
+{
+    int band;
+
+    if (argc < 2)
+    {
+        audtool_whine("invalid parameters for %s.", argv[0]);
+        audtool_whine("syntax: %s <band>", argv[0]);
+        exit(1);
+    }
+
+    band = atoi(argv[1]);
+
+    if (band < 0 || band > 9)
+    {
+        audtool_whine("band number out of range");
+        exit(1);
+    }
+    
+    audtool_report("band %d = %.2f", band, audacious_remote_get_eq_band(dbus_proxy, band));
+    
+}
+
+void test_set_eq(gint argc, gchar **argv)
+{
+    gdouble preamp;
+    GArray *bands = g_array_sized_new(FALSE, FALSE, sizeof(gdouble), 10);
+    int i;
+
+    if (argc < 12)
+    {
+        audtool_whine("invalid parameters for %s.", argv[0]);
+        audtool_whine("syntax: %s <preamp> <band0> <band1> <band2> <band3> <band4> <band5> <band6> <band7> <band8> <band9>", argv[0]);
+        exit(1);
+    }
+
+    preamp = atof(argv[1]);
+    
+    for(i=0; i<10; i++){
+        gdouble val = atof(argv[i+2]);
+        g_array_append_val(bands, val);
+    }
+    
+    audacious_remote_set_eq(dbus_proxy, preamp, bands);
+}
+
+void test_set_eq_preamp(gint argc, gchar **argv)
+{
+    gdouble preamp;
+
+    if (argc < 2)
+    {
+        audtool_whine("invalid parameters for %s.", argv[0]);
+        audtool_whine("syntax: %s <preamp>", argv[0]);
+        exit(1);
+    }
+
+    preamp = atof(argv[1]);
+
+    audacious_remote_set_eq_preamp(dbus_proxy, preamp);
+}
+
+void test_set_eq_band(gint argc, gchar **argv)
+{
+    int band;
+    gdouble preamp;
+
+    if (argc < 3)
+    {
+        audtool_whine("invalid parameters for %s.", argv[0]);
+        audtool_whine("syntax: %s <band> <value>", argv[0]);
+        exit(1);
+    }
+
+    band = atoi(argv[1]);
+    preamp = atof(argv[2]);
+
+    audacious_remote_set_eq_band(dbus_proxy, band, preamp);
+}
+
+void test_equalizer_active(gint argc, gchar **argv)
+{
+    if (argc < 2)
+    {
+        audtool_whine("invalid parameters for %s.", argv[0]);
+        audtool_whine("syntax: %s <on/off>", argv[0]);
+        exit(1);
+    }
+
+    if (!g_ascii_strcasecmp(argv[1], "on")) {
+        audacious_remote_eq_activate(dbus_proxy, TRUE);
+        return;
+    }
+    else if (!g_ascii_strcasecmp(argv[1], "off")) {
+        audacious_remote_eq_activate(dbus_proxy, FALSE);
+        return;
+    }
+}
--- a/src/audtool/audtool_handlers_vitals.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audtool/audtool_handlers_vitals.c	Fri Nov 16 05:36:42 2007 +0200
@@ -161,17 +161,17 @@
 
 void get_current_song_tuple_field_data(gint argc, gchar **argv)
 {
-	gpointer data;
+	gchar *data;
 
 	if (argc < 2)
 	{
 		audtool_whine("invalid parameters for %s.", argv[0]);
 		audtool_whine("syntax: %s <fieldname>", argv[0]);
-		audtool_whine("   - fieldname example choices: performer, album_name,");
-		audtool_whine("       track_name, track_number, year, date, genre, comment,");
-		audtool_whine("       file_name, file_ext, file_path, length, formatter,");
-		audtool_whine("       custom, mtime");
-		return;
+		audtool_whine("  - fieldname example choices include but are not limited to:");
+		audtool_whine("      artist, album, title, track_number, year, date,");
+		audtool_whine("      genre, comment, file_name, file_ext, file_path,");
+		audtool_whine("      length, formatter, custom, mtime");
+		exit(1);
 	}
 
 	if (!(data = audacious_get_tuple_field_data(dbus_proxy, argv[1], audacious_remote_get_playlist_pos(dbus_proxy))))
@@ -179,14 +179,7 @@
 		return;
 	}
 	
-	if (!g_ascii_strcasecmp(argv[1], "track_number") || !g_ascii_strcasecmp(argv[1], "year") || !g_ascii_strcasecmp(argv[1], "length") || !g_ascii_strcasecmp(argv[1], "mtime"))
-	{
-		if (*(gint *)data > 0)
-		{
-			audtool_report("%d", *(gint *)data);
-		}
-		return;
-	}
+	audtool_report("%s", data);
 
-	audtool_report("%s", (gchar *)data);
+	g_free(data);
 }
--- a/src/audtool/audtool_main.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/audtool/audtool_main.c	Fri Nov 16 05:36:42 2007 +0200
@@ -77,8 +77,8 @@
 	{"playqueue-add", playqueue_add, "adds a song to the playqueue", 1},
 	{"playqueue-remove", playqueue_remove, "removes a song from the playqueue", 1},
 	{"playqueue-is-queued", playqueue_is_queued, "returns OK if a song is queued", 1},
-	{"playqueue-get-position", playqueue_get_position, "returns the queue position of a song in the playlist", 1},
-	{"playqueue-get-qposition", playqueue_get_qposition, "returns the playlist position of a song in the queue", 1},
+	{"playqueue-get-queue-position", playqueue_get_queue_position, "returns the playqueue position of a song in the given poition in the playlist", 1},
+	{"playqueue-get-list-position", playqueue_get_list_position, "returns the playlist position of a song in the given position in the playqueue", 1},
 	{"playqueue-length", playqueue_length, "returns the length of the playqueue", 0},
 	{"playqueue-display", playqueue_display, "returns a list of currently-queued songs", 0},
 	{"playqueue-clear", playqueue_clear, "clears the playqueue", 0},
@@ -100,12 +100,37 @@
 	{"mainwin-show", mainwin_show, "shows/hides the main window", 1},
 	{"playlist-show", playlist_show, "shows/hides the playlist window", 1},
 	{"equalizer-show", equalizer_show, "shows/hides the equalizer window", 1},
-	{"preferences", show_preferences_window, "shows/hides the preferences window", 0},
-	{"jumptofile", show_jtf_window, "shows the jump to file window", 0},
+
+	{"preferences-show", show_preferences_window, "shows/hides the preferences window", 1},
+	{"about-show", show_about_window, "shows/hides the about window", 1},
+	{"jumptofile-show", show_jtf_window, "shows/hides the jump to file window", 1},
+	{"filebrowser-show", show_filebrowser, "shows/hides the filebrowser", 1},
+
 	{"shutdown", shutdown_audacious_server, "shuts down audacious", 0},
 	{"<sep>", NULL, "Help system", 0},
 	{"list-handlers", get_handlers_list, "shows handlers list", 0},
 	{"help", get_handlers_list, "shows handlers list", 0},
+
+    /* test suite */
+	{"<sep>", NULL, "Test suite", 0},
+	{"activate", test_activate, "activate audacious", 0},
+	{"always-on-top", test_toggle_aot, "on/off always on top", 1},
+    {"get-version", test_get_version, "get the version string of audacious", 0},
+    {"get-info", test_get_info, "get info", 0},
+    {"get-skin", test_get_skin, "get skin", 0},
+    {"set-skin", test_set_skin, "set skin", 1},
+	{"playlist-addurl-to-new-playlist", test_enqueue_to_temp, "adds a url to the newly created playlist", 1},
+    {"playlist-insurl", test_ins_url_string, "inserts a url at specified position in the playlist", 2},
+
+    /* test suite for equalizer */
+    {"equalizer-get", test_get_eq, "get the equalizer settings", 0},
+    {"equalizer-get-preamp", test_get_eq_preamp, "get the equalizer pre-amplification", 0},
+    {"equalizer-get-band", test_get_eq_band, "get the equalizer value in specified band", 1},
+    {"equalizer-set", test_set_eq, "set the equalizer settings", 11},
+    {"equalizer-set-preamp", test_set_eq_preamp, "set the equalizer pre-amplification", 1},
+    {"equalizer-set-band", test_set_eq_band, "set the equalizer value in the specified band", 2},
+    {"equalizer-activate", test_equalizer_active, "activate/deactivate the equalizer", 1},
+    
 	{NULL, NULL, NULL, 0}
 };
 
@@ -146,7 +171,7 @@
 	mowgli_error_context_push(e, "While processing the commandline");
 
 	if (argc < 2)
-		mowgli_error_context_display_with_error(e, ":\n  * ", "not enough parameters, use audtool --help for more information.");
+		mowgli_error_context_display_with_error(e, ":\n  * ", "not enough parameters, use \'audtool help\' for more information.");
 
 	for (j = 1; j < argc; j++)
 	{
@@ -156,15 +181,18 @@
 			     !g_ascii_strcasecmp(g_strconcat("--", handlers[i].name, NULL), argv[j]))
 			    && g_ascii_strcasecmp("<sep>", handlers[i].name))
   			{
- 				handlers[i].handler(handlers[i].args + 1, &argv[j]);
+				int numargs = handlers[i].args + 1 < argc - 1 ? handlers[i].args + 1 : argc - 1;
+				handlers[i].handler(numargs, &argv[j]);
 				j += handlers[i].args;
 				k++;
+				if(j >= argc)
+					break;
 			}
 		}
 	}
 
 	if (k == 0)
-		mowgli_error_context_display_with_error(e, ":\n  * ", g_strdup_printf("Unknown command `%s' encountered, use audtool --help for a command list.", argv[1]));
+		mowgli_error_context_display_with_error(e, ":\n  * ", g_strdup_printf("Unknown command '%s' encountered, use \'audtool help\' for a command list.", argv[1]));
 
 	return 0;
 }
--- a/src/libaudclient/audctrl.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/libaudclient/audctrl.c	Fri Nov 16 05:36:42 2007 +0200
@@ -21,6 +21,7 @@
 
 #include <stdlib.h>
 #include <glib.h>
+#include <string.h>
 #include <dbus/dbus-glib.h>
 #include "audacious/dbus.h"
 #include "audacious/dbus-client-bindings.h"
@@ -37,21 +38,45 @@
  *
  * Sends a playlist to audacious.
  **/
-void audacious_remote_playlist(DBusGProxy *proxy, gchar **list, gint num,
-                               gboolean enqueue) {
-//XXX
+void audacious_remote_playlist(DBusGProxy *proxy, gchar **list, gint num, gboolean enqueue) {
+    GList *glist = NULL;
+    gchar **data = list;
+
+    g_return_if_fail(list != NULL);
+    g_return_if_fail(num > 0);
+
+    if (!enqueue)
+        audacious_remote_playlist_clear(proxy);
+
+    // construct a GList
+    while(data) {
+        glist = g_list_append(glist, (gpointer)data);
+        data++;
+    }
+
+    org_atheme_audacious_playlist_add(proxy, (gpointer)glist, &error);
+
+    g_list_free(glist);
+    glist = NULL;
+
+    if (!enqueue)
+        audacious_remote_play(proxy);
 }
 
 /**
  * audacious_remote_get_version:
  * @proxy: DBus proxy for audacious
  *
- * Queries audacious for it's protocol version.
+ * Queries audacious for it's version.
  *
- * Return value: The protocol version used by Audacious.
+ * Return value: The version of Audacious.
  **/
-gint audacious_remote_get_version(DBusGProxy *proxy) {
-    return 0x09a3; // XXX should do actual dbus call.
+gchar *audacious_remote_get_version(DBusGProxy *proxy) {
+    char *string = NULL;
+    org_atheme_audacious_version(proxy, &string, &error);
+    g_clear_error(&error);
+
+    return (string ? string : NULL);
 }
 
 /**
@@ -64,7 +89,7 @@
 void audacious_remote_playlist_add(DBusGProxy *proxy, GList *list) {
 	GList *iter;
 	for (iter = list; iter != NULL; iter = g_list_next(iter))
-		org_atheme_audacious_add(proxy, iter->data, &error);
+		org_atheme_audacious_playlist_add(proxy, iter->data, &error);
 	g_clear_error(&error);
 }
 
@@ -76,7 +101,8 @@
  * Deletes a playlist entry.
  **/
 void audacious_remote_playlist_delete(DBusGProxy *proxy, guint pos) {
-//XXX
+    org_atheme_audacious_delete(proxy, pos, &error);
+    g_clear_error(&error);
 }
 
 /**
@@ -340,8 +366,10 @@
  * Return value: A path to the currently selected skin.
  **/
 gchar *audacious_remote_get_skin(DBusGProxy *proxy) {
-//XXX
-    return NULL;
+    gchar *skin = NULL;
+    org_atheme_audacious_get_skin (proxy, &skin, &error);
+    g_clear_error(&error);
+    return skin;
 }
 
 /**
@@ -352,7 +380,8 @@
  * Tells audacious to start using the skinfile provided.
  **/
 void audacious_remote_set_skin(DBusGProxy *proxy, gchar *skinfile) {
-//XXX
+    org_atheme_audacious_set_skin(proxy, skinfile, &error);
+	g_clear_error(&error);
 }
 
 /**
@@ -506,7 +535,41 @@
  * Tells audacious to show the preferences pane.
  **/
 void audacious_remote_show_prefs_box(DBusGProxy *proxy) {
-//XXX
+    audacious_remote_toggle_prefs_box(proxy, TRUE);
+}
+
+/**
+ * audacious_remote_toggle_prefs_box:
+ * @proxy: DBus proxy for audacious
+ * @show: shows/hides
+ *
+ * Tells audacious to show/hide the preferences pane.
+ **/
+void audacious_remote_toggle_prefs_box(DBusGProxy *proxy, gboolean show) {
+    org_atheme_audacious_show_prefs_box(proxy, show, &error);
+    g_clear_error(&error);
+}
+
+/**
+ * audacious_remote_show_about_box:
+ * @proxy: DBus proxy for audacious
+ *
+ * Tells audacious to show the about box.
+ **/
+void audacious_remote_show_about_box(DBusGProxy *proxy) {
+    audacious_remote_toggle_about_box(proxy, TRUE);
+}
+
+/**
+ * audacious_remote_toggle_about_box:
+ * @proxy: DBus proxy for audacious
+ * @show: shows/hides
+ *
+ * Tells audacious to show/hide the about box.
+ **/
+void audacious_remote_toggle_about_box(DBusGProxy *proxy, gboolean show) {
+    org_atheme_audacious_show_about_box(proxy, show, &error);
+    g_clear_error(&error);
 }
 
 /**
@@ -517,7 +580,8 @@
  * Tells audacious to toggle the always-on-top feature.
  **/
 void audacious_remote_toggle_aot(DBusGProxy *proxy, gboolean ontop) {
-//XXX
+    org_atheme_audacious_toggle_aot(proxy, ontop, &error);
+	g_clear_error(&error);
 }
 
 /**
@@ -646,9 +710,9 @@
  *
  * Queries audacious about the equalizer settings.
  **/
-void audacious_remote_get_eq(DBusGProxy *proxy, gfloat *preamp,
-                             gfloat **bands) {
-//XXX
+void audacious_remote_get_eq(DBusGProxy *proxy, gdouble *preamp, GArray **bands) {
+    org_atheme_audacious_get_eq(proxy, preamp, bands, &error);
+    g_clear_error(&error);
 }
 
 /**
@@ -659,9 +723,13 @@
  *
  * Return value: The equalizer preamp's setting.
  **/
-gfloat audacious_remote_get_eq_preamp(DBusGProxy *proxy) {
-//XXX
-    return 0.0;
+gdouble audacious_remote_get_eq_preamp(DBusGProxy *proxy) {
+    gdouble preamp = 0.0;
+
+    org_atheme_audacious_get_eq_preamp(proxy, &preamp, &error);
+    g_clear_error(&error);
+
+    return preamp;
 }
 
 /**
@@ -673,9 +741,13 @@
  *
  * Return value: The equalizer band's value.
  **/
-gfloat audacious_remote_get_eq_band(DBusGProxy *proxy, gint band) {
-//XXX
-    return 0.0;
+gdouble audacious_remote_get_eq_band(DBusGProxy *proxy, gint band) {
+    gdouble value = 0.0;
+
+    org_atheme_audacious_get_eq_band(proxy, band, &value, &error);
+    g_clear_error(&error);
+
+    return value;
 }
 
 /**
@@ -686,9 +758,9 @@
  *
  * Tells audacious to set the equalizer up using the provided values.
  **/
-void audacious_remote_set_eq(DBusGProxy *proxy, gfloat preamp,
-                             gfloat *bands) {
-//XXX
+void audacious_remote_set_eq(DBusGProxy *proxy, gdouble preamp, GArray *bands) {
+    org_atheme_audacious_set_eq(proxy, preamp, bands, &error);
+    g_clear_error(&error);
 }
 
 /**
@@ -698,8 +770,9 @@
  *
  * Tells audacious to set the equalizer's preamp setting.
  **/
-void audacious_remote_set_eq_preamp(DBusGProxy *proxy, gfloat preamp) {
-//XXX
+void audacious_remote_set_eq_preamp(DBusGProxy *proxy, gdouble preamp) {
+    org_atheme_audacious_set_eq_preamp(proxy, preamp, &error);
+    g_clear_error(&error);
 }
 
 /**
@@ -710,9 +783,9 @@
  *
  * Tells audacious to set an equalizer band's setting.
  **/
-void audacious_remote_set_eq_band(DBusGProxy *proxy, gint band,
-                                  gfloat value) {
-//XXX
+void audacious_remote_set_eq_band(DBusGProxy *proxy, gint band, gdouble value) {
+    org_atheme_audacious_set_eq_band(proxy, band, value, &error);
+    g_clear_error(&error);
 }
 
 /**
@@ -733,7 +806,7 @@
  * Tells audacious to either play or pause.
  **/
 void audacious_remote_play_pause(DBusGProxy *proxy) {
-//XXX
+    org_atheme_audacious_play_pause(proxy, &error);
 }
 
 /**
@@ -746,7 +819,8 @@
  **/
 void audacious_remote_playlist_ins_url_string(DBusGProxy *proxy,
                                               gchar *string, guint pos) {
-//XXX
+    org_atheme_audacious_playlist_ins_url_string (proxy, string, pos, &error);
+    g_clear_error(&error);
 }
 
 /**
@@ -757,7 +831,8 @@
  * Tells audacious to add a playlist entry to the playqueue.
  **/
 void audacious_remote_playqueue_add(DBusGProxy *proxy, guint pos) {
-//XXX
+    org_atheme_audacious_playqueue_add (proxy, pos, &error);
+    g_clear_error(&error);
 }
 
 /**
@@ -768,7 +843,8 @@
  * Tells audacious to remove a playlist entry from the playqueue.
  **/
 void audacious_remote_playqueue_remove(DBusGProxy *proxy, guint pos) {
-//XXX
+    org_atheme_audacious_playqueue_remove (proxy, pos, &error);
+    g_clear_error(&error);
 }
 
 /**
@@ -820,7 +896,8 @@
  * Tells audacious to display the main window and become the selected window.
  **/
 void audacious_remote_activate(DBusGProxy *proxy) {
-//XXX
+    org_atheme_audacious_activate(proxy, &error);
+    g_clear_error(&error);
 }
 
 /**
@@ -830,7 +907,31 @@
  * Tells audacious to show the Jump-to-File pane.
  **/
 void audacious_remote_show_jtf_box(DBusGProxy *proxy) {
-//XXX
+    audacious_remote_toggle_jtf_box(proxy, TRUE);
+}
+
+/**
+ * audacious_remote_toggle_jtf_box:
+ * @proxy: DBus proxy for audacious
+ * @show: shows/hides jtf pane
+ *
+ * Tells audacious to show/hide the Jump-to-File pane.
+ **/
+void audacious_remote_toggle_jtf_box(DBusGProxy *proxy, gboolean show) {
+    org_atheme_audacious_show_jtf_box(proxy, show, &error);
+    g_clear_error(&error);
+}
+
+/**
+ * audacious_remote_toggle_filebrowser:
+ * @proxy: DBus proxy for audacious
+ * @show: shows/hides filebrowser
+ *
+ * Tells audacious to show the filebrowser dialog.
+ **/
+void audacious_remote_toggle_filebrowser(DBusGProxy *proxy, gboolean show) {
+    org_atheme_audacious_show_filebrowser(proxy, show, &error);
+    g_clear_error(&error);
 }
 
 /**
@@ -840,7 +941,8 @@
  * Tells audacious to clear the playqueue.
  **/
 void audacious_remote_playqueue_clear(DBusGProxy *proxy) {
-//XXX
+    org_atheme_audacious_playqueue_clear(proxy, &error);
+    g_clear_error(&error);
 }
 
 /**
@@ -853,22 +955,10 @@
  * Return value: TRUE if yes, FALSE otherwise.
  **/
 gboolean audacious_remote_playqueue_is_queued(DBusGProxy *proxy, guint pos) {
-//XXX
-    return FALSE;
-}
-
-/**
- * audacious_remote_get_playqueue_position:
- * @proxy: DBus proxy for audacious
- * @pos: Position to check queue for.
- *
- * Queries audacious about what the playqueue position is for a playlist entry.
- *
- * Return value: TRUE if yes, FALSE otherwise.
- **/
-gint audacious_remote_get_playqueue_position(DBusGProxy *proxy, guint pos) {
-//XXX
-    return 0;
+    gboolean is_queued;
+    org_atheme_audacious_playqueue_is_queued (proxy, pos, &is_queued, &error);
+    g_clear_error(&error);
+    return is_queued;
 }
 
 /**
@@ -876,14 +966,31 @@
  * @proxy: DBus proxy for audacious
  * @pos: Position to check queue for.
  *
+ * Queries audacious about what the playqueue position is for a playlist entry.
+ *
+ * Return value: the playqueue position for a playlist entry
+ **/
+gint audacious_remote_get_playqueue_queue_position(DBusGProxy *proxy, guint pos) {
+    guint qpos = 0;
+    org_atheme_audacious_queue_get_queue_pos (proxy, pos, &qpos, &error);
+    g_clear_error(&error);
+    return qpos;
+}
+
+/**
+ * audacious_remote_get_playqueue_list_position:
+ * @proxy: DBus proxy for audacious
+ * @pos: Position to check queue for.
+ *
  * Queries audacious about what the playlist position is for a playqueue entry.
  *
- * Return value: TRUE if yes, FALSE otherwise.
+ * Return value: the playlist position for a playqueue entry
  **/
-gint audacious_remote_get_playqueue_queue_position(DBusGProxy *proxy,
-                                                   guint pos) {
-//XXX
-    return 0;
+gint audacious_remote_get_playqueue_list_position(DBusGProxy *proxy, guint qpos) {
+    guint pos = 0;
+    org_atheme_audacious_queue_get_list_pos (proxy, qpos, &pos, &error);
+    g_clear_error(&error);
+    return pos;
 }
 
 /**
@@ -895,7 +1002,8 @@
  **/
 void audacious_remote_playlist_enqueue_to_temp(DBusGProxy *proxy,
                                                gchar *string) {
-//XXX
+    org_atheme_audacious_playlist_enqueue_to_temp(proxy, string, &error);
+	g_clear_error(&error);
 }
 
 /**
@@ -910,6 +1018,44 @@
  **/
 gchar *audacious_get_tuple_field_data(DBusGProxy *proxy, gchar *field,
                                       guint pos) {
-//XXX
-    return NULL;
+    GValue value = {};
+    gchar *s = NULL;
+
+    org_atheme_audacious_song_tuple(proxy, pos, field, &value, &error);
+
+    g_clear_error(&error);
+
+    if (G_IS_VALUE(&value) == FALSE)
+        return NULL;
+
+    if (G_VALUE_HOLDS_STRING(&value))
+        s = g_strescape(g_value_get_string(&value), NULL);
+    else if (g_value_type_transformable(G_VALUE_TYPE(&value), G_TYPE_STRING))
+    {
+        GValue tmp_value = { 0, };
+
+        g_value_init(&tmp_value, G_TYPE_STRING);
+        g_value_transform(&value, &tmp_value);
+
+        s = g_strescape(g_value_get_string(&tmp_value), NULL);
+
+        g_value_unset(&tmp_value);
+    }
+    else
+        s = g_strdup("<unknown type>");
+
+    g_value_unset(&value);
+    return s;
 }
+
+/**
+ * audacious_remote_eq_activate:
+ * @proxy: DBus proxy for audacious
+ * @active: Whether or not to activate the equalizer.
+ *
+ * Toggles the equalizer.
+ **/
+void audacious_remote_eq_activate(DBusGProxy *proxy, gboolean active) {
+    org_atheme_audacious_equalizer_activate (proxy, active, &error);
+    g_clear_error(&error);
+}
--- a/src/libaudclient/audctrl.h	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/libaudclient/audctrl.h	Fri Nov 16 05:36:42 2007 +0200
@@ -23,13 +23,11 @@
 #include <glib.h>
 #include <dbus/dbus-glib.h>
 
-#ifdef __cplusplus
-extern "C" {
-#endif
+G_BEGIN_DECLS
 
     void audacious_remote_playlist(DBusGProxy *proxy, gchar **list, gint num,
                                    gboolean enqueue);
-    gint audacious_remote_get_version(DBusGProxy *proxy);
+    gchar *audacious_remote_get_version(DBusGProxy *proxy);
     void audacious_remote_playlist_add(DBusGProxy *proxy, GList *list);
     void audacious_remote_playlist_delete(DBusGProxy *proxy, guint pos);
     void audacious_remote_play(DBusGProxy *proxy);
@@ -74,15 +72,15 @@
     void audacious_remote_toggle_shuffle(DBusGProxy *proxy);
     gboolean audacious_remote_is_repeat(DBusGProxy *proxy);
     gboolean audacious_remote_is_shuffle(DBusGProxy *proxy);
-    void audacious_remote_get_eq(DBusGProxy *proxy, gfloat *preamp,
-                                 gfloat **bands);
-    gfloat audacious_remote_get_eq_preamp(DBusGProxy *proxy);
-    gfloat audacious_remote_get_eq_band(DBusGProxy *proxy, gint band);
-    void audacious_remote_set_eq(DBusGProxy *proxy, gfloat preamp,
-                                 gfloat *bands);
-    void audacious_remote_set_eq_preamp(DBusGProxy *proxy, gfloat preamp);
+    void audacious_remote_get_eq(DBusGProxy *proxy, gdouble *preamp,
+                                 GArray **bands);
+    gdouble audacious_remote_get_eq_preamp(DBusGProxy *proxy);
+    gdouble audacious_remote_get_eq_band(DBusGProxy *proxy, gint band);
+    void audacious_remote_set_eq(DBusGProxy *proxy, gdouble preamp,
+                                 GArray *bands);
+    void audacious_remote_set_eq_preamp(DBusGProxy *proxy, gdouble preamp);
     void audacious_remote_set_eq_band(DBusGProxy *proxy, gint band,
-                                      gfloat value);
+                                      gdouble value);
 
 /* Added in XMMS 1.2.1 */
     void audacious_remote_quit(DBusGProxy *proxy);
@@ -106,9 +104,8 @@
     void audacious_remote_show_jtf_box(DBusGProxy *proxy);
     void audacious_remote_playqueue_clear(DBusGProxy *proxy);
     gboolean audacious_remote_playqueue_is_queued(DBusGProxy *proxy, guint pos);
-    gint audacious_remote_get_playqueue_position(DBusGProxy *proxy, guint pos);
-    gint audacious_remote_get_playqueue_queue_position(DBusGProxy *proxy,
-                                                       guint pos);
+    gint audacious_remote_get_playqueue_list_position(DBusGProxy *proxy, guint qpos);
+    gint audacious_remote_get_playqueue_queue_position(DBusGProxy *proxy, guint pos);
 
 /* Added in Audacious 1.2 */
     void audacious_set_session_uri(DBusGProxy *proxy, gchar *uri);
@@ -120,9 +117,14 @@
                                                    gchar *string);
     gchar *audacious_get_tuple_field_data(DBusGProxy *proxy, gchar *field,
                                           guint pos);
+/* Added in Audacious 1.4 */
+    void audacious_remote_show_about_box(DBusGProxy *proxy);
+    void audacious_remote_toggle_about_box(DBusGProxy *proxy, gboolean show);
+    void audacious_remote_toggle_jtf_box(DBusGProxy *proxy, gboolean show);
+    void audacious_remote_toggle_prefs_box(DBusGProxy *proxy, gboolean show);
+    void audacious_remote_toggle_filebrowser(DBusGProxy *proxy, gboolean show);
+    void audacious_remote_eq_activate(DBusGProxy *proxy, gboolean active);
 
-#ifdef __cplusplus
-};
-#endif
+G_END_DECLS
 
 #endif
--- a/src/libguess/cjk_impl.c	Wed Oct 24 10:41:53 2007 +0300
+++ b/src/libguess/cjk_impl.c	Fri Nov 16 05:36:42 2007 +0200
@@ -112,6 +112,8 @@
             break;
     }
 
+    DFA_NEXT(utf8, '\0'); //Bug #53
+
     if(DFA_ALIVE(utf8))
         return 1;
     else