mirror of
https://github.com/espruino/Espruino.git
synced 2025-12-08 19:06:15 +00:00
67 lines
2.0 KiB
JavaScript
67 lines
2.0 KiB
JavaScript
(function(msg,options) {
|
|
if (!options) options={};
|
|
if (!options.buttons)
|
|
options.buttons = {"Yes":true,"No":false};
|
|
var loc = require("locale");
|
|
var btns = Object.keys(options.buttons);
|
|
var btnPos = [];
|
|
function draw() {
|
|
g.reset().setFont("6x8",2).setFontAlign(0,0);
|
|
var W = g.getWidth();
|
|
var H = g.getHeight();
|
|
var title = options.title;
|
|
if (title) {
|
|
title = loc.translate(title);
|
|
g.drawString(title,W/2,34);
|
|
var w = (g.stringWidth(title)+16)/2;
|
|
g.fillRect((W/2)-w,44,(W/2)+w,44);
|
|
}
|
|
var lines = msg.split("\n");
|
|
var offset = (H - lines.length*16)/2;
|
|
lines.forEach((line,y)=>
|
|
g.drawString(loc.translate(line),W/2,offset + y*16));
|
|
var buttonWidths = 0;
|
|
var buttonPadding = 24;
|
|
btns.forEach(btn=>buttonWidths += buttonPadding+g.stringWidth(loc.translate(btn)));
|
|
var x = (W-buttonWidths)/2;
|
|
var y = H-40;
|
|
btns.forEach((btn,idx)=>{
|
|
btn = loc.translate(btn);
|
|
var w = g.stringWidth(btn);
|
|
x += (buttonPadding+w)/2;
|
|
var bw = 6+w/2;
|
|
btnPos.push({x1:x-bw, x2:x+bw,
|
|
y1:y-24, y2:y+24});
|
|
var poly = [x-bw,y-16,
|
|
x+bw,y-16,
|
|
x+bw+4,y-12,
|
|
x+bw+4,y+12,
|
|
x+bw,y+16,
|
|
x-bw,y+16,
|
|
x-bw-4,y+12,
|
|
x-bw-4,y-12,
|
|
x-bw,y-16];
|
|
g.setColor(g.theme.bg2).fillPoly(poly).setColor(g.theme.fg2).drawPoly(poly).drawString(btn,x,y+1);
|
|
x += (buttonPadding+w)/2;
|
|
});
|
|
g.setColor(g.theme.fg).flip(); // turn screen on
|
|
}
|
|
g.clear(1); // clear screen
|
|
Bangle.drawWidgets(); // redraw widgets
|
|
if (!msg) {
|
|
Bangle.setUI(); // remove watches
|
|
return Promise.resolve();
|
|
}
|
|
draw();
|
|
return new Promise(resolve=>{
|
|
Bangle.setUI("touch", e=>{
|
|
btnPos.forEach((b,i)=>{
|
|
if (e.x >= b.x1 && e.x <= b.x2 &&
|
|
e.y >= b.y1 && e.y <= b.y2) {
|
|
E.showPrompt(); // remove
|
|
resolve(options.buttons[btns[i]]);
|
|
}
|
|
});
|
|
});
|
|
});
|
|
}) |