diff --git a/glade/delugegtk.glade b/glade/delugegtk.glade
index f0fab7b45..ef6d1c5d4 100644
--- a/glade/delugegtk.glade
+++ b/glade/delugegtk.glade
@@ -16,122 +16,623 @@
4
3
-
+
True
- GTK_TOOLBAR_BOTH_HORIZ
- False
+ 190
+ True
-
+
True
- Add Torrent
- Add Torrent
- True
- gtk-add
-
+ GTK_POLICY_AUTOMATIC
+ GTK_POLICY_AUTOMATIC
+
+
+ True
+ True
+ True
+ True
+ False
+
+
+
- False
+ False
+ False
-
+
True
- Remove Torrent
- Remove Torrent
- True
- gtk-remove
-
+ True
+
+
+ True
+ True
+ GTK_POLICY_AUTOMATIC
+ GTK_POLICY_AUTOMATIC
+
+
+ True
+
+
+ True
+ 10
+ 12
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+ 3
+ 4
+ 10
+ 11
+
+
+
+
+ True
+ 0
+ <b>Estimated Time Remaining:</b>
+ True
+
+
+ 2
+ 3
+ 10
+ 11
+
+
+
+
+ True
+ 0
+
+
+ 3
+ 4
+ 4
+ 5
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 4
+ 5
+
+
+
+
+ True
+ 0
+ <b>Peers:</b>
+ True
+
+
+ 2
+ 3
+ 4
+ 5
+
+
+
+
+ True
+ 0
+ <b>Seeders:</b>
+ True
+
+
+ 4
+ 5
+
+
+
+
+ True
+ 0
+ True
+
+
+ 1
+ 4
+
+
+
+
+ True
+ 0
+ <b>Total Size:</b>
+ True
+
+
+ 1
+ 2
+
+
+
+
+ True
+ 0
+ <b>Total Downloaded:</b>
+ True
+
+
+ 2
+ 3
+
+
+
+
+ True
+ 0
+ <b>Percentage Done:</b>
+ True
+
+
+ 5
+ 6
+
+
+
+
+ True
+ 0
+ <b>Downloaded this session:</b>
+ True
+
+
+ 6
+ 7
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 1
+ 2
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 2
+ 3
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 5
+ 6
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 6
+ 7
+
+
+
+
+ True
+ 0
+ <b>Tracker:</b>
+ True
+
+
+ 7
+ 8
+
+
+
+
+ True
+ 0
+ <b>Tracker Response:</b>
+ True
+
+
+ 8
+ 9
+
+
+
+
+ True
+ 0
+ <b>Tracker Status:</b>
+ True
+
+
+ 9
+ 10
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 9
+ 10
+
+
+
+
+ True
+ 0
+ <b>Next Announce:</b>
+ True
+
+
+ 2
+ 3
+ 9
+ 10
+
+
+
+
+ True
+ 0
+
+
+ 3
+ 4
+ 9
+ 10
+
+
+
+
+ True
+ 0
+ <b>Pieces:</b>
+ True
+
+
+ 2
+ 3
+ 1
+ 2
+
+
+
+
+ True
+ 0
+ <b>Total Uploaded:</b>
+ True
+
+
+ 2
+ 3
+ 2
+ 3
+
+
+
+
+ True
+ 0
+
+
+ 3
+ 4
+ 1
+ 2
+
+
+
+
+ True
+ 0
+
+
+ 3
+ 4
+ 2
+ 3
+
+
+
+
+ True
+ 0
+ <b>Share Ratio:</b>
+ True
+
+
+ 2
+ 3
+ 5
+ 6
+
+
+
+
+ True
+ 0
+ <b>Uploaded This Session:</b>
+ True
+
+
+ 2
+ 3
+ 6
+ 7
+
+
+
+
+ True
+ 0
+
+
+ 3
+ 4
+ 5
+ 6
+
+
+
+
+ True
+ 0
+
+
+ 3
+ 4
+ 6
+ 7
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 4
+ 7
+ 8
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 4
+ 8
+ 9
+
+
+
+
+ True
+ 0
+ <b>Name:</b>
+ True
+
+
+
+
+ True
+ 0
+ <b>Use compact storage allocation:</b>
+ True
+
+
+ 10
+ 11
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 10
+ 11
+
+
+
+
+ True
+ 0
+ <b>Download Rate:</b>
+ True
+
+
+ 3
+ 4
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 3
+ 4
+
+
+
+
+ True
+ 0
+ <b>Upload Rate:</b>
+ True
+
+
+ 2
+ 3
+ 3
+ 4
+
+
+
+
+ True
+ 0
+
+
+ 3
+ 4
+ 3
+ 4
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ True
+ Details
+
+
+ tab
+ False
+ False
+
+
+
+
+ True
+ GTK_POLICY_AUTOMATIC
+ GTK_POLICY_AUTOMATIC
+
+
+ True
+
+
+
+
+ 1
+ False
+
+
+
+
+ True
+ Peers
+
+
+ tab
+ 1
+ False
+ False
+
+
+
+
+ True
+ GTK_POLICY_AUTOMATIC
+ GTK_POLICY_AUTOMATIC
+
+
+ True
+ True
+
+
+
+
+ 2
+ False
+
+
+
+
+ True
+ Files
+
+
+ tab
+ 2
+ False
+ False
+
+
-
- False
-
-
-
-
- True
- Clear Finished Torrents
- Clear Finished
- True
- gtk-clear
-
-
-
- False
-
-
-
-
- True
- Update Tracker
- Update Tracker
- True
- gtk-refresh
-
-
-
- False
-
-
-
-
- True
- Queue Torrent Up
- Move Up
- True
- gtk-go-up
-
-
-
- False
-
-
-
-
- True
- Queue Torrent Down
- Move Down
- True
- gtk-go-down
-
-
-
- False
-
- 1
- 2
-
- GTK_FILL
-
-
-
-
- True
- GTK_TOOLBAR_BOTH_HORIZ
-
-
- 1
- 2
- 1
- 2
- GTK_FILL
-
-
-
-
- True
- GTK_TOOLBAR_BOTH_HORIZ
- False
-
-
- 2
3
- 1
- 2
-
- GTK_FILL
+ 2
+ 3
+
+
+
+
+ True
+
+
+ 3
+ 3
+ 4
+
@@ -145,16 +646,11 @@
diff --git a/src/delugegtk.py b/src/delugegtk.py
index 50e730016..b3fab6acd 100755
--- a/src/delugegtk.py
+++ b/src/delugegtk.py
@@ -20,7 +20,7 @@
# 51 Franklin Street, Fifth Floor
# Boston, MA 02110-1301, USA.
-import sys, os, os.path, gettext
+import sys, os, os.path, gettext, urllib
import deluge, dcommon, dgtk
import pygtk
pygtk.require('2.0')
@@ -48,6 +48,7 @@ class DelugeGTK(dbus.service.Object):
f.flush()
f.close()
self.pref = dcommon.DelugePreferences()
+ self.load_default_settings()
self.pref.load_from_file(self.conf_file)
#Start the Deluge Manager:
self.manager = deluge.Manager("DE", "0490", "Deluge 0.4.9",
@@ -202,6 +203,21 @@ class DelugeGTK(dbus.service.Object):
self.filename_column.set_expand(True)
+ def load_default_settings(self):
+ self.pref.set("enable_system_tray", True)
+ self.pref.set("close_to_tray", False)
+ self.pref.set("use_default_dir", False)
+ self.pref.set("default_download_path", os.path.expandvars('$HOME'))
+ self.pref.set("auto_end_seeding", False)
+ self.pref.set("end_seed_ratio", 1.0)
+ self.pref.set("use_compact_storage", False)
+
+ self.pref.set("tcp_port_range_lower", 6880)
+ self.pref.set("tcp_port_range_upper", 6889)
+ self.pref.set("max_upload_rate", 0)
+ self.pref.set("max_number_uploads", 0)
+ self.pref.set("max_download_rate", 0)
+ self.pref.set("max_number_downloads", 0)
@@ -217,7 +233,11 @@ class DelugeGTK(dbus.service.Object):
# Page 1
self.prf_glade.get_widget("chk_use_tray").set_active(self.pref.get("enable_system_tray", bool))
self.prf_glade.get_widget("chk_min_on_close").set_active(self.pref.get("close_to_tray", bool))
- self.prf_glade.get_widget("radio_ask_save").set_active(self.pref.get("ask_download_dir_each_torrent", bool))
+ if(self.pref.get("use_default_dir", bool)):
+ self.prf_glade.get_widget("radio_save_all_to").set_active(True)
+ else:
+ self.prf_glade.get_widget("radio_ask_save").set_active(True)
+
self.prf_glade.get_widget("download_path_button").set_filename(self.pref.get("default_download_path", str))
self.prf_glade.get_widget("chk_autoseed").set_active(self.pref.get("auto_end_seeding", bool))
self.prf_glade.get_widget("ratio_spinner").set_value(self.pref.get("end_seed_ratio", float))
@@ -238,7 +258,7 @@ class DelugeGTK(dbus.service.Object):
if result == 1:
self.pref.set("enable_system_tray", self.prf_glade.get_widget("chk_use_tray").get_active())
self.pref.set("close_to_tray", self.prf_glade.get_widget("chk_min_on_close").get_active())
- self.pref.set("ask_download_dir_each_torrent", self.prf_glade.get_widget("radio_ask_save").get_active())
+ self.pref.set("use_default_dir", self.prf_glade.get_widget("radio_save_all_to").get_active())
self.pref.set("default_download_path", self.prf_glade.get_widget("download_path_button").get_filename())
self.pref.set("auto_end_seeding", self.prf_glade.get_widget("chk_autoseed").get_active())
self.pref.set("end_seed_ratio", self.prf_glade.get_widget("ratio_spinner").get_value())
@@ -409,17 +429,43 @@ class DelugeGTK(dbus.service.Object):
return None
- def new_torrent_clicked(self, obj=None):
- pass
+ def interactive_add_torrent(self, torrent):
+ if self.pref.get('use_default_dir', bool):
+ path = self.pref.get('default_download_path')
+ else:
+ path = dgtk.show_directory_chooser_dialog(self.window)
+ if path is None:
+ return
+ unique_id = self.manager.add_torrent(torrent, path, True)
+ self.store.append(self.get_list_from_unique_id(unique_id))
+
+
def add_torrent_clicked(self, obj=None):
torrent = dgtk.show_file_open_dialog()
if torrent is not None:
- uid = self.manager.add_torrent(torrent, ".", True)
- self.store.append(self.get_list_from_unique_id(uid))
+ self.interactive_add_torrent(torrent)
def add_torrent_url_clicked(self, obj=None):
- pass
+ dlg = gtk.Dialog(title="Add torrent from URL", parent=self.window,
+ buttons=(gtk.STOCK_CANCEL, 0, gtk.STOCK_OK, 1))
+ dlg.set_icon_from_file(dcommon.get_pixmap("deluge32.png"))
+
+ label = gtk.Label("Enter the URL of the .torrent to download")
+ entry = gtk.Entry()
+ dlg.vbox.pack_start(label)
+ dlg.vbox.pack_start(entry)
+ dlg.show_all()
+ result = dlg.run()
+ url = entry.get_text()
+ dlg.destroy()
+
+ if result == 1:
+ opener = urllib.URLopener()
+ filename, headers = opener.retrieve(url)
+ if filename.endswith(".torrent") or headers["content-type"]=="application/x=bittorrent":
+ self.interactive_add_torrent(filename)
+
def remove_torrent_clicked(self, obj=None):
torrent = self.get_selected_torrent()
diff --git a/src/dgtk.py b/src/dgtk.py
index 027c542e0..19b8eba37 100644
--- a/src/dgtk.py
+++ b/src/dgtk.py
@@ -66,6 +66,15 @@ def show_file_open_dialog(parent=None):
chooser.destroy()
return result
+def show_directory_chooser_dialog(parent=None):
+ chooser = gtk.FileChooserDialog("Choose a download directory", parent, gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
+ buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OK, gtk.RESPONSE_OK))
+ if chooser.run() == gtk.RESPONSE_OK:
+ result = chooser.get_filename()
+ else:
+ result = None
+ chooser.destroy()
+ return result
## Functions to create columns