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);
154 cleared_match_t value =
155 (cleared_match_t) ((uintptr_t)g_object_get_data (G_OBJECT (button),
"button-value") & 0xffffffff);
164 make_menu (GNCSearchCoreType *fe)
166 GNCSearchReconciled *fi = (GNCSearchReconciled *)fe;
169 combo = GTK_COMBO_BOX(gnc_combo_box_new_search());
170 gnc_combo_box_search_add(combo, _(
"is"), QOF_CHAR_MATCH_ANY);
171 gnc_combo_box_search_add(combo, _(
"is not"), QOF_CHAR_MATCH_NONE);
172 gnc_combo_box_search_changed(combo, &fi->how);
173 gnc_combo_box_search_set_active(combo, fi->how ? fi->how : QOF_CHAR_MATCH_ANY);
175 return GTK_WIDGET(combo);
179 make_toggle (GNCSearchReconciled *fi,
char *label, cleared_match_t option)
183 toggle = gtk_check_button_new_with_label (label);
184 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), (fi->value & option));
185 g_object_set_data (G_OBJECT (toggle),
"button-value", (gpointer) option);
186 g_signal_connect (G_OBJECT (toggle),
"toggled", G_CALLBACK (toggle_changed), fi);
192 gncs_get_widget (GNCSearchCoreType *fe)
194 GtkWidget *toggle, *menu, *box;
195 GNCSearchReconciled *fi = (GNCSearchReconciled *)fe;
197 g_return_val_if_fail (fi, NULL);
198 g_return_val_if_fail (GNC_IS_SEARCH_RECONCILED (fi), NULL);
200 box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
201 gtk_box_set_homogeneous (GTK_BOX (box), FALSE);
204 menu = make_menu (fe);
205 gtk_box_pack_start (GTK_BOX (box), menu, FALSE, FALSE, 3);
208 toggle = make_toggle (fi, _(
"Not Cleared"), CLEARED_NO);
209 gtk_box_pack_start (GTK_BOX (box), toggle, FALSE, FALSE, 3);
211 toggle = make_toggle (fi, _(
"Cleared"), CLEARED_CLEARED);
212 gtk_box_pack_start (GTK_BOX (box), toggle, FALSE, FALSE, 3);
214 toggle = make_toggle (fi, _(
"Reconciled"), CLEARED_RECONCILED);
215 gtk_box_pack_start (GTK_BOX (box), toggle, FALSE, FALSE, 3);
217 toggle = make_toggle (fi, _(
"Frozen"), CLEARED_FROZEN);
218 gtk_box_pack_start (GTK_BOX (box), toggle, FALSE, FALSE, 3);
220 toggle = make_toggle (fi, _(
"Voided"), CLEARED_VOIDED);
221 gtk_box_pack_start (GTK_BOX (box), toggle, FALSE, FALSE, 3);
227 static QofQueryPredData* gncs_get_predicate (GNCSearchCoreType *fe)
229 GNCSearchReconciled *fi = (GNCSearchReconciled *)fe;
231 cleared_match_t value;
234 g_return_val_if_fail (fi, NULL);
235 g_return_val_if_fail (GNC_IS_SEARCH_RECONCILED (fi), NULL);
242 if (value & CLEARED_CLEARED)
244 if (value & CLEARED_RECONCILED)
246 if (value & CLEARED_FROZEN)
248 if (value & CLEARED_NO)
250 if (value & CLEARED_VOIDED)
254 return qof_query_char_predicate (fi->how, chars);
257 static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe)
259 GNCSearchReconciled *se, *fse = (GNCSearchReconciled *)fe;
261 g_return_val_if_fail (fse, NULL);
262 g_return_val_if_fail (GNC_IS_SEARCH_RECONCILED (fse), NULL);
264 se = gnc_search_reconciled_new ();
265 gnc_search_reconciled_set_value (se, fse->value);
266 gnc_search_reconciled_set_how (se, fse->how);
268 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