From f2388ceed17a2e7b843263ed7adbc091b1907a47 Mon Sep 17 00:00:00 2001 From: Bryan Ashby Date: Tue, 4 Nov 2014 23:50:42 -0700 Subject: [PATCH] * Various cleanup + utility methods --- core/art.js | 24 +++++++++----------- core/theme.js | 13 +++++++++++ core/ticker_text_view.js | 4 ++-- mods/art/MATRIX1.ANS | Bin 3105 -> 7087 bytes mods/matrix.js | 46 +++++++++++++++++++++++++++++++++++---- mods/test_module1.js | 2 +- 6 files changed, 68 insertions(+), 21 deletions(-) diff --git a/core/art.js b/core/art.js index 23cd19c2..399ff16e 100644 --- a/core/art.js +++ b/core/art.js @@ -368,26 +368,22 @@ function defaultEofFromExtension(ext) { // cb(err, mci) // :TODO: display({ art : art, client : client, ...}, cb) -function display(art, options, cb) { - if(!art || 0 === art.length) { - cb(new Error('Missing or empty art')); - return; - } +function display(options, cb) { + assert( + 'undefined' !== typeof options && + 'undefined' !== typeof options.client && + 'undefined' !== typeof options.art, + 'Missing required options'); - if('undefined' === typeof options) { - cb(new Error('Missing options')); - return; - } - - if('undefined' === typeof options.client) { - cb(new Error('Missing client in options')); + if(0 === options.art.length) { + cb(new Error('Empty art')); return; } var cancelKeys = miscUtil.valueWithDefault(options.cancelKeys, []); var pauseKeys = miscUtil.valueWithDefault(options.pauseKeys, []); var pauseAtTermHeight = miscUtil.valueWithDefault(options.pauseAtTermHeight, false); - var mciReplaceChar = miscUtil.valueWithDefault(options.mciReplaceChar, ''); + var mciReplaceChar = miscUtil.valueWithDefault(options.mciReplaceChar, ' '); // :TODO: support pause/cancel & pause @ termHeight var canceled = false; @@ -464,5 +460,5 @@ function display(art, options, cb) { } }); - parser.parse(art); + parser.parse(options.art); } \ No newline at end of file diff --git a/core/theme.js b/core/theme.js index 2878f68a..ffe6b627 100644 --- a/core/theme.js +++ b/core/theme.js @@ -12,6 +12,7 @@ exports.getThemeInfo = getThemeInfo; exports.getThemeArt = getThemeArt; exports.getRandomTheme = getRandomTheme; exports.initAvailableThemes = initAvailableThemes; +exports.displayThemeArt = displayThemeArt; function getThemeInfo(themeID, cb) { var path = paths.join(Config.paths.themes, themeID, 'theme_info.json'); @@ -108,4 +109,16 @@ function getThemeArt(name, themeID, options, cb) { cb(null, theArt.data); } }); +} + +function displayThemeArt(name, client, cb) { + getThemeArt(name, client.user.properties.art_theme_id, function onArt(err, theArt) { + if(err) { + cb(err); + } else { + art.display( { art : theArt, client : client }, function onDisplayed(err, mci) { + cb(err, mci); + }); + } + }); } \ No newline at end of file diff --git a/core/ticker_text_view.js b/core/ticker_text_view.js index f141bf7b..bbd1710c 100644 --- a/core/ticker_text_view.js +++ b/core/ticker_text_view.js @@ -10,14 +10,14 @@ var assert = require('assert'); exports.TickerTextView = TickerTextView; -TickerTextView = function(client, options) { +function TickerTextView(client, options) { View.call(this, client, options); var self = this; this.text = this.options.text || ''; this.tickerStyle = this.options.tickerStyle || 'rightToLeft'; - asssert(this.tickerStyle in TickerTextView.TickerStyles); + assert(this.tickerStyle in TickerTextView.TickerStyles); // :TODO: Ticker |text| should have ANSI stripped before calculating any lengths/etc. // strUtil.ansiTextLength(s) diff --git a/mods/art/MATRIX1.ANS b/mods/art/MATRIX1.ANS index b09c5ad76bb4e7452f68e42aa67185701a522c6e..8deafd5881f888f6fe0deab1f3abda0adffbb923 100644 GIT binary patch literal 7087 zcmZ{oF^}ZN5rt2Q0s)Gg7~X`50XZ>dZf18aY;+a`!>|u9AV>-}x?pV>0%brx|F1dz zo#8J3$-&=yue!DUx8uTf zH_i)ByOFuWapZP?cjW)%vA$s1E@)H8FY|dGScH0HkGIl}>|Tn{%?@mR9EYYzvTSJy ziQJapxrV!jnB11l^P@Fg+f46eM`i>t{nX{2Uf9`OwqQNTtnov$_xPW$-u?LS2N^7w z7?1AliqmNd1m)M`JT%`xD&A+6&|I+%jD{9@$qjP{!)6S61fr7`8hfn~Xy>^tv4F%3 z7eXDj^McIrW&}UrKF{bl9L8uk2rLO#P!tbFz-t&zh}hnV2-;x#hs5+O^yf|w%VU12 zkUiHG$}Lnf=vE|X+&UiRP4i0YttsBO2Tj{BhW9eu#GFpps*S`ni9$^z(ahl1F&lk{ z>k>Az+2b(IXPo2Ne~0|>#M*^S-QDrJrQTLuaMRTZVhZqN&M0kK*mvV&)0~a0RIVcJlLCQ&_8W>I75`N9}4x0yYS z&&xR$>WWuZ)1zR&0*A8Ec<3e(RGlce_J-~-ViQ6D*)X>3LD+e`Bkgp~Dpd|6ZXpLP z*ea8qX(59>by~8$|Fiju&)%fj5<$~#6%O3%Dbi}U+6fUvJ-F2-ppl z%b8ZPWd<2ns7a&&W{#~s+ksZlF5nU*#HDF0sDhab0H7>(=Q$oxXPDVpzHu+lgNPD( zmB%pwu44K=hDY2A&i$n5 z!*Trm4{!Hhy;jQwm2Ukg1;PaTHVw;jU^*-=pM?&CF-76wUR-g8smLafMgdotW=vN= zKP`ovAQwONZwX<*O~Xnsq+ND&v@8jDcFtxU@(6L=0$NHh*uq0|vH+5eortGNO4sK) z577?lMFb-a>}Yab61QB!*VY9|1={VnmEqfZ@RVJRIRR;}hNvSs$>^N(pu-GCAISFr zMM4c9huPWSO0q3A!Y6|-APxBd)EOx$x+=*dnXGS>(!ux?s9SJOEM;ZtP*QhzGHG(m zJ;O)@6pV6)DY;@k`vjAJ+B9IKoVpwLh1W*3F zc~zhdGdBMO z5lYR$Cs2#YD_)CEb!>_)>?hOYeWS;t%&M-X4F(+vAQWmec?kk=0 zwxURIf{7w^AYi&76;Uh;T)d#^ka8FsQ1q54->gzVH|g&N(&rQ!CFy%R7S(A^rM%#+ zR%V4G-T5{{v23#=;L(7!voOij;gK;_T|QB8)OFjzVSssl2iYjb6X+)xgiqCEH?$tW z^M(dWJY*jrd1B}PjlK?zDm@~bDe zYz0ab6%q8eIclq8<5Lo!M^wDDyJ18QBwD%XbYKre+$SKN+S<+yQ^y9Zucz^>;X%O| z{AEC!7%Y*!odIh;tBt!1nmECV;8NYNvQlRyDz3+;xmMt_Pv!*BFZ@`1z2*Wf3Tku! z8n?A@ipbAKlexnw5pKxD=8EQBND=mUMy0edW!qA*VC_(xDVxaUTTOcU2G_EjW}jsp zEr6$2U@gcC|4gXt6p-TGb!UV;szegrGNArhNN(w14SEi%7y7x*5U_l$+FXft94GNd z8KUSwiaLxSk4f|pRNSb9TP8$yKsgz|?8F(kHgZTC6Yy^K{7G;Q*#fSYkLXA^ z7AWgEQT#;dlH+T%q`l_^ZzB2JEAKn72|zwJ7Lr@TyPakM3hVg!o}i(@e=Pg4IY77BnP#eOVTfp?u|z zeSGSPe`2g`N!gdO0=6m@NXW-^e8sbv4m^$viu`@I=vjEH!(jDni~E=6$7v>}K((Gx zE34&{s94SwruFo@@7{d>&9}SV-`@T6r*{wk{Yk~*SAK7QIllkj&kq-~Z+`rC`1`~A v_Yc4P`{#ev%>L`IZ}+?5`j1zyUVZl2KVJRzm4Cna>!05aKm6rQp8ECwKjRpB literal 3105 zcmZuzNpjmj47{hxABZk|0vXa#Qabt>I@uM+mBZLoaq_BMD1L{u_?7emjOc|2Ei*u) z(ZGPSJGNza>`K$@j_slE%9zjY*zd8mzv1>WEei~2`c(@w=f7+IJM^sp`o4^C;~(t9 zUEj0|l)xA+5LcfFzl|=u{b2x=O37$|G?`_c=Xu&4hkcpx*_D}JExuMEDIj8xK=@{Y zeGy}BgD!Y-j|}mte`CXNVuEy+WnI^0nGgq{+_?IroWx4PI0;!=3zIvO3V4Z9S0>T~ zvzLvHx57){;|3))fUn%PtAQ#EJG!a&4rxO!N4Z2nhm@bNBB`m}& zR&JH<;5L}2N%|;ZMSlH@W(=W@WDm0^u!e?IkD^Ve2#{6#XdV~<1{DK0D$}D0DY@an}K%OV(fHI|un@!}>G}jzu!SXcE>Ur9p7dE=V zV+x|L*({)ALQGl|NZ7U%ncJ=lu$4XGW<+G~(N?1&J4@*p>dYw#1I-JNI1EF)HU^%U z41*XUIJh_x2SnJb)`&QVl97aF9Q$4^z|oW|u`sa|%p6eYc|;~sCRT7b*3gRCqpWK- zL14m9{;u?g%u$roo8S2+5qa)h;*yApkx6qTsOiPZTi_Z4#?d4k961u-`FXNLI}(0f zS>cNvCpJiND5oTrY0AtX!PM9X7I9P%4f}9QX+3#ZkMcgkgaKOLhhh=+i7{Qr8c=Fy z%Pz>O@iTN*Ktoe<`urn!nn0oL!x5*e&X+WZchqJe&nr^WFr;Ng!m9Q0tAsctQ+3Eq zgtLA)%{<3^@M;z+SAsy71kPwlQL0GjTrSi%MAW4oQYjpV1Rcuj4S_*fXIcRx&tC61 z%`D2!tvBF##mR#qewi5W5?D|raQ6KmPRbaRbe=$A|mh<>~M9y+$Cl94__N zHP9S%k)=2h)rCW`D1z?Kh#SZiAPU%5XJ1W`dn(nS-gr<9UOe^SCqq)#>*|O!Qb?}V g4By-{uFa@7&1O0|AKsr-GE&N?dbj2Ce=HMmumAu6 diff --git a/mods/matrix.js b/mods/matrix.js index 36073b22..837d9a66 100644 --- a/mods/matrix.js +++ b/mods/matrix.js @@ -10,7 +10,9 @@ var modules = require('../core/modules.js'); //var view = require('../core/view.js'); var textView = require('../core/text_view.js'); var editTextView = require('../core/edit_text_view.js'); -var viewController = require('../core/view_controller.js'); +var ViewController = require('../core/view_controller.js').ViewController; + +var async = require('async'); exports.moduleInfo = { name : 'Matrix', @@ -20,6 +22,43 @@ exports.moduleInfo = { exports.entryPoint = entryPoint; +function entryPoint(client) { + + theme.displayThemeArt('MATRIX', client, function onMatrix(err, mciMap) { + if(mciMap.ET1 && mciMap.ET2 && mciMap.BN1 && mciMap.BN2 && mciMap.BN3) { + // + // Form via EditTextViews and ButtonViews + // * ET1 - userName + // * ET2 - password + // * BN1 - Login + // * BN2 - New + // * BN3 - Bye! + // + } else if(mciMap.VM1) { + // + // Menu via VerticalMenuView + // + // * VM1 - menu with the following items: + // 0 - Login + // 1 - New + // 2 - Bye! + // + var vc = new ViewController(client); + + vc.on('submit', function onSubmit(form) { + + }); + + vc.loadFromMCIMap(mciMap); + vc.setViewOrder(); + // :TODO: Localize + vc.getView(1).setItems(['Login', 'New User', 'Goodbye!']); + vc.switchFocus(1); + } + }); +} + +/* function entryPoint(client) { var term = client.term; @@ -27,8 +66,6 @@ function entryPoint(client) { // :TODO: types, random, and others? could come from conf.mods.matrix or such - //art.getArt('SO-CC1.ANS'/* 'MATRIX'*/, { types: ['.ans'], random: true}, function onArt(err, theArt) { - //client.user.properties.art_theme_id = ''; theme.getThemeArt('MCI_ET1.ANS', client.user.properties.art_theme_id, function onArt(err, theArt) { //art.getArt('MATRIX_1.ANS', {}, function onArt(err, theArt) { @@ -63,4 +100,5 @@ function entryPoint(client) { }); } }); -} \ No newline at end of file +} +*/ \ No newline at end of file diff --git a/mods/test_module1.js b/mods/test_module1.js index c8e3c981..20d2e55a 100644 --- a/mods/test_module1.js +++ b/mods/test_module1.js @@ -28,7 +28,7 @@ function entryPoint(client) { }); }, function displayArt(theArt, callback) { - art.display(theArt, { client : client, mciReplaceChar : ' ' }, function onDisplayed(err, mci) { + art.display( { art : theArt, client : client }, function onDisplayed(err, mci) { callback(err, mci); }); },