diff --git a/deluge/core/torrent.py b/deluge/core/torrent.py index 5db3a4c67..723b7c583 100644 --- a/deluge/core/torrent.py +++ b/deluge/core/torrent.py @@ -620,6 +620,13 @@ class Torrent(object): if distributed_copies < 0: distributed_copies = 0.0 + # Calculate the seeds:peers ratio + if self.status.num_incomplete == 0: + # Use -1.0 to signify infinity + seeds_peers_ratio = -1.0 + else: + seeds_peers_ratio = self.status.num_complete / float(self.status.num_incomplete) + full_status = { "active_time": self.status.active_time, "all_time_download": self.status.all_time_download, @@ -651,6 +658,7 @@ class Torrent(object): "remove_at_ratio": self.options["remove_at_ratio"], "save_path": self.options["download_location"], "seeding_time": self.status.seeding_time, + "seeds_peers_ratio": seeds_peers_ratio, "seed_rank": self.status.seed_rank, "state": self.state, "stop_at_ratio": self.options["stop_at_ratio"], diff --git a/deluge/ui/gtkui/edittrackersdialog.py b/deluge/ui/gtkui/edittrackersdialog.py index 0571a6c64..7864b7549 100644 --- a/deluge/ui/gtkui/edittrackersdialog.py +++ b/deluge/ui/gtkui/edittrackersdialog.py @@ -149,17 +149,6 @@ class EditTrackersDialog: """Returns the selected tracker""" return self.treeview.get_selection().get_selected()[1] - def on_button_up_clicked(self, widget): - log.debug("on_button_up_clicked") - selected = self.get_selected() - num_rows = self.liststore.iter_n_children(None) - if selected != None and num_rows > 1: - tier = self.liststore.get_value(selected, 0) - new_tier = tier + 1 - # Now change the tier for this tracker - self.liststore.set_value(selected, 0, new_tier) - self.changed = True - def on_button_add_clicked(self, widget): log.debug("on_button_add_clicked") # Show the add tracker dialog @@ -196,8 +185,8 @@ class EditTrackersDialog: self.edit_tracker_entry.hide() self.changed = True - def on_button_down_clicked(self, widget): - log.debug("on_button_down_clicked") + def on_button_up_clicked(self, widget): + log.debug("on_button_up_clicked") selected = self.get_selected() num_rows = self.liststore.iter_n_children(None) if selected != None and num_rows > 1: @@ -209,6 +198,16 @@ class EditTrackersDialog: self.liststore.set_value(selected, 0, new_tier) self.changed = True + def on_button_down_clicked(self, widget): + log.debug("on_button_down_clicked") + selected = self.get_selected() + num_rows = self.liststore.iter_n_children(None) + if selected != None and num_rows > 1: + tier = self.liststore.get_value(selected, 0) + new_tier = tier + 1 + # Now change the tier for this tracker + self.liststore.set_value(selected, 0, new_tier) + self.changed = True def on_button_add_ok_clicked(self, widget): log.debug("on_button_add_ok_clicked") diff --git a/deluge/ui/gtkui/gtkui.py b/deluge/ui/gtkui/gtkui.py index b87c56a2f..eed6551ae 100644 --- a/deluge/ui/gtkui/gtkui.py +++ b/deluge/ui/gtkui/gtkui.py @@ -114,7 +114,7 @@ DEFAULT_PREFS = { "interactive_add": True, "focus_add_dialog": True, "enable_system_tray": True, - "close_to_tray": True, + "close_to_tray": False, "start_in_tray": False, "enable_appindicator": False, "lock_tray": False, diff --git a/deluge/ui/gtkui/listview.py b/deluge/ui/gtkui/listview.py index 87e69c55b..f708c503e 100644 --- a/deluge/ui/gtkui/listview.py +++ b/deluge/ui/gtkui/listview.py @@ -111,6 +111,15 @@ def cell_data_date_or_never(column, cell, model, row, data): else: cell.set_property('text', _("Never")) +def cell_data_speed_limit(column, cell, model, row, data): + """Display value as a speed, eg. 2 KiB/s""" + speed = model.get_value(row, data) + speed_str = "" + if speed > 0: + speed_str = deluge.common.fspeed(speed * 1024) + + cell.set_property('text', speed_str) + class ListViewColumnState: """Used for saving/loading column state""" def __init__(self, name, position, width, visible, sort, sort_order): diff --git a/deluge/ui/gtkui/torrentview.py b/deluge/ui/gtkui/torrentview.py index 638616dd5..b95402a62 100644 --- a/deluge/ui/gtkui/torrentview.py +++ b/deluge/ui/gtkui/torrentview.py @@ -235,10 +235,16 @@ class TorrentView(listview.ListView, component.Component): self.add_func_column(_("Peers"), listview.cell_data_peer, [int, int], status_field=["num_peers", "total_peers"], sort_func=seed_peer_column_sort) + self.add_func_column(_("Seeders") + "/" + _("Peers"), listview.cell_data_ratio, [float], + status_field=["seeds_peers_ratio"]) self.add_func_column(_("Down Speed"), listview.cell_data_speed, [float], status_field=["download_payload_rate"]) self.add_func_column(_("Up Speed"), listview.cell_data_speed, [float], status_field=["upload_payload_rate"]) + self.add_func_column(_("Down Limit"), listview.cell_data_speed_limit, [float], + status_field=["max_download_speed"]) + self.add_func_column(_("Up Limit"), listview.cell_data_speed_limit, [float], + status_field=["max_upload_speed"]) self.add_func_column(_("ETA"), listview.cell_data_time, [int], status_field=["eta"], sort_func=eta_column_sort) self.add_func_column(_("Ratio"), listview.cell_data_ratio, [float],