29 #include <glib/gi18n.h>
31 #include "gnc-amount-edit.h"
34 #include "search-int64.h"
35 #include "search-core-utils.h"
48 static void gnc_search_int64_finalize (GObject *obj);
60 (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_INT64, GNCSearchInt64Private))
65 gnc_search_int64_get_type (
void)
67 static GType type = 0;
76 (GClassInitFunc)gnc_search_int64_class_init,
81 (GInstanceInitFunc)gnc_search_int64_init,
84 type = g_type_register_static (GNC_TYPE_SEARCH_CORE_TYPE,
95 GObjectClass *object_class;
98 object_class = G_OBJECT_CLASS (klass);
99 parent_class = g_type_class_peek_parent (klass);
101 object_class->finalize = gnc_search_int64_finalize;
104 gnc_search_core_type->editable_enters = editable_enters;
105 gnc_search_core_type->grab_focus = grab_focus;
106 gnc_search_core_type->validate = gncs_validate;
107 gnc_search_core_type->get_widget = gncs_get_widget;
108 gnc_search_core_type->get_predicate = gncs_get_predicate;
109 gnc_search_core_type->clone = gncs_clone;
117 o->how = QOF_COMPARE_EQUAL;
121 gnc_search_int64_finalize (GObject *obj)
124 g_assert (IS_GNCSEARCH_INT64 (o));
126 G_OBJECT_CLASS (parent_class)->finalize(obj);
137 gnc_search_int64_new (
void)
146 g_return_if_fail (fi);
147 g_return_if_fail (IS_GNCSEARCH_INT64 (fi));
155 g_return_if_fail (fi);
156 g_return_if_fail (IS_GNCSEARCH_INT64 (fi));
164 gboolean valid = TRUE;
166 g_return_val_if_fail (fi, FALSE);
167 g_return_val_if_fail (IS_GNCSEARCH_INT64 (fi), FALSE);
177 gnc_numeric value = gnc_amount_edit_get_amount (entry);
178 g_assert (value.denom == 1);
179 fe->value = value.num;
188 combo = GTK_COMBO_BOX(gnc_combo_box_new_search());
189 gnc_combo_box_search_add(combo, _(
"is less than"), QOF_COMPARE_LT);
190 gnc_combo_box_search_add(combo, _(
"is less than or equal to"), QOF_COMPARE_LTE);
191 gnc_combo_box_search_add(combo, _(
"equals"), QOF_COMPARE_EQUAL);
192 gnc_combo_box_search_add(combo, _(
"does not equal"), QOF_COMPARE_NEQ);
193 gnc_combo_box_search_add(combo, _(
"is greater than"), QOF_COMPARE_GT);
194 gnc_combo_box_search_add(combo, _(
"is greater than or equal to"), QOF_COMPARE_GTE);
195 gnc_combo_box_search_changed(combo, &fi->how);
196 gnc_combo_box_search_set_active(combo, fi->how ? fi->how : QOF_COMPARE_LT);
198 return GTK_WIDGET(combo);
207 g_return_if_fail (fi);
208 g_return_if_fail (IS_GNCSEARCH_INT64 (fi));
212 gtk_widget_grab_focus (priv->entry);
221 g_return_if_fail (fi);
222 g_return_if_fail (IS_GNCSEARCH_INT64 (fi));
226 gtk_entry_set_activates_default(GTK_ENTRY (priv->entry), TRUE);
232 GtkWidget *entry, *menu, *box;
236 g_return_val_if_fail (fi, NULL);
237 g_return_val_if_fail (IS_GNCSEARCH_INT64 (fi), NULL);
240 box = gtk_hbox_new (FALSE, 3);
243 menu = make_menu (fe);
244 gtk_box_pack_start (GTK_BOX (box), menu, FALSE, FALSE, 3);
247 entry = gnc_amount_edit_new ();
248 gnc_amount_edit_set_print_info (GNC_AMOUNT_EDIT (entry),
249 gnc_integral_print_info ());
252 gnc_numeric value = gnc_numeric_create (fi->value, 1);
253 gnc_amount_edit_set_amount (GNC_AMOUNT_EDIT (entry), value);
255 g_signal_connect (G_OBJECT (entry),
"amount_changed", G_CALLBACK (entry_changed), fe);
256 gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 3);
257 priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry));
258 priv->gae = GNC_AMOUNT_EDIT (entry);
269 g_return_val_if_fail (fi, NULL);
270 g_return_val_if_fail (IS_GNCSEARCH_INT64 (fi), NULL);
274 entry_changed (priv->gae, fi);
276 return qof_query_int64_predicate (fi->how, fi->value);
283 g_return_val_if_fail (fse, NULL);
284 g_return_val_if_fail (IS_GNCSEARCH_INT64 (fse), NULL);
286 se = gnc_search_int64_new ();
287 gnc_search_int64_set_value (se, fse->value);
288 gnc_search_int64_set_how (se, fse->how);