mirror of
https://github.com/espruino/Espruino.git
synced 2025-12-08 19:06:15 +00:00
5 lines
2.4 KiB
JavaScript
5 lines
2.4 KiB
JavaScript
(function(m,n){global.Dickens||(Dickens={});Bangle.setUI();g.clear(1);if(m){g.setColor("#305080");g.fillArc(.285*-Math.PI,.285*Math.PI,96);g.fillArc(Math.PI*(1-.285),1.285*Math.PI,96);g.fillRect(41,62,195,62);g.fillRect(41,175,195,175);var e=Object.keys(m),b=m[""];b&&e.splice(e.indexOf(""),1);b instanceof Object||(b={});b.fontHeight=16;void 0===b.selected&&(b.selected=0);var p=require("locale"),d={draw:function(){g.reset().setColor(-1).setFontGrotesk16();b.title&&(g.setFontAlign(0,
|
|
-1,0),g.setBgColor("#305080").drawString(b.title,119,42));g.setBgColor(0);var c=0|Math.min(103/b.fontHeight,e.length),a=E.clip(b.selected-(c>>1),0,e.length-c),h=71;for(g.setColor(0<a?"#304060":"#305080").fillPoly([111,36,127,36,119,28]);c--;){var k=e[a],l=m[k];g.setBgColor(a!=b.selected||d.selectEdit?0:"#304060");g.setColor(-1);g.clearRect(38,h-1,200,h+b.fontHeight-1);g.setFontAlign(-1,-1);g.drawString(p.translate(k),40,h);if("object"==typeof l){k=200;var f=l.value;l.format&&(f=l.format(f));"number"==
|
|
typeof f&&l.precision&&(f=f.toFixed(l.precision));f=p.translate(""+f);d.selectEdit&&a==b.selected&&(k-=25,g.setColor("#304060"),g.fillRect(k-(g.stringWidth(f)+8),h-1,200,h+b.fontHeight-1),g.setColor(-1),g.drawImage("\f\x05\x81\x00 \x07\x00\xf9\xf0\x0e\x00@",k,h+(b.fontHeight-10)/2,{scale:2}));g.setFontAlign(1,-1);g.drawString(f,k-2,h)}h+=b.fontHeight+1;a++}g.setFontAlign(-1,-1);g.setColor(a<e.length?"#304060":"#305080").fillPoly([110,191,128,191,119,200]);g.flip()},select:function(c){c=
|
|
m[e[b.selected]];if("function"==typeof c)Bangle.setUI(),c(d);else if("object"==typeof c){if("number"==typeof c.value)d.selectEdit=d.selectEdit?void 0:c;else if("boolean"==typeof c.value&&(c.value=!c.value),c.onchange)c.onchange(c.value);d.draw()}},move:function(c){if(d.selectEdit){var a=d.selectEdit;a.value-=(c||1)*(a.step||1);1E-10>Math.abs(a.value)&&(a.value=0);void 0!==a.min&&a.value<a.min&&(a.value=a.wrap?a.max:a.min);void 0!==a.max&&a.value>a.max&&(a.value=a.wrap?a.min:a.max);if(a.onchange)a.onchange(a.value)}else b.selected=
|
|
(c+b.selected)%e.length,0>b.selected&&(b.selected+=e.length);d.draw()}};Dickens.buttonIcons=["select",null,"down","up"];n&&(Dickens.buttonIcons[1]="back");d.draw();Dickens.loadSurround&&Dickens.loadSurround();Bangle.btnWatches=[setWatch(function(){d.move(-1)},BTN4,{repeat:1}),setWatch(function(){d.move(1)},BTN3,{repeat:1}),setWatch(function(){d.select()},BTN1,{repeat:1})];n&&Bangle.btnWatches.push(setWatch(n,BTN2,{repeat:1}));return d}}) |