The cancel button now sends a signal to the saving thread to stop.
Implemented the file dialog, save progress dialog, and separate thread to save in (saving needs to be done in a separate thread so the main/GUI thread doesn't get blocked).