diff --git a/ChangeLog b/ChangeLog index 9750e9afd..0b6398064 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,11 +3,49 @@ * Catch & log KeyError when removing a torrent from the queued torrents set * Fix moving/renaming torrents with non-ascii characters in libtorrent 0.16 * Make sure queue order is preserved when restarting + * #2160: Disable use of python bindings for libtorrent extensions and replace with session flag + * #2163: Fix unable add torrent file with empty (0:) encoding tag + * #2201: Fix error in authmanager if auth file has extra newlines ==== GtkUI ==== * Add move completed option to add torrent dialog * Prevent jitter in torrent view * Fix torrent creation with non-ascii characters + * Fix #2100 : Add option not to bring main window to front when adding torrents through ipcinterface + * Add Quit Dialog when toggling classic mode in preferences and only show connection manager when not in classic mode. + * #2169: Fix 'Download Location' in the Add Torrent Dialog not set correctly when folder typed into Other->Location field + * #2171: Fix the Add Peer dialog not responding if empty or invalid values entered + * #2104: Fix no title set for the appindicator + * #2086: Fix submenus and icons for appindicator + +==== Console ==== + * LP#1004793: Enable use of connect command in non-interactive mode + * Ensure console commands are executed in order + * #2065: Fix crash with missing closing quote + * #1397: Add support for -s STATE in info command + +==== WebUI ==== + * #2112: Fix world readable tmp directory in json_api + * #2069: Fix login window layout problem when using larger than default font size + * #1890: Fix columns in files and peers view could use some spacing + * #2103: Fix sorting by name is case-sensitive [sedulous] + * #2120: Fix manually entered values not being saved in spinners + * #2212: Fix unable to scroll in proxy preferences page + * Fix autoconnecting to the default host + +==== Windows OS ==== + * Hide the cmd windows when running deluged.exe or deluge-web.exe + * Add deluged-debug.exe and deluge-web-debug.exe that still show the cmd window + * Add gtk locale files to fix untranslated text + * Fix the Open Folder option not working with non-ascii paths + * Fix the daemon starting with config dir containing spaces + * Fix Windows tray submenu items requiring right-click instead of left-click + +==== OS X ==== + * Fix Open File/Folder option + +==== Execute ==== + * Fix execute plugin not working with unicode torrent names === Deluge 1.3.5 (09 April 2012) === ==== Core ==== diff --git a/deluge/i18n/deluge.pot b/deluge/i18n/deluge.pot index 9e8140c57..e8266c100 100644 --- a/deluge/i18n/deluge.pot +++ b/deluge/i18n/deluge.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Deluge 1.3.4\n" +"Project-Id-Version: Deluge 1.3.5\n" "Report-Msgid-Bugs-To: http://deluge-torrent.org\n" -"POT-Creation-Date: 2012-03-11 19:23+0000\n" +"POT-Creation-Date: 2012-11-26 16:33+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,71 +17,71 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: deluge/common.py:274 +#: deluge/common.py:279 msgid "KiB" msgstr "" -#: deluge/common.py:277 +#: deluge/common.py:282 msgid "MiB" msgstr "" -#: deluge/common.py:279 +#: deluge/common.py:284 msgid "GiB" msgstr "" -#: deluge/common.py:298 +#: deluge/common.py:303 msgid "K" msgstr "" -#: deluge/common.py:301 +#: deluge/common.py:306 msgid "M" msgstr "" -#: deluge/common.py:303 +#: deluge/common.py:308 msgid "G" msgstr "" -#: deluge/common.py:339 +#: deluge/common.py:344 #: deluge/plugins/autoadd/autoadd/data/autoadd_options.glade:630 #: deluge/plugins/autoadd/autoadd/data/autoadd_options.glade:644 #: deluge/plugins/label/label/data/label_options.glade:132 #: deluge/plugins/label/label/data/label_options.glade:195 #: deluge/ui/console/statusbars.py:96 deluge/ui/console/statusbars.py:101 -#: deluge/ui/gtkui/systemtray.py:251 deluge/ui/gtkui/systemtray.py:255 -#: deluge/ui/gtkui/systemtray.py:271 deluge/ui/gtkui/systemtray.py:277 -#: deluge/ui/gtkui/systemtray.py:422 deluge/ui/gtkui/systemtray.py:427 -#: deluge/ui/gtkui/menubar.py:436 deluge/ui/gtkui/menubar.py:437 -#: deluge/ui/gtkui/status_tab.py:62 deluge/ui/gtkui/statusbar.py:363 -#: deluge/ui/gtkui/statusbar.py:373 deluge/ui/gtkui/statusbar.py:378 -#: deluge/ui/gtkui/statusbar.py:390 deluge/ui/gtkui/statusbar.py:401 -#: deluge/ui/gtkui/statusbar.py:418 deluge/ui/gtkui/statusbar.py:429 +#: deluge/ui/gtkui/systemtray.py:245 deluge/ui/gtkui/systemtray.py:249 +#: deluge/ui/gtkui/systemtray.py:265 deluge/ui/gtkui/systemtray.py:271 +#: deluge/ui/gtkui/systemtray.py:425 deluge/ui/gtkui/menubar.py:435 +#: deluge/ui/gtkui/menubar.py:436 deluge/ui/gtkui/status_tab.py:62 +#: deluge/ui/gtkui/statusbar.py:363 deluge/ui/gtkui/statusbar.py:373 +#: deluge/ui/gtkui/statusbar.py:378 deluge/ui/gtkui/statusbar.py:390 +#: deluge/ui/gtkui/statusbar.py:401 deluge/ui/gtkui/statusbar.py:418 +#: deluge/ui/gtkui/statusbar.py:429 #: deluge/ui/gtkui/glade/main_window.glade:1831 #: deluge/ui/gtkui/glade/main_window.glade:1843 msgid "KiB/s" msgstr "" -#: deluge/common.py:342 +#: deluge/common.py:347 msgid "MiB/s" msgstr "" -#: deluge/common.py:344 +#: deluge/common.py:349 msgid "GiB/s" msgstr "" -#: deluge/core/filtermanager.py:94 deluge/core/torrentmanager.py:973 +#: deluge/core/filtermanager.py:94 deluge/core/torrentmanager.py:1002 #: deluge/ui/gtkui/torrentview.py:90 deluge/ui/gtkui/filtertreeview.py:77 msgid "Error" msgstr "" -#: deluge/core/torrentmanager.py:939 +#: deluge/core/torrentmanager.py:968 msgid "Announce OK" msgstr "" -#: deluge/core/torrentmanager.py:955 +#: deluge/core/torrentmanager.py:984 msgid "Announce Sent" msgstr "" -#: deluge/core/torrentmanager.py:963 +#: deluge/core/torrentmanager.py:992 msgid "Warning" msgstr "" @@ -199,29 +199,29 @@ msgid "Hostname:" msgstr "" #: deluge/plugins/notifications/notifications/data/config.glade:194 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3340 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3527 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3714 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3903 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3353 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3540 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3727 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3916 #: deluge/ui/gtkui/glade/connection_manager.glade:57 msgid "Port:" msgstr "" #: deluge/plugins/notifications/notifications/data/config.glade:226 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3422 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3609 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3796 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3986 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3435 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3622 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3809 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3999 #: deluge/ui/gtkui/glade/connection_manager.glade:146 msgid "Username:" msgstr "" #: deluge/plugins/notifications/notifications/data/config.glade:250 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2120 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3286 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3473 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3660 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3847 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2133 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3299 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3486 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3673 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3860 #: deluge/ui/gtkui/glade/connection_manager.glade:135 msgid "Password:" msgstr "" @@ -280,6 +280,7 @@ msgstr "" #: deluge/ui/gtkui/glade/preferences_dialog.glade:289 #: deluge/ui/gtkui/glade/main_window.glade:2026 #: deluge/ui/gtkui/glade/add_torrent_dialog.glade:369 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:443 msgid "Select A Folder" msgstr "" @@ -295,9 +296,9 @@ msgstr "" #: deluge/plugins/extractor/extractor/data/extractor_prefs.glade:87 #: deluge/plugins/blocklist/blocklist/data/blocklist_pref.glade:52 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2831 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2844 #: deluge/ui/gtkui/glade/main_window.glade:2177 -#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:700 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:776 msgid "General" msgstr "" @@ -366,7 +367,7 @@ msgstr "" #: deluge/plugins/blocklist/blocklist/data/blocklist_pref.glade:26 #: deluge/plugins/blocklist/blocklist/data/blocklist_pref.glade:381 -#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:1011 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:1087 msgid "URL:" msgstr "" @@ -384,7 +385,7 @@ msgstr "" #: deluge/plugins/blocklist/blocklist/data/blocklist_pref.glade:151 #: deluge/plugins/webui/webui/data/config.glade:92 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4163 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4176 msgid "Settings" msgstr "" @@ -414,10 +415,10 @@ msgid "Options" msgstr "" #: deluge/plugins/blocklist/blocklist/data/blocklist_pref.glade:393 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3410 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3597 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3784 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3974 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3423 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3610 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3797 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3987 msgid "Type:" msgstr "" @@ -430,7 +431,7 @@ msgid "File Size:" msgstr "" #: deluge/plugins/blocklist/blocklist/data/blocklist_pref.glade:437 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4809 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4822 msgid "Info" msgstr "" @@ -533,13 +534,13 @@ msgstr "" #: deluge/plugins/autoadd/autoadd/data/autoadd_options.glade:533 #: deluge/ui/gtkui/glade/main_window.glade:1795 -#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:547 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:623 msgid "Max Connections:" msgstr "" #: deluge/plugins/autoadd/autoadd/data/autoadd_options.glade:550 #: deluge/ui/gtkui/glade/main_window.glade:1858 -#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:561 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:637 msgid "Max Upload Slots:" msgstr "" @@ -550,7 +551,7 @@ msgstr "" #: deluge/plugins/autoadd/autoadd/data/autoadd_options.glade:683 #: deluge/ui/gtkui/glade/main_window.glade:1897 -#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:630 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:706 msgid "Bandwidth" msgstr "" @@ -1756,41 +1757,25 @@ msgstr "" msgid "Starting server in PID" msgstr "" -#: deluge/ui/web/json_api.py:776 deluge/ui/web/json_api.py:795 -#: deluge/ui/web/json_api.py:804 deluge/ui/web/json_api.py:807 -#: deluge/ui/web/json_api.py:814 deluge/ui/gtkui/connectionmanager.py:75 -#: deluge/ui/gtkui/connectionmanager.py:215 -#: deluge/ui/gtkui/connectionmanager.py:246 -#: deluge/ui/gtkui/connectionmanager.py:283 -#: deluge/ui/gtkui/connectionmanager.py:296 -#: deluge/ui/gtkui/connectionmanager.py:378 -#: deluge/ui/gtkui/connectionmanager.py:389 -#: deluge/ui/gtkui/connectionmanager.py:453 -#: deluge/ui/gtkui/connectionmanager.py:570 +#: deluge/ui/web/json_api.py:780 deluge/ui/web/json_api.py:799 +#: deluge/ui/web/json_api.py:808 deluge/ui/web/json_api.py:811 +#: deluge/ui/web/json_api.py:818 msgid "Offline" msgstr "" -#: deluge/ui/web/json_api.py:800 deluge/ui/gtkui/connectionmanager.py:76 -#: deluge/ui/gtkui/connectionmanager.py:274 -#: deluge/ui/gtkui/connectionmanager.py:382 -#: deluge/ui/gtkui/connectionmanager.py:553 +#: deluge/ui/web/json_api.py:804 msgid "Online" msgstr "" -#: deluge/ui/web/json_api.py:820 deluge/ui/gtkui/connectionmanager.py:77 -#: deluge/ui/gtkui/connectionmanager.py:313 -#: deluge/ui/gtkui/connectionmanager.py:372 -#: deluge/ui/gtkui/connectionmanager.py:382 -#: deluge/ui/gtkui/connectionmanager.py:441 -#: deluge/ui/gtkui/connectionmanager.py:553 +#: deluge/ui/web/json_api.py:824 msgid "Connected" msgstr "" -#: deluge/ui/web/json_api.py:847 +#: deluge/ui/web/json_api.py:851 msgid "Daemon doesn't exist" msgstr "" -#: deluge/ui/web/json_api.py:853 +#: deluge/ui/web/json_api.py:857 msgid "Daemon not running" msgstr "" @@ -1849,7 +1834,7 @@ msgstr "" #: deluge/ui/gtkui/torrentview.py:239 #: deluge/ui/gtkui/createtorrentdialog.py:90 deluge/ui/gtkui/files_tab.py:143 -#: deluge/ui/gtkui/addtorrentdialog.py:124 +#: deluge/ui/gtkui/addtorrentdialog.py:125 msgid "Size" msgstr "" @@ -1928,53 +1913,44 @@ msgstr "" msgid "Client Version" msgstr "" -#: deluge/ui/gtkui/systemtray.py:201 deluge/ui/gtkui/systemtray.py:258 -#: deluge/ui/gtkui/aboutdialog.py:55 -#: deluge/data/share/applications/deluge.desktop.in.h:2 +#: deluge/ui/gtkui/systemtray.py:113 deluge/ui/gtkui/systemtray.py:195 +#: deluge/ui/gtkui/systemtray.py:252 deluge/ui/gtkui/aboutdialog.py:55 +#: deluge/data/share/applications/deluge.desktop.in.h:1 msgid "Deluge" msgstr "" -#: deluge/ui/gtkui/systemtray.py:201 +#: deluge/ui/gtkui/systemtray.py:195 msgid "Not Connected..." msgstr "" -#: deluge/ui/gtkui/systemtray.py:249 deluge/ui/gtkui/systemtray.py:253 -#: deluge/ui/gtkui/systemtray.py:423 deluge/ui/gtkui/common.py:70 -#: deluge/ui/gtkui/statusbar.py:397 deluge/ui/gtkui/statusbar.py:425 -#: deluge/ui/gtkui/statusbar.py:452 +#: deluge/ui/gtkui/systemtray.py:243 deluge/ui/gtkui/systemtray.py:247 +#: deluge/ui/gtkui/common.py:70 msgid "Unlimited" msgstr "" -#: deluge/ui/gtkui/systemtray.py:258 +#: deluge/ui/gtkui/systemtray.py:252 msgid "Down" msgstr "" -#: deluge/ui/gtkui/systemtray.py:259 +#: deluge/ui/gtkui/systemtray.py:253 msgid "Up" msgstr "" -#: deluge/ui/gtkui/systemtray.py:403 deluge/ui/gtkui/menubar.py:436 +#: deluge/ui/gtkui/systemtray.py:397 deluge/ui/gtkui/menubar.py:435 #: deluge/ui/gtkui/statusbar.py:401 msgid "Set Maximum Download Speed" msgstr "" -#: deluge/ui/gtkui/systemtray.py:417 deluge/ui/gtkui/menubar.py:437 +#: deluge/ui/gtkui/systemtray.py:405 deluge/ui/gtkui/menubar.py:436 #: deluge/ui/gtkui/statusbar.py:429 msgid "Set Maximum Upload Speed" msgstr "" -#: deluge/ui/gtkui/systemtray.py:426 deluge/ui/gtkui/common.py:127 -#: deluge/ui/gtkui/common.py:128 deluge/ui/gtkui/menubar.py:81 -#: deluge/ui/gtkui/statusbar.py:399 deluge/ui/gtkui/statusbar.py:427 -#: deluge/ui/gtkui/statusbar.py:454 -msgid "Other..." -msgstr "" - -#: deluge/ui/gtkui/systemtray.py:470 +#: deluge/ui/gtkui/systemtray.py:467 msgid "Deluge is password protected!" msgstr "" -#: deluge/ui/gtkui/systemtray.py:476 +#: deluge/ui/gtkui/systemtray.py:473 msgid "Enter your password to continue" msgstr "" @@ -1982,8 +1958,12 @@ msgstr "" msgid "Activated" msgstr "" +#: deluge/ui/gtkui/common.py:127 deluge/ui/gtkui/menubar.py:81 +msgid "Other..." +msgstr "" + #: deluge/ui/gtkui/createtorrentdialog.py:80 deluge/ui/gtkui/files_tab.py:122 -#: deluge/ui/gtkui/addtorrentdialog.py:111 +#: deluge/ui/gtkui/addtorrentdialog.py:112 msgid "Filename" msgstr "" @@ -2005,12 +1985,12 @@ msgid "Save .torrent file" msgstr "" #: deluge/ui/gtkui/createtorrentdialog.py:253 -#: deluge/ui/gtkui/addtorrentdialog.py:563 +#: deluge/ui/gtkui/addtorrentdialog.py:590 msgid "Torrent files" msgstr "" #: deluge/ui/gtkui/createtorrentdialog.py:257 -#: deluge/ui/gtkui/addtorrentdialog.py:567 +#: deluge/ui/gtkui/addtorrentdialog.py:594 msgid "All files" msgstr "" @@ -2034,54 +2014,54 @@ msgstr "" msgid "Priority" msgstr "" -#: deluge/ui/gtkui/addtorrentdialog.py:103 +#: deluge/ui/gtkui/addtorrentdialog.py:104 #: deluge/ui/gtkui/queuedtorrents.py:76 msgid "Torrent" msgstr "" -#: deluge/ui/gtkui/addtorrentdialog.py:215 +#: deluge/ui/gtkui/addtorrentdialog.py:222 msgid "Invalid File" msgstr "" -#: deluge/ui/gtkui/addtorrentdialog.py:220 +#: deluge/ui/gtkui/addtorrentdialog.py:227 msgid "Duplicate Torrent" msgstr "" -#: deluge/ui/gtkui/addtorrentdialog.py:220 +#: deluge/ui/gtkui/addtorrentdialog.py:227 msgid "You cannot add the same torrent twice." msgstr "" -#: deluge/ui/gtkui/addtorrentdialog.py:501 +#: deluge/ui/gtkui/addtorrentdialog.py:528 msgid "Unable to set file priority!" msgstr "" -#: deluge/ui/gtkui/addtorrentdialog.py:501 +#: deluge/ui/gtkui/addtorrentdialog.py:528 msgid "" "File prioritization is unavailable when using Compact allocation. Would you " "like to switch to Full allocation?" msgstr "" -#: deluge/ui/gtkui/addtorrentdialog.py:550 +#: deluge/ui/gtkui/addtorrentdialog.py:577 msgid "Choose a .torrent file" msgstr "" -#: deluge/ui/gtkui/addtorrentdialog.py:632 +#: deluge/ui/gtkui/addtorrentdialog.py:663 msgid "Invalid URL" msgstr "" -#: deluge/ui/gtkui/addtorrentdialog.py:632 +#: deluge/ui/gtkui/addtorrentdialog.py:663 msgid "is not a valid URL." msgstr "" -#: deluge/ui/gtkui/addtorrentdialog.py:636 +#: deluge/ui/gtkui/addtorrentdialog.py:667 msgid "Downloading..." msgstr "" -#: deluge/ui/gtkui/addtorrentdialog.py:678 +#: deluge/ui/gtkui/addtorrentdialog.py:709 msgid "Download Failed" msgstr "" -#: deluge/ui/gtkui/addtorrentdialog.py:678 +#: deluge/ui/gtkui/addtorrentdialog.py:709 msgid "Failed to download:" msgstr "" @@ -2137,11 +2117,15 @@ msgstr "" msgid "Plugin" msgstr "" -#: deluge/ui/gtkui/preferences.py:895 +#: deluge/ui/gtkui/preferences.py:759 +msgid "You must restart the deluge UI to change classic mode. Quit now?" +msgstr "" + +#: deluge/ui/gtkui/preferences.py:915 msgid "Select the Plugin" msgstr "" -#: deluge/ui/gtkui/preferences.py:906 +#: deluge/ui/gtkui/preferences.py:926 msgid "Plugin Eggs" msgstr "" @@ -2157,34 +2141,34 @@ msgstr "" msgid "Off" msgstr "" -#: deluge/ui/gtkui/menubar.py:319 +#: deluge/ui/gtkui/menubar.py:318 msgid "Choose a directory to move files to" msgstr "" -#: deluge/ui/gtkui/menubar.py:438 deluge/ui/gtkui/statusbar.py:456 +#: deluge/ui/gtkui/menubar.py:437 deluge/ui/gtkui/statusbar.py:456 msgid "Set Maximum Connections" msgstr "" -#: deluge/ui/gtkui/menubar.py:439 +#: deluge/ui/gtkui/menubar.py:438 msgid "Set Maximum Upload Slots" msgstr "" -#: deluge/ui/gtkui/gtkui.py:311 deluge/ui/gtkui/gtkui.py:326 +#: deluge/ui/gtkui/gtkui.py:312 deluge/ui/gtkui/gtkui.py:327 msgid "Turn off Classic Mode?" msgstr "" -#: deluge/ui/gtkui/gtkui.py:312 +#: deluge/ui/gtkui/gtkui.py:313 msgid "" "It appears that a Deluge daemon process (deluged) is already running.\n" "\n" "You will either need to stop the daemon or turn off Classic Mode to continue." msgstr "" -#: deluge/ui/gtkui/gtkui.py:321 +#: deluge/ui/gtkui/gtkui.py:322 msgid "Error Starting Core" msgstr "" -#: deluge/ui/gtkui/gtkui.py:322 +#: deluge/ui/gtkui/gtkui.py:323 msgid "" "There was an error starting the core component which is required to run " "Deluge in Classic Mode.\n" @@ -2192,17 +2176,17 @@ msgid "" "Please see the details below for more information." msgstr "" -#: deluge/ui/gtkui/gtkui.py:327 +#: deluge/ui/gtkui/gtkui.py:328 msgid "" "Since there was an error starting in Classic Mode would you like to continue " "by turning it off?" msgstr "" -#: deluge/ui/gtkui/gtkui.py:351 +#: deluge/ui/gtkui/gtkui.py:352 msgid "Error Starting Daemon" msgstr "" -#: deluge/ui/gtkui/gtkui.py:352 +#: deluge/ui/gtkui/gtkui.py:353 msgid "" "There was an error starting the daemon process. Try running it from a " "console to see if there is an error." @@ -2246,7 +2230,7 @@ msgid "Torrents" msgstr "" #: deluge/ui/gtkui/dialogs.py:174 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4717 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4730 msgid "Details:" msgstr "" @@ -2400,7 +2384,7 @@ msgid "Add Trackers" msgstr "" #: deluge/ui/gtkui/glade/edit_trackers.glade:296 -#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:1207 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:1283 msgid "Trackers:" msgstr "" @@ -2425,26 +2409,26 @@ msgstr "" msgid "_Add Torrent" msgstr "" -#: deluge/ui/gtkui/glade/tray_menu.glade:48 +#: deluge/ui/gtkui/glade/tray_menu.glade:49 #: deluge/ui/gtkui/glade/filtertree_menu.glade:26 msgid "_Pause All" msgstr "" -#: deluge/ui/gtkui/glade/tray_menu.glade:65 +#: deluge/ui/gtkui/glade/tray_menu.glade:66 msgid "_Resume All" msgstr "" -#: deluge/ui/gtkui/glade/tray_menu.glade:87 +#: deluge/ui/gtkui/glade/tray_menu.glade:88 #: deluge/ui/gtkui/glade/torrent_menu.glade:212 msgid "_Download Speed Limit" msgstr "" -#: deluge/ui/gtkui/glade/tray_menu.glade:103 +#: deluge/ui/gtkui/glade/tray_menu.glade:105 #: deluge/ui/gtkui/glade/torrent_menu.glade:227 msgid "_Upload Speed Limit" msgstr "" -#: deluge/ui/gtkui/glade/tray_menu.glade:124 +#: deluge/ui/gtkui/glade/tray_menu.glade:127 msgid "Quit & Shutdown Daemon" msgstr "" @@ -2514,7 +2498,7 @@ msgid "Compact allocation only allocates space as needed" msgstr "" #: deluge/ui/gtkui/glade/preferences_dialog.glade:411 -#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:468 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:544 msgid "Allocation" msgstr "" @@ -2768,191 +2752,195 @@ msgstr "" msgid "Show session speed in titlebar" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:1910 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:1905 +msgid "Focus window when adding torrent" +msgstr "" + +#: deluge/ui/gtkui/glade/preferences_dialog.glade:1923 msgid "Main Window" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:1942 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:1955 msgid "Always show" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:1960 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:1973 msgid "Bring the dialog to focus" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:1980 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:1993 msgid "Add Torrents Dialog" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2011 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2024 msgid "Enable system tray icon" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2029 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2042 msgid "Minimize to tray on close" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2049 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2062 msgid "Start in tray" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2069 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2082 msgid "Enable Application Indicator" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2090 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2103 msgid "Password protect system tray" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2157 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2170 msgid "System Tray" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2215 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2228 msgid "Other" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2255 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2268 msgid "Be alerted about new releases" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2260 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2273 msgid "" "Deluge will check our servers and will tell you if a newer version has been " "released" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2279 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2292 msgid "Updates" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2315 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2328 msgid "" "Help us improve Deluge by sending us your Python version, PyGTK version, OS " "and processor types. Absolutely no other information is sent." msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2332 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2345 msgid "Yes, please send anonymous statistics" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2354 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2367 msgid "System Information" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2396 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2409 msgid "Location:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2409 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2422 msgid "" "If Deluge cannot find the database file at this location it will fallback to " "using DNS to resolve the peer's country." msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2433 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2446 msgid "GeoIP Database" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2478 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2491 msgid "Associate Magnet links with Deluge" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2546 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2559 msgid "Daemon" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2589 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2602 msgid "Daemon port:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2626 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2639 msgid "Port" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2655 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2668 msgid "Allow Remote Connections" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2669 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2682 msgid "Connections" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2698 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2711 msgid "Periodically check the website for new releases" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2712 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2725 msgid "Other" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2771 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2784 msgid "Queue" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2812 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2825 msgid "Queue new torrents to top" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2906 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2919 msgid "Total active seeding:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2919 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2932 msgid "Total active:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2948 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2961 msgid "Total active downloading:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2963 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2976 msgid "Do not count slow torrents" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:2981 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:2994 msgid "Active Torrents" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3022 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3035 msgid "Share Ratio Limit:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3032 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3045 msgid "Seed Time Ratio:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3044 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3057 msgid "Seed Time (m):" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3112 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3125 msgid "Stop seeding when share ratio reaches:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3157 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3170 msgid "Remove torrent when share ratio reached" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3179 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3192 msgid "Seeding" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3243 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3256 msgid "Proxy" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3314 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3501 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3688 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3876 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3327 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3514 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3701 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3889 msgid "Host:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3390 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3577 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3764 -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3954 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3403 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3590 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3777 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3967 msgid "" "None\n" "Socksv4\n" @@ -2962,166 +2950,166 @@ msgid "" "HTTP W/ Auth" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3437 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3450 msgid "Peer" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3624 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3637 msgid "Web Seed" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:3811 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:3824 msgid "Tracker" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4002 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4015 msgid "DHT" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4058 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4071 msgid "Cache" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4102 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4115 msgid "Cache Size (16 KiB blocks):" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4112 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4125 msgid "" "The number of seconds from the last cached write to a piece in the write " "cache, to when it's forcefully flushed to disk. Default is 60 seconds." msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4114 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4127 msgid "Cache Expiry (seconds):" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4209 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4222 msgid "" "The total number of 16 KiB blocks written to disk since this session was " "started." msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4211 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4224 msgid "Blocks Written:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4220 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4233 msgid "" "The total number of write operations performed since this session was " "started." msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4222 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4235 msgid "Writes:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4233 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4246 msgid "" "The ratio (blocks_written - writes) / blocks_written represents the number " "of saved write operations per total write operations, i.e. a kind of cache " "hit ratio for the write cache." msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4235 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4248 msgid "Write Cache Hit Ratio:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4287 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4300 msgid "Write" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4317 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4330 msgid "" "The number of blocks that were requested from the bittorrent engine (from " "peers), that were served from disk or cache." msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4319 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4332 msgid "Blocks Read:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4328 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4341 msgid "The number of blocks that were served from cache." msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4330 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4343 msgid "Blocks Read Hit:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4341 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4354 msgid "The cache hit ratio for the read cache." msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4343 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4356 msgid "Read Cache Hit Ratio:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4392 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4405 msgid "" "The total number of read operations performed since this session was started." msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4394 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4407 msgid "Reads:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4421 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4434 msgid "Read" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4451 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4464 msgid "" "The number of 16 KiB blocks currently in the disk cache. This includes both " "read and write cache." msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4453 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4466 msgid "Cache Size:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4463 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4476 msgid "Read Cache Size:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4502 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4515 msgid "Size" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4545 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4558 msgid "Status" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4606 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4619 msgid "Plugins" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4730 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4743 msgid "Version:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4743 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4756 #: deluge/ui/gtkui/glade/create_torrent_dialog.glade:264 msgid "Author:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4754 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4767 msgid "Homepage:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4767 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4780 msgid "Author Email:" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4859 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4872 msgid "_Install Plugin" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4902 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4915 msgid "_Rescan Plugins" msgstr "" -#: deluge/ui/gtkui/glade/preferences_dialog.glade:4955 +#: deluge/ui/gtkui/glade/preferences_dialog.glade:4968 msgid "_Find More Plugins" msgstr "" @@ -3534,7 +3522,7 @@ msgid "_Edit Trackers" msgstr "" #: deluge/ui/gtkui/glade/main_window.glade:2259 -#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:862 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:938 msgid "_Options" msgstr "" @@ -3678,55 +3666,59 @@ msgstr "" msgid "Fi_les" msgstr "" -#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:430 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:469 +msgid "Move Completed Location" +msgstr "" + +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:506 msgid "Full" msgstr "" -#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:446 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:522 msgid "Compact" msgstr "" -#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:521 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:597 msgid "Max Down Speed:" msgstr "" -#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:533 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:609 msgid "Max Up Speed:" msgstr "" -#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:663 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:739 msgid "Add In _Paused State" msgstr "" -#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:679 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:755 msgid "Prioritize First/Last Pieces" msgstr "" -#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:757 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:833 msgid "Revert To Defaults" msgstr "" -#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:811 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:887 msgid "Apply To All" msgstr "" -#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:939 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:1015 msgid "Add URL" msgstr "" -#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:976 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:1052 msgid "From URL" msgstr "" -#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:1098 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:1174 msgid "Add Infohash" msgstr "" -#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:1135 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:1211 msgid "From Infohash" msgstr "" -#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:1170 +#: deluge/ui/gtkui/glade/add_torrent_dialog.glade:1246 msgid "Infohash:" msgstr "" @@ -3746,7 +3738,7 @@ msgstr "" msgid "hostname:port" msgstr "" -#: deluge/data/share/applications/deluge.desktop.in.h:1 +#: deluge/data/share/applications/deluge.desktop.in.h:2 msgid "BitTorrent Client" msgstr "" diff --git a/deluge/ui/web/gettext.js b/deluge/ui/web/gettext.js index 5d75507d8..3681826e7 100644 --- a/deluge/ui/web/gettext.js +++ b/deluge/ui/web/gettext.js @@ -212,7 +212,7 @@ GetText.add('Create', '${escape(_("Create"))}') // Menus.js:103 GetText.add('D/L Speed Limit', '${escape(_("D/L Speed Limit"))}') -// NetworkPage.js:225, ProxyPage.js:69 +// NetworkPage.js:225, ProxyPage.js:70 GetText.add('DHT', '${escape(_("DHT"))}') // Statusbar.js:210 @@ -308,7 +308,7 @@ GetText.add('File Browser', '${escape(_("File Browser"))}') // OptionsPanel.js:143 GetText.add('File prioritization is unavailable when using Compact allocation. Would you like to switch to Full allocation?', '${escape(_("File prioritization is unavailable when using Compact allocation. Would you like to switch to Full allocation?"))}') -// FilesTab.js:41, FilesTab.js:50 +// FilesTab.js:40, FilesTab.js:50 GetText.add('Filename', '${escape(_("Filename"))}') // FilesTab.js:35, FilesTab.js:41 @@ -425,7 +425,7 @@ GetText.add('Location', '${escape(_("Location"))}') // LoginWindow.js:45, LoginWindow.js:54 GetText.add('Login', '${escape(_("Login"))}') -// LoginWindow.js:127 +// LoginWindow.js:130 GetText.add('Login Failed', '${escape(_("Login Failed"))}') // Toolbar.js:114 @@ -539,7 +539,7 @@ GetText.add('Path', '${escape(_("Path"))}') // Menus.js:88, Toolbar.js:70 GetText.add('Pause', '${escape(_("Pause"))}') -// ProxyPage.js:51 +// ProxyPage.js:52 GetText.add('Peer', '${escape(_("Peer"))}') // NetworkPage.js:212 @@ -581,7 +581,7 @@ GetText.add('Prioritize First/Last Pieces', '${escape(_("Prioritize First/Last P // DownloadsPage.js:140 GetText.add('Prioritize first and last pieces of torrent', '${escape(_("Prioritize first and last pieces of torrent"))}') -// FilesTab.js:61 +// FilesTab.js:60 GetText.add('Priority', '${escape(_("Priority"))}') // OptionsTab.js:300 @@ -590,7 +590,7 @@ GetText.add('Private', '${escape(_("Private"))}') // InterfacePage.js:166 GetText.add('Private Key', '${escape(_("Private Key"))}') -// TorrentGrid.js:124, FilesTab.js:53 +// TorrentGrid.js:124, FilesTab.js:52 GetText.add('Progress', '${escape(_("Progress"))}') // Statusbar.js:200 @@ -680,7 +680,7 @@ GetText.add('Show filters with zero torrents', '${escape(_("Show filters with ze // InterfacePage.js:64 GetText.add('Show session speed in titlebar', '${escape(_("Show session speed in titlebar"))}') -// TorrentGrid.js:118, FilesTab.js:45, FilesTab.js:54 +// TorrentGrid.js:118, FilesTab.js:44, FilesTab.js:54 GetText.add('Size', '${escape(_("Size"))}') // ProxyField.js:56 @@ -734,7 +734,7 @@ GetText.add('Total Active Seeding', '${escape(_("Total Active Seeding"))}') // DetailsTab.js:49 GetText.add('Total Size', '${escape(_("Total Size"))}') -// EditTrackersWindow.js:80, TorrentGrid.js:183, EditTrackerWindow.js:66, DetailsTab.js:53, ProxyPage.js:63 +// EditTrackersWindow.js:80, TorrentGrid.js:183, EditTrackerWindow.js:66, DetailsTab.js:53, ProxyPage.js:64 GetText.add('Tracker', '${escape(_("Tracker"))}') // Sidebar.js:35 @@ -809,13 +809,13 @@ GetText.add('Username', '${escape(_("Username"))}') // ConnectionManager.js:80 GetText.add('Version', '${escape(_("Version"))}') -// ProxyPage.js:57 +// ProxyPage.js:58 GetText.add('Web Seed', '${escape(_("Web Seed"))}') // OtherPage.js:90 GetText.add('Yes, please send anonymous statistics', '${escape(_("Yes, please send anonymous statistics"))}') -// LoginWindow.js:128 +// LoginWindow.js:131 GetText.add('You entered an incorrect password', '${escape(_("You entered an incorrect password"))}') // InterfacePage.js:215 diff --git a/deluge/ui/web/js/deluge-all-debug.js b/deluge/ui/web/js/deluge-all-debug.js index f36b40322..678a86e62 100644 --- a/deluge/ui/web/js/deluge-all-debug.js +++ b/deluge/ui/web/js/deluge-all-debug.js @@ -1,6 +1,6 @@ /*! * Deluge.data.SortTypes.js - * + * * Copyright (c) Damien Churchill 2009-2010 * * This program is free software; you can redistribute it and/or modify @@ -39,7 +39,7 @@ Ext.namespace('Deluge.data'); * * @class Deluge.data.SortTypes * @singleton - */ + */ Deluge.data.SortTypes = { asIPAddress: function(value) { var d = value.match(/(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\:(\d+)/); @@ -48,6 +48,10 @@ Deluge.data.SortTypes = { asQueuePosition: function(value) { return (value > -1) ? value : Number.MAX_VALUE; + }, + + asName: function(value) { + return String(value).toLowerCase(); } } /*! @@ -168,7 +172,8 @@ Deluge.data.Torrent = Ext.data.Record.create([{ type: 'int' }, { name: 'name', - type: 'string' + type: 'string', + sortType: Deluge.data.SortTypes.asName }, { name: 'total_size', type: 'int' @@ -349,7 +354,7 @@ Deluge.details.DetailsTab = Ext.extend(Ext.Panel, { title: _('Details'), fields: {}, - + autoScroll: true, queuedItems: {}, oldData: {}, @@ -428,7 +433,7 @@ Deluge.details.DetailsTab = Ext.extend(Ext.Panel, { }); /*! * Deluge.details.FilesTab.js - * + * * Copyright (c) Damien Churchill 2009-2010 * * This program is free software; you can redistribute it and/or modify @@ -457,12 +462,11 @@ Deluge.details.DetailsTab = Ext.extend(Ext.Panel, { * this exception statement from your version. If you delete this exception * statement from all source files in the program, then also delete it here. */ - + Deluge.details.FilesTab = Ext.extend(Ext.ux.tree.TreeGrid, { title: _('Files'), - autoScroll: true, rootVisible: false, columns: [{ @@ -502,7 +506,7 @@ Deluge.details.FilesTab = Ext.extend(Ext.ux.tree.TreeGrid, { } }) }], - + selModel: new Ext.tree.MultiSelectionModel(), initComponent: function() { @@ -558,7 +562,7 @@ Deluge.details.FilesTab = Ext.extend(Ext.ux.tree.TreeGrid, { this.clear(); this.torrentId = torrentId; } - + deluge.client.web.get_torrent_files(torrentId, { success: this.onRequestComplete, scope: this, @@ -591,7 +595,7 @@ Deluge.details.FilesTab = Ext.extend(Ext.ux.tree.TreeGrid, { folderSort: true }); }, - + onContextMenu: function(node, e) { e.stopEvent(); var selModel = this.getSelectionModel(); @@ -601,7 +605,7 @@ Deluge.details.FilesTab = Ext.extend(Ext.ux.tree.TreeGrid, { } deluge.menus.filePriorities.showAt(e.getPoint()); }, - + onItemClick: function(baseItem, e) { switch (baseItem.id) { case 'expandAll': @@ -628,7 +632,7 @@ Deluge.details.FilesTab = Ext.extend(Ext.ux.tree.TreeGrid, { return; } }); - + var priorities = new Array(Ext.keys(indexes).length); for (var index in indexes) { priorities[index] = indexes[index]; @@ -645,7 +649,7 @@ Deluge.details.FilesTab = Ext.extend(Ext.ux.tree.TreeGrid, { break; } }, - + onRequestComplete: function(files, options) { if (!this.getRootNode().hasChildNodes()) { this.createFileTree(files); @@ -4393,7 +4397,7 @@ Deluge.preferences.ProxyField = Ext.extend(Ext.form.FieldSet, { }); /*! * Deluge.preferences.ProxyPage.js - * + * * Copyright (c) Damien Churchill 2009-2010 * * This program is free software; you can redistribute it and/or modify @@ -4433,11 +4437,12 @@ Deluge.preferences.Proxy = Ext.extend(Ext.form.FormPanel, { config = Ext.apply({ border: false, title: _('Proxy'), - layout: 'form' + layout: 'form', + autoScroll: true }, config); Deluge.preferences.Proxy.superclass.constructor.call(this, config); }, - + initComponent: function() { Deluge.preferences.Proxy.superclass.initComponent.call(this); this.peer = this.add(new Deluge.preferences.ProxyField({ @@ -4445,28 +4450,28 @@ Deluge.preferences.Proxy = Ext.extend(Ext.form.FormPanel, { name: 'peer' })); this.peer.on('change', this.onProxyChange, this); - + this.web_seed = this.add(new Deluge.preferences.ProxyField({ title: _('Web Seed'), name: 'web_seed' })); this.web_seed.on('change', this.onProxyChange, this); - + this.tracker = this.add(new Deluge.preferences.ProxyField({ title: _('Tracker'), name: 'tracker' })); this.tracker.on('change', this.onProxyChange, this); - + this.dht = this.add(new Deluge.preferences.ProxyField({ title: _('DHT'), name: 'dht' })); this.dht.on('change', this.onProxyChange, this); - + deluge.preferences.getOptionsManager().bind('proxies', this); }, - + getValue: function() { return { 'dht': this.dht.getValue(), @@ -4475,18 +4480,18 @@ Deluge.preferences.Proxy = Ext.extend(Ext.form.FormPanel, { 'web_seed': this.web_seed.getValue() } }, - + setValue: function(value) { for (var proxy in value) { this[proxy].setValue(value[proxy]); } }, - + onProxyChange: function(field, newValue, oldValue) { var newValues = this.getValue(); var oldValues = Ext.apply({}, newValues); oldValues[field.getName()] = oldValue; - + this.fireEvent('change', this, newValues, oldValues); } }); @@ -7092,15 +7097,18 @@ Deluge.LoginWindow = Ext.extend(Ext.Window, { this.form = this.add({ xtype: 'form', baseCls: 'x-plain', - labelWidth: 55, - width: 300, - defaults: {width: 200}, + labelWidth: 120, + labelAlign: 'right', + defaults: {width: 110}, defaultType: 'textfield' }); this.passwordField = this.form.add({ xtype: 'textfield', fieldLabel: _('Password'), + grow: true, + growMin: '110', + growMax: '145', id: '_password', name: 'password', inputType: 'password' @@ -9010,7 +9018,7 @@ Deluge.Toolbar = Ext.extend(Ext.Toolbar, { idProperty: 'id', fields: [ {name: 'queue', sortType: Deluge.data.SortTypes.asQueuePosition}, - {name: 'name'}, + {name: 'name', sortType: Deluge.data.SortTypes.asName}, {name: 'total_size', type: 'int'}, {name: 'state'}, {name: 'progress', type: 'float'}, diff --git a/deluge/ui/web/js/deluge-all.js b/deluge/ui/web/js/deluge-all.js index 5772e8dc4..f96fafc3c 100644 --- a/deluge/ui/web/js/deluge-all.js +++ b/deluge/ui/web/js/deluge-all.js @@ -1,6 +1,6 @@ /* * Deluge.data.SortTypes.js - * + * * Copyright (c) Damien Churchill 2009-2010 * * This program is free software; you can redistribute it and/or modify @@ -29,7 +29,7 @@ * this exception statement from your version. If you delete this exception * statement from all source files in the program, then also delete it here. */ -Ext.namespace("Deluge.data");Deluge.data.SortTypes={asIPAddress:function(a){var b=a.match(/(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\:(\d+)/);return((((((+b[1])*256)+(+b[2]))*256)+(+b[3]))*256)+(+b[4])},asQueuePosition:function(a){return(a>-1)?a:Number.MAX_VALUE}} +Ext.namespace("Deluge.data");Deluge.data.SortTypes={asIPAddress:function(a){var b=a.match(/(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\:(\d+)/);return((((((+b[1])*256)+(+b[2]))*256)+(+b[3]))*256)+(+b[4])},asQueuePosition:function(a){return(a>-1)?a:Number.MAX_VALUE},asName:function(a){return String(a).toLowerCase()}} /* * Deluge.data.PeerRecord.js * @@ -93,7 +93,7 @@ Ext.namespace("Deluge.data");Deluge.data.SortTypes={asIPAddress:function(a){var * this exception statement from your version. If you delete this exception * statement from all source files in the program, then also delete it here. */ -Ext.namespace("Deluge.data");Deluge.data.Torrent=Ext.data.Record.create([{name:"queue",type:"int"},{name:"name",type:"string"},{name:"total_size",type:"int"},{name:"state",type:"string"},{name:"progress",type:"int"},{name:"num_seeds",type:"int"},{name:"total_seeds",type:"int"},{name:"num_peers",type:"int"},{name:"total_peers",type:"int"},{name:"download_payload_rate",type:"int"},{name:"upload_payload_rate",type:"int"},{name:"eta",type:"int"},{name:"ratio",type:"float"},{name:"distributed_copies",type:"float"},{name:"time_added",type:"int"},{name:"tracker_host",type:"string"}]); +Ext.namespace("Deluge.data");Deluge.data.Torrent=Ext.data.Record.create([{name:"queue",type:"int"},{name:"name",type:"string",sortType:Deluge.data.SortTypes.asName},{name:"total_size",type:"int"},{name:"state",type:"string"},{name:"progress",type:"int"},{name:"num_seeds",type:"int"},{name:"total_seeds",type:"int"},{name:"num_peers",type:"int"},{name:"total_peers",type:"int"},{name:"download_payload_rate",type:"int"},{name:"upload_payload_rate",type:"int"},{name:"eta",type:"int"},{name:"ratio",type:"float"},{name:"distributed_copies",type:"float"},{name:"time_added",type:"int"},{name:"tracker_host",type:"string"}]); /* * Deluge.details.DetailsPanel.js * @@ -125,10 +125,10 @@ Ext.namespace("Deluge.data");Deluge.data.Torrent=Ext.data.Record.create([{name:" * this exception statement from your version. If you delete this exception * statement from all source files in the program, then also delete it here. */ -Ext.namespace("Deluge.details");Deluge.details.DetailsPanel=Ext.extend(Ext.TabPanel,{id:"torrentDetails",activeTab:0,initComponent:function(){Deluge.details.DetailsPanel.superclass.initComponent.call(this);this.add(new Deluge.details.StatusTab());this.add(new Deluge.details.DetailsTab());this.add(new Deluge.details.FilesTab());this.add(new Deluge.details.PeersTab());this.add(new Deluge.details.OptionsTab())},clear:function(){this.items.each(function(a){if(a.clear){a.clear.defer(100,a);a.disable()}})},update:function(a){var b=deluge.torrents.getSelected();if(!b){this.clear();return}this.items.each(function(c){if(c.disabled){c.enable()}});a=a||this.getActiveTab();if(a.update){a.update(b.id)}},onRender:function(b,a){Deluge.details.DetailsPanel.superclass.onRender.call(this,b,a);deluge.events.on("disconnect",this.clear,this);deluge.torrents.on("rowclick",this.onTorrentsClick,this);this.on("tabchange",this.onTabChange,this);deluge.torrents.getSelectionModel().on("selectionchange",function(c){if(!c.hasSelection()){this.clear()}},this)},onTabChange:function(a,b){this.update(b)},onTorrentsClick:function(a,c,b){this.update()}});Deluge.details.DetailsTab=Ext.extend(Ext.Panel,{title:_("Details"),fields:{},queuedItems:{},oldData:{},initComponent:function(){Deluge.details.DetailsTab.superclass.initComponent.call(this);this.addItem("torrent_name",_("Name"));this.addItem("hash",_("Hash"));this.addItem("path",_("Path"));this.addItem("size",_("Total Size"));this.addItem("files",_("# of files"));this.addItem("comment",_("Comment"));this.addItem("status",_("Status"));this.addItem("tracker",_("Tracker"))},onRender:function(b,a){Deluge.details.DetailsTab.superclass.onRender.call(this,b,a);this.body.setStyle("padding","10px");this.dl=Ext.DomHelper.append(this.body,{tag:"dl"},true);for(var c in this.queuedItems){this.doAddItem(c,this.queuedItems[c])}},addItem:function(b,a){if(!this.rendered){this.queuedItems[b]=a}else{this.doAddItem(b,a)}},doAddItem:function(b,a){Ext.DomHelper.append(this.dl,{tag:"dt",cls:b,html:a+":"});this.fields[b]=Ext.DomHelper.append(this.dl,{tag:"dd",cls:b,html:""},true)},clear:function(){if(!this.fields){return}for(var a in this.fields){this.fields[a].dom.innerHTML=""}this.oldData={}},update:function(a){deluge.client.web.get_torrent_status(a,Deluge.Keys.Details,{success:this.onRequestComplete,scope:this,torrentId:a})},onRequestComplete:function(e,c,a,b){var d={torrent_name:e.name,hash:b.options.torrentId,path:e.save_path,size:fsize(e.total_size),files:e.num_files,status:e.message,tracker:e.tracker,comment:e.comment};for(var f in this.fields){if(!Ext.isDefined(d[f])){continue}if(d[f]==this.oldData[f]){continue}this.fields[f].dom.innerHTML=Ext.escapeHTML(d[f])}this.oldData=d}}); +Ext.namespace("Deluge.details");Deluge.details.DetailsPanel=Ext.extend(Ext.TabPanel,{id:"torrentDetails",activeTab:0,initComponent:function(){Deluge.details.DetailsPanel.superclass.initComponent.call(this);this.add(new Deluge.details.StatusTab());this.add(new Deluge.details.DetailsTab());this.add(new Deluge.details.FilesTab());this.add(new Deluge.details.PeersTab());this.add(new Deluge.details.OptionsTab())},clear:function(){this.items.each(function(a){if(a.clear){a.clear.defer(100,a);a.disable()}})},update:function(a){var b=deluge.torrents.getSelected();if(!b){this.clear();return}this.items.each(function(c){if(c.disabled){c.enable()}});a=a||this.getActiveTab();if(a.update){a.update(b.id)}},onRender:function(b,a){Deluge.details.DetailsPanel.superclass.onRender.call(this,b,a);deluge.events.on("disconnect",this.clear,this);deluge.torrents.on("rowclick",this.onTorrentsClick,this);this.on("tabchange",this.onTabChange,this);deluge.torrents.getSelectionModel().on("selectionchange",function(c){if(!c.hasSelection()){this.clear()}},this)},onTabChange:function(a,b){this.update(b)},onTorrentsClick:function(a,c,b){this.update()}});Deluge.details.DetailsTab=Ext.extend(Ext.Panel,{title:_("Details"),fields:{},autoScroll:true,queuedItems:{},oldData:{},initComponent:function(){Deluge.details.DetailsTab.superclass.initComponent.call(this);this.addItem("torrent_name",_("Name"));this.addItem("hash",_("Hash"));this.addItem("path",_("Path"));this.addItem("size",_("Total Size"));this.addItem("files",_("# of files"));this.addItem("comment",_("Comment"));this.addItem("status",_("Status"));this.addItem("tracker",_("Tracker"))},onRender:function(b,a){Deluge.details.DetailsTab.superclass.onRender.call(this,b,a);this.body.setStyle("padding","10px");this.dl=Ext.DomHelper.append(this.body,{tag:"dl"},true);for(var c in this.queuedItems){this.doAddItem(c,this.queuedItems[c])}},addItem:function(b,a){if(!this.rendered){this.queuedItems[b]=a}else{this.doAddItem(b,a)}},doAddItem:function(b,a){Ext.DomHelper.append(this.dl,{tag:"dt",cls:b,html:a+":"});this.fields[b]=Ext.DomHelper.append(this.dl,{tag:"dd",cls:b,html:""},true)},clear:function(){if(!this.fields){return}for(var a in this.fields){this.fields[a].dom.innerHTML=""}this.oldData={}},update:function(a){deluge.client.web.get_torrent_status(a,Deluge.Keys.Details,{success:this.onRequestComplete,scope:this,torrentId:a})},onRequestComplete:function(e,c,a,b){var d={torrent_name:e.name,hash:b.options.torrentId,path:e.save_path,size:fsize(e.total_size),files:e.num_files,status:e.message,tracker:e.tracker,comment:e.comment};for(var f in this.fields){if(!Ext.isDefined(d[f])){continue}if(d[f]==this.oldData[f]){continue}this.fields[f].dom.innerHTML=Ext.escapeHTML(d[f])}this.oldData=d}}); /* * Deluge.details.FilesTab.js - * + * * Copyright (c) Damien Churchill 2009-2010 * * This program is free software; you can redistribute it and/or modify @@ -157,7 +157,7 @@ Ext.namespace("Deluge.details");Deluge.details.DetailsPanel=Ext.extend(Ext.TabPa * this exception statement from your version. If you delete this exception * statement from all source files in the program, then also delete it here. */ -Deluge.details.FilesTab=Ext.extend(Ext.ux.tree.TreeGrid,{title:_("Files"),autoScroll:true,rootVisible:false,columns:[{header:_("Filename"),width:330,dataIndex:"filename"},{header:_("Size"),width:150,dataIndex:"size",tpl:new Ext.XTemplate("{size:this.fsize}",{fsize:function(a){return fsize(a)}})},{xtype:"tgrendercolumn",header:_("Progress"),width:150,dataIndex:"progress",renderer:function(a){var b=a*100;return Deluge.progressBar(b,this.col.width,b.toFixed(2)+"%",0)}},{header:_("Priority"),width:150,dataIndex:"priority",tpl:new Ext.XTemplate('
{priority:this.getName}
',{getClass:function(a){return FILE_PRIORITY_CSS[a]},getName:function(a){return _(FILE_PRIORITY[a])}})}],selModel:new Ext.tree.MultiSelectionModel(),initComponent:function(){Deluge.details.FilesTab.superclass.initComponent.call(this);this.setRootNode(new Ext.tree.TreeNode({text:"Files"}))},clear:function(){var a=this.getRootNode();if(!a.hasChildNodes()){return}a.cascade(function(c){var b=c.parentNode;if(!b){return}if(!b.ownerTree){return}b.removeChild(c)})},createFileTree:function(c){function b(g,d){for(var e in g.contents){var f=g.contents[e];if(f.type=="dir"){b(f,d.appendChild(new Ext.tree.TreeNode({text:e,filename:e,size:f.size,progress:f.progress,priority:f.priority})))}else{d.appendChild(new Ext.tree.TreeNode({text:e,filename:e,fileIndex:f.index,size:f.size,progress:f.progress,priority:f.priority,leaf:true,iconCls:"x-deluge-file",uiProvider:Ext.ux.tree.TreeGridNodeUI}))}}}var a=this.getRootNode();b(c,a);a.firstChild.expand()},update:function(a){if(this.torrentId!=a){this.clear();this.torrentId=a}deluge.client.web.get_torrent_files(a,{success:this.onRequestComplete,scope:this,torrentId:a})},updateFileTree:function(b){function a(g,c){for(var d in g.contents){var f=g.contents[d];var e=c.findChild("filename",d);e.attributes.size=f.size;e.attributes.progress=f.progress;e.attributes.priority=f.priority;e.ui.updateColumns();if(f.type=="dir"){a(f,e)}}}a(b,this.getRootNode())},onRender:function(b,a){Deluge.details.FilesTab.superclass.onRender.call(this,b,a);deluge.menus.filePriorities.on("itemclick",this.onItemClick,this);this.on("contextmenu",this.onContextMenu,this);this.sorter=new Ext.tree.TreeSorter(this,{folderSort:true})},onContextMenu:function(b,c){c.stopEvent();var a=this.getSelectionModel();if(a.getSelectedNodes().length<2){a.clearSelections();b.select()}deluge.menus.filePriorities.showAt(c.getPoint())},onItemClick:function(h,g){switch(h.id){case"expandAll":this.expandAll();break;default:var f={};function a(e){if(Ext.isEmpty(e.attributes.fileIndex)){return}f[e.attributes.fileIndex]=e.attributes.priority}this.getRootNode().cascade(a);var b=this.getSelectionModel().getSelectedNodes();Ext.each(b,function(i){if(!i.isLeaf()){function e(j){if(Ext.isEmpty(j.attributes.fileIndex)){return}f[j.attributes.fileIndex]=h.filePriority}i.cascade(e)}else{if(!Ext.isEmpty(i.attributes.fileIndex)){f[i.attributes.fileIndex]=h.filePriority;return}}});var d=new Array(Ext.keys(f).length);for(var c in f){d[c]=f[c]}deluge.client.core.set_torrent_file_priorities(this.torrentId,d,{success:function(){Ext.each(b,function(e){e.setColumnValue(3,h.filePriority)})},scope:this});break}},onRequestComplete:function(b,a){if(!this.getRootNode().hasChildNodes()){this.createFileTree(b)}else{this.updateFileTree(b)}}}); +Deluge.details.FilesTab=Ext.extend(Ext.ux.tree.TreeGrid,{title:_("Files"),rootVisible:false,columns:[{header:_("Filename"),width:330,dataIndex:"filename"},{header:_("Size"),width:150,dataIndex:"size",tpl:new Ext.XTemplate("{size:this.fsize}",{fsize:function(a){return fsize(a)}})},{xtype:"tgrendercolumn",header:_("Progress"),width:150,dataIndex:"progress",renderer:function(a){var b=a*100;return Deluge.progressBar(b,this.col.width,b.toFixed(2)+"%",0)}},{header:_("Priority"),width:150,dataIndex:"priority",tpl:new Ext.XTemplate('
{priority:this.getName}
',{getClass:function(a){return FILE_PRIORITY_CSS[a]},getName:function(a){return _(FILE_PRIORITY[a])}})}],selModel:new Ext.tree.MultiSelectionModel(),initComponent:function(){Deluge.details.FilesTab.superclass.initComponent.call(this);this.setRootNode(new Ext.tree.TreeNode({text:"Files"}))},clear:function(){var a=this.getRootNode();if(!a.hasChildNodes()){return}a.cascade(function(c){var b=c.parentNode;if(!b){return}if(!b.ownerTree){return}b.removeChild(c)})},createFileTree:function(c){function b(g,d){for(var e in g.contents){var f=g.contents[e];if(f.type=="dir"){b(f,d.appendChild(new Ext.tree.TreeNode({text:e,filename:e,size:f.size,progress:f.progress,priority:f.priority})))}else{d.appendChild(new Ext.tree.TreeNode({text:e,filename:e,fileIndex:f.index,size:f.size,progress:f.progress,priority:f.priority,leaf:true,iconCls:"x-deluge-file",uiProvider:Ext.ux.tree.TreeGridNodeUI}))}}}var a=this.getRootNode();b(c,a);a.firstChild.expand()},update:function(a){if(this.torrentId!=a){this.clear();this.torrentId=a}deluge.client.web.get_torrent_files(a,{success:this.onRequestComplete,scope:this,torrentId:a})},updateFileTree:function(b){function a(g,c){for(var d in g.contents){var f=g.contents[d];var e=c.findChild("filename",d);e.attributes.size=f.size;e.attributes.progress=f.progress;e.attributes.priority=f.priority;e.ui.updateColumns();if(f.type=="dir"){a(f,e)}}}a(b,this.getRootNode())},onRender:function(b,a){Deluge.details.FilesTab.superclass.onRender.call(this,b,a);deluge.menus.filePriorities.on("itemclick",this.onItemClick,this);this.on("contextmenu",this.onContextMenu,this);this.sorter=new Ext.tree.TreeSorter(this,{folderSort:true})},onContextMenu:function(b,c){c.stopEvent();var a=this.getSelectionModel();if(a.getSelectedNodes().length<2){a.clearSelections();b.select()}deluge.menus.filePriorities.showAt(c.getPoint())},onItemClick:function(h,g){switch(h.id){case"expandAll":this.expandAll();break;default:var f={};function a(e){if(Ext.isEmpty(e.attributes.fileIndex)){return}f[e.attributes.fileIndex]=e.attributes.priority}this.getRootNode().cascade(a);var b=this.getSelectionModel().getSelectedNodes();Ext.each(b,function(i){if(!i.isLeaf()){function e(j){if(Ext.isEmpty(j.attributes.fileIndex)){return}f[j.attributes.fileIndex]=h.filePriority}i.cascade(e)}else{if(!Ext.isEmpty(i.attributes.fileIndex)){f[i.attributes.fileIndex]=h.filePriority;return}}});var d=new Array(Ext.keys(f).length);for(var c in f){d[c]=f[c]}deluge.client.core.set_torrent_file_priorities(this.torrentId,d,{success:function(){Ext.each(b,function(e){e.setColumnValue(3,h.filePriority)})},scope:this});break}},onRequestComplete:function(b,a){if(!this.getRootNode().hasChildNodes()){this.createFileTree(b)}else{this.updateFileTree(b)}}}); /* * Deluge.details.OptionsTab.js * @@ -896,7 +896,7 @@ Ext.namespace("Deluge.preferences");PreferencesRecord=Ext.data.Record.create([{n Ext.ns("Deluge.preferences");Deluge.preferences.ProxyField=Ext.extend(Ext.form.FieldSet,{border:false,autoHeight:true,labelWidth:70,initComponent:function(){Deluge.preferences.ProxyField.superclass.initComponent.call(this);this.proxyType=this.add({xtype:"combo",fieldLabel:_("Type"),name:"proxytype",mode:"local",width:150,store:new Ext.data.ArrayStore({fields:["id","text"],data:[[0,_("None")],[1,_("Socksv4")],[2,_("Socksv5")],[3,_("Socksv5 with Auth")],[4,_("HTTP")],[5,_("HTTP with Auth")]]}),editable:false,triggerAction:"all",valueField:"id",displayField:"text"});this.hostname=this.add({xtype:"textfield",name:"hostname",fieldLabel:_("Host"),width:220});this.port=this.add({xtype:"spinnerfield",name:"port",fieldLabel:_("Port"),width:80,decimalPrecision:0,minValue:-1,maxValue:99999});this.username=this.add({xtype:"textfield",name:"username",fieldLabel:_("Username"),width:220});this.password=this.add({xtype:"textfield",name:"password",fieldLabel:_("Password"),inputType:"password",width:220});this.proxyType.on("change",this.onFieldChange,this);this.proxyType.on("select",this.onTypeSelect,this);this.setting=false},getName:function(){return this.initialConfig.name},getValue:function(){return{type:this.proxyType.getValue(),hostname:this.hostname.getValue(),port:Number(this.port.getValue()),username:this.username.getValue(),password:this.password.getValue()}},setValue:function(c){this.setting=true;this.proxyType.setValue(c.type);var b=this.proxyType.getStore().find("id",c.type);var a=this.proxyType.getStore().getAt(b);this.hostname.setValue(c.hostname);this.port.setValue(c.port);this.username.setValue(c.username);this.password.setValue(c.password);this.onTypeSelect(this.type,a,b);this.setting=false},onFieldChange:function(e,d,c){if(this.setting){return}var b=this.getValue();var a=Ext.apply({},b);a[e.getName()]=c;this.fireEvent("change",this,b,a)},onTypeSelect:function(d,a,b){var c=a.get("id");if(c>0){this.hostname.show();this.port.show()}else{this.hostname.hide();this.port.hide()}if(c==3||c==5){this.username.show();this.password.show()}else{this.username.hide();this.password.hide()}}}); /* * Deluge.preferences.ProxyPage.js - * + * * Copyright (c) Damien Churchill 2009-2010 * * This program is free software; you can redistribute it and/or modify @@ -925,7 +925,7 @@ Ext.ns("Deluge.preferences");Deluge.preferences.ProxyField=Ext.extend(Ext.form.F * this exception statement from your version. If you delete this exception * statement from all source files in the program, then also delete it here. */ -Ext.namespace("Deluge.preferences");Deluge.preferences.Proxy=Ext.extend(Ext.form.FormPanel,{constructor:function(a){a=Ext.apply({border:false,title:_("Proxy"),layout:"form"},a);Deluge.preferences.Proxy.superclass.constructor.call(this,a)},initComponent:function(){Deluge.preferences.Proxy.superclass.initComponent.call(this);this.peer=this.add(new Deluge.preferences.ProxyField({title:_("Peer"),name:"peer"}));this.peer.on("change",this.onProxyChange,this);this.web_seed=this.add(new Deluge.preferences.ProxyField({title:_("Web Seed"),name:"web_seed"}));this.web_seed.on("change",this.onProxyChange,this);this.tracker=this.add(new Deluge.preferences.ProxyField({title:_("Tracker"),name:"tracker"}));this.tracker.on("change",this.onProxyChange,this);this.dht=this.add(new Deluge.preferences.ProxyField({title:_("DHT"),name:"dht"}));this.dht.on("change",this.onProxyChange,this);deluge.preferences.getOptionsManager().bind("proxies",this)},getValue:function(){return{dht:this.dht.getValue(),peer:this.peer.getValue(),tracker:this.tracker.getValue(),web_seed:this.web_seed.getValue()}},setValue:function(b){for(var a in b){this[a].setValue(b[a])}},onProxyChange:function(e,d,c){var b=this.getValue();var a=Ext.apply({},b);a[e.getName()]=c;this.fireEvent("change",this,b,a)}}); +Ext.namespace("Deluge.preferences");Deluge.preferences.Proxy=Ext.extend(Ext.form.FormPanel,{constructor:function(a){a=Ext.apply({border:false,title:_("Proxy"),layout:"form",autoScroll:true},a);Deluge.preferences.Proxy.superclass.constructor.call(this,a)},initComponent:function(){Deluge.preferences.Proxy.superclass.initComponent.call(this);this.peer=this.add(new Deluge.preferences.ProxyField({title:_("Peer"),name:"peer"}));this.peer.on("change",this.onProxyChange,this);this.web_seed=this.add(new Deluge.preferences.ProxyField({title:_("Web Seed"),name:"web_seed"}));this.web_seed.on("change",this.onProxyChange,this);this.tracker=this.add(new Deluge.preferences.ProxyField({title:_("Tracker"),name:"tracker"}));this.tracker.on("change",this.onProxyChange,this);this.dht=this.add(new Deluge.preferences.ProxyField({title:_("DHT"),name:"dht"}));this.dht.on("change",this.onProxyChange,this);deluge.preferences.getOptionsManager().bind("proxies",this)},getValue:function(){return{dht:this.dht.getValue(),peer:this.peer.getValue(),tracker:this.tracker.getValue(),web_seed:this.web_seed.getValue()}},setValue:function(b){for(var a in b){this[a].setValue(b[a])}},onProxyChange:function(e,d,c){var b=this.getValue();var a=Ext.apply({},b);a[e.getName()]=c;this.fireEvent("change",this,b,a)}}); /* * Deluge.preferences.QueuePage.js * @@ -1437,7 +1437,7 @@ Deluge.Keys={Grid:["queue","name","total_size","state","progress","num_seeds","t * this exception statement from your version. If you delete this exception * statement from all source files in the program, then also delete it here. */ -Deluge.LoginWindow=Ext.extend(Ext.Window,{firstShow:true,bodyStyle:"padding: 10px 5px;",buttonAlign:"center",closable:false,closeAction:"hide",iconCls:"x-deluge-login-window-icon",layout:"fit",modal:true,plain:true,resizable:false,title:_("Login"),width:300,height:120,initComponent:function(){Deluge.LoginWindow.superclass.initComponent.call(this);this.on("show",this.onShow,this);this.addButton({text:_("Login"),handler:this.onLogin,scope:this});this.form=this.add({xtype:"form",baseCls:"x-plain",labelWidth:55,width:300,defaults:{width:200},defaultType:"textfield"});this.passwordField=this.form.add({xtype:"textfield",fieldLabel:_("Password"),id:"_password",name:"password",inputType:"password"});this.passwordField.on("specialkey",this.onSpecialKey,this)},logout:function(){deluge.events.fire("logout");deluge.client.auth.delete_session({success:function(a){this.show(true)},scope:this})},show:function(a){if(this.firstShow){deluge.client.on("error",this.onClientError,this);this.firstShow=false}if(a){return Deluge.LoginWindow.superclass.show.call(this)}deluge.client.auth.check_session({success:function(b){if(b){deluge.events.fire("login")}else{this.show(true)}},failure:function(b){this.show(true)},scope:this})},onSpecialKey:function(b,a){if(a.getKey()==13){this.onLogin()}},onLogin:function(){var a=this.passwordField;deluge.client.auth.login(a.getValue(),{success:function(b){if(b){deluge.events.fire("login");this.hide();a.setRawValue("")}else{Ext.MessageBox.show({title:_("Login Failed"),msg:_("You entered an incorrect password"),buttons:Ext.MessageBox.OK,modal:false,fn:function(){a.focus(true,10)},icon:Ext.MessageBox.WARNING,iconCls:"x-deluge-icon-warning"})}},scope:this})},onClientError:function(c,b,a){if(c.error.code==1){deluge.events.fire("logout");this.show(true)}},onShow:function(){this.passwordField.focus(true,300)}}); +Deluge.LoginWindow=Ext.extend(Ext.Window,{firstShow:true,bodyStyle:"padding: 10px 5px;",buttonAlign:"center",closable:false,closeAction:"hide",iconCls:"x-deluge-login-window-icon",layout:"fit",modal:true,plain:true,resizable:false,title:_("Login"),width:300,height:120,initComponent:function(){Deluge.LoginWindow.superclass.initComponent.call(this);this.on("show",this.onShow,this);this.addButton({text:_("Login"),handler:this.onLogin,scope:this});this.form=this.add({xtype:"form",baseCls:"x-plain",labelWidth:120,labelAlign:"right",defaults:{width:110},defaultType:"textfield"});this.passwordField=this.form.add({xtype:"textfield",fieldLabel:_("Password"),grow:true,growMin:"110",growMax:"145",id:"_password",name:"password",inputType:"password"});this.passwordField.on("specialkey",this.onSpecialKey,this)},logout:function(){deluge.events.fire("logout");deluge.client.auth.delete_session({success:function(a){this.show(true)},scope:this})},show:function(a){if(this.firstShow){deluge.client.on("error",this.onClientError,this);this.firstShow=false}if(a){return Deluge.LoginWindow.superclass.show.call(this)}deluge.client.auth.check_session({success:function(b){if(b){deluge.events.fire("login")}else{this.show(true)}},failure:function(b){this.show(true)},scope:this})},onSpecialKey:function(b,a){if(a.getKey()==13){this.onLogin()}},onLogin:function(){var a=this.passwordField;deluge.client.auth.login(a.getValue(),{success:function(b){if(b){deluge.events.fire("login");this.hide();a.setRawValue("")}else{Ext.MessageBox.show({title:_("Login Failed"),msg:_("You entered an incorrect password"),buttons:Ext.MessageBox.OK,modal:false,fn:function(){a.focus(true,10)},icon:Ext.MessageBox.WARNING,iconCls:"x-deluge-icon-warning"})}},scope:this})},onClientError:function(c,b,a){if(c.error.code==1){deluge.events.fire("logout");this.show(true)}},onShow:function(){this.passwordField.focus(true,300)}}); /* * Deluge.Menus.js * @@ -1757,7 +1757,7 @@ Deluge.Toolbar=Ext.extend(Ext.Toolbar,{constructor:function(a){a=Ext.apply({item * this exception statement from your version. If you delete this exception * statement from all source files in the program, then also delete it here. */ -(function(){function c(k){return(k==-1)?"":k+1}function f(l,m,k){return String.format('
{1}
',k.data.state.toLowerCase(),l)}function g(k){if(!k){return}return fspeed(k)}function i(k){if(k==-1){return""}return fspeed(k*1024)}function j(o,q,n){o=new Number(o);var k=o;var s=n.data.state+" "+o.toFixed(2)+"%";if(this.style){var m=this.style}else{var m=q.style}var l=new Number(m.match(/\w+:\s*(\d+)\w+/)[1]);return Deluge.progressBar(o,l-8,s)}function a(l,m,k){if(k.data.total_seeds>-1){return String.format("{0} ({1})",l,k.data.total_seeds)}else{return l}}function e(l,m,k){if(k.data.total_peers>-1){return String.format("{0} ({1})",l,k.data.total_peers)}else{return l}}function b(l,m,k){return(l<0)?"∞":parseFloat(new Number(l).toFixed(3))}function d(l,m,k){return String.format('
{0}
',l)}function h(k){return k*-1}Deluge.TorrentGrid=Ext.extend(Ext.grid.GridPanel,{torrents:{},columns:[{id:"queue",header:_("#"),width:30,sortable:true,renderer:c,dataIndex:"queue"},{id:"name",header:_("Name"),width:150,sortable:true,renderer:f,dataIndex:"name"},{header:_("Size"),width:75,sortable:true,renderer:fsize,dataIndex:"total_size"},{header:_("Progress"),width:150,sortable:true,renderer:j,dataIndex:"progress"},{header:_("Down Speed"),width:80,sortable:true,renderer:g,dataIndex:"download_payload_rate"},{header:_("Up Speed"),width:80,sortable:true,renderer:g,dataIndex:"upload_payload_rate"},{header:_("ETA"),width:60,sortable:true,renderer:ftime,dataIndex:"eta"},{header:_("Seeders"),hidden:true,width:60,sortable:true,renderer:a,dataIndex:"num_seeds"},{header:_("Peers"),hidden:true,width:60,sortable:true,renderer:e,dataIndex:"num_peers"},{header:_("Ratio"),hidden:true,width:60,sortable:true,renderer:b,dataIndex:"ratio"},{header:_("Avail"),hidden:true,width:60,sortable:true,renderer:b,dataIndex:"distributed_copies"},{header:_("Added"),hidden:true,width:80,sortable:true,renderer:fdate,dataIndex:"time_added"},{header:_("Tracker"),hidden:true,width:120,sortable:true,renderer:d,dataIndex:"tracker_host"},{header:_("Save Path"),hidden:true,width:120,sortable:true,renderer:fplain,dataIndex:"save_path"},{header:_("Downloaded"),hidden:true,width:75,sortable:true,renderer:fsize,dataIndex:"total_done"},{header:_("Uploaded"),hidden:true,width:75,sortable:true,renderer:fsize,dataIndex:"total_uploaded"},{header:_("Down Limit"),hidden:true,width:75,sortable:true,renderer:i,dataIndex:"max_download_speed"},{header:_("Up Limit"),hidden:true,width:75,sortable:true,renderer:i,dataIndex:"max_upload_speed"},{header:_("Seeders")+"/"+_("Peers"),hidden:true,width:75,sortable:true,renderer:b,dataIndex:"seeds_peers_ratio"}],meta:{root:"torrents",idProperty:"id",fields:[{name:"queue",sortType:Deluge.data.SortTypes.asQueuePosition},{name:"name"},{name:"total_size",type:"int"},{name:"state"},{name:"progress",type:"float"},{name:"num_seeds",type:"int"},{name:"total_seeds",type:"int"},{name:"num_peers",type:"int"},{name:"total_peers",type:"int"},{name:"download_payload_rate",type:"int"},{name:"upload_payload_rate",type:"int"},{name:"eta",type:"int",sortType:h},{name:"ratio",type:"float"},{name:"distributed_copies",type:"float"},{name:"time_added",type:"int"},{name:"tracker_host"},{name:"save_path"},{name:"total_done",type:"int"},{name:"total_uploaded",type:"int"},{name:"max_download_speed",type:"int"},{name:"max_upload_speed",type:"int"},{name:"seeds_peers_ratio",type:"float"}]},keys:[{key:"a",ctrl:true,stopEvent:true,handler:function(){deluge.torrents.getSelectionModel().selectAll()}},{key:[46],stopEvent:true,handler:function(){ids=deluge.torrents.getSelectedIds();deluge.removeWindow.show(ids)}}],constructor:function(k){k=Ext.apply({id:"torrentGrid",store:new Ext.data.JsonStore(this.meta),columns:this.columns,keys:this.keys,region:"center",cls:"deluge-torrents",stripeRows:true,autoExpandColumn:"name",autoExpandMin:150,deferredRender:false,autoScroll:true,margins:"5 5 0 0",stateful:true,view:new Ext.ux.grid.BufferView({rowHeight:26,scrollDelay:false})},k);Deluge.TorrentGrid.superclass.constructor.call(this,k)},initComponent:function(){Deluge.TorrentGrid.superclass.initComponent.call(this);deluge.events.on("torrentRemoved",this.onTorrentRemoved,this);deluge.events.on("disconnect",this.onDisconnect,this);this.on("rowcontextmenu",function(k,n,m){m.stopEvent();var l=k.getSelectionModel();if(!l.hasSelection()){l.selectRow(n)}deluge.menus.torrent.showAt(m.getPoint())})},getTorrent:function(k){return this.getStore().getAt(k)},getSelected:function(){return this.getSelectionModel().getSelected()},getSelections:function(){return this.getSelectionModel().getSelections()},getSelectedId:function(){return this.getSelectionModel().getSelected().id},getSelectedIds:function(){var k=[];Ext.each(this.getSelectionModel().getSelections(),function(l){k.push(l.id)});return k},update:function(o,m){var q=this.getStore();if(m){q.removeAll();this.torrents={}}var p=[];for(var r in o){var u=o[r];if(this.torrents[r]){var n=q.getById(r);n.beginEdit();for(var l in u){if(n.get(l)!=u[l]){n.set(l,u[l])}}n.endEdit()}else{var n=new Deluge.data.Torrent(u);n.id=r;this.torrents[r]=1;p.push(n)}}q.add(p);q.each(function(k){if(!o[k.id]){q.remove(k);delete this.torrents[k.id]}},this);q.commitChanges();var s=q.getSortState();if(!s){return}q.sort(s.field,s.direction)},onDisconnect:function(){this.getStore().removeAll();this.torrents={}},onTorrentRemoved:function(l){var k=this.getSelectionModel();Ext.each(l,function(n){var m=this.getStore().getById(n);if(k.isSelected(m)){k.deselectRow(this.getStore().indexOf(m))}this.getStore().remove(m);delete this.torrents[n]},this)}});deluge.torrents=new Deluge.TorrentGrid()})(); +(function(){function c(k){return(k==-1)?"":k+1}function f(l,m,k){return String.format('
{1}
',k.data.state.toLowerCase(),l)}function g(k){if(!k){return}return fspeed(k)}function i(k){if(k==-1){return""}return fspeed(k*1024)}function j(o,q,n){o=new Number(o);var k=o;var s=n.data.state+" "+o.toFixed(2)+"%";if(this.style){var m=this.style}else{var m=q.style}var l=new Number(m.match(/\w+:\s*(\d+)\w+/)[1]);return Deluge.progressBar(o,l-8,s)}function a(l,m,k){if(k.data.total_seeds>-1){return String.format("{0} ({1})",l,k.data.total_seeds)}else{return l}}function e(l,m,k){if(k.data.total_peers>-1){return String.format("{0} ({1})",l,k.data.total_peers)}else{return l}}function b(l,m,k){return(l<0)?"∞":parseFloat(new Number(l).toFixed(3))}function d(l,m,k){return String.format('
{0}
',l)}function h(k){return k*-1}Deluge.TorrentGrid=Ext.extend(Ext.grid.GridPanel,{torrents:{},columns:[{id:"queue",header:_("#"),width:30,sortable:true,renderer:c,dataIndex:"queue"},{id:"name",header:_("Name"),width:150,sortable:true,renderer:f,dataIndex:"name"},{header:_("Size"),width:75,sortable:true,renderer:fsize,dataIndex:"total_size"},{header:_("Progress"),width:150,sortable:true,renderer:j,dataIndex:"progress"},{header:_("Down Speed"),width:80,sortable:true,renderer:g,dataIndex:"download_payload_rate"},{header:_("Up Speed"),width:80,sortable:true,renderer:g,dataIndex:"upload_payload_rate"},{header:_("ETA"),width:60,sortable:true,renderer:ftime,dataIndex:"eta"},{header:_("Seeders"),hidden:true,width:60,sortable:true,renderer:a,dataIndex:"num_seeds"},{header:_("Peers"),hidden:true,width:60,sortable:true,renderer:e,dataIndex:"num_peers"},{header:_("Ratio"),hidden:true,width:60,sortable:true,renderer:b,dataIndex:"ratio"},{header:_("Avail"),hidden:true,width:60,sortable:true,renderer:b,dataIndex:"distributed_copies"},{header:_("Added"),hidden:true,width:80,sortable:true,renderer:fdate,dataIndex:"time_added"},{header:_("Tracker"),hidden:true,width:120,sortable:true,renderer:d,dataIndex:"tracker_host"},{header:_("Save Path"),hidden:true,width:120,sortable:true,renderer:fplain,dataIndex:"save_path"},{header:_("Downloaded"),hidden:true,width:75,sortable:true,renderer:fsize,dataIndex:"total_done"},{header:_("Uploaded"),hidden:true,width:75,sortable:true,renderer:fsize,dataIndex:"total_uploaded"},{header:_("Down Limit"),hidden:true,width:75,sortable:true,renderer:i,dataIndex:"max_download_speed"},{header:_("Up Limit"),hidden:true,width:75,sortable:true,renderer:i,dataIndex:"max_upload_speed"},{header:_("Seeders")+"/"+_("Peers"),hidden:true,width:75,sortable:true,renderer:b,dataIndex:"seeds_peers_ratio"}],meta:{root:"torrents",idProperty:"id",fields:[{name:"queue",sortType:Deluge.data.SortTypes.asQueuePosition},{name:"name",sortType:Deluge.data.SortTypes.asName},{name:"total_size",type:"int"},{name:"state"},{name:"progress",type:"float"},{name:"num_seeds",type:"int"},{name:"total_seeds",type:"int"},{name:"num_peers",type:"int"},{name:"total_peers",type:"int"},{name:"download_payload_rate",type:"int"},{name:"upload_payload_rate",type:"int"},{name:"eta",type:"int",sortType:h},{name:"ratio",type:"float"},{name:"distributed_copies",type:"float"},{name:"time_added",type:"int"},{name:"tracker_host"},{name:"save_path"},{name:"total_done",type:"int"},{name:"total_uploaded",type:"int"},{name:"max_download_speed",type:"int"},{name:"max_upload_speed",type:"int"},{name:"seeds_peers_ratio",type:"float"}]},keys:[{key:"a",ctrl:true,stopEvent:true,handler:function(){deluge.torrents.getSelectionModel().selectAll()}},{key:[46],stopEvent:true,handler:function(){ids=deluge.torrents.getSelectedIds();deluge.removeWindow.show(ids)}}],constructor:function(k){k=Ext.apply({id:"torrentGrid",store:new Ext.data.JsonStore(this.meta),columns:this.columns,keys:this.keys,region:"center",cls:"deluge-torrents",stripeRows:true,autoExpandColumn:"name",autoExpandMin:150,deferredRender:false,autoScroll:true,margins:"5 5 0 0",stateful:true,view:new Ext.ux.grid.BufferView({rowHeight:26,scrollDelay:false})},k);Deluge.TorrentGrid.superclass.constructor.call(this,k)},initComponent:function(){Deluge.TorrentGrid.superclass.initComponent.call(this);deluge.events.on("torrentRemoved",this.onTorrentRemoved,this);deluge.events.on("disconnect",this.onDisconnect,this);this.on("rowcontextmenu",function(k,n,m){m.stopEvent();var l=k.getSelectionModel();if(!l.hasSelection()){l.selectRow(n)}deluge.menus.torrent.showAt(m.getPoint())})},getTorrent:function(k){return this.getStore().getAt(k)},getSelected:function(){return this.getSelectionModel().getSelected()},getSelections:function(){return this.getSelectionModel().getSelections()},getSelectedId:function(){return this.getSelectionModel().getSelected().id},getSelectedIds:function(){var k=[];Ext.each(this.getSelectionModel().getSelections(),function(l){k.push(l.id)});return k},update:function(o,m){var q=this.getStore();if(m){q.removeAll();this.torrents={}}var p=[];for(var r in o){var u=o[r];if(this.torrents[r]){var n=q.getById(r);n.beginEdit();for(var l in u){if(n.get(l)!=u[l]){n.set(l,u[l])}}n.endEdit()}else{var n=new Deluge.data.Torrent(u);n.id=r;this.torrents[r]=1;p.push(n)}}q.add(p);q.each(function(k){if(!o[k.id]){q.remove(k);delete this.torrents[k.id]}},this);q.commitChanges();var s=q.getSortState();if(!s){return}q.sort(s.field,s.direction)},onDisconnect:function(){this.getStore().removeAll();this.torrents={}},onTorrentRemoved:function(l){var k=this.getSelectionModel();Ext.each(l,function(n){var m=this.getStore().getById(n);if(k.isSelected(m)){k.deselectRow(this.getStore().indexOf(m))}this.getStore().remove(m);delete this.torrents[n]},this)}});deluge.torrents=new Deluge.TorrentGrid()})(); /* * Deluge.UI.js * diff --git a/deluge/ui/web/js/ext-extensions-debug.js b/deluge/ui/web/js/ext-extensions-debug.js index 8bf134931..b8ce7c26c 100644 --- a/deluge/ui/web/js/ext-extensions-debug.js +++ b/deluge/ui/web/js/ext-extensions-debug.js @@ -1543,7 +1543,7 @@ Ext.override(Ext.ux.form.SpinnerField, { }); /*! * Ext.ux.form.SpinnerGroup.js - * + * * Copyright (c) Damien Churchill 2009-2010 * * This program is free software; you can redistribute it and/or modify @@ -1581,6 +1581,7 @@ Ext.ux.form.SpinnerGroup = Ext.extend(Ext.form.CheckboxGroup, { // private defaultType: 'spinnerfield', + anchor: '98%', // private groupCls: 'x-form-spinner-group', @@ -1697,6 +1698,7 @@ Ext.ux.form.SpinnerGroup = Ext.extend(Ext.form.CheckboxGroup, { this.items.each(function(field) { field.on('spin', this.onFieldChange, this); + field.on('change', this.onFieldChange, this); }, this); if (this.lazyValueSet) { diff --git a/deluge/ui/web/js/ext-extensions.js b/deluge/ui/web/js/ext-extensions.js index e77e6e257..be6f182cb 100644 --- a/deluge/ui/web/js/ext-extensions.js +++ b/deluge/ui/web/js/ext-extensions.js @@ -191,7 +191,7 @@ Ext.ns("Ext.ux.form");Ext.ux.form.SpinnerField=Ext.extend(Ext.form.NumberField,{ Ext.override(Ext.ux.form.SpinnerField,{onBlur:Ext.form.Field.prototype.onBlur}); /* * Ext.ux.form.SpinnerGroup.js - * + * * Copyright (c) Damien Churchill 2009-2010 * * This program is free software; you can redistribute it and/or modify @@ -220,7 +220,7 @@ Ext.override(Ext.ux.form.SpinnerField,{onBlur:Ext.form.Field.prototype.onBlur}); * this exception statement from your version. If you delete this exception * statement from all source files in the program, then also delete it here. */ -Ext.ns("Ext.ux.form");Ext.ux.form.SpinnerGroup=Ext.extend(Ext.form.CheckboxGroup,{defaultType:"spinnerfield",groupCls:"x-form-spinner-group",colCfg:{},onRender:function(h,f){if(!this.el){var o={cls:this.groupCls,layout:"column",border:false,renderTo:h};var a=Ext.apply({defaultType:this.defaultType,layout:"form",border:false,labelWidth:60,defaults:{hideLabel:true,anchor:"60%"}},this.colCfg);if(this.items[0].items){Ext.apply(o,{layoutConfig:{columns:this.items.length},defaults:this.defaults,items:this.items});for(var e=0,k=this.items.length;e0&&e%q==0){n++}if(this.items[e].fieldLabel){this.items[e].hideLabel=false}m[n].items.push(this.items[e])}}else{for(var e=0,k=this.items.length;e0&&e%q==0){n++}if(this.items[e].fieldLabel){this.items[e].hideLabel=false}m[n].items.push(this.items[e])}}else{for(var e=0,k=this.items.length;e