+2010-08-06 Markus Gutschke <markus@shellinabox.com>
+
+ * Allow users to disable the blinking cursor from the context menu.
+
2010-07-08 Markus Gutschke <markus@shellinabox.com>
* Added support for systems that have utmpx.h, but don't implement
#define STDC_HEADERS 1
/* Most recent revision number in the version control system */
-#define VCS_REVISION "210"
+#define VCS_REVISION "212"
/* Version number of package */
#define VERSION "2.10"
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-VCS_REVISION=210
+VCS_REVISION=212
cat >>confdefs.h <<_ACEOF
dnl This is the one location where the authoritative version number is stored
AC_INIT(shellinabox, 2.10, markus@shellinabox.com)
-VCS_REVISION=210
+VCS_REVISION=212
AC_SUBST(VCS_REVISION)
AC_DEFINE_UNQUOTED(VCS_REVISION, "${VCS_REVISION}",
[Most recent revision number in the version control system])
// Compute hash signature to identify the entries in the userCSS menu.
// If the menu is unchanged from last time, default values can be
// looked up in a cookie associated with this page.
- this.signature = 1;
+ this.signature = 2;
this.utfPreferred = true;
this.visualBell = typeof suppressAllAudio != 'undefined' &&
suppressAllAudio;
this.autoprint = true;
+ this.blinkingCursor = true;
if (this.visualBell) {
this.signature = Math.floor(16807*this.signature + 1) %
((1 << 31) - 1);
this.utfPreferred = settings.charAt(0) != '0';
this.visualBell = settings.charAt(1) != '0';
this.autoprint = settings.charAt(2) != '0';
+ this.blinkingCursor = settings.charAt(3) != '0';
if (typeof userCSSList != 'undefined') {
for (var i = 0; i < userCSSList.length; ++i) {
userCSSList[i][2] = settings.charAt(i + 3) != '0';
VT100.prototype.storeUserSettings = function() {
var settings = 'shellInABox=' + this.signature + ':' +
- (this.utfEnabled ? '1' : '0') +
- (this.visualBell ? '1' : '0') +
- (this.autoprint ? '1' : '0');
+ (this.utfEnabled ? '1' : '0') +
+ (this.visualBell ? '1' : '0') +
+ (this.autoprint ? '1' : '0') +
+ (this.blinkingCursor ? '1' : '0');
if (typeof userCSSList != 'undefined') {
for (var i = 0; i < userCSSList.length; ++i) {
settings += userCSSList[i][2] ? '1' : '0';
this.visualBell = !this.visualBell;
};
+VT100.prototype.toggleCursorBlinking = function() {
+ this.blinkingCursor = !this.blinkingCursor;
+};
+
VT100.prototype.about = function() {
- alert("VT100 Terminal Emulator " + "2.10 (revision 210)" +
+ alert("VT100 Terminal Emulator " + "2.10 (revision 212)" +
"\nCopyright 2008-2010 by Markus Gutschke\n" +
"For more information check http://shellinabox.com");
};
'<li id="beginconfig">' +
(this.utfEnabled ? '<img src="enabled.gif" />' : '') +
'Unicode</li>' +
- '<li id="endconfig">' +
+ '<li>' +
(this.visualBell ? '<img src="enabled.gif" />' : '') +
'Visual Bell</li>'+
+ '<li id="endconfig">' +
+ (this.blinkingCursor ? '<img src="enabled.gif" />' : '') +
+ 'Blinking Cursor</li>'+
(this.usercss.firstChild ?
'<hr id="beginusercss" />' +
this.usercss.innerHTML +
// Actions for default items
var actions = [ this.copyLast, p, this.reset,
- this.toggleUTF, this.toggleBell ];
+ this.toggleUTF, this.toggleBell,
+ this.toggleCursorBlinking ];
// Actions for user CSS styles (if any)
for (var i = 0; i < this.usercssActions.length; ++i) {
VT100.prototype.animateCursor = function(inactive) {
if (!this.cursorInterval) {
- this.cursorInterval = setInterval(
+ this.cursorInterval = setInterval(
function(vt100) {
return function() {
vt100.animateCursor();
}
if (inactive != undefined || this.cursor.className != 'inactive') {
if (inactive) {
- this.cursor.className = 'inactive';
+ this.cursor.className = 'inactive';
} else {
- this.cursor.className = this.cursor.className == 'bright'
- ? 'dim' : 'bright';
+ if (this.blinkingCursor) {
+ this.cursor.className = this.cursor.className == 'bright'
+ ? 'dim' : 'bright';
+ } else {
+ this.cursor.className = 'bright';
+ }
}
}
};
};
ShellInABox.prototype.about = function() {
- alert("Shell In A Box version " + "2.10 (revision 210)" +
+ alert("Shell In A Box version " + "2.10 (revision 212)" +
"\nCopyright 2008-2010 by Markus Gutschke\n" +
"For more information check http://shellinabox.com" +
(typeof serverSupportsSSL != 'undefined' && serverSupportsSSL ?
// Compute hash signature to identify the entries in the userCSS menu.
// If the menu is unchanged from last time, default values can be
// looked up in a cookie associated with this page.
- this.signature = 1;
+ this.signature = 2;
this.utfPreferred = true;
this.visualBell = typeof suppressAllAudio != 'undefined' &&
suppressAllAudio;
this.autoprint = true;
+ this.blinkingCursor = true;
if (this.visualBell) {
this.signature = Math.floor(16807*this.signature + 1) %
((1 << 31) - 1);
this.utfPreferred = settings.charAt(0) != '0';
this.visualBell = settings.charAt(1) != '0';
this.autoprint = settings.charAt(2) != '0';
+ this.blinkingCursor = settings.charAt(3) != '0';
if (typeof userCSSList != 'undefined') {
for (var i = 0; i < userCSSList.length; ++i) {
userCSSList[i][2] = settings.charAt(i + 3) != '0';
VT100.prototype.storeUserSettings = function() {
var settings = 'shellInABox=' + this.signature + ':' +
- (this.utfEnabled ? '1' : '0') +
- (this.visualBell ? '1' : '0') +
- (this.autoprint ? '1' : '0');
+ (this.utfEnabled ? '1' : '0') +
+ (this.visualBell ? '1' : '0') +
+ (this.autoprint ? '1' : '0') +
+ (this.blinkingCursor ? '1' : '0');
if (typeof userCSSList != 'undefined') {
for (var i = 0; i < userCSSList.length; ++i) {
settings += userCSSList[i][2] ? '1' : '0';
this.visualBell = !this.visualBell;
};
+VT100.prototype.toggleCursorBlinking = function() {
+ this.blinkingCursor = !this.blinkingCursor;
+};
+
VT100.prototype.about = function() {
- alert("VT100 Terminal Emulator " + "2.10 (revision 210)" +
+ alert("VT100 Terminal Emulator " + "2.10 (revision 212)" +
"\nCopyright 2008-2010 by Markus Gutschke\n" +
"For more information check http://shellinabox.com");
};
'<li id="beginconfig">' +
(this.utfEnabled ? '<img src="enabled.gif" />' : '') +
'Unicode</li>' +
- '<li id="endconfig">' +
+ '<li>' +
(this.visualBell ? '<img src="enabled.gif" />' : '') +
'Visual Bell</li>'+
+ '<li id="endconfig">' +
+ (this.blinkingCursor ? '<img src="enabled.gif" />' : '') +
+ 'Blinking Cursor</li>'+
(this.usercss.firstChild ?
'<hr id="beginusercss" />' +
this.usercss.innerHTML +
// Actions for default items
var actions = [ this.copyLast, p, this.reset,
- this.toggleUTF, this.toggleBell ];
+ this.toggleUTF, this.toggleBell,
+ this.toggleCursorBlinking ];
// Actions for user CSS styles (if any)
for (var i = 0; i < this.usercssActions.length; ++i) {
VT100.prototype.animateCursor = function(inactive) {
if (!this.cursorInterval) {
- this.cursorInterval = setInterval(
+ this.cursorInterval = setInterval(
function(vt100) {
return function() {
vt100.animateCursor();
}
if (inactive != undefined || this.cursor.className != 'inactive') {
if (inactive) {
- this.cursor.className = 'inactive';
+ this.cursor.className = 'inactive';
} else {
- this.cursor.className = this.cursor.className == 'bright'
- ? 'dim' : 'bright';
+ if (this.blinkingCursor) {
+ this.cursor.className = this.cursor.className == 'bright'
+ ? 'dim' : 'bright';
+ } else {
+ this.cursor.className = 'bright';
+ }
}
}
};
// Compute hash signature to identify the entries in the userCSS menu.
// If the menu is unchanged from last time, default values can be
// looked up in a cookie associated with this page.
- this.signature = 1;
+ this.signature = 2;
this.utfPreferred = true;
this.visualBell = typeof suppressAllAudio != 'undefined' &&
suppressAllAudio;
this.autoprint = true;
+ this.blinkingCursor = true;
if (this.visualBell) {
this.signature = Math.floor(16807*this.signature + 1) %
((1 << 31) - 1);
this.utfPreferred = settings.charAt(0) != '0';
this.visualBell = settings.charAt(1) != '0';
this.autoprint = settings.charAt(2) != '0';
+ this.blinkingCursor = settings.charAt(3) != '0';
if (typeof userCSSList != 'undefined') {
for (var i = 0; i < userCSSList.length; ++i) {
userCSSList[i][2] = settings.charAt(i + 3) != '0';
VT100.prototype.storeUserSettings = function() {
var settings = 'shellInABox=' + this.signature + ':' +
- (this.utfEnabled ? '1' : '0') +
- (this.visualBell ? '1' : '0') +
- (this.autoprint ? '1' : '0');
+ (this.utfEnabled ? '1' : '0') +
+ (this.visualBell ? '1' : '0') +
+ (this.autoprint ? '1' : '0') +
+ (this.blinkingCursor ? '1' : '0');
if (typeof userCSSList != 'undefined') {
for (var i = 0; i < userCSSList.length; ++i) {
settings += userCSSList[i][2] ? '1' : '0';
this.visualBell = !this.visualBell;
};
+VT100.prototype.toggleCursorBlinking = function() {
+ this.blinkingCursor = !this.blinkingCursor;
+};
+
VT100.prototype.about = function() {
alert("VT100 Terminal Emulator " + VERSION +
"\nCopyright 2008-2010 by Markus Gutschke\n" +
'<li id="beginconfig">' +
(this.utfEnabled ? '<img src="enabled.gif" />' : '') +
'Unicode</li>' +
- '<li id="endconfig">' +
+ '<li>' +
(this.visualBell ? '<img src="enabled.gif" />' : '') +
'Visual Bell</li>'+
+ '<li id="endconfig">' +
+ (this.blinkingCursor ? '<img src="enabled.gif" />' : '') +
+ 'Blinking Cursor</li>'+
(this.usercss.firstChild ?
'<hr id="beginusercss" />' +
this.usercss.innerHTML +
// Actions for default items
var actions = [ this.copyLast, p, this.reset,
- this.toggleUTF, this.toggleBell ];
+ this.toggleUTF, this.toggleBell,
+ this.toggleCursorBlinking ];
// Actions for user CSS styles (if any)
for (var i = 0; i < this.usercssActions.length; ++i) {
VT100.prototype.animateCursor = function(inactive) {
if (!this.cursorInterval) {
- this.cursorInterval = setInterval(
+ this.cursorInterval = setInterval(
function(vt100) {
return function() {
vt100.animateCursor();
}
if (inactive != undefined || this.cursor.className != 'inactive') {
if (inactive) {
- this.cursor.className = 'inactive';
+ this.cursor.className = 'inactive';
} else {
- this.cursor.className = this.cursor.className == 'bright'
- ? 'dim' : 'bright';
+ if (this.blinkingCursor) {
+ this.cursor.className = this.cursor.className == 'bright'
+ ? 'dim' : 'bright';
+ } else {
+ this.cursor.className = 'bright';
+ }
}
}
};