-GtkWidget *aui_service_dialog_new(const gchar *title) {
- return GTK_WIDGET(g_object_new(
- AUI_TYPE_SERVICE_DIALOG,
- "has-separator", FALSE,
- "title", title,
- NULL));
+GtkWidget *aui_service_dialog_new_valist(
+ const gchar *title,
+ GtkWindow *parent,
+ const gchar *first_button_text,
+ va_list varargs) {
+
+ const gchar *button_text;
+ gint dr;
+
+ GtkWidget *w = (GtkWidget*)g_object_new(
+ AUI_TYPE_SERVICE_DIALOG,
+#if !GTK_CHECK_VERSION (2,21,8)
+ "has-separator", FALSE,
+#endif
+ "title", title,
+ NULL);
+
+ if (parent)
+ gtk_window_set_transient_for(GTK_WINDOW(w), parent);
+
+ button_text = first_button_text;
+ while (button_text) {
+ gint response_id;
+
+ response_id = va_arg(varargs, gint);
+ gtk_dialog_add_button(GTK_DIALOG(w), button_text, response_id);
+ button_text = va_arg(varargs, const gchar *);
+ }
+
+ gtk_dialog_set_response_sensitive(GTK_DIALOG(w), GTK_RESPONSE_ACCEPT, FALSE);
+ gtk_dialog_set_response_sensitive(GTK_DIALOG(w), GTK_RESPONSE_OK, FALSE);
+ gtk_dialog_set_response_sensitive(GTK_DIALOG(w), GTK_RESPONSE_YES, FALSE);
+ gtk_dialog_set_response_sensitive(GTK_DIALOG(w), GTK_RESPONSE_APPLY, FALSE);
+
+ if ((dr = get_default_response(GTK_DIALOG(w))) != GTK_RESPONSE_NONE)
+ gtk_dialog_set_default_response(GTK_DIALOG(w), dr);
+
+ return w;
+}
+
+GtkWidget* aui_service_dialog_new(
+ const gchar *title,
+ GtkWindow *parent,
+ const gchar *first_button_text,
+ ...) {
+
+ GtkWidget *w;
+
+ va_list varargs;
+ va_start(varargs, first_button_text);
+ w = aui_service_dialog_new_valist(title, parent, first_button_text, varargs);
+ va_end(varargs);
+
+ return w;