import os\r
import sys\r
from cStringIO import StringIO\r
-from configobj import ConfigObj\r
+from configobj import ConfigObj, ConfigObjError\r
from validate import Validator\r
from logHandler import log\r
- import ctypes\r
- \r
- CSIDL_APPDATA=26\r
- MAX_PATH=256\r
+ import shlobj\r
\r
+def validateConfig(configObj,validator,validationResult=None,keyList=None):\r
+ if validationResult is None:\r
+ validationResult=configObj.validate(validator,preserve_errors=True)\r
+ if validationResult is True:\r
+ return None #No errors\r
+ if validationResult is False:\r
+ return _("Badly formed configuration file")\r
+ errorStrings=[]\r
+ for k,v in validationResult.iteritems():\r
+ if v is True:\r
+ continue\r
+ newKeyList=list(keyList) if keyList is not None else []\r
+ newKeyList.append(k)\r
+ if isinstance(v,dict):\r
+ errorStrings.extend(validateConfig(configObj[k],validator,v,newKeyList))\r
+ else:\r
+ #If a key is invalid configObj does not record its default, thus we need to get and set the default manually \r
+ defaultValue=validator.get_default_value(configObj.configspec[k])\r
+ configObj[k]=defaultValue\r
+ if k not in configObj.defaults:\r
+ configObj.defaults.append(k)\r
+ errorStrings.append(_("%s: %s, defaulting to %s")%(k,v,defaultValue))\r
+ return errorStrings\r
+\r
val = Validator()\r
\r
#: The configuration specification\r
}],\r
options = {"py2exe": {\r
"bundle_files": 3,\r
- "excludes": ["comInterfaces"],\r
+ "excludes": ["comInterfaces", "Tkinter"],\r
- "packages": ["NVDAObjects","virtualBuffers"],\r
- "includes": getOptionalIncludes(),\r
+ "packages": ["NVDAObjects","virtualBuffers","appModules","brailleDisplayDrivers","synthDrivers"],\r
}},\r
data_files=[\r
(".",glob("*.dll")+glob("*.manifest")+["builtin.dic"]),\r