implement autoload directory preference
This commit is contained in:
parent
580d2a2e84
commit
0dcc01c942
|
@ -2,6 +2,7 @@ Deluge 0.5.7 (xx November 2007)
|
|||
* Blocklist plugin will now display errors, instead of just crashing on a bad
|
||||
list
|
||||
* Add preference for the location of torrent files
|
||||
* Add autoload folder
|
||||
|
||||
Deluge 0.5.6.2 (31 October 2007)
|
||||
* Set default piece size to 256-KiB in TorrentCreator plugin and add 2048KiB
|
||||
|
|
1
TODO
1
TODO
|
@ -1,4 +1,3 @@
|
|||
for 0.5.7
|
||||
* manual recheck
|
||||
* add auto-pickup folder
|
||||
* remap filenames
|
||||
|
|
|
@ -156,6 +156,73 @@
|
|||
<property name="padding">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkFrame" id="frame20">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<widget class="GtkAlignment" id="alignment34">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="left_padding">12</property>
|
||||
<child>
|
||||
<widget class="GtkTable" id="table11">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="n_rows">1</property>
|
||||
<property name="n_columns">2</property>
|
||||
<child>
|
||||
<widget class="GtkCheckButton" id="chk_autoload">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label" translatable="yes">Autoload all torrent files in:</property>
|
||||
<property name="response_id">0</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkAlignment" id="alignment36">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<child>
|
||||
<widget class="GtkFileChooserButton" id="autoload_path_button">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="action">GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER</property>
|
||||
<property name="title" translatable="yes">Select A Folder</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label40">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label" translatable="yes"><b>Autoload</b></property>
|
||||
<property name="use_markup">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="type">label_item</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="padding">2</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkFrame" id="frame6">
|
||||
<property name="visible">True</property>
|
||||
|
@ -253,7 +320,7 @@
|
|||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="padding">2</property>
|
||||
<property name="position">1</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
|
@ -335,7 +402,7 @@
|
|||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="padding">2</property>
|
||||
<property name="position">2</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
|
|
18
src/core.py
18
src/core.py
|
@ -396,19 +396,6 @@ class Manager:
|
|||
pass
|
||||
deluge_core.save_fastresume(uid, self.unique_IDs[uid].filename)
|
||||
|
||||
# Load all NEW torrents in a . The GUI can call this every minute or so,
|
||||
# if one wants a directory to be 'watched' (personally, I think it should only be
|
||||
# done on user command).os.path.join(
|
||||
def autoload_directory(self, directory, save_dir, compact):
|
||||
for filename in os.listdir(directory):
|
||||
if filename[-len(".torrent"):].lower() == ".torrent":
|
||||
try:
|
||||
self.add_torrent_ns(self, filename, save_dir, compact)
|
||||
except DuplicateTorrentError:
|
||||
pass
|
||||
|
||||
self.sync()
|
||||
|
||||
# State retrieval functions
|
||||
|
||||
def get_state(self):
|
||||
|
@ -845,11 +832,10 @@ class Manager:
|
|||
unique_ID = deluge_core.add_torrent(torrent.filename,
|
||||
torrent.save_dir,
|
||||
torrent.compact)
|
||||
except DelugeError, e:
|
||||
print "Error:", e
|
||||
except:
|
||||
print "Error probably bad torrent"
|
||||
del self.state.torrents[torrent]
|
||||
raise e
|
||||
# print "Got unique ID:", unique_ID
|
||||
|
||||
ret = unique_ID
|
||||
self.unique_IDs[unique_ID] = torrent
|
||||
|
|
|
@ -93,6 +93,7 @@ class PreferencesDlg:
|
|||
self.glade.get_widget("combo_dht_proxy_type").set_active(self.preferences.get("dht_proxy_type"))
|
||||
self.glade.get_widget("combo_tracker_proxy_type").set_active(self.preferences.get("tracker_proxy_type"))
|
||||
self.glade.get_widget("combo_web_proxy_type").set_active(self.preferences.get("web_proxy_type"))
|
||||
self.glade.get_widget("chk_autoload").set_active(self.preferences.get("autoload"))
|
||||
self.glade.get_widget("chk_send_info").set_active(self.preferences.get("send_info"))
|
||||
self.glade.get_widget("chk_pref_rc4").set_active(self.preferences.get("pref_rc4"))
|
||||
self.glade.get_widget("chk_peer_proxy").set_active(self.preferences.get("peer_proxy"))
|
||||
|
@ -120,6 +121,7 @@ class PreferencesDlg:
|
|||
self.glade.get_widget("txt_web_proxy_hostname").set_text(self.preferences.get("web_proxy_hostname"))
|
||||
self.glade.get_widget("txt_web_proxy_username").set_text(self.preferences.get("web_proxy_username"))
|
||||
self.glade.get_widget("txt_web_proxy_password").set_text(self.preferences.get("web_proxy_password"))
|
||||
self.glade.get_widget("autoload_path_button").set_filename(self.preferences.get("default_autoload_path"))
|
||||
self.glade.get_widget("download_path_button").set_filename(self.preferences.get("default_download_path"))
|
||||
self.glade.get_widget("torrent_path_button").set_filename(self.preferences.get("default_torrent_path"))
|
||||
self.glade.get_widget("chk_enable_files_dialog").set_active(self.preferences.get("enable_files_dialog"))
|
||||
|
@ -202,6 +204,7 @@ class PreferencesDlg:
|
|||
self.preferences.set("encout_state", self.glade.get_widget("combo_encout").get_active())
|
||||
self.preferences.set("enclevel_type", self.glade.get_widget("combo_enclevel").get_active())
|
||||
self.preferences.set("peer_proxy_type", self.glade.get_widget("combo_peer_proxy_type").get_active())
|
||||
self.preferences.set("autoload", self.glade.get_widget("chk_autoload").get_active())
|
||||
self.preferences.set("send_info", self.glade.get_widget("chk_send_info").get_active())
|
||||
self.preferences.set("pref_rc4", self.glade.get_widget("chk_pref_rc4").get_active())
|
||||
self.preferences.set("peer_proxy", self.glade.get_widget("chk_peer_proxy").get_active())
|
||||
|
@ -238,6 +241,7 @@ class PreferencesDlg:
|
|||
self.preferences.set("peer_proxy_password", self.glade.get_widget("txt_peer_proxy_password").get_text())
|
||||
self.preferences.set("peer_proxy_hostname", self.glade.get_widget("txt_peer_proxy_hostname").get_text())
|
||||
self.preferences.set("use_default_dir", self.glade.get_widget("radio_save_all_to").get_active())
|
||||
self.preferences.set("default_autoload_path", self.glade.get_widget("autoload_path_button").get_filename())
|
||||
self.preferences.set("default_download_path", self.glade.get_widget("download_path_button").get_filename())
|
||||
self.preferences.set("default_torrent_path", self.glade.get_widget("torrent_path_button").get_filename())
|
||||
self.preferences.set("enable_files_dialog", self.glade.get_widget("chk_enable_files_dialog").get_active())
|
||||
|
@ -322,6 +326,8 @@ class PreferencesDlg:
|
|||
value = widget.get_active()
|
||||
if widget == self.glade.get_widget('radio_save_all_to'):
|
||||
self.glade.get_widget('download_path_button').set_sensitive(value)
|
||||
self.glade.get_widget('autoload_path_button').set_sensitive(value)
|
||||
self.glade.get_widget('chk_autoload').set_sensitive(value)
|
||||
elif widget == self.glade.get_widget('chk_autoseed'):
|
||||
self.glade.get_widget('ratio_spinner').set_sensitive(value)
|
||||
self.glade.get_widget('chk_clear_max_ratio_torrents').set_sensitive(value)
|
||||
|
|
|
@ -986,6 +986,17 @@ window, please enter your password"))
|
|||
|
||||
## Call via a timer to update the interface
|
||||
def update(self):
|
||||
if self.config.get("autoload") and self.config.get("default_autoload_path"):
|
||||
for filename in os.listdir(self.config.get("default_autoload_path")):
|
||||
if filename[-len(".torrent"):].lower() == ".torrent":
|
||||
try:
|
||||
self.interactive_add_torrent_path(os.path.join(\
|
||||
self.config.get("default_autoload_path"), filename), \
|
||||
self.config.get("default_download_path"))
|
||||
os.remove(os.path.join(self.config.get("default_autoload_path"), filename))
|
||||
except:
|
||||
pass
|
||||
|
||||
# We need to apply the queue changes
|
||||
self.manager.apply_queue()
|
||||
|
||||
|
|
|
@ -44,6 +44,7 @@ if common.windows_check():
|
|||
"enabled_plugins" : "Torrent Files:Torrent Peers",
|
||||
"file_manager" : common.FileManager.xdg,
|
||||
"open_folder_stock" : True,
|
||||
"autoload" : False,
|
||||
"open_folder_location": "",
|
||||
"send_info" : True,
|
||||
"auto_end_seeding" : False,
|
||||
|
@ -52,6 +53,7 @@ if common.windows_check():
|
|||
"enable_files_dialog" : False,
|
||||
"queue_above_completed" : False,
|
||||
"clear_max_ratio_torrents" : False,
|
||||
"default_autoload_path" : os.path.expanduser("~"),
|
||||
"default_torrent_path" : os.path.join(os.path.expanduser("~"), 'deluge', 'torrentfiles'),
|
||||
"default_download_path" : os.path.expanduser("~"),
|
||||
"open_torrent_dialog_path" : os.path.expanduser("~"),
|
||||
|
@ -150,6 +152,7 @@ else:
|
|||
"enabled_plugins" : "Torrent Files:Torrent Peers",
|
||||
"file_manager" : common.FileManager.xdg,
|
||||
"open_folder_stock" : True,
|
||||
"autoload" : False,
|
||||
"open_folder_location": "",
|
||||
"send_info" : True,
|
||||
"auto_end_seeding" : False,
|
||||
|
@ -158,6 +161,7 @@ else:
|
|||
"enable_files_dialog" : False,
|
||||
"queue_above_completed" : False,
|
||||
"clear_max_ratio_torrents" : False,
|
||||
"default_autoload_path" : os.path.expanduser("~"),
|
||||
"default_torrent_path" : os.path.join(xdg.BaseDirectory.save_config_path('deluge'), 'torrentfiles'),
|
||||
"default_download_path" : os.path.expanduser("~"),
|
||||
"open_torrent_dialog_path" : os.path.expanduser("~"),
|
||||
|
|
Loading…
Reference in New Issue