Enough callers will blow up if this is the case and it has been shown to happen. Additionally, there would not be much useful a caller could do with the `None` value.
Shows "Please Select an episode" when shownotes shown and refreshing
channels without new episodes.
Shows downloaded and new count after channel name
Shows download progress before episodes
WebKit1 for Gtk2 support is deprecated in Debian, we may want
to re-introduce WebKit(2) support once we have ported gPodder
to Gtk3 and its GObject Introspection-based Python bindings.
See also: https://bugs.debian.org/790218
Changed sync code to check needed pace against available space and raise
error if there is not enough room for the track. This causes the track
to be listed in the failed_sync list. I could not get it to be in the
failed_sync list without raising an exception. Added a new sync failed
exception.
Also changed the main gtkui code to not include the failed_sync tracks
in the list of tracks to perform post-sync processing on. This prevents
tracks that were not copied from being marked as played.
This adds auto-discovery of the channel ID and new-style feed for old-style
(username-based) feed URLs when the V3 API key is available, and also adds an
extra menu item for migrating subscriptions.
The 'Episode details', or shownotes, could be displayed but not
hidden. Further, the menu item and the context sensitive menu gave
inconsistent behavior when multiple episodes were selected. And
I've removed the 'Episode details' context sensitive menu from the
'Progress' notebook page since this displays the shownotes on the
hidden 'Podcasts' notebook page.
steps to reproduce:
0) have update setting on "download immediately"
1) when a new episode starts downloading
2) pause and then resume the download
3) manually update the podcast
result: a duplicate download task gets added/queued, can lead to corrupt
downloads.
there are other circumstances that can trigger the bug, but this one is
simplest/most reliable to reproduce.
while i can't claim to understand all of the download-handling code,
this seems (more) correct, and fixes the problem.
note: if the code looks confusing, the git diff patch just came out
weird -- compare the "before" and "after" files manually..
When all downloads/syncs are finished, gPodder displays a summary of
downloaded episodes, having cut the titles if they are too long.
However, Russian descriptions are regular, non-unicode python strings,
and gPodder may cut only a part of a multi-byte UTF-8 sequence. It
causes an exception like this:
UnicodeDecodeError: 'utf8' codec can't decode byte 0xbe in position 51:
invalid start byte
This patch fixes that by converting the title to a unicode string if
it's not unicode.
This bug is similar to bug 1825, commit
e1ce9b0551.
In src/gpodder/gtkui/main.py: Use "callback is None"
instead of "callback==None", and also make the function
signature nicer (spacing, newline).
Remove trailing whitespace in all files affected by the
latest device sync patch:
git show HEAD | diffstat -l | xargs sed -i 's/\s\+$//g'
Context menues from extensions were grouped by string parsing.
If "/" is in the string the string before the seperator is used as
root menu entry and the string after the seperator is used as
sub-menu entry
- Add category metadata in every extension
- Show this category in the extension list gui
- Add "mandatory_in" and "disable-in" configuration for an extension
- Add Ubuntu unity check to enable/disable unity specific extensions
- Move "gpodder.win32" and "gpodder.osx" setting to the "gpodder.ui" namespace to be able to use it in the extensions category settings
- Only show metadata information in the right-click dialog of an extension
1) Redid the youtube video format list (added fallbacks for each quality
setting) and added a new config key youtube.preferred_format_ids, that
accepts a list of supported quality ids.
2) Added a GUI setting switcher that lets a user pick between predefined
video quality settings and respects the 'custom' setting. 'Custom'
should currently only be used if the user prefers 3D formats or 3GP.
All other variants are in the normal settings with sane fallbacks.
Existing users will not feel any change (current fmt=18 default is
respected). Only the default fallback for get_real_download_url() was
changed (to 720p), but that will never be called unless the user clears
her youtube.preferred_fmt_id variable.
Detect network connections on Linux (still need to find a way to
implement it for Windows and OS X - on these platforms, this
implementation acts as if the connection is always available).
We might need to use this in more places in the code, but for starters
this should work nicely.
The Linux implementation assumes the "ip" command is available.
After a year of basically no work towards Maemo 5 support,
I consider gPodder 3-on-Maemo 5 something that we won't ever
do, so the remaining codes goes. This also cleans up some
dead code in the Gtk UI that's been sitting there.
If anybody wants to step up and do something about that, be
my guest. If anything, I'd assume that if anything on the N900,
gPodder 3-on-Nemo Mobilemight be feasible, and in that case, it
should be "just like Harmattan" in most ways.
Move download resuming code from Gtk UI module to
gpodder.common (new module) and use it from the QML UI
for a simple "Resume downloads" dialog at startup.
Add an extension callback for reacting to a user activating the context
menu on a channel. Allows the extension developer to add menu items to
the channel context menu if desired.
The check can be carried out on Linux and OS X
as well, but it's mainly targetted at Windows
users, as Linux users will usually get updates
via package repositories. Only for the Gtk UI.
By default, the check is only enabled on Windows
and can be disabled manually via the config editor.
The ui.gtk.live_search_delay configuration variable
sets the delay in milliseconds after typing stops
for the live search to take place. Set this to a
higher value on low-powered machines to avoid hangs
while the search takes place.
You can set this variable to 0 on normal machines to
get instant search results as you type.
This is still not perfect (has to launch as new process),
but it works for the normal use case as an extension.
Also added support for localized metadata in extensions.
Move manager to preferences dialog.
Make the manager listen on config changes to enable
and disable extensions/containers on the fly.
Move the "enabled" flag into the container as an
attribute (+ add set_enabled() method for loading).
This makes it easier to move it out of the Gtk
UI code later on and in a more generic module.
This will be required for gPodder bug 1445 in
the CLI module, so this is a preparing refactor.
When the feed is redirected, we usually simply rewrite
the URL. However, if the new URL already exists in the
subscriptions, we must not allow this, and ideally
fail to update the feed to avoid duplicates.
This right now only syncs actions when an account is
already configured. The configuration UI will come only
on the Harmattan QML UI (it has Qt Quick Components).
The gPodderWelcome Python object was deleted and/or collected
after it fell out of scope, while the Gtk dialog was still
displayed. Work around this by running a separate main loop
for the dialog, so that the Python object stays alive longer.
This bug has been haunting us for quite some time now, and it
seems like the object hasn't always been collected, making it
harder to track down the bug. But rejoice, we finally fixed it!
Conflicts:
src/gpodder/gtkui/desktop/welcome.py
src/gpodder/gtkui/main.py
Instead of initializing woodchuck explicitly, let the
hooks module know then the UI has been initialized,
and provide some callbacks (that Woodchuck needs, but
which could be used by other hook scripts) and the model.