Index: src/mlx/gui/flight.py
===================================================================
--- src/mlx/gui/flight.py	(revision 512)
+++ src/mlx/gui/flight.py	(revision 513)
@@ -880,8 +880,10 @@
                                           completedHelp = xstr("connect_chelp"))
 
+        self._selectSimulator = os.name=="nt" or "FORCE_SELECT_SIM" in os.environ
+
         alignment = gtk.Alignment(xalign = 0.5, yalign = 0.5,
                                   xscale = 0.0, yscale = 0.0)
 
-        table = gtk.Table(5, 2)
+        table = gtk.Table(7 if self._selectSimulator else 5, 2)
         table.set_row_spacings(4)
         table.set_col_spacings(16)
@@ -949,4 +951,37 @@
         labelAlignment.add(self._departureGate)
         table.attach(labelAlignment, 1, 2, 4, 5)
+
+        if self._selectSimulator:
+            labelAlignment = gtk.Alignment(xalign=1.0, xscale=0.0, yalign=0.5)
+            label = gtk.Label(xstr("connect_sim"))
+            labelAlignment.add(label)
+            table.attach(labelAlignment, 0, 1, 5, 7)
+
+            selectAlignment = gtk.Alignment(xalign=0.0, xscale=0.0, yalign=0.5)
+
+            selectBox = gtk.HBox()
+            if pygobject:
+                self._selectMSFS = \
+                  gtk.RadioButton.new_with_mnemonic_from_widget(None,
+                                                                xstr("connect_sim_msfs"))
+            else:
+                self._selectMSFS = gtk.RadioButton(None,
+                                                   xstr("connect_sim_msfs"))
+
+            selectBox.pack_start(self._selectMSFS, False, False, 0);
+
+            if pygobject:
+                self._selectXPlane = \
+                  gtk.RadioButton.new_with_mnemonic_from_widget(self._selectMSFS,
+                                                                xstr("connect_sim_xplane"))
+            else:
+                self._selectXPlane = gtk.RadioButton(self._selectMSFS,
+                                                     xstr("connect_sim_xplane"))
+
+            selectBox.pack_start(self._selectXPlane, False, False, 8);
+
+            selectAlignment.add(selectBox)
+            table.attach(selectAlignment, 1, 2, 5, 7)
+
 
         self.addCancelFlightButton()
@@ -982,4 +1017,9 @@
         self._departureGate.set_markup(gate)
 
+        if self._selectSimulator:
+            config = self._wizard.gui.config
+            self._selectMSFS.set_active(config.defaultMSFS)
+            self._selectXPlane.set_active(not config.defaultMSFS)
+
     def finalize(self):
         """Finalize the page."""
@@ -996,5 +1036,16 @@
     def _connectClicked(self, button):
         """Called when the Connect button is pressed."""
-        self._wizard._connectSimulator()
+        if self._selectSimulator:
+            simulatorType = const.SIM_MSFS9 if self._selectMSFS.get_active() \
+                                            else const.SIM_XPLANE10
+        else:
+            simulatorType = const.SIM_MSFS9 if os.name=="nt" \
+              else const.SIM_XPLANE10
+
+        config = self._wizard.gui.config
+        config.defaultMSFS = simulatorType == const.SIM_MSFS9
+        config.save()
+
+        self._wizard._connectSimulator(simulatorType)
 
     def _forwardClicked(self, button):
@@ -3573,7 +3624,8 @@
         self.gui.rtoToggled(indicated)
 
-    def _connectSimulator(self):
+    def _connectSimulator(self, simulatorType):
         """Connect to the simulator."""
-        self.gui.connectSimulator(self._bookedFlight.aircraftType)
+        self.gui.connectSimulator(self._bookedFlight.aircraftType,
+                                  simulatorType)
 
     def _arrivalMETARCallback(self, returned, result):
Index: src/mlx/gui/gui.py
===================================================================
--- src/mlx/gui/gui.py	(revision 491)
+++ src/mlx/gui/gui.py	(revision 501)
@@ -69,4 +69,5 @@
         self._flight = None
         self._simulator = None
+        self._fsType = None
         self._monitoring = False
 
@@ -208,4 +209,9 @@
 
     @property
+    def fsType(self):
+        """Get the flight simulator type."""
+        return self._fsType
+
+    @property
     def entranceExam(self):
         """Get whether an entrance exam is about to be taken."""
@@ -428,4 +434,5 @@
             self._wizard.connected(fsType, descriptor)
         self._reconnecting = False
+        self._fsType = fsType
         self._listenHotkeys()
 
@@ -512,4 +519,6 @@
         """Reset the GUI."""
         self._disconnect()
+
+        self._simulator = None
 
         self._flightInfo.reset()
@@ -887,5 +896,5 @@
             self._stdioStartingLine = False
 
-    def connectSimulator(self, aircraftType):
+    def connectSimulator(self, aircraftType, simulatorType):
         """Connect to the simulator for the first time."""
         self._logger.reset()
@@ -898,5 +907,5 @@
 
         if self._simulator is None:
-            self._simulator = fs.createSimulator(const.SIM_MSFS9, self)
+            self._simulator = fs.createSimulator(simulatorType, self)
             fs.setupMessageSending(self.config, self._simulator)
             self._setupTimeSync()
Index: src/mlx/gui/monitor.py
===================================================================
--- src/mlx/gui/monitor.py	(revision 480)
+++ src/mlx/gui/monitor.py	(revision 496)
@@ -226,4 +226,8 @@
         table.attach(label, 0, 1, 8, 9)
         table.attach(self._qnh, 1, 2, 8, 9)
+
+        (label, self._cog) = self._createLabeledEntry("CoG:", 7)
+        table.attach(label, 2, 3, 8, 9)
+        table.attach(self._cog, 3, 4, 8, 9)
 
         alignment.add(table)
@@ -312,4 +316,5 @@
             self._adf2.set_text("-")
             self._qnh.set_text("-")
+            self._cog.set_text("-")
         else:
             self._timestamp.set_text(time.strftime("%H:%M:%S",
@@ -386,5 +391,5 @@
             self._gearControlDown.set_sensitive(aircraftState.gearControlDown)
             self._gearsDown.set_sensitive(aircraftState.gearsDown)
-            self._spoilersArmed.set_sensitive(aircraftState.spoilersArmed)
+            self._spoilersArmed.set_sensitive(aircraftState.spoilersArmed is True)
             self._spoilersExtension.set_text("%.0f" % (aircraftState.spoilersExtension,))
             self._windSpeed.set_text("%.0f" % (aircraftState.windSpeed,))
@@ -404,4 +409,5 @@
             self._adf1.set_text("-" if aircraftState.adf1 is None else aircraftState.adf1)
             self._adf2.set_text("-" if aircraftState.adf2 is None else aircraftState.adf2)
+            self._cog.set_text("%.2f%%" % (aircraftState.cog*100.0,))
 
 #------------------------------------------------------------------------------
