26 #include <glib/gi18n.h> 28 #include "dialog-utils.h" 30 #include "gnc-gui-query.h" 33 #include "gnc-date-edit.h" 34 #include "gnc-account-sel.h" 36 #include "business-gnome-utils.h" 37 #include "dialog-date-close.h" 39 typedef struct _dialog_date_close_window
44 GtkWidget *acct_combo;
45 GtkWidget *memo_entry;
46 GtkWidget *question_check;
50 GList * acct_commodities;
58 void gnc_dialog_date_close_ok_cb (GtkWidget *widget, gpointer user_data);
62 gnc_dialog_date_close_ok_cb (GtkWidget *widget, gpointer user_data)
70 acc = gnc_account_sel_get_account( GNC_ACCOUNT_SEL(ddc->acct_combo) );
74 gnc_error_dialog (GTK_WINDOW (ddc->dialog),
"%s",
75 _(
"No Account selected. Please try again."));
81 gnc_error_dialog (GTK_WINDOW (ddc->dialog),
"%s",
82 _(
"Placeholder account selected. Please try again."));
90 *ddc->t2 = gnc_date_edit_get_date (GNC_DATE_EDIT (ddc->post_date));
95 *ddc->t = gncBillTermComputeDueDate (ddc->terms, *ddc->t2);
97 *ddc->t = gnc_date_edit_get_date (GNC_DATE_EDIT (ddc->date));
100 if (ddc->memo_entry && ddc->memo)
101 *(ddc->memo) = gtk_editable_get_chars (GTK_EDITABLE (ddc->memo_entry),
103 if (ddc->question_check)
104 ddc->answer = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ddc->question_check));
111 GNCAccountSel *gas = GNC_ACCOUNT_SEL (ddc->acct_combo);
114 gnc_account_sel_set_acct_filters( gas, ddc->acct_types, ddc->acct_commodities );
115 gnc_account_sel_set_new_account_ability( gas, TRUE );
116 gnc_account_sel_set_new_account_modal( gas, TRUE );
117 gnc_account_sel_set_account( gas, ddc->acct, set_default_acct );
121 gnc_dialog_date_close_parented (GtkWidget *parent,
const char *message,
122 const char *label_message,
123 gboolean ok_is_default,
133 if (!message || !label_message || !t)
139 builder = gtk_builder_new();
140 gnc_builder_add_from_file (builder,
"dialog-date-close.glade",
"date_close_dialog");
141 ddc->dialog = GTK_WIDGET(gtk_builder_get_object (builder,
"date_close_dialog"));
144 gtk_widget_set_name (GTK_WIDGET(ddc->dialog),
"gnc-id-date-close");
146 date_box = GTK_WIDGET(gtk_builder_get_object (builder,
"date_box"));
147 ddc->date = gnc_date_edit_new (time(NULL), FALSE, FALSE);
148 gtk_box_pack_start (GTK_BOX(date_box), ddc->date, TRUE, TRUE, 0);
149 gnc_date_edit_set_time (GNC_DATE_EDIT (ddc->date), *t);
152 gtk_window_set_transient_for (GTK_WINDOW(ddc->dialog), GTK_WINDOW(parent));
155 label = GTK_LABEL (gtk_builder_get_object (builder,
"msg_label"));
156 gtk_label_set_text (label, message);
157 label = GTK_LABEL (gtk_builder_get_object (builder,
"label"));
158 gtk_label_set_text (label, label_message);
161 gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, ddc);
163 gtk_widget_show_all (ddc->dialog);
166 while (gtk_dialog_run (GTK_DIALOG (ddc->dialog)) == GTK_RESPONSE_OK)
173 g_object_unref(G_OBJECT(builder));
175 gtk_widget_destroy(ddc->dialog);
176 retval = ddc->retval;
177 g_list_free (ddc->acct_types);
184 post_date_changed_cb (
GNCDateEdit *gde, gpointer d)
190 post_date = gnc_date_edit_get_date (gde);
191 due_date = gncBillTermComputeDueDate (ddc->terms, post_date);
192 gnc_date_edit_set_time (GNC_DATE_EDIT (ddc->date), due_date);
196 gnc_dialog_dates_acct_question_parented (GtkWidget *parent,
const char *message,
197 const char *ddue_label_message,
198 const char *post_label_message,
199 const char *acct_label_message,
200 const char *question_check_message,
201 gboolean ok_is_default,
202 gboolean set_default_acct,
203 GList * acct_types, GList * acct_commodities,
204 QofBook *book, GncBillTerm *terms,
207 char **memo,
Account **acct, gboolean *answer)
216 if (!message || !ddue_label_message || !post_label_message ||
217 !acct_label_message || !acct_types || !book || !ddue || !post || !acct)
219 if (question_check_message && !answer)
226 ddc->acct_types = acct_types;
227 ddc->acct_commodities = acct_commodities;
232 builder = gtk_builder_new();
233 gnc_builder_add_from_file (builder,
"dialog-date-close.glade",
"date_account_dialog");
234 ddc->dialog = GTK_WIDGET(gtk_builder_get_object (builder,
"date_account_dialog"));
235 ddc->memo_entry = GTK_WIDGET(gtk_builder_get_object (builder,
"memo_entry"));
238 gtk_widget_set_name (GTK_WIDGET(ddc->dialog),
"gnc-id-date-close");
240 acct_box = GTK_WIDGET(gtk_builder_get_object (builder,
"acct_hbox"));
241 ddc->acct_combo = gnc_account_sel_new();
242 gtk_box_pack_start (GTK_BOX(acct_box), ddc->acct_combo, TRUE, TRUE, 0);
244 date_box = GTK_WIDGET(gtk_builder_get_object (builder,
"date_hbox"));
245 ddc->date = gnc_date_edit_new (time(NULL), FALSE, FALSE);
246 gtk_box_pack_start (GTK_BOX(date_box), ddc->date, TRUE, TRUE, 0);
248 date_box = GTK_WIDGET(gtk_builder_get_object (builder,
"post_date_box"));
249 ddc->post_date = gnc_date_edit_new (time(NULL), FALSE, FALSE);
250 gtk_box_pack_start (GTK_BOX(date_box), ddc->post_date, TRUE, TRUE, 0);
252 ddc->question_check = GTK_WIDGET(gtk_builder_get_object (builder,
"question_check"));
255 gtk_window_set_transient_for (GTK_WINDOW(ddc->dialog), GTK_WINDOW(parent));
259 label = GTK_LABEL (gtk_builder_get_object (builder,
"top_msg_label"));
260 gtk_label_set_text (label, message);
261 label = GTK_LABEL (gtk_builder_get_object (builder,
"date_label"));
262 gtk_label_set_text (label, ddue_label_message);
263 label = GTK_LABEL (gtk_builder_get_object (builder,
"postdate_label"));
264 gtk_label_set_text (label, post_label_message);
265 label = GTK_LABEL (gtk_builder_get_object (builder,
"acct_label"));
266 gtk_label_set_text (label, acct_label_message);
268 if (question_check_message)
270 gtk_label_set_text(GTK_LABEL(gtk_bin_get_child (GTK_BIN(ddc->question_check))), question_check_message);
271 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ddc->question_check), *answer);
275 gtk_widget_hide(ddc->question_check);
276 gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object (builder,
"hide1")));
281 gnc_date_edit_set_time (GNC_DATE_EDIT (ddc->post_date), *post);
286 g_signal_connect (G_OBJECT (ddc->post_date),
"date_changed",
287 G_CALLBACK (post_date_changed_cb), ddc);
288 gtk_widget_set_sensitive (ddc->date, FALSE);
289 post_date_changed_cb (GNC_DATE_EDIT (ddc->post_date), ddc);
292 gnc_date_edit_set_time (GNC_DATE_EDIT (ddc->date), *ddue);
295 fill_in_acct_info (ddc, set_default_acct);
298 gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, ddc);
300 gtk_widget_show_all (ddc->dialog);
303 gnc_date_grab_focus (GNC_DATE_EDIT (ddc->post_date));
306 while (gtk_dialog_run (GTK_DIALOG (ddc->dialog)) == GTK_RESPONSE_OK)
313 g_object_unref(G_OBJECT(builder));
315 gtk_widget_destroy(ddc->dialog);
316 retval = ddc->retval;
318 if (question_check_message)
319 *answer = ddc->answer;
326 gnc_dialog_date_acct_parented (GtkWidget *parent,
const char *message,
327 const char *date_label_message,
328 const char *acct_label_message,
329 gboolean ok_is_default,
330 GList * acct_types, QofBook *book,
341 if (!message || !date_label_message || !acct_label_message ||
342 !acct_types || !book || !date || !acct)
348 ddc->acct_types = acct_types;
351 builder = gtk_builder_new();
352 gnc_builder_add_from_file (builder,
"dialog-date-close.glade",
"date_account_dialog");
353 ddc->dialog = GTK_WIDGET(gtk_builder_get_object (builder,
"date_account_dialog"));
356 gtk_widget_set_name (GTK_WIDGET(ddc->dialog),
"gnc-id-date-close");
358 acct_box = GTK_WIDGET(gtk_builder_get_object (builder,
"acct_hbox"));
359 ddc->acct_combo = gnc_account_sel_new();
361 gnc_account_sel_set_account (GNC_ACCOUNT_SEL(ddc->acct_combo), *acct, FALSE);
362 gtk_box_pack_start (GTK_BOX(acct_box), ddc->acct_combo, TRUE, TRUE, 0);
364 date_box = GTK_WIDGET(gtk_builder_get_object (builder,
"date_hbox"));
365 ddc->date = gnc_date_edit_new (time(NULL), FALSE, FALSE);
366 gtk_box_pack_start (GTK_BOX(date_box), ddc->date, TRUE, TRUE, 0);
369 gtk_window_set_transient_for (GTK_WINDOW(ddc->dialog), GTK_WINDOW(parent));
373 label = GTK_LABEL (gtk_builder_get_object (builder,
"top_msg_label"));
374 gtk_label_set_text (label, message);
375 label = GTK_LABEL (gtk_builder_get_object (builder,
"date_label"));
376 gtk_label_set_text (label, date_label_message);
377 label = GTK_LABEL (gtk_builder_get_object (builder,
"acct_label"));
378 gtk_label_set_text (label, acct_label_message);
381 gnc_date_edit_set_time (GNC_DATE_EDIT (ddc->date), *date);
384 fill_in_acct_info (ddc, FALSE);
387 gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, ddc);
389 gtk_widget_show_all (ddc->dialog);
391 gtk_widget_hide (GTK_WIDGET(gtk_builder_get_object (builder,
"postdate_label")));
392 gtk_widget_hide (GTK_WIDGET(gtk_builder_get_object (builder,
"post_date_box")));
393 gtk_widget_hide (GTK_WIDGET(gtk_builder_get_object (builder,
"memo_entry")));
394 gtk_widget_hide (GTK_WIDGET(gtk_builder_get_object (builder,
"memo_label")));
397 while (gtk_dialog_run (GTK_DIALOG (ddc->dialog)) == GTK_RESPONSE_OK)
404 g_object_unref(G_OBJECT(builder));
406 gtk_widget_destroy(ddc->dialog);
407 retval = ddc->retval;
utility functions for the GnuCash UI
gboolean xaccAccountGetPlaceholder(const Account *acc)
Get the "placeholder" flag for an account.
gint64 time64
Most systems that are currently maintained, including Microsoft Windows, BSD-derived Unixes and Linux...