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