Indicate an Association in the Register

Use the field below the reconcile and type entry on the transaction
lines to indicate a file/link association.
This commit is contained in:
Robert Fewell 2016-08-01 12:42:45 +01:00 committed by John Ralls
parent 8f9d1dcf39
commit 5bb53c044a
4 changed files with 110 additions and 1 deletions

View File

@ -125,6 +125,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
gnc_table_layout_set_cell (layout, curs, ACTN_CELL, 1, 1);
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
curs = gnc_table_layout_get_cursor (layout,
CURSOR_DOUBLE_LEDGER_NUM_ACTN);
@ -134,6 +135,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
gnc_table_layout_set_cell (layout, curs, TNUM_CELL, 1, 1);
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
curs = gnc_table_layout_get_cursor (layout,
CURSOR_SINGLE_JOURNAL);
@ -154,6 +156,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
curs = gnc_table_layout_get_cursor (layout,
CURSOR_DOUBLE_JOURNAL_NUM_ACTN);
@ -163,6 +166,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
gnc_table_layout_set_cell (layout, curs, TNUM_CELL, 1, 1);
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
curs = gnc_table_layout_get_cursor (layout,
CURSOR_SPLIT);
@ -209,6 +213,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
copy_cursor_row (layout, curs, curs_last, 0);
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 1);
gnc_table_layout_set_cell (layout, curs, ACTN_CELL, 1, 3);
gnc_table_layout_set_cell (layout, curs, MEMO_CELL, 1, 4);
@ -217,6 +222,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
copy_cursor_row (layout, curs, curs_last, 0);
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 1);
gnc_table_layout_set_cell (layout, curs, TNUM_CELL, 1, 3);
gnc_table_layout_set_cell (layout, curs, MEMO_CELL, 1, 4);
@ -246,6 +252,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
copy_cursor_row (layout, curs, curs_last, 0);
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 1);
gnc_table_layout_set_cell (layout, curs, TNUM_CELL, 1, 3);
gnc_table_layout_set_cell (layout, curs, MEMO_CELL, 1, 4);
@ -297,6 +304,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
gnc_table_layout_set_cell (layout, curs, ACTN_CELL, 1, 1);
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
curs = gnc_table_layout_get_cursor (layout,
CURSOR_DOUBLE_LEDGER_NUM_ACTN);
@ -306,6 +314,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
gnc_table_layout_set_cell (layout, curs, ACTN_CELL, 1, 1);
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
curs = gnc_table_layout_get_cursor (layout,
CURSOR_SINGLE_JOURNAL);
@ -331,6 +340,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
curs = gnc_table_layout_get_cursor (layout,
CURSOR_DOUBLE_JOURNAL_NUM_ACTN);
@ -339,6 +349,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
curs = gnc_table_layout_get_cursor (layout,
CURSOR_SPLIT);
@ -390,6 +401,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
gnc_table_layout_set_cell (layout, curs, ACTN_CELL, 1, 1);
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
curs = gnc_table_layout_get_cursor (layout,
CURSOR_DOUBLE_LEDGER_NUM_ACTN);
@ -399,6 +411,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
gnc_table_layout_set_cell (layout, curs, TNUM_CELL, 1, 1);
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
curs = gnc_table_layout_get_cursor (layout,
CURSOR_SINGLE_JOURNAL);
@ -419,6 +432,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
curs = gnc_table_layout_get_cursor (layout,
CURSOR_DOUBLE_JOURNAL_NUM_ACTN);
@ -428,6 +442,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
gnc_table_layout_set_cell (layout, curs, TNUM_CELL, 1, 1);
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
curs = gnc_table_layout_get_cursor (layout,
CURSOR_SPLIT);
@ -469,6 +484,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
gnc_table_layout_set_cell (layout, curs, ACTN_CELL, 1, 1);
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
curs = gnc_table_layout_get_cursor (layout,
CURSOR_DOUBLE_LEDGER_NUM_ACTN);
@ -478,6 +494,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
gnc_table_layout_set_cell (layout, curs, TNUM_CELL, 1, 1);
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
curs = gnc_table_layout_get_cursor (layout,
CURSOR_SINGLE_JOURNAL);
@ -497,6 +514,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
curs = gnc_table_layout_get_cursor (layout,
CURSOR_DOUBLE_JOURNAL_NUM_ACTN);
@ -506,6 +524,7 @@ gnc_split_register_set_cells (SplitRegister *reg, TableLayout *layout)
gnc_table_layout_set_cell (layout, curs, TNUM_CELL, 1, 1);
gnc_table_layout_set_cell (layout, curs, NOTES_CELL, 1, 2);
gnc_table_layout_set_cell (layout, curs, VNOTES_CELL, 1, 3);
gnc_table_layout_set_cell (layout, curs, ASSOC_CELL, 1, 4);
curs = gnc_table_layout_get_cursor (layout,
CURSOR_SPLIT);
@ -673,6 +692,14 @@ gnc_split_register_layout_add_cells (SplitRegister *reg,
FALSE,
FALSE);
gnc_register_add_cell (layout,
ASSOC_CELL,
RECN_CELL_TYPE_NAME,
N_("Associate:A") + 10,
CELL_ALIGN_LEFT,
FALSE,
FALSE);
gnc_register_add_cell (layout,
BALN_CELL,
PRICE_CELL_TYPE_NAME,
@ -783,7 +810,7 @@ gnc_split_register_layout_add_cells (SplitRegister *reg,
TYPE_CELL,
RECN_CELL_TYPE_NAME,
N_("Type:T") + 5,
CELL_ALIGN_LEFT,
CELL_ALIGN_CENTER,
FALSE,
FALSE);

View File

@ -68,6 +68,23 @@ gnc_split_register_load_recn_cells (SplitRegister *reg)
gnc_recn_cell_set_string_getter (cell, gnc_get_reconcile_str);
}
static void
gnc_split_register_load_associate_cells (SplitRegister *reg)
{
RecnCell *cell;
if (!reg) return;
cell = (RecnCell *)
gnc_table_layout_get_cell (reg->table->layout, ASSOC_CELL);
if (!cell) return;
/* FIXME: These should get moved to an i18n function */
gnc_recn_cell_set_valid_flags (cell, "@ ", ' ');
gnc_recn_cell_set_flag_order (cell, "@ ");
}
static void
gnc_split_register_load_type_cells (SplitRegister *reg)
{
@ -491,6 +508,7 @@ gnc_split_register_load (SplitRegister *reg, GList * slist,
/* load up account names into the transfer combobox menus */
gnc_split_register_load_xfer_cells (reg, default_account);
gnc_split_register_load_associate_cells (reg);
gnc_split_register_load_recn_cells (reg);
gnc_split_register_load_type_cells (reg);
}

View File

@ -339,6 +339,13 @@ gnc_split_register_get_memo_label (VirtualLocation virt_loc,
return _("Memo");
}
static const char *
gnc_split_register_get_associate_label (VirtualLocation virt_loc,
gpointer user_data)
{
return _("Associate:A");
}
static const char *
gnc_split_register_get_type_label (VirtualLocation virt_loc,
gpointer user_data)
@ -758,6 +765,51 @@ gnc_split_register_get_border (VirtualLocation virt_loc,
}
}
static const char *
gnc_split_register_get_associate_entry (VirtualLocation virt_loc,
gboolean translate,
gboolean *conditionally_changed,
gpointer user_data)
{
SplitRegister *reg = user_data;
Transaction *trans;
char associate;
static char s[2];
const char *uri;
trans = gnc_split_register_get_trans (reg, virt_loc.vcell_loc);
if (!trans)
return NULL;
// get the existing uri
uri = xaccTransGetAssociation (trans);
// Check for uri is empty or NULL
if (g_strcmp0 (uri, "") != 0 && g_strcmp0 (uri, NULL) != 0)
associate = '@';
else
associate = ' ';
s[0] = associate;
s[1] = '\0';
return s;
}
static char
gnc_split_register_get_associate_value (SplitRegister *reg,
VirtualLocation virt_loc)
{
RecnCell *cell;
cell = (RecnCell *)gnc_table_layout_get_cell (reg->table->layout, ASSOC_CELL);
if (!cell)
return '\0';
return gnc_recn_cell_get_flag (cell);
}
static const char *
gnc_split_register_get_type_entry (VirtualLocation virt_loc,
gboolean translate,
@ -2331,6 +2383,10 @@ gnc_split_register_model_new (void)
gnc_split_register_get_tdebcred_entry,
TCRED_CELL);
gnc_table_model_set_entry_handler (model,
gnc_split_register_get_associate_entry,
ASSOC_CELL);
gnc_table_model_set_entry_handler (model,
gnc_split_register_get_type_entry,
TYPE_CELL);
@ -2424,6 +2480,10 @@ gnc_split_register_model_new (void)
gnc_split_register_get_tbalance_label,
TBALN_CELL);
gnc_table_model_set_label_handler (model,
gnc_split_register_get_associate_label,
ASSOC_CELL);
gnc_table_model_set_label_handler (model,
gnc_split_register_get_type_label,
TYPE_CELL);
@ -2559,6 +2619,9 @@ gnc_split_register_model_new (void)
gnc_table_model_set_io_flags_handler(
model, gnc_split_register_get_recn_io_flags, RECN_CELL);
gnc_table_model_set_io_flags_handler(
model, gnc_split_register_get_recn_io_flags, ASSOC_CELL);
gnc_table_model_set_io_flags_handler(
model, gnc_split_register_get_recn_io_flags, TYPE_CELL);

View File

@ -180,6 +180,7 @@ typedef enum
* @{
*/
#define ACTN_CELL "action"
#define ASSOC_CELL "associate"
#define BALN_CELL "balance"
#define CRED_CELL "credit"
#define DATE_CELL "date"