initial implementation of the label plugin webui, purely a mock up at the moment
This commit is contained in:
parent
1825ce09fb
commit
9cde1f3e45
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue