From 3826c0c7ee9fc9103f98ffc1781f25016abeb2be Mon Sep 17 00:00:00 2001
From: ThorstenB <brehmt@gmail.com>
Date: Fri, 20 May 2011 19:53:02 +0200
Subject: [PATCH 1/5] one31: improve map GUI by using checkboxes instead of
 buttons. checkboxes should be used for checkbox features - and buttons for
 push-button features... simple :) Thanks to "one31..."

---
 gui/dialogs/map.xml | 46 ++++++++++++++++++++++++---------------------
 1 file changed, 25 insertions(+), 21 deletions(-)

diff --git a/gui/dialogs/map.xml b/gui/dialogs/map.xml
index 490f834a7..d5aa0f975 100644
--- a/gui/dialogs/map.xml
+++ b/gui/dialogs/map.xml
@@ -57,8 +57,12 @@ command interface /autopilot/route-manager/input:
             <!-- sidebar -->
             <group>
                 <layout>vbox</layout>
-                <button>
-                    <legend>Fixes</legend>
+                <text>
+                    <label>Display:</label>
+                </text>
+
+                <checkbox>
+                    <label>Fixes</label>
                     <pref-width>100</pref-width>
                     <property>/gui/map/draw-fixes</property>
                     <live>true</live>
@@ -68,10 +72,10 @@ command interface /autopilot/route-manager/input:
                     <binding>
                       <command>property-toggle</command>
                     </binding>
-                </button>
+                </checkbox>
 
-                <button>
-                    <legend>Navaids</legend>
+                <checkbox>
+                    <label>Navaids</label>
                     <pref-width>100</pref-width>
                     <property>/gui/map/draw-navaids</property>
                     <live>true</live>
@@ -81,7 +85,7 @@ command interface /autopilot/route-manager/input:
                     <binding>
                       <command>property-toggle</command>
                     </binding>
-                </button>
+                </checkbox>
 <!--
                 <button>
                     <legend>Airways</legend>
@@ -89,8 +93,8 @@ command interface /autopilot/route-manager/input:
                 </button>
 -->
 
-                <button>
-                    <legend>Traffic</legend>
+                <checkbox>
+                    <label>Traffic</label>
                     <pref-width>100</pref-width>
                     <property>/gui/map/draw-traffic</property>
                     <live>true</live>
@@ -100,7 +104,7 @@ command interface /autopilot/route-manager/input:
                     <binding>
                       <command>property-toggle</command>
                     </binding>
-                </button>
+                </checkbox>
 
 <!--
                 <button>
@@ -109,8 +113,8 @@ command interface /autopilot/route-manager/input:
                 </button>
 -->
 
-                <button>
-                    <legend>Data</legend>
+                <checkbox>
+                    <label>Data</label>
                     <pref-width>100</pref-width>
                     <property>/gui/map/draw-data</property>
                     <live>true</live>
@@ -120,12 +124,12 @@ command interface /autopilot/route-manager/input:
                     <binding>
                       <command>property-toggle</command>
                     </binding>
-                </button>
+                </checkbox>
 
                 <empty><stretch>true</stretch></empty>
 
-                <button>
-                    <legend>Center on Acft</legend>
+                <checkbox>
+                    <label>Center on Acft</label>
                     <pref-width>100</pref-width>
                     <property>/gui/map/centre-on-aircraft</property>
                     <live>true</live>
@@ -135,10 +139,10 @@ command interface /autopilot/route-manager/input:
                     <binding>
                       <command>property-toggle</command>
                     </binding>
-                </button>
+                </checkbox>
 
-                <button>
-                    <legend>Acft Hdg Up</legend>
+                <checkbox>
+                    <label>Aircraft Hdg Up</label>
                     <pref-width>100</pref-width>
                     <property>/gui/map/aircraft-heading-up</property>
                     <live>true</live>
@@ -148,10 +152,10 @@ command interface /autopilot/route-manager/input:
                     <binding>
                       <command>property-toggle</command>
                     </binding>
-                </button>
+                </checkbox>
 
-                <button>
-                    <legend>Magnetic Hdgs</legend>
+                <checkbox>
+                    <label>Magnetic Hdgs</label>
                     <pref-width>100</pref-width>
                     <property>/gui/map/magnetic-headings</property>
                     <live>true</live>
@@ -161,7 +165,7 @@ command interface /autopilot/route-manager/input:
                     <binding>
                       <command>property-toggle</command>
                     </binding>
-                </button>
+                </checkbox>
 
                 <empty><stretch>true</stretch></empty>
 

From c8f8069a70af01c3ba65f0277636749123702004 Mon Sep 17 00:00:00 2001
From: ThorstenB <brehmt@gmail.com>
Date: Sat, 21 May 2011 13:29:14 +0200
Subject: [PATCH 2/5] Use new fgcommand for "pause" to keep master and clock
 freeze consistent when (un)pausing.

---
 keyboard.xml | 15 +--------------
 1 file changed, 1 insertion(+), 14 deletions(-)

diff --git a/keyboard.xml b/keyboard.xml
index 3aea16bd2..cc39cc473 100644
--- a/keyboard.xml
+++ b/keyboard.xml
@@ -951,20 +951,7 @@ top down before the key bindings are parsed.
   <name>p</name>
   <desc>Toggle the pause state of the sim</desc>
   <binding>
-   <command>property-toggle</command>
-   <property>/sim/freeze/master</property>
-  </binding>
-  <binding>
-   <command>property-toggle</command>
-   <property>/sim/freeze/clock</property>
-  </binding>
-  <binding>
-   <condition>
-     <property>/sim/freeze/replay-state</property>
-   </condition>
-   <command>property-assign</command>
-   <property>/sim/replay/disable</property>
-   <value type="bool">true</value>
+   <command>pause</command>
   </binding>
  </key>
 

From 876280bd262ed4be204056e66b050f3cd9b074ae Mon Sep 17 00:00:00 2001
From: Gijs de Rooy <gijsrooy@hotmail.com>
Date: Sun, 22 May 2011 17:33:38 +0200
Subject: [PATCH 3/5] ThrustMaster T.Flight Stick X definition by Joffrey Paris

---
 .../ThrustMaster/T-Flight-Stick-X.xml         | 168 ++++++++++++++++++
 1 file changed, 168 insertions(+)
 create mode 100644 Input/Joysticks/ThrustMaster/T-Flight-Stick-X.xml

diff --git a/Input/Joysticks/ThrustMaster/T-Flight-Stick-X.xml b/Input/Joysticks/ThrustMaster/T-Flight-Stick-X.xml
new file mode 100644
index 000000000..018d5f3f2
--- /dev/null
+++ b/Input/Joysticks/ThrustMaster/T-Flight-Stick-X.xml
@@ -0,0 +1,168 @@
+<?xml version="1.0"?>
+
+<!--
+Bindings for THRUSTMASTER T.Flight Stick X based on presets from the constructor.
+by Joffrey Paris
+-->
+
+<PropertyList>
+ <name type="string">T.Flight Stick X</name>
+
+ <axis n="0">
+  <desc>Aileron</desc>
+  <binding>
+   <command>property-scale</command>
+   <property>/controls/flight/aileron</property>
+   <squared type="bool">true</squared>
+  </binding>
+ </axis>
+
+ <axis n="1">
+  <desc>Elevator</desc>
+  <binding>
+   <command>property-scale</command>
+   <property>/controls/flight/elevator</property>
+   <factor type="double">-1.0</factor>
+   <squared type="bool">true</squared>
+  </binding>
+ </axis>
+
+ <axis n="2">
+  <desc>Increase/Reduce Throttle</desc>
+  <binding>
+   <command>nasal</command>
+   <script>controls.throttleAxis()</script>
+  </binding>
+ </axis>
+
+ <axis n="3">
+  <desc>Rudder Left/Right</desc>
+  <binding>
+   <command>property-scale</command>
+   <property>/controls/flight/rudder</property>
+   <factor type="double">1.0</factor>
+  </binding>
+ </axis>
+
+ <axis n="6">
+  <desc>View Direction</desc>
+  <low>
+   <repeatable>true</repeatable>
+   <binding>
+    <command>property-adjust</command>
+    <property>/sim/current-view/goal-heading-offset-deg</property>
+    <step type="double">2.0</step>
+   </binding>
+  </low>
+  <high>
+   <repeatable>true</repeatable>
+   <binding>
+    <command>property-adjust</command>
+    <property>/sim/current-view/goal-heading-offset-deg</property>
+    <step type="double">-2.0</step>
+   </binding>
+  </high>
+ </axis>
+
+ <axis n="7">
+  <desc>View Elevation</desc>
+  <low>
+   <repeatable>true</repeatable>
+   <binding>
+    <command>property-adjust</command>
+    <property>/sim/current-view/goal-pitch-offset-deg</property>
+    <step type="double">-2.0</step>
+   </binding>
+  </low>
+  <high>
+   <repeatable>true</repeatable>
+   <binding>
+    <command>property-adjust</command>
+    <property>/sim/current-view/goal-pitch-offset-deg</property>
+    <step type="double">2.0</step>
+   </binding>
+  </high>
+ </axis>
+
+ <button n="0">
+  <desc>Brakes</desc>
+  <binding>
+   <command>nasal</command>
+   <script>controls.applyBrakes(1)</script>
+  </binding>
+  <mod-up>
+   <binding>
+    <command>nasal</command>
+    <script>controls.applyBrakes(0)</script>
+   </binding>
+  </mod-up>
+ </button>
+
+ <button n="1">
+  <desc>Change View</desc>
+  <binding>
+   <command>nasal</command>
+   <script>view.stepView(1)</script>
+  </binding>
+ </button>
+
+ <button n="2">
+  <desc>Trim Nose Up</desc>
+  <repeatable type="bool">true</repeatable>
+  <binding>
+   <command>nasal</command>
+   <script>controls.elevatorTrim(1)</script>
+  </binding>
+ </button>
+
+ <button n="3">
+  <desc>Trim Nose Down</desc>
+  <repeatable type="bool">true</repeatable>
+  <binding>
+   <command>nasal</command>
+   <script>controls.elevatorTrim(-1)</script>
+  </binding>
+ </button>
+
+ <button n="4">
+  <desc>Extend Flaps Incrementally</desc>
+  <repeatable>false</repeatable>
+  <binding>
+   <command>nasal</command>
+   <script>controls.flapsDown(1)</script>
+  </binding>
+  <mod-up>
+   <binding>
+    <command>nasal</command>
+    <script>controls.flapsDown(0)</script>
+   </binding>
+  </mod-up>
+ </button>
+   
+ <button n="5">
+  <desc>Retract Flaps Incrementally</desc>
+  <repeatable>false</repeatable>
+  <binding>
+   <command>nasal</command>
+   <script>controls.flapsDown(-1)</script>
+  </binding>
+  <mod-up>
+   <binding>
+    <command>nasal</command>
+    <script>controls.flapsDown(0)</script>
+   </binding>
+  </mod-up>
+ </button>
+
+ <button n="7">
+  <desc>Landing gear Up/Down</desc>
+  <repeatable>false</repeatable>
+  <binding>
+   <command>nasal</command>
+   <script>controls.gearToggle()</script>
+  </binding>
+ </button>
+
+</PropertyList>
+
+<!-- end of T.Flight Stick X.xml -->
\ No newline at end of file

From d4fb116cd22821de9669fd8b48c49b1a526dd6b5 Mon Sep 17 00:00:00 2001
From: James Turner <zakalawe@mac.com>
Date: Wed, 25 May 2011 21:27:07 +0100
Subject: [PATCH 4/5] Nasal IO changes to work with new loadxml features

---
 Nasal/IOrules |  1 +
 Nasal/io.nas  | 35 +++++++++++++++++++++++++++++++++++
 2 files changed, 36 insertions(+)

diff --git a/Nasal/IOrules b/Nasal/IOrules
index 138513059..07117c0f1 100644
--- a/Nasal/IOrules
+++ b/Nasal/IOrules
@@ -28,6 +28,7 @@
 READ ALLOW $FG_ROOT/*
 READ ALLOW $FG_HOME/*
 READ ALLOW $FG_AIRCRAFT/*
+READ ALLOW $FG_SCENERY/*
 
 WRITE ALLOW /tmp/*.xml
 WRITE ALLOW $FG_HOME/*.sav
diff --git a/Nasal/io.nas b/Nasal/io.nas
index 41d5d7fc9..fbf1e358f 100644
--- a/Nasal/io.nas
+++ b/Nasal/io.nas
@@ -81,6 +81,33 @@ var read_properties = func(path, target = nil) {
     return fgcommand("loadxml", args) ? ret : nil;
 }
 
+# Load XML file in FlightGear's native <PropertyList> format.
+# file will be located in the airport-scenery directories according to
+# ICAO and filename, i,e in Airports/I/C/A/ICAO.filename.xml
+# If the second, optional target parameter is set, then the properties
+# are loaded to this node in the global property tree. Otherwise they
+# are returned as a separate props.Node tree. Returns the data as a
+# props.Node on success or nil on error.
+#
+# Usage:   io.read_airport_properties(<icao>, <filename> [, <props.Node or property-path>]);
+#
+# Examples:
+#
+#     var data = io.read_properties("KSFO", "rwyuse");
+#
+var read_airport_properties = func(icao, fname, target = nil) {
+    var args = props.Node.new({ filename: fname, icao:icao });
+    if (target == nil) {
+        var ret = args.getNode("data", 1);
+    } elsif (isa(target, props.Node)) {
+        args.getNode("targetnode", 1).setValue(target.getPath());
+        var ret = target;
+    } else {
+        args.getNode("targetnode", 1).setValue(target);
+        var ret = props.globals.getNode(target, 1);
+    }
+    return fgcommand("loadxml", args) ? ret : nil;
+}
 
 # Write XML file in FlightGear's native <PropertyList> format.
 # Returns the filename on success or nil on error. If the source
@@ -245,6 +272,14 @@ _setlistener("/sim/signals/nasal-dir-initialized", func {
                     pattern = c.getValue() ~ "/" ~ p;
                     append(rules, [pattern, allow]);
                     printlog("info", "IORules: appending ", pattern);
+                }
+            } elsif (substr(pattern, 0, 12) == "$FG_SCENERY/") {
+                var p = substr(pattern, 12);
+                var sim = props.globals.getNode("/sim");
+                foreach (var c; sim.getChildren("fg-scenery")) {
+                    pattern = c.getValue() ~ "/" ~ p;
+                    append(rules, [pattern, allow]);
+                    printlog("info", "IORules: appending ", pattern);
                 }        
             } else {
                 if (substr(pattern, 0, 9) == "$FG_ROOT/")

From 0d0d9762ce3ca4415b8fb701e49b0e9432e8dc2c Mon Sep 17 00:00:00 2001
From: Stuart Buchanan <stuart_d_buchanan@yahoo.co.uk>
Date: Wed, 25 May 2011 21:47:44 +0100
Subject: [PATCH 5/5] Add rating for c172p.

---
 Aircraft/c172p/c172p-set.xml | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/Aircraft/c172p/c172p-set.xml b/Aircraft/c172p/c172p-set.xml
index d22b7fb9a..074307cd8 100644
--- a/Aircraft/c172p/c172p-set.xml
+++ b/Aircraft/c172p/c172p-set.xml
@@ -13,7 +13,14 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net
 
   <description>Cessna 172P Skyhawk (1981 model)</description>
   <author>David Megginson</author>
-  <status>production</status>
+  <status>early production</status>
+  <rating>
+    <FDM type="int">3</FDM>
+    <systems type="int">4</systems>
+    <model type="int">5</model>
+    <cockpit type="int">4</cockpit>
+  </rating>
+
 
   <flight-model archive="y">jsb</flight-model>
   <aero archive="y">c172p</aero>