Native dialogs are platform dialogs that don't use Dialog or
Window.
They are used in order to integrate better with a platform, by looking the same as other native applications and supporting platform specific
features.
The Dialog functions cannot be used on such objects, but we need a similar API in order
to drive them. The NativeDialog object is an API that allows you to do this. It allows you to set various
common properties on the dialog, as well as show and hide it and get a
response signal when the user finished with the dialog.
There is also a run helper that makes it easy to run any native dialog in a
modal way with a recursive mainloop, similar to run.