30 #include <glib/gi18n.h> 35 #include "search-reconciled.h" 36 #include "search-core-utils.h" 40 static void pass_parent (GNCSearchCoreType *fe, gpointer parent);
41 static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe);
42 static gboolean gncs_validate (GNCSearchCoreType *fe);
43 static GtkWidget *gncs_get_widget(GNCSearchCoreType *fe);
44 static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe);
46 static void gnc_search_reconciled_finalize (GObject *obj);
50 GNCSearchCoreType parent_instance;
53 cleared_match_t value;
58 G_DEFINE_TYPE(GNCSearchReconciled, gnc_search_reconciled, GNC_TYPE_SEARCH_CORE_TYPE)
61 gnc_search_reconciled_class_init (GNCSearchReconciledClass *klass)
63 GObjectClass *object_class;
64 GNCSearchCoreTypeClass *gnc_search_core_type = (GNCSearchCoreTypeClass *)klass;
66 object_class = G_OBJECT_CLASS (klass);
68 object_class->finalize = gnc_search_reconciled_finalize;
71 gnc_search_core_type->pass_parent = pass_parent;
72 gnc_search_core_type->validate = gncs_validate;
73 gnc_search_core_type->get_widget = gncs_get_widget;
74 gnc_search_core_type->get_predicate = gncs_get_predicate;
75 gnc_search_core_type->clone = gncs_clone;
79 gnc_search_reconciled_init (GNCSearchReconciled *o)
81 o->how = QOF_CHAR_MATCH_ANY;
82 o->value = CLEARED_NO;
86 gnc_search_reconciled_finalize (GObject *obj)
88 GNCSearchReconciled *o = (GNCSearchReconciled *)obj;
89 g_assert (GNC_IS_SEARCH_RECONCILED (o));
91 G_OBJECT_CLASS (gnc_search_reconciled_parent_class)->finalize(obj);
101 GNCSearchReconciled *
102 gnc_search_reconciled_new (
void)
104 GNCSearchReconciled *o = g_object_new(GNC_TYPE_SEARCH_RECONCILED, NULL);
109 gnc_search_reconciled_set_value (GNCSearchReconciled *fi, cleared_match_t value)
111 g_return_if_fail (fi);
112 g_return_if_fail (GNC_IS_SEARCH_RECONCILED (fi));
118 gnc_search_reconciled_set_how (GNCSearchReconciled *fi,
QofCharMatch how)
120 g_return_if_fail (fi);
121 g_return_if_fail (GNC_IS_SEARCH_RECONCILED (fi));
126 pass_parent (GNCSearchCoreType *fe, gpointer parent)
128 GNCSearchReconciled *fi = (GNCSearchReconciled *)fe;
130 g_return_if_fail (fi);
131 g_return_if_fail (GNC_IS_SEARCH_RECONCILED (fi));
133 fi->parent = GTK_WINDOW(parent);
137 gncs_validate (GNCSearchCoreType *fe)
139 GNCSearchReconciled *fi = (GNCSearchReconciled *)fe;
140 gboolean valid = TRUE;
142 g_return_val_if_fail (fi, FALSE);
143 g_return_val_if_fail (GNC_IS_SEARCH_RECONCILED (fi), FALSE);
151 toggle_changed (GtkToggleButton *button, GNCSearchReconciled *fe)
153 gboolean is_on = gtk_toggle_button_get_active (button);
155 cleared_match_t value =
156 (cleared_match_t) ((uint64_t)g_object_get_data (G_OBJECT (button),
"button-value") & 0xffffffff);
158 cleared_match_t value =
159 (cleared_match_t)g_object_get_data (G_OBJECT (button),
"button-value");
169 make_menu (GNCSearchCoreType *fe)
171 GNCSearchReconciled *fi = (GNCSearchReconciled *)fe;
174 combo = GTK_COMBO_BOX(gnc_combo_box_new_search());
175 gnc_combo_box_search_add(combo, _(
"is"), QOF_CHAR_MATCH_ANY);
176 gnc_combo_box_search_add(combo, _(
"is not"), QOF_CHAR_MATCH_NONE);
177 gnc_combo_box_search_changed(combo, &fi->how);
178 gnc_combo_box_search_set_active(combo, fi->how ? fi->how : QOF_CHAR_MATCH_ANY);
180 return GTK_WIDGET(combo);
184 make_toggle (GNCSearchReconciled *fi,
char *label, cleared_match_t option)
188 toggle = gtk_check_button_new_with_label (label);
189 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), (fi->value & option));
190 g_object_set_data (G_OBJECT (toggle),
"button-value", (gpointer) option);
191 g_signal_connect (G_OBJECT (toggle),
"toggled", G_CALLBACK (toggle_changed), fi);
197 gncs_get_widget (GNCSearchCoreType *fe)
199 GtkWidget *toggle, *menu, *box;
200 GNCSearchReconciled *fi = (GNCSearchReconciled *)fe;
202 g_return_val_if_fail (fi, NULL);
203 g_return_val_if_fail (GNC_IS_SEARCH_RECONCILED (fi), NULL);
205 box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
206 gtk_box_set_homogeneous (GTK_BOX (box), FALSE);
209 menu = make_menu (fe);
210 gtk_box_pack_start (GTK_BOX (box), menu, FALSE, FALSE, 3);
213 toggle = make_toggle (fi, _(
"Not Cleared"), CLEARED_NO);
214 gtk_box_pack_start (GTK_BOX (box), toggle, FALSE, FALSE, 3);
216 toggle = make_toggle (fi, _(
"Cleared"), CLEARED_CLEARED);
217 gtk_box_pack_start (GTK_BOX (box), toggle, FALSE, FALSE, 3);
219 toggle = make_toggle (fi, _(
"Reconciled"), CLEARED_RECONCILED);
220 gtk_box_pack_start (GTK_BOX (box), toggle, FALSE, FALSE, 3);
222 toggle = make_toggle (fi, _(
"Frozen"), CLEARED_FROZEN);
223 gtk_box_pack_start (GTK_BOX (box), toggle, FALSE, FALSE, 3);
225 toggle = make_toggle (fi, _(
"Voided"), CLEARED_VOIDED);
226 gtk_box_pack_start (GTK_BOX (box), toggle, FALSE, FALSE, 3);
232 static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe)
234 GNCSearchReconciled *fi = (GNCSearchReconciled *)fe;
236 cleared_match_t value;
239 g_return_val_if_fail (fi, NULL);
240 g_return_val_if_fail (GNC_IS_SEARCH_RECONCILED (fi), NULL);
247 if (value & CLEARED_CLEARED)
249 if (value & CLEARED_RECONCILED)
251 if (value & CLEARED_FROZEN)
253 if (value & CLEARED_NO)
255 if (value & CLEARED_VOIDED)
259 return qof_query_char_predicate (fi->how, chars);
262 static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe)
264 GNCSearchReconciled *se, *fse = (GNCSearchReconciled *)fe;
266 g_return_val_if_fail (fse, NULL);
267 g_return_val_if_fail (GNC_IS_SEARCH_RECONCILED (fse), NULL);
269 se = gnc_search_reconciled_new ();
270 gnc_search_reconciled_set_value (se, fse->value);
271 gnc_search_reconciled_set_how (se, fse->how);
273 return (GNCSearchCoreType *)se;
#define VREC
split is void
#define YREC
The Split has been reconciled.
#define FREC
frozen into accounting period
QofCharMatch
A CHAR type is for a RECNCell, Comparisons for QOF_TYPE_CHAR 'ANY' will match any character in the st...
#define CREC
The Split has been cleared.
API for Transactions and Splits (journal entries)
#define NREC
not reconciled or cleared