Use the new mechanism for the account list popups. Fixes #342058.

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@14367 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
David Hampton 2006-06-14 23:34:10 +00:00
parent 73335add12
commit b827cfd6a6
2 changed files with 10 additions and 64 deletions

View File

@ -1,5 +1,8 @@
2006-06-14 David Hampton <hampton@employees.org> 2006-06-14 David Hampton <hampton@employees.org>
* src/business/business-ledger/gncEntryLedgerLoad.c: Use the new
mechanism for the account list popups. Fixes #342058.
* src/import-export/hbci/gnc-hbci-utils.c: HBCI data is already in * src/import-export/hbci/gnc-hbci-utils.c: HBCI data is already in
utf8. Don't recode into the local charset (which may not be utf8). utf8. Don't recode into the local charset (which may not be utf8).

View File

@ -172,69 +172,16 @@ skip_income_acct_cb (Account *account, gpointer user_data)
/* ===================================================================== */ /* ===================================================================== */
/* Splat the account name into the transfer cell combobox menu */ /* Splat the account name into the transfer cell combobox menu */
typedef struct {
ComboCell *cell;
GncEntryLedgerType ledger_type;
} BCE;
static gpointer
load_entry_xfer_cell_cb (Account *account, gpointer data)
{
BCE *bce = data;
GNCAccountType type;
char *name;
/* Don't add A/R, A/P, Bank, Cash, or Equity accounts */
type = xaccAccountGetType (account);
if (type == PAYABLE || type == RECEIVABLE ||
type == CASH || type == BANK || type == EQUITY)
{
return NULL;
}
/* If this is an ORDER or INVOICE, then leave out the expenses.
* if it's a BILL, then leave out the incomes
*/
switch (bce->ledger_type)
{
case GNCENTRY_ORDER_ENTRY:
case GNCENTRY_ORDER_VIEWER:
case GNCENTRY_INVOICE_ENTRY:
case GNCENTRY_INVOICE_VIEWER:
if (type == EXPENSE) return NULL;
break;
case GNCENTRY_BILL_ENTRY:
case GNCENTRY_BILL_VIEWER:
case GNCENTRY_EXPVOUCHER_ENTRY:
case GNCENTRY_EXPVOUCHER_VIEWER:
case GNCENTRY_NUM_REGISTER_TYPES:
if (type == INCOME) return NULL;
break;
}
/* Don't add placeholder accounts */
if (xaccAccountGetPlaceholder (account)) return NULL;
name = xaccAccountGetFullName (account);
if (NULL == name) return NULL;
gnc_combo_cell_add_menu_item (bce->cell, name);
g_free(name);
return NULL;
}
#define EKEY "Expense Business entry quickfill" #define EKEY "Expense Business entry quickfill"
#define IKEY "Income Business entry quickfill" #define IKEY "Income Business entry quickfill"
static void static void
load_xfer_type_cells (GncEntryLedger *ledger) load_xfer_type_cells (GncEntryLedger *ledger)
{ {
BCE bce;
AccountGroup *group; AccountGroup *group;
ComboCell *cell; ComboCell *cell;
QuickFill *qf=NULL; QuickFill *qf=NULL;
GtkListStore *store = NULL;
group = gnc_book_get_group (ledger->book); group = gnc_book_get_group (ledger->book);
if (group == NULL) return; if (group == NULL) return;
@ -251,6 +198,8 @@ load_xfer_type_cells (GncEntryLedger *ledger)
case GNCENTRY_INVOICE_VIEWER: case GNCENTRY_INVOICE_VIEWER:
qf = gnc_get_shared_account_name_quickfill (group, IKEY, qf = gnc_get_shared_account_name_quickfill (group, IKEY,
skip_expense_acct_cb, NULL); skip_expense_acct_cb, NULL);
store = gnc_get_shared_account_name_list_store (group, IKEY,
skip_expense_acct_cb, NULL);
break; break;
case GNCENTRY_BILL_ENTRY: case GNCENTRY_BILL_ENTRY:
@ -260,26 +209,20 @@ load_xfer_type_cells (GncEntryLedger *ledger)
case GNCENTRY_NUM_REGISTER_TYPES: case GNCENTRY_NUM_REGISTER_TYPES:
qf = gnc_get_shared_account_name_quickfill (group, EKEY, qf = gnc_get_shared_account_name_quickfill (group, EKEY,
skip_income_acct_cb, NULL); skip_income_acct_cb, NULL);
store = gnc_get_shared_account_name_list_store (group, EKEY,
skip_income_acct_cb, NULL);
break; break;
} }
cell = (ComboCell *) cell = (ComboCell *)
gnc_table_layout_get_cell (ledger->table->layout, ENTRY_IACCT_CELL); gnc_table_layout_get_cell (ledger->table->layout, ENTRY_IACCT_CELL);
gnc_combo_cell_clear_menu (cell);
gnc_combo_cell_use_quickfill_cache (cell, qf); gnc_combo_cell_use_quickfill_cache (cell, qf);
gnc_combo_cell_use_list_store_cache (cell, store);
bce.cell = cell;
bce.ledger_type = ledger->type;
xaccGroupForEachAccount (group, load_entry_xfer_cell_cb, &bce, TRUE);
cell = (ComboCell *) cell = (ComboCell *)
gnc_table_layout_get_cell (ledger->table->layout, ENTRY_BACCT_CELL); gnc_table_layout_get_cell (ledger->table->layout, ENTRY_BACCT_CELL);
gnc_combo_cell_clear_menu (cell);
gnc_combo_cell_use_quickfill_cache (cell, qf); gnc_combo_cell_use_quickfill_cache (cell, qf);
gnc_combo_cell_use_list_store_cache (cell, store);
bce.cell = cell;
bce.ledger_type = ledger->type;
xaccGroupForEachAccount (group, load_entry_xfer_cell_cb, &bce, TRUE);
} }
/* ===================================================================== */ /* ===================================================================== */