diff --git a/src/gnome-search/gnc-general-search.c b/src/gnome-search/gnc-general-search.c index b3d7a7804f..5e7b555647 100644 --- a/src/gnome-search/gnc-general-search.c +++ b/src/gnome-search/gnc-general-search.c @@ -54,7 +54,7 @@ static void gnc_general_search_init (GNCGeneralSearch *gsl); static void gnc_general_search_class_init (GNCGeneralSearchClass *class); static void gnc_general_search_destroy (GtkObject *object); -#define _PRIVATE(x) (((GNCSearchString *)(x))->priv) +typedef struct _GNCGeneralSearchPrivate GNCGeneralSearchPrivate; struct _GNCGeneralSearchPrivate { GUID guid; @@ -66,6 +66,9 @@ struct _GNCGeneralSearchPrivate { gint component_id; }; +#define _PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_GENERAL_SEARCH, GNCGeneralSearchPrivate)) + static GtkHBoxClass *parent_class; static guint general_search_signals[LAST_SIGNAL]; @@ -122,12 +125,13 @@ gnc_general_search_class_init (GNCGeneralSearchClass *klass) object_class->destroy = gnc_general_search_destroy; klass->changed = NULL; + + g_type_class_add_private(klass, sizeof(GNCGeneralSearchPrivate)); } static void gnc_general_search_init (GNCGeneralSearch *gsl) { - gsl->priv = g_malloc0 (sizeof (*gsl->priv)); gsl->selected_item = NULL; } @@ -135,6 +139,7 @@ static void gnc_general_search_destroy (GtkObject *object) { GNCGeneralSearch *gsl; + GNCGeneralSearchPrivate *priv; g_return_if_fail (object != NULL); g_return_if_fail (GNC_IS_GENERAL_SEARCH (object)); @@ -144,21 +149,15 @@ gnc_general_search_destroy (GtkObject *object) gsl->entry = NULL; gsl->button = NULL; - if (gsl->priv) { - /* Clear the callbacks */ - if (gsl->priv->sw) { - gnc_search_dialog_set_select_cb (gsl->priv->sw, NULL, - NULL, FALSE); - gnc_search_dialog_disconnect (gsl->priv->sw, gsl); - gsl->priv->sw = NULL; - } + priv = _PRIVATE(gsl); + /* Clear the callbacks */ + if (priv->sw) { + gnc_search_dialog_set_select_cb (priv->sw, NULL, NULL, FALSE); + gnc_search_dialog_disconnect (priv->sw, gsl); + priv->sw = NULL; /* Unregister ourselves */ - gnc_unregister_gui_component (gsl->priv->component_id); - - /* And let go */ - g_free (gsl->priv); - gsl->priv = NULL; + gnc_unregister_gui_component (priv->component_id); } if (GTK_OBJECT_CLASS (parent_class)->destroy) @@ -169,12 +168,14 @@ gnc_general_search_destroy (GtkObject *object) static void reset_selection_text (GNCGeneralSearch *gsl) { + GNCGeneralSearchPrivate *priv; const char *text; + priv = _PRIVATE(gsl); if (gsl->selected_item == NULL) text = ""; else - text = gncObjectPrintable (gsl->priv->type, gsl->selected_item); + text = gncObjectPrintable (priv->type, gsl->selected_item); gtk_entry_set_text(GTK_ENTRY(gsl->entry), text); } @@ -184,10 +185,12 @@ static void refresh_handler (GHashTable *changes, gpointer data) { GNCGeneralSearch *gsl = data; + GNCGeneralSearchPrivate *priv; const EventInfo *info; + priv = _PRIVATE(gsl); if (changes) { - info = gnc_gui_get_entity_events (changes, &gsl->priv->guid); + info = gnc_gui_get_entity_events (changes, &priv->guid); if (info) { if (info->event_mask & GNC_EVENT_DESTROY) gsl->selected_item = NULL; @@ -209,7 +212,10 @@ static int on_close_cb (GtkDialog *dialog, gpointer user_data) { GNCGeneralSearch *gsl = user_data; - gsl->priv->sw = NULL; + GNCGeneralSearchPrivate *priv; + + priv = _PRIVATE(gsl); + priv->sw = NULL; return FALSE; } @@ -218,21 +224,23 @@ static void search_cb(GtkButton * button, gpointer user_data) { GNCGeneralSearch *gsl = user_data; + GNCGeneralSearchPrivate *priv; GNCSearchWindow *sw; - if (gsl->priv->sw) { - gnc_search_dialog_raise (gsl->priv->sw); + priv = _PRIVATE(gsl); + if (priv->sw) { + gnc_search_dialog_raise (priv->sw); return; } - sw = (gsl->priv->search_cb)(gsl->selected_item, gsl->priv->user_data); + sw = (priv->search_cb)(gsl->selected_item, priv->user_data); /* NULL means nothing to 'select' */ if (sw == NULL) return; /* Ok, save this search window and setup callbacks */ - gsl->priv->sw = sw; + priv->sw = sw; /* Catch when the search dialog closes */ gnc_search_dialog_connect_on_close (sw, GTK_SIGNAL_FUNC (on_close_cb), @@ -272,6 +280,7 @@ gnc_general_search_new (GNCIdTypeConst type, const char *label, GNCSearchCB search_cb, gpointer user_data) { GNCGeneralSearch *gsl; + GNCGeneralSearchPrivate *priv; const QofParam *get_guid; g_return_val_if_fail (type && label && search_cb, NULL); @@ -279,15 +288,16 @@ gnc_general_search_new (GNCIdTypeConst type, const char *label, get_guid = qof_class_get_parameter (type, QOF_PARAM_GUID); g_return_val_if_fail (get_guid, NULL); - gsl = g_object_new (gnc_general_search_get_type (), NULL); + gsl = g_object_new (GNC_TYPE_GENERAL_SEARCH, NULL); create_children (gsl, label); - gsl->priv->type = type; - gsl->priv->search_cb = search_cb; - gsl->priv->user_data = user_data; - gsl->priv->get_guid = get_guid; - gsl->priv->component_id = + priv = _PRIVATE(gsl); + priv->type = type; + priv->search_cb = search_cb; + priv->user_data = user_data; + priv->get_guid = get_guid; + priv->component_id = gnc_register_gui_component (GNCGENERALSEARCH_CLASS, refresh_handler, NULL, gsl); @@ -306,9 +316,12 @@ gnc_general_search_new (GNCIdTypeConst type, const char *label, void gnc_general_search_set_selected (GNCGeneralSearch *gsl, gpointer selection) { + GNCGeneralSearchPrivate *priv; + g_return_if_fail(gsl != NULL); g_return_if_fail(GNC_IS_GENERAL_SEARCH(gsl)); + priv = _PRIVATE(gsl); if (selection != gsl->selected_item) { gsl->selected_item = selection; reset_selection_text (gsl); @@ -316,18 +329,17 @@ gnc_general_search_set_selected (GNCGeneralSearch *gsl, gpointer selection) general_search_signals[SELECTION_CHANGED]); } - gnc_gui_component_clear_watches (gsl->priv->component_id); + gnc_gui_component_clear_watches (priv->component_id); - if (selection) - { - const QofParam *get_guid = gsl->priv->get_guid; - gsl->priv->guid = * ((GUID *)(get_guid->param_getfcn + if (selection) { + const QofParam *get_guid = priv->get_guid; + priv->guid = * ((GUID *)(get_guid->param_getfcn (gsl->selected_item, get_guid))); gnc_gui_component_watch_entity - (gsl->priv->component_id, &(gsl->priv->guid), + (priv->component_id, &(priv->guid), GNC_EVENT_MODIFY | GNC_EVENT_DESTROY); } else - gsl->priv->guid = *xaccGUIDNULL (); + priv->guid = *xaccGUIDNULL (); } /** diff --git a/src/gnome-search/gnc-general-search.h b/src/gnome-search/gnc-general-search.h index a146ed01be..b99524b416 100644 --- a/src/gnome-search/gnc-general-search.h +++ b/src/gnome-search/gnc-general-search.h @@ -36,14 +36,17 @@ #include "dialog-search.h" #include "gnc-book.h" +#define GNC_TYPE_GENERAL_SEARCH \ + (gnc_general_search_get_type ()) + #define GNC_GENERAL_SEARCH(obj) \ - G_TYPE_CHECK_INSTANCE_CAST (obj, gnc_general_search_get_type(), GNCGeneralSearch) + G_TYPE_CHECK_INSTANCE_CAST (obj, GNC_TYPE_GENERAL_SEARCH, GNCGeneralSearch) #define GNC_GENERAL_SEARCH_CLASS(klass) \ - G_TYPE_CLASS_CAST (klass, gnc_general_search_get_type(), \ + G_TYPE_CLASS_CAST (klass, GNC_TYPE_GENERAL_SEARCH, \ GNCGeneralSearchClass) #define GNC_IS_GENERAL_SEARCH(obj) \ - G_TYPE_CHECK_INSTANCE_TYPE (obj, gnc_general_search_get_type ()) + G_TYPE_CHECK_INSTANCE_TYPE (obj, GNC_TYPE_GENERAL_SEARCH) /* * If this returns NULL, then do nothing (probably an edit window). If @@ -54,7 +57,6 @@ typedef GNCSearchWindow *(*GNCSearchCB) (gpointer start, gpointer user_data); typedef struct { GtkHBox hbox; - struct _GNCGeneralSearchPrivate *priv; GtkWidget * entry; /* display of selection name */ GtkWidget * button; /* button for popping up search window */ diff --git a/src/gnome-search/search-account.c b/src/gnome-search/search-account.c index f6ebac5d50..3def93776c 100644 --- a/src/gnome-search/search-account.c +++ b/src/gnome-search/search-account.c @@ -42,13 +42,16 @@ static void gnc_search_account_class_init (GNCSearchAccountClass *class); static void gnc_search_account_init (GNCSearchAccount *gspaper); static void gnc_search_account_finalize (GObject *obj); -#define _PRIVATE(x) (((GNCSearchAccount *)(x))->priv) +typedef struct _GNCSearchAccountPrivate GNCSearchAccountPrivate; struct _GNCSearchAccountPrivate { gboolean match_all; GList * selected_accounts; }; +#define _PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_ACCOUNT, GNCSearchAccountPrivate)) + static GNCSearchCoreTypeClass *parent_class; @@ -94,12 +97,13 @@ gnc_search_account_class_init (GNCSearchAccountClass *class) gnc_search_core_type->get_widget = gncs_get_widget; gnc_search_core_type->get_predicate = gncs_get_predicate; gnc_search_core_type->clone = gncs_clone; + + g_type_class_add_private(class, sizeof(GNCSearchAccountPrivate)); } static void gnc_search_account_init (GNCSearchAccount *o) { - o->priv = g_malloc0 (sizeof (*o->priv)); o->how = GUID_MATCH_ANY; } @@ -109,8 +113,6 @@ gnc_search_account_finalize (GObject *obj) GNCSearchAccount *o = (GNCSearchAccount *)obj; g_assert (IS_GNCSEARCH_ACCOUNT (o)); - g_free(o->priv); - G_OBJECT_CLASS (parent_class)->finalize(obj); } @@ -124,7 +126,7 @@ gnc_search_account_finalize (GObject *obj) GNCSearchAccount * gnc_search_account_new (void) { - GNCSearchAccount *o = g_object_new(gnc_search_account_get_type (), NULL); + GNCSearchAccount *o = g_object_new(GNC_TYPE_SEARCH_ACCOUNT, NULL); return o; } @@ -138,8 +140,12 @@ gnc_search_account_new (void) GNCSearchAccount * gnc_search_account_matchall_new (void) { - GNCSearchAccount *o = g_object_new(gnc_search_account_get_type (), NULL); - o->priv->match_all = TRUE; + GNCSearchAccount *o; + GNCSearchAccountPrivate *priv; + + o = g_object_new(GNC_TYPE_SEARCH_ACCOUNT, NULL); + priv = _PRIVATE(o); + priv->match_all = TRUE; o->how = GUID_MATCH_ALL; return o; } @@ -148,12 +154,14 @@ static gboolean gncs_validate (GNCSearchCoreType *fe) { GNCSearchAccount *fi = (GNCSearchAccount *)fe; + GNCSearchAccountPrivate *priv; gboolean valid = TRUE; g_return_val_if_fail (fi, FALSE); g_return_val_if_fail (IS_GNCSEARCH_ACCOUNT (fi), FALSE); - if (fi->priv->selected_accounts == NULL && fi->how ) { + priv = _PRIVATE(fi); + if (priv->selected_accounts == NULL && fi->how ) { valid = FALSE; gnc_error_dialog (NULL, _("You have not selected any accounts")); } @@ -192,12 +200,14 @@ static GtkWidget * make_menu (GNCSearchCoreType *fe) { GNCSearchAccount *fi = (GNCSearchAccount *)fe; + GNCSearchAccountPrivate *priv; GtkWidget *menu, *item, *first, *opmenu; int current = 0, index = 0; menu = gtk_menu_new (); - if (fi->priv->match_all) { + priv = _PRIVATE(fi); + if (priv->match_all) { ADD_MENU_ITEM (_("matches all accounts"), GUID_MATCH_ALL); first = item; } else { @@ -218,7 +228,10 @@ make_menu (GNCSearchCoreType *fe) static char * describe_button (GNCSearchAccount *fi) { - if (fi->priv->selected_accounts) + GNCSearchAccountPrivate *priv; + + priv = _PRIVATE(fi); + if (priv->selected_accounts) return (_("Selected Accounts")); return (_("Choose Accounts")); } @@ -226,6 +239,7 @@ describe_button (GNCSearchAccount *fi) static void button_clicked (GtkButton *button, GNCSearchAccount *fi) { + GNCSearchAccountPrivate *priv; GtkDialog *dialog; GtkWidget *account_tree; GtkWidget *accounts_scroller; @@ -240,9 +254,10 @@ button_clicked (GtkButton *button, GNCSearchAccount *fi) gtk_tree_selection_set_mode (selection, GTK_SELECTION_MULTIPLE); /* Select the currently-selected accounts */ - if (fi->priv->selected_accounts) + priv = _PRIVATE(fi); + if (priv->selected_accounts) gnc_tree_view_account_set_selected_accounts (GNC_TREE_VIEW_ACCOUNT(account_tree), - fi->priv->selected_accounts, FALSE); + priv->selected_accounts, FALSE); /* Create the account scroller and put the tree in it */ accounts_scroller = gtk_scrolled_window_new (NULL, NULL); @@ -271,10 +286,10 @@ button_clicked (GtkButton *button, GNCSearchAccount *fi) /* Now run the dialog */ if (gtk_dialog_run (dialog) == GTK_RESPONSE_OK) { - if (fi->priv->selected_accounts) - g_list_free (fi->priv->selected_accounts); + if (priv->selected_accounts) + g_list_free (priv->selected_accounts); - fi->priv->selected_accounts = + priv->selected_accounts = gnc_tree_view_account_get_selected_accounts (GNC_TREE_VIEW_ACCOUNT (account_tree)); desc = describe_button (fi); @@ -316,13 +331,15 @@ gncs_get_widget (GNCSearchCoreType *fe) static QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe) { + GNCSearchAccountPrivate *priv; GNCSearchAccount *fi = (GNCSearchAccount *)fe; GList *l = NULL, *node; g_return_val_if_fail (fi, NULL); g_return_val_if_fail (IS_GNCSEARCH_ACCOUNT (fi), NULL); - for (node = fi->priv->selected_accounts; node; node = node->next) { + priv = _PRIVATE(fi); + for (node = priv->selected_accounts; node; node = node->next) { Account *acc = node->data; const GUID *guid = xaccAccountGetGUID (acc); l = g_list_prepend (l, (gpointer)guid); @@ -335,14 +352,17 @@ static QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe) static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe) { GNCSearchAccount *se, *fse = (GNCSearchAccount *)fe; + GNCSearchAccountPrivate *se_priv, *fse_priv; g_return_val_if_fail (fse, NULL); g_return_val_if_fail (IS_GNCSEARCH_ACCOUNT (fse), NULL); + fse_priv = _PRIVATE(fse); se = gnc_search_account_new (); + se_priv = _PRIVATE(se); se->how = fse->how; - se->priv->match_all = fse->priv->match_all; - se->priv->selected_accounts = g_list_copy (fse->priv->selected_accounts); + se_priv->match_all = fse_priv->match_all; + se_priv->selected_accounts = g_list_copy (fse_priv->selected_accounts); return (GNCSearchCoreType *)se; } diff --git a/src/gnome-search/search-account.h b/src/gnome-search/search-account.h index 73ad5452cb..7c29fb5250 100644 --- a/src/gnome-search/search-account.h +++ b/src/gnome-search/search-account.h @@ -24,16 +24,16 @@ #include "search-core-type.h" #include "QueryNew.h" -#define GNCSEARCH_ACCOUNT(obj) GTK_CHECK_CAST (obj, gnc_search_account_get_type (), GNCSearchAccount) -#define GNCSEARCH_ACCOUNT_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gnc_search_account_get_type (), GNCSearchAccountClass) -#define IS_GNCSEARCH_ACCOUNT(obj) GTK_CHECK_TYPE (obj, gnc_search_account_get_type ()) +#define GNC_TYPE_SEARCH_ACCOUNT (gnc_search_account_get_type ()) +#define GNCSEARCH_ACCOUNT(obj) GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_ACCOUNT, GNCSearchAccount) +#define GNCSEARCH_ACCOUNT_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_ACCOUNT, GNCSearchAccountClass) +#define IS_GNCSEARCH_ACCOUNT(obj) GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_ACCOUNT) typedef struct _GNCSearchAccount GNCSearchAccount; typedef struct _GNCSearchAccountClass GNCSearchAccountClass; struct _GNCSearchAccount { GNCSearchCoreType parent; - struct _GNCSearchAccountPrivate *priv; guid_match_t how; }; diff --git a/src/gnome-search/search-boolean.c b/src/gnome-search/search-boolean.c index 93510d3110..2ab2e516e6 100644 --- a/src/gnome-search/search-boolean.c +++ b/src/gnome-search/search-boolean.c @@ -39,11 +39,15 @@ static void gnc_search_boolean_class_init (GNCSearchBooleanClass *class); static void gnc_search_boolean_init (GNCSearchBoolean *gspaper); static void gnc_search_boolean_finalize (GObject *obj); -#define _PRIVATE(x) (((GNCSearchBoolean *)(x))->priv) +typedef struct _GNCSearchBooleanPrivate GNCSearchBooleanPrivate; struct _GNCSearchBooleanPrivate { + gpointer dummy; }; +#define _PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_BOOLEAN, GNCSearchBooleanPrivate)) + static GNCSearchCoreTypeClass *parent_class; guint @@ -88,12 +92,13 @@ gnc_search_boolean_class_init (GNCSearchBooleanClass *class) gnc_search_core_type->get_widget = gncs_get_widget; gnc_search_core_type->get_predicate = gncs_get_predicate; gnc_search_core_type->clone = gncs_clone; + + g_type_class_add_private(class, sizeof(GNCSearchBooleanPrivate)); } static void gnc_search_boolean_init (GNCSearchBoolean *o) { - o->priv = g_malloc0 (sizeof (*o->priv)); o->how = COMPARE_EQUAL; o->value = TRUE; } @@ -104,8 +109,6 @@ gnc_search_boolean_finalize (GObject *obj) GNCSearchBoolean *o = (GNCSearchBoolean *)obj; g_assert (IS_GNCSEARCH_BOOLEAN (o)); - g_free(o->priv); - G_OBJECT_CLASS (parent_class)->finalize(obj); } @@ -119,7 +122,7 @@ gnc_search_boolean_finalize (GObject *obj) GNCSearchBoolean * gnc_search_boolean_new (void) { - GNCSearchBoolean *o = g_object_new(gnc_search_boolean_get_type (), NULL); + GNCSearchBoolean *o = g_object_new(GNC_TYPE_SEARCH_BOOLEAN, NULL); return o; } diff --git a/src/gnome-search/search-boolean.h b/src/gnome-search/search-boolean.h index 423b114da2..4c8dd1403c 100644 --- a/src/gnome-search/search-boolean.h +++ b/src/gnome-search/search-boolean.h @@ -24,16 +24,16 @@ #include "search-core-type.h" #include "QueryNew.h" -#define GNCSEARCH_BOOLEAN(obj) GTK_CHECK_CAST (obj, gnc_search_boolean_get_type (), GNCSearchBoolean) -#define GNCSEARCH_BOOLEAN_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gnc_search_boolean_get_type (), GNCSearchBooleanClass) -#define IS_GNCSEARCH_BOOLEAN(obj) GTK_CHECK_TYPE (obj, gnc_search_boolean_get_type ()) +#define GNC_TYPE_SEARCH_BOOLEAN (gnc_search_boolean_get_type ()) +#define GNCSEARCH_BOOLEAN(obj) GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_BOOLEAN, GNCSearchBoolean) +#define GNCSEARCH_BOOLEAN_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_BOOLEAN, GNCSearchBooleanClass) +#define IS_GNCSEARCH_BOOLEAN(obj) GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_BOOLEAN) typedef struct _GNCSearchBoolean GNCSearchBoolean; typedef struct _GNCSearchBooleanClass GNCSearchBooleanClass; struct _GNCSearchBoolean { GNCSearchCoreType parent; - struct _GNCSearchBooleanPrivate *priv; query_compare_t how; gboolean value; diff --git a/src/gnome-search/search-core-type.c b/src/gnome-search/search-core-type.c index 3bf3af61f8..cad2d0661f 100644 --- a/src/gnome-search/search-core-type.c +++ b/src/gnome-search/search-core-type.c @@ -48,10 +48,15 @@ static void gnc_search_core_type_class_init (GNCSearchCoreTypeClass *class); static void gnc_search_core_type_init (GNCSearchCoreType *gspaper); static void gnc_search_core_type_finalize (GObject *obj); -#define _PRIVATE(x) (((GNCSearchCoreType *)(x))->priv) +typedef struct _GNCSearchCoreTypePrivate GNCSearchCoreTypePrivate; + struct _GNCSearchCoreTypePrivate { + gpointer dummy; }; +#define _PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_CORE_TYPE, GNCSearchCoreTypePrivate)) + static GtkObjectClass *parent_class; static GHashTable *typeTable = NULL; @@ -94,19 +99,20 @@ gnc_search_core_type_class_init (GNCSearchCoreTypeClass *klass) klass->validate = validate; klass->grab_focus = grab_focus; klass->editable_enters = editable_enters; + + g_type_class_add_private(klass, sizeof(GNCSearchCoreTypePrivate)); } static void gnc_search_core_type_init (GNCSearchCoreType *o) { - o->priv = g_malloc0 (sizeof (*o->priv)); } static void gnc_search_core_type_finalize (GObject *obj) { GNCSearchCoreType *o = (GNCSearchCoreType *)obj; - g_free(o->priv); + g_assert (GNC_IS_SEARCH_CORE_TYPE (o)); G_OBJECT_CLASS (parent_class)->finalize(obj); } diff --git a/src/gnome-search/search-core-type.h b/src/gnome-search/search-core-type.h index 1dd3e608a6..74725b9333 100644 --- a/src/gnome-search/search-core-type.h +++ b/src/gnome-search/search-core-type.h @@ -29,12 +29,11 @@ #define GNC_TYPE_SEARCH_CORE_TYPE (gnc_search_core_type_get_type ()) #define GNC_SEARCH_CORE_TYPE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_SEARCH_CORE_TYPE, GNCSearchCoreType)) #define GNC_SEARCH_CORE_TYPE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GNC_TYPE_SEARCH_CORE_TYPE, GNCSearchCoreTypeClass)) -#define GNC_IS_SEARCH_CORE_TYPE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_SEARCH_CORE_TYPE) +#define GNC_IS_SEARCH_CORE_TYPE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_SEARCH_CORE_TYPE)) #define GNC_SEARCH_CORE_TYPE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_SEARCH_CORE_TYPE, GNCSearchCoreTypeClass)) typedef struct { GtkObject parent; - struct _GNCSearchCoreTypePrivate *priv; GNCSearchParam * param; } GNCSearchCoreType; diff --git a/src/gnome-search/search-date.c b/src/gnome-search/search-date.c index 90fb474c35..4833ffe178 100644 --- a/src/gnome-search/search-date.c +++ b/src/gnome-search/search-date.c @@ -43,12 +43,15 @@ static void gnc_search_date_class_init (GNCSearchDateClass *class); static void gnc_search_date_init (GNCSearchDate *gspaper); static void gnc_search_date_finalize (GObject *obj); -#define _PRIVATE(x) (((GNCSearchDate *)(x))->priv) +typedef struct _GNCSearchDatePrivate GNCSearchDatePrivate; struct _GNCSearchDatePrivate { GtkWidget *entry; }; +#define _PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_DATE, GNCSearchDatePrivate)) + static GNCSearchCoreTypeClass *parent_class; guint @@ -95,12 +98,13 @@ gnc_search_date_class_init (GNCSearchDateClass *class) gnc_search_core_type->get_widget = gncs_get_widget; gnc_search_core_type->get_predicate = gncs_get_predicate; gnc_search_core_type->clone = gncs_clone; + + g_type_class_add_private(class, sizeof(GNCSearchDatePrivate)); } static void gnc_search_date_init (GNCSearchDate *o) { - o->priv = g_malloc0 (sizeof (*o->priv)); o->ts.tv_sec = time(NULL); o->how = COMPARE_LT; } @@ -108,14 +112,16 @@ gnc_search_date_init (GNCSearchDate *o) static void gnc_search_date_finalize (GObject *obj) { - GNCSearchDate *o = (GNCSearchDate *)obj; - g_assert (IS_GNCSEARCH_DATE (o)); + GNCSearchDate *o; + GNCSearchDatePrivate *priv; - if (o->priv->entry) - gtk_widget_destroy (o->priv->entry); + g_assert (IS_GNCSEARCH_DATE (obj)); + + o = GNCSEARCH_DATE(obj); + priv = _PRIVATE(o); + if (priv->entry) + gtk_widget_destroy (priv->entry); - g_free(o->priv); - G_OBJECT_CLASS (parent_class)->finalize(obj); } @@ -129,7 +135,7 @@ gnc_search_date_finalize (GObject *obj) GNCSearchDate * gnc_search_date_new (void) { - GNCSearchDate *o = g_object_new(gnc_search_date_get_type (), NULL); + GNCSearchDate *o = g_object_new(GNC_TYPE_SEARCH_DATE, NULL); return o; } @@ -225,24 +231,28 @@ static void grab_focus (GNCSearchCoreType *fe) { GNCSearchDate *fi = (GNCSearchDate *)fe; + GNCSearchDatePrivate *priv; g_return_if_fail (fi); g_return_if_fail (IS_GNCSEARCH_DATE (fi)); - if (fi->priv->entry) - gtk_widget_grab_focus (GNC_DATE_EDIT(fi->priv->entry)->date_entry); + priv = _PRIVATE(fi); + if (priv->entry) + gtk_widget_grab_focus (GNC_DATE_EDIT(priv->entry)->date_entry); } static void editable_enters (GNCSearchCoreType *fe) { GNCSearchDate *fi = (GNCSearchDate *)fe; + GNCSearchDatePrivate *priv; g_return_if_fail (fi); g_return_if_fail (IS_GNCSEARCH_DATE (fi)); - if (fi->priv->entry) - gnc_date_editable_enters (GNC_DATE_EDIT (fi->priv->entry), TRUE); + priv = _PRIVATE(fi); + if (priv->entry) + gnc_date_editable_enters (GNC_DATE_EDIT (priv->entry), TRUE); } static GtkWidget * @@ -250,10 +260,12 @@ gncs_get_widget (GNCSearchCoreType *fe) { GtkWidget *entry, *menu, *box; GNCSearchDate *fi = (GNCSearchDate *)fe; + GNCSearchDatePrivate *priv; g_return_val_if_fail (fi, NULL); g_return_val_if_fail (IS_GNCSEARCH_DATE (fi), NULL); + priv = _PRIVATE(fi); box = gtk_hbox_new (FALSE, 3); /* Build and connect the option menu */ @@ -265,7 +277,7 @@ gncs_get_widget (GNCSearchCoreType *fe) g_signal_connect (G_OBJECT (entry), "date_changed", G_CALLBACK (date_changed), fe); gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 3); g_object_ref (entry); - fi->priv->entry = entry; + priv->entry = entry; /* And return the box */ return box; @@ -274,13 +286,15 @@ gncs_get_widget (GNCSearchCoreType *fe) static QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe) { GNCSearchDate *fi = (GNCSearchDate *)fe; + GNCSearchDatePrivate *priv; g_return_val_if_fail (fi, NULL); g_return_val_if_fail (IS_GNCSEARCH_DATE (fi), NULL); /* Make sure we actually use the currently-entered date */ - if (fi->priv->entry) - fi->ts = gnc_date_edit_get_date_ts (GNC_DATE_EDIT (fi->priv->entry)); + priv = _PRIVATE(fi); + if (priv->entry) + fi->ts = gnc_date_edit_get_date_ts (GNC_DATE_EDIT (priv->entry)); return gncQueryDatePredicate (fi->how, DATE_MATCH_NORMAL, fi->ts); } diff --git a/src/gnome-search/search-date.h b/src/gnome-search/search-date.h index e5ec8bb1be..dd8851ac65 100644 --- a/src/gnome-search/search-date.h +++ b/src/gnome-search/search-date.h @@ -25,16 +25,16 @@ #include "QueryNew.h" #include "gnc-date.h" -#define GNCSEARCH_DATE(obj) GTK_CHECK_CAST (obj, gnc_search_date_get_type (), GNCSearchDate) -#define GNCSEARCH_DATE_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gnc_search_date_get_type (), GNCSearchDateClass) -#define IS_GNCSEARCH_DATE(obj) GTK_CHECK_TYPE (obj, gnc_search_date_get_type ()) +#define GNC_TYPE_SEARCH_DATE (gnc_search_date_get_type ()) +#define GNCSEARCH_DATE(obj) GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_DATE, GNCSearchDate) +#define GNCSEARCH_DATE_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_DATE, GNCSearchDateClass) +#define IS_GNCSEARCH_DATE(obj) GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_DATE) typedef struct _GNCSearchDate GNCSearchDate; typedef struct _GNCSearchDateClass GNCSearchDateClass; struct _GNCSearchDate { GNCSearchCoreType parent; - struct _GNCSearchDatePrivate *priv; query_compare_t how; Timespec ts; diff --git a/src/gnome-search/search-double.c b/src/gnome-search/search-double.c index 465031d71e..f139ed41b2 100644 --- a/src/gnome-search/search-double.c +++ b/src/gnome-search/search-double.c @@ -42,13 +42,16 @@ static void gnc_search_double_class_init (GNCSearchDoubleClass *class); static void gnc_search_double_init (GNCSearchDouble *gspaper); static void gnc_search_double_finalize (GObject *obj); -#define _PRIVATE(x) (((GNCSearchDouble *)(x))->priv) +typedef struct _GNCSearchDoublePrivate GNCSearchDoublePrivate; struct _GNCSearchDoublePrivate { GtkWidget * entry; GNCAmountEdit *gae; }; +#define _PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_DOUBLE, GNCSearchDoublePrivate)) + static GNCSearchCoreTypeClass *parent_class; guint @@ -95,12 +98,13 @@ gnc_search_double_class_init (GNCSearchDoubleClass *class) gnc_search_core_type->get_widget = gncs_get_widget; gnc_search_core_type->get_predicate = gncs_get_predicate; gnc_search_core_type->clone = gncs_clone; + + g_type_class_add_private(class, sizeof(GNCSearchDoublePrivate)); } static void gnc_search_double_init (GNCSearchDouble *o) { - o->priv = g_malloc0 (sizeof (*o->priv)); o->how = COMPARE_EQUAL; } @@ -110,8 +114,6 @@ gnc_search_double_finalize (GObject *obj) GNCSearchDouble *o = (GNCSearchDouble *)obj; g_assert (IS_GNCSEARCH_DOUBLE (o)); - g_free(o->priv); - G_OBJECT_CLASS (parent_class)->finalize(obj); } @@ -125,7 +127,7 @@ gnc_search_double_finalize (GObject *obj) GNCSearchDouble * gnc_search_double_new (void) { - GNCSearchDouble *o = g_object_new(gnc_search_double_get_type (), NULL); + GNCSearchDouble *o = g_object_new(GNC_TYPE_SEARCH_DOUBLE, NULL); return o; } @@ -221,24 +223,28 @@ static void grab_focus (GNCSearchCoreType *fe) { GNCSearchDouble *fi = (GNCSearchDouble *)fe; + GNCSearchDoublePrivate *priv ; g_return_if_fail (fi); g_return_if_fail (IS_GNCSEARCH_DOUBLE (fi)); - if (fi->priv->entry) - gtk_widget_grab_focus (fi->priv->entry); + priv = _PRIVATE(fi); + if (priv->entry) + gtk_widget_grab_focus (priv->entry); } static void editable_enters (GNCSearchCoreType *fe) { GNCSearchDouble *fi = (GNCSearchDouble *)fe; + GNCSearchDoublePrivate *priv ; g_return_if_fail (fi); g_return_if_fail (IS_GNCSEARCH_DOUBLE (fi)); - if (fi->priv->entry) - gtk_entry_set_activates_default(GTK_ENTRY (fi->priv->entry), TRUE); + priv = _PRIVATE(fi); + if (priv->entry) + gtk_entry_set_activates_default(GTK_ENTRY (priv->entry), TRUE); } static GtkWidget * @@ -246,10 +252,12 @@ gncs_get_widget (GNCSearchCoreType *fe) { GtkWidget *entry, *menu, *box; GNCSearchDouble *fi = (GNCSearchDouble *)fe; + GNCSearchDoublePrivate *priv ; g_return_val_if_fail (fi, NULL); g_return_val_if_fail (IS_GNCSEARCH_DOUBLE (fi), NULL); + priv = _PRIVATE(fi); box = gtk_hbox_new (FALSE, 3); /* Build and connect the option menu */ @@ -262,8 +270,8 @@ gncs_get_widget (GNCSearchCoreType *fe) gnc_amount_edit_set_damount (GNC_AMOUNT_EDIT (entry), fi->value); g_signal_connect (G_OBJECT (entry), "amount_changed", G_CALLBACK (entry_changed), fe); gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 3); - fi->priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry)); - fi->priv->gae = GNC_AMOUNT_EDIT (entry); + priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry)); + priv->gae = GNC_AMOUNT_EDIT (entry); /* And return the box */ return box; @@ -272,12 +280,14 @@ gncs_get_widget (GNCSearchCoreType *fe) static QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe) { GNCSearchDouble *fi = (GNCSearchDouble *)fe; + GNCSearchDoublePrivate *priv ; g_return_val_if_fail (fi, NULL); g_return_val_if_fail (IS_GNCSEARCH_DOUBLE (fi), NULL); /* force the computation of the entry, because we may not get the signal */ - entry_changed (fi->priv->gae, fi); + priv = _PRIVATE(fi); + entry_changed (priv->gae, fi); return gncQueryDoublePredicate (fi->how, fi->value); } diff --git a/src/gnome-search/search-double.h b/src/gnome-search/search-double.h index 502255c1d0..c351e86ca1 100644 --- a/src/gnome-search/search-double.h +++ b/src/gnome-search/search-double.h @@ -24,16 +24,16 @@ #include "search-core-type.h" #include "QueryNew.h" -#define GNCSEARCH_DOUBLE(obj) GTK_CHECK_CAST (obj, gnc_search_double_get_type (), GNCSearchDouble) -#define GNCSEARCH_DOUBLE_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gnc_search_double_get_type (), GNCSearchDoubleClass) -#define IS_GNCSEARCH_DOUBLE(obj) GTK_CHECK_TYPE (obj, gnc_search_double_get_type ()) +#define GNC_TYPE_SEARCH_DOUBLE (gnc_search_double_get_type ()) +#define GNCSEARCH_DOUBLE(obj) GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_DOUBLE, GNCSearchDouble) +#define GNCSEARCH_DOUBLE_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_DOUBLE, GNCSearchDoubleClass) +#define IS_GNCSEARCH_DOUBLE(obj) GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_DOUBLE) typedef struct _GNCSearchDouble GNCSearchDouble; typedef struct _GNCSearchDoubleClass GNCSearchDoubleClass; struct _GNCSearchDouble { GNCSearchCoreType parent; - struct _GNCSearchDoublePrivate *priv; query_compare_t how; double value; diff --git a/src/gnome-search/search-int64.c b/src/gnome-search/search-int64.c index 9a25f0879c..d0c933e9f7 100644 --- a/src/gnome-search/search-int64.c +++ b/src/gnome-search/search-int64.c @@ -42,13 +42,17 @@ static void gnc_search_int64_class_init (GNCSearchInt64Class *class); static void gnc_search_int64_init (GNCSearchInt64 *gspaper); static void gnc_search_int64_finalize (GObject *obj); -#define _PRIVATE(x) (((GNCSearchInt64 *)(x))->priv) + +typedef struct _GNCSearchInt64Private GNCSearchInt64Private; struct _GNCSearchInt64Private { GtkWidget *entry; GNCAmountEdit *gae; }; +#define _PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_INT64, GNCSearchInt64Private)) + static GNCSearchCoreTypeClass *parent_class; guint @@ -95,12 +99,13 @@ gnc_search_int64_class_init (GNCSearchInt64Class *class) gnc_search_core_type->get_widget = gncs_get_widget; gnc_search_core_type->get_predicate = gncs_get_predicate; gnc_search_core_type->clone = gncs_clone; + + g_type_class_add_private(class, sizeof(GNCSearchInt64Private)); } static void gnc_search_int64_init (GNCSearchInt64 *o) { - o->priv = g_malloc0 (sizeof (*o->priv)); o->how = COMPARE_EQUAL; } @@ -110,8 +115,6 @@ gnc_search_int64_finalize (GObject *obj) GNCSearchInt64 *o = (GNCSearchInt64 *)obj; g_assert (IS_GNCSEARCH_INT64 (o)); - g_free(o->priv); - G_OBJECT_CLASS (parent_class)->finalize(obj); } @@ -125,7 +128,7 @@ gnc_search_int64_finalize (GObject *obj) GNCSearchInt64 * gnc_search_int64_new (void) { - GNCSearchInt64 *o = g_object_new(gnc_search_int64_get_type (), NULL); + GNCSearchInt64 *o = g_object_new(GNC_TYPE_SEARCH_INT64, NULL); return o; } @@ -223,24 +226,28 @@ static void grab_focus (GNCSearchCoreType *fe) { GNCSearchInt64 *fi = (GNCSearchInt64 *)fe; + GNCSearchInt64Private *priv; g_return_if_fail (fi); g_return_if_fail (IS_GNCSEARCH_INT64 (fi)); - if (fi->priv->entry) - gtk_widget_grab_focus (fi->priv->entry); + priv = _PRIVATE(fi); + if (priv->entry) + gtk_widget_grab_focus (priv->entry); } static void editable_enters (GNCSearchCoreType *fe) { GNCSearchInt64 *fi = (GNCSearchInt64 *)fe; + GNCSearchInt64Private *priv; g_return_if_fail (fi); g_return_if_fail (IS_GNCSEARCH_INT64 (fi)); - if (fi->priv->entry) - gtk_entry_set_activates_default(GTK_ENTRY (fi->priv->entry), TRUE); + priv = _PRIVATE(fi); + if (priv->entry) + gtk_entry_set_activates_default(GTK_ENTRY (priv->entry), TRUE); } static GtkWidget * @@ -248,10 +255,12 @@ gncs_get_widget (GNCSearchCoreType *fe) { GtkWidget *entry, *menu, *box; GNCSearchInt64 *fi = (GNCSearchInt64 *)fe; + GNCSearchInt64Private *priv; g_return_val_if_fail (fi, NULL); g_return_val_if_fail (IS_GNCSEARCH_INT64 (fi), NULL); + priv = _PRIVATE(fi); box = gtk_hbox_new (FALSE, 3); /* Build and connect the option menu */ @@ -268,8 +277,8 @@ gncs_get_widget (GNCSearchCoreType *fe) } g_signal_connect (G_OBJECT (entry), "amount_changed", G_CALLBACK (entry_changed), fe); gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 3); - fi->priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry)); - fi->priv->gae = GNC_AMOUNT_EDIT (entry); + priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry)); + priv->gae = GNC_AMOUNT_EDIT (entry); /* And return the box */ return box; @@ -278,12 +287,14 @@ gncs_get_widget (GNCSearchCoreType *fe) static QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe) { GNCSearchInt64 *fi = (GNCSearchInt64 *)fe; + GNCSearchInt64Private *priv; g_return_val_if_fail (fi, NULL); g_return_val_if_fail (IS_GNCSEARCH_INT64 (fi), NULL); /* force the computation of the entry, because we may not get the signal */ - entry_changed (fi->priv->gae, fi); + priv = _PRIVATE(fi); + entry_changed (priv->gae, fi); return gncQueryInt64Predicate (fi->how, fi->value); } diff --git a/src/gnome-search/search-int64.h b/src/gnome-search/search-int64.h index 3163005312..9bb455d2dc 100644 --- a/src/gnome-search/search-int64.h +++ b/src/gnome-search/search-int64.h @@ -24,16 +24,16 @@ #include "search-core-type.h" #include "QueryNew.h" -#define GNCSEARCH_INT64(obj) GTK_CHECK_CAST (obj, gnc_search_int64_get_type (), GNCSearchInt64) -#define GNCSEARCH_INT64_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gnc_search_int64_get_type (), GNCSearchInt64Class) -#define IS_GNCSEARCH_INT64(obj) GTK_CHECK_TYPE (obj, gnc_search_int64_get_type ()) +#define GNC_TYPE_SEARCH_INT64 (gnc_search_int64_get_type ()) +#define GNCSEARCH_INT64(obj) GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_INT64, GNCSearchInt64) +#define GNCSEARCH_INT64_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_INT64, GNCSearchInt64Class) +#define IS_GNCSEARCH_INT64(obj) GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_INT64) typedef struct _GNCSearchInt64 GNCSearchInt64; typedef struct _GNCSearchInt64Class GNCSearchInt64Class; struct _GNCSearchInt64 { GNCSearchCoreType parent; - struct _GNCSearchInt64Private *priv; query_compare_t how; gint64 value; diff --git a/src/gnome-search/search-numeric.c b/src/gnome-search/search-numeric.c index 38b8bb2dfa..90ee33c9d1 100644 --- a/src/gnome-search/search-numeric.c +++ b/src/gnome-search/search-numeric.c @@ -42,7 +42,7 @@ static void gnc_search_numeric_class_init (GNCSearchNumericClass *class); static void gnc_search_numeric_init (GNCSearchNumeric *gspaper); static void gnc_search_numeric_finalize (GObject *obj); -#define _PRIVATE(x) (((GNCSearchNumeric *)(x))->priv) +typedef struct _GNCSearchNumericPrivate GNCSearchNumericPrivate; struct _GNCSearchNumericPrivate { gboolean is_debcred; @@ -50,6 +50,9 @@ struct _GNCSearchNumericPrivate { GNCAmountEdit *gae; }; +#define _PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_NUMERIC, GNCSearchNumericPrivate)) + static GNCSearchCoreTypeClass *parent_class; guint @@ -96,12 +99,13 @@ gnc_search_numeric_class_init (GNCSearchNumericClass *class) gnc_search_core_type->get_widget = gncs_get_widget; gnc_search_core_type->get_predicate = gncs_get_predicate; gnc_search_core_type->clone = gncs_clone; + + g_type_class_add_private(class, sizeof(GNCSearchNumericPrivate)); } static void gnc_search_numeric_init (GNCSearchNumeric *o) { - o->priv = g_malloc0 (sizeof (*o->priv)); o->value = gnc_numeric_zero (); o->how = COMPARE_EQUAL; o->option = NUMERIC_MATCH_ANY; @@ -113,8 +117,6 @@ gnc_search_numeric_finalize (GObject *obj) GNCSearchNumeric *o = (GNCSearchNumeric *)obj; g_assert (IS_GNCSEARCH_NUMERIC (o)); - g_free(o->priv); - G_OBJECT_CLASS (parent_class)->finalize(obj); } @@ -128,7 +130,7 @@ gnc_search_numeric_finalize (GObject *obj) GNCSearchNumeric * gnc_search_numeric_new (void) { - GNCSearchNumeric *o = g_object_new(gnc_search_numeric_get_type (), NULL); + GNCSearchNumeric *o = g_object_new(GNC_TYPE_SEARCH_NUMERIC, NULL); return o; } @@ -142,8 +144,12 @@ gnc_search_numeric_new (void) GNCSearchNumeric * gnc_search_numeric_debcred_new (void) { - GNCSearchNumeric *o = g_object_new(gnc_search_numeric_get_type (), NULL); - o->priv->is_debcred = TRUE; + GNCSearchNumeric *o; + GNCSearchNumericPrivate *priv; + + o = g_object_new(GNC_TYPE_SEARCH_NUMERIC, NULL); + priv = _PRIVATE(o); + priv->is_debcred = TRUE; return o; } @@ -228,29 +234,31 @@ static GtkWidget * make_how_menu (GNCSearchCoreType *fe) { GNCSearchNumeric *fi = (GNCSearchNumeric *)fe; + GNCSearchNumericPrivate *priv; GtkWidget *menu, *item, *first = NULL, *opmenu; int current = 0, index = 0; menu = gtk_menu_new (); - ADD_MENU_ITEM (fi->how, (fi->priv->is_debcred ? + priv = _PRIVATE(fi); + ADD_MENU_ITEM (fi->how, (priv->is_debcred ? _("less than") : _("is less than")), COMPARE_LT, G_CALLBACK (how_option_changed)); first = item; /* Force one */ - ADD_MENU_ITEM (fi->how, (fi->priv->is_debcred ? + ADD_MENU_ITEM (fi->how, (priv->is_debcred ? _("less than or equal to") : _("is less than or equal to")), COMPARE_LTE, G_CALLBACK (how_option_changed)); - ADD_MENU_ITEM (fi->how, (fi->priv->is_debcred ? + ADD_MENU_ITEM (fi->how, (priv->is_debcred ? _("equal to") : _("equals")), COMPARE_EQUAL, G_CALLBACK (how_option_changed)); - ADD_MENU_ITEM (fi->how, (fi->priv->is_debcred ? + ADD_MENU_ITEM (fi->how, (priv->is_debcred ? _("not equal to") : _("does not equal")), COMPARE_NEQ, G_CALLBACK (how_option_changed)); - ADD_MENU_ITEM (fi->how, (fi->priv->is_debcred ? + ADD_MENU_ITEM (fi->how, (priv->is_debcred ? _("greater than") : _("is greater than")), COMPARE_GT, G_CALLBACK (how_option_changed)); - ADD_MENU_ITEM (fi->how, (fi->priv->is_debcred ? + ADD_MENU_ITEM (fi->how, (priv->is_debcred ? _("greater than or equal to") : _("is greater than or equal to")), COMPARE_GTE, G_CALLBACK (how_option_changed)); @@ -294,24 +302,28 @@ static void grab_focus (GNCSearchCoreType *fe) { GNCSearchNumeric *fi = (GNCSearchNumeric *)fe; + GNCSearchNumericPrivate *priv; g_return_if_fail (fi); g_return_if_fail (IS_GNCSEARCH_NUMERIC (fi)); - if (fi->priv->entry) - gtk_widget_grab_focus (fi->priv->entry); + priv = _PRIVATE(fi); + if (priv->entry) + gtk_widget_grab_focus (priv->entry); } static void editable_enters (GNCSearchCoreType *fe) { GNCSearchNumeric *fi = (GNCSearchNumeric *)fe; + GNCSearchNumericPrivate *priv; g_return_if_fail (fi); g_return_if_fail (IS_GNCSEARCH_NUMERIC (fi)); - if (fi->priv->entry) - gtk_entry_set_activates_default(GTK_ENTRY (fi->priv->entry), TRUE); + priv = _PRIVATE(fi); + if (priv->entry) + gtk_entry_set_activates_default(GTK_ENTRY (priv->entry), TRUE); } static GtkWidget * @@ -319,14 +331,16 @@ gncs_get_widget (GNCSearchCoreType *fe) { GtkWidget *entry, *menu, *box; GNCSearchNumeric *fi = (GNCSearchNumeric *)fe; - + GNCSearchNumericPrivate *priv; + g_return_val_if_fail (fi, NULL); g_return_val_if_fail (IS_GNCSEARCH_NUMERIC (fi), NULL); + priv = _PRIVATE(fi); box = gtk_hbox_new (FALSE, 3); /* Build and connect the option menu(s) */ - if (fi->priv->is_debcred) { + if (priv->is_debcred) { menu = make_option_menu (fe); gtk_box_pack_start (GTK_BOX (box), menu, FALSE, FALSE, 3); } @@ -339,8 +353,8 @@ gncs_get_widget (GNCSearchCoreType *fe) gnc_amount_edit_set_amount (GNC_AMOUNT_EDIT (entry), fi->value); g_signal_connect (G_OBJECT (entry), "amount_changed", G_CALLBACK (entry_changed), fe); gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 3); - fi->priv->gae = GNC_AMOUNT_EDIT (entry); - fi->priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry)); + priv->gae = GNC_AMOUNT_EDIT (entry); + priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry)); /* And return the box */ return box; @@ -349,12 +363,14 @@ gncs_get_widget (GNCSearchCoreType *fe) static QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe) { GNCSearchNumeric *fi = (GNCSearchNumeric *)fe; + GNCSearchNumericPrivate *priv; g_return_val_if_fail (fi, NULL); g_return_val_if_fail (IS_GNCSEARCH_NUMERIC (fi), NULL); /* force the computation of the entry, because we may not get the signal */ - entry_changed (fi->priv->gae, fi); + priv = _PRIVATE(fi); + entry_changed (priv->gae, fi); return gncQueryNumericPredicate (fi->how, fi->option, fi->value); } @@ -362,15 +378,18 @@ static QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe) static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe) { GNCSearchNumeric *se, *fse = (GNCSearchNumeric *)fe; + GNCSearchNumericPrivate *se_priv, *fse_priv; g_return_val_if_fail (fse, NULL); g_return_val_if_fail (IS_GNCSEARCH_NUMERIC (fse), NULL); + fse_priv = _PRIVATE(fse); se = gnc_search_numeric_new (); gnc_search_numeric_set_value (se, fse->value); gnc_search_numeric_set_how (se, fse->how); + se_priv = _PRIVATE(se); gnc_search_numeric_set_option (se, fse->option); - se->priv->is_debcred = fse->priv->is_debcred; + se_priv->is_debcred = fse_priv->is_debcred; return (GNCSearchCoreType *)se; } diff --git a/src/gnome-search/search-numeric.h b/src/gnome-search/search-numeric.h index d54802eb74..4950f815ac 100644 --- a/src/gnome-search/search-numeric.h +++ b/src/gnome-search/search-numeric.h @@ -25,9 +25,10 @@ #include "gnc-numeric.h" #include "QueryNew.h" -#define GNCSEARCH_NUMERIC(obj) GTK_CHECK_CAST (obj, gnc_search_numeric_get_type (), GNCSearchNumeric) -#define GNCSEARCH_NUMERIC_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gnc_search_numeric_get_type (), GNCSearchNumericClass) -#define IS_GNCSEARCH_NUMERIC(obj) GTK_CHECK_TYPE (obj, gnc_search_numeric_get_type ()) +#define GNC_TYPE_SEARCH_NUMERIC (gnc_search_numeric_get_type ()) +#define GNCSEARCH_NUMERIC(obj) GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_NUMERIC, GNCSearchNumeric) +#define GNCSEARCH_NUMERIC_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_NUMERIC, GNCSearchNumericClass) +#define IS_GNCSEARCH_NUMERIC(obj) GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_NUMERIC) typedef struct _GNCSearchNumeric GNCSearchNumeric; typedef struct _GNCSearchNumericClass GNCSearchNumericClass; diff --git a/src/gnome-search/search-reconciled.c b/src/gnome-search/search-reconciled.c index f4fc52dc31..1419ee82bf 100644 --- a/src/gnome-search/search-reconciled.c +++ b/src/gnome-search/search-reconciled.c @@ -40,11 +40,15 @@ static void gnc_search_reconciled_class_init (GNCSearchReconciledClass *class); static void gnc_search_reconciled_init (GNCSearchReconciled *gspaper); static void gnc_search_reconciled_finalize (GObject *obj); -#define _PRIVATE(x) (((GNCSearchReconciled *)(x))->priv) +typedef struct _GNCSearchReconciledPrivate GNCSearchReconciledPrivate; struct _GNCSearchReconciledPrivate { + gpointer dummy; }; +#define _PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_RECONCILED, GNCSearchReconciledPrivate)) + static GNCSearchCoreTypeClass *parent_class; guint @@ -89,12 +93,13 @@ gnc_search_reconciled_class_init (GNCSearchReconciledClass *class) gnc_search_core_type->get_widget = gncs_get_widget; gnc_search_core_type->get_predicate = gncs_get_predicate; gnc_search_core_type->clone = gncs_clone; + + g_type_class_add_private(class, sizeof(GNCSearchReconciledPrivate)); } static void gnc_search_reconciled_init (GNCSearchReconciled *o) { - o->priv = g_malloc0 (sizeof (*o->priv)); o->how = COMPARE_EQUAL; o->value = CLEARED_NO; } @@ -105,8 +110,6 @@ gnc_search_reconciled_finalize (GObject *obj) GNCSearchReconciled *o = (GNCSearchReconciled *)obj; g_assert (IS_GNCSEARCH_RECONCILED (o)); - g_free(o->priv); - G_OBJECT_CLASS (parent_class)->finalize(obj); } @@ -120,7 +123,7 @@ gnc_search_reconciled_finalize (GObject *obj) GNCSearchReconciled * gnc_search_reconciled_new (void) { - GNCSearchReconciled *o = g_object_new(gnc_search_reconciled_get_type (), NULL); + GNCSearchReconciled *o = g_object_new(GNC_TYPE_SEARCH_RECONCILED, NULL); return o; } diff --git a/src/gnome-search/search-reconciled.h b/src/gnome-search/search-reconciled.h index d854c2c9e7..64338e0219 100644 --- a/src/gnome-search/search-reconciled.h +++ b/src/gnome-search/search-reconciled.h @@ -24,16 +24,16 @@ #include "search-core-type.h" #include "Query.h" /* for cleared_match_t */ -#define GNCSEARCH_RECONCILED(obj) GTK_CHECK_CAST (obj, gnc_search_reconciled_get_type (), GNCSearchReconciled) -#define GNCSEARCH_RECONCILED_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gnc_search_reconciled_get_type (), GNCSearchReconciledClass) -#define IS_GNCSEARCH_RECONCILED(obj) GTK_CHECK_TYPE (obj, gnc_search_reconciled_get_type ()) +#define GNC_TYPE_SEARCH_RECONCILED (gnc_search_reconciled_get_type ()) +#define GNCSEARCH_RECONCILED(obj) GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_RECONCILED, GNCSearchReconciled) +#define GNCSEARCH_RECONCILED_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_RECONCILED, GNCSearchReconciledClass) +#define IS_GNCSEARCH_RECONCILED(obj) GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_RECONCILED) typedef struct _GNCSearchReconciled GNCSearchReconciled; typedef struct _GNCSearchReconciledClass GNCSearchReconciledClass; struct _GNCSearchReconciled { GNCSearchCoreType parent; - struct _GNCSearchReconciledPrivate *priv; char_match_t how; cleared_match_t value; diff --git a/src/gnome-search/search-string.c b/src/gnome-search/search-string.c index 9811947c1b..d7eae139b6 100644 --- a/src/gnome-search/search-string.c +++ b/src/gnome-search/search-string.c @@ -43,12 +43,15 @@ static void gnc_search_string_class_init (GNCSearchStringClass *class); static void gnc_search_string_init (GNCSearchString *gspaper); static void gnc_search_string_finalize (GObject *obj); -#define _PRIVATE(x) (((GNCSearchString *)(x))->priv) +typedef struct _GNCSearchStringPrivate GNCSearchStringPrivate; struct _GNCSearchStringPrivate { GtkWidget *entry; }; +#define _PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_STRING, GNCSearchStringPrivate)) + static GNCSearchCoreTypeClass *parent_class; guint @@ -95,12 +98,13 @@ gnc_search_string_class_init (GNCSearchStringClass *class) gnc_search_core_type->get_widget = gncs_get_widget; gnc_search_core_type->get_predicate = gncs_get_predicate; gnc_search_core_type->clone = gncs_clone; + + g_type_class_add_private(class, sizeof(GNCSearchStringPrivate)); } static void gnc_search_string_init (GNCSearchString *o) { - o->priv = g_malloc0 (sizeof (*o->priv)); o->value = NULL; o->how = SEARCH_STRING_CONTAINS; o->ign_case = TRUE; @@ -113,7 +117,6 @@ gnc_search_string_finalize (GObject *obj) g_assert (IS_GNCSEARCH_STRING (o)); g_free (o->value); - g_free(o->priv); G_OBJECT_CLASS (parent_class)->finalize(obj); } @@ -128,7 +131,7 @@ gnc_search_string_finalize (GObject *obj) GNCSearchString * gnc_search_string_new (void) { - GNCSearchString *o = g_object_new(gnc_search_string_get_type (), NULL); + GNCSearchString *o = g_object_new(GNC_TYPE_SEARCH_STRING, NULL); return o; } @@ -295,24 +298,28 @@ static void grab_focus (GNCSearchCoreType *fe) { GNCSearchString *fi = (GNCSearchString *)fe; + GNCSearchStringPrivate *priv; g_return_if_fail (fi); g_return_if_fail (IS_GNCSEARCH_STRING (fi)); - if (fi->priv->entry) - gtk_widget_grab_focus (fi->priv->entry); + priv = _PRIVATE(fi); + if (priv->entry) + gtk_widget_grab_focus (priv->entry); } static void editable_enters (GNCSearchCoreType *fe) { GNCSearchString *fi = (GNCSearchString *)fe; + GNCSearchStringPrivate *priv; g_return_if_fail (fi); g_return_if_fail (IS_GNCSEARCH_STRING (fi)); - if (fi->priv->entry) - gtk_entry_set_activates_default(GTK_ENTRY (fi->priv->entry), TRUE); + priv = _PRIVATE(fi); + if (priv->entry) + gtk_entry_set_activates_default(GTK_ENTRY (priv->entry), TRUE); } static GtkWidget * @@ -320,10 +327,12 @@ gncs_get_widget (GNCSearchCoreType *fe) { GtkWidget *entry, *toggle, *menu, *box; GNCSearchString *fi = (GNCSearchString *)fe; + GNCSearchStringPrivate *priv; g_return_val_if_fail (fi, NULL); g_return_val_if_fail (IS_GNCSEARCH_STRING (fi), NULL); + priv = _PRIVATE(fi); box = gtk_hbox_new (FALSE, 3); /* Build and connect the option menu */ @@ -336,7 +345,7 @@ gncs_get_widget (GNCSearchCoreType *fe) gtk_entry_set_text (GTK_ENTRY (entry), fi->value); g_signal_connect (G_OBJECT (entry), "changed", G_CALLBACK (entry_changed), fe); gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 3); - fi->priv->entry = entry; + priv->entry = entry; /* Build and connect the toggle button */ toggle = gtk_toggle_button_new_with_label (_("Case Insensitive?")); diff --git a/src/gnome-search/search-string.h b/src/gnome-search/search-string.h index c48ce31e44..1293231a78 100644 --- a/src/gnome-search/search-string.h +++ b/src/gnome-search/search-string.h @@ -23,9 +23,10 @@ #include "search-core-type.h" -#define GNCSEARCH_STRING(obj) GTK_CHECK_CAST (obj, gnc_search_string_get_type (), GNCSearchString) -#define GNCSEARCH_STRING_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gnc_search_string_get_type (), GNCSearchStringClass) -#define IS_GNCSEARCH_STRING(obj) GTK_CHECK_TYPE (obj, gnc_search_string_get_type ()) +#define GNC_TYPE_SEARCH_STRING (gnc_search_string_get_type ()) +#define GNCSEARCH_STRING(obj) GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_STRING, GNCSearchString) +#define GNCSEARCH_STRING_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_STRING, GNCSearchStringClass) +#define IS_GNCSEARCH_STRING(obj) GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_STRING) typedef struct _GNCSearchString GNCSearchString; typedef struct _GNCSearchStringClass GNCSearchStringClass; @@ -39,7 +40,6 @@ typedef enum _search_string_how { struct _GNCSearchString { GNCSearchCoreType parent; - struct _GNCSearchStringPrivate *priv; GNCSearchString_Type how; gboolean ign_case;