From 2e2851dc13d73352530dd4495c7e05603b2e520d Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 10 Apr 2024 23:38:38 +0200 Subject: Adding upstream version 2.1.2~dev0+20240219. Signed-off-by: Daniel Baumann --- .../plugins/Execute/deluge_execute/data/execute.js | 300 +++++++++++++++++++++ 1 file changed, 300 insertions(+) create mode 100644 deluge/plugins/Execute/deluge_execute/data/execute.js (limited to 'deluge/plugins/Execute/deluge_execute/data/execute.js') diff --git a/deluge/plugins/Execute/deluge_execute/data/execute.js b/deluge/plugins/Execute/deluge_execute/data/execute.js new file mode 100644 index 0000000..dc0b111 --- /dev/null +++ b/deluge/plugins/Execute/deluge_execute/data/execute.js @@ -0,0 +1,300 @@ +/** + * execute.js + * The client-side javascript code for the Execute plugin. + * + * Copyright (C) Damien Churchill 2010 + * + * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with + * the additional special exception to link portions of this program with the OpenSSL library. + * See LICENSE for more details. + * + */ + +Ext.ns('Deluge.ux'); + +Deluge.ux.ExecuteWindowBase = Ext.extend(Ext.Window, { + layout: 'fit', + width: 400, + height: 130, + closeAction: 'hide', + + initComponent: function () { + Deluge.ux.ExecuteWindowBase.superclass.initComponent.call(this); + this.addButton(_('Cancel'), this.onCancelClick, this); + + this.form = this.add({ + xtype: 'form', + baseCls: 'x-plain', + bodyStyle: 'padding: 5px', + items: [ + { + xtype: 'combo', + width: 270, + fieldLabel: _('Event'), + store: new Ext.data.ArrayStore({ + fields: ['id', 'text'], + data: [ + ['complete', _('Torrent Complete')], + ['added', _('Torrent Added')], + ['removed', _('Torrent Removed')], + ], + }), + name: 'event', + mode: 'local', + editable: false, + triggerAction: 'all', + valueField: 'id', + displayField: 'text', + }, + { + xtype: 'textfield', + fieldLabel: _('Command'), + name: 'command', + width: 270, + }, + ], + }); + }, + + onCancelClick: function () { + this.hide(); + }, +}); + +Deluge.ux.EditExecuteCommandWindow = Ext.extend(Deluge.ux.ExecuteWindowBase, { + title: _('Edit Command'), + + initComponent: function () { + Deluge.ux.EditExecuteCommandWindow.superclass.initComponent.call(this); + this.addButton(_('Save'), this.onSaveClick, this); + this.addEvents({ + commandedit: true, + }); + }, + + show: function (command) { + Deluge.ux.EditExecuteCommandWindow.superclass.show.call(this); + this.command = command; + this.form.getForm().setValues({ + event: command.get('event'), + command: command.get('name'), + }); + }, + + onSaveClick: function () { + var values = this.form.getForm().getFieldValues(); + deluge.client.execute.save_command( + this.command.id, + values.event, + values.command, + { + success: function () { + this.fireEvent( + 'commandedit', + this, + values.event, + values.command + ); + }, + scope: this, + } + ); + this.hide(); + }, +}); + +Deluge.ux.AddExecuteCommandWindow = Ext.extend(Deluge.ux.ExecuteWindowBase, { + title: _('Add Command'), + + initComponent: function () { + Deluge.ux.AddExecuteCommandWindow.superclass.initComponent.call(this); + this.addButton(_('Add'), this.onAddClick, this); + this.addEvents({ + commandadd: true, + }); + }, + + onAddClick: function () { + var values = this.form.getForm().getFieldValues(); + deluge.client.execute.add_command(values.event, values.command, { + success: function () { + this.fireEvent( + 'commandadd', + this, + values.event, + values.command + ); + }, + scope: this, + }); + this.hide(); + }, +}); + +Ext.ns('Deluge.ux.preferences'); + +/** + * @class Deluge.ux.preferences.ExecutePage + * @extends Ext.Panel + */ +Deluge.ux.preferences.ExecutePage = Ext.extend(Ext.Panel, { + title: _('Execute'), + header: false, + layout: 'fit', + border: false, + + initComponent: function () { + Deluge.ux.preferences.ExecutePage.superclass.initComponent.call(this); + var event_map = (this.event_map = { + complete: _('Torrent Complete'), + added: _('Torrent Added'), + removed: _('Torrent Removed'), + }); + + this.list = new Ext.list.ListView({ + store: new Ext.data.SimpleStore({ + fields: [ + { name: 'event', mapping: 1 }, + { name: 'name', mapping: 2 }, + ], + id: 0, + }), + columns: [ + { + width: 0.3, + header: _('Event'), + sortable: true, + dataIndex: 'event', + tpl: new Ext.XTemplate('{[this.getEvent(values.event)]}', { + getEvent: function (e) { + return event_map[e] ? event_map[e] : e; + }, + }), + }, + { + id: 'name', + header: _('Command'), + sortable: true, + dataIndex: 'name', + }, + ], + singleSelect: true, + autoExpandColumn: 'name', + }); + this.list.on('selectionchange', this.onSelectionChange, this); + + this.panel = this.add({ + items: [this.list], + bbar: { + items: [ + { + text: _('Add'), + iconCls: 'icon-add', + handler: this.onAddClick, + scope: this, + }, + { + text: _('Edit'), + iconCls: 'icon-edit', + handler: this.onEditClick, + scope: this, + disabled: true, + }, + '->', + { + text: _('Remove'), + iconCls: 'icon-remove', + handler: this.onRemoveClick, + scope: this, + disabled: true, + }, + ], + }, + }); + + this.on('show', this.onPreferencesShow, this); + }, + + updateCommands: function () { + deluge.client.execute.get_commands({ + success: function (commands) { + this.list.getStore().loadData(commands); + }, + scope: this, + }); + }, + + onAddClick: function () { + if (!this.addWin) { + this.addWin = new Deluge.ux.AddExecuteCommandWindow(); + this.addWin.on( + 'commandadd', + function () { + this.updateCommands(); + }, + this + ); + } + this.addWin.show(); + }, + + onCommandAdded: function (win, evt, cmd) { + var record = new this.list.getStore().recordType({ + event: evt, + command: cmd, + }); + }, + + onEditClick: function () { + if (!this.editWin) { + this.editWin = new Deluge.ux.EditExecuteCommandWindow(); + this.editWin.on( + 'commandedit', + function () { + this.updateCommands(); + }, + this + ); + } + this.editWin.show(this.list.getSelectedRecords()[0]); + }, + + onPreferencesShow: function () { + this.updateCommands(); + }, + + onRemoveClick: function () { + var record = this.list.getSelectedRecords()[0]; + deluge.client.execute.remove_command(record.id, { + success: function () { + this.updateCommands(); + }, + scope: this, + }); + }, + + onSelectionChange: function (dv, selections) { + if (selections.length) { + this.panel.getBottomToolbar().items.get(1).enable(); + this.panel.getBottomToolbar().items.get(3).enable(); + } else { + this.panel.getBottomToolbar().items.get(1).disable(); + this.panel.getBottomToolbar().items.get(3).disable(); + } + }, +}); + +Deluge.plugins.ExecutePlugin = Ext.extend(Deluge.Plugin, { + name: 'Execute', + + onDisable: function () { + deluge.preferences.removePage(this.prefsPage); + }, + + onEnable: function () { + this.prefsPage = deluge.preferences.addPage( + new Deluge.ux.preferences.ExecutePage() + ); + }, +}); +Deluge.registerPlugin('Execute', Deluge.plugins.ExecutePlugin); -- cgit v1.2.3