/********************************************************************\ * gnc_ok_cancel_dialog * * display a message, and asks the user to press "Ok" or "Cancel" * * * * NOTE: This function does not return until the dialog is closed * * * * Args: parent - the parent window * * default - the button that will be the default * * message - the message to display * * format - the format string for the message to display * * This is a standard 'printf' style string. * * args - a pointer to the first argument for the format * * string. * * Return: the result the user selected * \********************************************************************/ gint gnc_ok_cancel_dialog(GtkWidget *parent, gint default_result, const gchar *format, ...) { GtkWidget *dialog = NULL; gint result; gchar *buffer; va_list args; if (parent == NULL) parent = gnc_ui_get_toplevel(); va_start(args, format); buffer = g_strdup_vprintf(format, args); dialog = gtk_message_dialog_new (GTK_WINDOW(parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, "%s", buffer); g_free(buffer); va_end(args); if (parent == NULL) gtk_window_set_skip_taskbar_hint(GTK_WINDOW(dialog), FALSE); gtk_dialog_set_default_response (GTK_DIALOG(dialog), default_result); result = gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy (dialog); return(result); }
static void sxftd_ok_clicked(SXFromTransInfo *sxfti) { QofBook *book; SchedXactions *sxes; guint sx_error = sxftd_compute_sx(sxfti); if (sx_error != 0 && sx_error != SXFTD_ERRNO_UNBALANCED_XACTION) { g_critical("sxftd_compute_sx after ok_clicked [%d]", sx_error); } else { if ( sx_error == SXFTD_ERRNO_UNBALANCED_XACTION ) { gnc_error_dialog( gnc_ui_get_toplevel(), "%s", _( "The Scheduled Transaction is unbalanced. " "You are strongly encouraged to correct this situation." ) ); } book = gnc_get_current_book (); sxes = gnc_book_get_schedxactions(book); gnc_sxes_add_sx(sxes, sxfti->sx); } sxftd_close(sxfti, FALSE); return; }
/********************************************************************\ * gnc_info_dialog * * displays an information dialog box * * * * Args: parent - the parent window * * format - the format string for the message to display * * This is a standard 'printf' style string. * * args - a pointer to the first argument for the format * * string. * * Return: none * \********************************************************************/ void gnc_info_dialog(GtkWidget *parent, const gchar *format, ...) { GtkWidget *dialog; gchar *buffer; va_list args; if (parent == NULL) parent = gnc_ui_get_toplevel(); va_start(args, format); buffer = g_strdup_vprintf(format, args); dialog = gtk_message_dialog_new (GTK_WINDOW(parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, "%s", buffer); va_end(args); if (parent == NULL) gtk_window_set_skip_taskbar_hint(GTK_WINDOW(dialog), FALSE); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy (dialog); }
/********************************************************************\ * gnc_verify_dialog * * display a message, and asks the user to press "Yes" or "No" * * * * NOTE: This function does not return until the dialog is closed * * * * Args: parent - the parent window * * yes_is_default - If true, "Yes" is default, * * "No" is the default button. * * format - the format string for the message to display * * This is a standard 'printf' style string. * * args - a pointer to the first argument for the format * * string. * \********************************************************************/ gboolean gnc_verify_dialog(GtkWidget *parent, gboolean yes_is_default, const gchar *format, ...) { GtkWidget *dialog; gchar *buffer; gint result; va_list args; if (parent == NULL) parent = gnc_ui_get_toplevel(); va_start(args, format); buffer = g_strdup_vprintf(format, args); dialog = gtk_message_dialog_new (GTK_WINDOW(parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "%s", buffer); g_free(buffer); va_end(args); if (parent == NULL) gtk_window_set_skip_taskbar_hint(GTK_WINDOW(dialog), FALSE); gtk_dialog_set_default_response(GTK_DIALOG(dialog), (yes_is_default ? GTK_RESPONSE_YES : GTK_RESPONSE_NO)); result = gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy (dialog); return (result == GTK_RESPONSE_YES); }
/********************* * Create the dialog * ********************/ void gnc_sx_create_from_trans( Transaction *trans ) { #ifndef __MINGW32__ int errno; #endif SXFromTransInfo *sxfti = g_new0( SXFromTransInfo, 1); GtkBuilder *builder; GtkWidget *dialog; builder = gtk_builder_new(); gnc_builder_add_from_file (builder , "dialog-sx.glade", "freq_liststore"); gnc_builder_add_from_file (builder , "dialog-sx.glade", "sx_from_real_trans_dialog"); dialog = GTK_WIDGET(gtk_builder_get_object (builder, "sx_from_real_trans_dialog")); // Set the style context for this dialog so it can be easily manipulated with css gnc_widget_set_style_context (GTK_WIDGET(dialog), "GncSxFromTransDialog"); sxfti->builder = builder; sxfti->dialog = dialog; sxfti->trans = trans; sxfti->sx = xaccSchedXactionMalloc(gnc_get_current_book ()); if ( (errno = sxftd_init( sxfti )) < 0 ) { if ( errno == SXFTD_ERRNO_OPEN_XACTION ) { gnc_error_dialog( gnc_ui_get_toplevel(), "%s", _( "Cannot create a Scheduled Transaction " "from a Transaction currently " "being edited. Please Enter the " "Transaction before Scheduling." ) ); sxftd_close( sxfti, TRUE ); return; } else { g_error("sxftd_init: %d", errno); } } gtk_widget_show_all(GTK_WIDGET(sxfti->dialog)); gtk_builder_connect_signals(builder, sxfti); g_object_unref(G_OBJECT(builder)); }
/********************************************************************\ * gnc_error_dialog_common * * displays an error dialog box * * * * Args: parent - the parent window * * format - the format string for the message to display * * This is a standard 'printf' style string. * * args - a pointer to the first argument for the format * * string. * * Return: none * \********************************************************************/ static void gnc_error_dialog_common(GtkWidget *parent, const gchar *format, va_list args) { GtkWidget *dialog; gchar *buffer; if (parent == NULL) parent = GTK_WIDGET(gnc_ui_get_toplevel()); buffer = g_strdup_vprintf(format, args); dialog = gtk_message_dialog_new (GTK_WINDOW(parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "%s", buffer); g_free(buffer); if (parent == NULL) gtk_window_set_skip_taskbar_hint(GTK_WINDOW(dialog), FALSE); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy (dialog); }
void gnc_sx_create_from_trans( Transaction *trans ) { int errno; SXFromTransInfo *sxfti = g_new0( SXFromTransInfo, 1); sxfti->gxml = gnc_glade_xml_new(SX_GLADE_FILE, SXFTD_DIALOG_GLADE_NAME); sxfti->dialog = glade_xml_get_widget(sxfti->gxml, SXFTD_DIALOG_GLADE_NAME); sxfti->trans = trans; sxfti->sx = xaccSchedXactionMalloc(gnc_get_current_book ()); if ( (errno = sxftd_init( sxfti )) < 0 ) { if ( errno == SXFTD_ERRNO_OPEN_XACTION ) { gnc_error_dialog( gnc_ui_get_toplevel(), "%s", _( "Cannot create a Scheduled Transaction " "from a Transaction currently " "being edited. Please Enter the " "Transaction before Scheduling." ) ); sxftd_close( sxfti, TRUE ); return; } else { g_error("sxftd_init: %d", errno); } } gtk_widget_show_all(GTK_WIDGET(sxfti->dialog)); }