mirror of
https://github.com/NuSkooler/enigma-bbs.git
synced 2025-07-21 10:15:55 +02:00
* Fix crash with JuiceSSH
* Lots of WIP on FSE * Various notes & fixes
This commit is contained in:
parent
2391ce6bc9
commit
aab07bb330
10 changed files with 136 additions and 39 deletions
108
mods/fse.js
108
mods/fse.js
|
@ -1,13 +1,15 @@
|
|||
/* jslint node: true */
|
||||
'use strict';
|
||||
|
||||
var MenuModule = require('../core/menu_module.js').MenuModule;
|
||||
var ViewController = require('../core/view_controller.js').ViewController;
|
||||
var ansi = require('../core/ansi_term.js');
|
||||
var MenuModule = require('../core/menu_module.js').MenuModule;
|
||||
var ViewController = require('../core/view_controller.js').ViewController;
|
||||
var ansi = require('../core/ansi_term.js');
|
||||
var theme = require('../core/theme.js');
|
||||
var MultiLineEditTextView = require('../core/multi_line_edit_text_view.js').MultiLineEditTextView;
|
||||
|
||||
var async = require('async');
|
||||
var assert = require('assert');
|
||||
var _ = require('lodash');
|
||||
var async = require('async');
|
||||
var assert = require('assert');
|
||||
var _ = require('lodash');
|
||||
|
||||
exports.getModule = FullScreenEditorModule;
|
||||
|
||||
|
@ -39,7 +41,9 @@ function FullScreenEditorModule(options) {
|
|||
body : 1,
|
||||
footerEdit : 2,
|
||||
footerEditMenu : 3,
|
||||
fotoerView : 4,
|
||||
footerView : 4,
|
||||
|
||||
help : 50,
|
||||
}[name];
|
||||
};
|
||||
|
||||
|
@ -79,6 +83,44 @@ function FullScreenEditorModule(options) {
|
|||
);
|
||||
};
|
||||
|
||||
this.redrawScreen = function(options, cb) {
|
||||
var comps = [ 'header', 'body' ];
|
||||
var art = self.menuConfig.config.art;
|
||||
|
||||
self.client.term.rawWrite(ansi.resetScreen());
|
||||
|
||||
async.series(
|
||||
[
|
||||
function displayHeaderAndBody(callback) {
|
||||
async.eachSeries( comps, function dispArt(n, next) {
|
||||
self.displayArtAsset(art[n], function artDisplayed(err, artData) {
|
||||
next(err);
|
||||
});
|
||||
}, function complete(err) {
|
||||
callback(err);
|
||||
});
|
||||
},
|
||||
function displayFooter(callback) {
|
||||
// we have to treat the footer special
|
||||
self.redrawFooter( { clear : false, footerName : self.getFooterName() }, function footerDisplayed(err) {
|
||||
callback(err);
|
||||
});
|
||||
},
|
||||
function refreshViews(callback) {
|
||||
comps.push(self.getFooterName());
|
||||
|
||||
comps.forEach(function artComp(n) {
|
||||
self.viewControllers[n].redrawAll();
|
||||
});
|
||||
}
|
||||
],
|
||||
function complete(err) {
|
||||
cb(err);
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
this.switchFooter = function(cb) {
|
||||
var footerName = self.getFooterName();
|
||||
|
||||
|
@ -231,6 +273,52 @@ function FullScreenEditorModule(options) {
|
|||
}
|
||||
};
|
||||
|
||||
this.displayHelp = function() {
|
||||
//
|
||||
// Replace body area with a temporary read-only MultiLineEditText
|
||||
// with help contents. ESC or 'Q' closes back to previous state.
|
||||
//
|
||||
var formId = self.getFormId('help');
|
||||
|
||||
if(_.isUndefined(self.viewControllers.help)) {
|
||||
self.addViewController('help', new ViewController( { client : self.client, formId : formId } ));
|
||||
|
||||
var helpViewOpts = {
|
||||
position : self.getBodyView().position,
|
||||
//dimens : self.getBodyView().dimens,
|
||||
acceptsFocus : true,
|
||||
acceptsInput : true,
|
||||
id : 1,
|
||||
client : self.client,
|
||||
ansiSGR : ansi.sgr( [ 'normal', 'reset' ] ), // :TODO: use a styleSGRx here; default to white on black
|
||||
};
|
||||
|
||||
var helpView = new MultiLineEditTextView(helpViewOpts);
|
||||
// :TODO: this is to work around a bug... dimens in ctor should be enough!
|
||||
helpView.setWidth(self.getBodyView().dimens.width);
|
||||
helpView.setHeight(self.getBodyView().dimens.height);
|
||||
helpView.setText('Some help text...')
|
||||
|
||||
self.viewControllers.help.addView(helpView);
|
||||
self.viewControllers.help.switchFocus(1);
|
||||
}
|
||||
|
||||
self.viewControllers.help.redrawAll();
|
||||
};
|
||||
|
||||
this.displayHelp2 = function() {
|
||||
self.client.term.rawWrite(ansi.resetScreen());
|
||||
|
||||
theme.displayThemeArt( { name : self.menuConfig.config.art.help, client : self.client },
|
||||
function artDisplayed(err, artData) {
|
||||
self.client.waitForKeyPress(function keyPress(ch, key) {
|
||||
self.redrawScreen();
|
||||
self.viewControllers.footerEditMenu.setFocus(true);
|
||||
});
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
this.observeEditEvents = function() {
|
||||
var bodyView = self.getBodyView();
|
||||
|
||||
|
@ -281,6 +369,12 @@ function FullScreenEditorModule(options) {
|
|||
},
|
||||
editModeMenu : function(formData, extraArgs) {
|
||||
console.log('menu ' + formData.value['1'])
|
||||
|
||||
if(3 == formData.value['1']) {
|
||||
console.log('Display help...')
|
||||
self.viewControllers.footerEditMenu.setFocus(false);
|
||||
self.displayHelp2();
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue