forked from 0ad/0ad
Yves
4b1297b328
Each GUI Page gets its own compartment and all ScriptInterfaces in the same thread should now use the same JS Runtime. This is required for the SpiderMonkey upgrade. Check the ticket for details. Closes #2241 Refs #1886 Refs #1966 This was SVN commit r14496.
151 lines
3.5 KiB
XML
151 lines
3.5 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
|
|
<objects>
|
|
<script><![CDATA[
|
|
function init(data)
|
|
{
|
|
var mbMainObj = Engine.GetGUIObjectByName("mbMain");
|
|
var mbTitleObj = Engine.GetGUIObjectByName("mbTitleBar");
|
|
var mbTextObj = Engine.GetGUIObjectByName("mbText");
|
|
|
|
var mbButton1Obj = Engine.GetGUIObjectByName("mbButton1");
|
|
var mbButton2Obj = Engine.GetGUIObjectByName("mbButton2");
|
|
var mbButton3Obj = Engine.GetGUIObjectByName("mbButton3");
|
|
|
|
// Calculate size
|
|
var mbLRDiff = data.width / 2; // Message box left/right difference from 50% of screen
|
|
var mbUDDiff = data.height / 2; // Message box up/down difference from 50% of screen
|
|
|
|
var mbSizeString = "50%-" + mbLRDiff + " 50%-" + mbUDDiff + " 50%+" + mbLRDiff + " 50%+" + mbUDDiff;
|
|
|
|
mbMainObj.size = mbSizeString;
|
|
|
|
// Texts
|
|
mbTitleObj.caption = data.title;
|
|
mbTextObj.caption = data.message;
|
|
|
|
if (data.font)
|
|
mbTextObj.font = data.font;
|
|
|
|
// Message box modes
|
|
// There is a number of standard modes, and if none of these is used (mbMode == 0), the button captions will be
|
|
// taken from the array mbButtonCaptions; there currently is a maximum of three buttons.
|
|
switch (data.mode)
|
|
{
|
|
case 1:
|
|
// Simple Yes/No question box
|
|
data.buttonCaptions = ["Yes", "No"];
|
|
break;
|
|
case 2:
|
|
// Okay-only box
|
|
data.buttonCaptions = ["OK"];
|
|
break;
|
|
case 3:
|
|
// Retry/Abort/Ignore box (will we ever need this?!)
|
|
data.buttonCaptions = ["Retry", "Ignore", "Abort"];
|
|
default:
|
|
break;
|
|
}
|
|
|
|
// Buttons
|
|
var codes = data.buttonCode;
|
|
if (data.buttonCaptions.length >= 1)
|
|
{
|
|
mbButton1Obj.caption = data.buttonCaptions[0];
|
|
mbButton1Obj.onPress = function ()
|
|
{
|
|
if (data.callback)
|
|
Engine.PopGuiPageCB(0);
|
|
else
|
|
Engine.PopGuiPage();
|
|
};
|
|
mbButton1Obj.hidden = false;
|
|
}
|
|
if (data.buttonCaptions.length >= 2)
|
|
{
|
|
mbButton2Obj.caption = data.buttonCaptions[1];
|
|
mbButton2Obj.onPress = function ()
|
|
{
|
|
if (data.callback)
|
|
Engine.PopGuiPageCB(1);
|
|
else
|
|
Engine.PopGuiPage();
|
|
};
|
|
mbButton2Obj.hidden = false;
|
|
}
|
|
if (data.buttonCaptions.length >= 3)
|
|
{
|
|
mbButton3Obj.caption = data.buttonCaptions[2];
|
|
mbButton3Obj.onPress = function ()
|
|
{
|
|
if (data.callback)
|
|
Engine.PopGuiPageCB(2);
|
|
else
|
|
Engine.PopGuiPage();
|
|
};
|
|
mbButton3Obj.hidden = false;
|
|
}
|
|
|
|
switch (data.buttonCaptions.length)
|
|
{
|
|
case 1:
|
|
mbButton1Obj.size = "50%-64 100%-76 50%+64 100%-48";
|
|
break;
|
|
case 2:
|
|
mbButton1Obj.size = "50%-144 100%-76 50%-16 100%-48";
|
|
mbButton2Obj.size = "50%+16 100%-76 50%+144 100%-48";
|
|
break;
|
|
case 3:
|
|
mbButton1Obj.size = "10% 100%-76 30% 100%-48";
|
|
mbButton2Obj.size = "40% 100%-76 60% 100%-48";
|
|
mbButton3Obj.size = "70% 100%-76 90% 100%-48";
|
|
break;
|
|
}
|
|
}
|
|
]]></script>
|
|
|
|
<object hotkey="leave">
|
|
<action on="Press">Engine.PopGuiPage();</action>
|
|
</object>
|
|
|
|
<object>
|
|
<object name="mbMain"
|
|
style="StoneDialog"
|
|
type="image"
|
|
>
|
|
|
|
<object name="mbTitleBar"
|
|
style="TitleText"
|
|
type="text"
|
|
size="50%-128 0%-16 50%+128 16"
|
|
/>
|
|
|
|
<object name="mbText"
|
|
type="text"
|
|
style="CenteredLabelText"
|
|
size="5% 20% 95% 100%-96"
|
|
/>
|
|
|
|
<object name="mbButton1"
|
|
style="StoneButton"
|
|
type="button"
|
|
hidden="true"
|
|
size="40 100%-50 33%-30 100%-20"
|
|
/>
|
|
<object name="mbButton2"
|
|
style="StoneButton"
|
|
type="button"
|
|
hidden="true"
|
|
size="33%+30 100%-50 66%-40 100%-20"
|
|
/>
|
|
<object name="mbButton3"
|
|
style="StoneButton"
|
|
type="button"
|
|
hidden="true"
|
|
size="66%+30 100%-50 100%-40 100%-20"
|
|
/>
|
|
</object>
|
|
</object>
|
|
|
|
</objects>
|