[#2008] [WebUI] Fix translation marked text
* Remove labelSeparator and manually add ':' so text matches gtk translations. * Use consistent quotes around strings. This can affect gettext script picking up marked strings. * Added the equivalent deffered translation as gtkui for Filters and Progressbar
This commit is contained in:
parent
522815d266
commit
7af7ecd82a
|
@ -1,6 +1,6 @@
|
|||
/*!
|
||||
* Deluge.AddConnectionWindow.js
|
||||
*
|
||||
*
|
||||
* Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -51,25 +51,27 @@ Deluge.AddConnectionWindow = Ext.extend(Ext.Window, {
|
|||
Deluge.AddConnectionWindow.superclass.initComponent.call(this);
|
||||
|
||||
this.addEvents('hostadded');
|
||||
|
||||
|
||||
this.addButton(_('Close'), this.hide, this);
|
||||
this.addButton(_('Add'), this.onAddClick, this);
|
||||
|
||||
|
||||
this.on('hide', this.onHide, this);
|
||||
|
||||
|
||||
this.form = this.add({
|
||||
xtype: 'form',
|
||||
defaultType: 'textfield',
|
||||
baseCls: 'x-plain',
|
||||
labelWidth: 60,
|
||||
items: [{
|
||||
fieldLabel: _('Host'),
|
||||
fieldLabel: _('Host:'),
|
||||
labelSeparator : '',
|
||||
name: 'host',
|
||||
anchor: '75%',
|
||||
value: ''
|
||||
}, {
|
||||
xtype: 'spinnerfield',
|
||||
fieldLabel: _('Port'),
|
||||
fieldLabel: _('Port:'),
|
||||
labelSeparator : '',
|
||||
name: 'port',
|
||||
strategy: {
|
||||
xtype: 'number',
|
||||
|
@ -80,12 +82,14 @@ Deluge.AddConnectionWindow = Ext.extend(Ext.Window, {
|
|||
value: '58846',
|
||||
anchor: '40%'
|
||||
}, {
|
||||
fieldLabel: _('Username'),
|
||||
fieldLabel: _('Username:'),
|
||||
labelSeparator : '',
|
||||
name: 'username',
|
||||
anchor: '75%',
|
||||
value: ''
|
||||
}, {
|
||||
fieldLabel: _('Password'),
|
||||
fieldLabel: _('Password:'),
|
||||
labelSeparator : '',
|
||||
anchor: '75%',
|
||||
name: 'password',
|
||||
inputType: 'password',
|
||||
|
@ -101,7 +105,7 @@ Deluge.AddConnectionWindow = Ext.extend(Ext.Window, {
|
|||
if (!result[0]) {
|
||||
Ext.MessageBox.show({
|
||||
title: _('Error'),
|
||||
msg: "Unable to add host: " + result[1],
|
||||
msg: 'Unable to add host: ' + result[1],
|
||||
buttons: Ext.MessageBox.OK,
|
||||
modal: false,
|
||||
icon: Ext.MessageBox.ERROR,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*!
|
||||
* Deluge.AddTrackerWindow.js
|
||||
*
|
||||
*
|
||||
* Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -36,7 +36,7 @@ Ext.ns('Deluge');
|
|||
* @extends Ext.Window
|
||||
*/
|
||||
Deluge.AddTrackerWindow = Ext.extend(Ext.Window, {
|
||||
|
||||
|
||||
title: _('Add Tracker'),
|
||||
layout: 'fit',
|
||||
width: 375,
|
||||
|
@ -52,18 +52,19 @@ Deluge.AddTrackerWindow = Ext.extend(Ext.Window, {
|
|||
|
||||
initComponent: function() {
|
||||
Deluge.AddTrackerWindow.superclass.initComponent.call(this);
|
||||
|
||||
|
||||
this.addButton(_('Cancel'), this.onCancelClick, this);
|
||||
this.addButton(_('Add'), this.onAddClick, this);
|
||||
this.addEvents('add');
|
||||
|
||||
|
||||
this.form = this.add({
|
||||
xtype: 'form',
|
||||
defaultType: 'textarea',
|
||||
baseCls: 'x-plain',
|
||||
labelWidth: 55,
|
||||
items: [{
|
||||
fieldLabel: _('Trackers'),
|
||||
fieldLabel: _('Trackers:'),
|
||||
labelSeparator: '',
|
||||
name: 'trackers',
|
||||
anchor: '100%'
|
||||
}]
|
||||
|
@ -73,7 +74,7 @@ Deluge.AddTrackerWindow = Ext.extend(Ext.Window, {
|
|||
onAddClick: function() {
|
||||
var trackers = this.form.getForm().findField('trackers').getValue();
|
||||
trackers = trackers.split('\n');
|
||||
|
||||
|
||||
var cleaned = [];
|
||||
Ext.each(trackers, function(tracker) {
|
||||
if (Ext.form.VTypes.url(tracker)) {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*!
|
||||
* Deluge.Client.js
|
||||
*
|
||||
*
|
||||
* Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*!
|
||||
* Deluge.EditTrackerWindow.js
|
||||
*
|
||||
*
|
||||
* Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -49,42 +49,43 @@ Deluge.EditTrackerWindow = Ext.extend(Ext.Window, {
|
|||
buttonAlign: 'right',
|
||||
closeAction: 'hide',
|
||||
iconCls: 'x-deluge-edit-trackers',
|
||||
|
||||
|
||||
initComponent: function() {
|
||||
Deluge.EditTrackerWindow.superclass.initComponent.call(this);
|
||||
|
||||
|
||||
this.addButton(_('Cancel'), this.onCancelClick, this);
|
||||
this.addButton(_('Save'), this.onSaveClick, this);
|
||||
this.on('hide', this.onHide, this);
|
||||
|
||||
|
||||
this.form = this.add({
|
||||
xtype: 'form',
|
||||
defaultType: 'textfield',
|
||||
baseCls: 'x-plain',
|
||||
labelWidth: 55,
|
||||
items: [{
|
||||
fieldLabel: _('Tracker'),
|
||||
fieldLabel: _('Tracker:'),
|
||||
labelSeparator: '',
|
||||
name: 'tracker',
|
||||
anchor: '100%'
|
||||
}]
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
show: function(record) {
|
||||
Deluge.EditTrackerWindow.superclass.show.call(this);
|
||||
|
||||
|
||||
this.record = record;
|
||||
this.form.getForm().findField('tracker').setValue(record.data['url']);
|
||||
},
|
||||
|
||||
|
||||
onCancelClick: function() {
|
||||
this.hide();
|
||||
},
|
||||
|
||||
|
||||
onHide: function() {
|
||||
this.form.getForm().findField('tracker').setValue('');
|
||||
},
|
||||
|
||||
|
||||
onSaveClick: function() {
|
||||
var url = this.form.getForm().findField('tracker').getValue();
|
||||
this.record.set('url', url);
|
||||
|
|
|
@ -46,14 +46,24 @@ Deluge.FilterPanel = Ext.extend(Ext.Panel, {
|
|||
initComponent: function() {
|
||||
Deluge.FilterPanel.superclass.initComponent.call(this);
|
||||
this.filterType = this.initialConfig.filter;
|
||||
|
||||
var title = this.filterType.replace('_', ' '),
|
||||
parts = title.split(' '),
|
||||
title = '';
|
||||
Ext.each(parts, function(p) {
|
||||
fl = p.substring(0, 1).toUpperCase();
|
||||
title += fl + p.substring(1) + ' ';
|
||||
});
|
||||
var title = '';
|
||||
if (this.filterType == 'state') {
|
||||
title = _('States');
|
||||
} else if (this.filterType == 'tracker_host') {
|
||||
title = _('Trackers');
|
||||
} else if (this.filterType == 'owner') {
|
||||
title = _('Owner');
|
||||
} else if (this.filterType == 'label') {
|
||||
title = _('Labels');
|
||||
} else {
|
||||
title = this.filterType.replace('_', ' '),
|
||||
parts = title.split(' '),
|
||||
title = '';
|
||||
Ext.each(parts, function(p) {
|
||||
fl = p.substring(0, 1).toUpperCase();
|
||||
title += fl + p.substring(1) + ' ';
|
||||
});
|
||||
}
|
||||
this.setTitle(_(title));
|
||||
|
||||
if (Deluge.FilterPanel.templates[this.filterType]) {
|
||||
|
@ -121,7 +131,7 @@ Deluge.FilterPanel = Ext.extend(Ext.Panel, {
|
|||
if (!show_zero) {
|
||||
var newStates = [];
|
||||
Ext.each(states, function(state) {
|
||||
if (state[1] > 0 || state[0] == _('All')) {
|
||||
if (state[1] > 0 || state[0] == 'All') {
|
||||
newStates.push(state);
|
||||
}
|
||||
});
|
||||
|
@ -141,7 +151,7 @@ Deluge.FilterPanel = Ext.extend(Ext.Panel, {
|
|||
store.insert(i, record);
|
||||
}
|
||||
record.beginEdit();
|
||||
record.set('filter', s[0]);
|
||||
record.set('filter', _(s[0]));
|
||||
record.set('count', s[1]);
|
||||
record.endEdit();
|
||||
filters[s[0]] = true;
|
||||
|
|
|
@ -67,7 +67,8 @@ Deluge.LoginWindow = Ext.extend(Ext.Window, {
|
|||
|
||||
this.passwordField = this.form.add({
|
||||
xtype: 'textfield',
|
||||
fieldLabel: _('Password'),
|
||||
fieldLabel: _('Password:'),
|
||||
labelSeparator : '',
|
||||
grow: true,
|
||||
growMin: '110',
|
||||
growMax: '145',
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*!
|
||||
* Deluge.Plugin.js
|
||||
*
|
||||
*
|
||||
* Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -51,33 +51,33 @@ Deluge.Plugin = Ext.extend(Ext.util.Observable, {
|
|||
* @event enabled
|
||||
* @param {Plugin} plugin the plugin instance
|
||||
*/
|
||||
"enabled": true,
|
||||
'enabled': true,
|
||||
|
||||
/**
|
||||
* @event disabled
|
||||
* @param {Plugin} plugin the plugin instance
|
||||
*/
|
||||
"disabled": true
|
||||
'disabled': true
|
||||
});
|
||||
Deluge.Plugin.superclass.constructor.call(this, config);
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Disables the plugin, firing the "{@link #disabled}" event and
|
||||
* then executing the plugins clean up method onDisabled.
|
||||
*/
|
||||
disable: function() {
|
||||
this.fireEvent("disabled", this);
|
||||
this.fireEvent('disabled', this);
|
||||
if (this.onDisable) this.onDisable();
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Enables the plugin, firing the "{@link #enabled}" event and
|
||||
* then executes the plugins setup method, onEnabled.
|
||||
*/
|
||||
enable: function() {
|
||||
deluge.client.reloadMethods();
|
||||
this.fireEvent("enable", this);
|
||||
this.fireEvent('enable', this);
|
||||
if (this.onEnable) this.onEnable();
|
||||
},
|
||||
|
||||
|
|
|
@ -61,7 +61,7 @@ Deluge.RemoveWindow = Ext.extend(Ext.Window, {
|
|||
deluge.client.core.remove_torrents(this.torrentIds, removeData, {
|
||||
success: function(result) {
|
||||
if (result) {
|
||||
console.log("Error(s) occured when trying to delete torrent(s).");
|
||||
console.log('Error(s) occured when trying to delete torrent(s).');
|
||||
}
|
||||
this.onRemoved(this.torrentIds);
|
||||
},
|
||||
|
|
|
@ -67,7 +67,7 @@ Deluge.Sidebar = Ext.extend(Ext.Panel, {
|
|||
// private
|
||||
initComponent: function() {
|
||||
Deluge.Sidebar.superclass.initComponent.call(this);
|
||||
deluge.events.on("disconnect", this.onDisconnect, this);
|
||||
deluge.events.on('disconnect', this.onDisconnect, this);
|
||||
},
|
||||
|
||||
createFilter: function(filter, states) {
|
||||
|
|
|
@ -310,6 +310,6 @@ Deluge.Statusbar = Ext.extend(Ext.ux.StatusBar, {
|
|||
});
|
||||
|
||||
this.items.get('statusbar-dht').setText(stats.dht_nodes);
|
||||
this.items.get('statusbar-freespace').setText(stats.free_space >= 0 ? fsize(stats.free_space): _("Error"));
|
||||
this.items.get('statusbar-freespace').setText(stats.free_space >= 0 ? fsize(stats.free_space): _('Error'));
|
||||
}
|
||||
});
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
function torrentProgressRenderer(value, p, r) {
|
||||
value = new Number(value);
|
||||
var progress = value;
|
||||
var text = r.data['state'] + ' ' + value.toFixed(2) + '%';
|
||||
var text = _(r.data['state']) + ' ' + value.toFixed(2) + '%';
|
||||
if ( this.style ) {
|
||||
var style = this.style
|
||||
} else {
|
||||
|
@ -85,7 +85,7 @@
|
|||
}
|
||||
|
||||
function dateOrNever(date) {
|
||||
return date > 0.0 ? fdate(date) : "Never"
|
||||
return date > 0.0 ? fdate(date) : _('Never')
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -30,6 +30,30 @@
|
|||
* statement from all source files in the program, then also delete it here.
|
||||
*/
|
||||
|
||||
/** Dummy translation arrays so Torrent and Tracker states are available for Translators.
|
||||
*
|
||||
* All entries in deluge.common.TORRENT_STATE should be added here.
|
||||
*
|
||||
* No need to import these, just simply use the `_()` function around a status variable.
|
||||
*/
|
||||
var TORRENT_STATE_TRANSLATION = [
|
||||
_('All'),
|
||||
_('Active'),
|
||||
_('Allocating'),
|
||||
_('Checking'),
|
||||
_('Downloading'),
|
||||
_('Seeding'),
|
||||
_('Paused'),
|
||||
_('Checking'),
|
||||
_('Queued'),
|
||||
_('Error')];
|
||||
|
||||
var TRACKER_STATUS_TRANSLATION = [
|
||||
_('Error'),
|
||||
_('Warning'),
|
||||
_('Announce OK'),
|
||||
_('Announce Sent')];
|
||||
|
||||
/**
|
||||
* @static
|
||||
* @class Deluge.UI
|
||||
|
@ -92,8 +116,8 @@ deluge.ui = {
|
|||
items: [this.MainPanel]
|
||||
});
|
||||
|
||||
deluge.events.on("connect", this.onConnect, this);
|
||||
deluge.events.on("disconnect", this.onDisconnect, this);
|
||||
deluge.events.on('connect', this.onConnect, this);
|
||||
deluge.events.on('disconnect', this.onDisconnect, this);
|
||||
deluge.events.on('PluginDisabledEvent', this.onPluginDisabled, this);
|
||||
deluge.events.on('PluginEnabledEvent', this.onPluginEnabled, this);
|
||||
deluge.client = new Ext.ux.util.RpcClient({
|
||||
|
|
|
@ -39,18 +39,19 @@ Deluge.details.DetailsTab = Ext.extend(Ext.Panel, {
|
|||
autoScroll: true,
|
||||
queuedItems: {},
|
||||
|
||||
|
||||
oldData: {},
|
||||
|
||||
initComponent: function() {
|
||||
Deluge.details.DetailsTab.superclass.initComponent.call(this);
|
||||
this.addItem('torrent_name', _('Name'));
|
||||
this.addItem('hash', _('Hash'));
|
||||
this.addItem('path', _('Download Folder'));
|
||||
this.addItem('size', _('Total Size'));
|
||||
this.addItem('files', _('Total Files'));
|
||||
this.addItem('comment', _('Comment'));
|
||||
this.addItem('status', _('Status'));
|
||||
this.addItem('tracker', _('Tracker'));
|
||||
this.addItem('torrent_name', _('Name:'));
|
||||
this.addItem('hash', _('Hash:'));
|
||||
this.addItem('path', _('Download Folder:'));
|
||||
this.addItem('size', _('Total Size:'));
|
||||
this.addItem('files', _('Total Files:'));
|
||||
this.addItem('comment', _('Comment:'));
|
||||
this.addItem('status', _('Status:'));
|
||||
this.addItem('tracker', _('Tracker:'));
|
||||
},
|
||||
|
||||
onRender: function(ct, position) {
|
||||
|
@ -73,7 +74,7 @@ Deluge.details.DetailsTab = Ext.extend(Ext.Panel, {
|
|||
|
||||
// private
|
||||
doAddItem: function(id, label) {
|
||||
Ext.DomHelper.append(this.dl, {tag: 'dt', cls: id, html: label + ':'});
|
||||
Ext.DomHelper.append(this.dl, {tag: 'dt', cls: id, html: label});
|
||||
this.fields[id] = Ext.DomHelper.append(this.dl, {tag: 'dd', cls: id, html: ''}, true);
|
||||
},
|
||||
|
||||
|
|
|
@ -94,7 +94,7 @@ Deluge.details.OptionsTab = Ext.extend(Ext.form.FormPanel, {
|
|||
*/
|
||||
this.fieldsets.bandwidth.add({
|
||||
xtype: 'label',
|
||||
text: _('Max Download Speed'),
|
||||
text: _('Max Download Speed:'),
|
||||
forId: 'max_download_speed',
|
||||
cls: 'x-deluge-options-label'
|
||||
});
|
||||
|
@ -120,7 +120,7 @@ Deluge.details.OptionsTab = Ext.extend(Ext.form.FormPanel, {
|
|||
*/
|
||||
this.fieldsets.bandwidth.add({
|
||||
xtype: 'label',
|
||||
text: _('Max Upload Speed'),
|
||||
text: _('Max Upload Speed:'),
|
||||
forId: 'max_upload_speed',
|
||||
cls: 'x-deluge-options-label'
|
||||
});
|
||||
|
@ -147,7 +147,7 @@ Deluge.details.OptionsTab = Ext.extend(Ext.form.FormPanel, {
|
|||
*/
|
||||
this.fieldsets.bandwidth.add({
|
||||
xtype: 'label',
|
||||
text: _('Max Connections'),
|
||||
text: _('Max Connections:'),
|
||||
forId: 'max_connections',
|
||||
cls: 'x-deluge-options-label'
|
||||
});
|
||||
|
@ -170,7 +170,7 @@ Deluge.details.OptionsTab = Ext.extend(Ext.form.FormPanel, {
|
|||
*/
|
||||
this.fieldsets.bandwidth.add({
|
||||
xtype: 'label',
|
||||
text: _('Max Upload Slots'),
|
||||
text: _('Max Upload Slots:'),
|
||||
forId: 'max_upload_slots',
|
||||
cls: 'x-deluge-options-label'
|
||||
});
|
||||
|
@ -222,7 +222,7 @@ Deluge.details.OptionsTab = Ext.extend(Ext.form.FormPanel, {
|
|||
labelSeparator: '',
|
||||
id: 'stop_at_ratio',
|
||||
width: 120,
|
||||
boxLabel: _('Stop seed at ratio'),
|
||||
boxLabel: _('Stop seed at ratio:'),
|
||||
handler: this.onStopRatioChecked,
|
||||
scope: this
|
||||
});
|
||||
|
@ -259,7 +259,7 @@ Deluge.details.OptionsTab = Ext.extend(Ext.form.FormPanel, {
|
|||
fieldLabel: '',
|
||||
labelSeparator: '',
|
||||
id: 'move_completed',
|
||||
boxLabel: _('Move Completed'),
|
||||
boxLabel: _('Move Completed:'),
|
||||
colspan: 2,
|
||||
handler: this.onMoveCompletedChecked,
|
||||
scope: this
|
||||
|
|
|
@ -43,8 +43,8 @@
|
|||
var peer_ip = value.split(':');
|
||||
if (peer_ip.length > 2) {
|
||||
var port = peer_ip.pop();
|
||||
var ip = peer_ip.join(":");
|
||||
value = "[" + ip + "]:" + port;
|
||||
var ip = peer_ip.join(':');
|
||||
value = '[' + ip + ']:' + port;
|
||||
}
|
||||
return String.format('<div class="{0}">{1}</div>', seed, value);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*!
|
||||
* Deluge.preferences.BandwidthPage.js
|
||||
*
|
||||
*
|
||||
* Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -45,10 +45,10 @@ Deluge.preferences.Bandwidth = Ext.extend(Ext.form.FormPanel, {
|
|||
}, config);
|
||||
Deluge.preferences.Bandwidth.superclass.constructor.call(this, config);
|
||||
},
|
||||
|
||||
|
||||
initComponent: function() {
|
||||
Deluge.preferences.Bandwidth.superclass.initComponent.call(this);
|
||||
|
||||
|
||||
var om = deluge.preferences.getOptionsManager();
|
||||
var fieldset = this.add({
|
||||
xtype: 'fieldset',
|
||||
|
@ -65,7 +65,8 @@ Deluge.preferences.Bandwidth = Ext.extend(Ext.form.FormPanel, {
|
|||
});
|
||||
om.bind('max_connections_global', fieldset.add({
|
||||
name: 'max_connections_global',
|
||||
fieldLabel: _('Maximum Connections'),
|
||||
fieldLabel: _('Maximum Connections:'),
|
||||
labelSeparator: '',
|
||||
width: 80,
|
||||
value: -1,
|
||||
decimalPrecision: 0
|
||||
|
@ -73,39 +74,44 @@ Deluge.preferences.Bandwidth = Ext.extend(Ext.form.FormPanel, {
|
|||
om.bind('max_upload_slots_global', fieldset.add({
|
||||
name: 'max_upload_slots_global',
|
||||
fieldLabel: _('Maximum Upload Slots'),
|
||||
labelSeparator: '',
|
||||
width: 80,
|
||||
value: -1,
|
||||
decimalPrecision: 0
|
||||
}));
|
||||
om.bind('max_download_speed', fieldset.add({
|
||||
name: 'max_download_speed',
|
||||
fieldLabel: _('Maximum Download Speed (KiB/s)'),
|
||||
fieldLabel: _('Maximum Download Speed (KiB/s):'),
|
||||
labelSeparator: '',
|
||||
width: 80,
|
||||
value: -1.0,
|
||||
decimalPrecision: 1
|
||||
}));
|
||||
om.bind('max_upload_speed', fieldset.add({
|
||||
name: 'max_upload_speed',
|
||||
fieldLabel: _('Maximum Upload Speed (KiB/s)'),
|
||||
fieldLabel: _('Maximum Upload Speed (KiB/s):'),
|
||||
labelSeparator: '',
|
||||
width: 80,
|
||||
value: -1.0,
|
||||
decimalPrecision: 1
|
||||
}));
|
||||
om.bind('max_half_open_connections', fieldset.add({
|
||||
name: 'max_half_open_connections',
|
||||
fieldLabel: _('Maximum Half-Open Connections'),
|
||||
fieldLabel: _('Maximum Half-Open Connections:'),
|
||||
labelSeparator: '',
|
||||
width: 80,
|
||||
value: -1,
|
||||
decimalPrecision: 0
|
||||
}));
|
||||
om.bind('max_connections_per_second', fieldset.add({
|
||||
name: 'max_connections_per_second',
|
||||
fieldLabel: _('Maximum Connection Attempts per Second'),
|
||||
fieldLabel: _('Maximum Connection Attempts per Second:'),
|
||||
labelSeparator: '',
|
||||
width: 80,
|
||||
value: -1,
|
||||
decimalPrecision: 0
|
||||
}));
|
||||
|
||||
|
||||
fieldset = this.add({
|
||||
xtype: 'fieldset',
|
||||
border: false,
|
||||
|
@ -128,7 +134,7 @@ Deluge.preferences.Bandwidth = Ext.extend(Ext.form.FormPanel, {
|
|||
labelSeparator: '',
|
||||
boxLabel: _('Rate limit IP overhead')
|
||||
}));
|
||||
|
||||
|
||||
fieldset = this.add({
|
||||
xtype: 'fieldset',
|
||||
border: false,
|
||||
|
@ -144,28 +150,32 @@ Deluge.preferences.Bandwidth = Ext.extend(Ext.form.FormPanel, {
|
|||
});
|
||||
om.bind('max_connections_per_torrent', fieldset.add({
|
||||
name: 'max_connections_per_torrent',
|
||||
fieldLabel: _('Maximum Connections'),
|
||||
fieldLabel: _('Maximum Connections:'),
|
||||
labelSeparator: '',
|
||||
width: 80,
|
||||
value: -1,
|
||||
decimalPrecision: 0
|
||||
}));
|
||||
om.bind('max_upload_slots_per_torrent', fieldset.add({
|
||||
name: 'max_upload_slots_per_torrent',
|
||||
fieldLabel: _('Maximum Upload Slots'),
|
||||
fieldLabel: _('Maximum Upload Slots:'),
|
||||
labelSeparator: '',
|
||||
width: 80,
|
||||
value: -1,
|
||||
decimalPrecision: 0
|
||||
}));
|
||||
om.bind('max_download_speed_per_torrent', fieldset.add({
|
||||
name: 'max_download_speed_per_torrent',
|
||||
fieldLabel: _('Maximum Download Speed (KiB/s)'),
|
||||
fieldLabel: _('Maximum Download Speed (KiB/s):'),
|
||||
labelSeparator: '',
|
||||
width: 80,
|
||||
value: -1,
|
||||
decimalPrecision: 0
|
||||
}));
|
||||
om.bind('max_upload_speed_per_torrent', fieldset.add({
|
||||
name: 'max_upload_speed_per_torrent',
|
||||
fieldLabel: _('Maximum Upload Speed (KiB/s)'),
|
||||
fieldLabel: _('Maximum Upload Speed (KiB/s):'),
|
||||
labelSeparator: '',
|
||||
width: 80,
|
||||
value: -1,
|
||||
decimalPrecision: 0
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*!
|
||||
* Deluge.preferences.CachePage.js
|
||||
*
|
||||
*
|
||||
* Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -40,12 +40,12 @@ Deluge.preferences.Cache = Ext.extend(Ext.form.FormPanel, {
|
|||
border: false,
|
||||
title: _('Cache'),
|
||||
layout: 'form',
|
||||
|
||||
|
||||
initComponent: function() {
|
||||
Deluge.preferences.Cache.superclass.initComponent.call(this);
|
||||
|
||||
var om = deluge.preferences.getOptionsManager();
|
||||
|
||||
|
||||
var fieldset = this.add({
|
||||
xtype: 'fieldset',
|
||||
border: false,
|
||||
|
@ -60,13 +60,15 @@ Deluge.preferences.Cache = Ext.extend(Ext.form.FormPanel, {
|
|||
}
|
||||
});
|
||||
om.bind('cache_size', fieldset.add({
|
||||
fieldLabel: _('Cache Size (16 KiB Blocks)'),
|
||||
fieldLabel: _('Cache Size (16 KiB Blocks):'),
|
||||
labelSeparator: '',
|
||||
name: 'cache_size',
|
||||
width: 60,
|
||||
value: 512
|
||||
}));
|
||||
om.bind('cache_expiry', fieldset.add({
|
||||
fieldLabel: _('Cache Expiry (seconds)'),
|
||||
fieldLabel: _('Cache Expiry (seconds):'),
|
||||
labelSeparator: '',
|
||||
name: 'cache_expiry',
|
||||
width: 60,
|
||||
value: 60
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*!
|
||||
* Deluge.preferences.DaemonPage.js
|
||||
*
|
||||
*
|
||||
* Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -40,12 +40,12 @@ Deluge.preferences.Daemon = Ext.extend(Ext.form.FormPanel, {
|
|||
border: false,
|
||||
title: _('Daemon'),
|
||||
layout: 'form',
|
||||
|
||||
|
||||
initComponent: function() {
|
||||
Deluge.preferences.Daemon.superclass.initComponent.call(this);
|
||||
|
||||
var om = deluge.preferences.getOptionsManager();
|
||||
|
||||
|
||||
var fieldset = this.add({
|
||||
xtype: 'fieldset',
|
||||
border: false,
|
||||
|
@ -54,14 +54,15 @@ Deluge.preferences.Daemon = Ext.extend(Ext.form.FormPanel, {
|
|||
defaultType: 'spinnerfield'
|
||||
});
|
||||
om.bind('daemon_port', fieldset.add({
|
||||
fieldLabel: _('Daemon port'),
|
||||
fieldLabel: _('Daemon port:'),
|
||||
labelSeparator: '',
|
||||
name: 'daemon_port',
|
||||
value: 58846,
|
||||
decimalPrecision: 0,
|
||||
minValue: -1,
|
||||
maxValue: 99999
|
||||
}));
|
||||
|
||||
|
||||
fieldset = this.add({
|
||||
xtype: 'fieldset',
|
||||
border: false,
|
||||
|
@ -77,7 +78,7 @@ Deluge.preferences.Daemon = Ext.extend(Ext.form.FormPanel, {
|
|||
boxLabel: _('Allow Remote Connections'),
|
||||
name: 'allow_remote'
|
||||
}));
|
||||
|
||||
|
||||
fieldset = this.add({
|
||||
xtype: 'fieldset',
|
||||
border: false,
|
||||
|
|
|
@ -66,13 +66,15 @@ Deluge.preferences.Downloads = Ext.extend(Ext.FormPanel, {
|
|||
optMan.bind('download_location', fieldset.add({
|
||||
xtype: 'textfield',
|
||||
name: 'download_location',
|
||||
fieldLabel: _('Download to'),
|
||||
fieldLabel: _('Download to:'),
|
||||
labelSeparator: '',
|
||||
width: 280
|
||||
}));
|
||||
|
||||
var field = fieldset.add({
|
||||
name: 'move_completed_path',
|
||||
fieldLabel: _('Move completed to'),
|
||||
fieldLabel: _('Move completed to:'),
|
||||
labelSeparator: '',
|
||||
width: 280
|
||||
});
|
||||
optMan.bind('move_completed', field.toggle);
|
||||
|
@ -80,7 +82,8 @@ Deluge.preferences.Downloads = Ext.extend(Ext.FormPanel, {
|
|||
|
||||
field = fieldset.add({
|
||||
name: 'torrentfiles_location',
|
||||
fieldLabel: _('Copy of .torrent files to'),
|
||||
fieldLabel: _('Copy of .torrent files to:'),
|
||||
labelSeparator: '',
|
||||
width: 280
|
||||
});
|
||||
optMan.bind('copy_torrent_file', field.toggle);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*!
|
||||
* Deluge.preferences.InterfacePage.js
|
||||
*
|
||||
*
|
||||
* Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -40,13 +40,13 @@ Deluge.preferences.Interface = Ext.extend(Ext.form.FormPanel, {
|
|||
border: false,
|
||||
title: _('Interface'),
|
||||
layout: 'form',
|
||||
|
||||
|
||||
initComponent: function() {
|
||||
Deluge.preferences.Interface.superclass.initComponent.call(this);
|
||||
|
||||
|
||||
var om = this.optionsManager = new Deluge.OptionsManager();
|
||||
this.on('show', this.onPageShow, this);
|
||||
|
||||
|
||||
var fieldset = this.add({
|
||||
xtype: 'fieldset',
|
||||
border: false,
|
||||
|
@ -77,7 +77,7 @@ Deluge.preferences.Interface = Ext.extend(Ext.form.FormPanel, {
|
|||
labelSeparator: '',
|
||||
boxLabel: _('Allow the use of multiple filters at once')
|
||||
}));
|
||||
|
||||
|
||||
fieldset = this.add({
|
||||
xtype: 'fieldset',
|
||||
border: false,
|
||||
|
@ -91,20 +91,23 @@ Deluge.preferences.Interface = Ext.extend(Ext.form.FormPanel, {
|
|||
inputType: 'password'
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
this.oldPassword = fieldset.add({
|
||||
name: 'old_password',
|
||||
fieldLabel: _('Old Password')
|
||||
fieldLabel: _('Old Password:'),
|
||||
labelSeparator: '',
|
||||
});
|
||||
this.newPassword = fieldset.add({
|
||||
name: 'new_password',
|
||||
fieldLabel: _('New Password')
|
||||
fieldLabel: _('New Password:'),
|
||||
labelSeparator: '',
|
||||
});
|
||||
this.confirmPassword = fieldset.add({
|
||||
name: 'confirm_password',
|
||||
fieldLabel: _('Confirm Password')
|
||||
fieldLabel: _('Confirm Password:'),
|
||||
labelSeparator: '',
|
||||
});
|
||||
|
||||
|
||||
var panel = fieldset.add({
|
||||
xtype: 'panel',
|
||||
autoHeight: true,
|
||||
|
@ -122,7 +125,7 @@ Deluge.preferences.Interface = Ext.extend(Ext.form.FormPanel, {
|
|||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
fieldset = this.add({
|
||||
xtype: 'fieldset',
|
||||
border: false,
|
||||
|
@ -137,14 +140,16 @@ Deluge.preferences.Interface = Ext.extend(Ext.form.FormPanel, {
|
|||
});
|
||||
om.bind('session_timeout', fieldset.add({
|
||||
name: 'session_timeout',
|
||||
fieldLabel: _('Session Timeout'),
|
||||
fieldLabel: _('Session Timeout:'),
|
||||
labelSeparator: '',
|
||||
decimalPrecision: 0,
|
||||
minValue: -1,
|
||||
maxValue: 99999
|
||||
}));
|
||||
om.bind('port', fieldset.add({
|
||||
name: 'port',
|
||||
fieldLabel: _('Port'),
|
||||
fieldLabel: _('Port:'),
|
||||
labelSeparator: '',
|
||||
decimalPrecision: 0,
|
||||
minValue: -1,
|
||||
maxValue: 99999
|
||||
|
@ -163,17 +168,19 @@ Deluge.preferences.Interface = Ext.extend(Ext.form.FormPanel, {
|
|||
disabled: true,
|
||||
name: 'pkey',
|
||||
width: 180,
|
||||
fieldLabel: _('Private Key')
|
||||
fieldLabel: _('Private Key:'),
|
||||
labelSeparator: ''
|
||||
}));
|
||||
this.certField = om.bind('cert', fieldset.add({
|
||||
xtype: 'textfield',
|
||||
disabled: true,
|
||||
name: 'cert',
|
||||
width: 180,
|
||||
fieldLabel: _('Certificate')
|
||||
fieldLabel: _('Certificate:'),
|
||||
labelSeparator: ''
|
||||
}));
|
||||
},
|
||||
|
||||
|
||||
onApply: function() {
|
||||
var changed = this.optionsManager.getDirty();
|
||||
if (!Ext.isObjectEmpty(changed)) {
|
||||
|
@ -187,11 +194,11 @@ Deluge.preferences.Interface = Ext.extend(Ext.form.FormPanel, {
|
|||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
onGotConfig: function(config) {
|
||||
this.optionsManager.set(config);
|
||||
},
|
||||
|
||||
|
||||
onPasswordChange: function() {
|
||||
var newPassword = this.newPassword.getValue();
|
||||
if (newPassword != this.confirmPassword.getValue()) {
|
||||
|
@ -205,7 +212,7 @@ Deluge.preferences.Interface = Ext.extend(Ext.form.FormPanel, {
|
|||
});
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
var oldPassword = this.oldPassword.getValue();
|
||||
deluge.client.auth.change_password(oldPassword, newPassword, {
|
||||
success: function(result) {
|
||||
|
@ -236,18 +243,18 @@ Deluge.preferences.Interface = Ext.extend(Ext.form.FormPanel, {
|
|||
scope: this
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
onSetConfig: function() {
|
||||
this.optionsManager.commit();
|
||||
},
|
||||
|
||||
|
||||
onPageShow: function() {
|
||||
deluge.client.web.get_config({
|
||||
success: this.onGotConfig,
|
||||
scope: this
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
onSSLCheck: function(e, checked) {
|
||||
this.pkeyField.setDisabled(!checked);
|
||||
this.certField.setDisabled(!checked);
|
||||
|
|
|
@ -105,7 +105,7 @@ Deluge.preferences.Network = Ext.extend(Ext.form.FormPanel, {
|
|||
style: 'margin-right: 10px;'
|
||||
},
|
||||
items: [{
|
||||
fieldLabel: 'From:',
|
||||
fieldLabel: _('From:'),
|
||||
labelSeparator: '',
|
||||
strategy: {
|
||||
xtype: 'number',
|
||||
|
@ -114,7 +114,7 @@ Deluge.preferences.Network = Ext.extend(Ext.form.FormPanel, {
|
|||
maxValue: 99999
|
||||
}
|
||||
}, {
|
||||
fieldLabel: 'To:',
|
||||
fieldLabel: _('To:'),
|
||||
labelSeparator: '',
|
||||
strategy: {
|
||||
xtype: 'number',
|
||||
|
@ -160,7 +160,7 @@ Deluge.preferences.Network = Ext.extend(Ext.form.FormPanel, {
|
|||
style: 'margin-right: 10px;'
|
||||
},
|
||||
items: [{
|
||||
fieldLabel: 'From:',
|
||||
fieldLabel: _('From:'),
|
||||
labelSeparator: '',
|
||||
strategy: {
|
||||
xtype: 'number',
|
||||
|
@ -169,7 +169,7 @@ Deluge.preferences.Network = Ext.extend(Ext.form.FormPanel, {
|
|||
maxValue: 99999
|
||||
}
|
||||
}, {
|
||||
fieldLabel: 'To:',
|
||||
fieldLabel: _('To:'),
|
||||
labelSeparator: '',
|
||||
strategy: {
|
||||
xtype: 'number',
|
||||
|
|
|
@ -101,7 +101,8 @@ types. Absolutely no other information is sent.')
|
|||
});
|
||||
optMan.bind('geoip_db_location', fieldset.add({
|
||||
name: 'geoip_db_location',
|
||||
fieldLabel: _('Location'),
|
||||
fieldLabel: _('Path:'),
|
||||
labelSeparator: '',
|
||||
width: 200
|
||||
}));
|
||||
}
|
||||
|
|
|
@ -45,11 +45,11 @@ Deluge.preferences.Plugins = Ext.extend(Ext.Panel, {
|
|||
|
||||
pluginTemplate: new Ext.Template(
|
||||
'<dl class="singleline">' +
|
||||
'<dt>Author:</dt><dd>{author}</dd>' +
|
||||
'<dt>Version:</dt><dd>{version}</dd>' +
|
||||
'<dt>Author Email:</dt><dd>{email}</dd>' +
|
||||
'<dt>Homepage:</dt><dd>{homepage}</dd>' +
|
||||
'<dt>Details:</dt><dd>{details}</dd>' +
|
||||
'<dt>' + _('Author:') + '</dt><dd>{author}</dd>' +
|
||||
'<dt>' + _('Version:') + '</dt><dd>{version}</dd>' +
|
||||
'<dt>' + _('Author Email:') + '</dt><dd>{email}</dd>' +
|
||||
'<dt>' + _('Homepage:') + '</dt><dd>{homepage}</dd>' +
|
||||
'<dt>' + _('Details:') + '</dt><dd>{details}</dd>' +
|
||||
'</dl>'
|
||||
),
|
||||
|
||||
|
|
|
@ -46,7 +46,8 @@ Deluge.preferences.ProxyI2PField = Ext.extend(Ext.form.FieldSet, {
|
|||
this.hostname = this.add({
|
||||
xtype: 'textfield',
|
||||
name: 'hostname',
|
||||
fieldLabel: _('Host'),
|
||||
fieldLabel: _('Host:'),
|
||||
labelSeparator: '',
|
||||
width: 220
|
||||
});
|
||||
this.hostname.on('change', this.onFieldChange, this);
|
||||
|
@ -54,7 +55,8 @@ Deluge.preferences.ProxyI2PField = Ext.extend(Ext.form.FieldSet, {
|
|||
this.port = this.add({
|
||||
xtype: 'spinnerfield',
|
||||
name: 'port',
|
||||
fieldLabel: _('Port'),
|
||||
fieldLabel: _('Port:'),
|
||||
labelSeparator: '',
|
||||
width: 80,
|
||||
decimalPrecision: 0,
|
||||
minValue: 0,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*!
|
||||
* Deluge.preferences.QueuePage.js
|
||||
*
|
||||
*
|
||||
* Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -40,12 +40,12 @@ Deluge.preferences.Queue = Ext.extend(Ext.form.FormPanel, {
|
|||
border: false,
|
||||
title: _('Queue'),
|
||||
layout: 'form',
|
||||
|
||||
|
||||
initComponent: function() {
|
||||
Deluge.preferences.Queue.superclass.initComponent.call(this);
|
||||
|
||||
|
||||
var om = deluge.preferences.getOptionsManager();
|
||||
|
||||
|
||||
var fieldset = this.add({
|
||||
xtype: 'fieldset',
|
||||
border: false,
|
||||
|
@ -62,7 +62,7 @@ Deluge.preferences.Queue = Ext.extend(Ext.form.FormPanel, {
|
|||
boxLabel: _('Queue new torrents to top'),
|
||||
name: 'queue_new_to_top'
|
||||
}));
|
||||
|
||||
|
||||
fieldset = this.add({
|
||||
xtype: 'fieldset',
|
||||
border: false,
|
||||
|
@ -73,7 +73,8 @@ Deluge.preferences.Queue = Ext.extend(Ext.form.FormPanel, {
|
|||
style: 'margin-bottom: 0px; padding-bottom: 0px;'
|
||||
});
|
||||
om.bind('max_active_limit', fieldset.add({
|
||||
fieldLabel: _('Total Active'),
|
||||
fieldLabel: _('Total Active:'),
|
||||
labelSeparator: '',
|
||||
name: 'max_active_limit',
|
||||
value: 8,
|
||||
width: 80,
|
||||
|
@ -82,7 +83,8 @@ Deluge.preferences.Queue = Ext.extend(Ext.form.FormPanel, {
|
|||
maxValue: 99999
|
||||
}));
|
||||
om.bind('max_active_downloading', fieldset.add({
|
||||
fieldLabel: _('Total Active Downloading'),
|
||||
fieldLabel: _('Total Active Downloading:'),
|
||||
labelSeparator: '',
|
||||
name: 'max_active_downloading',
|
||||
value: 3,
|
||||
width: 80,
|
||||
|
@ -91,7 +93,8 @@ Deluge.preferences.Queue = Ext.extend(Ext.form.FormPanel, {
|
|||
maxValue: 99999
|
||||
}));
|
||||
om.bind('max_active_seeding', fieldset.add({
|
||||
fieldLabel: _('Total Active Seeding'),
|
||||
fieldLabel: _('Total Active Seeding:'),
|
||||
labelSeparator: '',
|
||||
name: 'max_active_seeding',
|
||||
value: 5,
|
||||
width: 80,
|
||||
|
@ -113,7 +116,7 @@ Deluge.preferences.Queue = Ext.extend(Ext.form.FormPanel, {
|
|||
hideLabel: true,
|
||||
boxLabel: _('Prefer Seeding over Downloading')
|
||||
}));
|
||||
|
||||
|
||||
fieldset = this.add({
|
||||
xtype: 'fieldset',
|
||||
border: false,
|
||||
|
@ -124,7 +127,8 @@ Deluge.preferences.Queue = Ext.extend(Ext.form.FormPanel, {
|
|||
style: 'margin-bottom: 0px; padding-bottom: 0px; margin-top: 0; padding-top: 0;'
|
||||
});
|
||||
om.bind('share_ratio_limit', fieldset.add({
|
||||
fieldLabel: _('Share Ratio Limit'),
|
||||
fieldLabel: _('Share Ratio Limit:'),
|
||||
labelSeparator: '',
|
||||
name: 'share_ratio_limit',
|
||||
value: 8,
|
||||
width: 80,
|
||||
|
@ -135,7 +139,8 @@ Deluge.preferences.Queue = Ext.extend(Ext.form.FormPanel, {
|
|||
decimalPrecision: 2
|
||||
}));
|
||||
om.bind('seed_time_ratio_limit', fieldset.add({
|
||||
fieldLabel: _('Share Time Ratio'),
|
||||
fieldLabel: _('Share Time Ratio:'),
|
||||
labelSeparator: '',
|
||||
name: 'seed_time_ratio_limit',
|
||||
value: 3,
|
||||
width: 80,
|
||||
|
@ -146,7 +151,8 @@ Deluge.preferences.Queue = Ext.extend(Ext.form.FormPanel, {
|
|||
decimalPrecision: 2
|
||||
}));
|
||||
om.bind('seed_time_limit', fieldset.add({
|
||||
fieldLabel: _('Seed Time (m)'),
|
||||
fieldLabel: _('Seed Time (m):'),
|
||||
labelSeparator: '',
|
||||
name: 'seed_time_limit',
|
||||
value: 5,
|
||||
width: 80,
|
||||
|
@ -154,17 +160,17 @@ Deluge.preferences.Queue = Ext.extend(Ext.form.FormPanel, {
|
|||
minValue: -1,
|
||||
maxValue: 99999
|
||||
}));
|
||||
|
||||
|
||||
fieldset = this.add({
|
||||
xtype: 'fieldset',
|
||||
border: false,
|
||||
autoHeight: true,
|
||||
|
||||
|
||||
layout: 'table',
|
||||
layoutConfig: {columns: 2},
|
||||
labelWidth: 0,
|
||||
defaultType: 'checkbox',
|
||||
|
||||
|
||||
defaults: {
|
||||
fieldLabel: '',
|
||||
labelSeparator: ''
|
||||
|
@ -176,7 +182,7 @@ Deluge.preferences.Queue = Ext.extend(Ext.form.FormPanel, {
|
|||
});
|
||||
this.stopAtRatio.on('check', this.onStopRatioCheck, this);
|
||||
om.bind('stop_seed_at_ratio', this.stopAtRatio);
|
||||
|
||||
|
||||
this.stopRatio = fieldset.add({
|
||||
xtype: 'spinnerfield',
|
||||
name: 'stop_seed_ratio',
|
||||
|
@ -191,7 +197,7 @@ Deluge.preferences.Queue = Ext.extend(Ext.form.FormPanel, {
|
|||
decimalPrecision: 2
|
||||
});
|
||||
om.bind('stop_seed_ratio', this.stopRatio);
|
||||
|
||||
|
||||
this.removeAtRatio = fieldset.add({
|
||||
name: 'remove_seed_at_ratio',
|
||||
ctCls: 'x-deluge-indent-checkbox',
|
||||
|
@ -201,7 +207,7 @@ Deluge.preferences.Queue = Ext.extend(Ext.form.FormPanel, {
|
|||
});
|
||||
om.bind('remove_seed_at_ratio', this.removeAtRatio);
|
||||
},
|
||||
|
||||
|
||||
onStopRatioCheck: function(e, checked) {
|
||||
this.stopRatio.setDisabled(!checked);
|
||||
this.removeAtRatio.setDisabled(!checked);
|
||||
|
|
Loading…
Reference in New Issue