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->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 ***********************************************/
|
/** Public Interface ***********************************************/
|
||||||
|
@ -588,7 +588,6 @@ gnc_split_register_layout_add_cells (SplitRegister *reg,
|
|||||||
CELL_ALIGN_LEFT,
|
CELL_ALIGN_LEFT,
|
||||||
FALSE,
|
FALSE,
|
||||||
FALSE);
|
FALSE);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TableLayout *
|
TableLayout *
|
||||||
@ -604,4 +603,3 @@ gnc_split_register_layout_new (SplitRegister *reg)
|
|||||||
|
|
||||||
return layout;
|
return layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -444,14 +444,15 @@ void
|
|||||||
gnc_split_register_model_add_save_handlers (TableModel *model)
|
gnc_split_register_model_add_save_handlers (TableModel *model)
|
||||||
{
|
{
|
||||||
g_return_if_fail (model != NULL);
|
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
|
void
|
||||||
gnc_template_register_model_add_save_handlers (TableModel *model)
|
gnc_template_register_model_add_save_handlers (TableModel *model)
|
||||||
{
|
{
|
||||||
g_return_if_fail (model != NULL);
|
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 *
|
SRSaveData *
|
||||||
|
@ -526,12 +526,39 @@ gnc_table_get_cell_location (Table *table,
|
|||||||
void
|
void
|
||||||
gnc_table_save_cells (Table *table, gpointer save_data)
|
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;
|
return;
|
||||||
|
|
||||||
gnc_table_leave_update (table, table->current_cursor_loc);
|
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
|
void
|
||||||
|
@ -410,7 +410,7 @@ gnc_table_model_set_default_cell_border_handler
|
|||||||
|
|
||||||
TableGetCellBorderHandler
|
TableGetCellBorderHandler
|
||||||
gnc_table_model_get_cell_border_handler (TableModel *model,
|
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);
|
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,
|
return gnc_table_model_handler_hash_lookup (model->confirm_handlers,
|
||||||
cell_name);
|
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 *cell_border_handlers;
|
||||||
GHashTable *confirm_handlers;
|
GHashTable *confirm_handlers;
|
||||||
|
|
||||||
TableSaveHandler save_handler;
|
GHashTable *save_handlers;
|
||||||
|
TableSaveHandler pre_save_handler;
|
||||||
|
TableSaveHandler post_save_handler;
|
||||||
|
|
||||||
gpointer handler_user_data;
|
gpointer handler_user_data;
|
||||||
|
|
||||||
@ -207,4 +209,22 @@ TableConfirmHandler gnc_table_model_get_confirm_handler
|
|||||||
(TableModel *model,
|
(TableModel *model,
|
||||||
const char * cell_name);
|
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
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user