Espruino/libs/js/banglejs/E_showPrompt.min.js
Gordon Williams 6652295b4f Bangle.js/Pixl.js: Updated E.showMenu
Bangle.js: E.showMenu now has some colour, bigger, with next/prev indicators, and works with widgets
2020-02-10 15:14:18 +00:00

3 lines
1.2 KiB
JavaScript

(function(l,a){function h(){g.clear(1);g.setFont("6x8",2);g.setFontAlign(0,0);var d=g.getWidth(),h=g.getHeight();if(a.title){g.drawString(a.title,d/2,24);var f=(g.stringWidth(a.title)+16)/2;g.fillRect(d/2-f,34,d/2+f,35)}f=l.split("\n");var n=(h-16*f.length)/2;f.forEach(function(a,b){return g.drawString(a,d/2,n+16*b)});var m=0;k.forEach(function(a){return m+=16+g.stringWidth(a)});var b=(d-m)/2,e=h-40;k.forEach(function(d,h){var f=g.stringWidth(d);b+=(16+f)/2;var c=2+f/2;c=[b-c,e-12,b+c,
e-12,b+c+4,e-8,b+c+4,e+8,b+c,e+12,b-c,e+12,b-c-4,e+8,b-c-4,e-8,b-c,e-12];h==a.selected&&(g.setColor(759),g.fillPoly(c),g.setColor(-1));g.drawPoly(c);g.drawString(d,b,e+1);b+=(16+f)/2});g.setColor(-1);g.flip()}a||(a={});a.buttons||(a.buttons={Yes:!0,No:!1});var k=Object.keys(a.buttons);a.selected||(a.selected=0);Bangle.btnWatches&&(Bangle.btnWatches.forEach(clearWatch),Bangle.btnWatches=void 0);if(!l)return g.clear(1),g.flip(),Promise.resolve();h();return new Promise(function(d){Bangle.btnWatches=
[setWatch(function(){0<a.selected&&(a.selected--,h())},BTN1,{repeat:1}),setWatch(function(){a.selected<k.length-1&&(a.selected++,h())},BTN3,{repeat:1}),setWatch(function(){E.showPrompt();d(a.buttons[k[a.selected]])},BTN2,{repeat:1})]})})