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 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...
... ...