mirror of
https://gitea.wildfiregames.com/0ad/0ad
synced 2026-06-17 05:44:08 -07:00
Small fixes and improvement while I'm at it, by temple and elexis. This was SVN commit r21754.
67 lines
1.7 KiB
JavaScript
67 lines
1.7 KiB
JavaScript
/**
|
|
* Currently limited to at most 3 buttons per message box.
|
|
* The convention is to have "cancel" appear first.
|
|
*/
|
|
function init(data)
|
|
{
|
|
// Set title
|
|
Engine.GetGUIObjectByName("mbTitleBar").caption = data.title;
|
|
|
|
// Set subject
|
|
let mbTextObj = Engine.GetGUIObjectByName("mbText");
|
|
mbTextObj.caption = data.message;
|
|
if (data.font)
|
|
mbTextObj.font = data.font;
|
|
|
|
// Default behaviour
|
|
let mbCancelHotkey = Engine.GetGUIObjectByName("mbCancelHotkey");
|
|
mbCancelHotkey.onPress = Engine.PopGuiPage;
|
|
|
|
// Calculate size
|
|
let mbLRDiff = data.width / 2;
|
|
let mbUDDiff = data.height / 2;
|
|
Engine.GetGUIObjectByName("mbMain").size = "50%-" + mbLRDiff + " 50%-" + mbUDDiff + " 50%+" + mbLRDiff + " 50%+" + mbUDDiff;
|
|
|
|
let captions = data.buttonCaptions || [translate("OK")];
|
|
|
|
// Set button captions and visibility
|
|
let mbButton = [];
|
|
captions.forEach((caption, i) => {
|
|
mbButton[i] = Engine.GetGUIObjectByName("mbButton" + (i + 1));
|
|
|
|
let action = function()
|
|
{
|
|
if (data.callback)
|
|
Engine.PopGuiPageCB(i);
|
|
else
|
|
Engine.PopGuiPage();
|
|
};
|
|
|
|
mbButton[i].caption = caption;
|
|
mbButton[i].onPress = action;
|
|
mbButton[i].hidden = false;
|
|
|
|
// Convention: Cancel is the first button
|
|
if (i == 0)
|
|
mbCancelHotkey.onPress = action;
|
|
});
|
|
|
|
// Distribute buttons horizontally
|
|
let y1 = "100%-46";
|
|
let y2 = "100%-18";
|
|
switch (captions.length)
|
|
{
|
|
case 1:
|
|
mbButton[0].size = "18 " + y1 + " 100%-18 " + y2;
|
|
break;
|
|
case 2:
|
|
mbButton[0].size = "18 " + y1 + " 50%-5 " + y2;
|
|
mbButton[1].size = "50%+5 " + y1 + " 100%-18 " + y2;
|
|
break;
|
|
case 3:
|
|
mbButton[0].size = "18 " + y1 + " 33%-5 " + y2;
|
|
mbButton[1].size = "33%+5 " + y1 + " 66%-5 " + y2;
|
|
mbButton[2].size = "66%+5 " + y1 + " 100%-18 " + y2;
|
|
break;
|
|
}
|
|
}
|