Ignore:
Timestamp:
06/05/12 18:20:01 (12 years ago)
Author:
István Váradi <ivaradi@…>
Branch:
default
Phase:
public
Message:

Added a Help menu with the manual and the about dialog

Location:
src/mlx/gui
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/mlx/gui/common.py

    r226 r227  
    6060    WEIGHT_BOLD = pango.WEIGHT_BOLD
    6161
     62    pixbuf_new_from_file = gdk.pixbuf_new_from_file
     63
    6264    def text2unicode(text):
    6365        """Convert the given text, returned by a Gtk widget, to Unicode."""
     
    6769    pygobject = True
    6870    from gi.repository import Gdk as gdk
     71    from gi.repository import GdkPixbuf as gdkPixbuf
    6972    from gi.repository import Gtk as gtk
    7073    from gi.repository import GObject as gobject
     
    109112    WEIGHT_BOLD = pango.Weight.BOLD
    110113
     114    pixbuf_new_from_file = gdkPixbuf.Pixbuf.new_from_file
     115
    111116    import codecs
    112117    _utf8Decoder = codecs.getdecoder("utf-8")
     
    208213#------------------------------------------------------------------------------
    209214
    210 WINDOW_TITLE_BASE = "MAVA Logger X " + _const.VERSION
     215PROGRAM_NAME = "MAVA Logger X"
     216
     217WINDOW_TITLE_BASE = PROGRAM_NAME + " " + _const.VERSION
    211218
    212219#------------------------------------------------------------------------------
  • src/mlx/gui/gui.py

    r226 r227  
    11# The main file for the GUI
     2# -*- coding: utf-8 -*-
    23
    34from statusicon import StatusIcon
     
    2122import mlx.web as web
    2223import mlx.singleton as singleton
    23 from  mlx.i18n import xstr
     24from  mlx.i18n import xstr, getLanguage
    2425from mlx.pirep import PIREP
    2526
     
    2829import sys
    2930import datetime
     31import webbrowser
    3032
    3133#------------------------------------------------------------------------------
     
    3335class GUI(fs.ConnectionListener):
    3436    """The main GUI class."""
     37    _authors = [ ("Váradi", "István", "prog_test"),
     38                 ("Galyassy", "Tamás", "negotiation"),
     39                 ("Petrovszki", "Gábor", "test"),
     40                 ("Zsebényi-Loksa", "Gergely", "test"),
     41                 ("Kurják", "Ákos", "test"),
     42                 ("Radó", "Iván", "test") ]
     43
    3544    def __init__(self, programDirectory, config):
    3645        """Construct the GUI."""
     
    158167        self._pilotHotkeyIndex = None
    159168        self._checklistHotkeyIndex = None
     169
     170        self._aboutDialog = None
    160171
    161172    @property
     
    872883        showDebugMenuItem.connect("toggled", self._toggleDebugLog)
    873884        viewMenu.append(showDebugMenuItem)
     885
     886        helpMenuItem = gtk.MenuItem(xstr("menu_help"))
     887        helpMenu = gtk.Menu()
     888        helpMenuItem.set_submenu(helpMenu)
     889        menuBar.append(helpMenuItem)
     890
     891        manualMenuItem = gtk.ImageMenuItem(gtk.STOCK_HELP)
     892        manualMenuItem.set_use_stock(True)
     893        manualMenuItem.set_label(xstr("menu_help_manual"))
     894        manualMenuItem.add_accelerator("activate", accelGroup,
     895                                       ord(xstr("menu_help_manual_key")),
     896                                       CONTROL_MASK, ACCEL_VISIBLE)
     897        manualMenuItem.connect("activate", self._showManual)
     898        helpMenu.append(manualMenuItem)
     899
     900        helpMenu.append(gtk.SeparatorMenuItem())
     901       
     902        aboutMenuItem = gtk.ImageMenuItem(gtk.STOCK_ABOUT)
     903        aboutMenuItem.set_use_stock(True)
     904        aboutMenuItem.set_label(xstr("menu_help_about"))
     905        aboutMenuItem.add_accelerator("activate", accelGroup,
     906                                      ord(xstr("menu_help_about_key")),
     907                                      CONTROL_MASK, ACCEL_VISIBLE)
     908        aboutMenuItem.connect("activate", self._showAbout)
     909        helpMenu.append(aboutMenuItem)
    874910
    875911        return menuBar
     
    12321268                else:
    12331269                    print "gui.GUI._handleHotkeys: unhandled hotkey index:", index
     1270
     1271    def _showManual(self, menuitem):
     1272        """Show the user's manual."""
     1273        webbrowser.open(url ="file://" +
     1274                        os.path.join(self._programDirectory, "doc", "manual",
     1275                                     getLanguage(), "index.html"),
     1276                        new = 1)
     1277
     1278    def _showAbout(self, menuitem):
     1279        """Show the about dialog."""
     1280        dialog = self._getAboutDialog()
     1281        dialog.show_all()
     1282        dialog.run()
     1283        dialog.hide()
     1284
     1285    def _getAboutDialog(self):
     1286        """Get the about dialog.
     1287
     1288        If it does not exist yet, it will be created."""
     1289        if self._aboutDialog is None:
     1290            self._aboutDialog = dialog = gtk.AboutDialog()
     1291            dialog.set_transient_for(self._mainWindow)
     1292            dialog.set_modal(True)
     1293           
     1294            logoPath = os.path.join(self._programDirectory, "logo.png")
     1295            logo = pixbuf_new_from_file(logoPath)
     1296            dialog.set_logo(logo)
     1297                               
     1298            dialog.set_program_name(PROGRAM_NAME)
     1299            dialog.set_version(const.VERSION)
     1300            dialog.set_copyright("(c) 2012 by István Váradi")
     1301
     1302            isHungarian = getLanguage()=="hu"
     1303            authors = []
     1304            for (familyName, firstName, role) in GUI._authors:
     1305                authors.append("%s %s (%s)" % \
     1306                               (familyName if isHungarian else firstName,
     1307                                firstName if isHungarian else familyName,
     1308                                xstr("about_role_" + role)))           
     1309            dialog.set_authors(authors)
     1310
     1311            dialog.set_license(xstr("about_license"))
     1312
     1313        return self._aboutDialog
Note: See TracChangeset for help on using the changeset viewer.