gboolean gnc_ab_enter_daterange(GtkWidget *parent, const char *heading, Timespec *from_date, gboolean *last_retv_date, gboolean *first_possible_date, Timespec *to_date, gboolean *to_now) { GtkBuilder *builder; GtkWidget *dialog; GtkWidget *heading_label; GtkWidget *first_button; GtkWidget *last_retrieval_button; GtkWidget *now_button; DaterangeInfo info; gint result; ENTER(""); builder = gtk_builder_new(); gnc_builder_add_from_file (builder, "dialog-ab.glade", "aqbanking_date_range_dialog"); dialog = GTK_WIDGET(gtk_builder_get_object (builder, "aqbanking_date_range_dialog")); /* Connect the signals */ gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, &info ); if (parent) gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(parent)); heading_label = GTK_WIDGET(gtk_builder_get_object (builder, "heading_label")); first_button = GTK_WIDGET(gtk_builder_get_object (builder, "first_button")); last_retrieval_button = GTK_WIDGET(gtk_builder_get_object (builder, "last_retrieval_button")); info.enter_from_button = GTK_WIDGET(gtk_builder_get_object (builder, "enter_from_button")); now_button = GTK_WIDGET(gtk_builder_get_object (builder, "now_button")); info.enter_to_button = GTK_WIDGET(gtk_builder_get_object (builder, "enter_to_button")); info.from_dateedit = gnc_date_edit_new_ts(*from_date, FALSE, FALSE); gtk_container_add(GTK_CONTAINER(gtk_builder_get_object (builder, "enter_from_box")), info.from_dateedit); gtk_widget_show(info.from_dateedit); info.to_dateedit = gnc_date_edit_new_ts(*to_date, FALSE, FALSE); gtk_container_add(GTK_CONTAINER(gtk_builder_get_object (builder, "enter_to_box")), info.to_dateedit); gtk_widget_show(info.to_dateedit); if (*last_retv_date) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(last_retrieval_button), TRUE); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(first_button), TRUE); gtk_widget_set_sensitive(last_retrieval_button, FALSE); } gtk_widget_set_sensitive(info.from_dateedit, FALSE); gtk_widget_set_sensitive(info.to_dateedit, FALSE); gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK); if (heading) gtk_label_set_text(GTK_LABEL(heading_label), heading); gtk_widget_show(dialog); result = gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_hide(dialog); if (result == GTK_RESPONSE_OK) { *from_date = gnc_date_edit_get_date_ts( GNC_DATE_EDIT(info.from_dateedit)); *last_retv_date = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(last_retrieval_button)); *first_possible_date = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(first_button)); *to_date = gnc_date_edit_get_date_ts( GNC_DATE_EDIT(info.to_dateedit)); *to_now = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(now_button)); } g_object_unref(G_OBJECT(builder)); gtk_widget_destroy(dialog); LEAVE(""); return result == GTK_RESPONSE_OK; }
gboolean gnc_ab_enter_daterange(GtkWidget *parent, const char *heading, Timespec *from_date, gboolean *last_retv_date, gboolean *first_possible_date, Timespec *to_date, gboolean *to_now) { GladeXML *xml; GtkWidget *dialog; GtkWidget *heading_label; GtkWidget *first_button; GtkWidget *last_retrieval_button; GtkWidget *now_button; DaterangeInfo info; gint result; xml = gnc_glade_xml_new("aqbanking.glade", "Date Range Dialog"); dialog = glade_xml_get_widget(xml, "Date Range Dialog"); g_object_set_data_full(G_OBJECT(dialog), "xml", xml, g_object_unref); glade_xml_signal_autoconnect_full(xml, gnc_glade_autoconnect_full_func, &info); if (parent) gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(parent)); heading_label = glade_xml_get_widget(xml, "heading_label"); first_button = glade_xml_get_widget(xml, "first_button"); last_retrieval_button = glade_xml_get_widget(xml, "last_retrieval_button"); info.enter_from_button = glade_xml_get_widget(xml, "enter_from_button"); now_button = glade_xml_get_widget(xml, "now_button"); info.enter_to_button = glade_xml_get_widget(xml, "enter_to_button"); info.from_dateedit = gnc_date_edit_new_ts(*from_date, FALSE, FALSE); gtk_container_add(GTK_CONTAINER(glade_xml_get_widget(xml, "enter_from_box")), info.from_dateedit); gtk_widget_show(info.from_dateedit); info.to_dateedit = gnc_date_edit_new_ts(*to_date, FALSE, FALSE); gtk_container_add(GTK_CONTAINER(glade_xml_get_widget(xml, "enter_to_box")), info.to_dateedit); gtk_widget_show(info.to_dateedit); if (*last_retv_date) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(last_retrieval_button), TRUE); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(first_button), TRUE); gtk_widget_set_sensitive(last_retrieval_button, FALSE); } gtk_widget_set_sensitive(info.from_dateedit, FALSE); gtk_widget_set_sensitive(info.to_dateedit, FALSE); gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK); if (heading) gtk_label_set_text(GTK_LABEL(heading_label), heading); gtk_widget_show(dialog); result = gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_hide(dialog); if (result == GTK_RESPONSE_OK) { *from_date = gnc_date_edit_get_date_ts( GNC_DATE_EDIT(info.from_dateedit)); *last_retv_date = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(last_retrieval_button)); *first_possible_date = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(first_button)); *to_date = gnc_date_edit_get_date_ts( GNC_DATE_EDIT(info.to_dateedit)); *to_now = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(now_button)); } gtk_widget_destroy(dialog); return result == GTK_RESPONSE_OK; }