2001-06-18 Dave Peticolas <dave@krondo.com>

* src/MultiLedger.c: same as below

	* src/SplitLedger.c: same as below. fix indentation. please
	use the indentation style already present in the file.

	* src/engine/gnc-freqspec-xml-v2.c: same as below

	* src/engine/FreqSpec.[ch]: fix warnings. use standard C comments

	* doc/sgml/C/xacc-about.sgml: update credits


git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@4726 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Dave Peticolas 2001-06-18 10:13:53 +00:00
parent d5f96b9ba2
commit 34500dc4eb
9 changed files with 322 additions and 290 deletions

View File

@ -1,3 +1,16 @@
2001-06-18 Dave Peticolas <dave@krondo.com>
* src/MultiLedger.c: same as below
* src/SplitLedger.c: same as below. fix indentation. please
use the indentation style already present in the file.
* src/engine/gnc-freqspec-xml-v2.c: same as below
* src/engine/FreqSpec.[ch]: fix warnings. use standard C comments
* doc/sgml/C/xacc-about.sgml: update credits
2001-06-17 Joshua Sled <jsled@asynchronous.org>
* src/engine/gnc-account-xml-v2.c (dom_tree_to_account): Added.

View File

@ -173,6 +173,15 @@ linkend="scheme"> Scheme </link>, the <link linkend="gwrap"> g-wrap
</glossdef>
</glossentry>
<glossentry>
<glossterm><email>jsled@asynchronous.org</email>Joshua Sled</glossterm>
<glossdef>
<para>
works on scheduled transactions and budgeting.
</para>
</glossdef>
</glossentry>
</glosslist>
</para>

View File

@ -16,9 +16,11 @@ src/gnome/dialog-commodities.c
src/gnome/dialog-commodity.c
src/gnome/dialog-filebox.c
src/gnome/dialog-fincalc.c
src/gnome/dialog-nextrun.c
src/gnome/dialog-options.c
src/gnome/dialog-price-editor.c
src/gnome/dialog-progress.c
src/gnome/dialog-scheduledxaction.c
src/gnome/dialog-totd.c
src/gnome/dialog-transfer.c
src/gnome/dialog-utils.c
@ -37,6 +39,7 @@ src/gnome/glade/progress_strings.c
src/gnome/glade/qif_strings.c
src/gnome/glade/register_strings.c
src/gnome/glade/report_strings.c
src/gnome/glade/sched-xact_strings.c
src/gnome/glade/stocks_strings.c
src/gnome/glade/tax_strings.c
src/gnome/glade/transfer_strings.c

View File

@ -454,7 +454,7 @@ xaccLedgerDisplayTemplateGL( char *id )
ag = gnc_book_get_template_group( gncGetCurrentBook() );
acct = xaccGetAccountFromName( ag, id );
if ( acct == NULL ) {
// FIXME
/* FIXME */
printf( "can't get template account for id \"%s\"\n", id );
}
xaccQueryAddSingleAccountMatch( q, acct, QUERY_AND );
@ -464,7 +464,7 @@ xaccLedgerDisplayTemplateGL( char *id )
ld = xaccLedgerDisplayInternal( NULL, q, LD_GL,
GENERAL_LEDGER,
REG_STYLE_JOURNAL,
TRUE ); // template mode? TRUE.
TRUE ); /* template mode? TRUE. */
sr = xaccLedgerDisplayGetSR( ld );
sr->templateAcct = acct;
@ -759,8 +759,8 @@ xaccLedgerDisplayInternal (Account *lead_account, Query *q,
case LD_TEMPLATE:
class = REGISTER_TEMPLATE_CM_CLASS;
// FIXME: sanity checks?
// Check for kvp-frame data?
/* FIXME: sanity checks?
Check for kvp-frame data? */
break;
default:
@ -805,7 +805,7 @@ xaccLedgerDisplayInternal (Account *lead_account, Query *q,
view.bg_color_handler = xaccSRGetBGColorHandler;
view.cell_border_handler = xaccSRGetCellBorderHandler;
view.handler_user_data = NULL;
// The following handlers are changed in template mode.
/* The following handlers are changed in template mode. */
if ( templateMode ) {
view.entry_handler = xaccSRTemplateGetEntryHandler;
view.io_flag_handler = xaccSRTemplateGetIOFlagsHandler;
@ -886,8 +886,6 @@ xaccLedgerDisplayRefresh (xaccLedgerDisplay *ld)
if (!ld || ld->loading)
return;
//xaccQueryPrint( ld->query );
xaccLedgerDisplayRefreshInternal (ld, xaccQueryGetSplits (ld->query));
}
@ -962,8 +960,8 @@ xaccDestroyLedgerDisplay (Account *account)
xaccDestroyLedgerDisplayClass (account, REGISTER_SINGLE_CM_CLASS);
xaccDestroyLedgerDisplayClass (account, REGISTER_SUBACCOUNT_CM_CLASS);
xaccDestroyLedgerDisplayClass (account, REGISTER_GL_CM_CLASS);
// no TEMPLATE_CM_CLASS, because it doesn't correspond to any account
// FIXME: but there probably should be an analagous method
/* no TEMPLATE_CM_CLASS, because it doesn't correspond to any account
* FIXME: but there probably should be an analagous method */
}
void

View File

@ -84,7 +84,7 @@ xaccLedgerDisplay * xaccLedgerDisplaySimple (Account *account);
xaccLedgerDisplay * xaccLedgerDisplayAccGroup (Account *account);
xaccLedgerDisplay * xaccLedgerDisplayGL (void);
xaccLedgerDisplay * xaccLedgerDisplayGLTemplate( char *id );
xaccLedgerDisplay * xaccLedgerDisplayGLTemplate (char *id);
/**
* Displays a template ledger.
@ -93,7 +93,7 @@ xaccLedgerDisplay * xaccLedgerDisplayGLTemplate( char *id );
* Really, requires a GList of scheduled transactions and kvp-frame
* data.
**/
xaccLedgerDisplay * xaccLedgerDisplayTemplateGL( );
xaccLedgerDisplay * xaccLedgerDisplayTemplateGL (char *id);
/* display a general ledger for an arbitrary query */
xaccLedgerDisplay * xaccLedgerDisplayQuery (Query *query,

View File

@ -2684,7 +2684,7 @@ xaccSRRedrawReg (SplitRegister *reg)
* in sync with xaccSRSaveRegEntry and xaccSRSaveChangedCells. */
// jsled: This will need to be modified, as well.
/* jsled: This will need to be modified, as well. */
static gboolean
xaccSRSaveRegEntryToSCM (SplitRegister *reg, SCM trans_scm, SCM split_scm,
gboolean use_cut_semantics)
@ -2827,9 +2827,8 @@ xaccSRSaveRegEntryToSCM (SplitRegister *reg, SCM trans_scm, SCM split_scm,
/* ======================================================== */
/* Copy from the register object to the engine */
// jsled: okay... the fun.
// actually, not really the fun, but scan this to see if anything
// jumps out; the
/* jsled: okay... the fun. actually, not really the fun, but scan
this to see if anything jumps out */
gboolean
xaccSRSaveRegEntry (SplitRegister *reg, gboolean do_commit)
{
@ -2843,8 +2842,6 @@ xaccSRSaveRegEntry (SplitRegister *reg, gboolean do_commit)
const char *memo;
const char *desc;
//DEBUG( "=== In xaccSRSaveRegEntry\n" );
/* get the handle to the current split and transaction */
split = xaccSRGetCurrentSplit (reg);
trans = xaccSRGetCurrentTrans (reg);
@ -3212,138 +3209,135 @@ xaccSRSaveChangedTemplateCells( SplitRegister *reg,
Transaction *trans,
Split *split )
{
SRInfo *info = xaccSRGetInfo( reg );
Split *other_split = NULL;
guint32 changed;
kvp_frame *kvpf;
AccountGroup *template_ag;
Account *template_acc;
kvp_value *tag_val;
SRInfo *info = xaccSRGetInfo( reg );
Split *other_split = NULL;
guint32 changed;
kvp_frame *kvpf;
AccountGroup *template_ag;
Account *template_acc;
kvp_value *tag_val;
DEBUG( "=== In xaccSRSaveChangedTemplateCells\n" );
DEBUG( "=== In xaccSRSaveChangedTemplateCells\n" );
//template_acc = gncGetTemplateAccount();
//template_ag = gnc_book_get_template_group( gncGetCurrentBook() );
template_acc = reg->templateAcct;
template_acc = reg->templateAcct;
changed = xaccSplitRegisterGetChangeFlag( reg );
changed |= xaccSplitRegisterGetConditionalChangeFlag( reg );
if ( (MOD_DATE & changed) ||
(MOD_NUM & changed) ||
(MOD_RECN & changed) )
{
PERR( "unexpected changed field in a template register: %32x\n", changed );
}
changed = xaccSplitRegisterGetChangeFlag( reg );
changed |= xaccSplitRegisterGetConditionalChangeFlag( reg );
if ( (MOD_DATE & changed) ||
(MOD_NUM & changed) ||
(MOD_RECN & changed) )
{
PERR( "unexpected changed field in a template register: %32x\n",
changed );
}
// We'll be using the Split's KVP frame a lot...
kvpf = xaccSplitGetSlots( split );
/* We'll be using the Split's KVP frame a lot */
kvpf = xaccSplitGetSlots( split );
if ( MOD_XFRM & changed )
{
// FIXME: This should probably do the same checks as
// xaccSRSaveChangedCells regarding account types
// [between different currency accounts, mainly]
char *new_name;
Account *acct;
AccountGroup *acctGrp;
GUID *acctGUID;
if ( MOD_XFRM & changed )
{
/* FIXME: This should probably do the same checks as
xaccSRSaveChangedCells regarding account types
[between different currency accounts, mainly] */
char *new_name;
Account *acct;
AccountGroup *acctGrp;
const GUID *acctGUID;
// save the account GUID into the kvp_data.
new_name = reg->xfrmCell->cell.value;
acctGrp = gnc_book_get_group( gncGetCurrentBook() );
acct = xaccGetAccountFromFullName( acctGrp, new_name,
gnc_get_account_separator() );
if ( acct == NULL ) {
PERR( "unknown group \"%s\"\n", new_name );
return;
}
acctGUID = (const GUID *)xaccAccountGetGUID( acct );
kvp_frame_set_slot( kvpf, "sched-xaction/xfrm",
kvp_value_new_guid( acctGUID ) );
kvpf = xaccSplitGetSlots( split );
changed ^= MOD_XFRM;
// +DEBUG
if ( 0 ) {
GList *foo = xaccAccountGetSplitList( template_acc );
if ( foo ) {
printf( "Splits:\n" );
do {
printf ("\tsplit: \"%s\"\n", xaccSplitGetMemo( (Split*)foo->data ) );
} while ( (foo = foo->next) );
} else {
printf( "No Splits.\n" );
}
}
// -DEBUG
/* save the account GUID into the kvp_data. */
new_name = reg->xfrmCell->cell.value;
acctGrp = gnc_book_get_group( gncGetCurrentBook() );
acct = xaccGetAccountFromFullName( acctGrp, new_name,
gnc_get_account_separator() );
if ( acct == NULL ) {
PERR( "unknown group \"%s\"\n", new_name );
return;
}
acctGUID = xaccAccountGetGUID( acct );
kvp_frame_set_slot( kvpf, "sched-xaction/xfrm",
kvp_value_new_guid( acctGUID ) );
kvpf = xaccSplitGetSlots( split );
changed ^= MOD_XFRM;
// set the actual account to the fake account for
// these templates...
xaccAccountInsertSplit (template_acc, split);
/* DEBUG */
if ( 0 ) {
GList *foo = xaccAccountGetSplitList( template_acc );
if ( foo ) {
printf( "Splits:\n" );
do {
printf ("\tsplit: \"%s\"\n", xaccSplitGetMemo( (Split*)foo->data ) );
} while ( (foo = foo->next) );
} else {
printf( "No Splits.\n" );
}
}
// +DEBUG
if ( 0 ) {
GList *foo = xaccAccountGetSplitList( template_acc );
if ( foo ) {
printf( "Splits:\n" );
do {
printf ("\tsplit: \"%s\"\n", xaccSplitGetMemo( (Split*)foo->data ) );
} while ( (foo = foo->next) );
} else {
printf( "No Splits.\n" );
}
}
// -DEBUG
}
if ( MOD_MXFRM & changed )
{
// DTRT
DEBUG( "Template: Got MOD_MXFRM changed\n" );
changed ^= MOD_MXFRM;
}
if ( MOD_AMNT & changed )
{
char *amountStr = "x + y/42";
gnc_numeric new_amount;
gnc_numeric credit;
gnc_numeric debit;
//credit = xaccGetPriceCellValue(reg->creditCell);
//debit = xaccGetPriceCellValue(reg->debitCell);
//new_amount = gnc_numeric_sub_fixed (debit, credit);
/* set the actual account to the fake account for these templates */
xaccAccountInsertSplit (template_acc, split);
// FIXME: the credit/debit cells are limited to
// numeric values by definition [and code]. Blegh.
DEBUG( "kvp_frame before: %s\n", kvp_frame_to_string( kvpf ) );
//amountStr = gnc_numeric_to_string( new_amount );
kvp_frame_set_slot( kvpf, "sched-xaction/credit_formula",
kvp_value_new_string( reg->formCreditCell->cell.value ) );
kvp_frame_set_slot( kvpf, "sched-xaction/debit_formula",
kvp_value_new_string( reg->formDebitCell->cell.value ) );
DEBUG( "kvp_frame after: %s\n", kvp_frame_to_string( kvpf ) );
changed ^= MOD_AMNT;
// set the amount to an innocuous value
xaccSplitSetValue (split, gnc_numeric_create(0, 1) );
}
if ( MOD_SHRS & changed )
{
char *sharesStr = "(x + y)/42";
/* DEBUG */
if ( 0 ) {
GList *foo = xaccAccountGetSplitList( template_acc );
if ( foo ) {
printf( "Splits:\n" );
do {
printf ("\tsplit: \"%s\"\n", xaccSplitGetMemo( (Split*)foo->data ) );
} while ( (foo = foo->next) );
} else {
printf( "No Splits.\n" );
}
}
}
if ( MOD_MXFRM & changed )
{
/* DTRT */
DEBUG( "Template: Got MOD_MXFRM changed\n" );
changed ^= MOD_MXFRM;
}
if ( MOD_AMNT & changed )
{
char *amountStr = "x + y/42";
gnc_numeric new_amount;
gnc_numeric credit;
gnc_numeric debit;
// FIXME: shares cells are numeric by definition.
DEBUG( "kvp_frame before: %s\n", kvp_frame_to_string( kvpf ) );
/* credit = xaccGetPriceCellValue(reg->creditCell); */
/* debit = xaccGetPriceCellValue(reg->debitCell); */
/* new_amount = gnc_numeric_sub_fixed (debit, credit); */
/* FIXME: the credit/debit cells are limited to
numeric values by definition [and code]. Blegh. */
DEBUG( "kvp_frame before: %s\n", kvp_frame_to_string( kvpf ) );
/* amountStr = gnc_numeric_to_string( new_amount ); */
kvp_frame_set_slot( kvpf, "sched-xaction/credit_formula",
kvp_value_new_string( reg->formCreditCell->cell.value ) );
kvp_frame_set_slot( kvpf, "sched-xaction/debit_formula",
kvp_value_new_string( reg->formDebitCell->cell.value ) );
DEBUG( "kvp_frame after: %s\n", kvp_frame_to_string( kvpf ) );
changed ^= MOD_AMNT;
/* set the amount to an innocuous value */
xaccSplitSetValue (split, gnc_numeric_create(0, 1) );
}
if ( MOD_SHRS & changed )
{
char *sharesStr = "(x + y)/42";
/* FIXME: shares cells are numeric by definition. */
DEBUG( "kvp_frame before: %s\n", kvp_frame_to_string( kvpf ) );
//sharesStr = gnc_numeric_to_string( sharesStr );
kvp_frame_set_slot( kvpf, "sched-xaction/shares",
kvp_value_new_string( sharesStr ) );
DEBUG( "kvp_frame after: %s\n", kvp_frame_to_string( kvpf ) );
// set the shares to an innocuous value
xaccSplitSetSharePriceAndAmount (split,
gnc_numeric_create(0, 1),
gnc_numeric_create(0, 1) );
changed ^= MOD_SHRS;
}
/* sharesStr = gnc_numeric_to_string( sharesStr ); */
kvp_frame_set_slot( kvpf, "sched-xaction/shares",
kvp_value_new_string( sharesStr ) );
DEBUG( "kvp_frame after: %s\n", kvp_frame_to_string( kvpf ) );
/* set the shares to an innocuous value */
xaccSplitSetSharePriceAndAmount (split,
gnc_numeric_create(0, 1),
gnc_numeric_create(0, 1) );
changed ^= MOD_SHRS;
}
xaccSRActuallySaveChangedCells( reg, trans, split, changed );
xaccSRActuallySaveChangedCells( reg, trans, split, changed );
}
static void
@ -3426,9 +3420,9 @@ xaccSRActuallySaveChangedCells( SplitRegister *reg, Transaction *trans, Split *s
* only if there is one. XFRM is the straight split, MXFRM is the
* mirrored split. */
// jsled: this is where it starts to get fun. in the template
// register, we save the XFRM account in the kvp frame.
// also, when loading, we load from the kvp data.
/* jsled: this is where it starts to get fun. in the template
* register, we save the XFRM account in the kvp frame.
* also, when loading, we load from the kvp data. */
if (MOD_XFRM & changed)
{
Account *old_acc;
@ -3642,8 +3636,8 @@ xaccSRSaveChangedCells (SplitRegister *reg, Transaction *trans, Split *split)
changed = xaccSplitRegisterGetChangeFlag (reg);
changed |= xaccSplitRegisterGetConditionalChangeFlag (reg);
// all the code in xaccSRActuallySaveChangedCells was right here,
// before. -- jsled
/* all the code in xaccSRActuallySaveChangedCells was right here,
before. -- jsled */
xaccSRActuallySaveChangedCells( reg, trans, split, changed );
}
@ -3810,117 +3804,118 @@ xaccSRTemplateGetEntryHandler( VirtualLocation virt_loc,
gboolean *conditionally_changed,
gpointer user_data )
{
SplitRegister *reg = user_data;
const char *value = "";
CellType cell_type;
Transaction *trans;
Split *split;
kvp_frame *kvpf;
GUID *tmpguid;
SplitRegister *reg = user_data;
const char *value = "";
CellType cell_type;
Transaction *trans;
Split *split;
kvp_frame *kvpf;
GUID *tmpguid;
//DEBUG( "In xaccSRTemplateGetEntryHandler\n" );
cell_type = xaccSplitRegisterGetCellType (reg, virt_loc);
cell_type = xaccSplitRegisterGetCellType (reg, virt_loc);
split = sr_get_split (reg, virt_loc.vcell_loc);
if (split == NULL)
{
return xaccSRGetEntryHandler( virt_loc, translate,
conditionally_changed, user_data );
}
split = sr_get_split (reg, virt_loc.vcell_loc);
if (split == NULL)
{
return xaccSRGetEntryHandler( virt_loc, translate,
conditionally_changed, user_data );
}
trans = xaccSplitGetParent (split);
kvpf = xaccSplitGetSlots( split );
trans = xaccSplitGetParent (split);
kvpf = xaccSplitGetSlots( split );
switch (cell_type) {
case XFRM_CELL:
{
static char *name = NULL;
char account_separator;
switch (cell_type) {
case XFRM_CELL:
{
static char *name = NULL;
char account_separator;
if ( kvpf != NULL ) {
DEBUG( "kvp_frame: %s\n", kvp_frame_to_string( kvpf ) );
tmpguid = kvp_value_get_guid( kvp_frame_get_slot( kvpf,
"sched-xaction/xfrm" ) );
DEBUG( "Got the guid \"%s\"\n", guid_to_string( tmpguid ) );
account_separator = gnc_get_account_separator();
DEBUG( "foo\n" );
name = xaccAccountGetFullName (xaccAccountLookup( tmpguid ),
account_separator);
DEBUG( "bar\n" );
if ( kvpf != NULL ) {
DEBUG( "kvp_frame: %s\n", kvp_frame_to_string( kvpf ) );
tmpguid = kvp_value_get_guid
( kvp_frame_get_slot( kvpf, "sched-xaction/xfrm" ) );
DEBUG( "Got the guid \"%s\"\n", guid_to_string( tmpguid ) );
account_separator = gnc_get_account_separator();
DEBUG( "foo\n" );
name = xaccAccountGetFullName (xaccAccountLookup( tmpguid ),
account_separator);
DEBUG( "bar\n" );
DEBUG( "Got the full name: %s\n", name );
} else {
name = "";
}
return name;
DEBUG( "Got the full name: %s\n", name );
} else {
name = "";
}
break;
case CRED_CELL:
case DEBT_CELL:
{
char *amtStr;
gnc_numeric amount;
if ( kvpf != NULL ) {
amtStr = kvp_value_get_string( kvp_frame_get_slot( kvpf,
"sched-xaction/amnt" ) );
amount = gnc_numeric_create( 0, 1 );
string_to_gnc_numeric( amtStr, &amount );
return name;
}
break;
case CRED_CELL:
case DEBT_CELL:
{
char *amtStr;
gnc_numeric amount;
if ( kvpf != NULL ) {
amtStr = kvp_value_get_string
( kvp_frame_get_slot( kvpf, "sched-xaction/amnt" ) );
amount = gnc_numeric_create( 0, 1 );
string_to_gnc_numeric( amtStr, &amount );
if (gnc_numeric_zero_p (amount))
return "";
if (gnc_numeric_zero_p (amount))
return "";
if (gnc_numeric_negative_p (amount) && (cell_type == DEBT_CELL))
return "";
if (gnc_numeric_negative_p (amount) && (cell_type == DEBT_CELL))
return "";
if (gnc_numeric_positive_p (amount) && (cell_type == CRED_CELL))
return "";
if (gnc_numeric_positive_p (amount) && (cell_type == CRED_CELL))
return "";
amount = gnc_numeric_abs (amount);
amount = gnc_numeric_abs (amount);
//return xaccPrintAmount (amount,
//gnc_split_value_print_info (split, FALSE));
/* return xaccPrintAmount (amount,
gnc_split_value_print_info (split, FALSE)); */
// jsled_FIXME: This should be fixed
// to be correct for the "fake" account.
return xaccPrintAmount( amount,
gnc_default_print_info( FALSE ) );
} else {
return "";
}
/* jsled_FIXME: This should be fixed
to be correct for the "fake" account. */
return xaccPrintAmount( amount,
gnc_default_print_info( FALSE ) );
} else {
return "";
}
break;
case FCRED_CELL:
{
char *formulaStr;
if ( kvpf != NULL ) {
return kvp_value_get_string( kvp_frame_get_slot( kvpf,
"sched-xaction/credit_formula" ) );
}
}
break;
case FCRED_CELL:
{
char *formulaStr;
if ( kvpf != NULL ) {
return kvp_value_get_string
( kvp_frame_get_slot( kvpf, "sched-xaction/credit_formula" ) );
}
break;
case FDEBT_CELL:
{
char *formulaStr;
if ( kvpf != NULL ) {
return kvp_value_get_string( kvp_frame_get_slot( kvpf,
"sched-xaction/debit_formula" ) );
}
}
break;
case FDEBT_CELL:
{
char *formulaStr;
if ( kvpf != NULL ) {
return kvp_value_get_string
( kvp_frame_get_slot( kvpf, "sched-xaction/debit_formula" ) );
}
break;
case MXFRM_CELL:
{
return "FIXME:MXFRM";
}
break;
} // end switch
return xaccSRGetEntryHandler( virt_loc,
translate,
conditionally_changed,
user_data );
}
break;
case MXFRM_CELL:
{
return "FIXME:MXFRM";
}
break;
default:
break;
} /* end switch */
return xaccSRGetEntryHandler( virt_loc,
translate,
conditionally_changed,
user_data );
}
const char *
@ -4416,9 +4411,9 @@ CellIOFlags
xaccSRTemplateGetIOFlagsHandler( VirtualLocation virt_loc,
gpointer user_data )
{
//printf( "In xaccSRTemplateGetIOFlagsHandler\n" );
return xaccSRGetIOFlagsHandler( virt_loc,
user_data );
/* printf( "In xaccSRTemplateGetIOFlagsHandler\n" ); */
return xaccSRGetIOFlagsHandler( virt_loc,
user_data );
}
CellIOFlags
@ -4748,8 +4743,7 @@ gboolean
xaccSRTemplateConfirmHandler( VirtualLocation virt_loc,
gpointer user_data )
{
//DEBUG( "In xaccSRConfirmHandler\n" );
return xaccSRConfirmHandler( virt_loc, user_data );
return xaccSRConfirmHandler( virt_loc, user_data );
}
gboolean

View File

@ -166,11 +166,11 @@ struct monthDesc monthInfo[] = {
/** Local Prototypes *****/
FreqSpec*
xaccFreqSpecMalloc()
xaccFreqSpecMalloc(void)
{
FreqSpec *fs = g_new0(FreqSpec, 1);
xaccFreqSpecInit( fs );
// FIXME:event
/* FIXME:event */
gnc_engine_generate_event( &fs->guid, GNC_EVENT_CREATE );
return fs;
}
@ -654,11 +654,11 @@ xaccFreqSpecGetFreqStr( FreqSpec *fs, GString *str )
char *tmpStr;
int i;
// FIXME: fill in.
/* FIXME: fill in. */
switch( xaccFreqSpecGetUIType( fs ) ) {
case UIFREQ_ONCE:
tmpStr = g_new0( char, 25 );
// this is now a GDate.
/* this is now a GDate. */
g_date_strftime( tmpStr, 25,
"%a, %b %e, %Y",
&fs->s.once.date );
@ -701,11 +701,11 @@ xaccFreqSpecGetFreqStr( FreqSpec *fs, GString *str )
if ( tmpInt == -1 ) {
tmpInt = tmpFS->s.weekly.interval_weeks;
}
// put the first letter of the weekday name in
// the appropriate position.
/* put the first letter of the weekday name in
the appropriate position.
// FIXME: need the offset from the day-of-week
// of the Julian epoch
FIXME: need the offset from the day-of-week
of the Julian epoch */
/*
tmpStr[tmpFS->specData.dateAnchor[1]] =
weekDayNames[tmpFS->specData.dateAnchor[1]][0];
@ -775,7 +775,7 @@ xaccFreqSpecGetFreqStr( FreqSpec *fs, GString *str )
g_string_sprintf( str, "Semi-Yearly" );
if ( fs->s.monthly.interval_months != 6 ) {
if ( (fs->s.monthly.interval_months % 6) != 0 ) {
// FIXME:error
/* FIXME:error */
printf( "ERROR: FreqSpec Semi-Yearly month-interval "
"is not a multiple of 6 [%d]",
fs->s.monthly.interval_months );
@ -791,7 +791,7 @@ xaccFreqSpecGetFreqStr( FreqSpec *fs, GString *str )
g_string_sprintf( str, "Yearly" );
if ( fs->s.monthly.interval_months != 12 ) {
if ( (fs->s.monthly.interval_months % 12) != 0 ) {
// FIXME:error
/* FIXME:error */
printf( "ERROR: \"Yearly\" FreqSpec month-interval "
"is not a multiple of 12 [%d]",
fs->s.monthly.interval_months );
@ -800,7 +800,7 @@ xaccFreqSpecGetFreqStr( FreqSpec *fs, GString *str )
fs->s.monthly.interval_months/12 );
}
g_string_sprintfa( str, ": %s/%u",
// FIXME: need the year-of-month value.
/* FIXME: need the year-of-month value. */
monthInfo[/*fs->specData.dateAnchor[2]*/ 0].dshort,
fs->s.monthly.day_of_month );
break;

View File

@ -40,11 +40,11 @@ typedef enum gncp_FreqType {
ONCE,
DAILY,
WEEKLY, /* Hmmm... This is sort of DAILY[7]... */
// BI_WEEKLY: weekly[2]
// SEMI_MONTHLY: use composite
/* BI_WEEKLY: weekly[2] */
/* SEMI_MONTHLY: use composite */
MONTHLY,
MONTH_RELATIVE,
// YEARLY: monthly[12]
/* YEARLY: monthly[12] */
COMPOSITE,
} FreqType;
@ -85,7 +85,7 @@ typedef struct gncp_freq_spec FreqSpec;
* Allocates memory for a FreqSpec.
* Calls xaccFreqSpecInit() to initialise.
**/
FreqSpec* xaccFreqSpecMalloc();
FreqSpec* xaccFreqSpecMalloc(void);
/**
* Initializes a FreqSpec by setting it's to type INVALID.

View File

@ -121,18 +121,18 @@ struct uiFreqTypeTuple uiFreqTypeStrs[] = {
* Struct passed around as user-data when parsing the FreqSpec.
**/
typedef struct _freqSpecParseData {
FreqSpec *fs; // FreqSpec we're parsing into.
// fields used in the union of unions... :)
GDate once_day; // once
gint64 interval; // all [except once]
gint64 offset; // all [except once]
gint64 day; // monthly or month-relative
gint64 occurrence; // month-relative
GList *list; // composite
FreqSpec *fs; /* FreqSpec we're parsing into. */
/* fields used in the union of unions... :) */
GDate once_day; /* once */
gint64 interval; /* all [except once] */
gint64 offset; /* all [except once] */
gint64 day; /* monthly or month-relative */
gint64 occurrence; /* month-relative */
GList *list; /* composite */
} fsParseData;
void
_fspd_init( fsParseData *fspd )
static void
fspd_init( fsParseData *fspd )
{
fspd->fs = NULL;
fspd->list = NULL;
@ -274,15 +274,16 @@ static
gboolean
gnc_fs_handler( xmlNodePtr node, gpointer d )
{
// we ignore the wrapper... we were just called at the wrong
// level.
/* we ignore the wrapper... we were just called at the wrong
level. */
return TRUE;
}
static
gboolean
fs_uift_handler( xmlNodePtr node, fsParseData *fspd )
fs_uift_handler( xmlNodePtr node, gpointer data)
{
fsParseData *fspd = data;
int i;
char *nodeTxt;
char *tmp;
@ -303,8 +304,9 @@ fs_uift_handler( xmlNodePtr node, fsParseData *fspd )
static
gboolean
fs_date_handler( xmlNodePtr node, fsParseData *fspd )
fs_date_handler( xmlNodePtr node, gpointer data )
{
fsParseData *fspd = data;
GDate *foo;
foo = dom_tree_to_gdate( node );
if ( foo == NULL )
@ -316,10 +318,11 @@ fs_date_handler( xmlNodePtr node, fsParseData *fspd )
static
gboolean
fs_interval_handler( xmlNodePtr node, fsParseData *fspd )
fs_interval_handler( xmlNodePtr node, gpointer data )
{
fsParseData *fspd = data;
gboolean ret;
gint64 foo;
gint64 foo;
ret = dom_tree_to_integer( node, &foo );
if ( ! ret ) {
@ -331,10 +334,11 @@ fs_interval_handler( xmlNodePtr node, fsParseData *fspd )
static
gboolean
fs_offset_handler( xmlNodePtr node, fsParseData *fspd )
fs_offset_handler( xmlNodePtr node, gpointer data )
{
fsParseData *fspd = data;
gboolean ret;
gint64 foo;
gint64 foo;
ret = dom_tree_to_integer( node, &foo );
if ( ! ret )
@ -345,10 +349,11 @@ fs_offset_handler( xmlNodePtr node, fsParseData *fspd )
static
gboolean
fs_day_handler( xmlNodePtr node, fsParseData *fspd )
fs_day_handler( xmlNodePtr node, gpointer data )
{
fsParseData *fspd = data;
gboolean ret;
gint64 foo;
gint64 foo;
ret = dom_tree_to_integer( node, &foo );
if ( ! ret )
@ -359,10 +364,11 @@ fs_day_handler( xmlNodePtr node, fsParseData *fspd )
static
gboolean
fs_weekday_handler( xmlNodePtr node, fsParseData *fspd )
fs_weekday_handler( xmlNodePtr node, gpointer data)
{
fsParseData *fspd = data;
gboolean ret;
gint64 foo;
gint64 foo;
ret = dom_tree_to_integer( node, &foo );
if ( !ret )
return ret;
@ -372,10 +378,11 @@ fs_weekday_handler( xmlNodePtr node, fsParseData *fspd )
static
gboolean
fs_occurrence_handler( xmlNodePtr node, fsParseData *fspd )
fs_occurrence_handler( xmlNodePtr node, gpointer data )
{
fsParseData *fspd = data;
gboolean ret;
gint64 foo;
gint64 foo;
ret = dom_tree_to_integer( node, &foo );
if ( !ret )
return ret;
@ -385,8 +392,9 @@ fs_occurrence_handler( xmlNodePtr node, fsParseData *fspd )
static
gboolean
fs_subelement_handler( xmlNodePtr node, fsParseData *fspd )
fs_subelement_handler( xmlNodePtr node, gpointer data )
{
fsParseData *fspd = data;
FreqSpec *fs;
gboolean successful;
fs = dom_tree_to_freqSpec( node );
@ -409,8 +417,9 @@ struct dom_tree_handler fs_union_dom_handlers[] = {
static
gboolean
fs_once_handler( xmlNodePtr node, fsParseData *fspd )
fs_once_handler( xmlNodePtr node, gpointer data )
{
fsParseData *fspd = data;
gboolean successful;
successful = dom_tree_generic_parse( node,
@ -425,8 +434,9 @@ fs_once_handler( xmlNodePtr node, fsParseData *fspd )
static
gboolean
fs_daily_handler( xmlNodePtr node, fsParseData *fspd )
fs_daily_handler( xmlNodePtr node, gpointer data)
{
fsParseData *fspd = data;
gboolean successful;
successful = dom_tree_generic_parse( node,
fs_union_dom_handlers,
@ -441,8 +451,9 @@ fs_daily_handler( xmlNodePtr node, fsParseData *fspd )
static
gboolean
fs_weekly_handler( xmlNodePtr node, fsParseData *fspd )
fs_weekly_handler( xmlNodePtr node, gpointer data )
{
fsParseData *fspd = data;
gboolean successful;
successful = dom_tree_generic_parse( node,
fs_union_dom_handlers,
@ -457,8 +468,9 @@ fs_weekly_handler( xmlNodePtr node, fsParseData *fspd )
static
gboolean
fs_monthly_handler( xmlNodePtr node, fsParseData *fspd )
fs_monthly_handler( xmlNodePtr node, gpointer data)
{
fsParseData *fspd = data;
gboolean successful;
successful = dom_tree_generic_parse( node,
fs_union_dom_handlers,
@ -474,8 +486,9 @@ fs_monthly_handler( xmlNodePtr node, fsParseData *fspd )
static
gboolean
fs_month_relative_handler( xmlNodePtr node, fsParseData *fspd )
fs_month_relative_handler( xmlNodePtr node, gpointer data)
{
fsParseData *fspd = data;
gboolean successful;
successful = dom_tree_generic_parse( node,
fs_union_dom_handlers,
@ -492,8 +505,9 @@ fs_month_relative_handler( xmlNodePtr node, fsParseData *fspd )
static
gboolean
fs_guid_handler( xmlNodePtr node, fsParseData *fspd )
fs_guid_handler( xmlNodePtr node, gpointer data)
{
fsParseData *fspd = data;
GUID *guid;
guid = dom_tree_to_guid( node );
fspd->fs->guid = *guid;
@ -502,8 +516,9 @@ fs_guid_handler( xmlNodePtr node, fsParseData *fspd )
static
gboolean
fs_composite_handler( xmlNodePtr node, fsParseData *fspd )
fs_composite_handler( xmlNodePtr node, gpointer data)
{
fsParseData *fspd = data;
gboolean successful;
successful = dom_tree_generic_parse( node,
fs_union_dom_handlers,
@ -541,10 +556,10 @@ gnc_freqSpec_end_handler(gpointer data_for_children,
xmlNodePtr tree = (xmlNodePtr)data_for_children;
sixtp_gdv2 *globaldata = (sixtp_gdv2*)global_data;
_fspd_init( &fspd );
fspd_init( &fspd );
// this won't actually get invoked [FreqSpecs aren't top-level
// elements]; see dom_tree_to_freqSpec(), below.
/* this won't actually get invoked [FreqSpecs aren't top-level
elements]; see dom_tree_to_freqSpec(), below. */
if ( parent_data )
return TRUE;
@ -577,7 +592,7 @@ dom_tree_to_freqSpec(xmlNodePtr node)
gboolean successful;
fsParseData fspd;
_fspd_init( &fspd );
fspd_init( &fspd );
fspd.fs = xaccFreqSpecMalloc();
successful = dom_tree_generic_parse( node, fs_dom_handlers, &fspd );