略有改進版本:
public bool show_question(string primary_markup,
string? secondary_markup = null,
Gtk.Window? parent = null,
Gtk.MessageType message_type = Gtk.MessageType.QUESTION)
{
var m = new Gtk.MessageDialog.with_markup(parent,
Gtk.DialogFlags.MODAL,
message_type,
Gtk.ButtonsType.OK_CANCEL,
primary_markup);
m.format_secondary_markup(secondary_markup);
var result = (Gtk.ResponseType) m.run();
m.destroy();
return (result == Gtk.ResponseType.OK);
}
這個新版本利用了Vala的默認參數,所以在最簡單的情況下,您可以撥打show_question("Is this OK?");
。此外,您也可以現在使用Pango Markup帶來太多的更好看的對話框,例如:
show_question("<b><big>Overwrite File?</big></b>",
"<small>The file <i>\"%s\"</i> will be overwritten if you proceed</small>".printf(my_filename),
parent_window,
Gtk.MessageType.WARNING);
值得注意然而,在GTK,使用像這樣的簡單的「確定/取消」的反應通常是令人難以接受的。相反,建議使用包含與所涉及的動作有關的動詞的按鈕標籤;所以在上面的例子中,「取消」和「覆蓋」將是更好的選擇(當然,默認爲取消)。這對程序員來說需要一點點但是更多的工作,但是提供了更好的用戶體驗。
'Gtk.Dialog'可能有幫助:http://valadoc.org/#!api=gtk+-3.0/Gtk.Dialog –
這裏是一個相關的問題在Python中:http://stackoverflow.com/questions/13970445/python-gtk3-how-to-add-a-gtk-entry-to-a-gtk-messagedialog –