mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
2002-04-20 Joshua Sled <jsled@asynchronous.org>
* src/gnome/dialog-sxsincelast.c (process_auto_create_list): Added progress-bar support for transaction auto-creation. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@6816 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
8d1cb07b21
commit
833d4042b4
14
ChangeLog
14
ChangeLog
@ -1,3 +1,17 @@
|
||||
2002-04-20 Joshua Sled <jsled@asynchronous.org>
|
||||
|
||||
* src/gnome/dialog-sxsincelast.c (process_auto_create_list): Added
|
||||
progress-bar support for transaction auto-creation.
|
||||
|
||||
2002-04-17 Joshua Sled <jsled@asynchronous.org>
|
||||
|
||||
* src/gnome/dialog-scheduledxaction.c
|
||||
(editor_ok_button_clicked): Added checks for ScheduledTransactions
|
||||
with no name, same name as existing SchedXaction.
|
||||
(row_select_handler): Resolved "critical" GTK run-time warning
|
||||
regarding navigating the Scheduled Transaction list with the arrow
|
||||
keys.
|
||||
|
||||
2002-04-16 Joshua Sled <jsled@asynchronous.org>
|
||||
|
||||
* src/gnome/dialog-scheduledxaction.c
|
||||
|
@ -128,6 +128,12 @@ X create a template register
|
||||
dialogs are open.
|
||||
. creating a SX from trans with the SX list open does not update the SX
|
||||
list
|
||||
. So since Advanced editing entails "Simple" editing, it should just
|
||||
replace that window. Then, with some CM hookup between the List and
|
||||
the Editor, all is well.
|
||||
. 20020419 - Wilddev manages to create two SXes from one; the first is
|
||||
okay, but the second is h0rk3d [deleting it causes segfault, though it
|
||||
can be instantiated correctly].
|
||||
. tab-order
|
||||
. better frequency guess?
|
||||
[ related... ]
|
||||
@ -164,8 +170,10 @@ X create a template register
|
||||
. But this is true of manually-created transactions, too ... is this
|
||||
actually correct behavior?
|
||||
. inital "To-Create Transactions" varbinding table doesn't setup table correctly.
|
||||
. creating/cancelling a bunch [FIXME:define "bunch"] of transactions
|
||||
takes too long, with no progress indication.
|
||||
. creating a bunch [FIXME:define "bunch"] of transactions takes too long
|
||||
X with no progress indication.
|
||||
. cancelling a bunch [FIXME:define "bunch"] of xactions takes too long
|
||||
. no progress indication.
|
||||
X twunder reports [2002.01.29] register growing a little bit at a time if
|
||||
tab is hit to switch between register fields -- started with update on
|
||||
1/21.
|
||||
|
@ -77,6 +77,7 @@
|
||||
#define SXSLD_DRUID_GLADE_NAME "sincelast_druid"
|
||||
|
||||
#define SINCELAST_DRUID "sincelast_druid"
|
||||
#define WHAT_TO_DO_PG "what_to_do"
|
||||
#define REMINDERS_PG "reminders_page"
|
||||
#define AUTO_CREATE_NOTIFY_PG "auto_create_notify_page"
|
||||
#define TO_CREATE_PG "to_create_page"
|
||||
@ -96,6 +97,8 @@
|
||||
#define VARIABLE_TABLE "variables_table"
|
||||
#define AUTO_CREATE_VBOX "ac_vbox"
|
||||
#define CREATED_VBOX "created_vbox"
|
||||
#define WHAT_TO_DO_VBOX "what_to_do_vbox"
|
||||
#define WHAT_TO_DO_PROGRESS "creation_progress"
|
||||
|
||||
#define TO_CREATE_CLIST_WIDTH 3
|
||||
#define REMINDER_CLIST_WIDTH 3
|
||||
@ -133,6 +136,8 @@ typedef struct _sxSinceLastData {
|
||||
GnomeDruid *sincelast_druid;
|
||||
GladeXML *gxml;
|
||||
|
||||
GtkProgressBar *prog;
|
||||
|
||||
/* Multi-stage processing-related stuff... */
|
||||
GList /* <autoCreateTuple*> */ *autoCreateList;
|
||||
GList /* <toCreateTuple*> */ *toCreateList;
|
||||
@ -406,13 +411,20 @@ theres_no_turning_back_bang( GnomeDruidPage *druid_page,
|
||||
}
|
||||
|
||||
static void
|
||||
reminders_page_prep( gpointer ud )
|
||||
whattodo_prep( GnomeDruidPage *druid_page,
|
||||
gpointer arg1, gpointer ud )
|
||||
{
|
||||
DEBUG( "whattodo_prep" );
|
||||
}
|
||||
|
||||
static void
|
||||
reminders_page_prep( sxSinceLastData *sxsld )
|
||||
{
|
||||
sxSinceLastData *sxsld = (sxSinceLastData*)ud;
|
||||
GtkWidget *w;
|
||||
if ( g_list_length( sxsld->reminderList ) == 0 ) {
|
||||
w = glade_xml_get_widget( sxsld->gxml,
|
||||
AUTO_CREATE_NOTIFY_PG );
|
||||
DEBUG( "Going to auto_create_notify page" );
|
||||
gnome_druid_set_page( sxsld->sincelast_druid,
|
||||
GNOME_DRUID_PAGE(w) );
|
||||
return;
|
||||
@ -429,7 +441,8 @@ static void
|
||||
reminders_prep( GnomeDruidPage *druid_page,
|
||||
gpointer arg1, gpointer ud )
|
||||
{
|
||||
reminders_page_prep( ud );
|
||||
sxSinceLastData *sxsld = (sxSinceLastData*)ud;
|
||||
reminders_page_prep( sxsld );
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@ -468,6 +481,7 @@ auto_create_prep( GnomeDruidPage *druid_page,
|
||||
sxSinceLastData *sxsld = (sxSinceLastData*)ud;
|
||||
|
||||
if ( ! sxsld->autoCreatedSomething ) {
|
||||
DEBUG( "Going to to_create page" );
|
||||
w = glade_xml_get_widget( sxsld->gxml, TO_CREATE_PG );
|
||||
gnome_druid_set_page( sxsld->sincelast_druid,
|
||||
GNOME_DRUID_PAGE(w) );
|
||||
@ -483,6 +497,7 @@ created_prep( GnomeDruidPage *druid_page,
|
||||
sxSinceLastData *sxsld = (sxSinceLastData*)ud;
|
||||
|
||||
if ( !sxsld->createdSomething ) {
|
||||
DEBUG( "Going to obsolete page" );
|
||||
w = glade_xml_get_widget( sxsld->gxml, OBSOLETE_PG );
|
||||
gnome_druid_set_page( sxsld->sincelast_druid,
|
||||
GNOME_DRUID_PAGE(w) );
|
||||
@ -497,6 +512,7 @@ obsolete_prep( GnomeDruidPage *druid_page,
|
||||
GtkWidget *w;
|
||||
sxSinceLastData *sxsld = (sxSinceLastData*)ud;
|
||||
if ( g_list_length( sxsld->toRemoveList ) == 0 ) {
|
||||
DEBUG( "Going to finish page" );
|
||||
w = glade_xml_get_widget( sxsld->gxml, FINISH_PG );
|
||||
gnome_druid_set_page( sxsld->sincelast_druid,
|
||||
GNOME_DRUID_PAGE(w) );
|
||||
@ -638,7 +654,8 @@ to_create_next( GnomeDruidPage *druid_page,
|
||||
sxsld->createdTxnGUIDList =
|
||||
g_list_concat( sxsld->createdTxnGUIDList, created );
|
||||
}
|
||||
gnc_resume_gui_refresh();
|
||||
|
||||
DEBUG( "Done with creation; updating created ledger." );
|
||||
|
||||
oldQuery = gnc_ledger_display_get_query( sxsld->created_ledger );
|
||||
newQuery = xaccQueryMerge( oldQuery, q, QUERY_AND );
|
||||
@ -646,6 +663,8 @@ to_create_next( GnomeDruidPage *druid_page,
|
||||
gnc_ledger_display_refresh( sxsld->created_ledger );
|
||||
xaccFreeQuery( q );
|
||||
|
||||
gnc_resume_gui_refresh();
|
||||
|
||||
sxsld->createdSomething = TRUE;
|
||||
|
||||
return FALSE;
|
||||
@ -796,6 +815,10 @@ sxsincelast_init( sxSinceLastData *sxsld )
|
||||
};
|
||||
|
||||
static druidSignalHandlerTuple pages[] = {
|
||||
{ WHAT_TO_DO_PG,
|
||||
whattodo_prep, NULL, NULL,
|
||||
NULL, cancel_check },
|
||||
|
||||
{ REMINDERS_PG,
|
||||
reminders_prep, theres_no_turning_back_bang, reminders_next,
|
||||
reminders_finish, cancel_check },
|
||||
@ -849,14 +872,18 @@ sxsincelast_init( sxSinceLastData *sxsld )
|
||||
w = glade_xml_get_widget( sxsld->gxml, SX_OBSOLETE_CLIST );
|
||||
clist_set_all_cols_autoresize(GTK_CLIST(w), SX_OBSOLETE_CLIST_WIDTH);
|
||||
|
||||
sxsld->prog = glade_xml_get_widget( sxsld->gxml, WHAT_TO_DO_PROGRESS );
|
||||
|
||||
create_autoCreate_ledger( sxsld );
|
||||
create_created_ledger( sxsld );
|
||||
|
||||
//reminders_page_prep( sxsld );
|
||||
gtk_widget_show_all( sxsld->sincelast_window );
|
||||
|
||||
process_auto_create_list( sxsld->autoCreateList, sxsld );
|
||||
|
||||
reminders_page_prep( (gpointer)sxsld );
|
||||
|
||||
gtk_widget_show_all( sxsld->sincelast_window );
|
||||
w = glade_xml_get_widget( sxsld->gxml, REMINDERS_PG );
|
||||
gnome_druid_set_page( sxsld->sincelast_druid, GNOME_DRUID_PAGE(w) );
|
||||
}
|
||||
|
||||
static void
|
||||
@ -969,9 +996,12 @@ process_auto_create_list( GList *autoCreateList, sxSinceLastData *sxsld )
|
||||
autoCreateTuple *act;
|
||||
gboolean autoCreateState, notifyState;
|
||||
Query *q, *dlQuery, *newQuery;
|
||||
int count;
|
||||
|
||||
q = xaccMallocQuery();
|
||||
gnc_suspend_gui_refresh();
|
||||
count = 0;
|
||||
gtk_progress_configure( sxsld->prog, 0, 0, g_list_length( autoCreateList ) );
|
||||
for ( ; autoCreateList ; autoCreateList = autoCreateList->next ) {
|
||||
thisGUID = createdGUIDs = NULL;
|
||||
act = (autoCreateTuple*)autoCreateList->data;
|
||||
@ -981,8 +1011,11 @@ process_auto_create_list( GList *autoCreateList, sxSinceLastData *sxsld )
|
||||
create_transactions_on( act->sx,
|
||||
act->date,
|
||||
NULL, &createdGUIDs );
|
||||
DEBUG( "created %d Transaction GUIDs",
|
||||
g_list_length( createdGUIDs ) );
|
||||
|
||||
count += g_list_length( createdGUIDs );
|
||||
gtk_progress_set_value( sxsld->prog, count );
|
||||
while (g_main_iteration(FALSE));
|
||||
|
||||
sxsld->autoCreatedSomething = TRUE;
|
||||
if ( notifyState ) {
|
||||
for ( thisGUID = createdGUIDs;
|
||||
@ -1000,6 +1033,9 @@ process_auto_create_list( GList *autoCreateList, sxSinceLastData *sxsld )
|
||||
g_list_concat( sxsld->createdTxnGUIDList,
|
||||
createdGUIDs );
|
||||
}
|
||||
|
||||
DEBUG( "Finished creating transactions; updating ledger" );
|
||||
|
||||
dlQuery = gnc_ledger_display_get_query( sxsld->ac_ledger );
|
||||
newQuery = xaccQueryMerge( dlQuery, q, QUERY_AND );
|
||||
gnc_ledger_display_set_query( sxsld->ac_ledger, newQuery );
|
||||
@ -1019,7 +1055,6 @@ add_to_create_list_to_gui( GList *toCreateList, sxSinceLastData *sxsld )
|
||||
if ( toCreateList == NULL )
|
||||
return;
|
||||
|
||||
DEBUG( "foobar" );
|
||||
clist = GTK_CLIST( glade_xml_get_widget( sxsld->gxml, TO_CREATE_CLIST ) );
|
||||
for ( ; toCreateList ; toCreateList = toCreateList->next ) {
|
||||
tct = (toCreateTuple*)toCreateList->data;
|
||||
@ -1239,7 +1274,7 @@ sxsincelast_populate( sxSinceLastData *sxsld )
|
||||
|
||||
xaccSchedXactionGetAutoCreate( sx, &autocreateState,
|
||||
¬ifyState );
|
||||
do {
|
||||
for ( ; instanceList; instanceList = instanceList->next ) {
|
||||
instDate = (GDate*)instanceList->data;
|
||||
if ( autocreateState ) {
|
||||
act = g_new0( autoCreateTuple, 1 );
|
||||
@ -1255,8 +1290,7 @@ sxsincelast_populate( sxSinceLastData *sxsld )
|
||||
sxsld->toCreateList =
|
||||
g_list_append( sxsld->toCreateList, tct );
|
||||
}
|
||||
} while ( (instanceList = instanceList->next) );
|
||||
|
||||
}
|
||||
/* Report RE:showing the dialog iff there's stuff in it to
|
||||
* show. */
|
||||
showIt |= (g_list_length( sxsld->autoCreateList ) > 0);
|
||||
@ -1641,13 +1675,12 @@ create_transactions_on( SchedXaction *sx, GDate *gd,
|
||||
gboolean createdTCT;
|
||||
|
||||
|
||||
#if 0
|
||||
{
|
||||
char tmpBuf[GNC_D_WIDTH];
|
||||
g_date_strftime( tmpBuf, GNC_D_WIDTH, GNC_D_FMT, gd );
|
||||
DEBUG( "Creating transactions on %s for %s",
|
||||
tmpBuf, xaccSchedXactionGetName( sx ) );
|
||||
}
|
||||
#endif /* 0 */
|
||||
|
||||
if ( tct != NULL
|
||||
&& g_date_compare( gd, tct->date ) != 0 ) {
|
||||
|
@ -4613,6 +4613,57 @@ Anually
|
||||
<class>GnomeDruid</class>
|
||||
<name>sincelast_druid</name>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDruidPageStandard</class>
|
||||
<name>what_to_do</name>
|
||||
<title>What to do, what to do?</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>what_to_do_vbox</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>frame82</name>
|
||||
<border_width>38</border_width>
|
||||
<label>Creating transactions...</label>
|
||||
<label_xalign>0.05</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkProgressBar</class>
|
||||
<name>creation_progress</name>
|
||||
<value>0</value>
|
||||
<lower>0</lower>
|
||||
<upper>100</upper>
|
||||
<bar_style>GTK_PROGRESS_CONTINUOUS</bar_style>
|
||||
<orientation>GTK_PROGRESS_LEFT_TO_RIGHT</orientation>
|
||||
<activity_mode>False</activity_mode>
|
||||
<show_text>True</show_text>
|
||||
<format>%v/%u (%p%%)</format>
|
||||
<text_xalign>0.5</text_xalign>
|
||||
<text_yalign>0.5</text_yalign>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDruidPageStandard</class>
|
||||
<name>reminders_page</name>
|
||||
|
Loading…
Reference in New Issue
Block a user