Skip to content

Commit 17e030b

Browse files
committed
Add language names to list box
Add language names to list box based on the language codes derived from the folder names.
1 parent a023f7b commit 17e030b

File tree

2 files changed

+45
-12
lines changed

2 files changed

+45
-12
lines changed

NVDA-addon/addon/globalPlugins/MathCAT/MathCATPreferences.py

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -60,19 +60,40 @@ def path_to_languages_folder():
6060
return os.path.expanduser('~')+"\\AppData\\Roaming\\nvda\\addons\\mathCAT\\globalPlugins\\MathCAT\\Rules\\Languages"
6161

6262
def GetLanguages(self):
63-
#clear the language choices
63+
# initialise the language list
64+
languages_dict = {}
65+
try:
66+
#load list of languages
67+
full_path_to_languages_dict = os.path.expanduser('~') + "\\AppData\\Roaming\\nvda\\addons\\MathCAT\\globalPlugins\\MathCAT\\Rules\\Languages\\languages_list.yaml"
68+
with open(full_path_to_languages_dict, encoding='utf-8') as f:
69+
languages_dict = yaml.load(f, Loader=yaml.FullLoader)
70+
except:
71+
#something went wrong loading the list of languages
72+
languages_dict["en"] = "English"
73+
74+
#clear the language names in the dialog
6475
self.m_choiceLanguage.Clear()
65-
#populate the language choices
76+
77+
#populate the available language names in the dialog
6678
for f in os.listdir(UserInterface.path_to_languages_folder()):
67-
if os.path.isdir(UserInterface.path_to_languages_folder()+"\\"+f):
68-
self.m_choiceLanguage.Append(f)
79+
if os.path.isdir(UserInterface.path_to_languages_folder()+"\\"+f):
80+
if languages_dict.get(f, 'missing') == 'missing':
81+
self.m_choiceLanguage.Append(f + " (" + f + ")")
82+
else:
83+
self.m_choiceLanguage.Append(languages_dict[f] + " (" + f + ")")
84+
85+
def GetLanguageCode(self):
86+
langselection = self.m_choiceLanguage.GetStringSelection()
87+
langcode = langselection[langselection.find("(")+1 : langselection.find(")")]
88+
return langcode
6989

7090
def GetSpeechStyles(self, this_SpeechStyle):
7191
#clear the SpeechStyle choices
7292
self.m_choiceSpeechStyle.Clear()
73-
#get the currently selected language
74-
this_language = self.m_choiceLanguage.GetStringSelection()
75-
this_path = os.path.expanduser('~')+"\\AppData\\Roaming\\nvda\\addons\\MathCAT\\globalPlugins\\MathCAT\\Rules\\Languages\\"+this_language+"\\*_Rules.yaml"
93+
#get the currently selected language code
94+
this_language_code = UserInterface.GetLanguageCode(self)
95+
96+
this_path = os.path.expanduser('~')+"\\AppData\\Roaming\\nvda\\addons\\MathCAT\\globalPlugins\\MathCAT\\Rules\\Languages\\"+this_language_code+"\\*_Rules.yaml"
7697
#populate the m_choiceSpeechStyle choices
7798
for f in glob.glob(this_path):
7899
fname = os.path.basename(f)
@@ -89,12 +110,24 @@ def set_ui_values(self):
89110
try:
90111
self.m_choiceImpairment.SetSelection(Speech_Impairment.index(user_preferences["Speech"]["Impairment"]))
91112
try:
92-
self.m_choiceLanguage.SetStringSelection(user_preferences["Speech"]["Language"])
113+
langpref = user_preferences["Speech"]["Language"]
114+
i = 0
115+
while "(" + langpref + ")" not in self.m_choiceLanguage.GetString(i):
116+
i = i + 1
117+
if i == self.m_choiceLanguage.GetCount():
118+
break
119+
if "(" + langpref + ")" in self.m_choiceLanguage.GetString(i):
120+
self.m_choiceLanguage.SetSelection(i)
121+
else:
122+
self.m_choiceLanguage.SetSelection(0)
93123
except:
94124
#the language in the settings file is not in the folder structure, something went wrong, set to the first in the list
95125
self.m_choiceLanguage.SetSelection(0)
96-
#now get the available SpeechStyles from the folder structure and set to the preference setting is possible
97-
self.GetSpeechStyles(user_preferences["Speech"]["SpeechStyle"])
126+
try:
127+
#now get the available SpeechStyles from the folder structure and set to the preference setting is possible
128+
self.GetSpeechStyles(user_preferences["Speech"]["SpeechStyle"])
129+
except:
130+
self.m_choiceSpeechStyle.Append("Error when setting SpeechStyle for " + self.m_choiceLanguage.GetStringSelection())
98131
#set the rest of the UI elements
99132
self.m_choiceSpeechAmount.SetSelection(Speech_Verbosity.index(user_preferences["Speech"]["Verbosity"]))
100133
self.m_sliderRelativeSpeed.SetValue(user_preferences["Speech"]["MathRate"])
@@ -119,7 +152,7 @@ def get_ui_values(self):
119152
global user_preferences
120153
# read the values from the UI and update the user preferences dictionary
121154
user_preferences["Speech"]["Impairment"] = Speech_Impairment[self.m_choiceImpairment.GetSelection()]
122-
user_preferences["Speech"]["Language"] = self.m_choiceLanguage.GetStringSelection()
155+
user_preferences["Speech"]["Language"] = self.GetLanguageCode()
123156
user_preferences["Speech"]["SpeechStyle"] = self.m_choiceSpeechStyle.GetStringSelection()
124157
user_preferences["Speech"]["Verbosity"] = Speech_Verbosity[self.m_choiceSpeechAmount.GetSelection()]
125158
user_preferences["Speech"]["MathRate"] = self.m_sliderRelativeSpeed.GetValue()

NVDA-addon/addon/globalPlugins/MathCAT/MathCATgui.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ def __init__( self, parent ):
7878

7979
bSizer7.Add( self.m_staticText311, 0, wx.ALL, 5 )
8080

81-
m_choiceLanguageChoices = [ _(u"xxxxxxxxxxxxxxxx") ]
81+
m_choiceLanguageChoices = [ _(u"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") ]
8282
self.m_choiceLanguage = wx.Choice( self.m_panelSpeech, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_choiceLanguageChoices, 0 )
8383
self.m_choiceLanguage.SetSelection( 0 )
8484
bSizer7.Add( self.m_choiceLanguage, 0, wx.ALL, 5 )

0 commit comments

Comments
 (0)