From f945a6f5976afa9167b3a977f53708ea360b16d2 Mon Sep 17 00:00:00 2001 From: Andrew Resch Date: Sat, 8 Nov 2008 06:17:42 +0000 Subject: [PATCH] Increase the per-torrent stop share ratio max to 99999.0 and make the spinner and remove at ratio checkbox insensitive if stop at ratio not checked --- ChangeLog | 10 +- deluge/ui/gtkui/glade/main_window.glade | 1254 +++++++++++------------ deluge/ui/gtkui/options_tab.py | 47 +- 3 files changed, 636 insertions(+), 675 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1ac06dd54..0ca54513b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -26,19 +26,17 @@ Deluge 1.1.0 - "" (In Development) * Persistent sessions #486 * Plugin improvements for easy use of templates and images in eggs. #497 * Classic template takes over some style elements from white template. - * Javascript Auto Refresh * https (for users that know how to create certificates) - * easyer apache mod_proxy use. + * Easier apache mod_proxy use. * Redesigned sidebar AjaxUI: - * hosted in a webui template. + * Hosted in a webui template. ConsoleUI (previously null-ui): - * colors and enhancements by idoa01 - * callable from command-line for scripts. + * New ConsoleUI written by Idoa01 + * Callable from command-line for scripts. Plugins: * Stats plugin for graphs. * Label plugin for grouping torrents and per torrent settings. - diff --git a/deluge/ui/gtkui/glade/main_window.glade b/deluge/ui/gtkui/glade/main_window.glade index 654a2a4d5..db7b6f6ea 100644 --- a/deluge/ui/gtkui/glade/main_window.glade +++ b/deluge/ui/gtkui/glade/main_window.glade @@ -316,10 +316,6 @@ gtk-add - - False - False - @@ -330,19 +326,11 @@ gtk-remove - - False - False - True - - False - False - @@ -354,10 +342,6 @@ gtk-media-pause - - False - False - @@ -369,19 +353,11 @@ gtk-media-play - - False - False - True - - False - False - @@ -393,10 +369,6 @@ gtk-go-up - - False - False - @@ -408,20 +380,12 @@ gtk-go-down - - False - False - True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - False - False - @@ -432,10 +396,6 @@ gtk-preferences - - False - False - @@ -446,10 +406,6 @@ gtk-network - - False - False - @@ -491,7 +447,6 @@ True True - True True True False @@ -685,219 +640,280 @@ 10 5 - + + True + 0 + + + 5 + 6 + 3 + 4 + GTK_FILL + + + + + True + 0 + <b>Auto Managed:</b> + True + + + 4 + 5 + 3 + 4 + GTK_FILL + + + + True 0 7 8 - 3 - 4 + 2 + 3 GTK_FILL - + True 0 - <b>Date Added:</b> + + + 7 + 8 + 1 + 2 + GTK_FILL + + + + + True + 0 + <b>Seed Rank:</b> True 6 7 - 3 - 4 - GTK_FILL - - - - - True - 0 - - - 1 - 2 - GTK_FILL - - - - - True - 0 - - - 3 - 4 - GTK_FILL - - - - - True - 0 - - - 1 - 2 - 1 - 2 - GTK_FILL - - - - - True - 0 - - - 3 - 4 - 1 - 2 - GTK_FILL - - - - - True - 5 - - - True - 0 - <b>Downloaded:</b> - True - - - - - GTK_FILL - - - - - True - 5 - - - True - 0 - <b>Uploaded:</b> - True - - - - - 1 - 2 - GTK_FILL - - - - - True - 5 - - - True - 0 - <b>Share Ratio:</b> - True - - - - 2 3 GTK_FILL - + True - 5 - - - True - 0 - <b>Next Announce:</b> - True - - + 0 + <b>Seeding Time:</b> + True - 3 - 4 - GTK_FILL - - - - - True - 15 - 5 - - - True - 0 - <b>Speed:</b> - True - - - - - 2 - 3 - GTK_FILL - - - - - True - 15 - 5 - - - True - 0 - <b>Speed:</b> - True - - - - - 2 - 3 + 6 + 7 1 2 GTK_FILL - + True - 15 - 5 - - - True - 0 - <b>ETA:</b> - True - - + 0 - 2 - 3 + 7 + 8 + GTK_FILL + + + + + True + 0 + <b>Active Time:</b> + True + + + 6 + 7 + GTK_FILL + + + + + True + 0 + True + + + 1 + 2 + 3 + 4 + GTK_FILL + + + + + True + 0 + + + 3 + 4 + 3 + 4 + GTK_FILL + + + + + True + 0 + True + PANGO_WRAP_CHAR + True + + + 1 + 8 + 4 + 5 + GTK_FILL + + + + + True + 0 + 0 + <b>Tracker Status:</b> + True + + + 4 + 5 + GTK_FILL + GTK_FILL + + + + + True + 0 + True + PANGO_WRAP_WORD_CHAR + + + 5 + 6 2 3 GTK_FILL + + + True + 0 + 1 + <b>Availability:</b> + True + + + 4 + 5 + 2 + 3 + GTK_FILL + + + + + True + 0 + + + 3 + 4 + 2 + 3 + GTK_FILL + + + + + True + 0 + + + 1 + 2 + 2 + 3 + GTK_FILL + + + + + True + 0 + + + 5 + 6 + 1 + 2 + GTK_FILL + + + + + True + 0 + <b>Peers:</b> + True + + + 4 + 5 + 1 + 2 + GTK_FILL + + + + + True + 0 + + + 5 + 6 + GTK_FILL + + + + + True + 0 + <b>Seeders:</b> + True + + + 4 + 5 + GTK_FILL + + True @@ -921,275 +937,214 @@ - + True - 0 - <b>Seeders:</b> - True + 15 + 5 + + + True + 0 + <b>ETA:</b> + True + + - 4 - 5 - GTK_FILL - - - - - True - 0 - - - 5 - 6 - GTK_FILL - - - - - True - 0 - <b>Peers:</b> - True - - - 4 - 5 - 1 - 2 - GTK_FILL - - - - - True - 0 - - - 5 - 6 - 1 - 2 - GTK_FILL - - - - - True - 0 - - - 1 - 2 + 2 + 3 2 3 GTK_FILL - + + True + 15 + 5 + + + True + 0 + <b>Speed:</b> + True + + + + + 2 + 3 + 1 + 2 + GTK_FILL + + + + + True + 15 + 5 + + + True + 0 + <b>Speed:</b> + True + + + + + 2 + 3 + GTK_FILL + + + + + True + 5 + + + True + 0 + <b>Next Announce:</b> + True + + + + + 3 + 4 + GTK_FILL + + + + + True + 5 + + + True + 0 + <b>Share Ratio:</b> + True + + + + + 2 + 3 + GTK_FILL + + + + + True + 5 + + + True + 0 + <b>Uploaded:</b> + True + + + + + 1 + 2 + GTK_FILL + + + + + True + 5 + + + True + 0 + <b>Downloaded:</b> + True + + + + + GTK_FILL + + + + True 0 3 4 - 2 - 3 + 1 + 2 GTK_FILL - + True 0 - 1 - <b>Availability:</b> - True - - - 4 - 5 - 2 - 3 - GTK_FILL - - - - - True - 0 - True - PANGO_WRAP_WORD_CHAR - - - 5 - 6 - 2 - 3 - GTK_FILL - - - - - True - 0 - 0 - <b>Tracker Status:</b> - True - - - 4 - 5 - GTK_FILL - GTK_FILL - - - - - True - 0 - True - PANGO_WRAP_CHAR - True 1 - 8 - 4 - 5 - GTK_FILL + 2 + 1 + 2 + GTK_FILL - + True 0 3 4 - 3 - 4 GTK_FILL - + True 0 - True 1 2 + GTK_FILL + + + + + True + 0 + <b>Date Added:</b> + True + + + 6 + 7 3 4 GTK_FILL - - True - 0 - <b>Active Time:</b> - True - - - 6 - 7 - GTK_FILL - - - - + True 0 7 8 - GTK_FILL - - - - - True - 0 - <b>Seeding Time:</b> - True - - - 6 - 7 - 1 - 2 - GTK_FILL - - - - - True - 0 - <b>Seed Rank:</b> - True - - - 6 - 7 - 2 - 3 - GTK_FILL - - - - - True - 0 - - - 7 - 8 - 1 - 2 - GTK_FILL - - - - - True - 0 - - - 7 - 8 - 2 - 3 - GTK_FILL - - - - - True - 0 - <b>Auto Managed:</b> - True - - - 4 - 5 - 3 - 4 - GTK_FILL - - - - - True - 0 - - - 5 - 6 3 4 GTK_FILL @@ -1279,7 +1234,7 @@ - + True 0 True @@ -1287,43 +1242,28 @@ 1 2 - 3 - 4 + 4 + 5 - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - True - - - 1 - 4 - 5 - 6 - - - - - + True 0 1 - <b>Status:</b> + <b># of files:</b> True - 5 - 6 + 4 + 5 GTK_FILL - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 @@ -1334,66 +1274,53 @@ 1 4 - 2 - 3 + 1 + 2 - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 5 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - <b>Path:</b> - True - - - - - 2 - 3 - GTK_FILL - - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 5 - - - True - 0 - 0 - 1 - <b>Name:</b> - True - - - - - GTK_FILL - - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_STRUCTURE_MASK 0 - True + <b>Hash:</b> + True + + + 1 + 2 + GTK_FILL + + + + + + True + 0 PANGO_WRAP_CHAR True 1 4 + 6 + 7 + + + + + + True + 0 + 1 + <b>Tracker:</b> + True + + + 6 + 7 + GTK_FILL @@ -1420,52 +1347,65 @@ - - True - 0 - 1 - <b>Tracker:</b> - True - - - 6 - 7 - GTK_FILL - - - - - + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_STRUCTURE_MASK 0 + True PANGO_WRAP_CHAR True 1 4 - 6 - 7 - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - <b>Hash:</b> - True + 5 + + + True + 0 + 0 + 1 + <b>Name:</b> + True + + - 1 - 2 GTK_FILL - + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 5 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + <b>Path:</b> + True + + + + + 2 + 3 + GTK_FILL + + + + + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 @@ -1476,28 +1416,43 @@ 1 4 - 1 - 2 + 2 + 3 - + True 0 1 - <b># of files:</b> + <b>Status:</b> True - 4 - 5 + 5 + 6 GTK_FILL - + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + True + + + 1 + 4 + 5 + 6 + + + + + True 0 True @@ -1505,8 +1460,8 @@ 1 2 - 4 - 5 + 3 + 4 @@ -1563,7 +1518,6 @@ True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - True @@ -1613,7 +1567,6 @@ True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - True @@ -1689,7 +1642,7 @@ - + True True 6 @@ -1699,100 +1652,8 @@ 1 2 - 3 - 4 - - - - - - - True - 0 - Max Upload Slots: - - - 3 - 4 - GTK_FILL - - - - - - True - KiB/s - - - 2 - 3 - 1 - 2 - - - - - - - True - KiB/s - - - 2 - 3 - - - - - - - True - 0 - Max Download Speed: - - - GTK_FILL - - - - - - True - 0 - Max Upload Speed: - - - 1 - 2 - GTK_FILL - - - - - - True - 0 - Max Connections: - - 2 3 - GTK_FILL - - - - - - True - True - 6 - 1 - -1 -1 999999 1 10 10 - 1 - - - 1 - 2 @@ -1816,7 +1677,99 @@ - + + True + True + 6 + 1 + -1 -1 999999 1 10 10 + 1 + + + 1 + 2 + + + + + + + True + 0 + Max Connections: + + + 2 + 3 + GTK_FILL + + + + + + True + 0 + Max Upload Speed: + + + 1 + 2 + GTK_FILL + + + + + + True + 0 + Max Download Speed: + + + GTK_FILL + + + + + + True + KiB/s + + + 2 + 3 + + + + + + + True + KiB/s + + + 2 + 3 + 1 + 2 + + + + + + + True + 0 + Max Upload Slots: + + + 3 + 4 + GTK_FILL + + + + + True True 6 @@ -1826,8 +1779,8 @@ 1 2 - 2 - 3 + 3 + 4 @@ -1892,6 +1845,7 @@ Stop seed at ratio: 0 True + False @@ -1903,7 +1857,7 @@ True True 1 - 2 0 999 0.10000000000000001 10 10 + 2 0 99999 0.10000000000000001 10 10 1 True @@ -2465,23 +2419,14 @@ 10 2 - - True - 0 - <i>Current Version:</i> - True - - - GTK_FILL - - - - + True 1 2 + 1 + 2 @@ -2499,17 +2444,26 @@ - + True 1 2 - 1 - 2 + + + True + 0 + <i>Current Version:</i> + True + + + GTK_FILL + + diff --git a/deluge/ui/gtkui/options_tab.py b/deluge/ui/gtkui/options_tab.py index 8a6e0390b..8f27e664e 100644 --- a/deluge/ui/gtkui/options_tab.py +++ b/deluge/ui/gtkui/options_tab.py @@ -2,19 +2,19 @@ # options_tab.py # # Copyright (C) 2008 Andrew Resch ('andar') -# +# # Deluge is free software. -# +# # You may redistribute it and/or modify it under the terms of the # GNU General Public License, as published by the Free Software # Foundation; either version 3 of the License, or (at your option) # any later version. -# +# # deluge is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with deluge. If not, write to: # The Free Software Foundation, Inc., @@ -39,11 +39,11 @@ class OptionsTab(Tab): def __init__(self): Tab.__init__(self) glade = component.get("MainWindow").get_glade() - + self._name = "Options" self._child_widget = glade.get_widget("options_tab") self._tab_label = glade.get_widget("options_tab_label") - + self.spin_max_download = glade.get_widget("spin_max_download") self.spin_max_upload = glade.get_widget("spin_max_upload") self.spin_max_connections = glade.get_widget("spin_max_connections") @@ -57,14 +57,15 @@ class OptionsTab(Tab): self.chk_move_completed = glade.get_widget("chk_move_completed") self.filechooser_move_completed = glade.get_widget("filechooser_move_completed") self.entry_move_completed = glade.get_widget("entry_move_completed") - + self.prev_torrent_id = None self.prev_status = None - + glade.signal_autoconnect({ "on_button_apply_clicked": self._on_button_apply_clicked, "on_button_edit_trackers_clicked": self._on_button_edit_trackers_clicked, - "on_chk_move_completed_toggled": self._on_chk_move_completed_toggled + "on_chk_move_completed_toggled": self._on_chk_move_completed_toggled, + "on_chk_stop_at_ratio_toggled": self._on_chk_stop_at_ratio_toggled }) def start(self): @@ -74,7 +75,7 @@ class OptionsTab(Tab): else: self.filechooser_move_completed.hide() self.entry_move_completed.show() - + def stop(self): pass @@ -90,7 +91,7 @@ class OptionsTab(Tab): # No torrent is selected in the torrentview self._child_widget.set_sensitive(False) return - + if torrent_id != self.prev_torrent_id: self.prev_status = None @@ -112,13 +113,13 @@ class OptionsTab(Tab): def clear(self): self.prev_torrent_id = None self.prev_status = None - + def _on_get_torrent_status(self, status): # We only want to update values that have been applied in the core. This # is so we don't overwrite the user changes that haven't been applied yet. if self.prev_status == None: self.prev_status = {}.fromkeys(status.keys(), None) - + if status != self.prev_status: if status["max_download_speed"] != self.prev_status["max_download_speed"]: self.spin_max_download.set_value(status["max_download_speed"]) @@ -136,6 +137,8 @@ class OptionsTab(Tab): self.chk_auto_managed.set_active(status["is_auto_managed"]) if status["stop_at_ratio"] != self.prev_status["stop_at_ratio"]: self.chk_stop_at_ratio.set_active(status["stop_at_ratio"]) + self.spin_stop_ratio.set_sensitive(status["stop_at_ratio"]) + self.chk_remove_at_ratio.set_sensitive(status["stop_at_ratio"]) if status["stop_ratio"] != self.prev_status["stop_ratio"]: self.spin_stop_ratio.set_value(status["stop_ratio"]) if status["remove_at_ratio"] != self.prev_status["remove_at_ratio"]: @@ -147,9 +150,9 @@ class OptionsTab(Tab): self.filechooser_move_completed.set_current_folder(status["move_on_completed_path"]) else: self.entry_move_completed.set_text(status["move_on_completed_path"]) - + self.prev_status = status - + def _on_button_apply_clicked(self, button): if self.spin_max_download.get_value() != self.prev_status["max_download_speed"]: client.set_torrent_max_download_speed(self.prev_torrent_id, self.spin_max_download.get_value()) @@ -177,20 +180,26 @@ class OptionsTab(Tab): else: path = self.entry_move_completed.get_text() client.set_torrent_move_on_completed_path(self.prev_torrent_id, path) - - + + def _on_button_edit_trackers_clicked(self, button): from edittrackersdialog import EditTrackersDialog dialog = EditTrackersDialog( self.prev_torrent_id, component.get("MainWindow").window) dialog.run() - + def _on_chk_move_completed_toggled(self, widget): value = self.chk_move_completed.get_active() if client.is_localhost(): widget = self.filechooser_move_completed else: widget = self.entry_move_completed - + widget.set_sensitive(value) + + def _on_chk_stop_at_ratio_toggled(self, widget): + value = widget.get_active() + + self.spin_stop_ratio.set_sensitive(value) + self.chk_remove_at_ratio.set_sensitive(value)