diff --git a/deluge/plugins/scheduler/scheduler/data/scheduler.js b/deluge/plugins/scheduler/scheduler/data/scheduler.js index 6a9d9790a..c3573a43d 100644 --- a/deluge/plugins/scheduler/scheduler/data/scheduler.js +++ b/deluge/plugins/scheduler/scheduler/data/scheduler.js @@ -1,92 +1,109 @@ -(function() { - function createEl(parent, type) { - var el = document.createElement(type); - parent.appendChild(el); - return el; +ScheduleSelectPanel = Ext.extend(Ext.form.FieldSet, { + constructor: function(config) { + config = Ext.apply({ + title: _('Schedule'), + autoHeight: true + }, config); + ScheduleSelectPanel.superclass.constructor.call(this, config); + }, + + onRender: function(ct, position) { + ScheduleSelectPanel.superclass.onRender.call(this, ct, position); + + var dom = this.body.dom; + var table = createEl(dom, 'table'); + + function createEl(parent, type) { + var el = document.createElement(type); + parent.appendChild(el); + return el; + } + + Ext.each(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], function(day) { + var row = createEl(table, 'tr'); + var label = createEl(row, 'th'); + label.setAttribute('style', 'font-weight: bold; padding-right: 5px;'); + label.innerHTML = day; + for (var hour = 0; hour < 24; hour++) { + var cell = createEl(row, 'td'); + cell.setAttribute('style', 'border: 1px solid Green; width: 16px; height: 20px; background: LightGreen;'); + } + }); } - - var DAYS = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']; - - ScheduleSelectPanel = Ext.extend(Ext.form.FieldSet, { - constructor: function(config) { - config = Ext.apply({ - title: _('Schedule'), - autoHeight: true - }, config); - ScheduleSelectPanel.superclass.constructor.call(this, config); - }, - - onRender: function(ct, position) { - ScheduleSelectPanel.superclass.onRender.call(this, ct, position); - - var dom = this.body.dom; - var table = createEl(dom, 'table'); - - Ext.each(DAYS, function(day) { - var row = createEl(table, 'tr'); - var label = createEl(row, 'th'); - label.setAttribute('style', 'font-weight: bold; padding-right: 5px;'); - label.innerHTML = day; - for (var hour = 0; hour < 24; hour++) { - var cell = createEl(row, 'td'); - cell.setAttribute('style', 'border: 1px solid Green; width: 16px; height: 20px; background: LightGreen;'); - } - }); - } - }); - - SchedulerPreferences = Ext.extend(Ext.Panel, { - constructor: function(config) { - config = Ext.apply({ - border: false, - title: _('Scheduler') - }, config); - SchedulerPreferences.superclass.constructor.call(this, config); - }, - - initComponent: function() { - SchedulerPreferences.superclass.initComponent.call(this); +}); - this.form = this.add({ - xtype: 'form', - layout: 'form', - border: false, - autoHeight: true - }); - - this.schedule = this.form.add(new ScheduleSelectPanel()); - - this.slowSettings = this.form.add({ - xtype: 'fieldset', - title: _('Slow Settings'), - autoHeight: true, - defaultType: 'uxspinner' - }); - - this.downloadLimit = this.slowSettings.add({ - fieldLabel: _('Download Limit'), - name: 'download_limit' - }); - this.uploadLimit = this.slowSettings.add({ - fieldLabel: _('Upload Limit'), - name: 'upload_limit' - }); - this.activeTorrents = this.slowSettings.add({ - fieldLabel: _('Active Torrents'), - name: 'active_torrents' - }); - }, +SchedulerPreferences = Ext.extend(Ext.Panel, { + constructor: function(config) { + config = Ext.apply({ + border: false, + title: _('Scheduler') + }, config); + SchedulerPreferences.superclass.constructor.call(this, config); + }, + + initComponent: function() { + SchedulerPreferences.superclass.initComponent.call(this); + + this.form = this.add({ + xtype: 'form', + layout: 'form', + border: false, + autoHeight: true + }); - onRender: function(ct, position) { - SchedulerPreferences.superclass.onRender.call(this, ct, position); - this.form.layout = new Ext.layout.FormLayout(); - this.form.layout.setContainer(this); - this.form.doLayout(); - }, + this.schedule = this.form.add(new ScheduleSelectPanel()); - onShow: function() { - SchedulerPreferences.superclass.onShow.call(this); - } - }); - Deluge.Preferences.addPage(new SchedulerPreferences()); + this.slowSettings = this.form.add({ + xtype: 'fieldset', + title: _('Slow Settings'), + autoHeight: true, + defaultType: 'uxspinner' + }); + + this.downloadLimit = this.slowSettings.add({ + fieldLabel: _('Download Limit'), + name: 'download_limit' + }); + this.uploadLimit = this.slowSettings.add({ + fieldLabel: _('Upload Limit'), + name: 'upload_limit' + }); + this.activeTorrents = this.slowSettings.add({ + fieldLabel: _('Active Torrents'), + name: 'active_torrents' + }); + }, + + onRender: function(ct, position) { + SchedulerPreferences.superclass.onRender.call(this, ct, position); + this.form.layout = new Ext.layout.FormLayout(); + this.form.layout.setContainer(this); + this.form.doLayout(); + }, + + onShow: function() { + SchedulerPreferences.superclass.onShow.call(this); + } +}); + +SchedulerPlugin = Ext.extend(Deluge.Plugin, { + constructor: function(config) { + config = Ext.apply({ + name: "Scheduler" + }, config); + SchedulerPlugin.superclass.constructor.call(this, config); + }, + + onDisable: function() { + Deluge.Preferences.removePage(this.prefsPage); + }, + + onEnable: function() { + this.prefsPage = new SchedulerPreferences(); + Deluge.Preferences.addPage(this.prefsPage); + } +}); + +(function() { + var plugin = new SchedulerPlugin(); })(); \ No newline at end of file diff --git a/deluge/plugins/scheduler/scheduler/webui.py b/deluge/plugins/scheduler/scheduler/webui.py index 9f28d582f..71cc8cc9a 100644 --- a/deluge/plugins/scheduler/scheduler/webui.py +++ b/deluge/plugins/scheduler/scheduler/webui.py @@ -1,7 +1,7 @@ # # webui.py # -# Copyright (C) 2009 Andrew Resch +# Copyright (C) 2009 Damien Churchill # # Basic plugin template created by: # Copyright (C) 2008 Martijn Voncken @@ -36,8 +36,6 @@ # statement from all source files in the program, then also delete it here. # -import pkg_resources - from deluge.log import LOG as log from deluge.ui.client import client from deluge import component @@ -46,16 +44,5 @@ from deluge.plugins.pluginbase import WebPluginBase from common import get_resource class WebUI(WebPluginBase): - def enable(self): - deluge_web = component.get("DelugeWeb").top_level - deluge_web.add_script("/js/scheduler.js") - - javascript = component.get("Javascript").directories - javascript.append(get_resource("")) - - def disable(self): - deluge_web = component.get("DelugeWeb").top_level - deluge_web.remove_script("/js/scheduler.js") - - javascript = component.get("Javascript").directories - javascript.remove(get_resource("")) + + scripts = [get_resource("scheduler.js")] \ No newline at end of file