diff --git a/gnucash/gnome-search/dialog-search.c b/gnucash/gnome-search/dialog-search.c index 3c67c85626..c3ae5261f8 100644 --- a/gnucash/gnome-search/dialog-search.c +++ b/gnucash/gnome-search/dialog-search.c @@ -809,7 +809,7 @@ get_comb_box_widget (GNCSearchWindow *sw, struct _crit_data *data) gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, - SEARCH_COL_NAME, _(param->title), + SEARCH_COL_NAME, _(gnc_search_param_get_title (param)), SEARCH_COL_POINTER, param, -1); @@ -875,16 +875,16 @@ gnc_search_dialog_book_option_changed (gpointer new_val, gpointer user_data) if (*new_data) { - if (strcmp (param->title, N_("Action")) == 0) + if (strcmp (gnc_search_param_get_title (param), N_("Action")) == 0) gnc_search_param_set_title (param, N_("Number/Action")); - if (strcmp (param->title, N_("Number")) == 0) + if (strcmp (gnc_search_param_get_title (param), N_("Number")) == 0) gnc_search_param_set_title (param, N_("Transaction Number")); } else { - if (strcmp (param->title, N_("Number/Action")) == 0) + if (strcmp (gnc_search_param_get_title (param), N_("Number/Action")) == 0) gnc_search_param_set_title (param, N_("Action")); - if (strcmp (param->title, N_("Transaction Number")) == 0) + if (strcmp (gnc_search_param_get_title (param), N_("Transaction Number")) == 0) gnc_search_param_set_title (param, N_("Number")); } } diff --git a/gnucash/gnome-utils/gnc-query-view.c b/gnucash/gnome-utils/gnc-query-view.c index 1537322e1f..31600932b5 100644 --- a/gnucash/gnome-utils/gnc-query-view.c +++ b/gnucash/gnome-utils/gnc-query-view.c @@ -310,15 +310,15 @@ gnc_query_view_init_view (GNCQueryView *qview) col = gtk_tree_view_column_new (); /* Set the column title */ - gtk_tree_view_column_set_title (col, (gchar *) ((GNCSearchParam *) param)->title); + gtk_tree_view_column_set_title (col, gnc_search_param_get_title (GNC_SEARCH_PARAM (param))); /* pack tree view column into tree view */ gtk_tree_view_append_column (view, col); /* Get justification */ - if (((GNCSearchParam *) param)->justify == GTK_JUSTIFY_CENTER) + if (gnc_search_param_get_justify (GNC_SEARCH_PARAM (param)) == GTK_JUSTIFY_CENTER) algn = 0.5; - else if (((GNCSearchParam *) param)->justify == GTK_JUSTIFY_RIGHT) + else if (gnc_search_param_get_justify (GNC_SEARCH_PARAM (param)) == GTK_JUSTIFY_RIGHT) { /* GTK_JUSTIFY_RIGHT is only used for monetary values so right align * the column title and data for both ltr and rtl */ @@ -330,7 +330,7 @@ gnc_query_view_init_view (GNCQueryView *qview) gtk_tree_view_column_set_alignment (col, algn); /* Set column resizable */ - if (((GNCSearchParam *) param)->non_resizeable) + if (gnc_search_param_get_non_resizeable (GNC_SEARCH_PARAM (param))) { gtk_tree_view_column_set_resizable (col, FALSE); gtk_tree_view_column_set_expand (col, FALSE); @@ -339,7 +339,7 @@ gnc_query_view_init_view (GNCQueryView *qview) gtk_tree_view_column_set_resizable (col, TRUE); /* Set column clickable */ - if (((GNCSearchParam *) param)->passive) + if (gnc_search_param_get_passive (GNC_SEARCH_PARAM (param))) gtk_tree_view_column_set_clickable (col, FALSE); else { diff --git a/gnucash/gnome-utils/search-param.c b/gnucash/gnome-utils/search-param.c index c5c2fe1a6d..75fabaa21a 100644 --- a/gnucash/gnome-utils/search-param.c +++ b/gnucash/gnome-utils/search-param.c @@ -43,16 +43,21 @@ typedef struct _GNCSearchParamPrivate GNCSearchParamPrivate; struct _GNCSearchParamPrivate { + const char * title; + GtkJustification justify; + gboolean passive; + gboolean non_resizeable; + QofIdTypeConst type; }; #define GNC_SEARCH_PARAM_GET_PRIVATE(o) \ ((GNCSearchParamPrivate*)gnc_search_param_get_instance_private ((GNCSearchParam*)o)) -typedef struct _GNCSearchParamSimplePrivate GNCSearchParamSimplePrivate; - -struct _GNCSearchParamSimplePrivate +struct _GNCSearchParamSimple { + GNCSearchParam search_param; + GSList * converters; GSList * param_path; @@ -60,22 +65,16 @@ struct _GNCSearchParamSimplePrivate gpointer lookup_arg; }; -#define GNC_SEARCH_PARAM_SIMPLE_GET_PRIVATE(o) \ - ((GNCSearchParamSimplePrivate*)gnc_search_param_simple_get_instance_private ((GNCSearchParamSimple*)o)) - -typedef struct _GNCSearchParamCompoundPrivate GNCSearchParamCompoundPrivate; - -struct _GNCSearchParamCompoundPrivate +struct _GNCSearchParamCompound { + GNCSearchParam search_param; + GList * sub_search; /* This defines the type of subsearch, either AND or OR */ GNCSearchParamKind kind; }; -#define GNC_SEARCH_PARAM_COMPOUND_GET_PRIVATE(o) \ - ((GNCSearchParamCompoundPrivate*)gnc_search_param_compound_get_instance_private ((GNCSearchParamCompound*)o)) - enum { LAST_SIGNAL @@ -113,7 +112,7 @@ gnc_search_param_finalize (GObject *obj) /* subclass for simple searches of a single element */ -G_DEFINE_TYPE_WITH_PRIVATE(GNCSearchParamSimple, gnc_search_param_simple, GNC_TYPE_SEARCH_PARAM) +G_DEFINE_TYPE(GNCSearchParamSimple, gnc_search_param_simple, GNC_TYPE_SEARCH_PARAM) static void gnc_search_param_simple_class_init (GNCSearchParamSimpleClass *klass) @@ -132,25 +131,23 @@ static void gnc_search_param_simple_finalize (GObject *obj) { GNCSearchParamSimple *o; - GNCSearchParamSimplePrivate *priv; g_return_if_fail (obj != NULL); g_return_if_fail (GNC_IS_SEARCH_PARAM_SIMPLE(obj)); o = GNC_SEARCH_PARAM_SIMPLE(obj); - priv = GNC_SEARCH_PARAM_SIMPLE_GET_PRIVATE(o); - g_slist_free (priv->param_path); - priv->param_path = NULL; - g_slist_free (priv->converters); - priv->converters = NULL; + g_slist_free (o->param_path); + o->param_path = NULL; + g_slist_free (o->converters); + o->converters = NULL; G_OBJECT_CLASS(gnc_search_param_simple_parent_class)->finalize (obj); } /* Subclass for compound searches consisting of AND/OR of several elements */ -G_DEFINE_TYPE_WITH_PRIVATE(GNCSearchParamCompound, gnc_search_param_compound, GNC_TYPE_SEARCH_PARAM) +G_DEFINE_TYPE(GNCSearchParamCompound, gnc_search_param_compound, GNC_TYPE_SEARCH_PARAM) static void gnc_search_param_compound_class_init (GNCSearchParamCompoundClass *klass) @@ -169,16 +166,14 @@ static void gnc_search_param_compound_finalize (GObject *obj) { GNCSearchParamCompound *o; - GNCSearchParamCompoundPrivate *priv; g_return_if_fail (obj != NULL); g_return_if_fail (GNC_IS_SEARCH_PARAM_COMPOUND(obj)); o = GNC_SEARCH_PARAM_COMPOUND(obj); - priv = GNC_SEARCH_PARAM_COMPOUND_GET_PRIVATE(o); - g_list_free (priv->sub_search); - priv->sub_search = NULL; + g_list_free (o->sub_search); + o->sub_search = NULL; G_OBJECT_CLASS (gnc_search_param_compound_parent_class)->finalize (obj); } @@ -218,19 +213,17 @@ gnc_search_param_set_param_path (GNCSearchParamSimple *param, QofIdTypeConst search_type, GSList *param_path) { - GNCSearchParamSimplePrivate *priv; GNCSearchParamPrivate *priv_base; QofIdTypeConst type = NULL; GSList *converters = NULL; g_return_if_fail (GNC_IS_SEARCH_PARAM_SIMPLE(param)); - priv = GNC_SEARCH_PARAM_SIMPLE_GET_PRIVATE(param); - if (priv->param_path) + if (param->param_path) { - g_slist_free (priv->param_path); + g_slist_free (param->param_path); } - priv->param_path = g_slist_copy (param_path); + param->param_path = g_slist_copy (param_path); /* Compute the parameter type */ for (; param_path; param_path = param_path->next) @@ -255,11 +248,11 @@ gnc_search_param_set_param_path (GNCSearchParamSimple *param, priv_base->type = type; /* Save the converters */ - if (priv->converters) + if (param->converters) { - g_slist_free (priv->converters); + g_slist_free (param->converters); } - priv->converters = g_slist_reverse (converters); + param->converters = g_slist_reverse (converters); } void @@ -279,34 +272,25 @@ gnc_search_param_override_param_type (GNCSearchParamSimple *param, GList * gnc_search_param_get_search (GNCSearchParamCompound *param) { - GNCSearchParamCompoundPrivate *priv; - g_return_val_if_fail (GNC_IS_SEARCH_PARAM_COMPOUND(param), NULL); - priv = GNC_SEARCH_PARAM_COMPOUND_GET_PRIVATE(param); - return priv->sub_search; + return param->sub_search; } GSList * gnc_search_param_get_param_path (GNCSearchParamSimple *param) { - GNCSearchParamSimplePrivate *priv; - g_return_val_if_fail (GNC_IS_SEARCH_PARAM_SIMPLE(param), NULL); - priv = GNC_SEARCH_PARAM_SIMPLE_GET_PRIVATE(param); - return g_slist_copy (priv->param_path); + return g_slist_copy (param->param_path); } GSList * gnc_search_param_get_converters (GNCSearchParamSimple *param) { - GNCSearchParamSimplePrivate *priv; - g_return_val_if_fail (GNC_IS_SEARCH_PARAM_SIMPLE(param), NULL); - priv = GNC_SEARCH_PARAM_SIMPLE_GET_PRIVATE(param); - return priv->converters; + return param->converters; } QofIdTypeConst @@ -323,15 +307,21 @@ gnc_search_param_get_param_type (GNCSearchParam *param) GNCSearchParamKind gnc_search_param_get_kind (GNCSearchParam *param) { - GNCSearchParamCompoundPrivate *priv; - if (GNC_IS_SEARCH_PARAM_SIMPLE(param)) return SEARCH_PARAM_ELEM; g_return_val_if_fail (GNC_IS_SEARCH_PARAM_COMPOUND(param), SEARCH_PARAM_ELEM); - priv = GNC_SEARCH_PARAM_COMPOUND_GET_PRIVATE(param); - return priv->kind; + return GNC_SEARCH_PARAM_COMPOUND (param)->kind; +} + +const char* +gnc_search_param_get_title (GNCSearchParam *param) +{ + g_return_val_if_fail (GNC_IS_SEARCH_PARAM(param), NULL); + + GNCSearchParamPrivate *priv = GNC_SEARCH_PARAM_GET_PRIVATE(param); + return priv->title; } void @@ -339,7 +329,17 @@ gnc_search_param_set_title (GNCSearchParam *param, const char *title) { g_return_if_fail (GNC_IS_SEARCH_PARAM(param)); - param->title = title; + GNCSearchParamPrivate *priv = GNC_SEARCH_PARAM_GET_PRIVATE(param); + priv->title = title; +} + +GtkJustification +gnc_search_param_get_justify (GNCSearchParam *param) +{ + g_return_val_if_fail (GNC_IS_SEARCH_PARAM(param), GTK_JUSTIFY_LEFT); + + GNCSearchParamPrivate *priv = GNC_SEARCH_PARAM_GET_PRIVATE(param); + return priv->justify; } void @@ -347,7 +347,17 @@ gnc_search_param_set_justify (GNCSearchParam *param, GtkJustification justify) { g_return_if_fail (GNC_IS_SEARCH_PARAM(param)); - param->justify = justify; + GNCSearchParamPrivate *priv = GNC_SEARCH_PARAM_GET_PRIVATE(param); + priv->justify = justify; +} + +gboolean +gnc_search_param_get_passive (GNCSearchParam *param) +{ + g_return_val_if_fail (GNC_IS_SEARCH_PARAM(param), FALSE); + + GNCSearchParamPrivate *priv = GNC_SEARCH_PARAM_GET_PRIVATE(param); + return priv->passive; } void @@ -355,7 +365,17 @@ gnc_search_param_set_passive (GNCSearchParam *param, gboolean value) { g_assert (GNC_IS_SEARCH_PARAM(param)); - param->passive = value; + GNCSearchParamPrivate *priv = GNC_SEARCH_PARAM_GET_PRIVATE(param); + priv->passive = value; +} + +gboolean +gnc_search_param_get_non_resizeable (GNCSearchParam *param) +{ + g_return_val_if_fail (GNC_IS_SEARCH_PARAM(param), FALSE); + + GNCSearchParamPrivate *priv = GNC_SEARCH_PARAM_GET_PRIVATE(param); + return priv->non_resizeable; } void @@ -363,7 +383,8 @@ gnc_search_param_set_non_resizeable (GNCSearchParam *param, gboolean value) { g_assert (GNC_IS_SEARCH_PARAM(param)); - param->non_resizeable = value; + GNCSearchParamPrivate *priv = GNC_SEARCH_PARAM_GET_PRIVATE(param); + priv->non_resizeable = value; } gboolean @@ -473,7 +494,6 @@ gnc_search_param_prepend_compound (GList *list, char const *title, QofIdTypeConst type = NULL; GNCSearchParamCompound *param; GNCSearchParamPrivate *basepriv; - GNCSearchParamCompoundPrivate *priv; g_return_val_if_fail (title, list); g_return_val_if_fail (param_list, list); @@ -495,11 +515,10 @@ gnc_search_param_prepend_compound (GList *list, char const *title, gnc_search_param_set_title (GNC_SEARCH_PARAM(param), title); gnc_search_param_set_justify (GNC_SEARCH_PARAM(param), justify); - priv = GNC_SEARCH_PARAM_COMPOUND_GET_PRIVATE(param); basepriv = GNC_SEARCH_PARAM_GET_PRIVATE(param); - priv->sub_search = g_list_copy (param_list); + param->sub_search = g_list_copy (param_list); basepriv->type = type; - priv->kind = kind; + param->kind = kind; return g_list_prepend (list, param); } @@ -510,30 +529,23 @@ gnc_search_param_set_param_fcn (GNCSearchParamSimple *param, GNCSearchParamFcn fcn, gpointer arg) { - GNCSearchParamSimplePrivate *priv; - g_return_if_fail (param); g_return_if_fail (param_type && *param_type); g_return_if_fail (fcn); g_return_if_fail (GNC_IS_SEARCH_PARAM_SIMPLE(param)); - priv = GNC_SEARCH_PARAM_SIMPLE_GET_PRIVATE(param); - priv->lookup_fcn = fcn; - priv->lookup_arg = arg; + param->lookup_fcn = fcn; + param->lookup_arg = arg; gnc_search_param_override_param_type (param, param_type); } gboolean gnc_search_param_has_param_fcn (GNCSearchParamSimple *param) { - GNCSearchParamSimplePrivate *priv; - g_return_val_if_fail (param, FALSE); g_return_val_if_fail (GNC_IS_SEARCH_PARAM_SIMPLE(param), FALSE); - priv = GNC_SEARCH_PARAM_SIMPLE_GET_PRIVATE(param); - - if (priv->lookup_fcn) + if (param->lookup_fcn) return TRUE; return FALSE; @@ -543,15 +555,12 @@ gnc_search_param_has_param_fcn (GNCSearchParamSimple *param) gpointer gnc_search_param_compute_value (GNCSearchParamSimple *param, gpointer object) { - GNCSearchParamSimplePrivate *priv; - g_return_val_if_fail (param, NULL); g_return_val_if_fail (GNC_IS_SEARCH_PARAM_SIMPLE(param), NULL); - priv = GNC_SEARCH_PARAM_SIMPLE_GET_PRIVATE(param); - if (priv->lookup_fcn) + if (param->lookup_fcn) { - return ((priv->lookup_fcn)(object, priv->lookup_arg)); + return ((param->lookup_fcn)(object, param->lookup_arg)); } else { diff --git a/gnucash/gnome-utils/search-param.h b/gnucash/gnome-utils/search-param.h index 4dc18e93e6..423b09da31 100644 --- a/gnucash/gnome-utils/search-param.h +++ b/gnucash/gnome-utils/search-param.h @@ -25,22 +25,7 @@ #define GNC_TYPE_SEARCH_PARAM (gnc_search_param_get_type ()) -#define GNC_SEARCH_PARAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_SEARCH_PARAM, GNCSearchParam)) -#define GNCSEARCH_PARAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GNC_TYPE_SEARCH_PARAM, GNCSearchParamClass) -#define GNC_IS_SEARCH_PARAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_SEARCH_PARAM)) - -typedef struct _GNCSearchParam GNCSearchParam; -typedef struct _GNCSearchParamClass GNCSearchParamClass; - -struct _GNCSearchParam -{ - GObject gobject; - - const char * title; - GtkJustification justify; - gboolean passive; - gboolean non_resizeable; -}; +G_DECLARE_DERIVABLE_TYPE (GNCSearchParam, gnc_search_param, GNC, SEARCH_PARAM, GObject) struct _GNCSearchParamClass { @@ -52,52 +37,10 @@ struct _GNCSearchParamClass }; #define GNC_TYPE_SEARCH_PARAM_SIMPLE (gnc_search_param_simple_get_type ()) -#define GNC_SEARCH_PARAM_SIMPLE(o) \ - (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_SEARCH_PARAM_SIMPLE, GNCSearchParamSimple)) -#define GNCSEARCH_PARAM_SIMPLE_CLASS(k) \ - (G_TYPE_CHECK_CLASS_CAST ((k), GNC_TYPE_SEARCH_PARAM_SIMPLE, GNCSearchParamSimpleClass) -#define GNC_IS_SEARCH_PARAM_SIMPLE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_SEARCH_PARAM_SIMPLE)) - -typedef struct _GNCSearchParamSimple GNCSearchParamSimple; -typedef struct _GNCSearchParamSimpleClass GNCSearchParamSimpleClass; - -struct _GNCSearchParamSimple -{ - GNCSearchParam search_param; -}; - -struct _GNCSearchParamSimpleClass -{ - GNCSearchParamClass search_param_class; - - /* virtual methods */ - - /* signals */ -}; +G_DECLARE_FINAL_TYPE (GNCSearchParamSimple, gnc_search_param_simple, GNC, SEARCH_PARAM_SIMPLE, GNCSearchParam) #define GNC_TYPE_SEARCH_PARAM_COMPOUND (gnc_search_param_compound_get_type ()) -#define GNC_SEARCH_PARAM_COMPOUND(o) \ - (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_SEARCH_PARAM_COMPOUND, GNCSearchParamCompound)) -#define GNCSEARCH_PARAM_COMPOUND_CLASS(k) \ - (G_TYPE_CHECK_CLASS_CAST ((k), GNC_TYPE_SEARCH_PARAM_COMPOUND, GNCSearchParamCompoundClass) -#define GNC_IS_SEARCH_PARAM_COMPOUND(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_SEARCH_PARAM_COMPOUND)) - -typedef struct _GNCSearchParamCompound GNCSearchParamCompound; -typedef struct _GNCSearchParamCompoundClass GNCSearchParamCompoundClass; - -struct _GNCSearchParamCompound -{ - GNCSearchParam search_param; -}; - -struct _GNCSearchParamCompoundClass -{ - GNCSearchParamClass search_param_class; - - /* virtual methods */ - - /* signals */ -}; +G_DECLARE_FINAL_TYPE (GNCSearchParamCompound, gnc_search_param_compound, GNC, SEARCH_PARAM_COMPOUND, GNCSearchParam) typedef enum { @@ -106,11 +49,6 @@ typedef enum SEARCH_PARAM_ALL = 2 } GNCSearchParamKind; -/* These are internal functions */ -GType gnc_search_param_get_type (void); -GType gnc_search_param_simple_get_type (void); -GType gnc_search_param_compound_get_type (void); - /* Create a new search param */ GNCSearchParamSimple * gnc_search_param_simple_new (void); GNCSearchParamCompound * gnc_search_param_compound_new (void); @@ -126,13 +64,17 @@ void gnc_search_param_set_param_path (GNCSearchParamSimple *param, GList * gnc_search_param_get_search (GNCSearchParamCompound *param); GSList * gnc_search_param_get_param_path (GNCSearchParamSimple *param); QofIdTypeConst gnc_search_param_get_param_type (GNCSearchParam *param); +const char *gnc_search_param_get_title (GNCSearchParam *param); void gnc_search_param_set_title (GNCSearchParam *param, const char *title); GNCSearchParamKind gnc_search_param_get_kind (GNCSearchParam *param); +GtkJustification gnc_search_param_get_justify (GNCSearchParam *param); void gnc_search_param_set_justify (GNCSearchParam *param, GtkJustification justify); +gboolean gnc_search_param_get_passive (GNCSearchParam *param); void gnc_search_param_set_passive (GNCSearchParam *param, gboolean value); +gboolean gnc_search_param_get_non_resizeable (GNCSearchParam *param); void gnc_search_param_set_non_resizeable (GNCSearchParam *param, gboolean value); gboolean gnc_search_param_type_match (GNCSearchParam *a, diff --git a/gnucash/gnome/dialog-find-transactions.c b/gnucash/gnome/dialog-find-transactions.c index 88c406b9dd..9e13835cf2 100644 --- a/gnucash/gnome/dialog-find-transactions.c +++ b/gnucash/gnome/dialog-find-transactions.c @@ -167,16 +167,16 @@ gnc_ui_find_transactions_dialog_create(GtkWindow *parent, GNCLedgerDisplay * ori if (num_action) { - if (strcmp (param->title, N_("Action")) == 0) + if (strcmp (gnc_search_param_get_title (param), N_("Action")) == 0) gnc_search_param_set_title (param, N_("Number/Action")); - if (strcmp (param->title, N_("Number")) == 0) + if (strcmp (gnc_search_param_get_title (param), N_("Number")) == 0) gnc_search_param_set_title (param, N_("Transaction Number")); } else { - if (strcmp (param->title, N_("Number/Action")) == 0) + if (strcmp (gnc_search_param_get_title (param), N_("Number/Action")) == 0) gnc_search_param_set_title (param, N_("Action")); - if (strcmp (param->title, N_("Transaction Number")) == 0) + if (strcmp (gnc_search_param_get_title (param), N_("Transaction Number")) == 0) gnc_search_param_set_title (param, N_("Number")); } }