Module: deluge
Branch: master
Commit: 9cde1f3e45c495efbbba773f85b76472fd5089ec

Author: Damien Churchill <[email protected]>
Date:   Sat Apr 24 02:32:18 2010 +0100

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

---

 deluge/plugins/label/label/data/label.js |  168 +++++++++++++-----------------
 deluge/plugins/label/label/webui.py      |   10 +-
 deluge/plugins/label/setup.py            |    2 +-
 3 files changed, 79 insertions(+), 101 deletions(-)

diff --git a/deluge/plugins/label/label/data/label.js 
b/deluge/plugins/label/label/data/label.js
index 4cfd308..563b3de 100644
--- a/deluge/plugins/label/label/data/label.js
+++ b/deluge/plugins/label/label/data/label.js
@@ -1,106 +1,84 @@
-/*
-# Copyright (C) Martijn Voncken 2008 <[email protected]>
-#
-# 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 <[email protected]>
+ *
+ * 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);
-       },
-
-       /*menu callbacks:*/
-       add: function(label_id) {
-               alert("Add Label:" + label_id);
+       
+       onDisable: function() {
+           
        },
-       edit: function() {
-               alert("Edit Label:" + label_id);
+       
+       onEnable: function() {
+               deluge.sidebar.on('filtercreate', this.onFilterCreate, this);
        },
-       remove: function() {
-               alert("Remove Label:" + label_id);
+
+       onFilterCreate: function(sidebar, filter) {
+               if (filter.filter != 'label') return;
+               filter.list.on('contextmenu', this.onLabelContextMenu, this);
+               filter.header.on('contextmenu', this.onLabelHeaderContextMenu, 
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'
-               }
-       ]
-};
+       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());
+       },
 
-window.addEvent('domready', function(e) {
-       Plugins.Label.initialize();
+       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);
diff --git a/deluge/plugins/label/label/webui.py 
b/deluge/plugins/label/label/webui.py
index 102660f..bfc4953 100644
--- a/deluge/plugins/label/label/webui.py
+++ b/deluge/plugins/label/label/webui.py
@@ -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
diff --git a/deluge/plugins/label/setup.py b/deluge/plugins/label/setup.py
index 89da2b4..4fc3444 100644
--- a/deluge/plugins/label/setup.py
+++ b/deluge/plugins/label/setup.py
@@ -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)
 )

-- 
You received this message because you are subscribed to the Google Groups 
"deluge-commit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/deluge-commit?hl=en.

Reply via email to