Commit fa05cea1d177448f8dc376f0c31be6be8cec8811
1 parent
30442c8c
Exists in
master
and in
67 other branches
FIX: Fixed selection of language bug, thank's Bruno Lara Bottazzini
Showing
3 changed files
with
62 additions
and
95 deletions
Show diff stats
invesalius/gui/language_dialog.py
... | ... | @@ -53,7 +53,7 @@ class LanguageDialog(wx.Dialog): |
53 | 53 | # Find out OS locale |
54 | 54 | self.os_locale = i18n.GetLocaleOS() |
55 | 55 | |
56 | - os_lang = self.os_locale | |
56 | + os_lang = self.os_locale[0:2] | |
57 | 57 | |
58 | 58 | # Default selection will be English |
59 | 59 | selection = self.locales_key.index('en') | ... | ... |
invesalius/i18n.py
1 | -#!/usr/bin/env python | |
2 | -# -*- coding: UTF-8 -*- | |
3 | - | |
1 | +#!/usr/bin/env python | |
2 | +# -*- coding: UTF-8 -*- | |
3 | + | |
4 | 4 | #-------------------------------------------------------------------------- |
5 | 5 | # Software: InVesalius - Software de Reconstrucao 3D de Imagens Medicas |
6 | 6 | # Copyright: (C) 2001 Centro de Pesquisas Renato Archer |
... | ... | @@ -25,50 +25,36 @@ import locale |
25 | 25 | import gettext |
26 | 26 | import os |
27 | 27 | import sys |
28 | - | |
29 | -import utils as utl | |
30 | - | |
31 | -def GetLocales(): | |
32 | - """Return a dictionary which defines supported languages""" | |
33 | - d = utl.TwoWaysDictionary ({'zh_TW': u'中文', | |
34 | - 'en': u'English', | |
35 | - 'es': u'Español', | |
36 | - 'ko': u'조선어', | |
37 | - 'pt_BR': u'Português (Brasil)', | |
38 | - 'pt': u'Português (Portugal)', | |
39 | - 'fr':u'Français', | |
40 | - 'el_GR':u'Ελληνική', | |
41 | - 'it_IT':'Italiano', | |
42 | - 'de_DE': 'Deutsch'}) | |
43 | - return d | |
44 | - | |
45 | -def GetLocaleOS(): | |
46 | - """Return language of the operating system.""" | |
47 | - default_locale = 'en' | |
48 | - locales_dict = GetLocales() | |
49 | - | |
50 | - if sys.platform == 'darwin': | |
51 | - locale.setlocale(locale.LC_ALL, "") | |
52 | - os_locale = locale.getlocale()[0] | |
53 | - else: | |
54 | - os_locale = locale.getdefaultlocale()[0] | |
55 | - | |
56 | - if os_locale: | |
57 | - if os_locale in locales_dict.keys(): | |
58 | - default_locale = os_locale | |
59 | - else: | |
60 | - for l in locales_dict: | |
61 | - if l.startswith(os_locale): | |
62 | - default_locale = l | |
63 | - return default_locale | |
64 | - | |
65 | -def InstallLanguage(language): | |
66 | - language_dir = os.path.abspath(os.path.join('..','locale')) | |
67 | - if os.path.isdir(language_dir): | |
68 | - lang = gettext.translation('invesalius', language_dir,\ | |
69 | - languages=[language], codeset='utf8') | |
70 | - # Using unicode | |
71 | - lang.install(unicode=1) | |
72 | - return lang.ugettext | |
73 | - else: | |
74 | - return False | |
28 | + | |
29 | +import utils as utl | |
30 | + | |
31 | +def GetLocales(): | |
32 | + """Return a dictionary which defines supported languages""" | |
33 | + d = utl.TwoWaysDictionary ({'zh_TW': u'中文', | |
34 | + 'en': u'English', | |
35 | + 'es': u'Español', | |
36 | + 'pt_BR': u'Português (Brasil)', | |
37 | + 'fr':u'Français', | |
38 | + 'el_GR':u'Ελληνική', | |
39 | + #'it_IT':'Italiano', | |
40 | + 'de_DE': 'Deutsch'}) | |
41 | + return d | |
42 | + | |
43 | +def GetLocaleOS(): | |
44 | + """Return language of the operating system.""" | |
45 | + if sys.platform == 'darwin': | |
46 | + #The app can't get the location then it has to set | |
47 | + #it manually returning english | |
48 | + #locale.setlocale(locale.LC_ALL, "") | |
49 | + #return locale.getlocale()[0] | |
50 | + return "en" | |
51 | + | |
52 | + return locale.getdefaultlocale()[0] | |
53 | + | |
54 | +def InstallLanguage(language): | |
55 | + language_dir = os.path.abspath(os.path.join('..','locale')) | |
56 | + lang = gettext.translation('invesalius', language_dir,\ | |
57 | + languages=[language], codeset='utf8') | |
58 | + # Using unicode | |
59 | + lang.install(unicode=1) | |
60 | + return lang.ugettext | ... | ... |
invesalius/invesalius.py
1 | -#!/usr/bin/env python2.6 | |
2 | -# NOTE: #!/usr/local/bin/python simply will *not* work if python is not | |
3 | -# installed in that exact location and, therefore, we're using the code | |
4 | -# above | |
1 | +#!/usr/local/bin/python | |
5 | 2 | #-------------------------------------------------------------------------- |
6 | 3 | # Software: InVesalius - Software de Reconstrucao 3D de Imagens Medicas |
7 | 4 | # Copyright: (C) 2001 Centro de Pesquisas Renato Archer |
... | ... | @@ -21,25 +18,15 @@ |
21 | 18 | # detalhes. |
22 | 19 | #------------------------------------------------------------------------- |
23 | 20 | |
21 | + | |
24 | 22 | import multiprocessing |
25 | 23 | import optparse as op |
26 | 24 | import os |
27 | 25 | import sys |
28 | - | |
29 | -if sys.platform == 'win32': | |
30 | - import _winreg | |
31 | -else: | |
32 | - import wxversion | |
33 | - wxversion.ensureMinimal('2.8-unicode', optionsRequired=True) | |
34 | - wxversion.select('2.8-unicode', optionsRequired=True) | |
26 | +import shutil | |
35 | 27 | |
36 | 28 | import wx |
37 | 29 | import wx.lib.pubsub as ps |
38 | -import wx.lib.agw.advancedsplash as agw | |
39 | -if sys.platform == 'linux2': | |
40 | - _SplashScreen = agw.AdvancedSplash | |
41 | -else: | |
42 | - _SplashScreen = wx.SplashScreen | |
43 | 30 | |
44 | 31 | import gui.language_dialog as lang_dlg |
45 | 32 | import i18n |
... | ... | @@ -72,7 +59,7 @@ class InVesalius(wx.App): |
72 | 59 | |
73 | 60 | # ------------------------------------------------------------------ |
74 | 61 | |
75 | -class SplashScreen(_SplashScreen): | |
62 | +class SplashScreen(wx.SplashScreen): | |
76 | 63 | """ |
77 | 64 | Splash screen to be shown in InVesalius initialization. |
78 | 65 | """ |
... | ... | @@ -88,20 +75,21 @@ class SplashScreen(_SplashScreen): |
88 | 75 | if not (session.ReadSession()): |
89 | 76 | create_session = True |
90 | 77 | |
78 | + install_lang = 0 | |
91 | 79 | # Check if there is a language set (if session file exists |
92 | - language_exist = session.ReadLanguage() | |
93 | - | |
94 | - if language_exist: | |
80 | + if session.ReadLanguage(): | |
95 | 81 | lang = session.GetLanguage() |
96 | - install = i18n.InstallLanguage(lang) | |
97 | - if install: | |
98 | - _ = install | |
82 | + if (lang != "False"): | |
83 | + _ = i18n.InstallLanguage(lang) | |
84 | + install_lang = 1 | |
99 | 85 | else: |
100 | - language_exist = False | |
86 | + install_lang = 0 | |
87 | + else: | |
88 | + install_lang = 0 | |
101 | 89 | |
102 | 90 | # If no language is set into session file, show dialog so |
103 | 91 | # user can select language |
104 | - if not language_exist: | |
92 | + if install_lang == 0: | |
105 | 93 | dialog = lang_dlg.LanguageDialog() |
106 | 94 | |
107 | 95 | # FIXME: This works ok in linux2, darwin and win32, |
... | ... | @@ -115,6 +103,13 @@ class SplashScreen(_SplashScreen): |
115 | 103 | lang = dialog.GetSelectedLanguage() |
116 | 104 | session.SetLanguage(lang) |
117 | 105 | _ = i18n.InstallLanguage(lang) |
106 | + else: | |
107 | + homedir = self.homedir = os.path.expanduser('~') | |
108 | + invdir = os.path.join(homedir, ".invesalius") | |
109 | + shutil.rmtree(invdir) | |
110 | + sys.exit() | |
111 | + | |
112 | + | |
118 | 113 | |
119 | 114 | # Session file should be created... So we set the recent |
120 | 115 | # choosen language |
... | ... | @@ -138,24 +133,13 @@ class SplashScreen(_SplashScreen): |
138 | 133 | |
139 | 134 | bmp = wx.Image(path).ConvertToBitmap() |
140 | 135 | |
141 | - style = wx.SPLASH_TIMEOUT | wx.SPLASH_CENTRE_ON_SCREEN |\ | |
142 | - wx.FRAME_SHAPED | |
143 | - if sys.platform == 'linux2': | |
144 | - _SplashScreen.__init__(self, | |
145 | - bitmap=bmp, | |
146 | - style=style, | |
147 | - timeout=5000, | |
148 | - id=-1, | |
149 | - parent=None) | |
150 | - else: | |
151 | - _SplashScreen.__init__(self, | |
136 | + style = wx.SPLASH_TIMEOUT | wx.SPLASH_CENTRE_ON_SCREEN | |
137 | + wx.SplashScreen.__init__(self, | |
152 | 138 | bitmap=bmp, |
153 | 139 | splashStyle=style, |
154 | - milliseconds=5000, | |
140 | + milliseconds=1500, | |
155 | 141 | id=-1, |
156 | 142 | parent=None) |
157 | - | |
158 | - | |
159 | 143 | self.Bind(wx.EVT_CLOSE, self.OnClose) |
160 | 144 | |
161 | 145 | # Importing takes sometime, therefore it will be done |
... | ... | @@ -167,7 +151,7 @@ class SplashScreen(_SplashScreen): |
167 | 151 | self.main = Frame(None) |
168 | 152 | self.control = Controller(self.main) |
169 | 153 | |
170 | - self.fc = wx.FutureCall(2000, self.ShowMain) | |
154 | + self.fc = wx.FutureCall(1, self.ShowMain) | |
171 | 155 | |
172 | 156 | def OnClose(self, evt): |
173 | 157 | # Make sure the default handler runs too so this window gets |
... | ... | @@ -215,10 +199,7 @@ def parse_comand_line(): |
215 | 199 | |
216 | 200 | # If debug argument... |
217 | 201 | if options.debug: |
218 | - try: | |
219 | - ps.Publisher().subscribe(print_events, ps.ALL_TOPICS) | |
220 | - except AttributeError: | |
221 | - ps.Publisher().subscribe(print_events, ps.pub.getStrAllTopics()) | |
202 | + ps.Publisher().subscribe(print_events, ps.ALL_TOPICS) | |
222 | 203 | session.debug = 1 |
223 | 204 | |
224 | 205 | # If import DICOM argument... | ... | ... |