tweak the setup script so the web plugin has the correct entry point

implement the webui server side plugin
add a page to the preferences window in the javascript
This commit is contained in:
Damien Churchill 2009-06-10 16:37:21 +00:00
parent 227e464b63
commit aa4c783601
3 changed files with 108 additions and 4 deletions

View File

@ -0,0 +1,92 @@
(function() {
function createEl(parent, type) {
var el = document.createElement(type);
parent.appendChild(el);
return el;
}
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'
});
},
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);
}
});
Deluge.Preferences.addPage(new SchedulerPreferences());
})();

View File

@ -36,14 +36,26 @@
# 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
from deluge.plugins.pluginbase import WebPluginBase from deluge.plugins.pluginbase import WebPluginBase
from common import get_resource
class WebUI(WebPluginBase): class WebUI(WebPluginBase):
def enable(self): def enable(self):
pass 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): def disable(self):
pass deluge_web = component.get("DelugeWeb").top_level
deluge_web.remove_script("/js/scheduler.js")
javascript = component.get("Javascript").directories
javascript.remove(get_resource(""))

View File

@ -66,7 +66,7 @@ setup(
%s = %s:CorePlugin %s = %s:CorePlugin
[deluge.plugin.gtkui] [deluge.plugin.gtkui]
%s = %s:GtkUIPlugin %s = %s:GtkUIPlugin
[deluge.plugin.webui] [deluge.plugin.web]
%s = %s:WebUIPlugin %s = %s:WebUIPlugin
""" % ((__plugin_name__, __plugin_name__.lower())*3) """ % ((__plugin_name__, __plugin_name__.lower())*3)
) )