Howto:Implementing a simple GCA system: Difference between revisions

Jump to navigation Jump to search
Line 401: Line 401:
{text: 'Position root', default_value:'/position', focus:1, callback:nil, tooltip:'property path to position node', validate: 'AircraftRoot', convert:nil, unit: 'property path'},
{text: 'Position root', default_value:'/position', focus:1, callback:nil, tooltip:'property path to position node', validate: 'AircraftRoot', convert:nil, unit: 'property path'},
{text: 'Airport', default_value:'KSFO', focus:0, callback:nil, tooltip:'ICAO ID, e.g. KSFO', validate: 'Airport', convert:nil, unit:'ICAO'},
{text: 'Airport', default_value:'KSFO', focus:0, callback:nil, tooltip:'ICAO ID, e.g. KSFO', validate: 'Airport', convert:nil, unit:'ICAO'},
{text: 'Runway', default_value:'28R', focus:0, callback:nil, tooltip:'runway identifier, e.g. 28L', validate: 'Runway', convert:nil, unit:'RWY'},
{text: 'Runway', default_value:'28R', focus:0, callback:nil, tooltip:'runway identifier, e.g. 28L', validate: 'Runway', convert:nil, unit:'rwy'},
{text: 'Final Approach', default_value:'10.00', focus:0, callback:nil, tooltip:'length of final approach leg', validate: 'FinalApproach', convert:nil, unit:'nm'},
{text: 'Final Approach', default_value:'10.00', focus:0, callback:nil, tooltip:'length of final approach leg', validate: 'FinalApproach', convert:nil, unit:'nm'},


Line 410: Line 410:
{text: 'Touchdown Offset', default_value:'0.00', focus:0, callback:nil, tooltip:'touchdown offset', validate: 'TouchdownOffset', convert:nil, unit:'m'},
{text: 'Touchdown Offset', default_value:'0.00', focus:0, callback:nil, tooltip:'touchdown offset', validate: 'TouchdownOffset', convert:nil, unit:'m'},
{text: 'Transmission interval', default_value:'5.00', focus:0, callback:nil, tooltip:'Controller/timer resolution', validate: 'TransmissionInterval', convert:nil, unit:'secs'},
{text: 'Transmission interval', default_value:'5.00', focus:0, callback:nil, tooltip:'Controller/timer resolution', validate: 'TransmissionInterval', convert:nil, unit:'secs'},
{text: 'Transmission property', default_value:'/sim/messages/approach', focus:0, callback:nil, tooltip:'property to use for transmissions. For example: /sim/multiplay/chat', validate: 'TransmissionProperty', convert:nil, unit:'property'},
{text: 'Transmission property', default_value:'/sim/messages/approach', focus:0, callback:nil, tooltip:'property to use for transmissions. For example: /sim/multiplay/chat or /sim/sound/voices/approach', validate: 'TransmissionProperty', convert:nil, unit:'property'},
]; # input fields
]; # input fields


Line 416: Line 416:
  # TODO: pass input hash  
  # TODO: pass input hash  
  var widget = setupLabeledInput(root, myLayout, input);
  var widget = setupLabeledInput(root, myLayout, input);
input.widget = widget;
}
}


var validateFields = func() {
var validateFields = func() {
foreach(var f; inputs) {
foreach(var f; inputs) {
 
var widget = nil; # TODO
  var result = validationHelpers[f.validate] ( f.widget.text() );
  var result = validationHelpers[f.validate] ("/position");
  if (result == 1) {
  if (result == 1) {


Line 452: Line 452:
setupWidgetTooltip(widget:button, tooltip: "toggle GCA on/off");
setupWidgetTooltip(widget:button, tooltip: "toggle GCA on/off");


myLayout.addItem(button);</syntaxhighlight>
myLayout.addItem(button);
</syntaxhighlight>


== Visualizing the Approach ==
== Visualizing the Approach ==

Navigation menu