source: src/mlx/mlx.py@ 159:5a0078210fff

Last change on this file since 159:5a0078210fff was 155:08f1f0a4dd9a, checked in by István Váradi <ivaradi@…>, 13 years ago

Enhanced language handling to run the program in the proper environment for gettext

File size: 2.2 KB
Line 
1# The main program
2
3from config import Config
4from i18n import setLanguage
5from sound import initializeSound
6
7import os
8import sys
9
10#--------------------------------------------------------------------------------------
11
12class StdIOHandler(object):
13 """Handler for the standard I/O messages."""
14 def __init__(self, gui):
15 """Construct the handler."""
16 self._gui = gui
17
18 def write(self, text):
19 """Write the given text into the log."""
20 self._gui.writeStdIO(text)
21
22#--------------------------------------------------------------------------------------
23
24def restart(args = []):
25 """Restart the program with the given arguments."""
26 print "Restarting with args", args
27 programPath = os.path.join(os.path.dirname(sys.argv[0]),
28 "runmlx.exe" if os.name=="nt" else "runmlx.sh")
29 if os.name=="nt":
30 import win32api
31 try:
32 programPath = win32api.GetShortPathName(programPath)
33 except:
34 programPath = os.path.join(os.path.dirname(sys.argv[0]),
35 "runmlx.bat")
36 programPath = win32api.GetShortPathName(programPath)
37
38 args = [programPath] + args
39
40 os.execv(programPath, args)
41
42#--------------------------------------------------------------------------------------
43
44def main():
45 """The main operation of the program."""
46 programDirectory = os.path.dirname(sys.argv[0])
47
48 config = Config()
49 config.load()
50
51 if (len(sys.argv)<=1 or sys.argv[1]!="usedeflang") and config.setupLocale():
52 restart(["usedeflang"])
53
54 setLanguage(config.getLanguage())
55
56 from .gui.gui import GUI
57 gui = GUI(programDirectory, config)
58
59 sys.stdout = StdIOHandler(gui)
60 sys.stderr = StdIOHandler(gui)
61
62 initializeSound(os.path.join(programDirectory, "sounds"))
63
64 try:
65 gui.build(programDirectory)
66
67 gui.run()
68 finally:
69 gui.flushStdIO()
70 sys.stdout = sys.__stdout__
71 sys.stderr = sys.__stderr__
72
73 config.save()
74
75 if gui.toRestart:
76 restart()
77
78#--------------------------------------------------------------------------------------
79
80if __name__ == "__main__":
81 main()
Note: See TracBrowser for help on using the repository browser.