From e36aa363d8cadca1d2029bc32cbeb8664de0c2b3 Mon Sep 17 00:00:00 2001 From: Linas Vepstas Date: Sun, 1 Feb 1998 06:26:54 +0000 Subject: [PATCH] remove gui elements from the account structure git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@476 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/AccWindow.c | 103 +++++++++++++++++++++--------------------------- src/Account.c | 2 - src/Destroy.c | 4 +- 3 files changed, 48 insertions(+), 61 deletions(-) diff --git a/src/AccWindow.c b/src/AccWindow.c index ed3471540c..0568b80a3b 100644 --- a/src/AccWindow.c +++ b/src/AccWindow.c @@ -36,7 +36,6 @@ #include #include - #include "config.h" #include "Account.h" @@ -52,7 +51,6 @@ typedef struct _accwindow { /* The account type buttons: */ Widget dialog; - Widget type_widgets[NUM_ACCOUNT_TYPES]; /* The text fields: */ @@ -78,12 +76,15 @@ typedef struct _editaccwindow { typedef struct _editnoteswindow { TextBox *tb; Account *account; /* The account to edit */ - } EditNotesWindow; + /** GLOBALS *********************************************************/ extern Widget toplevel; +static EditAccWindow ** editAccList = NULL; +static EditNotesWindow ** editNotesList = NULL; + /** PROTOTYPES ******************************************************/ static void closeAccWindow ( Widget mw, XtPointer cd, XtPointer cb ); static void closeEditAccWindow ( Widget mw, XtPointer cd, XtPointer cb ); @@ -378,15 +379,6 @@ closeAccWindow( Widget mw, XtPointer cd, XtPointer cb ) DEBUG("close AccWindow"); } -/********************************************************************\ -\********************************************************************/ - -void xaccDestroyEditAccWindow (EditAccWindow *editAccData) -{ - if (!editAccData) return; - XtDestroyWidget (editAccData->dialog); -} - /********************************************************************\ * editAccWindow * * opens up a window to edit an account * @@ -396,20 +388,16 @@ void xaccDestroyEditAccWindow (EditAccWindow *editAccData) * Return: none * \********************************************************************/ EditAccWindow * -editAccWindow( Widget parent, Account *account ) - { +editAccWindow( Widget parent, Account *acc ) +{ Widget dialog, form, widget, label, buttonform; EditAccWindow *editAccData; - if (0x0 == account) return 0x0; /* internal error, really */ + FETCH_FROM_LIST (EditAccWindow, editAccList, acc, account, editAccData); setBusyCursor( parent ); - editAccData = (EditAccWindow *)_malloc(sizeof(EditAccWindow)); - editAccData->account = account; - account->editAccData = editAccData; - /* force the size of the dialog so it is not resizable */ dialog = XtVaCreatePopupShell( "dialog", xmDialogShellWidgetClass, parent, @@ -456,7 +444,7 @@ editAccWindow( Widget parent, Account *account ) xmTextWidgetClass, form, XmNmaxLength, 40, XmNcolumns, 25, - XmNvalue, account->accountName, + XmNvalue, acc->accountName, XmNeditable, True, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, 10, @@ -479,7 +467,7 @@ editAccWindow( Widget parent, Account *account ) xmTextWidgetClass, form, XmNmaxLength, 40, XmNcolumns, 30, - XmNvalue, account->description, + XmNvalue, acc->description, XmNeditable, True, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, editAccData->name, @@ -566,7 +554,19 @@ editAccWindow( Widget parent, Account *account ) unsetBusyCursor( parent ); return editAccData; - } +} + +/********************************************************************\ +\********************************************************************/ + +void xaccDestroyEditAccWindow (Account * acc) +{ + EditAccWindow *editAccData; + + REMOVE_FROM_LIST (EditAccWindow,editAccList,acc,account,editAccData); + XtDestroyWidget (editAccData->dialog); + free (editAccData); +} /********************************************************************\ * closeEditAccWindow * @@ -583,9 +583,10 @@ static void closeEditAccWindow( Widget mw, XtPointer cd, XtPointer cb ) { EditAccWindow *editAccData = (EditAccWindow *)cd; + Account *acc = editAccData->account; - editAccData->account->editAccData = NULL; - _free(editAccData); + REMOVE_FROM_LIST (EditAccWindow,editAccList,acc,account,editAccData); + free(editAccData); DEBUG("close EditAccWindow"); } @@ -603,10 +604,8 @@ notesCB( Widget mw, XtPointer cd, XtPointer cb ) { AccWindow *accData = (AccWindow *)cd; Account *acc = accData -> newacc; - if (NULL == acc->editNotesData) { - editNotesWindow (acc); - } - /* hack alert -- else, should raise window to the top */ + editNotesWindow (acc); + /* hack alert -- should raise window to the top */ } /********************************************************************\ @@ -623,11 +622,8 @@ editNotesCB( Widget mw, XtPointer cd, XtPointer cb ) { EditAccWindow *editAccData = (EditAccWindow *)cd; Account *acc = editAccData -> account; - - if (NULL == acc->editNotesData) { - editNotesWindow (acc); - } - /* hack alert -- else, should raise window to the top */ + editNotesWindow (acc); + /* hack alert -- should raise window to the top */ } /********************************************************************\ @@ -910,32 +906,28 @@ selectAccountCB( Widget mw, XtPointer cd, XtPointer cb ) EditNotesWindow * editNotesWindow (Account *acc) { - EditNotesWindow *editNotesData; + EditNotesWindow *enw; - if (!acc) return 0x0; - - editNotesData = (EditNotesWindow *) malloc (sizeof (EditNotesWindow)); - editNotesData->account = acc; - acc -> editNotesData = editNotesData; - - editNotesData->tb = textBox( toplevel, NOTES_STR, - &(acc->notes), - closeEditNotesWindow, editNotesData); - - return editNotesData; + FETCH_FROM_LIST (EditNotesWindow, editNotesList, acc, account, enw); + + enw->tb = textBox( toplevel, NOTES_STR, + &(acc->notes), + closeEditNotesWindow, enw); + return enw; } /********************************************************************\ \********************************************************************/ void -xaccDestroyEditNotesWindow (EditNotesWindow *editNotesData) +xaccDestroyEditNotesWindow (Account *acc) { - if (!editNotesData) return; + EditNotesWindow *edwin; - editNotesData->account->editNotesData = NULL; - xaccDestroyTextBox (editNotesData->tb); - _free(editNotesData); + REMOVE_FROM_LIST (EditNotesWindow,editNotesList,acc,account,edwin) + + xaccDestroyTextBox (edwin->tb); + free (edwin); } /********************************************************************\ @@ -943,16 +935,13 @@ xaccDestroyEditNotesWindow (EditNotesWindow *editNotesData) static void closeEditNotesWindow( Widget mw, XtPointer cd, XtPointer cb ) - { - EditNotesWindow *editNotesData = (EditNotesWindow *) cd; +{ + EditNotesWindow *enw = (EditNotesWindow *) cd; - editNotesData->account->editNotesData = NULL; + xaccDestroyEditNotesWindow (enw->account); - xaccDestroyTextBox (editNotesData->tb); - - _free(editNotesData); DEBUG("close EditNotesWindow"); - } +} /********************** END OF FILE *********************************\ \********************************************************************/ diff --git a/src/Account.c b/src/Account.c index fd04f65f56..c95f6c552e 100644 --- a/src/Account.c +++ b/src/Account.c @@ -77,8 +77,6 @@ mallocAccount( void ) acc->ledgerList = NULL; acc->recnData = NULL; acc->adjBData = NULL; - acc->editAccData = NULL; - acc->editNotesData = NULL; return acc; } diff --git a/src/Destroy.c b/src/Destroy.c index 4d97443136..e7a87b9570 100644 --- a/src/Destroy.c +++ b/src/Destroy.c @@ -49,8 +49,8 @@ xaccAccountWindowDestroy (Account *acc) xaccDestroyRegWindow (acc->regLedger); xaccDestroyRecnWindow (acc->recnData); xaccDestroyAdjBWindow (acc->adjBData); - xaccDestroyEditAccWindow (acc->editAccData); - xaccDestroyEditNotesWindow (acc->editNotesData); + xaccDestroyEditAccWindow (acc); + xaccDestroyEditNotesWindow (acc); }