|
@@ -129,6 +129,7 @@ class PreferencesBaseDialog(wx.Dialog):
|
|
|
group, key, subkey, subkey1 = gks.split(':')
|
|
|
value = self.settings.Get(group, key, [subkey, subkey1])
|
|
|
win = self.FindWindowById(self.winId[gks])
|
|
|
+
|
|
|
if win.GetName() in ('GetValue', 'IsChecked'):
|
|
|
value = win.SetValue(value)
|
|
|
elif win.GetName() == 'GetSelection':
|
|
@@ -154,6 +155,36 @@ class PreferencesBaseDialog(wx.Dialog):
|
|
|
def OnCancel(self, event):
|
|
|
"""!Button 'Cancel' pressed"""
|
|
|
self.Close()
|
|
|
+
|
|
|
+ def _saveEnv(self, lang):
|
|
|
+ """!Save environmental variables
|
|
|
+
|
|
|
+ @param lang locale code (eg. 'C')
|
|
|
+ """
|
|
|
+ envFile = os.path.join(GetSettingsPath(), 'bashrc')
|
|
|
+
|
|
|
+ # read variables
|
|
|
+ if os.path.exists(envFile):
|
|
|
+ rcfile = open(os.path.join(GetSettingsPath(), 'bashrc'), "r")
|
|
|
+ rclines = rcfile.readlines()
|
|
|
+ rcfile.close()
|
|
|
+ else:
|
|
|
+ rclines = []
|
|
|
+
|
|
|
+ rcfile = open(envFile, "w")
|
|
|
+
|
|
|
+ # save language settings
|
|
|
+ grasslang = False
|
|
|
+ for line in rclines:
|
|
|
+ if 'GRASS_LANG' in line:
|
|
|
+ rcfile.write('GRASS_LANG: %s\n' % lang)
|
|
|
+ grasslang = True
|
|
|
+ else:
|
|
|
+ rcfile.write(line)
|
|
|
+ if not grasslang:
|
|
|
+ rcfile.write('GRASS_LANG: %s\n' % lang)
|
|
|
+
|
|
|
+ rcfile.close()
|
|
|
|
|
|
def OnSave(self, event):
|
|
|
"""!Button 'Save' pressed
|
|
@@ -164,21 +195,9 @@ class PreferencesBaseDialog(wx.Dialog):
|
|
|
self.parent.goutput.WriteLog(_('Settings saved to file \'%s\'.') % self.settings.filePath)
|
|
|
fileSettings = {}
|
|
|
self.settings.ReadSettingsFile(settings = fileSettings)
|
|
|
- id_loc = fileSettings['language']['locale']['lc_all']
|
|
|
- rcfile = open(os.path.join(GetSettingsPath(), 'bashrc'),"r")
|
|
|
- rclines = rcfile.readlines()
|
|
|
- rcfile.close()
|
|
|
- rcfile = open(os.path.join(GetSettingsPath(), 'bashrc'),"w")
|
|
|
- grasslang = False
|
|
|
- for line in rclines:
|
|
|
- if 'GRASS_LANG' in line:
|
|
|
- rcfile.write('GRASS_LANG: %s\n' % self.locales[id_loc])
|
|
|
- grasslang = True
|
|
|
- else:
|
|
|
- rcfile.write('%s' % line)
|
|
|
- if not grasslang:
|
|
|
- rcfile.write('GRASS_LANG: %s\n' % self.locales[id_loc])
|
|
|
- rcfile.close()
|
|
|
+
|
|
|
+ self._saveEnv(lang = fileSettings['language']['locale']['lc_all'])
|
|
|
+
|
|
|
event = wxSettingsChanged()
|
|
|
wx.PostEvent(self, event)
|
|
|
self.Close()
|
|
@@ -443,14 +462,13 @@ class PreferencesDialog(PreferencesBaseDialog):
|
|
|
flag = wx.ALIGN_LEFT |
|
|
|
wx.ALIGN_CENTER_VERTICAL,
|
|
|
pos = (row, 0))
|
|
|
- self.locales = self.settings.Get(group = 'language', key = 'locale',
|
|
|
- subkey = 'choices', internal = True)
|
|
|
+ locales = self.settings.Get(group = 'language', key = 'locale',
|
|
|
+ subkey = 'choices', internal = True)
|
|
|
+ loc = self.settings.Get(group = 'language', key = 'locale', subkey = 'lc_all')
|
|
|
elementList = wx.Choice(parent = panel, id = wx.ID_ANY, size = (325, -1),
|
|
|
- choices = self.locales, name = "GetSelection")
|
|
|
- if self.settings.Get(group = 'language', key = 'locale',
|
|
|
- subkey = 'lc_all'):
|
|
|
- elementList.SetSelection(self.settings.Get(group = 'language',
|
|
|
- key = 'locale', subkey = 'lc_all'))
|
|
|
+ choices = locales, name = "GetStringSelection")
|
|
|
+ if loc in locales:
|
|
|
+ elementList.SetStringSelection(loc)
|
|
|
self.winId['language:locale:lc_all'] = elementList.GetId()
|
|
|
|
|
|
gridSizer.Add(item = elementList,
|