29 #include <glib/gi18n.h>
31 #include "gnc-amount-edit.h"
34 #include "search-double.h"
35 #include "search-core-utils.h"
48 static void gnc_search_double_finalize (GObject *obj);
59 (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_DOUBLE, GNCSearchDoublePrivate))
64 gnc_search_double_get_type (
void)
66 static GType type = 0;
75 (GClassInitFunc)gnc_search_double_class_init,
80 (GInstanceInitFunc)gnc_search_double_init,
83 type = g_type_register_static (GNC_TYPE_SEARCH_CORE_TYPE,
94 GObjectClass *object_class;
97 object_class = G_OBJECT_CLASS (klass);
98 parent_class = g_type_class_peek_parent (klass);
100 object_class->finalize = gnc_search_double_finalize;
103 gnc_search_core_type->editable_enters = editable_enters;
104 gnc_search_core_type->grab_focus = grab_focus;
105 gnc_search_core_type->validate = gncs_validate;
106 gnc_search_core_type->get_widget = gncs_get_widget;
107 gnc_search_core_type->get_predicate = gncs_get_predicate;
108 gnc_search_core_type->clone = gncs_clone;
116 o->how = QOF_COMPARE_EQUAL;
120 gnc_search_double_finalize (GObject *obj)
123 g_assert (IS_GNCSEARCH_DOUBLE (o));
125 G_OBJECT_CLASS (parent_class)->finalize(obj);
136 gnc_search_double_new (
void)
145 g_return_if_fail (fi);
146 g_return_if_fail (IS_GNCSEARCH_DOUBLE (fi));
154 g_return_if_fail (fi);
155 g_return_if_fail (IS_GNCSEARCH_DOUBLE (fi));
163 gboolean valid = TRUE;
165 g_return_val_if_fail (fi, FALSE);
166 g_return_val_if_fail (IS_GNCSEARCH_DOUBLE (fi), FALSE);
176 fe->value = gnc_amount_edit_get_damount (entry);
185 combo = GTK_COMBO_BOX(gnc_combo_box_new_search());
187 gnc_combo_box_search_add(combo, _(
"is less than"), QOF_COMPARE_LT);
188 gnc_combo_box_search_add(combo, _(
"is less than or equal to"), QOF_COMPARE_LTE);
189 gnc_combo_box_search_add(combo, _(
"equals"), QOF_COMPARE_EQUAL);
190 gnc_combo_box_search_add(combo, _(
"does not equal"), QOF_COMPARE_NEQ);
191 gnc_combo_box_search_add(combo, _(
"is greater than"), QOF_COMPARE_GT);
192 gnc_combo_box_search_add(combo, _(
"is greater than or equal to"), 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);
205 g_return_if_fail (fi);
206 g_return_if_fail (IS_GNCSEARCH_DOUBLE (fi));
210 gtk_widget_grab_focus (priv->entry);
219 g_return_if_fail (fi);
220 g_return_if_fail (IS_GNCSEARCH_DOUBLE (fi));
224 gtk_entry_set_activates_default(GTK_ENTRY (priv->entry), TRUE);
230 GtkWidget *entry, *menu, *box;
234 g_return_val_if_fail (fi, NULL);
235 g_return_val_if_fail (IS_GNCSEARCH_DOUBLE (fi), NULL);
238 box = gtk_hbox_new (FALSE, 3);
241 menu = make_menu (fe);
242 gtk_box_pack_start (GTK_BOX (box), menu, FALSE, FALSE, 3);
245 entry = gnc_amount_edit_new ();
247 gnc_amount_edit_set_damount (GNC_AMOUNT_EDIT (entry), fi->value);
248 g_signal_connect (G_OBJECT (entry),
"amount_changed", G_CALLBACK (entry_changed), fe);
249 gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 3);
250 priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry));
251 priv->gae = GNC_AMOUNT_EDIT (entry);
262 g_return_val_if_fail (fi, NULL);
263 g_return_val_if_fail (IS_GNCSEARCH_DOUBLE (fi), NULL);
267 entry_changed (priv->gae, fi);
269 return qof_query_double_predicate (fi->how, fi->value);
276 g_return_val_if_fail (fse, NULL);
277 g_return_val_if_fail (IS_GNCSEARCH_DOUBLE (fse), NULL);
279 se = gnc_search_double_new ();
280 gnc_search_double_set_value (se, fse->value);
281 gnc_search_double_set_how (se, fse->how);