diff --git a/Aircraft/c172p/c172-checklists.xml b/Aircraft/c172p/c172-checklists.xml
index 646299de8..bba3382fa 100644
--- a/Aircraft/c172p/c172-checklists.xml
+++ b/Aircraft/c172p/c172-checklists.xml
@@ -6,7 +6,7 @@
COMPLETE
-
- Passenger
+ Passenger Briefing
COMPLETE
-
@@ -16,6 +16,12 @@
-
Brakes
TEST and SET (shift-B)
+
+
+ /controls/gear/brake-parking
+ 1
+
+
-
Avionics Power Switch
@@ -32,6 +38,18 @@
-
Fuel Selector Valve
BOTH
+
+
+
+ /consumables/fuel/tank/selected
+ 1
+
+
+ /consumables/fuel/tank[1]/selected
+ 1
+
+
+
@@ -45,14 +63,38 @@
-
Carburetor Heat
COLD
+
+
+ /controls/anti-ice/engine[0]/carb-heat
+ 0
+
+
-
Throttle
OPEN 1/8 INCH
+
+
+
+ /controls/engines/engine[0]/throttle
+ 0.1
+
+
+ /controls/engines/engine[0]/throttle
+ 0.4
+
+
+
-
Mixture
RICH
+
+
+ /controls/engines/engine[0]/mixture
+ 0.9
+
+
-
Propellor Area
@@ -66,6 +108,12 @@
Magnetos
BOTH
(press } three times)
+
+
+ /controls/engines/engine[0]/magnetos
+ 3
+
+
-
Ignition Switch
@@ -81,12 +129,36 @@
ON
-
- Navigation Lights and Flashing Beacon
+ Navigation Lights, Flashing Beacon
ON as required
+
+
+
+ /controls/lighting/nav-lights
+ 1
+
+
+ /controls/lighting/beacon
+ 1
+
+
+
-
Radios
ON
+
+
+
+ /instrumentation/comm[0]/volume
+ 0.0
+
+
+ /instrumentation/comm[1]/volume
+ 0.0
+
+
+
@@ -95,6 +167,12 @@
-
Parking Brake
SET (shift-B)
+
+
+ /controls/gear/brake-parking
+ 1
+
+
-
Seats, Seat Belts, Shoulder Harnesses
@@ -119,18 +197,60 @@
-
Mixture
RICH
+
+
+ /controls/engines/engine[0]/mixture
+ 0.9
+
+
-
Fuel Selector Valve
RECHECK BOTH
+
+
+
+ /consumables/fuel/tank/selected
+ 1
+
+
+ /consumables/fuel/tank[1]/selected
+ 1
+
+
+
-
Elevator Trim
SET for takeoff
+
+
+
+ /controls/flight/elevator-trim
+ -0.25
+
+
+ /controls/flight/elevator-trim
+ 0.0
+
+
+
-
Throttle
1700 RPM
+
+
+
+ /engines/engine/rpm
+ 1600
+
+
+ /engines/engine/rpm
+ 1700
+
+
+
-
Magnetos
@@ -160,6 +280,12 @@
-
Strobe Lights
AS DESIRED
+
+
+ /controls/lighting/strobe
+ 1
+
+
-
Radios and Avionics
@@ -172,10 +298,22 @@
-
Wing Flaps
SET for takeoff
+
+
+ /controls/flight/flaps
+ 0.5
+
+
-
Brakes
RELEASE
+
+
+ /controls/gear/brake-parking
+ 1
+
+
@@ -184,19 +322,54 @@
-
Wing Flaps
0 - 10 degrees
+
+
+ /controls/flight/flaps
+ 0.5
+
+
-
Carburetor Heat
COLD
+
+
+ /controls/anti-ice/engine[0]/carb-heat
+ 0
+
+
+
+ -
+ Mixture
+ RICH
+ (above 3000ft, LEAN to obtain maximum RPM)
+
+
+ /controls/engines/engine[0]/mixture
+ 0.9
+
+
-
Throttle
FULL OPEN
+
+
+ /controls/engines/engine/throttle
+ 0.95
+
+
-
Elevator Control
LIFT NOSE WHEEL
(at 55 KIAS)
+
+
+ /instrumentation/airspeed-indicator/indicated-speed-kt
+ 55.0
+
+
@@ -205,27 +378,81 @@
-
Wing Flaps
10 degrees
+
+
+
+ /controls/flight/flaps
+ 0.2
+
+
+ /controls/flight/flaps
+ 0.5
+
+
+
-
Carburetor Heat
COLD
+
+
+ /controls/anti-ice/engine[0]/carb-heat
+ 0
+
+
-
Brakes
APPLY
+
+
+
+ /controls/gear/brake-left
+ 0.9
+
+
+ /controls/gear/brake-right
+ 0.9
+
+
+
-
Throttle
FULL OPEN
+
+
+ /controls/engines/engine/throttle
+ 0.95
+
+
-
Mixture
RICH
(above 3000ft, LEAN to obtain maximum RPM)
+
+
+ /controls/engines/engine[0]/mixture
+ 0.9
+
+
-
Brakes
RELEASE
+
+
+
+ /controls/gear/brake-left
+ 0.1
+
+
+ /controls/gear/brake-right
+ 0.1
+
+
+
-
Elevator Control
@@ -242,15 +469,39 @@
-
Airspeed
70-85 KIAS
+
+
+
+ /instrumentation/airspeed-indicator/indicated-speed-kt
+ 70.0
+
+
+ /instrumentation/airspeed-indicator/indicated-speed-kt
+ 85.0
+
+
+
-
Throttle
FULL OPEN
+
+
+ /controls/engines/engine/throttle
+ 0.95
+
+
-
Mixture
RICH
(above 3000ft, LEAN to obtain maximum RPM)
+
+
+ /controls/engines/engine[0]/mixture
+ 0.9
+
+
@@ -260,6 +511,18 @@
Power
2100-2700 RPM
(no more than 75% recommended)
+
+
+
+ /engines/engine/rpm
+ 2100
+
+
+ /engines/engine/rpm
+ 2700
+
+
+
-
Elevator Trim
@@ -276,6 +539,18 @@
-
Fuel Selector Valve
BOTH
+
+
+
+ /consumables/fuel/tank/selected
+ 1
+
+
+ /consumables/fuel/tank[1]/selected
+ 1
+
+
+
-
Power
@@ -290,6 +565,12 @@
Carburetor Heat
FULL HEAT AS REQUIRED
(to prevent carburetor icing)
+
+
+ /controls/anti-ice/engine[0]/carb-heat
+ 1
+
+
@@ -302,15 +583,39 @@
-
Fuel Selector Valve
BOTH
+
+
+
+ /consumables/fuel/tank/selected
+ 1
+
+
+ /consumables/fuel/tank[1]/selected
+ 1
+
+
+
-
Mixture
RICH
+
+
+ /controls/engines/engine[0]/mixture
+ 0.9
+
+
-
Carburetor Heat
FULL HEAT
(apply full heat before reducing power)
+
+
+ /controls/anti-ice/engine[0]/carb-heat
+ 1
+
+
-
Autopilot
@@ -323,16 +628,52 @@
-
Airspeed
65-75 KIAS (flaps UP)
+
+
+
+ /instrumentation/airspeed-indicator/indicated-speed-kt
+ 65.0
+
+
+ /instrumentation/airspeed-indicator/indicated-speed-kt
+ 75.0
+
+
+
-
Wing Flaps
AS DESIRED
- (0 - 10 degrees below 110KIAS
+ 0 - 10 degrees below 110KIAS
10 - 30 degrees below 85KIAS
+
+
+
+ /controls/flight/flaps
+ 0.2
+
+
+ /controls/flight/flaps
+ 0.5
+
+
+
-
Airspeed
60-70 KIAS (flaps DOWN)
+
+
+
+ /instrumentation/airspeed-indicator/indicated-speed-kt
+ 60.0
+
+
+ /instrumentation/airspeed-indicator/indicated-speed-kt
+ 70.0
+
+
+
-
Touchdown
@@ -353,18 +694,54 @@
-
Airspeed
65-75 KIAS (flaps UP)
+
+
+
+ /instrumentation/airspeed-indicator/indicated-speed-kt
+ 65.0
+
+
+ /instrumentation/airspeed-indicator/indicated-speed-kt
+ 75.0
+
+
+
-
Wing Flaps
FULL DOWN (30 degrees)
+
+
+ /controls/flight/flaps
+ 0.9
+
+
-
Airspeed
61 KIAS (until flare)
+
+
+
+ /instrumentation/airspeed-indicator/indicated-speed-kt
+ 59.0
+
+
+ /instrumentation/airspeed-indicator/indicated-speed-kt
+ 63.0
+
+
+
-
Power
REDUCE to idle after clearing obstacle
+
+
+ /controls/engines/engine/throttle
+ 0.05
+
+
-
Touchdown
@@ -373,10 +750,28 @@
-
Braking
APPLY HEAVILY
+
+
+
+ /controls/gear/brake-left
+ 0.9
+
+
+ /controls/gear/brake-right
+ 0.9
+
+
+
-
Wing Flaps
RETRACT
+
+
+ /controls/flight/flaps
+ 0.2
+
+
@@ -385,23 +780,67 @@
-
Throttle
FULL OPEN
+
+
+ /controls/engines/engine/throttle
+ 0.95
+
+
-
Carburetor Heat
COLD
+
+
+ /controls/anti-ice/engine[0]/carb-heat
+ 0
+
+
-
Wing Flaps
20 degrees (immediately)
+
+
+
+ /controls/flight/flaps
+ 0.6
+
+
+ /controls/flight/flaps
+ 0.7
+
+
+
-
Climb Speed
55 KIAS
+
+
+
+ /instrumentation/airspeed-indicator/indicated-speed-kt
+ 53.0
+
+
+ /instrumentation/airspeed-indicator/indicated-speed-kt
+ 58.0
+
+
+
-
Wing Flaps
10 degrees (until obstacles are cleared)
RETRACT (after reaching safe altitude and 60 KIAS)
+
+
+
+ /controls/flight/flaps
+ 0.4
+
+
+
@@ -410,10 +849,24 @@
-
Carburetor Heat
COLD
+
+
+ /controls/anti-ice/engine[0]/carb-heat
+ 0
+
+
-
Wing Flaps
UP
+
+
+
+ /controls/flight/flaps
+ 0.2
+
+
+
@@ -422,6 +875,12 @@
-
Parking Brake
SET
+
+
+ /controls/gear/brake-parking
+ 1
+
+
-
Avionics, Power, Electrical, Autopilot
@@ -430,10 +889,22 @@
-
Mixture
PULLED FULL OUT
+
+
+ /controls/engines/engine[0]/mixture
+ 0.05
+
+
-
Ignition Switch
OFF
+
+
+ /controls/engines/engine[0]/magnetos
+ 0
+
+
-
Control Lock
diff --git a/Docs/README.checklists b/Docs/README.checklists
new file mode 100644
index 000000000..b3dfba257
--- /dev/null
+++ b/Docs/README.checklists
@@ -0,0 +1,16 @@
+CHECKLISTS
+
+You can create one or more checklist for an aircraft under /sim/checklists.
+
+Each checklist is defined as a property tree under /sim/checklists/checklist[n]
+with the following tags
+
+ - Name of the checklist
+
- - One or more checklist items containing:
+ - name of the checklist item (e.g. Carb Heat), to appear on the left
+ - One or more values for the checklist item, to appear on the right hand side
+ - Option standard FlightGear condition node that evaluates when the
+ checklist item has been completed.
+
+See the c172p for an example of this in action (Aircraft/c172p/c172-checklists.xml).
+
diff --git a/gui/dialogs/checklist.xml b/gui/dialogs/checklist.xml
index 4f39deaba..685ffd70e 100644
--- a/gui/dialogs/checklist.xml
+++ b/gui/dialogs/checklist.xml
@@ -47,8 +47,8 @@
var item = items[i];
var t = table.getChild("text", txtcount, 1);
- txtcount += 1;
-
+ txtcount += 1;
+
var values = item.getChildren("value");
if (size(values) == 0) {
@@ -63,7 +63,7 @@
t.getNode("halign", 1).setValue("left");
t.getNode("row", 1).setValue(row);
t.getNode("col", 1).setValue(0);
- t.getNode("label", 1).setValue(item.getNode("name", 1).getValue());
+ t.getNode("label", 1).setValue(item.getNode("name", 1).getValue());
forindex (var v; values) {
var t = table.getChild("text", txtcount, 1);
@@ -81,9 +81,54 @@
}
t.getNode("label", 1).setValue(values[v].getValue());
+
+ # If there's a complete node, it contains a condition
+ # that can be checked to ensure the checklist item is
+ # complete. We display this item in yellow while the
+ # condition is not met, and green once it is complete.
+
+ var condition = item.getNode("condition");
+
+ if (condition != nil) {
+ var vis = t.getNode("visible", 1);
+ props.copy(condition, vis);
+ var c = t.getNode("color", 1);
+ c.getNode("red", 1).setValue(0.2);
+ c.getNode("green", 1).setValue(1.0);
+ c.getNode("blue", 1).setValue(0.2);
+
+ # Now create an yellow version for when the condition
+ # is not met.
+ t = table.getChild("text", txtcount, 1);
+ txtcount += 1;
+
+ t.getNode("halign", 1).setValue("right");
+ t.getNode("row", 1).setValue(row);
+ if (v > 0) {
+ # The second row of values can overlap with the
+ # first column if required - helps keep the
+ # checklist dialog as compact as possible
+ t.getNode("col", 1).setValue(0);
+ t.getNode("colspan", 1).setValue(2);
+ } else {
+ t.getNode("col", 1).setValue(1);
+ }
+
+ t.getNode("label", 1).setValue(values[v].getValue());
+
+ c = t.getNode("color", 1);
+ c.getNode("red", 1).setValue(1.0);
+ c.getNode("green", 1).setValue(1.0);
+ c.getNode("blue", 1).setValue(0.2);
+
+ vis = t.getNode("visible", 1).getNode("not", 1);
+ props.copy(condition, vis);
+ }
+
row = row + 1;
}
}
+
}
}