More progress, I managed to clean up the error handling a lot and now the UI is much less likely to halt unexpectedly.
There is still an odd error every once in a while where the UI is responsive but won't take focus. I'm sure it has something to do with bailing on a sub dialog inappropriately, however I can't find any issues.
Also if a sub dialog action fails there is no obvious indicator that it failed. I need to force a failure status all the way back down to the UI.
Finally things seem to be behaving well when I don't have a connection at all, or the connection gets broken mid task. I still have loads of testing to do but we are on our way for the 1.0 release.
---
The big task still left to do is to split the file conversion routines apart. I made a lot of progress on cleaning up the routines but I still need to keep track of state and run a state machine over the whole conversion process. This is the last major holdup on the UI responsiveness.
Also I need to extend the routines so that I auto convert a .3w file if you try to send the wrong version to a printer, although this is really only a problem for me since I have 3w files formatted for every known printer file. Most users are unlikely to keep there files in 3w format, and even if they do they are unlikely to have a mix of different printer models. And even if they do again there are only a few models that can accept the exact same gcode without the print failing.