mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Work on per-cell save handlers for tables.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@6075 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
4a12e94726
commit
9f78f5afb2
@ -589,7 +589,7 @@ static void gnc_entry_ledger_model_new_handlers (TableModel *model)
|
||||
model->cell_data_copy = ;
|
||||
*/
|
||||
|
||||
model->save_handler = gnc_entry_ledger_save_cells;
|
||||
gnc_table_model_set_post_save_handler (model, gnc_entry_ledger_save_cells);
|
||||
}
|
||||
|
||||
/** Public Interface ***********************************************/
|
||||
|
@ -588,7 +588,6 @@ gnc_split_register_layout_add_cells (SplitRegister *reg,
|
||||
CELL_ALIGN_LEFT,
|
||||
FALSE,
|
||||
FALSE);
|
||||
|
||||
}
|
||||
|
||||
TableLayout *
|
||||
@ -604,4 +603,3 @@ gnc_split_register_layout_new (SplitRegister *reg)
|
||||
|
||||
return layout;
|
||||
}
|
||||
|
||||
|
@ -444,14 +444,15 @@ void
|
||||
gnc_split_register_model_add_save_handlers (TableModel *model)
|
||||
{
|
||||
g_return_if_fail (model != NULL);
|
||||
model->save_handler = gnc_split_register_save_cells;
|
||||
gnc_table_model_set_post_save_handler (model, gnc_split_register_save_cells);
|
||||
}
|
||||
|
||||
void
|
||||
gnc_template_register_model_add_save_handlers (TableModel *model)
|
||||
{
|
||||
g_return_if_fail (model != NULL);
|
||||
model->save_handler = gnc_split_register_save_template_cells;
|
||||
gnc_table_model_set_post_save_handler
|
||||
(model, gnc_split_register_save_template_cells);
|
||||
}
|
||||
|
||||
SRSaveData *
|
||||
|
@ -526,12 +526,39 @@ gnc_table_get_cell_location (Table *table,
|
||||
void
|
||||
gnc_table_save_cells (Table *table, gpointer save_data)
|
||||
{
|
||||
if (!table || !table->model->save_handler)
|
||||
TableSaveHandler save_handler;
|
||||
GList * cells;
|
||||
GList * node;
|
||||
|
||||
if (!table)
|
||||
return;
|
||||
|
||||
gnc_table_leave_update (table, table->current_cursor_loc);
|
||||
|
||||
table->model->save_handler (save_data, table->model->handler_user_data);
|
||||
save_handler = gnc_table_model_get_pre_save_handler (table->model);
|
||||
if (save_handler)
|
||||
save_handler (save_data, table->model->handler_user_data);
|
||||
|
||||
cells = gnc_table_layout_get_cells (table->layout);
|
||||
for (node = cells; node; node = node->next)
|
||||
{
|
||||
BasicCell * cell = node->data;
|
||||
|
||||
if (!cell) continue;
|
||||
|
||||
if (!gnc_table_layout_get_cell_changed (table->layout,
|
||||
cell->cell_name, TRUE))
|
||||
continue;
|
||||
|
||||
save_handler = gnc_table_model_get_save_handler (table->model,
|
||||
cell->cell_name);
|
||||
if (save_handler)
|
||||
save_handler (save_data, table->model->handler_user_data);
|
||||
}
|
||||
|
||||
save_handler = gnc_table_model_get_post_save_handler (table->model);
|
||||
if (save_handler)
|
||||
save_handler (save_data, table->model->handler_user_data);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -410,7 +410,7 @@ gnc_table_model_set_default_cell_border_handler
|
||||
|
||||
TableGetCellBorderHandler
|
||||
gnc_table_model_get_cell_border_handler (TableModel *model,
|
||||
const char * cell_name)
|
||||
const char * cell_name)
|
||||
{
|
||||
g_return_val_if_fail (model != NULL, NULL);
|
||||
|
||||
@ -453,3 +453,65 @@ gnc_table_model_get_confirm_handler (TableModel *model,
|
||||
return gnc_table_model_handler_hash_lookup (model->confirm_handlers,
|
||||
cell_name);
|
||||
}
|
||||
|
||||
void
|
||||
gnc_table_model_set_save_handler
|
||||
(TableModel *model,
|
||||
TableSaveHandler save_handler,
|
||||
const char * cell_name)
|
||||
{
|
||||
g_return_if_fail (model != NULL);
|
||||
g_return_if_fail (cell_name != NULL);
|
||||
|
||||
gnc_table_model_handler_hash_insert (model->save_handlers,
|
||||
cell_name,
|
||||
save_handler);
|
||||
}
|
||||
|
||||
void
|
||||
gnc_table_model_set_pre_save_handler
|
||||
(TableModel *model,
|
||||
TableSaveHandler save_handler)
|
||||
{
|
||||
g_return_if_fail (model != NULL);
|
||||
|
||||
model->pre_save_handler = save_handler;
|
||||
}
|
||||
|
||||
void
|
||||
gnc_table_model_set_post_save_handler
|
||||
(TableModel *model,
|
||||
TableSaveHandler save_handler)
|
||||
{
|
||||
g_return_if_fail (model != NULL);
|
||||
|
||||
model->post_save_handler = save_handler;
|
||||
}
|
||||
|
||||
TableSaveHandler
|
||||
gnc_table_model_get_save_handler
|
||||
(TableModel *model,
|
||||
const char * cell_name)
|
||||
{
|
||||
g_return_val_if_fail (model != NULL, NULL);
|
||||
|
||||
return gnc_table_model_handler_hash_lookup (model->save_handlers, cell_name);
|
||||
}
|
||||
|
||||
TableSaveHandler
|
||||
gnc_table_model_get_pre_save_handler
|
||||
(TableModel *model)
|
||||
{
|
||||
g_return_val_if_fail (model != NULL, NULL);
|
||||
|
||||
return model->pre_save_handler;
|
||||
}
|
||||
|
||||
TableSaveHandler
|
||||
gnc_table_model_get_post_save_handler
|
||||
(TableModel *model)
|
||||
{
|
||||
g_return_val_if_fail (model != NULL, NULL);
|
||||
|
||||
return model->post_save_handler;
|
||||
}
|
||||
|
@ -102,7 +102,9 @@ typedef struct
|
||||
GHashTable *cell_border_handlers;
|
||||
GHashTable *confirm_handlers;
|
||||
|
||||
TableSaveHandler save_handler;
|
||||
GHashTable *save_handlers;
|
||||
TableSaveHandler pre_save_handler;
|
||||
TableSaveHandler post_save_handler;
|
||||
|
||||
gpointer handler_user_data;
|
||||
|
||||
@ -207,4 +209,22 @@ TableConfirmHandler gnc_table_model_get_confirm_handler
|
||||
(TableModel *model,
|
||||
const char * cell_name);
|
||||
|
||||
void gnc_table_model_set_save_handler
|
||||
(TableModel *model,
|
||||
TableSaveHandler save_handler,
|
||||
const char * cell_name);
|
||||
void gnc_table_model_set_pre_save_handler
|
||||
(TableModel *model,
|
||||
TableSaveHandler save_handler);
|
||||
void gnc_table_model_set_post_save_handler
|
||||
(TableModel *model,
|
||||
TableSaveHandler save_handler);
|
||||
TableSaveHandler gnc_table_model_get_save_handler
|
||||
(TableModel *model,
|
||||
const char * cell_name);
|
||||
TableSaveHandler gnc_table_model_get_pre_save_handler
|
||||
(TableModel *model);
|
||||
TableSaveHandler gnc_table_model_get_post_save_handler
|
||||
(TableModel *model);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user