Commit fa05cea1d177448f8dc376f0c31be6be8cec8811

Authored by Paulo Henrique Junqueira Amorim
1 parent 30442c8c

FIX: Fixed selection of language bug, thank's Bruno Lara Bottazzini

invesalius/gui/language_dialog.py
@@ -53,7 +53,7 @@ class LanguageDialog(wx.Dialog): @@ -53,7 +53,7 @@ class LanguageDialog(wx.Dialog):
53 # Find out OS locale 53 # Find out OS locale
54 self.os_locale = i18n.GetLocaleOS() 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 # Default selection will be English 58 # Default selection will be English
59 selection = self.locales_key.index('en') 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 # Software: InVesalius - Software de Reconstrucao 3D de Imagens Medicas 5 # Software: InVesalius - Software de Reconstrucao 3D de Imagens Medicas
6 # Copyright: (C) 2001 Centro de Pesquisas Renato Archer 6 # Copyright: (C) 2001 Centro de Pesquisas Renato Archer
@@ -25,50 +25,36 @@ import locale @@ -25,50 +25,36 @@ import locale
25 import gettext 25 import gettext
26 import os 26 import os
27 import sys 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 # Software: InVesalius - Software de Reconstrucao 3D de Imagens Medicas 3 # Software: InVesalius - Software de Reconstrucao 3D de Imagens Medicas
7 # Copyright: (C) 2001 Centro de Pesquisas Renato Archer 4 # Copyright: (C) 2001 Centro de Pesquisas Renato Archer
@@ -21,25 +18,15 @@ @@ -21,25 +18,15 @@
21 # detalhes. 18 # detalhes.
22 #------------------------------------------------------------------------- 19 #-------------------------------------------------------------------------
23 20
  21 +
24 import multiprocessing 22 import multiprocessing
25 import optparse as op 23 import optparse as op
26 import os 24 import os
27 import sys 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 import wx 28 import wx
37 import wx.lib.pubsub as ps 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 import gui.language_dialog as lang_dlg 31 import gui.language_dialog as lang_dlg
45 import i18n 32 import i18n
@@ -72,7 +59,7 @@ class InVesalius(wx.App): @@ -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 Splash screen to be shown in InVesalius initialization. 64 Splash screen to be shown in InVesalius initialization.
78 """ 65 """
@@ -88,20 +75,21 @@ class SplashScreen(_SplashScreen): @@ -88,20 +75,21 @@ class SplashScreen(_SplashScreen):
88 if not (session.ReadSession()): 75 if not (session.ReadSession()):
89 create_session = True 76 create_session = True
90 77
  78 + install_lang = 0
91 # Check if there is a language set (if session file exists 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 lang = session.GetLanguage() 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 else: 85 else:
100 - language_exist = False 86 + install_lang = 0
  87 + else:
  88 + install_lang = 0
101 89
102 # If no language is set into session file, show dialog so 90 # If no language is set into session file, show dialog so
103 # user can select language 91 # user can select language
104 - if not language_exist: 92 + if install_lang == 0:
105 dialog = lang_dlg.LanguageDialog() 93 dialog = lang_dlg.LanguageDialog()
106 94
107 # FIXME: This works ok in linux2, darwin and win32, 95 # FIXME: This works ok in linux2, darwin and win32,
@@ -115,6 +103,13 @@ class SplashScreen(_SplashScreen): @@ -115,6 +103,13 @@ class SplashScreen(_SplashScreen):
115 lang = dialog.GetSelectedLanguage() 103 lang = dialog.GetSelectedLanguage()
116 session.SetLanguage(lang) 104 session.SetLanguage(lang)
117 _ = i18n.InstallLanguage(lang) 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 # Session file should be created... So we set the recent 114 # Session file should be created... So we set the recent
120 # choosen language 115 # choosen language
@@ -138,24 +133,13 @@ class SplashScreen(_SplashScreen): @@ -138,24 +133,13 @@ class SplashScreen(_SplashScreen):
138 133
139 bmp = wx.Image(path).ConvertToBitmap() 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 bitmap=bmp, 138 bitmap=bmp,
153 splashStyle=style, 139 splashStyle=style,
154 - milliseconds=5000, 140 + milliseconds=1500,
155 id=-1, 141 id=-1,
156 parent=None) 142 parent=None)
157 -  
158 -  
159 self.Bind(wx.EVT_CLOSE, self.OnClose) 143 self.Bind(wx.EVT_CLOSE, self.OnClose)
160 144
161 # Importing takes sometime, therefore it will be done 145 # Importing takes sometime, therefore it will be done
@@ -167,7 +151,7 @@ class SplashScreen(_SplashScreen): @@ -167,7 +151,7 @@ class SplashScreen(_SplashScreen):
167 self.main = Frame(None) 151 self.main = Frame(None)
168 self.control = Controller(self.main) 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 def OnClose(self, evt): 156 def OnClose(self, evt):
173 # Make sure the default handler runs too so this window gets 157 # Make sure the default handler runs too so this window gets
@@ -215,10 +199,7 @@ def parse_comand_line(): @@ -215,10 +199,7 @@ def parse_comand_line():
215 199
216 # If debug argument... 200 # If debug argument...
217 if options.debug: 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 session.debug = 1 203 session.debug = 1
223 204
224 # If import DICOM argument... 205 # If import DICOM argument...