From 14ee13bdd4e9b1e3a10186ef4cc65dc707848331 Mon Sep 17 00:00:00 2001 From: Chase Sterling Date: Tue, 23 Sep 2014 20:02:16 -0400 Subject: [PATCH] [GTKUI] Fix magnet association button on Windows --- ChangeLog | 1 + deluge/ui/gtkui/common.py | 17 ++++++++--------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index c9124bc99..36f060ec5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -33,6 +33,7 @@ * #378: Allow showing a pieces bar instead of a regular progress bar in a torrent's status tab. * #2093: Make torrent opening compatible with all unicode paths. + * #1084: Fix magnet association button on Windows ==== WebUI ==== * Server (deluge-web) now daemonizes by default, use -d or --do-not-daemonize to disable. diff --git a/deluge/ui/gtkui/common.py b/deluge/ui/gtkui/common.py index 6022d857e..240f0163e 100644 --- a/deluge/ui/gtkui/common.py +++ b/deluge/ui/gtkui/common.py @@ -12,6 +12,7 @@ import os import logging import cPickle import shutil +import sys import pygtk pygtk.require('2.0') @@ -164,19 +165,17 @@ def associate_magnet_links(overwrite=False): hkey = _winreg.OpenKey(_winreg.HKEY_CLASSES_ROOT, "Magnet") except WindowsError: overwrite = True - finally: + else: _winreg.CloseKey(hkey) if overwrite: - _winreg.CreateKey(_winreg.HKEY_CLASSES_ROOT, "Magnet") - magnet_key = _winreg.OpenKey(_winreg.HKEY_CLASSES_ROOT, "Magnet", 0, _winreg.KEY_WRITE) + deluge_exe = os.path.join(os.path.dirname(sys.executable), "deluge.exe") + magnet_key = _winreg.CreateKey(_winreg.HKEY_CLASSES_ROOT, "Magnet") _winreg.SetValue(magnet_key, "", _winreg.REG_SZ, "URL:Magnet Protocol") - _winreg.SetValue(magnet_key, "URL Protocol", _winreg.REG_SZ, "") - _winreg.SetValue(magnet_key, "DefaultIcon", _winreg.REG_SZ, "") - _winreg.SetValue(magnet_key + "/DefaultIcon", "", _winreg.REG_SZ, "deluge.exe,1") - _winreg.SetValue(magnet_key, "shell\open\command", _winreg.REG_SZ, "") - ## need to find current running dir: os.path.dirname(os.path.realpath(__file__)) - _winreg.SetValue(magnet_key + "\shell\open\command", "", _winreg.REG_SZ, "C:\Program Files\Deluge\deluge.exe" "%1") + _winreg.SetValueEx(magnet_key, "URL Protocol", 0, _winreg.REG_SZ, "") + _winreg.SetValueEx(magnet_key, "BrowserFlags", 0, _winreg.REG_DWORD, 0x8) + _winreg.SetValue(magnet_key, "DefaultIcon", _winreg.REG_SZ, "{},0".format(deluge_exe)) + _winreg.SetValue(magnet_key, r"shell\open\command", _winreg.REG_SZ, '"{}" "%1"'.format(deluge_exe)) _winreg.CloseKey(magnet_key) # Don't try associate magnet on OSX see: #2420