* Progress on FSE quote builder... WIP!
This commit is contained in:
parent
150de3953e
commit
cee7983c5a
54
core/fse.js
54
core/fse.js
|
@ -134,6 +134,7 @@ function FullScreenEditorModule(options) {
|
||||||
footerEditor : 2,
|
footerEditor : 2,
|
||||||
footerEditorMenu : 3,
|
footerEditorMenu : 3,
|
||||||
footerView : 4,
|
footerView : 4,
|
||||||
|
quoteBuilder : 5,
|
||||||
|
|
||||||
help : 50,
|
help : 50,
|
||||||
}[name];
|
}[name];
|
||||||
|
@ -567,9 +568,58 @@ function FullScreenEditorModule(options) {
|
||||||
//
|
//
|
||||||
// Clear body area
|
// Clear body area
|
||||||
//
|
//
|
||||||
|
async.waterfall(
|
||||||
|
[
|
||||||
|
function clearAndDisplayArt(callback) {
|
||||||
|
console.log(self.header.height);
|
||||||
self.client.term.rawWrite(
|
self.client.term.rawWrite(
|
||||||
ansi.goto(self.header.height, 1) +
|
ansi.goto(self.header.height + 1, 1));
|
||||||
ansi.eraseLine(self.body.height));
|
//ansi.eraseLine(2));
|
||||||
|
|
||||||
|
theme.displayThemeArt( { name : self.menuConfig.config.art.quote, client : self.client }, function displayed(err, artData) {
|
||||||
|
callback(err, artData);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
function createViewsIfNecessary(artData, callback) {
|
||||||
|
var formId = self.getFormId('quoteBuilder');
|
||||||
|
|
||||||
|
if(_.isUndefined(self.viewControllers.quoteBuilder)) {
|
||||||
|
var menuLoadOpts = {
|
||||||
|
callingMenu : self,
|
||||||
|
formId : formId,
|
||||||
|
mciMap : artData.mciMap,
|
||||||
|
};
|
||||||
|
|
||||||
|
self.addViewController(
|
||||||
|
'quoteBuilder',
|
||||||
|
new ViewController( { client : self.client, formId : formId } )
|
||||||
|
).loadFromMenuConfig(menuLoadOpts, function quoteViewsReady(err) {
|
||||||
|
callback(err);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
self.viewControllers.quoteBuilder.redrawAll();
|
||||||
|
callback(null);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
function loadQuoteLines(callback) {
|
||||||
|
// :TODO: MLTEV's word wrapping -> line[] stuff needs to be made a public API. This can then be used here and elsewhere.
|
||||||
|
// ...should not be too bad to do at all
|
||||||
|
self.viewControllers.quoteBuilder.getView(3).setItems(['Someone said some shit', 'then they said more shit', 'and what not...', 'hurp durp']);
|
||||||
|
callback(null);
|
||||||
|
},
|
||||||
|
function setViewFocus(callback) {
|
||||||
|
self.viewControllers.quoteBuilder.getView(1).setFocus(false);
|
||||||
|
self.viewControllers.quoteBuilder.switchFocus(3);
|
||||||
|
|
||||||
|
callback(null);
|
||||||
|
}
|
||||||
|
],
|
||||||
|
function complete(err) {
|
||||||
|
if(err) {
|
||||||
|
console.log(err) // :TODO: needs real impl.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.observeEditorEvents = function() {
|
this.observeEditorEvents = function() {
|
||||||
|
|
|
@ -216,9 +216,13 @@ function ViewController(options) {
|
||||||
|
|
||||||
async.each(Object.keys(config.mci), function entry(mci, nextItem) {
|
async.each(Object.keys(config.mci), function entry(mci, nextItem) {
|
||||||
var mciMatch = mci.match(MCI_REGEXP); // :TODO: How to handle auto-generated IDs????
|
var mciMatch = mci.match(MCI_REGEXP); // :TODO: How to handle auto-generated IDs????
|
||||||
|
if(null === mciMatch) {
|
||||||
|
self.client.log.warn( { mci : mci }, 'Unable to parse MCI code');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var viewId = parseInt(mciMatch[2]);
|
var viewId = parseInt(mciMatch[2]);
|
||||||
assert(!isNaN(viewId));
|
assert(!isNaN(viewId), 'Cannot parse view ID: ' + mciMatch[2]); // shouldn't be possible with RegExp used
|
||||||
|
|
||||||
if(viewId > highestId) {
|
if(viewId > highestId) {
|
||||||
highestId = viewId;
|
highestId = viewId;
|
||||||
|
|
|
@ -521,7 +521,7 @@
|
||||||
"action" : "@method:nextMessage"
|
"action" : "@method:nextMessage"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: { 1: 2 },
|
value: { 1: 2 }
|
||||||
action: @method:replyMessage
|
action: @method:replyMessage
|
||||||
extraArgs: {
|
extraArgs: {
|
||||||
menu: messageAreaReplyPost
|
menu: messageAreaReplyPost
|
||||||
|
@ -546,15 +546,16 @@
|
||||||
"action" : "@method:prevMessage"
|
"action" : "@method:prevMessage"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"keys" : [ "n", "shift + n" ],
|
keys: [ "n", "shift + n" ]
|
||||||
"action" : "@method:nextMessage"
|
action: @method:nextMessage
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"keys" : [ "escape", "q", "shift + q" ],
|
"keys" : [ "escape", "q", "shift + q" ],
|
||||||
"action" : "@menu:messageArea"
|
"action" : "@menu:messageArea"
|
||||||
},
|
},
|
||||||
|
// :TODO: why the fuck is 'r' not working but 'n' for example does?
|
||||||
{
|
{
|
||||||
keys: : [ "r", "shift + r" ],
|
keys: : [ "r", "shift + r" ]
|
||||||
action: @method:replyMessage
|
action: @method:replyMessage
|
||||||
extraArgs: {
|
extraArgs: {
|
||||||
menu: messageAreaReplyPost
|
menu: messageAreaReplyPost
|
||||||
|
@ -636,19 +637,43 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
4: {
|
3: {
|
||||||
|
HM: {
|
||||||
mci: {
|
mci: {
|
||||||
HM1: {
|
HM1: {
|
||||||
items: [ "Save", "Discard", "Quote", "Help" ]
|
items: [ "Save", "Discard", "Quote", "Help" ]
|
||||||
},
|
}
|
||||||
|
}
|
||||||
|
|
||||||
submit: {
|
submit: {
|
||||||
*: [
|
*: [
|
||||||
{
|
{
|
||||||
value: { 1: 2 },
|
value: { 1: 2 },
|
||||||
action: @method:editModeQuote
|
action: @method:editModeMenuQuote
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
actionKeys: [
|
||||||
|
{
|
||||||
|
keys: [ "escape" ]
|
||||||
|
action: @method:editModeEscPressed
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
5: {
|
||||||
|
mci: {
|
||||||
|
MT1: {
|
||||||
|
width: 79
|
||||||
|
height: 7
|
||||||
|
}
|
||||||
|
VM3: {
|
||||||
|
//items: [ "just", "testing", "some", "things" ]
|
||||||
|
width: 79
|
||||||
|
height: 4
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue