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 "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
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 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
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
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
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
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
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
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
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
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
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
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
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
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