static void gnc_sx_trans_window_response_cb (GtkDialog *dialog, gint response, gpointer data) { SXFromTransInfo *sxfti = (SXFromTransInfo *)data; ENTER(" dialog %p, response %d, sx %p", dialog, response, sxfti); switch (response) { case GTK_RESPONSE_OK: g_debug(" OK"); sxftd_ok_clicked(sxfti); break; case SXFTD_RESPONSE_ADVANCED: g_debug(" ADVANCED"); sxftd_advanced_clicked(sxfti); break; case GTK_RESPONSE_CANCEL: default: g_debug(" CANCEL"); sxftd_close(sxfti, TRUE); break; } LEAVE(" "); }
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; }
static void sxftd_advanced_clicked(SXFromTransInfo *sxfti) { guint sx_error = sxftd_compute_sx(sxfti); GncSxEditorDialog *adv_edit_dlg; GMainContext *context; if ( sx_error != 0 && sx_error != SXFTD_ERRNO_UNBALANCED_XACTION ) { // unbalanced-xaction is "okay", since this is also checked for by // the advanced editor. g_warning("something bad happened in sxftd_compute_sx [%d]", sx_error); return; } gtk_widget_hide( sxfti->dialog ); /* force a gui update. */ context = g_main_context_default(); while (g_main_context_iteration(context, FALSE)); adv_edit_dlg = gnc_ui_scheduled_xaction_editor_dialog_create(sxfti->sx, TRUE /* newSX */); /* close ourself, since advanced editing entails us, and there are sync * issues otherwise. */ sxftd_close(sxfti, FALSE); }
/********************* * Create the dialog * ********************/ void gnc_sx_create_from_trans( GtkWindow *parent, 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"); gtk_window_set_transient_for (GTK_WINDOW (dialog), parent); 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 (NULL, "%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)); }
/********************* * Create the dialog * ********************/ void gnc_sx_create_from_trans( Transaction *trans ) { int errno; 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 = GTK_WIDGET(gtk_builder_get_object (builder, "sx_from_real_trans")); 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)); }
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)); }