29 #include <glib/gi18n.h>
33 #include "gnc-gui-query.h"
36 #include "business-gnome-utils.h"
37 #include "search-owner.h"
38 #include "search-core-utils.h"
49 static void gnc_search_owner_finalize (GObject *obj);
51 #define _PRIVATE(x) (((GNCSearchOwner *)(x))->priv)
56 GtkWidget * owner_box;
57 GtkWidget * owner_choice;
60 #define GNC_SEARCH_OWNER_GET_PRIVATE(o) \
61 (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_OWNER, GNCSearchOwnerPrivate))
71 static guint signals[LAST_SIGNAL] = { 0 };
75 gnc_search_owner_get_type (
void)
77 static GType type = 0;
86 (GClassInitFunc)gnc_search_owner_class_init,
91 (GInstanceInitFunc)gnc_search_owner_init,
94 type = g_type_register_static (GNC_TYPE_SEARCH_CORE_TYPE,
105 GObjectClass *object_class;
108 object_class = G_OBJECT_CLASS (klass);
109 parent_class = g_type_class_peek_parent (klass);
111 object_class->finalize = gnc_search_owner_finalize;
114 gnc_search_core_type->validate = gncs_validate;
115 gnc_search_core_type->get_widget = gncs_get_widget;
116 gnc_search_core_type->get_predicate = gncs_get_predicate;
117 gnc_search_core_type->clone = gncs_clone;
128 gnc_search_owner_finalize (GObject *obj)
130 g_assert (IS_GNCSEARCH_OWNER (obj));
132 G_OBJECT_CLASS (parent_class)->finalize(obj);
143 gnc_search_owner_new (
void)
145 GNCSearchOwner *o = g_object_new(gnc_search_owner_get_type (), NULL);
154 gboolean valid = TRUE;
156 g_return_val_if_fail (fi, FALSE);
157 g_return_val_if_fail (IS_GNCSEARCH_OWNER (fi), FALSE);
159 priv = GNC_SEARCH_OWNER_GET_PRIVATE(fi);
160 if (priv->owner.owner.undefined == NULL)
163 gnc_error_dialog (NULL,
"%s", _(
"You have not selected an owner"));
172 owner_changed_cb (GtkWidget *widget, gpointer data)
177 priv = GNC_SEARCH_OWNER_GET_PRIVATE(fe);
178 gnc_owner_get_owner (priv->owner_choice, &(priv->owner));
188 priv = GNC_SEARCH_OWNER_GET_PRIVATE(fe);
189 if (priv->owner_choice)
190 gtk_container_remove (GTK_CONTAINER (priv->owner_box), priv->owner_choice);
194 gnc_owner_select_create (NULL, priv->owner_box,
195 gnc_get_current_book(), &(priv->owner));
198 g_signal_connect (G_OBJECT (priv->owner_choice),
"changed",
199 G_CALLBACK (owner_changed_cb), fe);
201 gtk_widget_show_all (priv->owner_choice);
210 g_return_if_fail(GTK_IS_COMBO_BOX(widget));
212 type = gnc_combo_box_search_get_active(GTK_COMBO_BOX(widget));
215 priv = GNC_SEARCH_OWNER_GET_PRIVATE(fe);
218 priv->owner.type = type;
219 priv->owner.owner.undefined = NULL;
220 set_owner_widget (fe);
222 else if (priv->owner_choice == NULL)
223 set_owner_widget (fe);
234 priv = GNC_SEARCH_OWNER_GET_PRIVATE(fi);
237 combo = GTK_COMBO_BOX(gnc_combo_box_new_search());
238 gnc_combo_box_search_add(combo, _(
"Customer"), GNC_OWNER_CUSTOMER);
239 gnc_combo_box_search_add(combo, _(
"Vendor"), GNC_OWNER_VENDOR);
240 gnc_combo_box_search_add(combo, _(
"Employee"), GNC_OWNER_EMPLOYEE);
241 gnc_combo_box_search_add(combo, _(
"Job"), GNC_OWNER_JOB);
243 g_signal_connect (combo,
"changed", G_CALLBACK (type_combo_changed), fe);
244 gnc_combo_box_search_set_active(combo, type);
246 return GTK_WIDGET(combo);
257 combo = GTK_COMBO_BOX(gnc_combo_box_new_search());
259 gnc_combo_box_search_add(combo, _(
"is not"), QOF_GUID_MATCH_NONE);
260 gnc_combo_box_search_changed(combo, &fi->how);
263 return GTK_WIDGET(combo);
269 GtkWidget *how_menu, *type_menu, *box;
273 g_return_val_if_fail (fi, NULL);
274 g_return_val_if_fail (IS_GNCSEARCH_OWNER (fi), NULL);
276 priv = GNC_SEARCH_OWNER_GET_PRIVATE(fi);
277 box = gtk_hbox_new (FALSE, 3);
280 how_menu = make_how_menu (fe);
281 gtk_box_pack_start (GTK_BOX (box), how_menu, FALSE, FALSE, 3);
284 priv->owner_box = gtk_hbox_new (FALSE, 0);
290 type_menu = make_type_menu (fe);
291 gtk_box_pack_start (GTK_BOX (box), type_menu, FALSE, FALSE, 3);
294 gtk_box_pack_start (GTK_BOX (box), priv->owner_box, FALSE, FALSE, 3);
307 g_return_val_if_fail (fi, NULL);
308 g_return_val_if_fail (IS_GNCSEARCH_OWNER (fi), NULL);
310 priv = GNC_SEARCH_OWNER_GET_PRIVATE(fi);
312 l = g_list_prepend (l, (gpointer)guid);
314 return qof_query_guid_predicate (fi->how, l);
322 g_return_val_if_fail (fse, NULL);
323 g_return_val_if_fail (IS_GNCSEARCH_OWNER (fse), NULL);
325 se = gnc_search_owner_new ();
327 se_priv = GNC_SEARCH_OWNER_GET_PRIVATE(se);
328 fse_priv = GNC_SEARCH_OWNER_GET_PRIVATE(fse);
329 gncOwnerCopy (&(fse_priv->owner), &(se_priv->owner));
const GncGUID * gncOwnerGetGUID(const GncOwner *owner)
Business Interface: Object OWNERs.
utility functions for the GnuCash UI
GncOwnerType gncOwnerGetType(const GncOwner *owner)