Hi All

I've recently had problems with loading project files and think it would be 
good to change the handling of this a bit!

First a bit of background.

My problems originally came from the changes to the delimited text provider to 
use Qurl.fromLocalFile as the datasource.  I think this is a great change - but 
it does break existing project files.  Also it isn't consistently implemented 
where the datasource is used in QgsMapLayer and QgsHandleBadLayers.  I've 
submitted a patch to fix this http://trac.osgeo.org/qgis/ticket/3570

But then I had problems with missing symbology information in my project files. 
 I've no idea why this was, but the result was that the layer failed to load, 
and I got the bad layer handler dialog (great improvement on the original one 
by one handling BTW).  The problem is that this only lets me reselect the file 
to load into the layer under the assumption that the layer isn't loading 
because the file has moved.  So in my case I can browse and reselect the 
correct file, but the layer still doesn't load as the symbology is still bad.
This is very confusing from a user's perspective.

There are certainly valid cases, apart from the apparent corruption in my 
project file, when a symbology won't load.  For example a user may have removed 
a renderer plugin.  

I've proposed a short term "fix" in http://trac.osgeo.org/qgis/ticket/3572, 
which is to revert to a default symbology if the layer cannot be loaded.

End of background.

This raises the question of how to deal well with project load errors.  Ideally 
the user should get a message indicating what the problem is, and some options 
as to how to deal with it.  And this requires a means of recording this 
information as the project is loading, which is independent of the GUI, and 
then displaying it and handling it in the GUI.

Where should this be stored?  

Thinking aloud now, one option would be to add error/warning status information 
to the projects and layers.  Say a QgsErrorStatus class (StringLists for 
errors, and warnings?).  The QgsProject and QgsMapLayer could have mLoadErrors 
members with this information (slight problem with layers if the object is 
deleted when it fails to load!).  

So far fairly easy!  The question I then have is how to handle the errors.  
Maybe it needs something more sophisticated like a base error class, and 
subclasses which can override a handleError method?  How would this interface 
with the GUI? With the project? Or with the project DOM?

Any thoughts on good implementation patterns?

Cheers
Chris



______________________________________________________________________________________________________

This message contains information, which is confidential and may be subject to 
legal privilege. 
If you are not the intended recipient, you must not peruse, use, disseminate, 
distribute or copy this message.
If you have received this message in error, please notify us immediately (Phone 
0800 665 463 or [email protected]) and destroy the original message.
LINZ accepts no responsibility for changes to this email, or for any 
attachments, after its transmission from LINZ.

Thank you.
______________________________________________________________________________________________________
_______________________________________________
Qgis-developer mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to