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>
|
* label.js
|
||||||
#
|
*
|
||||||
# This program is free software; you can redistribute it and/or modify
|
* Copyright (c) Damien Churchill 2010 <damoxc@gmail.com>
|
||||||
# it under the terms of the GNU General Public License as published by
|
*
|
||||||
# the Free Software Foundation; either version 3, or (at your option)
|
* This program is free software; you can redistribute it and/or modify
|
||||||
# any later version.
|
* it under the terms of the GNU General Public License as published by
|
||||||
#
|
* the Free Software Foundation; either version 3, or (at your option)
|
||||||
# This program is distributed in the hope that it will be useful,
|
* any later version.
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
*
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* This program is distributed in the hope that it will be useful,
|
||||||
# GNU General Public License for more details.
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
#
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# You should have received a copy of the GNU General Public License
|
* GNU General Public License for more details.
|
||||||
# along with this program. If not, write to:
|
*
|
||||||
# The Free Software Foundation, Inc.,
|
* You should have received a copy of the GNU General Public License
|
||||||
# 51 Franklin Street, Fifth Floor
|
* along with this program. If not, write to:
|
||||||
# Boston, MA 02110-1301, USA.
|
* The Free Software Foundation, Inc.,
|
||||||
#
|
* 51 Franklin Street, Fifth Floor
|
||||||
# In addition, as a special exception, the copyright holders give
|
* Boston, MA 02110-1301, USA.
|
||||||
# permission to link the code of portions of this program with the OpenSSL
|
*
|
||||||
# library.
|
* In addition, as a special exception, the copyright holders give
|
||||||
# You must obey the GNU General Public License in all respects for all of
|
* permission to link the code of portions of this program with the OpenSSL
|
||||||
# the code used other than OpenSSL. If you modify file(s) with this
|
* library.
|
||||||
# exception, you may extend this exception to your version of the file(s),
|
* You must obey the GNU General Public License in all respects for all of
|
||||||
# but you are not obligated to do so. If you do not wish to do so, delete
|
* the code used other than OpenSSL. If you modify file(s) with this
|
||||||
# this exception statement from your version. If you delete this exception
|
* exception, you may extend this exception to your version of the file(s),
|
||||||
# statement from all source files in the program, then also delete it here.
|
* 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 = {}
|
createMenu: function() {
|
||||||
Plugins.Label = {
|
this.labelMenu = new Ext.menu.Menu({
|
||||||
initialize : function() {
|
items: [{
|
||||||
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;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
/*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);
|
|
||||||
},
|
|
||||||
|
|
||||||
/*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);
|
|
||||||
},
|
|
||||||
|
|
||||||
/*popup menu definition*/
|
|
||||||
menu:[
|
|
||||||
{
|
|
||||||
type:'text',
|
|
||||||
action:'add',
|
|
||||||
text: _('Add Label'),
|
text: _('Add Label'),
|
||||||
icon:'/static/images/tango/pause.png'
|
iconCls: 'icon-add'
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
action: 'edit',
|
|
||||||
text: _('Label Options'),
|
|
||||||
icon: '/static/images/tango/start.png'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
action: 'remove',
|
|
||||||
text: _('Remove Label'),
|
text: _('Remove Label'),
|
||||||
icon: '/static/images/tango/start.png'
|
disabled: true,
|
||||||
}
|
iconCls: 'icon-remove'
|
||||||
]
|
}, {
|
||||||
};
|
text: _('Label Options'),
|
||||||
|
disabled: true
|
||||||
window.addEvent('domready', function(e) {
|
}]
|
||||||
Plugins.Label.initialize();
|
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
onDisable: function() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
onEnable: function() {
|
||||||
|
deluge.sidebar.on('filtercreate', this.onFilterCreate, this);
|
||||||
|
},
|
||||||
|
|
||||||
|
onFilterCreate: function(sidebar, filter) {
|
||||||
|
if (filter.filter != 'label') return;
|
||||||
|
filter.list.on('contextmenu', this.onLabelContextMenu, this);
|
||||||
|
filter.header.on('contextmenu', this.onLabelHeaderContextMenu, this);
|
||||||
|
},
|
||||||
|
|
||||||
|
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 os
|
||||||
|
import pkg_resources
|
||||||
from deluge.common import fspeed
|
from deluge.common import fspeed
|
||||||
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.plugins.pluginbase import WebPluginBase
|
from deluge.plugins.pluginbase import WebPluginBase
|
||||||
from deluge import component
|
from deluge import component
|
||||||
|
|
||||||
|
def get_resource(filename):
|
||||||
|
return pkg_resources.resource_filename("label", os.path.join("data", filename))
|
||||||
|
|
||||||
class WebUI(WebPluginBase):
|
class WebUI(WebPluginBase):
|
||||||
|
|
||||||
def enable(self):
|
scripts = [get_resource("label.js")]
|
||||||
pass
|
debug_scripts = scripts
|
||||||
|
|
||||||
def disable(self):
|
|
||||||
pass
|
|
||||||
|
|
|
@ -69,7 +69,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)
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue