[GRASS-SVN] r51782 - in grass/branches/develbranch_6:
gui/wxpython/core gui/wxpython/gui_core lib/init
svn_grass at osgeo.org
svn_grass at osgeo.org
Sat May 26 09:42:27 EDT 2012
Author: neteler
Date: 2012-05-26 06:42:27 -0700 (Sat, 26 May 2012)
New Revision: 51782
Modified:
grass/branches/develbranch_6/gui/wxpython/core/settings.py
grass/branches/develbranch_6/gui/wxpython/gui_core/preferences.py
grass/branches/develbranch_6/lib/init/init.sh
Log:
backport of wxGUI language selector (bat update missing for Windows)
Modified: grass/branches/develbranch_6/gui/wxpython/core/settings.py
===================================================================
--- grass/branches/develbranch_6/gui/wxpython/core/settings.py 2012-05-26 13:41:56 UTC (rev 51781)
+++ grass/branches/develbranch_6/gui/wxpython/core/settings.py 2012-05-26 13:42:27 UTC (rev 51782)
@@ -16,12 +16,14 @@
(>=v2). Read the file COPYING that comes with GRASS for details.
@author Martin Landa <landa.martin gmail.com>
+ at author Luca Delucchi <lucadeluge gmail.com> (language choice)
"""
import os
import sys
import copy
import types
+import locale
from core import globalvar
from core.gcmd import GException, GError
@@ -48,7 +50,29 @@
# define internal settings
self._internalSettings() # -> self.internalSettings
+
+ def _generateLocale(self):
+ """!Generate locales
+ """
+ # collect available locales
+ self.locs = list(set(locale.locale_alias.values()))
+ self.locs.append('en_GB.UTF-8')
+ self.locs.sort()
+ try:
+ loc = list(locale.getdefaultlocale())
+ except ValueError, e:
+ sys.stderr.write(_('ERROR: %s\n') % str(e))
+ return 'C'
+
+ if loc[1] == 'UTF8':
+ loc[1] = 'UTF-8'
+ code_loc = "%s.%s" % (loc[0], loc[1])
+ if code_loc in self.locs:
+ return code_loc
+
+ return 'C'
+
def _defaultSettings(self):
"""!Define default settings
"""
@@ -57,6 +81,8 @@
except KeyError:
projFile = ''
+ id_loc = self._generateLocale()
+
self.defaultSettings = {
#
# general
@@ -127,6 +153,14 @@
}, # grass2, grass, silk
},
#
+ # language
+ #
+ 'language': {
+ 'locale': {
+ 'lc_all' : id_loc
+ }
+ },
+ #
# display
#
'display': {
@@ -675,6 +709,8 @@
_("Collapse all except current"),
_("Collapse all"),
_("Expand all"))
+
+ self.internalSettings['language']['locale']['choices'] = tuple(self.locs)
self.internalSettings['atm']['leftDbClick']['choices'] = (_('Edit selected record'),
_('Display selected'))
@@ -967,10 +1003,10 @@
"""
if group not in dict:
dict[group] = {}
-
+
if key not in dict[group]:
dict[group][key] = {}
-
+
if type(subkey) == types.ListType:
# TODO: len(subkey) > 2
if subkey[0] not in dict[group][key]:
Modified: grass/branches/develbranch_6/gui/wxpython/gui_core/preferences.py
===================================================================
--- grass/branches/develbranch_6/gui/wxpython/gui_core/preferences.py 2012-05-26 13:41:56 UTC (rev 51781)
+++ grass/branches/develbranch_6/gui/wxpython/gui_core/preferences.py 2012-05-26 13:42:27 UTC (rev 51782)
@@ -23,11 +23,13 @@
@author Michael Barton (Arizona State University)
@author Martin Landa <landa.martin gmail.com>
@author Vaclav Petras <wenzeslaus gmail.com> (menu customization)
+ at author Luca Delucchi <lucadeluge gmail.com> (language choice)
"""
import os
import sys
import copy
+import locale
try:
import pwd
havePwd = True
@@ -44,7 +46,7 @@
from core import globalvar
from core.gcmd import RunCommand
-from core.utils import ListOfMapsets, GetColorTables, ReadEpsgCodes
+from core.utils import ListOfMapsets, GetColorTables, ReadEpsgCodes, GetSettingsPath
from core.settings import UserSettings
wxSettingsChanged, EVT_SETTINGS_CHANGED = NewEvent()
@@ -127,6 +129,7 @@
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':
@@ -152,7 +155,7 @@
def OnCancel(self, event):
"""!Button 'Cancel' pressed"""
self.Close()
-
+
def OnSave(self, event):
"""!Button 'Save' pressed
Posts event EVT_SETTINGS_CHANGED.
@@ -160,6 +163,9 @@
if self._updateSettings():
self.settings.SaveToFile()
self.parent.goutput.WriteLog(_('Settings saved to file \'%s\'.') % self.settings.filePath)
+ lang = UserSettings.Get(group = 'language', key = 'locale', subkey = 'lc_all')
+ if lang:
+ RunCommand('g.gisenv', set = 'LANG=%s' % lang)
event = wxSettingsChanged()
wx.PostEvent(self, event)
self.Close()
@@ -408,6 +414,36 @@
pos = (row, 1))
#
+ # languages
+ #
+ box = wx.StaticBox (parent = panel, id = wx.ID_ANY, label = " %s " % _("Language settings"))
+ sizer = wx.StaticBoxSizer(box, wx.VERTICAL)
+
+ gridSizer = wx.GridBagSizer (hgap = 3, vgap = 3)
+ gridSizer.AddGrowableCol(0)
+ sizer.Add(item = gridSizer, proportion = 1, flag = wx.ALL | wx.EXPAND, border = 5)
+ border.Add(item = sizer, proportion = 0, flag = wx.ALL | wx.EXPAND, border = 3)
+
+ row = 0
+ gridSizer.Add(item = wx.StaticText(parent = panel, id = wx.ID_ANY,
+ label = _("Choose language (requires to save and GRASS restart):")),
+ flag = wx.ALIGN_LEFT |
+ wx.ALIGN_CENTER_VERTICAL,
+ pos = (row, 0))
+ 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 = locales, name = "GetStringSelection")
+ if loc in locales:
+ elementList.SetStringSelection(loc)
+ self.winId['language:locale:lc_all'] = elementList.GetId()
+
+ gridSizer.Add(item = elementList,
+ flag = wx.ALIGN_RIGHT |
+ wx.ALIGN_CENTER_VERTICAL,
+ pos = (row, 1))
+ #
# appearence
#
box = wx.StaticBox (parent = panel, id = wx.ID_ANY, label = " %s " % _("Appearance settings"))
@@ -443,7 +479,7 @@
#
row += 1
gridSizer.Add(item = wx.StaticText(parent = panel, id = wx.ID_ANY,
- label = _("Menu style (requires GUI restart):")),
+ label = _("Menu style (requires to save and GUI restart):")),
flag = wx.ALIGN_LEFT |
wx.ALIGN_CENTER_VERTICAL,
pos = (row, 0))
@@ -589,7 +625,6 @@
flag = wx.ALIGN_RIGHT,
pos = (row, 1))
-
#
# Statusbar mode
#
@@ -1195,7 +1230,6 @@
winCode.SetValue('')
win.SetValue('')
-
try:
win.SetValue(self.epsgCodeDict[code][1].replace('<>', '').strip())
except KeyError:
@@ -1450,7 +1484,6 @@
title = _('Manage access to mapsets'),
size = (350, 400),
style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, **kwargs):
-
wx.Dialog.__init__(self, parent, id, title, size = size, style = style, **kwargs)
self.all_mapsets_ordered = ListOfMapsets(get = 'ordered')
Modified: grass/branches/develbranch_6/lib/init/init.sh
===================================================================
--- grass/branches/develbranch_6/lib/init/init.sh 2012-05-26 13:41:56 UTC (rev 51781)
+++ grass/branches/develbranch_6/lib/init/init.sh 2012-05-26 13:42:27 UTC (rev 51782)
@@ -232,7 +232,12 @@
if [ -f "$GISRC" ] ; then
GRASS_GUI=`awk '/GRASS_GUI/ {print $2}' "$GISRC"`
fi
-
+
+ # Check for a reference to the language in the grassrc file
+ if [ -f "$GISRC" ] ; then
+ LANG=`awk '/LANG/ {print $2}' "$GISRC"`
+ fi
+
# Set the GRASS user interface to the default if needed
if [ ! "$GRASS_GUI" ] ; then
GRASS_GUI="$DEFAULT_GUI"
More information about the grass-commit
mailing list