mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
rework the ledger utils
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@480 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
@@ -170,158 +170,4 @@ xaccGroupToList (Account *acc)
|
||||
return list;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------ */
|
||||
|
||||
int
|
||||
ledgerListCount (struct _RegWindow **list)
|
||||
{
|
||||
struct _RegWindow *reg;
|
||||
int n;
|
||||
|
||||
if (!list) return 0;
|
||||
|
||||
n = 0;
|
||||
reg = list[0];
|
||||
while (reg) {
|
||||
n++;
|
||||
reg = list[n];
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------ */
|
||||
|
||||
void
|
||||
ledgerListAdd (Account * acc, struct _RegWindow *addreg)
|
||||
{
|
||||
struct _RegWindow **oldlist;
|
||||
struct _RegWindow **newlist;
|
||||
struct _RegWindow *reg;
|
||||
int n;
|
||||
|
||||
if (!acc) return;
|
||||
if (!addreg) return;
|
||||
|
||||
/* oldlist = acc->ledgerList; */
|
||||
n = ledgerListCount (oldlist);
|
||||
|
||||
newlist = (struct _RegWindow **)
|
||||
_malloc ((n+2) * sizeof (struct _RegWindow *));
|
||||
|
||||
n = 0;
|
||||
if (oldlist) {
|
||||
reg = oldlist[0];
|
||||
while (reg) {
|
||||
newlist[n] = reg;
|
||||
n++;
|
||||
reg = oldlist[n];
|
||||
}
|
||||
_free (oldlist);
|
||||
}
|
||||
newlist[n] = addreg;
|
||||
newlist[n+1] = NULL;
|
||||
|
||||
/* acc->ledgerList = newlist; */
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------ */
|
||||
|
||||
void
|
||||
ledgerListRemove (Account * acc, struct _RegWindow *delreg)
|
||||
{
|
||||
struct _RegWindow **oldlist;
|
||||
struct _RegWindow **newlist;
|
||||
struct _RegWindow *reg;
|
||||
int n, i;
|
||||
|
||||
if (!acc) return;
|
||||
if (!delreg) return;
|
||||
|
||||
/* oldlist = acc->ledgerList; */
|
||||
n = ledgerListCount (oldlist);
|
||||
|
||||
newlist = (struct _RegWindow **)
|
||||
_malloc ((n+1) * sizeof (struct _RegWindow *));
|
||||
|
||||
n = 0;
|
||||
i = 0;
|
||||
if (oldlist) {
|
||||
reg = oldlist[0];
|
||||
while (reg) {
|
||||
newlist[i] = reg;
|
||||
if (delreg == reg) i--;
|
||||
i++;
|
||||
n++;
|
||||
reg = oldlist[n];
|
||||
}
|
||||
_free (oldlist);
|
||||
}
|
||||
newlist[i] = NULL;
|
||||
|
||||
/* acc->ledgerList = newlist; */
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------ */
|
||||
|
||||
int
|
||||
ledgerListIsMember (Account * acc, struct _RegWindow *memreg)
|
||||
{
|
||||
struct _RegWindow **list;
|
||||
struct _RegWindow *reg;
|
||||
int n;
|
||||
|
||||
if (!acc) return 0;
|
||||
if (!memreg) return 0;
|
||||
|
||||
/* list = acc->ledgerList; */
|
||||
if (!list) return 0;
|
||||
|
||||
n = 0;
|
||||
reg = list[0];
|
||||
while (reg) {
|
||||
if (memreg == reg) return 1;
|
||||
n++;
|
||||
reg = list[n];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------ */
|
||||
|
||||
void
|
||||
ledgerListAddList (Account ** list, struct _RegWindow *reg)
|
||||
{
|
||||
Account *acc;
|
||||
int n = 0;
|
||||
|
||||
if (!list) return;
|
||||
if (!reg) return;
|
||||
|
||||
acc = list[0];
|
||||
while (acc) {
|
||||
ledgerListAdd (acc, reg);
|
||||
n++;
|
||||
acc = list[n];
|
||||
}
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------ */
|
||||
|
||||
void
|
||||
ledgerListRemoveList (Account ** list, struct _RegWindow *reg)
|
||||
{
|
||||
Account *acc;
|
||||
int n = 0;
|
||||
|
||||
if (!list) return;
|
||||
if (!reg) return;
|
||||
|
||||
acc = list[0];
|
||||
while (acc) {
|
||||
ledgerListRemove (acc, reg);
|
||||
n++;
|
||||
acc = list[n];
|
||||
}
|
||||
}
|
||||
|
||||
/************************** END OF FILE *************************/
|
||||
|
||||
@@ -99,6 +99,91 @@ static void recordCB( Widget mw, XtPointer cd, XtPointer cb );
|
||||
static void deleteCB( Widget mw, XtPointer cd, XtPointer cb );
|
||||
static void cancelCB( Widget mw, XtPointer cd, XtPointer cb );
|
||||
|
||||
/********************************************************************\
|
||||
* Ledger utilities *
|
||||
\********************************************************************/
|
||||
|
||||
int
|
||||
ledgerListCount (RegWindow **list)
|
||||
{
|
||||
int n = 0;
|
||||
if (!list) return 0;
|
||||
while (list[n]) n++;
|
||||
return n;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------ */
|
||||
|
||||
RegWindow **
|
||||
ledgerListAdd (RegWindow **oldlist, RegWindow *addreg)
|
||||
{
|
||||
RegWindow **newlist;
|
||||
RegWindow *reg;
|
||||
int n;
|
||||
|
||||
if (!addreg) return oldlist;
|
||||
|
||||
n = ledgerListCount (oldlist);
|
||||
newlist = (RegWindow **) _malloc ((n+2) * sizeof (RegWindow *));
|
||||
|
||||
n = 0;
|
||||
if (oldlist) {
|
||||
reg = oldlist[0];
|
||||
while (reg) {
|
||||
newlist[n] = reg;
|
||||
n++;
|
||||
reg = oldlist[n];
|
||||
}
|
||||
_free (oldlist);
|
||||
}
|
||||
newlist[n] = addreg;
|
||||
newlist[n+1] = NULL;
|
||||
|
||||
return newlist;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------ */
|
||||
|
||||
void
|
||||
ledgerListRemove (RegWindow **list, RegWindow *delreg)
|
||||
{
|
||||
RegWindow *reg;
|
||||
int n, i;
|
||||
|
||||
if (!list) return;
|
||||
if (!delreg) return;
|
||||
|
||||
n = 0;
|
||||
i = 0;
|
||||
while (list[n]) {
|
||||
list[i] = list[n];
|
||||
if (delreg == list[n]) i--;
|
||||
i++;
|
||||
n++;
|
||||
}
|
||||
list[i] = NULL;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------ */
|
||||
|
||||
int
|
||||
ledgerIsMember (RegWindow *reg, Account * acc)
|
||||
{
|
||||
int n;
|
||||
|
||||
if (!acc) return 0;
|
||||
if (!reg) return 0;
|
||||
|
||||
if (acc == reg->leader) return 1;
|
||||
|
||||
n = 0;
|
||||
while (reg->blackacc[n]) {
|
||||
if (acc == reg->blackacc[n]) return 1;
|
||||
n++;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/********************************************************************\
|
||||
* regWindowSimple *
|
||||
* opens up a register window for Account account *
|
||||
|
||||
Reference in New Issue
Block a user