34 #include "search-param.h"
38 static void gnc_search_param_finalize (GObject *obj);
48 GNCSearchParamFcn lookup_fcn;
52 #define GNC_SEARCH_PARAM_GET_PRIVATE(o) \
53 (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_PARAM, GNCSearchParamPrivate))
55 static GObjectClass *parent_class;
63 static guint signals[LAST_SIGNAL] = { 0 };
67 gnc_search_param_get_type (
void)
69 static GType type = 0;
73 static GTypeInfo type_info =
78 (GClassInitFunc)gnc_search_param_class_init,
83 (GInstanceInitFunc)gnc_search_param_init
86 type = g_type_register_static (G_TYPE_OBJECT,
"GNCSearchParam",
96 GObjectClass *object_class = G_OBJECT_CLASS (klass);
98 parent_class = g_type_class_peek_parent (klass);
100 object_class->finalize = gnc_search_param_finalize;
111 gnc_search_param_finalize (GObject *obj)
116 g_return_if_fail (obj != NULL);
117 g_return_if_fail (GNC_IS_SEARCH_PARAM (obj));
119 o = GNC_SEARCH_PARAM (obj);
120 priv = GNC_SEARCH_PARAM_GET_PRIVATE(o);
122 g_slist_free (priv->param_path);
123 priv->param_path = NULL;
124 g_slist_free (priv->converters);
125 priv->converters = NULL;
127 G_OBJECT_CLASS (parent_class)->finalize(obj);
138 gnc_search_param_new (
void)
151 GSList *converters = NULL;
153 g_return_if_fail (GNC_IS_SEARCH_PARAM (param));
155 priv = GNC_SEARCH_PARAM_GET_PRIVATE(param);
156 if (priv->param_path)
158 g_slist_free (priv->param_path);
160 priv->param_path = g_slist_copy (param_path);
163 for (; param_path; param_path = param_path->next)
174 converters = g_slist_prepend (converters, (gpointer) objDef);
177 type = search_type = objDef->param_type;
184 if (priv->converters)
186 g_slist_free (priv->converters);
188 priv->converters = g_slist_reverse (converters);
197 g_return_if_fail (GNC_IS_SEARCH_PARAM (param));
198 g_return_if_fail (param_type != NULL && *param_type !=
'\0');
200 priv = GNC_SEARCH_PARAM_GET_PRIVATE(param);
201 priv->type = param_type;
210 g_return_val_if_fail (GNC_IS_SEARCH_PARAM (param), NULL);
212 priv = GNC_SEARCH_PARAM_GET_PRIVATE(param);
213 return g_slist_copy (priv->param_path);
221 g_return_val_if_fail (GNC_IS_SEARCH_PARAM (param), NULL);
223 priv = GNC_SEARCH_PARAM_GET_PRIVATE(param);
224 return priv->converters;
232 g_return_val_if_fail (GNC_IS_SEARCH_PARAM (param), NULL);
234 priv = GNC_SEARCH_PARAM_GET_PRIVATE(param);
239 gnc_search_param_set_title (
GNCSearchParam *param,
const char *title)
241 g_return_if_fail (GNC_IS_SEARCH_PARAM (param));
243 param->title = title;
247 gnc_search_param_set_justify (
GNCSearchParam *param, GtkJustification justify)
249 g_return_if_fail (GNC_IS_SEARCH_PARAM (param));
251 param->justify = justify;
255 gnc_search_param_set_passive (
GNCSearchParam *param, gboolean value)
257 g_assert (GNC_IS_SEARCH_PARAM (param));
259 param->passive = value;
263 gnc_search_param_set_non_resizeable (
GNCSearchParam *param, gboolean value)
265 g_assert (GNC_IS_SEARCH_PARAM (param));
267 param->non_resizeable = value;
275 g_return_val_if_fail (GNC_IS_SEARCH_PARAM (a), FALSE);
276 g_return_val_if_fail (GNC_IS_SEARCH_PARAM (b), FALSE);
278 a_priv = GNC_SEARCH_PARAM_GET_PRIVATE(a);
279 b_priv = GNC_SEARCH_PARAM_GET_PRIVATE(b);
280 if (a_priv->type == b_priv->type ||
281 !g_strcmp0 (a_priv->type, b_priv->type))
288 gnc_search_param_prepend_internal (GList *list,
char const *title,
289 GtkJustification justify,
292 const char *param, va_list args)
296 const char *this_param;
298 p = gnc_search_param_new ();
299 gnc_search_param_set_title (p, title);
300 gnc_search_param_set_justify (p, justify);
302 for (this_param = param; this_param;
303 this_param = va_arg (args,
const char *))
305 path = g_slist_prepend (path, (gpointer)this_param);
309 path = g_slist_reverse (path);
310 gnc_search_param_set_param_path (p, search_type, path);
314 gnc_search_param_override_param_type (p, type_override);
317 return g_list_prepend (list, p);
322 gnc_search_param_prepend_with_justify (GList *list,
char const *title,
323 GtkJustification justify,
326 const char *param, ...)
331 g_return_val_if_fail (title, list);
332 g_return_val_if_fail (search_type, list);
333 g_return_val_if_fail (param, list);
336 va_start (ap, param);
337 result = gnc_search_param_prepend_internal (list, title, justify,
338 type_override, search_type,
345 gnc_search_param_prepend (GList *list,
char const *title,
348 const char *param, ...)
353 g_return_val_if_fail (title, list);
354 g_return_val_if_fail (search_type, list);
355 g_return_val_if_fail (param, list);
358 va_start (ap, param);
359 result = gnc_search_param_prepend_internal (list, title, GTK_JUSTIFY_LEFT,
360 type_override, search_type,
369 GNCSearchParamFcn fcn,
374 g_return_if_fail (param);
375 g_return_if_fail (param_type && *param_type);
376 g_return_if_fail (fcn);
377 g_return_if_fail (GNC_IS_SEARCH_PARAM(param));
379 priv = GNC_SEARCH_PARAM_GET_PRIVATE(param);
380 priv->lookup_fcn = fcn;
381 priv->lookup_arg = arg;
382 gnc_search_param_override_param_type (param, param_type);
387 gnc_search_param_compute_value (
GNCSearchParam *param, gpointer
object)
391 g_return_val_if_fail(param, NULL);
392 g_return_val_if_fail(GNC_IS_SEARCH_PARAM(param), NULL);
394 priv = GNC_SEARCH_PARAM_GET_PRIVATE(param);
395 if (priv->lookup_fcn)
397 return ((priv->lookup_fcn)(
object, priv->lookup_arg));
401 GSList *converters = gnc_search_param_get_converters (param);
402 gpointer res = object;
405 for (; converters; converters = converters->next)
408 res = (qp->param_getfcn) (res, qp);
const gchar * QofIdTypeConst
const QofParam * qof_class_get_parameter(QofIdTypeConst obj_name, const char *parameter)
All type declarations for the whole Gnucash engine.