cleanup line-lengths for pep8

This commit is contained in:
Marcos Pinto 2007-08-27 22:14:17 +00:00
parent dac78171aa
commit 8e2ea90c82

View File

@ -51,18 +51,22 @@ class DelugeGTK:
self.ipc_manager = ipc_manager.Manager(self)
#Start the Deluge Manager:
self.manager = core.Manager(common.CLIENT_CODE, common.CLIENT_VERSION,
'%s %s'%(common.PROGRAM_NAME, common.PROGRAM_VERSION), common.CONFIG_DIR)
'%s %s' % (common.PROGRAM_NAME, common.PROGRAM_VERSION),
common.CONFIG_DIR)
self.plugins = plugins.PluginManager(self.manager, self)
self.plugins.add_plugin_dir(common.PLUGIN_DIR)
if os.path.isdir(os.path.join(common.CONFIG_DIR , 'plugins')):
self.plugins.add_plugin_dir(os.path.join(common.CONFIG_DIR, 'plugins'))
self.plugins.add_plugin_dir(os.path.join(common.CONFIG_DIR,
'plugins'))
self.plugins.scan_for_plugins()
self.config = self.manager.get_config()
#Set up the interface:
self.wtree = gtk.glade.XML(common.get_glade_file("delugegtk.glade"), domain='deluge')
self.wtree = gtk.glade.XML(common.get_glade_file("delugegtk.glade"),
domain='deluge')
self.window = self.wtree.get_widget("main_window")
self.toolbar = self.wtree.get_widget("tb_middle")
self.window.drag_dest_set(gtk.DEST_DEFAULT_ALL,[('text/uri-list', 0, 80)], gtk.gdk.ACTION_COPY)
self.window.drag_dest_set(gtk.DEST_DEFAULT_ALL, [('text/uri-list', 0,
80)], gtk.gdk.ACTION_COPY)
self.window.connect("delete_event", self.close)
self.window.connect("drag_data_received", self.on_drag_data)
self.window.connect("window-state-event", self.window_state_event)
@ -86,7 +90,8 @@ class DelugeGTK:
self.build_torrent_table()
self.load_status_icons()
# Set the Torrent menu bar sub-menu to the same as the right-click Torrent pop-up menu
# Set the Torrent menu bar sub-menu to the same as the right-click
#Torrent pop-up menu
self.wtree.get_widget("menu_torrent").set_submenu(self.torrent_menu)
self.wtree.get_widget("menu_torrent").set_sensitive(False)
@ -198,9 +203,11 @@ class DelugeGTK:
self.manager.resume_all()
def build_tray_icon(self):
self.tray_icon = gtk.status_icon_new_from_file(common.get_pixmap("deluge32.png"))
self.tray_icon = gtk.status_icon_new_from_file(common.get_pixmap\
("deluge32.png"))
self.tray_glade = gtk.glade.XML(common.get_glade_file("tray_menu.glade"), domain='deluge')
self.tray_glade = gtk.glade.XML(common.get_glade_file\
("tray_menu.glade"), domain='deluge')
self.tray_menu = self.tray_glade.get_widget("tray_menu")
self.tray_glade.signal_autoconnect({
"quit": self.quit,
@ -212,8 +219,10 @@ class DelugeGTK:
"show_hide_window_toggled": self.show_hide_window_toggled
})
self.tray_glade.get_widget("download-limit-image").set_from_file(common.get_pixmap('downloading16.png'))
self.tray_glade.get_widget("upload-limit-image").set_from_file(common.get_pixmap('seeding16.png'))
self.tray_glade.get_widget("download-limit-image").set_from_file(
common.get_pixmap('downloading16.png'))
self.tray_glade.get_widget("upload-limit-image").set_from_file(
common.get_pixmap('seeding16.png'))
self.build_tray_bwsetsubmenu()
self.tray_icon.connect("activate", self.tray_clicked)
@ -242,18 +251,21 @@ class DelugeGTK:
show_notset=True, show_other=True)
# Add the sub-menus to the tray menu
self.tray_glade.get_widget("download_limit").set_submenu(self.submenu_bwdownset)
self.tray_glade.get_widget("upload_limit").set_submenu(self.submenu_bwupset)
self.tray_glade.get_widget("download_limit").set_submenu(
self.submenu_bwdownset)
self.tray_glade.get_widget("upload_limit").set_submenu(
self.submenu_bwupset)
# Show the sub-menus for all to see
self.submenu_bwdownset.show_all()
self.submenu_bwupset.show_all()
def build_menu_radio_list(self, value_list, callback, pref_value=None,
suffix=None, show_notset=False,
notset_label=None, notset_lessthan=0, show_other=False, show_activated=False, activated_label=None):
# Build a menu with radio menu items from a list and connect them to the callback
# The pref_value is what you would like to test for the default active radio item
suffix=None, show_notset=False, notset_label=None, notset_lessthan=0,
show_other=False, show_activated=False, activated_label=None):
# Build a menu with radio menu items from a list and connect them to
# the callback. The pref_value is what you would like to test for the
# default active radio item.
# Setting show_unlimited will include an Unlimited radio item
if notset_label is None:
notset_label = _("Unlimited")
@ -266,7 +278,8 @@ class DelugeGTK:
if show_activated is False:
for value in sorted(value_list):
if suffix != None:
menuitem = gtk.RadioMenuItem(group, str(value) + " " + suffix)
menuitem = gtk.RadioMenuItem(group, str(value) + " " + \
suffix)
else:
menuitem = gtk.RadioMenuItem(group, str(value))
@ -314,12 +327,14 @@ class DelugeGTK:
return menu
def tray_setbwdown(self, widget, data=None):
str_bwdown = widget.get_children()[0].get_text().rstrip(" "+_("KiB/s"))
str_bwdown = widget.get_children()[0].get_text().rstrip(" " +
_("KiB/s"))
if str_bwdown == _("Unlimited"):
str_bwdown = -1
if str_bwdown == _("Other..."):
dialog_glade = gtk.glade.XML(common.get_glade_file("dgtkpopups.glade"))
dialog_glade = gtk.glade.XML(common.get_glade_file(
"dgtkpopups.glade"))
speed_dialog = dialog_glade.get_widget("speed_dialog")
spin_title = dialog_glade.get_widget("spin_title")
spin_title.set_text(_("Download Speed (KiB/s):"))
@ -338,12 +353,14 @@ class DelugeGTK:
self.apply_prefs()
def tray_setbwup(self, widget, data=None):
str_bwup = widget.get_children()[0].get_text().rstrip(" "+_("KiB/s"))
str_bwup = widget.get_children()[0].get_text().rstrip(" " +
_("KiB/s"))
if str_bwup == _("Unlimited"):
str_bwup = -1
if str_bwup == _("Other..."):
dialog_glade = gtk.glade.XML(common.get_glade_file("dgtkpopups.glade"))
dialog_glade = gtk.glade.XML(common.get_glade_file(
"dgtkpopups.glade"))
speed_dialog = dialog_glade.get_widget("speed_dialog")
spin_title = dialog_glade.get_widget("spin_title")
spin_title.set_text(_("Upload Speed (KiB/s):"))
@ -364,7 +381,7 @@ class DelugeGTK:
# Use is_showing_dlg argument as a kind of static variable to not add
# unlock tray dialog state to instance where it will be not used except as
# in this method. Assigning list to is_showing_dlg is intentional.
def unlock_tray(self,comingnext, is_showing_dlg=[False]):
def unlock_tray(self, comingnext, is_showing_dlg=[False]):
if is_showing_dlg[0]:
return
@ -376,8 +393,10 @@ class DelugeGTK:
entered_pass.set_visibility(False)
entered_pass.show()
tray_lock = gtk.Dialog(title=_("Deluge is locked"), parent=self.window,
buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
label = gtk.Label(_("Deluge is password protected.\nTo show the Deluge window, please enter your password"))
buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK,
gtk.RESPONSE_ACCEPT))
label = gtk.Label(_("Deluge is password protected.\nTo show the Deluge \
window, please enter your password"))
label.set_line_wrap(True)
label.set_justify(gtk.JUSTIFY_CENTER)
tray_lock.set_position(gtk.WIN_POS_CENTER_ALWAYS)
@ -413,25 +432,28 @@ class DelugeGTK:
'downloading' : gtk.gdk.pixbuf_new_from_file(
common.get_pixmap("downloading16.png"))}
def list_of_trackers(self,obj=None):
def list_of_trackers(self, obj=None):
torrent = self.get_selected_torrent()
if torrent is not None:
trackerslist = self.manager.get_trackers(torrent)
self.show_edit_tracker_dialog(trackerslist)
def cancel_edit_window(self,arg=None):
def cancel_edit_window(self, arg=None):
self.edit_window.destroy()
def accept_edit_window(self,arg=None):
def accept_edit_window(self, arg=None):
torrent = self.get_selected_torrent()
self.textlist = self.textbuffer.get_text(self.textbuffer.get_start_iter(), self.textbuffer.get_end_iter(), include_hidden_chars=False).strip()
self.textlist = self.textbuffer.get_text(self.textbuffer.\
get_start_iter(), self.textbuffer.get_end_iter(),
include_hidden_chars=False).strip()
self.manager.replace_trackers(torrent, self.textlist)
self.edit_window.destroy()
def show_edit_tracker_dialog(self,list):
def show_edit_tracker_dialog(self, list):
self.textbuffer = gtk.TextBuffer(table=None)
self.textbuffer.set_text(list)
self.edit_glade = gtk.glade.XML(common.get_glade_file("edit_trackers.glade"))
self.edit_glade = gtk.glade.XML(common.get_glade_file(
"edit_trackers.glade"))
self.edit_list = self.edit_glade.get_widget("txt_tracker_list")
self.edit_list.set_buffer(self.textbuffer)
self.edit_window = self.edit_glade.get_widget("edittrackers")
@ -475,7 +497,8 @@ class DelugeGTK:
def build_torrent_table(self):
## Create the torrent listview
self.torrent_view = self.wtree.get_widget("torrent_view")
torrent_glade = gtk.glade.XML(common.get_glade_file("torrent_menu.glade"), domain='deluge')
torrent_glade = gtk.glade.XML(common.get_glade_file(
"torrent_menu.glade"), domain='deluge')
torrent_glade.signal_autoconnect({
"remove_torrent": self.remove_torrent_clicked,
"edit_trackers": self.list_of_trackers,
@ -490,8 +513,8 @@ class DelugeGTK:
"queue_top": self.q_to_top,
})
self.torrent_menu = torrent_glade.get_widget("torrent_menu")
# unique_ID, Q#, Status Icon, Name, Size, Progress, Message, Seeders, Peers,
# DL, UL, ETA, Share
# unique_ID, Q#, Status Icon, Name, Size, Progress, Message, Seeders,
# Peers, DL, UL, ETA, Share
self.torrent_model = gtk.ListStore(int, gobject.TYPE_UINT,
gtk.gdk.Pixbuf, str, gobject.TYPE_UINT64, float, str, int, int,
int, int, int, int, gobject.TYPE_UINT64, float, float)
@ -526,28 +549,49 @@ class DelugeGTK:
if ratio == -1:
ratio_str = _("Unknown")
else:
ratio_str = "%.3f"%ratio
ratio_str = "%.3f" % ratio
cell.set_property('text', ratio_str)
## Initializes the columns for the torrent_view
(TORRENT_VIEW_COL_UID, TORRENT_VIEW_COL_QUEUE, TORRENT_VIEW_COL_STATUSICON, TORRENT_VIEW_COL_NAME,
TORRENT_VIEW_COL_SIZE, TORRENT_VIEW_COL_PROGRESS, TORRENT_VIEW_COL_STATUS,
TORRENT_VIEW_COL_CONNECTED_SEEDS, TORRENT_VIEW_COL_SEEDS,
TORRENT_VIEW_COL_CONNECTED_PEERS, TORRENT_VIEW_COL_PEERS, TORRENT_VIEW_COL_DOWNLOAD,
(TORRENT_VIEW_COL_UID, TORRENT_VIEW_COL_QUEUE,
TORRENT_VIEW_COL_STATUSICON, TORRENT_VIEW_COL_NAME,
TORRENT_VIEW_COL_SIZE, TORRENT_VIEW_COL_PROGRESS,
TORRENT_VIEW_COL_STATUS, TORRENT_VIEW_COL_CONNECTED_SEEDS,
TORRENT_VIEW_COL_SEEDS, TORRENT_VIEW_COL_CONNECTED_PEERS,
TORRENT_VIEW_COL_PEERS, TORRENT_VIEW_COL_DOWNLOAD,
TORRENT_VIEW_COL_UPLOAD, TORRENT_VIEW_COL_ETA,
TORRENT_VIEW_COL_AVAILABILITY, TORRENT_VIEW_COL_RATIO) = range(16)
self.queue_column = dgtk.add_text_column(self.torrent_view, "#", TORRENT_VIEW_COL_QUEUE, width=self.config.get("queue_width"))
self.name_column = dgtk.add_texticon_column(self.torrent_view, _("Name"), TORRENT_VIEW_COL_STATUSICON, TORRENT_VIEW_COL_NAME, width=self.config.get("name_width"))
self.size_column = dgtk.add_func_column(self.torrent_view, _("Size"), dgtk.cell_data_size, TORRENT_VIEW_COL_SIZE, width=self.config.get("size_width"))
self.status_column = dgtk.add_progress_column(self.torrent_view, _("Status"), TORRENT_VIEW_COL_PROGRESS, TORRENT_VIEW_COL_STATUS, width=self.config.get("status_width"))
self.seed_column = dgtk.add_func_column(self.torrent_view, _("Seeders"), peer, (TORRENT_VIEW_COL_CONNECTED_SEEDS, TORRENT_VIEW_COL_SEEDS), width=self.config.get("seed_width"))
self.peer_column = dgtk.add_func_column(self.torrent_view, _("Peers"), peer, (TORRENT_VIEW_COL_CONNECTED_PEERS, TORRENT_VIEW_COL_PEERS), width=self.config.get("peer_width"))
self.dl_column = dgtk.add_func_column(self.torrent_view, _("Down Speed"), dgtk.cell_data_speed, TORRENT_VIEW_COL_DOWNLOAD, width=self.config.get("dl_width"))
self.ul_column = dgtk.add_func_column(self.torrent_view, _("Up Speed"), dgtk.cell_data_speed, TORRENT_VIEW_COL_UPLOAD, width=self.config.get("ul_width"))
self.eta_column = dgtk.add_func_column(self.torrent_view, _("ETA"), time, TORRENT_VIEW_COL_ETA, width=self.config.get("eta_width"))
self.availability_column = dgtk.add_func_column(self.torrent_view, _("Avail."), availability, TORRENT_VIEW_COL_AVAILABILITY, width=self.config.get("availability_width"))
self.share_column = dgtk.add_func_column(self.torrent_view, _("Ratio"), ratio, TORRENT_VIEW_COL_RATIO, width=self.config.get("share_width"))
self.queue_column = dgtk.add_text_column(self.torrent_view, "#",
TORRENT_VIEW_COL_QUEUE, width=self.config.get("queue_width"))
self.name_column = dgtk.add_texticon_column(self.torrent_view, _("Name"\
), TORRENT_VIEW_COL_STATUSICON, TORRENT_VIEW_COL_NAME, width=\
self.config.get("name_width"))
self.size_column = dgtk.add_func_column(self.torrent_view, _("Size"), \
dgtk.cell_data_size, TORRENT_VIEW_COL_SIZE, width=self.config.get\
("size_width"))
self.status_column = dgtk.add_progress_column(self.torrent_view, _(\
"Status"), TORRENT_VIEW_COL_PROGRESS, TORRENT_VIEW_COL_STATUS,
width=self.config.get("status_width"))
self.seed_column = dgtk.add_func_column(self.torrent_view, _("Seeders")\
, peer, (TORRENT_VIEW_COL_CONNECTED_SEEDS, TORRENT_VIEW_COL_SEEDS)\
, width=self.config.get("seed_width"))
self.peer_column = dgtk.add_func_column(self.torrent_view, _("Peers"), \
peer, (TORRENT_VIEW_COL_CONNECTED_PEERS, TORRENT_VIEW_COL_PEERS), \
width=self.config.get("peer_width"))
self.dl_column = dgtk.add_func_column(self.torrent_view, _("Down Speed"\
), dgtk.cell_data_speed, TORRENT_VIEW_COL_DOWNLOAD, width=\
self.config.get("dl_width"))
self.ul_column = dgtk.add_func_column(self.torrent_view, _("Up Speed"),
dgtk.cell_data_speed, TORRENT_VIEW_COL_UPLOAD, width=\
self.config.get("ul_width"))
self.eta_column = dgtk.add_func_column(self.torrent_view, _("ETA"),
time, TORRENT_VIEW_COL_ETA, width=self.config.get("eta_width"))
self.availability_column = dgtk.add_func_column(self.torrent_view,
_("Avail."), availability, TORRENT_VIEW_COL_AVAILABILITY, width=\
self.config.get("availability_width"))
self.share_column = dgtk.add_func_column(self.torrent_view, _("Ratio"),
ratio, TORRENT_VIEW_COL_RATIO, width=self.config.get("share_width"))
self.name_column.set_sort_column_id(TORRENT_VIEW_COL_NAME)
self.seed_column.set_sort_column_id(TORRENT_VIEW_COL_CONNECTED_SEEDS)
@ -556,10 +600,13 @@ class DelugeGTK:
self.torrent_model.set_sort_column_id(TORRENT_VIEW_COL_QUEUE,
gtk.SORT_ASCENDING)
try:
self.torrent_view.get_selection().set_select_function(self.torrent_clicked, full=True)
self.torrent_view.get_selection().set_select_function(
self.torrent_clicked, full=True)
except TypeError:
self.torrent_view.get_selection().set_select_function(self.old_t_click)
self.torrent_view.connect("button-press-event", self.torrent_view_clicked)
self.torrent_view.get_selection().set_select_function(
self.old_t_click)
self.torrent_view.connect("button-press-event",
self.torrent_view_clicked)
def torrent_model_append(self, unique_id):
state = self.manager.get_torrent_state(unique_id)
@ -578,7 +625,8 @@ class DelugeGTK:
del self.torrent_model_dict[unique_id]
def old_t_click(self, path):
return self.torrent_clicked(self.torrent_view.get_selection(), self.torrent_model, path, False)
return self.torrent_clicked(self.torrent_view.get_selection(),
self.torrent_model, path, False)
def torrent_clicked(self, selection, model, path, is_selected):
if is_selected:
@ -605,7 +653,8 @@ class DelugeGTK:
return True
path = data[0]
is_selected = self.torrent_view.get_selection().path_is_selected(path)
is_selected = self.torrent_view.get_selection().path_is_selected\
(path)
if not is_selected:
self.torrent_view.grab_focus()
self.torrent_view.set_cursor(path)
@ -621,7 +670,8 @@ class DelugeGTK:
if self.config.get("open_folder_stock"):
if self.config.get("file_manager") == common.FileManager.xdg:
file_manager = "xdg-open"
elif self.config.get("file_manager") == common.FileManager.konqueror:
elif self.config.get("file_manager") == common.FileManager.\
konqueror:
file_manager = "konqueror"
elif self.config.get("file_manager") == common.FileManager.nautilus:
file_manager = "nautilus"
@ -680,12 +730,14 @@ class DelugeGTK:
def show_preferences_dialog(self):
active_port = self.manager.get_state()['port']
preferences_dialog = dialogs.PreferencesDlg(self.config, active_port, self.plugins)
preferences_dialog = dialogs.PreferencesDlg(self.config, active_port,
self.plugins)
preferences_dialog.show(self, self.window)
def show_preferences_dialog_clicked(self, arg=None):
if self.config.get("enable_system_tray") and \
self.config.get("lock_tray") and not self.window.get_property("visible"):
self.config.get("lock_tray") and not self.window.get_property(
"visible"):
self.unlock_tray("prefwinshow")
else:
self.show_preferences_dialog()
@ -697,9 +749,9 @@ class DelugeGTK:
plugin_dialog.show(self, self.window)
def show_plugin_dialog_clicked(self, arg=None):
if self.config.get("enable_system_tray") and \
self.config.get("lock_tray") and not self.window.get_property("visible"):
self.unlock_tray("plugwinshow")
if self.config.get("enable_system_tray") and self.config.get(
"lock_tray") and not self.window.get_property("visible"):
self.unlock_tray("plugwinshow")
else:
self.show_plugin_dialog(plugin_tab=True)
@ -721,17 +773,21 @@ class DelugeGTK:
int(self.config.get("max_download_speed") * 1024))
# Update the tray download speed limits
if self.config.get("max_download_speed") not in self.config.get("tray_downloadspeedlist") and \
self.config.get("max_download_speed") >= 0:
# We need to prepend this value and remove the last value in the list
self.config.get("tray_downloadspeedlist").insert(0, self.config.get("max_download_speed"))
if self.config.get("max_download_speed") not in self.config.get(
"tray_downloadspeedlist") and self.config.get("max_download_speed")\
>= 0:
# We prepend this value and remove the last value in the list
self.config.get("tray_downloadspeedlist").insert(0, self.config.get(
"max_download_speed"))
self.config.get("tray_downloadspeedlist").pop()
# Do the same for the upload speed limits
if self.config.get("max_upload_speed") not in self.config.get("tray_uploadspeedlist") and \
self.config.get("max_upload_speed") >= 0:
# We need to prepend this value and remove the last value in the list
self.config.get("tray_uploadspeedlist").insert(0, self.config.get("max_upload_speed"))
if self.config.get("max_upload_speed") not in self.config.get(
"tray_uploadspeedlist") and self.config.get("max_upload_speed") >= \
0:
# We prepend this value and remove the last value in the list
self.config.get("tray_uploadspeedlist").insert(0, self.config.get(
"max_upload_speed"))
self.config.get("tray_uploadspeedlist").pop()
# Re-build the tray sub-menu to display the correct active radio item
@ -744,33 +800,42 @@ class DelugeGTK:
self.config.get("pref_rc4"))
if self.config.get("peer_proxy"):
self.manager.proxy_settings(self.config.get("peer_proxy_hostname"),
self.config.get("peer_proxy_username"), self.config.get("peer_proxy_password"),
int(self.config.get("peer_proxy_port")), self.config.get("peer_proxy_type"), "peer")
self.config.get("peer_proxy_username"), self.config.get(
"peer_proxy_password"),
int(self.config.get("peer_proxy_port")), self.config.get(
"peer_proxy_type"), "peer")
if self.config.get("dht_proxy"):
self.manager.proxy_settings(self.config.get("dht_proxy_hostname"),
self.config.get("dht_proxy_username"), self.config.get("dht_proxy_password"),
int(self.config.get("dht_proxy_port")), self.config.get("dht_proxy_type"), "dht")
self.config.get("dht_proxy_username"), self.config.get(
"dht_proxy_password"),
int(self.config.get("dht_proxy_port")), self.config.get(
"dht_proxy_type"), "dht")
if self.config.get("tracker_proxy"):
self.manager.proxy_settings(self.config.get("tracker_proxy_hostname"),
self.config.get("tracker_proxy_username"), self.config.get("tracker_proxy_password"),
int(self.config.get("tracker_proxy_port")), self.config.get("tracker_proxy_type"), "tracker")
self.manager.proxy_settings(self.config.get(
"tracker_proxy_hostname"),
self.config.get("tracker_proxy_username"), self.config.get(
"tracker_proxy_password"),
int(self.config.get("tracker_proxy_port")), self.config.get(
"tracker_proxy_type"), "tracker")
if self.config.get("web_proxy"):
self.manager.proxy_settings(self.config.get("web_proxy_hostname"),
self.config.get("web_proxy_username"), self.config.get("web_proxy_password"),
int(self.config.get("web_proxy_port")), self.config.get("web_proxy_type"), "web")
self.config.get("web_proxy_username"), self.config.get(
"web_proxy_password"),
int(self.config.get("web_proxy_port")), self.config.get(
"web_proxy_type"), "web")
def get_message_from_state(self, torrent_state):
state = torrent_state['state']
is_paused = torrent_state['is_paused']
progress = torrent_state['progress']
progress = '%d%%'%int(progress * 100)
progress = '%d%%' % int(progress * 100)
if is_paused:
message = _("Paused %s")%progress
message = _("Paused %s") % progress
else:
try:
message = core.STATE_MESSAGES[state]
if state in (1, 3, 4, 7):
message = '%s %s'%(message, progress)
message = '%s %s' % (message, progress)
except IndexError:
message = ''
return message
@ -870,7 +935,8 @@ class DelugeGTK:
# We need to apply the queue changes
self.manager.apply_queue()
self.update_interface = self.window.get_property("visible") and not self.is_minimized
self.update_interface = self.window.get_property("visible") and not \
self.is_minimized
# Handle the events
self.manager.handle_events()
@ -903,11 +969,16 @@ class DelugeGTK:
# Disable torrent options if there are no torrents
self.wtree.get_widget("menu_torrent").set_sensitive(itr is not None)
self.wtree.get_widget("toolbutton_remove").set_sensitive(itr is not None)
self.wtree.get_widget("toolbutton_resume").set_sensitive(itr is not None)
self.wtree.get_widget("toolbutton_pause").set_sensitive(itr is not None)
self.wtree.get_widget("toolbutton_up").set_sensitive(itr is not None)
self.wtree.get_widget("toolbutton_down").set_sensitive(itr is not None)
self.wtree.get_widget("toolbutton_remove").set_sensitive(itr is \
not None)
self.wtree.get_widget("toolbutton_resume").set_sensitive(itr is \
not None)
self.wtree.get_widget("toolbutton_pause").set_sensitive(itr is \
not None)
self.wtree.get_widget("toolbutton_up").set_sensitive(itr is \
not None)
self.wtree.get_widget("toolbutton_down").set_sensitive(itr is \
not None)
if itr is None:
return True
@ -979,14 +1050,15 @@ class DelugeGTK:
if self.config.get("max_download_speed") < 0:
dlspeed_max = _("Unlimited")
else:
dlspeed_max = common.fspeed(self.config.get("max_download_speed_bps"))
dlspeed_max = common.fspeed(self.config.get(
"max_download_speed_bps"))
if self.config.get("max_upload_speed") < 0:
ulspeed_max = _("Unlimited")
else:
ulspeed_max = common.fspeed(self.config.get("max_upload_speed_bps"))
# Use self.statusbar_temp_msg instance var to allow plugins access it
self.statusbar_temp_msg = '%s: %s (%s) %s: %s (%s) %s: %s (%s)'%(
self.statusbar_temp_msg = '%s: %s (%s) %s: %s (%s) %s: %s (%s)' % (
_("Connections"), connections, max_connections, _("Down Speed"),
dlspeed, dlspeed_max, _("Up Speed"), ulspeed, ulspeed_max)
@ -1008,8 +1080,8 @@ class DelugeGTK:
' [' + _("DHT") + ': %s]'%(dht_peers)
msg = '%s\n%s: %s (%s)\n%s: %s (%s)%s' % (
_("Deluge Bittorrent Client"), _("Down Speed"), dlspeed, dlspeed_max,
_("Up Speed"), ulspeed, ulspeed_max, plugin_messages)
_("Deluge Bittorrent Client"), _("Down Speed"), dlspeed,
dlspeed_max, _("Up Speed"), ulspeed, ulspeed_max, plugin_messages)
self.tray_icon.set_tooltip(msg)
@ -1034,7 +1106,8 @@ class DelugeGTK:
if self.torrent_view.get_selection().count_selected_rows() == 1:
selected_path = self.torrent_view.get_selection().\
get_selected_rows()[1][0]
selected_torrent = self.torrent_model.get_value(self.torrent_model.get_iter(selected_path), 0)
selected_torrent = self.torrent_model.get_value(
self.torrent_model.get_iter(selected_path), 0)
return selected_torrent
except (TypeError, ValueError):
pass
@ -1044,16 +1117,19 @@ class DelugeGTK:
# Return a list of ids of the selected torrents
def get_selected_torrent_rows(self):
selected_ids = []
selected_paths = self.torrent_view.get_selection().get_selected_rows()[1]
selected_paths = self.torrent_view.get_selection().get_selected_rows()\
[1]
try:
for path in selected_paths:
selected_ids.append(self.torrent_model.get_value(self.torrent_model.get_iter(path), 0))
selected_ids.append(self.torrent_model.get_value(
self.torrent_model.get_iter(path), 0))
return selected_ids
except ValueError:
return None
def on_drag_data(self, widget, drag_context, x, y, selection_data, info, timestamp):
def on_drag_data(self, widget, drag_context, x, y, selection_data, info,
timestamp):
import urllib
uri_split = selection_data.data.strip().split()
@ -1106,7 +1182,8 @@ class DelugeGTK:
self.config.get('use_compact_storage'))
except core.InvalidEncodingError, e:
print "InvalidEncodingError", e
dialogs.show_popup_warning(self.window, _("An error occured while trying to add the torrent. It's possible your .torrent file is corrupted."))
dialogs.show_popup_warning(self.window, _("An error occured while \
trying to add the torrent. It's possible your .torrent file is corrupted."))
except core.DuplicateTorrentError, e:
for unique_id in self.manager.unique_IDs:
is_duplicate = self.manager.test_duplicate(torrent, unique_id)
@ -1115,29 +1192,38 @@ class DelugeGTK:
if is_duplicate:
merge_dialog = dialogs.MergeDlg()
if merge_dialog.show(self.window) == 1:
new_trackers_as_list = self.manager.dump_trackers(torrent).replace(' ','').splitlines(True)
original_trackers_as_list = self.manager.get_trackers(unique_id).replace(' ','').splitlines(True)
new_trackers_as_list = self.manager.dump_trackers(torrent).\
replace(' ','').splitlines(True)
original_trackers_as_list = self.manager.get_trackers(
unique_id).replace(' ','').splitlines(True)
for index in xrange(len(new_trackers_as_list)):
if original_trackers_as_list.count(new_trackers_as_list[index]) == 0:
original_trackers_as_list.append(new_trackers_as_list[index])
merged_trackers_as_string = ''.join([original_trackers_as_list[index] for \
if original_trackers_as_list.count(
new_trackers_as_list[index]) == 0:
original_trackers_as_list.append(
new_trackers_as_list[index])
merged_trackers_as_string = ''.join([
original_trackers_as_list[index] for \
index in xrange(len(original_trackers_as_list))])
self.manager.replace_trackers(unique_id, merged_trackers_as_string)
self.manager.replace_trackers(unique_id,
merged_trackers_as_string)
else:
dialogs.show_popup_warning(self.window, _("Unknown duplicate torrent error."))
dialogs.show_popup_warning(self.window, _("Unknown duplicate \
torrent error."))
except core.InsufficientFreeSpaceError, e:
nice_need = common.fsize(e.needed_space)
nice_free = common.fsize(e.free_space)
dialogs.show_popup_warning(self.window, _("There is not enough free disk space to complete your download.") + "\n" + \
_("Space Needed:") + " " + nice_need + "\n" + \
_("Available Space:") + " " + nice_free)
dialogs.show_popup_warning(self.window, _("There is not enough free\
disk space to complete your download.") + "\n" + \
_("Space Needed:") + " " + nice_need + "\n" +
_("Available Space:") + " " + nice_free)
else:
self.torrent_model_append(unique_id)
return unique_id
def launchpad(self, obj=None):
common.open_url_in_browser('https://translations.launchpad.net/deluge/trunk/+pots/deluge')
common.open_url_in_browser('https://translations.launchpad.net/deluge/\
trunk/+pots/deluge')
def add_torrent_clicked(self, obj=None):
torrent = dialogs.show_file_open_dialog()
@ -1169,12 +1255,13 @@ class DelugeGTK:
self.interactive_add_torrent_url(url)
def remove_torrent_clicked(self, obj=None):
glade = gtk.glade.XML(common.get_glade_file("dgtkpopups.glade"), domain='deluge')
asker = glade.get_widget("remove_torrent_dlg")
glade = gtk.glade.XML(common.get_glade_file("dgtkpopups.glade"),
domain='deluge')
asker = glade.get_widget("remove_torrent_dlg")
asker.set_icon_from_file(common.get_pixmap("deluge32.png"))
warning = glade.get_widget("warning")
warning = glade.get_widget("warning")
warning.set_text(" ")
torrent_also = glade.get_widget("torrent_also")
@ -1202,7 +1289,8 @@ class DelugeGTK:
if not args.get_active():
warning.set_text(" ")
else:
warning.set_markup("<i>" + _("Warning - all downloaded files for this torrent will be deleted!") + "</i>")
warning.set_markup("<i>" + _("Warning - all downloaded files for \
this torrent will be deleted!") + "</i>")
return False
def update_tracker(self, obj=None):
@ -1283,22 +1371,35 @@ class DelugeGTK:
self.share_column.set_visible(obj.get_active())
def load_window_settings(self):
self.wtree.get_widget("chk_infopane").set_active(self.config.get("show_infopane"))
self.wtree.get_widget("chk_toolbar").set_active(self.config.get("show_toolbar"))
self.wtree.get_widget("chk_size").set_active(self.config.get("show_size"))
self.wtree.get_widget("chk_status").set_active(self.config.get("show_status"))
self.wtree.get_widget("chk_seed").set_active(self.config.get("show_seeders"))
self.wtree.get_widget("chk_peer").set_active(self.config.get("show_peers"))
self.wtree.get_widget("chk_download").set_active(self.config.get("show_dl"))
self.wtree.get_widget("chk_upload").set_active(self.config.get("show_ul"))
self.wtree.get_widget("chk_infopane").set_active(self.config.get(
"show_infopane"))
self.wtree.get_widget("chk_toolbar").set_active(self.config.get(
"show_toolbar"))
self.wtree.get_widget("chk_size").set_active(self.config.get(
"show_size"))
self.wtree.get_widget("chk_status").set_active(self.config.get(
"show_status"))
self.wtree.get_widget("chk_seed").set_active(self.config.get(
"show_seeders"))
self.wtree.get_widget("chk_peer").set_active(self.config.get(
"show_peers"))
self.wtree.get_widget("chk_download").set_active(self.config.get(
"show_dl"))
self.wtree.get_widget("chk_upload").set_active(self.config.get(
"show_ul"))
self.wtree.get_widget("chk_eta").set_active(self.config.get("show_eta"))
self.wtree.get_widget("chk_availability").set_active(self.config.get("show_availability"))
self.wtree.get_widget("chk_ratio").set_active(self.config.get("show_share"))
self.wtree.get_widget("vpaned1").set_position(self.config.get("window_height") - self.config.get("window_pane_position"))
self.wtree.get_widget("chk_availability").set_active(self.config.get(
"show_availability"))
self.wtree.get_widget("chk_ratio").set_active(self.config.get(
"show_share"))
self.wtree.get_widget("vpaned1").set_position(self.config.get(
"window_height") - self.config.get("window_pane_position"))
def save_window_settings(self):
self.config.set("show_infopane", self.wtree.get_widget("chk_infopane").get_active())
self.config.set("show_toolbar", self.wtree.get_widget("chk_toolbar").get_active())
self.config.set("show_infopane", self.wtree.get_widget("chk_infopane").\
get_active())
self.config.set("show_toolbar", self.wtree.get_widget("chk_toolbar").\
get_active())
self.config.set("show_size", self.size_column.get_visible())
self.config.set("show_status", self.status_column.get_visible())
self.config.set("show_seeders", self.seed_column.get_visible())
@ -1306,16 +1407,19 @@ class DelugeGTK:
self.config.set("show_dl", self.dl_column.get_visible())
self.config.set("show_ul", self.ul_column.get_visible())
self.config.set("show_eta", self.eta_column.get_visible())
self.config.set("show_availability", self.availability_column.get_visible())
self.config.set("show_availability", self.availability_column.\
get_visible())
self.config.set("show_share", self.share_column.get_visible())
self.config.set("window_pane_position", self.config.get("window_height") - self.wtree.get_widget("vpaned1").get_position())
self.config.set("window_pane_position", self.config.get(
"window_height") - self.wtree.get_widget("vpaned1").get_position())
def save_column_widths(self):
to_save = ["queue", "name", "size", "status", "seed", "peer", "dl", \
to_save = ["queue", "name", "size", "status", "seed", "peer", "dl",
"ul", "eta", "availability", "share"]
for columns in to_save:
pref_name = columns + '_width'
self.config.set(pref_name, eval('self.' + columns + '_column.get_width()'))
self.config.set(pref_name, eval('self.' + columns +
'_column.get_width()'))
def window_configure_event(self, widget, event):
if self.config.get("window_maximized") == False:
@ -1350,7 +1454,8 @@ class DelugeGTK:
self.window.maximize()
def close(self, widget, event):
if self.config.get("close_to_tray") and self.config.get("enable_system_tray") and self.has_tray:
if self.config.get("close_to_tray") and self.config.get(
"enable_system_tray") and self.has_tray:
self.window.hide()
return True
else:
@ -1381,4 +1486,3 @@ class DelugeGTK:
if __name__ == "__main__":
interface = DelugeGTK()
interface.start()