Add enum SplitRegisterTypeGroup to group registers

Add SplitRegisterTypeGroup to group registers that have the same layout
and it will also be used to get the default user state information for
register cell widths.
This commit is contained in:
Robert Fewell 2020-05-02 14:32:47 +01:00
parent 4c8ebfe171
commit 74abd821b3
4 changed files with 75 additions and 23 deletions

View File

@ -83,17 +83,9 @@ gnc_split_register_set_cells (SplitRegister* reg, TableLayout* layout)
CellBlock* curs;
CellBlock* curs_last;
switch (reg->type)
switch (gnc_split_register_get_register_group (reg))
{
case BANK_REGISTER:
case CASH_REGISTER:
case ASSET_REGISTER:
case CREDIT_REGISTER:
case LIABILITY_REGISTER:
case INCOME_REGISTER:
case EXPENSE_REGISTER:
case EQUITY_REGISTER:
case TRADING_REGISTER:
case REG_TYPE_GROUP_CURRENCY:
{
curs = gnc_table_layout_get_cursor (layout,
CURSOR_SINGLE_LEDGER);
@ -191,8 +183,7 @@ gnc_split_register_set_cells (SplitRegister* reg, TableLayout* layout)
}
/* --------------------------------------------------------- */
case PAYABLE_REGISTER:
case RECEIVABLE_REGISTER:
case REG_TYPE_GROUP_APAR:
{
curs = gnc_table_layout_get_cursor (layout,
CURSOR_SINGLE_LEDGER);
@ -269,9 +260,7 @@ gnc_split_register_set_cells (SplitRegister* reg, TableLayout* layout)
}
/* --------------------------------------------------------- */
case INCOME_LEDGER:
case GENERAL_JOURNAL:
case SEARCH_LEDGER:
case REG_TYPE_GROUP_JOURNAL:
{
curs = gnc_table_layout_get_cursor (layout,
CURSOR_SINGLE_LEDGER);
@ -391,8 +380,7 @@ gnc_split_register_set_cells (SplitRegister* reg, TableLayout* layout)
}
/* --------------------------------------------------------- */
case STOCK_REGISTER:
case CURRENCY_REGISTER:
case REG_TYPE_GROUP_STOCK:
{
curs = gnc_table_layout_get_cursor (layout,
CURSOR_SINGLE_LEDGER);
@ -476,7 +464,7 @@ gnc_split_register_set_cells (SplitRegister* reg, TableLayout* layout)
}
/* --------------------------------------------------------- */
case PORTFOLIO_LEDGER:
case REG_TYPE_GROUP_PORTFOLIO:
{
curs = gnc_table_layout_get_cursor (layout,
CURSOR_SINGLE_LEDGER);
@ -559,7 +547,7 @@ gnc_split_register_set_cells (SplitRegister* reg, TableLayout* layout)
/* --------------------------------------------------------- */
default:
PERR ("unknown register type %d \n", reg->type);
PERR ("unknown register group type for %d \n", reg->type);
break;
}
}

View File

@ -3183,3 +3183,52 @@ gnc_split_register_set_read_only (SplitRegister* reg, gboolean read_only)
{
gnc_table_model_set_read_only (reg->table->model, read_only);
}
SplitRegisterTypeGroup
gnc_split_register_get_register_group (SplitRegister *reg)
{
switch (reg->type)
{
case BANK_REGISTER:
case CASH_REGISTER:
case ASSET_REGISTER:
case CREDIT_REGISTER:
case LIABILITY_REGISTER:
case INCOME_REGISTER:
case EXPENSE_REGISTER:
case EQUITY_REGISTER:
case TRADING_REGISTER:
{
return REG_TYPE_GROUP_CURRENCY;
break;
}
case PAYABLE_REGISTER:
case RECEIVABLE_REGISTER:
{
return REG_TYPE_GROUP_APAR;
break;
}
case INCOME_LEDGER:
case GENERAL_JOURNAL:
case SEARCH_LEDGER:
{
return REG_TYPE_GROUP_JOURNAL;
break;
}
case STOCK_REGISTER:
case CURRENCY_REGISTER:
{
return REG_TYPE_GROUP_STOCK;
break;
}
case PORTFOLIO_LEDGER:
{
return REG_TYPE_GROUP_PORTFOLIO;
break;
}
default:
return REG_TYPE_GROUP_UNKNOWN;
PERR ("unknown register type %d \n", reg->type);
break;
}
}

View File

@ -167,6 +167,19 @@ typedef enum
NUM_REGISTER_TYPES
} SplitRegisterType;
/** @brief Register group types
*
* used for grouping registers that have the same layout */
typedef enum
{
REG_TYPE_GROUP_UNKNOWN,
REG_TYPE_GROUP_CURRENCY,
REG_TYPE_GROUP_APAR,
REG_TYPE_GROUP_STOCK,
REG_TYPE_GROUP_JOURNAL,
REG_TYPE_GROUP_PORTFOLIO,
} SplitRegisterTypeGroup;
/** Register styles */
typedef enum
{
@ -327,6 +340,12 @@ void gnc_split_register_set_auto_complete (SplitRegister* reg,
*/
void gnc_split_register_set_read_only (SplitRegister* reg, gboolean read_only);
/** Group registers for common layouts.
* @param reg a ::SplitRegister
*
* @return the ::SplitRegisterTypeGroup that groups registers together
*/
SplitRegisterTypeGroup gnc_split_register_get_register_group (SplitRegister *reg);
/** Set the template account for use in a template register.
*

View File

@ -186,10 +186,6 @@ void
gnucash_register_reset_sheet_layout (GnucashRegister *reg)
{
GNCHeaderWidths widths;
Table *table;
GList *node;
gchar *key;
guint value;
GnucashSheet *sheet;
gint current_width;