2015-05-06 03:51:04 +00:00
|
|
|
/**
|
|
|
|
* button.js - button element for blessed
|
|
|
|
* Copyright (c) 2013-2015, Christopher Jeffrey and contributors (MIT License).
|
|
|
|
* https://github.com/chjj/blessed
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Modules
|
|
|
|
*/
|
|
|
|
|
|
|
|
var helpers = require('../helpers');
|
|
|
|
|
|
|
|
var Node = require('./node');
|
|
|
|
var Input = require('./input');
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Button
|
|
|
|
*/
|
|
|
|
|
|
|
|
function Button(options) {
|
|
|
|
var self = this;
|
|
|
|
|
|
|
|
if (!(this instanceof Node)) {
|
|
|
|
return new Button(options);
|
|
|
|
}
|
|
|
|
|
|
|
|
options = options || {};
|
|
|
|
|
|
|
|
if (options.autoFocus == null) {
|
|
|
|
options.autoFocus = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
Input.call(this, options);
|
|
|
|
|
|
|
|
this.on('keypress', function(ch, key) {
|
|
|
|
if (key.name === 'enter' || key.name === 'space') {
|
|
|
|
return self.press();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
if (this.options.mouse) {
|
|
|
|
this.on('click', function() {
|
|
|
|
return self.press();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Button.prototype.__proto__ = Input.prototype;
|
|
|
|
|
|
|
|
Button.prototype.type = 'button';
|
|
|
|
|
|
|
|
Button.prototype.press = function() {
|
|
|
|
this.focus();
|
|
|
|
this.value = true;
|
|
|
|
var result = this.emit('press');
|
|
|
|
delete this.value;
|
|
|
|
return result;
|
|
|
|
};
|
|
|
|
|
2015-05-06 06:10:18 +00:00
|
|
|
/**
|
|
|
|
* Expose
|
|
|
|
*/
|
|
|
|
|
2015-05-06 03:51:04 +00:00
|
|
|
module.exports = Button;
|