public QuestionResponse AskQuestionWithCancel(string question, string caption) { using (Gtk.MessageDialog md = new Gtk.MessageDialog ((Gtk.Window) WorkbenchSingleton.Workbench, Gtk.DialogFlags.Modal | Gtk.DialogFlags.DestroyWithParent, Gtk.MessageType.Question, Gtk.ButtonsType.None, question)) { md.AddActionWidget (new Button (Gtk.Stock.No), ResponseType.No); md.AddActionWidget (new Button (Gtk.Stock.Cancel), ResponseType.Cancel); md.AddActionWidget (new Button (Gtk.Stock.Yes), ResponseType.Yes); md.ActionArea.ShowAll (); Gtk.ResponseType response = (Gtk.ResponseType)md.Run (); md.Hide (); if (response == Gtk.ResponseType.Yes) { return QuestionResponse.Yes; } if (response == Gtk.ResponseType.No) { return QuestionResponse.No; } if (response == Gtk.ResponseType.Cancel) { return QuestionResponse.Cancel; } return QuestionResponse.Cancel; } }