From: <tmz...@us...> - 2007-06-27 18:45:39
|
Revision: 1600 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1600&view=rev Author: tmzullinger Date: 2007-06-27 11:45:37 -0700 (Wed, 27 Jun 2007) Log Message: ----------- add/update copyright headers (Daniele) Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/src/display_coverart.c gtkpod/trunk/src/display_coverart.h gtkpod/trunk/src/flacfile.c Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-06-26 17:17:48 UTC (rev 1599) +++ gtkpod/trunk/ChangeLog_detailed 2007-06-27 18:45:37 UTC (rev 1600) @@ -1,3 +1,10 @@ +2007-06-27 Todd Zullinger <tmzullinger at users.sourceforge.net> + + * src/display_coverart.c + src/display_coverart.h + src/flacfile.c: + add/update copyright headers (Daniele) + 2007-06-26 Todd Zullinger <tmzullinger at users.sourceforge.net> * COPYING: Modified: gtkpod/trunk/src/display_coverart.c =================================================================== --- gtkpod/trunk/src/display_coverart.c 2007-06-26 17:17:48 UTC (rev 1599) +++ gtkpod/trunk/src/display_coverart.c 2007-06-27 18:45:37 UTC (rev 1600) @@ -1,5 +1,5 @@ /* -| Copyright (C) 2002-2007 Jorg Schuler <jcsjcs at users sourceforge net> +| Copyright (C) 2007 P.G. Richardson <phantom_sf at users.sourceforge.net> | Part of the gtkpod project. | | URL: http://www.gtkpod.org/ Modified: gtkpod/trunk/src/display_coverart.h =================================================================== --- gtkpod/trunk/src/display_coverart.h 2007-06-26 17:17:48 UTC (rev 1599) +++ gtkpod/trunk/src/display_coverart.h 2007-06-27 18:45:37 UTC (rev 1600) @@ -1,3 +1,31 @@ +/* +| Copyright (C) 2007 P.G. Richardson <phantom_sf at users.sourceforge.net> +| Part of the gtkpod project. +| +| URL: http://www.gtkpod.org/ +| URL: http://gtkpod.sourceforge.net/ +| +| Gtkpod 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; either version 2 of the License, or +| (at your option) any later version. +| +| Gtkpod 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 gtkpod; if not, write to the Free Software +| Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +| +| iTunes and iPod are trademarks of Apple +| +| This product is not supported/written/published by Apple! +| +| $Id$ +*/ + #ifndef __DISPLAY_COVERART_H__ #define __DISPLAY_COVERART_H__ Modified: gtkpod/trunk/src/flacfile.c =================================================================== --- gtkpod/trunk/src/flacfile.c 2007-06-26 17:17:48 UTC (rev 1599) +++ gtkpod/trunk/src/flacfile.c 2007-06-27 18:45:37 UTC (rev 1600) @@ -1,3 +1,31 @@ +/* +| Copyright (C) 2007 Jorg Schuler <jcsjcs at users sourceforge net> +| Part of the gtkpod project. +| +| URL: http://www.gtkpod.org/ +| URL: http://gtkpod.sourceforge.net/ +| +| Gtkpod 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; either version 2 of the License, or +| (at your option) any later version. +| +| Gtkpod 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 gtkpod; if not, write to the Free Software +| Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +| +| iTunes and iPod are trademarks of Apple +| +| This product is not supported/written/published by Apple! +| +| $Id$ +*/ + #ifdef HAVE_CONFIG_H # include <config.h> #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tmz...@us...> - 2007-06-27 18:48:16
|
Revision: 1601 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1601&view=rev Author: tmzullinger Date: 2007-06-27 11:48:18 -0700 (Wed, 27 Jun 2007) Log Message: ----------- give credit where credit is due add Id keyword (Daniele) Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/src/fetchcover.c gtkpod/trunk/src/fetchcover.h Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-06-27 18:45:37 UTC (rev 1600) +++ gtkpod/trunk/ChangeLog_detailed 2007-06-27 18:48:18 UTC (rev 1601) @@ -1,5 +1,10 @@ 2007-06-27 Todd Zullinger <tmzullinger at users.sourceforge.net> + * src/fetchcover.c + src/fetchcover.h: + give credit where credit is due + add Id keyword (Daniele) + * src/display_coverart.c src/display_coverart.h src/flacfile.c: Modified: gtkpod/trunk/src/fetchcover.c =================================================================== --- gtkpod/trunk/src/fetchcover.c 2007-06-27 18:45:37 UTC (rev 1600) +++ gtkpod/trunk/src/fetchcover.c 2007-06-27 18:48:18 UTC (rev 1601) @@ -1,5 +1,5 @@ /* -| Copyright (C) 2002-2007 Jorg Schuler <jcsjcs at users sourceforge net> +| Copyright (C) 2007 P.G. Richardson <phantom_sf at users.sourceforge.net> | Part of the gtkpod project. | | URL: http://www.gtkpod.org/ @@ -23,6 +23,7 @@ | | This product is not supported/written/published by Apple! | +| $Id$ */ #ifdef HAVE_CONFIG_H Modified: gtkpod/trunk/src/fetchcover.h =================================================================== --- gtkpod/trunk/src/fetchcover.h 2007-06-27 18:45:37 UTC (rev 1600) +++ gtkpod/trunk/src/fetchcover.h 2007-06-27 18:48:18 UTC (rev 1601) @@ -1,5 +1,5 @@ /* -| Copyright (C) 2002-2007 Jorg Schuler <jcsjcs at users sourceforge net> +| Copyright (C) 2007 P.G. Richardson <phantom_sf at users.sourceforge.net> | Part of the gtkpod project. | | URL: http://www.gtkpod.org/ @@ -23,6 +23,7 @@ | | This product is not supported/written/published by Apple! | +| $Id$ */ #ifndef __FETCHCOVER_H__ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tmz...@us...> - 2007-06-27 18:50:47
|
Revision: 1602 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1602&view=rev Author: tmzullinger Date: 2007-06-27 11:50:49 -0700 (Wed, 27 Jun 2007) Log Message: ----------- bump version for 0.99.10 release look for MP4GetMetadataGrouping in libmp4v2 check Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/configure.in Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-06-27 18:48:18 UTC (rev 1601) +++ gtkpod/trunk/ChangeLog_detailed 2007-06-27 18:50:49 UTC (rev 1602) @@ -1,5 +1,9 @@ 2007-06-27 Todd Zullinger <tmzullinger at users.sourceforge.net> + * configure.in: + bump version for 0.99.10 release + look for MP4GetMetadataGrouping in libmp4v2 check + * src/fetchcover.c src/fetchcover.h: give credit where credit is due Modified: gtkpod/trunk/configure.in =================================================================== --- gtkpod/trunk/configure.in 2007-06-27 18:48:18 UTC (rev 1601) +++ gtkpod/trunk/configure.in 2007-06-27 18:50:49 UTC (rev 1602) @@ -4,7 +4,7 @@ AC_PREREQ(2.55) AC_INIT(configure.in) -AM_INIT_AUTOMAKE(gtkpod, 0.99.9DEV) +AM_INIT_AUTOMAKE(gtkpod, 0.99.10) AM_CONFIG_HEADER(config.h) AM_MAINTAINER_MODE AC_CANONICAL_HOST @@ -137,7 +137,7 @@ dnl Check for libmp4v2 (and mp4.h) -AC_SEARCH_LIBS(MP4FileInfo, +AC_SEARCH_LIBS(MP4GetMetadataGrouping, ["mp4v2" "mp4v2 -lstdc++" "mp4v2 -lz" "mp4v2 -lz -lstdc++"], [AC_CHECK_HEADER(mp4.h, [have_mp4v2="yes -- will build with aac support" AC_DEFINE_UNQUOTED(HAVE_LIBMP4V2, 1, ["Define to 1 if you have the mp4v2 library"])], This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tmz...@us...> - 2007-06-27 19:28:36
|
Revision: 1603 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1603&view=rev Author: tmzullinger Date: 2007-06-27 12:28:34 -0700 (Wed, 27 Jun 2007) Log Message: ----------- bump version to 0.99.10 note Michael's work on gapless playback Modified Paths: -------------- gtkpod/trunk/ChangeLog gtkpod/trunk/ChangeLog_detailed Modified: gtkpod/trunk/ChangeLog =================================================================== --- gtkpod/trunk/ChangeLog 2007-06-27 18:50:49 UTC (rev 1602) +++ gtkpod/trunk/ChangeLog 2007-06-27 19:28:34 UTC (rev 1603) @@ -1,4 +1,4 @@ -gtkpod V0.99.9CVS +gtkpod V0.99.10 NEW FEATURE: on-the-fly conversion of WAV, FLAC and OGG (as well as MP3 and M4A). Thanks to Marc d[readlock], Simon Naunton and @@ -17,6 +17,10 @@ menu without DND can simplify life with many playlists. Thanks to Andrzej Palejko for his patch. + NEW FEATURE: preliminary support for calculating gapless + playback information (lame encoded mp3 files only). Thanks to + Michael Tiffany. + UPDATE: Smart playlists now support the following new fields: album artist, tv show, last skipped, season number, skipcount and video kind. Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-06-27 18:50:49 UTC (rev 1602) +++ gtkpod/trunk/ChangeLog_detailed 2007-06-27 19:28:34 UTC (rev 1603) @@ -1,5 +1,9 @@ 2007-06-27 Todd Zullinger <tmzullinger at users.sourceforge.net> + * ChangeLog: + bump version to 0.99.10 + note Michael's work on gapless playback + * configure.in: bump version for 0.99.10 release look for MP4GetMetadataGrouping in libmp4v2 check This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tmz...@us...> - 2007-06-27 19:51:05
|
Revision: 1605 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1605&view=rev Author: tmzullinger Date: 2007-06-27 12:51:06 -0700 (Wed, 27 Jun 2007) Log Message: ----------- bump version for 0.99.11SVN new development Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/configure.in Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-06-27 19:48:57 UTC (rev 1604) +++ gtkpod/trunk/ChangeLog_detailed 2007-06-27 19:51:06 UTC (rev 1605) @@ -1,5 +1,8 @@ 2007-06-27 Todd Zullinger <tmzullinger at users.sourceforge.net> + * configure.in: + bump version for 0.99.11SVN new development + * ChangeLog: bump version to 0.99.10 note Michael's work on gapless playback Modified: gtkpod/trunk/configure.in =================================================================== --- gtkpod/trunk/configure.in 2007-06-27 19:48:57 UTC (rev 1604) +++ gtkpod/trunk/configure.in 2007-06-27 19:51:06 UTC (rev 1605) @@ -4,7 +4,7 @@ AC_PREREQ(2.55) AC_INIT(configure.in) -AM_INIT_AUTOMAKE(gtkpod, 0.99.10) +AM_INIT_AUTOMAKE(gtkpod, 0.99.11SVN) AM_CONFIG_HEADER(config.h) AM_MAINTAINER_MODE AC_CANONICAL_HOST This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tmz...@us...> - 2007-06-27 20:28:10
|
Revision: 1606 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1606&view=rev Author: tmzullinger Date: 2007-06-27 13:27:57 -0700 (Wed, 27 Jun 2007) Log Message: ----------- add src/autodetection.c to POTFILES.in and update po files Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/po/POTFILES.in gtkpod/trunk/po/de.po gtkpod/trunk/po/es.po gtkpod/trunk/po/fr.po gtkpod/trunk/po/gtkpod.pot gtkpod/trunk/po/he.po gtkpod/trunk/po/it.po gtkpod/trunk/po/ja.po gtkpod/trunk/po/sv.po Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-06-27 19:51:06 UTC (rev 1605) +++ gtkpod/trunk/ChangeLog_detailed 2007-06-27 20:27:57 UTC (rev 1606) @@ -1,5 +1,16 @@ 2007-06-27 Todd Zullinger <tmzullinger at users.sourceforge.net> + * po/es.po + po/fr.po + po/de.po + po/sv.po + po/ja.po + po/gtkpod.pot + po/he.po + po/it.po + po/POTFILES.in: + add src/autodetection.c to POTFILES.in and update po files + * configure.in: bump version for 0.99.11SVN new development Modified: gtkpod/trunk/po/POTFILES.in =================================================================== --- gtkpod/trunk/po/POTFILES.in 2007-06-27 19:51:06 UTC (rev 1605) +++ gtkpod/trunk/po/POTFILES.in 2007-06-27 20:27:57 UTC (rev 1606) @@ -5,6 +5,7 @@ data/gtkpod.desktop.in data/gtkpod.glade src/charset.c +src/autodetection.c src/clientserver.c src/confirmation.c src/context_menus.c Modified: gtkpod/trunk/po/de.po =================================================================== --- gtkpod/trunk/po/de.po 2007-06-27 19:51:06 UTC (rev 1605) +++ gtkpod/trunk/po/de.po 2007-06-27 20:27:57 UTC (rev 1606) @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-06-14 22:57+0900\n" +"POT-Creation-Date: 2007-06-27 16:10-0400\n" "PO-Revision-Date: 2007-03-15 22:33+0100\n" "Last-Translator: Kai-Ove\n" "Language-Team: <de...@li...>\n" @@ -300,8 +300,8 @@ msgid "Add playlist from file" msgstr "Wiedergabeliste aus Datei hinzufügen" -#: ../data/gtkpod.glade.h:68 ../src/display_sorttabs.c:3232 -#: ../src/display_tracks.c:1996 +#: ../data/gtkpod.glade.h:68 ../src/display_sorttabs.c:3228 +#: ../src/display_tracks.c:2020 msgid "Added" msgstr "Hinzugefügt" @@ -310,7 +310,7 @@ msgstr "Weitere Sortieroptionen" #. 0 -#: ../data/gtkpod.glade.h:70 ../src/display_sorttabs.c:2954 +#: ../data/gtkpod.glade.h:70 ../src/display_sorttabs.c:2963 #: ../src/display_spl.c:84 ../src/misc_conversion.c:60 msgid "Album" msgstr "Album" @@ -350,7 +350,7 @@ msgid "Any (OR)" msgstr "Eines (ODER)" -#: ../data/gtkpod.glade.h:79 ../src/display_sorttabs.c:2951 +#: ../data/gtkpod.glade.h:79 ../src/display_sorttabs.c:2960 #: ../src/display_spl.c:85 ../src/misc_conversion.c:61 msgid "Artist" msgstr "Künstler" @@ -368,23 +368,10 @@ msgstr "Aufsteigend" #: ../data/gtkpod.glade.h:83 -msgid "" -"Audio/Video\n" -"Audio\n" -"Video\n" -"Podcast\n" -"Video Podcast\n" -"Audiobook\n" -"Music Video\n" -"TV Show\n" -"TV Show & Music Video\n" -msgstr "" - -#: ../data/gtkpod.glade.h:93 msgid "Auto Store" msgstr "Autom. speichern" -#: ../data/gtkpod.glade.h:94 +#: ../data/gtkpod.glade.h:84 msgid "" "Automatically start displaying tracks that match the criteria entered above. " "If not selected, you must press 'Display' to start displaying." @@ -393,53 +380,53 @@ "automatisch starten. Wenn diese Option nicht aktiviert ist, müssen Sie " "'Anzeige' drücken." -#: ../data/gtkpod.glade.h:95 +#: ../data/gtkpod.glade.h:85 msgid "Before removing playlists or tracks from a playlist" msgstr "" "Vor dem Entfernen von Wiedergabelisten oder Stücken aus einer Wiedergabeliste" -#: ../data/gtkpod.glade.h:96 +#: ../data/gtkpod.glade.h:86 msgid "Before removing tracks from the harddisk" msgstr "Vor dem vollständigen Löschen auf der Festplatte" -#: ../data/gtkpod.glade.h:97 +#: ../data/gtkpod.glade.h:87 msgid "Before removing tracks from the iPod" msgstr "Vor dem vollständigen Löschen vom iPod" -#: ../data/gtkpod.glade.h:98 +#: ../data/gtkpod.glade.h:88 msgid "Before removing tracks from the local database" msgstr "Vor dem Entfernen aus der lokalen Datenbank" -#: ../data/gtkpod.glade.h:99 +#: ../data/gtkpod.glade.h:89 msgid "Best Rated Tracks" msgstr "Am besten bewertete Stücke" -#: ../data/gtkpod.glade.h:100 +#: ../data/gtkpod.glade.h:90 msgid "Browse" msgstr "Durchsuchen" -#: ../data/gtkpod.glade.h:101 +#: ../data/gtkpod.glade.h:91 #, fuzzy msgid "Cache directory:" msgstr "_Verzeichnisse hinzufügen" -#: ../data/gtkpod.glade.h:102 +#: ../data/gtkpod.glade.h:92 msgid "Calendar" msgstr "Kalender" -#: ../data/gtkpod.glade.h:103 +#: ../data/gtkpod.glade.h:93 msgid "Calendar sync command:" msgstr "Befehl zum Abgleich des Kalenders:" -#: ../data/gtkpod.glade.h:104 +#: ../data/gtkpod.glade.h:94 msgid "Call automatically when synchronizing iTunesDB" msgstr "Automatisch aufrufen, wenn die iTunesDB abgeglichen wird" -#: ../data/gtkpod.glade.h:105 +#: ../data/gtkpod.glade.h:95 msgid "Category: " msgstr "Kategorie: " -#: ../data/gtkpod.glade.h:106 +#: ../data/gtkpod.glade.h:96 msgid "" "Change all tracks\n" "simultaneously" @@ -447,30 +434,30 @@ "Alle Stücke simultan \n" "modifizieren" -#: ../data/gtkpod.glade.h:108 +#: ../data/gtkpod.glade.h:98 msgid "Check for existing files when copying from iPod." msgstr "Bei Kopieren vom iPod Überprüfen, ob Datei bereits existiert." -#: ../data/gtkpod.glade.h:109 +#: ../data/gtkpod.glade.h:99 msgid "Command for 'Enqueue':" msgstr "Befehl für 'Zum Abspielen Vormerken':" -#: ../data/gtkpod.glade.h:110 +#: ../data/gtkpod.glade.h:100 msgid "Command for 'Play now':" msgstr "Befehl für 'Jetzt abspielen':" #. 5 -#: ../data/gtkpod.glade.h:111 ../src/display_spl.c:97 +#: ../data/gtkpod.glade.h:101 ../src/display_spl.c:97 #: ../src/misc_conversion.c:65 msgid "Composer" msgstr "Komponist" -#: ../data/gtkpod.glade.h:112 +#: ../data/gtkpod.glade.h:102 msgid "Confirm before removing tracks from the iPod or repository" msgstr "" "Bestätigung vor dem vollständigen Löschen vom iPod oder aus der Datenbank" -#: ../data/gtkpod.glade.h:113 +#: ../data/gtkpod.glade.h:103 msgid "" "Confirm before removing tracks from the iPod or repository\n" "when syncing playlists" @@ -478,55 +465,55 @@ "Bestätigung vor dem Löschen vom iPod oder Musikverzeichnis beim Abgleichen " "der Wiedergabelisten." -#: ../data/gtkpod.glade.h:115 +#: ../data/gtkpod.glade.h:105 msgid "Confirm lists of directories" msgstr "Liste der Verzeichnisse bestätigen" -#: ../data/gtkpod.glade.h:116 +#: ../data/gtkpod.glade.h:106 msgid "Contacts sync command:" msgstr "Befehl zum Abgleich der Kontakte:" -#: ../data/gtkpod.glade.h:117 +#: ../data/gtkpod.glade.h:107 msgid "Containing Displayed Tracks" msgstr "Aus den angezeigten Stücken" -#: ../data/gtkpod.glade.h:118 +#: ../data/gtkpod.glade.h:108 msgid "Containing Selected Tracks" msgstr "Aus den ausgewählten Stücken" -#: ../data/gtkpod.glade.h:119 +#: ../data/gtkpod.glade.h:109 msgid "Conversion Progress Display" msgstr "" -#: ../data/gtkpod.glade.h:120 +#: ../data/gtkpod.glade.h:110 msgid "Cover" msgstr "Cover" -#: ../data/gtkpod.glade.h:121 +#: ../data/gtkpod.glade.h:111 msgid "Create New Playlist" msgstr "Neue Wiedergabeliste erstellen" -#: ../data/gtkpod.glade.h:122 +#: ../data/gtkpod.glade.h:112 msgid "Create Repository" msgstr "Erstelle Datenbank " -#: ../data/gtkpod.glade.h:123 +#: ../data/gtkpod.glade.h:113 msgid "Create _Playlist File" msgstr "_Erstelle Datei der Wiedergabeliste" -#: ../data/gtkpod.glade.h:124 +#: ../data/gtkpod.glade.h:114 msgid "Credits" msgstr "Danksagung" -#: ../data/gtkpod.glade.h:125 +#: ../data/gtkpod.glade.h:115 msgid "Currently only rating is supported." msgstr "Gegenwärtig wird nur 'Bewertung' unterstützt." -#: ../data/gtkpod.glade.h:126 +#: ../data/gtkpod.glade.h:116 msgid "Delete repository" msgstr "Datenbank löschen" -#: ../data/gtkpod.glade.h:127 +#: ../data/gtkpod.glade.h:117 #, fuzzy msgid "" "Delete tracks that are no longer present from the\n" @@ -535,19 +522,19 @@ "Lösche Stücke, die nicht mehr auf dem iPod oder in der Datenbank vorhanden " "sind." -#: ../data/gtkpod.glade.h:129 +#: ../data/gtkpod.glade.h:119 msgid "Deleted tracks" msgstr "Gelöschte Stücke" -#: ../data/gtkpod.glade.h:130 +#: ../data/gtkpod.glade.h:120 msgid "Descending" msgstr "Absteigend" -#: ../data/gtkpod.glade.h:131 +#: ../data/gtkpod.glade.h:121 msgid "Details" msgstr "Details" -#: ../data/gtkpod.glade.h:133 +#: ../data/gtkpod.glade.h:123 #, no-c-format msgid "" "Determines how the string for the info field should be constructed, e.g '%a/%" @@ -564,7 +551,7 @@ "Musikrichtung: %G, Stück-Nr.: %T, CD-Nr.: %C, Jahr: %Y, ursprünglicher " "Dateiname (benötigt 'Erweiterte Informationen'): %o, das Zeichen '%': %%." -#: ../data/gtkpod.glade.h:135 +#: ../data/gtkpod.glade.h:125 #, no-c-format msgid "" "Determines the filename of tracks you copy from the iPod, e.g '%a/%A/%T - %t." @@ -582,7 +569,7 @@ "Dateiname (benötigt 'Erweiterte Informationen'): %o, die aktuelle " "Wiedergabeliste: %p, das Zeichen '%': %%." -#: ../data/gtkpod.glade.h:137 +#: ../data/gtkpod.glade.h:127 #, no-c-format msgid "" "Determines the name of the file with the cover art. You can separate several " @@ -601,7 +588,7 @@ "Dateiname ohne Erweiterung: %O, die aktuelle Wiedergabelist: %p, das Zeichen " "'%': %%." -#: ../data/gtkpod.glade.h:138 +#: ../data/gtkpod.glade.h:128 msgid "" "Directories to sync with are determined from the filenames of the tracks in " "the playlist." @@ -609,66 +596,66 @@ "Abzugleichende Verzeichnisse werden aus den Dateinamen der Wiedergabeliste " "ermittelt." -#: ../data/gtkpod.glade.h:139 +#: ../data/gtkpod.glade.h:129 msgid "Dirs" msgstr "Verzeichnisse" -#: ../data/gtkpod.glade.h:140 +#: ../data/gtkpod.glade.h:130 msgid "Display a list of tracks that could actually be updated." msgstr "" "Nach dem Aktualisieren eine Liste der Stücke anzeigen,\n" "die tatsächlich aktualisiert werden könnten." -#: ../data/gtkpod.glade.h:141 +#: ../data/gtkpod.glade.h:131 msgid "Display a list of tracks that could not be updated." msgstr "" "Liste der Stücke anzeigen, bei denen die Aktualisierung\n" "nicht vorgenommen werden konnte." -#: ../data/gtkpod.glade.h:142 +#: ../data/gtkpod.glade.h:132 msgid "Display conversion log" msgstr "" -#: ../data/gtkpod.glade.h:143 +#: ../data/gtkpod.glade.h:133 msgid "Display info about detected duplicates" msgstr "Information über erkannte Duplikate anzeigen" -#: ../data/gtkpod.glade.h:144 +#: ../data/gtkpod.glade.h:134 msgid "Display info about non-updated tracks" msgstr "Informationen über nicht aktualisierte Stücke anzeigen" -#: ../data/gtkpod.glade.h:145 +#: ../data/gtkpod.glade.h:135 msgid "Display info about updated tracks" msgstr "Informationen über aktualisierte Stücke anzeigen" -#: ../data/gtkpod.glade.h:146 +#: ../data/gtkpod.glade.h:136 msgid "Display messages and warnings at startup" msgstr "Nachrichten und Warnungen beim Start des Programms anzeigen" -#: ../data/gtkpod.glade.h:147 +#: ../data/gtkpod.glade.h:137 msgid "" "Display the list of duplicates that have been detected after adding files." msgstr "" "Eine Liste der Duplikate anzeigen, die während des Hinzufügens von Stücken " "erkannt wurden." -#: ../data/gtkpod.glade.h:148 +#: ../data/gtkpod.glade.h:138 msgid "Display toolbar..." msgstr "Werkzeugleiste anzeigen..." -#: ../data/gtkpod.glade.h:149 +#: ../data/gtkpod.glade.h:139 msgid "Display tooltips in main window" msgstr "Werkzeugtipps im Hauptfenster anzeigen" -#: ../data/gtkpod.glade.h:150 +#: ../data/gtkpod.glade.h:140 msgid "Display tooltips in prefs window" msgstr "Werkzeugtipps im Fenster 'Einstellungen' anzeigen" -#: ../data/gtkpod.glade.h:151 +#: ../data/gtkpod.glade.h:141 msgid "Display tracks that match the criteria entered above." msgstr "Stücke anzeigen, welche die oben genannten Kriterien erfüllen." -#: ../data/gtkpod.glade.h:152 +#: ../data/gtkpod.glade.h:142 msgid "" "Displayed\n" "Tracks" @@ -676,74 +663,85 @@ "Angezeigte\n" "Stücke" -#: ../data/gtkpod.glade.h:154 +#: ../data/gtkpod.glade.h:144 msgid "Don't allow file duplication" msgstr "Mehrfaches Einlesen von Stücken verhindern" -#: ../data/gtkpod.glade.h:155 +#: ../data/gtkpod.glade.h:145 msgid "Don't automatically sync on startup" msgstr "Beim Start nicht automatisch abgleichen" -#: ../data/gtkpod.glade.h:156 +#: ../data/gtkpod.glade.h:146 msgid "Download Cover" msgstr "" -#: ../data/gtkpod.glade.h:157 +#: ../data/gtkpod.glade.h:147 #, fuzzy msgid "Duplicate Recognition is based on a (modified) sha1 hash over the file." msgstr "" "Die Duplikat-Erkennung basiert auf einem (modifizierten) md5-Hash über die " "Dateien." -#: ../data/gtkpod.glade.h:158 +#: ../data/gtkpod.glade.h:148 msgid "Edit Repository/iPod Options" msgstr "_Ändere Verzeichnis / iPod Optionen" -#: ../data/gtkpod.glade.h:159 ../src/context_menus.c:659 +#: ../data/gtkpod.glade.h:149 ../src/context_menus.c:659 msgid "Edit Smart Playlist" msgstr "Intelligente Wiedergabeliste editieren" -#: ../data/gtkpod.glade.h:160 ../src/context_menus.c:746 +#: ../data/gtkpod.glade.h:150 ../src/context_menus.c:746 msgid "Edit Track Details" msgstr "_Bearbeite Stücke" -#: ../data/gtkpod.glade.h:161 +#: ../data/gtkpod.glade.h:151 msgid "Edit _Preferences" msgstr "_Einstellungen ändern" -#: ../data/gtkpod.glade.h:162 +#: ../data/gtkpod.glade.h:152 msgid "Effective free space" msgstr "Effektiv freier Platz" -#: ../data/gtkpod.glade.h:163 +#: ../data/gtkpod.glade.h:153 msgid "Empty Playlist" msgstr "Wiedergabeliste leeren" -#: ../data/gtkpod.glade.h:164 +#: ../data/gtkpod.glade.h:154 msgid "Exclude file mask(s)" msgstr "Schließe Dateimaske(n) aus" -#: ../data/gtkpod.glade.h:165 +#: ../data/gtkpod.glade.h:155 +#, fuzzy +msgid "Export can be continued at a later time if canceled." +msgstr "" +"Zum Abbrechen bitte anklicken.\n" +"Der Export kann zu einem späteren Zeitpunkt fortgesetzt werden." + +#: ../data/gtkpod.glade.h:156 msgid "File size" msgstr "Dateigröße" -#: ../data/gtkpod.glade.h:166 +#: ../data/gtkpod.glade.h:157 msgid "File size (deleted)" msgstr "Dateigröße (gelöscht)" -#: ../data/gtkpod.glade.h:167 +#: ../data/gtkpod.glade.h:158 msgid "File size (non-transferred)" msgstr "Dateigröße (nicht übertragen)" -#: ../data/gtkpod.glade.h:168 +#: ../data/gtkpod.glade.h:159 msgid "Filename Format: " msgstr "Format für Dateinamen: " -#: ../data/gtkpod.glade.h:169 +#: ../data/gtkpod.glade.h:160 msgid "Files" msgstr "Dateien" -#: ../data/gtkpod.glade.h:170 +#: ../data/gtkpod.glade.h:161 +msgid "Find _New" +msgstr "" + +#: ../data/gtkpod.glade.h:162 #, fuzzy msgid "" "Find orphan files (files with no track info in DB) and dangling tracks " @@ -752,16 +750,16 @@ "Verwaiste Stücke (Stücke, für die kein Eintrag in der iTunesDB erscheint) " "und verlorene Stücke (Stücke ohne Datei auf dem iPod) finden" -#: ../data/gtkpod.glade.h:171 +#: ../data/gtkpod.glade.h:163 #, fuzzy msgid "First try <i>folder.jpg</i>, then <i><artist>.jpg</i>" msgstr "Versuche zuerst <i>folder.jpg</i>, dann <i><Künstler>.jpg</i>" -#: ../data/gtkpod.glade.h:172 +#: ../data/gtkpod.glade.h:164 msgid "Flac with :" msgstr "" -#: ../data/gtkpod.glade.h:174 +#: ../data/gtkpod.glade.h:166 #, no-c-format msgid "" "For example, 'xmms %s' will clear xmms' current playlist, add the selected " @@ -770,7 +768,7 @@ "'xmms %s', z.B., löscht die aktuelle Wiedergabeliste von xmms, fügt die " "ausgewählten Stücke hinzu und beginnt mit der Wiedergabe." -#: ../data/gtkpod.glade.h:176 +#: ../data/gtkpod.glade.h:168 #, no-c-format msgid "" "For example, 'xmms -e %s' will append (enqueue) the selected tracks to xmms' " @@ -779,16 +777,16 @@ "'xmms -e %s', z.B., fügt die ausgewählten Stücke zur aktuellen " "Wiedergabeliste von xmms hinzu." -#: ../data/gtkpod.glade.h:177 ../src/display_sorttabs.c:2957 +#: ../data/gtkpod.glade.h:169 ../src/display_sorttabs.c:2966 #: ../src/display_spl.c:89 ../src/misc_conversion.c:63 msgid "Genre" msgstr "Genre" -#: ../data/gtkpod.glade.h:178 +#: ../data/gtkpod.glade.h:170 msgid "Group artists on compilation CDs" msgstr "Künstler auf Sampler-CDs gruppieren" -#: ../data/gtkpod.glade.h:179 +#: ../data/gtkpod.glade.h:171 #, fuzzy msgid "" "Highly recommended for faster import when taking advantage of the " @@ -805,12 +803,12 @@ "rekonstruieren (dazu müssen die 'transferred=' Einträge in der gesicherten " "Datenbank auf '0' gesetzt und 'offline' eingelesen werden)." -#: ../data/gtkpod.glade.h:180 ../src/context_menus.c:682 +#: ../data/gtkpod.glade.h:172 ../src/context_menus.c:682 #: ../src/context_menus.c:700 ../src/context_menus.c:824 msgid "I'm sure" msgstr "Ich bin sicher" -#: ../data/gtkpod.glade.h:181 +#: ../data/gtkpod.glade.h:173 msgid "" "If available, the local copy of the track is referenced in the playlist. " "Otherwise the file on the iPod is used." @@ -818,11 +816,11 @@ "Falls verfügbar, wird die lokale Kopie des Stückes in die Wiedergabeliste " "eingetragen. Andernfalls wird die Datei auf dem iPod verwendet." -#: ../data/gtkpod.glade.h:182 +#: ../data/gtkpod.glade.h:174 msgid "If both options are selected, embedded APIC data takes precedence." msgstr "Falls beide Optionen angewählt sind, werden die APIC-Daten verwendet." -#: ../data/gtkpod.glade.h:183 +#: ../data/gtkpod.glade.h:175 msgid "" "If checked, sorting will be case sensitive. Please note that case sensitive " "sorting will not work well with most charsets." @@ -831,7 +829,7 @@ "Kleinschreibung beachtet. Mit den meisten Zeichensätzen funktioniert diese " "Funktion jedoch nicht wie gewünscht." -#: ../data/gtkpod.glade.h:184 +#: ../data/gtkpod.glade.h:176 msgid "" "If the filename (full path) of an existing track matches that of a track to " "be added, this option allows you to update the information about the " @@ -846,12 +844,12 @@ "die Option 'Mehrfaches Einlesen von Stücken verhindern' aktiviert haben, " "wird das Einlesen ebenfalls übersprungen." -#: ../data/gtkpod.glade.h:185 +#: ../data/gtkpod.glade.h:177 msgid "If you check this, gtkpod will descend into subdirectories recursively." msgstr "" "Wenn Sie diese Option wählen, werden Verzeichnisse rekursiv eingelesen." -#: ../data/gtkpod.glade.h:186 +#: ../data/gtkpod.glade.h:178 msgid "" "If you check this, information (cover art and meta information) changed for " "this track will be copied to all other selected tracks as well. Use with " @@ -861,7 +859,7 @@ "Stück (Cover und sonstige Angaben) automatisch in alle ausgewählten Stücke " "kopiert. Bitte mit Vorsicht verwenden." -#: ../data/gtkpod.glade.h:187 +#: ../data/gtkpod.glade.h:179 msgid "" "If you don't select the master playlist automatically, the initial database " "import is much faster because the display dosn't have to be updated." @@ -870,7 +868,7 @@ "der Import der iTunes Datenbank zu Beginn deutlich schneller, da die Anzeige " "nicht aktualisiert werden muss." -#: ../data/gtkpod.glade.h:188 +#: ../data/gtkpod.glade.h:180 msgid "" "If you select several tracks in the track list and edit a tag of the first " "track, the tags in the other tracks are updated as well." @@ -879,11 +877,11 @@ "ersten Stückes geändert wird, werden die entsprechenden Tags auch in den " "anderen Stücken aktualisiert." -#: ../data/gtkpod.glade.h:189 +#: ../data/gtkpod.glade.h:181 msgid "Ignore these words when at the beginning of the following fields:" msgstr "Ignoriere folgende Wörter, wenn Sie am Anfang von Feldern stehen:" -#: ../data/gtkpod.glade.h:190 +#: ../data/gtkpod.glade.h:182 msgid "" "In order to save the displayed track order to the iPod choose 'Save " "Displayed Track Order' from the 'Edit' menu or select 'Auto Store' below." @@ -892,11 +890,11 @@ "'Dargestellte Reihenfolge speichern' im 'Bearbeiten' Menü oder wählen die " "Option \"Autom. speichern\" unten aus." -#: ../data/gtkpod.glade.h:191 +#: ../data/gtkpod.glade.h:183 msgid "Initialize iPod" msgstr "Initialisiere iPod" -#: ../data/gtkpod.glade.h:192 +#: ../data/gtkpod.glade.h:184 msgid "" "Insert before\n" "Insert after" @@ -904,68 +902,68 @@ "Davor einfügen\n" "Danach einfügen" -#: ../data/gtkpod.glade.h:194 +#: ../data/gtkpod.glade.h:186 msgid "Keeps all compilation CDs grouped together in the artists sort tab." msgstr "" "Alle Sampler-CDs im Filter-Eintrag 'Künstler' als 'Sampler' gruppieren." -#: ../data/gtkpod.glade.h:195 +#: ../data/gtkpod.glade.h:187 msgid "Live _updating" msgstr "Live Akt_ualisierung" -#: ../data/gtkpod.glade.h:196 +#: ../data/gtkpod.glade.h:188 msgid "Load iPod(s)" msgstr "iPod(s) einlesen" -#: ../data/gtkpod.glade.h:197 +#: ../data/gtkpod.glade.h:189 msgid "Lower Margin" msgstr "Untere Grenze" -#: ../data/gtkpod.glade.h:198 +#: ../data/gtkpod.glade.h:190 msgid "M4A with :" msgstr "" -#: ../data/gtkpod.glade.h:199 +#: ../data/gtkpod.glade.h:191 msgid "MP3 with :" msgstr "" -#: ../data/gtkpod.glade.h:200 +#: ../data/gtkpod.glade.h:192 msgid "Match al_l of the following" msgstr "Al_le der folgenden Regeln" -#: ../data/gtkpod.glade.h:201 +#: ../data/gtkpod.glade.h:193 msgid "Match an_y of the following" msgstr "Mindestens _eine der folgenden Regeln" -#: ../data/gtkpod.glade.h:202 +#: ../data/gtkpod.glade.h:194 msgid "Match only _checked tracks" msgstr "Nur ausgewählte Stü_cke einbeziehen" -#: ../data/gtkpod.glade.h:203 +#: ../data/gtkpod.glade.h:195 msgid "Maximum number of background threads:" msgstr "" -#: ../data/gtkpod.glade.h:204 +#: ../data/gtkpod.glade.h:196 msgid "Maximum size of cache directory (in GB):" msgstr "" -#: ../data/gtkpod.glade.h:205 +#: ../data/gtkpod.glade.h:197 msgid "Model:" msgstr "Modell:" -#: ../data/gtkpod.glade.h:206 ../src/display_tracks.c:1993 +#: ../data/gtkpod.glade.h:198 ../src/display_tracks.c:2017 msgid "Modified" msgstr "Modifiziert" -#: ../data/gtkpod.glade.h:207 +#: ../data/gtkpod.glade.h:199 msgid "Most Recently Played Tracks" msgstr "Zuletzt gespielte Stücke" -#: ../data/gtkpod.glade.h:208 +#: ../data/gtkpod.glade.h:200 msgid "Music Root:" msgstr "Stammverzeichnis für Musik:" -#: ../data/gtkpod.glade.h:209 +#: ../data/gtkpod.glade.h:201 msgid "" "Music files can have images embedded in the APIC tag. Currently this is only " "supported for MP3 files." @@ -973,31 +971,31 @@ "Musikdateien können Bilder im 'APIC Tag' enthalten. Dies wird derzeit nur " "bei MP3-Dateien unterstützt." -#: ../data/gtkpod.glade.h:210 +#: ../data/gtkpod.glade.h:202 msgid "Never show this dialogue again" msgstr "Diesen Dialog nie wieder zeigen" -#: ../data/gtkpod.glade.h:211 +#: ../data/gtkpod.glade.h:203 msgid "New PL" msgstr "Neue Wiedergabeliste" -#: ../data/gtkpod.glade.h:212 +#: ../data/gtkpod.glade.h:204 msgid "No lower margin" msgstr "Keine untere Grenze" -#: ../data/gtkpod.glade.h:213 +#: ../data/gtkpod.glade.h:205 msgid "No upper margin" msgstr "Keine obere Grenze" -#: ../data/gtkpod.glade.h:214 +#: ../data/gtkpod.glade.h:206 msgid "Non-transferred tracks" msgstr "Nicht übertragene Stücke" -#: ../data/gtkpod.glade.h:215 +#: ../data/gtkpod.glade.h:207 msgid "None" msgstr "Keine" -#: ../data/gtkpod.glade.h:216 +#: ../data/gtkpod.glade.h:208 msgid "" "Normally the charset specified when first importing the track will be used " "for the filename. If you set this option you can set a different charset " @@ -1015,7 +1013,7 @@ "eingelesen wurden, haben keine Informationen über den Zeichensatz " "gespeichert und der oben spezifizierte Zeichensatz wird verwendet." -#: ../data/gtkpod.glade.h:217 +#: ../data/gtkpod.glade.h:209 msgid "" "Normally the charset specified when first importing the track will be used " "to update the track information. If you have chosen a wrong charset when " @@ -1035,7 +1033,7 @@ "eingelesen wurden, haben keine Informationen über den Zeichensatz " "gespeichert und der oben spezifizierte Zeichensatz wird verwendet." -#: ../data/gtkpod.glade.h:218 +#: ../data/gtkpod.glade.h:210 msgid "" "Normally the charset specified when first importing the track will be used " "to write the tags. If you have chosen a wrong charset when first importing a " @@ -1055,7 +1053,7 @@ "Informationen über den Zeichensatz gespeichert und der auf der 'Eingabe/" "Ausgabe'-Seite eingestellte Zeichensatz wird verwendet." -#: ../data/gtkpod.glade.h:219 +#: ../data/gtkpod.glade.h:211 msgid "" "Normally, if a track is no longer present in the sync directory, it will be " "removed from the playlist, but not from the iPod or local repository.\n" @@ -1074,23 +1072,23 @@ "diese Option gewählt sein, wenn Stücke gelöscht werden sollen, da Löschen " "aus der Wiedergabeliste auch Löschen auf dem iPod bedeutet." -#: ../data/gtkpod.glade.h:222 +#: ../data/gtkpod.glade.h:214 msgid "Notes sync command:" msgstr "Befehl zum Abgleich der Notizen:" -#: ../data/gtkpod.glade.h:223 +#: ../data/gtkpod.glade.h:215 msgid "Number of playlists" msgstr "Anzahl der Wiedergabelisten" -#: ../data/gtkpod.glade.h:224 +#: ../data/gtkpod.glade.h:216 msgid "Number of tracks" msgstr "Anzahl der Stücke" -#: ../data/gtkpod.glade.h:225 +#: ../data/gtkpod.glade.h:217 msgid "Number of tracks in generated playlists:" msgstr "Anzahl der Stücke in generierten Wiedergabelisten:" -#: ../data/gtkpod.glade.h:226 +#: ../data/gtkpod.glade.h:218 msgid "" "Number of tracks in the generated playlists 'Most Often Listened', 'Best " "Rated' and 'Most Recently Played'. Choose '0' for 'no limit'." @@ -1099,179 +1097,163 @@ "Stücke', 'Höchstbewertete Stücke' und 'Zuletzt gespielte Stücke'. Wählen Sie " "'0', wenn Sie die Anzahl nicht begrenzen wollen." -#: ../data/gtkpod.glade.h:227 +#: ../data/gtkpod.glade.h:219 msgid "Ogg with :" msgstr "" -#: ../data/gtkpod.glade.h:228 +#: ../data/gtkpod.glade.h:220 msgid "On startup automatically sync with playlist directories" msgstr "Beim Start automatisch mit den Wiedergabelisten abgleichen" -#: ../data/gtkpod.glade.h:229 +#: ../data/gtkpod.glade.h:221 msgid "On startup automatically sync with the following directory" msgstr "Beim Start automatisch mit folgendem Verzeichnis abgleichen" -#: ../data/gtkpod.glade.h:230 +#: ../data/gtkpod.glade.h:222 msgid "On startup automatically update (Live Playlist)" msgstr "Automatische Aktualisierung beim Start" -#: ../data/gtkpod.glade.h:231 +#: ../data/gtkpod.glade.h:223 msgid "One for each Album" msgstr "Eine für jedes Album" -#: ../data/gtkpod.glade.h:232 +#: ../data/gtkpod.glade.h:224 msgid "One for each Artist" msgstr "Eine für jeden Künstler" -#: ../data/gtkpod.glade.h:233 +#: ../data/gtkpod.glade.h:225 msgid "One for each Composer" msgstr "Eine für jeden Komponisten" -#: ../data/gtkpod.glade.h:234 +#: ../data/gtkpod.glade.h:226 msgid "One for each Genre" msgstr "Eine für jedes Genre" -#: ../data/gtkpod.glade.h:235 +#: ../data/gtkpod.glade.h:227 msgid "One for each Rating" msgstr "Eine für jede Bewertung" -#: ../data/gtkpod.glade.h:236 +#: ../data/gtkpod.glade.h:228 msgid "One for each Year" msgstr "Eine für jedes Jahr" -#: ../data/gtkpod.glade.h:237 +#: ../data/gtkpod.glade.h:229 msgid "Overwrite tags that are already set" msgstr "Tags, die bereits gesetzt sind, überschreiben." -#: ../data/gtkpod.glade.h:238 +#: ../data/gtkpod.glade.h:230 msgid "Password:" msgstr "" -#: ../data/gtkpod.glade.h:239 +#: ../data/gtkpod.glade.h:231 msgid "Path:" msgstr "Pfad:" -#: ../data/gtkpod.glade.h:240 +#: ../data/gtkpod.glade.h:232 msgid "Play time" msgstr "Spielzeit" -#: ../data/gtkpod.glade.h:241 ../src/display_spl.c:98 +#: ../data/gtkpod.glade.h:233 ../src/display_spl.c:98 #: ../src/misc_conversion.c:77 msgid "Playcount" msgstr "Wiedergabezähler" -#: ../data/gtkpod.glade.h:242 ../src/display_tracks.c:1990 +#: ../data/gtkpod.glade.h:234 ../src/display_tracks.c:2014 msgid "Played" msgstr "Gespielt" -#: ../data/gtkpod.glade.h:243 ../src/display_spl.c:105 +#: ../data/gtkpod.glade.h:235 ../src/display_spl.c:105 msgid "Playlist" msgstr "Wiedergabeliste" -#: ../data/gtkpod.glade.h:244 +#: ../data/gtkpod.glade.h:236 msgid "Playlist name:" msgstr "Name der Wiedergabeliste:" -#: ../data/gtkpod.glade.h:245 +#: ../data/gtkpod.glade.h:237 msgid "Playlist type:" msgstr "Art der Wiedergabeliste:" -#: ../data/gtkpod.glade.h:246 ../src/display_playlists.c:2176 +#: ../data/gtkpod.glade.h:238 ../src/display_playlists.c:2190 msgid "Playlists" msgstr "Wiedergabelisten" -#: ../data/gtkpod.glade.h:247 +#: ../data/gtkpod.glade.h:239 msgid "Please refer to the notice below." msgstr "Bitte beachten Sie den Hinweis weiter unten." -#: ../data/gtkpod.glade.h:248 +#: ../data/gtkpod.glade.h:240 msgid "Please specify a time interval" msgstr "Bitte Zeitintervall angeben" -#: ../data/gtkpod.glade.h:249 +#: ../data/gtkpod.glade.h:241 msgid "Preferences" msgstr "Einstellungen" -#: ../data/gtkpod.glade.h:250 -msgid "" -"Press button to abort.\n" -"Export can be continued at a later time." -msgstr "" -"Zum Abbrechen bitte anklicken.\n" -"Der Export kann zu einem späteren Zeitpunkt fortgesetzt werden." - -#: ../data/gtkpod.glade.h:252 -msgid "Previous" -msgstr "" - -#: ../data/gtkpod.glade.h:253 +#: ../data/gtkpod.glade.h:242 #, fuzzy msgid "Progress Information" msgstr "Information" -#: ../data/gtkpod.glade.h:254 +#: ../data/gtkpod.glade.h:243 msgid "Random Playlist from Displayed Tracks" msgstr "Zufällige aus den angezeigten Stücken" -#: ../data/gtkpod.glade.h:255 +#: ../data/gtkpod.glade.h:244 msgid "Randomize Current Playlist" msgstr "_Aktuelle Wiedergabeliste zufällig sortieren" -#: ../data/gtkpod.glade.h:256 ../src/display_spl.c:101 +#: ../data/gtkpod.glade.h:245 ../src/display_spl.c:101 #: ../src/misc_conversion.c:78 msgid "Rating" msgstr "Bewertung" -#: ../data/gtkpod.glade.h:257 +#: ../data/gtkpod.glade.h:246 msgid "Read coverart from embedded APIC data" msgstr "Lese Cover-Bild aus den APIC Daten" -#: ../data/gtkpod.glade.h:258 +#: ../data/gtkpod.glade.h:247 msgid "Read tags from file contents (e.g. ID3 tags in MP3 files)" msgstr "Tags aus der Datei lesen (z.B. ID3 Tags bei MP3 Dateien)" -#: ../data/gtkpod.glade.h:259 -msgid "Remove Cover Art" -msgstr "Cover-Bild entfernen" - -#: ../data/gtkpod.glade.h:260 +#: ../data/gtkpod.glade.h:248 msgid "Repository Options" msgstr "Datenbank-Optionen" -#: ../data/gtkpod.glade.h:261 +#: ../data/gtkpod.glade.h:249 msgid "Repository name:" msgstr "Datenbankname:" -#: ../data/gtkpod.glade.h:262 +#: ../data/gtkpod.glade.h:250 msgid "Repository type:" msgstr "Datenbanktyp:" -#: ../data/gtkpod.glade.h:263 +#: ../data/gtkpod.glade.h:251 msgid "Root directory of mserv database (trackinfo root)." msgstr "Stammverzeichnis für die mserv Datenbank (trackinfo root)." -#: ../data/gtkpod.glade.h:264 +#: ../data/gtkpod.glade.h:252 msgid "Rules" msgstr "Regeln" -#: ../data/gtkpod.glade.h:265 ../src/context_menus.c:808 +#: ../data/gtkpod.glade.h:253 ../src/context_menus.c:808 msgid "Save Changes" msgstr "Änderungen sichern" -#: ../data/gtkpod.glade.h:266 +#: ../data/gtkpod.glade.h:254 #, fuzzy msgid "Scrobble Tracks?" msgstr "Ausgewählte _Stücke" -#: ../data/gtkpod.glade.h:267 +#: ../data/gtkpod.glade.h:255 msgid "Select '-1' for no upper limit." msgstr "'-1' wählen für 'keine obere Schranke'." -#: ../data/gtkpod.glade.h:268 +#: ../data/gtkpod.glade.h:256 msgid "Select '0' for no lower limit." msgstr "'0' wählen für 'keine untere Schranke'." -#: ../data/gtkpod.glade.h:269 +#: ../data/gtkpod.glade.h:257 msgid "" "Selected\n" "Playlist" @@ -1279,7 +1261,7 @@ "Ausgewählte\n" "Wiedergabeliste" -#: ../data/gtkpod.glade.h:271 +#: ../data/gtkpod.glade.h:259 msgid "" "Selected\n" "Tracks" @@ -1287,94 +1269,94 @@ "Ausgewählte\n" "Stücke" -#: ../data/gtkpod.glade.h:273 +#: ../data/gtkpod.glade.h:261 msgid "Selected Tab _Entry" msgstr "Ausgewählter _Eintrag" -#: ../data/gtkpod.glade.h:274 +#: ../data/gtkpod.glade.h:262 msgid "Selected _Playlist" msgstr "Ausgewählte _Wiedergabeliste" -#: ../data/gtkpod.glade.h:275 +#: ../data/gtkpod.glade.h:263 msgid "Selected _Tracks" msgstr "Ausgewählte _Stücke" -#: ../data/gtkpod.glade.h:276 +#: ../data/gtkpod.glade.h:264 msgid "Selected filter tab entry from database" msgstr "Ausgewählter Filter-Eintrag der lokalen Datenbank" -#: ../data/gtkpod.glade.h:277 +#: ../data/gtkpod.glade.h:265 msgid "Selected filter tab entry from harddisk" msgstr "Ausgewählter Filter-Eintrag der Festplatte" -#: ../data/gtkpod.glade.h:278 +#: ../data/gtkpod.glade.h:266 msgid "Selected filter tab entry from iPod" msgstr "Ausgewählter Filter-Eintrag vom iPod" -#: ../data/gtkpod.glade.h:279 +#: ../data/gtkpod.glade.h:267 msgid "Selected filter tab entry from playlist" msgstr "Ausgewählter Filter-Eintrag der Wiedergabeliste" -#: ../data/gtkpod.glade.h:280 +#: ../data/gtkpod.glade.h:268 msgid "Selected playlist" msgstr "Ausgewählte Wiedergabeliste" -#: ../data/gtkpod.glade.h:281 +#: ../data/gtkpod.glade.h:269 msgid "Selected playlist including tracks from database" msgstr "" "Ausgewählte Wiedergabeliste einschließlich der Stücke aus der Datenbank" -#: ../data/gtkpod.glade.h:282 +#: ../data/gtkpod.glade.h:270 msgid "Selected playlist including tracks from harddisk" msgstr "" "Ausgewählte Wiedergabeliste einschließlich der Stücke von der Festplatte" -#: ../data/gtkpod.glade.h:283 +#: ../data/gtkpod.glade.h:271 msgid "Selected playlist including tracks from iPod" msgstr "Ausgewählte Wiedergabeliste einschließlich der Stücke vom iPod" -#: ../data/gtkpod.glade.h:284 +#: ../data/gtkpod.glade.h:272 msgid "Selected tracks from database" msgstr "Ausgewählte Stücke aus der Datenbank" -#: ../data/gtkpod.glade.h:285 +#: ../data/gtkpod.glade.h:273 msgid "Selected tracks from harddisk" msgstr "Ausgewählte Stücke von der Festplatte" -#: ../data/gtkpod.glade.h:286 +#: ../data/gtkpod.glade.h:274 msgid "Selected tracks from iPod" msgstr "Ausgewählte Stücke vom iPod" -#: ../data/gtkpod.glade.h:287 +#: ../data/gtkpod.glade.h:275 msgid "Selected tracks from playlist" msgstr "Ausgewählte Stücke aus der Wiedergabeliste" -#: ../data/gtkpod.glade.h:288 +#: ../data/gtkpod.glade.h:276 #, fuzzy msgid "Semicolon separated list of file exclusion masks, e.g. '*.mp3'" msgstr "" "Per Semikolon getrennte Liste der durch Maske ausgeschlossenen Stücke, z.B. " "'*.mp3'" -#: ../data/gtkpod.glade.h:289 +#: ../data/gtkpod.glade.h:277 #, fuzzy -msgid "Set Cover Art from File" +msgid "Set Cover Art from _File" msgstr "Lege Cover-Bild fest" -#: ../data/gtkpod.glade.h:290 +#: ../data/gtkpod.glade.h:278 #, fuzzy -msgid "Set Cover Art from Web" +msgid "Set Cover Art from _Web" msgstr "Lege Cover-Bild fest" -#: ../data/gtkpod.glade.h:291 +#: ../data/gtkpod.glade.h:279 msgid "Set mountpoint or edit repository options" msgstr "Einhängepunkt festlegen oder Datenbank-Optionen editieren" -#: ../data/gtkpod.glade.h:292 +#: ../data/gtkpod.glade.h:280 msgid "Set options for Calendar/Contacts/Notes" msgstr "Setze Optionen für Kalender/Kontakte/Notizen" -#: ../data/gtkpod.glade.h:293 +#: ../data/gtkpod.glade.h:281 msgid "" "Set this to 'aacgain -q -k' to use the 'Normalize volume' functionality in " "the Tools Menu. If this is set, missing normalization data for .m4a and .m4b " @@ -1384,7 +1366,7 @@ "Falls gewählt, werden Normalisierungsdaten für m4a und m4b Dateien errechnet " "und zu den Musikinformationen hinzugefügt." -#: ../data/gtkpod.glade.h:294 +#: ../data/gtkpod.glade.h:282 msgid "" "Set this to 'mp3gain -q -k' to use the 'Normalize volume' functionality in " "the Tools Menu. If this is set, missing normalization data for mp3 files " @@ -1394,66 +1376,66 @@ "Falls gewählt, werden Normalisierungsdaten für mp3 Dateien errechnet und zu " "den Musikinformationen hinzugefügt." -#: ../data/gtkpod.glade.h:295 +#: ../data/gtkpod.glade.h:283 msgid "Set this to your last.fm password" msgstr "" -#: ../data/gtkpod.glade.h:296 +#: ../data/gtkpod.glade.h:284 msgid "Set this to your last.fm username" msgstr "" -#: ../data/gtkpod.glade.h:297 +#: ../data/gtkpod.glade.h:285 msgid "" "Set to 0 to effectively disable caching (a maximum of one track will be " "cached at a time)." msgstr "" -#: ../data/gtkpod.glade.h:298 +#: ../data/gtkpod.glade.h:286 msgid "" "Set to 0 to use as many background threads as CPUs are available on your " "system." msgstr "" -#: ../data/gtkpod.glade.h:299 +#: ../data/gtkpod.glade.h:287 msgid "Show information about problems when accessing mserv" msgstr "" "Informationen über Probleme während des Zugriffs auf die mserv Datenbank " "anzeigen." -#: ../data/gtkpod.glade.h:300 +#: ../data/gtkpod.glade.h:288 msgid "Show summary of sync result" msgstr "Zeige Zusammenfassung nach Abgleich." -#: ../data/gtkpod.glade.h:301 ../src/misc_playlist.c:96 +#: ../data/gtkpod.glade.h:289 ../src/misc_playlist.c:96 #: ../src/repository.c:1356 msgid "Smart Playlist" msgstr "Intelligente Wiedergabeliste" -#: ../data/gtkpod.glade.h:302 +#: ../data/gtkpod.glade.h:290 msgid "Sort tracks according to: " msgstr "Sortiere Stücke nach: " -#: ../data/gtkpod.glade.h:303 +#: ../data/gtkpod.glade.h:291 msgid "Sorting Options" msgstr "Sortieroptionen" -#: ../data/gtkpod.glade.h:304 +#: ../data/gtkpod.glade.h:292 msgid "Sorting case sensitive" msgstr "Beim Sortieren Groß-/Kleinschreibung beachten" -#: ../data/gtkpod.glade.h:305 +#: ../data/gtkpod.glade.h:293 msgid "Sorttab: " msgstr "Sortierungseintrag: " -#: ../data/gtkpod.glade.h:306 +#: ../data/gtkpod.glade.h:294 msgid "Sorttabs" msgstr "Sortierungseinträge" -#: ../data/gtkpod.glade.h:307 +#: ../data/gtkpod.glade.h:295 msgid "Source:" msgstr "Quelle:" -#: ../data/gtkpod.glade.h:309 +#: ../data/gtkpod.glade.h:297 #, no-c-format msgid "" "Specify exact path including command line options. '%i' will be replaced " @@ -1462,39 +1444,39 @@ "Geben sie den genauen Pfad einschließlich Kommandozeilenoptionen an. '%i' " "wird durch den Einhängepunkt des iPods ersetzt." -#: ../data/gtkpod.glade.h:310 +#: ../data/gtkpod.glade.h:298 msgid "Specify interval" msgstr "Intervall angeben" -#: ../data/gtkpod.glade.h:311 +#: ../data/gtkpod.glade.h:299 msgid "Start display automatically" msgstr "Anzeige automatisch starten" -#: ../data/gtkpod.glade.h:312 +#: ../data/gtkpod.glade.h:300 msgid "Synchronise Contacts, Calendar and Notes" msgstr "Kontakte, Kalender und Notizen abgleichen" -#: ../data/gtkpod.glade.h:313 +#: ../data/gtkpod.glade.h:301 msgid "Synchronize All" msgstr "Alles abgleichen" -#: ../data/gtkpod.glade.h:314 +#: ../data/gtkpod.glade.h:302 msgid "Synchronize Calendar" msgstr "Kalender abgleichen" -#: ../data/gtkpod.glade.h:315 +#: ../data/gtkpod.glade.h:303 msgid "Synchronize Contacts" msgstr "Kontakte abgleichen" -#: ../data/gtkpod.glade.h:316 +#: ../data/gtkpod.glade.h:304 msgid "Synchronize Notes" msgstr "Notizen abgleichen" -#: ../data/gtkpod.glade.h:317 +#: ../data/gtkpod.glade.h:305 msgid "Template for info field: " msgstr "Schablone für dieses Feld: " -#: ../data/gtkpod.glade.h:318 +#: ../data/gtkpod.glade.h:306 msgid "" "The local copy of the track is referenced in the playlist. If the track is " "not available locally, an error message is displayed." @@ -1503,13 +1485,13 @@ "Falls das Stück lokal nicht verfügbar ist, wird eine Fehlermeldung " "ausgegeben." -#: ../data/gtkpod.glade.h:319 +#: ../data/gtkpod.glade.h:307 msgid "" "The output of the background conversion scripts is copied below. Each page " "of the notebook corresponds to one background thread." msgstr "" -#: ../data/gtkpod.glade.h:320 +#: ../data/gtkpod.glade.h:308 #, fuzzy msgid "" "The tags are written to the files on your harddrive and on the iPod (if " @@ -1518,17 +1500,17 @@ "Die Tags werden in die Originaldateien auf der Festplatte und auch auf dem " "iPod (falls angeschlossen) geschrieben." -#: ../data/gtkpod.glade.h:321 +#: ../data/gtkpod.glade.h:309 msgid "The track on the iPod is referenced in the playlist file." msgstr "Die Datei auf dem iPod wird in die Wiedergabeliste eingetragen." -#: ../data/gtkpod.glade.h:322 +#: ../data/gtkpod.glade.h:310 msgid "This is the same option as in 'Edit/Delete Confirmation'" msgstr "" "Diese Option ist identisch mit der Sicherheitsabfrage \n" "beim 'Bearbeiten/Löschen'" -#: ../data/gtkpod.glade.h:323 +#: ../data/gtkpod.glade.h:311 msgid "" "This is the way to go, but maybe not all programs support it yet. ID3v2.4 " "uses unicode to store the tags, so you won't have to worry about charsets " @@ -1544,22 +1526,22 @@ "ID3v2.4 wird ebenfalls beim Schreiben verwendet, falls die Tags in der Datei " "bereits als V2.4 vorliegen." -#: ../data/gtkpod.glade.h:324 +#: ../data/gtkpod.glade.h:312 msgid "This option will be re-activated when you upgrade gtkpod." msgstr "" "Diese Option wird automatisch aktiviert, wenn eine neue Version von gtkpod " "installiert wird." -#: ../data/gtkpod.glade.h:325 +#: ../data/gtkpod.glade.h:313 msgid "Time:" msgstr "Zeit:" -#: ../data/gtkpod.glade.h:326 ../src/display_sorttabs.c:2963 +#: ../data/gtkpod.glade.h:314 ../src/display_sorttabs.c:2972 #: ../src/display_spl.c:83 ../src/misc_conversion.c:62 msgid "Title" msgstr "Titel" -#: ../data/gtkpod.glade.h:327 +#: ../data/gtkpod.glade.h:315 msgid "" "Total\n" "(iPod)" @@ -1567,7 +1549,7 @@ "Insgesamt\n" "(iPod)" -#: ../data/gtkpod.glade.h:329 +#: ../data/gtkpod.glade.h:317 msgid "" "Total\n" "(local)" @@ -1575,38 +1557,38 @@ "Insgesamt\n" "(lokal)" -#: ../data/gtkpod.glade.h:331 +#: ../data/gtkpod.glade.h:319 msgid "Tracks" msgstr "Stücke" -#: ../data/gtkpod.glade.h:332 +#: ../data/gtkpod.glade.h:320 msgid "Tracks Most Often Listened To" msgstr "Am häufigsten gehörte Stücke" -#: ../data/gtkpod.glade.h:333 +#: ../data/gtkpod.glade.h:321 msgid "" "Tracks can be transferred in the background as soon as they are added to an " "iPod repository. Otherwise they will be transferred when ejecting the " "contents of the iPod completely unchanged until then." msgstr "" -#: ../data/gtkpod.glade.h:334 +#: ../data/gtkpod.glade.h:322 msgid "Tracks in Selected Tab _Entry" msgstr "Stücke im ausgewählten _Sortierungseintrag" -#: ../data/gtkpod.glade.h:335 +#: ../data/gtkpod.glade.h:323 msgid "Tracks in Selected _Playlist" msgstr "Stücke in ausgewählter _Wiedergabeliste" -#: ../data/gtkpod.glade.h:336 +#: ../data/gtkpod.glade.h:324 msgid "Transfer tracks to the iPod in the background" msgstr "" -#: ../data/gtkpod.glade.h:337 +#: ../data/gtkpod.glade.h:325 msgid "Translators" msgstr "Übersetzer" -#: ../data/gtkpod.glade.h:338 +#: ../data/gtkpod.glade.h:326 msgid "" "Try to load contents of all connected iPods. For each iPod a separate " "repository must be set up." @@ -1614,53 +1596,58 @@ "Versuche den Inhalt aller angeschlossenen iPods zu laden. Für jeden iPod " "muss ein separates Verzeichnis existieren." -#: ../data/gtkpod.glade.h:339 +#: ../data/gtkpod.glade.h:327 +#, fuzzy +msgid "Undo _Track" +msgstr "_Stück rückgängig" + +#: ../data/gtkpod.glade.h:328 msgid "Update _mserv Data from File" msgstr "_mserv-Daten aktualisieren" -#: ../data/gtkpod.glade.h:340 +#: ../data/gtkpod.glade.h:329 msgid "Update/Sync all playlists now" msgstr "Aktualisierung/Abgleich aller Wiedergabelisten jetzt" -#: ../data/gtkpod.glade.h:341 +#: ../data/gtkpod.glade.h:330 msgid "Update/Sync playlist now" msgstr "Aktualisierung/Abgleich der Wiedergabeliste jetzt" -#: ../data/gtkpod.glade.h:342 +#: ../data/gtkpod.glade.h:331 msgid "Upper margin" msgstr "Obere Grenze" -#: ../data/gtkpod.glade.h:343 +#: ../data/gtkpod.glade.h:332 msgid "Use 'Multi-Edit' also for title field" msgstr "'Multi-Edit' auch für das Titel-Feld verwenden" -#: ../data/gtkpod.glade.h:344 +#: ../data/gtkpod.glade.h:333 msgid "Use 'Multi-Edit' for tracks selections" msgstr "'Multi-Edit' bei markierten Stücken verwenden" -#: ../data/gtkpod.glade.h:345 +#: ../data/gtkpod.glade.h:334 #, fuzzy msgid "Use <i><Album>.jpg</i> in the parent directory" msgstr "Benutze <i><Album>.jpg</i> im übergeordneten Verzeichnis" -#: ../data/gtkpod.glade.h:346 +#: ../data/gtkpod.glade.h:335 #, fuzzy msgid "Use <i><Album>.jpg</i>, <i><Album>.png</i>..." msgstr "Benutze <i><Album>.jpg</i>, <i><Album>.png</i>..." -#: ../data/gtkpod.glade.h:347 +#: ../data/gtkpod.glade.h:336 msgid "Use <i>folder.jpg</i> as cover art." msgstr "Benutze <i>folder.jpg</i> als Cover-Bild" -#: ../data/gtkpod.glade.h:348 +#: ../data/gtkpod.glade.h:337 msgid "Use <i>folder.jpg</i>, <i>folder.png</i>..." msgstr "Benutze <i>folder.jpg</i>, <i>folder.png</i>..." -#: ../data/gtkpod.glade.h:349 +#: ../data/gtkpod.glade.h:338 msgid "Use mserv database to fill additional information" msgstr "Benutze die mserv Datenbank für zusätzliche Informationen" -#: ../data/gtkpod.glade.h:350 +#: ../data/gtkpod.glade.h:339 msgid "" "Use selected charset (Preferences/'Adding/Updating/ Syncing')\n" "for this filename." @@ -1668,7 +1655,7 @@ "Gewählten Zeichensatz (Einstellungen/'Hinzufügen/Aktualisieren/Abgleichen')\n" "für diesen Dateinamen verwenden." -#: ../data/gtkpod.glade.h:352 +#: ../data/gtkpod.glade.h:341 msgid "" "Use selected encoding (on the 'General' page)\n" "when writing tags" @@ -1676,28 +1663,28 @@ "Ausgewählte Kodierung (auf der Allgemein-Seite)\n" "beim Schreiben von ID3-Tags verwenden" -#: ../data/gtkpod.glade.h:354 +#: ../data/gtkpod.glade.h:343 #, fuzzy msgid "Use selected encoding also when updating or syncing tracks" msgstr "" "Gewählte Kodierung auch verwenden, wenn Stücke aktualisiert oder abgeglichen " "werden" -#: ../data/gtkpod.glade.h:355 +#: ../data/gtkpod.glade.h:344 msgid "Use this template to parse filename for tag information:" msgstr "" "Diese Schablone verwenden, um aus dem Dateinamen die Tags zu bestimmen:" -#: ../data/gtkpod.glade.h:356 +#: ../data/gtkpod.glade.h:345 msgid "Username to be used for mserv database lookup." msgstr "" "Benutzername, der zum Nachschlagen in der mserv Datenbank verwendet wird." -#: ../data/gtkpod.glade.h:357 +#: ../data/gtkpod.glade.h:346 msgid "Username:" msgstr "Benutzername:" -#: ../data/gtkpod.glade.h:358 +#: ../data/gtkpod.glade.h:347 msgid "" "Usually you don't want to set the title of several tracks to the same text. " "This option might avoid unwanted results (especially since there is no " @@ -1707,11 +1694,11 @@ "gesetzt werden sollen. Diese Option verhindert möglicherweise unerwünschte " "Resultate, insbesondere da noch keine 'Rückgängig'-Funktion existiert." -#: ../data/gtkpod.glade.h:359 +#: ../data/gtkpod.glade.h:348 msgid "WAV with :" msgstr "" -#: ../data/gtkpod.glade.h:360 +#: ../data/gtkpod.glade.h:349 msgid "" "When adding dirs/files, update information of\n" "existing tracks with identical filenames" @@ -1719,7 +1706,7 @@ "Beim Hinzufügen von Stücken bereits eingeleseneStücke mit demselben " "Dateinamen aktualisieren." -#: ../data/gtkpod.glade.h:362 +#: ../data/gtkpod.glade.h:351 msgid "" "When copying from iPod no check is performed on whether the destination file " "exists. Enabling this option will make gtkpod check whether the length of " @@ -1733,11 +1720,11 @@ "es, einen schnellen Abgleich der Daten auf Ihrer Festplatte mit denen des " "iPods vorzunehmen." -#: ../data/gtkpod.glade.h:363 +#: ../data/gtkpod.glade.h:352 msgid "When syncing playlists" msgstr "Beim Abgleich von Wiedergabelisten" -#: ../data/gtkpod.glade.h:364 +#: ../data/gtkpod.glade.h:353 msgid "" "Will show a list of tracks removed and a list of tracks newly added or " "updated." @@ -1745,17 +1732,17 @@ "Zeigt eine Liste von gelöschten, neu hinzugefügten oder aktualisierten " "Stücken." -#: ../data/gtkpod.glade.h:365 +#: ../data/gtkpod.glade.h:354 msgid "Write ID3 tags to disk when modified in gtkpod" msgstr "" "ID3 Tags bei Änderungen in gtkpod ebenfalls auf\n" "der Festplatte und auf dem iPod ändern" -#: ../data/gtkpod.glade.h:366 +#: ../data/gtkpod.glade.h:355 msgid "Write all changes made to the disk and the iPod(s)." msgstr "Alle Änderungen auf Festplatte und iPod(s) sichern." -#: ../data/gtkpod.glade.h:367 +#: ../data/gtkpod.glade.h:356 #, fuzzy msgid "" "Write extended information (PC filenames, SHA1 hashes,\n" @@ -1764,7 +1751,7 @@ "Erweiterte Informationen schreiben (PC Dateinamen, MD5-Prüfsummen, " "Kodierung). Empfohlen." -#: ../data/gtkpod.glade.h:369 +#: ../data/gtkpod.glade.h:358 msgid "" "You can also use the table headers, but this allows you to sort according to " "a column that is not displayed." @@ -1772,205 +1759,206 @@ "Sie können auch die Spaltenköpfe anklicken, aber diese Option ermöglicht es " "auch nach Spalten zu sortieren, die nicht angezeigt werden." -#: ../data/gtkpod.glade.h:370 +#: ../data/gtkpod.glade.h:359 msgid "_About" msgstr "_Über" -#: ../data/gtkpod.glade.h:371 +#: ../data/gtkpod.glade.h:360 msgid "_All Tracks" msgstr "_Alle Stücke" -#: ../data/gtkpod.glade.h:372 +#: ../data/gtkpod.glade.h:361 msgid "_Arrange Sort Tabs" msgstr "_Ordne Sortierungseinträge" -#: ../data/gtkpod.glade.h:373 +#: ../data/gtkpod.glade.h:362 msgid "_Check iPod's Files" msgstr "_Überprüfe iPod Dateien" -#: ../data/gtkpod.glade.h:374 +#: ../data/gtkpod.glade.h:363 msgid "_Conversion Log" msgstr "" -#: ../data/gtkpod.glade.h:375 +#: ../data/gtkpod.glade.h:364 msgid "_Create Playlists" msgstr "_Erstelle Wiedergabelisten" -#: ../data/gtkpod.glade.h:376 +#: ../data/gtkpod.glade.h:365 msgid "_Create iPod's Directories" msgstr "_iPod-Verzeichnis(se) erstellen" -#: ../data/gtkpod.glade.h:377 +#: ../data/gtkpod.glade.h:366 msgid "_Delete" msgstr "_Löschen" -#: ../data/gtkpod.glade.h:378 +#: ../data/gtkpod.glade.h:367 msgid "_Display" msgstr "_Anzeige" -#: ../data/gtkpod.glade.h:379 +#: ../data/gtkpod.glade.h:368 msgid "_Displayed Tracks" msgstr "_Angezeigte Stücke" -#: ../data/gtkpod.glade.h:380 +#: ../data/gtkpod.glade.h:369 msgid "_Edit" msgstr "_Bearbeiten" -#: ../data/gtkpod.glade.h:381 +#: ../data/gtkpod.glade.h:370 msgid "_Encoding (ID3, files):" msgstr "Kodi_erung (ID3, Dateien):" -#: ../data/gtkpod.glade.h:382 +#: ../data/gtkpod.glade.h:371 msgid "_Enqueue" msgstr "_Vormerken zum Abspielen" -#: ../data/gtkpod.glade.h:383 +#: ../data/gtkpod.glade.h:372 msgid "_Export Tracks from Database" msgstr "E_xport aus der Datenbank" -#: ../data/gtkpod.glade.h:384 +#: ../data/gtkpod.glade.h:373 msgid "_File" msgstr "_Datei" -#: ../data/gtkpod.glade.h:385 -msgid "_Find New" -msgstr "" - -#: ../data/gtkpod.glade.h:386 +#: ../data/gtkpod.glade.h:374 msgid "_General" msgstr "All_gemein" -#: ../data/gtkpod.glade.h:387 +#: ../data/gtkpod.glade.h:375 msgid "_Help" msgstr "_Hilfe" -#: ../data/gtkpod.glade.h:388 +#: ../data/gtkpod.glade.h:376 msgid "_Ignore rules" msgstr "_Ignoriere die Regeln" -#: ../data/gtkpod.glade.h:389 +#: ../data/gtkpod.glade.h:377 msgid "_Info Window" msgstr "Info _Fenster" -#: ../data/gtkpod.glade.h:390 +#: ../data/gtkpod.glade.h:378 msgid "_Last.FM" msgstr "" -#: ../data/gtkpod.glade.h:391 +#: ../data/gtkpod.glade.h:379 msgid "_Less Sort Tabs" msgstr "_Weniger Sortierungseinträge" -#: ../data/gtkpod.glade.h:392 +#: ../data/gtkpod.glade.h:380 msgid "_Limit to" msgstr "_Begrenzen auf" -#: ../data/gtkpod.glade.h:393 +#: ../data/gtkpod.glade.h:381 msgid "_Load iPod(s)" msgstr "i_Pod(s) einlesen" -#: ../data/gtkpod.glade.h:394 +#: ../data/gtkpod.glade.h:382 msgid "_Local" msgstr "_Lokal" -#: ../data/gtkpod.glade.h:395 +#: ../data/gtkpod.glade.h:383 msgid "_M3U" msgstr "_M3U" -#: ../data/gtkpod.glade.h:396 +#: ../data/gtkpod.glade.h:384 +msgid "_Misc." +msgstr "" + +#: ../data/gtkpod.glade.h:385 msgid "_More Sort Tabs" msgstr "_Mehr Sortierungseinträge" -#: ../data/gtkpod.glade.h:397 +#: ../data/gtkpod.glade.h:386 msgid "_Newly Added Tracks" msgstr "_Neu hinzugefügte Stücke" -#: ../data/gtkpod.glade.h:398 +#: ../data/gtkpod.glade.h:387 msgid "_Normalize Volume" msgstr "_Lautstärke normalisieren" -#: ../data/gtkpod.glade.h:399 +#: ../data/gtkpod.glade.h:388 msgid "_Number of sort tabs:" msgstr "A_nzahl der Sortierungseinträge:" -#: ../data/gtkpod.glade.h:400 -msgid "_Other" -msgstr "S_onstiges" - -#: ../data/gtkpod.glade.h:401 +#: ../data/gtkpod.glade.h:389 msgid "_PLS" msgstr "_PLS" -#: ../data/gtkpod.glade.h:402 +#: ../data/gtkpod.glade.h:390 msgid "_Play Now" msgstr "_Jetzt abspielen" -#: ../data/gtkpod.glade.h:403 +#: ../data/gtkpod.glade.h:391 msgid "_Podcasts" msgstr "_Podcasts" -#: ../data/gtkpod.glade.h:404 +#: ../data/gtkpod.glade.h:392 msgid "_Prefer Local" msgstr "_Bevorzuge lokal" -#: ../data/gtkpod.glade.h:405 +#: ../data/gtkpod.glade.h:393 +msgid "_Previous" +msgstr "" + +#: ../data/gtkpod.glade.h:394 +#, fuzzy +msgid "_Remove Cover Art" +msgstr "Cover-Bild entfernen" + +#: ../data/gtkpod.glade.h:395 msgid "_Save Changes" msgstr "_Änderungen sichern" -#: ../data/gtkpod.glade.h:406 +#: ../data/gtkpod.glade.h:396 msgid "_Save Displayed Track Order" msgstr "_Reihenfolge der angezeigten Stücke speichern" -#: ../data/gtkpod.glade.h:407 +#: ../data/gtkpod.glade.h:397 msgid "_Sorting" msgstr "_Sortierung" -#: ../data/gtkpod.glade.h:408 +#: ../data/gtkpod.glade.h:398 #, fuzzy msgid "_Synchronize Playlist with Dir(s)" msgstr "Wiedergabeliste mit Verzeichnis(sen) abgleichen" -#: ../data/gtkpod.glade.h:409 +#: ../data/gtkpod.glade.h:399 msgid "_Toolbar" msgstr "Werkzeug_leiste" -#: ../data/gtkpod.glade.h:410 +#: ../data/gtkpod.glade.h:400 msgid "_Tools" msgstr "_Werkzeuge" -#: ../data/gtkpod.glade.h:411 +#: ../data/gtkpod.glade.h:401 msgid "_Tooltips" msgstr "Werkzeug_tipps" -#: ../data/gtkpod.glade.h:412 +#: ../data/gtkpod.glade.h:402 msgid "_Track Info" msgstr "_Meta-Infos" -#: ../data/gtkpod.glade.h:413 +#: ../data/gtkpod.glade.h:403 msgid "_Undo All" msgstr "_Alles rückgängig" -#: ../data/gtkpod.glade.h:414 -msgid "_Undo Track" -msgstr "_Stück rückgängig" - -#: ../data/gtkpod.glade.h:415 +#: ../data/gtkpod.glade.h:404 msgid "_Update Tracks from File" msgstr "_Stücke aus Datei aktualisieren" -#: ../data/gtkpod.glade.h:416 +#: ../data/gtkpod.glade.h:405 #, fuzzy msgid "_Video" msgstr "_Ansicht" -#: ../data/gtkpod.glade.h:417 +#: ../data/gtkpod.glade.h:406 msgid "_View" msgstr "_Ansicht" -#: ../data/gtkpod.glade.h:418 +#: ../data/gtkpod.glade.h:407 msgid "_iPod" msgstr "_iPod" -#: ../data/gtkpod.glade.h:420 +#: ../data/gtkpod.glade.h:409 #, no-c-format msgid "" "artist: %a, album: %A, composer: %c, title: %t, genre: %G, track nr: %T, CD " @@ -1984,28 +1972,28 @@ "die auf den Filenamen passt, wird verwendet. Beispiel: '%a - %A/%T %t.mp3;%t." "wav'." -#: ../data/gtkpod.glade.h:421 +#: ../data/gtkpod.glade.h:410 msgid "folder" msgstr "Mappe" -#: ../data/gtkpod.glade.h:422 +#: ../data/gtkpod.glade.h:411 msgid "folder.jpg" msgstr "folder.jpg" -#: ../data/gtkpod.glade.h:424 +#: ../data/gtkpod.glade.h:413 #, no-c-format msgid "folder.jpg;%a.jpg" msgstr "folder.jpg;%a.jpg" -#: ../data/gtkpod.glade.h:425 +#: ../data/gtkpod.glade.h:414 msgid "gtkpod" msgstr "gtkpod" -#: ../data/gtkpod.glade.h:426 +#: ../data/gtkpod.glade.h:415 msgid "gtkpod Info" msgstr "gtkpod Info" -#: ../data/gtkpod.glade.h:427 +#: ../data/gtkpod.glade.h:416 msgid "" "gtkpod expects the ID3 tags and the filenames to be in the encoding " "specified here. You can change it for consecutive 'Add Files' and 'Add Dirs' " @@ -2017,12 +2005,12 @@ "werden. 'Systemzeichensatz' bezeichnet die Standardkodierung der benutzten " "Sprache." -#: ../data/gtkpod.glade.h:428 +#: ../data/gtkpod.glade.h:417 msgid "gtkpod options" msgstr "gtkpod Optionen" #. These are the items for the 'Repository type' combo in the 'Create Repository' dialog. Keep the three items in order! -#: ../data/gtkpod.glade.h:430 +#: ../data/gtkpod.glade.h:419 msgid "" "iPod\n" "Local Repository (Standard)\n" @@ -2032,32 +2020,32 @@ "Lokale Datenbank (Standard)\n" "Lokale Datenbank (Podcasts)\n" -#: ../data/gtkpod.glade.h:434 +#: ../data/gtkpod.glade.h:423 msgid "iPod mountpoint:" msgstr "iPod Einhängepunkt:" -#: ../data/gtkpod.glade.h:435 +#: ../data/gtkpod.glade.h:424 msgid "iTunesDB backup:" msgstr "Sicherung iTunes DB:" -#: ../data/gtkpod.glade.h:436 +#: ../data/gtkpod.glade.h:425 #, fuzzy msgid "label" msgstr "label21" -#: ../data/gtkpod.glade.h:437 +#: ../data/gtkpod.glade.h:426 msgid "mserv Root:" msgstr "mserv Stammverzeichnis:" -#: ../data/gtkpod.glade.h:438 +#: ../data/gtkpod.glade.h:427 msgid "mserv database lookup will be done for music in this directory." msgstr "Die mserv Datenbank wird für Stücke in diesem Verzeichnis verwendet." -#: ../data/gtkpod.glade.h:439 ../src/details.c:1175 +#: ../data/gtkpod.glade.h:428 ../src/details.c:1325 msgid "n/a" msgstr "---" -#: ../data/gtkpod.glade.h:440 +#: ../data/gtkpod.glade.h:429 msgid "special_sorttab -- Don't translate!" msgstr "special_sorttab -- Don't translate!\"" @@ -2267,6 +2255,22 @@ msgid "System Charset" msgstr "System-Zeichensatz" +#: ../src/autodetection.c:310 +msgid "Could not initialize GnomeVFS\n" +msgstr "" + +#: ../src/autodetection.c:395 +#, c-format +msgid "" +"Newly mounted iPod at '%s' appearss to be already loaded!\n" +"\n" +msgstr "" + +#: ../src/autodetection.c:407 +#, fuzzy +msgid "New iPod" +msgstr "Neue Wiedergabeliste" + #. we are not the first instance of gtkpod -- the socket is #. already being used, so we pass #: ../src/clientserver.c:214 @@ -2429,12 +2433,60 @@ msgid "Date format error: unrecognized character: '%s'\n" msgstr "Formatfehler Datum: unbekanntes Zeichen: '%s'\n" -#: ../src/details.c:700 +#: ../src/details.c:81 +#, fuzzy +msgid "Audio/Video" +msgstr "Stammverzeichnis für Musik:" + +#: ../src/details.c:82 +msgid "Audio" +msgstr "" + +#: ../src/details.c:83 +#, fuzzy +msgid "Video" +msgstr "_Ansicht" + +#: ../src/details.c:84 +#, fuzzy +msgid "Podcast" +msgstr "Podcasts" + +#: ../src/details.c:85 +#, fuzzy +msgid "Video Podcast" +msgstr "Podcasts" + +#: ../src/details.c:86 +msgid "Audiobook" +msgstr "" + +#: ../src/details.c:87 ../src/display_spl.c:209 ../src/display_spl.c:218 +#, fuzzy +msgid "Music Video" +msgstr "Stammverzeichnis für Musik:" + +#: ../src/details.c:88 ../src/display_spl.c:107 ../src/display_spl.c:210 +#: ../src/display_spl.c:219 ../src/misc_conversion.c:101 +msgid "TV Show" +msgstr "" + +#: ../src/details.c:89 +#, fuzzy +msgid "TV Show & Music Video" +msgstr "Stammverzeichnis für Musik:" + +#: ../src/details.c:826 #, c-format msgid "%s (image data corrupted or unreadable)" msgstr "" -#: ../src/details.c:1246 +#: ../src/details.c:963 +#, c-format +msgid "Please report unknown mediatype %x\n" +msgstr "" + +#: ../src/details.c:1396 msgid "<b>n/a</b>" msgstr "<b>---</b>" @@ -2443,7 +2495,7 @@ msgstr "Markierten Begriff aus welchem Sortierungseintrag editieren?" #. no entry selected -#: ../src/display.c:654 ../src/misc_confirm.c:435 ../src/misc_track.c:2059 +#: ../src/display.c:654 ../src/misc_confirm.c:435 ../src/misc_track.c:2128 msgid "No entry selected." msgstr "Kein Eintrag ausgewählt." @@ -2507,7 +2559,7 @@ msgid "Normalize tracks in selected entry of which sort tab?" msgstr "Stücke aus welchem Sortierungseintrag normalisieren?" -#: ../src/display_coverart.c:1714 +#: ../src/display_coverart.c:1731 msgid "Failed to remove the album from the album hash store." msgstr "" @@ -2516,44 +2568,44 @@ msgid "Failed to set cover art: '%s'\n" msgstr "Konnte Cover-Bild nicht einfügen: '%s'\n" -#: ../src/display_itdb.c:851 ../src/display_itdb.c:984 +#: ../src/display_itdb.c:858 ../src/display_itdb.c:991 msgid "Local" msgstr "Lokal" #. add podcast playlist -#: ../src/display_itdb.c:859 ../src/display_itdb.c:982 -#: ../src/display_itdb.c:1010 +#: ../src/display_itdb.c:866 ../src/display_itdb.c:989 +#: ../src/display_itdb.c:1017 msgid "Podcasts" msgstr "Podcasts" -#: ../src/display_itdb.c:868 ../src/display_itdb.c:986 +#: ../src/display_itdb.c:875 ../src/display_itdb.c:993 #: ../src/repository.c:1186 msgid "iPod" msgstr "iPod" -#: ../src/display_itdb.c:1069 +#: ../src/display_itdb.c:1076 #, c-... [truncated message content] |
From: <pha...@us...> - 2007-06-27 22:19:27
|
Revision: 1607 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1607&view=rev Author: phantom_sf Date: 2007-06-27 15:19:28 -0700 (Wed, 27 Jun 2007) Log Message: ----------- 2007-06-27 P.G. Richardson <phantom_sf at users.sourceforge.net> * gtkpod.glade: Changed fetchcover dialog's buttons to display icons only. * fetchcover.c: Added in gettext macros for status messages. Disabled next button if net_retrieve fails to get any images from the downloaded xml file (Thanks Daniele). Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/data/gtkpod.glade gtkpod/trunk/src/fetchcover.c Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-06-27 20:27:57 UTC (rev 1606) +++ gtkpod/trunk/ChangeLog_detailed 2007-06-27 22:19:28 UTC (rev 1607) @@ -1,3 +1,13 @@ +2007-06-27 P.G. Richardson <phantom_sf at users.sourceforge.net> + + * gtkpod.glade: + Changed fetchcover dialog's buttons to display icons only. + + * fetchcover.c: + Added in gettext macros for status messages. + Disabled next button if net_retrieve fails to get any images + from the downloaded xml file (Thanks Daniele). + 2007-06-27 Todd Zullinger <tmzullinger at users.sourceforge.net> * po/es.po Modified: gtkpod/trunk/data/gtkpod.glade =================================================================== --- gtkpod/trunk/data/gtkpod.glade 2007-06-27 20:27:57 UTC (rev 1606) +++ gtkpod/trunk/data/gtkpod.glade 2007-06-27 22:19:28 UTC (rev 1607) @@ -20174,10 +20174,21 @@ <widget class="GtkButton" id="next_button"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Find _New</property> - <property name="use_underline">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> + + <child> + <widget class="GtkImage" id="image4015"> + <property name="width_request">60</property> + <property name="visible">True</property> + <property name="stock">gtk-network</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + </child> </widget> <packing> <property name="padding">0</property> @@ -20190,10 +20201,73 @@ <widget class="GtkButton" id="prev_button"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">_Previous</property> - <property name="use_underline">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> + + <child> + <widget class="GtkAlignment" id="alignment15"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkHBox" id="hbox213"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image4016"> + <property name="width_request">60</property> + <property name="visible">True</property> + <property name="stock">gtk-go-back</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label466"> + <property name="visible">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> </widget> <packing> <property name="padding">0</property> Modified: gtkpod/trunk/src/fetchcover.c =================================================================== --- gtkpod/trunk/src/fetchcover.c 2007-06-27 20:27:57 UTC (rev 1606) +++ gtkpod/trunk/src/fetchcover.c 2007-06-27 22:19:28 UTC (rev 1607) @@ -1,42 +1,42 @@ -/* -| Copyright (C) 2007 P.G. Richardson <phantom_sf at users.sourceforge.net> -| Part of the gtkpod project. -| -| URL: http://www.gtkpod.org/ -| URL: http://gtkpod.sourceforge.net/ -| -| 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; either version 2 of the License, or -| (at your option) any later version. -| -| 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, write to the Free Software -| Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -| -| iTunes and iPod are trademarks of Apple -| -| This product is not supported/written/published by Apple! -| -| $Id$ -*/ - + /* + | Copyright (C) 2007 P.G. Richardson <phantom_sf at users.sourceforge.net> + | Part of the gtkpod project. + | + | URL: http://www.gtkpod.org/ + | URL: http://gtkpod.sourceforge.net/ + | + | 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; either version 2 of the License, or + | (at your option) any later version. + | + | 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, write to the Free Software + | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + | + | iTunes and iPod are trademarks of Apple + | + | This product is not supported/written/published by Apple! + | + | $Id$ + */ + #ifdef HAVE_CONFIG_H -# include <config.h> + #include <config.h> #endif - + #include "fetchcover.h" #include "display_coverart.h" #include <glib/gprintf.h> #include <glib/gstdio.h> - + #undef FETCHCOVER_DEBUG - + static void fetchcover_statusbar_update (gchar *message); static GtkDialog *fetchcover_display_dialog (Track *track, Itdb_Device *device, GtkWindow *parent); static void fetchcover_debug(const gchar *format, ...); @@ -48,7 +48,7 @@ gchar *dir; gchar *filename; } Fetch_Cover; - + /* Track to search for a cover for */ static Track *fetchcover_track = NULL; /* List of possible covers, including existing one (maybe default cover) */ @@ -68,555 +68,564 @@ static GtkWidget *fetchcover_statusbar; /* Flag indicating whether a new net search should be initiated */ static gboolean netsearched = FALSE; - + #define IMGSCALE 256 - + #ifdef HAVE_CURL - -#include <curl/curl.h> - -/* Declarations */ -static void free_fetchcover_list(); -static void *safe_realloc(void *ptr, size_t size); -static size_t curl_write_fetchcover_func(void *ptr, size_t itemsize, size_t numitems, void *data); -static void net_search_track (); -static void net_retrieve_image (GString *url); -static void fetchcover_next_button_clicked (GtkWidget *widget, gpointer data); -static void fetchcover_prev_button_clicked (GtkWidget *widget, gpointer data); -static void fetchcover_cleanup(); -static gchar *fetchcover_save (GtkWindow *parent); -/* Display a dialog explaining the options if a file with the proposed name already exists */ -static gchar *display_file_exist_dialog (gchar *filename, GtkWindow *parent); - -struct chunk -{ - gchar *memory; - size_t size; -}; - -/* Data structure for use with curl */ -struct chunk fetchcover_curl_data; - -/** - * safe_realloc: - * - * @void: ptr - * @size_t: size - * - * Memory allocation function - */ -static void *safe_realloc(void *ptr, size_t size) -{ - if (ptr) - return realloc(ptr, size); - else - return malloc(size); -} - -/** - * - * curl_write_fetchcover_func: - * - * @void: *ptr - * @size_t: itemsize - * @size_t:numitems - * @void: *data - * - * Curl writing function - * - * @Return size_t - */ -static size_t curl_write_fetchcover_func(void *ptr, size_t itemsize, size_t numitems, void *data) -{ - size_t size = itemsize * numitems; - struct chunk *mem = (struct chunk*)data; - mem->memory = (gchar*)safe_realloc(mem->memory, mem->size + size + 1); - if (mem->memory) - { - memcpy(&(mem->memory[mem->size]), ptr, size); - mem->size += size; - mem->memory[mem->size] = 0; - } - return size; -} - -/** - * net_search_track: - * - * Use Amazon to locate an XML file containing links to - * cover pictures consistent with track artist and album - */ -static void net_search_track () -{ - /* This key for Amazon web services belongs to Charlie Head */ - const gchar amazonkey[21] = "10K4YZTZFS562NG7EZR2"; - - /* possible internationalization: support - * different tld's (ja, fr, ca, etc.) - Amarok does this. - * we assume a lot here.. may not work - * for some international artists? --chead - */ - - /* Create the url string and insert the artist and album */ - GString *url = g_string_new (NULL); - g_string_printf(url, - "http://xml.amazon.com/onca/xml3?t=webservices-20&dev-t=%s&KeywordSearch=%s+%s&mode=music&type=lite&locale=us&page=1&f=xml", - amazonkey, fetchcover_track->artist, fetchcover_track->album); + #include <curl/curl.h> - /* Replace any spaces in the url string with +s instead */ - gint i; - for (i = 0; i < url->len; i++) + /* Declarations */ + static void free_fetchcover_list(); + static void *safe_realloc(void *ptr, size_t size); + static size_t curl_write_fetchcover_func(void *ptr, size_t itemsize, size_t numitems, void *data); + static void net_search_track (); + static void net_retrieve_image (GString *url); + static void fetchcover_next_button_clicked (GtkWidget *widget, gpointer data); + static void fetchcover_prev_button_clicked (GtkWidget *widget, gpointer data); + static void fetchcover_cleanup(); + static gchar *fetchcover_save (GtkWindow *parent); + /* Display a dialog explaining the options if a file with the proposed name already exists */ + static gchar *display_file_exist_dialog (gchar *filename, GtkWindow *parent); + + struct chunk { - if (url->str[i] == ' ') - url->str[i] = '+'; - } - - fetchcover_debug("fetchcover_next: amazon xml url: %s", url->str); + gchar *memory; + size_t size; + }; - fetchcover_curl_data.memory = NULL; - fetchcover_curl_data.size = 0; - - /* Use curl to perform the internet search */ - CURL *curl; - curl_global_init(CURL_GLOBAL_ALL); - curl = curl_easy_init(); - curl_easy_setopt(curl, CURLOPT_URL, url->str); - curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_write_fetchcover_func); - curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*) &fetchcover_curl_data); - curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcurl-agent/1.0"); - curl_easy_perform(curl); - curl_easy_cleanup(curl); - g_string_free(url, TRUE); + /* Data structure for use with curl */ + struct chunk fetchcover_curl_data; - /* Check whether curl received some hits. - * If not return + /** + * safe_realloc: + * + * @void: ptr + * @size_t: size + * + * Memory allocation function */ - if (!fetchcover_curl_data.memory || fetchcover_curl_data.size <= 0) + static void *safe_realloc(void *ptr, size_t size) { - fetchcover_statusbar_update ("Failed to find any covers for track"); - if (fetchcover_curl_data.memory) - { - g_free(fetchcover_curl_data.memory); - fetchcover_curl_data.memory = NULL; - fetchcover_curl_data.size = 0; - } - return; + if (ptr) + return realloc(ptr, size); + else + return malloc(size); } - /* Curl net search successful so process the results */ - xmlDocPtr doc; - xmlNodePtr cur; - xmlChar *key; - - /* Process the data by parsing the XML and return if cannot parse */ - if ((doc = xmlReadMemory(fetchcover_curl_data.memory, fetchcover_curl_data.size, "amazon.xml", NULL, 0)) == NULL) + /** + * + * curl_write_fetchcover_func: + * + * @void: *ptr + * @size_t: itemsize + * @size_t:numitems + * @void: *data + * + * Curl writing function + * + * @Return size_t + */ + static size_t curl_write_fetchcover_func(void *ptr, size_t itemsize, size_t numitems, void *data) { - fetchcover_statusbar_update ("Parsing failure on processing of possible track covers"); - if (fetchcover_curl_data.memory) + size_t size = itemsize * numitems; + struct chunk *mem = (struct chunk*)data; + mem->memory = (gchar*)safe_realloc(mem->memory, mem->size + size + 1); + + if (mem->memory) { - g_free(fetchcover_curl_data.memory); - fetchcover_curl_data.memory = NULL; - fetchcover_curl_data.size = 0; + memcpy(&(mem->memory[mem->size]), ptr, size); + mem->size += size; + mem->memory[mem->size] = 0; } - return; + return size; } - - /* XML parsed ok so try and get the root element */ - if ((cur = xmlDocGetRootElement(doc)) == NULL) - { - fetchcover_statusbar_update ("Downloaded XML file appears to be empty. No covers found for track"); - xmlFreeDoc(doc); - if (fetchcover_curl_data.memory) - { - g_free(fetchcover_curl_data.memory); - fetchcover_curl_data.memory = NULL; - fetchcover_curl_data.size = 0; - } - return; - } - - /* Wind down through the XML nodes to obtain the urls - * to the returned album covers + + /** + * net_search_track: + * + * Use Amazon to locate an XML file containing links to + * cover pictures consistent with track artist and album */ - Fetch_Cover *fcover; - cur = cur->xmlChildrenNode; - while (cur != NULL) - { - if ((!xmlStrcmp(cur->name, (const xmlChar*)"Details"))) + static void net_search_track () + { + /* This key for Amazon web services belongs to Charlie Head */ + const gchar amazonkey[21] = "10K4YZTZFS562NG7EZR2"; + + /* possible internationalization: support + * different tld's (ja, fr, ca, etc.) - Amarok does this. + * we assume a lot here.. may not work + * for some international artists? --chead + */ + + /* Create the url string and insert the artist and album */ + GString *url = g_string_new (NULL); + g_string_printf(url, + "http://xml.amazon.com/onca/xml3?t=webservices-20&dev-t=%s&KeywordSearch=%s+%s&mode=music&type=lite&locale=us&page=1&f=xml", + amazonkey, fetchcover_track->artist, fetchcover_track->album); + + /* Replace any spaces in the url string with +s instead */ + gint i; + for (i = 0; i < url->len; i++) { - xmlNodePtr details = cur->xmlChildrenNode; - while (details != NULL) - { - if ((!xmlStrcmp(details->name, (const xmlChar*)"ImageUrlLarge"))) - { - key = xmlNodeListGetString (doc, details->xmlChildrenNode, 1); - /* Create a fetchcover object and then add it to the list */ - fcover = g_new0(Fetch_Cover, 1); - fcover->url = g_string_new ((gchar*) key); - fcover->image = NULL; - - fetchcover_image_list = g_list_append (fetchcover_image_list, fcover); - xmlFree(key); - } - details = details->next; - } + if (url->str[i] == ' ') + url->str[i] = '+'; } - cur = cur->next; - } + + fetchcover_debug("fetchcover_next: amazon xml url: %s", url->str); - xmlFreeDoc(doc); - - /* Clean up the curl data */ - if (fetchcover_curl_data.memory) - { - g_free(fetchcover_curl_data.memory); fetchcover_curl_data.memory = NULL; fetchcover_curl_data.size = 0; - } - - /* Check whether the XML served up any cover images */ - if (g_list_length (fetchcover_image_list) == 1) - { - fetchcover_debug("fetchcover_next: no covers found\n"); - fetchcover_statusbar_update ("No cover images were found for this album."); - } - else - { - fetchcover_debug("fetchcover_next: successfully recovered covers\n"); - gchar *buf; - buf = g_strdup_printf ("Found potentially %d covers. (Some covers may be blank)", g_list_length (fetchcover_image_list) - 1); - fetchcover_statusbar_update (buf); - g_free (buf); - } - return; -} - -/** - * net_retrieve_image: - * - * @GString: url - * - * Use the url acquired from the net search to fetch the image, - * save it to a file inside the track's parent directory then display - * it as a pixbuf - */ -static void net_retrieve_image (GString *url) -{ - gchar *path = NULL; - - fetchcover_debug("fetchcover_next: net_retrieve_image from: %s\n", url->str); - - fetchcover_curl_data.size = 0; - fetchcover_curl_data.memory = NULL; - - /* Use curl to retrieve the data from the net */ - CURL *curl; - curl_global_init(CURL_GLOBAL_ALL); - curl = curl_easy_init(); - curl_easy_setopt(curl, CURLOPT_URL, url->str); - curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_write_fetchcover_func); - curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&fetchcover_curl_data); - curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcurl-agent/1.0"); - curl_easy_perform(curl); - curl_easy_cleanup(curl); - - g_return_if_fail(fetchcover_curl_data.memory); - - /* Check that the page returned is a valid web page */ - if (strstr(fetchcover_curl_data.memory, "<html>") != NULL) - { - fetchcover_statusbar_update ("Image appears to no longer exist at http location"); - fetchcover_debug("fetchcover_next: http error (probably 404 or server error\n"); - return; - } - - FILE *tmpf = NULL; - ExtraTrackData *etd = fetchcover_track->userdata; - g_return_if_fail(etd); - - gchar *dir = g_path_get_dirname(etd->pc_path_utf8); - gchar *template = prefs_get_string("coverart_template"); - gchar **template_items = g_strsplit(template, ";", 0); - - gint i; - gchar *filename = NULL; - - for (i = 0; filename == NULL && i < g_strv_length (template_items); ++i) - { - filename = get_string_from_template(fetchcover_track, template_items[i], FALSE, FALSE); - if (strlen(filename) == 0) - filename = NULL; - } - - /* Check filename still equals null then take a default stance - * to ensure the file has a name. - */ - if (filename == NULL) - filename = "folder.jpg"; + /* Use curl to perform the internet search */ + CURL *curl; + curl_global_init(CURL_GLOBAL_ALL); + curl = curl_easy_init(); + curl_easy_setopt(curl, CURLOPT_URL, url->str); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_write_fetchcover_func); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*) &fetchcover_curl_data); + curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcurl-agent/1.0"); + curl_easy_perform(curl); + curl_easy_cleanup(curl); + g_string_free(url, TRUE); - /* Use the index position of the cover in the glist to create a unique filename - * Convert the index number to a string and prefix with a dot (hidden file) - */ - gint display_cover_index; - display_cover_index = g_list_index (fetchcover_image_list, displayed_cover); - gchar *dcstr_index = NULL; - dcstr_index = (gchar *) g_malloc (sizeof(gint) + (sizeof(gchar) * 3)); - g_sprintf (dcstr_index, ".%d_@_", display_cover_index); + /* Check whether curl received some hits. + * If not return + */ + if (!fetchcover_curl_data.memory || fetchcover_curl_data.size <= 0) + { + fetchcover_statusbar_update (_("Failed to find any covers for track")); + if (fetchcover_curl_data.memory) + { + g_free(fetchcover_curl_data.memory); + fetchcover_curl_data.memory = NULL; + fetchcover_curl_data.size = 0; + } + return; + } + + /* Curl net search successful so process the results */ + xmlDocPtr doc; + xmlNodePtr cur; + xmlChar *key; - gchar *fname = NULL; - if (g_str_has_suffix(filename, ".jpg")) - fname = g_strconcat(dcstr_index, filename, NULL); - else - fname = g_strconcat(dcstr_index, filename, ".jpg", NULL); + /* Process the data by parsing the XML and return if cannot parse */ + if ((doc = xmlReadMemory(fetchcover_curl_data.memory, fetchcover_curl_data.size, "amazon.xml", NULL, 0)) == NULL) + { + fetchcover_statusbar_update (_("Parsing failure on processing of possible track covers")); + if (fetchcover_curl_data.memory) + { + g_free(fetchcover_curl_data.memory); + fetchcover_curl_data.memory = NULL; + fetchcover_curl_data.size = 0; + } + return; + } - displayed_cover->dir = dir; - displayed_cover->filename = fname; - - fetchcover_debug("fetchcover_next: saving tmp cover image to %s / %s", displayed_cover->dir, displayed_cover->filename); + /* XML parsed ok so try and get the root element */ + if ((cur = xmlDocGetRootElement(doc)) == NULL) + { + fetchcover_statusbar_update (_("Downloaded XML file appears to be empty. No covers found for track")); + xmlFreeDoc(doc); + if (fetchcover_curl_data.memory) + { + g_free(fetchcover_curl_data.memory); + fetchcover_curl_data.memory = NULL; + fetchcover_curl_data.size = 0; + } + return; + } - path = g_build_filename(displayed_cover->dir, displayed_cover->filename, NULL); - if ((tmpf = fopen(path, "wb")) == NULL) - { - fetchcover_debug("fetchcover_next: fopen failed\n"); - fetchcover_statusbar_update ("Downloaded image cover failed to open"); - if (fetchcover_curl_data.memory) + /* Wind down through the XML nodes to obtain the urls + * to the returned album covers + */ + Fetch_Cover *fcover; + cur = cur->xmlChildrenNode; + while (cur != NULL) { - g_free(fetchcover_curl_data.memory); - fetchcover_curl_data.memory = NULL; - fetchcover_curl_data.size = 0; + if ((!xmlStrcmp(cur->name, (const xmlChar*)"Details"))) + { + xmlNodePtr details = cur->xmlChildrenNode; + while (details != NULL) + { + if ((!xmlStrcmp(details->name, (const xmlChar*)"ImageUrlLarge"))) + { + key = xmlNodeListGetString (doc, details->xmlChildrenNode, 1); + /* Create a fetchcover object and then add it to the list */ + fcover = g_new0(Fetch_Cover, 1); + fcover->url = g_string_new ((gchar*) key); + fcover->image = NULL; + fetchcover_image_list = g_list_append (fetchcover_image_list, fcover); + xmlFree(key); + } + details = details->next; + } + } + cur = cur->next; } - g_free (path); - return; - } - g_free (path); + + xmlFreeDoc(doc); - if (fwrite(fetchcover_curl_data.memory, fetchcover_curl_data.size, 1, tmpf) != 1) - { - fetchcover_debug("fetchcover_next: fwrite failed\n"); + /* Clean up the curl data */ if (fetchcover_curl_data.memory) { g_free(fetchcover_curl_data.memory); fetchcover_curl_data.memory = NULL; fetchcover_curl_data.size = 0; } - } - fclose(tmpf); - - GError *error = NULL; - path = g_build_filename(displayed_cover->dir, displayed_cover->filename, NULL); - displayed_cover->image = gdk_pixbuf_new_from_file(path, &error); - if (error != NULL) - { - fetchcover_debug("fetchcover_next: gdk_pixbuf_new_from_file failed\n"); - if (fetchcover_curl_data.memory) + /* Check whether the XML served up any cover images */ + if (g_list_length (fetchcover_image_list) == 1) { - g_free(fetchcover_curl_data.memory); - fetchcover_curl_data.memory = NULL; - fetchcover_curl_data.size = 0; + fetchcover_debug("fetchcover_next: no covers found\n"); + fetchcover_statusbar_update (_("No cover images were found for this album.")); } + else + { + fetchcover_debug("fetchcover_next: successfully recovered covers\n"); + gchar *buf; + buf = g_strdup_printf ("Found potentially %d covers. (Some covers may be blank)", g_list_length (fetchcover_image_list) - 1); + fetchcover_statusbar_update (_(buf)); + g_free (buf); + } + return; } - g_free(fetchcover_curl_data.memory); - fetchcover_curl_data.memory = NULL; - fetchcover_curl_data.size = 0; - g_strfreev(template_items); - g_free(template); - g_free(filename); - g_free(path); -} - -/** - * fetchcover_next_button: - * - * Gets new image URL list if necessary, - * downloads next image to memory, - * shows it in a GnomeCanvas in the fetchcover_window. - */ -static void fetchcover_next_button_clicked (GtkWidget *widget, gpointer data) -{ - GdkWindow *window = gtk_widget_get_parent_window (widget); - gdk_window_set_cursor (window, gdk_cursor_new (GDK_WATCH)); - fetchcover_debug("fetchcover_next_button: getting cover for:\n- Artist: %s\n- Album: %s", - fetchcover_track->artist, fetchcover_track->album); - - fetchcover_statusbar_update (""); - - if (netsearched == FALSE) + /** + * net_retrieve_image: + * + * @GString: url + * + * Use the url acquired from the net search to fetch the image, + * save it to a file inside the track's parent directory then display + * it as a pixbuf + */ + static void net_retrieve_image (GString *url) { - net_search_track (); - netsearched = TRUE; - gtk_button_set_label (GTK_BUTTON(next_button), "_Next"); - gtk_widget_show (prev_button); - } + gchar *path = NULL; + + fetchcover_debug("fetchcover_next: net_retrieve_image from: %s\n", url->str); + + fetchcover_curl_data.size = 0; + fetchcover_curl_data.memory = NULL; + + /* Use curl to retrieve the data from the net */ + CURL *curl; + curl_global_init(CURL_GLOBAL_ALL); + curl = curl_easy_init(); + curl_easy_setopt(curl, CURLOPT_URL, url->str); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_write_fetchcover_func); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&fetchcover_curl_data); + curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcurl-agent/1.0"); + curl_easy_perform(curl); + curl_easy_cleanup(curl); + + g_return_if_fail(fetchcover_curl_data.memory); - /* Whether net search this time or not, should be another image to display - * to get this far. - */ - - /* Increase the index by 1 */ - displayed_cover_index++; + /* Check that the page returned is a valid web page */ + if (strstr(fetchcover_curl_data.memory, "<html>") != NULL) + { + fetchcover_statusbar_update (_("Image appears to no longer exist at http location")); + fetchcover_debug("fetchcover_next: http error (probably 404 or server error\n"); + return; + } + + FILE *tmpf = NULL; + ExtraTrackData *etd = fetchcover_track->userdata; + g_return_if_fail(etd); + + gchar *dir = g_path_get_dirname(etd->pc_path_utf8); + gchar *template = prefs_get_string("coverart_template"); + gchar **template_items = g_strsplit(template, ";", 0); + + gint i; + gchar *filename = NULL; + + for (i = 0; filename == NULL && i < g_strv_length (template_items); ++i) + { + filename = get_string_from_template(fetchcover_track, template_items[i], FALSE, FALSE); + if (strlen(filename) == 0) + filename = NULL; + } + + /* Check filename still equals null then take a default stance + * to ensure the file has a name. + */ + if (filename == NULL) + filename = "folder.jpg"; - /* fetchcover_image_list has a valid entry so do a couple of tests*/ - if (displayed_cover_index >= (g_list_length(fetchcover_image_list) - 1)) - { - /* Something went awry so make the index - * the index of the last cover in the list + /* Use the index position of the cover in the glist to create a unique filename + * Convert the index number to a string and prefix with a dot (hidden file) */ - displayed_cover_index = g_list_length(fetchcover_image_list) - 1; - /* stop anymore button presses if last in the list */ - gtk_widget_set_sensitive (next_button, FALSE); - } + gint display_cover_index; + display_cover_index = g_list_index (fetchcover_image_list, displayed_cover); + gchar *dcstr_index = NULL; + dcstr_index = (gchar *) g_malloc (sizeof(gint) + (sizeof(gchar) * 3)); + g_sprintf (dcstr_index, ".%d_@_", display_cover_index); - if (displayed_cover_index > 0) - { - /* enable prev button if not first in list */ - gtk_widget_set_sensitive (prev_button, TRUE); - } + gchar *fname = NULL; + if (g_str_has_suffix(filename, ".jpg")) + fname = g_strconcat(dcstr_index, filename, NULL); + else + fname = g_strconcat(dcstr_index, filename, ".jpg", NULL); - /* Set the displayed cover to be the new image */ - displayed_cover = g_list_nth_data (fetchcover_image_list, displayed_cover_index); - - /* If the image has not been retrieved then get it from the net */ - if (displayed_cover->image == NULL) - { - net_retrieve_image (displayed_cover->url); - if (displayed_cover->image == NULL) + displayed_cover->dir = dir; + displayed_cover->filename = fname; + + fetchcover_debug("fetchcover_next: saving tmp cover image to %s / %s", displayed_cover->dir, displayed_cover->filename); + + path = g_build_filename(displayed_cover->dir, displayed_cover->filename, NULL); + if ((tmpf = fopen(path, "wb")) == NULL) { - gdk_window_set_cursor (window, NULL); - fetchcover_statusbar_update ("Failed to retrieve image."); - g_return_if_fail (displayed_cover->image); + fetchcover_debug("fetchcover_next: fopen failed\n"); + fetchcover_statusbar_update (_("Downloaded image cover failed to open")); + if (fetchcover_curl_data.memory) + { + g_free(fetchcover_curl_data.memory); + fetchcover_curl_data.memory = NULL; + fetchcover_curl_data.size = 0; + } + g_free (path); + return; } + g_free (path); + + if (fwrite(fetchcover_curl_data.memory, fetchcover_curl_data.size, 1, tmpf) != 1) + { + fetchcover_debug("fetchcover_next: fwrite failed\n"); + if (fetchcover_curl_data.memory) + { + g_free(fetchcover_curl_data.memory); + fetchcover_curl_data.memory = NULL; + fetchcover_curl_data.size = 0; + } + } + + fclose(tmpf); + + GError *error = NULL; + path = g_build_filename(displayed_cover->dir, displayed_cover->filename, NULL); + displayed_cover->image = gdk_pixbuf_new_from_file(path, &error); + if (error != NULL) + { + g_error_free (error); + fetchcover_debug("fetchcover_next: gdk_pixbuf_new_from_file failed\n"); + if (fetchcover_curl_data.memory) + { + g_free(fetchcover_curl_data.memory); + fetchcover_curl_data.memory = NULL; + fetchcover_curl_data.size = 0; + } + } + + g_free(fetchcover_curl_data.memory); + fetchcover_curl_data.memory = NULL; + fetchcover_curl_data.size = 0; + g_strfreev(template_items); + g_free(template); + g_free(filename); + g_free(path); } - fetchcover_debug("Displayed Image path: %s/%s\n", displayed_cover->dir, displayed_cover->filename); - - GdkPixbuf *scaled = gdk_pixbuf_scale_simple(displayed_cover->image, IMGSCALE, IMGSCALE, GDK_INTERP_NEAREST); - gnome_canvas_item_set(fetchcover_canvasitem, "pixbuf", scaled, NULL); - - gdk_window_set_cursor (window, NULL); - - return; -} - -/** - * fetchcover_prev_button: - * - * Gets previous image and shows - * it in a GnomeCanvas in the fetchcover_window. - */ -static void fetchcover_prev_button_clicked (GtkWidget *widget, gpointer data) -{ - /* decrease the index by 1 */ - displayed_cover_index--; - - fetchcover_statusbar_update (""); - - if (displayed_cover_index <= 0) + /** + * fetchcover_next_button: + * + * Gets new image URL list if necessary, + * downloads next image to memory, + * shows it in a GnomeCanvas in the fetchcover_window. + */ + static void fetchcover_next_button_clicked (GtkWidget *widget, gpointer data) { - /* Something went awry so make the index - * the index of the first cover in the list + GdkWindow *window = gtk_widget_get_parent_window (widget); + gdk_window_set_cursor (window, gdk_cursor_new (GDK_WATCH)); + fetchcover_debug("fetchcover_next_button: getting cover for:\n- Artist: %s\n- Album: %s", + fetchcover_track->artist, fetchcover_track->album); + + fetchcover_statusbar_update (""); + + if (netsearched == FALSE) + { + /* Function that does the initial XML download of the file locations */ + net_search_track (); + netsearched = TRUE; + GtkWidget *fwdimg = gtk_image_new_from_stock (GTK_STOCK_GO_FORWARD, GTK_ICON_SIZE_BUTTON); + /* Set the default width of the image to match that which is already displayed */ + gtk_widget_set_size_request (fwdimg, 60, -1); + gtk_button_set_image (GTK_BUTTON(next_button), fwdimg); + gtk_button_set_use_stock (GTK_BUTTON(next_button), TRUE); + } + + /* Whether net search this time or not, should be another image to display + * to get this far. */ - displayed_cover_index = 0; - /* stop anymore prev button press if first in the list */ - gtk_widget_set_sensitive (prev_button, FALSE); - } - /* fetchcover_image_list has a valid entry so do a couple of tests*/ - if (displayed_cover_index < (g_list_length(fetchcover_image_list) - 1)) - { - /* stop anymore button presses if last in the list */ - gtk_widget_set_sensitive (next_button, TRUE); - } + /* Increase the index by 1 */ + displayed_cover_index++; + + /* fetchcover_image_list has a valid entry so do a couple of tests*/ + if (displayed_cover_index >= (g_list_length(fetchcover_image_list) - 1)) + { + /* Something went awry so make + * the index of the last cover in the list + */ + displayed_cover_index = g_list_length(fetchcover_image_list) - 1; + /* stop anymore button presses if last in the list */ + gtk_widget_set_sensitive (next_button, FALSE); + } + + if (displayed_cover_index > 0) + { + /* enable prev button if not first in list */ + gtk_widget_show (prev_button); + gtk_widget_set_sensitive (prev_button, TRUE); + } + + /* Set the displayed cover to be the new image */ + displayed_cover = g_list_nth_data (fetchcover_image_list, displayed_cover_index); - /* Set the displayed cover to be the new image */ - displayed_cover = g_list_nth_data (fetchcover_image_list, displayed_cover_index); - - /* If the image has not been retrieved then get it from the net */ - if (displayed_cover->image == NULL) - { - net_retrieve_image (displayed_cover->url); + /* If the image has not been retrieved then get it from the net */ if (displayed_cover->image == NULL) { - fetchcover_statusbar_update ("Failed to retrieve image."); - g_return_if_fail (displayed_cover->image); + net_retrieve_image (displayed_cover->url); + if (displayed_cover->image == NULL) + { + /* XML file downloaded ok but image could not be retrieved */ + gtk_widget_hide (prev_button); + gtk_widget_set_sensitive (next_button, FALSE); + gdk_window_set_cursor (window, NULL); + fetchcover_statusbar_update (_("Failed to retrieve any images")); + g_return_if_fail (displayed_cover->image); + } } + + fetchcover_debug("Displayed Image path: %s/%s\n", displayed_cover->dir, displayed_cover->filename); + + GdkPixbuf *scaled = gdk_pixbuf_scale_simple(displayed_cover->image, IMGSCALE, IMGSCALE, GDK_INTERP_NEAREST); + gnome_canvas_item_set(fetchcover_canvasitem, "pixbuf", scaled, NULL); + + gdk_window_set_cursor (window, NULL); + + return; } - GdkPixbuf *scaled = gdk_pixbuf_scale_simple(displayed_cover->image, IMGSCALE, IMGSCALE, GDK_INTERP_NEAREST); - gnome_canvas_item_set(fetchcover_canvasitem, "pixbuf", scaled, NULL); - - return; -} - -/** - * fetchcover_save: - * - * @Detail: detail - * - * Save the displayed cover. - * Set thumbnails, update details window. - * Called on response to the clicking of the save button in the dialog - * - * Returns: - * Filename of chosen cover image file - */ -gchar *fetchcover_save (GtkWindow *parent) -{ - gchar *newname = NULL; - /* The default cover image will have both dir and filename set - * to null because no need to save because it is already saved (!!) - * Thus, this whole process is avoided. Added bonus that pressing - * save by accident if, for instance, no images are found means the - * whole thing safely completes + /** + * fetchcover_prev_button: + * + * Gets previous image and shows + * it in a GnomeCanvas in the fetchcover_window. */ - if (displayed_cover->dir && displayed_cover->filename) + static void fetchcover_prev_button_clicked (GtkWidget *widget, gpointer data) { - /* path is valid so first move the file to be the folder.jpg or - * whatever is the preferred preference - */ + /* decrease the index by 1 */ + displayed_cover_index--; - /* Split the existing filename to remove the prefix */ - gchar **fname_items = g_strsplit(displayed_cover->filename, "_@_", 2); - /* Assign the filename ready to rename the file */ - newname = g_build_filename(displayed_cover->dir, fname_items[1], NULL); - fetchcover_debug("New name of file is %s\n", newname); - - while (g_file_test (newname, G_FILE_TEST_EXISTS)) + fetchcover_statusbar_update (""); + + if (displayed_cover_index <= 0) { - newname = display_file_exist_dialog (newname, parent); - if (newname == NULL) - break; + /* Something went awry so make the index + * the index of the first cover in the list + */ + displayed_cover_index = 0; + /* stop anymore prev button press if first in the list */ + gtk_widget_set_sensitive (prev_button, FALSE); } + + /* fetchcover_image_list has a valid entry so do a couple of tests*/ + if (displayed_cover_index < (g_list_length(fetchcover_image_list) - 1)) + { + /* stop anymore button presses if last in the list */ + gtk_widget_set_sensitive (next_button, TRUE); + } + + /* Set the displayed cover to be the new image */ + displayed_cover = g_list_nth_data (fetchcover_image_list, displayed_cover_index); - /* Carry the nullified value back to the original called so the - * entire fetchcover process can be cancelled - */ - if (newname == NULL) - return NULL; + /* If the image has not been retrieved then get it from the net */ + if (displayed_cover->image == NULL) + { + net_retrieve_image (displayed_cover->url); + if (displayed_cover->image == NULL) + { + fetchcover_statusbar_update (_("Failed to retrieve image.")); + g_return_if_fail (displayed_cover->image); + } + } - gchar *oldname = g_build_filename(displayed_cover->dir, displayed_cover->filename, NULL); - /* Rename the preferred choice, ie. .2_@_After_Forever.jpg, to the preferred name, - * ie. After_Forever.jpg. - */ - g_rename (oldname, newname); + GdkPixbuf *scaled = gdk_pixbuf_scale_simple(displayed_cover->image, IMGSCALE, IMGSCALE, GDK_INTERP_NEAREST); + gnome_canvas_item_set(fetchcover_canvasitem, "pixbuf", scaled, NULL); - /* Tidy up to ensure the path will not get cleaned up - * by fetchcover_clean_up + return; + } + + /** + * fetchcover_save: + * + * @Detail: detail + * + * Save the displayed cover. + * Set thumbnails, update details window. + * Called on response to the clicking of the save button in the dialog + * + * Returns: + * Filename of chosen cover image file + */ + gchar *fetchcover_save (GtkWindow *parent) + { + gchar *newname = NULL; + /* The default cover image will have both dir and filename set + * to null because no need to save because it is already saved (!!) + * Thus, this whole process is avoided. Added bonus that pressing + * save by accident if, for instance, no images are found means the + * whole thing safely completes */ - g_free (oldname); - g_strfreev(fname_items); - g_free (displayed_cover->dir); - g_free (displayed_cover->filename); - displayed_cover->dir = NULL; - displayed_cover->filename = NULL; + if (displayed_cover->dir && displayed_cover->filename) + { + /* path is valid so first move the file to be the folder.jpg or + * whatever is the preferred preference + */ + + /* Split the existing filename to remove the prefix */ + gchar **fname_items = g_strsplit(displayed_cover->filename, "_@_", 2); + /* Assign the filename ready to rename the file */ + newname = g_build_filename(displayed_cover->dir, fname_items[1], NULL); + fetchcover_debug("New name of file is %s\n", newname); + + while (g_file_test (newname, G_FILE_TEST_EXISTS)) + { + newname = display_file_exist_dialog (newname, parent); + if (newname == NULL) + break; + } + + /* Carry the nullified value back to the original called so the + * entire fetchcover process can be cancelled + */ + if (newname == NULL) + return NULL; + + gchar *oldname = g_build_filename(displayed_cover->dir, displayed_cover->filename, NULL); + /* Rename the preferred choice, ie. .2_@_After_Forever.jpg, to the preferred name, + * ie. After_Forever.jpg. + */ + g_rename (oldname, newname); + + /* Tidy up to ensure the path will not get cleaned up + * by fetchcover_clean_up + */ + g_free (oldname); + g_strfreev(fname_items); + g_free (displayed_cover->dir); + g_free (displayed_cover->filename); + displayed_cover->dir = NULL; + displayed_cover->filename = NULL; + } + return newname; } - return newname; -} -#endif /* HAVE_CURL */ +#endif +/* HAVE_CURL */ + static gchar *display_file_exist_dialog (gchar *filename, GtkWindow *parent) { gint result; @@ -625,36 +634,36 @@ gint i; gchar *message; GtkWidget *label; - GtkWidget *dialog = gtk_dialog_new_with_buttons ("Coverart file already exists", - parent, - GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_YES, - GTK_RESPONSE_YES, - GTK_STOCK_NO, - GTK_RESPONSE_NO, - GTK_STOCK_CANCEL, - GTK_RESPONSE_REJECT, - NULL); + GtkWidget *dialog = gtk_dialog_new_with_buttons (_("Coverart file already exists"), + parent, + GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_STOCK_YES, + GTK_RESPONSE_YES, + GTK_STOCK_NO, + GTK_RESPONSE_NO, + GTK_STOCK_CANCEL, + GTK_RESPONSE_REJECT, + NULL); message = g_strdup_printf (_("The picture file %s already exists. \ -\nThis may be associated with other music files in the directory. \ -\n\n- Clicking Yes will overwrite the existing file, possibly associating \ -\n other music files in the same directory with this coverart file. \ -\n- Clicking No will save the file with a unique file name. \ -\n- Clicking Cancel will abort the fetchcover operation."), filename); - + \nThis may be associated with other music files in the directory. \ + \n\n- Clicking Yes will overwrite the existing file, possibly associating \ + \n other music files in the same directory with this coverart file. \ + \n- Clicking No will save the file with a unique file name. \ + \n- Clicking Cancel will abort the fetchcover operation."), filename); + label = gtk_label_new (message); - + /* Add the label, and show everything we've added to the dialog. */ gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), label); - + gtk_widget_show_all (dialog); result = gtk_dialog_run (GTK_DIALOG(dialog)); g_free (message); - + switch (result) { case GTK_RESPONSE_REJECT: - /* Cancel has been clicked so no save */ + /* Cancel has been clicked so no save */ gtk_widget_destroy (dialog); return NULL; case GTK_RESPONSE_YES: @@ -668,24 +677,24 @@ /* User doesn't want to overwrite anything so need to do some work on filename */ splitarr = g_strsplit (filename, ".", 0); basename = splitarr[0]; - + for (i = 1; g_file_test (filename, G_FILE_TEST_EXISTS); ++i) { g_sprintf (filename, "%s%d.jpg", basename, i); } - + /* Should have found a filename that really doesn't exist so this needs to be returned */ basename = NULL; g_strfreev(splitarr); gtk_widget_destroy (dialog); - + return filename; default: gtk_widget_destroy (dialog); return NULL; } } - + /** * free_fetchcover: * @@ -700,10 +709,10 @@ if (fcover->url) g_string_free (fcover->url, TRUE); - + if (fcover->image) gdk_pixbuf_unref (fcover->image); - + if (fcover->dir && fcover->filename) { gint status; @@ -715,6 +724,7 @@ g_free (fcover->filename); } } + /** * free_fetchcover_list: @@ -737,6 +747,7 @@ g_list_free (fetchcover_image_list); fetchcover_image_list = NULL; } + /** * fetchcover_cleanup: @@ -746,15 +757,17 @@ static void fetchcover_cleanup() { #ifdef HAVE_CURL - if (fetchcover_curl_data.memory) - { - g_free (fetchcover_curl_data.memory); - fetchcover_curl_data.memory = NULL; - fetchcover_curl_data.size = 0; - } - #endif /* CURL */ + if (fetchcover_curl_data.memory) + { + g_free (fetchcover_curl_data.memory); + fetchcover_curl_data.memory = NULL; + fetchcover_curl_data.size = 0; + } + #endif + /* CURL */ free_fetchcover_list(); } + /** * fetchcover_display_dialog: @@ -770,17 +783,17 @@ GtkWidget *fetchcover_dialog; GladeXML *fetchcover_xml; GdkPixbuf *imgbuf; - + g_return_val_if_fail (track, NULL); g_return_val_if_fail (device, NULL); - + /* Enable searching of internet for images */ netsearched = FALSE; fetchcover_xml = glade_xml_new (xml_file, "fetchcover_dialog", NULL); fetchcover_dialog = gtkpod_xml_get_widget (fetchcover_xml, "fetchcover_dialog"); gtk_window_set_transient_for (GTK_WINDOW(fetchcover_dialog), parent); - + ExtraTrackData *etd; etd = track->userdata; if (etd && etd->thumb_path_locale) @@ -801,7 +814,7 @@ */ imgbuf = coverart_get_track_thumb (track, device); } - + /* Add the cover to the image list */ displayed_cover = g_new0 (Fetch_Cover, 1); displayed_cover->url = g_string_new ("default"); @@ -815,12 +828,12 @@ displayed_cover->filename = NULL; displayed_cover->image = gdk_pixbuf_scale_simple (imgbuf, IMGSCALE, IMGSCALE, GDK_INTERP_NEAREST); gdk_pixbuf_unref (imgbuf); - + fetchcover_image_list = g_list_append (fetchcover_image_list, displayed_cover); displayed_cover_index = 0; + + fetchcover_debug("fetchcover_display_window: loaded cover file"); - fetchcover_debug("fetchcover_display_window: loaded cover file"); - /* Create the image cover canvas */ fetchcover_canvas = GNOME_CANVAS (gnome_canvas_new()); gtk_widget_set_size_request (GTK_WIDGET(fetchcover_canvas), IMGSCALE, IMGSCALE); @@ -833,12 +846,12 @@ "width", (double) IMGSCALE, "height", (double) IMGSCALE, NULL); - + /* Apply the image cover to the canvas */ gnome_canvas_item_set ( fetchcover_canvasitem, - "pixbuf", displayed_cover->image, - NULL); - + "pixbuf", displayed_cover->image, + NULL); + /* Create the canvas border */ art_border = gnome_canvas_item_new( gnome_canvas_root(fetchcover_canvas), @@ -850,57 +863,58 @@ "outline-color-rgba", 0xAA000000, "width-units", (double) 3, NULL); - + gnome_canvas_item_raise_to_top (art_border); - + /* Add canvas to horizontal box */ canvasbutton_hbox = GTK_BOX (gtkpod_xml_get_widget (fetchcover_xml, "canvasbutton_hbox")); gtk_widget_set_size_request (GTK_WIDGET(canvasbutton_hbox), IMGSCALE + 150, IMGSCALE + 20); gtk_box_pack_start_defaults ( canvasbutton_hbox, GTK_WIDGET (fetchcover_canvas)); - + /* Assign the status message bar */ fetchcover_statusbar = gtkpod_xml_get_widget (fetchcover_xml, "fetchcover_statusbar"); - + fetchcover_track = track; next_button = gtkpod_xml_get_widget (fetchcover_xml, "next_button"); prev_button = gtkpod_xml_get_widget (fetchcover_xml, "prev_button"); - - #ifdef HAVE_CURL - - g_signal_connect (G_OBJECT(next_button), "clicked", + + #ifdef HAVE_CURL + + g_signal_connect (G_OBJECT(next_button), "clicked", G_CALLBACK(fetchcover_next_button_clicked), NULL); - - g_signal_connect (G_OBJECT(prev_button), "clicked", - G_CALLBACK(fetchcover_prev_button_clicked), NULL); - - /* Check there are valid values for artist and album, otherwise disable everything */ - if (fetchcover_track->artist == NULL || fetchcover_track->album == NULL) - { - gtk_widget_set_sensitive (next_button, FALSE); - fetchcover_statusbar_update ("Search cannot be performed as either the artist or album are blank"); - } - else - { - gchar *buf; - buf = g_strdup_printf ("Artist: %s\tAlbum: %s", fetchcover_track->artist, fetchcover_track->album); - fetchcover_statusbar_update (buf); - g_free (buf); - } - + + g_signal_connect (G_OBJECT(prev_button), "clicked", + G_CALLBACK(fetchcover_prev_button_clicked), NULL); + + /* Check there are valid values for artist and album, otherwise disable everything */ + if (fetchcover_track->artist == NULL || fetchcover_track->album == NULL) + { + gtk_widget_set_sensitive (next_button, FALSE); + fetchcover_statusbar_update (_("Search cannot be performed as either the artist or album are blank")); + } + else + { + gchar *buf; + buf = g_strdup_printf ("Artist: %s\tAlbum: %s", fetchcover_track->artist, fetchcover_track->album); + fetchcover_statusbar_update (_(buf)); + g_free (buf); + } + #else gtk_widget_set_sensitive (next_button, FALSE); gtk_widget_set_sensitive (prev_button, FALSE); - fetchcover_statusbar_update ("This function is not available. You must compile the gtkpod source together with the curl library."); - #endif /* HAVE_CURL */ - - gtk_widget_show_all (fetchcover_dialog); - gtk_widget_hide (prev_button); - - g_object_unref (fetchcover_xml); - + fetchcover_statusbar_update (_("This function is not available. You must compile the gtkpod source together with the curl library.")); + #endif + /* HAVE_CURL */ + + gtk_widget_show_all (fetchcover_dialog); + gtk_widget_hide (prev_button); + + g_object_unref (fetchcover_xml); + return GTK_DIALOG(fetchcover_dialog); } - + /** * fetchcover_debug: * @@ -910,17 +924,17 @@ */ static void fetchcover_debug(const gchar *format, ...) { -#ifdef FETCHCOVER_DEBUG - va_list args; - va_start (args, format); - gchar *s = g_strdup_vprintf (format, args); - va_end (args); - printf ("%s\n", s); - fflush (stdout); - g_free (s); -#endif -} - + #ifdef FETCHCOVER_DEBUG + va_list args; + va_start (args, format); + gchar *s = g_strdup_vprintf (format, args); + va_end (args); + printf ("%s\n", s); + fflush (stdout); + g_free (s); + #endif + } + /** * fetchcover_statusbar_update: * @@ -936,8 +950,8 @@ gtk_statusbar_push(GTK_STATUSBAR(fetchcover_statusbar), 1, message); } } - - + + /** * on_coverart_context_menu_click: * @@ -953,44 +967,46 @@ track = tracks->data; if (track == NULL) { - g_fprintf (stderr, "Track was null so fetchcover dialog was not displayed.\nLenght of glist was %d\n", g_list_length (tracks)); + g_fprintf (stderr, "Track was null so fetchcover dialog was not displayed.\nLength of glist was %d\n", g_list_length (tracks)); return; } - + GtkWindow *parent = GTK_WINDOW (gtkpod_xml_get_widget (main_window_xml, "gtkpod")); GtkDialog *dialog = fetchcover_display_dialog (track, track->itdb->device, parent); g_return_if_fail (dialog); - + result = gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_hide (GTK_WIDGET(dialog)); gtk_widget_destroy (GTK_WIDGET(dialog)); + + #ifdef HAVE_CURL + gchar *filename = NULL; + + switch (result) + { + case GTK_RESPONSE_ACCEPT: + filename = fetchcover_save (parent); + if (filename) + { + while (tracks) + { + track = tracks->data; + if (gp_track_set_thumbnails (track, filename)) + data_changed (track->itdb); + + tracks = tracks->next; + } + } + g_free (filename); + default: + break; + } + #endif + /* HAVE_CURL */ + + fetchcover_cleanup(); +} - #ifdef HAVE_CURL - gchar *filename = NULL; - - switch (result) - { - case GTK_RESPONSE_ACCEPT: - filename = fetchcover_save (parent); - if (filename) - { - while (tracks) - { - track = tracks->data; - if (gp_track_set_thumbnails (track, filename)) - data_changed (track->itdb); - tracks = tracks->next; - } - } - g_free (filename); - default: - break; - } -#endif /* HAVE_CURL */ - - fetchcover_cleanup(); -} - /** * fetchcover_fetch_button: * @@ -1002,59 +1018,59 @@ */ void on_fetchcover_fetch_button (GtkWidget *widget, gpointer data) { - gint result; - Detail *detail = details_get_selected_detail (); - GtkWindow *parent = GTK_WINDOW(detail->window); - GtkDialog *dialog = fetchcover_display_dialog (detail->track, detail->itdb->device, parent); - g_return_if_fail (dialog); - - result = gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_hide (GTK_WIDGET(dialog)); - gtk_widget_destroy (GTK_WIDGET(dialog)); -#ifdef HAVE_CURL + gint result; + Detail *detail = details_get_selected_detail (); + GtkWindow *parent = GTK_WINDOW(detail->window); + GtkDialog *dialog = fetchcover_display_dialog (detail->track, detail->itdb->device, parent); + g_return_if_fail (dialog); + + result = gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_hide (GTK_WIDGET(dialog)); + gtk_widget_destroy (GTK_WIDGET(dialog)); + + #ifdef HAVE_CURL - gchar *filename = NULL; - switch (result) - { - case GTK_RESPONSE_ACCEPT: - filename = fetchcover_save (parent); - if (filename) - { - if (details_writethrough(detail)) - { - GList *list; - for (list = detail->tracks; list; list = list->next) - { - ExtraTrackData *etd; - Track *track = list->data; - - if (!track) - break; - - etd = track->userdata; - gp_track_set_thumbnails(track, filename); - etd->tchanged = TRUE; - etd->tartwork_changed = TRUE; + gchar *filename = NULL; + switch (result) + { + case GTK_RESPONSE_ACCEPT: + filename = fetchcover_save (parent); + if (filename) + { + if (details_writethrough(detail)) + { + GList *list; + for (list = detail->tracks; list; list = list->next) + { + ExtraTrackData *etd; + Track *track = list->data; + + if (!track) + break; + + etd = track->userdata; + gp_track_set_thumbnails(track, filename); + etd->tchanged = TRUE; + etd->tartwork_changed = TRUE; + } + } + else + { + ExtraTrackData *etd = fetchcover_track->userdata; + if (etd) + { + gp_track_set_thumbnails(fetchcover_track, filename); + etd->tchanged = TRUE; + } + } + detail->changed = TRUE; + details_update_thumbnail(detail); + details_update_buttons(detail); + } + default: + break; } - } - else - { - ExtraTrackData *etd = fetchcover_track->userdata; - if (etd) - { - gp_track_set_thumbnails(fetchcover_track, filename); - etd->tchanged = TRUE; - } - } - - detail->changed = TRUE; - details_update_thumbnail(detail); - details_update_buttons(detail); - } - default: - break; - } -#endif /* HAVE_CURL */ - - fetchcover_cleanup(); + #endif + /* HAVE_CURL */ + fetchcover_cleanup(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jc...@us...> - 2007-06-29 14:42:54
|
Revision: 1609 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1609&view=rev Author: jcsjcs Date: 2007-06-29 07:42:54 -0700 (Fri, 29 Jun 2007) Log Message: ----------- * src/details.c (details_setup_widget): fixed memory leak (thanks to Daniele). * src/display_coverart.c (coverart_set_images): fixed memory leak (thanks to Daniele). Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/src/details.c gtkpod/trunk/src/display_coverart.c Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-06-28 10:46:59 UTC (rev 1608) +++ gtkpod/trunk/ChangeLog_detailed 2007-06-29 14:42:54 UTC (rev 1609) @@ -1,9 +1,17 @@ +2007-06-25 Jorg Schuler <jcsjcs at users.sourceforge.net> + + * src/details.c (details_setup_widget): fixed memory leak + (thanks to Daniele). + + * src/display_coverart.c (coverart_set_images): fixed memory + leak (thanks to Daniele). + 2007-06-27 P.G. Richardson <phantom_sf at users.sourceforge.net> - * gtkpod.glade: + * data/gtkpod.glade: Changed fetchcover dialog's buttons to display icons only. - * fetchcover.c: + * src/fetchcover.c: Added in gettext macros for status messages. Disabled next button if net_retrieve fails to get any images from the downloaded xml file (Thanks Daniele). @@ -83,15 +91,18 @@ 2007-06-25 P.G. Richardson <phantom_sf at users.sourceforge.net> - * display_itdb.h: added tartwork_changed flag to ExtraTrackData + * src/display_itdb.h: added tartwork_changed flag to + ExtraTrackData - * details.c: initialise tartwork_changed flag to FALSE. Use this - flag in details_copy_artwork as additional check if artwork - has changed. Removal of all tilda related cruff. + * src/details.c: initialise tartwork_changed flag to + FALSE. Use this flag in details_copy_artwork as additional + check if artwork has changed. Removal of all tilda related + cruff. - * fetchcover.c: removal of tilda related cruff with use of the - tartwork_changed flag from ExtraTrackData. Set Prev Button - initially to hidden until images from the net are retrieved. + * src/fetchcover.c: removal of tilda related cruff with use of + the tartwork_changed flag from ExtraTrackData. Set Prev + Button initially to hidden until images from the net are + retrieved. 2007-06-25 Jorg Schuler <jcsjcs at users.sourceforge.net> Modified: gtkpod/trunk/src/details.c =================================================================== --- gtkpod/trunk/src/details.c 2007-06-28 10:46:59 UTC (rev 1608) +++ gtkpod/trunk/src/details.c 2007-06-29 14:42:54 UTC (rev 1609) @@ -690,6 +690,7 @@ w = gtkpod_xml_get_widget (detail->xml, buf); gtk_button_set_label (GTK_BUTTON (w), gettext (get_t_string (item))); + g_free (buf); break; default: buf = g_strdup_printf ("details_label_%d", item); Modified: gtkpod/trunk/src/display_coverart.c =================================================================== --- gtkpod/trunk/src/display_coverart.c 2007-06-28 10:46:59 UTC (rev 1608) +++ gtkpod/trunk/src/display_coverart.c 2007-06-29 14:42:54 UTC (rev 1609) @@ -1797,9 +1797,9 @@ if (tracks == NULL) return; - gchar *album_key; while (tracks) { + gchar *album_key; track = tracks->data; album_key = g_strconcat (track->artist, "_", track->album, NULL); @@ -1820,14 +1820,15 @@ /* Insert the new Album Item into the hash */ g_hash_table_insert (album_hash, album_key, album); /* Add the key to the list for sorting and other functions */ - album_key_list = g_list_append (album_key_list, g_strdup(album_key)); + album_key_list = g_list_append (album_key_list, album_key); } else { - /* Album Item found in the album hash so append the track to - * the end of the track list - */ - album->tracks = g_list_append (album->tracks, track); + /* Album Item found in the album hash so + * append the track to the end of the + * track list */ + g_free (album_key); + album->tracks = g_list_append (album->tracks, track); } tracks = tracks->next; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jc...@us...> - 2007-06-29 15:00:47
|
Revision: 1610 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1610&view=rev Author: jcsjcs Date: 2007-06-29 08:00:48 -0700 (Fri, 29 Jun 2007) Log Message: ----------- * src/Makefile.am: remove EJECT_BIN line as it is no longer used (thanks to Gabriel C). Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/src/Makefile.am Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-06-29 14:42:54 UTC (rev 1609) +++ gtkpod/trunk/ChangeLog_detailed 2007-06-29 15:00:48 UTC (rev 1610) @@ -1,20 +1,23 @@ 2007-06-25 Jorg Schuler <jcsjcs at users.sourceforge.net> * src/details.c (details_setup_widget): fixed memory leak - (thanks to Daniele). + (thanks to Daniele) (thanks to Gabriel C). * src/display_coverart.c (coverart_set_images): fixed memory leak (thanks to Daniele). + * src/Makefile.am: remove EJECT_BIN line as it is no longer + used. + 2007-06-27 P.G. Richardson <phantom_sf at users.sourceforge.net> * data/gtkpod.glade: - Changed fetchcover dialog's buttons to display icons only. + Changed fetchcover dialog's buttons to display icons only. * src/fetchcover.c: - Added in gettext macros for status messages. - Disabled next button if net_retrieve fails to get any images - from the downloaded xml file (Thanks Daniele). + Added in gettext macros for status messages. Disabled next + button if net_retrieve fails to get any images from the + downloaded xml file (Thanks Daniele). 2007-06-27 Todd Zullinger <tmzullinger at users.sourceforge.net> Modified: gtkpod/trunk/src/Makefile.am =================================================================== --- gtkpod/trunk/src/Makefile.am 2007-06-29 14:42:54 UTC (rev 1609) +++ gtkpod/trunk/src/Makefile.am 2007-06-29 15:00:48 UTC (rev 1610) @@ -5,7 +5,6 @@ INCLUDES = @PACKAGE_CFLAGS@ \ -DMOUNT_BIN=\""@MOUNT@\"" \ -DUMOUNT_BIN=\""@UMOUNT@\"" \ - -DEJECT_BIN=\""@EJECT@\"" \ -DPACKAGE_DATA_DIR=\""$(datadir)"\" \ -DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tmz...@us...> - 2007-07-04 16:25:13
|
Revision: 1618 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1618&view=rev Author: tmzullinger Date: 2007-07-04 09:25:16 -0700 (Wed, 04 Jul 2007) Log Message: ----------- fix compile with --as-needed (thanks to Santiago M. Mola) Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/configure.in gtkpod/trunk/src/Makefile.am Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-07-03 02:22:55 UTC (rev 1617) +++ gtkpod/trunk/ChangeLog_detailed 2007-07-04 16:25:16 UTC (rev 1618) @@ -1,3 +1,9 @@ +2007-07-04 Todd Zullinger <tmzullinger at users.sourceforge.net> + + * configure.ac + src/Makefile.am: + fix compile with --as-needed (thanks to Santiago M. Mola) + 2007-06-29 Jorg Schuler <jcsjcs at users.sourceforge.net> * src/details.c (details_setup_widget): fixed memory leak Modified: gtkpod/trunk/configure.in =================================================================== --- gtkpod/trunk/configure.in 2007-07-03 02:22:55 UTC (rev 1617) +++ gtkpod/trunk/configure.in 2007-07-04 16:25:16 UTC (rev 1618) @@ -88,7 +88,7 @@ have_curl="yes -- will build with coverart download support" CPPFLAGS="$CPPFLAGS $CURL_CFLAGS" CFLAGS="$CFLAGS $CURL_CFLAGS" - LDFLAGS="$LDFLAGS $CURL_LIBS" + LIBS="$LIBS $CURL_LIBS" else echo "*** libcurl could not be found, not building coverart download support" have_curl="*no -- will build without coverart download support" @@ -108,7 +108,7 @@ AC_DEFINE(HAVE_GNOME_VFS, 1, [Define if you have gnome-vfs support]) CPPFLAGS="$CPPFLAGS $GNOME_VFS_CFLAGS" CFLAGS="$CFLAGS $GNOME_VFS_CFLAGS" - LDFLAGS="$LDFLAGS $GNOME_VFS_LIBS" + LIBS="$LIBS $GNOME_VFS_LIBS" else echo "*** gnome-vfs-2 not found or disabled, not building iPod autodetection support" have_gnomevfs="*no -- will build without iPod autodetection support" @@ -129,7 +129,7 @@ AC_DEFINE(HAVE_HAL, 1, [Define if you want HAL support]) CPPFLAGS="$CPPFLAGS $HAL_CFLAGS" CFLAGS="$CFLAGS $HAL_CFLAGS" - LDFLAGS="$LDFLAGS $HAL_LIBS" + LIBS="$LIBS $HAL_LIBS" else have_hal="*no -- will build without HAL support" fi Modified: gtkpod/trunk/src/Makefile.am =================================================================== --- gtkpod/trunk/src/Makefile.am 2007-07-03 02:22:55 UTC (rev 1617) +++ gtkpod/trunk/src/Makefile.am 2007-07-04 16:25:16 UTC (rev 1618) @@ -54,7 +54,7 @@ tools.c tools.h \ wavfile.c wavfile.h -gtkpod_LDADD = @PACKAGE_LIBS@ $(INTLLIBS) @LIBOBJS@ +gtkpod_LDADD = $(LIBS) @PACKAGE_LIBS@ $(INTLLIBS) @LIBOBJS@ EXTRA_DIST = getopt.h This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tmz...@us...> - 2007-07-04 17:33:34
|
Revision: 1620 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1620&view=rev Author: tmzullinger Date: 2007-07-04 10:33:36 -0700 (Wed, 04 Jul 2007) Log Message: ----------- updated French translation (thanks to Eric Lassauge) Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/po/fr.po Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-07-04 17:32:56 UTC (rev 1619) +++ gtkpod/trunk/ChangeLog_detailed 2007-07-04 17:33:36 UTC (rev 1620) @@ -4,6 +4,9 @@ src/Makefile.am: fix compile with --as-needed (thanks to Santiago M. Mola) + * po/fr.po: + updated French translation (thanks to Eric Lassauge) + 2007-06-29 Jorg Schuler <jcsjcs at users.sourceforge.net> * src/details.c (details_setup_widget): fixed memory leak Modified: gtkpod/trunk/po/fr.po =================================================================== --- gtkpod/trunk/po/fr.po 2007-07-04 17:32:56 UTC (rev 1619) +++ gtkpod/trunk/po/fr.po 2007-07-04 17:33:36 UTC (rev 1620) @@ -1,5 +1,5 @@ # French language translation for gtkpod -# Copyright (C) 2005-2006 Eric Lassauge +# Copyright (C) 2005-2007 Eric Lassauge # Eric Lassauge <las...@us...>, 2006. # Copyright (C) 2003 David Le Brun # David Le Brun <da...@dy...>, 2003. @@ -7,11 +7,11 @@ # msgid "" msgstr "" -"Project-Id-Version: gtkpod 0.94\n" +"Project-Id-Version: gtkpod 0.99\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-06-27 16:10-0400\n" -"PO-Revision-Date: 2007-01-08 21:37+0900\n" -"Last-Translator: Eric Lassauge <las...@us...>\n" +"PO-Revision-Date: 2007-07-03 16:28+0100\n" +"Last-Translator: Éric Lassauge <rp...@fr...>\n" "Language-Team: FR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,17 +19,16 @@ "Plural-Forms: nplurals=2; plural=n>1;\n" #: ../data/gtkpod.desktop.in.h:1 -#, fuzzy msgid "GtkPod" -msgstr "gtkpod" +msgstr "GtkPod" #: ../data/gtkpod.desktop.in.h:2 msgid "Manage music and video on an Apple iPod" -msgstr "" +msgstr "Gérer musiques et vidéos sur un iPod Apple" #: ../data/gtkpod.desktop.in.h:3 msgid "iPod Manager" -msgstr "" +msgstr "Gestionnaire iPod" #: ../data/gtkpod.glade.h:1 msgid " " @@ -74,11 +73,11 @@ #: ../data/gtkpod.glade.h:11 msgid "'aacgain' executable:" -msgstr "Chemin de l'exécutable «aacgain» :" +msgstr "Chemin de l'exécutable « aacgain » :" #: ../data/gtkpod.glade.h:12 msgid "'mp3gain' executable:" -msgstr "Chemin de l'exécutable «mp3gain» :" +msgstr "Chemin de l'exécutable « mp3gain » :" #: ../data/gtkpod.glade.h:13 msgid "(Checked)" @@ -86,23 +85,23 @@ #: ../data/gtkpod.glade.h:14 msgid "...as icons" -msgstr "...avec seulement les icônes" +msgstr "…avec seulement les icônes" #: ../data/gtkpod.glade.h:15 msgid "...as text" -msgstr "...avec seulement les libellés" +msgstr "…avec seulement les libellés" #: ../data/gtkpod.glade.h:16 msgid "...both as icons and text" -msgstr "...avec les icônes et libellés" +msgstr "…avec les icônes et libellés" #: ../data/gtkpod.glade.h:17 msgid "...entry 'All' in sort tab..." -msgstr "...onglet «Tous» dans la zone de tri..." +msgstr "…onglet « Tous » dans la zone de tri…" #: ../data/gtkpod.glade.h:18 msgid "...master playlist" -msgstr "...liste de lecture principale" +msgstr "…liste de lecture principale" #: ../data/gtkpod.glade.h:20 #, no-c-format @@ -139,21 +138,19 @@ #: ../data/gtkpod.glade.h:28 msgid "<" -msgstr "" +msgstr "<" #: ../data/gtkpod.glade.h:29 -#, fuzzy msgid "<b>Account Information</b>" -msgstr "<b>Confirmation de suppression</b>" +msgstr "<b>Informations du compte</b>" #: ../data/gtkpod.glade.h:30 msgid "<b>Adding/Updating/Syncing</b>" msgstr "<b>Ajout/Mise à jour/Synchronisation</b>" #: ../data/gtkpod.glade.h:31 -#, fuzzy msgid "<b>Audioscrobbler</b>" -msgstr "<b>Barre d'outils</b>" +msgstr "<b>Audioscrobbler</b>" #: ../data/gtkpod.glade.h:32 msgid "<b>Auto-Generated Playlists</b>" @@ -161,7 +158,7 @@ #: ../data/gtkpod.glade.h:33 msgid "<b>Automatically select...</b>" -msgstr "<b>Sélection automatique...</b>" +msgstr "<b>Sélection automatique…</b>" #: ../data/gtkpod.glade.h:34 msgid "<b>Calendar/Contacts/Notes</b>" @@ -196,9 +193,8 @@ msgstr "<b>Point de montage et options pour dépots/listes</b>" #: ../data/gtkpod.glade.h:42 -#, fuzzy msgid "<b>On-the-fly Conversion</b>" -msgstr "<b>Confirmation de suppression</b>" +msgstr "<b>Conversion au fil de l'eau</b>" #: ../data/gtkpod.glade.h:43 msgid "<b>Play</b>" @@ -258,7 +254,7 @@ #: ../data/gtkpod.glade.h:57 msgid ">" -msgstr "" +msgstr ">" #: ../data/gtkpod.glade.h:58 msgid "About gtkpod" @@ -295,11 +291,11 @@ #: ../data/gtkpod.glade.h:66 msgid "Add new repository/iPod" -msgstr "Ajouter un nouvel iPod/dépot" +msgstr "Ajouter un nouvel iPod/dépôt" #: ../data/gtkpod.glade.h:67 msgid "Add playlist from file" -msgstr "Ajouter une liste de lecture depuis un fichier." +msgstr "Ajouter une liste de lecture depuis un fichier" #: ../data/gtkpod.glade.h:68 ../src/display_sorttabs.c:3228 #: ../src/display_tracks.c:2020 @@ -317,9 +313,8 @@ msgstr "Album" #: ../data/gtkpod.glade.h:71 -#, fuzzy msgid "Album Art" -msgstr "Album" +msgstr "Affichage pochette" #: ../data/gtkpod.glade.h:72 msgid "All (AND)" @@ -378,7 +373,7 @@ "If not selected, you must press 'Display' to start displaying." msgstr "" "Affiche automatiquement les morceaux qui correspondent aux critères saisis." -"En désactivant cette option, vous devrez appuyer sur «Afficher»." +"En désactivant cette option, vous devrez appuyer sur « Afficher »." #: ../data/gtkpod.glade.h:85 msgid "Before removing playlists or tracks from a playlist" @@ -406,9 +401,8 @@ msgstr "Parcourir" #: ../data/gtkpod.glade.h:91 -#, fuzzy msgid "Cache directory:" -msgstr "Ajouter un _répertoire" +msgstr "Dossier de cache :" #: ../data/gtkpod.glade.h:92 msgid "Calendar" @@ -441,11 +435,11 @@ #: ../data/gtkpod.glade.h:99 msgid "Command for 'Enqueue':" -msgstr "Ligne de commande pour «Ajouter à la file d'attente» :" +msgstr "Ligne de commande pour « Ajouter à la file d'attente » :" #: ../data/gtkpod.glade.h:100 msgid "Command for 'Play now':" -msgstr "Ligne de commande pour «Jouer maintenant» :" +msgstr "Ligne de commande pour « Jouer maintenant » :" #. 5 #: ../data/gtkpod.glade.h:101 ../src/display_spl.c:97 @@ -455,14 +449,14 @@ #: ../data/gtkpod.glade.h:102 msgid "Confirm before removing tracks from the iPod or repository" -msgstr "Confirmer avant de supprimer les morceaux de l'iPod ou du dépot" +msgstr "Confirmer avant de supprimer les morceaux de l'iPod ou du dépôt" #: ../data/gtkpod.glade.h:103 msgid "" "Confirm before removing tracks from the iPod or repository\n" "when syncing playlists" msgstr "" -"Confirmer avant de supprimer les morceaux de l'iPod ou du dépot\n" +"Confirmer avant de supprimer les morceaux de l'iPod ou du dépôt\n" "lors de la synchronisation des listes" #: ../data/gtkpod.glade.h:105 @@ -483,7 +477,7 @@ #: ../data/gtkpod.glade.h:109 msgid "Conversion Progress Display" -msgstr "" +msgstr "Afficher une boîte de dialogue de barre de progression" #: ../data/gtkpod.glade.h:110 msgid "Cover" @@ -499,7 +493,7 @@ #: ../data/gtkpod.glade.h:113 msgid "Create _Playlist File" -msgstr "Créer un _fichier de liste" +msgstr "Créer un fichier de _liste" #: ../data/gtkpod.glade.h:114 msgid "Credits" @@ -514,13 +508,12 @@ msgstr "Supprimer le dépot" #: ../data/gtkpod.glade.h:117 -#, fuzzy msgid "" "Delete tracks that are no longer present from the\n" "iPod or repository" msgstr "" "Effacer les morceaux qui ne sont plus présents\n" -"dans l'iPod ou le dépot" +"dans l'iPod ou le dépôt" #: ../data/gtkpod.glade.h:119 msgid "Deleted tracks" @@ -607,7 +600,7 @@ #: ../data/gtkpod.glade.h:132 msgid "Display conversion log" -msgstr "" +msgstr "Afficher les traces des conversions" #: ../data/gtkpod.glade.h:133 msgid "Display info about detected duplicates" @@ -632,7 +625,7 @@ #: ../data/gtkpod.glade.h:138 msgid "Display toolbar..." -msgstr "Afficher la barre d'outils..." +msgstr "Afficher la barre d'outils…" #: ../data/gtkpod.glade.h:139 msgid "Display tooltips in main window" @@ -664,13 +657,13 @@ #: ../data/gtkpod.glade.h:146 msgid "Download Cover" -msgstr "" +msgstr "Télécharger la pochette" #: ../data/gtkpod.glade.h:147 -#, fuzzy msgid "Duplicate Recognition is based on a (modified) sha1 hash over the file." msgstr "" -"La détection de doublons est basée sur la somme de contrôle md5 des fichiers." +"La détection de doublons est basée sur la somme de contrôle sha1 des " +"fichiers." #: ../data/gtkpod.glade.h:148 msgid "Edit Repository/iPod Options" @@ -701,11 +694,8 @@ msgstr "Masque(s) d'exclusion de fichiers :" #: ../data/gtkpod.glade.h:155 -#, fuzzy msgid "Export can be continued at a later time if canceled." -msgstr "" -"Appuyer sur le bouton pour Interrompre.\n" -"L'export peut être repris plus tard." +msgstr "L'export peut être repris plus tard après l'annulation." #: ../data/gtkpod.glade.h:156 msgid "File size" @@ -729,10 +719,9 @@ #: ../data/gtkpod.glade.h:161 msgid "Find _New" -msgstr "" +msgstr "Trouver des _Nouveaux" #: ../data/gtkpod.glade.h:162 -#, fuzzy msgid "" "Find orphan files (files with no track info in DB) and dangling tracks " "(tracks with no corresponding files on iPod)" @@ -741,13 +730,12 @@ "et les morceaux fictifs (morceaux sans fichier correspondant sur l'iPod)." #: ../data/gtkpod.glade.h:163 -#, fuzzy msgid "First try <i>folder.jpg</i>, then <i><artist>.jpg</i>" msgstr "Essaye <i>répertoire.jpg</i>, puis <i><artiste>.jpg</i>" #: ../data/gtkpod.glade.h:164 msgid "Flac with :" -msgstr "" +msgstr "FLAC avec :" #: ../data/gtkpod.glade.h:166 #, no-c-format @@ -755,8 +743,8 @@ "For example, 'xmms %s' will clear xmms' current playlist, add the selected " "tracks and start playing." msgstr "" -"Par exemple «xmms %s» videra la liste de lecture actuelle de xmms, ajoutera " -"les morceaux sélectionnés et commencera la lecture." +"Par exemple « xmms %s » videra la liste de lecture actuelle de xmms, " +"ajoutera les morceaux sélectionnés et commencera la lecture." #: ../data/gtkpod.glade.h:168 #, no-c-format @@ -764,8 +752,8 @@ "For example, 'xmms -e %s' will append (enqueue) the selected tracks to xmms' " "current playlist." msgstr "" -"Par exemple «xmms -e %s» ajoutera à la liste de lecture de xmms les morceaux " -"sélectionnés." +"Par exemple « xmms -e %s » ajoutera à la liste de lecture de xmms les " +"morceaux sélectionnés." #: ../data/gtkpod.glade.h:169 ../src/display_sorttabs.c:2966 #: ../src/display_spl.c:89 ../src/misc_conversion.c:63 @@ -777,7 +765,6 @@ msgstr "Grouper les artistes pour les CDs de compilation" #: ../data/gtkpod.glade.h:171 -#, fuzzy msgid "" "Highly recommended for faster import when taking advantage of the " "duplication recognition. Also, having the PC filenames allows writing " @@ -788,7 +775,8 @@ "Cette option est plus que recommandée pour des raisons de performance lors " "de l'import en prenant en compte les doublons. De plus, cela permet de " "mettre à jour les attributs ID3 des fichiers sur disque, et de restaurer le " -"contenu de votre iPod en cas de corruption du système de fichiers." +"contenu de votre iPod en cas de corruption du système de fichiers (change " +"l'entrée « transferred= » dans la sauvegarde de la base de données)." #: ../data/gtkpod.glade.h:172 ../src/context_menus.c:682 #: ../src/context_menus.c:700 ../src/context_menus.c:824 @@ -874,8 +862,8 @@ "Displayed Track Order' from the 'Edit' menu or select 'Auto Store' below." msgstr "" "Afin de trier par ordre alphabétique sur l'iPod, vous devez cliquer sur le " -"menu «Édition» puis «Sauver l'ordre de tri des morceaux affichés» ou " -"l'option «Sauver automatiquement» ci-dessus." +"menu « Édition » puis « Sauver l'ordre de tri des morceaux affichés » ou " +"l'option « Sauver automatiquement » ci-dessus." #: ../data/gtkpod.glade.h:183 msgid "Initialize iPod" @@ -907,11 +895,11 @@ #: ../data/gtkpod.glade.h:190 msgid "M4A with :" -msgstr "" +msgstr "M4A avec :" #: ../data/gtkpod.glade.h:191 msgid "MP3 with :" -msgstr "" +msgstr "MP3 avec :" #: ../data/gtkpod.glade.h:192 msgid "Match al_l of the following" @@ -927,11 +915,11 @@ #: ../data/gtkpod.glade.h:195 msgid "Maximum number of background threads:" -msgstr "" +msgstr "Nombre maximum de threads en arrière-plan :" #: ../data/gtkpod.glade.h:196 msgid "Maximum size of cache directory (in GB):" -msgstr "" +msgstr "Taille maximale du dossier cache (en Go) :" #: ../data/gtkpod.glade.h:197 msgid "Model:" @@ -1083,7 +1071,7 @@ #: ../data/gtkpod.glade.h:219 msgid "Ogg with :" -msgstr "" +msgstr "Ogg avec :" #: ../data/gtkpod.glade.h:220 msgid "On startup automatically sync with playlist directories" @@ -1129,7 +1117,7 @@ #: ../data/gtkpod.glade.h:230 msgid "Password:" -msgstr "" +msgstr "Mot de passe :" #: ../data/gtkpod.glade.h:231 msgid "Path:" @@ -1177,9 +1165,8 @@ msgstr "Préférences" #: ../data/gtkpod.glade.h:242 -#, fuzzy msgid "Progress Information" -msgstr "Information" +msgstr "Afficher des informations de progression" #: ../data/gtkpod.glade.h:243 msgid "Random Playlist from Displayed Tracks" @@ -1229,9 +1216,8 @@ msgstr "Enregistrer" #: ../data/gtkpod.glade.h:254 -#, fuzzy msgid "Scrobble Tracks?" -msgstr "Morceaux sélec_tionnés" +msgstr "« scrobbling » des morceaux ?" #: ../data/gtkpod.glade.h:255 msgid "Select '-1' for no upper limit." @@ -1319,21 +1305,18 @@ msgstr "Morceaux sélectionnés de la liste de lecture" #: ../data/gtkpod.glade.h:276 -#, fuzzy msgid "Semicolon separated list of file exclusion masks, e.g. '*.mp3'" msgstr "" -"Liste de fichiers à exclure séparés par des points-virgules, par exemple «*." -"mp3»" +"Liste de fichiers à exclure séparés par des points-virgules, par exemple « *." +"mp3 »" #: ../data/gtkpod.glade.h:277 -#, fuzzy msgid "Set Cover Art from _File" -msgstr "Modifier la pochette" +msgstr "Pochette à partir du _fichier" #: ../data/gtkpod.glade.h:278 -#, fuzzy msgid "Set Cover Art from _Web" -msgstr "Modifier la pochette" +msgstr "Pochette depuis le _Web" #: ../data/gtkpod.glade.h:279 msgid "Set mountpoint or edit repository options" @@ -1349,10 +1332,10 @@ "the Tools Menu. If this is set, missing normalization data for .m4a and .m4b " "files will be calculated and written to your music file using this command." msgstr "" -"Choisissez «aacgain -q -k» pour la fonctionnalité «Normaliser le volume» du " -"menu Outils. Si ceci est validé, les données manquantes de normalisation des " -"fichiers .m4a et .m4b seront calculées et ajoutées aux fichiers avec cette " -"commande." +"Choisissez « aacgain -q -k » pour la fonctionnalité « Normaliser le volume » " +"du menu Outils. Si ceci est validé, les données manquantes de normalisation " +"des fichiers .m4a et .m4b seront calculées et ajoutées aux fichiers avec " +"cette commande." #: ../data/gtkpod.glade.h:282 msgid "" @@ -1360,29 +1343,31 @@ "the Tools Menu. If this is set, missing normalization data for mp3 files " "will be calculated and written to your mp3 file using this command." msgstr "" -"Choisissez «mp3gain -q -k» pour la fonctionnalité «Normaliser le volume» du " -"menu Outils. Si ceci est validé, les données manquantes de normalisation des " -"fichiers MP3 seront calculées et ajoutées aux fichiers avec cette commande." +"Choisissez « mp3gain -q -k » pour la fonctionnalité « Normaliser le volume » " +"du menu Outils. Si ceci est validé, les données manquantes de normalisation " +"des fichiers MP3 seront calculées et ajoutées aux fichiers avec cette " +"commande." #: ../data/gtkpod.glade.h:283 msgid "Set this to your last.fm password" -msgstr "" +msgstr "Remplir avec le mot de passe last.fm" #: ../data/gtkpod.glade.h:284 msgid "Set this to your last.fm username" -msgstr "" +msgstr "Remplir avec le nom d'utilisateur last.fm" #: ../data/gtkpod.glade.h:285 msgid "" "Set to 0 to effectively disable caching (a maximum of one track will be " "cached at a time)." msgstr "" +"Mettre à 0 pour inhiber le cache (un morceau au maximum dans le cache)." #: ../data/gtkpod.glade.h:286 msgid "" "Set to 0 to use as many background threads as CPUs are available on your " "system." -msgstr "" +msgstr "Mettre à 0 pour utiliser autant de « threads » que possible." #: ../data/gtkpod.glade.h:287 msgid "Show information about problems when accessing mserv" @@ -1427,8 +1412,8 @@ "Specify exact path including command line options. '%i' will be replaced " "with the mount point of the iPod." msgstr "" -"Indiquer le chemin exact ainsi que les paramètres de ligne de commande. «%i» " -"sera remplacé par le point de montage de l'iPod." +"Indiquer le chemin exact ainsi que les paramètres de ligne de commande. « %" +"i » sera remplacé par le point de montage de l'iPod." #: ../data/gtkpod.glade.h:298 msgid "Specify interval" @@ -1475,9 +1460,10 @@ "The output of the background conversion scripts is copied below. Each page " "of the notebook corresponds to one background thread." msgstr "" +"La sortie du script de conversion est donnée ci-dessous. Chaque onglet " +"correspond à une tâche d'arrière-plan." #: ../data/gtkpod.glade.h:308 -#, fuzzy msgid "" "The tags are written to the files on your harddrive and on the iPod (if " "available)." @@ -1492,7 +1478,7 @@ #: ../data/gtkpod.glade.h:310 msgid "This is the same option as in 'Edit/Delete Confirmation'" -msgstr "C'est la même option que dans «Édition/Confirmation de suppression»" +msgstr "C'est la même option que dans « Édition/Confirmation de suppression »" #: ../data/gtkpod.glade.h:311 msgid "" @@ -1508,7 +1494,7 @@ #: ../data/gtkpod.glade.h:312 msgid "This option will be re-activated when you upgrade gtkpod." -msgstr "Cette option se réactivera quans vous mettrez à jour gtkpod" +msgstr "Cette option se réactivera quand vous mettrez à jour gtkpod" #: ../data/gtkpod.glade.h:313 msgid "Time:" @@ -1549,6 +1535,9 @@ "iPod repository. Otherwise they will be transferred when ejecting the " "contents of the iPod completely unchanged until then." msgstr "" +"Les morceaux seront copiés en tâche de fond dès qu'ils sont ajoutés au dépôt " +"d'un iPod. Dans le cas contraire ils seront copiés uniquement à l'éjection " +"du iPod." #: ../data/gtkpod.glade.h:322 msgid "Tracks in Selected Tab _Entry" @@ -1561,6 +1550,8 @@ #: ../data/gtkpod.glade.h:324 msgid "Transfer tracks to the iPod in the background" msgstr "" +"Confirmer avant de supprimer les morceaux de l'iPod ou du dépot\n" +"lors de la synchronisation des listes" #: ../data/gtkpod.glade.h:325 msgid "Translators" @@ -1575,7 +1566,6 @@ "différent doit être créé." #: ../data/gtkpod.glade.h:327 -#, fuzzy msgid "Undo _Track" msgstr "Annuler pour le _Morceau" @@ -1597,21 +1587,19 @@ #: ../data/gtkpod.glade.h:332 msgid "Use 'Multi-Edit' also for title field" -msgstr "Utiliser «Édition multiple» aussi pour les titres" +msgstr "Utiliser « Édition multiple » également pour les titres" #: ../data/gtkpod.glade.h:333 msgid "Use 'Multi-Edit' for tracks selections" -msgstr "Utiliser «Édition multiple» pour les morceaux sélectionnés" +msgstr "Utiliser « Édition multiple » pour les morceaux sélectionnés" #: ../data/gtkpod.glade.h:334 -#, fuzzy msgid "Use <i><Album>.jpg</i> in the parent directory" msgstr "Utilise <i><Album>.jpg</i> dans le répertoire parent" #: ../data/gtkpod.glade.h:335 -#, fuzzy msgid "Use <i><Album>.jpg</i>, <i><Album>.png</i>..." -msgstr "Utilise <i><Album>.jpg</i>; <i><Album>.png</i> ..." +msgstr "Utilise <i><Album>.jpg</i>; <i><Album>.png</i>…" #: ../data/gtkpod.glade.h:336 msgid "Use <i>folder.jpg</i> as cover art." @@ -1619,7 +1607,7 @@ #: ../data/gtkpod.glade.h:337 msgid "Use <i>folder.jpg</i>, <i>folder.png</i>..." -msgstr "Utilise <i>répertoire.jpg</i>, <i>répertoire.png</i> ..." +msgstr "Utilise <i>répertoire.jpg</i>, <i>répertoire.png</i>…" #: ../data/gtkpod.glade.h:338 msgid "Use mserv database to fill additional information" @@ -1631,18 +1619,17 @@ "for this filename." msgstr "" "Utilise le jeu de caractère sélectionné pour ce fichier\n" -"(voir la section ci-dessus : «Ajout/Mise à jour/Synchronisation»)." +"(voir la section ci-dessus : « Ajout/Mise à jour/Synchronisation »)." #: ../data/gtkpod.glade.h:341 msgid "" "Use selected encoding (on the 'General' page)\n" "when writing tags" msgstr "" -"Utiliser le jeu de caractère sélectionné (dans l'onglet «Général») pour " +"Utiliser le jeu de caractère sélectionné (dans l'onglet « Général ») pour " "l'écriture des attributs" #: ../data/gtkpod.glade.h:343 -#, fuzzy msgid "Use selected encoding also when updating or syncing tracks" msgstr "" "Le jeu de caractères sélectionné sera utilisé pour\n" @@ -1672,7 +1659,7 @@ #: ../data/gtkpod.glade.h:348 msgid "WAV with :" -msgstr "" +msgstr "WAV avec :" #: ../data/gtkpod.glade.h:349 msgid "" @@ -1715,16 +1702,15 @@ #: ../data/gtkpod.glade.h:355 msgid "Write all changes made to the disk and the iPod(s)." msgstr "" -"Ecrire toutes les modifications faites dans le disque et le(s) iPod(s)." +"Écrire toutes les modifications faites dans le disque et le(s) iPod(s)." #: ../data/gtkpod.glade.h:356 -#, fuzzy msgid "" "Write extended information (PC filenames, SHA1 hashes,\n" "encoding...). Recommended." msgstr "" "Écrire les infos supplémentaires (noms de fichiers PC,\n" -"somme de contrôle MD5, jeu de caractères). Recommandé." +"somme de contrôle SHA1, jeu de caractères…). Recommandé." #: ../data/gtkpod.glade.h:358 msgid "" @@ -1752,7 +1738,7 @@ #: ../data/gtkpod.glade.h:363 msgid "_Conversion Log" -msgstr "" +msgstr "_Trace des conversions" #: ../data/gtkpod.glade.h:364 msgid "_Create Playlists" @@ -1812,7 +1798,7 @@ #: ../data/gtkpod.glade.h:378 msgid "_Last.FM" -msgstr "" +msgstr "_Last.FM" #: ../data/gtkpod.glade.h:379 msgid "_Less Sort Tabs" @@ -1836,7 +1822,7 @@ #: ../data/gtkpod.glade.h:384 msgid "_Misc." -msgstr "" +msgstr "_Divers" #: ../data/gtkpod.glade.h:385 msgid "_More Sort Tabs" @@ -1864,7 +1850,7 @@ #: ../data/gtkpod.glade.h:391 msgid "_Podcasts" -msgstr "" +msgstr "_Podcasts" #: ../data/gtkpod.glade.h:392 msgid "_Prefer Local" @@ -1872,12 +1858,11 @@ #: ../data/gtkpod.glade.h:393 msgid "_Previous" -msgstr "" +msgstr "_Précédent" #: ../data/gtkpod.glade.h:394 -#, fuzzy msgid "_Remove Cover Art" -msgstr "Supprimer la pochette" +msgstr "_Supprimer la pochette" #: ../data/gtkpod.glade.h:395 msgid "_Save Changes" @@ -1892,9 +1877,8 @@ msgstr "_Tri" #: ../data/gtkpod.glade.h:398 -#, fuzzy msgid "_Synchronize Playlist with Dir(s)" -msgstr "Sync les listes avec le(s) répertoire(s)" +msgstr "_Sync les listes avec le(s) répertoire(s)" #: ../data/gtkpod.glade.h:399 msgid "_Toolbar" @@ -1921,9 +1905,8 @@ msgstr "_Mettre à jour les morceaux à partir des fichiers" #: ../data/gtkpod.glade.h:405 -#, fuzzy msgid "_Video" -msgstr "_Affichage" +msgstr "_Vidéo" #: ../data/gtkpod.glade.h:406 msgid "_View" @@ -1974,8 +1957,8 @@ "operation. 'System Charset' is the charset used by your current locale." msgstr "" "gtkpod utilisera le jeu de caractères spécifié ici pour les attributs ID3 et " -"les fichiers. Vous pouvez le modifier entre chaque opération d'ajout. «Jeu " -"de caractères du système» est le jeu de caractère défini par les locales de " +"les fichiers. Vous pouvez le modifier entre chaque opération d'ajout. « Jeu " +"de caractères du système » est le jeu de caractère défini par les locales de " "votre système." #: ../data/gtkpod.glade.h:417 @@ -2002,9 +1985,8 @@ msgstr "Sauvegarde iTunesDB :" #: ../data/gtkpod.glade.h:425 -#, fuzzy msgid "label" -msgstr "label21" +msgstr "étiquette" #: ../data/gtkpod.glade.h:426 msgid "mserv Root:" @@ -2259,26 +2241,26 @@ #: ../src/context_menus.c:359 #, c-format msgid "Copied \"%s\" playlist to %s" -msgstr "" +msgstr "Copie liste de lecture « %s » vers %s" #: ../src/context_menus.c:398 -#, fuzzy, c-format +#, c-format msgid "Copied %d track to '%s'" msgid_plural "Copied %d tracks to '%s'" -msgstr[0] "%d morceau copiés sur %d." -msgstr[1] "%d morceaux copiés sur %d." +msgstr[0] "Extraction de %d morceau %d vers « %s »" +msgstr[1] "Extraction de %d morceaux vers « %s »" #: ../src/context_menus.c:426 #, c-format msgid "Copied '%s' playlist to '%s' in '%s'" -msgstr "" +msgstr "Extraction liste de lecture « %s » vers « %s » dans « %s »" #: ../src/context_menus.c:459 -#, fuzzy, c-format +#, c-format msgid "Copied %d track to '%s' in '%s'" msgid_plural "Copied %d tracks to %s in '%s'" -msgstr[0] "%d morceau supprimé de la liste de lecture «%s»" -msgstr[1] "%d morceaux supprimés de la liste de lecture «%s»" +msgstr[0] "Extraction de %d morceau %d vers « %s » dans « %s »" +msgstr[1] "Extraction de %d morceaux %d vers « %s » dans « %s »" #: ../src/context_menus.c:619 ../src/tools.c:854 msgid "Play Now" @@ -2306,7 +2288,7 @@ #: ../src/context_menus.c:666 msgid "Sync Playlist with Dir(s)" -msgstr "Sync les listes avec le(s) répertoire(s)" +msgstr "Sync. les listes avec le(s) répertoire(s)" #: ../src/context_menus.c:676 msgid "Remove All Tracks from iPod" @@ -2329,9 +2311,8 @@ msgstr "Editer les propriétes de l'iPod" #: ../src/context_menus.c:732 -#, fuzzy msgid "Edit Repository Properties" -msgstr "Editer les propriétes de l'iPod" +msgstr "Éditer les propriétés du dépôt" #: ../src/context_menus.c:739 msgid "Edit Playlist Properties" @@ -2339,16 +2320,15 @@ #: ../src/context_menus.c:767 msgid "View Full Size Artwork" -msgstr "" +msgstr "Voir les pochettes en taille réelle" #: ../src/context_menus.c:774 -#, fuzzy msgid "Select Cover From File" -msgstr "Supprimer de l'iPod" +msgstr "Choisir la pochette à partir d'un fichier" #: ../src/context_menus.c:781 msgid "Find Cover on Web" -msgstr "" +msgstr "Chercher la pochette sur le web" #: ../src/context_menus.c:794 msgid "Load iPod" @@ -2391,71 +2371,64 @@ msgstr "Trier" #: ../src/context_menus.c:949 ../src/context_menus.c:998 -#, fuzzy msgid "Copy selected playlist to..." -msgstr "_Liste de lecture sélectionnée" +msgstr "Copier la liste de lecture sélectionné vers …" #: ../src/context_menus.c:1051 -#, fuzzy msgid "Copy selected track(s) to..." -msgstr "Morceaux supprimés" +msgstr "Copier le(s) morceau(x) sélectionné(s) vers …" #: ../src/date_parser.l:269 #, c-format msgid "Date format error: unrecognized character: '%s'\n" -msgstr "Erreur dans le format de date : caractère inconnu : «%s»\n" +msgstr "Erreur dans le format de date : caractère inconnu : « %s »\n" #: ../src/details.c:81 -#, fuzzy msgid "Audio/Video" -msgstr "Racine musique :" +msgstr "Audio/Vidéo" #: ../src/details.c:82 msgid "Audio" -msgstr "" +msgstr "Audio" #: ../src/details.c:83 -#, fuzzy msgid "Video" -msgstr "_Affichage" +msgstr "Vidéo" #: ../src/details.c:84 -#, fuzzy msgid "Podcast" -msgstr "URL du podcast" +msgstr "Podcast" #: ../src/details.c:85 msgid "Video Podcast" -msgstr "" +msgstr "Podcast vidéo" #: ../src/details.c:86 msgid "Audiobook" -msgstr "" +msgstr "Livre Audio" #: ../src/details.c:87 ../src/display_spl.c:209 ../src/display_spl.c:218 -#, fuzzy msgid "Music Video" -msgstr "Racine musique :" +msgstr "Vidéo musicale" #: ../src/details.c:88 ../src/display_spl.c:107 ../src/display_spl.c:210 #: ../src/display_spl.c:219 ../src/misc_conversion.c:101 msgid "TV Show" -msgstr "" +msgstr "Émission télé" #: ../src/details.c:89 -#, fuzzy msgid "TV Show & Music Video" -msgstr "Racine musique :" +msgstr "Émission télé & vidéo musicale" #: ../src/details.c:826 #, c-format msgid "%s (image data corrupted or unreadable)" -msgstr "" +msgstr "%s (données de l'image corrompues ou invalides)" #: ../src/details.c:963 #, c-format msgid "Please report unknown mediatype %x\n" -msgstr "" +msgstr "Type de média %x inconnu\n" #: ../src/details.c:1396 msgid "<b>n/a</b>" @@ -2489,9 +2462,8 @@ msgstr "Supprimer les morceaux de quelle zone de tri du disque dur ?" #: ../src/display.c:912 -#, fuzzy msgid "Remove tracks in selected entry of which filter tab from playlist?" -msgstr "Supprimer les morceaux de quelle zone de tri de liste de lecture ?" +msgstr "Supprimer les morceaux de quelle zone de tri de la liste de lecture ?" #: ../src/display.c:939 ../src/display.c:977 #, c-format @@ -2499,7 +2471,7 @@ "iPod at '%s' is not loaded.\n" "Please load it first." msgstr "" -"L'iPod en «%s» n'est pas chargé.\n" +"L'iPod en « %s » n'est pas chargé.\n" "Charger d'abord." #: ../src/display.c:1014 ../src/display.c:1041 @@ -2531,12 +2503,12 @@ #: ../src/display_coverart.c:1731 msgid "Failed to remove the album from the album hash store." -msgstr "" +msgstr "Impossible d'enlever l'album de la table de hachage des albums." #: ../src/display_itdb.c:376 #, c-format msgid "Failed to set cover art: '%s'\n" -msgstr "Impossible d'écrire la pochette :«%s»\n" +msgstr "Impossible d'écrire la pochette : « %s »\n" #: ../src/display_itdb.c:858 ../src/display_itdb.c:991 msgid "Local" @@ -2546,7 +2518,7 @@ #: ../src/display_itdb.c:866 ../src/display_itdb.c:989 #: ../src/display_itdb.c:1017 msgid "Podcasts" -msgstr "" +msgstr "Podcasts" #: ../src/display_itdb.c:875 ../src/display_itdb.c:993 #: ../src/repository.c:1186 @@ -2556,7 +2528,7 @@ #: ../src/display_itdb.c:1076 #, c-format msgid "Increased playcount for '%s'" -msgstr "Compteur de lecture incrémenté pour «%s»" +msgstr "Compteur de lecture incrémenté pour « %s »" #. give a notice on the statusbar -- otherwise the user #. * will never know why the drag is not possible @@ -2587,15 +2559,15 @@ #: ../src/display_sorttabs.c:473 msgid "'Played' condition ignored because of error." -msgstr "Condition «Joué le» ignorée à cause d'une erreur." +msgstr "Condition « Joué le » ignorée à cause d'une erreur." #: ../src/display_sorttabs.c:476 msgid "'Modified' condition ignored because of error." -msgstr "Condition «Modifié le» ignorée à cause d'une erreur." +msgstr "Condition « Modifié le » ignorée à cause d'une erreur." #: ../src/display_sorttabs.c:479 msgid "'Added' condition ignored because of error." -msgstr "Condition «Ajouté le» ignorée à cause d'une erreur." +msgstr "Condition « Ajouté le » ignorée à cause d'une erreur." #: ../src/display_sorttabs.c:1563 ../src/misc_conversion.c:59 msgid "All" @@ -2713,26 +2685,23 @@ #: ../src/display_spl.c:106 msgid "Video Kind" -msgstr "" +msgstr "Type de vidéo" #: ../src/display_spl.c:108 -#, fuzzy msgid "Season number" -msgstr "N° de disque" +msgstr "Numéro de saison" #: ../src/display_spl.c:109 msgid "Skip count" -msgstr "" +msgstr "Nombre de fois ignoré" #: ../src/display_spl.c:110 -#, fuzzy msgid "Last skipped" -msgstr "Dernière fois joué" +msgstr "Dernière fois ignoré" #: ../src/display_spl.c:111 -#, fuzzy msgid "Album artist" -msgstr "artiste" +msgstr "Artiste de l'album" #: ../src/display_spl.c:117 msgid "contains" @@ -2797,9 +2766,8 @@ msgstr "n'est pas rempli" #: ../src/display_spl.c:171 -#, fuzzy msgid "Not supported" -msgstr "Jamais écoutés" +msgstr "Non supporté" #: ../src/display_spl.c:178 msgid "minutes" @@ -2870,9 +2838,8 @@ msgstr "les moins bien notés" #: ../src/display_spl.c:208 ../src/display_spl.c:217 -#, fuzzy msgid "Movie" -msgstr "Modifié le" +msgstr "Film" #: ../src/display_spl.c:1162 ../src/display_spl.c:1177 msgid "to" @@ -2954,7 +2921,7 @@ msgstr "Ctrl. Son" #: ../src/fetchcover.c:638 -#, c-format +#, fuzzy, c-format msgid "" "The picture file %s already exists. \n" "This may be associated with other music files in the directory. \n" @@ -2964,6 +2931,15 @@ "- Clicking No will save the file with a unique file name. \n" "- Clicking Cancel will abort the fetchcover operation." msgstr "" +"Le fichier d'image %s existe déjà.\n" +"Il peut être déjà associé avec d'autres morceaux de musique dans le " +"dossier.\n" +"\n" +"- avec le bouton Oui le fichier sera écrasé, avec la possibilité d'avoir\n" +" l'association de ce fichier de pochette avec d'autres morceaux\n" +" de musique dans ce même dossier.\n" +"- avec le bouton Non le fichier sera enregistré sous un nom unique.\n" +"- avec le bouton Annuler l'opération de gestion de la pochette sera annulée." #: ../src/file.c:236 #, c-format @@ -2971,7 +2947,7 @@ "'%s' is a directory, not a playlist file.\n" "\n" msgstr "" -"«%s» est un répertoire, pas un fichier de liste.\n" +"« %s » est un répertoire, pas un fichier de liste.\n" "\n" #: ../src/file.c:266 @@ -2980,7 +2956,7 @@ "'%s' is a not a known playlist file.\n" "\n" msgstr "" -"«%s» n'est pas un fichier connu de liste\n" +"« %s » n'est pas un fichier de liste reconnu\n" "\n" #: ../src/file.c:283 @@ -2989,24 +2965,24 @@ "Cannot open '%s' for reading.\n" "\n" msgstr "" -"Ne peut ouvrir en lecture le fichier «%s».\n" +"Ne peut ouvrir en lecture le fichier « %s ».\n" "\n" #: ../src/file.c:369 #, c-format msgid "Skipping '%s' because it is a directory.\n" -msgstr "Saut de «%s» parce qu'il s'agit d'un répertoire.\n" +msgstr "Saut de « %s » parce qu'il s'agit d'un répertoire.\n" #: ../src/file.c:374 #, c-format msgid "Skipping '%s' to avoid adding playlist file recursively\n" msgstr "" -"Saut de «%s» pour éviter d'ajouter une liste de lecture récursivement\n" +"Saut de « %s » pour éviter d'ajouter une liste de lecture récursivement\n" #: ../src/file.c:629 #, c-format msgid "Unknown token '%s' in template '%s'\n" -msgstr "Paramètre «%s» inconnu dans le modèle «%s»\n" +msgstr "Paramètre « %s » inconnu dans le modèle « %s »\n" #: ../src/file.c:922 #, c-format @@ -3016,7 +2992,7 @@ #: ../src/file.c:981 #, c-format msgid "No information found for user '%s' in '%s'" -msgstr "Aucune info pour l'utilisateur «%s» dans «%s»" +msgstr "Aucune info pour l'utilisateur « %s » dans « %s »" #: ../src/file.c:990 #, c-format @@ -3033,14 +3009,15 @@ msgid "" "The following track could not be processed (file does not exist): '%s'\n" msgstr "" -"Le morceau suivant ne peut pas être mis à jour (fichier inexistant) : «%s»\n" +"Le morceau suivant ne peut pas être mis à jour (fichier inexistant) : « %" +"s »\n" #: ../src/file.c:1208 #, c-format msgid "The following track could not be processed (filetype unknown): '%s'\n" msgstr "" -"Le morceau suivant ne peut pas être mis à jour (type de fichier inconnu) : «%" -"s»\n" +"Le morceau suivant ne peut pas être mis à jour (type de fichier inconnu) : " +"« %s »\n" #: ../src/file.c:1306 #, c-format @@ -3049,7 +3026,7 @@ "failed): '%s'\n" msgstr "" "Le morceau suivant ne peut pas être mis à jour (type de fichier connu mais " -"échec de l'analyse) : «%s»\n" +"échec de l'analyse) : « %s »\n" #: ../src/file.c:1336 ../src/file.c:1390 msgid "Nothing to update" @@ -3143,19 +3120,18 @@ #. update not successful -- log this track for later display #: ../src/file.c:1776 -#, fuzzy msgid "update failed (format not supported?)" -msgstr "echec de la mise à jour (format non supporté ?)" +msgstr "échec de la mise à jour (format non supporté ?)" #: ../src/file.c:1861 ../src/misc_playlist.c:916 #, c-format msgid "Processing '%s'..." -msgstr "Traitement de «%s» ..." +msgstr "Traitement de « %s » …" #: ../src/file.c:1867 -#, fuzzy, c-format +#, c-format msgid "Skipping '%s' because it matches exclude masks.\n" -msgstr "Saut de «%s» parce qu'il s'agit d'un répertoire.\n" +msgstr "Saut de « %s » parce qu'il correspond à un masque d'exclusion.\n" #: ../src/file.c:1987 ../src/misc_track.c:1763 ../src/misc_track.c:1868 #, c-format @@ -3163,7 +3139,7 @@ "Podcast already present: '%s'\n" "\n" msgstr "" -"Podcast déjà présent : «%s»\n" +"Podcast déjà présent : « %s »\n" "\n" #: ../src/file.c:2052 @@ -3178,23 +3154,23 @@ #: ../src/file.c:2104 ../src/file.c:2118 #, c-format msgid "Couldn't change tags of file: %s\n" -msgstr "Impossible de changer les attributs du fichier : %s\n" +msgstr "Impossible de changer les attributs du fichier : « %s »\n" #: ../src/file.c:2220 #, c-format msgid "Could not open '%s' for reading and writing.\n" -msgstr "Impossible d'ouvrir en lecture/écriture le fichier «%s».\n" +msgstr "Impossible d'ouvrir en lecture/écriture le fichier « %s ».\n" #: ../src/file.c:2227 #, c-format msgid "Could not obtain lock on '%s'.\n" -msgstr "Impossible de verrouiller «%s».\n" +msgstr "Impossible de verrouiller « %s ».\n" #. error! #: ../src/file.c:2244 ../src/file.c:2253 ../src/file.c:2264 ../src/file.c:2274 #, c-format msgid "Malformed line in '%s': %s\n" -msgstr "Ligne incomplète dans «%s» : %s\n" +msgstr "Ligne incomplète dans « %s » : %s\n" #. gint id, #. gboolean modal, @@ -3214,7 +3190,7 @@ #: ../src/file.c:2321 #, c-format msgid "Error writing to '%s'.\n" -msgstr "Erreur d'écriture du fichier «%s».\n" +msgstr "Erreur d'écriture du fichier « %s ».\n" #: ../src/file.c:2378 ../src/tools.c:271 #, c-format @@ -3232,38 +3208,38 @@ #: ../src/file_convert.c:316 msgid "Summary status of conversion processes" -msgstr "" +msgstr "État de la conversion" #: ../src/file_convert.c:564 msgid "active" -msgstr "" +msgstr "actif" #: ../src/file_convert.c:569 msgid "inactive" -msgstr "" +msgstr "inactif" #: ../src/file_convert.c:580 #, c-format msgid "Active threads: %d. Scheduled tracks: %d." -msgstr "" +msgstr "threads actifs : %d. Morceaux prévus : %d." #: ../src/file_convert.c:1061 -#, fuzzy, c-format +#, c-format msgid "Original filename not available for '%s.'\n" -msgstr "Échec de la normalisation : fichier non disponible (%s).\n" +msgstr "Nom de fichier original introuvable pour « %s ».\n" #: ../src/file_convert.c:1076 #, c-format msgid "Filename '%s' is no longer valid for '%s'.\n" -msgstr "" +msgstr "Le nom de fichier « %s » n'est plus valide pour « %s ».\n" #: ../src/file_convert.c:1127 msgid "Ogg Vorbis" -msgstr "" +msgstr "Ogg Vorbis" #: ../src/file_convert.c:1133 msgid "FLAC" -msgstr "" +msgstr "Audio FLAC" #: ../src/file_convert.c:1188 #, c-format @@ -3272,33 +3248,35 @@ "Preferences to set up and turn on a suitable conversion script for '%s'.\n" "\n" msgstr "" +"Les fichiers de type « %s » ne sont pas reconnus par le iPod. Allez dans les " +"préférences pour configurer un script de conversion adéquat pour « %s ».\n" +"\n" #: ../src/file_convert.c:1274 -#, fuzzy msgid "No information available" -msgstr "pas de nom de fichier disponible" +msgstr "Pas d'information disponible." #: ../src/file_convert.c:1313 #, c-format msgid "Could not create '%s'. Filetype conversion will not work.\n" -msgstr "" +msgstr "Impossible de créer « %s ». La conversion ne fonctionnera pas.\n" #: ../src/file_convert.c:1631 ../src/file_convert.c:3040 -#, fuzzy, c-format +#, c-format msgid "" "Transfer of '%s' failed. %s\n" "\n" msgstr "" -"Échec de l'exécution de «%s».\n" +"Échec du transfert de « %s ». %s\n" "\n" #: ../src/file_convert.c:2035 ../src/file_convert.c:2313 -#, fuzzy, c-format +#, c-format msgid "" "Conversion of '%s' failed: '%s'.\n" "\n" msgstr "" -"Échec de l'exécution de «%s».\n" +"Échec de la conversion de « %s » : « %s ».\n" "\n" #: ../src/file_convert.c:2050 @@ -3307,6 +3285,8 @@ "Conversion of '%s' failed: '%s %s' returned exit status %d.\n" "\n" msgstr "" +"Échec de la conversion de « %s » : « %s %s » a un code de retour de %d.\n" +"\n" #: ../src/file_convert.c:2079 #, c-format @@ -3315,14 +3295,18 @@ "expected.\n" "\n" msgstr "" +"Échec de la conversion de « %s » : « %s %s » n'a pas retourné une extension " +"de fichier comme attendu.\n" +"\n" #: ../src/file_convert.c:2155 -#, fuzzy, c-format +#, c-format msgid "" "Conversion of '%s' failed: Could not access original file '%s' (%s).\n" "\n" msgstr "" -"Échec de l'exécution de «%s».\n" +"Échec de la conversion de « %s » : impossible d'accéder au fichier original " +"« %s » (%s).\n" "\n" #: ../src/file_convert.c:2210 @@ -3331,6 +3315,9 @@ "Conversion of '%s' failed: Could not create directory '%s'.\n" "\n" msgstr "" +"Échec de la conversion de « %s » : impossible de créer le répertoire « %" +"s ».\n" +"\n" #: ../src/file_convert.c:2344 #, c-format @@ -3338,6 +3325,8 @@ "Conversion of '%s' failed: '%s' returned exit status %d.\n" "\n" msgstr "" +"Échec de la conversion de « %s » : « %s » a un code de retour de %d.\n" +"\n" #: ../src/file_convert.c:2383 #, c-format @@ -3345,36 +3334,38 @@ "Conversion of '%s' failed: could not stat the converted file '%s'.\n" "\n" msgstr "" +"Échec de la conversion de « %s » : fichier résultat « %s » introuvable.\n" +"\n" #: ../src/file_export.c:182 #, c-format msgid "Skipping existing file with same length: '%s'\n" -msgstr "Saut du fichier existant de même taille : «%s»\n" +msgstr "Saut du fichier existant de même taille : « %s »\n" #: ../src/file_export.c:190 #, c-format msgid "Overwriting existing file: '%s'\n" -msgstr "Ecrasement du fichier existant : «%s»\n" +msgstr "Écrasement du fichier existant : « %s »\n" #: ../src/file_export.c:207 #, c-format msgid "Error copying '%s' to '%s': Permission Error (%s)\n" -msgstr "Impossible de copier «%s» vers «%s» : Autorisation refusée (%s)\n" +msgstr "Impossible de copier « %s » vers « %s » : Autorisation refusée (%s)\n" #: ../src/file_export.c:209 #, c-format msgid "Error copying '%s' to '%s' (%s)\n" -msgstr "Impossible de copier «%s» vers «%s» (%s)\n" +msgstr "Impossible de copier « %s » vers « %s » (%s)\n" #: ../src/file_export.c:217 #, c-format msgid "Unable to open '%s' for reading\n" -msgstr "Impossible d'ouvrir le fichier «%s» en lecture\n" +msgstr "Impossible d'ouvrir le fichier « %s » en lecture\n" #: ../src/file_export.c:327 #, c-format msgid "Could find file for '%s' on the iPod\n" -msgstr "Impossible de trouver le fichier pour «%s» sur l'iPod\n" +msgstr "Impossible de trouver le fichier pour « %s » sur l'iPod\n" #. create the dialog window #: ../src/file_export.c:395 ../src/tools.c:361 @@ -3387,12 +3378,12 @@ #: ../src/file_export.c:419 msgid "copying..." -msgstr "copie ..." +msgstr "copie …" #: ../src/file_export.c:476 #, c-format msgid "Failed to write '%s-%s'\n" -msgstr "Impossible d'écrire «%s-%s»\n" +msgstr "Impossible d'écrire « %s-%s »\n" #: ../src/file_export.c:489 #, c-format @@ -3458,17 +3449,17 @@ msgid "" "Could not open '%s' for writing (%s).\n" "\n" -msgstr "Ne peut ouvrir le fichier «%s» en lecture (%s).\n" +msgstr "Ne peut ouvrir le fichier « %s » en lecture (%s).\n" #: ../src/file_itunesdb.c:127 -#, fuzzy, c-format +#, c-format msgid "Matching SHA1 checksum for file %d/%d" -msgstr "Correspondance des sommes de contrôles MD5 pour le fichier %d/%d" +msgstr "Correspondance des sommes de contrôles SHA1 pour le fichier %d/%d" #: ../src/file_itunesdb.c:234 msgid "Could not open \"iTunesDB.ext\" for reading extended info.\n" msgstr "" -"Ne peut ouvrir le fichier «iTunesDB.ext» pour lire les infos étendues.\n" +"Ne peut ouvrir le fichier « iTunesDB.ext » pour lire les infos étendues.\n" #: ../src/file_itunesdb.c:241 msgid "Could not create hash value from itunesdb\n" @@ -3480,17 +3471,17 @@ msgstr "Erreur lors de la lecture des infos étendues : %s\n" #: ../src/file_itunesdb.c:274 -#, fuzzy, c-format +#, c-format msgid "" "iTunesDB '%s' does not match checksum in extended information file '%s'\n" "gtkpod will try to match the information using SHA1 checksums. This may take " "a long time.\n" "\n" msgstr "" -"La base iTunesDB «%s» ne correspond pas au hachage MD5 des infos étendues du " -"fichier «%s».\n" +"La base iTunesDB « %s » ne correspond pas à la somme de contrôle des infos " +"étendues du fichier « %s ».\n" "gtkpod essaiera de faire concorder l'information en utilisant les sommes de " -"contrôle MD5. Cela peut prendre du temps.\n" +"contrôle SHA1. Cela peut prendre du temps.\n" "\n" #: ../src/file_itunesdb.c:286 @@ -3500,7 +3491,7 @@ "Expected \"itunesdb_hash=\" but got:\"%s\"\n" msgstr "" "%s :\n" -"«itunesdb_hash=» attendue mais réception de : «%s»\n" +"« itunesdb_hash= » attendue mais réception de : « %s »\n" #: ../src/file_itunesdb.c:346 #, c-format @@ -3512,7 +3503,6 @@ "Erreur de format : %s\n" #: ../src/file_itunesdb.c:391 -#, fuzzy msgid "" "No SHA1 checksums on individual tracks are available.\n" "\n" @@ -3521,11 +3511,11 @@ "than gtkpod.\n" "\n" msgstr "" -"Pas de sommes de contrôle MD5 disponibles pour les morceaux.\n" +"Pas de sommes de contrôle SHA1 disponibles pour les morceaux.\n" "\n" "Pour éviter cette situation dans le futur, activez la détection des doublons " -"(afin de générer les sommes de contrôle MD5) ou bien éviter d'utiliser votre " -"iPod avec d'autres programmes que gtkpod.\n" +"(afin de générer les sommes de contrôle SHA1) ou bien évitez d'utiliser " +"votre iPod avec d'autres programmes que gtkpod.\n" "\n" #: ../src/file_itunesdb.c:455 @@ -3552,7 +3542,7 @@ "Offline iPod database import failed: '%s'\n" "\n" msgstr "" -"Échec de l'import de la base de l'iPod en mode déconnecté : «%s»\n" +"Échec de l'import de la base de l'iPod en mode déconnecté : « %s »\n" "\n" #: ../src/file_itunesdb.c:478 @@ -3561,7 +3551,7 @@ "Local database import failed: '%s'\n" "\n" msgstr "" -"Échec de l'import de la base de données locale : «%s»\n" +"Échec de l'import de la base de données locale : « %s »\n" "\n" #: ../src/file_itunesdb.c:485 @@ -3586,7 +3576,7 @@ "'%s' does not exist. Import aborted.\n" "\n" msgstr "" -"«%s» n'existe pas. Import annulé.\n" +"« %s » n'existe pas. Import annulé.\n" "\n" #: ../src/file_itunesdb.c:518 @@ -3603,7 +3593,7 @@ "iPod Database Import Failed: '%s'\n" "\n" msgstr "" -"Échec de l'import de la base de l'iPod : «%s»\n" +"Échec de l'import de la base de l'iPod : « %s »\n" "\n" #: ../src/file_itunesdb.c:538 @@ -3620,7 +3610,7 @@ "'%s' (or similar) does not exist. Import aborted.\n" "\n" msgstr "" -"«%s» (ou similaire) n'existe pas. Import annulé.\n" +"« %s » (ou similaire) n'existe pas. Import annulé.\n" "\n" #: ../src/file_itunesdb.c:863 @@ -3632,14 +3622,14 @@ "\n" "Do you want to create the directory structure now?\n" msgstr "" -"Impossible de trouver les répertoires système de l'iPod dans «%s».\n" -"Si vous êtes certain que le iPod est correctement monté en «%s», gtkpod peut " -"créer ces répertoires pour vous.\n" +"Impossible de trouver les répertoires système de l'iPod dans « %s ».\n" +"Si vous êtes certain que le iPod est correctement monté en « %s », gtkpod " +"peut créer ces répertoires pour vous.\n" #: ../src/file_itunesdb.c:1144 #, c-format msgid "Could not open \"%s\" for writing extended info.\n" -msgstr "Ne peut ouvrir en écriture le fichier d'infos étendues «%s».\n" +msgstr "Ne peut ouvrir en écriture le fichier d'infos étendues « %s ».\n" #: ../src/file_itunesdb.c:1159 msgid "Aborted writing of extended info.\n" @@ -3648,45 +3638,45 @@ #: ../src/file_itunesdb.c:1360 #, c-format msgid "%d%%" -msgstr "" +msgstr "%d%%" #: ../src/file_itunesdb.c:1374 -#, fuzzy, c-format +#, c-format msgid "%d%% (%d/%d %d:%02d:%02d left)" msgstr "%d%% (%d:%02d:%02d restant)" #: ../src/file_itunesdb.c:1416 msgid "Status: Deleting File" -msgstr "" +msgstr "État : suppression de fichier" #: ../src/file_itunesdb.c:1477 -#, fuzzy, c-format +#, c-format msgid "" "Could not remove the following file: '%s'\n" "\n" -msgstr "Ne peut ouvrir le fichier «%s» en lecture (%s).\n" +msgstr "" +"Impossible de supprimer le fichier : « %s »\n" +"\n" #: ../src/file_itunesdb.c:1585 -#, fuzzy msgid "" "The following track could not be converted successfully:\n" "\n" msgid_plural "" "The following tracks could not be converted successfully:\n" "\n" -msgstr[0] "Le morceau suivant ne peut pas être mis à jour." -msgstr[1] "Les %d morceaux suivants ne peuvent pas être mis à jour." +msgstr[0] "Le morceau suivant ne peut pas être converti :\n" +msgstr[1] "Les morceaux suivants ne peuvent pas être converti :\n" #: ../src/file_itunesdb.c:1595 -#, fuzzy msgid "" "The following track could not be transferred successfully:\n" "\n" msgid_plural "" "The following tracks could not be transferred successfully:\n" "\n" -msgstr[0] "Le morceau suivant ne peut pas être mis à jour." -msgstr[1] "Les %d morceaux suivants ne peuvent pas être mis à jour." +msgstr[0] "Le morceau suivant ne peut pas être transféré :\n" +msgstr[1] "Les morceaux suivants ne peuvent pas être transféré :\n" #. ID #. modal, @@ -3703,18 +3693,22 @@ "then eject the iPod again. Pressing 'OK' will re-schedule the failed tracks " "for conversion and transfer." msgstr "" +"Impossible d'éjecter le iPod. Veuillez résoudre les problèmes indiqués ci-" +"dessous avant d'éjecter de nouveau le iPod. Avec le bouton « OK » la " +"conversion et le transfert des morceaux qui ont eu des problèmes sera re-" +"planifiée." #: ../src/file_itunesdb.c:1667 msgid "Status: Copying track" -msgstr "" +msgstr "État : copie de morceau" #: ../src/file_itunesdb.c:1673 msgid "Status: Waiting for conversion to complete" -msgstr "" +msgstr "État : attente de la fin de la conversion" #: ../src/file_itunesdb.c:1677 msgid "Status: Finished transfer" -msgstr "" +msgstr "État : fin du transfert" #: ../src/file_itunesdb.c:1718 #, c-format @@ -3727,7 +3721,11 @@ "some tracks or otherwise create space on the iPod before ejecting the iPod " "again." msgstr[0] "" +"Un morceau n'a pas pu être transféré car le iPod est plein. Éliminez " +"quelques morceaux ou faites de la place avant de l'éjecter de nouveau." msgstr[1] "" +"%d morceaux n'ont pas pu être transféré car le iPod est plein. Éliminez " +"quelques morceaux ou faites de la place avant de l'éjecter de nouveau." #: ../src/file_itunesdb.c:1800 #, c-format @@ -3739,8 +3737,8 @@ "cancel, you can import the existing database before calling this function " "again.\n" msgstr "" -"Vous n'avez pas importé la base iTunesDB («%s») existante. C'est souvent une " -"erreur et cela impliquera la perte de la base existante.\n" +"Vous n'avez pas importé la base iTunesDB (« %s ») existante. C'est souvent " +"une erreur et cela impliquera la perte de la base existante.\n" "\n" "Appuyer sur «OK» pour continuer ou «Annuler» pour interrompre. Si vous " "annulez, vous pouvez importer la base existante avant d'appeler de nouveau " @@ -3759,14 +3757,14 @@ msgstr "Des morceaux ne peuvent pas être supprimés de l'iPod. Export annulé !" #: ../src/file_itunesdb.c:1862 -#, fuzzy, c-format +#, c-format msgid "Now writing database '%s'. Please wait..." -msgstr "Écriture de la base iTunesDB. Veuillez patienter ..." +msgstr "Écriture de la base « %s ». Veuillez patienter …" #: ../src/file_itunesdb.c:1911 #, c-format msgid "Extended information file not deleted: '%s'" -msgstr "Fichier d'infos étendues non supprimé : «%s»" +msgstr "Fichier d'infos étendues non supprimé : « %s »" #: ../src/file_itunesdb.c:1995 #, c-format @@ -3789,28 +3787,28 @@ #: ../src/fileselection.c:164 ../src/fileselection.c:305 #: ../src/fileselection.c:792 msgid "Please select a playlist or repository before adding tracks." -msgstr "" +msgstr "Choisir une liste de lecture ou un dépôt avant d'ajouter des morceaux." #: ../src/fileselection.c:175 ../src/fileselection.c:314 #: ../src/fileselection.c:803 msgid "Please load the iPod before adding tracks." -msgstr "" +msgstr "Charger le iPod avant d'ajouter des morceaux." #: ../src/fileselection.c:185 -#, fuzzy, c-format +#, c-format msgid "Add files to '%s'" -msgstr "Ajouter des fichiers" +msgstr "Ajoute des fichiers à « %s »" #: ../src/fileselection.c:189 #, c-format msgid "Add files to '%s/%s'" -msgstr "" +msgstr "Ajoute des fichiers à « %s/%s »" #. Create window title #: ../src/fileselection.c:322 -#, fuzzy, c-format +#, c-format msgid "Add playlist files to '%s'" -msgstr "Ajouter une liste de lecture depuis un fichier." +msgstr "Ajouter les fichiers de liste de lecture à « %s »" #. Create the file chooser, and handle the response #: ../src/fileselection.c:378 @@ -3818,14 +3816,14 @@ msgstr "Modifier la pochette" #: ../src/fileselection.c:816 -#, fuzzy, c-format +#, c-format msgid "Add directories to '%s'" -msgstr "Ajouter les répertoires récursivement" +msgstr "Ajouter les dossier à « %s »" #: ../src/fileselection.c:820 -#, fuzzy, c-format +#, c-format msgid "Add directories to '%s/%s'" -msgstr "Ajouter les répertoires récursivement" +msgstr "Ajouter les dossiers à « %s/%s »" #: ../src/fileselection.c:1097 msgid "Ok" @@ -3836,64 +3834,64 @@ msgstr "Annuler" #: ../src/flacfile.c:61 -#, fuzzy, c-format +#, c-format msgid "'%s' does not appear to be an FLAC audio file.\n" -msgstr "«%s» n'est pas un fichier audio mp4.\n" +msgstr "« %s » n'est pas un fichier audio FLAC.\n" #: ../src/flacfile.c:80 -#, fuzzy, c-format +#, c-format msgid "Error retrieving tags for '%s'.\n" -msgstr "Erreur d'écriture du fichier «%s».\n" +msgstr "Échec de la récupération des attributs de « %s ».\n" #: ../src/flacfile.c:150 -#, fuzzy, c-format +#, c-format msgid "" "Import of '%s' failed: FLAC not supported without the FLAC library. You must " "compile the gtkpod source together with the FLAC library.\n" msgstr "" -"Echec de l'import de «%s» : pas de support des formats m4a/m4p. Vous devez " -"compiler gtkpod avec la bibliothèque mp4v2.\n" +"Échec de l'import de « %s » : pas de support des formats FLAC. Vous devez " +"compiler gtkpod avec la bibliothèque FLAC.\n" #: ../src/flacfile.c:156 -#, fuzzy, c-format +#, c-format msgid "" "FLAC metadata update for '%s' failed: FLAC not supported without the FLAC " "library. You must compile the gtkpod source together with the FLAC library.\n" msgstr "" -"Echec de la mise à jour des données m4a/m4p pour «%s» : pas de support des " -"formats m4a/m4p. Vous devez compiler gtkpod avec la bibliothèque mp4v2.\n" +"Échec de la mise à jour des données FLAC pour « %s » : pas de support des " +"formats FLAC. Vous devez compiler gtkpod avec la bibliothèque FLAC.\n" #: ../src/getopt.c:681 #, c-format msgid "%s: option `%s' is ambiguous\n" -msgstr "%s : option «%s» ambigüe\n" +msgstr "%s : option « %s » ambiguë\n" #: ../src/getopt.c:706 #, c-format msgid "%s: option `--%s' doesn't allow an argument\n" -msgstr "%s : l'option «--%s» n'autorise pas d'argument\n" +msgstr "%s : l'option « --%s » n'autorise pas d'argument\n" #: ../src/getopt.c:711 #, c-format msgid "%s: option `%c%s' doesn't allow an argument\n" -msgstr "%s : l'option «%c%s» n'autorise pas d'argument\n" +msgstr "%s : l'option « %c%s » n'autorise pas d'argument\n" #: ../src/getopt.c:729 ../src/getopt.c:902 #, c-format msgid "%s: option `%s' requires an argument\n" -msgstr "%s : l'option «%s» nécessite un argument\n" +msgstr "%s : l'option « %s » nécessite un argument\n" #. --option #: ../src/getopt.c:758 #, c-format msgid "%s: unrecognized option `--%s'\n" -msgstr "%s : option «--%s» non reconnue\n" +msgstr "%s : option « --%s » non reconnue\n" #. +option or -option #: ../src/getopt.c:762 #, c-format msgid "%s: unrecognized option `%c%s'\n" -msgstr "%s : option «%c%s» non reconnue\n" +msgstr "%s : option « %c%s » non reconnue\n" #. 1003.2 specifies the format of this message. #: ../src/getopt.c:788 @@ -3915,12 +3913,12 @@ #: ../src/getopt.c:868 #, c-format msgid "%s: option `-W %s' is ambiguous\n" -msgstr "%s : l'option «-W %s» est ambigüe\n" +msgstr "%s : l'option « -W %s » est ambiguë\n" #: ../src/getopt.c:886 #, c-format msgid "%s: option `-W %s' doesn't allow an argument\n" -msgstr "%s : l'option «-W %s» n'autorise pas d'argument\n" +msgstr "%s : l'option « -W %s » n'autorise pas d'argument\n" #: ../src/info.c:383 msgid "n/c" @@ -3980,25 +3978,25 @@ #. Strings used several times #: ../src/ipod_init.c:48 msgid "Select or enter your model" -msgstr "" +msgstr "Choisir ou entrer le modèle" #: ../src/ipod_init.c:79 ../src/repository.c:546 ../src/repository.c:2369 msgid "Select mountpoint" msgstr "Point de montage de l'iPod :" #: ../src/ipod_init.c:359 -#, fuzzy, c-format +#, c-format msgid "Error initialising iPod: %s\n" -msgstr "Erreur d'écriture du fichier «%s».\n" +msgstr "Erreur d'initialisation du iPod : %s\n" #: ../src/ipod_init.c:366 msgid "Error initialising iPod, unknown error\n" -msgstr "" +msgstr "Erreur d'initialisation du iPod, erreur inconnue\n" #: ../src/ipod_init.c:422 -#, fuzzy, c-format +#, c-format msgid "<b>Please select your iPod model at </b><i>%s</i>" -msgstr "<b>Sélectionnez le point de montage et le modèle de votre iPod</b>" +msgstr "<b>Sélectionnez le modèle de votre iPod dans</b><i>%s</i>" #: ../src/ipod_init.c:463 msgid "" @@ -4006,6 +4004,9 @@ "incompatibilty in the GTK+ or glade library.\n" "\n" msgstr "" +"Impossible de détecter le modèle sélectionné. Ceci peut être du à une erreur " +"ou une incompatibilité dans GTK+ ou GLADE.\n" +"\n" #: ../src/misc.c:86 #, c-format @@ -4017,7 +4018,6 @@ "d'Apple." #: ../src/misc.c:90 -#, fuzzy msgid "" "(C) 2002 - 2007\n" "Jorg Schuler (jcsjcs at users dot sourceforge dot net)\n" @@ -4025,7 +4025,7 @@ "\n" "\n" msgstr "" -"© 2002 - 2005\n" +"© 2002 - 2007\n" "Jorg Schuler (jcsjcs at users dot sourceforge dot net)\n" "Corey Donohoe (atmos at atmos dot org)\n" "\n" @@ -4078,8 +4078,8 @@ #: ../src/misc.c:106 msgid "Ramesh Dharan: Multi-Edit (edit tags of several tracks in one run)\n" msgstr "" -"Ramesh Dharan : 'Édition multiple' (édition de tags de plusieurs fichiers en " -"même temps)\n" +"Ramesh Dharan : « Édition multiple » (édition des attributs de plusieurs " +"fichiers en même temps)\n" #: ../src/misc.c:108 msgid "Hiroshi Kawashima: Japanese charset autodetecion feature\n" @@ -4115,16 +4115,16 @@ "Graeme Wilford: reading and writing of the 'Composer' ID3 tags, progress " "dialogue during sync\n" msgstr "" -"Graeme Wilford : lecture et écriture des tags 'Compositeur', barre de " -"progression durant les synchro\n" +"Graeme Wilford : lecture et écriture des attributs « Compositeur », barre " +"de progression durant les synchro.\n" #: ../src/misc.c:120 msgid "" "Edward Matteucci: debugging, special playlist creation, most of the volume " "normalizing code\n" msgstr "" -"Edward Matteucci : debogage, création de liste de lectures, majeure partie " -"de la normalisation du volume\n" +"Edward Matteucci : mise au point, création de liste de lectures, majeure " +"partie de la normalisation du volume\n" #: ../src/misc.c:122 msgid "Jens Lautenbach: some optical improvements\n" @@ -4150,14 +4150,14 @@ "Ero Carrera: Filename validation and quick sync when copying tracks from the " "iPod\n" msgstr "" -"Ero Carrera : Validation du nom de fichier et synchro rapide lors de la " +"Ero Carrera : Validation du nom de fichier et synchro. rapide lors de la " "copie de l'iPod\n" #: ../src/misc.c:132 msgid "Jens Taprogge: Support for LAME's replay gain tag to normalize volume\n" msgstr "" -"Jens Taprogge : Support du tag 'replay gain' de LAME pour normaliser le " -"volume\n" +"Jens Taprogge : Support de l'attribut « replay gain » de LAME pour " +"normaliser le volume\n" #: ../src/misc.c:134 msgid "Armando Atienza: Support with external playcounts\n" @@ -4328,35 +4328,35 @@ #: ../src/misc.c:975 #, c-format msgid "Could not process '%s' (no filename available)" -msgstr "Impossible de traiter «%s» (pas de nom de fichier disponible)" +msgstr "Impossible de traiter « %s » (pas de nom de fichier disponible)" #: ../src/misc.c:1129 #, c-format msgid "Unknown token '%%%c' in template '%s'" -msgstr "Paramêtre «%%%c» inconnu dans le modèle «%s»" +msgstr "Paramètre « %%%c » inconnu dans le modèle « %s »" #: ../src/misc.c:1212 #, c-format msgid "Template ('%s') does not match file type '%s'\n" -msgstr "Le modèle («%s») ne correspond pas au type de fichier «%s»\n" +msgstr "Le modèle (« %s ») ne correspond pas au type de fichier « %s »\n" #: ../src/misc.c:1298 #, c-format msgid "Error creating %s: %s\n" -msgstr "Erreur à la création de «%s» : %s\n" +msgstr "Erreur à la création de « %s » : %s\n" #: ../src/misc.c:1732 -#, fuzzy, c-format +#, c-format msgid "" "Writing preferences file '%s' failed (%s).\n" "\n" msgstr "" -"Échec de l'exécution de «%s».\n" +"Échec de l'enregistrement du fichier de préférences « %s » (%s).\n" "\n" #: ../src/misc.... [truncated message content] |
From: <pha...@us...> - 2007-07-04 21:29:51
|
Revision: 1621 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1621&view=rev Author: phantom_sf Date: 2007-07-04 14:29:51 -0700 (Wed, 04 Jul 2007) Log Message: ----------- 2007-06-27 P.G. Richardson <phantom_sf at users.sourceforge.net> * src/details.c: tartwork_changed flag defined when a new artwork file is selected from the filesystem. * src/fetchcover.c: tartwork_changed flag added for all occurrences of artwork being changed. * src/display_coverart.c: reworking of the code to fix the sizes of the covers according to the ipod thumbnail size. When the pane is expanded, the coverart display's spacing is widened rather than the individual covers being stretched. Instead of the highlights, reflections and covers images being redrawn as black when null, the containing items are hidden. They are redisplayed when a new cover image is required. Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/src/details.c gtkpod/trunk/src/display_coverart.c gtkpod/trunk/src/fetchcover.c Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-07-04 17:33:36 UTC (rev 1620) +++ gtkpod/trunk/ChangeLog_detailed 2007-07-04 21:29:51 UTC (rev 1621) @@ -1,3 +1,21 @@ +2007-07-04 P.G. Richardson <phantom_sf at users.sourceforge.net> + + * src/details.c: tartwork_changed flag defined when a new + artwork file is selected from the filesystem. + + * src/fetchcover.c: tartwork_changed flag added for all + occurrences of artwork being changed. + + * src/display_coverart.c: reworking of the code to fix the + sizes of the covers according to the ipod thumbnail size. + When the pane is expanded, the coverart display's spacing + is widened rather than the individual covers being + stretched. + Instead of the highlights, reflections and covers images + being redrawn as black when null, the containing items + are hidden. They are redisplayed when a new cover image + is required. + 2007-07-04 Todd Zullinger <tmzullinger at users.sourceforge.net> * configure.ac Modified: gtkpod/trunk/src/details.c =================================================================== --- gtkpod/trunk/src/details.c 2007-07-04 17:33:36 UTC (rev 1620) +++ gtkpod/trunk/src/details.c 2007-07-04 21:29:51 UTC (rev 1621) @@ -301,6 +301,7 @@ g_return_if_fail (etr); gp_track_set_thumbnails (tr, filename); etr->tchanged = TRUE; + etr->tartwork_changed = TRUE; } } else @@ -309,6 +310,7 @@ g_return_if_fail (etr); gp_track_set_thumbnails (detail->track, filename); etr->tchanged = TRUE; + etr->tartwork_changed = TRUE; } detail->changed = TRUE; details_update_thumbnail (detail); Modified: gtkpod/trunk/src/display_coverart.c =================================================================== --- gtkpod/trunk/src/display_coverart.c 2007-07-04 17:33:36 UTC (rev 1620) +++ gtkpod/trunk/src/display_coverart.c 2007-07-04 21:29:51 UTC (rev 1621) @@ -45,15 +45,13 @@ static void free_CDWidget (); static gint compare_album_keys (gchar *a, gchar *b); static void set_display_dimensions (); -static GdkPixbuf *draw_blank_cdimage (); -static void set_highlight (Cover_Item *cover, gboolean ismain); +static void set_highlight (Cover_Item *cover, gint index); static void raise_cdimages (GPtrArray *cdcovers); -/*static void scroll_covers (gint direction);*/ static void remove_track_from_album (Album_Item *album, Track *track, gchar *key, gint index, GList *keylistitem); static void on_cover_display_button_clicked (GtkWidget *widget, gpointer data); static gint on_main_cover_image_clicked (GnomeCanvasItem *canvasitem, GdkEvent *event, gpointer data); static void on_cover_display_slider_value_changed (GtkRange *range, gpointer user_data); -static void set_cover_dimensions (Cover_Item *cover, int cover_index); +static void set_cover_dimensions (Cover_Item *cover, int cover_index, gdouble img_width, gdouble img_height); static void coverart_sort_images (GtkSortType order); static void prepare_canvas (); static void set_slider_range (gint index); @@ -73,12 +71,6 @@ static gint HEIGHT; static gint DEFAULT_WIDTH; static gint DEFAULT_HEIGHT; -/* Dimensions used for the smaller 8 cd cover images */ -static gdouble SMALL_IMG_WIDTH; -static gdouble SMALL_IMG_HEIGHT; -/* Dimensions used for the main cd cover image */ -static gdouble BIG_IMG_WIDTH; -static gdouble BIG_IMG_HEIGHT; /* Path of the png file used for albums without cd covers */ static gchar *DEFAULT_FILE; /* Path of the png file used for the highlighting of cd covers */ @@ -179,50 +171,6 @@ } /** - * draw_blank_cdimage: - * - * creates a blank "black" pixbuf cd image to represent the - * display when the playlist has no tracks in it. - * - * Returns: - * pixbuf of blank pixbuf - */ -static GdkPixbuf *draw_blank_cdimage () -{ - gdouble width = 4; - gdouble height = 4; - gint pixel_offset, rowstride, x, y; - guchar *drawbuf; - - drawbuf = g_malloc ((gint) (width * 16) * (gint) height); - - /* drawing buffer length multiplied by 4 - * due to 1 width per R, G, B & ALPHA - */ - rowstride = width * 4; - - for(y = 0; y < height; ++y) - { - for(x = 0; x < width; ++x) - { - pixel_offset = (y * rowstride) + (x * 4); - drawbuf[pixel_offset] = 0; - drawbuf[pixel_offset + 1] = 0; - drawbuf[pixel_offset + 2] = 0; - drawbuf[pixel_offset + 3] = 255; - } - } - return gdk_pixbuf_new_from_data(drawbuf, - GDK_COLORSPACE_RGB, - TRUE, - 8, - width, - height, - rowstride, - (GdkPixbufDestroyNotify) g_free, NULL); -} - -/** * set_highlight: * * Sets the highlighted image to the cover to give shine @@ -231,32 +179,30 @@ * @cover: A Cover_Item object which the higlighted is added to. * */ -static void set_highlight (Cover_Item *cover, gboolean ismain) +static void set_highlight (Cover_Item *cover, gint index) { - GdkPixbuf *image; - GError *error = NULL; - GdkPixbuf *scaled; - - if(ismain) - image = gdk_pixbuf_new_from_file(HIGHLIGHT_FILE_MAIN, &error); - else - image = gdk_pixbuf_new_from_file(HIGHLIGHT_FILE, &error); + GdkPixbuf *image; + GError *error = NULL; + GdkPixbuf *scaled; + + if(index == IMG_MAIN) + image = gdk_pixbuf_new_from_file(HIGHLIGHT_FILE_MAIN, &error); + else + image = gdk_pixbuf_new_from_file(HIGHLIGHT_FILE, &error); - if(error != NULL) - { - printf("Error occurred loading file - \nCode: %d\nMessage: %s\n", error->code, error->message); - g_return_if_fail (image); - } + if(error != NULL) + { + printf("Error occurred loading file - \nCode: %d\nMessage: %s\n", error->code, error->message); + g_return_if_fail (image); + } - scaled = gdk_pixbuf_scale_simple(image, cover->img_width, ((cover->img_height * 2) + 6), GDK_INTERP_NEAREST); - gdk_pixbuf_unref (image); + scaled = gdk_pixbuf_scale_simple(image, cover->img_width, ((cover->img_height * 2) + 6), GDK_INTERP_NEAREST); + gdk_pixbuf_unref (image); - gnome_canvas_item_set (cover->highlight, + gnome_canvas_item_set (cover->highlight, "pixbuf", scaled, NULL); - gdk_pixbuf_unref (scaled); - - gnome_canvas_item_hide (cover->highlight); + gdk_pixbuf_unref (scaled); } /** @@ -350,39 +296,19 @@ if (key == NULL) { - GdkPixbuf *imgbuf; - album = NULL; - imgbuf = draw_blank_cdimage (); - - /* Hide the highlight */ - gnome_canvas_item_hide (cover->highlight); - - /* Set the cover */ - scaled = gdk_pixbuf_scale_simple (imgbuf, cover->img_width, cover->img_height, GDK_INTERP_NEAREST); - gnome_canvas_item_set (cover->cdimage, - "pixbuf", scaled, - NULL); - + /* Clear everything */ + gnome_canvas_item_hide (cover->cdimage); /* Set the reflection to blank too */ - reflection = gdk_pixbuf_flip (scaled, FALSE); - gnome_canvas_item_set (cover->cdreflection, - "pixbuf", reflection, - NULL); - + gnome_canvas_item_hide (cover->cdreflection); + /* Set the highlight to black too */ + if (cover->highlight != NULL) + gnome_canvas_item_hide (cover->highlight); + if (index == IMG_MAIN) { - /* Set the text to blank */ - gnome_canvas_item_set (GNOME_CANVAS_ITEM (cdwidget->cvrtext), - "text", "No Artist", - "fill_color", "black", - "justification", GTK_JUSTIFY_CENTER, - NULL); - } - - gdk_pixbuf_unref (reflection); - gdk_pixbuf_unref (scaled); - gdk_pixbuf_unref (imgbuf); - + /* Hide the artist/album text*/ + gnome_canvas_item_hide (GNOME_CANVAS_ITEM (cdwidget->cvrtext)); + } return; } @@ -392,20 +318,29 @@ album = g_hash_table_lookup (album_hash, key); cover->album = album; - Track *track; if (force_imgupdate) { gdk_pixbuf_unref (album->albumart); album->albumart = NULL; } + Track *track; if (album->albumart == NULL) { track = g_list_nth_data (album->tracks, 0); - album->albumart = coverart_get_track_thumb (track, track->itdb->device); + album->albumart = coverart_get_track_thumb (track, track->itdb->device); } + /* Set the x, y, height and width of the CD cover */ + set_cover_dimensions ( + cover, + index, + gdk_pixbuf_get_width (album->albumart), + gdk_pixbuf_get_height (album->albumart)); + /* Display the highlight */ + set_highlight (cover, index); + gnome_canvas_item_show (cover->highlight); /* Set the Cover */ @@ -413,12 +348,21 @@ gnome_canvas_item_set (cover->cdimage, "pixbuf", scaled, NULL); - + + gnome_canvas_item_show (cover->cdimage); + + gnome_canvas_item_set (cover->cdcvrgrp, + "x", (gdouble) cover->img_x, + "y", (gdouble) cover->img_y, + NULL); + /* flip image vertically to create reflection */ reflection = gdk_pixbuf_flip (scaled, FALSE); gnome_canvas_item_set (cover->cdreflection, "pixbuf", reflection, + "y", (gdouble) (cover->img_height + 4), NULL); + gnome_canvas_item_show (cover->cdreflection); gdk_pixbuf_unref (reflection); gdk_pixbuf_unref (scaled); @@ -431,19 +375,12 @@ gnome_canvas_item_set (GNOME_CANVAS_ITEM (cdwidget->cvrtext), "text", text, "fill_color", "white", + "y", (gdouble) cover->img_y + cover->img_height + 10, "justification", GTK_JUSTIFY_CENTER, NULL); + + gnome_canvas_item_show (GNOME_CANVAS_ITEM (cdwidget->cvrtext)); g_free (text); - - /* - int i; - Track *track; - for (i = 0; i < g_list_length(album->tracks); ++i) - { - track = g_list_nth_data (album->tracks, i); - printf ("Track artist:%s album:%s title:%s\n", track->artist, track->album, track->title); - } - */ } } @@ -607,36 +544,24 @@ { gint i; Cover_Item *cover = NULL; - GdkPixbuf *buf; - buf = draw_blank_cdimage (); - for (i = 0; i < IMG_TOTAL; i++) { - GdkPixbuf *buf2; /* Reset the pixbuf */ cover = g_ptr_array_index(cdwidget->cdcovers, i); cover->album = NULL; - buf2 = gdk_pixbuf_scale_simple(buf, cover->img_width, cover->img_height, GDK_INTERP_NEAREST); - gnome_canvas_item_set(cover->cdimage, "pixbuf", buf2, NULL); - gnome_canvas_item_set(cover->cdreflection, "pixbuf", buf2, NULL); - gnome_canvas_item_hide (cover->highlight); + gnome_canvas_item_hide (cover->cdimage); + gnome_canvas_item_hide (cover->cdreflection); - gdk_pixbuf_unref (buf2); + if (cover->highlight != NULL) + gnome_canvas_item_hide (cover->highlight); - /* Reset track list too */ - cover->album = NULL; - if (i == IMG_MAIN) { /* Set the text to display details of the main image */ - gnome_canvas_item_set (GNOME_CANVAS_ITEM (cdwidget->cvrtext), - "text", "No Artist", - "fill_color", "black", - NULL); + gnome_canvas_item_hide (GNOME_CANVAS_ITEM (cdwidget->cvrtext)); } } - gdk_pixbuf_unref(buf); } /** @@ -702,7 +627,8 @@ { GtkWidget *dialog; Cover_Item *cover; - GdkPixbuf *imgbuf; + GdkPixbuf *imgbuf = NULL; + ExtraTrackData *etd; cover = g_ptr_array_index(cdwidget->cdcovers, IMG_MAIN); g_return_if_fail (cover); @@ -721,15 +647,32 @@ g_free (text); - if (cover->album->albumart != NULL) - imgbuf = cover->album->albumart; - else + Track *track; + track = g_list_nth_data (cover->album->tracks, 0); + etd = track->userdata; + if (etd && etd->thumb_path_locale) { - Track *track; - track = g_list_nth_data (cover->album->tracks, 0); - imgbuf = coverart_get_track_thumb (track, track->itdb->device); + GError *error = NULL; + imgbuf = gdk_pixbuf_new_from_file (etd->thumb_path_locale, &error); + if (error != NULL) + { + /* + printf("Error occurred loading the image file - \nCode: %d\nMessage: %s\n", error->code, error->message); + */ + g_error_free (error); + } } - + + /* Either thumb was null or the attempt at getting a pixbuf failed + * due to invalid file. For example, some nut (like me) decided to + * apply an mp3 file to the track as its cover file + */ + if (imgbuf == NULL) + { + /* Could not get a viable thumbnail so get default pixbuf */ + imgbuf = coverart_get_default_track_thumb (); + } + gint pixheight = gdk_pixbuf_get_height (imgbuf); gint pixwidth = gdk_pixbuf_get_width (imgbuf); @@ -781,6 +724,8 @@ GdkPixbuf *coverart_get_default_track_thumb (void) { GdkPixbuf *pixbuf = NULL; + GdkPixbuf *scaled = NULL; + gdouble default_size = 140; GError *error = NULL; pixbuf = gdk_pixbuf_new_from_file(DEFAULT_FILE, &error); @@ -789,8 +734,12 @@ printf("Error occurred loading the default file - \nCode: %d\nMessage: %s\n", error->code, error->message); g_return_val_if_fail(pixbuf, NULL); } + + scaled = gdk_pixbuf_scale_simple(pixbuf, default_size, default_size, GDK_INTERP_NEAREST); + gdk_pixbuf_unref (pixbuf); + - return pixbuf; + return scaled; } /** @@ -952,8 +901,7 @@ if ( ! prefs_get_int (KEY_DISPLAY_COVERART)) return FALSE; - gint width, i; - Cover_Item *cover; + gint width; width = gtk_paned_get_position (GTK_PANED(widget)); if ((width >= DEFAULT_WIDTH) && (width != WIDTH)) @@ -963,18 +911,7 @@ "x", (gdouble) WIDTH / 2, NULL); - for(i = 0; i < IMG_TOTAL; ++i) - { - cover = g_ptr_array_index(cdwidget->cdcovers, i); - set_cover_dimensions (cover, i); - if(i == IMG_MAIN) - set_highlight (cover, FALSE); - else - set_highlight (cover, TRUE); - } - - set_covers (FALSE); - + set_covers (FALSE); } return FALSE; @@ -1072,88 +1009,81 @@ * @cover_index: index of the widget. Used to determine whether * cover is the main cover or not */ -static void set_cover_dimensions (Cover_Item *cover, int cover_index) +static void set_cover_dimensions (Cover_Item *cover, int cover_index, gdouble img_width, gdouble img_height) { - gdouble x = 0, y = 0, img_width = 0, img_height = 0; + gdouble x = 0, y = 0; + gdouble small_img_width, small_img_height; + gdouble display_width = 0, display_diff = 0, display_ratio = 0; + gint temp_index = 0; - SMALL_IMG_WIDTH = WIDTH / 3; - SMALL_IMG_HEIGHT = HEIGHT / 3; - BIG_IMG_WIDTH = WIDTH / 2; - BIG_IMG_HEIGHT = HEIGHT / 2; + small_img_width = img_width * 0.75; + small_img_height = img_height * 0.75; - img_width = SMALL_IMG_WIDTH; - img_height = SMALL_IMG_HEIGHT; + display_width = (WIDTH / 2) - (BORDER * 2); + display_diff = display_width - small_img_width; + + /* Set the x location of the cover image */ + switch(cover_index) { + case 0: + case 1: + case 2: + case 3: + display_ratio = ((gdouble) cover_index) / 4; + x = BORDER + (display_ratio * display_diff); + break; + case IMG_MAIN: + /* The Main Image CD Cover Image */ + x = (WIDTH - img_width) / 2; + break; + case 5: + case 6: + case 7: + case 8: + temp_index = cover_index - 8; + if (temp_index < 0) + temp_index = temp_index * -1; + + display_ratio = ((gdouble) temp_index) / 4; + x = WIDTH - (BORDER + small_img_width + (display_ratio * display_diff)); + break; + } - /* Set the x location of the cover image */ - switch(cover_index) { - case 0: - x = BORDER; - break; - case 1: - x = BORDER * 1.6; - break; - case 2: - x = BORDER * 2.2; - break; - case 3: - x = BORDER * 2.8; - break; - case IMG_MAIN: - /* The Main Image CD Cover Image */ - x = (WIDTH - BIG_IMG_WIDTH) / 2; - img_width = BIG_IMG_WIDTH; - break; - case 5: - x = WIDTH - (SMALL_IMG_WIDTH + (BORDER * 2.8)); - break; - case 6: - x = WIDTH - (SMALL_IMG_WIDTH + (BORDER * 2.2)); - break; - case 7: - x = WIDTH - (SMALL_IMG_WIDTH + (BORDER * 1.6)); - break; - case 8: - x = WIDTH - (SMALL_IMG_WIDTH + BORDER); - break; - } + /* Set the y location of the cover image */ + switch(cover_index) { + case 0: + case 8: + y = BORDER; + break; + case 1: + case 7: + y = BORDER * 3; + break; + case 2: + case 6: + y = BORDER * 5; + break; + case 3: + case 5: + y = BORDER * 7; + break; + case IMG_MAIN: + /* The Main Image CD Cover Image */ + y = HEIGHT - (img_height + (BORDER * 4)); + } + + cover->img_x = x; + cover->img_y = y; - /* Set the y location of the cover image */ - switch(cover_index) { - case 0: - case 8: - y = BORDER; - break; - case 1: - case 7: - y = BORDER * 3; - break; - case 2: - case 6: - y = BORDER * 5; - break; - case 3: - case 5: - y = BORDER * 7; - break; - case IMG_MAIN: - /* The Main Image CD Cover Image */ - y = HEIGHT - (BIG_IMG_HEIGHT + (BORDER * 4)); - img_height = BIG_IMG_HEIGHT; - } - - cover->img_x = x; - cover->img_y = y; + if (cover_index == IMG_MAIN) + { cover->img_height = img_height; cover->img_width = img_width; - - gnome_canvas_item_set (cover->cdcvrgrp, - "x", (gdouble) cover->img_x, - "y", (gdouble) cover->img_y, - NULL); - - gnome_canvas_item_set (cover->cdreflection, - "y", (gdouble) (cover->img_height + 4), - NULL); + } + else + { + cover->img_height = small_img_height; + cover->img_width = small_img_width; + } } /** @@ -1240,34 +1170,28 @@ cover->cdreflection = gnome_canvas_item_new((GnomeCanvasGroup *) cover->cdcvrgrp, GNOME_TYPE_CANVAS_PIXBUF, NULL); - - set_cover_dimensions (cover, i); cover->highlight = gnome_canvas_item_new((GnomeCanvasGroup *) cover->cdcvrgrp, GNOME_TYPE_CANVAS_PIXBUF, - NULL); - + NULL); + if(i == IMG_MAIN) - { - set_highlight (cover, TRUE); - + { /* set up some callback events on the main scaled image */ g_signal_connect(GTK_OBJECT(cover->cdimage), "event", GTK_SIGNAL_FUNC(on_main_cover_image_clicked), NULL); cdwidget->cvrtext = GNOME_CANVAS_TEXT(gnome_canvas_item_new(gnome_canvas_root(cdwidget->canvas), GNOME_TYPE_CANVAS_TEXT, - "text", "No Artist", + "text", " ", "x", (gdouble) WIDTH / 2, - "y", (gdouble) cover->img_y + cover ->img_height, + "y", (gdouble) 0, "justification", GTK_JUSTIFY_CENTER, "anchor", GTK_ANCHOR_NORTH, - "fill_color", "black", + "fill_color", "white", "font", "-*-clean-medium-r-normal-*-12-*-*-*-*-*-*", NULL)); } - else - set_highlight (cover, FALSE); - + g_ptr_array_add(cdwidget->cdcovers, cover); cover = NULL; } Modified: gtkpod/trunk/src/fetchcover.c =================================================================== --- gtkpod/trunk/src/fetchcover.c 2007-07-04 17:33:36 UTC (rev 1620) +++ gtkpod/trunk/src/fetchcover.c 2007-07-04 21:29:51 UTC (rev 1621) @@ -1061,6 +1061,7 @@ { gp_track_set_thumbnails(fetchcover_track, filename); etd->tchanged = TRUE; + etd->tartwork_changed = TRUE; } } detail->changed = TRUE; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tmz...@us...> - 2007-07-05 15:15:37
|
Revision: 1625 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1625&view=rev Author: tmzullinger Date: 2007-07-05 08:15:39 -0700 (Thu, 05 Jul 2007) Log Message: ----------- add missing string replacement Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/src/autodetection.c Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-07-05 15:06:56 UTC (rev 1624) +++ gtkpod/trunk/ChangeLog_detailed 2007-07-05 15:15:39 UTC (rev 1625) @@ -1,3 +1,8 @@ +2007-07-05 Todd Zullinger <tmzullinger at users.sourceforge.net> + + * src/autodection.c: + add missing string replacement + 2007-07-04 P.G. Richardson <phantom_sf at users.sourceforge.net> * src/details.c: tartwork_changed flag defined when a new Modified: gtkpod/trunk/src/autodetection.c =================================================================== --- gtkpod/trunk/src/autodetection.c 2007-07-05 15:06:56 UTC (rev 1624) +++ gtkpod/trunk/src/autodetection.c 2007-07-05 15:15:39 UTC (rev 1625) @@ -392,7 +392,8 @@ } else { - gtkpod_warning (_("Newly mounted iPod at '%s' appearss to be already loaded!\n\n")); + gtkpod_warning (_("Newly mounted iPod at '%s' appears to be already loaded!\n\n"), + mountpoint); } debug ("...OK (used)\n"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tmz...@us...> - 2007-07-11 05:15:12
|
Revision: 1630 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1630&view=rev Author: tmzullinger Date: 2007-07-10 22:15:14 -0700 (Tue, 10 Jul 2007) Log Message: ----------- try harder to find evolution-addressbook-export (thanks to G?\195?\182tz Waschk) Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/scripts/sync-evolution.sh Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-07-08 22:04:19 UTC (rev 1629) +++ gtkpod/trunk/ChangeLog_detailed 2007-07-11 05:15:14 UTC (rev 1630) @@ -1,3 +1,9 @@ +2007-07-11 Todd Zullinger <tmzullinger at users.sourceforge.net> + + * scripts/sync-evolution.sh: + try harder to find evolution-addressbook-export (thanks to + Götz Waschk) + 2007-07-05 Todd Zullinger <tmzullinger at users.sourceforge.net> * src/autodection.c: Modified: gtkpod/trunk/scripts/sync-evolution.sh =================================================================== --- gtkpod/trunk/scripts/sync-evolution.sh 2007-07-08 22:04:19 UTC (rev 1629) +++ gtkpod/trunk/scripts/sync-evolution.sh 2007-07-11 05:15:14 UTC (rev 1630) @@ -14,9 +14,16 @@ # with the following defaults: IPOD_MOUNT=/mnt/ipod # mountpoint of ipod -EVOPATH='/opt/gnome/libexec/evolution/2.0:/usr/lib/evolution/2.0:/opt/gnome/bin' # additional path ENCODING=ISO-8859-15 # encoding used by ipod +# try to find the path to evolution-addressbook-export +for i in {/opt/gnome,/usr,/usr/local}/{bin,lib*}/{,evolution/*/}evolution-addressbook-export; do + if [ -x "$i" ]; then + EVOPATH=`dirname "$i"` + break + fi +done + # Unless called with "-e=none" this script requires "iconv" available # from http://www.gnu.org/software/libiconv/ @@ -80,10 +87,10 @@ evolution-addressbook-export --help >/dev/null 2>&1 if [ ! $? == 0 ]; then - echo "** Error: Couldn't find evolution-addressbook-export in your PATH:" - echo $PATH - echo "" - echo "Please specify \"-d <path to evolution-addressbook-export>\" when you call this script" + echo "** Error: Couldn't find evolution-addressbook-export in your PATH:" + echo $PATH + echo "" + echo "Please specify \"-d <path to evolution-addressbook-export>\" when you call this script" exit 1 fi This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jc...@us...> - 2007-07-12 16:51:44
|
Revision: 1635 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1635&view=rev Author: jcsjcs Date: 2007-07-12 08:47:01 -0700 (Thu, 12 Jul 2007) Log Message: ----------- * configure.in po/ro.po: added Romanian translation, thanks to Alex Eftimie. Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/configure.in Added Paths: ----------- gtkpod/trunk/po/ro.po Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-07-12 15:44:58 UTC (rev 1634) +++ gtkpod/trunk/ChangeLog_detailed 2007-07-12 15:47:01 UTC (rev 1635) @@ -1,3 +1,8 @@ +2007-07-12 Jorg Schuler <jcsjcs at users.sourceforge.net> + + * configure.in + po/ro.po: added Romanian translation, thanks to Alex Eftimie. + 2007-07-11 Todd Zullinger <tmzullinger at users.sourceforge.net> * scripts/sync-evolution.sh: @@ -11,21 +16,20 @@ 2007-07-04 P.G. Richardson <phantom_sf at users.sourceforge.net> - * src/details.c: tartwork_changed flag defined when a new - artwork file is selected from the filesystem. + * src/details.c: tartwork_changed flag defined when a new + artwork file is selected from the filesystem. - * src/fetchcover.c: tartwork_changed flag added for all - occurrences of artwork being changed. + * src/fetchcover.c: tartwork_changed flag added for all + occurrences of artwork being changed. - * src/display_coverart.c: reworking of the code to fix the - sizes of the covers according to the ipod thumbnail size. - When the pane is expanded, the coverart display's spacing - is widened rather than the individual covers being - stretched. - Instead of the highlights, reflections and covers images - being redrawn as black when null, the containing items - are hidden. They are redisplayed when a new cover image - is required. + * src/display_coverart.c: reworking of the code to fix the + sizes of the covers according to the ipod thumbnail size. + When the pane is expanded, the coverart display's spacing is + widened rather than the individual covers being stretched. + Instead of the highlights, reflections and covers images + being redrawn as black when null, the containing items are + hidden. They are redisplayed when a new cover image is + required. 2007-07-04 Todd Zullinger <tmzullinger at users.sourceforge.net> Modified: gtkpod/trunk/configure.in =================================================================== --- gtkpod/trunk/configure.in 2007-07-12 15:44:58 UTC (rev 1634) +++ gtkpod/trunk/configure.in 2007-07-12 15:47:01 UTC (rev 1635) @@ -58,7 +58,7 @@ AC_SUBST(UMOUNT) dnl Add the languages which your application supports here. -ALL_LINGUAS="de es fr he it ja sv" +ALL_LINGUAS="de es fr he it ja ro sv" AM_GLIB_GNU_GETTEXT dnl Check if we have to supply getopt_long Added: gtkpod/trunk/po/ro.po =================================================================== --- gtkpod/trunk/po/ro.po (rev 0) +++ gtkpod/trunk/po/ro.po 2007-07-12 15:47:01 UTC (rev 1635) @@ -0,0 +1,5072 @@ +# Romanian translation for gtkpod +# Copyright (C) 2003-2005 Jörg Schuler +# Alex Eftimie <alexeftimie at gmail dot com>, 2007. +# +# +msgid "" +msgstr "" +"Project-Id-Version: ro\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-06-27 16:10-0400\n" +"PO-Revision-Date: 2007-07-10 19:08+0200\n" +"Last-Translator: Alex Eftimie <alexeftimie at gmail dot com>\n" +"Language-Team: none\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Romanian\n" + +#: ../data/gtkpod.desktop.in.h:1 +msgid "GtkPod" +msgstr "GtkPod" + +#: ../data/gtkpod.desktop.in.h:2 +msgid "Manage music and video on an Apple iPod" +msgstr "Administrează muzica şi filmele pe un iPod Apple" + +#: ../data/gtkpod.desktop.in.h:3 +msgid "iPod Manager" +msgstr "Manager iPod" + +#: ../data/gtkpod.glade.h:1 +msgid " " +msgstr " " + +#: ../data/gtkpod.glade.h:2 +msgid " " +msgstr " " + +#: ../data/gtkpod.glade.h:3 +msgid " " +msgstr " " + +#: ../data/gtkpod.glade.h:4 +msgid " " +msgstr " " + +#: ../data/gtkpod.glade.h:5 +msgid " Sort by:" +msgstr " Sortare după:" + +#: ../data/gtkpod.glade.h:6 +msgid " <= cts <= " +msgstr " <= nr. <= " + +#: ../data/gtkpod.glade.h:7 +msgid " Logic: " +msgstr " Logică:" + +#: ../data/gtkpod.glade.h:9 +#, no-c-format +msgid "%A" +msgstr "%A" + +#: ../data/gtkpod.glade.h:10 +msgid "'DD/MM/YYYY HH:MM < d < DD/MM/YYYY HH:MM' or similar. Press 'enter' when finished." +msgstr "'DD/MM/YYYY HH:MM < d < DD/MM/YYYY HH:MM' sau similar. Apasaţi 'enter' când este gata." + +#: ../data/gtkpod.glade.h:11 +msgid "'aacgain' executable:" +msgstr "executabil 'aacgain':" + +#: ../data/gtkpod.glade.h:12 +msgid "'mp3gain' executable:" +msgstr "executabil 'mp3gain'" + +#: ../data/gtkpod.glade.h:13 +msgid "(Checked)" +msgstr "(Verificat)" + +#: ../data/gtkpod.glade.h:14 +msgid "...as icons" +msgstr "...ca iconiţe" + +#: ../data/gtkpod.glade.h:15 +msgid "...as text" +msgstr "...ca text" + +#: ../data/gtkpod.glade.h:16 +msgid "...both as icons and text" +msgstr "...atât iconiţe cât şi text" + +#: ../data/gtkpod.glade.h:17 +msgid "...entry 'All' in sort tab..." +msgstr "...intrarea 'Toate' în categorii..." + +#: ../data/gtkpod.glade.h:18 +msgid "...master playlist" +msgstr "...listă de redare principală" + +#: ../data/gtkpod.glade.h:20 +#, no-c-format +msgid "../%A.jpg" +msgstr "../%A.jpg" + +#: ../data/gtkpod.glade.h:21 +msgid "0" +msgstr "0" + +#: ../data/gtkpod.glade.h:22 +msgid "1" +msgstr "1" + +#: ../data/gtkpod.glade.h:23 +msgid "2" +msgstr "2" + +#: ../data/gtkpod.glade.h:24 +msgid "3" +msgstr "3" + +#: ../data/gtkpod.glade.h:25 +msgid "4" +msgstr "4" + +#: ../data/gtkpod.glade.h:26 +msgid "5" +msgstr "5" + +#: ../data/gtkpod.glade.h:27 +msgid ":" +msgstr ":" + +#: ../data/gtkpod.glade.h:28 +msgid "<" +msgstr "<" + +#: ../data/gtkpod.glade.h:29 +msgid "<b>Account Information</b>" +msgstr "<b>Informaţii cont</b>" + +#: ../data/gtkpod.glade.h:30 +msgid "<b>Adding/Updating/Syncing</b>" +msgstr "<b>Adăugare/Actualizare/Sincronizare</b>" + +#: ../data/gtkpod.glade.h:31 +msgid "<b>Audioscrobbler</b>" +msgstr "<b>Audioscrobbler</b>" + +#: ../data/gtkpod.glade.h:32 +msgid "<b>Auto-Generated Playlists</b>" +msgstr "<b>Liste de redare generate automat</b>" + +#: ../data/gtkpod.glade.h:33 +msgid "<b>Automatically select...</b>" +msgstr "<b>Selectează automat...</b>" + +#: ../data/gtkpod.glade.h:34 +msgid "<b>Calendar/Contacts/Notes</b>" +msgstr "<b>Calendar/Agendă/Notiţe</b>" + +#: ../data/gtkpod.glade.h:35 +msgid "<b>Coverart</b>" +msgstr "<b>Copertă</b>" + +#: ../data/gtkpod.glade.h:36 +msgid "<b>Delete Confirmation</b>" +msgstr "<b>Confirmare ştergere</b>" + +#: ../data/gtkpod.glade.h:37 +msgid "<b>Displayed Track Attributes</b>" +msgstr "<b>Atribute piesă afişate</b>" + +#: ../data/gtkpod.glade.h:38 +msgid "<b>Examples</b>" +msgstr "<b>Exemple</b>" + +#: ../data/gtkpod.glade.h:39 +msgid "<b>Ignore Frequent Words</b>" +msgstr "<b>Ignoră cuvintele frecvente</b>" + +#: ../data/gtkpod.glade.h:40 +msgid "<b>Misc</b>" +msgstr "<b>Diverse</b>" + +#: ../data/gtkpod.glade.h:41 +msgid "<b>Mountpoint and individual repository/playlist options</b>" +msgstr "<b>Opţiuni punct de montare şi listă de redare/depozit individual</b>" + +#: ../data/gtkpod.glade.h:42 +msgid "<b>On-the-fly Conversion</b>" +msgstr "<b>Conversie \"în zbor\"</b>" + +#: ../data/gtkpod.glade.h:43 +msgid "<b>Play</b>" +msgstr "<b>Rulează</b>" + +#: ../data/gtkpod.glade.h:44 +msgid "<b>Playlists</b>" +msgstr "<b>Liste de redare</b>" + +#: ../data/gtkpod.glade.h:45 +msgid "<b>Please select mountpoint and your iPod model</b>" +msgstr "<b>Vă rugăm selectaţi punctul de montare şi modelul de iPod</b>" + +#: ../data/gtkpod.glade.h:46 +msgid "<b>Repositories</b>" +msgstr "<b>Depozite</b>" + +#: ../data/gtkpod.glade.h:47 +msgid "<b>Sort Order</b>" +msgstr "<b>Ordine sortare</b>" + +#: ../data/gtkpod.glade.h:48 +msgid "<b>Sort Tabs</b>" +msgstr "<b>Categorii</b>" + +#: ../data/gtkpod.glade.h:49 +msgid "<b>Sync</b>" +msgstr "<b>Sincronizare</b>" + +#: ../data/gtkpod.glade.h:50 +msgid "<b>Synchronization</b>" +msgstr "<b>Sincronizare</b>" + +#: ../data/gtkpod.glade.h:51 +msgid "<b>Tag Reading</b>" +msgstr "<b>Citire etichete</b>" + +#: ../data/gtkpod.glade.h:52 +msgid "<b>Toolbar</b>" +msgstr "<b>Bară de unelte</b>" + +#: ../data/gtkpod.glade.h:53 +msgid "<b>Tooltips</b>" +msgstr "<b>Indicii</b>" + +#: ../data/gtkpod.glade.h:54 +msgid "<b>Track Editing</b>" +msgstr "<b>Editare piesă</b>" + +#: ../data/gtkpod.glade.h:55 +msgid "<b>Volume Normalization</b>" +msgstr "<b>Normalizare volum</b>" + +#: ../data/gtkpod.glade.h:56 +msgid "<b>mserv</b>" +msgstr "<b>mserv</b>" + +#: ../data/gtkpod.glade.h:57 +msgid ">" +msgstr ">" + +#: ../data/gtkpod.glade.h:58 +msgid "About gtkpod" +msgstr "Despre gtkpod" + +#: ../data/gtkpod.glade.h:59 +msgid "Add Directories Recursively" +msgstr "Adaugă dosare recursiv" + +#: ../data/gtkpod.glade.h:60 +msgid "Add Files or Directories" +msgstr "Adaugă fişiere sau dosare" + +#: ../data/gtkpod.glade.h:61 +msgid "Add _Directory" +msgstr "Adaugă _dosar" + +#: ../data/gtkpod.glade.h:62 +msgid "Add _Files" +msgstr "Adaugă _fişiere" + +#: ../data/gtkpod.glade.h:63 +msgid "Add _Playlist" +msgstr "Adaugă _listă de redare" + +#: ../data/gtkpod.glade.h:64 +msgid "Add coverart from file using the following template" +msgstr "Adaugă copertă din fişier folosind următorul şablon" + +#: ../data/gtkpod.glade.h:65 +msgid "Add directories recursively" +msgstr "Adaugă dosare recursiv" + +#: ../data/gtkpod.glade.h:66 +msgid "Add new repository/iPod" +msgstr "Adaugă un nou depozit/iPod" + +#: ../data/gtkpod.glade.h:67 +msgid "Add playlist from file" +msgstr "Adaugă listă de redare din fişier" + +#: ../data/gtkpod.glade.h:68 +#: ../src/display_sorttabs.c:3228 +#: ../src/display_tracks.c:2020 +msgid "Added" +msgstr "Adăugat" + +#: ../data/gtkpod.glade.h:69 +msgid "Advanced Sorting Options" +msgstr "Opţiuni de sortare avansate" + +#. 0 +#: ../data/gtkpod.glade.h:70 +#: ../src/display_sorttabs.c:2963 +#: ../src/display_spl.c:84 +#: ../src/misc_conversion.c:60 +msgid "Album" +msgstr "Album" + +#: ../data/gtkpod.glade.h:71 +msgid "Album Art" +msgstr "Copertă album" + +#: ../data/gtkpod.glade.h:72 +msgid "All (AND)" +msgstr "Toate (AND)" + +#: ../data/gtkpod.glade.h:73 +msgid "All Tracks Never Listened To" +msgstr "Toate piesele care nu au fost niciodată ascultate" + +#: ../data/gtkpod.glade.h:74 +msgid "All Tracks Played Since Last Time" +msgstr "Toate piesele redate începând de ultima oară" + +#: ../data/gtkpod.glade.h:75 +msgid "All Tracks not Listed in any Playlist" +msgstr "Toate piesele ne-listate în nicio listă de redare" + +#: ../data/gtkpod.glade.h:76 +msgid "Also include tracks never played in \"Best Rated\" playlist" +msgstr "Include şi piesele care nu au fost redate în lista \"Cele mai apreciate\"" + +#: ../data/gtkpod.glade.h:77 +msgid "Always write ID3v2.4 tags (only applies to MP3)" +msgstr "Scrie mereu etichetele ID3v2.4 (se aplică numai pentru MP3)" + +#: ../data/gtkpod.glade.h:78 +msgid "Any (OR)" +msgstr "Oricare (OR)" + +#: ../data/gtkpod.glade.h:79 +#: ../src/display_sorttabs.c:2960 +#: ../src/display_spl.c:85 +#: ../src/misc_conversion.c:61 +msgid "Artist" +msgstr "Artist" + +#: ../data/gtkpod.glade.h:80 +msgid "" +"As a last resort set the following tags to the\n" +"filename if they are (still) empty:" +msgstr "" +"Ca un ultim resort setează următoarele etichete \n" +"la numele de fişier dacă sunt (încă) goale:" + +#: ../data/gtkpod.glade.h:82 +msgid "Ascending" +msgstr "Crescător" + +#: ../data/gtkpod.glade.h:83 +msgid "Auto Store" +msgstr "Memorare automată" + +#: ../data/gtkpod.glade.h:84 +msgid "Automatically start displaying tracks that match the criteria entered above. If not selected, you must press 'Display' to start displaying." +msgstr "Porneşte automat afişarea pieselor care respectă criteriile introduse mai jos. Dacă nu este selectat, trebuie să apăsaţi 'Afişează' pentru aceasta." + +#: ../data/gtkpod.glade.h:85 +msgid "Before removing playlists or tracks from a playlist" +msgstr "Înainte de a şterge liste de redare sau piese dintr-o listă de redare" + +#: ../data/gtkpod.glade.h:86 +msgid "Before removing tracks from the harddisk" +msgstr "Înainte de a şterge piese de pe discul dur" + +#: ../data/gtkpod.glade.h:87 +msgid "Before removing tracks from the iPod" +msgstr "Înainte de a şterge piese de pe iPod" + +#: ../data/gtkpod.glade.h:88 +msgid "Before removing tracks from the local database" +msgstr "Înainte de a şterge piese din baza de date locală" + +#: ../data/gtkpod.glade.h:89 +msgid "Best Rated Tracks" +msgstr "Piesele cele mai apreciate" + +#: ../data/gtkpod.glade.h:90 +msgid "Browse" +msgstr "Răsfoieşte" + +#: ../data/gtkpod.glade.h:91 +msgid "Cache directory:" +msgstr "Dosar cache" + +#: ../data/gtkpod.glade.h:92 +msgid "Calendar" +msgstr "Calendar" + +#: ../data/gtkpod.glade.h:93 +msgid "Calendar sync command:" +msgstr "Comandă sincronizare calendar:" + +#: ../data/gtkpod.glade.h:94 +msgid "Call automatically when synchronizing iTunesDB" +msgstr "Apelează automat când se sincronizează iTunesDB" + +#: ../data/gtkpod.glade.h:95 +msgid "Category: " +msgstr "Categorie:" + +#: ../data/gtkpod.glade.h:96 +msgid "" +"Change all tracks\n" +"simultaneously" +msgstr "" +"Modifică toate piesele\n" +"simultan" + +#: ../data/gtkpod.glade.h:98 +msgid "Check for existing files when copying from iPod." +msgstr "Verifică dacă fişierele există deja când copiez de pe iPod." + +#: ../data/gtkpod.glade.h:99 +msgid "Command for 'Enqueue':" +msgstr "Comandă 'Adaugă în coadă':" + +#: ../data/gtkpod.glade.h:100 +msgid "Command for 'Play now':" +msgstr "Comandă 'Redare acum':" + +#. 5 +#: ../data/gtkpod.glade.h:101 +#: ../src/display_spl.c:97 +#: ../src/misc_conversion.c:65 +msgid "Composer" +msgstr "Compozitor" + +#: ../data/gtkpod.glade.h:102 +msgid "Confirm before removing tracks from the iPod or repository" +msgstr "Confirmă ştergerea pieselor de pe iPod sau din depozit" + +#: ../data/gtkpod.glade.h:103 +msgid "" +"Confirm before removing tracks from the iPod or repository\n" +"when syncing playlists" +msgstr "" +"Confirmă inainte de a şterge piese de pe iPod sau din depozit\n" +"când se sincronizează listele de redare" + +#: ../data/gtkpod.glade.h:105 +msgid "Confirm lists of directories" +msgstr "Confirmă listele de directoare" + +#: ../data/gtkpod.glade.h:106 +msgid "Contacts sync command:" +msgstr "Comandă sincronizare agendă:" + +#: ../data/gtkpod.glade.h:107 +msgid "Containing Displayed Tracks" +msgstr "Conţinând piesele afişate" + +#: ../data/gtkpod.glade.h:108 +msgid "Containing Selected Tracks" +msgstr "Conţinând piesele selectate" + +#: ../data/gtkpod.glade.h:109 +msgid "Conversion Progress Display" +msgstr "Afişare progres conversie" + +#: ../data/gtkpod.glade.h:110 +msgid "Cover" +msgstr "Copertă" + +#: ../data/gtkpod.glade.h:111 +msgid "Create New Playlist" +msgstr "Creează listă de redare nouă" + +#: ../data/gtkpod.glade.h:112 +msgid "Create Repository" +msgstr "Creează depozit" + +#: ../data/gtkpod.glade.h:113 +msgid "Create _Playlist File" +msgstr "Creează fişier _listă de redare" + +#: ../data/gtkpod.glade.h:114 +msgid "Credits" +msgstr "Autori" + +#: ../data/gtkpod.glade.h:115 +msgid "Currently only rating is supported." +msgstr "Momentan numai aprecierea este suportată" + +#: ../data/gtkpod.glade.h:116 +msgid "Delete repository" +msgstr "Şterge depozit" + +#: ../data/gtkpod.glade.h:117 +msgid "" +"Delete tracks that are no longer present from the\n" +"iPod or repository" +msgstr "" +"Şterge piesele care nu mai sunt prezente de pe\n" +"iPod sau din depozit" + +#: ../data/gtkpod.glade.h:119 +msgid "Deleted tracks" +msgstr "Piese şterse" + +#: ../data/gtkpod.glade.h:120 +msgid "Descending" +msgstr "Descrescător" + +#: ../data/gtkpod.glade.h:121 +msgid "Details" +msgstr "Detalii" + +#: ../data/gtkpod.glade.h:123 +#, no-c-format +msgid "Determines how the string for the info field should be constructed, e.g '%a/%A/%T - %t.mp3' or '%o'. You can separate several templates by semicolons -- gtkpod will determine which one to use by the filename extension given. Artist: %a, album: %A, composer: %c, title: %t, genre: %G, track nr: %T, CD nr: %C, year: %Y, original filename (requires extended information file): %o, the character '%': %%." +msgstr "Determină cum este construit şirul pentru câmpul de informaţii, e.g. '%a/%A/%T - %t.mp3' sau '%o'. Puteţi separa câteva şabloane prin punct şi virgulă -- gtkpod ca determina care să fie utilizată de către extensia fişierului dată. Artist: %a, album: %A, compozitor: %c, titlu: %t, gen: %G, număr pistă: %T, număr CD: %C, an: %Y, nume de fişier original (necesită fişier de informaţii extins): %o, caracterul '%': %%." + +#: ../data/gtkpod.glade.h:125 +#, no-c-format +msgid "Determines the filename of tracks you copy from the iPod, e.g '%a/%A/%T - %t.mp3' or '%o'. You can separate several patterns by semicolons -- gtkpod will determine which one to use by the filename extension given. Artist: %a, album: %A, composer: %c, title: %t, genre: %G, track nr: %T, CD nr: %C, year: %Y, original filename (requires extended information file): %o, current playlist: %p, the character '%': %%." +msgstr "Determină numele de fişier al pieselor pe care le copiaţi de pe iPod, e.g. '%a/%A/%T - %t.mp3' sau '%o'. Puteţi separa câteva şabloane prin punct şi virgulă -- gtkpod ca determina care să fie utilizată de către extensia fişierului dată. Artist: %a, album: %A, compozitor: %c, titlu: %t, gen: %G, număr pistă: %T, număr CD: %C, an: %Y, nume de fişier original (necesită fişier de informaţii extins): %o, caracterul '%': %%." + +#: ../data/gtkpod.glade.h:127 +#, no-c-format +msgid "Determines the name of the file with the cover art. You can separate several patterns by semicolons which will be tried in order. Artist: %a, album: %A, composer: %c, title: %t, genre: %G, track nr: %T, CD nr: %C, year: %Y, original filename (requires extended information file): %o, original filename without file extension: %O, current playlist: %p, the character '%': %%." +msgstr "Determină numele de fişier conţinând coverart. Puteţi separa câteva şabloane prin punct şi virgulă -- gtkpod ca determina care să fie utilizată de către extensia fişierului dată. Artist: %a, album: %A, compozitor: %c, titlu: %t, gen: %G, număr pistă: %T, număr CD: %C, an: %Y, nume de fişier original (necesită fişier de informaţii extins): %o, nume de fişier original fără extensie: %O, lista de redare curentă: %p, caracterul '%': %%." + +#: ../data/gtkpod.glade.h:128 +msgid "Directories to sync with are determined from the filenames of the tracks in the playlist." +msgstr "Dosarele cu care sincronizez se obţin din numele de fişiere ale pieselor din lista de redare." + +#: ../data/gtkpod.glade.h:129 +msgid "Dirs" +msgstr "Dosare" + +#: ../data/gtkpod.glade.h:130 +msgid "Display a list of tracks that could actually be updated." +msgstr "Afişează o listă a pieselor care pot fi actualizate." + +#: ../data/gtkpod.glade.h:131 +msgid "Display a list of tracks that could not be updated." +msgstr "Afişează o listă a pieselor care nu pot fi actualizate." + +#: ../data/gtkpod.glade.h:132 +msgid "Display conversion log" +msgstr "Afişează jurnalul conversiei" + +#: ../data/gtkpod.glade.h:133 +msgid "Display info about detected duplicates" +msgstr "Afişează informaţii despre dublurile detectate" + +#: ../data/gtkpod.glade.h:134 +msgid "Display info about non-updated tracks" +msgstr "Afişează informaţii despre piesele care nu au fost actualizate" + +#: ../data/gtkpod.glade.h:135 +msgid "Display info about updated tracks" +msgstr "Afişează informaţii despre piesele actualizate" + +#: ../data/gtkpod.glade.h:136 +msgid "Display messages and warnings at startup" +msgstr "Afişează mesaje şi avertizări la pornire" + +#: ../data/gtkpod.glade.h:137 +msgid "Display the list of duplicates that have been detected after adding files." +msgstr "Afişează lista dublurilor care au fost detectate după adăugarea de fişiere." + +#: ../data/gtkpod.glade.h:138 +msgid "Display toolbar..." +msgstr "Afişează bara de unelte..." + +#: ../data/gtkpod.glade.h:139 +msgid "Display tooltips in main window" +msgstr "Afişează indicii în fereastra principală" + +#: ../data/gtkpod.glade.h:140 +msgid "Display tooltips in prefs window" +msgstr "Afişează indicii în fereastra de preferinţe" + +#: ../data/gtkpod.glade.h:141 +msgid "Display tracks that match the criteria entered above." +msgstr "Afişează piesele care se potrivesc criteriului introdus mai jos." + +#: ../data/gtkpod.glade.h:142 +msgid "" +"Displayed\n" +"Tracks" +msgstr "" +"Piese\n" +"afişate" + +#: ../data/gtkpod.glade.h:144 +msgid "Don't allow file duplication" +msgstr "Nu permite existenţa dublurilor" + +#: ../data/gtkpod.glade.h:145 +msgid "Don't automatically sync on startup" +msgstr "Nu sincroniza automat la pornire" + +#: ../data/gtkpod.glade.h:146 +msgid "Download Cover" +msgstr "Descarcă imaginea copertei" + +#: ../data/gtkpod.glade.h:147 +msgid "Duplicate Recognition is based on a (modified) sha1 hash over the file." +msgstr "Recunoaşterea dublurilor este bazată pe o sumă binară de căutare sha1 (modificată) asupra fişierelor." + +#: ../data/gtkpod.glade.h:148 +msgid "Edit Repository/iPod Options" +msgstr "Editare opţiuni depozit/iPod" + +#: ../data/gtkpod.glade.h:149 +#: ../src/context_menus.c:659 +msgid "Edit Smart Playlist" +msgstr "Editare listă de redare inteligentă" + +#: ../data/gtkpod.glade.h:150 +#: ../src/context_menus.c:746 +msgid "Edit Track Details" +msgstr "Editare detalii piesă" + +#: ../data/gtkpod.glade.h:151 +msgid "Edit _Preferences" +msgstr "_Preferinţe" + +#: ../data/gtkpod.glade.h:152 +msgid "Effective free space" +msgstr "Spaţiu liber efectiv" + +#: ../data/gtkpod.glade.h:153 +msgid "Empty Playlist" +msgstr "Listă de redare goală" + +#: ../data/gtkpod.glade.h:154 +msgid "Exclude file mask(s)" +msgstr "Exclude masca (măştile) de fişier" + +#: ../data/gtkpod.glade.h:155 +msgid "Export can be continued at a later time if canceled." +msgstr "Exportarea poate continua mai târziu dacă este revocată" + +#: ../data/gtkpod.glade.h:156 +msgid "File size" +msgstr "Dimensiune" + +#: ../data/gtkpod.glade.h:157 +msgid "File size (deleted)" +msgstr "Dimensiune (şters)" + +#: ../data/gtkpod.glade.h:158 +msgid "File size (non-transferred)" +msgstr "Dimensiune (netransferat)" + +#: ../data/gtkpod.glade.h:159 +msgid "Filename Format: " +msgstr "Format nume de fişier:" + +#: ../data/gtkpod.glade.h:160 +msgid "Files" +msgstr "Fişiere" + +#: ../data/gtkpod.glade.h:161 +msgid "Find _New" +msgstr "Găseşte _nou" + +#: ../data/gtkpod.glade.h:162 +msgid "Find orphan files (files with no track info in DB) and dangling tracks (tracks with no corresponding files on iPod)" +msgstr "Găseşte fişiere orfane (care nu au informaţii în DB) şi piese agăţate (piese care nu au fişiere corespunzătoare pe iPod)" + +#: ../data/gtkpod.glade.h:163 +msgid "First try <i>folder.jpg</i>, then <i><artist>.jpg</i>" +msgstr "Încearcă mai întâi <i>dosar.jpg</i>, apoi <i><artist>.jpg</i>" + +#: ../data/gtkpod.glade.h:164 +msgid "Flac with :" +msgstr "Flac cu:" + +#: ../data/gtkpod.glade.h:166 +#, no-c-format +msgid "For example, 'xmms %s' will clear xmms' current playlist, add the selected tracks and start playing." +msgstr "De exemplu, 'xmms %s' va goli lista de redare curentă a xmms, va adăuga la listă piesele selectate şi va porni redarea." + +#: ../data/gtkpod.glade.h:168 +#, no-c-format +msgid "For example, 'xmms -e %s' will append (enqueue) the selected tracks to xmms' current playlist." +msgstr "De exemplu, 'xmms -e %s' va adăuga în coadă piesele selectate la lista de redare curentă a xmms" + +#: ../data/gtkpod.glade.h:169 +#: ../src/display_sorttabs.c:2966 +#: ../src/display_spl.c:89 +#: ../src/misc_conversion.c:63 +msgid "Genre" +msgstr "Gen" + +#: ../data/gtkpod.glade.h:170 +msgid "Group artists on compilation CDs" +msgstr "Grupează artiştii pe CD-uri de tip compilaţie" + +#: ../data/gtkpod.glade.h:171 +msgid "Highly recommended for faster import when taking advantage of the duplication recognition. Also, having the PC filenames allows writing changed ID3 tags to disk, and even to reconstruct your iPod's contents in case of file system corruption (change the \"transferred=\" entries in your backuped database)." +msgstr "Foarte recomandat pentru importul mai rapid când se poate folosi avantajul recunoaşterii dublurilor. De asemenea, având numele de fişiere de pe PC permite scrierea etichetelor ID3 modificate pe disc, şi chiar reconstrucţia conţinutului iPod-ului în cazul coruperii sistemului de fişiere (schimbă intrările \"transferred=\" în copia de siguranţă a bazei de date)." + +#: ../data/gtkpod.glade.h:172 +#: ../src/context_menus.c:682 +#: ../src/context_menus.c:700 +#: ../src/context_menus.c:824 +msgid "I'm sure" +msgstr "Sunt sigur" + +#: ../data/gtkpod.glade.h:173 +msgid "If available, the local copy of the track is referenced in the playlist. Otherwise the file on the iPod is used." +msgstr "Dacă este posibil, copia locală a pieselor este referenţiată în lista de redare. Altfel, este folosit fişierul de pe iPod." + +#: ../data/gtkpod.glade.h:174 +msgid "If both options are selected, embedded APIC data takes precedence." +msgstr "Dacă ambele opţiuni sunt selectate, datele APIC înglobate au prioritate." + +#: ../data/gtkpod.glade.h:175 +msgid "If checked, sorting will be case sensitive. Please note that case sensitive sorting will not work well with most charsets." +msgstr "Dacă este bifat, sortarea va fi cu majuscule semnificative. A se reţine că sortarea cu majuscule semnificative nu va funcţiona corect cu cele mai multe seturi de caractere." + +#: ../data/gtkpod.glade.h:176 +msgid "If the filename (full path) of an existing track matches that of a track to be added, this option allows you to update the information about the existing track rather than just skipping the track altogether. No update will take place if the file hasn't changed and you have selected the 'Don't allow file duplication' option above." +msgstr "Dacă numele de fişier (calea completă) a unei piese existente deja se potriveşte cu cel al uneia care urmează să fie adăugată, această opţiune permite să actualizaţi informaţia despre fişierul existent mai degrabă decât să omiteţi cu totul piesa. Nici un fel de actualizare nu va avea loc dacă fişierul nu s-a modificat şi dvs aţi selectat opţiunea \"Nu permite existenţa dublurilor' de mai sus." + +#: ../data/gtkpod.glade.h:177 +msgid "If you check this, gtkpod will descend into subdirectories recursively." +msgstr "Dacă bifaţi această opţiune, gtkpod va pătrunde în subdirectoare recursiv." + +#: ../data/gtkpod.glade.h:178 +msgid "If you check this, information (cover art and meta information) changed for this track will be copied to all other selected tracks as well. Use with care." +msgstr "Dacă bifaţi această opţiune, informaţiile (coperta şi meta-informaţia) modificate pentru această piesă vor fi copiate la toate celelalte piese selectate. Folosiţi-o cu atenţie." + +#: ../data/gtkpod.glade.h:179 +msgid "If you don't select the master playlist automatically, the initial database import is much faster because the display dosn't have to be updated." +msgstr "Dacă nu selectaţi lista de redare principală automat, importarea iniţială a bazei de date este mult mai rapidă deoarece afişajul nu trebuie actualizat." + +#: ../data/gtkpod.glade.h:180 +msgid "If you select several tracks in the track list and edit a tag of the first track, the tags in the other tracks are updated as well." +msgstr "Dacă selectaţi mai multe piese în lista de piese şi editaţi o etichetă a primei piese, etichetele următoarelor piese sunt actualizate de asemenea." + +#: ../data/gtkpod.glade.h:181 +msgid "Ignore these words when at the beginning of the following fields:" +msgstr "Ignoră aceste cuvinte la începutul următoarelor câmpuri:" + +#: ../data/gtkpod.glade.h:182 +msgid "In order to save the displayed track order to the iPod choose 'Save Displayed Track Order' from the 'Edit' menu or select 'Auto Store' below." +msgstr "Pentru a salva ordinea de afişare a pieselor pe iPod alegeţi 'Salvează ordinea afişată a pieselor' din meniul 'Editare' sau selectaţi 'Memorare automată' de mai jos." + +#: ../data/gtkpod.glade.h:183 +msgid "Initialize iPod" +msgstr "Iniţializează iPod" + +#: ../data/gtkpod.glade.h:184 +msgid "" +"Insert before\n" +"Insert after" +msgstr "" +"Inserează înainte\n" +"inserează după" + +#: ../data/gtkpod.glade.h:186 +msgid "Keeps all compilation CDs grouped together in the artists sort tab." +msgstr "Păstrează toate CD-urile de tip compilaţie grupate împreună în categoria artişti." + +#: ../data/gtkpod.glade.h:187 +msgid "Live _updating" +msgstr "Act_ualizare imediată" + +#: ../data/gtkpod.glade.h:188 +msgid "Load iPod(s)" +msgstr "Încarcă" + +#: ../data/gtkpod.glade.h:189 +msgid "Lower Margin" +msgstr "Marginea inferioară" + +#: ../data/gtkpod.glade.h:190 +msgid "M4A with :" +msgstr "M4A cu :" + +#: ../data/gtkpod.glade.h:191 +msgid "MP3 with :" +msgstr "MP3 cu :" + +#: ../data/gtkpod.glade.h:192 +msgid "Match al_l of the following" +msgstr "Potriveşte toate condiţii_le următoare" + +#: ../data/gtkpod.glade.h:193 +msgid "Match an_y of the following" +msgstr "Potri_veşte oricare dintre condiţiile următoare" + +#: ../data/gtkpod.glade.h:194 +msgid "Match only _checked tracks" +msgstr "Potriveşte numai piesele bi_fate" + +#: ../data/gtkpod.glade.h:195 +msgid "Maximum number of background threads:" +msgstr "Numărul maxim de fire de execuţie:" + +#: ../data/gtkpod.glade.h:196 +msgid "Maximum size of cache directory (in GB):" +msgstr "Dimensiunea maximă a dosarului cache (în GO):" + +#: ../data/gtkpod.glade.h:197 +msgid "Model:" +msgstr "Model:" + +#: ../data/gtkpod.glade.h:198 +#: ../src/display_tracks.c:2017 +msgid "Modified" +msgstr "Modificat" + +#: ../data/gtkpod.glade.h:199 +msgid "Most Recently Played Tracks" +msgstr "Piese redate recent" + +#: ../data/gtkpod.glade.h:200 +msgid "Music Root:" +msgstr "Dosar de muzică rădăcină:" + +#: ../data/gtkpod.glade.h:201 +msgid "Music files can have images embedded in the APIC tag. Currently this is only supported for MP3 files." +msgstr "Fişierele muzicale pot avea imagini înglobate în eticheta APIC. Momentan acest lucru este suportat numai pentru fişiere MP3." + +#: ../data/gtkpod.glade.h:202 +msgid "Never show this dialogue again" +msgstr "Nu afişa acest dialog din nou" + +#: ../data/gtkpod.glade.h:203 +msgid "New PL" +msgstr "LR nouă" + +#: ../data/gtkpod.glade.h:204 +msgid "No lower margin" +msgstr "Fără margine inferioară" + +#: ../data/gtkpod.glade.h:205 +msgid "No upper margin" +msgstr "Fără margine superioară" + +#: ../data/gtkpod.glade.h:206 +msgid "Non-transferred tracks" +msgstr "Piese ne-transferate" + +#: ../data/gtkpod.glade.h:207 +msgid "None" +msgstr "Nimic" + +#: ../data/gtkpod.glade.h:208 +msgid "Normally the charset specified when first importing the track will be used for the filename. If you set this option you can set a different charset with the charset selector (Preferences/'Adding/Updating/Syncing'). Note: the charset info is stored in the extended information file (see Preferences/'Writing of the iTunesDB'). Tracks imported before V0.51 will have no charset stored. Instead the charset specified will be used." +msgstr "În mod normal, setul de caractere specificat la prima importare a piesei va fi utilizat pentru numele de fişier. Dacă stabiliţi această opţiune, puteţi stabili seturi de caractere diferite cu selectorul de seturi de caractere (Preferinţe/'Adăugare/Actualizare/Sincronizare'). Notă: informaţia despre setul de caractere este memorată în fişierul de informaţii extinse (vedeţi Preferinţe/'Scrierea iTunesDB'). Piesele importate înainte de versiunea V0.51 nu vor avea nici un set de caractere memorat. În locul acestuia, setul de caractere specificat va fi folosit." + +#: ../data/gtkpod.glade.h:209 +msgid "Normally the charset specified when first importing the track will be used to update the track information. If you have chosen a wrong charset when first importing a track and want to correct it using the 'Update Track' function, you must check this option. Note: the charset info is stored in the extended information file (see 'Writing of iTunesDB' below) and tracks imported before V0.51 will have no charset stored. Instead the charset specified above will be used then." +msgstr "În mod normal, setul de caractere specificat la prima importare a piesei va fi utilizat pentru numele de fişier. Dacă stabiliţi un set de caractere greşit atunci când importaţi pentru prima oară o piesă şi doriţi să îl corectaţi folosind funcţia 'Actualizare piesă', bifaţi această opţiune. Notă: informaţia despre setul de caractere este memorată în fişierul de informaţii extinse (vedeţi Preferinţe/'Scrierea iTunesDB'). Piesele importate înainte de versiunea V0.51 nu vor avea nici un set de caractere memorat. În locul acestuia, setul de caractere specificat va fi folosit." + +#: ../data/gtkpod.glade.h:210 +msgid "Normally the charset specified when first importing the track will be used to write the tags. If you have chosen a wrong charset when first importing a track, you should select this option along with the correct charset. Note: uses the extended information file to store the charset information (see 'Writing of the iTunesDB' on the 'Input/Output' page) and tracks imported before V0.51 will have no charset stored -- the charset specified on the 'Input/Output' page will be used." +msgstr "În mod normal, setul de caractere specificat la prima importare a piesei va fi utilizat pentru numele de fişier. Dacă stabiliţi un set de caractere greşit atunci când importaţi pentru prima oară o piesă, bifaţi această opţiune împreună cu setul de caractere corect. Notă: foloseşte fişierul de informaţii extinse pentru a memora informaţia despre setul de caractere (vedeţi Preferinţe/'Scrierea iTunesDB'). Piesele importate înainte de versiunea V0.51 nu vor avea nici un set de caractere memorat. În locul acestuia, setul de caractere specificat va fi folosit." + +#: ../data/gtkpod.glade.h:211 +msgid "" +"Normally, if a track is no longer present in the sync directory, it will be removed from the playlist, but not from the iPod or local repository.\n" +"If this option is checked, tracks will be completely removed from the iPod or local repository, unless the track is a member of other playlists as well.\n" +"NOTE: if you sync with the master playlist, you must check this option if you want tracks to be removed, because removing from the master playlist means removing from the iPod." +msgstr "" +"În mod normal, dacă o piesă nu mai este prezentă în dosarul de sincronizare, va fi ştearsă din lista de redare, dar nu şi de pe iPod, sau din depozitul local.\n" +"Dacă această opţiune este bifată, piesele vor fi şterse complet de pe iPod sau din depozitul local, numai dacă piesa nu este membra şi a altei lsite de redare.\n" +" NOTĂ: dacă sincronizaţi cu lista de redare principală, trebuie să bifaţi această opţiune dacă doriţi ca piesele să fie şterse, pentru că ştergerea lor din lista de redare principală înseamnă ştergerea de pe iPod." + +#: ../data/gtkpod.glade.h:214 +msgid "Notes sync command:" +msgstr "Comandă sincronizare notiţe:" + +#: ../data/gtkpod.glade.h:215 +msgid "Number of playlists" +msgstr "Număr liste de redare" + +#: ../data/gtkpod.glade.h:216 +msgid "Number of tracks" +msgstr "Număr piese" + +#: ../data/gtkpod.glade.h:217 +msgid "Number of tracks in generated playlists:" +msgstr "Număr piese în liste de redare generate:" + +#: ../data/gtkpod.glade.h:218 +msgid "Number of tracks in the generated playlists 'Most Often Listened', 'Best Rated' and 'Most Recently Played'. Choose '0' for 'no limit'." +msgstr "Număr piese în listele de redare generate 'Cele mai ascultate', 'Cele mai apreciate' şi 'Piese redate recent'. Alegeţi '0' pentru 'nelimitat'." + +#: ../data/gtkpod.glade.h:219 +msgid "Ogg with :" +msgstr "Ogg cu :" + +#: ../data/gtkpod.glade.h:220 +msgid "On startup automatically sync with playlist directories" +msgstr "La pornire sincronizează automat cu dosarele listei de redare" + +#: ../data/gtkpod.glade.h:221 +msgid "On startup automatically sync with the following directory" +msgstr "La pornire sincronizează automat cu următorul dosar" + +#: ../data/gtkpod.glade.h:222 +msgid "On startup automatically update (Live Playlist)" +msgstr "La pornire actualizează automat (listă de redare 'live')" + +#: ../data/gtkpod.glade.h:223 +msgid "One for each Album" +msgstr "Câte una din fiecare album" + +#: ../data/gtkpod.glade.h:224 +msgid "One for each Artist" +msgstr "Câte una din fiecare artist" + +#: ../data/gtkpod.glade.h:225 +msgid "One for each Composer" +msgstr "Câte una din fiecare compozitor" + +#: ../data/gtkpod.glade.h:226 +msgid "One for each Genre" +msgstr "Câte una din fiecare gen" + +#: ../data/gtkpod.glade.h:227 +msgid "One for each Rating" +msgstr "Câte una din fiecare nivel de apreciere" + +#: ../data/gtkpod.glade.h:228 +msgid "One for each Year" +msgstr "Câte una din fiecare an" + +#: ../data/gtkpod.glade.h:229 +msgid "Overwrite tags that are already set" +msgstr "Suprascrie etichetele care sunt definite deja" + +#: ../data/gtkpod.glade.h:230 +msgid "Password:" +msgstr "Parolă:" + +#: ../data/gtkpod.glade.h:231 +msgid "Path:" +msgstr "Cale:" + +#: ../data/gtkpod.glade.h:232 +msgid "Play time" +msgstr "Durată" + +#: ../data/gtkpod.glade.h:233 +#: ../src/display_spl.c:98 +#: ../src/misc_conversion.c:77 +msgid "Playcount" +msgstr "Număr redări" + +#: ../data/gtkpod.glade.h:234 +#: ../src/display_tracks.c:2014 +msgid "Played" +msgstr "Redat" + +#: ../data/gtkpod.glade.h:235 +#: ../src/display_spl.c:105 +msgid "Playlist" +msgstr "Listă de redare" + +#: ../data/gtkpod.glade.h:236 +msgid "Playlist name:" +msgstr "Nume listă de redare:" + +#: ../data/gtkpod.glade.h:237 +msgid "Playlist type:" +msgstr "Tip listă de redare:" + +#: ../data/gtkpod.glade.h:238 +#: ../src/display_playlists.c:2190 +msgid "Playlists" +msgstr "Liste de redare" + +#: ../data/gtkpod.glade.h:239 +msgid "Please refer to the notice below." +msgstr "Vă rugăm să vă referiţi la notiţa de mai jos." + +#: ../data/gtkpod.glade.h:240 +msgid "Please specify a time interval" +msgstr "Vă rugăm specificaţi un interval de timp" + +#: ../data/gtkpod.glade.h:241 +msgid "Preferences" +msgstr "Preferinţe" + +#: ../data/gtkpod.glade.h:242 +msgid "Progress Information" +msgstr "Informaţii progres" + +#: ../data/gtkpod.glade.h:243 +msgid "Random Playlist from Displayed Tracks" +msgstr "Listă de redare aleatoare din piesele afişate" + +#: ../data/gtkpod.glade.h:244 +msgid "Randomize Current Playlist" +msgstr "Fă aleatoare lista de redare curentă" + +#: ../data/gtkpod.glade.h:245 +#: ../src/display_spl.c:101 +#: ../src/misc_conversion.c:78 +msgid "Rating" +msgstr "Apreciere" + +#: ../data/gtkpod.glade.h:246 +msgid "Read coverart from embedded APIC data" +msgstr "Citeşte coverart din datele APIC înglobate" + +#: ../data/gtkpod.glade.h:247 +msgid "Read tags from file contents (e.g. ID3 tags in MP3 files)" +msgstr "Citeşte etichete din fişier (e.g. etichete ID3 din fişiere MP3)" + +#: ../data/gtkpod.glade.h:248 +msgid "Repository Options" +msgstr "Opţiuni depozit" + +#: ../data/gtkpod.glade.h:249 +msgid "Repository name:" +msgstr "Nume depozit:" + +#: ../data/gtkpod.glade.h:250 +msgid "Repository type:" +msgstr "Tip depozit:" + +#: ../data/gtkpod.glade.h:251 +msgid "Root directory of mserv database (trackinfo root)." +msgstr "Dosar rădăcină pentru baza de date mserv (trackinfo root)." + +#: ../data/gtkpod.glade.h:252 +msgid "Rules" +msgstr "Reguli" + +#: ../data/gtkpod.glade.h:253 +#: ../src/context_menus.c:808 +msgid "Save Changes" +msgstr "Salvează" + +#: ../data/gtkpod.glade.h:254 +msgid "Scrobble Tracks?" +msgstr "Scrobble piese?" + +#: ../data/gtkpod.glade.h:255 +msgid "Select '-1' for no upper limit." +msgstr "Selectaţi '-1' pentru lipsă limită superioară" + +#: ../data/gtkpod.glade.h:256 +msgid "Select '0' for no lower limit." +msgstr "Selectaţi '0' pentru lipsă limită inferioară" + +#: ../data/gtkpod.glade.h:257 +msgid "" +"Selected\n" +"Playlist" +msgstr "" +"Listă redare\n" +"selectată" + +#: ../data/gtkpod.glade.h:259 +msgid "" +"Selected\n" +"Tracks" +msgstr "" +"Piese\n" +"selectate" + +#: ../data/gtkpod.glade.h:261 +msgid "Selected Tab _Entry" +msgstr "Cat_egoria selectată" + +#: ../data/gtkpod.glade.h:262 +msgid "Selected _Playlist" +msgstr "Lista de _redare selectată" + +#: ../data/gtkpod.glade.h:263 +msgid "Selected _Tracks" +msgstr "P_iese selectate" + +#: ../data/gtkpod.glade.h:264 +msgid "Selected filter tab entry from database" +msgstr "Categorie selectată din baza de date" + +#: ../data/gtkpod.glade.h:265 +msgid "Selected filter tab entry from harddisk" +msgstr "Categorie selectată de pe discul dur" + +#: ../data/gtkpod.glade.h:266 +msgid "Selected filter tab entry from iPod" +msgstr "Categorie selectată de pe iPod" + +#: ../data/gtkpod.glade.h:267 +msgid "Selected filter tab entry from playlist" +msgstr "Categorie selectată din lista de redare" + +#: ../data/gtkpod.glade.h:268 +msgid "Selected playlist" +msgstr "Lista de redare selectată" + +#: ../data/gtkpod.glade.h:269 +msgid "Selected playlist including tracks from database" +msgstr "Lista de redare selectată incluzând piesele din baza de date" + +#: ../data/gtkpod.glade.h:270 +msgid "Selected playlist including tracks from harddisk" +msgstr "Lista de redare selectată incluzând piesele de pe discul dur" + +#: ../data/gtkpod.glade.h:271 +msgid "Selected playlist including tracks from iPod" +msgstr "Lista de redare selectată incluzând piesele de pe iPod" + +#: ../data/gtkpod.glade.h:272 +msgid "Selected tracks from database" +msgstr "Piese selectate din baza de date" + +#: ../data/gtkpod.glade.h:273 +msgid "Selected tracks from harddisk" +msgstr "Piese selectate de pe discul dur" + +#: ../data/gtkpod.glade.h:274 +msgid "Selected tracks from iPod" +msgstr "Piese selectate de pe iPod" + +#: ../data/gtkpod.glade.h:275 +msgid "Selected tracks from playlist" +msgstr "Piese selectate din lista de redare" + +#: ../data/gtkpod.glade.h:276 +msgid "Semicolon separated list of file exclusion masks, e.g. '*.mp3'" +msgstr "Măşti de fişiere pentru excludere, separate prin punct şi virgulă, e.g. '*.mp3'" + +#: ../data/gtkpod.glade.h:277 +msgid "Set Cover Art from _File" +msgstr "Stabileşte coperta din _fişier" + +#: ../data/gtkpod.glade.h:278 +msgid "Set Cover Art from _Web" +msgstr "Stabileşte coperta de pe _web" + +#: ../data/gtkpod.glade.h:279 +msgid "Set mountpoint or edit repository options" +msgstr "Stabileşte punct de montare sau editează opţiunile depozitului" + +#: ../data/gtkpod.glade.h:280 +msgid "Set options for Calendar/Contacts/Notes" +msgstr "Stabileşte opţiuni pentru Calendar/Agendă/Notiţe" + +#: ../data/gtkpod.glade.h:281 +msgid "Set this to 'aacgain -q -k' to use the 'Normalize volume' functionality in the Tools Menu. If this is set, missing normalization data for .m4a and .m4b files will be calculated and written to your music file using this command." +msgstr "Stabileşte la 'aacgain -q -k' pentru a folosi funcţionalitatea 'Normalizare volum' în meniul unelte. Dacă aceasta nu este definită, datele de normalizare lipsă pentru fişierele .m4a şi .m4b vor fi calculate şi scrise în fişierele dvs muzicale folosind această comandă." + +#: ../data/gtkpod.glade.h:282 +msgid "Set this to 'mp3gain -q -k' to use the 'Normalize volume' functionality in the Tools Menu. If this is set, missing normalization data for mp3 files will be calculated and written to your mp3 file using this command." +msgstr "Stabileşte la 'mp3gain -q -k' pentru a folosi funcţionalitatea 'Normalizare volum' în meniul unelte. Dacă aceasta nu este definită, datele de normalizare lipsă pentru fişierele .m4a şi .m4b vor fi calculate şi scrise în fişierele dvs muzicale folosind această comandă." + +#: ../data/gtkpod.glade.h:283 +msgid "Set this to your last.fm password" +msgstr "Stabiliţi parola dvs last.fm" + +#: ../data/gtkpod.glade.h:284 +msgid "Set this to your last.fm username" +msgstr "Stabiliţi numele dvs de utilizator last.fm" + +#: ../data/gtkpod.glade.h:285 +msgid "Set to 0 to effectively disable caching (a maximum of one track will be cached at a time)." +msgstr "Stabiliţi la 0 pentru a dezactiva efectiv stocarea temporară (cel mult o piesă va fi stocată temporar la un moment dat)." + +#: ../data/gtkpod.glade.h:286 +msgid "Set to 0 to use as many background threads as CPUs are available on your system." +msgstr "Stabiliţi la 0 pentru a folosi la fel de multe fire de execuţie pe fundal ca numărul de procesoare disponibile pe sistemul dvs." + +#: ../data/gtkpod.glade.h:287 +msgid "Show information about problems when accessing mserv" +msgstr "Afişează informaţii despre problemele la accesarea mserv" + +#: ../data/gtkpod.glade.h:288 +msgid "Show summary of sync result" +msgstr "Afişează rezumatul rezultatului sincronizării" + +#: ../data/gtkpod.glade.h:289 +#: ../src/misc_playlist.c:96 +#: ../src/repository.c:1356 +msgid "Smart Playlist" +msgstr "Listă de redare inteligentă" + +#: ../data/gtkpod.glade.h:290 +msgid "Sort tracks according to: " +msgstr "Sortează piesele conform:" + +#: ../data/gtkpod.glade.h:291 +msgid "Sorting Options" +msgstr "Opţiuni sortare" + +#: ../data/gtkpod.glade.h:292 +msgid "Sorting case sensitive" +msgstr "Majuscule semnificative în sortare" + +#: ../data/gtkpod.glade.h:293 +msgid "Sorttab: " +msgstr "Categorie:" + +#: ../data/gtkpod.glade.h:294 +msgid "Sorttabs" +msgstr "Categorii" + +#: ../data/gtkpod.glade.h:295 +msgid "Source:" +msgstr "Sursă:" + +#: ../data/gtkpod.glade.h:297 +#, no-c-format +msgid "Specify exact path including command line options. '%i' will be replaced with the mount point of the iPod." +msgstr "Specifică calea exactă incluzând opţiunile în linie de comandă. '%i' va fi înlocuit cu punctul de montare al iPod." + +#: ../data/gtkpod.glade.h:298 +msgid "Specify interval" +msgstr "Specificaţi un interval" + +#: ../data/gtkpod.glade.h:299 +msgid "Start display automatically" +msgstr "Porneşte automat afişarea" + +#: ../data/gtkpod.glade.h:300 +msgid "Synchronise Contacts, Calendar and Notes" +msgstr "Sincronizează agendă, calendar şi notiţe" + +#: ../data/gtkpod.glade.h:301 +msgid "Synchronize All" +msgstr "Sincronizează tot" + +#: ../data/gtkpod.glade.h:302 +msgid "Synchronize Calendar" +msgstr "Sincronizează calendar" + +#: ../data/gtkpod.glade.h:303 +msgid "Synchronize Contacts" +msgstr "Sincronizează agendă" + +#: ../data/gtkpod.glade.h:304 +msgid "Synchronize Notes" +msgstr "Sincronizează notiţe" + +#: ../data/gtkpod.glade.h:305 +msgid "Template for info field: " +msgstr "Şablon pentru câmp informaţii:" + +#: ../data/gtkpod.glade.h:306 +msgid "The local copy of the track is referenced in the playlist. If the track is not available locally, an error message is displayed." +msgstr "Copia locală a piesei este referenţiată în lista de redare. Dacă piesa nu este disponibilă local, un mesaj de eroare va fi afişat." + +#: ../data/gtkpod.glade.h:307 +msgid "The output of the background conversion scripts is copied below. Each page of the notebook corresponds to one background thread." +msgstr "Ieşirea scripturilor de conversie din fundal este copiată mai jos. Fiecare pagină din carneţel corespunde unui fir de execuţie pe fundal." + +#: ../data/gtkpod.glade.h:308 +msgid "The tags are written to the files on your harddrive and on the iPod (if available)." +msgstr "Etichetele sunt scrise în fişierele de pe discul dvs dur şi de pe iPod (dacă este disponibil)." + +#: ../data/gtkpod.glade.h:309 +msgid "The track on the iPod is referenced in the playlist file." +msgstr "Piesa de pe iPod este referenţiată în fişierul listă de redare." + +#: ../data/gtkpod.glade.h:310 +msgid "This is the same option as in 'Edit/Delete Confirmation'" +msgstr "Aceasta este aceeaşi opţiune cu cea din 'Editare/Confirmare ştergere'" + +#: ../data/gtkpod.glade.h:311 +msgid "This is the way to go, but maybe not all programs support it yet. ID3v2.4 uses unicode to store the tags, so you won't have to worry about charsets any more. gtkpod will use UTF8 encoding as this will not increase the size of pure ASCII tags. ID3v2.2/4 tags will also be written if they are already present in the file to write to." +msgstr "Aceasta este alegerea corectă, dar poate că nu toate programele o suportă deocamdată. ID3v2.4 foloseşte Unicode pentru a memora etichetele, astfel că nu va mai trebui să vă faceţi probleme pentru seturi de caractere. gtkpod va folosi codarea UTF8 atâta timp cât aceasta nu va mări dimensiunea etichetelor pure ASCII. Etichetele ID3v2.2/4 vor fi verificate de asemenea dacă nu sunt prezente în fişierul în care se scrie." + +#: ../data/gtkpod.glade.h:312 +msgid "This option will be re-activated when you upgrade gtkpod." +msgstr "Această opţiune va fi re-activată la actualizarea gtkpod." + +#: ../data/gtkpod.glade.h:313 +msgid "Time:" +msgstr "Timp:" + +#: ../data/gtkpod.glade.h:314 +#: ../src/display_sorttabs.c:2972 +#: ../src/display_spl.c:83 +#: ../src/misc_conversion.c:62 +msgid "Title" +msgstr "Titlu" + +#: ../data/gtkpod.glade.h:315 +msgid "" +"Total\n" +"(iPod)" +msgstr "" +"Total\n" +"iPod" + +#: ../data/gtkpod.glade.h:317 +msgid "" +"Total\n" +"(local)" +msgstr "" +"Total\n" +"(local)" + +#: ../data/gtkpod.glade.h:319 +msgid "Tracks" +msgstr "Piese" + +#: ../data/gtkpod.glade.h:320 +msgid "Tracks Most Often Listened To" +msgstr "Cele mai ascultate piese" + +#: ../data/gtkpod.glade.h:321 +msgid "Tracks can be transferred in the background as soon as they are added to an iPod repository. Otherwise they will be transferred when ejecting the contents of the iPod completely unchanged until then." +msgstr "Piesele pot fi transferate pe fundal imediat ce sunt adăugate într-un depozit iPod. Altfel, ele vor fi transferate la deconectarea iPod, acesta fiind complet nemodificat până atunci." + +#: ../data/gtkpod.glade.h:322 +msgid "Tracks in Selected Tab _Entry" +msgstr "Piese în cate_goria selectată" + +#: ../data/gtkpod.glade.h:323 +msgid "Tracks in Selected _Playlist" +msgstr "Piese în _lista de redare selectată" + +#: ../data/gtkpod.glade.h:324 +msgid "Transfer tracks to the iPod in the background" +msgstr "Transferă piesele către iPod pe fundal" + +#: ../data/gtkpod.glade.h:325 +msgid "Translators" +msgstr "Traducători" + +#: ../data/gtkpod.glade.h:326 +msgid "Try to load contents of all connected iPods. For each iPod a separate repository must be set up." +msgstr "Încearcă să încarce conţinutul tuturor iPodurilor conectate. Pentru fiecare iPod trebuie stabilit un depozit separat." + +#: ../data/gtkpod.glade.h:327 +msgid "Undo _Track" +msgstr "Refacere _piesă" + +#: ../data/gtkpod.glade.h:328 +msgid "Update _mserv Data from File" +msgstr "Actualizează date _mserv din fişier" + +#: ../data/gtkpod.glade.h:329 +msgid "Update/Sync all playlists now" +msgstr "Actualizează/sincronizează toate listele de redare acum" + +#: ../data/gtkpod.glade.h:330 +msgid "Update/Sync playlist now" +msgstr "Actualizează/sincronizează lista de redare acum" + +#: ../data/gtkpod.glade.h:331 +msgid "Upper margin" +msgstr "Margine superioară" + +#: ../data/gtkpod.glade.h:332 +msgid "Use 'Multi-Edit' also for title field" +msgstr "Foloseşte 'Editare multiplă' şi pentru câmpul titlu" + +#: ../data/gtkpod.glade.h:333 +msgid "Use 'Multi-Edit' for tracks selections" +msgstr "Foloseşte 'Editare multiplă' pentru selecţii de piese" + +#: ../data/gtkpod.glade.h:334 +msgid "Use <i><Album>.jpg</i> in the parent directory" +msgstr "Foloseşte <i><Album>.jpg</i> în dosarul părinte" + +#: ../data/gtkpod.glade.h:335 +msgid "Use <i><Album>.jpg</i>, <i><Album>.png</i>..." +msgstr "Foloseşte <i><Album>.jpg</i>, <i><Album>.png</i>..." + +#: ../data/gtkpod.glade.h:336 +msgid "Use <i>folder.jpg</i> as cover art." +msgstr "Foloseşte <i>dosar.jpg</i> ca şi copertă." + +#: ../data/gtkpod.glade.h:337 +msgid "Use <i>folder.jpg</i>, <i>folder.png</i>..." +msgstr "Foloseşte <i>dosar.jpg</i>, <i>dosar.png</i>..." + +#: ../data/gtkpod.glade.h:338 +msgid "Use mserv database to fill additional information" +msgstr "Foloseşte baza de date mserv pentru a obţine informaţie suplimentară" + +#: ../data/gtkpod.glade.h:339 +msgid "" +"Use selected charset (Preferences/'Adding/Updating/ Syncing')\n" +"for this filename." +msgstr "" +"Foloseşte setul de caractere selectat (Preferinţe/'Adăugare/Actualizare/Sincronizare')\n" +"pentru acest nume de fişier." + +#: ../data/gtkpod.glade.h:341 +msgid "" +"Use selected encoding (on the 'General' page)\n" +"when writing tags" +msgstr "" +"Foloseşte tipul de codare selecatat (în pagina 'General')\n" +"la scrierea etichetelor" + +#: ../data/gtkpod.glade.h:343 +msgid "Use selected encoding also when updating or syncing tracks" +msgstr "Foloseşte de asemenea tipul de codare selectat la actualizarea sau sincronizarea pieselor" + +#: ../data/gtkpod.glade.h:344 +msgid "Use this template to parse filename for tag information:" +msgstr "Foloseşte acest şablon pentru interpretarea numelor de fişiere pentru informaţii de etichete:" + +#: ../data/gtkpod.glade.h:345 +msgid "Username to be used for mserv database lookup." +msgstr "Numele de utilizator va fi utilizat pentru căutarea în baza de date mserv." + +#: ../data/gtkpod.glade.h:346 +msgid "Username:" +msgstr "Nume utilizator:" + +#: ../data/gtkpod.glade.h:347 +msgid "Usually you don't want to set the title of several tracks to the same text. This option might avoid unwanted results (especially since there is no 'undo' yet)." +msgstr "Uzual, nu veţi dori să stabiliţi titlul mai multor piese la acelaşi text. Această opţiune poate împiedica rezultate nedorite (mai ales atâta timp cât nu este nici o opţiune 'Refacere' deocamdată)." + +#: ../data/gtkpod.glade.h:348 +msgid "WAV with :" +msgstr "WAV cu :" + +#: ../data/gtkpod.glade.h:349 +msgid "" +"When adding dirs/files, update information of\n" +"existing tracks with identical filenames" +msgstr "" +"Când adaug dosare/fişiere, actualizez informaţiile \n" +"pieselor existente cu nume de fişier identice" + +#: ../data/gtkpod.glade.h:351 +msgid "When copying from iPod no check is performed on whether the destination file exists. Enabling this option will make gtkpod check whether the length of the destination file is the same as the file in the iPod. If so the file is skipped, allowing a quick sync of the iPod's contents." +msgstr "Când copiez de pe iPod nu verific dacă fişierul destinaţie există. Activarea acestei opţiuni va face gtkpod să verifice dacă dimensiunea fişierului destinaţie este aceeaşi cu cea a fişierului de pe iPod. Dacă da, se sare peste fişier, permiţând sincronizarea rapidă a conţinutului iPod-ului." + +#: ../data/gtkpod.glade.h:352 +msgid "When syncing playlists" +msgstr "Când se sincronizează liste de redare" + +#: ../data/gtkpod.glade.h:353 +msgid "Will show a list of tracks removed and a list of tracks newly added or updated." +msgstr "Va afişa o listă a pieselor şterse şi o listă a pieselor adăugate recent sau actualizate." + +#: ../data/gtkpod.glade.h:354 +msgid "Write ID3 tags to disk when modified in gtkpod" +msgstr "Scrie etichetele ID3 pe disc atunci când sunt modificate în gtkpod" + +#: ../data/gtkpod.glade.h:355 +msgid "Write all changes made to the disk and the iPod(s)." +msgstr "Scrie toate modificările făcute pe disc şi pe iPod(uri)" + +#: ../data/gtkpod.glade.h:356 +msgid "" +"Write extended information (PC filenames, SHA1 hashes,\n" +"encoding...). Recommended." +msgstr "" +"Scrie informaţie extinsă (nume de fişier pe PC, hashes SHA1, \n" +" codare....). Recomandat." + +#: ../data/gtkpod.glade.h:358 +msgid "You can also use the table headers, but this allows you to sort according to a column that is not displayed." +msgstr "Puteţi folosi de asemenea antetele tabelului, dar această opţiune vă permite să sortaţi conform unei coloane care nu este afişată." + +#: ../data/gtkpod.glade.h:359 +msgid "_About" +msgstr "_Despre" + +#: ../data/gtkpod.glade.h:360 +msgid "_All Tracks" +msgstr "_Toate" + +#: ../data/gtkpod.glade.h:361 +msgid "_Arrange Sort Tabs" +msgstr "_Aranjează categoriile" + +#: ../data/gtkpod.glade.h:362 +msgid "_Check iPod's Files" +msgstr "_Verifică fişierele iPodului" + +#: ../data/gtkpod.glade.h:363 +msgid "_Conversion Log" +msgstr "_Jurnal conversie" + +#: ../data/gtkpod.glade.h:364 +msgid "_Create Playlists" +msgstr "_Creează listă de redare" + +#: ../data/gtkpod.glade.h:365 +msgid "_Create iPod's Directories" +msgstr "_Creează dosarele iPodului" + +#: ../data/gtkpod.glade.h:366 +msgid "_Delete" +msgstr "Ş_terge" + +#: ../data/gtkpod.glade.h:367 +msgid "_Display" +msgstr "_Afişare" + +#: ../data/gtkpod.glade.h:368 +msgid "_Displayed Tracks" +msgstr "_Piese afişate" + +#: ../data/gtkpod.glade.h:369 +msgid "_Edit" +msgstr "_Editare" + +#: ../data/gtkpod.glade.h:370 +msgid "_Encoding (ID3, files):" +msgstr "_Encodare (ID3, fişiere):" + +#: ../data/gtkpod.glade.h:371 +msgid "_Enqueue" +msgstr "_Adaugă în coadă" + +#: ../data/gtkpod.glade.h:372 +msgid "_Export Tracks from Database" +msgstr "_Exportă piesele din baza de date" + +#: ../data/gtkpod.glade.h:373 +msgid "_File" +msgstr "_Fişier" + +#: ../data/gtkpod.glade.h:374 +msgid "_General" +msgstr "_General" + +#: ../data/gtkpod.glade.h:375 +msgid "_Help" +msgstr "_Ajutor" + +#: ../data/gtkpod.glade.h:376 +msgid "_Ignore rules" +msgstr "_Ignoră reguli" + +#: ../data/gtkpod.glade.h:377 +msgid "_Info Window" +msgstr "_Fereastră informaţii" + +#: ../data/gtkpod.glade.h:378 +msgid "_Last.FM" +msgstr "_Last.FM" + +#: ../data/gtkpod.glade.h:379 +msgid "_Less Sort Tabs" +msgstr "Mai _puţine categorii" + +#: ../data/gtkpod.glade.h:380 +msgid "_Limit to" +msgstr "_Limitează la" + +#: ../data/gtkpod.glade.h:381 +msgid "_Load iPod(s)" +msgstr "Încarcă i_Pod(urile)" + +#: ../data/gtkpod.glade.h:382 +msgid "_Local" +msgstr "_Local" + +#: ../data/gtkpod.glade.h:383 +msgid "_M3U" +msgstr "_M3U" + +#: ../data/gtkpod.glade.h:384 +msgid "_Misc." +msgstr "_Misc." + +#: ../data/gtkpod.glade.h:385 +msgid "_More Sort Tabs" +msgstr "Mai _multe categorii" + +#: ../data/gtkpod.glade.h:386 +msgid "_Newly Added Tracks" +msgstr "Piese adăugate _recent" + +#: ../data/gtkpod.glade.h:387 +msgid "_Normalize Volume" +msgstr "_Normalizare volum" + +#: ../data/gtkpod.glade.h:388 +msgid "_Number of sort tabs:" +msgstr "_Număr categorii" + +#: ../data/gtkpod.glade.h:389 +msgid "_PLS" +msgstr "_PLS" + +#: ../data/gtkpod.glade.h:390 +msgid "_Play Now" +msgstr "_Redă acum" + +#: ../data/gtkpod.glade.h:391 +msgid "_Podcasts" +msgstr "_Podcasturi" + +#: ../data/gtkpod.glade.h:392 +msgid "_Prefer Local" +msgstr "_Preferă local" + +#: ../data/gtkpod.glade.h:393 +msgid "_Previous" +msgstr "_Precedent" + +#: ../data/gtkpod.glade.h:394 +msgid "_Remove Cover Art" +msgstr "_Şterge coperta" + +#: ../data/gtkpod.glade.h:395 +msgid "_Save Changes" +msgstr "_Salvează modificările" + +#: ../data/gtkpod.glade.h:396 +msgid "_Save Displayed Track Order" +msgstr "Sal_vează ordinea afişată a pieselor" + +#: ../data/gtkpod.glade.h:397 +msgid "_Sorting" +msgstr "_Sortare" + +#: ../data/gtkpod.glade.h:398 +msgid "_Synchronize Playlist with Dir(s)" +msgstr "Sincroni_zează lista de redare cu dosarul(ele)" + +#: ../data/gtkpod.glade.h:399 +msgid "_Toolbar" +msgstr "Bară de unel_te" + +#: ../data/gtkpod.glade.h:400 +msgid "_Tools" +msgstr "_Unelte" + +#: ../data/gtkpod.glade.h:401 +msgid "_Tooltips" +msgstr "_Indicii" + +#: ../data/gtkpod.glade.h:402 +msgid "_Track Info" +msgstr "Informaţii _piesă" + +#: ../data/gtkpod.glade.h:403 +msgid "_Undo All" +msgstr "_Refacere toate" + +#: ../data/gtkpod.glade.h:404 +msgid "_Update Tracks from File" +msgstr "Act_ualizează piesele din fişier" + +#: ../data/gtkpod.glade.h:405 +msgid "_Video" +msgstr "_Video" + +#: ../data/gtkpod.glade.h:406 +msgid "_View" +msgstr "_Vizualizare" + +#: ../data/gtkpod.glade.h:407 +msgid "_iPod" +msgstr "_iPod" + +#: ../data/gtkpod.glade.h:409 +#, no-c-format +msgid "artist: %a, album: %A, composer: %c, title: %t, genre: %G, track nr: %T, CD nr: %C, year: %Y, skip data: %*, the character '%': %%. You can separate several templates by a ';'. The first one matching the filename will be used. Example: '%a - %A/%T %t.mp3;%t.wav'." +msgstr "artist: %a, album: %A, compozitor: %c, titlu: %t, gen: %G, nr pistă: %T, nr CD: %C, an: %Y, data sărit: %*, caracterul '%': %%. Puteţi separa mai multe şabloane pritnr-un ';'. Primul şablon care se potri... [truncated message content] |
From: <jc...@us...> - 2007-07-13 16:05:55
|
Revision: 1638 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1638&view=rev Author: jcsjcs Date: 2007-07-13 09:05:56 -0700 (Fri, 13 Jul 2007) Log Message: ----------- * src/display_tracks.c (tm_cell_edited, tm_cell_compare): add newly added fields (bugfix, thanks to Michael Tiffany) Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/src/display_tracks.c Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-07-13 03:30:13 UTC (rev 1637) +++ gtkpod/trunk/ChangeLog_detailed 2007-07-13 16:05:56 UTC (rev 1638) @@ -1,3 +1,8 @@ +2007-07-13 Jorg Schuler <jcsjcs at users.sourceforge.net> + + * src/display_tracks.c (tm_cell_edited, tm_cell_compare): add + newly added fields (bugfix, thanks to Michael Tiffany) + 2007-07-12 Jorg Schuler <jcsjcs at users.sourceforge.net> * configure.in Modified: gtkpod/trunk/src/display_tracks.c =================================================================== --- gtkpod/trunk/src/display_tracks.c 2007-07-13 03:30:13 UTC (rev 1637) +++ gtkpod/trunk/src/display_tracks.c 2007-07-13 16:05:56 UTC (rev 1638) @@ -838,6 +838,7 @@ { case TM_COLUMN_TITLE: case TM_COLUMN_ALBUM: + case TM_COLUMN_ALBUMARTIST: case TM_COLUMN_ARTIST: case TM_COLUMN_GENRE: case TM_COLUMN_COMPOSER: @@ -870,6 +871,12 @@ case TM_COLUMN_TV_NETWORK: case TM_COLUMN_SEASON_NR: case TM_COLUMN_EPISODE_NR: + case TM_COLUMN_SORT_TITLE: + case TM_COLUMN_SORT_ALBUM: + case TM_COLUMN_SORT_ALBUMARTIST: + case TM_COLUMN_SORT_COMPOSER: + case TM_COLUMN_SORT_TVSHOW: + case TM_COLUMN_SORT_ARTIST: changed = track_set_text (track, new_text, TM_to_T (column)); if (changed && (column == TM_COLUMN_TRACKLEN)) { /* be on the safe side and reset starttime, stoptime and @@ -903,9 +910,16 @@ break; } break; - default: - g_warning ("Programming error: tm_cell_edited: unknown track cell (%d) edited\n", column); - break; + case TM_COLUMN_IPOD_ID: + case TM_COLUMN_PC_PATH: + case TM_COLUMN_TRANSFERRED: + case TM_COLUMN_SIZE: + case TM_COLUMN_IPOD_PATH: + case TM_COLUMN_COMPILATION: + case TM_COLUMN_THUMB_PATH: + case TM_NUM_COLUMNS: + /* These are not editable text fields */ + break; } /* printf (" changed: %d\n", changed); */ if (changed) @@ -1451,6 +1465,7 @@ { case TM_COLUMN_TITLE: case TM_COLUMN_ALBUM: + case TM_COLUMN_ALBUMARTIST: case TM_COLUMN_GENRE: case TM_COLUMN_COMPOSER: case TM_COLUMN_COMMENT: @@ -1465,6 +1480,12 @@ case TM_COLUMN_TV_SHOW: case TM_COLUMN_TV_EPISODE: case TM_COLUMN_TV_NETWORK: + case TM_COLUMN_SORT_TITLE: + case TM_COLUMN_SORT_ALBUM: + case TM_COLUMN_SORT_ARTIST: + case TM_COLUMN_SORT_ALBUMARTIST: + case TM_COLUMN_SORT_COMPOSER: + case TM_COLUMN_SORT_TVSHOW: /* string_compare_func is set to either compare_string_fuzzy or compare_string in tm_sort_column_changed() which is called once before the comparing begins. */ @@ -1562,8 +1583,7 @@ case TM_COLUMN_MEDIA_TYPE: cmp = track1->mediatype - track2->mediatype; break; - default: - g_warning ("Programming error: tm_data_compare_func: no sort method for tm_item %d\n", tm_item); + case TM_NUM_COLUMNS: break; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pha...@us...> - 2007-07-13 22:44:06
|
Revision: 1639 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1639&view=rev Author: phantom_sf Date: 2007-07-13 15:44:04 -0700 (Fri, 13 Jul 2007) Log Message: ----------- 2007-07-13 P.G. Richardson <phantom_sf at users.sourceforge.net> * src/display_coverart.c src/display_coverart.h src/fetchcover.c Added parameter to coverart_get_track_thumb so that the default cover image can be provided with a default size if required. Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/src/display_coverart.c gtkpod/trunk/src/display_coverart.h gtkpod/trunk/src/fetchcover.c Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-07-13 16:05:56 UTC (rev 1638) +++ gtkpod/trunk/ChangeLog_detailed 2007-07-13 22:44:04 UTC (rev 1639) @@ -1,3 +1,11 @@ +2007-07-13 P.G. Richardson <phantom_sf at users.sourceforge.net> + + * src/display_coverart.c + src/display_coverart.h + src/fetchcover.c + Added parameter to coverart_get_track_thumb so that the default + cover image can be provided with a default size if required. + 2007-07-13 Jorg Schuler <jcsjcs at users.sourceforge.net> * src/display_tracks.c (tm_cell_edited, tm_cell_compare): add @@ -21,20 +29,20 @@ 2007-07-04 P.G. Richardson <phantom_sf at users.sourceforge.net> - * src/details.c: tartwork_changed flag defined when a new - artwork file is selected from the filesystem. + * src/details.c: tartwork_changed flag defined when a new + artwork file is selected from the filesystem. - * src/fetchcover.c: tartwork_changed flag added for all - occurrences of artwork being changed. + * src/fetchcover.c: tartwork_changed flag added for all + occurrences of artwork being changed. - * src/display_coverart.c: reworking of the code to fix the - sizes of the covers according to the ipod thumbnail size. - When the pane is expanded, the coverart display's spacing is - widened rather than the individual covers being stretched. - Instead of the highlights, reflections and covers images - being redrawn as black when null, the containing items are - hidden. They are redisplayed when a new cover image is - required. + * src/display_coverart.c: reworking of the code to fix the + sizes of the covers according to the ipod thumbnail size. + When the pane is expanded, the coverart display's spacing is + widened rather than the individual covers being stretched. + Instead of the highlights, reflections and covers images + being redrawn as black when null, the containing items are + hidden. They are redisplayed when a new cover image is + required. 2007-07-04 Todd Zullinger <tmzullinger at users.sourceforge.net> Modified: gtkpod/trunk/src/display_coverart.c =================================================================== --- gtkpod/trunk/src/display_coverart.c 2007-07-13 16:05:56 UTC (rev 1638) +++ gtkpod/trunk/src/display_coverart.c 2007-07-13 22:44:04 UTC (rev 1639) @@ -328,7 +328,7 @@ if (album->albumart == NULL) { track = g_list_nth_data (album->tracks, 0); - album->albumart = coverart_get_track_thumb (track, track->itdb->device); + album->albumart = coverart_get_track_thumb (track, track->itdb->device, 0); } /* Set the x, y, height and width of the CD cover */ @@ -570,12 +570,15 @@ * Retrieve the artwork pixbuf from the given track. * * @track: Track from where the pixbuf is obtained. + * @device: Reference to the device upon which the track is located + * @default_img_size: If the default image must be used then this may contain a default value + * for its size. * * Returns: * pixbuf referenced by the provided track or the pixbuf of the * default file if track has no cover art. */ -GdkPixbuf *coverart_get_track_thumb (Track *track, Itdb_Device *device) +GdkPixbuf *coverart_get_track_thumb (Track *track, Itdb_Device *device, gint default_img_size) { GdkPixbuf *pixbuf = NULL; Thumb *thumb; @@ -594,7 +597,7 @@ if (pixbuf == NULL) { /* Could not get a viable thumbnail so get default pixbuf */ - pixbuf = coverart_get_default_track_thumb (); + pixbuf = coverart_get_default_track_thumb (default_img_size); } return pixbuf; @@ -670,7 +673,7 @@ if (imgbuf == NULL) { /* Could not get a viable thumbnail so get default pixbuf */ - imgbuf = coverart_get_default_track_thumb (); + imgbuf = coverart_get_default_track_thumb (256); } gint pixheight = gdk_pixbuf_get_height (imgbuf); @@ -721,13 +724,16 @@ * Returns: * pixbuf of the default file for tracks with no cover art. */ -GdkPixbuf *coverart_get_default_track_thumb (void) +GdkPixbuf *coverart_get_default_track_thumb (gint default_img_size) { GdkPixbuf *pixbuf = NULL; GdkPixbuf *scaled = NULL; gdouble default_size = 140; GError *error = NULL; + if (default_img_size != 0) + default_size = (gdouble) default_img_size; + pixbuf = gdk_pixbuf_new_from_file(DEFAULT_FILE, &error); if (error != NULL) { Modified: gtkpod/trunk/src/display_coverart.h =================================================================== --- gtkpod/trunk/src/display_coverart.h 2007-07-13 16:05:56 UTC (rev 1638) +++ gtkpod/trunk/src/display_coverart.h 2007-07-13 22:44:04 UTC (rev 1639) @@ -80,7 +80,7 @@ void coverart_display_big_artwork (); GList *coverart_get_displayed_tracks (void); -GdkPixbuf *coverart_get_default_track_thumb (void); +GdkPixbuf *coverart_get_default_track_thumb (gint default_img_size); void coverart_init (gchar *progpath); void force_update_covers (); void coverart_select_cover (Itdb_Track *track); @@ -89,7 +89,7 @@ void coverart_clear_images (); void coverart_block_change (gboolean val); void coverart_init_display (); -GdkPixbuf *coverart_get_track_thumb (Track *track, Itdb_Device *device); +GdkPixbuf *coverart_get_track_thumb (Track *track, Itdb_Device *device, gint default_img_size); void coverart_set_cover_from_file (); void coverart_set_cover_from_web (); #endif Modified: gtkpod/trunk/src/fetchcover.c =================================================================== --- gtkpod/trunk/src/fetchcover.c 2007-07-13 16:05:56 UTC (rev 1638) +++ gtkpod/trunk/src/fetchcover.c 2007-07-13 22:44:04 UTC (rev 1639) @@ -803,7 +803,7 @@ if (error != NULL) { /* Artwork failed to load from file so try loading default */ - imgbuf = coverart_get_track_thumb (track, device); + imgbuf = coverart_get_track_thumb (track, device, IMGSCALE); g_error_free (error); } } @@ -812,7 +812,7 @@ /* No thumb path available, fall back to getting the small thumbnail * and if that fails, the default thumbnail image. */ - imgbuf = coverart_get_track_thumb (track, device); + imgbuf = coverart_get_track_thumb (track, device, IMGSCALE); } /* Add the cover to the image list */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jc...@us...> - 2007-07-14 03:21:29
|
Revision: 1644 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1644&view=rev Author: jcsjcs Date: 2007-07-13 20:21:32 -0700 (Fri, 13 Jul 2007) Log Message: ----------- * src/display_tracks.c (tm_set_search_column, tm_search_equal_func): add newly added fields (bugfix). Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/src/display_tracks.c Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-07-13 23:28:45 UTC (rev 1643) +++ gtkpod/trunk/ChangeLog_detailed 2007-07-14 03:21:32 UTC (rev 1644) @@ -1,10 +1,15 @@ +2007-07-14 Jorg Schuler <jcsjcs at users.sourceforge.net> + + * src/display_tracks.c (tm_set_search_column, + tm_search_equal_func): add newly added fields (bugfix). + 2007-07-13 P.G. Richardson <phantom_sf at users.sourceforge.net> - * src/display_coverart.c - src/display_coverart.h - src/fetchcover.c - Added parameter to coverart_get_track_thumb so that the default - cover image can be provided with a default size if required. + * src/display_coverart.c + src/display_coverart.h + src/fetchcover.c + Added parameter to coverart_get_track_thumb so that the default + cover image can be provided with a default size if required. 2007-07-13 Jorg Schuler <jcsjcs at users.sourceforge.net> @@ -29,20 +34,20 @@ 2007-07-04 P.G. Richardson <phantom_sf at users.sourceforge.net> - * src/details.c: tartwork_changed flag defined when a new - artwork file is selected from the filesystem. + * src/details.c: tartwork_changed flag defined when a new + artwork file is selected from the filesystem. - * src/fetchcover.c: tartwork_changed flag added for all - occurrences of artwork being changed. + * src/fetchcover.c: tartwork_changed flag added for all + occurrences of artwork being changed. - * src/display_coverart.c: reworking of the code to fix the - sizes of the covers according to the ipod thumbnail size. - When the pane is expanded, the coverart display's spacing is - widened rather than the individual covers being stretched. - Instead of the highlights, reflections and covers images - being redrawn as black when null, the containing items are - hidden. They are redisplayed when a new cover image is - required. + * src/display_coverart.c: reworking of the code to fix the + sizes of the covers according to the ipod thumbnail size. + When the pane is expanded, the coverart display's spacing is + widened rather than the individual covers being stretched. + Instead of the highlights, reflections and covers images + being redrawn as black when null, the containing items are + hidden. They are redisplayed when a new cover image is + required. 2007-07-04 Todd Zullinger <tmzullinger at users.sourceforge.net> Modified: gtkpod/trunk/src/display_tracks.c =================================================================== --- gtkpod/trunk/src/display_tracks.c 2007-07-13 23:28:45 UTC (rev 1643) +++ gtkpod/trunk/src/display_tracks.c 2007-07-14 03:21:32 UTC (rev 1644) @@ -1610,7 +1610,7 @@ Track *track1; gboolean cmp = 0; gtk_tree_model_get (model, iter, READOUT_COL, &track1, -1); - switch (column) + switch ((TM_item)column) { case TM_COLUMN_TITLE: case TM_COLUMN_ALBUM: @@ -1633,10 +1633,17 @@ case TM_COLUMN_TV_SHOW: case TM_COLUMN_TV_EPISODE: case TM_COLUMN_TV_NETWORK: - cmp = (compare_string_start_case_insensitive ( - track_get_item (track1, TM_to_T (column)), - key) != 0); - break; + case TM_COLUMN_ALBUMARTIST: + case TM_COLUMN_SORT_ARTIST: + case TM_COLUMN_SORT_TITLE: + case TM_COLUMN_SORT_ALBUM: + case TM_COLUMN_SORT_ALBUMARTIST: + case TM_COLUMN_SORT_COMPOSER: + case TM_COLUMN_SORT_TVSHOW: + cmp = (compare_string_start_case_insensitive ( + track_get_item (track1, TM_to_T (column)), + key) != 0); + break; case TM_COLUMN_TRACK_NR: case TM_COLUMN_IPOD_ID: case TM_COLUMN_TRANSFERRED: @@ -1658,7 +1665,6 @@ case TM_COLUMN_SEASON_NR: case TM_COLUMN_EPISODE_NR: case TM_NUM_COLUMNS: - g_warning ("Programming error: tm_search_equal_func: no sort method for column %d\n", column); break; } return cmp; @@ -1758,7 +1764,7 @@ } -static void tm_set_search_column (gint newcol) +static void tm_set_search_column (TM_item newcol) { /* printf ("track_treeview: %p, col: %d\n", track_treeview, newcol); */ g_return_if_fail (track_treeview); @@ -1788,6 +1794,13 @@ case TM_COLUMN_TV_SHOW: case TM_COLUMN_TV_EPISODE: case TM_COLUMN_TV_NETWORK: + case TM_COLUMN_ALBUMARTIST: + case TM_COLUMN_SORT_ARTIST: + case TM_COLUMN_SORT_TITLE: + case TM_COLUMN_SORT_ALBUM: + case TM_COLUMN_SORT_ALBUMARTIST: + case TM_COLUMN_SORT_COMPOSER: + case TM_COLUMN_SORT_TVSHOW: gtk_tree_view_set_enable_search (GTK_TREE_VIEW (track_treeview), TRUE); break; case TM_COLUMN_TRACK_NR: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jc...@us...> - 2007-07-14 06:09:22
|
Revision: 1645 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1645&view=rev Author: jcsjcs Date: 2007-07-13 23:09:22 -0700 (Fri, 13 Jul 2007) Log Message: ----------- * src/display_tracks.c (tm_cell_toggled): removed "default" case to make sure newly added fields are not forgotten. Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/src/display_tracks.c Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-07-14 03:21:32 UTC (rev 1644) +++ gtkpod/trunk/ChangeLog_detailed 2007-07-14 06:09:22 UTC (rev 1645) @@ -3,6 +3,9 @@ * src/display_tracks.c (tm_set_search_column, tm_search_equal_func): add newly added fields (bugfix). + * src/display_tracks.c (tm_cell_toggled): removed "default" + case to make sure newly added fields are not forgotten. + 2007-07-13 P.G. Richardson <phantom_sf at users.sourceforge.net> * src/display_coverart.c Modified: gtkpod/trunk/src/display_tracks.c =================================================================== --- gtkpod/trunk/src/display_tracks.c 2007-07-14 03:21:32 UTC (rev 1644) +++ gtkpod/trunk/src/display_tracks.c 2007-07-14 06:09:22 UTC (rev 1645) @@ -1071,6 +1071,39 @@ +/* This function is analogous to tm_cell_data_func(), but is only used + for the title column to distinguish between the text and the toggle + button there. The other toggle buttons (e.g. compilation) can + easily be handled in the original tm_cell_data_func() */ +static void tm_cell_data_func_toggle (GtkTreeViewColumn *tree_column, + GtkCellRenderer *renderer, + GtkTreeModel *model, + GtkTreeIter *iter, + gpointer data) +{ + Track *track; + TM_item column; + + column = (TM_item)g_object_get_data (G_OBJECT (renderer), "column"); + gtk_tree_model_get (model, iter, READOUT_COL, &track, -1); + + /* printf ("tm_cell_data_func_toggle() entered\n"); */ + + switch (column) + { + case TM_COLUMN_TITLE: + g_object_set (G_OBJECT (renderer), + "active", !track->checked, + "activatable", TRUE, NULL); + break; + default: + g_warning ("Programming error: unknown column in tm_cell_data_func_toggle: %d\n", column); + break; + } +} + + + /* Called when a toggle cell is being changed. Stores new data to the track list. */ static void @@ -1091,7 +1124,7 @@ selection = gtk_tree_view_get_selection(track_treeview); row_list = gtk_tree_selection_get_selected_rows(selection, &model); -/* printf("tm_cell_toggled: column: %d, arg1: %p\n", column, arg1); */ + /* printf("tm_cell_toggled: column: %d, arg1: %p\n", column, arg1); */ sel_rows_num = g_list_length (row_list); @@ -1131,9 +1164,55 @@ if (!active) track->compilation = 1; else track->compilation = 0; break; - default: - g_warning ("Programming error: tm_cell_toggled: unknown track cell (%d) edited\n", column); - break; + case TM_COLUMN_ARTIST: + case TM_COLUMN_ALBUM: + case TM_COLUMN_GENRE: + case TM_COLUMN_COMPOSER: + case TM_COLUMN_TRACK_NR: + case TM_COLUMN_IPOD_ID: + case TM_COLUMN_PC_PATH: + case TM_COLUMN_TRANSFERRED: + case TM_COLUMN_SIZE: + case TM_COLUMN_TRACKLEN: + case TM_COLUMN_BITRATE: + case TM_COLUMN_PLAYCOUNT: + case TM_COLUMN_RATING: + case TM_COLUMN_TIME_PLAYED: + case TM_COLUMN_TIME_MODIFIED: + case TM_COLUMN_VOLUME: + case TM_COLUMN_YEAR: + case TM_COLUMN_CD_NR: + case TM_COLUMN_TIME_ADDED: + case TM_COLUMN_IPOD_PATH: + case TM_COLUMN_SOUNDCHECK: + case TM_COLUMN_SAMPLERATE: + case TM_COLUMN_BPM: + case TM_COLUMN_FILETYPE: + case TM_COLUMN_GROUPING: + case TM_COLUMN_COMMENT: + case TM_COLUMN_CATEGORY: + case TM_COLUMN_DESCRIPTION: + case TM_COLUMN_PODCASTURL: + case TM_COLUMN_PODCASTRSS: + case TM_COLUMN_SUBTITLE: + case TM_COLUMN_TIME_RELEASED: + case TM_COLUMN_THUMB_PATH: + case TM_COLUMN_MEDIA_TYPE: + case TM_COLUMN_TV_SHOW: + case TM_COLUMN_TV_EPISODE: + case TM_COLUMN_TV_NETWORK: + case TM_COLUMN_SEASON_NR: + case TM_COLUMN_EPISODE_NR: + case TM_COLUMN_ALBUMARTIST: + case TM_COLUMN_SORT_ARTIST: + case TM_COLUMN_SORT_TITLE: + case TM_COLUMN_SORT_ALBUM: + case TM_COLUMN_SORT_ALBUMARTIST: + case TM_COLUMN_SORT_COMPOSER: + case TM_COLUMN_SORT_TVSHOW: + case TM_NUM_COLUMNS: + /* these are not toggle buttons */ + break; } /* printf (" changed: %d\n", changed); */ if (changed) @@ -1161,36 +1240,7 @@ -/* The track data is stored in a separate list (static GList *tracks) - and only pointers to the corresponding Track structure are placed - into the model. - This function reads the data for the given cell from the list and - passes it to the renderer. */ -static void tm_cell_data_func_toggle (GtkTreeViewColumn *tree_column, - GtkCellRenderer *renderer, - GtkTreeModel *model, - GtkTreeIter *iter, - gpointer data) -{ - Track *track; - TM_item column; - column = (TM_item)g_object_get_data (G_OBJECT (renderer), "column"); - gtk_tree_model_get (model, iter, READOUT_COL, &track, -1); - - switch (column) - { - case TM_COLUMN_TITLE: - g_object_set (G_OBJECT (renderer), - "active", !track->checked, - "activatable", TRUE, NULL); - break; - default: - g_warning ("Programming error: unknown column in tm_cell_data_func_toggle: %d\n", column); - break; - } -} - /** * tm_get_nr_of_tracks - get the number of tracks displayed * currently in the track model Returns - the number of tracks displayed This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jc...@us...> - 2007-07-14 06:58:42
|
Revision: 1646 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1646&view=rev Author: jcsjcs Date: 2007-07-13 23:58:44 -0700 (Fri, 13 Jul 2007) Log Message: ----------- * src/mp3file.[ch]: moved reading of default tags to id3_read_tags() * src/flacfile.c: fallback on ID3 tags if no vorbis comments are available. Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/src/flacfile.c gtkpod/trunk/src/mp3file.c gtkpod/trunk/src/mp3file.h Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-07-14 06:09:22 UTC (rev 1645) +++ gtkpod/trunk/ChangeLog_detailed 2007-07-14 06:58:44 UTC (rev 1646) @@ -6,6 +6,12 @@ * src/display_tracks.c (tm_cell_toggled): removed "default" case to make sure newly added fields are not forgotten. + * src/mp3file.[ch]: moved reading of default tags to + id3_read_tags() + + * src/flacfile.c: fallback on ID3 tags if no vorbis comments + are available. + 2007-07-13 P.G. Richardson <phantom_sf at users.sourceforge.net> * src/display_coverart.c Modified: gtkpod/trunk/src/flacfile.c =================================================================== --- gtkpod/trunk/src/flacfile.c 2007-07-14 06:09:22 UTC (rev 1645) +++ gtkpod/trunk/src/flacfile.c 2007-07-14 06:58:44 UTC (rev 1646) @@ -64,13 +64,10 @@ } else { + gboolean flac_metadata_ok = FALSE; + track = gp_track_new (); - track->description = g_strdup ("FLAC audio file"); - track->bitrate = stream_data.data.stream_info.bits_per_sample/1000; - track->samplerate = stream_data.data.stream_info.sample_rate; - track->tracklen = stream_data.data.stream_info.total_samples / (stream_data.data.stream_info.sample_rate / 1000); - if (prefs_get_int("readtags")) { if (!FLAC__metadata_get_tags (flacFileName, &tags)) @@ -85,6 +82,11 @@ else { gint i; + if (tags->data.vorbis_comment.num_comments > 0) + { + flac_metadata_ok = TRUE; + } + for (i = 0 ; i < tags->data.vorbis_comment.num_comments ; i++) { gchar *tag = (gchar*)tags->data.vorbis_comment.comments[i].entry; @@ -130,7 +132,19 @@ } FLAC__metadata_object_delete (tags); + + if (!flac_metadata_ok) + { /* fall back on ID3 */ + id3_read_tags (flacFileName, track); + } } + + g_free (track->description); + track->description = g_strdup ("FLAC audio file"); + + track->bitrate = stream_data.data.stream_info.bits_per_sample/1000; + track->samplerate = stream_data.data.stream_info.sample_rate; + track->tracklen = stream_data.data.stream_info.total_samples / (stream_data.data.stream_info.sample_rate / 1000); } return track; Modified: gtkpod/trunk/src/mp3file.c =================================================================== --- gtkpod/trunk/src/mp3file.c 2007-07-14 06:09:22 UTC (rev 1645) +++ gtkpod/trunk/src/mp3file.c 2007-07-14 06:58:44 UTC (rev 1646) @@ -1,4 +1,4 @@ -/* Time-stamp: <2007-06-26 00:39:11 jcs> +/* Time-stamp: <2007-07-14 15:47:57 jcs> | | Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net> | Part of the gtkpod project. @@ -1300,7 +1300,7 @@ * Reads id3v1.x / id3v2 apic data * @returns: TRUE on success, else FALSE. */ -static gboolean id3_apic_read (gchar *filename, +static gboolean id3_apic_read (const gchar *filename, guchar **image_data, gsize *image_data_len) { struct id3_file *id3file; @@ -1394,7 +1394,7 @@ * stays to NULL * @returns: TRUE on success, else FALSE. */ -gboolean id3_tag_read (gchar *filename, File_Tag *tag) +gboolean id3_tag_read (const gchar *filename, File_Tag *tag) { struct id3_file *id3file; struct id3_tag *id3tag; @@ -2365,7 +2365,6 @@ } - /** * mp3_read_gapless: * @@ -2422,52 +2421,20 @@ } - -/* ---------------------------------------------------------------------- - - From here starts original gtkpod code - ----------------------------------------------------------------------- */ - -/* Return a Track structure with all information read from the mp3 - file filled in */ -Track *mp3_get_file_info (gchar *name) +/* Read ID3 tags of filename @name into track structure @track */ +/* Return value: TRUE if tags could be read, FALSE if an error + occured */ +gboolean id3_read_tags (const gchar *name, Track *track) { - Track *track = NULL; File_Tag filetag; - MP3Info *mp3i=NULL; - FILE *file; - guchar *image_data = NULL; - gsize image_data_len = 0; - g_return_val_if_fail (name, NULL); + g_return_val_if_fail (name && track, FALSE); - /* Attempt to open the file */ - file = fopen (name, "r"); - if (file) + if (id3_tag_read (name, &filetag)) { - mp3i = g_malloc0 (sizeof (MP3Info)); - mp3i->filename = name; - mp3i->file = file; - get_mp3_info (mp3i); - mp3i->file = NULL; - fclose (file); - } - else - { - gchar *fbuf = charset_to_utf8 (name); - gtkpod_warning(_("ERROR while opening file: '%s' (%s).\n"), - fbuf, g_strerror(errno)); - g_free (fbuf); - return NULL; - } + guchar *image_data = NULL; + gsize image_data_len = 0; - track = gp_track_new (); - track->filetype = g_strdup ("MPEG audio file"); - - if (prefs_get_int("readtags") && (id3_tag_read (name, &filetag) == TRUE)) - { - if (filetag.album) { track->album = filetag.album; @@ -2622,20 +2589,68 @@ { track->lyrics_flag = 0x00; } - } - if (prefs_get_int("coverart_apic") && - (id3_apic_read (name, &image_data, &image_data_len) == TRUE)) - { - if (image_data) + if (prefs_get_int("coverart_apic") && + (id3_apic_read (name, &image_data, &image_data_len) == TRUE)) { - gp_track_set_thumbnails_from_data (track, - image_data, - image_data_len); - g_free (image_data); + if (image_data) + { + gp_track_set_thumbnails_from_data (track, + image_data, + image_data_len); + g_free (image_data); + } } + return TRUE; } + return FALSE; +} + +/* ---------------------------------------------------------------------- + + From here starts original gtkpod code + +---------------------------------------------------------------------- */ + +/* Return a Track structure with all information read from the mp3 + file filled in */ +Track *mp3_get_file_info (gchar *name) +{ + Track *track = NULL; + MP3Info *mp3i=NULL; + FILE *file; + + g_return_val_if_fail (name, NULL); + + /* Attempt to open the file */ + file = fopen (name, "r"); + if (file) + { + mp3i = g_malloc0 (sizeof (MP3Info)); + mp3i->filename = name; + mp3i->file = file; + get_mp3_info (mp3i); + mp3i->file = NULL; + fclose (file); + } + else + { + gchar *fbuf = charset_to_utf8 (name); + gtkpod_warning(_("ERROR while opening file: '%s' (%s).\n"), + fbuf, g_strerror(errno)); + g_free (fbuf); + return NULL; + } + + track = gp_track_new (); + track->filetype = g_strdup ("MPEG audio file"); + + if (prefs_get_int("readtags")) + { + id3_read_tags (name, track); + } + mp3_read_soundcheck (name, track); mp3_read_gapless (name, track); Modified: gtkpod/trunk/src/mp3file.h =================================================================== --- gtkpod/trunk/src/mp3file.h 2007-07-14 06:09:22 UTC (rev 1645) +++ gtkpod/trunk/src/mp3file.h 2007-07-14 06:58:44 UTC (rev 1646) @@ -1,4 +1,4 @@ -/* Time-stamp: <2006-06-11 13:57:01 jcs> +/* Time-stamp: <2007-07-14 15:55:29 jcs> | | Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net> | Part of the gtkpod project. @@ -37,4 +37,5 @@ gboolean mp3_read_soundcheck (gchar *path, Track *track); gboolean mp3_read_gapless (gchar *path, Track *track); +gboolean id3_read_tags (const gchar *name, Track *track); #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-07-15 13:46:50
|
Revision: 1649 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1649&view=rev Author: tiffman Date: 2007-07-15 06:46:51 -0700 (Sun, 15 Jul 2007) Log Message: ----------- Wasn't properly closing files in mp3_get_track_lame_gapless(). Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/src/mp3file.c Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-07-15 13:26:21 UTC (rev 1648) +++ gtkpod/trunk/ChangeLog_detailed 2007-07-15 13:46:51 UTC (rev 1649) @@ -1,3 +1,8 @@ +2007-07-15 Michael Tiffany <tiffman at users.sourceforge.net> + + * src/mp3file.c (mp3_get_track_lame_gapless): wasn't properly closing + files (bugfix). + 2007-07-14 Jorg Schuler <jcsjcs at users.sourceforge.net> * src/display_tracks.c (tm_set_search_column, Modified: gtkpod/trunk/src/mp3file.c =================================================================== --- gtkpod/trunk/src/mp3file.c 2007-07-15 13:26:21 UTC (rev 1648) +++ gtkpod/trunk/src/mp3file.c 2007-07-15 13:46:51 UTC (rev 1649) @@ -2354,6 +2354,7 @@ /* total samples minus pre/postgap */ gd->samplecount = totalframes * mysamplesperframe - gd->pregap - gd->postgap; + fclose (file); return TRUE; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pha...@us...> - 2007-07-23 22:05:05
|
Revision: 1654 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1654&view=rev Author: phantom_sf Date: 2007-07-23 15:04:58 -0700 (Mon, 23 Jul 2007) Log Message: ----------- 2007-07-23 P.G. Richardson <phantom_sf at users.sourceforge.net> * src/details.c: set tartwork_changed flag to TRUE rather than relying on using force_update_cover function. Former picked up by pm_track_changed() * src/display_coverart.c: coverart_track_change responds to track changes and redisplays covers if tartwork_changed flag has been set. * src/display_playlists.c: KEY_DISPLAY_COVERART pref test removed from pm_track_changed and placed inside coverart_track_changed instead. * file.c: update_track_from_file function updates calls for redisplay of the coverart regardless of any file data changes to ensure that any coverart changes do not go unnoticed. Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/src/details.c gtkpod/trunk/src/display_coverart.c gtkpod/trunk/src/display_playlists.c gtkpod/trunk/src/file.c Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-07-16 22:39:38 UTC (rev 1653) +++ gtkpod/trunk/ChangeLog_detailed 2007-07-23 22:04:58 UTC (rev 1654) @@ -1,3 +1,18 @@ +2007-07-23 P.G. Richardson <phantom_sf at users.sourceforge.net> + + * src/details.c: set tartwork_changed flag to TRUE rather than relying on + using force_update_cover function. Former picked up by pm_track_changed() + + * src/display_coverart.c: coverart_track_change responds to track changes + and redisplays covers if tartwork_changed flag has been set. + + * src/display_playlists.c: KEY_DISPLAY_COVERART pref test removed from + pm_track_changed and placed inside coverart_track_changed instead. + + * file.c: update_track_from_file function updates calls for redisplay of the + coverart regardless of any file data changes to ensure that any coverart + changes do not go unnoticed. + 2007-07-15 Michael Tiffany <tiffman at users.sourceforge.net> * src/mp3file.c (mp3_get_track_lame_gapless): wasn't properly closing @@ -20,8 +35,8 @@ 2007-07-13 P.G. Richardson <phantom_sf at users.sourceforge.net> * src/display_coverart.c - src/display_coverart.h - src/fetchcover.c + src/display_coverart.h + src/fetchcover.c Added parameter to coverart_get_track_thumb so that the default cover image can be provided with a default size if required. Modified: gtkpod/trunk/src/details.c =================================================================== --- gtkpod/trunk/src/details.c 2007-07-16 22:39:38 UTC (rev 1653) +++ gtkpod/trunk/src/details.c 2007-07-23 22:04:58 UTC (rev 1654) @@ -556,6 +556,7 @@ g_free (toetr->thumb_path_utf8); toetr->thumb_path_locale = g_strdup (fretr->thumb_path_locale); toetr->thumb_path_utf8 = g_strdup (fretr->thumb_path_utf8); + toetr->tartwork_changed = TRUE; changed = TRUE; } /* make sure artwork gets removed, even if both thumb_paths were @@ -564,12 +565,7 @@ { changed |= gp_track_remove_thumbnails (totrack); } - - /* Since no data changes affect the coverart display. - * Need to force a change by calling set covers directly. - */ - force_update_covers (); - + return changed; } Modified: gtkpod/trunk/src/display_coverart.c =================================================================== --- gtkpod/trunk/src/display_coverart.c 2007-07-16 22:39:38 UTC (rev 1653) +++ gtkpod/trunk/src/display_coverart.c 2007-07-23 22:04:58 UTC (rev 1654) @@ -119,11 +119,12 @@ /** * + * free_CDWidget + * * destroy the CD Widget and free everything currently * in memory. - * */ - static void free_CDWidget() + static void free_CDWidget () { gint i; g_signal_handler_disconnect (cdwidget->leftbutton, lbutton_signal_id); @@ -819,16 +820,16 @@ if (!DEFAULT_FILE) { - DEFAULT_FILE = g_build_filename (PACKAGE_DATA_DIR, PACKAGE, "data", "default-cover.png", NULL); + DEFAULT_FILE = g_build_filename (PACKAGE_DATA_DIR, PACKAGE, "data", "default-cover.png", NULL); } if (!HIGHLIGHT_FILE) { - HIGHLIGHT_FILE = g_build_filename (PACKAGE_DATA_DIR, PACKAGE, "data", "cdshine.png", NULL); + HIGHLIGHT_FILE = g_build_filename (PACKAGE_DATA_DIR, PACKAGE, "data", "cdshine.png", NULL); } if (!HIGHLIGHT_FILE_MAIN) { - HIGHLIGHT_FILE_MAIN = g_build_filename (PACKAGE_DATA_DIR, PACKAGE, "data", "cdshine_main.png", NULL); - } + HIGHLIGHT_FILE_MAIN = g_build_filename (PACKAGE_DATA_DIR, PACKAGE, "data", "cdshine_main.png", NULL); + } } /** @@ -1447,6 +1448,10 @@ * e) A track has been created and its artist and album are not in the displaylist */ + /* If coverart not displayed then ignore */ + if (! prefs_get_int (KEY_DISPLAY_COVERART)) + return; + trk_key = g_strconcat (track->artist, "_", track->album, NULL); /* Determine the index of the found album */ keypos = g_list_find_custom (album_key_list, trk_key, (GCompareFunc) compare_album_keys); @@ -1580,6 +1585,14 @@ if (index != -1) { /* Track exists in the album list so ignore the change and return */ + ExtraTrackData *etd; + etd = track->userdata; + if (etd->tartwork_changed == TRUE) + { + etd->tartwork_changed = FALSE; + set_covers(TRUE); + } + return; } else Modified: gtkpod/trunk/src/display_playlists.c =================================================================== --- gtkpod/trunk/src/display_playlists.c 2007-07-16 22:39:38 UTC (rev 1653) +++ gtkpod/trunk/src/display_playlists.c 2007-07-23 22:04:58 UTC (rev 1654) @@ -1174,8 +1174,7 @@ { if (!current_playlist) return; - if (prefs_get_int (KEY_DISPLAY_COVERART)) - coverart_track_changed (track, COVERART_CHANGE_SIGNAL); + coverart_track_changed (track, COVERART_CHANGE_SIGNAL); /* Check if track is member of current playlist */ if (g_list_find (current_playlist->members, track)) Modified: gtkpod/trunk/src/file.c =================================================================== --- gtkpod/trunk/src/file.c 2007-07-16 22:39:38 UTC (rev 1653) +++ gtkpod/trunk/src/file.c 2007-07-23 22:04:58 UTC (rev 1654) @@ -1761,6 +1761,9 @@ g_free (name_on_ipod); } + /* Set this flag to true to ensure artwork is reread from file */ + netr->tartwork_changed = TRUE; + /* notify display model */ if (netr->tchanged) { @@ -1768,6 +1771,14 @@ data_changed (itdb); netr->tchanged = FALSE; } + else + { + /* Rather than depend on the track data being changed, only the artwork may have changed + * hence the reason for the user updating from file + */ + coverart_track_changed (track, COVERART_CHANGE_SIGNAL); + } + display_updated (track, NULL); g_free (oldhash); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-07-27 02:22:31
|
Revision: 1655 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1655&view=rev Author: tiffman Date: 2007-07-26 19:22:31 -0700 (Thu, 26 Jul 2007) Log Message: ----------- Merge gapless_playback_branch back to HEAD Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/data/gtkpod.glade gtkpod/trunk/src/details.c gtkpod/trunk/src/display.h gtkpod/trunk/src/file.c gtkpod/trunk/src/misc_conversion.c gtkpod/trunk/src/misc_track.c gtkpod/trunk/src/mp3file.c Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-07-23 22:04:58 UTC (rev 1654) +++ gtkpod/trunk/ChangeLog_detailed 2007-07-27 02:22:31 UTC (rev 1655) @@ -1,3 +1,7 @@ +2007-07-26 Michael Tiffany <tiffman at users.sourceforge.net> + + * merge gapless_playback_branch back to HEAD. + 2007-07-23 P.G. Richardson <phantom_sf at users.sourceforge.net> * src/details.c: set tartwork_changed flag to TRUE rather than relying on @@ -15,8 +19,8 @@ 2007-07-15 Michael Tiffany <tiffman at users.sourceforge.net> - * src/mp3file.c (mp3_get_track_lame_gapless): wasn't properly closing - files (bugfix). + * src/mp3file.c: fixed memory leak: wasn't closing files in + mp3_read_lame_tag. 2007-07-14 Jorg Schuler <jcsjcs at users.sourceforge.net> @@ -56,6 +60,24 @@ try harder to find evolution-addressbook-export (thanks to Götz Waschk) +2007-07-08 Michael Tiffany <tiffman at users.sourceforge.net> + + * src/mp3file.c: modified mp3_read_lame_tag() to check the info tag + crc and return the result of the check. Changed the replaygain and + gapless functions to check the return value and only use tag data if + the crc matched. + +2007-07-06 Michael Tiffany <tiffman at users.sourceforge.net> + + * src/display.h + src/misc_conversion.c + src/misc_track.c + src/file.c + src/details.c + data/gtkpod.glade: + added a read-only checkbox to the Misc tab in the Details window to + show the state of the gapless track flag. + 2007-07-05 Todd Zullinger <tmzullinger at users.sourceforge.net> * src/autodection.c: @@ -87,6 +109,13 @@ * po/fr.po: updated French translation (thanks to Eric Lassauge) +2007-07-02 Michael Tiffany <tiffman at users.sourceforge.net> + + * src/mp3file.c: created struct to store the lame tag, and a function to + parse it. Changed the replaygain and gapless functions to use this to + get any necessary lame data. Added an info tag CRC function from the + libmad code (GPL) to check the validity of the lame tag. + 2007-06-29 Jorg Schuler <jcsjcs at users.sourceforge.net> * src/details.c (details_setup_widget): fixed memory leak Modified: gtkpod/trunk/data/gtkpod.glade =================================================================== --- gtkpod/trunk/data/gtkpod.glade 2007-07-23 22:04:58 UTC (rev 1654) +++ gtkpod/trunk/data/gtkpod.glade 2007-07-27 02:22:31 UTC (rev 1655) @@ -17187,6 +17187,56 @@ <property name="y_options"></property> </packing> </child> + + <child> + <widget class="GtkLabel" id="details_label_54"> + <property name="visible">True</property> + <property name="label" translatable="yes">label</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">12</property> + <property name="bottom_attach">13</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkCheckButton" id="details_checkbutton_54"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="left_attach">3</property> + <property name="right_attach">4</property> + <property name="top_attach">12</property> + <property name="bottom_attach">13</property> + <property name="y_options"></property> + </packing> + </child> </widget> <packing> <property name="padding">0</property> Modified: gtkpod/trunk/src/details.c =================================================================== --- gtkpod/trunk/src/details.c 2007-07-23 22:04:58 UTC (rev 1654) +++ gtkpod/trunk/src/details.c 2007-07-27 02:22:31 UTC (rev 1655) @@ -760,6 +760,7 @@ case T_CHECKED: case T_REMEMBER_PLAYBACK_POSITION: case T_SKIP_WHEN_SHUFFLING: + case T_GAPLESS_TRACK_FLAG: buf = g_strdup_printf ("details_checkbutton_%d", item); w = gtkpod_xml_get_widget (detail->xml, buf); g_signal_connect (w, "toggled", @@ -966,6 +967,17 @@ gtk_combo_box_set_active (GTK_COMBO_BOX (w), index); } break; + case T_GAPLESS_TRACK_FLAG: + if ((w = gtkpod_xml_get_widget (detail->xml, checkbutton))) + { + if (track) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), + track->gapless_track_flag); + else + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), + FALSE); + } + break; case T_ALL: case T_ITEM_NUM: /* cannot happen because of assertion above */ @@ -1186,6 +1198,7 @@ case T_IPOD_PATH: case T_IPOD_ID: case T_THUMB_PATH: + case T_GAPLESS_TRACK_FLAG: /* These are read-only only */ break; break; Modified: gtkpod/trunk/src/display.h =================================================================== --- gtkpod/trunk/src/display.h 2007-07-23 22:04:58 UTC (rev 1654) +++ gtkpod/trunk/src/display.h 2007-07-27 02:22:31 UTC (rev 1655) @@ -256,6 +256,7 @@ T_SORT_ALBUMARTIST, T_SORT_COMPOSER, T_SORT_TVSHOW, + T_GAPLESS_TRACK_FLAG, T_ITEM_NUM, } T_item; Modified: gtkpod/trunk/src/file.c =================================================================== --- gtkpod/trunk/src/file.c 2007-07-23 22:04:58 UTC (rev 1654) +++ gtkpod/trunk/src/file.c 2007-07-27 02:22:31 UTC (rev 1655) @@ -856,6 +856,7 @@ case T_TRANSFERRED: case T_PLAYCOUNT: case T_VOLUME: + case T_GAPLESS_TRACK_FLAG: /* not applicable */ break; case T_ITEM_NUM: Modified: gtkpod/trunk/src/misc_conversion.c =================================================================== --- gtkpod/trunk/src/misc_conversion.c 2007-07-23 22:04:58 UTC (rev 1654) +++ gtkpod/trunk/src/misc_conversion.c 2007-07-27 02:22:31 UTC (rev 1655) @@ -110,6 +110,7 @@ N_("Sort Album Artist"), N_("Sort Composer"), N_("Sort TV Show"), + N_("Gapless Track Flag"), NULL }; /* Tooltips for prefs window */ @@ -169,7 +170,8 @@ N_("Used for sorting on the iPod"), /* 50 */ N_("Used for sorting on the iPod"), N_("Used for sorting on the iPod"), - N_("Used for sorting on the iPod") + N_("Used for sorting on the iPod"), + NULL }; Modified: gtkpod/trunk/src/misc_track.c =================================================================== --- gtkpod/trunk/src/misc_track.c 2007-07-23 22:04:58 UTC (rev 1654) +++ gtkpod/trunk/src/misc_track.c 2007-07-27 02:22:31 UTC (rev 1655) @@ -909,6 +909,7 @@ case T_MEDIA_TYPE: case T_SEASON_NR: case T_EPISODE_NR: + case T_GAPLESS_TRACK_FLAG: case T_ITEM_NUM: g_return_val_if_reached (NULL); } @@ -1203,6 +1204,13 @@ changed = TRUE; } break; + case T_GAPLESS_TRACK_FLAG: + if (frtrack->gapless_track_flag != totrack->gapless_track_flag) + { + totrack->gapless_track_flag = frtrack->gapless_track_flag; + changed = TRUE; + } + break; case T_ITEM_NUM: case T_ALL: g_return_val_if_reached (FALSE); @@ -1408,6 +1416,7 @@ case T_ALL: case T_CHECKED: case T_ITEM_NUM: + case T_GAPLESS_TRACK_FLAG: break; } return text; @@ -1674,6 +1683,7 @@ case T_SKIP_WHEN_SHUFFLING: case T_CHECKED: case T_ALL: + case T_GAPLESS_TRACK_FLAG: case T_ITEM_NUM: case T_THUMB_PATH: // TODO: this should in fact be settable gtkpod_warning ("Programming error: track_set_text() called with illegal argument (item: %d)\n", item); Modified: gtkpod/trunk/src/mp3file.c =================================================================== --- gtkpod/trunk/src/mp3file.c 2007-07-23 22:04:58 UTC (rev 1654) +++ gtkpod/trunk/src/mp3file.c 2007-07-27 02:22:31 UTC (rev 1655) @@ -39,6 +39,9 @@ * mpg123 code used in xmms-1.2.7 (Input/mpg123). Only the code needed * for the playlength calculation has been extracted. */ +/* The code in the third section of this file is taken from the + * crc code used in libmad (crc.h). */ + /* The code in the last section of this file is original gtkpod * code. */ @@ -54,6 +57,7 @@ typedef struct _File_Tag File_Tag; typedef struct _GainData GainData; typedef struct _GaplessData GaplessData; +typedef struct _LameTag LameTag; struct _File_Tag { @@ -107,6 +111,41 @@ guint32 gapless_data; /* number of bytes from the first sync frame to the 8th to last frame */ }; +#define LAME_TAG_SIZE 0x24 +#define INFO_TAG_CRC_SIZE 0xBE /* number of bytes to pass to crc_compute */ + +/* A structure to hold the various data found in a LAME info tag. + * Please see http://gabriel.mp3-tech.org/mp3infotag.html for full + * documentation. + */ +struct _LameTag +{ + gchar encoder[4]; + gchar version_string[5]; + guint8 info_tag_revision; + guint8 vbr_method; + guint8 lowpass; + float peak_signal_amplitude; + guint16 radio_replay_gain; + guint16 audiophile_replay_gain; + guint8 encoding_flags; + guint8 ath_type; + guint8 bitrate; + guint16 delay; + guint16 padding; + guint8 noise_shaping; + guint8 stereo_mode; + gboolean unwise_settings; + guint8 source_sample_frequency; + guint8 mp3_gain; + guint8 surround_info; + guint16 preset; + guint32 music_length; + guint16 music_crc; + guint16 info_tag_crc; + guint16 calculated_info_tag_crc; +}; + /* This code is taken from the mp3info code. Only the code needed for * the playlength calculation has been extracted */ @@ -198,6 +237,8 @@ static guint get_track_time(gchar *path); +/* This is for soundcheck code */ +gboolean mp3_read_lame_tag (gchar *path, LameTag *lt); /* ------------------------------------------------------------ @@ -1658,6 +1699,82 @@ /* + * Code used to calculate the CRC-16 of the info tag. Used to check the + * validity of the data read from the lame tag. + * Code taken from the libmad project, licensed under GPL + */ + +static +unsigned short const crc_table[256] = { + 0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, + 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, + 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40, + 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, + 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, + 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41, + 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641, + 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, + + 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, + 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, + 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, + 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, + 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, + 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40, + 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, + 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, + + 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240, + 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441, + 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, + 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, + 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, + 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, + 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, + 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, + + 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241, + 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, + 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, + 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, + 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, + 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, + 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, + 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040 +}; + +unsigned short crc_compute(char const *data, unsigned int length, + unsigned short init) +{ + register unsigned int crc; + + for (crc = init; length >= 8; length -= 8) { + crc = crc_table[(crc ^ *data++) & 0xff] ^ (crc >> 8); + crc = crc_table[(crc ^ *data++) & 0xff] ^ (crc >> 8); + crc = crc_table[(crc ^ *data++) & 0xff] ^ (crc >> 8); + crc = crc_table[(crc ^ *data++) & 0xff] ^ (crc >> 8); + crc = crc_table[(crc ^ *data++) & 0xff] ^ (crc >> 8); + crc = crc_table[(crc ^ *data++) & 0xff] ^ (crc >> 8); + crc = crc_table[(crc ^ *data++) & 0xff] ^ (crc >> 8); + crc = crc_table[(crc ^ *data++) & 0xff] ^ (crc >> 8); + } + + switch (length) { + case 7: crc = crc_table[(crc ^ *data++) & 0xff] ^ (crc >> 8); + case 6: crc = crc_table[(crc ^ *data++) & 0xff] ^ (crc >> 8); + case 5: crc = crc_table[(crc ^ *data++) & 0xff] ^ (crc >> 8); + case 4: crc = crc_table[(crc ^ *data++) & 0xff] ^ (crc >> 8); + case 3: crc = crc_table[(crc ^ *data++) & 0xff] ^ (crc >> 8); + case 2: crc = crc_table[(crc ^ *data++) & 0xff] ^ (crc >> 8); + case 1: crc = crc_table[(crc ^ *data++) & 0xff] ^ (crc >> 8); + case 0: break; + } + + return crc; +} + + +/* * Code to read the ReplayGain Values stored by LAME in its own tag. * * Most of the relevant information has been extracted from them LAME sources @@ -1779,6 +1896,9 @@ | (buf[2] & 0xff) << 8 | (buf[3] & 0xff); } +static inline guint16 parse_lame_uint16(char *buf) { + return (buf[0] & 0xff) << 8 | (buf[1] & 0xff); +} /* * mp3_get_track_lame_replaygain - read the specified file and scan for LAME Tag @@ -1794,22 +1914,12 @@ gboolean mp3_get_track_lame_replaygain (gchar *path, GainData *gd) { - struct { - /* All members are defined in terms of chars so padding does not - * occur. Is there a cleaner way to keep the compiler from - * padding? */ - - char id[3]; - char version[2]; - char flags; - char size[4]; - } id3head; + g_return_val_if_fail (path, FALSE); - FILE *file = NULL; - char buf[4], version[5]; + LameTag lt; + if (!mp3_read_lame_tag (path, <)) + goto rg_fail; int gain_adjust = 0; - int sideinfo; - guint32 ps; g_return_val_if_fail (gd, FALSE); @@ -1820,106 +1930,23 @@ gd->audiophile_gain_set = FALSE; gd->peak_signal_set = FALSE; - if (!path) - goto rg_fail; - - file = fopen (path, "r"); - - if (!file) - goto rg_fail; - - /* Skip ID3 header if appropriate */ - if (fread(&id3head, 1, sizeof(id3head), file) != - sizeof(id3head)) - goto rg_fail; - - if (!strncmp(id3head.id, "ID3", 3)) { - int realsize = 0; - - realsize = (id3head.size[0] & 0x7f) << 21 - | (id3head.size[1] & 0x7f) << 14 - | (id3head.size[2] & 0x7f) << 7 - | (id3head.size[3] & 0x7f); - - if (id3head.flags & TAG_FOOTER) { - /* footer is copy of header */ - realsize += sizeof(id3head); - } - - if (fseek(file, realsize-1, SEEK_CUR) || - (!fread(&buf[0], 1, 1, file))) - goto rg_fail; - } else { - /* no ID3 Tag - go back */ - fseek(file, -sizeof(id3head), SEEK_CUR); - } - - /* Search Xing header. The location is dependant on the MPEG Layer and - * whether the stream is mono or not. */ - if (fread(buf, 1, 4, file) != 4) goto rg_fail; - - /* should start with 0xff 0xf? (synch) */ - if (((buf[0] & 0xff) != 0xff) - || ((buf[1] & 0xf0) != 0xf0)) goto rg_fail; - - /* determine the length of the sideinfo */ - if (buf[1] & 0x08) { - sideinfo = ((buf[3] & 0xc0) == 0xc0) ? - SIDEINFO_MPEG1_MONO : SIDEINFO_MPEG1_MULTI; - } else { - sideinfo = ((buf[3] & 0xc0) == 0xc0) ? - SIDEINFO_MPEG2_MONO : SIDEINFO_MPEG2_MULTI; - } - - if (fseek(file, sideinfo, SEEK_CUR) || - (fread(&buf[0], 1, 4, file) != 4)) - goto rg_fail; - - /* Is this really a Xing or Info Header? - * FIXME: Apparently (according to madplay sources) there is a different - * possible location for the Xing header ("due to an unfortunate - * historical event"). I do not thing we need to care though since - * RaplayGain information is only conatined in recent files. */ - if (strncmp(buf, "Xing", 4) && strncmp(buf, "Info", 4)) - goto rg_fail; - - /* Check for LAME Tag */ - if (fseek(file, LAME_OFFSET, SEEK_CUR) || - (fread(&buf[0], 1, 4, file) != 4)) - goto rg_fail; - if (strncmp(buf, "LAME", 4)) - goto rg_fail; - - /* Check LAME Version */ - if (fread(version, 1, 5, file) != 5) - goto rg_fail; - - /* Skip really old versions altogether. I am not sure when radio_gain - * information was introduced. 3.89 does not seem to supprt it though. - * */ - if (lame_vcmp(version, "3.90") < 0) { + if (lame_vcmp(lt.version_string, "3.90") < 0) { /* fprintf(stderr, "Old lame version (%c%c%c%c%c). Not used.\n", version[0], version[1], version[2], version[3], version[4]); */ goto rg_fail; } - if (fseek(file, 0x2, SEEK_CUR) || (fread(buf, 1, 4, file) != 4)) - goto rg_fail; - - /* get the peak signal. */ - ps = parse_lame_uint32(buf); - /* Don't know when fixed-point PeakSingleAmplitude * was introduced exactly. 3.94b will be used for now.) */ - if ((lame_vcmp(version, "3.94b") >= 0)) { - if ((!gd->peak_signal_set) && ps) { - gd->peak_signal = ps; + if ((lame_vcmp(lt.version_string, "3.94b") >= 0)) { + if ((!gd->peak_signal_set) && lt.peak_signal_amplitude) { + gd->peak_signal = lt.peak_signal_amplitude; gd->peak_signal_set = TRUE; /* printf("peak_signal (lame): %f\n", (double) gd->peak_signal / 0x800000);*/ } } else { - float f = *((float *) (void *) (&ps)) * 0x800000; + float f = *((float *) (void *) (<.peak_signal_amplitude)) * 0x800000; gd->peak_signal = (guint32) f; /* I would like to see an example of that. */ /* printf("peak_signal (lame floating point): %f. PLEASE report.\n", @@ -1930,34 +1957,27 @@ * Versions prior to 3.95.1 used a reference volume of 83dB. * (As compared to the currently used 89dB.) */ - if ((lame_vcmp(version, "3.95.") < 0)) { + if ((lame_vcmp(lt.version_string, "3.95.") < 0)) { gain_adjust = 60; /* fprintf(stderr, "Old lame version (%c%c%c%c%c). Adjusting gain.\n", version[0], version[1], version[2], version[3], version[4]); */ } - if (fread(&buf[0], 1, 2, file) != 2) - goto rg_fail; - + unsigned char ubuf[2]; /* radio gain */ - read_lame_replaygain (buf, gd, gain_adjust); + memcpy(ubuf,<.radio_replay_gain,2); + read_lame_replaygain (ubuf, gd, gain_adjust); - if (fread(&buf[0], 1, 2, file) != 2) - goto rg_fail; - /* audiophile gain */ - read_lame_replaygain (buf, gd, gain_adjust); + memcpy(ubuf,<.audiophile_replay_gain,2); + read_lame_replaygain (ubuf, gd, gain_adjust); - fclose(file); return TRUE; rg_fail: - if (file) - fclose(file); return FALSE; } - /* * mp3_get_track_ape_replaygain - read the specified file and scan for Ape Tag * ReplayGain information. @@ -2180,8 +2200,13 @@ +/* ---------------------------------------------------------------------- -/* mp3 slot size in bytes */ + From here starts original gtkpod code + +---------------------------------------------------------------------- */ + +/* mpeg audio slot size in bytes */ int slotsize[3] = {4,1,1}; /* layer 1, layer 2, layer 3 */ int samplesperframe[2][3] = { @@ -2196,48 +2221,42 @@ /* - * mp3_get_track_lame_gapless - read the specified file and scan for LAME Tag - * gapless information. + * mp3_read_lame_tag - read the data from the lame tag (if it exists) * - * @path: localtion of the file - * @track: structure holding track information - * - * TODO: Split off non-LAME stuff (samplecount, gapless_data) to a separate function since it's generic + * @path: location of the file + * @lt: pointer to structure to be filled */ -gboolean mp3_get_track_lame_gapless (gchar *path, GaplessData *gd) +gboolean mp3_read_lame_tag (gchar *path, LameTag *lt) { - FILE *file = NULL; - char buf[4], version[5]; - unsigned char ubuf[4]; + unsigned char ubuf[LAME_TAG_SIZE]; int sideinfo; - int i; - g_return_val_if_fail (gd, FALSE); + unsigned char full_info_tag[INFO_TAG_CRC_SIZE]; - if (!path) - goto gp_fail; + g_return_val_if_fail (path, FALSE); - file = fopen (path, "rb"); - + /* Attempt to open the file */ + FILE *file = fopen (path, "r"); if (!file) - goto gp_fail; + goto lt_fail; - /* use get_first_header() to seek to the first mp3 header */ MP3Info *mp3i = NULL; mp3i = g_malloc0 (sizeof (MP3Info)); mp3i->filename = path; mp3i->file = file; get_mp3_info (mp3i); + + /* use get_first_header() to seek to the first mp3 header */ get_first_header (mp3i, 0); - int xing_header_offset = ftell (file); + if (fread (full_info_tag, 1, INFO_TAG_CRC_SIZE, mp3i->file) != INFO_TAG_CRC_SIZE) + goto lt_fail; + fseek(mp3i->file, -INFO_TAG_CRC_SIZE, SEEK_CUR); MP3Header h; - if (!get_header (file, &h)) - goto gp_fail; + if (!get_header (mp3i->file, &h)) + goto lt_fail; - int mysamplesperframe = samplesperframe[h.version & 1][3 - h.layer]; - /* Determine offset of Xing header based on sideinfo size */ if (h.version & 0x1) { @@ -2250,21 +2269,21 @@ SIDEINFO_MPEG2_MONO : SIDEINFO_MPEG2_MULTI; } - if (fseek (file, sideinfo, SEEK_CUR) || - (fread (&buf[0], 1, 4, file) != 4)) - goto gp_fail; + if (fseek (mp3i->file, sideinfo, SEEK_CUR) || + (fread (&ubuf[0], 1, 4, mp3i->file) != 4)) + goto lt_fail; /* Is this really a Xing or Info Header? * FIXME: Apparently (according to madplay sources) there is a different * possible location for the Xing header ("due to an unfortunate * historical event"). I do not thing we need to care though since * ReplayGain information is only contained in recent files. */ - if (strncmp (buf, "Xing", 4) && strncmp (buf, "Info", 4)) - goto gp_fail; + if (strncmp (ubuf, "Xing", 4) && strncmp (ubuf, "Info", 4)) + goto lt_fail; /* Determine the offset of the LAME tag based on contents of the Xing header */ int flags; - fread (&flags, 4, 1, file); + fread (&flags, 4, 1, mp3i->file); int toskip = 0; if (flags | 0x1) { /* frames field is set */ @@ -2284,38 +2303,90 @@ } /* Check for LAME Tag */ - if (fseek (file, toskip, SEEK_CUR) || (fread (&buf[0], 1, 4, file) != 4)) - goto gp_fail; - if (strncmp (buf, "LAME", 4)) - goto gp_fail; + if (fseek (mp3i->file, toskip, SEEK_CUR) || (fread (ubuf, 1, LAME_TAG_SIZE, mp3i->file) != LAME_TAG_SIZE)) + goto lt_fail; + if (strncmp (ubuf, "LAME", 4)) + goto lt_fail; - /* Check LAME Version */ - if (fread (version, 1, 5, file) != 5) - goto gp_fail; + strncpy(lt->encoder, &ubuf[0x0], 4); - /* XXX skip old LAME versions, or just assume that pre/postgap - * turn out zeros anyway, or check the CRC to vaidate the tag? */ + strncpy(lt->version_string, &ubuf[0x4], 5); - gboolean cbr = FALSE; - if (fread (ubuf, 1, 1, file) != 1) - goto gp_fail; + lt->info_tag_revision = (ubuf[0x9] >> 4); + lt->vbr_method = (ubuf[0x9] & 0xf); + lt->lowpass = ubuf[0xa]; - if ((ubuf[0] & 0xf) == 0x1) - cbr = TRUE; + memcpy(<->peak_signal_amplitude,&ubuf[0xb],4); + memcpy(<->radio_replay_gain,&ubuf[0xf],2); + memcpy(<->audiophile_replay_gain,&ubuf[0x11],2); - if (fseek (file, 0xB, SEEK_CUR) || (fread (ubuf, 1, 4, file) != 4)) - goto gp_fail; + lt->encoding_flags = ubuf[0x13] >> 4; + lt->ath_type = ubuf[0x13] & 0xf; - /* set pregap and postgap directly from LAME header */ - gd->pregap = (ubuf[0] << 4) + (ubuf[1] >> 4); - gd->postgap = ((ubuf[1] & 0xf) << 8) + ubuf[2]; + lt->bitrate = ubuf[0x14]; - /* jump the end of the frame with the xing header */ - if (fseek (file, xing_header_offset + frame_length (&h), SEEK_SET)) + lt->delay = (ubuf[0x15] << 4) + (ubuf[0x16] >> 4); + lt->padding = ((ubuf[0x16] & 0xf) << 8) + ubuf[0x17]; + + lt->noise_shaping = ubuf[0x18] & 0x3; + lt->stereo_mode = (ubuf[0x18] >> 2) & 0x7; + lt->unwise_settings = (ubuf[0x18] >> 5) & 0x1; + lt->source_sample_frequency = (ubuf[0x18] >> 6) & 0x3; + + lt->mp3_gain = ubuf[0x19]; + + lt->surround_info = (ubuf[0x1a] >> 3) & 0x7; + lt->preset = ((ubuf[0x1a] & 0x7) << 8) + ubuf[0x1b]; + + lt->music_length = parse_lame_uint32(&ubuf[0x1c]); + + lt->music_crc = parse_lame_uint16(&ubuf[0x20]); + lt->info_tag_crc = parse_lame_uint16(&ubuf[0x22]); + + lt->calculated_info_tag_crc = crc_compute(full_info_tag, INFO_TAG_CRC_SIZE, 0x0000); + + fclose(file); + return (lt->calculated_info_tag_crc == lt->info_tag_crc); + + lt_fail: + if (file) + fclose(file); + return FALSE; + +} + + +/* + * mp3_get_track_gapless - read the specified file and calculate gapless + * information: totalsamples and gapless_data + * + * @mp3i: MP3Info of the file; should already have run get_mp3_info() on it + * @gd: structure holding gapless information; should have pregap and + * postgap already filled + */ + +gboolean mp3_get_track_gapless (MP3Info *mp3i, GaplessData *gd) +{ + int i; + + g_return_val_if_fail (mp3i, FALSE); + g_return_val_if_fail (gd, FALSE); + + /* use get_first_header() to seek to the first mp3 header */ + get_first_header (mp3i, 0); + + int xing_header_offset = ftell (mp3i->file); + + get_header(mp3i->file, &(mp3i->header)); + + int mysamplesperframe = samplesperframe[mp3i->header.version & 1][3 - mp3i->header.layer]; + + /* jump to the end of the frame with the xing header */ + if (fseek (mp3i->file, xing_header_offset + frame_length (&(mp3i->header)), SEEK_SET)) goto gp_fail; /* counts bytes from the start of the 1st sync frame */ - int totaldatasize = frame_length (&h); + int totaldatasize = frame_length (&(mp3i->header)); /* keeps track of the last 8 frame sizes */ int lastframes[8]; @@ -2325,19 +2396,14 @@ /* quickly parse the file, reading only frame headers */ int l = 0; - while ((l = get_header (file, &h)) != 0) + while ((l = get_header (mp3i->file, &(mp3i->header))) != 0) { - for (i = 7; i > 0; i--) - { - lastframes[i] = lastframes[i - 1]; - } - lastframes[0] = l; + lastframes[totalframes%8] = l; totaldatasize += l; totalframes++; - if (fseek (file, l - FRAME_HEADER_SIZE, SEEK_CUR)) + if (fseek (mp3i->file, l - FRAME_HEADER_SIZE, SEEK_CUR)) goto gp_fail; - } int finaleight = 0; @@ -2346,7 +2412,12 @@ finaleight += lastframes[i]; } - if (cbr) + /* For some reason, iTunes appears to add an extra frames worth of + * samples to the samplecount for CBR files. CBR files don't currently + * (2 Jul 07) play gaplessly whether uploaded from iTunes or gtkpod, + * even with apparently correct values, but we will attempt to emulate + * iTunes' behavior */ + if (mp3i->vbr == 0) // CBR totalframes++; /* all but last eight frames */ @@ -2354,13 +2425,10 @@ /* total samples minus pre/postgap */ gd->samplecount = totalframes * mysamplesperframe - gd->pregap - gd->postgap; - fclose (file); return TRUE; gp_fail: - if (file) - fclose (file); return FALSE; } @@ -2382,8 +2450,11 @@ * set. etrack->tchanged is set to TRUE if data has been changed, * FALSE otherwise. */ -gboolean mp3_read_gapless (char *path, Track *track) -{ + +gboolean mp3_read_gapless (gchar *path, Track *track) { + MP3Info *mp3i=NULL; + FILE *file; + GaplessData gd; ExtraTrackData *etr; @@ -2393,30 +2464,51 @@ memset (&gd, 0, sizeof (GaplessData)); - gd.pregap = 0; - gd.samplecount = 0; - gd.postgap = 0; - gd.gapless_data = 0; - mp3_get_track_lame_gapless (path, &gd); + g_return_val_if_fail (path, FALSE); - etr->tchanged = FALSE; + /* Attempt to open the file */ + file = fopen (path, "r"); + if (file) + { + mp3i = g_malloc0 (sizeof (MP3Info)); + mp3i->filename = path; + mp3i->file = file; + get_mp3_info (mp3i); - if ((gd.pregap) && (gd.samplecount) && (gd.postgap) && (gd.gapless_data)) - { - if ((track->pregap != gd.pregap) || - (track->samplecount != gd.samplecount) || - (track->postgap != gd.postgap) || - (track->gapless_data != gd.gapless_data) || - (track->gapless_track_flag == FALSE)) + /* Try the LAME tag for pregap and postgap */ + LameTag lt; + if (mp3_read_lame_tag (path, <)) { + gd.pregap = lt.delay; + gd.postgap = lt.padding; + } else { + /* insert non-LAME methods of finding pregap and postgap */ + fclose(file); + return FALSE; + } + + mp3_get_track_gapless (mp3i, &gd); + + etr->tchanged = FALSE; + + if ((gd.pregap) && (gd.samplecount) && (gd.postgap) && (gd.gapless_data)) { - etr->tchanged = TRUE; - track->pregap = gd.pregap; - track->samplecount = gd.samplecount; - track->postgap = gd.postgap; - track->gapless_data = gd.gapless_data; - track->gapless_track_flag = TRUE; + if ((track->pregap != lt.delay) || + (track->samplecount != gd.samplecount) || + (track->postgap != lt.padding) || + (track->gapless_data != gd.gapless_data) || + (track->gapless_track_flag == FALSE)) + { + etr->tchanged = TRUE; + track->pregap = lt.delay; + track->samplecount = gd.samplecount; + track->postgap = lt.padding; + track->gapless_data = gd.gapless_data; + track->gapless_track_flag = TRUE; + } } + fclose(file); + return TRUE; } return FALSE; } @@ -2656,15 +2748,6 @@ mp3_read_gapless (name, track); -#if LOCALDEBUG - printf("%s\n", name); - printf("\tpregap: %i\n", track->pregap); - printf("\tpostgap: %i\n", track->postgap); - printf("\tsamplecount: %li\n", track->samplecount); - printf("\tgaplessdata: %i\n", track->gapless_data); -#endif - - /* Get additional info (play time and bitrate */ if (mp3i) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pha...@us...> - 2007-07-30 19:18:22
|
Revision: 1659 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1659&view=rev Author: phantom_sf Date: 2007-07-30 12:18:11 -0700 (Mon, 30 Jul 2007) Log Message: ----------- 2007-07-30 P.G. Richardson <phantom_sf at users.sourceforge.net> * src/fetchcover.c: improved return status of net_retrieve_image function so that if one image fails to be retrieved then the dialog does not have to be cancelled. Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/src/fetchcover.c Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-07-27 19:28:13 UTC (rev 1658) +++ gtkpod/trunk/ChangeLog_detailed 2007-07-30 19:18:11 UTC (rev 1659) @@ -1,3 +1,9 @@ +2007-07-30 P.G. Richardson <phantom_sf at users.sourceforge.net> + + * src/fetchcover.c: improved return status of net_retrieve_image function + so that if one image fails to be retrieved then the dialog does not have + to be cancelled. + 2007-07-26 Michael Tiffany <tiffman at users.sourceforge.net> * merge gapless_playback_branch back to HEAD. Modified: gtkpod/trunk/src/fetchcover.c =================================================================== --- gtkpod/trunk/src/fetchcover.c 2007-07-27 19:28:13 UTC (rev 1658) +++ gtkpod/trunk/src/fetchcover.c 2007-07-30 19:18:11 UTC (rev 1659) @@ -80,7 +80,7 @@ static void *safe_realloc(void *ptr, size_t size); static size_t curl_write_fetchcover_func(void *ptr, size_t itemsize, size_t numitems, void *data); static void net_search_track (); - static void net_retrieve_image (GString *url); + static gboolean net_retrieve_image (GString *url); static void fetchcover_next_button_clicked (GtkWidget *widget, gpointer data); static void fetchcover_prev_button_clicked (GtkWidget *widget, gpointer data); static void fetchcover_cleanup(); @@ -300,7 +300,7 @@ * save it to a file inside the track's parent directory then display * it as a pixbuf */ - static void net_retrieve_image (GString *url) + static gboolean net_retrieve_image (GString *url) { gchar *path = NULL; @@ -320,19 +320,24 @@ curl_easy_perform(curl); curl_easy_cleanup(curl); - g_return_if_fail(fetchcover_curl_data.memory); + if (fetchcover_curl_data.memory == NULL) + { + fetchcover_statusbar_update (_("Image could not be retrieved.")); + fetchcover_debug("fetchcover_next: fetchcover_curl_data.memory is null\n"); + return FALSE; + } /* Check that the page returned is a valid web page */ if (strstr(fetchcover_curl_data.memory, "<html>") != NULL) { fetchcover_statusbar_update (_("Image appears to no longer exist at http location")); fetchcover_debug("fetchcover_next: http error (probably 404 or server error\n"); - return; + return FALSE; } FILE *tmpf = NULL; ExtraTrackData *etd = fetchcover_track->userdata; - g_return_if_fail(etd); + g_return_val_if_fail(etd, FALSE); gchar *dir = g_path_get_dirname(etd->pc_path_utf8); gchar *template = prefs_get_string("coverart_template"); @@ -371,34 +376,43 @@ displayed_cover->dir = dir; displayed_cover->filename = fname; - + + g_free(filename); + fetchcover_debug("fetchcover_next: saving tmp cover image to %s / %s", displayed_cover->dir, displayed_cover->filename); path = g_build_filename(displayed_cover->dir, displayed_cover->filename, NULL); if ((tmpf = fopen(path, "wb")) == NULL) { fetchcover_debug("fetchcover_next: fopen failed\n"); - fetchcover_statusbar_update (_("Downloaded image cover failed to open")); + fetchcover_statusbar_update (_("A file could not be created for the downloaded image")); if (fetchcover_curl_data.memory) { g_free(fetchcover_curl_data.memory); fetchcover_curl_data.memory = NULL; fetchcover_curl_data.size = 0; } + g_strfreev(template_items); + g_free(template); g_free (path); - return; + return FALSE; } g_free (path); if (fwrite(fetchcover_curl_data.memory, fetchcover_curl_data.size, 1, tmpf) != 1) { fetchcover_debug("fetchcover_next: fwrite failed\n"); + fetchcover_statusbar_update (_("The downloaded image could not be saved to the filesystem")); if (fetchcover_curl_data.memory) { g_free(fetchcover_curl_data.memory); fetchcover_curl_data.memory = NULL; fetchcover_curl_data.size = 0; } + fclose(tmpf); + g_strfreev(template_items); + g_free(template); + return FALSE; } fclose(tmpf); @@ -410,21 +424,28 @@ { g_error_free (error); fetchcover_debug("fetchcover_next: gdk_pixbuf_new_from_file failed\n"); + fetchcover_statusbar_update (_("Downloaded image file could not be displayed")); if (fetchcover_curl_data.memory) { g_free(fetchcover_curl_data.memory); fetchcover_curl_data.memory = NULL; fetchcover_curl_data.size = 0; } + g_strfreev(template_items); + g_free(template); + g_free(path); + return FALSE; } - g_free(fetchcover_curl_data.memory); + if (fetchcover_curl_data.memory) + g_free(fetchcover_curl_data.memory); + fetchcover_curl_data.memory = NULL; fetchcover_curl_data.size = 0; g_strfreev(template_items); g_free(template); - g_free(filename); g_free(path); + return TRUE; } /** @@ -483,28 +504,25 @@ /* Set the displayed cover to be the new image */ displayed_cover = g_list_nth_data (fetchcover_image_list, displayed_cover_index); + GdkPixbuf *scaled; /* If the image has not been retrieved then get it from the net */ if (displayed_cover->image == NULL) { - net_retrieve_image (displayed_cover->url); - if (displayed_cover->image == NULL) + if (! net_retrieve_image (displayed_cover->url) || displayed_cover->image == NULL) { /* XML file downloaded ok but image could not be retrieved */ - gtk_widget_hide (prev_button); - gtk_widget_set_sensitive (next_button, FALSE); + gnome_canvas_item_hide (fetchcover_canvasitem); gdk_window_set_cursor (window, NULL); - fetchcover_statusbar_update (_("Failed to retrieve any images")); - g_return_if_fail (displayed_cover->image); + return; } } fetchcover_debug("Displayed Image path: %s/%s\n", displayed_cover->dir, displayed_cover->filename); - GdkPixbuf *scaled = gdk_pixbuf_scale_simple(displayed_cover->image, IMGSCALE, IMGSCALE, GDK_INTERP_NEAREST); + scaled = gdk_pixbuf_scale_simple(displayed_cover->image, IMGSCALE, IMGSCALE, GDK_INTERP_NEAREST); gnome_canvas_item_set(fetchcover_canvasitem, "pixbuf", scaled, NULL); - + gnome_canvas_item_show (fetchcover_canvasitem); gdk_window_set_cursor (window, NULL); - return; } @@ -541,20 +559,23 @@ /* Set the displayed cover to be the new image */ displayed_cover = g_list_nth_data (fetchcover_image_list, displayed_cover_index); + GdkPixbuf *scaled; /* If the image has not been retrieved then get it from the net */ if (displayed_cover->image == NULL) { - net_retrieve_image (displayed_cover->url); - if (displayed_cover->image == NULL) + if (! net_retrieve_image (displayed_cover->url) || displayed_cover->image == NULL) { - fetchcover_statusbar_update (_("Failed to retrieve image.")); - g_return_if_fail (displayed_cover->image); + /* XML file downloaded ok but image could not be retrieved */ + gnome_canvas_item_hide (fetchcover_canvasitem); + return; } } - GdkPixbuf *scaled = gdk_pixbuf_scale_simple(displayed_cover->image, IMGSCALE, IMGSCALE, GDK_INTERP_NEAREST); + fetchcover_debug("Displayed Image path: %s/%s\n", displayed_cover->dir, displayed_cover->filename); + + scaled = gdk_pixbuf_scale_simple(displayed_cover->image, IMGSCALE, IMGSCALE, GDK_INTERP_NEAREST); gnome_canvas_item_set(fetchcover_canvasitem, "pixbuf", scaled, NULL); - + gnome_canvas_item_show (fetchcover_canvasitem); return; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tmz...@us...> - 2007-07-31 22:06:51
|
Revision: 1665 http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1665&view=rev Author: tmzullinger Date: 2007-07-31 15:06:50 -0700 (Tue, 31 Jul 2007) Log Message: ----------- update the dependency list Modified Paths: -------------- gtkpod/trunk/ChangeLog_detailed gtkpod/trunk/INSTALL Modified: gtkpod/trunk/ChangeLog_detailed =================================================================== --- gtkpod/trunk/ChangeLog_detailed 2007-07-31 21:24:11 UTC (rev 1664) +++ gtkpod/trunk/ChangeLog_detailed 2007-07-31 22:06:50 UTC (rev 1665) @@ -1,8 +1,13 @@ +2007-07-31 Todd Zullinger <tmzullinger at users.sourceforge.net> + + * INSTALL: + update the dependency list + 2007-07-30 P.G. Richardson <phantom_sf at users.sourceforge.net> - * src/fetchcover.c: improved return status of net_retrieve_image function - so that if one image fails to be retrieved then the dialog does not have - to be cancelled. + * src/fetchcover.c: improved return status of net_retrieve_image function + so that if one image fails to be retrieved then the dialog does not have + to be cancelled. 2007-07-26 Michael Tiffany <tiffman at users.sourceforge.net> Modified: gtkpod/trunk/INSTALL =================================================================== --- gtkpod/trunk/INSTALL 2007-07-31 21:24:11 UTC (rev 1664) +++ gtkpod/trunk/INSTALL 2007-07-31 22:06:50 UTC (rev 1665) @@ -32,21 +32,24 @@ autoconf (at least 2.55) flex (or lex) - glib (at least 2.4.0) + gettext + glib (at least 2.4.0) gtk+ (at least 2.6.0) libglade (at least 2.4.0) - libgpod (at least 0.4.0) + libgnomecanvas (at least 2.14.0) + libgpod (at least 0.5.2) libid3tag (at least 0.15) + perl XML::Parser module pkgconfig Optional packages: + libcurl (for coverart download support) + libflac (for FLAC support) + libgnome-vfs-2.0 >2.6 (for iPod autodetection under GNOME) + libhal >0.5 <0.6 (in combination with libgnome-vfs: better detection of iPods) + libvorbis (for ogg libvorbis support) libmpv4 (for AAC/M4A support) - libvorbis (for ogg libvorbis support) - libflac (for FLAC support) - libcurl (for coverart download support) - libgnome-vfs-2.0 >2.6 (for iPod autodetection under GNOME) - libhal >0.5 <0.6 (in combination with libgnome-vfs: better detection of iPods) 2. If you install libraries to /usr/local/lib please don't forget to This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |