Skip to content

Commit 1f2dd66

Browse files
committed
Validate preference values read from disk
1 parent b30ddf8 commit 1f2dd66

File tree

2 files changed

+137
-0
lines changed

2 files changed

+137
-0
lines changed

.vscode/launch.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
55
"version": "0.2.0",
66
"configurations": [
7+
8+
79
{
810
"name": "Python: Current File",
911
"type": "python",

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

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ def __init__(self,parent):
4141
# load in the system values followed by the user prefs (if any)
4242
UserInterface.load_default_preferences()
4343
UserInterface.load_user_preferences()
44+
UserInterface.validate_user_preferences()
4445

4546
if "MathCATPreferencesLastCategory" in user_preferences:
4647
#set the categories selection to what we used on last run
@@ -166,6 +167,139 @@ def load_user_preferences():
166167
# merge with the default preferences, overwriting with the user's values
167168
user_preferences.update(yaml.load(f, Loader=yaml.FullLoader))
168169

170+
def validate_user_preferences():
171+
global user_preferences
172+
#check each user preference value to ensure it is present and valid, set default value if not
173+
174+
# Speech:
175+
#Impairment: Blindness # LearningDisability, LowVision, Blindness
176+
valid_test_passed = False
177+
try:
178+
if user_preferences["Speech"]["Impairment"] in ["LearningDisability", "LowVision", "Blindness"]:
179+
valid_test_passed = True
180+
except:
181+
pass
182+
if not valid_test_passed:
183+
user_preferences["Speech"]["Impairment"] = "Blindness"
184+
185+
# Verbosity: Medium # Terse, Medium, Verbose
186+
valid_test_passed = False
187+
try:
188+
if user_preferences["Speech"]["Verbosity"] in ["Terse", "Medium", "Verbose"]:
189+
valid_test_passed = True
190+
except:
191+
pass
192+
if not valid_test_passed:
193+
user_preferences["Speech"]["Verbosity"] = "Medium"
194+
195+
# MathRate: 100 # Change from text speech rate (%)
196+
valid_test_passed = False
197+
try:
198+
if (user_preferences["Speech"]["MathRate"] >= 10) and (user_preferences["Speech"]["MathRate"] <= 1000):
199+
valid_test_passed = True
200+
except:
201+
pass
202+
if not valid_test_passed:
203+
user_preferences["Speech"]["MathRate"] = "100"
204+
205+
# SpeechStyle: ClearSpeak # Any known speech style (falls back to ClearSpeak)
206+
#no validity test
207+
208+
# SubjectArea: General # FIX: still working on this
209+
#no validity test
210+
211+
# Chemistry: SpellOut # SpellOut (H 2 0), AsCompound (Water), Off (H sub 2 O)
212+
valid_test_passed = False
213+
try:
214+
if user_preferences["Speech"]["Chemistry"] in ["SpellOut", "AsCompound", "Off"]:
215+
valid_test_passed = True
216+
except:
217+
pass
218+
if not valid_test_passed:
219+
user_preferences["Speech"]["Chemistry"] = "SpellOut"
220+
221+
#Navigation:
222+
# NavMode: Enhanced # Enhanced, Simple, Character
223+
valid_test_passed = False
224+
try:
225+
if user_preferences["Navigation"]["NavMode"] in ["Enhanced", "Simple", "Character"]:
226+
valid_test_passed = True
227+
except:
228+
pass
229+
if not valid_test_passed:
230+
user_preferences["Navigation"]["NavMode"] = "Enhanced"
231+
232+
# ResetNavMode: false # remember previous value and use it
233+
valid_test_passed = False
234+
try:
235+
if (user_preferences["Navigation"]["ResetNavMode"]) or (not user_preferences["Navigation"]["ResetNavMode"]) :
236+
valid_test_passed = True
237+
except:
238+
pass
239+
if not valid_test_passed:
240+
user_preferences["Navigation"]["ResetNavMode"] = "false"
241+
242+
# Overview: false # speak the expression or give a description/overview
243+
valid_test_passed = False
244+
try:
245+
if (user_preferences["Navigation"]["Overview"]) or True :
246+
valid_test_passed = True
247+
except:
248+
pass
249+
if not valid_test_passed:
250+
user_preferences["Navigation"]["Overview"] = "false"
251+
252+
# ResetOverview: true # remember previous value and use it
253+
valid_test_passed = False
254+
try:
255+
if (user_preferences["Navigation"]["ResetOverview"]) or True :
256+
valid_test_passed = True
257+
except:
258+
pass
259+
if not valid_test_passed:
260+
user_preferences["Navigation"]["ResetOverview"] = "true"
261+
262+
# NavVerbosity: Medium # Terse, Medium, Full (words to say for nav command)
263+
valid_test_passed = False
264+
try:
265+
if user_preferences["Navigation"]["NavVerbosity"] in ["Terse", "Medium", "Full"]:
266+
valid_test_passed = True
267+
except:
268+
pass
269+
if not valid_test_passed:
270+
user_preferences["Navigation"]["NavVerbosity"] = "Medium"
271+
272+
# AutoZoomOut: true # Auto zoom out of 2D exprs (use shift-arrow to force zoom out if unchecked)
273+
valid_test_passed = False
274+
try:
275+
if (user_preferences["Navigation"]["AutoZoomOut"]) or True :
276+
valid_test_passed = True
277+
except:
278+
pass
279+
if not valid_test_passed:
280+
user_preferences["Navigation"]["AutoZoomOut"] = "true"
281+
282+
#Braille:
283+
# BrailleNavHighlight: EndPoints # Highlight with dots 7 & 8 the current nav node -- values are Off, FirstChar, EndPoints, All
284+
valid_test_passed = False
285+
try:
286+
if user_preferences["Braille"]["BrailleNavHighlight"] in ["Off", "FirstChar", "EndPoints", "All"]:
287+
valid_test_passed = True
288+
except:
289+
pass
290+
if not valid_test_passed:
291+
user_preferences["Braille"]["BrailleNavHighlight"] = "EndPoints"
292+
293+
# BrailleCode: "Nemeth" # Any supported braille code (currently Nemeth, UEB)
294+
valid_test_passed = False
295+
try:
296+
if user_preferences["Braille"]["BrailleCode"] in ["Nemeth", "UEB"]:
297+
valid_test_passed = True
298+
except:
299+
pass
300+
if not valid_test_passed:
301+
user_preferences["Braille"]["BrailleCode"] = "Nemeth"
302+
169303
def write_user_preferences():
170304
if not os.path.exists(UserInterface.path_to_user_preferences_folder()):
171305
#create a folder for the user preferences
@@ -195,6 +329,7 @@ def OnClickApply(self,event):
195329

196330
def OnClickReset(self,event):
197331
UserInterface.load_default_preferences()
332+
UserInterface.validate_user_preferences()
198333
UserInterface.set_ui_values(self)
199334

200335
def OnClickHelp(self,event):

0 commit comments

Comments
 (0)