initial implementation of the label plugin webui, purely a mock up at the moment

This commit is contained in:
Damien Churchill 2010-04-24 02:32:18 +01:00
parent 1825ce09fb
commit 9cde1f3e45
3 changed files with 79 additions and 101 deletions

View File

@ -1,106 +1,84 @@
/*
# Copyright (C) Martijn Voncken 2008 <mvoncken@gmail.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, write to:
# The Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor
# Boston, MA 02110-1301, USA.
#
# In addition, as a special exception, the copyright holders give
# permission to link the code of portions of this program with the OpenSSL
# library.
# You must obey the GNU General Public License in all respects for all of
# the code used other than OpenSSL. If you modify file(s) with this
# exception, you may extend this exception to your version of the file(s),
# but you are not obligated to do so. If you do not wish to do so, delete
# this exception statement from your version. If you delete this exception
# statement from all source files in the program, then also delete it here.
#
#
*/
/*!
* label.js
*
* Copyright (c) Damien Churchill 2010 <damoxc@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, write to:
* The Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301, USA.
*
* In addition, as a special exception, the copyright holders give
* permission to link the code of portions of this program with the OpenSSL
* library.
* You must obey the GNU General Public License in all respects for all of
* the code used other than OpenSSL. If you modify file(s) with this
* exception, you may extend this exception to your version of the file(s),
* but you are not obligated to do so. If you do not wish to do so, delete
* this exception statement from your version. If you delete this exception
* statement from all source files in the program, then also delete it here.
*/
Deluge.plugins.LabelPlugin = Ext.extend(Deluge.Plugin, {
popup_icon = "/static/images/tango/emblem-symbolic-link.png" /*the best i could find in 15 minutes, i still hate it.*/
name: 'Label',
Plugins = {}
Plugins.Label = {
initialize : function() {
this.bound = {
addPopup: this.addPopup.bind(this),
labelAction: this.labelAction.bindWithEvent(this),
};
$$('.filter_label').each(this.bound.addPopup);
var menu = new Widgets.PopupMenu();
menu.add(this.menu);
menu.addEvent('action', this.bound.labelAction);
},
/*add menu to html-ui*/
addPopup: function (el) {
var label_id = el.id.substring(13); /*crop of "filter_label_"*/
el.addEvent('contextmenu', function(el) {
alert('popup menu here : [label="' + label_id + '"] (using this.menu definitions)');
return false;
createMenu: function() {
this.labelMenu = new Ext.menu.Menu({
items: [{
text: _('Add Label'),
iconCls: 'icon-add'
}, {
text: _('Remove Label'),
disabled: true,
iconCls: 'icon-remove'
}, {
text: _('Label Options'),
disabled: true
}]
});
},
/*callback handler*/
labelAction: function(action, label_id) {
// We use $empty here to ensure that there is some form of a
// function to call
func = ($defined(this[action])) ? this[action] : $empty;
func(label_id);
onDisable: function() {
},
/*menu callbacks:*/
add: function(label_id) {
alert("Add Label:" + label_id);
},
edit: function() {
alert("Edit Label:" + label_id);
},
remove: function() {
alert("Remove Label:" + label_id);
onEnable: function() {
deluge.sidebar.on('filtercreate', this.onFilterCreate, this);
},
/*popup menu definition*/
menu:[
{
type:'text',
action:'add',
text: _('Add Label'),
icon:'/static/images/tango/pause.png'
},
{
type: 'text',
action: 'edit',
text: _('Label Options'),
icon: '/static/images/tango/start.png'
},
{
type: 'text',
action: 'remove',
text: _('Remove Label'),
icon: '/static/images/tango/start.png'
}
]
};
onFilterCreate: function(sidebar, filter) {
if (filter.filter != 'label') return;
filter.list.on('contextmenu', this.onLabelContextMenu, this);
filter.header.on('contextmenu', this.onLabelHeaderContextMenu, this);
},
window.addEvent('domready', function(e) {
Plugins.Label.initialize();
onLabelContextMenu: function(dv, i, node, e) {
e.preventDefault();
if (!this.labelMenu) this.createMenu();
this.labelMenu.items.get(1).setDisabled(false);
this.labelMenu.items.get(2).setDisabled(false);
dv.select(i);
this.labelMenu.showAt(e.getXY());
},
onLabelHeaderContextMenu: function(e, t) {
e.preventDefault();
if (!this.labelMenu) this.createMenu();
this.labelMenu.items.get(1).setDisabled(true);
this.labelMenu.items.get(2).setDisabled(true);
this.labelMenu.showAt(e.getXY());
}
});
Deluge.registerPlugin('Label', Deluge.plugins.LabelPlugin);

View File

@ -38,17 +38,17 @@
#
import os
import pkg_resources
from deluge.common import fspeed
from deluge.log import LOG as log
from deluge.ui.client import client
from deluge.plugins.pluginbase import WebPluginBase
from deluge import component
def get_resource(filename):
return pkg_resources.resource_filename("label", os.path.join("data", filename))
class WebUI(WebPluginBase):
def enable(self):
pass
def disable(self):
pass
scripts = [get_resource("label.js")]
debug_scripts = scripts

View File

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