[MonoDevelop] What is the correct way of closing a Gtk dialog?

Chris Howie cdhowie at gmail.com
Thu May 22 11:25:01 EDT 2008

On Thu, May 22, 2008 at 9:35 AM, simon.n.lindgren at gmail.com
<simon.n.lindgren at gmail.com> wrote:
>> Also, I would not have the dialog destroy itself.  The caller should
>> be responsible for that, since it created it.  What you may want to do
>> instead is have a static method:
>> public static int Run(string title, string message, out result) {
>>     PromtingDialog pd = new PromtingDialog(title, message);
>>     try {
>>         int retval = pd.Run();
>>         result = pd.response;
>>         return retval;
>>     } finally {
>>         pd.Destroy();
>>     }
>> }
> This was the reason I wanted to know whether there is a better way to
> make Run() return. I think I read somewhere about an event that would
> make it return. Is there such an event and how would one trigger it?

I believe you would use Dialog.Respond(ResponseType.Accept).  (Or Cancel etc.)

>> Usually the pattern you would use if you were going to create and use
>> this dialog from other code without using a static method would be to
>> make the "result" field accessible by a public property and let the
>> dependent code check it directly:
>> PromtingDialog pd = new PromtingDialog(title, message);
>> try {
>>     if (pd.Run() == (int) ResponseType.Accept) {
>>         // do something with pd.Response
>>     }
>> } finally {
>>     pd.Destroy();
>> }
> I think I will do it this way. With a Read-Write property the calling
> code could set the default value this way as well. I think I got this
> pretty much worked out now. When I tested previously the buttons didn't
> close the dialog if I didn't add the Destroy() calls, but now it does
> close without the calls. So I no longer have this problem :).

Yeah, the read/write thing is another advantage of this approach.

>> (BTW, it should be PromptingDialog.)
> ?
> Did you mean PromtDialog?

No.  Promt is not an English word -- you mean prompt.

Chris Howie

More information about the Monodevelop-list mailing list