static GList * gnc_search_param_prepend_internal (GList *list, char const *title, GtkJustification justify, GNCIdTypeConst type_override, GNCIdTypeConst search_type, const char *param, va_list args) { GNCSearchParam *p; GSList *path = NULL; const char *this_param; p = gnc_search_param_new (); gnc_search_param_set_title (p, title); gnc_search_param_set_justify (p, justify); for (this_param = param; this_param; this_param = va_arg (args, const char *)) { path = g_slist_prepend (path, (gpointer)this_param); } /* put the path into the right order, and set it */ path = g_slist_reverse (path); gnc_search_param_set_param_path (p, search_type, path); /* Maybe over-ride the type */ if (type_override) gnc_search_param_override_param_type (p, type_override); /* And return it */ return g_list_prepend (list, p); }
static void gnc_reconcile_view_init (GNCReconcileView *view) { GNCSearchParamSimple *param; GList *columns = NULL; gboolean num_action = qof_book_use_split_action_for_num_field(gnc_get_current_book()); view->reconciled = g_hash_table_new (NULL, NULL); view->account = NULL; view->sibling = NULL; param = gnc_search_param_simple_new(); gnc_search_param_set_param_fcn (param, QOF_TYPE_BOOLEAN, gnc_reconcile_view_is_reconciled, view); gnc_search_param_set_title ((GNCSearchParam *) param, _("Reconciled:R") + 11); gnc_search_param_set_justify ((GNCSearchParam *) param, GTK_JUSTIFY_CENTER); gnc_search_param_set_passive ((GNCSearchParam *) param, FALSE); gnc_search_param_set_non_resizeable ((GNCSearchParam *) param, TRUE); columns = g_list_prepend (columns, param); columns = gnc_search_param_prepend_with_justify (columns, _("Amount"), GTK_JUSTIFY_RIGHT, NULL, GNC_ID_SPLIT, SPLIT_AMOUNT, NULL); columns = gnc_search_param_prepend (columns, _("Description"), NULL, GNC_ID_SPLIT, SPLIT_TRANS, TRANS_DESCRIPTION, NULL); columns = num_action ? gnc_search_param_prepend_with_justify (columns, _("Num"), GTK_JUSTIFY_CENTER, NULL, GNC_ID_SPLIT, SPLIT_ACTION, NULL) : gnc_search_param_prepend_with_justify (columns, _("Num"), GTK_JUSTIFY_CENTER, NULL, GNC_ID_SPLIT, SPLIT_TRANS, TRANS_NUM, NULL); columns = gnc_search_param_prepend (columns, _("Date"), NULL, GNC_ID_SPLIT, SPLIT_TRANS, TRANS_DATE_POSTED, NULL); view->column_list = columns; }
GNCSearchWindow * gnc_ui_find_transactions_dialog_create2 (GNCLedgerDisplay2 * orig_ledg) { QofIdType type = GNC_ID_SPLIT; struct _ftd_data *ftd; static GList *params = NULL; QofQuery *start_q, *show_q = NULL; gboolean num_action = qof_book_use_split_action_for_num_field(gnc_get_current_book()); /* Build parameter list in reverse order */ if (params == NULL) { params = gnc_search_param_prepend (params, N_("All Accounts"), ACCOUNT_MATCH_ALL_TYPE, type, SPLIT_TRANS, TRANS_SPLITLIST, SPLIT_ACCOUNT_GUID, NULL); params = gnc_search_param_prepend (params, N_("Account"), GNC_ID_ACCOUNT, type, SPLIT_ACCOUNT, QOF_PARAM_GUID, NULL); params = gnc_search_param_prepend (params, N_("Balanced"), NULL, type, SPLIT_TRANS, TRANS_IS_BALANCED, NULL); params = gnc_search_param_prepend (params, N_("Reconcile"), RECONCILED_MATCH_TYPE, type, SPLIT_RECONCILE, NULL); params = gnc_search_param_prepend (params, N_("Share Price"), NULL, type, SPLIT_SHARE_PRICE, NULL); params = gnc_search_param_prepend (params, N_("Shares"), NULL, type, SPLIT_AMOUNT, NULL); params = gnc_search_param_prepend (params, N_("Value"), NULL, type, SPLIT_VALUE, NULL); params = gnc_search_param_prepend (params, N_("Date Posted"), NULL, type, SPLIT_TRANS, TRANS_DATE_POSTED, NULL); params = gnc_search_param_prepend (params, N_("Notes"), NULL, type, SPLIT_TRANS, TRANS_NOTES, NULL); params = gnc_search_param_prepend (params, (num_action ? N_("Number/Action") : N_("Action")), NULL, type, SPLIT_ACTION, NULL); params = gnc_search_param_prepend (params, (num_action ? N_("Transaction Number") : N_("Number")), NULL, type, SPLIT_TRANS, TRANS_NUM, NULL); params = gnc_search_param_prepend (params, N_("Memo"), NULL, type, SPLIT_MEMO, NULL); params = gnc_search_param_prepend (params, N_("Description"), NULL, type, SPLIT_TRANS, TRANS_DESCRIPTION, NULL); } else { GList *l; for (l = params; l; l = l->next) { GNCSearchParam *param = l->data; if (num_action) { if (strcmp (param->title, N_("Action")) == 0) gnc_search_param_set_title (param, N_("Number/Action")); if (strcmp (param->title, N_("Number")) == 0) gnc_search_param_set_title (param, N_("Transaction Number")); } else { if (strcmp (param->title, N_("Number/Action")) == 0) gnc_search_param_set_title (param, N_("Action")); if (strcmp (param->title, N_("Transaction Number")) == 0) gnc_search_param_set_title (param, N_("Number")); } } } ftd = g_new0 (struct _ftd_data, 1); if (orig_ledg) { ftd->ledger_q = gnc_ledger_display2_get_query (orig_ledg); start_q = show_q = qof_query_copy (ftd->ledger_q); } else { start_q = qof_query_create (); qof_query_set_book (start_q, gnc_get_current_book ()); /* In lieu of not "mis-using" some portion of the infrastructure by writing * a bunch of new code, we just filter out the accounts of the template * transactions. While these are in a seperate Account trees just for this * reason, the query engine makes no distinction between Account trees. * See Gnome Bug 86302. * -- jsled * * copied from gnc-ledger-display2.c:gnc_ledger_display2_gl() -- warlord * * <jsled> Alternatively, you could look for a GNC_SX_ACCOUNT [SchedAction.h] * key in the KVP frame of the split. */ { Account *tRoot; GList *al; tRoot = gnc_book_get_template_root( gnc_get_current_book() ); al = gnc_account_get_descendants( tRoot ); xaccQueryAddAccountMatch( start_q, al, QOF_GUID_MATCH_NONE, QOF_QUERY_AND ); g_list_free (al); al = NULL; tRoot = NULL; } ftd->q = start_q; /* save this to destroy it later */ } ftd->sw = gnc_search_dialog_create (type, _("Find Transaction"), params, NULL, start_q, show_q, NULL, do_find_cb, NULL, ftd, free_ftd_cb, GNC_PREFS_GROUP_SEARCH, NULL); if (!ftd->sw) { free_ftd_cb (ftd); return NULL; } return ftd->sw; }
static void gnc_search_dialog_book_option_changed (gpointer new_val, gpointer user_data) { GList *l; GNCSearchWindow *sw = user_data; gboolean *new_data = (gboolean*)new_val; /* Save current dialog focus */ GtkWidget *focused_widget = gtk_window_get_focus(GTK_WINDOW(sw->dialog)); g_return_if_fail (sw); if (strcmp (sw->search_for, GNC_ID_SPLIT) != 0) return; /* Adjust labels for future added search criteria */ for (l = sw->params_list; l; l = l->next) { GNCSearchParam *param = l->data; if (*new_data) { if (strcmp (param->title, N_("Action")) == 0) gnc_search_param_set_title (param, N_("Number/Action")); if (strcmp (param->title, N_("Number")) == 0) gnc_search_param_set_title (param, N_("Transaction Number")); } else { if (strcmp (param->title, N_("Number/Action")) == 0) gnc_search_param_set_title (param, N_("Action")); if (strcmp (param->title, N_("Transaction Number")) == 0) gnc_search_param_set_title (param, N_("Number")); } } /* Adjust labels for existing search criteria; walk the list of criteria */ for (l = sw->crit_list; l; l = l->next) { struct _crit_data *data = l->data; GList *children; /* For each, walk the list of container children to get combo_box */ for (children = gtk_container_get_children(GTK_CONTAINER(data->container)); children; children = children->next) { GtkWidget *combo_box = children->data; /* Get current active item if combo_box */ if (GTK_IS_COMBO_BOX(combo_box)) { GtkWidget *new_combo_box; gint index; /* Set index to current active item */ index = gtk_combo_box_get_active(GTK_COMBO_BOX(combo_box)); /* Create new combo_box to replace existing one */ new_combo_box = get_comb_box_widget (sw, data); /* If current combo_box has focus, point to new_combo-box */ if (focused_widget == combo_box) focused_widget = new_combo_box; gtk_widget_destroy(combo_box); /* Set new combo_box to current active item */ gtk_combo_box_set_active(GTK_COMBO_BOX(new_combo_box), index); gtk_box_pack_start (GTK_BOX (data->container), new_combo_box, FALSE, FALSE, 0); gtk_box_reorder_child(GTK_BOX (data->container), new_combo_box, 0); gtk_widget_show_all (data->container); } } } gtk_widget_grab_focus(focused_widget); }