/home/thp/src/gpodder-website/__gpodder_tmp --- gpodder-0.11.3/ChangeLog 2008-06-01 09:59:10.000000000 +0200 +++ gpodder-0.12.0/ChangeLog 2008-07-15 10:22:52.000000000 +0200 @@ -1,11 +1,446 @@ -Sun, 01 Jun 2008 09:54:01 +0200 -gPodder 0.11.3 "To Serve Man" released +Tue, 15 Jul 2008 10:21:39 +0200 +gPodder 0.12.0 "Metropolis" released - * bin/gpodder: Updated version number and release date - * data/messages.pot: Updated from source + * bin/gpodder: gPodder 0.12.0 released + * data/messages.pot: Updated for the 0.12.0 release + * data/po/de.po: Updated for the 0.12.0 release * data/po/*.po: Updated from messages.pot - * doc/man/gpodder.1: Updated for the 0.11.3 release of gPodder - * README: Updated for the 0.11.3 release of gPodder + * doc/man/gpodder.1: gPodder 0.12.0 released + * README: gPodder 0.12.0 released, mention pysqlite2 for Py2.4 + +Tue, 15 Jul 2008 10:08:16 +0200 +Fix bugs and annoyances when no channels.opml file exists + + * src/gpodder/opml.py: Make sure can save a new channels.opml file + when no other file exists, and make sure we don't try to parse a file + that does not exist when opening OPML files + +Tue, 15 Jul 2008 10:06:19 +0200 +Do not hide podcast cover and pill pixbuf in podcast list by default + + * src/gpodder/config.py: Change default settings + +Tue, 15 Jul 2008 09:54:57 +0200 +Support saving multiple episodes to disk (reported by: O. Emmerson) + + * src/gpodder/gui.py: Make sure that we support saving multiple + selections for the "Save to disk" context menu item + +Mon, 14 Jul 2008 15:18:04 -0400 +Always show downloaded episodes (Patch from Justin Forest) + + * src/gpodder/dbsqlite.py: Include downloaded episodes even when they + go beyond the episode limit. e.g., when you have + gl.max_episodes_per_feed set to 10, but there are 20 downloaded ones + already. With this patch, all 20 episodes are displayed. + +Mon, 14 Jul 2008 12:31:15 -0400 +Merge patch to fix bug #122 (Day of week Released date not computed correctly) + + * src/gpodder/libpodcasts.py: use rfc822.mktime_tz() to convert + timestamps from feedparser's _parse_date() function to seconds from + the epoch (in UTC instead of the local timezone) + * src/gpodder/util.py: fix util.format_date() so that when it reports + 'Today', it means the timestamp is from after 00:00 local time + +Mon, 14 Jul 2008 12:21:37 -0400 +Merge patch to fix bug #125 (Deleting a podcast while checking for new +episodes allows a second concurrent sync.) + + * src/gpodder/gui.py: make update_feed_cache() check if the feed cache + is being updated before allowing an update to take place + +Sun, 13 Jul 2008 15:32:22 -0400 +Fix python 2.4 crash (reported by: Wilfred van Rooijen) + + * src/gpodder/draw.py: change ".5 if close else 0" to valid python + 2.4 syntax + +Sun, 13 Jul 2008 15:19:39 -0400 +Fix MP3PlayerDevice traceback when syncing (reported by: Wilfred van Rooijen) + + * src/gpodder/sync.py: make Device.__track_on_device() non-private + +Sat, 12 Jul 2008 14:12:11 +0200 +Merge patch to fix bug #149 (Remove Old Podcasts does not always have enabled +delete button) + + * src/gpodder/gui.py: Use count of selected episodes instead of total + size to activate action button in episode selector (episodes with + unknow size have a total size of zero) + +Fri, 11 Jul 2008 14:11:08 -0400 +Merge patch to fix bug #147 (Sync doesn't work) + + * src/gpodder/gui.py: Use Device.episode_on_device(episode) to retrive + device_episode and simplify logic to determine whether an episode is on + the device and eligible for removal + * src/gpodder/sync.py: Add Device.episode_on_device(episode) + +Fri, 11 Jul 2008 13:09:55 -0400 +Update podcast tab title when adding or removing channels + + * src/gpodder/gui.py: Add update_podcasts_tab() and call it when a + channel is added or removed + +Thu, 10 Jul 2008 23:54:57 +0200 +Update list of donators + + * src/gpodder/gui.py: Update list of donators + +Thu, 10 Jul 2008 23:49:12 +0200 +Don't warn the user when timestamp is None + + * src/gpodder/util.py: Don't warn the user when timestamp is None in + gpodder.util.format_date; Thanks to Bernd Schlapsi for reporting this + bug (Closes: http://bugs.gpodder.org/show_bug.cgi?id=148) + +Wed, 09 Jul 2008 12:19:26 +0200 +Simply advanced configuration editor, implement usability suggestions + + * data/gpodder.glade: Implement usability suggestions from + http://gpodder.org/files/user_test_2008-05.pdf: Rename "Player" tab in + preferences to "Device"; change "Filter:" to "Search for:" in advanced + configuration editor + * src/gpodder/config.py: Support code for changes in the advanced + configuration editor dialog (model) + * src/gpodder/gui.py: Modify the advanced configuration editor to have + check boxes for boolean values, remove the "Type" column and rename + the columns as suggested by the May 2008 user test; use italic font + instead of bold for values set to something other than the default + +Tue, 08 Jul 2008 21:25:24 -0400 +Merge check free space before syncing patch + + * src/gpodder/gui.py: Display a dialog box informing the user in the + event that there is insufficient free space on their device before + syncing begins. + * src/gpodder/sync.py: Added Device.tracks_list which is populated by + Device.get_all_tracks() when Device.open() is called. + Added Device.episode_on_device(episode) + Added Device.get_free_space() + +Tue, 08 Jul 2008 21:10:48 -0400 +Small bugfixes + + * src/gpodder/gui.py: for bluetooth file transfer make sure + episode.sync_filename() doesn't contain any troublesome characters + eg. some episodes include / in the title + * src/gpodder/libpodcasts.py: comment out mimetype logging, it gets + annoying after a while... + * src/gpodder/util.py: remove "path = os.path.dirname(path)" from + get_free_disk_space(path), this prevented the real free disk space + from being reported + +Sun, 06 Jul 2008 23:11:33 +0200 +Update book donators list + + * src/gpodder/gui.py: Add PhilF to list of book donators + +Sat, 05 Jul 2008 15:23:55 -0400 +Support episodes without a guid during migration (patch from Justin Forest) + + * src/gpodder/dbsqlite.py: Don't raise an exception if an episode is + missing a guid + * src/gpodder/libpodcasts.py: Make sure that episodes from LocalDBReader + always contain some kind of guid + +Fri, 04 Jul 2008 13:25:12 -0400 + * src/gpodder/gui.py: fix traceback when deleting episodes from device + +Fri, 04 Jul 2008 18:47:19 +0200 +New look for the "pill" pixbuf + + * src/gpodder/draw.py: Refresh the look of the "pill" pixbuf code, so + we have a more visually pleasing status display in the podcast list + +Thu, 03 Jul 2008 20:09:18 -0400 +Display message if user tries to sync to iPod without gpod installed + + * src/gpodder/gui.py: Add an informative self.notification() if the user + attempts to sync an iPod without the libgpod python bindings installed + * src/gpodder/sync.py: Add sync.gpod_available, Add Device.errors to + prevent a crash in the event of an error + +Thu, 03 Jul 2008 20:26:50 +0200 +Update list of book donators + + * src/gpodder/gui.py: Add Franz Seidl to list of book donators + +Tue, 01 Jul 2008 22:46:52 -0400 +Better file extension detection using feed items' mimetypes + + * src/gpodder/gui.py: Use episode.file_type() instead of + util.file_type_by_extension(util.file_extension_from_url(url)) + * src/gpodder/libgpodder.py: Use episode.file_type() instead of + util.file_type_by_extension(util.file_extension_from_url(url)) + * src/gpodder/libpodcasts.py: Add new column to the channel list + gtk.ListStore for holding the file extension. Add extension() + function to podcastItem which makes use mimetype in the event that + filename_from_url()[1] returns None + * src/gpodder/util.py: file_extension_from_url is renamed to + filename_from_url and returns (filename, extension) + Added extension_from_mimetype(mimetype) + +Mon, 30 Jun 2008 17:39:36 +0200 +Do not update podcast list when closing channel window (patch by Justin Forest) + + * src/gpodder/gui.py: Do not update podcast list when closing the + channel window, saves some CPU cycles. Patch by Justin Forest + (Closes: http://bugs.gpodder.org/show_bug.cgi?id=135) + +Sun, 29 Jun 2008 16:59:30 -0400 +Merge patch from Justin Forest and Thomas Perl: +- Use SQLite instead of cPickle to store all data, including feed summary +and entries, download and play history. +- Migration assistant to import the old cPickle files in to the SQLite DB + * src/gpodder/cache.py: SQLite-related accomodations + * src/gpodder/console.py: SQLite-related accomodations + * src/gpodder/dbsqlite.py: New file, SQLite interface for gPodder + * src/gpodder/gui.py: Lots of changes to accomodate the new SQLite + DB + new migration assistant code + * src/gpodder/libgpodder.py: Added gPodderLib.migrate_to_sqlite(). + HistoryStore and ChannelSettings are marked as DEPRECATED + * src/gpodder/libpodcasts.py: SQLite-related accomodations and new + code for setting/determining episode state + * src/gpodder/sync.py: SQLite-related accomodations + * src/gpodder/trayicon.py: Use episode.was_downloaded() instead + of episode.is_downloaded() + * src/gpodder/util.py: SQLite-related accomodations + +Sun, 29 Jun 2008 16:15:54 +0200 +Fix a bug in shutil when moving the download directory bug (#8) + + * src/gpodder/libgpodder.py: When the shutil.move() bug is detected + (an NameError is thrown when moving from an ext file sytem to a + fat or ntfs filesystem, see http://bugs.python.org/issue2549), + the error is ignored, then the previous directory is removed + by a system call to "rm" + +Thu, 19 Jun 2008 10:50:11 +0200 +Fix OPML dialog button sensitivity; sensitivity+totals for Episode Selector + + * src/gpodder/gui.py: Fix the sensitivity setting of the OPML lister + when using the "Select All"/"Select None" buttons; add button + sensitivity setting code to Episode Selector and add episode count + +Thu, 19 Jun 2008 09:46:38 +0200 +Fix alignment of "pill" pixbuf + + * src/gpodder/gui.py: Align the "pill" pixbuf all to the right + +Thu, 19 Jun 2008 09:30:53 +0200 +Use as much space as possible for podcast title and description + + * src/gpodder/gui.py: Hide the "pill" pixbuf cell when we don't have a + value to display, so we can show more of the channel title + + description + * src/gpodder/libpodcasts.py: Add a new boolean value to tell the + treeview column if we need to show the "pill" cell or not + +Tue, 17 Jun 2008 19:41:33 -0400 +Add 'Select All' and 'Select None' buttons to gPodderOpmlLister + + * data/gpodder.glade: add 'Select All' and 'Select None' buttons to + the the bottom-left of the gPodderOpmlLister window + * src/gpodder/gui.py: add button signal handlers and a function + ( select_all(bool) ) to facilitate selecting all or no channels + +Tue, 17 Jun 2008 14:49:12 +0200 +Make handling pubDates a bit safer when reading it externally + + * src/gpodder/libpodcasts.py: Make handling of pubDates a bit more + secure and easier + * src/gpodder/gui.py: Add Daniel Ramos to list of donators and bug + reporters + +Sun, 15 Jun 2008 14:44:29 +0200 +Merge "Allows user command execution after certain events" from Paul Rudkin + + * src/gpodder/config.py: Add two new configuration options: + cmd_all_downloads_complete and cmd_download_complete + * src/gpodder/download.py: Call the user-specific command when a + download finishes (if configured) + * src/gpodder/gui.py: If all downloads have been completed, execute + the user-specific command (if configured) + * src/gpodder/libgpodder.py: Add ext_command_thread function that + handles calling an external command + (Closes: http://bugs.gpodder.org/show_bug.cgi?id=4) + +Sun, 15 Jun 2008 14:23:40 +0200 +Support tooltips for the episode list; improve tooltip appearance + + * src/gpodder/gui.py: Add tooltips to treeAvailable (episode list); + avoid showing tooltips while the context menu of the treeChannels and + treeAvailable is open, so the tooltip doesn't appear over the context + menu; add Sebastian Krause to list of bug reporters + * src/gpodder/util.py: Try to convert some HTML tags to text-only + characters (
to newline,
  • to a "*", etc..) so the description + of an episode is easier to read and looks more structured; also, + convert more than two subsequent newlines to maximum two newlines + (Closes: http://bugs.gpodder.org/show_bug.cgi?id=126) + +Sat, 14 Jun 2008 12:29:11 -0400 + * src/gpodder/libpodcasts.py: make LocalDBReader and LocalDBWriter + read/save the episode mimetype attribute in the LocalDB. This + prevents the mimetype attribute from being set to + 'application/octet-stream' after a file is downloaded. + +Sat, 14 Jun 2008 18:50:29 +0200 +Improve performance related to pubDate parsing; Download button; update feeds + + * src/gpodder/gui.py: Notify user when we are building the list of + channels instead of staying at "updating [last feed]".; Make the "OK" + button of the gPodderEpisodeSelector a "Downlaod" button, because + that's what the button does when clicking it - downloading episodes + * src/gpodder/libpodcasts.py: pubDate is now an Unix timestamp + everywhere and not a string, which has to be parsed quite often; Fix + up and improve the creation of the channel list model + * src/gpodder/sync.py: Customizations for the new pubDate code + * src/gpodder/util.py: Remove updated_parsed_to_rfc2822, because we + don't need it anymore with the new pubDate code + +Sat, 14 Jun 2008 15:56:53 +0200 +Make things less verbose and fix a problem with cover art handling + + * src/gpodder/gui.py: Fix problem when trying to remove a non-existent + podcast cover art from the cache; make things less verbose + * src/gpodder/*.py: Make things less verbose + +Sat, 14 Jun 2008 15:16:09 +0200 +Detect HTML and OPML content when adding a podcast subscription + + * src/gpodder/gui.py: Detect HTML and OPML content when adding a + podcast feed that is not parseable by feedparser; when the content + suggests the file is an OPML file, open the OPML dialog, when it looks + like an HTML file, ask the user if she wants to browse the content + with the web browser and look for a suitable XML/feed URL + (This fixes the first suggestion in the May 2008 Usability Evaluation) + +Fri, 13 Jun 2008 21:32:57 +0200 +Automatically download channel cover file; improve channel cover handling + + * data/gpodder.glade: Simplify and clean-up the podcast editor dialog, + especially with respect to the cover art stuff + * src/gpodder/config.py: Add configuration option + "podcast_list_icon_size" that determines the pixel size of the cover + art displayed in the podcast list + * src/gpodder/gui.py: Add cover cache, register with the cover + downloader service in the main window, handle messages from the cover + downloader (removed and download finished); request covers for + channels when refreshing the channel list; make sure drag'n'drop of + image files to the channel list works directly and sets the + corresponding channel cover; Rework cover download handling and add an + open dialog as suggested by the May 2008 Usability Evaluation + * src/gpodder/libgpodder.py: Remove old, attic image downloading code + from gPodderLib, because it now has its own service class + * src/gpodder/libpodcasts.py: Remove unneeded get_cover_pixbuf helper + function for podcastChannel; improve channels_to_model to take + advantage of the new cover downloader service + * src/gpodder/services.py: Add CoverDownloader service that acts as a + central hub for all downloading and modifying of channel cover art, + including notification of observers (through ObservableService) + * src/gpodder/util.py: Add resize_pixbuf_keep_ratio helper function to + resize a gtk pixbuf while keeping the aspect radio (with optional + caching support through a dictionary parameter) + (Closes: http://bugs.gpodder.org/show_bug.cgi?id=88) + +Fri, 13 Jun 2008 20:10:13 +0200 +Fix a bug in the experimental file naming support + + * src/gpodder/util.py: Fix bug that stopped the experimental file + naming patch from working; thanks to Shane Donohoe for reporting + +Fri, 13 Jun 2008 16:08:16 +0200 +Merge patch to add experimental support for "normal" file naming + + * src/gpodder/config.py: New option "experimental_file_naming" that + defaults to False and enables the new (but experimental!) normal file + naming mode in which the downloaded podcast episodes get their name + not from the md5sum of the download URL, but from the basename of the + download URL, which makes filenames more human-readable + * src/gpodder/libpodcasts.py: Change local_filename() in podcastItem + to decide if we use md5sums or the "new" file naming mode for creating + the local file name of an episode + * src/gpodder/sync.py: Change usage of the "encoding" detection in + gpodder.util (from detect_os_encoding() to simply encoding) + * src/gpodder/util.py: Only detect the filename encoding once (at + program start) and then make it accessible via a global "encoding" + variable in the gpodder.util module; add improvements to + file_extension_from_url() to be able to return the complete filename + and to support more creative URL schemes as implemented by podcast + feed authors (this hopefully makes more feeds work in a proper way) + (Closes: http://bugs.gpodder.org/show_bug.cgi?id=57) + +Fri, 13 Jun 2008 14:27:30 +0200 +Merge patch from Justin Forest to speed up pubDate detection + + * src/gpodder/gui.py: Add Justin Forest to the list of contributors + and make sure we clear the pubDate cache in the channel when changing + episode downloaded status manually + * src/gpodder/libpodcasts.py: Merge patch from Justin Forest to speed + up the newest_pubdate_downloaded() function by caching its value + instead of re-calculating it on every call + (Closes: http://bugs.gpodder.org/show_bug.cgi?id=124) + +Fri, 13 Jun 2008 09:37:45 +0200 +Merge patch from Nick to add support for deleting played files on sync + + * data/gpodder.glade: Add check button for "Delete episodes on device + that have been marked played in gPodder" + * src/gpodder/config.py: Add two new config options: + "mp3_player_delete_played" and "mp3_player_max_filename_length" + * src/gpodder/gui.py: + * src/gpodder/libpodcasts.py: Add "is_deleted()" convenience function + for a podcast episode + * src/gpodder/sync.py: Clean-up and simplify parts of the code to make + it better-structured and avoid code duplication; use the configuration + variable for the MAX_FILENAME_LENGTH instead of hard-coding it to 100 + * src/gpodder/util.py: Split sanitize_filename() into two functions, + detect_os_encoding() and sanitize_filename() for better code re-use + (Closes: http://bugs.gpodder.org/show_bug.cgi?id=56; code written by + Nick (nikosapi) and initial idea by Shane Donohoe, see the bug page) + +Sun, 08 Jun 2008 20:08:58 +0200 +Patch from Jérôme Chabod to fix "minimize on start" bug (#123) + + * src/gpodder/gui.py: Patch from Jérôme Chabod to fix "minimize on + start" bug by moving the minimizing code after the "show window" code + (Closes: http://bugs.gpodder.org/show_bug.cgi?id=123) + +Sun, 08 Jun 2008 20:06:51 +0200 +Updated Portuguese translation by João Paulo Pinto Trindade + + * data/po/pt.po: Updated PT translation by João Paulo Pinto Trindade + +Thu, 05 Jun 2008 18:16:05 +0200 +Improve/fix podcast list tooltips as suggested by the Usability Test + + * src/gpodder/gui.py: Restructure and redesign the podcast list + according to the suggestions in the Usability Test + * src/gpodder/libpodcasts.py: Add helping code for the new tooltips + +Thu, 05 Jun 2008 18:12:20 +0200 +New (optional) dependency: PIL (for Rockbox Cover Art) + + * README: Mention PIL as dependency for Rockbox Cover Art + +Thu, 05 Jun 2008 18:10:11 +0200 +Merge Support for Rockbox Cover Art patch (by David Spreen and Nick) + * src/gpodder/config.py: Add configuration options for rockbox cover + art, thanks to Nick for providing the patch and integration + * src/gpodder/gui.py: Add David Spreen to the list of contributors + * src/gpodder/sync.py: Merge patch from David Spreen and Nick to + support Rockbox cover art synchronization + +Sun, 01 Jun 2008 10:17:32 +0200 +Merge back changes from the 0.11.3 release branch into trunk + + * bin/gpodder: Updated for 0.11.3+svn + * data/messages.pot: Merged from 0.11.3 release branch + * data/po/*.po: Merged from 0.11.3 release branch + * doc/man/gpodder.1: Merged from 0.11.3 release branch + * README: Merged from 0.11.3 release branch Sun, 25 May 2008 17:17:10 +0200 Fix problem with BitTorrent preferences