When a non-audio and non-video podcast episode is selected,
we now replace all "Play" buttons/items with an "Open" button
or item, so opening PDFs and non-media files in podcasts is
more straightforward (you "open" a PDF, you don't "play" it).
Original request from Stefan Lohmaier, gPodder bug 18
Add the ability to add a new Google Video search as a podcast
source by asking for a search term and subscribing to this
search via a RSS feed as video podcast.
Show episode descriptions in gPodder Episode Selector dialog
for "New episodes" and "Delete old episodes". This depends on
the global setting for "episode_list_descriptions", just like
the description displayed in the main window.
Also add tooltips to the episode descriptions, like in the main
window, even when "episode_list_descriptions" is deactivated.
Feature requested by Sebastian Krause in gPodder bug 127
While downloading episodes, show the total download speed
in the title bar in addition to the total progress percentage.
Only update the progress at most once per second, to avoid
updating the GUI too often (progress notifications).
Reported by Will <war59312@gmail.com> in gPodder bug 139
Do not update the OPML status label (because we are going to
remove it soon).
Remove the additional buttons from the gPodder Episode Selector
dialog and instead add this functionality as a context menu to
the episode list treeview in that dialog.
Merge patch to close bug #152 (Deleting a channel does not cancel episodes
downloading from that channel)
* src/gpodder/gui.py: make on_itemRemoveChannel_activate() cancel
any active downloads from the channel being deleted
* src/gpodder/services.py: fix some weird indentation
git-svn-id: svn://svn.berlios.de/gpodder/trunk@786 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Make episodes selector's columns sortable (bug #146)
* src/gpodder/gui.py: make columns sortable Add a index's column to
indentify the currently selected episodes even when sorted. Rewrite
get_selected_coumn() to use this index.
git-svn-id: svn://svn.berlios.de/gpodder/trunk@782 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Fix random segfaults when syncing
Closes bug #150 (http://bugs.gpodder.org/show_bug.cgi?id=150)
* src/gpodder/gui.py: Don't make any gui calls from the sync thread
* src/gpodder/sync.py: add a post-done signal to trigger the finished
sync callback
* src/gpodder/trayicon.py: instantiate __sync_progress during
GPodderStatusIcon __init__ or else you'll get a traceback when
transfering single episodes
git-svn-id: svn://svn.berlios.de/gpodder/trunk@781 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Disable TreeModel cache for channels (Patch from Justin Forest)
Closes feature-request #145 (http://bugs.gpodder.org/show_bug.cgi?id=145)
* src/gpodder/gui.py: don't update every channel's treemodel when only
one really needs to be updated
* src/gpodder/libpodcasts.py: don't cache channel treemodels anymore
generate a new one everytime podcastChannel.tree_model is requested
git-svn-id: svn://svn.berlios.de/gpodder/trunk@780 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Request covers only when necessary (Patch from Justin Forest)
Closes bug #144 (http://bugs.gpodder.org/show_bug.cgi?id=144)
* src/gpodder/gui.py: Don't update covers every time updateComboBox
is called
* src/gpodder/libpodcasts.py: update cover during an update()
* src/gpodder/services.py: log when a cover is being requested
git-svn-id: svn://svn.berlios.de/gpodder/trunk@779 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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
git-svn-id: svn://svn.berlios.de/gpodder/trunk@773 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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
git-svn-id: svn://svn.berlios.de/gpodder/trunk@769 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@766 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@765 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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
git-svn-id: svn://svn.berlios.de/gpodder/trunk@764 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Update list of donators
* src/gpodder/gui.py: Update list of donators
git-svn-id: svn://svn.berlios.de/gpodder/trunk@763 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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
git-svn-id: svn://svn.berlios.de/gpodder/trunk@761 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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()
git-svn-id: svn://svn.berlios.de/gpodder/trunk@760 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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
git-svn-id: svn://svn.berlios.de/gpodder/trunk@759 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Update book donators list
* src/gpodder/gui.py: Add PhilF to list of book donators
git-svn-id: svn://svn.berlios.de/gpodder/trunk@758 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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
git-svn-id: svn://svn.berlios.de/gpodder/trunk@754 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Update list of book donators
* src/gpodder/gui.py: Add Franz Seidl to list of book donators
git-svn-id: svn://svn.berlios.de/gpodder/trunk@753 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@752 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@751 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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
git-svn-id: svn://svn.berlios.de/gpodder/trunk@750 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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
git-svn-id: svn://svn.berlios.de/gpodder/trunk@748 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Fix alignment of "pill" pixbuf
* src/gpodder/gui.py: Align the "pill" pixbuf all to the right
git-svn-id: svn://svn.berlios.de/gpodder/trunk@747 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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
git-svn-id: svn://svn.berlios.de/gpodder/trunk@746 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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
git-svn-id: svn://svn.berlios.de/gpodder/trunk@745 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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
git-svn-id: svn://svn.berlios.de/gpodder/trunk@744 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@743 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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 (<br> to newline, <li> 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)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@742 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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
git-svn-id: svn://svn.berlios.de/gpodder/trunk@740 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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
git-svn-id: svn://svn.berlios.de/gpodder/trunk@739 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@738 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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 <thp@perli.net>
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
git-svn-id: svn://svn.berlios.de/gpodder/trunk@737 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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
git-svn-id: svn://svn.berlios.de/gpodder/trunk@735 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@734 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@733 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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
git-svn-id: svn://svn.berlios.de/gpodder/trunk@731 b0d088ad-0a06-0410-aad2-9ed5178a7e87
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
git-svn-id: svn://svn.berlios.de/gpodder/trunk@729 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Fix problem with BitTorrent preferences
* src/gpodder/gui.py: Merge bugfix patch by Nick (nikosapi) to make
the BitTorrent preferences work correctly
git-svn-id: svn://svn.berlios.de/gpodder/trunk@723 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Updated Spanish and Swedish translations
* data/po/es.po: Updated Spanish translation by Marcos Hernández
* data/po/sv.po: Updated Swedish translation by Anders Kvist
* src/gpodder/gui.py: Add Marcos Hernández to list of contributors,
because he did the updated Spanish translation
git-svn-id: svn://svn.berlios.de/gpodder/trunk@721 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Add option to not hide channel cover and pill when the sidebar gets smaller
* src/gpodder/config.py: Add "podcast_sidebar_save_space" option
* src/gpodder/gui.py: Don't hide the channel cover and pill in the
podcast list when the sidebar gets smaller; idea by Shane Donohoe
git-svn-id: svn://svn.berlios.de/gpodder/trunk@716 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Download start performance improvements; fix podcast list handling
* data/gpodder.glade: Convert the gPodderAddPodcastDialog from a
GtkWindow to a real GtkDialog to make Escape key work and set the URL
entry box to activate the "Add" button when Enter is pressed in it
* src/gpodder/gui.py: Fix podcast selection in updateComboBox, so the
currect podcast is selected when removing/adding podcasts; allow to
pass a URL which should be selected after the update; use
DownloadStatusManager's new batch mode to speed up starting many
downloads at once (very visible speed improvement); adding podcasts
has also been improved a bit with the new code
* src/gpodder/services.py: Support batch mode (i.e. only notify after
all episodes have been added to th download list); this speeds up the
UI when multiple episodes are downloaded at once
git-svn-id: svn://svn.berlios.de/gpodder/trunk@715 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Fix a crasher with ExpatError when trying to parse an invalid itms:// URL
* src/gpodder/gui.py: Give an error message when adding a channel that
doesn't result in a valid URL being returned
* src/gpodder/util.py: Improve handling of itms:// URLs that are not
valid iTunes Podcast links, so they don't crash; thanks to Ralph on
Launchpad for reporting this bug
(Closes: https://bugs.launchpad.net/ubuntu/+source/gpodder/+bug/214113)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@713 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Fix race condition in is_download_in_progress()
* src/gpodder/services.py: Make sure we behave correctly when items in
the download list disappear while we are iterating over the list of
downloads when trying to find out if a download is already in progress
* src/gpodder/gui.py: Add SPGoetze to list of bug reporters
(Closes: https://bugs.launchpad.net/ubuntu/+source/gpodder/+bug/208964)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@712 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Fix bugs in the calculate_size utility function
* src/gpodder/util.py: Fix problem when accessing files or folders is
not possible in calculate_size(); thanks to Scott Wegner for reporting
this bug on Launchpad
* src/gpodder/gui.py: Add Scott Wegner to list of bug reporters
(Closes: https://bugs.launchpad.net/ubuntu/+source/gpodder/+bug/201276)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@711 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Make gPodder respect the user's GNOME toolbar style settings
* src/gpodder/gui.py: Add Stefan Lohmaier to list of bug reporters
* data/gpodder.glade: Remove the preset toolbar style (use user's
configured toolbar style) and set the episode-related toolbar buttons
to be "important" (so the text is displayed in the mixed mode); thanks
to Stefan Lohmaier on gPodder Bugzilla for reporting this bug
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=105)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@708 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Improve feed cache update speed, thanks to the users at ITT
* src/gpodder/cache.py: fetch() now returns an (updated, feed) tuple,
where "updated" is a boolean value telling if the feed has been
updated since the last run and "feed" is the feedparser feed data; fix
a bug where the etag and the last-modified time were never used in a
conditional download of not-changed feeds (my fault ;)
* src/gpodder/console.py: Sync the feed cache to disk after adding a
new podcast to the subscription list
* src/gpodder/gui.py: Pass the list of old channels to the
load_channels() function call, so we can save some CPU cycles when the
feed has not changed and we are allowed to re-use the old, parsed one
* src/gpodder/libpodcasts.py: Don't auto-sync the feed cache when
getting the podcastChannel for a feed; add podcastChannel.sync_cache()
function that saves the feed cache to disk; make it possible to pass a
list of old channels to load_channels() and use the old channel
objects in case the new one hasn't changed since the last run
(see http://www.internettablettalk.com/forums/showpost.php?p=179261&postcount=62)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@707 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Fix problem on Maemo when window open sound occurs twice on start
* data/gpodder.glade: Don't show gPodder main window initially
* src/gpodder/gui.py: Show gPodder main window only after the UI
elements have been set up (on Desktop) and don't destroy old main
window after re-parenting the vbox to the hildonized window (on Maemo)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@706 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Don't change the menu item text for subscription remove and edit
* src/gpodder/gui.py: Don't change the text of the subscription menu
items when changing the active channel
git-svn-id: svn://svn.berlios.de/gpodder/trunk@705 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Add bug reporter for previous bug to list of contributors
* src/gpodder/gui.py: Add Jerry Moss to list of bug reporters
git-svn-id: svn://svn.berlios.de/gpodder/trunk@703 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Make sure we have a valid channel on which to call get_new_episodes()
* src/gpodder/gui.py: Refactor on_btnDownloadNewer_clicked into the
single calling code and remove the callback; this should really fix
the problem described in LP bug 217113
(Closes: https://bugs.launchpad.net/ubuntu/+source/gpodder/+bug/217113)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@702 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Maemo-related changes; allow custom player on Maemo (optional)
* data/gpodder.glade: gPodder maemo preferences window should be
modal; Add "Ask before closing gPodder" checkbox to Maemo preferences
* src/gpodder/config.py: Add option "maemo_allow_custom_player" that
allows setting the "player" and "videoplayer" variables to a command
that will be called, like on the Desktop version (instead of always
opening Nokia's Media Player with all files)
* src/gpodder/gui.py: Maemo-specific UI tweaks
* src/gpodder/libgpodder.py: Only call Nokia's Mediaplayer when we are
on Maemo and when "maemo_allow_custom_player" is set to False
git-svn-id: svn://svn.berlios.de/gpodder/trunk@701 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Change "Channel" to "Podcast"; new main menu; URL entry updated; +niceties
* data/gpodder.glade: Change "Channel" to "Podcast"; re-structure main
menu in gPodder window
* src/gpodder/config.py: Add "show_podcast_url_entry" configuration
option that controls whether the podcast url entry box is shown in the
main window or not; add observer functionality to the configuration
manager, so UI elements can "watch" the configuration manager for
changes of UI-related configuration options
* src/gpodder/console.py: Change "Channel" to "Podcast"
* src/gpodder/gui.py: Hildon-specific file open/save dialogs; default
"Enter podcast URL..." test for the URL entry box; size-dependent
showing and hiding of podcast icon and downloaded count pixmap also
for the Desktop version; change "Channel" to "Podcast"; offer
first-time users to see a list of example podcasts to subscribe to;
dynamic main menu; code supporting the main menu changes; add code for
sending the subscription list via e-mail; import from OPML file in
addition to import from OPML URL; remove unneeded callbacks (wishlist,
select all, ...); optionally set title and hide url entry in the
gPodderOpmlLister (OPML import GUI); Add Frank Harper to list of
contributors (initial reporter of bug #82)
* src/gpodder/libgpodder.py: Add "send_subscriptions" function that
sends the user's channels.opml file via E-Mail (using xdg-email);
rename "Channel" to "Podcast"
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=82)
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=103)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@700 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Updated Portuguese translation by João Trindade
* data/gpodder.desktop: Updated Portuguese translation
* data/po/pt.po: Updated Portuguese translation
* src/gpodder/gui.py: Add João Trindade to list of contributors
git-svn-id: svn://svn.berlios.de/gpodder/trunk@699 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Fix problems with resizing the treeview on Maemo
* src/gpodder/gui.py: Fix problems with treeview resizing and remove
printing the percentage
* bin/gpodder: We're in development again, so "+svn"
git-svn-id: svn://svn.berlios.de/gpodder/trunk@697 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Maemo-specific dialogs and UI improvements
* data/gpodder.glade: Maemo-specific "Add Podcast" dialog and
Maemo-specific, stripped-down "Preferences" dialog added
* src/gpodder/gui.py: Hide channel add UI from main window; make label
for update button even shorter; hide cover and pill cells in the
channel list if it gets too small; Maemo-specific dialogs for both
adding channels and editing preferences
git-svn-id: svn://svn.berlios.de/gpodder/trunk@691 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Maemo finger-friendly updates; minor UI changes
* data/gpodder.glade: Ellipsize the feed update progressbar in the
middle instead of the end (to show progress)
* src/gpodder/gui.py: Add support for finger-friendly widget (buttons,
scroll areas, popup menus, etc..); text is "Loading [...]" when
loading feed cache and "Updating [...]" when updating feeds; on Maemo,
don't set the tab title to the current episode title; hide the heading
in gPodderEpisodeSelector on Maemo (to save screen space); add
finger_friendly_widgets class attribute to several gPodder windows;
make the tabs in the main window a bit taller, but remove the border
around the main window to gain some space on the screen
git-svn-id: svn://svn.berlios.de/gpodder/trunk@690 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Merge patch from Junio C Hamano to fix problems with zero-length in feeds
* src/gpodder/gui.py: Update list of contributors/patch writers
* src/gpodder/services.py: Patch from Junio C Hamano to fix a problem
when a feed has zero length, which would otherwise result in a
divide-by-zero error
git-svn-id: svn://svn.berlios.de/gpodder/trunk@687 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Diverse changes, code clean-ups and other small annoyances
* src/gpodder/config.py: Make sure we can load a default set of
configuration options, even if we are in CLI mode
* src/gpodder/download.py: Don't display a traceback when logging a
cancelled download
* src/gpodder/gui.py: Add Doug Hellmann to contributors/coders list in
the about dialog (Doug Hellmann has done the feed cache code); do not
center the gPodderEpisode dialog on the treeAvailable widget (this
looks ugly ;)
* src/gpodder/libpodcasts.py: Clean up import statements; Make sure we
always have icon names, even in CLI mode; Remove "is_music_channel"
property of podcastChannel (not needed anymore);
git-svn-id: svn://svn.berlios.de/gpodder/trunk@684 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Logging traceback is enabled by default (needs to be disabled on demand)
* src/gpodder/*.py: Remove "traceback=True" from logging calls
* src/gpodder/liblogger.py: Always print a traceback if it's
available; if not, do not print it out; this can be disabled by
passing "traceback=False" to the log() function
* src/gpodder/sync.py: Also add "traceback=False" for optional imports
git-svn-id: svn://svn.berlios.de/gpodder/trunk@682 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Non-modal feed cache updates
* data/gpodder.glade: Feed cache update UI changes
* src/gpodder/gui.py: Fix problem with maemo window showing all
widgets on start; feed cache update changes; update list of
contributor (bug reporter for the cancel/skip button feature request
* src/gpodder/libpodcasts.py: Support cancelling a running feed cache
update by switching to offline mode when the cancel button is pressed
in load_channels(); idea by Paul Elliot, Pieter De Decker, Jürgen
Schinker and others, see the bug report page for more information
(Partly fixes: http://bugs.gpodder.org/show_bug.cgi?id=16)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@680 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Additional fields for the device remove episodes dialog; refactoring
* src/gpodder/gui.py: Add "Podcast" and "Released" columns to the
episode selector; hide all columns in our "delete from device" episode
selector that have all rows set to "None"; make the first text column
of the gPodderEpisodeSelector bigger, so the episode selector is
easier to read when there are many columns
* src/gpodder/libpodcasts.py: Use util.format_date() for
cute_pubdate() in podcastItem
* src/gpodder/sync.py: Document SyncTrack a bit better, add
needed/possible keyword arguments that are used in the UI; default
some values to None in case they are not provided; get "released" date
from iPod's iTunesDB and get podcast name from MP3 player's sync
folder (if this feature has been activated)
* src/gpodder/util.py: Add format_date() function that converts a Unix
timestamp to a good representation for a date (either Today,
Yesterday, a weekday or the locale's appropriate representation); the
code has been re-factored from podcastItem's cute_pubdate() function
in gpodder.libpodcasts and is now used from there
git-svn-id: svn://svn.berlios.de/gpodder/trunk@677 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Clean up preferences dialog + Move download settings to downloads tab
* data/gpodder.glade: UI-related changes to the preferences dialog
clean-up and the moving of the download settings to the downloads tab;
thanks to Paul Rudking for the download settings to downloads tab
patch
* src/gpodder/download.py: Better rate limiting, implemented by Paul
Rudkin
* src/gpodder/gui.py: UI-related changes to the preferences dialog
clean-up; the download settings changes are by Paul Rudkin
* src/gpodder/services.py: Improve the waiting/locking for the maximum
number of simultaneous downloads using a threading.Event
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=69)
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=83)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@673 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Merge patch from Jérôme Chabod to really pimp the tray icon tooltip :)
* src/gpodder/gui.py: Add some error reporting and change the code a
bit to support the new tooltips; thanks to Jérôme Chabod
* src/gpodder/trayicon.py: Add support for more elaborate tray icon
tooltips; patch by Jérôme Chabod
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=97)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@670 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Add bug reporter to list of contributors
* src/gpodder/gui.py: Bug #95 was reported by Tomas Matheson, so add
him to the list of contributors
git-svn-id: svn://svn.berlios.de/gpodder/trunk@669 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Merge patch from Jerome Chabod to fix Remove podcasts for MP3 players
* src/gpodder/gui.py: Add warning message when we can't find a needed
attribute; add "Philippe Gouaillier" to list of contributors (bug
reporter for this bug)
* src/gpodder/sync.py: Add playcount attribute to MP3 player sync code
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=96)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@667 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Correct "Close" and "Quit" behaviour
* data/gpodder.glade: Add a "Close" menu item to the podcasts menu and
rename the quit item to "Quit" (from "Close) to make the interface
more consistent and to support both Ctrl+W and Ctrl+Q
* src/gpodder/gui.py: Correct "Close" and "Quit" behaviour and make
Close be the "minimize to tray" function when the tray icon is
enabled; when not enabled, "Close" acts the same way as "Quit" (but is
left visible, so the Ctrl+W shortcut also works to close gPodder);
thanks to Harley Laue for the suggestion and initial patch
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=89)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@662 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Fix install Makefile bug; add donator; fix treeview header height
* Makefile: Add "generators" dependency for the "install" target
* src/gpodder/gui.py: Add Mark Alford (donator) to contributors list;
remove the hard-coded header height offset for the treeview, because
we don't need it anymore, because we hide the header (this is a good
thing, because we don't need to rely on a theme-specific header
height compared to what we did previously - one FIXME less :)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@655 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Initial upstream support for the Maemo platform (Nokia Internet Tablets)
* bin/gpodder: Add "--maemo/-m" option to enable running as a Maemo
application (this is only useful on Nokia Internet Tablets or in the
Maemo SDK environment); determine interface type and set the correct
variables on startup (gpodder.interface)
* data/gpodder.glade: Increase the default size of some widgets to
better fit the screens on Maemo (it won't do any harm on the "big"
Desktop screen
* data/icons/26/gpodder.png: Added
* data/icons/40/gpodder.png: Added
* data/maemo/gpodder.desktop: Added
* Makefile: Help2man variable; new "make mtest" target that runs
gPodder in Maemo scratchbox (probably useless for all other things);
update the command descriptions; don't run the "generators" target
from the "install" target; don't run "gen_graphics" from the
"generators" target, but make it depend on the 24-pixel logo, which
itself depends on the 22-pixel logo; this way, all should work out
well when trying to install on systems without ImageMagick installed;
remove *.pyo files on "make clean"
* setup.py: Support for build targets; use "TARGET=maemo" to enable
Maemo-specific installation options and files
* src/gpodder/config.py: Increase the WRITE_TO_DISK_TIMEOUT to 60
seconds, so we don't unnecessarily stress memory cards (on ITs);
modify default path variables on Maemo (/media/mmc2)
* src/gpodder/gui.py: Maemo-specific changes; clean-up the main window
a bit and make message and confirmation dialogs Hildon-compatible
* src/gpodder/__init__.py: Add enums for interface types: CLI, GUI and
MAEMO; remove the "interface_is_gui" variable and replace with
"interface", which is now used to determine where we are running
* src/gpodder/libgpodder.py: Use /media/mmc2/gpodder/ as configuration
folder on Maemo; use Nokia's Media player to playback files on Maemo
* src/gpodder/libpodcasts.py: Icon name changes (Maemo-specific)
* src/gpodder/trayicon.py: Maemo support; swap popup menu on Maemo;
Add support for hildon banners instead of pynotify on Maemo
* src/gpodder/util.py: Icon name changes (Maemo-specific); use new
gpodder.interface variable in idle_add
git-svn-id: svn://svn.berlios.de/gpodder/trunk@654 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Make the Quit buttons actually quit when using the tray icon
* src/gpodder/gui.py: Patch from Nick L. to make the function of all
"Quit" buttons really quit gPodder and only make the window's "X"
button act as "minimize to tray" button; Also, update the credits name
git-svn-id: svn://svn.berlios.de/gpodder/trunk@649 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Project management updates (authors, contributors and copyright)
* AUTHORS: Removed (was outdated); content now in gui.py (AboutDialog)
* bin/gpodder, data/po/Makefile, doc/dev/copyright_notice,
doc/dev/win32/setup-win32.py, INSTALL, Makefile, README,
setup.py: Updated Copyright and old website URL to include 2008, the
gPodder team and www.gpodder.org
* src/gpodder/*.py: Updated Copyright years
* src/gpodder/gui.py: Add list of contributors from AUTHORS file and
from the content on the website's news page (please mail me if I
forgot to mention you as a contributor, I surely have missed a few);
make the AboutDialog's application name "gPodder" (from gpodder) and
add an URL hook function to the AboutDialog, so the website is opened
in the user's default web browser
git-svn-id: svn://svn.berlios.de/gpodder/trunk@648 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Report errors in parsing/loading an already-added channel in the navigator
* src/gpodder/gui.py: Show the error from feedparser in the channel's
tooltip if there has been an error loading the channel
* src/gpodder/libpodcasts.py: Make sure we can load a default title
when using get_by_url(); save the parse_error variable for each
channel (it defaults to None if there is no error); mark the
description text for the channel navigator in red color if there has
been a parser error and add the parse_error variable to the liststore
model
* src/gpodder/util.py: Strip whitespace before and after the string in
remove_html_tags()
git-svn-id: svn://svn.berlios.de/gpodder/trunk@647 b0d088ad-0a06-0410-aad2-9ed5178a7e87
This is trunk, so set version to 0.11.1+svn
* bin/gpodder: Set version to 0.11.1+svn
Thu, 27 Mar 2008 12:57:56 +0100 <thp@perli.net>
gPodder 0.11.1 "Attacked by Killer Tomatoes" released
* bin/gpodder: gPodder 0.11.1 released :)
* README: gPodder 0.11.1 released :)
* doc/man/gpodder.1: gPodder 0.11.1 released :)
* data/icons/24/gpodder.png: Updated from the dataset
* data/messages.pot: Updated from source
* data/po/*.po: Updated from messages.pot
* data/po/de.po: Updated German translation
git-svn-id: svn://svn.berlios.de/gpodder/trunk@641 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Make bluetooth device discover a bit nicer
* src/gpodder/gui.py: Improve bluetooth device discovery button by not
destroying its design when it has been clicked and the label is
modified
git-svn-id: svn://svn.berlios.de/gpodder/trunk@632 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Add "Visit website" menu items to channel and episode list; simple chan menu
* src/gpodder/gui.py: Add "Visit website" menu items to the context
menu of both the episode list and the channel navigator; also, make
the channel context menu easier to use by replacing the old
"Edit [Channelname]" and "Remove [Channelname]" items with stock items
git-svn-id: svn://svn.berlios.de/gpodder/trunk@630 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Delay loading of UserAppsReader and improve libplayers
* src/gpodder/gui.py: Only load UserAppsReader's database three
seconds after gPodder start (because we only need it when the user
opens the preferences dialog, and if she opens it before these three
seconds, the UserAppsReader data is loaded on demand); because we load
the database (and generate the model) before we display the
preferences dialog, the preferences dialog usually comes up faster
than before (except for the situation where it is opened right after
gPodder startup); have only one UserAppsReader for audio/video and not
both (would duplicate the amount of work needed to read desktop
files); cleanup some UserAppsReader-related code in the prefs dialog
* src/gpodder/libplayers.py: Improve the reading code and make it
possible to support multiple mime types per-UserAppsReader (i.e. both
audio and video types are read by a single UAR instance); clean up the
imports for this module and do other related changes to make the code
nicer to read and understand
git-svn-id: svn://svn.berlios.de/gpodder/trunk@624 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Change the context menu of the episode list popup menu
* src/gpodder/gui.py: Simplify, re-structure and improve the context
menu of the episode list popup menu (right-click menu); thanks to hex
(justin.forest gmail.com) for suggesting this change and giving
valuable input on gpodder-devel
git-svn-id: svn://svn.berlios.de/gpodder/trunk@615 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Various Bluetooth-related fixes
* data/gpodder.glade: Use the "bluetooth" icon instead of the (old?)
"stock_bluetooth" icon; in Gnome 2.22, the "bluetooth" icon is nicer,
i.e. more Tango-ish than the "stock_bluetooth" icon
* src/gpodder/gui.py: Fix a logging error; Only show "Send to [...]
via bluetooth"/"Send to bluetooth device" when we have already
downloaded the episodes (won't obviously work otherwise..)
* src/gpodder/util.py: Fix bluetooth_send_file to work with both
bluetooth-sendto and gnome-obex-send (different command line argument
format for both)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@613 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Add option to write gtkpod extended database on sync
* data/gpodder.glade: Add a check box for the new config option
* src/gpodder/config.py: Add ipod_write_gtkpod_extended boolean
configuration variable that controls if we want to write iTunesDB.ext
after synchronization (defaults to False)
* src/gpodder/gui.py: Glue code for UI<->Config manager
* src/gpodder/sync.py: Use libgpod's "gtkpod" module to write the
extended gtkpod database (iTunesDB.ext) to the iPod after sync - this
has to be enabled via an option
git-svn-id: svn://svn.berlios.de/gpodder/trunk@608 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Fix problem with old PyGTK versions when importing gpodder.trayicon
* src/gpodder/gui.py: Apply patch from Bill Barnard
<bill@barnard-engineering.com>, based on a patch from Jérôme Chabod
<jerome.chabod@ifrance.com> that makes sure we can import the tray
icon module. If not, we disable the tray icon functionality
git-svn-id: svn://svn.berlios.de/gpodder/trunk@607 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Add support for creating M3U playlist files in download folders
* src/gpodder/config.py: Add "create_m3u_playlists" boolean
configuration option (default False) that controls if we want to
generate per-channel M3U playlists in our download folders
* src/gpodder/gui.py: Add context menu entry for manually updating an
M3U playlist for the channel navigator (only visible when updating m3u
playlists is enabled
* src/gpodder/libpodcasts.py: Add update_m3u_playlist() function to
podcastChannel and call it when removing and adding downloaded
episodes
* src/gpodder/util.py: Add sanitize_filename() function that tries to
encode a file name in the system's encoding, stripping all chars that
are invalid on FAT32 and other systems (e.g. slash, etc..)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@606 b0d088ad-0a06-0410-aad2-9ed5178a7e87