Revision: 736 Author: ntrel Date: 2006-08-18 10:22:57 -0700 (Fri, 18 Aug 2006) ViewCVS: http://svn.sourceforge.net/geany/?rev=736&view=rev
Log Message: ----------- Add dialogs_show_question_full for custom buttons and extra text; Don't show message dialogs in the window manager taskbar
Modified Paths: -------------- trunk/src/dialogs.c trunk/src/dialogs.h Modified: trunk/src/dialogs.c =================================================================== --- trunk/src/dialogs.c 2006-08-18 16:17:38 UTC (rev 735) +++ trunk/src/dialogs.c 2006-08-18 17:22:57 UTC (rev 736) @@ -223,7 +223,7 @@ win32_message_dialog(GTK_MESSAGE_INFO, string); #else
- dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, + dialog = gtk_message_dialog_new(GTK_WINDOW(app->window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "%s", string); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); @@ -247,7 +247,7 @@ #ifdef G_OS_WIN32 win32_message_dialog(GTK_MESSAGE_ERROR, string); #else - dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, + dialog = gtk_message_dialog_new(GTK_WINDOW(app->window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s", string); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); @@ -1384,30 +1384,69 @@ }
-gboolean dialogs_show_question(const gchar *text, ...) +static gboolean +show_question(const gchar *yes_btn, const gchar *no_btn, const gchar *question_text, + const gchar *extra_text) { -#ifndef G_OS_WIN32 + gboolean ret = FALSE; +#ifdef G_OS_WIN32 + gchar *string = (extra_text == NULL) ? g_strdup(question_text) : + g_strconcat(question_text, "\n\n", extra_text, NULL); + + ret = win32_message_dialog(GTK_MESSAGE_QUESTION, string); + g_free(string); +#else GtkWidget *dialog; + + dialog = gtk_message_dialog_new(GTK_WINDOW(app->window), + GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, + GTK_BUTTONS_NONE, "%s", question_text); + // question_text will be in bold if optional extra_text used + if (extra_text != NULL) + gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), + "%s", extra_text); + + // For a cancel button, use cancel reponse so user can press escape to cancel + gtk_dialog_add_button(GTK_DIALOG(dialog), no_btn, + g_str_equal(no_btn, GTK_STOCK_CANCEL) ? GTK_RESPONSE_CANCEL : GTK_RESPONSE_NO); + gtk_dialog_add_button(GTK_DIALOG(dialog), yes_btn, GTK_RESPONSE_YES); + + if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_YES) + ret = TRUE; + gtk_widget_destroy(dialog); #endif + return ret; +} + + +gboolean dialogs_show_question(const gchar *text, ...) +{ + gboolean ret = FALSE; gchar *string = g_malloc(512); - gboolean ret = FALSE; va_list args;
va_start(args, text); g_vsnprintf(string, 511, text, args); va_end(args); + ret = show_question(GTK_STOCK_YES, GTK_STOCK_NO, string, NULL); + g_free(string); + return ret; +}
-#ifdef G_OS_WIN32 - ret = win32_message_dialog(GTK_MESSAGE_QUESTION, string); -#else - dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "%s", string); - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_YES) - ret = TRUE; - gtk_widget_destroy(dialog); -#endif + +/* extra_text can be NULL; otherwise it is displayed below main_text. */ +gboolean dialogs_show_question_full(const gchar *yes_btn, const gchar *no_btn, + const gchar *extra_text, const gchar *main_text, ...) +{ + gboolean ret = FALSE; + gchar *string = g_malloc(512); + va_list args; + + va_start(args, main_text); + g_vsnprintf(string, 511, main_text, args); + va_end(args); + ret = show_question(yes_btn, no_btn, string, extra_text); g_free(string); - return ret; }
Modified: trunk/src/dialogs.h =================================================================== --- trunk/src/dialogs.h 2006-08-18 16:17:38 UTC (rev 735) +++ trunk/src/dialogs.h 2006-08-18 17:22:57 UTC (rev 736) @@ -63,6 +63,10 @@
gboolean dialogs_show_question(const gchar *text, ...);
+/* extra_text can be NULL; otherwise it is displayed below main_text. */ +gboolean dialogs_show_question_full(const gchar *yes_btn, const gchar *no_btn, + const gchar *extra_text, const gchar *main_text, ...); + void dialogs_show_keyboard_shortcuts(void);
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.