0ad/binaries/data/mods/public/gui/msgbox/msgbox.xml
Yves 4b1297b328 Removes g_ScriptingHost and implements global to compartment 1 to 1 relation.
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.
2014-01-04 10:14:53 +00:00

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>