32 #define DEFAULT_HANDLER "" 42 gnc_table_model_handler_hash_new (
void)
44 return g_hash_table_new (g_str_hash, g_str_equal);
48 hash_destroy_helper (gpointer key, gpointer value, gpointer user_data)
52 g_free (node->cell_name);
53 node->cell_name = NULL;
59 gnc_table_model_handler_hash_destroy (GHashTable *hash)
63 g_hash_table_foreach (hash, hash_destroy_helper, NULL);
64 g_hash_table_destroy (hash);
68 gnc_table_model_handler_hash_remove (GHashTable *hash,
const char *cell_name)
74 node = g_hash_table_lookup (hash, cell_name);
77 g_hash_table_remove (hash, cell_name);
79 g_free (node->cell_name);
80 node->cell_name = NULL;
86 gnc_table_model_handler_hash_insert (GHashTable *hash,
87 const char *cell_name,
92 g_return_if_fail (hash != NULL);
93 g_return_if_fail (cell_name != NULL);
95 gnc_table_model_handler_hash_remove (hash, cell_name);
100 node->cell_name = g_strdup (cell_name);
101 node->handler = handler;
103 g_hash_table_insert (hash, node->cell_name, node);
107 gnc_table_model_handler_hash_lookup (GHashTable *hash,
const char *cell_name)
111 if (!hash)
return NULL;
115 node = g_hash_table_lookup (hash, cell_name);
116 if (node)
return node->handler;
119 cell_name = DEFAULT_HANDLER;
120 node = g_hash_table_lookup (hash, cell_name);
121 if (node)
return node->handler;
127 gnc_table_model_new (
void)
133 model->entry_handlers = gnc_table_model_handler_hash_new ();
134 model->label_handlers = gnc_table_model_handler_hash_new ();
135 model->help_handlers = gnc_table_model_handler_hash_new ();
136 model->tooltip_handlers = gnc_table_model_handler_hash_new ();
137 model->io_flags_handlers = gnc_table_model_handler_hash_new ();
138 model->cell_color_handlers = gnc_table_model_handler_hash_new ();
139 model->cell_border_handlers = gnc_table_model_handler_hash_new ();
140 model->confirm_handlers = gnc_table_model_handler_hash_new ();
141 model->save_handlers = gnc_table_model_handler_hash_new ();
143 model->read_only = FALSE;
144 model->dividing_row_upper = -1;
145 model->dividing_row = -1;
146 model->dividing_row_lower = -1;
148 model->blank_trans_row = -1;
158 gnc_table_model_handler_hash_destroy (model->entry_handlers);
159 model->entry_handlers = NULL;
161 gnc_table_model_handler_hash_destroy (model->label_handlers);
162 model->label_handlers = NULL;
164 gnc_table_model_handler_hash_destroy (model->tooltip_handlers);
165 model->tooltip_handlers = NULL;
167 gnc_table_model_handler_hash_destroy (model->help_handlers);
168 model->help_handlers = NULL;
170 gnc_table_model_handler_hash_destroy (model->io_flags_handlers);
171 model->io_flags_handlers = NULL;
173 gnc_table_model_handler_hash_destroy (model->cell_color_handlers);
174 model->cell_color_handlers = NULL;
176 gnc_table_model_handler_hash_destroy (model->cell_border_handlers);
177 model->cell_border_handlers = NULL;
179 gnc_table_model_handler_hash_destroy (model->confirm_handlers);
180 model->confirm_handlers = NULL;
182 gnc_table_model_handler_hash_destroy (model->save_handlers);
183 model->save_handlers = NULL;
189 gnc_table_model_set_read_only (
TableModel *model, gboolean read_only)
191 g_return_if_fail (model);
193 model->read_only = read_only;
199 g_return_val_if_fail (model, FALSE);
201 return model->read_only;
205 gnc_table_model_set_reverse_sort (
TableModel *model,
206 gboolean reverse_sort)
208 g_return_if_fail (model);
209 model->reverse_sort = reverse_sort;
213 gnc_table_model_set_entry_handler (
TableModel *model,
214 TableGetEntryHandler entry_handler,
215 const char * cell_name)
217 g_return_if_fail (model != NULL);
218 g_return_if_fail (cell_name != NULL);
220 gnc_table_model_handler_hash_insert (model->entry_handlers,
226 gnc_table_model_set_default_entry_handler
227 (
TableModel *model, TableGetEntryHandler entry_handler)
229 g_return_if_fail (model != NULL);
231 gnc_table_model_handler_hash_insert (model->entry_handlers,
237 gnc_table_model_get_entry_handler (
TableModel *model,
const char * cell_name)
239 g_return_val_if_fail (model != NULL, NULL);
241 return gnc_table_model_handler_hash_lookup (model->entry_handlers,
246 gnc_table_model_set_label_handler (
TableModel *model,
247 TableGetLabelHandler label_handler,
248 const char * cell_name)
250 g_return_if_fail (model != NULL);
251 g_return_if_fail (cell_name != NULL);
253 gnc_table_model_handler_hash_insert (model->label_handlers,
259 gnc_table_model_set_default_label_handler
260 (
TableModel *model, TableGetLabelHandler label_handler)
262 g_return_if_fail (model != NULL);
264 gnc_table_model_handler_hash_insert (model->label_handlers,
270 gnc_table_model_get_label_handler (
TableModel *model,
const char * cell_name)
272 g_return_val_if_fail (model != NULL, NULL);
274 return gnc_table_model_handler_hash_lookup (model->label_handlers,
279 gnc_table_model_set_tooltip_handler (
TableModel *model,
280 TableGetTooltipHandler tooltip_handler,
281 const char * cell_name)
283 g_return_if_fail (model != NULL);
284 g_return_if_fail (cell_name != NULL);
286 gnc_table_model_handler_hash_insert (model->tooltip_handlers,
292 gnc_table_model_set_default_tooltip_handler
293 (
TableModel *model, TableGetTooltipHandler tooltip_handler)
295 g_return_if_fail (model != NULL);
297 gnc_table_model_handler_hash_insert (model->tooltip_handlers,
302 TableGetTooltipHandler
303 gnc_table_model_get_tooltip_handler (
TableModel *model,
const char * cell_name)
305 g_return_val_if_fail (model != NULL, NULL);
307 return gnc_table_model_handler_hash_lookup (model->tooltip_handlers,
312 gnc_table_model_set_help_handler (
TableModel *model,
313 TableGetHelpHandler help_handler,
314 const char * cell_name)
316 g_return_if_fail (model != NULL);
317 g_return_if_fail (cell_name != NULL);
319 gnc_table_model_handler_hash_insert (model->help_handlers,
325 gnc_table_model_set_default_help_handler (
TableModel *model,
326 TableGetHelpHandler help_handler)
328 g_return_if_fail (model != NULL);
330 gnc_table_model_handler_hash_insert (model->help_handlers,
336 gnc_table_model_get_help_handler (
TableModel *model,
const char * cell_name)
338 g_return_val_if_fail (model != NULL, NULL);
340 return gnc_table_model_handler_hash_lookup (model->help_handlers, cell_name);
344 gnc_table_model_set_io_flags_handler
346 TableGetCellIOFlagsHandler io_flags_handler,
347 const char * cell_name)
349 g_return_if_fail (model != NULL);
350 g_return_if_fail (cell_name != NULL);
352 gnc_table_model_handler_hash_insert (model->io_flags_handlers,
358 gnc_table_model_set_default_io_flags_handler
360 TableGetCellIOFlagsHandler io_flags_handler)
362 g_return_if_fail (model != NULL);
364 gnc_table_model_handler_hash_insert (model->io_flags_handlers,
369 TableGetCellIOFlagsHandler
370 gnc_table_model_get_io_flags_handler (
TableModel *model,
371 const char * cell_name)
373 g_return_val_if_fail (model != NULL, NULL);
375 return gnc_table_model_handler_hash_lookup (model->io_flags_handlers,
380 gnc_table_model_set_cell_color_handler
382 TableGetCellColorHandler color_handler,
383 const char * cell_name)
385 g_return_if_fail (model != NULL);
386 g_return_if_fail (cell_name != NULL);
388 gnc_table_model_handler_hash_insert (model->cell_color_handlers,
394 gnc_table_model_set_default_cell_color_handler
396 TableGetCellColorHandler color_handler)
398 g_return_if_fail (model != NULL);
400 gnc_table_model_handler_hash_insert (model->cell_color_handlers,
405 TableGetCellColorHandler
406 gnc_table_model_get_cell_color_handler (
TableModel *model,
407 const char * cell_name)
409 g_return_val_if_fail (model != NULL, NULL);
411 return gnc_table_model_handler_hash_lookup (model->cell_color_handlers,
416 gnc_table_model_set_cell_border_handler
418 TableGetCellBorderHandler cell_border_handler,
419 const char * cell_name)
421 g_return_if_fail (model != NULL);
422 g_return_if_fail (cell_name != NULL);
424 gnc_table_model_handler_hash_insert (model->cell_border_handlers,
426 cell_border_handler);
430 gnc_table_model_set_default_cell_border_handler
432 TableGetCellBorderHandler cell_border_handler)
434 g_return_if_fail (model != NULL);
436 gnc_table_model_handler_hash_insert (model->cell_border_handlers,
438 cell_border_handler);
441 TableGetCellBorderHandler
442 gnc_table_model_get_cell_border_handler (
TableModel *model,
443 const char * cell_name)
445 g_return_val_if_fail (model != NULL, NULL);
447 return gnc_table_model_handler_hash_lookup (model->cell_border_handlers,
452 gnc_table_model_set_confirm_handler
454 TableConfirmHandler confirm_handler,
455 const char * cell_name)
457 g_return_if_fail (model != NULL);
458 g_return_if_fail (cell_name != NULL);
460 gnc_table_model_handler_hash_insert (model->confirm_handlers,
466 gnc_table_model_set_default_confirm_handler
468 TableConfirmHandler confirm_handler)
470 g_return_if_fail (model != NULL);
472 gnc_table_model_handler_hash_insert (model->confirm_handlers,
478 gnc_table_model_get_confirm_handler (
TableModel *model,
479 const char * cell_name)
481 g_return_val_if_fail (model != NULL, NULL);
483 return gnc_table_model_handler_hash_lookup (model->confirm_handlers,
488 gnc_table_model_set_save_handler
490 TableSaveCellHandler save_handler,
491 const char * cell_name)
493 g_return_if_fail (model != NULL);
494 g_return_if_fail (cell_name != NULL);
496 gnc_table_model_handler_hash_insert (model->save_handlers,
502 gnc_table_model_set_pre_save_handler
504 TableSaveHandler save_handler)
506 g_return_if_fail (model != NULL);
508 model->pre_save_handler = save_handler;
512 gnc_table_model_set_post_save_handler
514 TableSaveHandler save_handler)
516 g_return_if_fail (model != NULL);
518 model->post_save_handler = save_handler;
522 gnc_table_model_get_save_handler
524 const char * cell_name)
526 g_return_val_if_fail (model != NULL, NULL);
528 return gnc_table_model_handler_hash_lookup (model->save_handlers, cell_name);
532 gnc_table_model_get_pre_save_handler
535 g_return_val_if_fail (model != NULL, NULL);
537 return model->pre_save_handler;
541 gnc_table_model_get_post_save_handler
544 g_return_val_if_fail (model != NULL, NULL);
546 return model->post_save_handler;