Index: locale/en/mlx.po
===================================================================
--- locale/en/mlx.po	(revision 586)
+++ locale/en/mlx.po	(revision 589)
@@ -884,4 +884,7 @@
 "type and V<sub>Ref</sub> logged can be seen below."
 
+msgid "landing_metar"
+msgstr "_METAR:"
+
 msgid "landing_star"
 msgstr "_STAR:"
Index: locale/hu/mlx.po
===================================================================
--- locale/hu/mlx.po	(revision 586)
+++ locale/hu/mlx.po	(revision 589)
@@ -885,4 +885,7 @@
 "futópálya, a megközelítés módja és a V<sub>Ref</sub> lent olvasható."
 
+msgid "landing_metar"
+msgstr "_METAR:"
+
 msgid "landing_star"
 msgstr "_STAR:"
@@ -904,5 +907,5 @@
 
 msgid "landing_approach"
-msgstr "_Megközelítés típusa:"
+msgstr "Megközelítés _típusa:"
 
 msgid "landing_approach_tooltip"
Index: src/mlx/gui/flight.py
===================================================================
--- src/mlx/gui/flight.py	(revision 588)
+++ src/mlx/gui/flight.py	(revision 589)
@@ -2669,5 +2669,5 @@
                                   xscale = 0.0, yscale = 0.0)
 
-        table = gtk.Table(6, 5)
+        table = gtk.Table(7, 24)
         table.set_row_spacings(4)
         table.set_col_spacings(16)
@@ -2676,12 +2676,30 @@
         self.setMainWidget(alignment)
 
+        row = 0
+
+        label = gtk.Label(xstr("landing_metar"))
+        label.set_use_underline(True)
+        label.set_alignment(0.0, 0.5)
+        table.attach(label, 0, 1, row, row+1)
+
+        self._metar = gtk.Entry()
+        self._metar.set_width_chars(40)
+        self._metar.connect("changed", self._metarChanged)
+        self._metar.get_buffer().connect_after("inserted-text", self._metarInserted)
+        table.attach(self._metar, 1, 24, row, row+1)
+        label.set_mnemonic_widget(self._metar)
+
+        self._updatingMETAR = False
+
+        row += 1
+
         self._starButton = gtk.CheckButton()
         self._starButton.connect("clicked", self._starButtonClicked)
-        table.attach(self._starButton, 0, 1, 0, 1)
+        table.attach(self._starButton, 0, 1, row, row + 1)
 
         label = gtk.Label(xstr("landing_star"))
         label.set_use_underline(True)
         label.set_alignment(0.0, 0.5)
-        table.attach(label, 1, 2, 0, 1)
+        table.attach(label, 1, 2, row, row + 1)
 
         self._star = gtk.Entry()
@@ -2690,15 +2708,17 @@
         self._star.connect("changed", self._upperChanged)
         self._star.set_sensitive(False)
-        table.attach(self._star, 2, 4, 0, 1)
+        table.attach(self._star, 2, 4, row, row + 1)
         label.set_mnemonic_widget(self._starButton)
+
+        row += 1
 
         self._transitionButton = gtk.CheckButton()
         self._transitionButton.connect("clicked", self._transitionButtonClicked)
-        table.attach(self._transitionButton, 0, 1, 1, 2)
+        table.attach(self._transitionButton, 0, 1, row, row + 1)
 
         label = gtk.Label(xstr("landing_transition"))
         label.set_use_underline(True)
         label.set_alignment(0.0, 0.5)
-        table.attach(label, 1, 2, 1, 2)
+        table.attach(label, 1, 2, row, row + 1)
 
         self._transition = gtk.Entry()
@@ -2707,11 +2727,13 @@
         self._transition.connect("changed", self._upperChanged)
         self._transition.set_sensitive(False)
-        table.attach(self._transition, 2, 4, 1, 2)
+        table.attach(self._transition, 2, 4, row, row + 1)
         label.set_mnemonic_widget(self._transitionButton)
+
+        row += 1
 
         label = gtk.Label(xstr("landing_runway"))
         label.set_use_underline(True)
         label.set_alignment(0.0, 0.5)
-        table.attach(label, 1, 2, 2, 3)
+        table.attach(label, 1, 2, row, row + 1)
 
         self._runway = gtk.Entry()
@@ -2719,11 +2741,13 @@
         self._runway.set_tooltip_text(xstr("landing_runway_tooltip"))
         self._runway.connect("changed", self._upperChanged)
-        table.attach(self._runway, 2, 4, 2, 3)
+        table.attach(self._runway, 2, 4, row, row + 1)
         label.set_mnemonic_widget(self._runway)
+
+        row += 1
 
         label = gtk.Label(xstr("landing_approach"))
         label.set_use_underline(True)
         label.set_alignment(0.0, 0.5)
-        table.attach(label, 1, 2, 3, 4)
+        table.attach(label, 1, 2, row, row + 1)
 
         self._approachType = gtk.Entry()
@@ -2731,6 +2755,8 @@
         self._approachType.set_tooltip_text(xstr("landing_approach_tooltip"))
         self._approachType.connect("changed", self._upperChanged)
-        table.attach(self._approachType, 2, 4, 3, 4)
+        table.attach(self._approachType, 2, 4, row, row + 1)
         label.set_mnemonic_widget(self._approachType)
+
+        row += 1
 
         label = gtk.Label(xstr("landing_vref"))
@@ -2738,5 +2764,5 @@
         label.set_use_underline(True)
         label.set_alignment(0.0, 0.5)
-        table.attach(label, 1, 2, 4, 5)
+        table.attach(label, 1, 2, row, row + 1)
 
         self._vref = IntegerEntry()
@@ -2744,14 +2770,16 @@
         self._vref.set_tooltip_markup(xstr("landing_vref_tooltip_knots"))
         self._vref.connect("integer-changed", self._vrefChanged)
-        table.attach(self._vref, 3, 4, 4, 5)
+        table.attach(self._vref, 3, 4, row, row + 1)
         label.set_mnemonic_widget(self._vref)
 
         self._vrefUnit = gtk.Label(xstr("label_knots"))
-        table.attach(self._vrefUnit, 4, 5, 4, 5)
+        table.attach(self._vrefUnit, 4, 5, row, row + 1)
+
+        row += 1
 
         self._antiIceOn = gtk.CheckButton(xstr("landing_antiice"))
         self._antiIceOn.set_use_underline(True)
         self._antiIceOn.set_tooltip_text(xstr("landing_antiice_tooltip"))
-        table.attach(self._antiIceOn, 3, 5, 5, 6)
+        table.attach(self._antiIceOn, 3, 5, row, row + 1)
 
         self.addCancelFlightButton()
@@ -2764,4 +2792,6 @@
         self._starButton.set_active(True)
         self._transitionButton.set_active(True)
+
+        self._active = False
 
     @property
@@ -2807,7 +2837,12 @@
         self._antiIceOn.set_active(False)
         self._flightEnded = False
+        self._active = False
 
     def activate(self):
         """Called when the page is activated."""
+        self._updatingMETAR = True
+        self._metar.get_buffer().set_text(self._wizard.arrivalMETAR, -1)
+        self._updatingMETAR = False
+
         self._starButton.set_sensitive(True)
         self._starButton.set_active(False)
@@ -2835,4 +2870,6 @@
 
         self._updateForwardButton()
+
+        self._active = True
 
     def flightEnded(self):
@@ -2841,4 +2878,15 @@
         self._flightEnded = True
         self._updateForwardButton()
+
+    def changeMETAR(self, metar):
+        """Change the METAR as a result of an edit on one of the other
+        pages."""
+        if self._active:
+            print "LandingPage.changeMETAR"
+            self._updatingMETAR = True
+            self._metar.get_buffer().set_text(metar, -1)
+            self._updatingMETAR = False
+
+            self._updateForwardButton()
 
     def _starButtonClicked(self, button):
@@ -2861,4 +2909,5 @@
         """Update the sensitivity of the forward button."""
         sensitive = self._flightEnded and \
+                    self._metar.get_text()!="" and \
                     (self._starButton.get_active() or \
                      self._transitionButton.get_active()) and \
@@ -2902,4 +2951,24 @@
         """Callback for the fleet retrieval."""
         self._wizard.nextPage()
+
+    def _metarChanged(self, entry):
+        """Called when the METAR has changed."""
+        print "LandingPage.metarChanged", self._updatingMETAR
+        if not self._updatingMETAR:
+            self._updateForwardButton()
+            self._wizard.metarChanged(entry.get_text(), self)
+
+    def _metarInserted(self, buffer, position, text, length):
+        """Called when new characters are inserted into the METAR.
+
+        It uppercases all characters."""
+        print "LandingPage.metarInserted", self._updatingMETAR
+        if not self._updatingMETAR:
+            self._updatingMETAR = True
+
+            buffer.delete_text(position, length)
+            buffer.insert_text(position, text.upper(), length)
+
+            self._updatingMETAR = False
 
 #-----------------------------------------------------------------------------
@@ -3846,5 +3915,5 @@
         originator is the page that originated the change. It will not be
         called to set the METAR, while others will be."""
-        for page in [self._arrivalBriefingPage]:
+        for page in [self._arrivalBriefingPage, self._landingPage]:
             if page is not originator:
                 page.changeMETAR(metar)
