From a241f91546c03c936b9fc10a3308633a6fad84bf Mon Sep 17 00:00:00 2001 From: Bryan Ashby Date: Thu, 2 Jul 2015 23:28:39 -0600 Subject: [PATCH] * A few updates to experimental per-client child logging * StatusBarView skeleton * Code cleanup * Menus scan specify emulated baud rate --- core/ansi_term.js | 23 +++++++++- core/client.js | 5 +-- core/mci_view_factory.js | 4 +- core/menu_module.js | 4 ++ ..._view2.js => multi_line_edit_text_view.js} | 5 --- core/status_bar_view.js | 44 +++++++++++++++++++ core/view.js | 1 + 7 files changed, 75 insertions(+), 11 deletions(-) rename core/{multi_line_edit_text_view2.js => multi_line_edit_text_view.js} (98%) create mode 100644 core/status_bar_view.js diff --git a/core/ansi_term.js b/core/ansi_term.js index 338bb74c..23c5d5d6 100644 --- a/core/ansi_term.js +++ b/core/ansi_term.js @@ -29,6 +29,7 @@ exports.disableVT100LineWrapping = disableVT100LineWrapping; exports.setSyncTERMFont = setSyncTERMFont; exports.getSyncTERMFontFromAlias = getSyncTERMFontFromAlias; exports.setCursorStyle = setCursorStyle; +exports.setEmulatedBaudRate = setEmulatedBaudRate; // @@ -126,7 +127,6 @@ function getBGColorValue(name) { } - // See http://cvs.synchro.net/cgi-bin/viewcvs.cgi/*checkout*/src/conio/cterm.txt // :TODO: document // :TODO: Create mappings for aliases... maybe make this a map to values instead @@ -393,3 +393,24 @@ function goHome() { function disableVT100LineWrapping() { return ESC_CSI + '7l'; } + +function setEmulatedBaudRate(rate) { + var speed = { + unlimited : 0, + off : 0, + 0 : 0, + 300 : 1, + 600 : 2, + 1200 : 3, + 2400 : 4, + 4800 : 5, + 9600 : 6, + 19200 : 7, + 38400 : 8, + 57600 : 9, + 76800 : 10, + 115200 : 11, + }[rate] || 0; + return 0 === speed ? exports.emulationSpeed() : exports.emulationSpeed(1, speed); +}; + diff --git a/core/client.js b/core/client.js index 33ece5ee..d0d770ff 100644 --- a/core/client.js +++ b/core/client.js @@ -330,7 +330,6 @@ function Client(input, output) { } if(key || ch) { - //Log.trace( { key : key, ch : ch }, 'User keyboard input'); self.log.trace( { key : key, ch : ch }, 'User keyboard input'); self.emit('key press', ch, key); @@ -392,7 +391,7 @@ Client.prototype.gotoMenuModule = function(options, cb) { if(err) { cb(err); } else { - Log.debug( { menuName : options.name }, 'Goto menu module'); + self.log.debug( { menuName : options.name }, 'Goto menu module'); modInst.enter(self); @@ -414,7 +413,7 @@ Client.prototype.defaultHandlerMissingMod = function(err) { var self = this; function handler(err) { - Log.error(err); + self.log.error(err); self.term.write(ansi.resetScreen()); self.term.write('An unrecoverable error has been encountered!\n'); diff --git a/core/mci_view_factory.js b/core/mci_view_factory.js index d52e7b80..3e1c4725 100644 --- a/core/mci_view_factory.js +++ b/core/mci_view_factory.js @@ -9,9 +9,9 @@ var HorizontalMenuView = require('./horizontal_menu_view.js').HorizontalMenuVie var SpinnerMenuView = require('./spinner_menu_view.js').SpinnerMenuView; var ToggleMenuView = require('./toggle_menu_view.js').ToggleMenuView; var MaskEditTextView = require('./mask_edit_text_view.js').MaskEditTextView; +var StatusBarView = require('./status_bar_view.js').StatusBarView; -//var MultiLineEditTextView = require('./multi_line_edit_text_view.js').MultiLineEditTextView; -var MultiLineEditTextView = require('./multi_line_edit_text_view2.js').MultiLineEditTextView; +var MultiLineEditTextView = require('./multi_line_edit_text_view.js').MultiLineEditTextView; var Config = require('./config.js').config; var ansi = require('./ansi_term.js'); diff --git a/core/menu_module.js b/core/menu_module.js index 9248921b..c2ae1db6 100644 --- a/core/menu_module.js +++ b/core/menu_module.js @@ -152,6 +152,10 @@ MenuModule.prototype.beforeArt = function() { if(this.menuConfig.options.cls) { this.client.term.write(ansi.resetScreen()); } + + if(_.isNumber(this.menuConfig.options.baudRate)) { + this.client.term.write(ansi.setEmulatedBaudRate(this.menuConfig.options.baudRate)); + } }; MenuModule.prototype.mciReady = function(mciData) { diff --git a/core/multi_line_edit_text_view2.js b/core/multi_line_edit_text_view.js similarity index 98% rename from core/multi_line_edit_text_view2.js rename to core/multi_line_edit_text_view.js index f6f8fe82..bddb0b13 100644 --- a/core/multi_line_edit_text_view2.js +++ b/core/multi_line_edit_text_view.js @@ -5,7 +5,6 @@ var View = require('./view.js').View; var miscUtil = require('./misc_util.js'); var strUtil = require('./string_util.js'); var ansi = require('./ansi_term.js'); -//var TextBuffer = require('./text_buffer.js').TextBuffer; var assert = require('assert'); var _ = require('lodash'); @@ -51,12 +50,8 @@ var _ = require('lodash'); // // To-Do // -// * Page up/down just divide by and set top index // * Index pos % for emit scroll events -// * Fix cursor when loading text // * Some of this shoudl be async'd where there is lots of processing (e.g. word wrap) -// * Word wrapping is a bit broke: cannot fill entire self.dimens.width (off by 1-2) -// * Contigous words will break word wrapping... is not breaking mid word properly // * Fix backspace when col=0 (e.g. bs to prev line) diff --git a/core/status_bar_view.js b/core/status_bar_view.js new file mode 100644 index 00000000..903fb5d4 --- /dev/null +++ b/core/status_bar_view.js @@ -0,0 +1,44 @@ +/* jslint node: true */ +'use strict'; + +var View = require('./view.js').View; +var TextView = require('./text_view.js').TextView; + +var assert = require('assert'); +var _ = require('lodash'); + +function StatusBarView(options) { + View.call(this, options); + + var self = this; + + +} + +require('util').inherits(StatusBarView, View); + +StatusBarView.prototype.redraw = function() { + + StatusBarView.super_.prototype.redraw.call(this); + +}; + +StatusBarView.prototype.setPanels = function(panels) { + +/* + "panels" : [ + { + "text" : "things and stuff", + "width" 20, + ... + }, + { + "width" : 40 // no text, etc... = spacer + } + ] + + |---------------------------------------------| + | stuff | +*/ +}; + diff --git a/core/view.js b/core/view.js index 76a6345f..9f433703 100644 --- a/core/view.js +++ b/core/view.js @@ -202,6 +202,7 @@ View.prototype.setPropertyValue = function(propName, value) { this.fillChar = value.substr(0, 1); } } + break; case 'submit' : if(_.isBoolean(value)) {