Index: .gitignore
===================================================================
--- .gitignore	(revision f0d720b734f4a3a6e4bcb409bb0571f8c8e4983b)
+++ .gitignore	(revision e04f87bea9ce499b11a3a80ef28bb40e5aaa5ca1)
@@ -51,2 +51,5 @@
 /test/sasdataloader/test/test_log.txt
 
+# autogenerated scripts
+/sasview/installer.iss
+
Index: ild_tools/jenkins_win32_build.bat
===================================================================
--- build_tools/jenkins_win32_build.bat	(revision 243fbc08b5507d76300536ef5949cadf6da173c0)
+++ 	(revision )
@@ -1,28 +1,0 @@
-cd %WORKSPACE%
-set PYTHON=c:\python26\python
-set EASY_INSTALL=c:\python26\scripts\easy_install.exe
-set NEXUSDIR="C:\Program Files (x86)\NeXus Data Format\"
-set PATH=c:\python26;c:\mingw\bin;%PATH%
-
-echo %SVN_REVISION%> svn_revision.txt
-
-%PYTHON% check_packages.py
-
-set PYTHONPATH=%WORKSPACE%\sasview-install;%PYTHONPATH%
-
-RD /S /Q sasview-install
-MD sasview-install
-RD /S /Q dist
-RD /S /Q build
-
-rem %PYTHON% -m pip install -t ../sasview-install --no-deps bumps=0.7.5.9
-rem PYTHON% -m pip install -t ../sasview-install --no-deps periodictable=1.3.0
-rem %PYTHON% -m pip install -t ../sasview-install --no-deps pyparsing=1.5.5
-
-%PYTHON% setup.py build -cmingw32
-%PYTHON% setup.py bdist_egg --skip-build
-cd dist
-%EASY_INSTALL% -d ..\sasview-install sasview*.egg
-
-cd %WORKSPACE%\test
-%PYTHON% utest_sasview.py
Index: sview/installer.iss
===================================================================
--- sasview/installer.iss	(revision 50008e349254372d579f42bb3ad653d593d7a40b)
+++ 	(revision )
@@ -1,142 +1,0 @@
-
-; Script generated by the Inno Setup Script Wizard
-
-; and local_config.py located in this directory.
- ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
-[Setup]
-
-ChangesAssociations=yes
-AppName=SasView
-AppVerName=SasView-3.0.0
-AppPublisher=(c) 2009 - 2013, UTK, UMD, NIST, ORNL, ISIS, ESS and ILL
-AppPublisherURL=http://www.sasview.org
-AppSupportURL=http://www.sasview.org
-AppUpdatesURL=http://www.sasview.org 
-ChangesEnvironment=true 
-DefaultDirName={pf}\SasView
-DefaultGroupName=.\SasView-3.0.0
-DisableProgramGroupPage=yes
-LicenseFile=license.txt
-OutputBaseFilename=setupSasView
-SetupIconFile=images\ball.ico
-Compression=lzma
-SolidCompression=yes
-PrivilegesRequired=none
-UsePreviousAppDir=no
-
-
-[Registry]
-Root: HKCR;	Subkey: ".xml\OpenWithList\SasView.exe";	 Flags: uninsdeletekey noerror
-Root: HKCR;	Subkey: ".txt\OpenWithList\SasView.exe";	 Flags: uninsdeletekey noerror
-Root: HKCR;	Subkey: ".asc\OpenWithList\SasView.exe";	 Flags: uninsdeletekey noerror
-Root: HKCR;	Subkey: ".dat\OpenWithList\SasView.exe";	 Flags: uninsdeletekey noerror
-Root: HKCR;	Subkey: ".abs\OpenWithList\SasView.exe";	 Flags: uninsdeletekey noerror
-Root: HKCR;	Subkey: ".d1d\OpenWithList\SasView.exe";	 Flags: uninsdeletekey noerror
-Root: HKCR;	Subkey: ".sans\OpenWithList\SasView.exe";	 Flags: uninsdeletekey noerror
-Root: HKCR;	Subkey: ".nxs\OpenWithList\SasView.exe";	 Flags: uninsdeletekey noerror
-Root: HKCR; Subkey: "applications\SasView.exe\shell\open\command";	ValueType: string; ValueName: "";	ValueData: """{app}\SasView.exe""  ""%1"""; 	 Flags: uninsdeletevalue noerror
-Root: HKCU;	Subkey: "Software\Classes\.xml\OpenWithList\SasView.exe";	 Flags: uninsdeletekey noerror
-Root: HKCU;	Subkey: "Software\Classes\.txt\OpenWithList\SasView.exe";	 Flags: uninsdeletekey noerror
-Root: HKCU;	Subkey: "Software\Classes\.asc\OpenWithList\SasView.exe";	 Flags: uninsdeletekey noerror
-Root: HKCU;	Subkey: "Software\Classes\.dat\OpenWithList\SasView.exe";	 Flags: uninsdeletekey noerror
-Root: HKCU;	Subkey: "Software\Classes\.abs\OpenWithList\SasView.exe";	 Flags: uninsdeletekey noerror
-Root: HKCU;	Subkey: "Software\Classes\.d1d\OpenWithList\SasView.exe";	 Flags: uninsdeletekey noerror
-Root: HKCU;	Subkey: "Software\Classes\.sans\OpenWithList\SasView.exe";	 Flags: uninsdeletekey noerror
-Root: HKCU;	Subkey: "Software\Classes\.nxs\OpenWithList\SasView.exe";	 Flags: uninsdeletekey noerror
-Root: HKCU; Subkey: "Software\Classes\applications\SasView.exe\shell\open\command";	ValueType: string; ValueName: "";	ValueData: """{app}\SasView.exe""  ""%1"""; 	 Flags: uninsdeletevalue noerror
-Root: HKCR;	Subkey: ".svs";	ValueType: string;	ValueName: "";	ValueData: "{app}\SasView.exe";	 Flags: uninsdeletevalue  noerror
-Root: HKCR;	Subkey: ".fitv";	ValueType: string;	ValueName: "";	ValueData: "{app}\SasView.exe";	 Flags: uninsdeletevalue  noerror
-Root: HKCR;	Subkey: ".inv";	ValueType: string;	ValueName: "";	ValueData: "{app}\SasView.exe";	 Flags: uninsdeletevalue  noerror
-Root: HKCR;	Subkey: ".prv";	ValueType: string;	ValueName: "";	ValueData: "{app}\SasView.exe";	 Flags: uninsdeletevalue  noerror
-Root: HKCR; Subkey: "{app}\SasView.exe";	ValueType: string; ValueName: "";	ValueData: "{app}\SasView File";	 Flags: uninsdeletekey  noerror 	
-Root: HKCR; Subkey: "{app}\SasView.exe\shell\open\command";	ValueType: string; ValueName: "";	ValueData: """{app}\SasView.exe""  ""%1""";	 Flags: uninsdeletevalue noerror 	
-Root: HKCR; Subkey: "{app}\images\ball.ico";	ValueType: string; ValueName: "";	ValueData: "{app}\SasView.exe,0";	 Flags: uninsdeletevalue noerror 	
-Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment";	ValueType: expandsz; ValueName: "SASVIEWPATH";	ValueData: "{app}";	 Flags: uninsdeletevalue noerror
-; Write to PATH (below) is disabled; need more tests
-;Root: HKCU; Subkey: "Environment";	ValueType: expandsz; ValueName: "PATH";	ValueData: "%SASVIEWPATH%;{olddata}";	 Check: NeedsAddPath()
-
-
-[Languages]
-Name: "english";	MessagesFile: "compiler:Default.isl"
-
-
-[Tasks]
-Name: "desktopicon";	Description: "{cm:CreateDesktopIcon}";	GroupDescription: "{cm:AdditionalIcons}";	Flags: unchecked
-Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}";	GroupDescription: "{cm:AdditionalIcons}";
-
-
-[Files]
-Source: "dist\SasView.exe";	DestDir: "{app}";	Flags: ignoreversion
-Source: "dist\*";	DestDir: "{app}";	Flags: ignoreversion recursesubdirs createallsubdirs
-Source: "dist\plugin_models\*";	DestDir: "{userdesktop}\..\.sasview\plugin_models";	Flags: recursesubdirs createallsubdirs
-Source: "dist\config\custom_config.py";	DestDir: "{userdesktop}\..\.sasview\config";	Flags: recursesubdirs createallsubdirs
-Source: "dist\default_categories.json";    DestDir: "{userdesktop}\..\.sasview";	DestName: "categories.json";
-;	NOTE: Don't use "Flags: ignoreversion" on any shared system files
-
-[Icons]
-Name: "{group}\SasView";	Filename: "{app}\SasView.exe";	WorkingDir: "{app}"; IconFilename: "{app}\images\ball.ico" 
-Name: "{group}\{cm:UninstallProgram, SasView}";	 Filename: "{uninstallexe}" 
-Name: "{commondesktop}\SasView-3.0.0";	Filename: "{app}\SasView.exe";	Tasks: desktopicon; WorkingDir: "{app}" ; IconFilename: "{app}\images\ball.ico" 
-Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\SasView-3.0.0";	Filename: "{app}\SasView.exe";	Tasks: quicklaunchicon; WorkingDir: "{app}"; IconFilename: "{app}\images\ball.ico" 
-
-
-[Run]
-Filename: "{app}\SasView.exe";	Description: "{cm:LaunchProgram, SasView}";	Flags: nowait postinstall skipifsilent
-; Install the Microsoft C++ DLL redistributable package if it is provided and the DLLs are not present on the target system.
-; Note that the redistributable package is included if the app was built using Python 2.6 or 2.7, but not with 2.5.
-; Parameter options:
-; - for silent install use: "/q"
-; - for silent install with progress bar use: "/qb"
-; - for silent install with progress bar but disallow cancellation of operation use: "/qb!"
-; Note that we do not use the postinstall flag as this would display a checkbox and thus require the user to decide what to do.
-;Filename: "{app}\vcredist_x86.exe"; Parameters: "/qb!"; WorkingDir: "{tmp}"; StatusMsg: "Installing Microsoft Visual C++ 2008 Redistributable Package ..."; Check: InstallVC90CRT(); Flags: skipifdoesntexist waituntilterminated
-
-
-[Dirs]
-Name: "{app}\";	Permissions: everyone-modify	
-
-
-[Code]
-function InstallVC90CRT(): Boolean;
-begin
-    Result := not DirExists('C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375');
-end;
-
-function NeedsAddPath(): boolean;
-var
-  oldpath: string;
-  newpath: string;
-  pathArr:    TArrayOfString;
-  i:        Integer;
-begin
-  RegQueryStringValue(HKEY_CURRENT_USER,'Environment','PATH', oldpath)
-  oldpath := oldpath + ';';
-  newpath := '%SASVIEWPATH%';
-  i := 0;
-  while (Pos(';', oldpath) > 0) do begin
-    SetArrayLength(pathArr, i+1);
-    pathArr[i] := Copy(oldpath, 0, Pos(';', oldpath)-1);
-    oldpath := Copy(oldpath, Pos(';', oldpath)+1, Length(oldpath));
-    i := i + 1;
-    // Check if current directory matches app dir
-    if newpath = pathArr[i-1] 
-    then begin
-      Result := False;
-      exit;
-    end;
-  end;
-  Result := True;
-end;
-
-
-[UninstallDelete]
-; Delete directories and files that are dynamically created by the application (i.e. at runtime).
-Type: filesandordirs; Name: "{app}\.matplotlib"
-Type: files; Name: "{app}\*.*"
-; The following is a workaround for the case where the application is installed and uninstalled but the
-;{app} directory is not deleted because it has user files.  Then the application is installed into the
-; existing directory, user files are deleted, and the application is un-installed again.  Without the
-; directive below, {app} will not be deleted because Inno Setup did not create it during the previous
-; installation.
-Type: dirifempty; Name: "{app}"
-
Index: sasview/setup_exe.py
===================================================================
--- sasview/setup_exe.py	(revision 7e76afea485501fc17b95913140dde3d985f8393)
+++ sasview/setup_exe.py	(revision 230178be2aa9541bc9b3299b726ec6c720d28ebd)
@@ -235,4 +235,9 @@
 matplotlibdatadir = matplotlib.get_data_path()
 matplotlibdata = findall(matplotlibdatadir)
+
+from distutils.sysconfig import get_python_lib
+site_loc = get_python_lib()
+opencl_include_dir = os.path.join(site_loc, "pyopencl", "cl")
+
 data_files = []
 # Copying SLD data
@@ -320,4 +325,7 @@
         data_files.append(("test\\upcoming_formats", [f]))
 
+# Copying opencl include files
+for f in findall(opencl_include_dir):
+    data_files.append(("includes\\pyopencl",[f]))
 
 # See if the documentation has been built, and if so include it.
@@ -379,4 +387,6 @@
     # accidental links to msys/cygwin binaries; shouldn't be needed
     'cygwin1.dll',
+    # no need to distribute OpenCL.dll - users should have their own copy
+    'OpenCL.dll'
     ]
 
Index: src/sas/sascalc/dataloader/readers/cansas_reader.py
===================================================================
--- src/sas/sascalc/dataloader/readers/cansas_reader.py	(revision 45d90b9874595c612dd8bafb18883e943f644ee7)
+++ src/sas/sascalc/dataloader/readers/cansas_reader.py	(revision af09f48ee05aacd17a218896f1cca0cb84a30a5f)
@@ -221,6 +221,6 @@
                             output.append(return_value)
                     else:
-                        output.append("Invalid XML at: {0}".format(\
-                                                    self.find_invalid_xml()))
+                        raise RuntimeError, "Invalid XML at: {0}".format(\
+                                                    self.find_invalid_xml())
                 except:
                     # If the file does not match the schema, raise this error
Index: src/sas/sasgui/guiframe/local_perspectives/data_loader/data_loader.py
===================================================================
--- src/sas/sasgui/guiframe/local_perspectives/data_loader/data_loader.py	(revision d85c194ea2f78cb2b9b3de9c969e1b8ebea6b6d2)
+++ src/sas/sasgui/guiframe/local_perspectives/data_loader/data_loader.py	(revision faa3ae7bb2790a5fa3ceae0690d20ed2c371b3af)
@@ -155,7 +155,12 @@
         """
         data_error = False
-        for error_data in item.errors:
+        if hasattr(item, 'errors'):
+            for error_data in item.errors:
+                data_error = True
+                message += "\tError: {0}\n".format(error_data)
+        else:
+            logging.error("Loader returned an invalid object:\n %s" % str(item))
             data_error = True
-            message += "\tError: {0}\n".format(error_data)
+        
         data = self.parent.create_gui_data(item, p_file)
         output[data.id] = data
@@ -203,4 +208,5 @@
                                                           error_message)
             except:
+                logging.error(sys.exc_value)
                 any_error = True
             if any_error or error_message != "":
