diff --git a/ChangeLog b/ChangeLog index 9fa96f982..22c17d1e0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +=== Deluge 1.3.5 (In Development) === +==== GtkUI ==== + * Modified fix for #1957, keyerror with non-acsii columns + * Fix translation of items in Sidebar and Torrent Menu + * #2052: Fix translation of Progress bar text + +==== WebUI ==== + * #2050: Fix 'Up Speed' column not sorting + +==== Label ==== + * Disable items for 'All' in sidebar menu + * Fix items for translation + === Deluge 1.3.4 (03 March 2012) === ==== Core ==== * #1921: Free disk space reporting incorrectly in FreeBSD diff --git a/deluge/i18n/deluge.pot b/deluge/i18n/deluge.pot index 1c421c8ec..9e8140c57 100644 --- a/deluge/i18n/deluge.pot +++ b/deluge/i18n/deluge.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Deluge 1.3.3\n" +"Project-Id-Version: Deluge 1.3.4\n" "Report-Msgid-Bugs-To: http://deluge-torrent.org\n" -"POT-Creation-Date: 2012-02-28 19:34+0000\n" +"POT-Creation-Date: 2012-03-11 19:23+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -69,7 +69,7 @@ msgid "GiB/s" msgstr "" #: deluge/core/filtermanager.py:94 deluge/core/torrentmanager.py:973 -#: deluge/ui/gtkui/filtertreeview.py:77 +#: deluge/ui/gtkui/torrentview.py:90 deluge/ui/gtkui/filtertreeview.py:77 msgid "Error" msgstr "" @@ -241,7 +241,7 @@ msgid "From:" msgstr "" #: deluge/plugins/notifications/notifications/data/config.glade:415 -#: deluge/ui/gtkui/preferences.py:91 +#: deluge/ui/gtkui/preferences.py:92 msgid "Enabled" msgstr "" @@ -644,6 +644,7 @@ msgid "Unknown Torrent" msgstr "" #: deluge/plugins/label/label/data/label_options.glade:7 +#: deluge/plugins/label/label/gtkui/sidebar_menu.py:188 msgid "Label Options" msgstr "" @@ -685,7 +686,7 @@ msgid "Apply Queue settings:" msgstr "" #: deluge/plugins/label/label/data/label_options.glade:426 -#: deluge/ui/gtkui/preferences.py:77 +#: deluge/ui/gtkui/preferences.py:78 msgid "Queue" msgstr "" @@ -738,7 +739,7 @@ msgstr "" #: deluge/plugins/label/label/gtkui/__init__.py:77 #: deluge/plugins/label/label/gtkui/__init__.py:111 -#: deluge/plugins/label/label/gtkui/submenu.py:48 +#: deluge/plugins/label/label/gtkui/submenu.py:51 #: deluge/plugins/label/label/gtkui/label_config.py:59 #: deluge/plugins/label/label/gtkui/label_config.py:66 msgid "Label" @@ -756,6 +757,11 @@ msgstr "" msgid "_Add Label" msgstr "" +#: deluge/plugins/label/label/gtkui/submenu.py:46 +#: deluge/ui/gtkui/filtertreeview.py:80 +msgid "No Label" +msgstr "" + #: deluge/ui/countries.py:9 msgid "Afghanistan" msgstr "" @@ -1817,76 +1823,96 @@ msgid "" "Deluge" msgstr "" -#: deluge/ui/gtkui/torrentview.py:218 +#: deluge/ui/gtkui/torrentview.py:85 deluge/ui/gtkui/filtertreeview.py:72 +msgid "Downloading" +msgstr "" + +#: deluge/ui/gtkui/torrentview.py:86 deluge/ui/gtkui/filtertreeview.py:73 +msgid "Seeding" +msgstr "" + +#: deluge/ui/gtkui/torrentview.py:87 deluge/ui/gtkui/filtertreeview.py:74 +msgid "Paused" +msgstr "" + +#: deluge/ui/gtkui/torrentview.py:88 deluge/ui/gtkui/filtertreeview.py:75 +msgid "Checking" +msgstr "" + +#: deluge/ui/gtkui/torrentview.py:89 deluge/ui/gtkui/filtertreeview.py:76 +msgid "Queued" +msgstr "" + +#: deluge/ui/gtkui/torrentview.py:236 msgid "Name" msgstr "" -#: deluge/ui/gtkui/torrentview.py:221 +#: 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 msgid "Size" msgstr "" -#: deluge/ui/gtkui/torrentview.py:224 +#: deluge/ui/gtkui/torrentview.py:242 msgid "Downloaded" msgstr "" -#: deluge/ui/gtkui/torrentview.py:227 +#: deluge/ui/gtkui/torrentview.py:245 msgid "Uploaded" msgstr "" -#: deluge/ui/gtkui/torrentview.py:230 deluge/ui/gtkui/torrentview.py:560 +#: deluge/ui/gtkui/torrentview.py:248 deluge/ui/gtkui/torrentview.py:578 #: deluge/ui/gtkui/peers_tab.py:129 deluge/ui/gtkui/files_tab.py:156 msgid "Progress" msgstr "" -#: deluge/ui/gtkui/torrentview.py:234 deluge/ui/gtkui/torrentview.py:240 +#: deluge/ui/gtkui/torrentview.py:252 deluge/ui/gtkui/torrentview.py:258 msgid "Seeders" msgstr "" -#: deluge/ui/gtkui/torrentview.py:237 deluge/ui/gtkui/torrentview.py:240 +#: deluge/ui/gtkui/torrentview.py:255 deluge/ui/gtkui/torrentview.py:258 msgid "Peers" msgstr "" -#: deluge/ui/gtkui/torrentview.py:242 deluge/ui/gtkui/peers_tab.py:142 +#: deluge/ui/gtkui/torrentview.py:260 deluge/ui/gtkui/peers_tab.py:142 msgid "Down Speed" msgstr "" -#: deluge/ui/gtkui/torrentview.py:244 deluge/ui/gtkui/peers_tab.py:155 +#: deluge/ui/gtkui/torrentview.py:262 deluge/ui/gtkui/peers_tab.py:155 msgid "Up Speed" msgstr "" -#: deluge/ui/gtkui/torrentview.py:246 +#: deluge/ui/gtkui/torrentview.py:264 msgid "Down Limit" msgstr "" -#: deluge/ui/gtkui/torrentview.py:248 +#: deluge/ui/gtkui/torrentview.py:266 msgid "Up Limit" msgstr "" -#: deluge/ui/gtkui/torrentview.py:250 +#: deluge/ui/gtkui/torrentview.py:268 msgid "ETA" msgstr "" -#: deluge/ui/gtkui/torrentview.py:252 +#: deluge/ui/gtkui/torrentview.py:270 msgid "Ratio" msgstr "" -#: deluge/ui/gtkui/torrentview.py:254 +#: deluge/ui/gtkui/torrentview.py:272 msgid "Avail" msgstr "" -#: deluge/ui/gtkui/torrentview.py:256 +#: deluge/ui/gtkui/torrentview.py:274 msgid "Added" msgstr "" -#: deluge/ui/gtkui/torrentview.py:258 +#: deluge/ui/gtkui/torrentview.py:276 #: deluge/ui/gtkui/createtorrentdialog.py:105 #: deluge/ui/gtkui/edittrackersdialog.py:86 msgid "Tracker" msgstr "" -#: deluge/ui/gtkui/torrentview.py:262 +#: deluge/ui/gtkui/torrentview.py:280 msgid "Save Path" msgstr "" @@ -2067,55 +2093,55 @@ msgstr "" msgid " Torrent Queued" msgstr "" -#: deluge/ui/gtkui/preferences.py:72 +#: deluge/ui/gtkui/preferences.py:73 msgid "Categories" msgstr "" -#: deluge/ui/gtkui/preferences.py:76 +#: deluge/ui/gtkui/preferences.py:77 msgid "Downloads" msgstr "" -#: deluge/ui/gtkui/preferences.py:76 +#: deluge/ui/gtkui/preferences.py:77 msgid "Network" msgstr "" -#: deluge/ui/gtkui/preferences.py:76 +#: deluge/ui/gtkui/preferences.py:77 msgid "Bandwidth" msgstr "" -#: deluge/ui/gtkui/preferences.py:77 +#: deluge/ui/gtkui/preferences.py:78 msgid "Interface" msgstr "" -#: deluge/ui/gtkui/preferences.py:77 +#: deluge/ui/gtkui/preferences.py:78 msgid "Other" msgstr "" -#: deluge/ui/gtkui/preferences.py:77 +#: deluge/ui/gtkui/preferences.py:78 msgid "Daemon" msgstr "" -#: deluge/ui/gtkui/preferences.py:77 +#: deluge/ui/gtkui/preferences.py:78 msgid "Proxy" msgstr "" -#: deluge/ui/gtkui/preferences.py:78 +#: deluge/ui/gtkui/preferences.py:79 msgid "Cache" msgstr "" -#: deluge/ui/gtkui/preferences.py:78 +#: deluge/ui/gtkui/preferences.py:79 msgid "Plugins" msgstr "" -#: deluge/ui/gtkui/preferences.py:93 +#: deluge/ui/gtkui/preferences.py:94 msgid "Plugin" msgstr "" -#: deluge/ui/gtkui/preferences.py:894 +#: deluge/ui/gtkui/preferences.py:895 msgid "Select the Plugin" msgstr "" -#: deluge/ui/gtkui/preferences.py:905 +#: deluge/ui/gtkui/preferences.py:906 msgid "Plugin Eggs" msgstr "" @@ -2143,22 +2169,22 @@ msgstr "" msgid "Set Maximum Upload Slots" msgstr "" -#: deluge/ui/gtkui/gtkui.py:302 deluge/ui/gtkui/gtkui.py:317 +#: deluge/ui/gtkui/gtkui.py:311 deluge/ui/gtkui/gtkui.py:326 msgid "Turn off Classic Mode?" msgstr "" -#: deluge/ui/gtkui/gtkui.py:303 +#: deluge/ui/gtkui/gtkui.py:312 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:312 +#: deluge/ui/gtkui/gtkui.py:321 msgid "Error Starting Core" msgstr "" -#: deluge/ui/gtkui/gtkui.py:313 +#: deluge/ui/gtkui/gtkui.py:322 msgid "" "There was an error starting the core component which is required to run " "Deluge in Classic Mode.\n" @@ -2166,17 +2192,17 @@ msgid "" "Please see the details below for more information." msgstr "" -#: deluge/ui/gtkui/gtkui.py:318 +#: deluge/ui/gtkui/gtkui.py:327 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:342 +#: deluge/ui/gtkui/gtkui.py:351 msgid "Error Starting Daemon" msgstr "" -#: deluge/ui/gtkui/gtkui.py:343 +#: deluge/ui/gtkui/gtkui.py:352 msgid "" "There was an error starting the daemon process. Try running it from a " "console to see if there is an error." @@ -2333,26 +2359,6 @@ msgstr "" msgid "All" msgstr "" -#: deluge/ui/gtkui/filtertreeview.py:72 -msgid "Downloading" -msgstr "" - -#: deluge/ui/gtkui/filtertreeview.py:73 -msgid "Seeding" -msgstr "" - -#: deluge/ui/gtkui/filtertreeview.py:74 -msgid "Paused" -msgstr "" - -#: deluge/ui/gtkui/filtertreeview.py:75 -msgid "Checking" -msgstr "" - -#: deluge/ui/gtkui/filtertreeview.py:76 -msgid "Queued" -msgstr "" - #: deluge/ui/gtkui/filtertreeview.py:78 msgid "Active" msgstr "" @@ -2361,10 +2367,6 @@ msgstr "" msgid "None" msgstr "" -#: deluge/ui/gtkui/filtertreeview.py:80 -msgid "No Label" -msgstr "" - #: deluge/ui/gtkui/glade/remove_torrent_dialog.glade:45 msgid "Remove the selected torrent?" msgstr "" @@ -3596,6 +3598,10 @@ msgstr "" msgid "_Open Folder" msgstr "" +#: deluge/ui/gtkui/glade/torrent_menu.glade:33 +msgid "_Pause" +msgstr "" + #: deluge/ui/gtkui/glade/torrent_menu.glade:49 msgid "Resu_me" msgstr "" diff --git a/deluge/ui/web/js/deluge-all-debug.js b/deluge/ui/web/js/deluge-all-debug.js index c52db283a..1404a07f0 100644 --- a/deluge/ui/web/js/deluge-all-debug.js +++ b/deluge/ui/web/js/deluge-all-debug.js @@ -9018,7 +9018,7 @@ Deluge.Toolbar = Ext.extend(Ext.Toolbar, { {name: 'num_peers', type: 'int'}, {name: 'total_peers', type: 'int'}, {name: 'download_payload_rate', type: 'int'}, - {name: 'upload_payload_speed', type: 'int'}, + {name: 'upload_payload_rate', type: 'int'}, {name: 'eta', type: 'int', sortType: etaSorter}, {name: 'ratio', type: 'float'}, {name: 'distributed_copies', type: 'float'}, diff --git a/deluge/ui/web/js/deluge-all.js b/deluge/ui/web/js/deluge-all.js index 9e8a4d44e..1621cadd0 100644 --- a/deluge/ui/web/js/deluge-all.js +++ b/deluge/ui/web/js/deluge-all.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_speed",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"},{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 *