Index: locale/en/mlx.po
===================================================================
--- locale/en/mlx.po	(revision 373)
+++ locale/en/mlx.po	(revision 383)
@@ -641,11 +641,10 @@
 msgid "route_help"
 msgstr ""
-"Set your cruise flight level below, and\n"
+"Set your cruise flight level to be filed below, and\n"
 "if necessary, edit the flight plan."
 
 msgid "route_chelp"
 msgstr ""
-"If necessary, you can modify the cruise level and\n"
-"the flight plan below during flight.\n"
+"If necessary, you can modify he flight plan below during flight.\n"
 "If so, please, add a comment on why the modification became necessary."
 
@@ -655,5 +654,5 @@
 msgid "route_level_tooltip"
 msgstr ""
-"The cruise flight level. Click on the arrows to increment "
+"The cruise flight level to file. Click on the arrows to increment "
 "or decrement by 10, or enter the number on the keyboard."
 
@@ -777,4 +776,28 @@
 "you can indicate here that you have aborted the takeoff. "
 "Don't forget to provide an explanation in the comments."
+
+msgid "cruise_title"
+msgstr "Cruise"
+
+msgid "cruise_help"
+msgstr ""
+"If your cruise altitude changes, you can enter the new value below.\n"
+"To actually log the value, press the <b>Update</b> button,\n"
+"when you reach the specified level."
+
+msgid "cruise_route_level_tooltip"
+msgstr ""
+"The cruise flight level, if changes. Click on the arrows to increment "
+"or decrement by 10, or enter the number on the keyboard."
+
+msgid "cruise_route_level_update"
+msgstr "_Update"
+
+msgid "cruise_route_level_update_tooltip"
+msgstr ""
+"Click this button to log the cruise level set in the field to the left. "
+"The button is active only, if the value is different from the level "
+"logged last, and if you are in a flight stage during which logging "
+"is possible."
 
 msgid "landing_title"
Index: locale/hu/mlx.po
===================================================================
--- locale/hu/mlx.po	(revision 373)
+++ locale/hu/mlx.po	(revision 383)
@@ -642,12 +642,11 @@
 msgid "route_help"
 msgstr ""
-"Állítsd be az utazószintet lent, és ha szükséges,\n"
+"Állítsd be a beadandó utazószintet lent, és ha szükséges,\n"
 "módosítsd az útvonaltervet."
 
 msgid "route_chelp"
 msgstr ""
-"Ha szükséges, lent módosíthatod az utazószintet és\n"
-"az útvonaltervet repülés közben is.\n"
-"Ha így teszel, légy szíves a megjegyzés mezőben ismertesd ennek okát."
+"Ha szükséges, lent módosíthatod az útvonaltervet repülés közben is.\n"
+"Ha így teszel, a megjegyzés mezőben ismertesd ennek okát."
 
 msgid "route_level"
@@ -655,5 +654,5 @@
 
 msgid "route_level_tooltip"
-msgstr "Az utazószint."
+msgstr "A beadandó utazószint."
 
 msgid "route_route"
@@ -778,4 +777,28 @@
 "vezeted, itt jelezheted, ha megszakítottad a felszállást. "
 "Ne felejts magyarázattal szolgálni a megjegyzések között!"
+
+msgid "cruise_title"
+msgstr "Utazó"
+
+msgid "cruise_help"
+msgstr ""
+"Ha az utazószint változik, az új értéket itt írhatod be.\n"
+"Az érték tényleges naplózásához nyomd meg a <b>Frissít</b> gombot,\n"
+"amikor eléred a megadott szintet."
+
+msgid "cruise_route_level_tooltip"
+msgstr ""
+"Az utazószint, ha változik. A nyilakkal a szint 10-zel növelhető ill. "
+"csökkenthethő, vagy beírhatod a konkrét számot."
+
+msgid "cruise_route_level_update"
+msgstr "_Frissít"
+
+msgid "cruise_route_level_update_tooltip"
+msgstr ""
+"Nyomd meg ezt a gombot, hogy a tőle balra lévő mezőben megadott "
+"utazószint belekerüljön a naplóba. A gomb csak akkor aktív, ha az "
+"utoljára naplózottól eltér az érték, és ha a repülésnek olyan fázisában "
+"vagy, amelyben az utazószint naplózható."
 
 msgid "landing_title"
Index: src/mlx/flight.py
===================================================================
--- src/mlx/flight.py	(revision 365)
+++ src/mlx/flight.py	(revision 383)
@@ -24,4 +24,11 @@
     It is also the hub for the other main objects participating in the handling of
     the flight."""
+    @staticmethod
+    def canLogCruiseAltitude(stage):
+        """Determine if the cruise altitude can be logged in the given
+        stage."""
+        return stage in [const.STAGE_CRUISE, const.STAGE_DESCENT,
+                         const.STAGE_LANDING]
+
     def __init__(self, logger, gui):
         """Construct the flight."""
@@ -414,9 +421,11 @@
     def cruiseLevelChanged(self):
         """Called when the cruise level hass changed."""
-        if self._stage in [const.STAGE_CRUISE, const.STAGE_DESCENT,
-                           const.STAGE_LANDING]:
+        if self.canLogCruiseAltitude(self._stage):
             message = "Cruise altitude modified to %d feet" % \
-                      (self.cruiseAltitude,)
+                      (self._gui.loggableCruiseAltitude,)
             self.logger.message(self.aircraft.timestamp, message)
+            return True
+        else:
+            return False
 
     def _updateFlownDistance(self, currentState):
Index: src/mlx/gui/flight.py
===================================================================
--- src/mlx/gui/flight.py	(revision 349)
+++ src/mlx/gui/flight.py	(revision 383)
@@ -5,4 +5,5 @@
 import mlx.fs as fs
 import mlx.acft as acft
+from mlx.flight import Flight
 from mlx.checks import PayloadChecker
 import mlx.util as util
@@ -1655,5 +1656,4 @@
         self._cruiseLevel.connect("value-changed", self._cruiseLevelChanged)
         label.set_mnemonic_widget(self._cruiseLevel)
-        self._filedCruiseLevel = 240
 
         levelBox.pack_start(self._cruiseLevel, False, False, 8)
@@ -1706,9 +1706,4 @@
     def filedCruiseLevel(self):
         """Get the filed cruise level."""
-        return self._filedCruiseLevel
-
-    @property
-    def cruiseLevel(self):
-        """Get the cruise level."""
         return self._cruiseLevel.get_value_as_int()
 
@@ -1721,5 +1716,4 @@
         """Setup the route from the booked flight."""
         self._cruiseLevel.set_value(240)
-        self._filedCruiseLevel = 240
         self._route.get_buffer().set_text(self._wizard._bookedFlight.route)
         self._updateForwardButton()
@@ -1739,5 +1733,4 @@
         """Called when the cruise level has changed."""
         self._updateForwardButton()
-        self._wizard.cruiseLevelChanged()
 
     def _routeChanged(self, textBuffer):
@@ -1771,5 +1764,4 @@
         else:
             bookedFlight = self._wizard._bookedFlight
-            self._filedCruiseLevel = self.cruiseLevel
             self._wizard.gui.beginBusy(xstr("route_down_notams"))
             self._wizard.gui.webHandler.getNOTAMs(self._notamsCallback,
@@ -2212,4 +2204,118 @@
 #-----------------------------------------------------------------------------
 
+class CruisePage(Page):
+    """The page containing the flight level that might change during flight."""
+    def __init__(self, wizard):
+        """Construct the page."""
+        super(CruisePage, self).__init__(wizard, xstr("cruise_title"),
+                                         xstr("cruise_help"))
+
+        self._loggable = False
+        self._loggedCruiseLevel = 240
+        self._activated = False
+
+        alignment = gtk.Alignment(xalign = 0.5, yalign = 0.0,
+                                  xscale = 0.0, yscale = 1.0)
+
+        mainBox = gtk.VBox()
+        alignment.add(mainBox)
+        self.setMainWidget(alignment)
+
+        alignment = gtk.Alignment(xalign = 0.0, yalign = 0.0,
+                                  xscale = 0.0, yscale = 0.0)
+        mainBox.pack_start(alignment, False, False, 16)
+
+        levelBox = gtk.HBox()
+
+        label = gtk.Label(xstr("route_level"))
+        label.set_use_underline(True)
+        levelBox.pack_start(label, True, True, 0)
+
+        self._cruiseLevel = gtk.SpinButton()
+        self._cruiseLevel.set_increments(step = 10, page = 100)
+        self._cruiseLevel.set_range(min = 50, max = 500)
+        self._cruiseLevel.set_tooltip_text(xstr("cruise_route_level_tooltip"))
+        self._cruiseLevel.set_numeric(True)
+        self._cruiseLevel.connect("value-changed", self._cruiseLevelChanged)
+        label.set_mnemonic_widget(self._cruiseLevel)
+
+        levelBox.pack_start(self._cruiseLevel, False, False, 8)
+
+        self._updateButton = gtk.Button(xstr("cruise_route_level_update"));
+        self._updateButton.set_use_underline(True)
+        self._updateButton.set_tooltip_text(xstr("cruise_route_level_update_tooltip"))
+        self._updateButton.connect("clicked", self._updateButtonClicked)
+
+        levelBox.pack_start(self._updateButton, False, False, 16)
+
+        mainBox.pack_start(levelBox, False, False, 0)
+
+        alignment = gtk.Alignment(xalign = 0.0, yalign = 0.0,
+                                  xscale = 0.0, yscale = 1.0)
+        mainBox.pack_start(alignment, True, True, 0)
+
+        self.addCancelFlightButton()
+
+        self._backButton = self.addPreviousButton(clicked = self._backClicked)
+        self._button = self.addNextButton(clicked = self._forwardClicked)
+
+    @property
+    def activated(self):
+        """Determine if the page is already activated or not."""
+        return self._activated
+
+    @property
+    def cruiseLevel(self):
+        """Get the cruise level."""
+        return self._loggedCruiseLevel
+
+    @property
+    def loggableCruiseLevel(self):
+        """Get the cruise level which should be logged."""
+        return self._cruiseLevel.get_value_as_int()
+
+    def setLoggable(self, loggable):
+        """Set whether the cruise altitude can be logged."""
+        self._loggable = loggable
+        self._updateButtons()
+
+    def activate(self):
+        """Setup the route from the booked flight."""
+        self._loggedCruiseLevel = self._wizard.filedCruiseLevel
+        self._cruiseLevel.set_value(self._loggedCruiseLevel)
+        self._activated = True
+
+    def reset(self):
+        """Reset the page."""
+        self._loggable = False
+        self._activated = False
+        super(CruisePage, self).reset()
+
+    def _updateButtons(self):
+        """Update the sensitivity of the buttons."""
+        self._updateButton.set_sensitive(self._loggable and
+                                         self.loggableCruiseLevel!=
+                                         self._loggedCruiseLevel)
+
+    def _cruiseLevelChanged(self, spinButton):
+        """Called when the cruise level has changed."""
+        self._updateButtons()
+
+    def _updateButtonClicked(self, button):
+        """Called when the update button is clicked."""
+        if self._wizard.cruiseLevelChanged():
+            self._loggedCruiseLevel = self.loggableCruiseLevel
+            self._updateButtons()
+
+    def _backClicked(self, button):
+        """Called when the Back button is pressed."""
+        self.goBack()
+
+    def _forwardClicked(self, button):
+        """Called when the Forward button is clicked."""
+        self._wizard.nextPage()
+
+#-----------------------------------------------------------------------------
+
 class LandingPage(Page):
     """Page for entering landing data."""
@@ -2848,4 +2954,6 @@
         self._takeoffPage = TakeoffPage(self)
         self._pages.append(self._takeoffPage)
+        self._cruisePage = CruisePage(self)
+        self._pages.append(self._cruisePage)
         self._landingPage = LandingPage(self)
         self._pages.append(self._landingPage)
@@ -2947,4 +3055,9 @@
 
     @property
+    def filedCruiseLevel(self):
+        """Get the filed cruise level."""
+        return self._routePage.filedCruiseLevel
+
+    @property
     def filedCruiseAltitude(self):
         """Get the filed cruise altitude."""
@@ -2954,5 +3067,15 @@
     def cruiseAltitude(self):
         """Get the cruise altitude."""
-        return self._routePage.cruiseLevel * 100
+        level = self._cruisePage.cruiseLevel if self._cruisePage.activated \
+                else self._routePage.filedCruiseLevel
+        return level * 100
+
+    @property
+    def loggableCruiseAltitude(self):
+        """Get the cruise altitude that can be logged."""
+        if self._cruisePage.activated:
+            return self._cruisePage.loggableCruiseLevel * 100
+        else:
+            return 0
 
     @property
@@ -3059,4 +3182,7 @@
     def setStage(self, stage):
         """Set the flight stage to the given one."""
+        if stage!=const.STAGE_END:
+            self._cruisePage.setLoggable(Flight.canLogCruiseAltitude(stage))
+
         if stage==const.STAGE_TAKEOFF:
             self._takeoffPage.allowForward()
@@ -3121,5 +3247,5 @@
     def cruiseLevelChanged(self):
         """Called when the cruise level is changed."""
-        self.gui.cruiseLevelChanged()
+        return self.gui.cruiseLevelChanged()
 
     def _loginResultCallback(self, returned, result):
Index: src/mlx/gui/gui.py
===================================================================
--- src/mlx/gui/gui.py	(revision 349)
+++ src/mlx/gui/gui.py	(revision 383)
@@ -263,4 +263,9 @@
 
     @property
+    def loggableCruiseAltitude(self):
+        """Get the cruise altitude that can be logged."""
+        return self._wizard.loggableCruiseAltitude
+
+    @property
     def route(self):
         """Get the flight route."""
@@ -890,5 +895,7 @@
         """Called when the cruise level is changed in the flight wizard."""
         if self._flight is not None:
-            self._flight.cruiseLevelChanged()
+            return self._flight.cruiseLevelChanged()
+        else:
+            return False
 
     def _buildMenuBar(self, accelGroup):
