Index: sasview/default_categories.json
===================================================================
--- sasview/default_categories.json	(revision efa5e4440f169b2894993f4f1db9691ecdd9bc2e)
+++ sasview/default_categories.json	(revision d26dea03dc6672ee5b15cc43e77a7a352c6cbd25)
@@ -1,1 +1,1 @@
-{"Shapes": [["PearlNecklaceModel", true], ["HollowCylinderModel", true], ["CoreMultiShellModel", true], ["LamellarFFHGModel", true], ["FCCrystalModel", true], ["CoreShellEllipsoidXTModel", true], ["FuzzySphereModel", true], ["CSParallelepipedModel", true], ["BCCrystalModel", true], ["EllipticalCylinderModel", true], ["RectangularHollowPrismInfThinWallsModel", true], ["LamellarPCrystalModel", true], ["OnionExpShellModel", true], ["VesicleModel", true], ["MultiShellModel", true], ["RaspBerryModel", true], ["CoreShellEllipsoidModel", true], ["CappedCylinderModel", true], ["CylinderModel", true], ["SphericalSLDModel", true], ["StackedDisksModel", true], ["LamellarPSHGModel", true], ["CoreShellBicelleModel", true], ["RectangularHollowPrismModel", true], ["LamellarPSModel", true], ["EllipsoidModel", true], ["SphereModel", true], ["ParallelepipedModel", true], ["TriaxialEllipsoidModel", true], ["LamellarModel", true], ["RectangularPrismModel", true], ["PringlesModel", true], ["CoreShellCylinderModel", true], ["BinaryHSModel", true], ["FlexibleCylinderModel", true], ["SCCrystalModel", true], ["FlexCylEllipXModel", true], ["LinearPearlsModel", true], ["CoreShellModel", true]], "Structure Factor": [["SquareWellStructure", true], ["HayterMSAStructure", true], ["HardsphereStructure", true], ["StickyHSStructure", true]], "Shape-Independent": [["TwoPowerLawModel", true], ["GelFitModel", true], ["DABModel", true], ["PowerLawAbsModel", true], ["PorodModel", true], ["MassFractalModel", true], ["TeubnerStreyModel", true], ["DebyeModel", true], ["MassSurfaceFractal", true], ["Core2ndMomentModel", true], ["TwoLorentzianModel", true], ["UnifiedPowerRgModel", true], ["PolymerExclVolume", true], ["BEPolyelectrolyte", true], ["GuinierModel", true], ["GuinierPorodModel", true], ["CorrLengthModel", true], ["StarPolymer", true], ["FractalModel", true], ["RPA10Model", true], ["PeakLorentzModel", true], ["BroadPeakModel", true], ["PeakGaussModel", true], ["FractalCoreShellModel", true], ["Poly_GaussCoil", true], ["SurfaceFractalModel", true], ["GaussLorentzGelModel", true], ["LorentzModel", true]], "Uncategorized": [["ReflectivityModel", true], ["ReflectivityIIModel", true], ["LineModel", true], ["MicelleSphCoreModel", true]]}
+{"Shapes": [["PearlNecklaceModel", true], ["HollowCylinderModel", true], ["CoreMultiShellModel", true], ["FCCrystalModel", true], ["CoreShellEllipsoidXTModel", true], ["FuzzySphereModel", true], ["CSParallelepipedModel", true], ["EllipticalCylinderModel", true], ["BCCrystalModel", true], ["LamellarFFHGModel", true], ["RectangularHollowPrismInfThinWallsModel", true], ["LamellarPCrystalModel", true], ["OnionExpShellModel", true], ["VesicleModel", true], ["MultiShellModel", true], ["RaspBerryModel", true], ["CoreShellEllipsoidModel", true], ["CappedCylinderModel", true], ["CylinderModel", true], ["SphericalSLDModel", true], ["StackedDisksModel", true], ["LamellarPSHGModel", true], ["CoreShellBicelleModel", true], ["RectangularHollowPrismModel", true], ["LamellarPSModel", true], ["EllipsoidModel", true], ["SphereModel", true], ["ParallelepipedModel", true], ["TriaxialEllipsoidModel", true], ["LamellarModel", true], ["PringlesModel", true], ["RectangularPrismModel", true], ["CoreShellCylinderModel", true], ["BinaryHSModel", true], ["FlexibleCylinderModel", true], ["SCCrystalModel", true], ["FlexCylEllipXModel", true], ["LinearPearlsModel", true], ["CoreShellModel", true]], "Structure Factor": [["SquareWellStructure", true], ["HayterMSAStructure", true], ["HardsphereStructure", true], ["StickyHSStructure", true]], "Shape-Independent": [["TwoPowerLawModel", true], ["GelFitModel", true], ["DABModel", true], ["PowerLawAbsModel", true], ["PorodModel", true], ["MassFractalModel", true], ["RPA10Model", true], ["TeubnerStreyModel", true], ["DebyeModel", true], ["MassSurfaceFractal", true], ["Core2ndMomentModel", true], ["TwoLorentzianModel", true], ["UnifiedPowerRgModel", true], ["PolymerExclVolume", true], ["BEPolyelectrolyte", true], ["GuinierModel", true], ["GuinierPorodModel", true], ["CorrLengthModel", true], ["StarPolymer", true], ["FractalModel", true], ["PeakLorentzModel", true], ["BroadPeakModel", true], ["PeakGaussModel", true], ["FractalCoreShellModel", true], ["Poly_GaussCoil", true], ["SurfaceFractalModel", true], ["GaussLorentzGelModel", true], ["LorentzModel", true]], "Uncategorized": [["ReflectivityModel", true], ["ReflectivityIIModel", true], ["LineModel", true], ["MicelleSphCoreModel", true]]}
Index: src/sas/dataloader/readers/cansas_reader.py
===================================================================
--- src/sas/dataloader/readers/cansas_reader.py	(revision 9dedf40893bcacf00e8b151f964ed085a47d2bba)
+++ src/sas/dataloader/readers/cansas_reader.py	(revision d26dea03dc6672ee5b15cc43e77a7a352c6cbd25)
@@ -105,6 +105,6 @@
     base_ns = "{cansas1d/1.0}"
 
-    logging = []
-    errors = []
+    logging = None
+    errors = None
 
     type_name = "canSAS"
@@ -120,5 +120,6 @@
     def __init__(self):
         ## List of errors
-        self.errors = []
+        self.errors = set()
+        self.logging = []
         self.encoding = None
 
@@ -252,5 +253,5 @@
         for error in self.errors:
             data1d.errors.append(error)
-        del self.errors[:]
+        self.errors.clear()
         numpy.trim_zeros(data1d.x)
         numpy.trim_zeros(data1d.y)
@@ -301,4 +302,5 @@
         attr = node.attrib
         value_unit = ''
+        err_msg = None
         if 'unit' in attr and new_current_level.get('unit') is not None:
             try:
@@ -322,5 +324,4 @@
                         value_unit = local_unit
                         err_msg = "Unit converter is not available.\n"
-                        self.errors.append(err_msg)
                 else:
                     value_unit = local_unit
@@ -333,5 +334,4 @@
                             ".format(data1d.{0})"
                 exec intermediate.format(unitname, "{0}", "{1}")
-                self.errors.append(err_msg)
                 value_unit = local_unit
             except:
@@ -340,8 +340,9 @@
                 err_msg += "\"{0}\" unit [{1}]"
                 err_msg = err_msg.format(tagname, local_unit)
-                self.errors.append(err_msg)
                 value_unit = local_unit
         elif 'unit' in attr:
             value_unit = attr['unit']
+        if err_msg:
+            self.errors.add(err_msg)
         node_value = "float({0})".format(node_value)
         return node_value, value_unit
@@ -355,5 +356,5 @@
         """
         if data1d == None:
-            self.errors = []
+            self.errors = set()
             x_vals = numpy.empty(0)
             y_vals = numpy.empty(0)
@@ -697,20 +698,20 @@
             node.append(point)
             self.write_node(point, "Q", datainfo.x[i],
-                            {'unit': datainfo.x_unit})
+                            {'unit': datainfo._xunit})
             if len(datainfo.y) >= i:
                 self.write_node(point, "I", datainfo.y[i],
-                                {'unit': datainfo.y_unit})
+                                {'unit': datainfo._yunit})
             if datainfo.dy != None and len(datainfo.dy) > i:
                 self.write_node(point, "Idev", datainfo.dy[i],
-                                {'unit': datainfo.y_unit})
+                                {'unit': datainfo._yunit})
             if datainfo.dx != None and len(datainfo.dx) > i:
                 self.write_node(point, "Qdev", datainfo.dx[i],
-                                {'unit': datainfo.x_unit})
+                                {'unit': datainfo._xunit})
             if datainfo.dxw != None and len(datainfo.dxw) > i:
                 self.write_node(point, "dQw", datainfo.dxw[i],
-                                {'unit': datainfo.x_unit})
+                                {'unit': datainfo._xunit})
             if datainfo.dxl != None and len(datainfo.dxl) > i:
                 self.write_node(point, "dQl", datainfo.dxl[i],
-                                {'unit': datainfo.x_unit})
+                                {'unit': datainfo._xunit})
 
     def _write_trans_spectrum(self, datainfo, entry_node):
@@ -1169,5 +1170,5 @@
                             err_mess += " %s unit [%s]; expecting [%s]\n  %s" \
                                 % (variable, units, local_unit, exc_value)
-                            self.errors.append(err_mess)
+                            self.errors.add(err_mess)
                             if optional:
                                 logging.info(err_mess)
@@ -1178,5 +1179,5 @@
                         % (variable, units)
                         err_mess += " expecting [%s]" % local_unit
-                        self.errors.append(err_mess)
+                        self.errors.add(err_mess)
                         if optional:
                             logging.info(err_mess)
Index: src/sas/guiframe/local_perspectives/data_loader/data_loader.py
===================================================================
--- src/sas/guiframe/local_perspectives/data_loader/data_loader.py	(revision b9dbd6b5e3f5275da6eb798e3bc7343fddcb6d50)
+++ src/sas/guiframe/local_perspectives/data_loader/data_loader.py	(revision d26dea03dc6672ee5b15cc43e77a7a352c6cbd25)
@@ -204,27 +204,29 @@
             except:
                 any_error = True
-        if any_error or error_message != "":
-            if error_message == "":
-                error = "Error: " + str(sys.exc_value) + "\n"
-                error += "while loading Data: \n%s\n" % str(p_file)
-                error_message = "The data file you selected could not be loaded.\n"
-                error_message += "Make sure the content of your file"
-                error_message += " is properly formatted.\n\n"
-                error_message += "When contacting the SasView team, mention the"
-                error_message += " following:\n%s" % str(error)
-            elif data_error:
-                base_message = "Errors occurred while loading {0}\n".format(p_file)
-                base_message += "The data file loaded but with errors.\n"
-                error_message = base_message + error_message
-            else:
-                error_message += "%s\n" % str(p_file)
-            info = "error"
+            if any_error or error_message != "":
+                if error_message == "":
+                    error = "Error: " + str(sys.exc_info()[1]) + "\n"
+                    error += "while loading Data: \n%s\n" % str(basename)
+                    error_message += "The data file you selected could not be loaded.\n"
+                    error_message += "Make sure the content of your file"
+                    error_message += " is properly formatted.\n\n"
+                    error_message += "When contacting the SasView team, mention the"
+                    error_message += " following:\n%s" % str(error)
+                elif data_error:
+                    base_message = "Errors occurred while loading "
+                    base_message += "{0}\n".format(basename)
+                    base_message += "The data file loaded but with errors.\n"
+                    error_message = base_message + error_message
+                else:
+                    error_message += "%s\n" % str(p_file)
+                info = "error"
+        
+        if any_error or error_message:
             self.load_update(output=output, message=error_message, info=info)
-
         else:
             message = "Loading Data Complete! "
         message += log_msg
         self.load_complete(output=output, error_message=error_message,
-                           message=message, path=path, info=info)
+                           message=message, path=path, info='warning')
 
     def load_update(self, output=None, message="", info="warning"):
@@ -233,5 +235,5 @@
         """
         if message != "":
-            wx.PostEvent(self.parent, StatusEvent(status=message, info='info',
+            wx.PostEvent(self.parent, StatusEvent(status=message, info=info,
                                                   type="progress"))
     def load_complete(self, output, message="", error_message="", path=None,
