1 /* 2 Script: deluge-menus.js 3 Contains all the menus contained within the UI for easy access and editing. 4 5 Copyright: 6 (C) Damien Churchill 2009 <damoxc@gmail.com> 7 This program is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation; either version 3, or (at your option) 10 any later version. 11 12 This program is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with this program. If not, write to: 19 The Free Software Foundation, Inc., 20 51 Franklin Street, Fifth Floor 21 Boston, MA 02110-1301, USA. 22 23 In addition, as a special exception, the copyright holders give 24 permission to link the code of portions of this program with the OpenSSL 25 library. 26 You must obey the GNU General Public License in all respects for all of 27 the code used other than OpenSSL. If you modify file(s) with this 28 exception, you may extend this exception to your version of the file(s), 29 but you are not obligated to do so. If you do not wish to do so, delete 30 this exception statement from your version. If you delete this exception 31 statement from all source files in the program, then also delete it here. 32 33 */ 34 35 Deluge.Menus = { 36 onTorrentAction: function(item, e) { 37 var selection = Deluge.Torrents.getSelections(); 38 var ids = []; 39 Ext.each(selection, function(record) { 40 ids.push(record.id); 41 }); 42 43 switch (item.id) { 44 case 'pause': 45 case 'resume': 46 Deluge.Client.core[item.id + '_torrent'](ids, { 47 success: function() { 48 Deluge.UI.update(); 49 } 50 }); 51 break; 52 case 'top': 53 case 'up': 54 case 'down': 55 case 'bottom': 56 Deluge.Client.core['queue_' + item.id](ids, { 57 success: function() { 58 Deluge.UI.update(); 59 } 60 }); 61 break; 62 case 'edit_trackers': 63 Deluge.EditTrackers.show(); 64 break; 65 case 'update': 66 Deluge.Client.core.force_reannounce(ids, { 67 success: function() { 68 Deluge.UI.update(); 69 } 70 }); 71 break; 72 case 'remove': 73 Deluge.Events.fire('torrentRemoved', ids); 74 Deluge.Client.core.remove_torrent(ids, null, { 75 success: function() { 76 Deluge.UI.update(); 77 } 78 }); 79 break; 80 case 'recheck': 81 Deluge.Client.core.force_recheck(ids, { 82 success: function() { 83 Deluge.UI.update(); 84 } 85 }); 86 break; 87 } 88 } 89 } 90 91 Deluge.Menus.Torrent = new Ext.menu.Menu({ 92 id: 'torrentMenu', 93 items: [{ 94 id: 'pause', 95 text: _('Pause'), 96 icon: '/icons/pause.png', 97 handler: Deluge.Menus.onTorrentAction, 98 scope: Deluge.Menus 99 }, { 100 id: 'resume', 101 text: _('Resume'), 102 icon: '/icons/start.png', 103 handler: Deluge.Menus.onTorrentAction, 104 scope: Deluge.Menus 105 }, '-', { 106 id: 'options', 107 text: _('Options'), 108 icon: '/icons/preferences.png', 109 menu: new Ext.menu.Menu({ 110 items: [{ 111 text: _('D/L Speed Limit'), 112 iconCls: 'x-deluge-downloading', 113 menu: new Ext.menu.Menu({ 114 items: [{ 115 text: _('5 KiB/s') 116 }, { 117 text: _('10 KiB/s') 118 }, { 119 text: _('30 KiB/s') 120 }, { 121 text: _('80 KiB/s') 122 }, { 123 text: _('300 KiB/s') 124 },{ 125 text: _('Unlimited') 126 }] 127 }) 128 }, { 129 text: _('U/L Speed Limit'), 130 iconCls: 'x-deluge-seeding', 131 menu: new Ext.menu.Menu({ 132 items: [{ 133 text: _('5 KiB/s') 134 }, { 135 text: _('10 KiB/s') 136 }, { 137 text: _('30 KiB/s') 138 }, { 139 text: _('80 KiB/s') 140 }, { 141 text: _('300 KiB/s') 142 },{ 143 text: _('Unlimited') 144 }] 145 }) 146 }, { 147 text: _('Connection Limit'), 148 iconCls: 'x-deluge-connections', 149 menu: new Ext.menu.Menu({ 150 items: [{ 151 text: _('50') 152 }, { 153 text: _('100') 154 }, { 155 text: _('200') 156 }, { 157 text: _('300') 158 }, { 159 text: _('500') 160 },{ 161 text: _('Unlimited') 162 }] 163 }) 164 }, { 165 text: _('Upload Slot Limit'), 166 icon: '/icons/upload_slots.png', 167 menu: new Ext.menu.Menu({ 168 items: [{ 169 text: _('0') 170 }, { 171 text: _('1') 172 }, { 173 text: _('2') 174 }, { 175 text: _('3') 176 }, { 177 text: _('5') 178 },{ 179 text: _('Unlimited') 180 }] 181 }) 182 }, { 183 id: 'auto_managed', 184 text: _('Auto Managed'), 185 checked: false 186 }] 187 }) 188 }, '-', { 189 text: _('Queue'), 190 icon: '/icons/queue.png', 191 menu: new Ext.menu.Menu({ 192 items: [{ 193 id: 'top', 194 text: _('Top'), 195 icon: '/icons/top.png', 196 handler: Deluge.Menus.onTorrentAction, 197 scope: Deluge.Menus 198 },{ 199 id: 'up', 200 text: _('Up'), 201 icon: '/icons/up.png', 202 handler: Deluge.Menus.onTorrentAction, 203 scope: Deluge.Menus 204 },{ 205 id: 'down', 206 text: _('Down'), 207 icon: '/icons/down.png', 208 handler: Deluge.Menus.onTorrentAction, 209 scope: Deluge.Menus 210 },{ 211 id: 'bottom', 212 text: _('Bottom'), 213 icon: '/icons/bottom.png', 214 handler: Deluge.Menus.onTorrentAction, 215 scope: Deluge.Menus 216 }] 217 }) 218 }, '-', { 219 id: 'update', 220 text: _('Update Tracker'), 221 icon: '/icons/update.png', 222 handler: Deluge.Menus.onTorrentAction, 223 scope: Deluge.Menus 224 }, { 225 id: 'edit_trackers', 226 text: _('Edit Trackers'), 227 icon: '/icons/edit_trackers.png', 228 handler: Deluge.Menus.onTorrentAction, 229 scope: Deluge.Menus 230 }, '-', { 231 id: 'remove', 232 text: _('Remove Torrent'), 233 icon: '/icons/remove.png', 234 handler: Deluge.Menus.onTorrentAction, 235 scope: Deluge.Menus 236 }, '-', { 237 id: 'recheck', 238 text: _('Force Recheck'), 239 icon: '/icons/recheck.png', 240 handler: Deluge.Menus.onTorrentAction, 241 scope: Deluge.Menus 242 /*}, { 243 id: 'move', 244 text: _('Move Storage'), 245 icon: '/icons/move.png', 246 handler: Deluge.Menus.onTorrentAction, 247 scope: Deluge.Menus*/ 248 }] 249 }); 250 251 Deluge.Menus.Connections = new Ext.menu.Menu({ 252 id: 'connectionsMenu', 253 items: [{ 254 id: '50', 255 text: '50', 256 group: 'max_connections_global', 257 checked: false, 258 checkHandler: onLimitChanged 259 },{ 260 id: '100', 261 text: '100', 262 group: 'max_connections_global', 263 checked: false, 264 checkHandler: onLimitChanged 265 },{ 266 id: '200', 267 text: '200', 268 group: 'max_connections_global', 269 checked: false, 270 checkHandler: onLimitChanged 271 },{ 272 id: '300', 273 text: '300', 274 group: 'max_connections_global', 275 checked: false, 276 checkHandler: onLimitChanged 277 },{ 278 id: '500', 279 text: '500', 280 group: 'max_connections_global', 281 checked: false, 282 checkHandler: onLimitChanged 283 },{ 284 id: '-1', 285 text: _('Unlimited'), 286 group: 'max_connections_global', 287 checked: false, 288 checkHandler: onLimitChanged 289 },'-',{ 290 id: 'other', 291 text: _('Other'), 292 group: 'max_connections_global', 293 checked: false, 294 checkHandler: onLimitChanged 295 }] 296 }); 297 298 Deluge.Menus.Download = new Ext.menu.Menu({ 299 id: 'downspeedMenu', 300 items: [{ 301 id: '5', 302 text: '5 KiB/s', 303 group: 'max_download_speed', 304 checked: false, 305 checkHandler: onLimitChanged 306 },{ 307 id: '10', 308 text: '10 KiB/s', 309 group: 'max_download_speed', 310 checked: false, 311 checkHandler: onLimitChanged 312 },{ 313 id: '30', 314 text: '30 KiB/s', 315 group: 'max_download_speed', 316 checked: false, 317 checkHandler: onLimitChanged 318 },{ 319 id: '80', 320 text: '80 KiB/s', 321 group: 'max_download_speed', 322 checked: false, 323 checkHandler: onLimitChanged 324 },{ 325 id: '300', 326 text: '300 KiB/s', 327 group: 'max_download_speed', 328 checked: false, 329 checkHandler: onLimitChanged 330 },{ 331 id: '-1', 332 text: _('Unlimited'), 333 group: 'max_download_speed', 334 checked: false, 335 checkHandler: onLimitChanged 336 },'-',{ 337 id: 'other', 338 text: _('Other'), 339 group: 'max_download_speed', 340 checked: false, 341 checkHandler: onLimitChanged 342 }] 343 }); 344 345 Deluge.Menus.Upload = new Ext.menu.Menu({ 346 id: 'upspeedMenu', 347 items: [{ 348 id: '5', 349 text: '5 KiB/s', 350 group: 'max_upload_speed', 351 checked: false, 352 checkHandler: onLimitChanged 353 },{ 354 id: '10', 355 text: '10 KiB/s', 356 group: 'max_upload_speed', 357 checked: false, 358 checkHandler: onLimitChanged 359 },{ 360 id: '30', 361 text: '30 KiB/s', 362 group: 'max_upload_speed', 363 checked: false, 364 checkHandler: onLimitChanged 365 },{ 366 id: '80', 367 text: '80 KiB/s', 368 group: 'max_upload_speed', 369 checked: false, 370 checkHandler: onLimitChanged 371 },{ 372 id: '300', 373 text: '300 KiB/s', 374 group: 'max_upload_speed', 375 checked: false, 376 checkHandler: onLimitChanged 377 },{ 378 id: '-1', 379 text: _('Unlimited'), 380 group: 'max_upload_speed', 381 checked: false, 382 checkHandler: onLimitChanged 383 },'-',{ 384 id: 'other', 385 text: _('Other'), 386 group: 'max_upload_speed', 387 checked: false, 388 checkHandler: onLimitChanged 389 }] 390 }); 391 392 Deluge.Menus.FilePriorities = new Ext.menu.Menu({ 393 id: 'filePrioritiesMenu', 394 items: [{ 395 id: 'expandAll', 396 text: _('Expand All'), 397 icon: '/icons/expand_all.png' 398 }, '-', { 399 id: 'no_download', 400 text: _('Do Not Download'), 401 icon: '/icons/no_download.png', 402 filePriority: 0 403 }, { 404 id: 'normal', 405 text: _('Normal Priority'), 406 icon: '/icons/normal.png', 407 filePriority: 1 408 }, { 409 id: 'high', 410 text: _('High Priority'), 411 icon: '/icons/high.png', 412 filePriority: 2 413 }, { 414 id: 'highest', 415 text: _('Highest Priority'), 416 icon: '/icons/highest.png', 417 filePriority: 5 418 }] 419 }); 420 421 function onLimitChanged(item, checked) { 422 if (item.id == "other") { 423 } else { 424 config = {} 425 config[item.group] = item.id 426 Deluge.Client.core.set_config(config, { 427 success: function() { 428 Deluge.UI.update(); 429 } 430 }); 431 } 432 }