change the scheduler plugin to use the new plugin architecture

This commit is contained in:
Damien Churchill 2009-09-14 10:26:59 +00:00
parent 63b02f28d1
commit da5697490d
2 changed files with 107 additions and 103 deletions

View File

@ -1,92 +1,109 @@
(function() { ScheduleSelectPanel = Ext.extend(Ext.form.FieldSet, {
function createEl(parent, type) { constructor: function(config) {
var el = document.createElement(type); config = Ext.apply({
parent.appendChild(el); title: _('Schedule'),
return el; 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({ SchedulerPreferences = Ext.extend(Ext.Panel, {
xtype: 'form', constructor: function(config) {
layout: 'form', config = Ext.apply({
border: false, border: false,
autoHeight: true title: _('Scheduler')
}); }, config);
SchedulerPreferences.superclass.constructor.call(this, config);
this.schedule = this.form.add(new ScheduleSelectPanel()); },
this.slowSettings = this.form.add({ initComponent: function() {
xtype: 'fieldset', SchedulerPreferences.superclass.initComponent.call(this);
title: _('Slow Settings'),
autoHeight: true, this.form = this.add({
defaultType: 'uxspinner' xtype: 'form',
}); layout: 'form',
border: false,
this.downloadLimit = this.slowSettings.add({ autoHeight: true
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) { this.schedule = this.form.add(new ScheduleSelectPanel());
SchedulerPreferences.superclass.onRender.call(this, ct, position);
this.form.layout = new Ext.layout.FormLayout();
this.form.layout.setContainer(this);
this.form.doLayout();
},
onShow: function() { this.slowSettings = this.form.add({
SchedulerPreferences.superclass.onShow.call(this); xtype: 'fieldset',
} title: _('Slow Settings'),
}); autoHeight: true,
Deluge.Preferences.addPage(new SchedulerPreferences()); 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();
})(); })();

View File

@ -1,7 +1,7 @@
# #
# webui.py # webui.py
# #
# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com> # Copyright (C) 2009 Damien Churchill <damoxc@gmail.com>
# #
# Basic plugin template created by: # Basic plugin template created by:
# Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com> # Copyright (C) 2008 Martijn Voncken <mvoncken@gmail.com>
@ -36,8 +36,6 @@
# statement from all source files in the program, then also delete it here. # 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.log import LOG as log
from deluge.ui.client import client from deluge.ui.client import client
from deluge import component from deluge import component
@ -46,16 +44,5 @@ from deluge.plugins.pluginbase import WebPluginBase
from common import get_resource from common import get_resource
class WebUI(WebPluginBase): class WebUI(WebPluginBase):
def enable(self):
deluge_web = component.get("DelugeWeb").top_level scripts = [get_resource("scheduler.js")]
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(""))