Commit graph

232 commits

Author SHA1 Message Date
Thomas Perl
cd2771928d Clean up gui.py (download, playback and transfer button handling)
Cleanup and simplify the on_treeAvailable_row_activated handler
and make sure we have simpler code paths that are easier to maintain.
2008-08-05 14:56:58 +02:00
Thomas Perl
d000a1f2db Use "Open" instead of "Play" for non-media episodes (bug 18)
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
2008-08-04 23:26:51 +02:00
Thomas Perl
961ddf2ddd Integrate Google Video search as feed source (bug 11)
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.
2008-08-04 16:54:18 +02:00
Thomas Perl
d1a6416527 Episode descriptions in episode selector dialog (bug 127)
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
2008-08-04 15:34:29 +02:00
Thomas Perl
bc44648b84 Show total download speed in titlebar (bug 139)
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
2008-08-04 14:17:01 +02:00
Thomas Perl
9ddb9ccc6d Don't update OPML status label; context menu for episode selector
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.
2008-08-04 12:16:44 +02:00
Thomas Perl
c70be5e355 Note that this is the 0.13.x development branch (0.12.9)
This branch is going to be 0.13.0 when we are finished
with the stabilization series of 0.12.x.
2008-08-03 22:24:41 +02:00
Nick
6c0221b263 Fix problem for download cancelling when deleting channels
Merge some minor fixes (indentation in services.py and use
episode.url instead of episode.link in gui.py) from the 0.12.2
release branch.
2008-08-03 21:52:13 +02:00
Thomas Perl
04796f3648 Mon, 28 Jul 2008 10:48:33 +0200 <thp@perli.net>
Fix typo in logging call

	* src/gpodder/gui.py: It's "traceback" not "backtrace" for logging



git-svn-id: svn://svn.berlios.de/gpodder/trunk@791 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-07-28 08:50:03 +00:00
Nick
645da96c8b Tue, 22 Jul 2008 15:01:42 -0400 <me@nikosapi.org>
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
2008-07-22 19:09:48 +00:00
Jérôme Chabod
b3c269f2bd Sun, 20 Jul 2008 10:42:22 +0200 <jerome.chabod@ifrance.com>
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
2008-07-20 08:51:43 +00:00
Nick
212ffd3cd4 Sat, 19 Jul 2008 22:42:42 -0400 <me@nikosapi.org>
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
2008-07-20 02:55:30 +00:00
Nick
c1b6be9e24 Sat, 19 Jul 2008 20:57:08 -0400 <me@nikosapi.org>
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
2008-07-20 01:30:47 +00:00
Nick
bc4b5cb15d Sat, 19 Jul 2008 20:37:10 -0400 <me@nikosapi.org>
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
2008-07-20 00:46:49 +00:00
Thomas Perl
ceb2e226c7 Tue, 15 Jul 2008 09:54:57 +0200 <thp@perli.net>
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
2008-07-15 07:56:40 +00:00
Nick
ee18e3bb02 Mon, 14 Jul 2008 12:21:37 -0400 <me@nikosapi.org>
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
2008-07-14 16:28:34 +00:00
Jérôme Chabod
53c88089b8 Sat, 12 Jul 2008 14:12:11 +0200 <jerome.chabod@ifrance.com>
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
2008-07-12 12:18:07 +00:00
Nick
61d09e52e5 Fri, 11 Jul 2008 14:11:08 -0400 <me@nikosapi.org>
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
2008-07-11 18:17:48 +00:00
Nick
b63a79a62a Fri, 11 Jul 2008 13:09:55 -0400 <me@nikosapi.org>
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
2008-07-11 17:13:04 +00:00
Thomas Perl
ce7aff70de Thu, 10 Jul 2008 23:54:57 +0200 <thp@perli.net>
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
2008-07-10 21:55:13 +00:00
Thomas Perl
c4c346c930 Wed, 09 Jul 2008 12:19:26 +0200 <thp@perli.net>
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
2008-07-09 10:21:49 +00:00
Nick
faaac2ce63 Tue, 08 Jul 2008 21:25:24 -0400 <me@nikosapi.org>
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
2008-07-09 01:43:01 +00:00
Nick
a42d4ee087 Tue, 08 Jul 2008 21:10:48 -0400 <me@nikosapi.org>
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
2008-07-09 01:19:14 +00:00
Thomas Perl
fbcbc9fbdd Sun, 06 Jul 2008 23:11:33 +0200 <thp@perli.net>
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
2008-07-06 21:11:55 +00:00
Nick
6d252bf571 Fri, 04 Jul 2008 13:25:12 -0400 <me@nikosapi.org>
* src/gpodder/gui.py: fix traceback when deleting episodes from device



git-svn-id: svn://svn.berlios.de/gpodder/trunk@756 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-07-04 17:27:26 +00:00
Nick
9eb1ade8f5 Thu, 03 Jul 2008 20:09:18 -0400 <me@nikosapi.org>
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
2008-07-04 00:30:28 +00:00
Thomas Perl
9f03a48832 Thu, 03 Jul 2008 20:26:50 +0200 <thp@perli.net>
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
2008-07-03 18:27:13 +00:00
Nick
d4ea5b78b2 Tue, 01 Jul 2008 22:46:52 -0400 <me@nikosapi.org>
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
2008-07-02 23:36:39 +00:00
Thomas Perl
2560aac326 Mon, 30 Jun 2008 17:39:36 +0200 <thp@perli.net>
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
2008-06-30 15:40:48 +00:00
Nick
a86b127309 Sun, 29 Jun 2008 16:59:30 -0400 <me@nikosapi.org>
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
2008-06-30 01:10:18 +00:00
Thomas Perl
ffa944ae2d Thu, 19 Jun 2008 10:50:11 +0200 <thp@perli.net>
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
2008-06-19 08:51:37 +00:00
Thomas Perl
93d3186bb6 Thu, 19 Jun 2008 09:46:38 +0200 <thp@perli.net>
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
2008-06-19 07:47:03 +00:00
Thomas Perl
72abb0c3bb Thu, 19 Jun 2008 09:30:53 +0200 <thp@perli.net>
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
2008-06-19 07:31:58 +00:00
Nick
95fbbaabca Tue, 17 Jun 2008 19:41:33 -0400 <me@nikosapi.org>
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
2008-06-17 23:49:47 +00:00
Thomas Perl
2f3071d2cf Tue, 17 Jun 2008 14:49:12 +0200 <thp@perli.net>
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
2008-06-17 12:50:27 +00:00
Thomas Perl
5f02de291e Sun, 15 Jun 2008 14:44:29 +0200 <thp@perli.net>
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
2008-06-15 12:46:34 +00:00
Thomas Perl
c1bf2ceaf2 Sun, 15 Jun 2008 14:23:40 +0200 <thp@perli.net>
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
2008-06-15 12:28:24 +00:00
Thomas Perl
5b137db2cb Sat, 14 Jun 2008 18:50:29 +0200 <thp@perli.net>
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
2008-06-14 16:53:16 +00:00
Thomas Perl
1174dd057c Sat, 14 Jun 2008 15:56:53 +0200 <thp@perli.net>
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
2008-06-14 13:57:34 +00:00
Thomas Perl
02192cc97a Sat, 14 Jun 2008 15:16:09 +0200 <thp@perli.net>
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
2008-06-14 13:17:55 +00:00
Thomas Perl
d3533acc1f Fri, 13 Jun 2008 21:32:57 +0200 <thp@perli.net>
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
2008-06-14 11:43:53 +00:00
Thomas Perl
ed11f1eef9 Fri, 13 Jun 2008 14:27:30 +0200 <thp@perli.net>
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
2008-06-13 12:30:42 +00:00
Thomas Perl
905014fc1b Fri, 13 Jun 2008 09:37:45 +0200 <thp@perli.net>
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
2008-06-13 07:41:36 +00:00
Thomas Perl
d5aba0355e Sun, 08 Jun 2008 20:08:58 +0200 <thp@perli.net>
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
2008-06-08 18:10:09 +00:00
Thomas Perl
64f48e95e8 Thu, 05 Jun 2008 18:16:05 +0200 <thp@perli.net>
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
2008-06-05 16:17:09 +00:00
Thomas Perl
a87a5ba7d2 Thu, 05 Jun 2008 18:10:11 +0200 <thp@perli.net>
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
2008-06-05 16:11:25 +00:00
Thomas Perl
523d476127 Sun, 25 May 2008 17:17:10 +0200 <thp@perli.net>
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
2008-05-25 15:17:48 +00:00
Thomas Perl
562fb4f2aa Sun, 25 May 2008 17:10:36 +0200 <thp@perli.net>
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
2008-05-25 15:11:49 +00:00
Thomas Perl
d004bdaf21 Fri, 16 May 2008 10:02:23 +0200 <thp@perli.net>
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
2008-05-16 08:03:13 +00:00
Thomas Perl
bb4f2f11c5 Wed, 14 May 2008 15:34:25 +0200 <thp@perli.net>
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
2008-05-14 13:38:06 +00:00
Thomas Perl
40aa357a50 Mon, 12 May 2008 11:38:55 +0200 <thp@perli.net>
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
2008-05-12 09:40:55 +00:00
Thomas Perl
dd2300e727 Mon, 12 May 2008 11:26:43 +0200 <thp@perli.net>
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
2008-05-12 09:29:05 +00:00
Thomas Perl
9ba9d6bbbd Mon, 12 May 2008 11:04:53 +0200 <thp@perli.net>
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
2008-05-12 09:07:05 +00:00
Thomas Perl
9c8978d5a6 Sat, 10 May 2008 16:45:36 +0200 <thp@perli.net>
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
2008-05-10 14:47:29 +00:00
Thomas Perl
6afb9bd97f Sat, 10 May 2008 13:38:34 +0200 <thp@perli.net>
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
2008-05-10 11:43:43 +00:00
Thomas Perl
05308b2e2f Sat, 10 May 2008 13:33:49 +0200 <thp@perli.net>
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
2008-05-10 11:35:06 +00:00
Thomas Perl
b768ba7122 Sat, 10 May 2008 13:24:19 +0200 <thp@perli.net>
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
2008-05-10 11:24:58 +00:00
Thomas Perl
b2a409cdbb Mon, 05 May 2008 15:55:02 +0200 <thp@perli.net>
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
2008-05-05 13:55:27 +00:00
Thomas Perl
271829ceb0 Mon, 05 May 2008 15:52:49 +0200 <thp@perli.net>
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
2008-05-05 13:54:23 +00:00
Thomas Perl
51af42fd25 Fri, 02 May 2008 17:42:54 +0200 <thp@perli.net>
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
2008-05-02 15:45:45 +00:00
Thomas Perl
40cef59a49 Fri, 02 May 2008 17:28:22 +0200 <thp@perli.net>
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
2008-05-02 15:36:43 +00:00
Thomas Perl
42a3b5be44 Fri, 02 May 2008 15:52:31 +0200 <thp@perli.net>
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
2008-05-02 13:53:23 +00:00
Thomas Perl
e94647da6b Tue, 29 Apr 2008 20:21:45 +0200 <thp@perli.net>
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
2008-04-29 18:22:55 +00:00
Thomas Perl
5a743b6845 Thu, 24 Apr 2008 19:40:55 +0200 <thp@perli.net>
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
2008-04-24 17:42:57 +00:00
Thomas Perl
ed5bf9eab1 Thu, 24 Apr 2008 18:19:02 +0200 <thp@perli.net>
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
2008-04-24 16:28:39 +00:00
Thomas Perl
4e137b290e Wed, 23 Apr 2008 22:31:42 +0200 <thp@perli.net>
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
2008-04-23 20:33:27 +00:00
Thomas Perl
d63f123e36 Revert traceback-related changes from r682
git-svn-id: svn://svn.berlios.de/gpodder/trunk@686 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-04-22 20:24:19 +00:00
Thomas Perl
e3b4d2176e Tue, 22 Apr 2008 21:54:01 +0200 <thp@perli.net>
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
2008-04-22 19:57:02 +00:00
Thomas Perl
18df6b386c Tue, 22 Apr 2008 21:15:40 +0200 <thp@perli.net>
Python code fixup: Compare "None" with "is not" instead of "!="

	* src/gpodder/config.py: "!= None" => "is not None"
	* src/gpodder/download.py: "!= None" => "is not None"
	* src/gpodder/gui.py: "!= None" => "is not None"
	* src/gpodder/libconverter.py: "!= None" => "is not None"
	* src/gpodder/libgpodder.py: "!= None" => "is not None"
	* src/gpodder/libpodcasts.py: "!= None" => "is not None"
	* src/gpodder/services.py: "!= None" => "is not None"
	* src/gpodder/util.py: "!= None" => "is not None"



git-svn-id: svn://svn.berlios.de/gpodder/trunk@683 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-04-22 19:16:30 +00:00
Thomas Perl
bba4db9632 Tue, 22 Apr 2008 21:07:28 +0200 <thp@perli.net>
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
2008-04-22 19:08:54 +00:00
Thomas Perl
ebf58e9aa6 Tue, 22 Apr 2008 20:30:28 +0200 <thp@perli.net>
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
2008-04-22 18:34:41 +00:00
Thomas Perl
0abbea437c Sat, 19 Apr 2008 18:46:30 +0200 <thp@perli.net>
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
2008-04-19 17:01:09 +00:00
Thomas Perl
d3d7adf099 Thu, 17 Apr 2008 17:42:31 +0200 <thp@perli.net>
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
2008-04-17 15:45:29 +00:00
Thomas Perl
de151c8cca Tue, 15 Apr 2008 20:57:51 +0200 <thp@perli.net>
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
2008-04-15 18:59:22 +00:00
Thomas Perl
bc821d51e3 Mon, 14 Apr 2008 13:51:23 +0200 <thp@perli.net>
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
2008-04-13 06:14:01 +00:00
Thomas Perl
7fb4f324f5 Mon, 14 Apr 2008 13:40:32 +0200 <thp@perli.net>
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
2008-04-13 06:04:51 +00:00
Thomas Perl
042a869fd4 Fri, 11 Apr 2008 10:26:50 +0200 <thp@perli.net>
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
2008-04-11 08:29:13 +00:00
Thomas Perl
99f83161cb Sun, 06 Apr 2008 17:22:11 +0200 <thp@perli.net>
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
2008-04-06 15:25:17 +00:00
Thomas Perl
afe3df8384 Sun, 06 Apr 2008 02:05:34 +0200 <thp@perli.net>
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
2008-04-06 00:19:03 +00:00
Thomas Perl
56bc9e9813 Sun, 30 Mar 2008 10:48:41 +0200 <thp@perli.net>
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
2008-03-30 08:50:34 +00:00
Thomas Perl
3ccbb80a2c Sat, 29 Mar 2008 17:13:26 +0100 <thp@perli.net>
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
2008-03-29 16:16:55 +00:00
Thomas Perl
452c5d396d Sat, 29 Mar 2008 16:30:02 +0100 <thp@perli.net>
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
2008-03-29 15:33:18 +00:00
Thomas Perl
d7efd48c9d Thu, 27 Mar 2008 13:10:58 +0100 <thp@perli.net>
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
2008-03-27 12:11:33 +00:00
Thomas Perl
e223c1d9fe Sat, 22 Mar 2008 21:08:06 +0100 <thp@perli.net>
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
2008-03-22 20:08:54 +00:00
Thomas Perl
3aee5a17f7 Sat, 22 Mar 2008 20:41:54 +0100 <thp@perli.net>
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
2008-03-22 19:43:20 +00:00
Thomas Perl
fb1d702a74 Thu, 20 Mar 2008 11:21:06 +0100 <thp@perli.net>
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
2008-03-20 10:24:26 +00:00
Thomas Perl
866675bc75 Wed, 19 Mar 2008 18:06:58 +0100 <thp@perli.net>
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
2008-03-19 17:07:59 +00:00
Thomas Perl
b76cd01606 Wed, 19 Mar 2008 15:02:10 +0100 <thp@perli.net>
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
2008-03-19 14:43:22 +00:00
Thomas Perl
dde58b480e Tue, 11 Mar 2008 18:53:25 +0100 <thp@perli.net>
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
2008-03-11 17:55:53 +00:00
Thomas Perl
d6b38e3886 Tue, 11 Mar 2008 18:44:19 +0100 <thp@perli.net>
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
2008-03-11 17:45:52 +00:00
Thomas Perl
b794edfba6 Mon, 10 Mar 2008 16:37:38 +0100 <thp@perli.net>
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
2008-03-10 15:50:12 +00:00
Thomas Perl
5c7bd2ed7f Fix KeyError bug in custom_selection_button_clicked (from LP)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@604 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-03-04 11:17:29 +00:00
Thomas Perl
baabe0e81c Fix AttributeError bug in updateTreeView (from LP)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@603 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-03-04 11:06:55 +00:00
Thomas Perl
bd358898be Add support for changing the URL of a subscribed channel (bug #42)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@602 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-03-03 22:09:34 +00:00
Thomas Perl
f438155be7 Small fix for moving downloads progress bar
git-svn-id: svn://svn.berlios.de/gpodder/trunk@601 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-03-03 20:15:36 +00:00
Thomas Perl
beefebdcb8 Add "Go to website" buttons to episode and channel (bug #43)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@600 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-03-03 19:54:42 +00:00
Thomas Perl
3c3e5e88f2 Move webbrowser code to util.open_website; fix URLs to gpodder.org
git-svn-id: svn://svn.berlios.de/gpodder/trunk@599 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-03-03 19:38:22 +00:00
Thomas Perl
cd1266a8aa Make "gl" a global-accessible object in libgpodder
git-svn-id: svn://svn.berlios.de/gpodder/trunk@598 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-03-02 13:22:29 +00:00
Thomas Perl
410e3d0ae6 Move gPodderLib().open_folder to util.gui_open
git-svn-id: svn://svn.berlios.de/gpodder/trunk@597 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-03-02 13:04:37 +00:00
Thomas Perl
6aab1c3d73 Notify user about no new episodes when updating from tray icon
git-svn-id: svn://svn.berlios.de/gpodder/trunk@595 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-02-27 09:46:32 +00:00