Index: src/mlx/gui/common.py
===================================================================
--- src/mlx/gui/common.py	(revision 226)
+++ src/mlx/gui/common.py	(revision 227)
@@ -60,4 +60,6 @@
     WEIGHT_BOLD = pango.WEIGHT_BOLD
 
+    pixbuf_new_from_file = gdk.pixbuf_new_from_file
+
     def text2unicode(text):
         """Convert the given text, returned by a Gtk widget, to Unicode."""
@@ -67,4 +69,5 @@
     pygobject = True
     from gi.repository import Gdk as gdk
+    from gi.repository import GdkPixbuf as gdkPixbuf
     from gi.repository import Gtk as gtk
     from gi.repository import GObject as gobject
@@ -109,4 +112,6 @@
     WEIGHT_BOLD = pango.Weight.BOLD
 
+    pixbuf_new_from_file = gdkPixbuf.Pixbuf.new_from_file
+
     import codecs
     _utf8Decoder = codecs.getdecoder("utf-8")
@@ -208,5 +213,7 @@
 #------------------------------------------------------------------------------
 
-WINDOW_TITLE_BASE = "MAVA Logger X " + _const.VERSION
+PROGRAM_NAME = "MAVA Logger X"
+
+WINDOW_TITLE_BASE = PROGRAM_NAME + " " + _const.VERSION
 
 #------------------------------------------------------------------------------
Index: src/mlx/gui/gui.py
===================================================================
--- src/mlx/gui/gui.py	(revision 226)
+++ src/mlx/gui/gui.py	(revision 227)
@@ -1,3 +1,4 @@
 # The main file for the GUI
+# -*- coding: utf-8 -*-
 
 from statusicon import StatusIcon
@@ -21,5 +22,5 @@
 import mlx.web as web
 import mlx.singleton as singleton
-from  mlx.i18n import xstr
+from  mlx.i18n import xstr, getLanguage
 from mlx.pirep import PIREP
 
@@ -28,4 +29,5 @@
 import sys
 import datetime
+import webbrowser
 
 #------------------------------------------------------------------------------
@@ -33,4 +35,11 @@
 class GUI(fs.ConnectionListener):
     """The main GUI class."""
+    _authors = [ ("Váradi", "István", "prog_test"),
+                 ("Galyassy", "Tamás", "negotiation"),
+                 ("Petrovszki", "Gábor", "test"),
+                 ("Zsebényi-Loksa", "Gergely", "test"),
+                 ("Kurják", "Ákos", "test"),
+                 ("Radó", "Iván", "test") ]
+
     def __init__(self, programDirectory, config):
         """Construct the GUI."""
@@ -158,4 +167,6 @@
         self._pilotHotkeyIndex = None
         self._checklistHotkeyIndex = None
+
+        self._aboutDialog = None
 
     @property
@@ -872,4 +883,29 @@
         showDebugMenuItem.connect("toggled", self._toggleDebugLog)
         viewMenu.append(showDebugMenuItem)
+
+        helpMenuItem = gtk.MenuItem(xstr("menu_help"))
+        helpMenu = gtk.Menu()
+        helpMenuItem.set_submenu(helpMenu)
+        menuBar.append(helpMenuItem)
+
+        manualMenuItem = gtk.ImageMenuItem(gtk.STOCK_HELP)
+        manualMenuItem.set_use_stock(True)
+        manualMenuItem.set_label(xstr("menu_help_manual"))
+        manualMenuItem.add_accelerator("activate", accelGroup,
+                                       ord(xstr("menu_help_manual_key")),
+                                       CONTROL_MASK, ACCEL_VISIBLE)
+        manualMenuItem.connect("activate", self._showManual)
+        helpMenu.append(manualMenuItem)
+
+        helpMenu.append(gtk.SeparatorMenuItem())
+        
+        aboutMenuItem = gtk.ImageMenuItem(gtk.STOCK_ABOUT)
+        aboutMenuItem.set_use_stock(True)
+        aboutMenuItem.set_label(xstr("menu_help_about"))
+        aboutMenuItem.add_accelerator("activate", accelGroup,
+                                      ord(xstr("menu_help_about_key")),
+                                      CONTROL_MASK, ACCEL_VISIBLE)
+        aboutMenuItem.connect("activate", self._showAbout)
+        helpMenu.append(aboutMenuItem)
 
         return menuBar
@@ -1232,2 +1268,46 @@
                 else:
                     print "gui.GUI._handleHotkeys: unhandled hotkey index:", index
+
+    def _showManual(self, menuitem):
+        """Show the user's manual."""
+        webbrowser.open(url ="file://" +
+                        os.path.join(self._programDirectory, "doc", "manual",
+                                     getLanguage(), "index.html"),
+                        new = 1)
+
+    def _showAbout(self, menuitem):
+        """Show the about dialog."""
+        dialog = self._getAboutDialog()
+        dialog.show_all()
+        dialog.run()
+        dialog.hide()
+
+    def _getAboutDialog(self):
+        """Get the about dialog.
+
+        If it does not exist yet, it will be created."""
+        if self._aboutDialog is None:
+            self._aboutDialog = dialog = gtk.AboutDialog()
+            dialog.set_transient_for(self._mainWindow)
+            dialog.set_modal(True)
+            
+            logoPath = os.path.join(self._programDirectory, "logo.png")
+            logo = pixbuf_new_from_file(logoPath)
+            dialog.set_logo(logo)
+                                
+            dialog.set_program_name(PROGRAM_NAME)
+            dialog.set_version(const.VERSION)
+            dialog.set_copyright("(c) 2012 by István Váradi")
+
+            isHungarian = getLanguage()=="hu"
+            authors = []
+            for (familyName, firstName, role) in GUI._authors:
+                authors.append("%s %s (%s)" % \
+                               (familyName if isHungarian else firstName,
+                                firstName if isHungarian else familyName,
+                                xstr("about_role_" + role)))            
+            dialog.set_authors(authors)
+
+            dialog.set_license(xstr("about_license"))
+
+        return self._aboutDialog
Index: src/mlx/i18n.py
===================================================================
--- src/mlx/i18n.py	(revision 222)
+++ src/mlx/i18n.py	(revision 227)
@@ -18,4 +18,12 @@
     _Strings.set(language)
     
+#------------------------------------------------------------------------------
+
+def getLanguage():
+    """Get the two-letter language code."""
+    language = _Strings.current().getLanguage()
+    underscoreIndex = language.find("_")
+    return language[:underscoreIndex] if underscoreIndex>0 else language
+
 #------------------------------------------------------------------------------
 
@@ -52,6 +60,5 @@
         on, until no underscore remains.
 
-        If nothing is found this way, the 
-        """
+        If nothing is found this way, the fallback will be returned."""
         while language:
             if language in _Strings._instances:
@@ -89,4 +96,5 @@
         """Construct an empty strings object."""
         self._strings = {}
+        self._language = languages[0]
         for language in languages:
             _Strings._instances[language] = self
@@ -106,4 +114,8 @@
         This releases the string dictionary to free space."""
         self._strings = {}
+
+    def getLanguage(self):
+        """Get the language."""
+        return self._language
 
     def add(self, id, s):
@@ -178,4 +190,10 @@
         self.add("menu_view_debug_key", "d")
         
+        self.add("menu_help", "Help")
+        self.add("menu_help_manual", "_User's manual")
+        self.add("menu_help_manual_key", "u")
+        self.add("menu_help_about", "_About")
+        self.add("menu_help_about_key", "a")
+
         self.add("tab_flight", "_Flight")
         self.add("tab_flight_tooltip", "Flight wizard")
@@ -936,4 +954,11 @@
         self.add("pirepView_tab_log_tooltip", "The flight log.")
 
+        self.add("about_license",
+                 "This program is in the public domain.")
+
+        self.add("about_role_prog_test", "programming, testing")
+        self.add("about_role_negotiation", "negotiation")
+        self.add("about_role_test", "testing")
+
 #------------------------------------------------------------------------------
 
@@ -992,4 +1017,10 @@
         self.add("menu_view_debug_key", "d")
         
+        self.add("menu_help", "Segítség")
+        self.add("menu_help_manual", "_Felhasználói kézikönyv")
+        self.add("menu_help_manual_key", "f")
+        self.add("menu_help_about", "_Névjegy")
+        self.add("menu_help_about_key", "n")
+
         self.add("tab_flight", "_Járat")
         self.add("tab_flight_tooltip", "Járat varázsló")
@@ -1766,4 +1797,11 @@
         self.add("pirepView_tab_log_tooltip", "A repülési napló.")
 
+        self.add("about_license",
+                 "A program köztulajdonban van.")
+
+        self.add("about_role_prog_test", "programozás, tesztelés")
+        self.add("about_role_negotiation", "tárgyalások")
+        self.add("about_role_test", "tesztelés")
+
 #------------------------------------------------------------------------------
 
