mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
2002-11-24 Joshua Sled <jsled@asynchronous.org>
* src/gnome/druid-loan.c (ld_rev_prep): Initial support for a payment schedule review page, addressing Bug#98966. * src/gnome/dialog-scheduledxaction.c (putSchedXactionInDialog): Don't double-free dates; fixes Bug#99452. * src/gnome/gnc-split-reg.c (gnc_split_reg_jump_to_split) (gnc_split_reg_jump_to_split_amount, gnc_split_reg_record) (gsr_emit_include_date_signal): * src/gnome/window-register.c (gnc_register_include_date_adapter): Add back in support for including a date in the range limited/viewed by the window-register. * src/gnome/gnc-split-reg.c (gnc_split_reg_get_read_only) * src/gnome/window-register.c (regWindowLedger): Change manner of setting window-title in read-only-register case so the gnc-split-reg isn't changing the window-titles of windows it has no authority over. Fixed Bug#99396. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@7552 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
e74910a232
commit
b05f24cce9
21
ChangeLog
21
ChangeLog
@ -1,3 +1,24 @@
|
||||
2002-11-24 Joshua Sled <jsled@asynchronous.org>
|
||||
|
||||
* src/gnome/druid-loan.c (ld_rev_prep): Initial support for a
|
||||
payment schedule review page, addressing Bug#98966.
|
||||
|
||||
* src/gnome/dialog-scheduledxaction.c (putSchedXactionInDialog):
|
||||
Don't double-free dates; fixes Bug#99452.
|
||||
|
||||
* src/gnome/gnc-split-reg.c (gnc_split_reg_jump_to_split)
|
||||
(gnc_split_reg_jump_to_split_amount, gnc_split_reg_record)
|
||||
(gsr_emit_include_date_signal):
|
||||
* src/gnome/window-register.c (gnc_register_include_date_adapter):
|
||||
Add back in support for including a date in the range
|
||||
limited/viewed by the window-register.
|
||||
|
||||
* src/gnome/gnc-split-reg.c (gnc_split_reg_get_read_only)
|
||||
* src/gnome/window-register.c (regWindowLedger): Change manner of
|
||||
setting window-title in read-only-register case so the
|
||||
gnc-split-reg isn't changing the window-titles of windows it has
|
||||
no authority over. Fixed Bug#99396.
|
||||
|
||||
2002-11-25 Benoit Grégoire <bock@step.polymtl.ca>
|
||||
* src/import-export/*.c,h: Split gnc-generic-import.h in one
|
||||
header per file.
|
||||
|
@ -707,7 +707,6 @@ xaccFreqSpecGetFreqStr( FreqSpec *fs, GString *str )
|
||||
char *tmpStr;
|
||||
int i;
|
||||
|
||||
/* FIXME: fill in. */
|
||||
switch( xaccFreqSpecGetUIType( fs ) ) {
|
||||
case UIFREQ_ONCE:
|
||||
tmpStr = g_new0( char, GDATE_STRING_BUF_SIZE );
|
||||
|
@ -751,8 +751,8 @@ gnc_session_destroy (GNCSession *session)
|
||||
gnc_book_destroy (book);
|
||||
}
|
||||
|
||||
session->books = NULL;
|
||||
current_session=NULL;
|
||||
session->books = NULL;
|
||||
current_session = NULL;
|
||||
|
||||
xaccLogEnable();
|
||||
|
||||
|
@ -1816,7 +1816,6 @@ putSchedXactionInDialog( gpointer data, gpointer user_data )
|
||||
GDate **instArray;
|
||||
GList *instList;
|
||||
guint gdcMarkTag, oldMarkTag;
|
||||
gboolean createdNextInstDate = FALSE;
|
||||
|
||||
sx = (SchedXaction*)data;
|
||||
sxd = (SchedXactionDialog*)user_data;
|
||||
@ -1836,7 +1835,6 @@ putSchedXactionInDialog( gpointer data, gpointer user_data )
|
||||
generate_instances( sx, calEndDate, &instList );
|
||||
g_date_free( calEndDate );
|
||||
|
||||
/* cleanup the date memory, here... */
|
||||
if ( instList == NULL ) {
|
||||
/* This was a bug [#90326]; while we do want to generate
|
||||
* instances within the visible calendar range, we also want
|
||||
@ -1844,7 +1842,6 @@ putSchedXactionInDialog( gpointer data, gpointer user_data )
|
||||
* calendar range. Thus, if the generate_instances above
|
||||
* returns nothing, double-check with the SX. */
|
||||
nextInstDate = g_date_new();
|
||||
createdNextInstDate = TRUE;
|
||||
*nextInstDate = xaccSchedXactionGetNextInstance( sx, NULL );
|
||||
if ( g_date_valid( nextInstDate ) ) {
|
||||
instList = g_list_append( instList,
|
||||
@ -1856,7 +1853,7 @@ putSchedXactionInDialog( gpointer data, gpointer user_data )
|
||||
g_string_sprintf( nextDate, "not scheduled" );
|
||||
} else {
|
||||
char tmpBuf[ MAX_DATE_LENGTH+1 ];
|
||||
char dowBuf[ 25 ]; /* <- fixme: appropriate length? */
|
||||
char dowBuf[ 25 ]; /* <- FIXME: appropriate length? */
|
||||
nextInstDate = (GDate*)instList->data;
|
||||
printGDate( tmpBuf, nextInstDate );
|
||||
g_date_strftime( dowBuf, 25, "%A", nextInstDate );
|
||||
@ -1886,9 +1883,7 @@ putSchedXactionInDialog( gpointer data, gpointer user_data )
|
||||
g_free( instArray );
|
||||
g_list_foreach( instList, _gnc_sxd_free_dates, NULL );
|
||||
g_list_free( instList );
|
||||
if ( createdNextInstDate ) {
|
||||
g_free( nextInstDate );
|
||||
}
|
||||
nextInstDate = NULL;
|
||||
}
|
||||
|
||||
text[0] = xaccSchedXactionGetName( sx );
|
||||
|
@ -83,7 +83,10 @@
|
||||
# define PAY_TXN_PART_RB "pay_txn_part_rb"
|
||||
# define PAY_UNIQ_FREQ_RB "pay_uniq_freq_rb"
|
||||
# define PAY_FREQ_CONTAINER "pay_freq_align"
|
||||
|
||||
#define PG_REVIEW "review_pg"
|
||||
# define REV_SCROLLWIN "rev_scrollwin"
|
||||
# define REV_RANGE_OPT "rev_range_opt"
|
||||
# define REV_RANGE_TABLE "rev_date_range_table"
|
||||
#define OPT_VBOX_SPACING 2
|
||||
|
||||
static short module = MOD_SX;
|
||||
@ -209,46 +212,54 @@ typedef struct LoanDruidData_ {
|
||||
|
||||
/* widgets */
|
||||
/* prm = params */
|
||||
GtkTable *prmTable;
|
||||
GtkTable *prmTable;
|
||||
GNCAccountSel *prmAccountGAS;
|
||||
GNCAmountEdit *prmOrigPrincGAE;
|
||||
GtkSpinButton *prmIrateSpin;
|
||||
GtkOptionMenu *prmType;
|
||||
GtkFrame *prmVarFrame;
|
||||
GNCFrequency *prmVarGncFreq;
|
||||
GNCDateEdit *prmStartDateGDE;
|
||||
GtkFrame *prmVarFrame;
|
||||
GNCFrequency *prmVarGncFreq;
|
||||
GNCDateEdit *prmStartDateGDE;
|
||||
GtkSpinButton *prmLengthSpin;
|
||||
GtkOptionMenu *prmLengthType;
|
||||
GtkSpinButton *prmRemainSpin;
|
||||
|
||||
/* opt = options */
|
||||
GtkVBox *optVBox;
|
||||
GtkVBox *optVBox;
|
||||
GtkCheckButton *optEscrowCb;
|
||||
GtkHBox *optEscrowHBox;
|
||||
GNCAccountSel *optEscrowGAS;
|
||||
GtkHBox *optEscrowHBox;
|
||||
GNCAccountSel *optEscrowGAS;
|
||||
|
||||
/* rep = repayment */
|
||||
GtkEntry *repTxnName;
|
||||
GtkTable *repTable;
|
||||
GtkEntry *repAmtEntry;
|
||||
GtkEntry *repTxnName;
|
||||
GtkTable *repTable;
|
||||
GtkEntry *repAmtEntry;
|
||||
GNCAccountSel *repAssetsFromGAS;
|
||||
GNCAccountSel *repPrincToGAS;
|
||||
GNCAccountSel *repIntToGAS;
|
||||
GtkOptionMenu *repRemainderOpt;
|
||||
GtkFrame *repFreqFrame;
|
||||
GNCFrequency *repGncFreq;
|
||||
GtkFrame *repFreqFrame;
|
||||
GNCFrequency *repGncFreq;
|
||||
|
||||
/* pay = payment[s] */
|
||||
GtkEntry *payTxnName;
|
||||
GtkEntry *payTxnName;
|
||||
GnomeNumberEntry *payAmtGNE;
|
||||
GtkEntry *payAmtEntry;
|
||||
GNCAccountSel *payAcctFromGAS;
|
||||
GNCAccountSel *payAcctToGAS;
|
||||
GtkTable *payTable;
|
||||
GtkRadioButton *payTxnFreqPartRb;
|
||||
GtkRadioButton *payTxnFreqUniqRb;
|
||||
GtkAlignment *payFreqAlign;
|
||||
GNCFrequency *payGncFreq;
|
||||
GtkEntry *payAmtEntry;
|
||||
GNCAccountSel *payAcctFromGAS;
|
||||
GNCAccountSel *payAcctToGAS;
|
||||
GtkTable *payTable;
|
||||
GtkRadioButton *payTxnFreqPartRb;
|
||||
GtkRadioButton *payTxnFreqUniqRb;
|
||||
GtkAlignment *payFreqAlign;
|
||||
GNCFrequency *payGncFreq;
|
||||
|
||||
/* rev = review */
|
||||
GtkOptionMenu *revRangeOpt;
|
||||
GtkTable *revTable;
|
||||
GNCDateEdit *revStartDate;
|
||||
GNCDateEdit *revEndDate;
|
||||
GtkScrolledWindow *revScrollWin;
|
||||
GtkCList *revCL;
|
||||
} LoanDruidData;
|
||||
|
||||
static void gnc_loan_druid_data_init( LoanDruidData *ldd );
|
||||
@ -268,6 +279,9 @@ static void ld_escrow_toggled( GtkToggleButton *tb, gpointer ud );
|
||||
|
||||
static void ld_pay_freq_toggle( GtkToggleButton *tb, gpointer ud );
|
||||
|
||||
static void ldd_rev_range_opt_changed( GtkButton *b, gpointer ud );
|
||||
static void ldd_rev_range_changed( GNCDateEdit *gde, gpointer ud );
|
||||
|
||||
static gboolean ld_info_save( GnomeDruidPage *gdp, gpointer arg1, gpointer ud );
|
||||
static void ld_info_prep( GnomeDruidPage *gdp, gpointer arg1, gpointer ud );
|
||||
static gboolean ld_opts_tran( GnomeDruidPage *gdp, gpointer arg1, gpointer ud );
|
||||
@ -275,11 +289,13 @@ static void ld_opts_prep( GnomeDruidPage *gdp, gpointer arg1, gpointer ud );
|
||||
static gboolean ld_rep_next ( GnomeDruidPage *gdp, gpointer arg1, gpointer ud );
|
||||
static void ld_rep_prep ( GnomeDruidPage *gdp, gpointer arg1, gpointer ud );
|
||||
static gboolean ld_rep_back ( GnomeDruidPage *gdp, gpointer arg1, gpointer ud );
|
||||
static void ld_rep_fin ( GnomeDruidPage *gdp, gpointer arg1, gpointer ud );
|
||||
static gboolean ld_pay_next ( GnomeDruidPage *gdp, gpointer arg1, gpointer ud );
|
||||
static void ld_pay_prep ( GnomeDruidPage *gdp, gpointer arg1, gpointer ud );
|
||||
static gboolean ld_pay_back ( GnomeDruidPage *gdp, gpointer arg1, gpointer ud );
|
||||
static void ld_pay_fin ( GnomeDruidPage *gdp, gpointer arg1, gpointer ud );
|
||||
static gboolean ld_rev_next ( GnomeDruidPage *gdp, gpointer arg1, gpointer ud );
|
||||
static void ld_rev_prep ( GnomeDruidPage *gdp, gpointer arg1, gpointer ud );
|
||||
static gboolean ld_rev_back ( GnomeDruidPage *gdp, gpointer arg1, gpointer ud );
|
||||
static void ld_rev_fin ( GnomeDruidPage *gdp, gpointer arg1, gpointer ud );
|
||||
|
||||
static void ld_create_sxes( LoanDruidData *ldd );
|
||||
|
||||
@ -353,21 +369,39 @@ gnc_ui_sx_loan_druid_create(void)
|
||||
}
|
||||
}
|
||||
|
||||
/* The GNCDateEdit */
|
||||
/* The GNCDateEdit[s] */
|
||||
{
|
||||
ldd->prmStartDateGDE =
|
||||
GNC_DATE_EDIT(
|
||||
gnc_date_edit_new( time(NULL),
|
||||
FALSE, FALSE ) );
|
||||
gtk_table_attach( ldd->prmTable,
|
||||
GTK_WIDGET( ldd->prmStartDateGDE ),
|
||||
1, 2, 4, 5,
|
||||
(GTK_EXPAND | GTK_FILL),
|
||||
GTK_FILL, 0, 0 );
|
||||
/* "gde" == GNCDateEdit */
|
||||
struct gde_in_tables_data {
|
||||
GNCDateEdit **loc;
|
||||
GtkTable *table;
|
||||
int left, right, top, bottom;
|
||||
} gde_data[] = {
|
||||
/* These ints are the GtkTable boundries */
|
||||
{ &ldd->prmStartDateGDE, ldd->prmTable, 1, 2, 4, 5 },
|
||||
{ &ldd->revStartDate, ldd->revTable, 1, 2, 0, 1 },
|
||||
{ &ldd->revEndDate, ldd->revTable, 1, 2, 1, 2 },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
for ( i=0; gde_data[i].loc != NULL; i++ ) {
|
||||
*gde_data[i].loc =
|
||||
GNC_DATE_EDIT(
|
||||
gnc_date_edit_new( time(NULL),
|
||||
FALSE, FALSE ) );
|
||||
gtk_table_attach( gde_data[i].table,
|
||||
GTK_WIDGET( *gde_data[i].loc ),
|
||||
gde_data[i].left,
|
||||
gde_data[i].right,
|
||||
gde_data[i].top,
|
||||
gde_data[i].bottom,
|
||||
(GTK_EXPAND | GTK_FILL),
|
||||
GTK_FILL, 0, 0 );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
gtk_widget_set_sensitive( GTK_WIDGET(ldd->prmVarFrame), FALSE );
|
||||
|
||||
{
|
||||
GtkAlignment *a;
|
||||
GNCOptionInfo typeOptInfo[] = {
|
||||
@ -420,6 +454,7 @@ gnc_ui_sx_loan_druid_create(void)
|
||||
gnc_option_menu_init( GTK_WIDGET(ldd->prmType) );
|
||||
gnc_option_menu_init( GTK_WIDGET(ldd->prmLengthType) );
|
||||
gnc_option_menu_init( GTK_WIDGET(ldd->repRemainderOpt) );
|
||||
gnc_option_menu_init( GTK_WIDGET(ldd->revRangeOpt) );
|
||||
|
||||
gtk_signal_connect( GTK_OBJECT(ldd->optEscrowCb), "toggled",
|
||||
GTK_SIGNAL_FUNC(ld_escrow_toggle), ldd );
|
||||
@ -519,6 +554,24 @@ gnc_ui_sx_loan_druid_create(void)
|
||||
GTK_WIDGET(ldd->payGncFreq) );
|
||||
}
|
||||
|
||||
/* Review page widget setup. */
|
||||
{
|
||||
gtk_signal_connect( GTK_OBJECT( gtk_option_menu_get_menu(
|
||||
ldd->revRangeOpt)),
|
||||
"selection-done",
|
||||
GTK_SIGNAL_FUNC( ldd_rev_range_opt_changed ),
|
||||
ldd );
|
||||
gtk_signal_connect( GTK_OBJECT(ldd->revStartDate),
|
||||
"date-changed",
|
||||
GTK_SIGNAL_FUNC( ldd_rev_range_changed ),
|
||||
ldd );
|
||||
gtk_signal_connect( GTK_OBJECT(ldd->revEndDate),
|
||||
"date-changed",
|
||||
GTK_SIGNAL_FUNC( ldd_rev_range_changed ),
|
||||
ldd );
|
||||
|
||||
}
|
||||
|
||||
{
|
||||
static struct {
|
||||
char *pageName;
|
||||
@ -530,8 +583,9 @@ gnc_ui_sx_loan_druid_create(void)
|
||||
} DRUID_HANDLERS[] = {
|
||||
{ PG_INFO, ld_info_save, ld_info_prep, ld_info_save, NULL },
|
||||
{ PG_OPTS, ld_opts_tran, ld_opts_prep, ld_opts_tran, NULL },
|
||||
{ PG_REPAYMENT, ld_rep_next, ld_rep_prep, ld_rep_back, ld_rep_fin },
|
||||
{ PG_PAYMENT, ld_pay_next, ld_pay_prep, ld_pay_back, ld_pay_fin },
|
||||
{ PG_REPAYMENT, ld_rep_next, ld_rep_prep, ld_rep_back, NULL },
|
||||
{ PG_PAYMENT, ld_pay_next, ld_pay_prep, ld_pay_back, NULL },
|
||||
{ PG_REVIEW, ld_rev_next, ld_rev_prep, ld_rev_back, ld_rev_fin },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
@ -646,7 +700,6 @@ gnc_loan_druid_get_widgets( LoanDruidData *ldd )
|
||||
g_assert( ldd->gxml != NULL );
|
||||
|
||||
/* Get all widgets */
|
||||
|
||||
#define GET_CASTED_WIDGET( cast, name ) \
|
||||
(cast( glade_xml_get_widget( ldd->gxml, name ) ))
|
||||
|
||||
@ -657,8 +710,7 @@ gnc_loan_druid_get_widgets( LoanDruidData *ldd )
|
||||
GET_CASTED_WIDGET( GTK_SPIN_BUTTON, IRATE_SPIN );
|
||||
ldd->prmVarFrame =
|
||||
GET_CASTED_WIDGET( GTK_FRAME, VAR_CONTAINER );
|
||||
/*ldd->prmStartDateGDE =
|
||||
GET_CASTED_WIDGET( GNOME_DATE_EDIT, START_DATE );*/
|
||||
/* ldd->prmStartDateGDE */
|
||||
ldd->prmLengthSpin =
|
||||
GET_CASTED_WIDGET( GTK_SPIN_BUTTON, LENGTH_SPIN );
|
||||
ldd->prmLengthType =
|
||||
@ -701,6 +753,17 @@ gnc_loan_druid_get_widgets( LoanDruidData *ldd )
|
||||
GET_CASTED_WIDGET( GTK_RADIO_BUTTON, PAY_UNIQ_FREQ_RB );
|
||||
ldd->payFreqAlign =
|
||||
GET_CASTED_WIDGET( GTK_ALIGNMENT, PAY_FREQ_CONTAINER );
|
||||
|
||||
/* rev = review */
|
||||
ldd->revRangeOpt =
|
||||
GET_CASTED_WIDGET( GTK_OPTION_MENU, REV_RANGE_OPT );
|
||||
ldd->revTable =
|
||||
GET_CASTED_WIDGET( GTK_TABLE, REV_RANGE_TABLE );
|
||||
/* GNCDateEdit *revStartDate */
|
||||
/* GNCDateEdit *revEndDate */
|
||||
ldd->revScrollWin =
|
||||
GET_CASTED_WIDGET( GTK_SCROLLED_WINDOW, REV_SCROLLWIN );
|
||||
|
||||
}
|
||||
|
||||
static
|
||||
@ -1051,11 +1114,28 @@ ld_rep_next( GnomeDruidPage *gdp, gpointer arg1, gpointer ud )
|
||||
ldd = (LoanDruidData*)ud;
|
||||
|
||||
if ( ld_rep_save( ldd ) != FALSE ) {
|
||||
DEBUG( "Couldn't save, stopping here." );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
ldd->currentIdx++;
|
||||
return FALSE;
|
||||
{
|
||||
int i;
|
||||
gboolean haveMoreRepayOpts = FALSE;
|
||||
for ( i = ldd->currentIdx + 1;
|
||||
(i < ldd->ld.repayOptCount) && !haveMoreRepayOpts;
|
||||
i++ ) {
|
||||
haveMoreRepayOpts |= ldd->ld.repayOpts[i]->enabled;
|
||||
}
|
||||
if ( haveMoreRepayOpts ) {
|
||||
ldd->currentIdx++;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
gnome_druid_set_page( ldd->druid,
|
||||
GNOME_DRUID_PAGE(
|
||||
glade_xml_get_widget( ldd->gxml,
|
||||
PG_REVIEW ) ) );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static
|
||||
@ -1073,22 +1153,22 @@ void
|
||||
ld_rep_prep( GnomeDruidPage *gdp, gpointer arg1, gpointer ud )
|
||||
{
|
||||
LoanDruidData *ldd;
|
||||
GString *str;
|
||||
|
||||
ldd = (LoanDruidData*)ud;
|
||||
|
||||
if ( !ldd->ld.repAmount ) {
|
||||
GString *str;
|
||||
str = g_string_sized_new( 64 );
|
||||
|
||||
g_string_sprintfa( str, "pmt( %.5f / 12 : %d : %0.2f : 0 : 0 )",
|
||||
(ldd->ld.interestRate / 100),
|
||||
ldd->ld.numPer,
|
||||
gnc_numeric_to_double(ldd->ld.principal) );
|
||||
|
||||
ldd->ld.repAmount = str->str;
|
||||
g_string_free( str, FALSE );
|
||||
if ( ldd->ld.repAmount ) {
|
||||
g_free( ldd->ld.repAmount );
|
||||
}
|
||||
|
||||
str = g_string_sized_new( 64 );
|
||||
g_string_sprintfa( str, "pmt( %.5f / 12 : %d : %0.2f : 0 : 0 )",
|
||||
(ldd->ld.interestRate / 100),
|
||||
ldd->ld.numPer,
|
||||
gnc_numeric_to_double(ldd->ld.principal) );
|
||||
ldd->ld.repAmount = str->str;
|
||||
g_string_free( str, FALSE );
|
||||
|
||||
if ( ldd->ld.repMemo )
|
||||
gtk_entry_set_text( ldd->repTxnName, ldd->ld.repMemo );
|
||||
|
||||
@ -1107,6 +1187,7 @@ ld_rep_prep( GnomeDruidPage *gdp, gpointer arg1, gpointer ud )
|
||||
ldd->ld.repFreq,
|
||||
ldd->ld.repStartDate );
|
||||
|
||||
#if 0 /* no longer needed */
|
||||
{
|
||||
int i;
|
||||
gboolean haveRepayOpts = FALSE;
|
||||
@ -1116,15 +1197,7 @@ ld_rep_prep( GnomeDruidPage *gdp, gpointer arg1, gpointer ud )
|
||||
}
|
||||
gnome_druid_set_show_finish( ldd->druid, !haveRepayOpts );
|
||||
}
|
||||
}
|
||||
|
||||
static
|
||||
void
|
||||
ld_rep_fin( GnomeDruidPage *gdp, gpointer arg1, gpointer ud )
|
||||
{
|
||||
LoanDruidData *ldd = (LoanDruidData*)ud;
|
||||
ld_rep_save( ldd );
|
||||
ld_create_sxes( ldd );
|
||||
#endif /* 0 -- no longer needed */
|
||||
}
|
||||
|
||||
static
|
||||
@ -1167,6 +1240,8 @@ ld_pay_prep( GnomeDruidPage *gdp, gpointer arg1, gpointer ud )
|
||||
rod->fs, rod->startDate );
|
||||
}
|
||||
|
||||
#if 0 /* no longer needed to set this up; all transitions are to the review
|
||||
* page. */
|
||||
{
|
||||
gboolean haveMoreRepayOpts = FALSE;
|
||||
int i = 0;
|
||||
@ -1177,6 +1252,8 @@ ld_pay_prep( GnomeDruidPage *gdp, gpointer arg1, gpointer ud )
|
||||
}
|
||||
gnome_druid_set_show_finish( ldd->druid, !haveMoreRepayOpts );
|
||||
}
|
||||
#endif /* 0 -- no longer needed to set this up; all transitions are to the
|
||||
* review page. */
|
||||
|
||||
g_string_free( str, TRUE );
|
||||
}
|
||||
@ -1268,16 +1345,24 @@ ld_pay_next( GnomeDruidPage *gdp, gpointer arg1, gpointer ud )
|
||||
}
|
||||
|
||||
/* Go through opts list and select next enabled option. */
|
||||
for ( i=(++ldd->currentIdx);
|
||||
for ( i = ldd->currentIdx + 1;
|
||||
(i < ldd->ld.repayOptCount)
|
||||
&& !ldd->ld.repayOpts[i]->enabled; i++ )
|
||||
;
|
||||
if ( i != ldd->ld.repayOptCount ) {
|
||||
|
||||
if ( i < ldd->ld.repayOptCount ) {
|
||||
ldd->currentIdx = i;
|
||||
ld_pay_prep( gdp, arg1, ud );
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
|
||||
/* If there's no repayment options enabled, then go immediately to
|
||||
* the review page. */
|
||||
gnome_druid_set_page( ldd->druid,
|
||||
GNOME_DRUID_PAGE(
|
||||
glade_xml_get_widget( ldd->gxml,
|
||||
PG_REVIEW ) ) );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static
|
||||
@ -1294,11 +1379,13 @@ ld_pay_back( GnomeDruidPage *gdp, gpointer arg1, gpointer ud )
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* go back through opts list and select next enabled options. */
|
||||
for ( i=(--ldd->currentIdx);
|
||||
(i > -1) && !ldd->ld.repayOpts[i]->enabled;
|
||||
i-- ) {
|
||||
}
|
||||
if ( i != -1 ) {
|
||||
i-- )
|
||||
;
|
||||
|
||||
if ( i >= 0 ) {
|
||||
ldd->currentIdx = i;
|
||||
ld_pay_prep( gdp, arg1, ud );
|
||||
return TRUE;
|
||||
@ -1306,18 +1393,6 @@ ld_pay_back( GnomeDruidPage *gdp, gpointer arg1, gpointer ud )
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static
|
||||
void
|
||||
ld_pay_fin( GnomeDruidPage *gdp, gpointer arg1, gpointer ud )
|
||||
{
|
||||
LoanDruidData *ldd = (LoanDruidData*)ud;
|
||||
if ( ld_pay_save_current( ldd ) ) {
|
||||
/* FIXME?: Error? */
|
||||
return;
|
||||
}
|
||||
ld_create_sxes( ldd );
|
||||
}
|
||||
|
||||
static
|
||||
void
|
||||
ld_pay_freq_toggle( GtkToggleButton *tb, gpointer ud )
|
||||
@ -1352,6 +1427,110 @@ ld_pay_freq_toggle( GtkToggleButton *tb, gpointer ud )
|
||||
}
|
||||
}
|
||||
|
||||
static
|
||||
gboolean
|
||||
ld_rev_next( GnomeDruidPage *gdp, gpointer arg1, gpointer ud )
|
||||
{
|
||||
g_assert( FALSE );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static
|
||||
void
|
||||
ld_rev_prep( GnomeDruidPage *gdp, gpointer arg1, gpointer ud )
|
||||
{
|
||||
LoanDruidData *ldd = (LoanDruidData*)ud;
|
||||
int i;
|
||||
const static int BASE_COLS = 3;
|
||||
int numCols = BASE_COLS;
|
||||
gchar **titles;
|
||||
int repayOptToColMap[ ( sizeof( REPAY_DEFAULTS )
|
||||
/ sizeof( RepayOptDataDefault ) )
|
||||
- 1 ];
|
||||
|
||||
gnome_druid_set_show_finish( ldd->druid, TRUE );
|
||||
|
||||
/* Cleanup old clist */
|
||||
if ( ldd->revCL != NULL ) {
|
||||
gtk_container_remove( GTK_CONTAINER(ldd->revScrollWin),
|
||||
GTK_WIDGET(ldd->revCL) );
|
||||
ldd->revCL = NULL;
|
||||
}
|
||||
|
||||
/* Get the correct number of columns. */
|
||||
for ( i=0; i < ldd->ld.repayOptCount; i++ ) {
|
||||
repayOptToColMap[i] = -1;
|
||||
if ( !ldd->ld.repayOpts[i]->enabled ) {
|
||||
continue;
|
||||
}
|
||||
numCols += 1;
|
||||
repayOptToColMap[i] = numCols - 1;
|
||||
}
|
||||
titles = g_new0( gchar*, numCols );
|
||||
titles[0] = _( "Date" );
|
||||
titles[1] = _( "Principal" );
|
||||
titles[2] = _( "Interest" );
|
||||
/* move the appropriate names over into the title array */
|
||||
{
|
||||
for ( i=0; i < ldd->ld.repayOptCount; i++ ) {
|
||||
if ( repayOptToColMap[i] == -1 ) {
|
||||
continue;
|
||||
}
|
||||
titles[ repayOptToColMap[i] ] =
|
||||
ldd->ld.repayOpts[i]->name;
|
||||
}
|
||||
}
|
||||
|
||||
ldd->revCL = GTK_CLIST(
|
||||
gtk_clist_new_with_titles( numCols,
|
||||
titles ) );
|
||||
|
||||
for( i=0; i < numCols; i++ ) {
|
||||
gtk_clist_set_column_auto_resize( ldd->revCL, i, TRUE );
|
||||
}
|
||||
gtk_container_add( GTK_CONTAINER(ldd->revScrollWin),
|
||||
GTK_WIDGET(ldd->revCL) );
|
||||
gtk_widget_show_all( GTK_WIDGET(ldd->revCL) );
|
||||
}
|
||||
|
||||
static
|
||||
gboolean
|
||||
ld_rev_back( GnomeDruidPage *gdp, gpointer arg1, gpointer ud )
|
||||
{
|
||||
LoanDruidData *ldd = (LoanDruidData*)ud;
|
||||
int i;
|
||||
|
||||
gnome_druid_set_show_finish( ldd->druid, FALSE );
|
||||
|
||||
/* Get the correct page based on the repayment state. */
|
||||
/* go back through opts list and select next enabled options. */
|
||||
for ( i = ldd->currentIdx;
|
||||
(i > -1) && !ldd->ld.repayOpts[i]->enabled;
|
||||
i-- ) {
|
||||
}
|
||||
if ( i >= 0 ) {
|
||||
ldd->currentIdx = i;
|
||||
/* natural transition to the payments page */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* If there are no payment options, then go directly to the main
|
||||
* repayment page. */
|
||||
gnome_druid_set_page( ldd->druid,
|
||||
GNOME_DRUID_PAGE(
|
||||
glade_xml_get_widget( ldd->gxml,
|
||||
PG_REPAYMENT ) ) );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static
|
||||
void
|
||||
ld_rev_fin( GnomeDruidPage *gdp, gpointer arg1, gpointer ud )
|
||||
{
|
||||
LoanDruidData *ldd = (LoanDruidData*)ud;
|
||||
ld_create_sxes( ldd );
|
||||
}
|
||||
|
||||
static
|
||||
void
|
||||
ld_gnc_ttinfo_free( gpointer data, gpointer ud )
|
||||
@ -1649,3 +1828,17 @@ ld_calc_upd_rem_payments( GtkWidget *w, gpointer ud )
|
||||
remain = total - i;
|
||||
gtk_spin_button_set_value( ldd->prmRemainSpin, remain );
|
||||
}
|
||||
|
||||
static
|
||||
void
|
||||
ldd_rev_range_opt_changed( GtkButton *b, gpointer ud )
|
||||
{
|
||||
DEBUG( "FIXME" );
|
||||
}
|
||||
|
||||
static
|
||||
void
|
||||
ldd_rev_range_changed( GNCDateEdit *gde, gpointer ud )
|
||||
{
|
||||
DEBUG( "FIXME" );
|
||||
}
|
||||
|
@ -4095,7 +4095,7 @@ Postpone
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>to_create_txn_reg_frame</name>
|
||||
<label>Transaction</label>
|
||||
<label>Template Transaction (Read-Only)</label>
|
||||
<label_xalign>0.05</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
@ -5547,6 +5547,205 @@ Escrow
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDruidPageStandard</class>
|
||||
<name>review_pg</name>
|
||||
<title>Review</title>
|
||||
<title_color>255,255,255</title_color>
|
||||
<background_color>25,25,112</background_color>
|
||||
<logo_background_color>255,255,255</logo_background_color>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<child_name>GnomeDruidPageStandard:vbox</child_name>
|
||||
<name>druid-vbox14</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox177</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox176</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox178</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label847973</name>
|
||||
<label>Range: </label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox178</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>rev_range_opt</name>
|
||||
<can_focus>True</can_focus>
|
||||
<items>Current Year
|
||||
Now + 1 Year
|
||||
Whole Loan
|
||||
Custom
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>frame93</name>
|
||||
<border_width>2</border_width>
|
||||
<sensitive>False</sensitive>
|
||||
<label>Date Range</label>
|
||||
<label_xalign>0.05</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>2</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkTable</class>
|
||||
<name>rev_date_range_table</name>
|
||||
<rows>2</rows>
|
||||
<columns>2</columns>
|
||||
<homogeneous>False</homogeneous>
|
||||
<row_spacing>0</row_spacing>
|
||||
<column_spacing>0</column_spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label847971</name>
|
||||
<label>Start Date:</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label847972</name>
|
||||
<label>End Date:</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkScrolledWindow</class>
|
||||
<name>rev_scrollwin</name>
|
||||
<hscrollbar_policy>GTK_POLICY_AUTOMATIC</hscrollbar_policy>
|
||||
<vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
|
||||
<hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
|
||||
<vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>Placeholder</class>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
|
@ -67,7 +67,7 @@ static short module = MOD_SX;
|
||||
* X fill out gnc-split-reg.h interface
|
||||
* X calendar/date-picker
|
||||
* . beta-necessary
|
||||
* . date-inclusion on jumping
|
||||
* X date-inclusion on jumping
|
||||
* . pass in, use number-of-lines
|
||||
* . title-renaming in read-only case.
|
||||
* X size-allocation
|
||||
@ -143,9 +143,9 @@ void gsr_default_copy_txn_handler ( GNCSplitReg *w, gpointer ud );
|
||||
void gsr_default_paste_handler ( GNCSplitReg *w, gpointer ud );
|
||||
void gsr_default_paste_txn_handler( GNCSplitReg *w, gpointer ud );
|
||||
|
||||
static void gsr_emit_signal( GNCSplitReg *gsr, const char *sigName );
|
||||
static void gsr_emit_simple_signal( GNCSplitReg *gsr, const char *sigName );
|
||||
static void gsr_emit_help_changed( GnucashRegister *reg, gpointer user_data );
|
||||
|
||||
static void gsr_emit_include_date_signal( GNCSplitReg *gsr, time_t date );
|
||||
|
||||
void gnc_split_reg_cut_cb(GtkWidget *w, gpointer data);
|
||||
void gnc_split_reg_copy_cb(GtkWidget *w, gpointer data);
|
||||
@ -239,6 +239,7 @@ enum gnc_split_reg_signal_enum {
|
||||
PASTE_SIGNAL,
|
||||
PASTE_TXN_SIGNAL,
|
||||
HELP_CHANGED_SIGNAL,
|
||||
INCLUDE_DATE_SIGNAL,
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
||||
@ -270,18 +271,30 @@ gnc_split_reg_class_init( GNCSplitRegClass *class )
|
||||
{ PASTE_SIGNAL, "paste", GTK_SIGNAL_OFFSET( GNCSplitRegClass, paste_cb ) },
|
||||
{ PASTE_TXN_SIGNAL, "paste_txn", GTK_SIGNAL_OFFSET( GNCSplitRegClass, paste_txn_cb ) },
|
||||
{ HELP_CHANGED_SIGNAL, "help-changed", GTK_SIGNAL_OFFSET( GNCSplitRegClass, help_changed_cb ) },
|
||||
{ INCLUDE_DATE_SIGNAL, "include-date", GTK_SIGNAL_OFFSET( GNCSplitRegClass, include_date_cb ) },
|
||||
{ LAST_SIGNAL, NULL, 0 }
|
||||
};
|
||||
|
||||
object_class = (GtkObjectClass*) class;
|
||||
|
||||
for ( i=0; signals[i].signal_name != NULL; i++ ) {
|
||||
for ( i=0; signals[i].s != INCLUDE_DATE_SIGNAL; i++ ) {
|
||||
gnc_split_reg_signals[ signals[i].s ] =
|
||||
gtk_signal_new( signals[i].signal_name,
|
||||
GTK_RUN_LAST,
|
||||
object_class->type, signals[i].defaultOffset,
|
||||
gtk_signal_default_marshaller, GTK_TYPE_NONE, 0 );
|
||||
}
|
||||
/* Setup the non-default-marshalled signals; 'i' is still valid, here. */
|
||||
/* "include-date" */
|
||||
gnc_split_reg_signals[ INCLUDE_DATE_SIGNAL ] =
|
||||
gtk_signal_new( "include-date",
|
||||
GTK_RUN_LAST,
|
||||
object_class->type,
|
||||
signals[i++].defaultOffset,
|
||||
gtk_marshal_NONE__INT, /* time_t == int */
|
||||
GTK_TYPE_NONE, 1, GTK_TYPE_INT );
|
||||
|
||||
g_assert( i == LAST_SIGNAL );
|
||||
|
||||
gtk_object_class_add_signals (object_class, gnc_split_reg_signals, LAST_SIGNAL);
|
||||
|
||||
@ -303,6 +316,7 @@ gnc_split_reg_class_init( GNCSplitRegClass *class )
|
||||
class->paste_txn_cb = gsr_default_paste_txn_handler;
|
||||
|
||||
class->help_changed_cb = NULL;
|
||||
class->include_date_cb = NULL;
|
||||
}
|
||||
|
||||
GtkWidget*
|
||||
@ -723,11 +737,6 @@ gsr_redraw_all_cb (GnucashRegister *g_reg, gpointer data)
|
||||
}
|
||||
}
|
||||
|
||||
/* FIXME */
|
||||
#if 0 /* FIXME */
|
||||
gnc_reg_set_window_name( gsr );
|
||||
#endif /* 0 -- FIXME */
|
||||
|
||||
{
|
||||
gboolean expand;
|
||||
gboolean sensitive;
|
||||
@ -838,7 +847,7 @@ void
|
||||
gnc_split_reg_cut_cb (GtkWidget *w, gpointer data)
|
||||
{
|
||||
GNCSplitReg *gsr = data;
|
||||
gsr_emit_signal( gsr, "cut" );
|
||||
gsr_emit_simple_signal( gsr, "cut" );
|
||||
}
|
||||
|
||||
void
|
||||
@ -854,7 +863,7 @@ void
|
||||
gnc_split_reg_copy_cb (GtkWidget *w, gpointer data)
|
||||
{
|
||||
GNCSplitReg *gsr = data;
|
||||
gsr_emit_signal( gsr, "copy" );
|
||||
gsr_emit_simple_signal( gsr, "copy" );
|
||||
}
|
||||
|
||||
void
|
||||
@ -870,7 +879,7 @@ void
|
||||
gnc_split_reg_paste_cb (GtkWidget *w, gpointer data)
|
||||
{
|
||||
GNCSplitReg *gsr = data;
|
||||
gsr_emit_signal( gsr, "paste" );
|
||||
gsr_emit_simple_signal( gsr, "paste" );
|
||||
}
|
||||
|
||||
void
|
||||
@ -887,7 +896,7 @@ void
|
||||
gnc_split_reg_cut_trans_cb (GtkWidget *w, gpointer data)
|
||||
{
|
||||
GNCSplitReg *gsr = data;
|
||||
gsr_emit_signal( gsr, "cut_txn" );
|
||||
gsr_emit_simple_signal( gsr, "cut_txn" );
|
||||
}
|
||||
|
||||
void
|
||||
@ -904,7 +913,7 @@ void
|
||||
gnc_split_reg_copy_trans_cb(GtkWidget *w, gpointer data)
|
||||
{
|
||||
GNCSplitReg *gsr = data;
|
||||
gsr_emit_signal( gsr, "copy_txn" );
|
||||
gsr_emit_simple_signal( gsr, "copy_txn" );
|
||||
}
|
||||
|
||||
void
|
||||
@ -921,7 +930,7 @@ void
|
||||
gnc_split_reg_paste_trans_cb (GtkWidget *w, gpointer data)
|
||||
{
|
||||
GNCSplitReg *gsr = data;
|
||||
gsr_emit_signal( gsr, "paste_txn" );
|
||||
gsr_emit_simple_signal( gsr, "paste_txn" );
|
||||
}
|
||||
|
||||
/* Remove when porting to gtk2.0 */
|
||||
@ -985,7 +994,7 @@ void
|
||||
gnc_split_reg_reinitialize_trans_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
GNCSplitReg *gsr = data;
|
||||
gsr_emit_signal( gsr, "reinit_ent" );
|
||||
gsr_emit_simple_signal( gsr, "reinit_ent" );
|
||||
}
|
||||
|
||||
void
|
||||
@ -1117,7 +1126,7 @@ void
|
||||
gnc_split_reg_delete_trans_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
GNCSplitReg *gsr = data;
|
||||
gsr_emit_signal( gsr, "delete_ent" );
|
||||
gsr_emit_simple_signal( gsr, "delete_ent" );
|
||||
}
|
||||
|
||||
void
|
||||
@ -1134,7 +1143,7 @@ void
|
||||
gnc_split_reg_duplicate_trans_cb(GtkWidget *w, gpointer data)
|
||||
{
|
||||
GNCSplitReg *gsr = data;
|
||||
gsr_emit_signal( gsr, "dup_ent" );
|
||||
gsr_emit_simple_signal( gsr, "dup_ent" );
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1189,7 +1198,7 @@ void
|
||||
gnc_split_reg_recur_cb(GtkWidget *w, gpointer data)
|
||||
{
|
||||
GNCSplitReg *gsr = data;
|
||||
gsr_emit_signal( gsr, "schedule_ent" );
|
||||
gsr_emit_simple_signal( gsr, "schedule_ent" );
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1199,7 +1208,7 @@ void
|
||||
gnc_split_reg_record_trans_cb (GtkWidget *w, gpointer data)
|
||||
{
|
||||
GNCSplitReg *gsr = data;
|
||||
gsr_emit_signal( gsr, "enter_ent" );
|
||||
gsr_emit_simple_signal( gsr, "enter_ent" );
|
||||
}
|
||||
|
||||
void
|
||||
@ -1216,7 +1225,7 @@ void
|
||||
gnc_split_reg_cancel_trans_cb(GtkWidget *w, gpointer data)
|
||||
{
|
||||
GNCSplitReg *gsr = data;
|
||||
gsr_emit_signal( gsr, "cancel_ent" );
|
||||
gsr_emit_simple_signal( gsr, "cancel_ent" );
|
||||
}
|
||||
|
||||
void
|
||||
@ -1252,14 +1261,14 @@ void
|
||||
gnc_split_reg_expand_trans_menu_cb (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
GNCSplitReg *gsr = data;
|
||||
gsr_emit_signal( gsr, "expand_ent" );
|
||||
gsr_emit_simple_signal( gsr, "expand_ent" );
|
||||
}
|
||||
|
||||
void
|
||||
gnc_split_reg_expand_trans_toolbar_cb (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
GNCSplitReg *gsr = data;
|
||||
gsr_emit_signal( gsr, "expand_ent" );
|
||||
gsr_emit_simple_signal( gsr, "expand_ent" );
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1275,13 +1284,8 @@ gnc_split_reg_jump_to_split(GNCSplitReg *gsr, Split *split)
|
||||
if (!gsr) return;
|
||||
|
||||
trans = xaccSplitGetParent(split);
|
||||
#if 0 /* FIXME */
|
||||
if (trans != NULL)
|
||||
if (gnc_register_include_date(gsr, xaccTransGetDate(trans)))
|
||||
{
|
||||
gnc_ledger_display_refresh( gsr->ledger );
|
||||
}
|
||||
#endif /* 0 -- FIXME */
|
||||
|
||||
gsr_emit_include_date_signal( gsr, xaccTransGetDate(trans) );
|
||||
|
||||
reg = gnc_ledger_display_get_split_register( gsr->ledger );
|
||||
|
||||
@ -1300,18 +1304,12 @@ gnc_split_reg_jump_to_split_amount(GNCSplitReg *gsr, Split *split)
|
||||
{
|
||||
VirtualLocation virt_loc;
|
||||
SplitRegister *reg;
|
||||
Transaction *trans;
|
||||
|
||||
if (!gsr) return;
|
||||
|
||||
#if 0 /* FIXME */
|
||||
trans = xaccSplitGetParent(split);
|
||||
if (trans != NULL) {
|
||||
if (gnc_register_include_date(gsr, xaccTransGetDate(trans)))
|
||||
{
|
||||
gnc_ledger_display_refresh (gsr->ledger);
|
||||
}
|
||||
}
|
||||
#endif /* 0 -- FIXME */
|
||||
gsr_emit_include_date_signal( gsr, xaccTransGetDate(trans) );
|
||||
|
||||
reg = gnc_ledger_display_get_split_register (gsr->ledger);
|
||||
|
||||
@ -1355,7 +1353,7 @@ void
|
||||
gnc_split_reg_new_trans_cb (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
GNCSplitReg *gsr = data;
|
||||
gsr_emit_signal( gsr, "blank" );
|
||||
gsr_emit_simple_signal( gsr, "blank" );
|
||||
}
|
||||
|
||||
void
|
||||
@ -1410,7 +1408,7 @@ void
|
||||
gnc_split_reg_jump_cb( GtkWidget *widget, gpointer data )
|
||||
{
|
||||
GNCSplitReg *gsr = data;
|
||||
gsr_emit_signal( gsr, "jump" );
|
||||
gsr_emit_simple_signal( gsr, "jump" );
|
||||
}
|
||||
|
||||
static
|
||||
@ -1607,12 +1605,7 @@ gnc_split_reg_record (GNCSplitReg *gsr)
|
||||
if (!gnc_split_register_save (reg, TRUE))
|
||||
return;
|
||||
|
||||
/* FIXME */
|
||||
#if 0 /* FIXME */
|
||||
if (trans != NULL)
|
||||
gnc_split_reg_include_date( gsr, xaccTransGetDate(trans) );
|
||||
#endif /* 0 - FIXME */
|
||||
|
||||
gsr_emit_include_date_signal( gsr, xaccTransGetDate(trans) );
|
||||
gnc_split_register_redraw (reg);
|
||||
}
|
||||
|
||||
@ -1697,7 +1690,7 @@ gsr_default_enter_handler( GNCSplitReg *gsr, gpointer data )
|
||||
void
|
||||
gnc_split_reg_record_cb (GnucashRegister *reg, gpointer data)
|
||||
{
|
||||
gsr_emit_signal( (GNCSplitReg*)data, "enter_ent" );
|
||||
gsr_emit_simple_signal( (GNCSplitReg*)data, "enter_ent" );
|
||||
}
|
||||
|
||||
void
|
||||
@ -1988,9 +1981,7 @@ void
|
||||
gnc_split_reg_determine_read_only( GNCSplitReg *gsr )
|
||||
{
|
||||
dialog_args *args = g_malloc(sizeof(dialog_args));
|
||||
gchar *old_title, *new_title;
|
||||
SplitRegister *reg;
|
||||
GtkArg objarg;
|
||||
|
||||
gsr->read_only = FALSE;
|
||||
|
||||
@ -1998,7 +1989,6 @@ gnc_split_reg_determine_read_only( GNCSplitReg *gsr )
|
||||
|
||||
/* FIXME: this is not ideal, as whatever window-title solution we come up
|
||||
* with should be used in this case as well. */
|
||||
|
||||
gsr->read_only = TRUE;
|
||||
|
||||
} else {
|
||||
@ -2034,18 +2024,6 @@ gnc_split_reg_determine_read_only( GNCSplitReg *gsr )
|
||||
reg = gnc_ledger_display_get_split_register( gsr->ledger );
|
||||
gnc_split_register_set_read_only( reg, TRUE );
|
||||
|
||||
/* Rename the window title */
|
||||
/* FIXME: This isn't so good ... this thing shouldn't be directing
|
||||
* window-title changes ... especially for the SX-related stuff. */
|
||||
objarg.name = "GtkWindow::title";
|
||||
gtk_object_arg_get(GTK_OBJECT(gsr->window), &objarg, NULL);
|
||||
old_title = GTK_VALUE_STRING(objarg);
|
||||
new_title = g_strdup_printf(_("%s [Read-Only]"), old_title);
|
||||
/*gtk_object_set(GTK_OBJECT(gsr->window),
|
||||
* "GtkWindow::title", new_title, NULL); */
|
||||
gtk_window_set_title( GTK_WINDOW(gsr->window), new_title );
|
||||
g_free(old_title);
|
||||
g_free(new_title);
|
||||
}
|
||||
|
||||
static
|
||||
@ -2109,12 +2087,19 @@ static
|
||||
void
|
||||
gsr_emit_help_changed( GnucashRegister *reg, gpointer user_data )
|
||||
{
|
||||
gsr_emit_signal( (GNCSplitReg*)user_data, "help-changed" );
|
||||
gsr_emit_simple_signal( (GNCSplitReg*)user_data, "help-changed" );
|
||||
}
|
||||
|
||||
static
|
||||
void
|
||||
gsr_emit_signal( GNCSplitReg *gsr, const char *sigName )
|
||||
gsr_emit_include_date_signal( GNCSplitReg *gsr, time_t date )
|
||||
{
|
||||
gtk_signal_emit_by_name( GTK_OBJECT(gsr), "include-date", date, NULL );
|
||||
}
|
||||
|
||||
static
|
||||
void
|
||||
gsr_emit_simple_signal( GNCSplitReg *gsr, const char *sigName )
|
||||
{
|
||||
gtk_signal_emit_by_name( GTK_OBJECT(gsr), sigName, NULL );
|
||||
}
|
||||
@ -2138,6 +2123,7 @@ gnc_split_reg_get_sort_type( GNCSplitReg *gsr )
|
||||
void
|
||||
gnc_split_reg_set_sort_type( GNCSplitReg *gsr, SortType t )
|
||||
{
|
||||
/* FIXME */
|
||||
PERR( "unimplemented" );
|
||||
}
|
||||
|
||||
@ -2201,6 +2187,7 @@ void
|
||||
gnc_split_reg_set_split_state( GNCSplitReg *gsr, gboolean split )
|
||||
{
|
||||
g_assert( gsr );
|
||||
/* FIXME */
|
||||
PERR( "Unimplemented" );
|
||||
}
|
||||
|
||||
@ -2208,6 +2195,7 @@ void
|
||||
gnc_split_reg_set_double_line( GNCSplitReg *gsr, gboolean doubleLine )
|
||||
{
|
||||
g_assert( gsr );
|
||||
/* FIXME */
|
||||
PERR( "unimplemented" );
|
||||
}
|
||||
|
||||
@ -2234,3 +2222,10 @@ gnc_split_reg_use_extended_popup( GNCSplitReg *gsr )
|
||||
|
||||
gtk_widget_show_all( popup );
|
||||
}
|
||||
|
||||
gboolean
|
||||
gnc_split_reg_get_read_only( GNCSplitReg *gsr )
|
||||
{
|
||||
g_assert( gsr );
|
||||
return gsr->read_only;
|
||||
}
|
||||
|
@ -149,6 +149,7 @@ struct _GNCSplitRegClass {
|
||||
void (*paste_cb) ( GNCSplitReg *w, gpointer user_data );
|
||||
void (*paste_txn_cb) ( GNCSplitReg *w, gpointer user_data );
|
||||
void (*help_changed_cb) ( GNCSplitReg *w, gpointer user_data );
|
||||
void (*include_date_cb) ( GNCSplitReg *w, time_t date, gpointer user_data );
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
@ -271,6 +272,13 @@ gboolean gnc_split_reg_check_close( GNCSplitReg *gsr );
|
||||
|
||||
void gnc_split_reg_raise( GNCSplitReg *gsr );
|
||||
|
||||
/**
|
||||
* Callers can use this to determine if they need to reflect some "read-only"
|
||||
* status in the window which contains the GNCSplitReg.
|
||||
* @return TRUE if the register is read-only, FALSE if not.
|
||||
**/
|
||||
gboolean gnc_split_reg_get_read_only( GNCSplitReg *gsr );
|
||||
|
||||
/*
|
||||
* Function to jump to various places in the register
|
||||
*/
|
||||
|
@ -183,6 +183,12 @@ static void gnc_register_insert_cloned_toolbar_elt( GtkToolbar *dstToolbar,
|
||||
gint idx );
|
||||
|
||||
static gboolean gnc_register_include_date(RegWindow *regData, time_t date);
|
||||
static void gnc_register_include_date_adapter( GNCSplitReg *gsr,
|
||||
time_t date,
|
||||
gpointer user_data );
|
||||
|
||||
static void gnc_register_set_read_only( RegWindow *regData );
|
||||
|
||||
static void gnc_reg_save_size (RegWindow *regData);
|
||||
|
||||
|
||||
@ -830,7 +836,9 @@ regWindowLedger( GNCLedgerDisplay *ledger )
|
||||
numRows = (guint)gnc_lookup_number_option ( "_+Advanced",
|
||||
"Number of Rows", 20.0 );
|
||||
|
||||
gsr = gnc_split_reg_new( ledger, GTK_WINDOW(register_window), numRows,
|
||||
gsr = gnc_split_reg_new( ledger,
|
||||
GTK_WINDOW(register_window),
|
||||
numRows,
|
||||
( CREATE_TOOLBAR
|
||||
| CREATE_MENUS
|
||||
| CREATE_POPUP
|
||||
@ -842,6 +850,9 @@ regWindowLedger( GNCLedgerDisplay *ledger )
|
||||
GNOME_APP(register_window)->menubar = glade_xml_get_widget( xml, "gnc_register_menubar" );
|
||||
|
||||
gnc_reg_set_window_name( regData );
|
||||
if ( gnc_split_reg_get_read_only( regData->gsr ) ) {
|
||||
gnc_register_set_read_only( regData );
|
||||
}
|
||||
|
||||
show_all = gnc_lookup_boolean_option( "_+Advanced",
|
||||
"Show All Transactions",
|
||||
@ -876,6 +887,11 @@ regWindowLedger( GNCLedgerDisplay *ledger )
|
||||
GTK_SIGNAL_FUNC( gnc_register_help_changed_cb ),
|
||||
regData );
|
||||
|
||||
/* The "include-date" and "read-only" signals. */
|
||||
gtk_signal_connect( GTK_OBJECT(regData->gsr), "include-date",
|
||||
GTK_SIGNAL_FUNC( gnc_register_include_date_adapter ),
|
||||
regData );
|
||||
|
||||
/* The menu bar. Menu extension setup needs to come *after* that. */
|
||||
gnc_register_setup_menu_widgets( regData, xml );
|
||||
gnc_extensions_menu_setup_with_data( GNOME_APP(register_window),
|
||||
@ -1287,6 +1303,16 @@ gnc_register_start_recn_cb(GtkWidget * w, gpointer data)
|
||||
recnWindow(regData->window, account);
|
||||
}
|
||||
|
||||
static
|
||||
void
|
||||
gnc_register_include_date_adapter( GNCSplitReg *gsr, time_t date, gpointer user_data )
|
||||
{
|
||||
RegWindow *regData;
|
||||
regData = (RegWindow*) user_data;
|
||||
if ( gnc_register_include_date( regData, date ) ) {
|
||||
gnc_ledger_display_refresh( gsr->ledger );
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gnc_register_include_date(RegWindow *regData, time_t date)
|
||||
@ -1318,6 +1344,23 @@ gnc_register_include_date(RegWindow *regData, time_t date)
|
||||
return changed;
|
||||
}
|
||||
|
||||
static
|
||||
void
|
||||
gnc_register_set_read_only( RegWindow *regData )
|
||||
{
|
||||
gchar *old_title, *new_title;
|
||||
GtkArg objarg;
|
||||
|
||||
objarg.name = "GtkWindow::title";
|
||||
gtk_object_arg_get(GTK_OBJECT(regData->window), &objarg, NULL);
|
||||
old_title = GTK_VALUE_STRING(objarg);
|
||||
new_title = g_strdup_printf(_("%s [Read-Only]"), old_title);
|
||||
gtk_window_set_title( GTK_WINDOW(regData->window), new_title );
|
||||
g_free(old_title);
|
||||
g_free(new_title);
|
||||
|
||||
regData->read_only = TRUE;
|
||||
}
|
||||
|
||||
/********************************************************************\
|
||||
* gnc_register_close_cb *
|
||||
|
Loading…
Reference in New Issue
Block a user