implement the webui so commands can be modified

This commit is contained in:
Damien Churchill 2010-04-28 17:42:58 +01:00
parent 63f5c8b116
commit ce46dcdf7a
1 changed files with 167 additions and 2 deletions

View File

@ -30,6 +30,112 @@ Copyright:
this exception statement from your version. If you delete this exception this exception statement from your version. If you delete this exception
statement from all source files in the program, then also delete it here. statement from all source files in the program, then also delete it here.
*/ */
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')]
]
}),
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().getValues();
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().getValues();
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'); Ext.ns('Deluge.ux.preferences');
/** /**
@ -78,19 +184,78 @@ Deluge.ux.preferences.ExecutePage = Ext.extend(Ext.Panel, {
}); });
this.panel = this.add({ this.panel = this.add({
items: [this.list] 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
}, '->', {
text: _('Remove'),
iconCls: 'icon-remove',
handler: this.onRemoveClick,
scope: this
}]
}
}); });
deluge.preferences.on('show', this.onPreferencesShow, this); deluge.preferences.on('show', this.onPreferencesShow, this);
}, },
onPreferencesShow: function() { updateCommands: function() {
deluge.client.execute.get_commands({ deluge.client.execute.get_commands({
success: function(commands) { success: function(commands) {
this.list.getStore().loadData(commands); this.list.getStore().loadData(commands);
}, },
scope: this 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
});
} }
}); });