diff --git a/src/interface.py b/src/interface.py index 0eaa01d09..db2f289d3 100644 --- a/src/interface.py +++ b/src/interface.py @@ -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("" + _("Warning - all downloaded files for this torrent will be deleted!") + "") + warning.set_markup("" + _("Warning - all downloaded files for \ +this torrent will be deleted!") + "") 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() -