From 5f75f106ee1f9a766bf66d58f84816884cf77c0e Mon Sep 17 00:00:00 2001 From: Robert Fewell <14uBobIT@gmail.com> Date: Mon, 1 Aug 2016 12:45:35 +0100 Subject: [PATCH] Add option to recn cell type to be read only Use added read only option to make Associate cell read only --- src/register/ledger-core/split-register-load.c | 1 + src/register/register-core/recncell.c | 11 +++++++++++ src/register/register-core/recncell.h | 3 +++ 3 files changed, 15 insertions(+) diff --git a/src/register/ledger-core/split-register-load.c b/src/register/ledger-core/split-register-load.c index 94cf37f2fb..c84d68dab2 100644 --- a/src/register/ledger-core/split-register-load.c +++ b/src/register/ledger-core/split-register-load.c @@ -83,6 +83,7 @@ gnc_split_register_load_associate_cells (SplitRegister *reg) /* FIXME: These should get moved to an i18n function */ gnc_recn_cell_set_valid_flags (cell, "fw ", ' '); gnc_recn_cell_set_flag_order (cell, "fw "); + gnc_recn_cell_set_read_only (cell, TRUE); } static void diff --git a/src/register/register-core/recncell.c b/src/register/register-core/recncell.c index 3cce6595f5..763f23ccc3 100644 --- a/src/register/register-core/recncell.c +++ b/src/register/register-core/recncell.c @@ -74,6 +74,9 @@ gnc_recn_cell_enter (BasicCell *_cell, ! (cell->confirm_cb (cell->flag, cell->confirm_data))) return FALSE; + if (cell->read_only == TRUE) + return FALSE; + /* Find the current flag in the list of flags */ this_flag = strchr (cell->flag_order, cell->flag); @@ -111,6 +114,7 @@ gnc_recn_cell_init (RecnCell *cell) cell->get_string = NULL; cell->valid_flags = ""; cell->flag_order = ""; + cell->read_only = FALSE; cell->cell.enter_cell = gnc_recn_cell_enter; cell->cell.set_value = gnc_recn_cell_set_value; @@ -207,3 +211,10 @@ gnc_recn_cell_set_flag_order (RecnCell *cell, const char *flags) cell->flag_order = (char *)flags; } + +void +gnc_recn_cell_set_read_only (RecnCell *cell, gboolean read_only) +{ + g_return_if_fail (cell != NULL); + cell->read_only = read_only; +} diff --git a/src/register/register-core/recncell.h b/src/register/register-core/recncell.h index 7017b9c7b3..c3343acdaa 100644 --- a/src/register/register-core/recncell.h +++ b/src/register/register-core/recncell.h @@ -57,6 +57,7 @@ typedef struct RecnCellStringGetter get_string; RecnCellConfirm confirm_cb; gpointer confirm_data; + gboolean read_only; } RecnCell; BasicCell * gnc_recn_cell_new (void); @@ -81,5 +82,7 @@ void gnc_recn_cell_set_string_getter (RecnCell *cell, void gnc_recn_cell_set_valid_flags (RecnCell *cell, const char *flags, char default_flag); void gnc_recn_cell_set_flag_order (RecnCell *cell, const char *flags); + +void gnc_recn_cell_set_read_only (RecnCell *cell, gboolean read_only); /** @} */ #endif