<?xml version="1.0"?>

<PropertyList>

  <name>system-failures</name>
  <modal>false</modal>
  <layout>vbox</layout>

  <nasal>
   <open>
    # Code to populate the engine entries.
    var groups = cmdarg().getChildren("group");
    var group = groups[3].getChildren("group")[2];
    var engines = props.globals.getNode("/engines");
    var row = 4;
    var engine = 0;
    var i = 0;
    
    group.removeChildren("checkbox");
    group.removeChildren("input");
    group.removeChildren("text");

    # Copy in the labels.
    var target = group.getNode("text[" ~ i ~ "]", 1);
    props.copy(group.getNode("engine-label"), target);
    i += 1;

    target = group.getNode("text[" ~ i ~ "]", 1);
    props.copy(group.getNode("mtbf-label"), target);
    i += 1;
    
    foreach (var e; engines.getChildren("engine")) {
        if ((e.getChild("starter") != nil) or (e.getChild("running") != nil)) {
            row = row + 1;
            
            # Set up the label
            target = group.getNode("text[" ~ i ~ "]", 1);
            props.copy(group.getNode("text-template"), target);
            target.getNode("row").setValue(row);
            
            if (size(engines.getChildren("engine")) == 1) {
                target.getNode("label").setValue("Engine");
            } else {
                # Engines are indexed from 1 in the GUI.
                target.getNode("label").setValue("Engine " ~ (engine + 1));
            }
            
            # Now the checkbox
            target = group.getNode("checkbox[" ~ i ~ "]", 1);
            props.copy(group.getChild("checkbox-template"), target);        
            target.getNode("row").setValue(row);

            var failure = "/sim/failure-manager/engines/engine[" ~ engine ~ "]/serviceable";
            target.getNode("property").setValue(failure);
            
            # Finally the MTBF
            target = group.getNode("input[" ~ i ~ "]", 1);
            props.copy(group.getChild("input-template"), target);
            target.getNode("row").setValue(row);
            i += 1;
            
            var mtbf = "/sim/failure-manager/engines/engine[" ~ engine ~ "]/mtbf";
            target.getNode("property").setValue(mtbf);
            engine += 1;
        }
    }
    
    
   </open>
  </nasal>

  <group>
    <layout>hbox</layout>
    <text>
      <label>System Failures</label>
    </text>
  </group>

  <group>
    <layout>hbox</layout>
    <hrule/>
  </group>

  <group>
    <layout>hbox</layout>
    <halign>left</halign>
    <text>
      <label>Uncheck a system to fail it, or set the Mean Time/Cycles Between Failures.</label>
    </text>
  </group>

  <group>
    <layout>hbox</layout>
    <halign>left</halign>

    <group>
      <layout>table</layout>
      <halign>center</halign>
      <valign>top</valign>

      <text>
        <row>0</row>
        <col>0</col>
        <label>System</label>
      </text>
      
      <text>
        <row>0</row>
        <col>2</col>
        <label>MTBF (sec)</label>
      </text>

      <text>
        <row>1</row>
        <col>0</col>
        <halign>right</halign>
        <label>Vacuum System</label>
      </text>

      <checkbox>
        <row>1</row>
        <col>1</col>
        <property>/systems/vacuum/serviceable</property>
      </checkbox>

      <input>
        <row>1</row>
        <col>2</col>
        <property>/sim/failure-manager/systems/vacuum/mtbf</property>
      </input>

      <text>
        <row>2</row>
        <col>0</col>
        <halign>right</halign>
        <label>Static System</label>
      </text>

      <checkbox>
        <row>2</row>
        <col>1</col>
        <property>/systems/static/serviceable</property>
      </checkbox>

      <input>
        <row>2</row>
        <col>2</col>
        <property>/sim/failure-manager/systems/static/mtbf</property>
      </input>

      <text>
        <row>3</row>
        <col>0</col>
        <halign>right</halign>
        <label>Pitot System</label>
      </text>

      <checkbox>
        <row>3</row>
        <col>1</col>
        <property>/systems/pitot/serviceable</property>
      </checkbox>

      <input>
        <row>3</row>
        <col>2</col>
        <property>/sim/failure-manager/systems/pitot/mtbf</property>
      </input>

      <text>
        <row>4</row>
        <col>0</col>
        <halign>right</halign>
        <label>Electrical System</label>
      </text>

      <checkbox>
        <row>4</row>
        <col>1</col>
        <property>/systems/electrical/serviceable</property>
      </checkbox>

      <input>
        <row>4</row>
        <col>2</col>
        <property>/sim/failure-manager/systems/electrical/mtbf</property>
      </input>

      <text>
        <row>5</row>
        <col>0</col>
        <halign>right</halign>
        <label>Aileron</label>
      </text>
      
      <checkbox>
        <row>5</row>
        <col>1</col>
        <property>/sim/failure-manager/controls/flight/aileron/serviceable</property>
      </checkbox>
      
      <input>
        <row>5</row>
        <col>2</col>
        <property>/sim/failure-manager/controls/flight/aileron/mtbf</property>
      </input>
      
      <text>
        <row>6</row>
        <col>0</col>
        <halign>right</halign>
        <label>Elevator</label>
      </text>
      
      <checkbox>
        <row>6</row>
        <col>1</col>
        <property>/sim/failure-manager/controls/flight/elevator/serviceable</property>
      </checkbox>
      
      <input>
        <row>6</row>
        <col>2</col>
        <property>/sim/failure-manager/controls/flight/elevator/mtbf</property>
      </input>
      
      <text>
        <row>7</row>
        <col>0</col>
        <halign>right</halign>
        <label>Rudder</label>
      </text>
      
      <checkbox>
        <row>7</row>
        <col>1</col>
        <property>/sim/failure-manager/controls/flight/rudder/serviceable</property>
      </checkbox>
      
      <input>
        <row>7</row>
        <col>2</col>
        <property>/sim/failure-manager/controls/flight/rudder/mtbf</property>
      </input>
      

    </group>

    <vrule/>

    <group>
      <layout>table</layout>
      <halign>center</halign>
      <valign>top</valign>
    
      <text>
        <row>0</row>
        <col>0</col>
        <label>System</label>
      </text>

      <text>
        <row>0</row>
        <col>2</col>
        <label>MCBF</label>
      </text>
      
      <text>
        <row>1</row>
        <col>0</col>
        <halign>right</halign>
        <label>Landing Gear</label>
      </text>
      
      <checkbox>
        <row>1</row>
        <col>1</col>
        <property>/gear/serviceable</property>
      </checkbox>
      
      <input>
        <row>1</row>
        <col>2</col>
        <property>/sim/failure-manager/controls/gear/gear-down/mcbf</property>
      </input>
  
      <text>
        <row>2</row>
        <col>0</col>
        <halign>right</halign>
        <label>Flaps</label>
      </text>
      
      <checkbox>
        <row>2</row>
        <col>1</col>
        <property>/sim/failure-manager/controls/flight/flaps/serviceable</property>
      </checkbox>
      
      <input>
        <row>2</row>
        <col>2</col>
        <property>/sim/failure-manager/controls/flight/flaps/mcbf</property>
      </input>
      
      <text>
        <row>3</row>
        <col>0</col>
        <halign>right</halign>
        <label>Speedbrake</label>
      </text>
      
      <checkbox>
        <row>3</row>
        <col>1</col>
        <property>/sim/failure-manager/controls/flight/speedbrake/serviceable</property>
      </checkbox>
      
      <input>
        <row>3</row>
        <col>2</col>
        <property>/sim/failure-manager/controls/flight/speedbrake/mcbf</property>
      </input>
    </group>

    <vrule/>
    
    <group>
      <layout>table</layout>
      <halign>center</halign>
      <valign>top</valign>
      
      <engine-label>
        <row>0</row>
        <col>0</col>
        <label>Engine</label>
       </engine-label>
      
      <mtbf-label>
        <row>0</row>
        <col>2</col>
        <label>MTBF</label>
      </mtbf-label>
      
      <text-template>
        <row><!-- template value--></row>
        <col>0</col>
        <halign>right</halign>
        <label><!-- template value--></label>
      </text-template>
      
      <checkbox-template>
        <row><!-- template value--></row>
        <col>1</col>
        <property><!-- template value--></property>
      </checkbox-template>
      
      <input-template>
        <row><!-- template value--></row>
        <col>2</col>
        <property><!-- template value--></property>
      </input-template>
      
    </group>
  </group>

  <group>
    <layout>hbox</layout>

    <button>
      <legend>OK</legend>
      <default>true</default>
      <equal>true</equal>
      <binding>
        <command>dialog-apply</command>
      </binding>
      <binding>
        <command>dialog-close</command>
      </binding>
    </button>

    <button>
      <legend>Apply</legend>
      <equal>true</equal>
      <binding>
        <command>dialog-apply</command>
      </binding>
    </button>

    <button>
      <legend>Reset</legend>
      <equal>true</equal>
      <binding>
        <command>dialog-update</command>
      </binding>
    </button>

    <button>
      <legend>Cancel</legend>
      <equal>true</equal>
      <key>Esc</key>
      <binding>
        <command>dialog-close</command>
      </binding>
    </button>

  </group>

</PropertyList>