29 #include <glib/gi18n.h> 33 #include "search-boolean.h" 34 #include "search-core-utils.h" 38 static void pass_parent (GNCSearchCoreType *fe, gpointer parent);
39 static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe);
40 static gboolean gncs_validate (GNCSearchCoreType *fe);
41 static GtkWidget *gncs_get_widget(GNCSearchCoreType *fe);
42 static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe);
44 static void gnc_search_boolean_finalize (GObject *obj);
48 GNCSearchCoreType parent_instance;
55 G_DEFINE_TYPE(GNCSearchBoolean, gnc_search_boolean, GNC_TYPE_SEARCH_CORE_TYPE)
58 gnc_search_boolean_class_init (GNCSearchBooleanClass *klass)
60 GObjectClass *object_class;
61 GNCSearchCoreTypeClass *gnc_search_core_type = (GNCSearchCoreTypeClass *)klass;
63 object_class = G_OBJECT_CLASS (klass);
65 object_class->finalize = gnc_search_boolean_finalize;
68 gnc_search_core_type->pass_parent = pass_parent;
69 gnc_search_core_type->validate = gncs_validate;
70 gnc_search_core_type->get_widget = gncs_get_widget;
71 gnc_search_core_type->get_predicate = gncs_get_predicate;
72 gnc_search_core_type->clone = gncs_clone;
76 gnc_search_boolean_init (GNCSearchBoolean *o)
82 gnc_search_boolean_finalize (GObject *obj)
84 GNCSearchBoolean *o = (GNCSearchBoolean *)obj;
85 g_assert (GNC_IS_SEARCH_BOOLEAN (o));
87 G_OBJECT_CLASS (gnc_search_boolean_parent_class)->finalize(obj);
98 gnc_search_boolean_new (
void)
100 GNCSearchBoolean *o = g_object_new(GNC_TYPE_SEARCH_BOOLEAN, NULL);
105 gnc_search_boolean_set_value (GNCSearchBoolean *fi, gboolean value)
107 g_return_if_fail (fi);
108 g_return_if_fail (GNC_IS_SEARCH_BOOLEAN (fi));
114 pass_parent (GNCSearchCoreType *fe, gpointer parent)
116 GNCSearchBoolean *fi = (GNCSearchBoolean *)fe;
118 g_return_if_fail (fi);
119 g_return_if_fail (GNC_IS_SEARCH_BOOLEAN (fi));
121 fi->parent = GTK_WINDOW(parent);
125 gncs_validate (GNCSearchCoreType *fe)
127 GNCSearchBoolean *fi = (GNCSearchBoolean *)fe;
128 gboolean valid = TRUE;
130 g_return_val_if_fail (fi, FALSE);
131 g_return_val_if_fail (GNC_IS_SEARCH_BOOLEAN (fi), FALSE);
139 toggle_changed (GtkToggleButton *button, GNCSearchBoolean *fe)
141 fe->value = gtk_toggle_button_get_active (button);
145 gncs_get_widget (GNCSearchCoreType *fe)
147 GtkWidget *toggle, *box;
148 GNCSearchBoolean *fi = (GNCSearchBoolean *)fe;
150 g_return_val_if_fail (fi, NULL);
151 g_return_val_if_fail (GNC_IS_SEARCH_BOOLEAN (fi), NULL);
153 box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
154 gtk_box_set_homogeneous (GTK_BOX (box), FALSE);
157 toggle = gtk_check_button_new ();
158 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), fi->value);
159 g_signal_connect (G_OBJECT (toggle),
"toggled", G_CALLBACK (toggle_changed), fe);
160 gtk_box_pack_start (GTK_BOX (box), toggle, FALSE, FALSE, 3);
166 static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe)
168 GNCSearchBoolean *fi = (GNCSearchBoolean *)fe;
170 g_return_val_if_fail (fi, NULL);
171 g_return_val_if_fail (GNC_IS_SEARCH_BOOLEAN (fi), NULL);
173 return qof_query_boolean_predicate (QOF_COMPARE_EQUAL, fi->value);
176 static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe)
178 GNCSearchBoolean *se, *fse = (GNCSearchBoolean *)fe;
180 g_return_val_if_fail (fse, NULL);
181 g_return_val_if_fail (GNC_IS_SEARCH_BOOLEAN (fse), NULL);
183 se = gnc_search_boolean_new ();
184 gnc_search_boolean_set_value (se, fse->value);
186 return (GNCSearchCoreType *)se;