* A torrent file contains an uncommon field 'filehash' which must be hex encoded
to allow dumping the torrent info to json. Otherwise it will fail with:
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe5 in position 0: invalid continuation byte
* Copy-pasting from web page can include extra space at end of string.
* Also make minor change to populate the magnet name with infohash
for nicer UI display.
* Ensure all file descriptors are closed. Using the with statement ensures
closure and adding 'from __future__ ...' for Python 2.5 compatibility.
* The main problem was with thousands of unclosed file desciptors from
tracker_icons mkstemp.
* Use a prefix 'deluge_ticon.' to identify created tracker_icon tmp files.
When installed to the system, not using .app, error is raised on startup
as nsapp_open_file is ignoring Deluge-bin but not deluge or deluge-gtk for
potential 'filename' when connecting NSApplicationOpenFile.
- Any plugins that were started before the WebUI plugin would not be loaded
upon starting the web server and would be not show up. The fix is to use
web.pluginmanager.start to get all enabled plugins from core.
- Update log message output for enable/disable in pluginmanager.
- Deregister plugin events on json_api disable.
Due to the nature of passing a command and args to cmd.exe and then
to a batch file in Windows any ampersands in execute args need to be
double-escaped so prefixing with tripe-caret (^^^&) is the fix for this.
* The main fix here is adding os.environ to the command call otherwise in some configurations
the extraction would fail. Was unable to reproduce locally but users confirm this fix works.
* Refactored the code to properly report errors if the extract command fails and the
actual command output.
* Bump version to 0.5.
- Reduced height from 575px to 480px
- Low resolution screen users (600px high) will be unable to click
the add button with a dialog height of >550px. Keeping the height
to less than 500px leaves more room for large size themes.
By design alert.msg will be empty if the error code is '-1' so use
a.e.message() to get the message as fallback. It was not used at
replacement because when error code is not '-1' then a.e.message()
will also include the error code, which we do not want.