diff --git a/TODO b/TODO
index cae96a993..c60a020ce 100644
--- a/TODO
+++ b/TODO
@@ -20,3 +20,7 @@
* Add sidebar for labels and other things.. Plugins should be able to add their
own section to this.
* Option for adding torrents in paused/active state
+* Add filtering to torrentview to use with the sidebar
+* Fix up preferences for when using a remote host.. the download folders, etc..
+* Add decay items to statusbar.. items that will disappear after X seconds
+
diff --git a/deluge/common.py b/deluge/common.py
index e0cb2900c..a558fef52 100644
--- a/deluge/common.py
+++ b/deluge/common.py
@@ -90,7 +90,7 @@ def get_pixmap(fname):
"""Returns a pixmap file included with deluge"""
return pkg_resources.resource_filename("deluge", os.path.join("data", \
"pixmaps", fname))
-
+
def get_logo(size):
"""Returns a deluge logo pixbuf based on the size parameter."""
import gtk
diff --git a/deluge/core/core.py b/deluge/core/core.py
index d60b6b53a..be3b3f000 100644
--- a/deluge/core/core.py
+++ b/deluge/core/core.py
@@ -79,7 +79,9 @@ DEFAULT_PREFS = {
"max_upload_slots_global": -1,
"max_connections_per_torrent": -1,
"max_upload_slots_per_torrent": -1,
- "enabled_plugins": []
+ "enabled_plugins": [],
+ "autoadd_location": "",
+ "autoadd_enable": False
}
class Core(
@@ -90,6 +92,8 @@ class Core(
log.debug("Core init..")
threading.Thread.__init__(self)
+ self.client_address = None
+
# Get config
self.config = ConfigManager("core.conf", DEFAULT_PREFS)
@@ -130,6 +134,14 @@ class Core(
gettext.install("deluge",
pkg_resources.resource_filename(
"deluge", "i18n"))
+
+ def get_request(self):
+ """Get the request and client address from the socket.
+ We override this so that we can get the ip address of the client.
+ """
+ request, client_address = self.socket.accept()
+ self.client_address = client_address[0]
+ return (request, client_address)
def run(self):
"""Starts the core"""
@@ -230,14 +242,14 @@ class Core(
# Make shutdown an async call
gobject.idle_add(self._shutdown)
- def export_register_client(self, uri):
+ def export_register_client(self, port):
"""Registers a client with the signal manager so that signals are
sent to it."""
- self.signals.register_client(uri)
+ self.signals.register_client(self.client_address, port)
- def export_deregister_client(self, uri):
+ def export_deregister_client(self):
"""De-registers a client with the signal manager."""
- self.signals.deregister_client(uri)
+ self.signals.deregister_client(self.client_address)
def export_add_torrent_file(self, filename, save_path, filedump):
"""Adds a torrent file to the libtorrent session
diff --git a/deluge/core/signalmanager.py b/deluge/core/signalmanager.py
index 270414193..d632f9c52 100644
--- a/deluge/core/signalmanager.py
+++ b/deluge/core/signalmanager.py
@@ -39,13 +39,17 @@ class SignalManager:
def __init__(self):
self.clients = {}
- def deregister_client(self, uri):
+ def deregister_client(self, address):
"""Deregisters a client"""
- log.debug("Deregistering %s as a signal reciever..", uri)
- del self.clients[uri]
-
- def register_client(self, uri):
+ log.debug("Deregistering %s as a signal reciever..", address)
+ for client in self.clients:
+ if client[:len(address)] == address:
+ del self.clients[client]
+ break
+
+ def register_client(self, address, port):
"""Registers a client to emit signals to."""
+ uri = "http://" + str(address) + ":" + str(port)
log.debug("Registering %s as a signal reciever..", uri)
self.clients[uri] = xmlrpclib.ServerProxy(uri)
diff --git a/deluge/ui/client.py b/deluge/ui/client.py
index 75dd8c788..9d2c06b0e 100644
--- a/deluge/ui/client.py
+++ b/deluge/ui/client.py
@@ -66,9 +66,11 @@ class CoreProxy:
self._core = None
return
- if uri != self._uri:
+ if uri != self._uri and self._uri != None:
self._core = None
-
+ for callback in self._on_no_core_callbacks:
+ callback()
+
self._uri = uri
# Get a new core
self.get_core()
diff --git a/deluge/ui/gtkui/glade/main_window.glade b/deluge/ui/gtkui/glade/main_window.glade
index 3d4e61181..91a5fb010 100644
--- a/deluge/ui/gtkui/glade/main_window.glade
+++ b/deluge/ui/gtkui/glade/main_window.glade
@@ -394,30 +394,776 @@
-
+
True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 2
-
+
True
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
-
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ GTK_RESIZE_QUEUE
+
+
+ True
+ False
+ False
+
+
+ True
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ GTK_POLICY_AUTOMATIC
+ GTK_POLICY_NEVER
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ GTK_RESIZE_QUEUE
+ GTK_SHADOW_NONE
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 5
+ 5
+
+
+ True
+ 1
+ 2
+ 10
+
+
+ True
+ 0
+
+
+ True
+ 10
+ 10
+ 15
+ 15
+
+
+ True
+ 5
+
+
+ True
+ 0.10000000149
+
+
+ False
+ False
+
+
+
+
+ True
+ 5
+ 4
+ 5
+
+
+ True
+ 0
+
+
+ 1
+ 2
+
+
+
+
+ True
+ 0
+
+
+ 3
+ 4
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 1
+ 2
+
+
+
+
+ True
+ 0
+
+
+ 3
+ 4
+ 1
+ 2
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 2
+ 3
+
+
+
+
+ True
+ 0
+
+
+ 3
+ 4
+ 2
+ 3
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 3
+ 4
+
+
+
+
+ True
+ 0
+
+
+ 3
+ 4
+ 3
+ 4
+
+
+
+
+ True
+ 5
+
+
+ True
+ 0
+ <b>Downloaded:</b>
+ True
+
+
+
+
+
+
+ True
+ 5
+
+
+ True
+ 0
+ <b>Uploaded:</b>
+ True
+
+
+
+
+ 1
+ 2
+
+
+
+
+ True
+ 5
+
+
+ True
+ 0
+ <b>Seeders:</b>
+ True
+
+
+
+
+ 2
+ 3
+
+
+
+
+ True
+ 5
+
+
+ True
+ 0
+ <b>Share Ratio:</b>
+ True
+
+
+
+
+ 3
+ 4
+
+
+
+
+ True
+ 15
+ 5
+
+
+ True
+ 0
+ <b>Speed:</b>
+ True
+
+
+
+
+ 2
+ 3
+
+
+
+
+ True
+ 15
+ 5
+
+
+ True
+ 0
+ <b>Speed:</b>
+ True
+
+
+
+
+ 2
+ 3
+ 1
+ 2
+
+
+
+
+ True
+ 15
+ 5
+
+
+ True
+ 0
+ <b>Peers:</b>
+ True
+
+
+
+
+ 2
+ 3
+ 2
+ 3
+
+
+
+
+ True
+ 15
+ 5
+
+
+ True
+ 0
+ <b>ETA:</b>
+ True
+
+
+
+
+ 2
+ 3
+ 3
+ 4
+
+
+
+
+ True
+ 0
+ 1
+ <b>Pieces:</b>
+ True
+
+
+ 4
+ 5
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 5
+
+
+ True
+ 0
+
+
+
+
+ 1
+ 2
+ 4
+ 5
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 15
+ 5
+
+
+ True
+ 0
+ 1
+ <b>Availability:</b>
+ True
+
+
+
+
+ 2
+ 3
+ 4
+ 5
+
+
+
+
+ True
+ 0
+ True
+ PANGO_WRAP_WORD_CHAR
+
+
+ 3
+ 4
+ 4
+ 5
+
+
+
+
+
+ False
+ 1
+
+
+
+
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ <b>Statistics</b>
+ True
+
+
+ label_item
+
+
+
+
+
+ GTK_FILL
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 0
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 10
+ 10
+ 15
+ 15
+
+
+ True
+ 7
+ 2
+ 2
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 5
+
+
+ True
+ 0
+ 1
+ <b># of files:</b>
+ True
+
+
+
+
+ 3
+ 4
+ GTK_FILL
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 3
+ 4
+
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 2
+ 3
+
+
+
+
+
+ True
+ 0
+ True
+ PANGO_WRAP_WORD_CHAR
+
+
+ 1
+ 2
+
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 5
+
+
+ True
+ 0
+ 1
+ <b>Total Size:</b>
+ True
+
+
+
+
+ 2
+ 3
+ GTK_FILL
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 5
+
+
+ True
+ 0
+ 1
+ <b>Tracker:</b>
+ True
+
+
+
+
+ 4
+ 5
+ GTK_FILL
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 5
+
+
+ True
+ 0
+ 1
+ <b>Tracker Status:</b>
+ True
+
+
+
+
+ 5
+ 6
+ GTK_FILL
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 5
+
+
+ True
+ 0
+ 1
+ <b>Next Announce:</b>
+ True
+
+
+
+
+ 6
+ 7
+ GTK_FILL
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 5
+
+
+ True
+ 0
+ 0
+ 1
+ <b>Name:</b>
+ True
+
+
+
+
+ GTK_FILL
+
+
+
+
+ True
+ 0
+ True
+ PANGO_WRAP_WORD_CHAR
+
+
+ 1
+ 2
+ 4
+ 5
+
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 5
+ 6
+
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 6
+ 7
+
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 5
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 0
+ <b>Path:</b>
+ True
+
+
+
+
+ 1
+ 2
+ GTK_FILL
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 0
+ True
+ PANGO_WRAP_WORD_CHAR
+
+
+ 1
+ 2
+ 1
+ 2
+
+
+
+
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ <b>Torrent Info</b>
+ True
+
+
+ label_item
+
+
+
+
+ 1
+ 2
+ GTK_FILL
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+ Details
+
+
+ tab
+ False
+
+
@@ -426,746 +1172,7 @@
False
-
-
- True
- False
- GTK_POLICY_AUTOMATIC
- GTK_POLICY_AUTOMATIC
- GTK_SHADOW_OUT
-
-
- True
- True
- True
- True
- True
- False
-
-
-
-
- True
- False
-
-
-
- True
- False
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- GTK_RESIZE_QUEUE
-
-
- True
- False
-
-
- True
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- GTK_POLICY_AUTOMATIC
- GTK_POLICY_NEVER
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- GTK_RESIZE_QUEUE
- GTK_SHADOW_NONE
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 5
- 5
-
-
- True
- 1
- 2
- 10
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 0
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 10
- 10
- 15
- 15
-
-
- True
- 7
- 2
- 2
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 0
- True
- PANGO_WRAP_WORD_CHAR
-
-
- 1
- 2
- 1
- 2
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 5
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 0
- <b>Path:</b>
- True
-
-
-
-
- 1
- 2
- GTK_FILL
-
-
-
-
- True
- 0
-
-
- 1
- 2
- 6
- 7
-
-
-
-
-
- True
- 0
-
-
- 1
- 2
- 5
- 6
-
-
-
-
-
- True
- 0
- True
- PANGO_WRAP_WORD_CHAR
-
-
- 1
- 2
- 4
- 5
-
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 5
-
-
- True
- 0
- 0
- 1
- <b>Name:</b>
- True
-
-
-
-
- GTK_FILL
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 5
-
-
- True
- 0
- 1
- <b>Next Announce:</b>
- True
-
-
-
-
- 6
- 7
- GTK_FILL
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 5
-
-
- True
- 0
- 1
- <b>Tracker Status:</b>
- True
-
-
-
-
- 5
- 6
- GTK_FILL
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 5
-
-
- True
- 0
- 1
- <b>Tracker:</b>
- True
-
-
-
-
- 4
- 5
- GTK_FILL
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 5
-
-
- True
- 0
- 1
- <b>Total Size:</b>
- True
-
-
-
-
- 2
- 3
- GTK_FILL
-
-
-
-
- True
- 0
- True
- PANGO_WRAP_WORD_CHAR
-
-
- 1
- 2
-
-
-
-
-
- True
- 0
-
-
- 1
- 2
- 2
- 3
-
-
-
-
-
- True
- 0
-
-
- 1
- 2
- 3
- 4
-
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 5
-
-
- True
- 0
- 1
- <b># of files:</b>
- True
-
-
-
-
- 3
- 4
- GTK_FILL
-
-
-
-
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- <b>Torrent Info</b>
- True
-
-
- label_item
-
-
-
-
- 1
- 2
- GTK_FILL
-
-
-
-
- True
- 0
-
-
- True
- 10
- 10
- 15
- 15
-
-
- True
- 5
-
-
- True
- 0.10000000149
-
-
- False
- False
-
-
-
-
- True
- 5
- 4
- 5
-
-
- True
- 0
- True
- PANGO_WRAP_WORD_CHAR
-
-
- 3
- 4
- 4
- 5
-
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 15
- 5
-
-
- True
- 0
- 1
- <b>Availability:</b>
- True
-
-
-
-
- 2
- 3
- 4
- 5
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 5
-
-
- True
- 0
-
-
-
-
- 1
- 2
- 4
- 5
-
-
-
-
- True
- 0
- 1
- <b>Pieces:</b>
- True
-
-
- 4
- 5
-
-
-
-
- True
- 15
- 5
-
-
- True
- 0
- <b>ETA:</b>
- True
-
-
-
-
- 2
- 3
- 3
- 4
-
-
-
-
- True
- 15
- 5
-
-
- True
- 0
- <b>Peers:</b>
- True
-
-
-
-
- 2
- 3
- 2
- 3
-
-
-
-
- True
- 15
- 5
-
-
- True
- 0
- <b>Speed:</b>
- True
-
-
-
-
- 2
- 3
- 1
- 2
-
-
-
-
- True
- 15
- 5
-
-
- True
- 0
- <b>Speed:</b>
- True
-
-
-
-
- 2
- 3
-
-
-
-
- True
- 5
-
-
- True
- 0
- <b>Share Ratio:</b>
- True
-
-
-
-
- 3
- 4
-
-
-
-
- True
- 5
-
-
- True
- 0
- <b>Seeders:</b>
- True
-
-
-
-
- 2
- 3
-
-
-
-
- True
- 5
-
-
- True
- 0
- <b>Uploaded:</b>
- True
-
-
-
-
- 1
- 2
-
-
-
-
- True
- 5
-
-
- True
- 0
- <b>Downloaded:</b>
- True
-
-
-
-
-
-
- True
- 0
-
-
- 3
- 4
- 3
- 4
-
-
-
-
- True
- 0
-
-
- 1
- 2
- 3
- 4
-
-
-
-
- True
- 0
-
-
- 3
- 4
- 2
- 3
-
-
-
-
- True
- 0
-
-
- 1
- 2
- 2
- 3
-
-
-
-
- True
- 0
-
-
- 3
- 4
- 1
- 2
-
-
-
-
- True
- 0
-
-
- 1
- 2
- 1
- 2
-
-
-
-
- True
- 0
-
-
- 3
- 4
-
-
-
-
- True
- 0
-
-
- 1
- 2
-
-
-
-
- False
- 1
-
-
-
-
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- <b>Statistics</b>
- True
-
-
- label_item
-
-
-
-
-
- GTK_FILL
-
-
-
-
-
-
-
-
-
-
-
-
- True
- Details
-
-
- tab
- False
-
-
-
-
-
-
- False
- False
-
diff --git a/deluge/ui/gtkui/glade/preferences_dialog.glade b/deluge/ui/gtkui/glade/preferences_dialog.glade
index 0c8266f0e..204f8141a 100644
--- a/deluge/ui/gtkui/glade/preferences_dialog.glade
+++ b/deluge/ui/gtkui/glade/preferences_dialog.glade
@@ -1,6 +1,6 @@
-
+
GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
@@ -249,34 +249,76 @@
GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
12
-
+
True
GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 5
-
+
True
- True
GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- Automatically add torrent files that are placed in this folder.
- Auto Add Folder:
- 0
- True
+ 5
+
+
+ True
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ Automatically add torrent files that are placed in this folder.
+ Client Auto Add:
+ 0
+ True
+
+
+ False
+ False
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER
+
+
+ False
+ False
+ 1
+
+
-
- False
- False
-
-
+
True
GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER
+ 5
+
+
+ True
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ Daemon Auto Add:
+ 0
+ True
+
+
+ False
+ False
+
+
+
+
+ True
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+
+
+ False
+ False
+ 1
+
+
- False
- False
1
@@ -1036,40 +1078,71 @@ Either
2
15
-
+
True
- True
- The maximum upload slots for all torrents. Set -1 for unlimited.
- 1
- -1 -1 9000 1 10 10
- 1
- True
- True
+ The maximum upload speed for all torrents. Set -1 for unlimited.
+ 0
+ Maximum Upload Speed (KiB/s):
+
+
+ 2
+ 3
+ GTK_FILL
+
+
+
+
+ True
+ The maximum number of connections allowed. Set -1 for unlimited.
+ 0
+ Maximum Connections:
+
+
+ GTK_FILL
+
+
+
+
+ True
+ The maximum upload speed for all torrents. Set -1 for unlimited.
+ 0
+ Maximum Upload Slots:
- 1
- 2
3
4
GTK_FILL
-
+
True
True
- The maximum upload speed for all torrents. Set -1 for unlimited.
+ The maximum number of connections allowed. Set -1 for unlimited.
+ 4
1
-1 -1 9000 1 10 10
1
- 1
+ True
True
+ GTK_UPDATE_IF_VALID
1
2
- 2
- 3
+ GTK_FILL
+
+
+
+
+ True
+ The maximum download speed for all torrents. Set -1 for unlimited.
+ 0
+ Maximum Download Speed (KiB/s):
+
+
+ 1
+ 2
GTK_FILL
@@ -1094,74 +1167,43 @@ Either
-
+
True
- The maximum download speed for all torrents. Set -1 for unlimited.
- 0
- Maximum Download Speed (KiB/s):
+ True
+ The maximum upload speed for all torrents. Set -1 for unlimited.
+ 1
+ -1 -1 9000 1 10 10
+ 1
+ 1
+ True
- 1
- 2
+ 1
+ 2
+ 2
+ 3
GTK_FILL
-
+
True
True
- The maximum number of connections allowed. Set -1 for unlimited.
- 4
+ The maximum upload slots for all torrents. Set -1 for unlimited.
1
-1 -1 9000 1 10 10
1
True
True
- GTK_UPDATE_IF_VALID
1
2
- GTK_FILL
-
-
-
-
- True
- The maximum upload speed for all torrents. Set -1 for unlimited.
- 0
- Maximum Upload Slots:
-
-
3
4
GTK_FILL
-
-
- True
- The maximum number of connections allowed. Set -1 for unlimited.
- 0
- Maximum Connections:
-
-
- GTK_FILL
-
-
-
-
- True
- The maximum upload speed for all torrents. Set -1 for unlimited.
- 0
- Maximum Upload Speed (KiB/s):
-
-
- 2
- 3
- GTK_FILL
-
-
@@ -1205,24 +1247,29 @@ Either
2
15
-
+
True
- True
- The maximum upload slots per torrent. Set -1 for unlimited.
- 1
- -1 -1 9000 1 10 10
- 1
- True
- True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 0
+ Maximum Upload Slots:
- 1
- 2
1
2
GTK_FILL
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 0
+ Maximum Connections:
+
+
+ GTK_FILL
+
+
True
@@ -1240,24 +1287,19 @@ Either
-
+
True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 0
- Maximum Connections:
-
-
- GTK_FILL
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 0
- Maximum Upload Slots:
+ True
+ The maximum upload slots per torrent. Set -1 for unlimited.
+ 1
+ -1 -1 9000 1 10 10
+ 1
+ True
+ True
+ 1
+ 2
1
2
GTK_FILL
@@ -1508,33 +1550,15 @@ Either
2
10
-
+
True
+ False
True
GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- Open folder with:
- 0
- True
- True
-
-
-
- GTK_FILL
-
-
-
-
- True
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- Custom:
- 0
- True
- True
- radio_open_folder_stock
-
+ 1
+ 2
1
2
GTK_FILL
@@ -1564,20 +1588,38 @@ Thunar
-
+
True
- False
True
GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ Custom:
+ 0
+ True
+ True
+ radio_open_folder_stock
+
- 1
- 2
1
2
GTK_FILL
+
+
+ True
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ Open folder with:
+ 0
+ True
+ True
+
+
+
+ GTK_FILL
+
+
diff --git a/deluge/ui/gtkui/gtkui.py b/deluge/ui/gtkui/gtkui.py
index 785eb05b3..63226f6ba 100644
--- a/deluge/ui/gtkui/gtkui.py
+++ b/deluge/ui/gtkui/gtkui.py
@@ -85,7 +85,9 @@ DEFAULT_PREFS = {
"autoconnect": False,
"autoconnect_host_uri": None,
"autostart_localhost": False,
- "autoadd_queued": False
+ "autoadd_queued": False,
+ "autoadd_enable": False,
+ "autoadd_location": ""
}
class GtkUI:
diff --git a/deluge/ui/gtkui/listview.py b/deluge/ui/gtkui/listview.py
index 369d144a1..7a32d054c 100644
--- a/deluge/ui/gtkui/listview.py
+++ b/deluge/ui/gtkui/listview.py
@@ -306,7 +306,7 @@ class ListView:
self.columns[header].column_indices[text])
elif column_type == None:
return
-
+
column.set_sort_column_id(self.columns[header].column_indices[sortid])
column.set_clickable(True)
column.set_resizable(True)
diff --git a/deluge/ui/gtkui/preferences.py b/deluge/ui/gtkui/preferences.py
index 49f797ef6..742684a6c 100644
--- a/deluge/ui/gtkui/preferences.py
+++ b/deluge/ui/gtkui/preferences.py
@@ -158,6 +158,10 @@ class Preferences(component.Component):
("filename", self.core_config["download_location"]),
"torrent_files_button": \
("filename", self.core_config["torrentfiles_location"]),
+ "chk_autoadd_daemon": \
+ ("active", self.core_config["autoadd_enable"]),
+ "entry_autoadd_daemon": \
+ ("text", self.core_config["autoadd_location"]),
"radio_compact_allocation": \
("active", self.core_config["compact_allocation"]),
"radio_full_allocation": \
@@ -220,6 +224,8 @@ class Preferences(component.Component):
core_widget_list = [
"download_path_button",
"torrent_files_button",
+ "chk_autoadd_daemon",
+ "entry_autoadd_daemon",
"radio_compact_allocation",
"radio_full_allocation",
"chk_prioritize_first_last_pieces",
@@ -258,6 +264,10 @@ class Preferences(component.Component):
self.gtkui_config["interactive_add"])
self.glade.get_widget("radio_save_all_to").set_active(
not self.gtkui_config["interactive_add"])
+ self.glade.get_widget("chk_autoadd_folder").set_active(
+ self.gtkui_config["autoadd_enable"])
+ self.glade.get_widget("autoadd_folder_button").set_filename(
+ self.gtkui_config["autoadd_location"])
self.glade.get_widget("chk_enable_files_dialog").set_active(
self.gtkui_config["enable_files_dialog"])
@@ -318,6 +328,14 @@ class Preferences(component.Component):
self.glade.get_widget("download_path_button").get_filename()
new_core_config["torrentfiles_location"] = \
self.glade.get_widget("torrent_files_button").get_filename()
+ new_gtkui_config["autoadd_enable"] = \
+ self.glade.get_widget("chk_autoadd_folder").get_active()
+ new_gtkui_config["autoadd_location"] = \
+ self.glade.get_widget("autoadd_folder_button").get_filename()
+ new_core_config["autoadd_enable"] = \
+ self.glade.get_widget("chk_autoadd_daemon").get_active()
+ new_core_config["autoadd_location"] = \
+ self.glade.get_widget("entry_autoadd_daemon").get_text()
new_core_config["compact_allocation"] = \
self.glade.get_widget("radio_compact_allocation").get_active()
new_core_config["prioritize_first_last_pieces"] = \
diff --git a/deluge/ui/gtkui/sidebar.py b/deluge/ui/gtkui/sidebar.py
index c1ae198bf..363527517 100644
--- a/deluge/ui/gtkui/sidebar.py
+++ b/deluge/ui/gtkui/sidebar.py
@@ -35,6 +35,7 @@ import gtk
import gtk.glade
import deluge.ui.component as component
+import deluge.common
from deluge.log import LOG as log
class SideBar(component.Component):
@@ -49,9 +50,16 @@ class SideBar(component.Component):
# Create the liststore
self.liststore = gtk.ListStore(str, gtk.gdk.Pixbuf)
-
+ self.liststore.append([_("All"), None])
+ self.liststore.append([_("Downloading"),
+ gtk.gdk.pixbuf_new_from_file(
+ deluge.common.get_pixmap("downloading16.png"))])
+ self.liststore.append([_("Seeding"),
+ gtk.gdk.pixbuf_new_from_file(
+ deluge.common.get_pixmap("seeding16.png"))])
# Create the column
column = gtk.TreeViewColumn(_("Labels"))
+ column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
render = gtk.CellRendererPixbuf()
column.pack_start(render, expand=False)
column.add_attribute(render, 'pixbuf', 1)
diff --git a/deluge/ui/gtkui/torrentdetails.py b/deluge/ui/gtkui/torrentdetails.py
index 72618108e..be985887a 100644
--- a/deluge/ui/gtkui/torrentdetails.py
+++ b/deluge/ui/gtkui/torrentdetails.py
@@ -55,7 +55,9 @@ class TorrentDetails(component.Component):
# Don't show tabs if there is only 1
if self.notebook.get_n_pages() < 2:
self.notebook.set_show_tabs(False)
-
+ else:
+ self.notebook.set_show_tabs(True)
+
self.is_visible = True
# Get the labels we need to update.
diff --git a/deluge/ui/signalreceiver.py b/deluge/ui/signalreceiver.py
index 6def2edbc..1141d9019 100644
--- a/deluge/ui/signalreceiver.py
+++ b/deluge/ui/signalreceiver.py
@@ -77,15 +77,14 @@ class SignalReceiver(
# Register the signal receiver with the core
# FIXME: send actual URI not localhost
core = client.get_core()
- core.register_client("http://localhost:" + str(port))
+ core.register_client(str(port))
def shutdown(self):
"""Shutdowns receiver thread"""
self._shutdown = True
# De-register with the daemon so it doesn't try to send us more signals
try:
- client.get_core().deregister_client(
- "http://localhost:" + str(self.port))
+ client.get_core().deregister_client()
except (socket.error, AttributeError):
pass