Index: src/mlx/gui/flight.py
===================================================================
--- src/mlx/gui/flight.py	(revision 1044)
+++ src/mlx/gui/flight.py	(revision 1046)
@@ -703,4 +703,7 @@
         print("DPI", context.get_dpi_x(), context.get_dpi_y())
 
+        logoSurface = cairo.ImageSurface.create_from_png(
+            os.path.join(wizard.gui.programDirectory, "mavalogo.png"))
+
         scale = context.get_dpi_x() / 72.0
 
@@ -709,22 +712,53 @@
         cr.set_antialias(cairo.ANTIALIAS_GRAY)
 
-        cr.set_source_rgb(0.0, 0.0, 0.0)
-        cr.set_line_width(2.0 * scale)
-        cr.rectangle(0, 0, context.get_width(), context.get_height())
-        cr.stroke()
-
         pcr = context.create_pango_context()
 
+        delimiter = "*" * 70
+
         layout = Pango.Layout(pcr)
-        layout.set_text("Malév VA official briefing")
-        font = Pango.FontDescription("sans")
-        font.set_size(int(32 * Pango.SCALE))
-        font.set_weight(Pango.Weight.NORMAL)
+
+        font = Pango.FontDescription("Courier")
+        font.set_size(int(12 * Pango.SCALE))
+        font.set_weight(Pango.Weight.THIN)
         layout.set_font_description(font)
 
+        fontBold = Pango.FontDescription("Courier")
+        fontBold.set_size(int(12 * Pango.SCALE))
+        fontBold.set_weight(Pango.Weight.BOLD)
+
+        layout.set_text(delimiter)
         (_ink, logical) = layout.get_extents()
         width = logical.width / Pango.SCALE
 
+        x0 = (context.get_width() - width)/2.0
+
+        logoWidth = width / 3
+        logoScale = logoSurface.get_width() / logoWidth
+
         y = 25 * scale
+
+        source = cr.get_source()
+        logoSurface.set_device_scale(logoScale, logoScale)
+        cr.set_source_surface(logoSurface, x0, y)
+        cr.rectangle(x0, y, logoSurface.get_width() / logoScale,
+                     logoSurface.get_height() / logoScale)
+        cr.fill()
+        cr.set_source(source)
+
+        y += logoSurface.get_height() / logoScale
+        y += 12 * scale
+
+        cr.move_to(x0, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        y += logical.height / Pango.SCALE
+        y += 4 * scale
+
+        layout.set_text("F L I G H T  B R I E F I N G  S H E E T")
+        (_ink, logical) = layout.get_extents()
+        width = logical.width / Pango.SCALE
 
         cr.move_to((context.get_width() - width)/2.0, y)
@@ -735,17 +769,13 @@
 
         y += logical.height / Pango.SCALE
-        y += 6 * scale
-
-        layout = Pango.Layout(pcr)
-        layout.set_text("%s (%s) részére" %
-                        (loginResult.pilotName, loginResult.pilotID))
-        font = Pango.FontDescription("sans")
-        font.set_size(int(16 * Pango.SCALE))
-        font.set_weight(Pango.Weight.MEDIUM)
-        layout.set_font_description(font)
+        y += 4 * scale
+
+        layout.set_text(delimiter)
         (_ink, logical) = layout.get_extents()
         width = logical.width / Pango.SCALE
 
-        cr.move_to((context.get_width() - width)/2.0, y)
+        x2 = x0 + width * 0.4
+
+        cr.move_to(x0, y)
         cr.set_line_width(0.1 * scale)
         PangoCairo.layout_path(cr, layout)
@@ -754,114 +784,376 @@
 
         y += logical.height / Pango.SCALE
+        y += 5 * scale
+
+        layout.set_text("AIRCRAFT: ")
+        layout.set_font_description(fontBold)
+        (_ink, logical) = layout.get_extents()
+        x1 = x0 + logical.width / Pango.SCALE
+
+        layout.set_text("FLIGHT:")
+        layout.set_font_description(fontBold)
+
+        cr.move_to(x0, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text("%s %s-%s" % (flight.callsign,
+                                      flight.departureICAO,
+                                      flight.arrivalICAO))
+
+        layout.set_font_description(font)
+
+        cr.move_to(x1, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text("DATE:")
+        layout.set_font_description(fontBold)
+        (_ink, logical) = layout.get_extents()
+        x3 = x2 + logical.width / Pango.SCALE
+
+        cr.move_to(x2, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text(" %s" % (flight.date,))
+        layout.set_font_description(font)
+
+        cr.move_to(x3, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text("  %02d:%02d" % (flight.departureTime.hour,
+                                         flight.departureTime.minute))
+        (_ink, logical) = layout.get_extents()
+        x5 = x0 + width - logical.width / Pango.SCALE
+        cr.move_to(x5, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text("ETD (UTC):")
+        layout.set_font_description(fontBold)
+        (_ink, logical) = layout.get_extents()
+        x4 = x5 - logical.width / Pango.SCALE
+        cr.move_to(x4, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        y += logical.height / Pango.SCALE
         y += 4 * scale
 
-        cr.move_to(0, y)
-        cr.line_to(context.get_width(), y)
-        cr.set_line_width(1.0 * scale)
-        cr.stroke()
-
-        y += 20 * scale
-
-        font = Pango.FontDescription("sans")
-        font.set_size(int(7 * Pango.SCALE))
-        font.set_weight(Pango.Weight.ULTRALIGHT)
-
-        table = []
-        table.append(("Flight", flight.callsign))
-        table.append(("Date", flight.date))
-        table.append(("Aircraft",
-                      aircraftNames[flight.aircraftType] + ", Lajstrom: " +
-                      flight.tailNumber))
-        table.append(("DOW",
-                      str(acft.getClass(flight.aircraftType).dow) + " kgs"))
-        table.append(("From", flight.departureICAO))
-        table.append(("To", flight.arrivalICAO))
-        table.append(("ETD (UTC)", flight.departureTime.strftime("%H:%M:%S")))
-        table.append(("ETA (UTC)", flight.arrivalTime.strftime("%H:%M:%S")))
-        table.append(("Crew", str(flight.numCrew)))
-        table.append(("Pass", str(flight.numPassengers)))
-        table.append(("Bag", str(flight.bagWeight)))
-        table.append(("Mail", str(flight.mailWeight)))
-        table.append(("Route", flight.route))
-
-        tableY = y
-        tableX = 15 * scale
-        labelFill = 5 * scale
-        labelValueFill = 25 * scale
-        valueFill = 5 * scale
-        labelX = tableX + labelFill
-        tableWidth = context.get_width() * 55 / 100 - tableX
-
-        labelLayouts = []
-        maxLabelWidth = 0
-        totalHeight = 0
-        for (label, value) in table:
-            labelLayout = Pango.Layout(pcr)
-            labelLayout.set_text(label)
-            labelLayout.set_font_description(font)
-
-            (_ink, logical) = labelLayout.get_extents()
-            maxLabelWidth = max(maxLabelWidth, logical.width)
-            labelHeight = logical.height
-
-            valueLayout = Pango.Layout(pcr)
-            valueLayout.set_text(value)
-            valueLayout.set_font_description(font)
-
-            labelLayouts.append((labelLayout, valueLayout, labelHeight))
-
-        maxLabelWidth = maxLabelWidth / Pango.SCALE
-
-        valueX = labelX + labelValueFill + maxLabelWidth
-
-        layouts = []
-        valueWidth = tableWidth - \
-            (labelFill + maxLabelWidth + labelValueFill + valueFill)
-        for (labelLayout, valueLayout, labelHeight) in labelLayouts:
-            valueLayout.set_width(int(valueWidth * Pango.SCALE))
-
-            (_ink, logical) = valueLayout.get_extents()
-            valueHeight = logical.height
-
-            height = float(max(labelHeight, valueHeight))/Pango.SCALE
-            layouts.append((labelLayout, valueLayout, height))
-
-        rowIndex = 0
-        for (labelLayout, valueLayout, height) in layouts:
-            if (rowIndex%2)==0:
-                cr.set_source_rgb(0.85, 0.85, 0.85)
-            else:
-                cr.set_source_rgb(0.9, 0.9, 0.9)
-
-            cr.rectangle(tableX, y-2*scale, tableWidth, height + 4 * scale)
-            cr.fill()
-
-            cr.set_source_rgb(0.0, 0.0, 0.0)
-
-            cr.move_to(labelX, y)
-            cr.set_line_width(0.1)
-            PangoCairo.layout_path(cr, labelLayout)
+        layout.set_text("AIRCRAFT:")
+        layout.set_font_description(fontBold)
+        cr.move_to(x0, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text(aircraftNames[flight.aircraftType].upper())
+        layout.set_font_description(font)
+        cr.move_to(x1, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text("  %02d:%02d" % (flight.arrivalTime.hour,
+                                         flight.arrivalTime.minute))
+        cr.move_to(x5, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text("ETA (UTC):")
+        layout.set_font_description(fontBold)
+        cr.move_to(x4, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        y += logical.height / Pango.SCALE
+        y += 4 * scale
+
+        layout.set_text("CREW:")
+        layout.set_font_description(fontBold)
+        cr.move_to(x0, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text("%d + %d" % (flight.numCockpitCrew,
+                                     flight.numCabinCrew))
+        layout.set_font_description(font)
+        cr.move_to(x1, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text("DOW:")
+        layout.set_font_description(fontBold)
+        cr.move_to(x4, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text("%d KG" % (flight.dow,))
+        layout.set_font_description(font)
+        (_ink, logical) = layout.get_extents()
+        x5 = x0 + width - logical.width / Pango.SCALE
+        cr.move_to(x5, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        y += logical.height / Pango.SCALE
+        y += logical.height / Pango.SCALE
+        y += 4 * scale
+
+        layout.set_text("PASSENGERS")
+        layout.set_font_description(fontBold)
+        cr.move_to(x0, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text("CARGO HOLDS")
+        layout.set_font_description(fontBold)
+        cr.move_to(x2, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text("TOTAL")
+        layout.set_font_description(fontBold)
+        cr.move_to(x4, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        y += logical.height / Pango.SCALE
+        y += 4 * scale
+
+        layout.set_text("CHILDREN:")
+        layout.set_font_description(font)
+        (_ink, logical) = layout.get_extents()
+        x1 = x0 + logical.width / Pango.SCALE
+
+        layout.set_text("CARGO:")
+        layout.set_font_description(font)
+        (_ink, logical) = layout.get_extents()
+        x3 = x2 + logical.width / Pango.SCALE
+
+        layout.set_text("ADULTS:")
+        layout.set_font_description(font)
+        cr.move_to(x0, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text(" %3d" % (flight.numPassengers,))
+        layout.set_font_description(font)
+        cr.move_to(x1, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text("BAGS:")
+        layout.set_font_description(font)
+        cr.move_to(x2, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text(" %5d KG" % (flight.bagWeight,))
+        layout.set_font_description(font)
+        cr.move_to(x3, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        y += logical.height / Pango.SCALE
+        y += 4 * scale
+
+        layout.set_text("CHILDREN:")
+        layout.set_font_description(font)
+        cr.move_to(x0, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text(" %3d" % (flight.numChildren,))
+        layout.set_font_description(font)
+        cr.move_to(x1, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text("MAIL:")
+        layout.set_font_description(font)
+        cr.move_to(x2, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text(" %5d KG" % (flight.mailWeight,))
+        layout.set_font_description(font)
+        cr.move_to(x3, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text("PAYLOAD:")
+        layout.set_font_description(font)
+        cr.move_to(x4, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text("%5d KG" % (flight.payload,))
+        layout.set_font_description(font)
+        (_ink, logical) = layout.get_extents()
+        x5 = x0 + width - logical.width / Pango.SCALE
+        cr.move_to(x5, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        y += logical.height / Pango.SCALE
+        y += 4 * scale
+
+        layout.set_text("INFANTS:")
+        layout.set_font_description(font)
+        cr.move_to(x0, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text(" %3d" % (flight.numInfants,))
+        layout.set_font_description(font)
+        cr.move_to(x1, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text("CARGO:")
+        layout.set_font_description(font)
+        cr.move_to(x2, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text(" %5d KG" % (flight.cargoWeight,))
+        layout.set_font_description(font)
+        cr.move_to(x3, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text("ZFW:")
+        layout.set_font_description(font)
+        cr.move_to(x4, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        layout.set_text("%5d KG" % (flight.dow + flight.payload,))
+        layout.set_font_description(font)
+        (_ink, logical) = layout.get_extents()
+        x5 = x0 + width - logical.width / Pango.SCALE
+        cr.move_to(x5, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        y += logical.height / Pango.SCALE
+        y += logical.height / Pango.SCALE
+        y += 4 * scale
+
+        layout.set_text("ROUTE:")
+        layout.set_font_description(fontBold)
+        (_ink, logical) = layout.get_extents()
+        x1 = x0 + logical.width / Pango.SCALE
+        cr.move_to(x0, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
+
+        routeWords = flight.route.split(" ")
+        layout.set_font_description(font)
+
+        startWord = 0
+        textWidth = width - (x1 - x0)
+        while startWord<len(routeWords):
+            endWord = startWord + 1
+            while endWord<=len(routeWords):
+                layout.set_text(" %s" % (" ".join(routeWords[startWord:endWord]),))
+                (_ink, logical) = layout.get_extents()
+                if textWidth<logical.width / Pango.SCALE:
+                    endWord -= 1
+                    if endWord<=startWord:
+                        endWord = startWord + 1
+                    break
+                endWord += 1
+
+            layout.set_text(" %s" % (" ".join(routeWords[startWord:endWord]),))
+            cr.move_to(x1, y)
+            cr.set_line_width(0.1 * scale)
+            PangoCairo.layout_path(cr, layout)
             cr.stroke_preserve()
             cr.fill()
 
-            cr.move_to(valueX, y)
-            cr.set_line_width(0.1)
-            PangoCairo.layout_path(cr, valueLayout)
-            cr.stroke_preserve()
-            cr.fill()
-
-            y += height
+            startWord = endWord
+
+            y += logical.height / Pango.SCALE
             y += 4 * scale
 
-            rowIndex += 1
-
-        cr.set_source_rgb(0.0, 0.0, 0.0)
-        cr.set_line_width(1.0 * scale)
-        cr.rectangle(tableX, tableY - 2 * scale, tableWidth, y - tableY)
-        cr.stroke()
-
-        cr.move_to(valueX - 5 * scale, tableY - 2 * scale)
-        cr.line_to(valueX - 5 * scale, y - 2 * scale)
-        cr.stroke()
+        y += logical.height / Pango.SCALE
+
+        layout.set_text(delimiter)
+        layout.set_font_description(font)
+        cr.move_to(x0, y)
+        cr.set_line_width(0.1 * scale)
+        PangoCairo.layout_path(cr, layout)
+        cr.stroke_preserve()
+        cr.fill()
 
     def _deleteClicked(self, button):
Index: src/mlx/gui/gui.py
===================================================================
--- src/mlx/gui/gui.py	(revision 1037)
+++ src/mlx/gui/gui.py	(revision 1046)
@@ -105,4 +105,9 @@
         self.toRestart = False
 
+    @property
+    def programDirectory(self):
+        """Get the program directory."""
+        return self._programDirectory
+
     def build(self, iconDirectory):
         """Build the GUI."""
Index: src/mlx/rpc.py
===================================================================
--- src/mlx/rpc.py	(revision 1044)
+++ src/mlx/rpc.py	(revision 1046)
@@ -369,4 +369,20 @@
                 self.arrivalTime += datetime.timedelta(days = 1)
 
+    @property
+    def payload(self):
+        """Get the default payload of the flight."""
+        payload= (self.numCabinCrew - self.dowNumCabinCrew) *  \
+            const.WEIGHT_CABIN_CREW
+        payload += self.numPassengers * \
+            (const.WEIGHT_PASSENGER_CHARTER
+             if self.flightType==const.FLIGHTTYPE_CHARTER
+             else const.WEIGHT_PASSENGER)
+        payload += self.numChildren * const.WEIGHT_CHILD
+        payload += self.numInfants * const.WEIGHT_INFANT
+        payload += self.bagWeight
+        payload += self.cargoWeight
+        payload += self.mailWeight
+        return payload
+
     def readFromFile(self, f, fleet):
         """Read the data of the flight from a file via the given file
