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.
So __exit_code is the actual Dialog exit value. Why having it as __exit_code, rather then just as a protected member _exit_code ? When seeing it sooner in the code, I thought it was something very special, but it does not seem to be the case ?