# HG changeset patch # User Matti Hamalainen # Date 1195183976 -7200 # Node ID 57ff64831becac105b9961be060b5297a25649e5 # Parent 57dd6ddaa8af858aedbea80f88cd9c273b0cbc75# Parent eb20411bb9e1336814c9188adedd56be415a814c Automated merge with ssh://hg.atheme.org//hg/audacious diff -r 57dd6ddaa8af -r 57ff64831bec .hgtags --- a/.hgtags Tue Oct 30 11:22:17 2007 +0200 +++ b/.hgtags Fri Nov 16 05:32:56 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 diff -r 57dd6ddaa8af -r 57ff64831bec AUTHORS --- a/AUTHORS Tue Oct 30 11:22:17 2007 +0200 +++ b/AUTHORS Fri Nov 16 05:32:56 2007 +0200 @@ -7,11 +7,13 @@ Kieran Clancy Michael Färber <0102@gmx.at> Giacomo Lozito +Tomasz Moń William Pitcock Derek Pomery Mohammed Sameer -Jonathan Schleifer +Jonathan Schleifer Stephen Sokolow +Ben Tucker Tony Vroon Yoshiki Yazawa diff -r 57dd6ddaa8af -r 57ff64831bec ChangeLog --- a/ChangeLog Tue Oct 30 11:22:17 2007 +0200 +++ b/ChangeLog Fri Nov 16 05:32:56 2007 +0200 @@ -128,7 +128,7 @@ 1 file changed, 4 insertions(+), 4 deletions(-) -2007-06-01 23:02:59 +0000 Jonathan Schleifer +2007-06-01 23:02:59 +0000 Jonathan Schleifer 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 +2007-06-01 22:45:56 +0000 Jonathan Schleifer 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 +2007-05-18 21:01:45 +0000 Jonathan Schleifer 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 +2007-03-26 16:21:40 +0000 Jonathan Schleifer 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 +2007-02-20 12:54:56 +0000 Jonathan Schleifer 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 +2007-02-07 18:06:49 +0000 Jonathan Schleifer 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 +2007-02-07 18:05:19 +0000 Jonathan Schleifer 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 +2007-02-07 15:49:45 +0000 Jonathan Schleifer 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 +2007-01-16 19:12:11 +0000 Jonathan Schleifer 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 +2007-01-16 18:35:30 +0000 Jonathan Schleifer 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 +2007-01-14 01:02:39 +0000 Jonathan Schleifer revision [3668] Fixed make install. trunk/Makefile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) -2007-01-14 00:41:21 +0000 Jonathan Schleifer +2007-01-14 00:41:21 +0000 Jonathan Schleifer 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 +2007-01-14 00:09:38 +0000 Jonathan Schleifer 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 +2007-01-14 00:07:48 +0000 Jonathan Schleifer 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 +2007-01-13 17:34:48 +0000 Jonathan Schleifer 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 +2007-01-13 17:33:35 +0000 Jonathan Schleifer 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 +2007-01-13 17:19:52 +0000 Jonathan Schleifer 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 +2007-01-12 20:33:07 +0000 Jonathan Schleifer 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 +2007-01-12 20:32:12 +0000 Jonathan Schleifer 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 +2007-01-11 13:47:16 +0000 Jonathan Schleifer 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 +2007-01-09 22:53:19 +0000 Jonathan Schleifer 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 +2007-01-09 22:51:38 +0000 Jonathan Schleifer 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 +2007-01-09 15:45:01 +0000 Jonathan Schleifer 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 +2007-01-07 22:14:14 +0000 Jonathan Schleifer 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 +2006-11-24 17:49:06 +0000 Jonathan Schleifer revision [3003] Fixed wrong help, it has to be --with-rc-path. Found by Benny Siegert @@ -8654,7 +8654,7 @@ 1 file changed, 40 insertions(+), 2030 deletions(-) -2006-11-19 18:50:21 +0000 Jonathan Schleifer +2006-11-19 18:50:21 +0000 Jonathan Schleifer 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 +2006-10-07 20:31:15 +0000 Jonathan Schleifer 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 +2006-10-05 04:05:51 +0000 Jonathan Schleifer 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 +2006-10-05 04:04:50 +0000 Jonathan Schleifer 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 +2006-10-05 04:02:06 +0000 Jonathan Schleifer 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 +2006-10-04 19:47:37 +0000 Jonathan Schleifer 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 +2006-09-17 02:37:08 +0000 Jonathan Schleifer 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 +2006-09-17 02:21:06 +0000 Jonathan Schleifer 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 +2006-09-17 02:18:59 +0000 Jonathan Schleifer 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 +2006-09-17 02:13:26 +0000 Jonathan Schleifer 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 +2006-09-17 02:10:07 +0000 Jonathan Schleifer 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 +2006-09-17 01:58:23 +0000 Jonathan Schleifer 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 +2006-09-17 00:17:22 +0000 Jonathan Schleifer 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 +2006-09-16 23:26:54 +0000 Jonathan Schleifer 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 +2006-09-16 17:08:23 +0000 Jonathan Schleifer 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 +2006-09-16 14:33:28 +0000 Jonathan Schleifer 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 +2006-09-15 15:01:40 +0000 Jonathan Schleifer 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 +2006-09-15 13:36:26 +0000 Jonathan Schleifer 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 +2006-09-14 20:56:35 +0000 Jonathan Schleifer 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 +2006-09-14 20:38:05 +0000 Jonathan Schleifer 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 +2006-09-14 20:33:10 +0000 Jonathan Schleifer 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 +2006-09-14 15:46:01 +0000 Jonathan Schleifer revision [2315] Install audacious_player.xpm as well, so one can use it as a desktop icon. Requested by Jan Schummers . @@ -11477,7 +11477,7 @@ +1 -0 trunk/audacious/images/Makefile.in -2006-09-14 14:50:44 +0000 Jonathan Schleifer +2006-09-14 14:50:44 +0000 Jonathan Schleifer 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 +2006-09-14 14:40:39 +0000 Jonathan Schleifer 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 +2006-09-14 14:38:06 +0000 Jonathan Schleifer 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 +2006-09-13 21:01:54 +0000 Jonathan Schleifer 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 +2006-09-13 20:56:08 +0000 Jonathan Schleifer 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 revision [2295] - Link C++ plugins correctly on *BSD, by Jonathan Schleifer . + Link C++ plugins correctly on *BSD, by Jonathan Schleifer . Changes: Modified: +1 -1 trunk/Plugins/Input/modplug/gui/support.h @@ -11580,7 +11580,7 @@ 2006-09-13 16:40:07 +0000 Tony Vroon revision [2293] - Remove built-in soundcard.h silliness so OSS actually works on *BSD, by Jonathan Schleifer . + Remove built-in soundcard.h silliness so OSS actually works on *BSD, by Jonathan Schleifer . Changes: Modified: +5 -1 trunk/Plugins/Input/cdaudio/cdaudio.h @@ -11598,7 +11598,7 @@ 2006-09-13 15:06:57 +0000 Tony Vroon revision [2289] - 4-way scroll support in the main window (volume & seek) by Jonathan Schleifer . + 4-way scroll support in the main window (volume & seek) by Jonathan Schleifer . Changes: Modified: +20 -8 trunk/audacious/mainwin.c @@ -11606,7 +11606,7 @@ 2006-09-13 13:38:40 +0000 Tony Vroon revision [2287] - Fixes for NetBSD by Jonathan Schleifer + Fixes for NetBSD by Jonathan Schleifer Changes: Modified: +2 -0 trunk/Plugins/Container/xspf/xspf.c diff -r 57dd6ddaa8af -r 57ff64831bec NEWS --- a/NEWS Tue Oct 30 11:22:17 2007 +0200 +++ b/NEWS Fri Nov 16 05:32:56 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 diff -r 57dd6ddaa8af -r 57ff64831bec Skins/Default/pledit.png Binary file Skins/Default/pledit.png has changed diff -r 57dd6ddaa8af -r 57ff64831bec Skins/Default/posbar.png Binary file Skins/Default/posbar.png has changed diff -r 57dd6ddaa8af -r 57ff64831bec buildsys.mk.in --- a/buildsys.mk.in Tue Oct 30 11:22:17 2007 +0200 +++ b/buildsys.mk.in Fri Nov 16 05:32:56 2007 +0200 @@ -1,5 +1,5 @@ # -# Copyright (c) 2007, Jonathan Schleifer +# Copyright (c) 2007, Jonathan Schleifer # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above diff -r 57dd6ddaa8af -r 57ff64831bec configure.ac --- a/configure.ac Tue Oct 30 11:22:17 2007 +0200 +++ b/configure.ac Fri Nov 16 05:32:56 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])] ) diff -r 57dd6ddaa8af -r 57ff64831bec m4/buildsys.m4 --- a/m4/buildsys.m4 Tue Oct 30 11:22:17 2007 +0200 +++ b/m4/buildsys.m4 Fri Nov 16 05:32:56 2007 +0200 @@ -1,5 +1,5 @@ dnl -dnl Copyright (c) 2007, Jonathan Schleifer +dnl Copyright (c) 2007, Jonathan Schleifer 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 diff -r 57dd6ddaa8af -r 57ff64831bec po/ChangeLog --- a/po/ChangeLog Tue Oct 30 11:22:17 2007 +0200 +++ /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 - - * 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 Hvard Kvlen - - * sl.po: New translation by Tadej Panjtar - - * LINGUAS: Add "sl" (Slovenian). - -Wed Jul 16 01:41:20 CEST 2003 Hvard Kvlen - - * no.po: Updated. - -Mon Jul 14 00:34:06 CEST 2003 Hvard Kvlen - - * 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 Hvard Kvlen - - * LINGUAS: Add Belarusian (be) and Welsh (cy). - - * cy.po: New translation by: - Rhoslyn Prys - - * be.po: New translation by: Smaliakou Zmicer - - * pt.po: Updated translation by Jorge Costa - - * uk.po: Updated translation by - Dmytro Koval'ov - -Tue Jan 7 23:43:10 CET 2003 Hvard Kvlen - - * ja.po: Updated translation by Hiroshi Takekawa . - -Wed Dec 11 23:17:10 CET 2002 Hvard Kvlen - - * zh_TW.po: Updated translation by - Chun-Chung Chen - -Fri Nov 22 22:10:48 BRST 2002 Juan Carlos C. y Castro - - * pt_BR.po: Updated translation. - -Sun Oct 27 20:17:45 CET 2002 Hvard Kvlen - - * ca.po: Updated translation by - Albert Astals Cid - - * ro.po: Updated translation by Miu Moldovan - - * no.po: Updated translation. - -Wed Sep 11 11:25:37 CEST 2002 Hvard Kvlen - - * 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 - - * pt_BR.po: Some language names were missing the ':'. - -Tue Jul 30 23:04:05 BRT 2002 Juan Carlos C. y Castro - - * pt_BR.po: Updated translation. - -Mon Jul 29 12:56:24 CEST 2002 Hvard Kvlen - - * ru.po: Updated translation by - Alexandr P. Kovalenko - - * nl.po: Updated translation by Bart Coppens - -Tue May 21 02:09:36 BRT 2002 Juan Carlos C. y Castro - - * pt_BR.po: Updated translation. - -Sun May 12 17:41:35 CEST 2002 Hvard Kvlen - - * mk.po: New translation by Stojcev Darko - -Mon May 6 16:50:28 CEST 2002 Hvard Kvlen - - * no.po: Updated translation by - Terje Bjerkelia - -Wed Apr 10 15:19:22 CEST 2002 Hvard Kvlen - - * ru.po: Updated translation by - Alexandr P. Kovalenko - -Tue Mar 26 15:20:20 CET 2002 Hvard Kvlen - - * cs.po: One string updated. - Patch by Martin Macok - -2002-03-14 Christian Rose - - * sv.po: Changed Swedish translation. - -Tue Mar 5 15:47:41 CET 2002 Hvard Kvlen - - * es.po: Updated translation by - Jordi Mallach - -2002-03-03 Christian Rose - - * sv.po: Changed Swedish translation. - -2002-03-02 Christian Rose - - * sv.po: Updated Swedish translation. - -Mon Feb 11 13:08:44 CET 2002 Thomas Nilsson - - * *.po: Updated copyright year. - -Fri Jan 25 18:48:08 CET 2002 Hvard Kvlen - - * ru.po: Updated translation by - Alexandr P. Kovalenko - -Thu Jan 24 19:48:47 BRST 2002 Juan Carlos C. y Castro - - * pt_BR.po: Updated translation. - -Sun Jan 20 21:35:24 CET 2002 Hvard Kvlen - - * ru.po: Updated translation by - Alexandr P. Kovalenko - -2002-01-04 Hvard Kvlen - - * no.po: Updated. - -Sat Dec 29 19:36:18 CET 2001 Hvard Kvlen - - * fr.po: Updated translation by - Arnaud Boissinot - -2001-12-29 Christian Rose - - * POTFILES.in: Sorted. - * sv.po: Updated Swedish translation. - -Fri Dec 14 22:36:08 CET 2001 Hvard Kvlen - - * ro.po: Updated translation by - Miu Moldovan - - * az.po: Updated translation by - Vasif Cabbarli - -Tue Dec 11 23:44:35 CET 2001 Hvard Kvlen - - * uk.po: Updated translation by Dmytro Koval'ov - - * de.po: Updated translation by - Colin Marquardt - - * ro.po: Updated translation by - Miu Moldovan - - * tr.po: Updated translation by - mer Fadl USTA - - * cs.po: Updated translation by - Radek Vybiral - - * hu.po: Updated translation by Arpad Biro - - * th.po: Updated translation by - Supphachoke Suntiwichaya - -Sat Dec 8 12:08:22 BRST 2001 Juan Carlos C. y Castro - - * pt_BR.po: Fixed inconsistencies in menu translation. - -Sat Dec 8 12:11:58 CET 2001 Hvard Kvlen - - * ja.po: Updated translation by - Hiroshi Takekawa - - * zh_TW.po: Updated translation by - Chun-Chung Chen - - * el.po: Updated translation by - Thanos Kyritsis - - * pl.po: Updated translation by - GNOME PL Team - - * de.po: Updated translation by - Colin Marquardt - - * hr.po: Updated translation by - Vlatko Kosturjak - - * es.po: Updated translation by - Jordi Mallach - - * fr.po: Updated translation by - Arnaud Boissinot - - * gl.po: Updated translation by - Alberto Garca - - * nn.po: Updated translation by - Roy-Magne Mo - -2001-12-07 Christian Rose - - * sv.po: Updated Swedish translation. - -Tue Dec 4 19:42:25 BRST 2001 Juan Carlos C. y Castro - - * pt_BR.po: Updated translation. - -2001-12-03 Christian Rose - - * sv.po: Updated Swedish translation. - -2001-11-27 Christian Rose - - * sv.po: Updated Swedish translation. - -Thu Nov 15 22:06:11 BRST 2001 Juan Carlos C. y Castro - - * pt_BR.po: Updated translation. - -Wed Nov 14 00:02:51 CET 2001 Hvard Kvlen - - * ja.po: Updated translation by - Hiroshi Takekawa - -Mon Nov 12 22:44:20 CET 2001 Hvard Kvlen - - * sv.po: Updated translation by - Christian Rose - -Sat Nov 10 22:11:37 BRST 2001 Juan Carlos C. y Castro - - * pt_BR.po: Updated translation. - -Sat Nov 10 18:46:14 CET 2001 Hvard Kvlen - - * sv.po: Updated translation by - Christian Rose - - * pl.po: Updated translation by - GNOME PL Team - -Wed Nov 7 01:26:26 CET 2001 Hvard Kvlen - - * th.po: New translation by - Supphachoke Suntiwichaya - -Fri Sep 21 10:57:54 BRT 2001 Juan Carlos C. y Castro - - * pt_BR.po: Updated translation. - -Tue Sep 18 21:03:21 CEST 2001 Hvard Kvlen - - * es.po: Updated translation by - Jordi Mallach - - * tr.po: Updated translation by - mer Fadl USTA - - * sk.po: Updated translation by Jan Matis - - * lv.po: Updated translation by Juris Kudi - - * ko.po: Updated translation by Jaegeum - - * ga.po: Updated translation by - Alastair McKinstry - - * es.po: Updated translation by - Juan Manuel Garca Molina - - * da.po: Updated translation by Keld Simonsen - - * eu.po: New translation by - Iigo Salvador Azurmendi - - * tg.po: New translation by - Dilshod Marupov and - Roger Kovacs - - * vi.po: New translation by Trinh Minh Thanh - - * nn.po: Fixed one error. - -Tue Sep 18 00:28:00 BRT 2001 Juan Carlos C. y Castro - - * pt_BR.po: Updated translation. - -Sun Aug 26 19:20:02 CEST 2001 Hvard Kvlen - - * ja.po: Updated translation by - Hiroshi Takekawa - - * nn.po: New translation by Roy-Magne Mo . - -Sun Aug 19 19:07:04 CEST 2001 Hvard Kvlen - - * pt_BR.po: Updated translation by - Juan Carlos Castro y Castro - - * sk.po: Updated translation by - Pavol Cvengros - - * hu.po: Updated translation by - Arpad Biro - - * es.po: Updated translation by - Juan Manuel Garca Molina - - * eo.po: Updated translation by - D. Dale Gulledge - - * no.po: Updated translation by - Andreas Bergstrm - -Thu Jun 21 01:23:37 CEST 2001 Hvard Kvlen - - * *.po: Update the bugreport url for all translations. - Patch by Thomas Nilsson . - -Mon Jun 18 18:50:37 CEST 2001 Hvard Kvlen - - * sv.po: Updated translation by - Christian Rose - -Wed Jun 13 16:59:34 CEST 2001 Hvard Kvlen - - * 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 Hvard Kvlen - - * pl.po: Updated translation by - Grzegorz Kowal - - * 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 Hvard Kvlen - - * de.po: Updated translation by - Colin Marquardt - -Wed Jun 6 14:15:09 CEST 2001 Hvard Kvlen - - * hu.po: Commit the right version this time. Update by - Arpad Biro - -Tue Jun 5 15:44:08 CEST 2001 Hvard Kvlen - - * no.po: Updated. - - * da.po: Updated translation by - Nikolaj Berg Amodsen - - * zh_TW.po: File renamed from "zh_TW.Big5.po" and updated by - Chun-Chung Chen and - Jouston Huang - -Sun Jun 3 22:35:40 CEST 2001 Hvard Kvlen - - * es.po: Updated translation by - Jordi Mallach - - * uk.po: Dmytro Kovalov - - * pt_BR.po: Updated translation by - Juan Carlos Castro y Castro - - * hu.po: Updated translation by - Arpad Biro - - * az.po: Updated translation by - Vasif Ismailoglu - - * lt.po: Updated translation by - Gediminas Paulauskas - - * cs.po: Updated translation by - Radek Vybiral - - * hr.po: Updated translation by - Vlatko Kosturjak - - * tr.po: Updated translation by - mer Fadl USTA - - * ru.po: Updated translation by - Maxim Koshelev - - * gl.po: Updated translation by - Alberto Garca - - * ro.po: Updated translation by Misu Moldovan - - * sk.po: Updated translation by - Pavol Cvengros - - * fr.po: Updated translation by - Arnaud Boissinot - - * ko.po: Updated translation by - Jaegeum Choe - - * ja.po: Updated translation by - Hiroshi Takekawa - - * sv.po: Updated translation by - Christian Rose - - * el.po: Updated translation by - Kyritsis Athanasios - -Wed May 9 00:52:48 CEST 2001 Hvard Kvlen - - * *.po: Ran 'make update-po'. - - * ja.po: Updated translation by - Hiroshi Takekawa - - * sv.po: Updated translation by - Christian Rose - -Tue Apr 10 17:29:14 CEST 2001 Hvard Kvlen - - * bg.po: Updated translation by - Yovko D. Lambrev - - * az.po: Updated translation by - Vasif Ismailoglu - - * pt_BR.po: Updated translation by - Juan Carlos Castro y Castro - - * sv.po: Updated translation by - Christian Rose - -Mon Mar 26 03:36:41 CEST 2001 Hvard Kvlen - - * sr.po: New translation by Tomislav Jankovic_ - - * wa.po: Updated translation by - Pablo Saratxaga - - * tr.po: Updated translation by - mer Fadl USTA - - * ko.po: Updated translation by - Jaegeum Choe - - * id.po: Updated translation by Budi Rachmanto - - * hr.po: Updated translation by Vlatko Kosturjak - - * de.po: Updated translation by - Colin Marquardt - - * az.po: Updated translation by - Vasif Ismailoglu - -Tue Mar 20 17:08:41 EST 2001 Hvard Kvlen - - * no.po: Updated translation. - -Tue Mar 20 01:22:44 CET 2001 Hvard Kvlen - - * pt_BR.po: Updated translation by - Juan Carlos Castro y Castro - -Tue Mar 13 22:00:03 CET 2001 Hvard Kvlen - - * pt.po: New translation by Jorge Costa - -Fri Mar 9 01:47:22 CET 2001 Hvard Kvlen - - * sv.po: Updated translation by - Fuad Sabanovic - - * sk.po: Updated translation by - Pavol Cvengros - - * pt_BR.po: Updated translation by - Juan Carlos Castro y Castro - - * lt.po: Updated translation by - Gediminas Paulauskas - - * ja.po: Updated translation by - Hiroshi Takekawa - - * bg.po: Updated translation by - Yovko D. Lambrev - -Fri Mar 2 18:32:16 CET 2001 Hvard Kvlen - - * tr.po: Updated translation by - mer Fadl USTA - - * ru.po: Updated translation by Valek Filippov - - * pl.po: Updated translation by - Grzegorz Kowal - - * id.po: New translation by Budi Rachmanto - -Fri Feb 16 23:21:53 CET 2001 Hvard Kvlen - - * gl.po: Updated translation by Alberto Garca - - * wa.po: Updated translation by - Pablo Saratxaga - - * tr.po: Updated translation by Nazmi Savga - - * no.po: Updated translation by - Terje Bjerkelia - - * hr.po: Updated translation by Vlatko Kosturjak - - * az.po: Updated traslation by - Vasif Ismailoglu - -Wed Feb 7 20:34:54 CET 2001 Hvard Kvlen - - * hr.po: Updated translation by Vlatko Kosturjak - - * de.po: Updated translation by - Colin Marquardt - - * da.po: Updated translation by Keld Simonsen - - * cs.po: Updated translation by - Radek Vybiral - - * pt_BR.po: Updated translation by - Juan Carlos Castro y Castro - -Thu Jan 4 21:54:46 CET 2001 Hvard Kvlen - - * ja.po: Updated translation by - Hiroshi Takekawa - -Tue Jan 2 00:19:16 CET 2001 Hvard Kvlen - - * pt_BR.po: Updated translation by - Juan Carlos Castro y Castro - - * ru.po: Updated translation by - Alexandr P. Kovalenko - -Tue Dec 19 18:36:10 CET 2000 Hvard Kvlen - - * ru.po: Updated translation by - Alexandr P. Kovalenko - -Sun Dec 10 23:44:00 CET 2000 Hvard Kvlen - - * wa.po: Updated translation by - Pablo Saratxaga - - * ru.po: Updated translation by - Aleksey Smirnov - - * ga.po: The charset was slightly wrong. - Fix by Pablo Saratxaga . - - * es.po: Updated translation by - Fabian Mandelbaum - - * az.po: Converted to UTF-8. Supposed to work better. Thanks to - Pablo Saratxaga - - * no.po: Updated translation by - Andreas Bergstrm - - * 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 Hvard Kvlen - - * gl.po: New translation by Alberto Garca - -Mon Nov 27 15:17:08 CET 2000 Hvard Kvlen - - * es.po: Fixed a typo. - -Mon Nov 27 14:52:43 CET 2000 Hvard Kvlen - - * ro.po: Updated translation by - Miu Moldovan - - * sk.po: Updated translation by - Pavol Cvengros - - * pl.po: Updated translation by - Grzegorz Kowal - - * no.po: Updated translation by - Terje Bjerkelia - - * lv.po: Updated translation by Vitauts Stochka - - * cs.po: Updated translation by - Vladimr Marek - - * ca.po: Updated translation by - Quico Llach - - * da.po: Some corrections by - Kenneth Christiansen and - Keld Simonsen - - * az.po: Updated translation by - Vasif Ismailoglu - - * pt_BR.po: Updated translation by - Juan Carlos Castro y Castro - - * sv.po: Updated translation by - Christian Rose - - * it.po: Updated translation by Paolo Lorenzin - -Tue Nov 21 23:22:02 CET 2000 Hvard Kvlen - - * uk.po: Updated translation by - Dmytro Koval'ov - - * it.po: Updated translation by Paolo Lorenzin - - * zh_TW.Big5.po: One correction. - -Tue Nov 21 01:34:15 CET 2000 Hvard Kvlen - - * zh_TW.Big5.po: Updated translation by - Chun-Chung Chen - - * hu.po: Updated translation by - Arpad BIRO - - * de.po: Updated translation by - Colin Marquardt - - * da.po: Updated translation by - Nikolaj Berg Amondsen - -Sun Nov 19 17:08:16 CET 2000 Hvard Kvlen - - * ja.po: Updated translation by - Hiroshi Takekawa - - * lt.po: Updated translation by - Gediminas Paulauskas - -Fri Nov 17 14:39:39 CET 2000 Hvard Kvlen - - * ko.po: Updated translation by - Man-Yong Lee - - * bg.po: Updated translation by - Yovko D. Lambrev - - * sv.po: Updated translation by - Christian Rose - -Fri Nov 17 00:20:08 CET 2000 Hvard Kvlen - - * el.po: Updated translation by - Kyritsis Athanasios - -Wed Nov 8 22:07:11 CET 2000 Hvard Kvlen - - * tr.po: Updated translation by - Nazmi Savga - - * sv.po: Updated translations by - Christian Rose - - * pl.po: Updated translation by - Grzegorz Kowal - - * es.po: Updated translation by - Fabian Mandelbaum - - * az.po: Updated translation by - Vasif Ismailoglu - - * zh_CN.GB2312.po: A missing slash was causing crashes on start. - -Wed Oct 25 18:41:51 CEST 2000 Hvard Kvlen - - * uk.po: Updated translation by - Dmytro Koval'ov - - * ja.po: Updated translation by - Hiroshi Takekawa - - * pt_BR.po: Updated translation by - Juan Carlos Castro y Castro - -Wed Oct 18 13:35:48 CEST 2000 Hvard Kvlen - - * pt_BR.po: Updated translation by - Juan Carlos Castro y Castro - - * tr.po: New translation by Nazmi Savga - -Mon Oct 2 11:37:24 2000 Espen Skoglund - - * ja.po: Update strings for 3DNow! patch: - Osamu Kayasono - -Sun Oct 1 19:45:07 CEST 2000 Hvard Kvlen - - * da.po: Updated translation by: - Nikolaj Berg Amondsen - - * ga.po: Updated translation by: - Alastair McKinstry - -Tue Sep 26 23:03:21 CEST 2000 Hvard Kvlen - - * it.po: New translation by: Paolo Lorenzin - - * az.po: New translation by: - Vasif Ismailoglu - - * eo.po: Updated translation by: - D. Dale Gulledge - - * sk.po: Updated translation by: - Pavol Cvengros - -Tue Sep 26 00:40:31 CEST 2000 Hvard Kvlen - - * ko.po: Updated translation by: - Byeong-Chan Kim - -Tue Sep 19 17:11:41 CEST 2000 Hvard Kvlen - - * cs.po: Update by Vladimr Marek . - -Mon Sep 18 02:03:32 CEST 2000 Hvard Kvlen - - * lv.po: New translation by: Vitauts Stochka - - * af.po: Updated translation by: - Schalk W. Cronj - - * nl.po: Updated translation by: - Tom Laermans - - * ga.po: Updated translaion by: - Alastair McKinstry - - * pl.po: Updated translation by: - Grzegorz Kowal - - * ca.po: Updated translation by: - Quico Llach - - * zh_TW.Big5.po: Fixed two duplicate strings. - -Mon Sep 11 23:18:20 CEST 2000 Hvard Kvlen - - * ga.po: New translation by: - Alastair McKinstry - - * zh_TW.Big5.po: Updated translation by: - Jouston Huang and others. - - * zh_CN.GB2312.po: Updated translation by: - Danny Zeng - - * wa.po: Updated translation by: - Pablo Saratxaga - - * uk.po: Updated translation by: - Dmytro Kovalov - - * ru.po: Updated translation by: - Maxim Koshelev - - * pt_BR.po: Updated translation by: - Juan Carlos Castro y Castro - - * pl.po: Updated translation by: - Grzegorz Kowal - - * no.po: Updated translation by: - Terje Bjerkelia - - * lt.po: Updated translation by: - Gediminas Paulauskas - - * ja.po: Updated translation by: - Hiroshi Takekawa - - * hu.po: Updated translation by: - Arpad BIRO - - * fr.po: Updated translation by: - Eric Fernandez-Bellot - - * es.po: Updated translation by: - Fabian Mandelbaum - - * el.po: el_GR.po renamed to el.po. Also updated by: - Kyritsis Athanasios - - * de.po: Updated translation by: - Colin Marquardt - - * cs.po: Updated translation by: - Radek Vybiral - - * bg.po: Updated translation by: - Yovko D. Lambrev - -Sun Sep 3 22:24:28 CEST 2000 Hvard Kvlen - - * sv.po: Updated translation by: - Christian Rose - - * *.po: Ran 'make update-po'. - -Fri Aug 11 20:20:27 CEST 2000 Hvard Kvlen - - * sv.po: Updated translation by: - Christian Rose - - * pt_BR.po: Updated translation by: - Juan Carlos Castro y Castro - -Wed Aug 9 23:54:22 CEST 2000 Hvard Kvlen - - * pt_BR.po: Updated translation by: - Juan Carlos Castro y Castro - -Wed Aug 9 16:47:33 CEST 2000 Hvard Kvlen - - * sv.po: Updated translation by: Thomas Nilsson - -Mon Aug 7 17:38:26 CEST 2000 Hvard Kvlen - - * ja.po: Updated translation by: - Hiroshi Takekawa - -Fri Jul 28 18:39:18 CEST 2000 Hvard Kvlen - - * pt_BR.po: Updated translation by: - Juan Carlos Castro y Castro - -Fri Jul 14 01:24:03 CEST 2000 Hvard Kvlen - - * sv.po: Updated translation by: - Christian Rose - -Tue Jul 4 19:21:59 CEST 2000 Hvard Kvlen - - * bg.po: Updated translation by: - Yovko D. Lambrev - - * cs.po: Updated translation by: - Radek Vybiral - -Tue Jun 27 16:07:18 CEST 2000 Hvard Kvlen - - * el_GR.po: New translation by: - Kyritsis Athanasios - - * pl.po: New translation by: - Grzegorz Kowal - -Sat Jun 17 19:54:49 CEST 2000 Hvard Kvlen - - * sv.po: Updated translation by: Thomas Nilsson - -Sat Jun 17 18:38:14 CEST 2000 Hvard Kvlen - - * eo.po: New translation by: - D. Dale Gulledge - - * 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 - - - * no.po: Updated translation by: - Terje Bjerkelia . A couple of strings altered - by me. - -Tue Jun 13 23:40:15 CEST 2000 Hvard Kvlen - - * ja.po: Updated translation by: - Hiroshi Takekawa - -Mon Jun 12 16:56:55 CEST 2000 Hvard Kvlen - - * pt_BR.po: One string added by: - Juan Carlos Castro y Castro - -Mon Jun 12 15:39:23 CEST 2000 Hvard Kvlen - - * *.po: Ran 'make update-po' and updated the copyright string from - about.c for all translations. - -Fri Jun 9 10:40:42 CEST 2000 Hvard Kvlen - - * zh_CN.GB2312.po: Updated translation by: - Danny Zeng - - * fr.po: Update which fixes a incorrect string (again). - - * pt_BR.po: Updated translation by: - Juan Carlos Castro y Castro - -Wed May 31 00:58:34 CEST 2000 Hvard Kvlen - - * cs.po: New translation by: Radek Vybiral - - * fr.po: Updated translation by: - Eric Fernandez-Bellot - - * da.po: Updated translation by: - Nikolaj Berg Amondsen - - * ro.po: Updated translation by: - Florin Grad - - * es.po: Updated translation by: - Fabian Mandelbaum - - * sk.po: Updated translation by: - Jan Matis - - * lt.po: Updated translation by: - Gediminas Paulauskas - - * hu.po: Updated tranlation by: - Arpad BIRO - - * ca.po: Updated translation by: - Quico Llach - - * af.po: Update translation by: - Schalk W. Cronj - -Tue May 30 01:50:32 CEST 2000 Hvard Kvlen - - * de.po: Updated translation by: - Colin Marquardt - -Mon May 22 22:10:54 CEST 2000 Hvard Kvlen - - * fr.po: Updated translation by: - Eric Fernandez-Bellot - - * wa.po: Updated translation by: - Pablo Saratxaga , - Lucyin Mahin - - * bg.po: Updated translation by: - Yovko D. Lambrev - - * ca.po: Updated translation by: - Quico Llach - - * uk.po: Updated translation by: - Dmytro Koval'ov - - * hu.po: New translation by: Arpad BIRO - - * af.po: New translation by: - Schalk W. Cronj - - * es.po: Updated translation by: - Fabian Mandelbaum - -Fri May 19 13:36:02 CEST 2000 Hvard Kvlen - - * sk.po: Updated translation by: Jan Matis - - * lt.po: Updated translation by: - Gediminas Paulauskas - - * hr.po: Updated translation by: Vladimir Vuksan - -Tue May 9 00:05:04 CEST 2000 Hvard Kvlen - - * uk.po: Updated translation by: - Dmytro Kovalov - -Wed May 3 14:21:47 CEST 2000 Hvard Kvlen - - * ro.po: New translation by: Florin Grad - - * hr.po: New translation by: Vladimir Vuksan - - * es.po: New translation by: - Fabian Mandelbaum - - * no.po: Fixed a typo that affected the Visualization menu. - -Wed Apr 12 13:55:01 CEST 2000 Hvard Kvlen - - * da.po: Updated translation by: - Nikolaj Berg Amondsen , - Kenneth Christiansen, - Troels Liebe Bentsen - -Mon Apr 3 00:54:10 CEST 2000 Hvard Kvlen - - * lt.po: New translation by: - Gediminas Paulauskas - - * sk.po: Updated translation by: Jan Matis - -Thu Mar 30 00:42:05 CEST 2000 Hvard Kvlen - - * zh_TW.Big5.po: Updated translation by: - Jouston Huang - -Tue Mar 28 11:26:57 CEST 2000 Hvard Kvlen - - * sk.po: New translation by: - TOMAS HORNICEK , - Jan Matis - -Mon Mar 27 02:26:29 CEST 2000 Hvard Kvlen - - * no.po: Updated translation by: - Terje Bjerkelia - -Fri Mar 24 17:37:10 CET 2000 Hvard Kvlen - - * bg.po: Updated translation by: - Yovko D. Lambrev - - * ru.po: Updated translation by: Maxim Koshelev - -Thu Mar 23 13:21:17 CET 2000 Hvard Kvlen - - * fr.po: One string corrected. Thanks to: - Guillaume Cottenceau - -Tue Mar 21 23:05:19 CET 2000 Hvard Kvlen - - * de.po: Updated translation by: - Colin Marquardt - - * ja.po: Updated translation by: - Hiroshi Takekawa - -Mon Mar 20 23:27:51 CET 2000 Hvard Kvlen - - * bg.po: Updated translation by: - Yovko D. Lambrev - -Mon Mar 20 18:50:23 CET 2000 Hvard Kvlen - - * ca.po: Updated translation by: - Quico Llach - - * da.po: Updated translation by: - Nikolaj Berg Amondsen - - * zh_CN.GB2312.po: Updated translation by: - Danny Zeng - -Sun Mar 19 01:36:19 CET 2000 Hvard Kvlen - - * wa.po: Updated translation by: - Pablo Saratxaga - - * nl.po: New translation by: - Tom Laermans - - * da.po: New translation by: - Nikolaj Berg Amondsen - -Thu Mar 9 15:41:20 CET 2000 Hvard Kvlen - - * ko.po: Updated translation by: - Byeong-Chan Kim - -Tue Mar 7 23:17:24 CET 2000 Hvard Kvlen - - * ja.po: Updated translation by: - Hiroshi Takekawa - -Mon Mar 6 15:57:58 CET 2000 Hvard Kvlen - - * no.po: Updated translation. - - * fr.po: Updated translation by: - Eric Fernandez-Bellot - - * ca.po: Updated translation by: - Quico Llach - -Sun Mar 5 00:20:11 CET 2000 Hvard Kvlen - - * uk.po: Updated translation by: - Dmytro Koval'ov - - * de.po: Updated translation by: - Colin Marquardt - - * pt_BR.po: Updated translation by: - Juan Carlos Castro y Castro - -Sat Feb 26 00:35:44 CET 2000 Hvard Kvlen - - * ca.po: New translation by: Quico Llach - - * bg.po: New translation by: - Yovko D. Lambrev - - * sv.po: New translation by: Olle Hllns - - * pt_BR.po: Updated translation by: - Juan Carlos Castro y Castro - -Thu Feb 17 10:50:41 CET 2000 Hvard Kvlen - - * ko.po: Updated translation by: - Byeong-Chan Kim - -Wed Feb 16 22:19:51 CET 2000 Hvard Kvlen - - * pt_BR.po: Updated translation by: - Juan Carlos Castro y Castro - -Wed Feb 16 02:09:22 CET 2000 Hvard Kvlen - - * no.po: Updated translation. - -Wed Feb 16 00:00:20 CET 2000 Hvard Kvlen - - * pt_BR.po: New translation by: - Juan Carlos Castro y Castro - -Tue Feb 15 21:13:03 CET 2000 Hvard Kvlen - - * ko.po: Updated translation by: - Byeong-Chan Kim - -Thu Feb 10 22:15:00 CET 2000 Hvard Kvlen - - * ko.po: New translation by: - Sang-Jin Hwang , - Updated by: Byeong-Chan Kim - -Thu Feb 10 14:14:48 CET 2000 Hvard Kvlen - - * ru.po: New translation by: Koshelev Maxim - -Mon Feb 7 22:48:26 CET 2000 Hvard Kvlen - - * de.po: Updated translation by: - Colin Marquardt - -Mon Feb 7 14:15:42 CET 2000 Hvard Kvlen - - * ja.po: New translation by: - Hiroshi Takekawa - -Sun Feb 6 13:33:35 CET 2000 Hvard Kvlen - - * zh_CN.GB2312.po: Added translation by: - Jouston Huang , - Andrew Lee , - Chih-Wei Huang . - - * zh_TW.Big5.po: Added translation by: - Jouston Huang , - Andrew Lee , - Chih-Wei Huang . - - * wa.po: Added translation by: - Pablo Saratxaga - - * uk.po: Added translation by: - "Dmytro Koval'ov" - - * fr.po: Added translation by: - Eric Fernandez-Bellot - - * de.po: Added translation by: - Colin Marquardt - diff -r 57dd6ddaa8af -r 57ff64831bec po/cs.po --- a/po/cs.po Tue Oct 30 11:22:17 2007 +0200 +++ b/po/cs.po Fri Nov 16 05:32:56 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ř \n" "Language-Team: Czech \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 "" "This is the amount of time to prebuffer audio streams " "by, in milliseconds.\n" @@ -440,7 +440,7 @@ "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." #: 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,14 +522,12 @@ msgstr "s" #: src/audacious/glade/prefswin.glade:4249 -#, fuzzy msgid "Sampling Rate Converter" -msgstr "Vzorkovací kmitočet" +msgstr "Konvertor vzorkovacího kmitočtu" #: 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 "" @@ -539,10 +537,15 @@ "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 "" @@ -550,31 +553,34 @@ "This should be the max supported sampling rate of\n" "the sound card or output plugin." msgstr "" +"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." #: 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 "Volume Control" -msgstr "Ovládání hlasitosti:" +msgstr "Ovládání hlasitosti" #: 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" @@ -634,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 @@ -670,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 @@ -817,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 "" @@ -824,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)" @@ -846,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 "" "Audacious %s\n" "A skinned multimedia player for many platforms.\n" @@ -864,7 +887,7 @@ "Copyright (C) 2005-2007 Audacious Development Team\n" msgstr "" "Audacious %s\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" @@ -880,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é" @@ -1120,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 @@ -1156,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 "" @@ -1175,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 "" @@ -1494,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" @@ -1652,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" @@ -1708,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" @@ -1739,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" @@ -1777,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" @@ -1869,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" @@ -1948,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: " @@ -1999,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" @@ -2056,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" @@ -2080,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í" @@ -2140,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 "Artist: %s" -#~ msgstr "Umělec" - -#, fuzzy -#~ msgid "Title: %s" -#~ msgstr "Název" - -#, fuzzy -#~ msgid "Album: %s" -#~ msgstr "Album" - -#, fuzzy -#~ msgid "Audacious last.fm radio tuner" -#~ msgstr "Zobrazit editor seznamu skladeb" - -#, fuzzy -#~ msgid "Station:" -#~ msgstr "Umístění:" - -#, fuzzy -#~ msgid "Artist:" -#~ msgstr "Umělec" - -#, fuzzy -#~ msgid "Title:" -#~ msgstr "Název" - -#, fuzzy -#~ msgid "Album:" -#~ msgstr "Album" +#~ msgid "" +#~ "Unable to play files.\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 "" +#~ "Soubory nelze přehrát\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%%" @@ -2187,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 "" #~ "No playable CD found.\n" @@ -2208,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" @@ -2238,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 "" -#~ "Unable to play files.\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 "" -#~ "Soubory nelze přehrát\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ý:" @@ -2542,6 +2507,15 @@ #~ msgid "Artist Popup" #~ msgstr "Vyskakovací okno o umělci" +#~ msgid "Title" +#~ msgstr "Název" + +#~ msgid "Artist" +#~ msgstr "Umělec" + +#~ msgid "Album" +#~ msgstr "Album" + #~ msgid "Genre" #~ msgstr "Žánr" @@ -3034,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 :" @@ -3927,6 +3904,9 @@ #~ msgid "Description:" #~ msgstr "Popis:" +#~ msgid "Location:" +#~ msgstr "Umístění:" + #~ msgid "Version:" #~ msgstr "Verze:" diff -r 57dd6ddaa8af -r 57ff64831bec po/fr.po --- a/po/fr.po Tue Oct 30 11:22:17 2007 +0200 +++ b/po/fr.po Fri Nov 16 05:32:56 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 \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" - diff -r 57dd6ddaa8af -r 57ff64831bec po/ru.po --- a/po/ru.po Tue Oct 30 11:22:17 2007 +0200 +++ b/po/ru.po Fri Nov 16 05:32:56 2007 +0200 @@ -1,22 +1,26 @@ # Russian translation for Audacious. # Copyright (C) 2006,2007 Alexander Orlov # This file is distributed under the same license as the Audacious package. -# Alexander Orlov , 2007. # # За основу взят перевод Виталия Липатова для BMP. # Улучшения перевода приветствуются :) # +# Alexander Orlov , 2007. +# Vitaly Lipatov , 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 \n" +"PO-Revision-Date: 2007-11-02 02:05+0300\n" +"Last-Translator: Vitaly Lipatov \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 "Comment" -msgstr "Коментарии" +msgstr "Комментарии" #: src/audacious/glade/fileinfo.glade:313 msgid "Genre" @@ -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 "Song Display" @@ -434,7 +439,6 @@ msgstr "Размер буфера:" #: src/audacious/glade/prefswin.glade:3593 -#, fuzzy msgid "" "This is the amount of time to prebuffer audio streams " "by, in milliseconds.\n" @@ -445,7 +449,7 @@ "Это время предварительной буферизации звуковых потоков, " "в миллисекундах.\n" "Увеличьте это значение, если при проигрывании звук прерывается. \n" -"Учтите, что при слишком больших значениях Audacious будет работать медленно." +"Учтите, что при слишком больших значениях Audacious будет работать замедленно." "" #: src/audacious/glade/prefswin.glade:3663 @@ -531,11 +535,11 @@ #: src/audacious/glade/prefswin.glade:4249 msgid "Sampling Rate Converter" -msgstr "" +msgstr "Преобразование частоты дискретизации" #: src/audacious/glade/prefswin.glade:4289 msgid "Enable Sampling Rate Converter" -msgstr "" +msgstr "Включить преобразование частоты дискретизации" #: src/audacious/glade/prefswin.glade:4338 msgid "" @@ -548,7 +552,7 @@ #: src/audacious/glade/prefswin.glade:4361 msgid "Interpolation Engine:" -msgstr "" +msgstr "Алгоритм интерполяции:" #: src/audacious/glade/prefswin.glade:4389 msgid "" @@ -556,30 +560,34 @@ "This should be the max supported sampling rate of\n" "the sound card or output plugin." msgstr "" +"Все потоки будут преобразованы к этой частоте\n" +"дискретизации, которая должна быть максимальной поддерживаемой\n" +"частотой звуковой карты или выходного модуля." #: src/audacious/glade/prefswin.glade:4461 msgid "Sampling Rate [Hz]:" -msgstr "" +msgstr "Частота дискретизации [Гц]:" #: src/audacious/glade/prefswin.glade:4517 -#, fuzzy msgid "Volume Control" -msgstr "Колесо мыши" +msgstr "Регулировка громкости" #: 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" @@ -693,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" @@ -741,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" @@ -822,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 "" @@ -829,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)" @@ -861,7 +886,7 @@ msgstr "Авторы" #: src/audacious/ui_credits.c:47 -#, fuzzy, c-format +#, c-format msgid "" "Audacious %s\n" "A skinned multimedia player for many platforms.\n" @@ -869,7 +894,7 @@ "Copyright (C) 2005-2007 Audacious Development Team\n" msgstr "" "Audacious %s\n" -"Мультимедийный проигрыватель будущего для UNIX.\n" +"Многофункциональный мультимедийный проигрыватель для различных платформ.\n" "\n" "Copyright (C) 2005-2007 Команда разработчиков Audacious\n" @@ -914,9 +939,8 @@ msgstr "Болгарский:" #: src/audacious/ui_credits.c:165 -#, fuzzy msgid "Catalan:" -msgstr "Итальянский:" +msgstr "Каталанский:" #: src/audacious/ui_credits.c:168 msgid "Croatian:" @@ -1125,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 @@ -1161,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 "" @@ -1179,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 "" @@ -1436,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" @@ -1742,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" @@ -1780,9 +1799,8 @@ msgstr "Воспроизвести запись с указанного адреса" #: src/audacious/ui_manager.c:400 -#, fuzzy msgid "Plugin services" -msgstr "Модули" +msgstr "Вспомогательные модули" #: src/audacious/ui_manager.c:402 msgid "Preferences" @@ -1802,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" @@ -1951,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: " @@ -2002,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" @@ -2060,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" @@ -2142,178 +2156,3 @@ #: src/audacious/ui_urlopener.c:88 msgid "Add/Open URL Dialog" msgstr "Добавить/Открыть URL" - -#~ msgid "Show window manager decorations" -#~ msgstr "Показывать заголовки менеджера окон" - -#, fuzzy -#~ msgid "Artist: %s" -#~ msgstr "Предустановки" - -#, fuzzy -#~ msgid "Title: %s" -#~ msgstr "Название файла" - -#, fuzzy -#~ msgid "Album: %s" -#~ msgstr "Альбом" - -#, fuzzy -#~ msgid "Audacious last.fm radio tuner" -#~ msgstr "Список воспроизведения Audacious" - -#, fuzzy -#~ msgid "Station:" -#~ msgstr "Итальянский:" - -#, fuzzy -#~ msgid "Artist:" -#~ msgstr "Предустановки" - -#, fuzzy -#~ msgid "Title:" -#~ msgstr "Название файла" - -#, fuzzy -#~ msgid "Album:" -#~ msgstr "Название файла" - -#~ 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 "" -#~ "No playable CD found.\n" -#~ "\n" -#~ "No CD inserted, or inserted CD is not an audio CD.\n" -#~ msgstr "" -#~ "Не найдено воспроизводимого CD.\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 "" -#~ "Unable to play files.\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 "" -#~ "Невозможно воспроизвести файлы.\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 "Прозрачный список воспроизведения" diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/Makefile --- a/src/audacious/Makefile Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/Makefile Fri Nov 16 05:32:56 2007 +0200 @@ -25,7 +25,6 @@ input.c \ logger.c \ main.c \ - memorypool.c \ mime.c \ output.c \ pixbuf_effects.c \ diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/dbus-service.h --- a/src/audacious/dbus-service.h Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/dbus-service.h Fri Nov 16 05:32:56 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, @@ -185,9 +184,10 @@ gboolean audacious_rc_toggle_shuffle(RemoteObject *obj, GError **error); /* new */ -gboolean audacious_rc_show_prefs_box(RemoteObject *obj, GError **error); -gboolean audacious_rc_show_about_box(RemoteObject *obj, GError **error); -gboolean audacious_rc_show_jtf_box(RemoteObject *obj, GError **error); +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); @@ -201,10 +201,17 @@ 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); -/* in progress */ -gboolean audacious_rc_playlist_ins_url_string(RemoteObject *obj, gchar *url, gint *pos, GError **error); -gboolean audacious_rc_playlist_add(RemoteObject *obj, gpointer list, GError **error); -gboolean audacious_rc_playlist_enqueue_to_temp(RemoteObject *obj, char *list, gint num, gboolean enqueue, 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 diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/dbus.c --- a/src/audacious/dbus.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/dbus.c Fri Nov 16 05:32:56 2007 +0200 @@ -23,7 +23,10 @@ #endif #include +#include +#include #include +#include #include "dbus.h" #include "dbus-service.h" #include "dbus-server-bindings.h" @@ -37,12 +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 }; @@ -161,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) { @@ -175,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) { @@ -486,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; } @@ -795,20 +801,43 @@ } /* New on Oct 5 */ -gboolean audacious_rc_show_prefs_box(RemoteObject *obj, GError **error) { - if (has_x11_connection) - show_prefs_window(); +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, GError **error) { - if (has_x11_connection) - show_about_window(); +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, GError **error) { - if (has_x11_connection) - ui_jump_to_track(); +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; } @@ -848,7 +877,7 @@ return TRUE; } -/* New on Oct9: Queue */ +/* 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); @@ -890,31 +919,109 @@ 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; +} -/* In Progress */ -static void call_add_url(GList *list, gpointer *data) { +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_add_url, NULL); + g_list_foreach((GList *)list, (GFunc)call_playlist_add_url, NULL); return TRUE; } -gboolean audacious_rc_playlist_enqueue_to_temp(RemoteObject *obj, char *list, gint num, gboolean enqueue, GError **error) { +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_playlist_ins_url_string(RemoteObject *obj, gchar *url, gint *pos, GError **error) { - if (url && strlen(url)) { - playlist_ins_url(playlist_get_active(), url, *pos); - } +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) { diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/glade/prefswin.glade --- a/src/audacious/glade/prefswin.glade Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/glade/prefswin.glade Fri Nov 16 05:32:56 2007 +0200 @@ -4698,7 +4698,6 @@ - True True True GTK_RELIEF_NORMAL diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/main.c --- a/src/audacious/main.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/main.c Fri Nov 16 05:32:56 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)) { diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/memorypool.c --- a/src/audacious/memorypool.c Tue Oct 30 11:22:17 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,134 +0,0 @@ -/* Audacious - * Copyright (c) 2007 William Pitcock - * - * 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 . - * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. - */ - -#include -#include -#include - -#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; -} diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/memorypool.h --- a/src/audacious/memorypool.h Tue Oct 30 11:22:17 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -/* Audacious - * Copyright (c) 2007 William Pitcock - * - * 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 . - * - * 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 diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/objects.xml --- a/src/audacious/objects.xml Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/objects.xml Fri Nov 16 05:32:56 2007 +0200 @@ -19,7 +19,7 @@ @@ -367,16 +364,25 @@ + + + + + + + + + @@ -465,5 +471,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/playback.c --- a/src/audacious/playback.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/playback.c Fri Nov 16 05:32:56 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; diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/playlist.c --- a/src/audacious/playlist.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/playlist.c Fri Nov 16 05:32:56 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); @@ -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) { @@ -3140,6 +3180,7 @@ PLAYLIST_UNLOCK(playlist); playlist_recalc_total_time(playlist); +// PLAYLIST_INCR_SERIAL(playlist); //unnecessary? --yaz return num_of_entries_found; } @@ -3253,6 +3294,7 @@ playlistwin_update_list(playlist); playlist_recalc_total_time(playlist); + PLAYLIST_INCR_SERIAL(playlist); //tentative --yaz return retval; } @@ -3275,6 +3317,7 @@ playlistwin_update_list(playlist); playlist_recalc_total_time(playlist); + PLAYLIST_INCR_SERIAL(playlist); //tentative --yaz } Playlist * @@ -3315,6 +3358,9 @@ playlist->title = NULL; playlist->filename = NULL; playlist_clear(playlist); + playlist->tail = NULL; + playlist->attribute = PLAYLIST_PLAIN; + playlist->serial = 0; return playlist; } @@ -3327,6 +3373,7 @@ g_mutex_free( playlist->mutex ); g_free( playlist ); + playlist = NULL; //XXX lead to crash? --yaz } Playlist * @@ -3420,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; +} diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/playlist.h --- a/src/audacious/playlist.h Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/playlist.h Fri Nov 16 05:32:56 2007 +0200 @@ -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); diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/plugin.h --- a/src/audacious/plugin.h Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/plugin.h Fri Nov 16 05:32:56 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 \ diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/pluginenum.c --- a/src/audacious/pluginenum.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/pluginenum.c Fri Nov 16 05:32:56 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); } diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/skin.c --- a/src/audacious/skin.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/skin.c Fri Nov 16 05:32:56 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); @@ -1581,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) @@ -1595,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; } @@ -1618,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) { @@ -1689,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) @@ -1702,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; } @@ -1783,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 */ @@ -1800,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); } } @@ -1838,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; @@ -1846,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); } @@ -1877,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); } } @@ -1915,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); } @@ -1959,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); } diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/skin.h --- a/src/audacious/skin.h Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/skin.h Fri Nov 16 05:32:56 2007 +0200 @@ -29,7 +29,7 @@ #include #include - +#include #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); diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_about.c --- a/src/audacious/ui_about.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_about.c Fri Nov 16 05:32:56 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)); +} diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_credits.c --- a/src/audacious/ui_credits.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_credits.c Fri Nov 16 05:32:56 2007 +0200 @@ -75,6 +75,7 @@ N_("Default skin:"), "George Averill", + "Michael Färber", "William Pitcock", NULL, diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_credits.h --- a/src/audacious/ui_credits.h Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_credits.h Fri Nov 16 05:32:56 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 diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_equalizer.c --- a/src/audacious/ui_equalizer.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_equalizer.c Fri Nov 16 05:32:56 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(); +} diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_equalizer.h --- a/src/audacious/ui_equalizer.h Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_equalizer.h Fri Nov 16 05:32:56 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 diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_fileinfopopup.c --- a/src/audacious/ui_fileinfopopup.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_fileinfopopup.c Fri Nov 16 05:32:56 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), diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_fileopener.c --- a/src/audacious/ui_fileopener.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_fileopener.c Fri Nov 16 05:32:56 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); +} diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_fileopener.h --- a/src/audacious/ui_fileopener.h Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_fileopener.h Fri Nov 16 05:32:56 2007 +0200 @@ -26,5 +26,6 @@ #define PLAY_BUTTON TRUE void run_filebrowser(gboolean clear_pl_on_ok); +void hide_filebrowser(void); #endif diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_jumptotrack.c --- a/src/audacious/ui_jumptotrack.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_jumptotrack.c Fri Nov 16 05:32:56 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); diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_jumptotrack.h --- a/src/audacious/ui_jumptotrack.h Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_jumptotrack.h Fri Nov 16 05:32:56 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 diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_main.c --- a/src/audacious/ui_main.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_main.c Fri Nov 16 05:32:56 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 diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_main_evlisteners.c --- a/src/audacious/ui_main_evlisteners.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_main_evlisteners.c Fri Nov 16 05:32:56 2007 +0200 @@ -19,6 +19,8 @@ */ #include +#include + #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); } + diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_preferences.c --- a/src/audacious/ui_preferences.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_preferences.c Fri Nov 16 05:32:56 2007 +0200 @@ -2182,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) { diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_preferences.h --- a/src/audacious/ui_preferences.h Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_preferences.h Fri Nov 16 05:32:56 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); diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_skinned_button.c --- a/src/audacious/ui_skinned_button.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_skinned_button.c Fri Nov 16 05:32:56 2007 +0200 @@ -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)); } diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_skinned_button.h diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_skinned_equalizer_graph.c --- a/src/audacious/ui_skinned_equalizer_graph.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_skinned_equalizer_graph.c Fri Nov 16 05:32:56 2007 +0200 @@ -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); diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_skinned_equalizer_graph.h --- a/src/audacious/ui_skinned_equalizer_graph.h Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_skinned_equalizer_graph.h Fri Nov 16 05:32:56 2007 +0200 @@ -46,7 +46,6 @@ gint x, y, width, height; SkinPixmapId skin_index; - GtkWidget *fixed; gboolean double_size; }; diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_skinned_equalizer_slider.c --- a/src/audacious/ui_skinned_equalizer_slider.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_skinned_equalizer_slider.c Fri Nov 16 05:32:56 2007 +0200 @@ -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; diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_skinned_horizontal_slider.c --- a/src/audacious/ui_skinned_horizontal_slider.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_skinned_horizontal_slider.c Fri Nov 16 05:32:56 2007 +0200 @@ -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), diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_skinned_menurow.c --- a/src/audacious/ui_skinned_menurow.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_skinned_menurow.c Fri Nov 16 05:32:56 2007 +0200 @@ -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); } diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_skinned_menurow.h --- a/src/audacious/ui_skinned_menurow.h Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_skinned_menurow.h Fri Nov 16 05:32:56 2007 +0200 @@ -50,7 +50,6 @@ GtkWidget widget; gint x, y, width, height; - GtkWidget *fixed; gboolean double_size; gint nx, ny; gint sx, sy; diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_skinned_monostereo.c --- a/src/audacious/ui_skinned_monostereo.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_skinned_monostereo.c Fri Nov 16 05:32:56 2007 +0200 @@ -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; } diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_skinned_monostereo.h --- a/src/audacious/ui_skinned_monostereo.h Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_skinned_monostereo.h Fri Nov 16 05:32:56 2007 +0200 @@ -47,7 +47,6 @@ gint x, y, width, height; gint num_channels; SkinPixmapId skin_index; - GtkWidget *fixed; gboolean double_size; }; diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_skinned_number.c --- a/src/audacious/ui_skinned_number.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_skinned_number.c Fri Nov 16 05:32:56 2007 +0200 @@ -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)); +} diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_skinned_number.h --- a/src/audacious/ui_skinned_number.h Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_skinned_number.h Fri Nov 16 05:32:56 2007 +0200 @@ -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 } diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_skinned_playlist.c --- a/src/audacious/ui_skinned_playlist.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_skinned_playlist.c Fri Nov 16 05:32:56 2007 +0200 @@ -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); } diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_skinned_playlist_slider.c --- a/src/audacious/ui_skinned_playlist_slider.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_skinned_playlist_slider.c Fri Nov 16 05:32:56 2007 +0200 @@ -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)); } diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_skinned_playstatus.c --- a/src/audacious/ui_skinned_playstatus.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_skinned_playstatus.c Fri Nov 16 05:32:56 2007 +0200 @@ -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)); +} diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_skinned_playstatus.h --- a/src/audacious/ui_skinned_playstatus.h Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_skinned_playstatus.h Fri Nov 16 05:32:56 2007 +0200 @@ -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 } diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_skinned_textbox.c --- a/src/audacious/ui_skinned_textbox.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_skinned_textbox.c Fri Nov 16 05:32:56 2007 +0200 @@ -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, diff -r 57dd6ddaa8af -r 57ff64831bec src/audacious/ui_skinned_window.c --- a/src/audacious/ui_skinned_window.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audacious/ui_skinned_window.c Fri Nov 16 05:32:56 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: diff -r 57dd6ddaa8af -r 57ff64831bec src/audtool/audtool.h --- a/src/audtool/audtool.h Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audtool/audtool.h Fri Nov 16 05:32:56 2007 +0200 @@ -107,6 +107,7 @@ 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 **); @@ -120,5 +121,15 @@ 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 diff -r 57dd6ddaa8af -r 57ff64831bec src/audtool/audtool_handlers_general.c --- a/src/audtool/audtool_handlers_general.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audtool/audtool_handlers_general.c Fri Nov 16 05:32:56 2007 +0200 @@ -54,7 +54,7 @@ { audtool_whine("invalid parameters for %s.", argv[0]); audtool_whine("syntax: %s ", argv[0]); - return; + exit(1); } current_volume = audacious_remote_get_main_volume(dbus_proxy); @@ -74,68 +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 ", argv[0]); + if (argc < 2) { + audtool_whine("invalid parameter for %s.", argv[0]); + audtool_whine("syntax: %s ", 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 ", argv[0]); + if (argc < 2) { + audtool_whine("invalid parameter for %s.", argv[0]); + audtool_whine("syntax: %s ", 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 ", argv[0]); + if (argc < 2) { + audtool_whine("invalid parameter for %s.", argv[0]); + audtool_whine("syntax: %s ", 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 ", 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 ", argv[0]); + exit (1); + } + + audacious_remote_toggle_prefs_box(dbus_proxy, show); } void show_about_window(gint argc, gchar **argv) { - audacious_remote_show_about_box(dbus_proxy); + gboolean show = TRUE; + + if (argc < 2) { +#if 0 + audtool_whine("invalid parameter for %s.", argv[0]); + audtool_whine("syntax: %s ", 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 ", 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 ", 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 ", 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 ", 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 ", argv[0]); + exit (1); + } + + audacious_remote_toggle_filebrowser(dbus_proxy, show); } void shutdown_audacious_server(gint argc, gchar **argv) @@ -155,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/"); } diff -r 57dd6ddaa8af -r 57ff64831bec src/audtool/audtool_handlers_playback.c --- a/src/audtool/audtool_handlers_playback.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audtool/audtool_handlers_playback.c Fri Nov 16 05:32:56 2007 +0200 @@ -118,7 +118,7 @@ { audtool_whine("invalid parameters for %s.", argv[0]); audtool_whine("syntax: %s ", 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 ", argv[0]); - return; + exit(1); } oldtime = audacious_remote_get_output_time(dbus_proxy); diff -r 57dd6ddaa8af -r 57ff64831bec src/audtool/audtool_handlers_playlist.c --- a/src/audtool/audtool_handlers_playlist.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audtool/audtool_handlers_playlist.c Fri Nov 16 05:32:56 2007 +0200 @@ -53,7 +53,7 @@ { audtool_whine("invalid parameters for %s.", argv[0]); audtool_whine("syntax: %s ", 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 ", 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 ", 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 ", 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 ", 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 ", 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 ", 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 ", 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 ", 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); } diff -r 57dd6ddaa8af -r 57ff64831bec src/audtool/audtool_handlers_playqueue.c --- a/src/audtool/audtool_handlers_playqueue.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audtool/audtool_handlers_playqueue.c Fri Nov 16 05:32:56 2007 +0200 @@ -45,7 +45,7 @@ { audtool_whine("invalid parameters for %s.", argv[0]); audtool_whine("syntax: %s ", 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 ", 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,7 +91,7 @@ { audtool_whine("invalid parameters for playqueue-is-queued.", argv[0]); audtool_whine("syntax: %s playqueue-is-queued ", argv[0]); - return; + exit(1); } i = atoi(argv[1]); @@ -99,7 +99,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)) { audtool_report("OK"); @@ -117,7 +117,7 @@ { audtool_whine("invalid parameters for %s.", argv[0]); audtool_whine("syntax: %s ", argv[0]); - return; + exit(1); } i = atoi(argv[1]); @@ -125,7 +125,7 @@ if (i < 1 || i > audacious_remote_get_playlist_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; @@ -144,7 +144,7 @@ { audtool_whine("invalid parameters for %s.", argv[0]); audtool_whine("syntax: %s ", argv[0]); - return; + exit(1); } i = atoi(argv[1]); @@ -152,7 +152,7 @@ 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_list_position(dbus_proxy, i - 1) + 1; diff -r 57dd6ddaa8af -r 57ff64831bec src/audtool/audtool_handlers_test.c --- a/src/audtool/audtool_handlers_test.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audtool/audtool_handlers_test.c Fri Nov 16 05:32:56 2007 +0200 @@ -44,61 +44,51 @@ void test_enqueue_to_temp(gint argc, gchar **argv) { - gint playpos; - - if (argc < 2) - { - audtool_whine("invalid parameters for %s.", argv[0]); - audtool_whine("syntax: %s ", argv[0]); - return; - } + if (argc < 2) + { + audtool_whine("invalid parameters for %s.", argv[0]); + audtool_whine("syntax: %s ", argv[0]); + exit(1); + } - playpos = atoi(argv[1]); - - if (playpos < 1 || playpos > audacious_remote_get_playlist_length(dbus_proxy)) - { - audtool_whine("invalid playlist position %d", playpos); - return; - } - - audacious_remote_get_playqueue_queue_position(dbus_proxy, playpos - 1); // xxx playpos - 1? + audacious_remote_playlist_enqueue_to_temp(dbus_proxy, argv[1]); } void test_toggle_aot(gint argc, gchar **argv) { - gboolean ontop; + if (argc < 2) + { + audtool_whine("invalid parameters for %s.", argv[0]); + audtool_whine("syntax: %s ", argv[0]); + exit(1); + } - if (argc < 2) - { - audtool_whine("invalid parameters for %s.", argv[0]); - audtool_whine("syntax: %s ", argv[0]); - return; - } - - ontop = (gboolean)atoi(argv[1]); - printf("ontop = %d\n", ontop); - audacious_remote_toggle_aot(dbus_proxy, ontop); + 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); - printf("skin = %s\n", skin); + 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 ", argv[0]); - return; - } - printf("argc = %d\n", argc); - printf("skin = %p\n", argv[1]); - + if (argc < 2) + { + audtool_whine("invalid parameters for %s.", argv[0]); + audtool_whine("syntax: %s ", argv[0]); + exit(1); + } if(!argv[1] || !strcmp(argv[1], "")) return; @@ -111,350 +101,150 @@ gint rate, freq, nch; audacious_remote_get_info(dbus_proxy, &rate, &freq, &nch); - printf("rate = %d freq = %d nch = %d\n", rate, freq, nch); -} - - - - -#if 0 -void playlist_reverse(gint argc, gchar **argv) -{ - audacious_remote_playlist_prev(dbus_proxy); -} - -void playlist_advance(gint argc, gchar **argv) -{ - audacious_remote_playlist_next(dbus_proxy); -} - -void playlist_add_url_string(gint argc, gchar **argv) -{ - if (argc < 2) - { - audtool_whine("invalid parameters for %s.", argv[0]); - audtool_whine("syntax: %s ", argv[0]); - return; - } - - audacious_remote_playlist_add_url_string(dbus_proxy, argv[1]); + audtool_report("rate = %d freq = %d nch = %d", rate, freq, nch); } -void playlist_delete(gint argc, gchar **argv) +void test_ins_url_string(gint argc, gchar **argv) { - gint playpos; + gint pos = -1; - if (argc < 2) - { - audtool_whine("invalid parameters for %s.", argv[0]); - audtool_whine("syntax: %s ", argv[0]); - return; - } + if (argc < 3) + { + audtool_whine("invalid parameters for %s.", argv[0]); + audtool_whine("syntax: %s ", argv[0]); + exit(1); + } - playpos = atoi(argv[1]); - - if (playpos < 1 || playpos > audacious_remote_get_playlist_length(dbus_proxy)) - { - audtool_whine("invalid playlist position %d", playpos); - return; - } - - audacious_remote_playlist_delete(dbus_proxy, playpos - 1); + pos = atoi(argv[2]) - 1; + if(pos >= 0) + audacious_remote_playlist_ins_url_string(dbus_proxy, argv[1], pos); } -void playlist_length(gint argc, gchar **argv) +void test_get_version(gint argc, gchar **argv) { - gint i; - - i = audacious_remote_get_playlist_length(dbus_proxy); - - audtool_report("%d", i); + gchar *version = NULL; + version = audacious_remote_get_version(dbus_proxy); + if(version) + audtool_report("Audacious %s", version); + g_free(version); } -void playlist_song(gint argc, gchar **argv) +void test_get_eq(gint argc, gchar **argv) { - gint playpos; - gchar *song; + double preamp; + GArray *bands; + int i; - if (argc < 2) - { - audtool_whine("invalid parameters for %s.", argv[0]); - audtool_whine("syntax: %s ", argv[0]); - return; - } + audacious_remote_get_eq(dbus_proxy, &preamp, &bands); - playpos = atoi(argv[1]); + 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); +} - if (playpos < 1 || playpos > audacious_remote_get_playlist_length(dbus_proxy)) - { - audtool_whine("invalid playlist position %d", playpos); - return; - } - - song = audacious_remote_get_playlist_title(dbus_proxy, playpos - 1); - - audtool_report("%s", song); +void test_get_eq_preamp(gint argc, gchar **argv) +{ + audtool_report("preamp = %.2f", audacious_remote_get_eq_preamp(dbus_proxy)); } - -void playlist_song_length(gint argc, gchar **argv) +void test_get_eq_band(gint argc, gchar **argv) { - gint playpos, frames, length; - - if (argc < 2) - { - audtool_whine("invalid parameters for %s.", argv[0]); - audtool_whine("syntax: %s ", argv[0]); - return; - } - - playpos = atoi(argv[1]); + int band; - if (playpos < 1 || playpos > audacious_remote_get_playlist_length(dbus_proxy)) - { - audtool_whine("invalid playlist position %d", playpos); - return; - } - - frames = audacious_remote_get_playlist_time(dbus_proxy, playpos - 1); - length = frames / 1000; - - audtool_report("%d:%.2d", length / 60, length % 60); -} - -void playlist_song_length_seconds(gint argc, gchar **argv) -{ - gint playpos, frames, length; - - if (argc < 2) - { - audtool_whine("invalid parameters for %s.", argv[0]); - audtool_whine("syntax: %s ", argv[0]); - return; - } + if (argc < 2) + { + audtool_whine("invalid parameters for %s.", argv[0]); + audtool_whine("syntax: %s ", argv[0]); + exit(1); + } - playpos = atoi(argv[1]); - - if (playpos < 1 || playpos > audacious_remote_get_playlist_length(dbus_proxy)) - { - audtool_whine("invalid playlist position %d", playpos); - return; - } - - frames = audacious_remote_get_playlist_time(dbus_proxy, playpos - 1); - length = frames / 1000; - - audtool_report("%d", length); -} - -void playlist_song_length_frames(gint argc, gchar **argv) -{ - gint playpos, frames; + band = atoi(argv[1]); - if (argc < 2) - { - audtool_whine("invalid parameters for %s.", argv[0]); - audtool_whine("syntax: %s ", argv[0]); - return; - } - - playpos = atoi(argv[1]); - - if (playpos < 1 || playpos > audacious_remote_get_playlist_length(dbus_proxy)) - { - audtool_whine("invalid playlist position %d", playpos); - return; - } - - frames = audacious_remote_get_playlist_time(dbus_proxy, playpos - 1); - - audtool_report("%d", frames); + 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 playlist_display(gint argc, gchar **argv) +void test_set_eq(gint argc, gchar **argv) { - gint i, ii, frames, length, total; - gchar *songname; - gchar *fmt = NULL, *p; - gint column; - - i = audacious_remote_get_playlist_length(dbus_proxy); - - audtool_report("%d track%s.", i, i != 1 ? "s" : ""); - - total = 0; - - for (ii = 0; ii < i; ii++) - { - songname = audacious_remote_get_playlist_title(dbus_proxy, ii); - frames = audacious_remote_get_playlist_time(dbus_proxy, ii); - length = frames / 1000; - total += length; - - /* adjust width for multi byte characters */ - column = 60; - if(songname){ - p = songname; - while(*p){ - gint stride; - stride = g_utf8_next_char(p) - p; - if(g_unichar_iswide(g_utf8_get_char(p)) -#if ( (GLIB_MAJOR_VERSION == 2) && (GLIB_MINOR_VERSION >= 12) ) - || g_unichar_iswide_cjk(g_utf8_get_char(p)) -#endif - ){ - column += (stride - 2); - } - else { - column += (stride - 1); - } - p = g_utf8_next_char(p); - } + gdouble preamp; + GArray *bands = g_array_sized_new(FALSE, FALSE, sizeof(gdouble), 10); + int i; - } - - fmt = g_strdup_printf("%%4d | %%-%ds | %%d:%%.2d", column); - audtool_report(fmt, ii + 1, songname, length / 60, length % 60); - g_free(fmt); - } - - audtool_report("Total length: %d:%.2d", total / 60, total % 60); -} - -void playlist_position(gint argc, gchar **argv) -{ - gint i; - - i = audacious_remote_get_playlist_pos(dbus_proxy); - - audtool_report("%d", i + 1); -} + if (argc < 12) + { + audtool_whine("invalid parameters for %s.", argv[0]); + audtool_whine("syntax: %s ", argv[0]); + exit(1); + } -void playlist_song_filename(gint argc, gchar **argv) -{ - gint i; - - if (argc < 2) - { - audtool_whine("invalid parameters for %s.", argv[0]); - audtool_whine("syntax: %s ", 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; - } - - audtool_report("%s", audacious_remote_get_playlist_file(dbus_proxy, i - 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 playlist_jump(gint argc, gchar **argv) +void test_set_eq_preamp(gint argc, gchar **argv) { - gint i; - - if (argc < 2) - { - audtool_whine("invalid parameters for %s.", argv[0]); - audtool_whine("syntax: %s ", 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; - } - - audacious_remote_set_playlist_pos(dbus_proxy, i - 1); -} + gdouble preamp; -void playlist_clear(gint argc, gchar **argv) -{ - audacious_remote_playlist_clear(dbus_proxy); -} + if (argc < 2) + { + audtool_whine("invalid parameters for %s.", argv[0]); + audtool_whine("syntax: %s ", argv[0]); + exit(1); + } -void playlist_repeat_status(gint argc, gchar **argv) -{ - if (audacious_remote_is_repeat(dbus_proxy)) - { - audtool_report("on"); - return; - } - else - { - audtool_report("off"); - return; - } -} + preamp = atof(argv[1]); -void playlist_repeat_toggle(gint argc, gchar **argv) -{ - audacious_remote_toggle_repeat(dbus_proxy); + audacious_remote_set_eq_preamp(dbus_proxy, preamp); } -void playlist_shuffle_status(gint argc, gchar **argv) +void test_set_eq_band(gint argc, gchar **argv) { - if (audacious_remote_is_shuffle(dbus_proxy)) - { - audtool_report("on"); - return; - } - else - { - audtool_report("off"); - return; - } -} + int band; + gdouble preamp; -void playlist_shuffle_toggle(gint argc, gchar **argv) -{ - audacious_remote_toggle_shuffle(dbus_proxy); + if (argc < 3) + { + audtool_whine("invalid parameters for %s.", argv[0]); + audtool_whine("syntax: %s ", argv[0]); + exit(1); + } + + band = atoi(argv[1]); + preamp = atof(argv[2]); + + audacious_remote_set_eq_band(dbus_proxy, band, preamp); } -void playlist_tuple_field_data(gint argc, gchar **argv) +void test_equalizer_active(gint argc, gchar **argv) { - gint i; - gpointer data; - - if (argc < 3) - { - audtool_whine("invalid parameters for %s.", argv[0]); - audtool_whine("syntax: %s ", 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; - } - - i = atoi(argv[2]); + if (argc < 2) + { + audtool_whine("invalid parameters for %s.", argv[0]); + audtool_whine("syntax: %s ", argv[0]); + exit(1); + } - if (i < 1 || i > audacious_remote_get_playlist_length(dbus_proxy)) - { - audtool_whine("invalid playlist position %d", i); - return; - } - - if (!(data = audacious_get_tuple_field_data(dbus_proxy, argv[1], i - 1))) - { - 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", (gchar *)data); + 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; + } } -#endif diff -r 57dd6ddaa8af -r 57ff64831bec src/audtool/audtool_handlers_vitals.c --- a/src/audtool/audtool_handlers_vitals.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audtool/audtool_handlers_vitals.c Fri Nov 16 05:32:56 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 ", 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); } diff -r 57dd6ddaa8af -r 57ff64831bec src/audtool/audtool_main.c --- a/src/audtool/audtool_main.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/audtool/audtool_main.c Fri Nov 16 05:32:56 2007 +0200 @@ -100,9 +100,12 @@ {"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 the preferences window", 0}, - {"about", show_about_window, "shows the about 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}, {"", NULL, "Help system", 0}, {"list-handlers", get_handlers_list, "shows handlers list", 0}, @@ -110,13 +113,24 @@ /* test suite */ {"", NULL, "Test suite", 0}, - {"activate", test_activate, "activate", 0}, - {"playlist-enqueue-to-temp", test_enqueue_to_temp, "enqueue_to_temp", 1}, - {"toggle-aot", test_toggle_aot, "specify allways on top or not", 1}, // xxx need to be improved. + {"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}, - {"get-info", test_get_info, "get info", 0}, + {"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} }; @@ -157,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++) { @@ -167,15 +181,18 @@ !g_ascii_strcasecmp(g_strconcat("--", handlers[i].name, NULL), argv[j])) && g_ascii_strcasecmp("", 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; } diff -r 57dd6ddaa8af -r 57ff64831bec src/libaudclient/audctrl.c --- a/src/libaudclient/audctrl.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/libaudclient/audctrl.c Fri Nov 16 05:32:56 2007 +0200 @@ -67,12 +67,16 @@ * 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); } /** @@ -363,7 +367,7 @@ **/ gchar *audacious_remote_get_skin(DBusGProxy *proxy) { gchar *skin = NULL; - org_atheme_audacious_get_skin (proxy, &skin, &error); // xxx + org_atheme_audacious_get_skin (proxy, &skin, &error); g_clear_error(&error); return skin; } @@ -531,7 +535,18 @@ * Tells audacious to show the preferences pane. **/ void audacious_remote_show_prefs_box(DBusGProxy *proxy) { - org_atheme_audacious_show_prefs_box(proxy, &error); + 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); } @@ -542,7 +557,18 @@ * Tells audacious to show the about box. **/ void audacious_remote_show_about_box(DBusGProxy *proxy) { - org_atheme_audacious_show_about_box(proxy, &error); + 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); } @@ -684,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); } /** @@ -697,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; } /** @@ -711,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; } /** @@ -724,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); } /** @@ -736,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); } /** @@ -748,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); } /** @@ -872,7 +907,30 @@ * Tells audacious to show the Jump-to-File pane. **/ void audacious_remote_show_jtf_box(DBusGProxy *proxy) { - org_atheme_audacious_show_jtf_box(proxy, &error); + 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); } @@ -960,8 +1018,44 @@ **/ gchar *audacious_get_tuple_field_data(DBusGProxy *proxy, gchar *field, guint pos) { -//XXX - g_clear_error(&error); - 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(""); + + 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); +} diff -r 57dd6ddaa8af -r 57ff64831bec src/libaudclient/audctrl.h --- a/src/libaudclient/audctrl.h Tue Oct 30 11:22:17 2007 +0200 +++ b/src/libaudclient/audctrl.h Fri Nov 16 05:32:56 2007 +0200 @@ -23,13 +23,11 @@ #include #include -#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); @@ -121,9 +119,12 @@ 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 diff -r 57dd6ddaa8af -r 57ff64831bec src/libguess/cjk_impl.c --- a/src/libguess/cjk_impl.c Tue Oct 30 11:22:17 2007 +0200 +++ b/src/libguess/cjk_impl.c Fri Nov 16 05:32:56 2007 +0200 @@ -112,6 +112,8 @@ break; } + DFA_NEXT(utf8, '\0'); //Bug #53 + if(DFA_ALIVE(utf8)) return 1; else