26902 Initial code review

Created a branch from the very first commit to be able to review the whole code written so far.
This does not mean that a merge should be done after the review is done, this is a "dummy" pull request.
As a side not, are we importing QtGui and QtCore just to have QtGui.QDialog.Rejected being defined ? If so, would it be possible to try to get rid of the Qt import ? It looks like start_qt_app_and_show_modal could return a project_settings and volume_name tuple, with project_settings being None if the dialog was rejected ? So this code wouldn't call get_settings and get_volume_name itself ?