mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
add destroy method
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@727 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
93232d8899
commit
0ade72fb1b
@ -3,7 +3,8 @@
|
|||||||
* register.c
|
* register.c
|
||||||
*
|
*
|
||||||
* FUNCTION:
|
* FUNCTION:
|
||||||
* implements the register object
|
* Implements the register object.
|
||||||
|
* See the header file for additional documentation.
|
||||||
*
|
*
|
||||||
* HISTORY:
|
* HISTORY:
|
||||||
* Copyright (c) 1998 Linas Vepstas
|
* Copyright (c) 1998 Linas Vepstas
|
||||||
@ -300,12 +301,16 @@ BasicRegister * xaccMallocBasicRegister (int type)
|
|||||||
xaccAddCell (curs, reg->CN##Cell, CL##_CELL_R, CL##_CELL_C); \
|
xaccAddCell (curs, reg->CN##Cell, CL##_CELL_R, CL##_CELL_C); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ============================================== */
|
||||||
|
|
||||||
void xaccInitBasicRegister (BasicRegister *reg, int type)
|
void xaccInitBasicRegister (BasicRegister *reg, int type)
|
||||||
{
|
{
|
||||||
Table * table;
|
Table * table;
|
||||||
CellBlock *curs, *header;
|
CellBlock *curs, *header;
|
||||||
|
|
||||||
|
reg->user_hook = NULL;
|
||||||
|
reg->destroy = NULL;
|
||||||
|
|
||||||
/* --------------------------- */
|
/* --------------------------- */
|
||||||
configLayout (reg, type);
|
configLayout (reg, type);
|
||||||
|
|
||||||
@ -376,6 +381,60 @@ void xaccInitBasicRegister (BasicRegister *reg, int type)
|
|||||||
|
|
||||||
/* ============================================== */
|
/* ============================================== */
|
||||||
|
|
||||||
|
void
|
||||||
|
xaccDestroyBasicRegister (BasicRegister *reg)
|
||||||
|
{
|
||||||
|
/* give the user a chance to clean up */
|
||||||
|
if (reg->destroy) {
|
||||||
|
(*(reg->destroy)) (reg);
|
||||||
|
}
|
||||||
|
reg->destroy = NULL;
|
||||||
|
reg->user_hook = NULL;
|
||||||
|
|
||||||
|
xaccDestroyTable (reg->table);
|
||||||
|
reg->table = NULL;
|
||||||
|
|
||||||
|
xaccDestroyCellBlock (reg->header);
|
||||||
|
xaccDestroyCellBlock (reg->cursor);
|
||||||
|
reg->header = NULL;
|
||||||
|
reg->cursor = NULL;
|
||||||
|
|
||||||
|
xaccDestroyDateCell (reg->dateCell);
|
||||||
|
xaccDestroyBasicCell (reg->numCell);
|
||||||
|
xaccDestroyQuickFillCell (reg->descCell);
|
||||||
|
xaccDestroyBasicCell (reg->recnCell);
|
||||||
|
xaccDestroyPriceCell (reg->creditCell);
|
||||||
|
xaccDestroyPriceCell (reg->debitCell);
|
||||||
|
xaccDestroyPriceCell (reg->shrsCell);
|
||||||
|
xaccDestroyPriceCell (reg->priceCell);
|
||||||
|
xaccDestroyPriceCell (reg->valueCell);
|
||||||
|
xaccDestroyBasicCell (reg->memoCell);
|
||||||
|
xaccDestroyComboCell (reg->actionCell);
|
||||||
|
xaccDestroyComboCell (reg->xfrmCell);
|
||||||
|
xaccDestroyComboCell (reg->xtoCell);
|
||||||
|
xaccDestroyPriceCell (reg->balanceCell);
|
||||||
|
|
||||||
|
reg->dateCell = NULL;
|
||||||
|
reg->numCell = NULL;
|
||||||
|
reg->descCell = NULL;
|
||||||
|
reg->recnCell = NULL;
|
||||||
|
reg->creditCell = NULL;
|
||||||
|
reg->debitCell = NULL;
|
||||||
|
reg->shrsCell = NULL;
|
||||||
|
reg->priceCell = NULL;
|
||||||
|
reg->valueCell = NULL;
|
||||||
|
reg->memoCell = NULL;
|
||||||
|
reg->actionCell = NULL;
|
||||||
|
reg->xfrmCell = NULL;
|
||||||
|
reg->xtoCell = NULL;
|
||||||
|
reg->balanceCell = NULL;
|
||||||
|
|
||||||
|
/* free the memory itself */
|
||||||
|
free (reg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ============================================== */
|
||||||
|
|
||||||
unsigned int
|
unsigned int
|
||||||
xaccGetChangeFlag (BasicRegister *reg)
|
xaccGetChangeFlag (BasicRegister *reg)
|
||||||
{
|
{
|
||||||
|
@ -77,7 +77,9 @@
|
|||||||
|
|
||||||
#define NUM_CELLS 20
|
#define NUM_CELLS 20
|
||||||
|
|
||||||
typedef struct _BasicRegister {
|
typedef struct _BasicRegister BasicRegister;
|
||||||
|
|
||||||
|
struct _BasicRegister {
|
||||||
/* the table itself that implements the underlying GUI. */
|
/* the table itself that implements the underlying GUI. */
|
||||||
Table * table;
|
Table * table;
|
||||||
|
|
||||||
@ -110,10 +112,19 @@ typedef struct _BasicRegister {
|
|||||||
short rows[NUM_CELLS];
|
short rows[NUM_CELLS];
|
||||||
short wids[NUM_CELLS];
|
short wids[NUM_CELLS];
|
||||||
|
|
||||||
} BasicRegister;
|
/* user_hook allows users of this object to hang
|
||||||
|
* private data onto it */
|
||||||
|
void *user_hook;
|
||||||
|
|
||||||
|
/* The destroy callback gives user's a chance
|
||||||
|
* to free up any associated user_hook data */
|
||||||
|
void (* destroy) (BasicRegister *);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
BasicRegister * xaccMallocBasicRegister (int type);
|
BasicRegister * xaccMallocBasicRegister (int type);
|
||||||
void xaccInitBasicRegister (BasicRegister *, int type);
|
void xaccInitBasicRegister (BasicRegister *, int type);
|
||||||
|
void xaccDestroyBasicRegister (BasicRegister *);
|
||||||
|
|
||||||
/* returns non-zero value if updates have been made to data */
|
/* returns non-zero value if updates have been made to data */
|
||||||
unsigned int xaccGetChangeFlag (BasicRegister *);
|
unsigned int xaccGetChangeFlag (BasicRegister *);
|
||||||
|
Loading…
Reference in New Issue
Block a user