BTW I also can only show the dialog once, after the first time (regardless whether I call destroy (which I have to to make it disappear) or not, it is shown in various bogus ways.
I've solved that part now by calling set_visible(0) instead of destroy.