1
0
Fork 0
fgdata/gui/dialogs/fgcom.xml

460 lines
11 KiB
XML

<?xml version="1.0"?>
<PropertyList>
<name>fgcom</name>
<layout>vbox</layout>
<resizable>false</resizable>
<nasal>
<open><![CDATA[
var autofill = func {
if ((getprop("/sim/fgcom/selected-server") == nil) or
(getprop("/sim/fgcom/selected-server") == "" ) ){
var tx = getprop("/sim/fgcom/server");
var dlg = cmdarg();
#var servers = cmdarg().getChildren("group")[5].getChildren("combo")[0].getChildren("value");
var servers = props.globals.getNode("/sim/gui/dialogs/multiplay/fgcom-servers", 1);
foreach (var s; servers.getChildren("value")) {
var server = s.getValue();
var host = split(" ", server)[0];
if (host == tx) {
setprop("/sim/fgcom/selected-server", server);
}
}
}
}
var servers = props.globals.getNode("/sim/gui/dialogs/multiplay/fgcom-servers", 1);
var updateServers = func {
servers.removeChildren("value");
# get the results list from the server
var serverlist = props.globals.getNode("/sim/multiplay/server-list", 1);
var i=0;
foreach (var s; serverlist.getChildren("fgcom")) {
if (!s.getNode("online").getBoolValue()) {
continue; # skip offline servers
}
# label is name and location, for the moment
# should we include the number of users? or wait until we
# have a better UI toolkit?
var nm = s.getNode("hostname").getValue() ~ " - " ~ s.getNode("location").getValue();
servers.getNode("value[" ~ i ~ "]", 1).setValue(nm);
i += 1;
}
autofill();
gui.dialog_update("fgcom", "server");
}
var static_serverList = [
['fgcom.flightgear.org', 'Avignon, France'],
['delta384.server4you.de', 'Unknown']
];
var updateServersFailed = func {
debug.dump("Failed to retrieve server list!");
servers.removeChildren("value");
var i=0;
foreach (var s; static_serverList) {
# create the node the PUI combo
var nm = s[0] ~ " - " ~ s[1];
servers.getNode("value[" ~ i ~ "]", 1).setValue(nm);
i += 1;
}
autofill();
gui.dialog_update("fgcom", "server");
}
# listen for results arriving
setlistener("/sim/multiplay/got-servers", updateServers);
setlistener("/sim/multiplay/get-servers-failure", updateServersFailed);
fgcommand("xmlhttprequest", props.Node.new({
"url" : "http://liveries.flightgear.org/mpstatus/mpservers.xml",
"targetnode" : "/sim/multiplay/server-list",
"complete" : "/sim/multiplay/got-servers",
"failure" : "/sim/multiplay/get-servers-failure"
}));
]]>
</open>
<close>
</close>
</nasal>
<!-- titlebar -->
<group>
<layout>hbox</layout>
<empty>
<stretch>1</stretch>
</empty>
<text>
<label>FGCom Settings</label>
</text>
<empty>
<stretch>1</stretch>
</empty>
<button>
<pref-width>16</pref-width>
<pref-height>16</pref-height>
<legend></legend>
<keynum>27</keynum>
<border>2</border>
<binding>
<command>dialog-close</command>
</binding>
</button>
</group>
<hrule/>
<!-- main dialog area -->
<group>
<layout>table</layout>
<halign>left</halign>
<text>
<row>0</row>
<col>0</col>
<label>Enabled:</label>
<halign>right</halign>
<enable>
<equals>
<property>/sim/fgcom/test</property>
<value>0</value>
</equals>
</enable>
</text>
<checkbox>
<row>0</row>
<col>1</col>
<colspan>2</colspan>
<halign>left</halign>
<name>enabled</name>
<label></label>
<enable>
<equals>
<property>/sim/fgcom/test</property>
<value>0</value>
</equals>
</enable>
<property>/sim/fgcom/enabled</property>
<binding>
<command>dialog-apply</command>
<object-name>enabled</object-name>
</binding>
</checkbox>
<text>
<row>1</row>
<col>0</col>
<label>Display messages:</label>
<halign>right</halign>
</text>
<checkbox>
<row>1</row>
<col>1</col>
<colspan>2</colspan>
<halign>left</halign>
<name>showMessages</name>
<label></label>
<property>/sim/fgcom/show-messages</property>
<binding>
<command>dialog-apply</command>
<object-name>showMessages</object-name>
</binding>
</checkbox>
<text>
<row>1</row>
<col>1</col>
<label> (for debug only)</label>
<halign>right</halign>
</text>
<text>
<row>3</row>
<col>0</col>
<label>Echo test:</label>
<halign>right</halign>
<enable>
<equals>
<property>/sim/fgcom/enabled</property>
<value>1</value>
</equals>
</enable>
</text>
<checkbox>
<row>3</row>
<col>1</col>
<colspan>2</colspan>
<halign>left</halign>
<name>test</name>
<label></label>
<enable>
<equals>
<property>/sim/fgcom/enabled</property>
<value>1</value>
</equals>
</enable>
<property>/sim/fgcom/test</property>
<binding>
<command>dialog-apply</command>
<object-name>test</object-name>
</binding>
</checkbox>
<text>
<row>4</row>
<col>0</col>
<label>Speaker Volume:</label>
<halign>right</halign>
</text>
<slider>
<row>4</row>
<col>1</col>
<halign>left</halign>
<name>speaker-vol</name>
<label></label>
<min>0</min>
<max>1.0</max>
<step>0.1</step>
<property>/sim/fgcom/speaker-level</property>
<binding>
<command>dialog-apply</command>
<object-name>speaker-vol</object-name>
</binding>
</slider>
<text>
<row>4</row>
<col>2</col>
<label>1234</label>
<format>%.1f</format>
<live>true</live>
<property>/sim/fgcom/speaker-level</property>
</text>
</group>
<hrule/>
<!-- registration (keep it for the day we need it)
<group>
<layout>hbox</layout>
<empty>
<stretch>1</stretch>
</empty>
<text>
<label>Registration</label>
</text>
<empty>
<stretch>1</stretch>
</empty>
</group>
<group>
<layout>table</layout>
<halign>left</halign>
<text>
<row>0</row>
<col>0</col>
<halign>right</halign>
<label>Enabled:</label>
<enable>
<equals>
<property>/sim/fgcom/enabled</property>
<value>0</value>
</equals>
</enable>
</text>
<checkbox>
<row>0</row>
<col>1</col>
<colspan>2</colspan>
<halign>left</halign>
<name>reg-enabled</name>
<label></label>
<property>/sim/fgcom/register/enabled</property>
<enable>
<equals>
<property>/sim/fgcom/enabled</property>
<value>0</value>
</equals>
</enable>
<binding>
<command>dialog-apply</command>
<object-name>reg-enabled</object-name>
</binding>
</checkbox>
<text>
<row>1</row>
<col>0</col>
<halign>right</halign>
<label>Username:</label>
<enable>
<equals>
<property>/sim/fgcom/enabled</property>
<value>0</value>
</equals>
</enable>
</text>
<input>
<name>username</name>
<row>1</row>
<col>1</col>
<colspan>2</colspan>
<halign>left</halign>
<pref-width>125</pref-width>
<editable>true</editable>
<property>/sim/fgcom/register/username</property>
<enable>
<equals>
<property>/sim/fgcom/enabled</property>
<value>0</value>
</equals>
</enable>
<binding>
<command>dialog-apply</command>
<object-name>username</object-name>
</binding>
</input>
<text>
<row>2</row>
<col>0</col>
<halign>right</halign>
<label>Password:</label>
<enable>
<equals>
<property>/sim/fgcom/enabled</property>
<value>0</value>
</equals>
</enable>
</text>
<input>
<name>password</name>
<row>2</row>
<col>1</col>
<colspan>2</colspan>
<halign>left</halign>
<pref-width>125</pref-width>
<editable>true</editable>
<property>/sim/fgcom/register/password</property>
<enable>
<equals>
<property>/sim/fgcom/enabled</property>
<value>0</value>
</equals>
</enable>
<binding>
<command>dialog-apply</command>
<object-name>password</object-name>
</binding>
</input>
</group>
<hrule/>
-->
<!-- server -->
<group>
<layout>hbox</layout>
<empty>
<stretch>1</stretch>
</empty>
<text>
<label>Server</label>
</text>
<empty>
<stretch>1</stretch>
</empty>
</group>
<group>
<layout>table</layout>
<halign>left</halign>
<combo>
<name>server</name>
<row>1</row>
<col>0</col>
<colspan>6</colspan>
<pref-width>275</pref-width>
<editable>false</editable>
<property>/sim/fgcom/selected-server</property>
<properties>/sim/gui/dialogs/multiplay/fgcom-servers</properties>
<enable>
<and>
<equals>
<property>/sim/fgcom/enabled</property>
<value>1</value>
</equals>
<equals>
<property>/sim/fgcom/test</property>
<value>0</value>
</equals>
</and>
</enable>
<binding>
<command>dialog-apply</command>
<object-name>server</object-name>
</binding>
<binding>
<command>nasal</command>
<script>
<![CDATA[
setprop("/sim/fgcom/enabled", 0);
var server = getprop("/sim/fgcom/selected-server");
server = split(" ", server)[0];
setprop("/sim/fgcom/server", server);
setprop("/sim/fgcom/enabled", 1);
]]>
</script>
</binding>
<binding>
<command>dialog-apply</command>
<object-name>test</object-name>
</binding>
</combo>
</group>
<!-- button area -->
<hrule/>
<group>
<layout>hbox</layout>
<default-padding>10</default-padding>
<empty>
<stretch>true</stretch>
</empty>
<button>
<legend>Close</legend>
<default>true</default>
<equal>true</equal>
<binding>
<command>dialog-close</command>
</binding>
</button>
<empty>
<stretch>true</stretch>
</empty>
</group>
</PropertyList>