Commit Graph

236 Commits

Author SHA1 Message Date
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
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 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 0aec290ec2 Fri, 13 Jun 2008 16:08:16 +0200 <thp@perli.net>
Merge patch to add experimental support for "normal" file naming

	* src/gpodder/config.py: New option "experimental_file_naming" that
	defaults to False and enables the new (but experimental!) normal file
	naming mode in which the downloaded podcast episodes get their name
	not from the md5sum of the download URL, but from the basename of the
	download URL, which makes filenames more human-readable
	* src/gpodder/libpodcasts.py: Change local_filename() in podcastItem
	to decide if we use md5sums or the "new" file naming mode for creating
	the local file name of an episode
	* src/gpodder/sync.py: Change usage of the "encoding" detection in
	gpodder.util (from detect_os_encoding() to simply encoding)
	* src/gpodder/util.py: Only detect the filename encoding once (at
	program start) and then make it accessible via a global "encoding"
	variable in the gpodder.util module; add improvements to
	file_extension_from_url() to be able to return the complete filename
	and to support more creative URL schemes as implemented by podcast
	feed authors (this hopefully makes more feeds work in a proper way)
	(Closes: http://bugs.gpodder.org/show_bug.cgi?id=57)

Add line to the previous ChangeLog entry (which I forgot initially):
	(Closes: http://bugs.gpodder.org/show_bug.cgi?id=124)


git-svn-id: svn://svn.berlios.de/gpodder/trunk@736 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-06-13 14:13:27 +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 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 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 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 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 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 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 3b95b15e69 Sat, 29 Mar 2008 16:18:59 +0100 <thp@perli.net>
Add support for Rockbox' AudioScrobbler logfile to update played status

	* src/gpodder/config.py: Add "mp3_player_use_scrobbler_log"
	configuration option (defaulting to False) which controls if we are
	going to try and find a ".scrobbler.log" file that contains
	information on which tracks have been played; for this to work, you
	also have to enable the "Updated tags after download" option
	* src/gpodder/sync.py: Support for finding the .scrobbler.log file and
	updating the played status of episodes in the MP3 player sync code
	* src/gpodder/util.py: Add "find_mount_point()" function that tries to
	determine the mount point on which the given directory (or file) lies
	and returns the mount point or "/" if the directory/file resides on
	the root filesystem.

	This whole patch has been contributed by Nick <nikosapi.org> - thanks!



git-svn-id: svn://svn.berlios.de/gpodder/trunk@646 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-03-29 15:22:01 +00:00
Thomas Perl 29080e618b Thu, 20 Mar 2008 11:18:51 +0100 <thp@perli.net>
Add option to limit the maximum number of episodes per feed

	* src/gpodder/config.py: Add "max_episodes_per_feed" configuration
	option (int, defaults to 200) that determines the maximum number of
	episodes that are parsed per channel/feed; if there are more episodes,
	they are ignored. This value can be adjusted via the extended
	configuration editor if you need more episodes
	* src/gpodder/libpodcasts.py: Add support for the
	max_episodes_per_feed configuration option above



git-svn-id: svn://svn.berlios.de/gpodder/trunk@623 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-03-20 10:20:41 +00:00
Thomas Perl e2f948446f Thu, 20 Mar 2008 10:04:14 +0100 <thp@perli.net>
Filter "None" filenames from GtkFileChooser widgets

	* src/gpodder/config.py: Make sure we don't receive a "None" filename
	from GtkFileChooser widgets when connecting to the config manager



git-svn-id: svn://svn.berlios.de/gpodder/trunk@616 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-03-20 09:05:06 +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 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 86932de8fd Python code fixup: Compare "None" with "is" instead of "=="
git-svn-id: svn://svn.berlios.de/gpodder/trunk@591 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-02-26 15:49:59 +00:00
Thomas Perl 340f4da96f Hello, new "expert" configuration editor (about:config-like)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@567 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-02-07 21:19:03 +00:00
Thomas Perl 108ff7a5af Usability GUI update (after Rafael Proença's proposal)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@561 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-02-06 09:29:56 +00:00
Thomas Perl b33eee3f66 Apply patchset from Jérôme Chabod to fix tray icon behaviour
git-svn-id: svn://svn.berlios.de/gpodder/trunk@560 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-02-04 10:29:41 +00:00
Thomas Perl a445089fc7 Add support for sending files via Bluetooth
git-svn-id: svn://svn.berlios.de/gpodder/trunk@536 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-01-21 09:52:09 +00:00
Thomas Perl d6807c3a92 Support for different audio/video player selection
git-svn-id: svn://svn.berlios.de/gpodder/trunk@535 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-01-21 08:57:03 +00:00
Thomas Perl 4a25d955e6 Modularize calls to gobject.idle_add (for non-GTK support)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@521 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-01-15 13:54:22 +00:00
Thomas Perl 7df2043422 Merge tray icon and notification patch by Jérôme Chabod
git-svn-id: svn://svn.berlios.de/gpodder/trunk@512 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-01-09 22:46:17 +00:00
Thomas Perl aa264b2139 Merge "delete episode after sync" patch from Jérôme Chabod
git-svn-id: svn://svn.berlios.de/gpodder/trunk@501 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-12-18 09:18:33 +00:00
Thomas Perl 35d359e210 Configuration for "old" episodes; automatically remove old episodes
git-svn-id: svn://svn.berlios.de/gpodder/trunk@490 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-12-12 19:57:50 +00:00
Thomas Perl 8ba93845be Selective iPod episode clean-up; "delete older than X days"
git-svn-id: svn://svn.berlios.de/gpodder/trunk@486 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-12-10 08:41:17 +00:00
Thomas Perl a6240451a3 Fix pre-setting code for filechooser buttons; Patch by Paul Rudkin
git-svn-id: svn://svn.berlios.de/gpodder/trunk@484 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-12-09 12:22:50 +00:00
Thomas Perl 6ef1e9e689 Add option to mark episodes as played after transfer to device
git-svn-id: svn://svn.berlios.de/gpodder/trunk@477 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-12-03 20:26:18 +00:00
Thomas Perl c6523202e1 Ignore initial window events from GtkWindow in Config
git-svn-id: svn://svn.berlios.de/gpodder/trunk@463 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-11-14 18:19:03 +00:00
Thomas Perl 22c8f31092 Support syncing to FS-based MP3 players without subfolders
git-svn-id: svn://svn.berlios.de/gpodder/trunk@456 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-11-08 11:12:06 +00:00
Thomas Perl 56cf6e476f Process events before connecting Config to gtk windows
git-svn-id: svn://svn.berlios.de/gpodder/trunk@454 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-11-06 11:41:07 +00:00
Thomas Perl 9343da2eb0 Fix format_filesize() function to be standards-conformant (unit prefixes)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@448 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-11-03 13:18:59 +00:00
Thomas Perl ac149c7b7a New Configuration/Settings Manager; massive code clean-ups
git-svn-id: svn://svn.berlios.de/gpodder/trunk@447 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-11-02 16:37:14 +00:00