Merge branch '1.3-stable' of deluge-torrent.org:deluge into 1.3-stable

This commit is contained in:
Andrew Resch 2010-08-23 17:35:31 -07:00
commit 2d821bd79a
5 changed files with 201 additions and 37 deletions

View File

@ -63,7 +63,6 @@ if not hasattr(json, "dumps"):
json.load = load json.load = load
import pkg_resources import pkg_resources
import xdg, xdg.BaseDirectory
import gettext import gettext
import locale import locale
@ -150,6 +149,7 @@ def get_default_config_dir(filename=None):
else: else:
return os.path.join(os.environ.get("APPDATA"), "deluge") return os.path.join(os.environ.get("APPDATA"), "deluge")
else: else:
import xdg.BaseDirectory
if filename: if filename:
return os.path.join(xdg.BaseDirectory.save_config_path("deluge"), filename) return os.path.join(xdg.BaseDirectory.save_config_path("deluge"), filename)
else: else:

View File

@ -56,6 +56,7 @@ DEFAULT_PREFS = {
OPTIONS_AVAILABLE = { #option: builtin OPTIONS_AVAILABLE = { #option: builtin
"enabled":False, "enabled":False,
"path":False, "path":False,
"append_extension":False,
"abspath":False, "abspath":False,
"download_location":True, "download_location":True,
"max_download_speed":True, "max_download_speed":True,
@ -70,7 +71,8 @@ OPTIONS_AVAILABLE = { #option: builtin
"move_completed":True, "move_completed":True,
"move_completed_path":True, "move_completed_path":True,
"label":False, "label":False,
"add_paused":True "add_paused":True,
"queue_to_top":False
} }
MAX_NUM_ATTEMPTS = 10 MAX_NUM_ATTEMPTS = 10
@ -146,7 +148,7 @@ class Core(CorePluginBase):
raise Exception("Path is already being watched.") raise Exception("Path is already being watched.")
for key in options.keys(): for key in options.keys():
if not key in OPTIONS_AVAILABLE: if not key in OPTIONS_AVAILABLE:
if not key in [key+'_toggle' for key in OPTIONS_AVAILABLE.iterkeys()]: if not key in [key2+'_toggle' for key2 in OPTIONS_AVAILABLE.iterkeys()]:
raise Exception("autoadd: Invalid options key:%s" % key) raise Exception("autoadd: Invalid options key:%s" % key)
#disable the watch loop if it was active #disable the watch loop if it was active
if watchdir_id in self.update_timers: if watchdir_id in self.update_timers:
@ -231,12 +233,23 @@ class Core(CorePluginBase):
# The torrent looks good, so lets add it to the session # The torrent looks good, so lets add it to the session
torrent_id = component.get("TorrentManager").add(filedump=filedump, filename=filename, options=opts) torrent_id = component.get("TorrentManager").add(filedump=filedump, filename=filename, options=opts)
if ('Label' in component.get("CorePluginManager").get_enabled_plugins()) and torrent_id: if torrent_id:
if 'Label' in component.get("CorePluginManager").get_enabled_plugins():
if watchdir.get('label_toggle', True) and watchdir.get('label'): if watchdir.get('label_toggle', True) and watchdir.get('label'):
label = component.get("CorePlugin.Label") label = component.get("CorePlugin.Label")
if not watchdir['label'] in label.get_labels(): if not watchdir['label'] in label.get_labels():
label.add(watchdir['label']) label.add(watchdir['label'])
label.set_torrent(torrent_id, watchdir['label']) label.set_torrent(torrent_id, watchdir['label'])
if watchdir.get('queue_to_top_toggle'):
if watchdir.get('queue_to_top', True):
component.get("TorrentManager").queue_top(torrent_id)
else:
component.get("TorrentManager").queue_bottom(torrent_id)
if watchdir.get('append_extension_toggle', False):
if not watchdir.get('append_extension'):
watchdir['append_extension'] = ".added"
os.rename(filepath, filepath + watchdir['append_extension'])
else:
os.remove(filepath) os.remove(filepath)
@export @export

View File

@ -83,9 +83,11 @@
<child internal-child="vbox"> <child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox1"> <widget class="GtkVBox" id="dialog-vbox1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="orientation">vertical</property>
<child> <child>
<widget class="GtkVBox" id="vbox1"> <widget class="GtkVBox" id="vbox1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="orientation">vertical</property>
<child> <child>
<widget class="GtkNotebook" id="notebook1"> <widget class="GtkNotebook" id="notebook1">
<property name="visible">True</property> <property name="visible">True</property>
@ -94,6 +96,7 @@
<widget class="GtkVBox" id="vbox2"> <widget class="GtkVBox" id="vbox2">
<property name="visible">True</property> <property name="visible">True</property>
<property name="border_width">6</property> <property name="border_width">6</property>
<property name="orientation">vertical</property>
<child> <child>
<widget class="GtkFrame" id="frame2"> <widget class="GtkFrame" id="frame2">
<property name="visible">True</property> <property name="visible">True</property>
@ -106,6 +109,7 @@
<child> <child>
<widget class="GtkVBox" id="vbox6"> <widget class="GtkVBox" id="vbox6">
<property name="visible">True</property> <property name="visible">True</property>
<property name="orientation">vertical</property>
<child> <child>
<widget class="GtkHBox" id="hbox3"> <widget class="GtkHBox" id="hbox3">
<property name="visible">True</property> <property name="visible">True</property>
@ -170,6 +174,89 @@
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child>
<widget class="GtkFrame" id="frame1">
<property name="visible">True</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
<widget class="GtkAlignment" id="alignment1">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
<widget class="GtkAlignment" id="alignment2">
<property name="visible">True</property>
<child>
<widget class="GtkVBox" id="vbox7">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
<widget class="GtkRadioButton" id="isnt_append_extension">
<property name="label" translatable="yes">Delete .torrent after adding</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hbox1">
<property name="visible">True</property>
<child>
<widget class="GtkRadioButton" id="append_extension_toggle">
<property name="label" translatable="yes">Append extension after adding:</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="draw_indicator">True</property>
<property name="group">isnt_append_extension</property>
<signal name="toggled" handler="on_toggle_toggled"/>
</widget>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="append_extension">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char">&#x2022;</property>
<property name="text" translatable="yes">.added</property>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
</child>
</widget>
</child>
</widget>
</child>
<child>
<widget class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Torrent File Action&lt;/b&gt;</property>
<property name="use_markup">True</property>
</widget>
<packing>
<property name="type">label_item</property>
</packing>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
<child> <child>
<widget class="GtkFrame" id="frame3"> <widget class="GtkFrame" id="frame3">
<property name="visible">True</property> <property name="visible">True</property>
@ -182,6 +269,7 @@
<child> <child>
<widget class="GtkVBox" id="vbox3"> <widget class="GtkVBox" id="vbox3">
<property name="visible">True</property> <property name="visible">True</property>
<property name="orientation">vertical</property>
<child> <child>
<widget class="GtkCheckButton" id="download_location_toggle"> <widget class="GtkCheckButton" id="download_location_toggle">
<property name="label" translatable="yes">Set download location</property> <property name="label" translatable="yes">Set download location</property>
@ -244,7 +332,7 @@
</widget> </widget>
<packing> <packing>
<property name="fill">False</property> <property name="fill">False</property>
<property name="position">1</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -259,6 +347,7 @@
<child> <child>
<widget class="GtkVBox" id="vbox4"> <widget class="GtkVBox" id="vbox4">
<property name="visible">True</property> <property name="visible">True</property>
<property name="orientation">vertical</property>
<child> <child>
<widget class="GtkCheckButton" id="move_completed_toggle"> <widget class="GtkCheckButton" id="move_completed_toggle">
<property name="label" translatable="yes">Set move completed location</property> <property name="label" translatable="yes">Set move completed location</property>
@ -336,7 +425,7 @@
</widget> </widget>
<packing> <packing>
<property name="fill">False</property> <property name="fill">False</property>
<property name="position">2</property> <property name="position">3</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -392,7 +481,7 @@
</child> </child>
</widget> </widget>
<packing> <packing>
<property name="position">3</property> <property name="position">4</property>
</packing> </packing>
</child> </child>
</widget> </widget>
@ -411,6 +500,7 @@
<widget class="GtkVBox" id="vbox5"> <widget class="GtkVBox" id="vbox5">
<property name="visible">True</property> <property name="visible">True</property>
<property name="border_width">6</property> <property name="border_width">6</property>
<property name="orientation">vertical</property>
<child> <child>
<placeholder/> <placeholder/>
</child> </child>
@ -640,14 +730,16 @@
</child> </child>
</widget> </widget>
<packing> <packing>
<property name="top_attach">2</property> <property name="top_attach">3</property>
<property name="bottom_attach">3</property> <property name="bottom_attach">4</property>
<property name="x_options">GTK_FILL</property> <property name="x_options">GTK_FILL</property>
</packing> </packing>
</child> </child>
<child> <child>
<widget class="GtkAlignment" id="alignment14"> <widget class="GtkAlignment" id="alignment14">
<property name="visible">True</property> <property name="visible">True</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
<property name="left_padding">12</property> <property name="left_padding">12</property>
<child> <child>
<widget class="GtkCheckButton" id="remove_at_ratio"> <widget class="GtkCheckButton" id="remove_at_ratio">
@ -661,8 +753,8 @@
</child> </child>
</widget> </widget>
<packing> <packing>
<property name="top_attach">3</property> <property name="top_attach">4</property>
<property name="bottom_attach">4</property> <property name="bottom_attach">5</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -676,8 +768,8 @@
<signal name="toggled" handler="on_toggle_toggled"/> <signal name="toggled" handler="on_toggle_toggled"/>
</widget> </widget>
<packing> <packing>
<property name="top_attach">1</property> <property name="top_attach">2</property>
<property name="bottom_attach">2</property> <property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property> <property name="x_options">GTK_FILL</property>
<property name="y_options"></property> <property name="y_options"></property>
</packing> </packing>
@ -694,8 +786,8 @@
<packing> <packing>
<property name="left_attach">2</property> <property name="left_attach">2</property>
<property name="right_attach">3</property> <property name="right_attach">3</property>
<property name="top_attach">3</property> <property name="top_attach">4</property>
<property name="bottom_attach">4</property> <property name="bottom_attach">5</property>
<property name="x_options">GTK_FILL</property> <property name="x_options">GTK_FILL</property>
<property name="y_options"></property> <property name="y_options"></property>
</packing> </packing>
@ -712,8 +804,8 @@
<packing> <packing>
<property name="left_attach">1</property> <property name="left_attach">1</property>
<property name="right_attach">2</property> <property name="right_attach">2</property>
<property name="top_attach">3</property> <property name="top_attach">4</property>
<property name="bottom_attach">4</property> <property name="bottom_attach">5</property>
<property name="x_options">GTK_FILL</property> <property name="x_options">GTK_FILL</property>
<property name="y_options"></property> <property name="y_options"></property>
</packing> </packing>
@ -730,14 +822,15 @@
<packing> <packing>
<property name="left_attach">1</property> <property name="left_attach">1</property>
<property name="right_attach">2</property> <property name="right_attach">2</property>
<property name="top_attach">2</property> <property name="top_attach">3</property>
<property name="bottom_attach">3</property> <property name="bottom_attach">4</property>
<property name="y_options"></property> <property name="y_options"></property>
</packing> </packing>
</child> </child>
<child> <child>
<widget class="GtkHBox" id="auto_managed_box"> <widget class="GtkHBox" id="auto_managed_box">
<property name="visible">True</property> <property name="visible">True</property>
<property name="homogeneous">True</property>
<child> <child>
<widget class="GtkRadioButton" id="auto_managed"> <widget class="GtkRadioButton" id="auto_managed">
<property name="label" translatable="yes">Yes</property> <property name="label" translatable="yes">Yes</property>
@ -768,8 +861,8 @@
<packing> <packing>
<property name="left_attach">1</property> <property name="left_attach">1</property>
<property name="right_attach">2</property> <property name="right_attach">2</property>
<property name="top_attach">1</property> <property name="top_attach">2</property>
<property name="bottom_attach">2</property> <property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property> <property name="x_options">GTK_FILL</property>
<property name="y_options">GTK_FILL</property> <property name="y_options">GTK_FILL</property>
</packing> </packing>
@ -786,8 +879,8 @@
<packing> <packing>
<property name="left_attach">2</property> <property name="left_attach">2</property>
<property name="right_attach">3</property> <property name="right_attach">3</property>
<property name="top_attach">2</property> <property name="top_attach">3</property>
<property name="bottom_attach">3</property> <property name="bottom_attach">4</property>
<property name="x_options">GTK_FILL</property> <property name="x_options">GTK_FILL</property>
<property name="y_options"></property> <property name="y_options"></property>
</packing> </packing>
@ -805,6 +898,7 @@
<child> <child>
<widget class="GtkHBox" id="add_paused_box"> <widget class="GtkHBox" id="add_paused_box">
<property name="visible">True</property> <property name="visible">True</property>
<property name="homogeneous">True</property>
<child> <child>
<widget class="GtkRadioButton" id="add_paused"> <widget class="GtkRadioButton" id="add_paused">
<property name="label" translatable="yes">Yes</property> <property name="label" translatable="yes">Yes</property>
@ -824,7 +918,6 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="receives_default">False</property> <property name="receives_default">False</property>
<property name="active">True</property>
<property name="draw_indicator">True</property> <property name="draw_indicator">True</property>
<property name="group">add_paused</property> <property name="group">add_paused</property>
</widget> </widget>
@ -863,10 +956,56 @@
<placeholder/> <placeholder/>
</child> </child>
<child> <child>
<placeholder/> <widget class="GtkCheckButton" id="queue_to_top_toggle">
<property name="label" translatable="yes">Queue to:</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_toggle_toggled"/>
</widget>
<packing>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
</packing>
</child> </child>
<child> <child>
<placeholder/> <widget class="GtkHBox" id="hbox2">
<property name="visible">True</property>
<property name="homogeneous">True</property>
<child>
<widget class="GtkRadioButton" id="queue_to_top">
<property name="label" translatable="yes">Top</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkRadioButton" id="isnt_queue_to_top">
<property name="label" translatable="yes">Bottom</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="draw_indicator">True</property>
<property name="group">queue_to_top</property>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
</packing>
</child> </child>
</widget> </widget>
</child> </child>
@ -911,6 +1050,7 @@
<child> <child>
<widget class="GtkHButtonBox" id="hbuttonbox2"> <widget class="GtkHButtonBox" id="hbuttonbox2">
<property name="visible">True</property> <property name="visible">True</property>
<property name="orientation">vertical</property>
</widget> </widget>
<packing> <packing>
<property name="position">1</property> <property name="position">1</property>

View File

@ -51,7 +51,7 @@ from common import get_resource
class OptionsDialog(): class OptionsDialog():
spin_ids = ["max_download_speed", "max_upload_speed", "stop_ratio"] spin_ids = ["max_download_speed", "max_upload_speed", "stop_ratio"]
spin_int_ids = ["max_upload_slots", "max_connections"] spin_int_ids = ["max_upload_slots", "max_connections"]
chk_ids = ["stop_at_ratio", "remove_at_ratio", "move_completed", "add_paused", "auto_managed"] chk_ids = ["stop_at_ratio", "remove_at_ratio", "move_completed", "add_paused", "auto_managed", "queue_to_top"]
def __init__(self): def __init__(self):
pass pass
@ -87,6 +87,8 @@ class OptionsDialog():
def load_options(self, options): def load_options(self, options):
self.glade.get_widget('enabled').set_active(options.get('enabled', False)) self.glade.get_widget('enabled').set_active(options.get('enabled', False))
self.glade.get_widget('append_extension_toggle').set_active(options.get('append_extension_toggle', False))
self.glade.get_widget('append_extension').set_text(options.get('append_extension', '.added'))
self.glade.get_widget('download_location_toggle').set_active(options.get('download_location_toggle', False)) self.glade.get_widget('download_location_toggle').set_active(options.get('download_location_toggle', False))
self.glade.get_widget('label').set_text(options.get('label', '')) self.glade.get_widget('label').set_text(options.get('label', ''))
self.glade.get_widget('label_toggle').set_active(options.get('label_toggle', False)) self.glade.get_widget('label_toggle').set_active(options.get('label_toggle', False))
@ -98,6 +100,8 @@ class OptionsDialog():
self.glade.get_widget(id+'_toggle').set_active(options.get(id+'_toggle', False)) self.glade.get_widget(id+'_toggle').set_active(options.get(id+'_toggle', False))
if not options.get('add_paused', True): if not options.get('add_paused', True):
self.glade.get_widget('isnt_add_paused').set_active(True) self.glade.get_widget('isnt_add_paused').set_active(True)
if not options.get('queue_to_top', True):
self.glade.get_widget('isnt_queue_to_top').set_active(True)
if not options.get('auto_managed', True): if not options.get('auto_managed', True):
self.glade.get_widget('isnt_auto_managed').set_active(True) self.glade.get_widget('isnt_auto_managed').set_active(True)
for field in ['move_completed_path', 'path', 'download_location']: for field in ['move_completed_path', 'path', 'download_location']:
@ -121,9 +125,9 @@ class OptionsDialog():
client.core.get_enabled_plugins().addCallback(on_get_enabled_plugins) client.core.get_enabled_plugins().addCallback(on_get_enabled_plugins)
def set_sensitive(self): def set_sensitive(self):
maintoggles = ['download_location', 'move_completed', 'label', \ maintoggles = ['download_location', 'append_extension', 'move_completed', 'label', \
'max_download_speed', 'max_upload_speed', 'max_connections', \ 'max_download_speed', 'max_upload_speed', 'max_connections', \
'max_upload_slots', 'add_paused', 'auto_managed', 'stop_at_ratio'] 'max_upload_slots', 'add_paused', 'auto_managed', 'stop_at_ratio', 'queue_to_top']
[self.on_toggle_toggled(self.glade.get_widget(x+'_toggle')) for x in maintoggles] [self.on_toggle_toggled(self.glade.get_widget(x+'_toggle')) for x in maintoggles]
def on_toggle_toggled(self, tb): def on_toggle_toggled(self, tb):
@ -132,6 +136,8 @@ class OptionsDialog():
if toggle == 'download_location': if toggle == 'download_location':
self.glade.get_widget('download_location_chooser').set_sensitive(isactive) self.glade.get_widget('download_location_chooser').set_sensitive(isactive)
self.glade.get_widget('download_location_entry').set_sensitive(isactive) self.glade.get_widget('download_location_entry').set_sensitive(isactive)
elif toggle == 'append_extension':
self.glade.get_widget('append_extension').set_sensitive(isactive)
elif toggle == 'move_completed': elif toggle == 'move_completed':
self.glade.get_widget('move_completed_path_chooser').set_sensitive(isactive) self.glade.get_widget('move_completed_path_chooser').set_sensitive(isactive)
self.glade.get_widget('move_completed_path_entry').set_sensitive(isactive) self.glade.get_widget('move_completed_path_entry').set_sensitive(isactive)
@ -149,6 +155,9 @@ class OptionsDialog():
elif toggle == 'add_paused': elif toggle == 'add_paused':
self.glade.get_widget('add_paused').set_sensitive(isactive) self.glade.get_widget('add_paused').set_sensitive(isactive)
self.glade.get_widget('isnt_add_paused').set_sensitive(isactive) self.glade.get_widget('isnt_add_paused').set_sensitive(isactive)
elif toggle == 'queue_to_top':
self.glade.get_widget('queue_to_top').set_sensitive(isactive)
self.glade.get_widget('isnt_queue_to_top').set_sensitive(isactive)
elif toggle == 'auto_managed': elif toggle == 'auto_managed':
self.glade.get_widget('auto_managed').set_sensitive(isactive) self.glade.get_widget('auto_managed').set_sensitive(isactive)
self.glade.get_widget('isnt_auto_managed').set_sensitive(isactive) self.glade.get_widget('isnt_auto_managed').set_sensitive(isactive)
@ -193,6 +202,8 @@ class OptionsDialog():
options['path'] = self.glade.get_widget('path_entry').get_text() options['path'] = self.glade.get_widget('path_entry').get_text()
options['download_location'] = self.glade.get_widget('download_location_entry').get_text() options['download_location'] = self.glade.get_widget('download_location_entry').get_text()
options['move_completed_path'] = self.glade.get_widget('move_completed_path_entry').get_text() options['move_completed_path'] = self.glade.get_widget('move_completed_path_entry').get_text()
options['append_extension_toggle'] = self.glade.get_widget('append_extension_toggle').get_active()
options['append_extension'] = self.glade.get_widget('append_extension').get_text()
options['download_location_toggle'] = self.glade.get_widget('download_location_toggle').get_active() options['download_location_toggle'] = self.glade.get_widget('download_location_toggle').get_active()
options['label'] = self.glade.get_widget('label').get_text().lower() options['label'] = self.glade.get_widget('label').get_text().lower()
options['label_toggle'] = self.glade.get_widget('label_toggle').get_active() options['label_toggle'] = self.glade.get_widget('label_toggle').get_active()

View File

@ -42,7 +42,7 @@ from setuptools import setup
__plugin_name__ = "AutoAdd" __plugin_name__ = "AutoAdd"
__author__ = "Chase Sterling" __author__ = "Chase Sterling"
__author_email__ = "chase.sterling@gmail.com" __author_email__ = "chase.sterling@gmail.com"
__version__ = "0.28" __version__ = "1.01"
__url__ = "http://forum.deluge-torrent.org/viewtopic.php?f=9&t=26775" __url__ = "http://forum.deluge-torrent.org/viewtopic.php?f=9&t=26775"
__license__ = "GPLv3" __license__ = "GPLv3"
__description__ = "Monitors folders for .torrent files." __description__ = "Monitors folders for .torrent files."