* Progress on FSE quote builder... WIP!

This commit is contained in:
Bryan Ashby 2015-09-14 22:40:00 -06:00
parent 150de3953e
commit cee7983c5a
4 changed files with 96 additions and 17 deletions

View File

@ -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() {

View File

@ -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;

View File

@ -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.