29 #include <glib/gi18n.h> 32 #include "gnc-date-edit.h" 35 #include "search-date.h" 36 #include "search-core-utils.h" 40 static void pass_parent (GNCSearchCoreType *fe, gpointer parent);
41 static void editable_enters (GNCSearchCoreType *fe);
42 static void grab_focus (GNCSearchCoreType *fe);
43 static GNCSearchCoreType *gncs_clone (GNCSearchCoreType *fe);
44 static gboolean gncs_validate (GNCSearchCoreType *fe);
45 static GtkWidget *gncs_get_widget (GNCSearchCoreType *fe);
46 static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe);
48 static void gnc_search_date_finalize (GObject *obj);
52 GNCSearchCoreType parent_instance;
61 G_DEFINE_TYPE(GNCSearchDate, gnc_search_date, GNC_TYPE_SEARCH_CORE_TYPE)
64 gnc_search_date_class_init (GNCSearchDateClass *klass)
66 GObjectClass *object_class;
67 GNCSearchCoreTypeClass *gnc_search_core_type = (GNCSearchCoreTypeClass *)klass;
69 object_class = G_OBJECT_CLASS (klass);
71 object_class->finalize = gnc_search_date_finalize;
74 gnc_search_core_type->pass_parent = pass_parent;
75 gnc_search_core_type->editable_enters = editable_enters;
76 gnc_search_core_type->grab_focus = grab_focus;
77 gnc_search_core_type->validate = gncs_validate;
78 gnc_search_core_type->get_widget = gncs_get_widget;
79 gnc_search_core_type->get_predicate = gncs_get_predicate;
80 gnc_search_core_type->clone = gncs_clone;
84 gnc_search_date_init (GNCSearchDate *o)
87 o->how = QOF_COMPARE_LT;
91 gnc_search_date_finalize (GObject *obj)
95 g_assert (GNC_IS_SEARCH_DATE (obj));
97 o = GNC_SEARCH_DATE(obj);
99 gtk_widget_destroy (o->entry);
101 G_OBJECT_CLASS (gnc_search_date_parent_class)->finalize(obj);
112 gnc_search_date_new (
void)
114 GNCSearchDate *o = g_object_new(GNC_TYPE_SEARCH_DATE, NULL);
119 gnc_search_date_set_date (GNCSearchDate *fi,
time64 tt)
121 g_return_if_fail (fi);
122 g_return_if_fail (GNC_IS_SEARCH_DATE (fi));
130 g_return_if_fail (fi);
131 g_return_if_fail (GNC_IS_SEARCH_DATE (fi));
136 pass_parent (GNCSearchCoreType *fe, gpointer parent)
138 GNCSearchDate *fi = (GNCSearchDate *)fe;
140 g_return_if_fail (fi);
141 g_return_if_fail (GNC_IS_SEARCH_DATE (fi));
143 fi->parent = GTK_WINDOW(parent);
147 gncs_validate (GNCSearchCoreType *fe)
149 GNCSearchDate *fi = (GNCSearchDate *)fe;
150 gboolean valid = TRUE;
152 g_return_val_if_fail (fi, FALSE);
153 g_return_val_if_fail (GNC_IS_SEARCH_DATE (fi), FALSE);
161 gnc_search_date_set_date_from_edit (GNCSearchDate *fe,
GNCDateEdit *de)
167 if (fe->how == QOF_COMPARE_LTE || fe->how == QOF_COMPARE_GT)
168 fe->tt = gnc_date_edit_get_date_end (de);
170 fe->tt = gnc_date_edit_get_date (de);
174 date_changed (
GNCDateEdit *date_edit, GNCSearchDate *fe)
176 gnc_search_date_set_date_from_edit (fe, date_edit);
180 make_menu (GNCSearchCoreType *fe)
182 GNCSearchDate *fi = (GNCSearchDate *)fe;
185 combo = GTK_COMBO_BOX(gnc_combo_box_new_search());
187 gnc_combo_box_search_add(combo, _(
"is before"), QOF_COMPARE_LT);
188 gnc_combo_box_search_add(combo, _(
"is before or on"), QOF_COMPARE_LTE);
189 gnc_combo_box_search_add(combo, _(
"is on"), QOF_COMPARE_EQUAL);
190 gnc_combo_box_search_add(combo, _(
"is not on"), QOF_COMPARE_NEQ);
191 gnc_combo_box_search_add(combo, _(
"is after"), QOF_COMPARE_GT);
192 gnc_combo_box_search_add(combo, _(
"is on or after"), QOF_COMPARE_GTE);
193 gnc_combo_box_search_changed(combo, &fi->how);
194 gnc_combo_box_search_set_active(combo, fi->how ? fi->how : QOF_COMPARE_LT);
196 return GTK_WIDGET(combo);
200 grab_focus (GNCSearchCoreType *fe)
202 GNCSearchDate *fi = (GNCSearchDate *)fe;
204 g_return_if_fail (fi);
205 g_return_if_fail (GNC_IS_SEARCH_DATE (fi));
208 gtk_widget_grab_focus (GNC_DATE_EDIT(fi->entry)->date_entry);
212 editable_enters (GNCSearchCoreType *fe)
214 GNCSearchDate *fi = (GNCSearchDate *)fe;
216 g_return_if_fail (fi);
217 g_return_if_fail (GNC_IS_SEARCH_DATE (fi));
220 gnc_date_activates_default (GNC_DATE_EDIT (fi->entry), TRUE);
224 gncs_get_widget (GNCSearchCoreType *fe)
226 GtkWidget *entry, *menu, *box;
227 GNCSearchDate *fi = (GNCSearchDate *)fe;
229 g_return_val_if_fail (fi, NULL);
230 g_return_val_if_fail (GNC_IS_SEARCH_DATE (fi), NULL);
232 box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
233 gtk_box_set_homogeneous (GTK_BOX (box), FALSE);
236 menu = make_menu (fe);
237 gtk_box_pack_start (GTK_BOX (box), menu, FALSE, FALSE, 3);
240 entry = gnc_date_edit_new (fi->tt, FALSE, FALSE);
241 g_signal_connect (G_OBJECT (entry),
"date_changed", G_CALLBACK (date_changed), fe);
242 gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 3);
243 g_object_ref (entry);
250 static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe)
252 GNCSearchDate *fi = (GNCSearchDate *)fe;
254 g_return_val_if_fail (fi, NULL);
255 g_return_val_if_fail (GNC_IS_SEARCH_DATE (fi), NULL);
259 gnc_search_date_set_date_from_edit (fi, GNC_DATE_EDIT (fi->entry));
261 if (fi->how == QOF_COMPARE_EQUAL || fi->how == QOF_COMPARE_NEQ)
262 return qof_query_date_predicate (fi->how, QOF_DATE_MATCH_DAY, fi->tt);
264 return qof_query_date_predicate (fi->how, QOF_DATE_MATCH_NORMAL, fi->tt);
267 static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe)
269 GNCSearchDate *se, *fse = (GNCSearchDate *)fe;
271 g_return_val_if_fail (fse, NULL);
272 g_return_val_if_fail (GNC_IS_SEARCH_DATE (fse), NULL);
274 se = gnc_search_date_new ();
275 gnc_search_date_set_date (se, fse->tt);
276 gnc_search_date_set_how (se, fse->how);
278 return (GNCSearchCoreType *)se;
Date and Time handling routines.
QofQueryCompare
Standard Query comparators, for how to compare objects in a predicate.
time64 gnc_time(time64 *tbuf)
get the current time
gint64 time64
Most systems that are currently maintained, including Microsoft Windows, BSD-derived Unixes and Linux...