Changeset 227:50c3ae93007d
- Timestamp:
- 06/05/12 18:20:01 (13 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 2 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
setup.py
r159 r227 13 13 14 14 data_files = [("sounds", glob(os.path.join("sounds", "*.*")))] 15 data_files.append((os.path.join("doc", "manual", "en"), 16 glob(os.path.join("doc", "manual", "en", "*.*")))) 17 data_files.append((os.path.join("doc", "manual", "hu"), 18 glob(os.path.join("doc", "manual", "hu", "*.*")))) 15 19 if os.name=="nt": 16 20 import py2exe 17 21 18 22 data_files.append(("", ["logo.ico"])) 23 data_files.append(("", ["logo.png"])) 19 24 20 25 msvcrDir = os.environ["MSVCRDIR"] if "MSVCRDIR" in os.environ else None -
src/mlx/gui/common.py
r226 r227 60 60 WEIGHT_BOLD = pango.WEIGHT_BOLD 61 61 62 pixbuf_new_from_file = gdk.pixbuf_new_from_file 63 62 64 def text2unicode(text): 63 65 """Convert the given text, returned by a Gtk widget, to Unicode.""" … … 67 69 pygobject = True 68 70 from gi.repository import Gdk as gdk 71 from gi.repository import GdkPixbuf as gdkPixbuf 69 72 from gi.repository import Gtk as gtk 70 73 from gi.repository import GObject as gobject … … 109 112 WEIGHT_BOLD = pango.Weight.BOLD 110 113 114 pixbuf_new_from_file = gdkPixbuf.Pixbuf.new_from_file 115 111 116 import codecs 112 117 _utf8Decoder = codecs.getdecoder("utf-8") … … 208 213 #------------------------------------------------------------------------------ 209 214 210 WINDOW_TITLE_BASE = "MAVA Logger X " + _const.VERSION 215 PROGRAM_NAME = "MAVA Logger X" 216 217 WINDOW_TITLE_BASE = PROGRAM_NAME + " " + _const.VERSION 211 218 212 219 #------------------------------------------------------------------------------ -
src/mlx/gui/gui.py
r226 r227 1 1 # The main file for the GUI 2 # -*- coding: utf-8 -*- 2 3 3 4 from statusicon import StatusIcon … … 21 22 import mlx.web as web 22 23 import mlx.singleton as singleton 23 from mlx.i18n import xstr 24 from mlx.i18n import xstr, getLanguage 24 25 from mlx.pirep import PIREP 25 26 … … 28 29 import sys 29 30 import datetime 31 import webbrowser 30 32 31 33 #------------------------------------------------------------------------------ … … 33 35 class GUI(fs.ConnectionListener): 34 36 """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 35 44 def __init__(self, programDirectory, config): 36 45 """Construct the GUI.""" … … 158 167 self._pilotHotkeyIndex = None 159 168 self._checklistHotkeyIndex = None 169 170 self._aboutDialog = None 160 171 161 172 @property … … 872 883 showDebugMenuItem.connect("toggled", self._toggleDebugLog) 873 884 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) 874 910 875 911 return menuBar … … 1232 1268 else: 1233 1269 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 -
src/mlx/i18n.py
r222 r227 18 18 _Strings.set(language) 19 19 20 #------------------------------------------------------------------------------ 21 22 def getLanguage(): 23 """Get the two-letter language code.""" 24 language = _Strings.current().getLanguage() 25 underscoreIndex = language.find("_") 26 return language[:underscoreIndex] if underscoreIndex>0 else language 27 20 28 #------------------------------------------------------------------------------ 21 29 … … 52 60 on, until no underscore remains. 53 61 54 If nothing is found this way, the 55 """ 62 If nothing is found this way, the fallback will be returned.""" 56 63 while language: 57 64 if language in _Strings._instances: … … 89 96 """Construct an empty strings object.""" 90 97 self._strings = {} 98 self._language = languages[0] 91 99 for language in languages: 92 100 _Strings._instances[language] = self … … 106 114 This releases the string dictionary to free space.""" 107 115 self._strings = {} 116 117 def getLanguage(self): 118 """Get the language.""" 119 return self._language 108 120 109 121 def add(self, id, s): … … 178 190 self.add("menu_view_debug_key", "d") 179 191 192 self.add("menu_help", "Help") 193 self.add("menu_help_manual", "_User's manual") 194 self.add("menu_help_manual_key", "u") 195 self.add("menu_help_about", "_About") 196 self.add("menu_help_about_key", "a") 197 180 198 self.add("tab_flight", "_Flight") 181 199 self.add("tab_flight_tooltip", "Flight wizard") … … 936 954 self.add("pirepView_tab_log_tooltip", "The flight log.") 937 955 956 self.add("about_license", 957 "This program is in the public domain.") 958 959 self.add("about_role_prog_test", "programming, testing") 960 self.add("about_role_negotiation", "negotiation") 961 self.add("about_role_test", "testing") 962 938 963 #------------------------------------------------------------------------------ 939 964 … … 992 1017 self.add("menu_view_debug_key", "d") 993 1018 1019 self.add("menu_help", "Segítség") 1020 self.add("menu_help_manual", "_Felhasználói kézikönyv") 1021 self.add("menu_help_manual_key", "f") 1022 self.add("menu_help_about", "_Névjegy") 1023 self.add("menu_help_about_key", "n") 1024 994 1025 self.add("tab_flight", "_Járat") 995 1026 self.add("tab_flight_tooltip", "Járat varázsló") … … 1766 1797 self.add("pirepView_tab_log_tooltip", "A repülési napló.") 1767 1798 1799 self.add("about_license", 1800 "A program köztulajdonban van.") 1801 1802 self.add("about_role_prog_test", "programozás, tesztelés") 1803 self.add("about_role_negotiation", "tárgyalások") 1804 self.add("about_role_test", "tesztelés") 1805 1768 1806 #------------------------------------------------------------------------------ 1769 1807
Note:
See TracChangeset
for help on using the changeset viewer.