2001-10-29 Joshua Sled <jsled@asynchronous.org>

* src/gnome/dialog-sxsincelast.c: Unused pages are skipped,
	initial version.

	* src/gnome/dialog-sx-from-trans.c: Added start date handling; as
	well, correctly update the start date when the frequency option
	changes.  Added using FreqSpecs for start date calculation.  Added
	correctly

	* src/gnome-utils/gnc-account-tree.c (gnc_account_tree_init): Make
	account-tree description column auto-resize.

	* src/engine/SchedXaction.c (xaccSchedXactionSetEndDate): Removed
	end date validity check; an invalid end date is how we signal "no
	end date".


git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@5739 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Joshua Sled 2001-10-29 10:08:11 +00:00
parent 0622d2bc06
commit 48918c9fa8
10 changed files with 684 additions and 521 deletions

View File

@ -1,3 +1,20 @@
2001-10-29 Joshua Sled <jsled@asynchronous.org>
* src/gnome/dialog-sxsincelast.c: Unused pages are skipped,
initial version.
* src/gnome/dialog-sx-from-trans.c: Added start date handling; as
well, correctly update the start date when the frequency option
changes. Added using FreqSpecs for start date calculation. Added
correctly
* src/gnome-utils/gnc-account-tree.c (gnc_account_tree_init): Make
account-tree description column auto-resize.
* src/engine/SchedXaction.c (xaccSchedXactionSetEndDate): Removed
end date validity check; an invalid end date is how we signal "no
end date".
2001-10-25 Dave Peticolas <dave@krondo.com>
* src/scm/Makefile.am: remove slib-backup.scm and startup.scm

View File

@ -1,26 +1,49 @@
# List of files which containing translatable strings.
# This file was generated by ../make-gnucash-potfiles.in.
src/calculation/amort_opt.c
src/calculation/amort_prt.c
src/calculation/expression_parser.c
src/calculation/fin-interactive.c
src/calculation/fin-main.c
src/calculation/fin.c
src/calculation/numeric_ops.c
src/calculation/gncmod-calculation.c
src/app-utils/test/test-exp-parser.c
src/app-utils/test/test-link-module.c
src/app-utils/test/test-print-parse-amount.c
src/app-utils/gfec.c
src/app-utils/global-options.c
src/app-utils/gnc-component-manager.c
src/app-utils/gnc-euro.c
src/app-utils/gnc-exp-parser.c
src/app-utils/gnc-gettext-util.c
src/app-utils/gnc-helpers.c
src/app-utils/gnc-ui-util.c
src/app-utils/gncmod-app-utils.c
src/app-utils/guile-util.c
src/app-utils/option-util.c
src/backend/file/test/test-date-converting.c
src/backend/file/test/test-dom-converters1.c
src/backend/file/test/test-dom-parser1.c
src/backend/file/test/test-kvp-frames.c
src/backend/file/test/test-load-xml2.c
src/backend/file/test/test-string-converters.c
src/backend/file/test/test-file-stuff.c
src/backend/file/test/test-kvp-frames.c
src/backend/file/test/test-load-example-account.c
src/backend/file/test/test-load-xml2.c
src/backend/file/test/test-save-in-lang.c
src/backend/file/test/test-string-converters.c
src/backend/file/test/test-xml-account.c
src/backend/file/test/test-xml-commodity.c
src/backend/file/test/test-xml-pricedb.c
src/backend/file/test/test-xml-transaction.c
src/backend/file/test/test-xml2-is-file.c
src/backend/file/test/test-save-in-lang.c
src/backend/file/test/test-date-converting.c
src/backend/file/test/test-xml-pricedb.c
src/backend/file/test/test-load-example-account.c
src/backend/file/gnc-account-xml-v2.c
src/backend/file/gnc-backend-file.c
src/backend/file/gnc-commodity-xml-v2.c
src/backend/file/gnc-freqspec-xml-v2.c
src/backend/file/gnc-schedxaction-xml-v2.c
src/backend/file/gnc-transaction-xml-v2.c
src/backend/file/gncmod-backend-file.c
src/backend/file/io-example-account.c
src/backend/file/io-gncbin-r.c
src/backend/file/io-gncxml-gen.c
@ -34,7 +57,6 @@ src/backend/file/sixtp-to-dom-parser.c
src/backend/file/sixtp-utils.c
src/backend/file/sixtp.c
src/backend/file/gnc-pricedb-xml-v2.c
src/backend/file/gncmod-backend-file.c
src/backend/rpc/RpcBackend.c
src/backend/rpc/RpcServer.c
src/backend/rpc/RpcSock.c
@ -49,6 +71,7 @@ src/backend/rpc/svc_thrd.c
src/backend/rpc/xprt_thrd.c
src/backend/postgres/test/test-db.c
src/backend/postgres/test/test-escape.c
src/backend/postgres/PostgresBackend.c
src/backend/postgres/account.c
src/backend/postgres/builder.c
src/backend/postgres/checkpoint.c
@ -62,109 +85,12 @@ src/backend/postgres/price.c
src/backend/postgres/txn.c
src/backend/postgres/txnmass.c
src/backend/postgres/upgrade.c
src/backend/postgres/PostgresBackend.c
src/backend/net/NetIO.c
src/app-utils/test/test-link-module.c
src/app-utils/test/test-exp-parser.c
src/app-utils/test/test-print-parse-amount.c
src/app-utils/gfec.c
src/app-utils/global-options.c
src/app-utils/gnc-component-manager.c
src/app-utils/gnc-gettext-util.c
src/app-utils/gnc-helpers.c
src/app-utils/gnc-ui-util.c
src/app-utils/guile-util.c
src/app-utils/option-util.c
src/app-utils/gnc-euro.c
src/app-utils/gncmod-app-utils.c
src/app-utils/gnc-exp-parser.c
src/tax/us/gncmod-tax-us.c
src/gnc-main.c
src/gnome-utils/dialog-utils.c
src/gnome-utils/druid-utils.c
src/gnome-utils/dialog-commodity.c
src/gnome-utils/gncmod-gnome-utils.c
src/gnome-utils/test/test-link-module.c
src/gnome-utils/gnc-amount-edit.c
src/gnome-utils/gnc-account-tree.c
src/gnome-utils/gnc-commodity-edit.c
src/gnome-utils/cursors.c
src/gnome-utils/gnc-html.c
src/gnome-utils/gnc-menu-extensions.c
src/gnome-utils/gnc-currency-edit.c
src/gnome-utils/gnc-gui-query.c
src/gnome-utils/gnc-date-edit.c
src/gnome-utils/gnc-html-history.c
src/gnome-utils/gnc-html-guppi.c
src/gnome-utils/gnc-frequency.c
src/gnome-utils/gnc-date-delta.c
src/gnome-utils/gtkselect.c
src/gnome-utils/print-session.c
src/gnome-utils/commodity.glade
src/gnome-utils/gnc-mdi-utils.c
src/gnome-utils/dialog-options.c
src/network-utils/gnc-gpg.c
src/network-utils/gnc-http.c
src/network-utils/gncmod-network-utils.c
src/network-utils/test/test-link-module.c
src/calculation/amort_opt.c
src/calculation/amort_prt.c
src/calculation/expression_parser.c
src/calculation/fin-interactive.c
src/calculation/fin-main.c
src/calculation/fin.c
src/calculation/numeric_ops.c
src/calculation/gncmod-calculation.c
src/engine/Account.c
src/engine/Backend.c
src/engine/DateUtils.c
src/engine/FreqSpec.c
src/engine/GNCId.c
src/engine/Group.c
src/engine/Query.c
src/engine/SchedXaction.c
src/engine/Scrub.c
src/engine/TransLog.c
src/engine/Transaction.c
src/engine/date.c
src/engine/engine-helpers.c
src/engine/glib-helpers.c
src/engine/gnc-associate-account.c
src/engine/gnc-book.c
src/engine/gnc-commodity.c
src/engine/gnc-engine.c
src/engine/gnc-event.c
src/engine/gnc-numeric.c
src/engine/gnc-pricedb.c
src/engine/gncmod-engine.c
src/engine/guid.c
src/engine/kvp_frame.c
src/engine/md5.c
src/engine/test/test-load-engine.c
src/engine/test/test-commodities.c
src/engine/test/test-resolve-file-path.c
src/engine/test/test-split-vs-account.c
src/engine/test/test-freq-spec.c
src/engine/test/test-scm-query.c
src/engine/test/test-group-vs-book.c
src/engine/test/test-transaction-voiding.c
src/engine/messages.c
src/engine/gnc-session.c
src/engine/SX-ttinfo.c
src/engine/kvp-scm.c
src/engine/test-core/test-engine-stuff.c
src/engine/test-core/gncmod-test-engine.c
src/engine/gnc-engine-util.c
src/app-file/gnc-file.c
src/app-file/gncmod-app-file.c
src/app-file/gnome/gnc-file-dialog.c
src/app-file/gnome/gnc-file-history.c
src/app-file/gnome/gncmod-app-file-gnome.c
src/app-file/gnome/gnc-file-dialog.c
src/experimental/cgi-bin/fastcgi-hello.c
src/experimental/cgi-bin/gnc-server.c
src/experimental/cgi-bin/hello.c
src/experimental/cgi-bin/hello2.c
src/experimental/cgi-bin/hello3.c
src/app-file/gnc-file.c
src/app-file/gncmod-app-file.c
src/gnc-module/test/misc-mods/agedver.c
src/gnc-module/test/misc-mods/futuremodsys.c
src/gnc-module/test/misc-mods/incompatdep.c
@ -180,22 +106,116 @@ src/gnc-module/test/mod-baz/gnc-mod-baz.c
src/gnc-module/test/mod-foo/foo.c
src/gnc-module/test/mod-foo/gnc-mod-foo.c
src/gnc-module/gnc-module.c
src/import-export/qif-import/dialog-account-picker.c
src/import-export/qif-import/druid-qif-import.c
src/import-export/qif-import/gncmod-qif-import.c
src/import-export/qif-import/qif.glade
src/import-export/qif-import/guile-strings.c
src/import-export/qif-io-core/gncmod-qifiocore.c
src/import-export/binary-import/test/test-link-module.c
src/import-export/binary-import/binary-import.glade
src/import-export/binary-import/druid-commodity.c
src/import-export/binary-import/gncmod-binary-import.c
src/gnome-utils/test/test-link-module.c
src/gnome-utils/cursors.c
src/gnome-utils/dialog-commodity.c
src/gnome-utils/dialog-utils.c
src/gnome-utils/druid-utils.c
src/gnome-utils/gnc-account-tree.c
src/gnome-utils/gnc-amount-edit.c
src/gnome-utils/gnc-commodity-edit.c
src/gnome-utils/gnc-currency-edit.c
src/gnome-utils/gnc-date-delta.c
src/gnome-utils/gnc-date-edit.c
src/gnome-utils/gnc-frequency.c
src/gnome-utils/gnc-gui-query.c
src/gnome-utils/gnc-html-guppi.c
src/gnome-utils/gnc-html-history.c
src/gnome-utils/gnc-html.c
src/gnome-utils/gnc-mdi-utils.c
src/gnome-utils/gnc-menu-extensions.c
src/gnome-utils/gncmod-gnome-utils.c
src/gnome-utils/gtkselect.c
src/gnome-utils/print-session.c
src/gnome-utils/commodity.glade
src/gnome-utils/dialog-options.c
src/gnc-main.c
src/report/locale-specific/us/gncmod-locale-reports-us.c
src/report/report-system/test/test-link-module.c
src/report/report-system/gncmod-report-system.c
src/report/report-system/gnc-report.c
src/report/standard-reports/gncmod-standard-reports.c
src/report/stylesheets/gncmod-stylesheets.c
src/report/utility-reports/gncmod-utility-reports.c
src/tax/us/gncmod-tax-us.c
src/engine/Account.c
src/engine/Backend.c
src/engine/DateUtils.c
src/engine/FreqSpec.c
src/engine/GNCId.c
src/engine/Group.c
src/engine/test/test-commodities.c
src/engine/test/test-freq-spec.c
src/engine/test/test-group-vs-book.c
src/engine/test/test-load-engine.c
src/engine/test/test-resolve-file-path.c
src/engine/test/test-scm-query.c
src/engine/test/test-split-vs-account.c
src/engine/test/test-transaction-voiding.c
src/engine/Query.c
src/engine/SchedXaction.c
src/engine/Scrub.c
src/engine/TransLog.c
src/engine/Transaction.c
src/engine/date.c
src/engine/gnc-associate-account.c
src/engine/gnc-book.c
src/engine/gncmod-engine.c
src/engine/gnc-commodity.c
src/engine/gnc-engine-util.c
src/engine/gnc-engine.c
src/engine/gnc-event.c
src/engine/gnc-numeric.c
src/engine/gnc-pricedb.c
src/engine/kvp-scm.c
src/engine/test-core/gncmod-test-engine.c
src/engine/test-core/test-engine-stuff.c
src/engine/guid.c
src/engine/kvp_frame.c
src/engine/md5.c
src/engine/SX-ttinfo.c
src/engine/gnc-session.c
src/engine/engine-helpers.c
src/engine/glib-helpers.c
src/engine/messages.c
src/experimental/cgi-bin/fastcgi-hello.c
src/experimental/cgi-bin/gnc-server.c
src/experimental/cgi-bin/hello.c
src/experimental/cgi-bin/hello2.c
src/experimental/cgi-bin/hello3.c
src/network-utils/test/test-link-module.c
src/network-utils/gnc-gpg.c
src/network-utils/gnc-http.c
src/network-utils/gncmod-network-utils.c
src/gnome/glade/account.glade
src/gnome/glade/commodities.glade
src/gnome/glade/sched-xact.glade
src/gnome/glade/fincalc.glade
src/gnome/glade/sched-xact_strings.c
src/gnome/glade/find.glade
src/gnome/glade/help.glade
src/gnome/glade/newuser.glade
src/gnome/glade/print.glade
src/gnome/glade/commodities.glade
src/gnome/glade/price.glade
src/gnome/glade/print.glade
src/gnome/glade/progress.glade
src/gnome/glade/register.glade
src/gnome/glade/report.glade
src/gnome/glade/stocks.glade
src/gnome/glade/sched-xact.glade
src/gnome/glade/tax.glade
src/gnome/glade/transfer.glade
src/gnome/glade/userpass.glade
src/gnome/gnucash.desktop.in
src/gnome/file-utils.c
src/gnome/dialog-account.c
src/gnome/dialog-column-view.c
src/gnome/dialog-commodities.c
@ -208,54 +228,42 @@ src/gnome/dialog-print-check.c
src/gnome/dialog-progress.c
src/gnome/dialog-scheduledxaction.c
src/gnome/dialog-style-sheet.c
src/gnome/dialog-sxsincelast.c
src/gnome/dialog-tax-info.c
src/gnome/dialog-totd.c
src/gnome/dialog-transfer.c
src/gnome/dialog-userpass.c
src/gnome/reconcile-list.c
src/gnome/window-main.c
src/gnome/druid-hierarchy.c
src/gnome/dialog-sx-from-trans.c
src/gnome/druid-stock-split.c
src/gnome/top-level.c
src/gnome/window-help.c
src/gnome/old-dialog-sxsincelast.c
src/gnome/gnc-network.c
src/gnome/gnc-splash.c
src/gnome/gnucash.keys.in
src/gnome/mainwindow-account-tree.c
src/gnome/window-reconcile.c
src/gnome/reconcile-list.c
src/gnome/top-level.c
src/gnome/window-acct-tree.c
src/gnome/window-help.c
src/gnome/window-main-summarybar.c
src/gnome/window-main.c
src/gnome/window-reconcile.c
src/gnome/window-register.c
src/gnome/window-report.c
src/gnome/dialog-sx-from-trans.c
src/gnome/gnucash.desktop.in
src/gnome/window-main-summarybar.c
src/gnome/dialog-sxsincelast.c
src/gnome/argv-list-converters.c
src/gnome/file-utils.c
src/guile/tip-of-the-day.c
src/import-export/qif-import/dialog-account-picker.c
src/import-export/qif-import/druid-qif-import.c
src/import-export/qif-import/gncmod-qif-import.c
src/import-export/qif-import/qif.glade
src/import-export/qif-io-core/gncmod-qifiocore.c
src/import-export/binary-import/druid-commodity.c
src/import-export/binary-import/gncmod-binary-import.c
src/import-export/binary-import/test/test-link-module.c
src/import-export/binary-import/binary-import.glade
src/optional/swig/gnucash-swig-defines.c
src/optional/swig/helperfuncs.c
src/test-core/test-stuff.c
src/test-core/gncmod-test.c
src/register/ledger-core/test/test-link-module.c
src/register/ledger-core/gnc-ledger-display.c
src/register/ledger-core/gncmod-ledger-core.c
src/register/ledger-core/split-register-control.c
src/register/ledger-core/split-register-layout.c
src/register/ledger-core/split-register-load.c
src/register/ledger-core/split-register-model-save.c
src/register/ledger-core/split-register-model.c
src/register/ledger-core/split-register-util.c
src/register/ledger-core/split-register.c
src/register/ledger-core/test/test-link-module.c
src/register/ledger-core/split-register-layout.c
src/register/register-core/QuickFill.c
src/register/register-core/basiccell.c
src/register/register-core/cell-factory.c
@ -267,12 +275,12 @@ src/register/register-core/pricecell.c
src/register/register-core/quickfillcell.c
src/register/register-core/recncell.c
src/register/register-core/register-common.c
src/register/register-core/test/test-link-module.c
src/register/register-core/table-allgui.c
src/register/register-core/table-control.c
src/register/register-core/table-html.c
src/register/register-core/table-layout.c
src/register/register-core/table-model.c
src/register/register-core/test/test-link-module.c
src/register/register-gnome/combocell-gnome.c
src/register/register-gnome/datecell-gnome.c
src/register/register-gnome/gncmod-register-gnome.c
@ -284,17 +292,17 @@ src/register/register-gnome/gnucash-header.c
src/register/register-gnome/gnucash-item-edit.c
src/register/register-gnome/gnucash-item-list.c
src/register/register-gnome/gnucash-scrolled-window.c
src/register/register-gnome/gnucash-sheet.c
src/register/register-gnome/gnucash-style.c
src/register/register-gnome/pricecell-gnome.c
src/register/register-gnome/quickfillcell-gnome.c
src/register/register-gnome/table-gnome.c
src/register/register-gnome/test/test-link-module.c
src/report/locale-specific/us/gncmod-locale-reports-us.c
src/report/report-system/test/test-link-module.c
src/report/report-system/gncmod-report-system.c
src/report/report-system/gnc-report.c
src/report/standard-reports/gncmod-standard-reports.c
src/report/stylesheets/gncmod-stylesheets.c
src/report/utility-reports/gncmod-utility-reports.c
src/register/register-gnome/gnucash-sheet.c
src/scm/gnumeric/guile-strings.c
src/scm/guile-strings.c
src/scm/printing/guile-strings.c
src/scm/qif-import/guile-strings.c
src/scm/report/guile-strings.c
src/test-core/gncmod-test.c
src/test-core/test-stuff.c
intl-scm/guile-strings.c

View File

@ -33,13 +33,57 @@ X create a template register
. this is going to be: a tabbed notebook in which the tabs contain
the number of transactions the GL they hold contain.
. register macro-widget
. should support
. toolbar
. Close
. Enter
. Cancel
. Delete
. Duplicate
. Schedule
. Split
. Blank
. Jump
. Transfer
. Find
. Report
. Print
. popup menu
. elts
. Enter
. Cancel
. Delete
. Duplicate
. Schedule
. Split
. Blank
. Jump
. extended to support previously-menu-accessible options in embedded case
. status bar
. configurable UI elts [menu, toolbar, status]
. default callbacks
. override-able
. bitmask of supported functionality
. !"Schedule..." for the embedded-in-SX-editor case, gray-out
. shouldn't [necessarily] support
. date range [may be fixed/irrelevant by caller]
. style changes [caller may enforce]
. NOTES/ISSUES
. pass in prefix for gnc_reg_save_size(...)
? Hook into 'book data changed' save-on-exit decision
. SX list
. add a big calendar [gnome-pim? evo?] to SXaction List/overview
. tab order
. SX editor
. 'Cancel' button should auto-cancel ledger changes
. tab order
. make-from-transaction
X credit/debit pull-over issues
@ -55,6 +99,7 @@ X create a template register
. match existing transactions for long-time users
. based off template-transaction data, some big existing-transaction
scanning code.
. tab-order
. need "since-last-run" UI for instanatiation.
X Change from dialogs to druid
@ -71,6 +116,7 @@ X create a template register
X Is it sufficient to look at the next instance of ea. transaction only?
I think not... we probably want to look out until the transaction is
outside the reminder range.
. tab-order
. need some configuration for constantly-running GnuCash users of when to
pop up the 'new scheduled transactions' dialog [option, time-of-day]
. Should deal with "nothing-to-do" better [not even show up in the worst
@ -184,7 +230,7 @@ X General
. Size/space issues.
. Un-selecting "End Date" leaves calendar widget sensitive
. 'ESC' while editing template register causes window to go away [badly].
. why does the accounts tab go crazy when we change the FreqSpec parameters?
. why does the accounts window go crazy when we change the FreqSpec parameters?
. Scheduled Transaction List
@ -196,6 +242,10 @@ X General
? credit and debit seem reversed at instantiation time...
. this is fixed, but is the fix correct?
. SX-from-trans
. you can delete a freshly-from-trans'd SX from the list with the
from-trans dlg still open, then 'ok' the dlg to get a segfault.
##################################################
### Enhancements
##################################################
@ -329,3 +379,106 @@ conrad wants to use this to remind him to pay his bills. He runs GnuCash
continuously, and thus wants an option to "pop-up on day change [at time
HH:MM]". He's interested in seeing future transactions as well as what's
being created ATM.
--------------------
window-register notes:
. RegWindow *regWindowSimple (Account *account)
. RegWindow *regWindowAccGroup (Account *account)
. functionality should remain, probably in reg mwidget
. void gnc_register_raise (RegWindow *regData)
. probably should remain here; if the reg mwidget has knowledge of it's
containing window, then it can go there.
. void gnc_register_jump_to_split(RegWindow *regData, Split *split)
. void gnc_register_jump_to_split_amount(RegWindow *regData, Split *split)
. should be part of mwidget
. static void gnc_register_change_style (RegWindow *regData, SplitRegisterStyle style)
. static void gnc_register_style_(ledger|auto_ledger|journal|double_line_cb (GtkWidget *w, gpointer data)
. mwidget
. static void gnc_register_sort_(standard|date|date_entered|date_reconciled|num|amount|memo|desc)_cb(GtkWidget *w, gpointer data)
. static void gnc_register_sort (RegWindow *regData, sort_type_t sort_code)
. mwidget
. some of these may not make sense in embedded applications
. static time_t gnc_register_(min|max)_day_time(time_t time_val)
. eh? This should probably be a util function somewhere
. static void gnc_date_range_set_sensitivities(RegWindow *regData)
. static void gnc_register_set_date_range(RegWindow *regData)
. static void gnc_register_date_cb(GtkWidget *widget, gpointer data)
. static void show_all_cb(GtkWidget *widget, gpointer data)
. static void gnc_register_today_cb(GtkWidget *widget, gpointer data)
. static void gnc_register_date_toggle_cb(GtkToggleButton *toggle, gpointer data)
. static void gnc_register_date_changed_cb(GtkWidget *widget, gpointer data)
. static void gnc_register_show_date_window(RegWindow *regData)
. static RegDateWindow *gnc_register_date_window (RegWindow *regData, gboolean show_all)
. need DateWindow policy/decision.
. static GtkWidget *gnc_register_create_tool_bar (RegWindow *regData)
. mwidget
. static void gnc_ui_find_transactions_cb (GtkWidget *widget, gpointer data)
. necessary for embedded applications?
. static GtkWidget *add_summary_label (GtkWidget *summarybar, const char *label_str)
. mwidget [option]
. static GtkWidget *gnc_register_create_summary_bar (RegWindow *regData)
. static GtkWidget *gnc_register_create_status_bar (RegWindow *regData)
. mwidget [options]
. void gnc_register_jump_to_blank (RegWindow *regData)
. helper for various callbacks
. mwidget
. static void expand_trans_check_cb (GtkWidget *widget, gpointer data)
. static void new_trans_cb (GtkWidget *widget, gpointer data)
. static void jump_cb(GtkWidget *widget, gpointer data)
. static GtkWidget *gnc_register_create_menu_bar(RegWindow *regData, GtkWidget *statusbar)
. mwidget
. should take menubar as param
. static GtkWidget *gnc_register_create_popup_menu (RegWindow *regData)
. mwidget
. should take popup as param
. static void gnc_register_destroy_cb(GtkWidget *widget, gpointer data)
. needs to integrate more nicely
. RegWindow *regWindowLedger (GNCLedgerDisplay *ledger)
. Creates the ledger :)
. Sets up the data struct :)
. Creates a gtk_window_new :(
. Creates a gnc_register_date_window :I
. Creates the statusbar, toolbar, popup, menubar :/
. recalls saved window_size from prefix [param]
. static gnc_numeric gnc_account_present_balance (Account *account)
. static GNCPrice *account_latest_price (Account *account)
. mwidget?
. static void startRecnCB(GtkWidget * w, gpointer data)
. recn: configurable behavior
. static gboolean gnc_register_include_date(RegWindow *regData, time_t date)
. date-range stuff.
. static gboolean trans_has_reconciled_splits (Transaction *trans)
. util
. static DeleteType gnc_transaction_delete_query (GtkWindow *parent, Transaction *trans)
. default is probably good; mwidget
. ideally have way to customize text
. static void gnc_register_check_close(RegWindow *regData)
. should be mwidget util fn
. static void report_helper (RegWindow *regData, SCM func, Query *query)
. mwidget util

View File

@ -245,26 +245,19 @@ xaccSchedXactionGetEndDate( SchedXaction *sx )
void
xaccSchedXactionSetEndDate( SchedXaction *sx, GDate *newEnd )
{
if ( g_date_valid( newEnd ) ) {
if ( g_date_compare( newEnd, &sx->start_date ) < 0 ) {
/* XXX: I reject the bad data - is this the right
* thing to do <rgmerk>.
* This warning is only human readable - the caller
* doesn't know the call failed. This is bad
*/
PWARN( "New end date before start date" );
}
else
{
sx->end_date = *newEnd;
sx->dirty = TRUE;
}
}
else
{
PWARN("New end date invalid");
if ( g_date_valid( newEnd )
&& g_date_compare( newEnd, &sx->start_date ) < 0 ) {
/* XXX: I reject the bad data - is this the right
* thing to do <rgmerk>.
* This warning is only human readable - the caller
* doesn't know the call failed. This is bad
*/
PWARN( "New end date before start date" );
return;
}
sx->end_date = *newEnd;
sx->dirty = TRUE;
return;
}
@ -314,9 +307,7 @@ xaccSchedXactionSetRemOccur( SchedXaction *sx,
{
/* FIXME This condition can be tightened up */
if ( numRemain > sx->num_occurances_total ) {
PWARN("The number remaining is greater than the \
total occurrences");
PWARN("The number remaining is greater than the total occurrences");
}
else
{

View File

@ -168,6 +168,8 @@ gnc_account_tree_new_with_root (Account * root)
static void
gnc_account_tree_init (GNCAccountTree *tree)
{
gint i;
tree->root_account = *xaccGUIDNULL ();
tree->current_accounts = NULL;
tree->ignore_unselect = FALSE;
@ -187,6 +189,9 @@ gnc_account_tree_init (GNCAccountTree *tree)
gtk_clist_set_shadow_type(GTK_CLIST(tree), GTK_SHADOW_IN);
gtk_clist_column_titles_passive(GTK_CLIST(tree));
gtk_clist_set_column_auto_resize(GTK_CLIST(tree), 0, TRUE);
gtk_clist_set_column_auto_resize(GTK_CLIST(tree),
tree->description_column, TRUE );
gtk_clist_set_column_justification(GTK_CLIST(tree),
tree->balance_column,
GTK_JUSTIFY_RIGHT);
@ -942,6 +947,8 @@ gnc_account_tree_set_view_info_real(GNCAccountTree *tree)
tree->column_fields[i++] = ACCOUNT_TYPE;
tree->column_fields[i++] = ACCOUNT_COMMODITY;
tree->column_fields[i++] = ACCOUNT_CODE;
tree->description_column = i;
tree->column_fields[i++] = ACCOUNT_DESCRIPTION;
tree->balance_column = i;

View File

@ -65,6 +65,7 @@ struct GNCAccountTree_s
AccountViewInfo avi;
gint num_columns;
gint description_column;
gint balance_column;
gint total_column;
AccountFieldCode column_fields[NUM_ACCOUNT_FIELDS];

View File

@ -61,6 +61,7 @@ static short module = MOD_SX;
#define REMIND_OPT "remind_opt"
#define REMIND_DAYS_SPIN "remind_days"
#define END_GNOME_NUMENTRY "end_gnome_nentry"
#define REMAIN_GNOME_NUMENTRY "remain_gnome_nentry"
#define END_OPTION 0
#define NUM_OCCUR_OPTION 1
@ -243,6 +244,11 @@ editor_ok_button_clicked( GtkButton *b, SchedXactionEditorDialog *sxed )
w = glade_xml_get_widget( sxed->gxml, END_GNOME_NUMENTRY );
num = (gint)gnome_number_entry_get_number( GNOME_NUMBER_ENTRY(w) );
xaccSchedXactionSetNumOccur( sxed->sx, num );
w = glade_xml_get_widget( sxed->gxml, REMAIN_GNOME_NUMENTRY );
num = (gint)gnome_number_entry_get_number( GNOME_NUMBER_ENTRY(w) );
xaccSchedXactionSetRemOccur( sxed->sx, num );
g_date_clear( gdate, 1 );
xaccSchedXactionSetEndDate( sxed->sx, gdate );
} else if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(optNoEnd) ) ) {
@ -637,6 +643,8 @@ schedXact_editor_init( SchedXactionEditorDialog *sxed )
GtkWidget *w;
w = glade_xml_get_widget( sxed->gxml, END_GNOME_NUMENTRY );
gtk_widget_set_sensitive( w, FALSE );
w = glade_xml_get_widget( sxed->gxml, REMAIN_GNOME_NUMENTRY );
gtk_widget_set_sensitive( w, FALSE );
/* Allow grow, allow shrink, auto-shrink */
gtk_window_set_policy (GTK_WINDOW(sxed->dialog), TRUE, TRUE, FALSE);
@ -998,14 +1006,25 @@ schedXact_editor_populate( SchedXactionEditorDialog *sxed )
set_endgroup_toggle_states( sxed, END_DATE );
} else if ( xaccSchedXactionHasOccurDef( sxed->sx ) ) {
gint numOccur = xaccSchedXactionGetNumOccur( sxed->sx );
gint numRemain = xaccSchedXactionGetRemOccur( sxed->sx );
w = glade_xml_get_widget( sxed->gxml, "rb_num_occur" );
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(w), TRUE );
w = glade_xml_get_widget( sxed->gxml, END_GNOME_NUMENTRY );
w = gnome_number_entry_gtk_entry( GNOME_NUMBER_ENTRY(w) );
tmpgStr = g_string_sized_new(5);
g_string_sprintf( tmpgStr, "%d", numOccur );
gtk_entry_set_text( GTK_ENTRY(w), tmpgStr->str );
g_string_free( tmpgStr, TRUE );
w = glade_xml_get_widget( sxed->gxml, REMAIN_GNOME_NUMENTRY );;
w = gnome_number_entry_gtk_entry( GNOME_NUMBER_ENTRY(w) );
tmpgStr = g_string_sized_new(5);
g_string_sprintf( tmpgStr, "%d", numRemain );
gtk_entry_set_text( GTK_ENTRY(w), tmpgStr->str );
g_string_free( tmpgStr, TRUE );
set_endgroup_toggle_states( sxed, END_OCCUR );
} else {
w = glade_xml_get_widget( sxed->gxml, "rb_noend" );
@ -1098,6 +1117,9 @@ set_endgroup_toggle_states( SchedXactionEditorDialog *sxed, EndType type )
occurCtl = glade_xml_get_widget( sxed->gxml, END_GNOME_NUMENTRY );
gtk_widget_set_sensitive( GTK_WIDGET(occurCtl), (type == END_OCCUR) );
occurCtl = glade_xml_get_widget( sxed->gxml, REMAIN_GNOME_NUMENTRY );
gtk_widget_set_sensitive( GTK_WIDGET(occurCtl), (type == END_OCCUR) );
}
static

View File

@ -53,6 +53,7 @@
static short module = MOD_SX;
static void sxftd_ok_clicked(GtkWidget *w, gpointer user_data);
static void sxftd_freq_option_changed( GtkWidget *w, gpointer user_data );
static void sxftd_advanced_clicked(GtkWidget *w, gpointer user_data);
static void sxftd_cancel_clicked(GtkWidget *w, gpointer user_data);
@ -98,10 +99,10 @@ sxfti_attach_callbacks(SXFromTransInfo *sxfti)
widgetSignalHandlerTuple callbacks[] =
{
{SXFTD_OK_BUTTON, "clicked", sxftd_ok_clicked},
{SXFTD_ADVANCED_BUTTON, "clicked", sxftd_advanced_clicked},
{SXFTD_CANCEL_BUTTON, "clicked", sxftd_cancel_clicked},
{NULL, NULL, NULL}
{ SXFTD_OK_BUTTON, "clicked", sxftd_ok_clicked },
{ SXFTD_ADVANCED_BUTTON, "clicked", sxftd_advanced_clicked },
{ SXFTD_CANCEL_BUTTON, "clicked", sxftd_cancel_clicked },
{ NULL, NULL, NULL }
};
int i;
@ -139,14 +140,14 @@ sxftd_get_end_info(SXFromTransInfo *sxfti)
if(gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(w)))
{
time_t end_t_jul;
time_t end_tt;
retval.type = END_ON_DATE;
g_date_clear( &(retval.end_date), 1 );
w = glade_xml_get_widget(sxfti->gxml, SXFTD_END_DATE_EDIT);
end_t_jul = gnome_date_edit_get_date(GNOME_DATE_EDIT(w));
end_tt = gnome_date_edit_get_date(GNOME_DATE_EDIT(w));
g_date_set_julian( &(retval.end_date), end_t_jul);
g_date_set_time( &(retval.end_date), end_tt);
return retval;
}
@ -229,12 +230,64 @@ sxftd_add_template_trans(SXFromTransInfo *sxfti)
return 0;
}
static void
sxftd_update_fs( SXFromTransInfo *sxfti, GDate *date, FreqSpec *fs )
{
gint index;
GtkWidget *w;
FreqSpec *tmpfs;
/* Note that we make the start date the *NEXT* instance, not the
* present one. */
w = glade_xml_get_widget(sxfti->gxml, SXFTD_FREQ_OPTION_MENU);
index = gnc_option_menu_get_active(w);
switch(index)
{
case FREQ_DAILY:
xaccFreqSpecSetDaily(fs, date, 1);
xaccFreqSpecSetUIType(fs, UIFREQ_DAILY);
break;
case FREQ_WEEKLY:
tmpfs = xaccFreqSpecMalloc(gnc_get_current_session ());
xaccFreqSpecSetComposite(fs);
xaccFreqSpecSetWeekly(tmpfs, date, 1);
xaccFreqSpecSetUIType(fs, UIFREQ_WEEKLY);
xaccFreqSpecCompositeAdd(fs,tmpfs);
break;
case FREQ_MONTHLY:
xaccFreqSpecSetMonthly(fs, date, 1);
xaccFreqSpecSetUIType(fs, UIFREQ_MONTHLY);
break;
case FREQ_QUARTERLY:
xaccFreqSpecSetMonthly(fs, date, 3);
xaccFreqSpecSetUIType(fs, UIFREQ_QUARTERLY);
break;
case FREQ_ANNUALLY:
xaccFreqSpecSetMonthly(fs, date, 12);
xaccFreqSpecSetUIType(fs, UIFREQ_YEARLY);
break;
default:
PERR("Nonexistent frequency selected. This is a bug.");
break;
}
}
static gint
sxftd_init( SXFromTransInfo *sxfti )
{
GtkWidget *w;
const char *transName;
gint pos;
FreqSpec *fs;
time_t start_tt;
struct tm *tmpTm;
GDate date, nextDate;
if ( ! sxfti->sx ) {
return -1;
@ -249,6 +302,23 @@ sxftd_init( SXFromTransInfo *sxfti )
transName = xaccTransGetDescription( sxfti->trans );
xaccSchedXactionSetName( sxfti->sx, transName );
/* Setup the initial start date for user display/confirmation */
w = glade_xml_get_widget( sxfti->gxml, SXFTD_START_DATE_EDIT );
/* compute good initial date. */
start_tt = xaccTransGetDate( sxfti->trans );
g_date_set_time( &date, start_tt );
fs = xaccFreqSpecMalloc( gnc_get_current_session() );
sxftd_update_fs( sxfti, &date, fs );
xaccFreqSpecGetNextInstance( fs, &date, &nextDate );
w = glade_xml_get_widget( sxfti->gxml, SXFTD_START_DATE_EDIT );
tmpTm = g_new0( struct tm, 1 );
g_date_to_struct_tm( &nextDate, tmpTm );
start_tt = mktime( tmpTm );
g_free( tmpTm );
gnome_date_edit_set_time( GNOME_DATE_EDIT(w), start_tt );
w = glade_xml_get_widget( sxfti->gxml, SXFTD_NAME_ENTRY );
pos = 0;
gtk_editable_insert_text( GTK_EDITABLE(w), transName,
@ -257,6 +327,10 @@ sxftd_init( SXFromTransInfo *sxfti )
w = glade_xml_get_widget(sxfti->gxml,
SXFTD_FREQ_OPTION_MENU);
gnc_option_menu_init(w);
w = gtk_option_menu_get_menu( GTK_OPTION_MENU(w) );
gtk_signal_connect( GTK_OBJECT(w), "selection-done",
GTK_SIGNAL_FUNC(sxftd_freq_option_changed),
sxfti );
return 0;
}
@ -267,18 +341,14 @@ sxftd_compute_sx(SXFromTransInfo *sxfti)
GtkWidget *w;
gchar *name;
GDate date;
time_t trans_t;
int index;
FreqSpec *fs, *tmpfs;
getEndTuple end_info;
guint sxftd_errno = 0; /* 0 == OK, > 0 means dialog needs to be run again */
FreqSpec *fs, *tmpfs;
SchedXaction *sx = sxfti->sx;
/* get the name */
w = glade_xml_get_widget(sxfti->gxml, SXFTD_NAME_ENTRY);
name = gtk_editable_get_chars(GTK_EDITABLE(w), 0, -1);
@ -286,72 +356,15 @@ sxftd_compute_sx(SXFromTransInfo *sxfti)
xaccSchedXactionSetName(sx, name);
g_free(name);
/* get the date (basis for start date) */
trans_t = xaccTransGetDate(sxfti->trans);
g_date_set_time(&date, trans_t);
w = glade_xml_get_widget( sxfti->gxml, SXFTD_START_DATE_EDIT );
g_date_set_time( &date, gnome_date_edit_get_date( GNOME_DATE_EDIT(w) ) );
fs = xaccFreqSpecMalloc(gnc_get_current_session ());
/* get the frequency */
w = glade_xml_get_widget(sxfti->gxml, SXFTD_FREQ_OPTION_MENU);
index = gnc_option_menu_get_active(w);
/* Note that we make the start date the *NEXT* instance, not the
* present one
*/
/* Methinks this should use the FreqSpec to do the calculation... --jsled */
switch(index)
{
case FREQ_DAILY:
g_date_add_days(&date, 1);
xaccFreqSpecSetDaily(fs, &date, 1);
xaccFreqSpecSetUIType(fs, UIFREQ_DAILY);
break;
case FREQ_WEEKLY:
g_date_add_days(&date, 7);
tmpfs = xaccFreqSpecMalloc(gnc_get_current_session ());
xaccFreqSpecSetComposite(fs);
xaccFreqSpecSetWeekly(tmpfs, &date, 1);
xaccFreqSpecSetUIType(fs, UIFREQ_WEEKLY);
xaccFreqSpecCompositeAdd(fs,tmpfs);
break;
case FREQ_MONTHLY:
g_date_add_months(&date, 1);
xaccFreqSpecSetMonthly(fs, &date, 1);
xaccFreqSpecSetUIType(fs, UIFREQ_MONTHLY);
break;
case FREQ_QUARTERLY:
g_date_add_months(&date, 3);
xaccFreqSpecSetMonthly(fs, &date, 3);
xaccFreqSpecSetUIType(fs, UIFREQ_QUARTERLY);
break;
case FREQ_ANNUALLY:
g_date_add_years(&date, 1);
xaccFreqSpecSetMonthly(fs, &date, 12);
xaccFreqSpecSetUIType(fs, UIFREQ_YEARLY);
break;
default:
PERR("Nonexistent frequency selected. This is a bug.");
break;
}
sxftd_update_fs( sxfti, &date, fs );
if (sxftd_errno == 0)
{
xaccSchedXactionSetFreqSpec( sx, fs);
xaccSchedXactionSetStartDate(sx, &date);
xaccSchedXactionSetStartDate( sx, &date );
}
end_info = sxftd_get_end_info(sxfti);
@ -416,6 +429,35 @@ sxftd_ok_clicked(GtkWidget *w, gpointer user_data)
return;
}
/**
* Update start date... right now we always base this off the transaction
* start date, but ideally we want to respect what the user has in the field,
* somehow.
**/
static void
sxftd_freq_option_changed( GtkWidget *w, gpointer user_data )
{
SXFromTransInfo *sxfti = (SXFromTransInfo*)user_data;
GtkWidget *start_date;
GDate date, nextDate;
time_t tmp_tt;
struct tm *tmpTm;
FreqSpec *fs;
tmp_tt = xaccTransGetDate( sxfti->trans );
g_date_set_time( &date, tmp_tt );
fs = xaccFreqSpecMalloc( gnc_get_current_session() );
sxftd_update_fs( sxfti, &date, fs );
xaccFreqSpecGetNextInstance( fs, &date, &nextDate );
start_date = glade_xml_get_widget( sxfti->gxml, SXFTD_START_DATE_EDIT );
tmpTm = g_new0( struct tm, 1 );
g_date_to_struct_tm( &nextDate, tmpTm );
tmp_tt = mktime( tmpTm );
g_free( tmpTm );
gnome_date_edit_set_time( GNOME_DATE_EDIT(start_date), tmp_tt );
}
static void
sxftd_cancel_clicked(GtkWidget *w, gpointer user_data)

View File

@ -68,6 +68,7 @@
#define DIALOG_SXSINCELAST_OBSOLETE_CM_CLASS "dialog-sxsincelast-obsolete"
#define DIALOG_SXSINCELAST_GLADE_NAME "Since Last Run Druid"
#define SXSLD_DRUID_GLADE_NAME "sincelast_druid"
#define SINCELAST_DRUID "sincelast_druid"
#define REMINDERS_PG "reminders_page"
@ -94,6 +95,8 @@
#define SX_OBSOLETE_CLIST_WIDTH 3
#define COERCE_VOID_TO_GBOOLEAN(x) ((gboolean)(*#x))
#ifdef HAVE_LANGINFO_D_FMT
# define GNC_D_FMT (nl_langinfo (D_FMT))
#else
@ -106,18 +109,31 @@
static short module = MOD_SX;
/**
* There are two dialogs controled in this file: the since-last-run dialog,
* and the reminder-dialog. They cooperate and inter-relate, so they're both
* handled here.
* The since-last-run dialog is a Gnome Druid which steps through the various
* parts of scheduled transaction since-last-run processing; these parts are:
*
* 1. Display and select SX reminders for creation
* 2. Show/allow editing of auto-created + notification-request SXes
* 3. Show to-create SXes, allowing variable binding
* 4. Show created SXes, allowing editing
* 5. Allow deletion of any obsolete SXes
*
* Pages which aren't relevant are skipped; this is handled in the 'prep'
* signal handler: e.g., a since-last dialog with only obsolete SXes would go
* through the 'prep' methods of all it's pages to reach the Obsolete page.
**/
typedef struct _sxSinceLastData {
GtkWidget *druid_sincelast;
GtkWidget *sincelast_window;
GnomeDruid *sincelast_druid;
GladeXML *gxml;
GList /* <toCreateTuple*> */ *toCreateData;
GList /* <reminderTuple*> */ *reminderList;
GList /* <toDeleteTuple*> */ *toRemoveList;
gboolean autoCreatedSomething;
GNCLedgerDisplay *ac_ledger;
GnucashRegister *reg;
} sxSinceLastData;
@ -256,9 +272,12 @@ gnc_ui_sxsincelast_dialog_create(void)
sxsld->gxml = gnc_glade_xml_new( SX_GLADE_FILE,
DIALOG_SXSINCELAST_GLADE_NAME );
sxsld->druid_sincelast =
sxsld->sincelast_window =
glade_xml_get_widget( sxsld->gxml,
DIALOG_SXSINCELAST_GLADE_NAME );
sxsld->sincelast_druid =
GNOME_DRUID( glade_xml_get_widget( sxsld->gxml,
SXSLD_DRUID_GLADE_NAME ) );
sxsincelast_init( sxsld );
}
@ -281,8 +300,11 @@ typedef struct {
typedef struct {
char *pageName;
char *signal;
gboolean (*handlerFn)();
void (*prepareHandlerFn)();
gboolean (*backHandlerFn)();
gboolean (*nextHandlerFn)();
void (*finishHandlerFn)();
gboolean (*cancelHandlerFn)();
} druidSignalHandlerTuple;
static void
@ -309,14 +331,38 @@ druid_pages_attach_handlers( GladeXML *dialog_xml,
{
int i;
GtkWidget *w;
static char *HANDLER_NAMES[] = {
"prepare", "back", "next", "finish", "cancel"
};
for(i = 0; handler_info[i].pageName != NULL; i++)
{
w = glade_xml_get_widget(dialog_xml, handler_info[i].pageName);
gtk_signal_connect( GTK_OBJECT(w),
handler_info[i].signal,
GTK_SIGNAL_FUNC(handler_info[i].handlerFn),
sxsld);
if ( handler_info[i].prepareHandlerFn ) {
gtk_signal_connect( GTK_OBJECT(w), "prepare",
GTK_SIGNAL_FUNC(handler_info[i].prepareHandlerFn),
sxsld);
}
if ( handler_info[i].backHandlerFn ) {
gtk_signal_connect( GTK_OBJECT(w), "back",
GTK_SIGNAL_FUNC(handler_info[i].backHandlerFn),
sxsld);
}
if ( handler_info[i].nextHandlerFn ) {
gtk_signal_connect( GTK_OBJECT(w), "next",
GTK_SIGNAL_FUNC(handler_info[i].nextHandlerFn),
sxsld);
}
if ( handler_info[i].finishHandlerFn ) {
gtk_signal_connect( GTK_OBJECT(w), "finish",
GTK_SIGNAL_FUNC(handler_info[i].finishHandlerFn),
sxsld);
}
if ( handler_info[i].cancelHandlerFn ) {
gtk_signal_connect( GTK_OBJECT(w), "cancel",
GTK_SIGNAL_FUNC(handler_info[i].cancelHandlerFn),
sxsld);
}
}
}
@ -337,12 +383,21 @@ theres_no_turning_back_bang( GnomeDruidPage *druid_page,
return TRUE;
}
static gboolean
static void
reminders_prep( GnomeDruidPage *druid_page,
gpointer arg1, gpointer ud )
{
DEBUG( "reminders_prep" );
return FALSE;
sxSinceLastData *sxsld = (sxSinceLastData*)ud;
GtkWidget *w;
DEBUG( "begin" );
if ( g_list_length( sxsld->reminderList ) == 0 ) {
DEBUG( "reminders." );
w = glade_xml_get_widget( sxsld->gxml,
AUTO_CREATE_NOTIFY_PG );
gnome_druid_set_page( sxsld->sincelast_druid,
GNOME_DRUID_PAGE(w) );
}
DEBUG( "done" );
}
static gboolean
@ -366,7 +421,7 @@ reminders_back( GnomeDruidPage *druid_page,
return FALSE;
}
static gboolean
static void
reminders_finish( GnomeDruidPage *druid_page,
gpointer arg1, gpointer ud )
{
@ -382,16 +437,62 @@ reminders_cancel( GnomeDruidPage *druid_page,
return FALSE;
}
static gboolean
static void
auto_create_prep( GnomeDruidPage *druid_page,
gpointer arg1, gpointer ud )
{
GtkWidget *w;
sxSinceLastData *sxsld = (sxSinceLastData*)ud;
if ( ! sxsld->autoCreatedSomething ) {
w = glade_xml_get_widget( sxsld->gxml, TO_CREATE_PG );
gnome_druid_set_page( sxsld->sincelast_druid,
GNOME_DRUID_PAGE(w) );
return;
}
}
static void
to_create_prep( GnomeDruidPage *druid_page,
gpointer arg1, gpointer ud )
{
GtkWidget *w;
sxSinceLastData *sxsld = (sxSinceLastData*)ud;
if ( g_list_length( sxsld->toCreateData ) == 0 ) {
w = glade_xml_get_widget( sxsld->gxml, CREATED_PG );
gnome_druid_set_page( sxsld->sincelast_druid,
GNOME_DRUID_PAGE(w) );
return;
}
}
static void
created_prep( GnomeDruidPage *druid_page,
gpointer arg1, gpointer ud )
{
GtkWidget *w;
sxSinceLastData *sxsld = (sxSinceLastData*)ud;
if ( /* FIXME: signal that we had to create a bunch of stuff from the
previous page. */ 1 ) {
w = glade_xml_get_widget( sxsld->gxml, OBSOLETE_PG );
gnome_druid_set_page( sxsld->sincelast_druid, GNOME_DRUID_PAGE(w) );
return;
}
}
static void
obsolete_prep( GnomeDruidPage *druid_page,
gpointer arg1, gpointer ud )
{
GtkWidget *w;
sxSinceLastData *sxsld = (sxSinceLastData*)ud;
DEBUG( "obsolete_prep" );
if ( g_list_length( sxsld->toRemoveList ) > 0 ) {
processRemoveList( sxsld->toRemoveList, sxsld );
if ( g_list_length( sxsld->toRemoveList ) == 0 ) {
w = glade_xml_get_widget( sxsld->gxml, FINISH_PG );
gnome_druid_set_page( sxsld->sincelast_druid, GNOME_DRUID_PAGE(w) );
return;
}
return FALSE;
processRemoveList( sxsld->toRemoveList, sxsld );
}
static gboolean
@ -509,32 +610,36 @@ sxsincelast_init( sxSinceLastData *sxsld )
};
static druidSignalHandlerTuple pages[] = {
{ REMINDERS_PG, "prepare", reminders_prep },
{ REMINDERS_PG, "next", reminders_next },
{ REMINDERS_PG, "finish", reminders_finish },
{ REMINDERS_PG, "cancel", reminders_cancel },
{ REMINDERS_PG,
reminders_prep, theres_no_turning_back_bang, reminders_next,
reminders_finish, reminders_cancel },
{ TO_CREATE_PG, "next", to_create_next },
{ TO_CREATE_PG,
to_create_prep, theres_no_turning_back_bang, to_create_next,
NULL, NULL },
{ REMINDERS_PG, "back", theres_no_turning_back_bang },
{ AUTO_CREATE_NOTIFY_PG, "back", theres_no_turning_back_bang },
{ TO_CREATE_PG, "back", theres_no_turning_back_bang },
{ CREATED_PG, "back", theres_no_turning_back_bang },
{ OBSOLETE_PG, "back", theres_no_turning_back_bang },
{ AUTO_CREATE_NOTIFY_PG,
auto_create_prep, theres_no_turning_back_bang, NULL,
NULL, NULL },
{ OBSOLETE_PG, "prepare", obsolete_prep },
{ OBSOLETE_PG, "next", obsolete_next },
{ CREATED_PG,
created_prep, theres_no_turning_back_bang, NULL,
NULL, NULL },
{ NULL, NULL, NULL }
{ OBSOLETE_PG,
obsolete_prep, theres_no_turning_back_bang, obsolete_next,
NULL, NULL},
{ NULL, NULL, NULL, NULL, NULL, NULL }
};
gnc_register_gui_component( DIALOG_SXSINCELAST_CM_CLASS,
NULL,
sxsincelast_close_handler,
sxsld->druid_sincelast );
sxsld->sincelast_window );
gtk_signal_connect( GTK_OBJECT(sxsld->druid_sincelast), "destroy",
gtk_signal_connect( GTK_OBJECT(sxsld->sincelast_window), "destroy",
GTK_SIGNAL_FUNC( sxsincelast_destroy ), sxsld );
dialog_widgets_attach_handlers(sxsld->gxml, widgets, sxsld);
@ -557,7 +662,7 @@ sxsincelast_init( sxSinceLastData *sxsld )
sxsincelast_close_handler( sxsld );
return;
}
gtk_widget_show_all( sxsld->druid_sincelast );
gtk_widget_show_all( sxsld->sincelast_window );
}
static void
@ -679,6 +784,7 @@ processAutoCreateList( GList *autoCreateList, sxSinceLastData *sxsld, SchedXacti
&notifyState );
create_transactions_on( sx, (GDate*)autoCreateList->data,
NULL, &createdGUIDs );
sxsld->autoCreatedSomething |= TRUE;
if ( notifyState ) {
thisGUID = createdGUIDs;
for ( ; thisGUID ; (thisGUID = thisGUID->next) ) {
@ -964,6 +1070,8 @@ clean_sincelast_dlg( sxSinceLastData *sxsld )
/* . clean out to-create clist
* . free associated memories.
*
* FIXME: other dlg stuff to clean?
*/
clean_variable_table( sxsld );
@ -1010,12 +1118,10 @@ sxsincelast_close_handler( gpointer ud )
sxSinceLastData *sxsld = (sxSinceLastData*)ud;
DEBUG( "sxsincelast_close_handler" );
gtk_widget_hide( sxsld->sincelast_window );
clean_sincelast_dlg( sxsld );
gtk_widget_hide( sxsld->druid_sincelast );
gtk_widget_destroy( sxsld->druid_sincelast );
gtk_widget_destroy( sxsld->sincelast_window );
clean_sincelast_data( sxsld );
/* gtk_widget_destroy( sxsld->druid_sincelast ); */
}
static void
@ -2035,7 +2141,7 @@ create_autoCreate_gen_ledger( sxSinceLastData *sxsld )
gnc_table_init_gui( regWidget, splitreg );
sxsld->reg = GNUCASH_REGISTER(regWidget);
GNUCASH_SHEET(sxsld->reg->sheet)->window =
GTK_WIDGET( sxsld->druid_sincelast );
GTK_WIDGET( sxsld->sincelast_druid );
vbox = glade_xml_get_widget( sxsld->gxml, AUTO_CREATE_VBOX );
toolbar = gtk_label_new( "foo ... toolbar...uh... fooo" );
@ -2094,242 +2200,3 @@ clean_sincelast_data( sxSinceLastData *sxsld )
sxsld->toCreateData = NULL;
}
}
#if 0
allocation: x: 15, y: 107, w: 719, h: 195, sheet_width: 195, sheet_height: 719
size_request: returning 719 x 195
size_request: returning 719 x 195
Breakpoint 2, gnucash_sheet_size_allocate (widget=0x839b708,
allocation=0xbfffd6c4) at gnucash-sheet.c:1013
(gdb) bt
#0 gnucash_sheet_size_allocate (widget=0x839b708, allocation=0xbfffd6c4)
at gnucash-sheet.c:1013
#1 0x40a18ae9 in gtk_marshal_NONE__POINTER (object=0x839b708,
func=0x403b8b1c <gnucash_sheet_size_allocate>, func_data=0x0,
args=0xbfffd418) at gtkmarshal.c:193
#2 0x40a4486b in gtk_signal_real_emit (object=0x839b708, signal_id=18,
params=0xbfffd418) at gtksignal.c:1440
#3 0x40a42c40 in gtk_signal_emit (object=0x839b708, signal_id=18)
at gtksignal.c:552
#4 0x40a7689b in gtk_widget_size_allocate (widget=0x839b708,
allocation=0xbfffd718) at gtkwidget.c:2496
#5 0x40a55652 in gtk_table_size_allocate_pass2 (table=0x839b4d0)
at gtktable.c:1551
#6 0x40a54342 in gtk_table_size_allocate (widget=0x839b4d0,
allocation=0xbfffda88) at gtktable.c:832
#7 0x40a18ae9 in gtk_marshal_NONE__POINTER (object=0x839b4d0,
func=0x40a54288 <gtk_table_size_allocate>, func_data=0x0, args=0xbfffd7dc)
at gtkmarshal.c:193
#8 0x40a4486b in gtk_signal_real_emit (object=0x839b4d0, signal_id=18,
params=0xbfffd7dc) at gtksignal.c:1440
#9 0x40a42c40 in gtk_signal_emit (object=0x839b4d0, signal_id=18)
at gtksignal.c:552
#10 0x40a7689b in gtk_widget_size_allocate (widget=0x839b4d0,
allocation=0xbfffdafc) at gtkwidget.c:2496
#11 0x40a6c668 in gtk_vbox_size_allocate (widget=0x82e8e30,
allocation=0xbfffde48) at gtkvbox.c:329
#12 0x40a18ae9 in gtk_marshal_NONE__POINTER (object=0x82e8e30,
func=0x40a6c174 <gtk_vbox_size_allocate>, func_data=0x0, args=0xbfffdb9c)
at gtkmarshal.c:193
#13 0x40a4486b in gtk_signal_real_emit (object=0x82e8e30, signal_id=18,
params=0xbfffdb9c) at gtksignal.c:1440
#14 0x40a42c40 in gtk_signal_emit (object=0x82e8e30, signal_id=18)
at gtksignal.c:552
#15 0x40a7689b in gtk_widget_size_allocate (widget=0x82e8e30,
allocation=0xbfffdeb8) at gtkwidget.c:2496
#16 0x40a03c3b in gtk_hbox_size_allocate (widget=0x82e8de8,
allocation=0xbfffe204) at gtkhbox.c:275
#17 0x40a18ae9 in gtk_marshal_NONE__POINTER (object=0x82e8de8,
func=0x40a038e0 <gtk_hbox_size_allocate>, func_data=0x0, args=0xbfffdf58)
at gtkmarshal.c:193
#18 0x40a4486b in gtk_signal_real_emit (object=0x82e8de8, signal_id=18,
params=0xbfffdf58) at gtksignal.c:1440
#19 0x40a42c40 in gtk_signal_emit (object=0x82e8de8, signal_id=18)
at gtksignal.c:552
#20 0x40a7689b in gtk_widget_size_allocate (widget=0x82e8de8,
allocation=0xbfffe278) at gtkwidget.c:2496
#21 0x40a6c4e1 in gtk_vbox_size_allocate (widget=0x82e8da0,
allocation=0xbfffe5c4) at gtkvbox.c:273
#22 0x40a18ae9 in gtk_marshal_NONE__POINTER (object=0x82e8da0,
func=0x40a6c174 <gtk_vbox_size_allocate>, func_data=0x0, args=0xbfffe318)
at gtkmarshal.c:193
#23 0x40a4486b in gtk_signal_real_emit (object=0x82e8da0, signal_id=18,
params=0xbfffe318) at gtksignal.c:1440
#24 0x40a42c40 in gtk_signal_emit (object=0x82e8da0, signal_id=18)
at gtksignal.c:552
#25 0x40a7689b in gtk_widget_size_allocate (widget=0x82e8da0,
allocation=0xbfffe5f0) at gtkwidget.c:2496
#26 0x408afe24 in gnome_druid_page_size_allocate (widget=0x82e8d08,
allocation=0xbfffe960) at gnome-druid-page.c:189
#27 0x408b2148 in gnome_druid_page_standard_size_allocate (widget=0x82e8d08,
allocation=0xbfffe960) at gnome-druid-page-standard.c:237
#28 0x40a18ae9 in gtk_marshal_NONE__POINTER (object=0x82e8d08,
func=0x408b2118 <gnome_druid_page_standard_size_allocate>, func_data=0x0,
args=0xbfffe6b4) at gtkmarshal.c:193
#29 0x40a4486b in gtk_signal_real_emit (object=0x82e8d08, signal_id=18,
params=0xbfffe6b4) at gtksignal.c:1440
#30 0x40a42c40 in gtk_signal_emit (object=0x82e8d08, signal_id=18)
at gtksignal.c:552
#31 0x40a7689b in gtk_widget_size_allocate (widget=0x82e8d08,
allocation=0xbfffe990) at gtkwidget.c:2496
#32 0x408ae034 in gnome_druid_size_allocate (widget=0x82f2b48,
allocation=0xbfffecdc) at gnome-druid.c:334
#33 0x40a18ae9 in gtk_marshal_NONE__POINTER (object=0x82f2b48,
func=0x408addc8 <gnome_druid_size_allocate>, func_data=0x0,
args=0xbfffea30) at gtkmarshal.c:193
#34 0x40a4486b in gtk_signal_real_emit (object=0x82f2b48, signal_id=18,
params=0xbfffea30) at gtksignal.c:1440
#35 0x40a42c40 in gtk_signal_emit (object=0x82f2b48, signal_id=18)
at gtksignal.c:552
#36 0x40a7689b in gtk_widget_size_allocate (widget=0x82f2b48,
allocation=0xbfffed00) at gtkwidget.c:2496
#37 0x40a7e72a in gtk_window_size_allocate (widget=0x82f1998,
allocation=0xbffff04c) at gtkwindow.c:1180
#38 0x40a18ae9 in gtk_marshal_NONE__POINTER (object=0x82f1998,
func=0x40a7e604 <gtk_window_size_allocate>, func_data=0x0, args=0xbfffeda0)
at gtkmarshal.c:193
#39 0x40a4486b in gtk_signal_real_emit (object=0x82f1998, signal_id=18,
params=0xbfffeda0) at gtksignal.c:1440
#40 0x40a42c40 in gtk_signal_emit (object=0x82f1998, signal_id=18)
at gtksignal.c:552
#41 0x40a7689b in gtk_widget_size_allocate (widget=0x82f1998,
allocation=0xbffff094) at gtkwidget.c:2496
#42 0x40a7f944 in gtk_window_move_resize (window=0x82f1998) at gtkwindow.c:1750
#43 0x40a7f21e in gtk_window_check_resize (container=0x82f1998)
at gtkwindow.c:1523
#44 0x40a18c3f in gtk_marshal_NONE__NONE (object=0x82f1998,
func=0x40a7f178 <gtk_window_check_resize>, func_data=0x0, args=0xbffff1c4)
at gtkmarshal.c:312
#45 0x40a449e8 in gtk_signal_real_emit (object=0x82f1998, signal_id=63,
params=0xbffff1c4) at gtksignal.c:1492
#46 0x40a42c40 in gtk_signal_emit (object=0x82f1998, signal_id=63)
at gtksignal.c:552
#47 0x409d9398 in gtk_container_check_resize (container=0x82f1998)
at gtkcontainer.c:928
#48 0x409d908f in gtk_container_idle_sizer (data=0x0) at gtkcontainer.c:847
#49 0x40bdd948 in g_idle_dispatch (source_data=0x409d9030,
dispatch_time=0xbffff4f8, user_data=0x0) at gmain.c:1367
#50 0x40bdc9f6 in g_main_dispatch (dispatch_time=0xbffff4f8) at gmain.c:656
#51 0x40bdcfb1 in g_main_iterate (block=1, dispatch=1) at gmain.c:877
#52 0x40bdd129 in g_main_run (loop=0x83903e8) at gmain.c:935
#53 0x40a1748a in gtk_main () at gtkmain.c:524
#54 0x403fedd8 in gnc_ui_start_event_loop () at top-level.c:676
#55 0x4001b7c9 in gwrap_gnc_ui_start_event_loop () at gw-gnc.c:257
#56 0x40b1bcb8 in scm_deval (x=1088180304, env=1088218144) at eval.c:2636
#57 0x40b19df3 in scm_deval (x=1088180272, env=1088218144) at eval.c:1954
#58 0x40b19df3 in scm_deval (x=1088180032, env=1088218144) at eval.c:1954
#59 0x40b1d885 in scm_dapply (proc=1088179888, arg1=10612, args=1088218344)
at eval.c:3473
#60 0x40b18585 in scm_apply (proc=1088179864, arg1=10612, args=10612)
at eval.c:3283
#61 0x40b23cfe in gh_call0 (proc=1088179864) at gh_funcs.c:150
#62 0x40424de1 in gnucash_main_helper (argc=1, argv=0xbffff9b4)
at gnucash.c:125
#63 0x40b23dc3 in gh_launch_pad (closure=0x40424bb0, argc=1, argv=0xbffff9b4)
at gh_init.c:60
#64 0x40b270a2 in invoke_main_func (body_data=0xbffff8f8) at init.c:625
#65 0x40b4834b in scm_internal_lazy_catch (tag=9076,
body=0x40b2707c <invoke_main_func>, body_data=0xbffff8f8,
handler=0x40b4866c <scm_handle_by_message>, handler_data=0x0)
at throw.c:283
#66 0x40b2705c in scm_boot_guile_1 (base=0xbffff8f4, closure=0xbffff8f8)
at init.c:600
#67 0x40b26d8d in scm_boot_guile (argc=1, argv=0xbffff9b4,
main_func=0x40b23da8 <gh_launch_pad>, closure=0x40424bb0) at init.c:443
#68 0x40b23df1 in gh_enter (argc=1, argv=0xbffff9b4,
c_main_prog=0x40424bb0 <gnucash_main_helper>) at gh_init.c:70
#69 0x40424e94 in gnc_main (argc=1, argv=0xbffff9b4) at gnucash.c:176
#70 0x8048c36 in main (argc=1, argv=0xbffff9b4) at gnc-main.c:30
#71 0x40c4f9cb in __libc_start_main (main=0x8048c28 <main>, argc=1,
argv=0xbffff9b4, init=0x8048aec <_init>, fini=0x8048c6c <_fini>,
rtld_fini=0x4000ae60 <_dl_fini>, stack_end=0xbffff9ac)
at ../sysdeps/generic/libc-start.c:92
(gdb) c
Continuing.
allocation: x: 15, y: 107, w: 727, h: 199, sheet_width: 195, sheet_height: 719
Breakpoint 2, gnucash_sheet_size_allocate (widget=0x839b708,
allocation=0xbfffec64) at gnucash-sheet.c:1013
(gdb) bt
#0 gnucash_sheet_size_allocate (widget=0x839b708, allocation=0xbfffec64)
at gnucash-sheet.c:1013
#1 0x40a18ae9 in gtk_marshal_NONE__POINTER (object=0x839b708,
func=0x403b8b1c <gnucash_sheet_size_allocate>, func_data=0x0,
args=0xbfffe9b8) at gtkmarshal.c:193
#2 0x40a4486b in gtk_signal_real_emit (object=0x839b708, signal_id=18,
params=0xbfffe9b8) at gtksignal.c:1440
#3 0x40a42c40 in gtk_signal_emit (object=0x839b708, signal_id=18)
at gtksignal.c:552
#4 0x40a7689b in gtk_widget_size_allocate (widget=0x839b708,
allocation=0xbfffecb8) at gtkwidget.c:2496
#5 0x40a55652 in gtk_table_size_allocate_pass2 (table=0x839b4d0)
at gtktable.c:1551
#6 0x40a54342 in gtk_table_size_allocate (widget=0x839b4d0,
allocation=0xbffff028) at gtktable.c:832
#7 0x40a18ae9 in gtk_marshal_NONE__POINTER (object=0x839b4d0,
func=0x40a54288 <gtk_table_size_allocate>, func_data=0x0, args=0xbfffed7c)
at gtkmarshal.c:193
#8 0x40a4486b in gtk_signal_real_emit (object=0x839b4d0, signal_id=18,
params=0xbfffed7c) at gtksignal.c:1440
#9 0x40a42c40 in gtk_signal_emit (object=0x839b4d0, signal_id=18)
at gtksignal.c:552
#10 0x40a7689b in gtk_widget_size_allocate (widget=0x839b4d0,
allocation=0x839b4f0) at gtkwidget.c:2496
#11 0x409d9640 in gtk_container_resize_children (container=0x82f1998)
at gtkcontainer.c:1087
#12 0x40a7fa8c in gtk_window_move_resize (window=0x82f1998) at gtkwindow.c:1856
#13 0x40a7f21e in gtk_window_check_resize (container=0x82f1998)
at gtkwindow.c:1523
#14 0x40a18c3f in gtk_marshal_NONE__NONE (object=0x82f1998,
func=0x40a7f178 <gtk_window_check_resize>, func_data=0x0, args=0xbffff1c4)
at gtkmarshal.c:312
#15 0x40a449e8 in gtk_signal_real_emit (object=0x82f1998, signal_id=63,
params=0xbffff1c4) at gtksignal.c:1492
#16 0x40a42c40 in gtk_signal_emit (object=0x82f1998, signal_id=63)
at gtksignal.c:552
#17 0x409d9398 in gtk_container_check_resize (container=0x82f1998)
at gtkcontainer.c:928
#18 0x409d908f in gtk_container_idle_sizer (data=0x0) at gtkcontainer.c:847
#19 0x40bdd948 in g_idle_dispatch (source_data=0x409d9030,
dispatch_time=0xbffff4f8, user_data=0x0) at gmain.c:1367
#20 0x40bdc9f6 in g_main_dispatch (dispatch_time=0xbffff4f8) at gmain.c:656
#21 0x40bdcfb1 in g_main_iterate (block=1, dispatch=1) at gmain.c:877
#22 0x40bdd129 in g_main_run (loop=0x83903e8) at gmain.c:935
#23 0x40a1748a in gtk_main () at gtkmain.c:524
#24 0x403fedd8 in gnc_ui_start_event_loop () at top-level.c:676
#25 0x4001b7c9 in gwrap_gnc_ui_start_event_loop () at gw-gnc.c:257
#26 0x40b1bcb8 in scm_deval (x=1088180304, env=1088218144) at eval.c:2636
#27 0x40b19df3 in scm_deval (x=1088180272, env=1088218144) at eval.c:1954
#28 0x40b19df3 in scm_deval (x=1088180032, env=1088218144) at eval.c:1954
#29 0x40b1d885 in scm_dapply (proc=1088179888, arg1=10612, args=1088218344)
at eval.c:3473
#30 0x40b18585 in scm_apply (proc=1088179864, arg1=10612, args=10612)
at eval.c:3283
#31 0x40b23cfe in gh_call0 (proc=1088179864) at gh_funcs.c:150
#32 0x40424de1 in gnucash_main_helper (argc=1, argv=0xbffff9b4)
at gnucash.c:125
#33 0x40b23dc3 in gh_launch_pad (closure=0x40424bb0, argc=1, argv=0xbffff9b4)
at gh_init.c:60
#34 0x40b270a2 in invoke_main_func (body_data=0xbffff8f8) at init.c:625
#35 0x40b4834b in scm_internal_lazy_catch (tag=9076,
body=0x40b2707c <invoke_main_func>, body_data=0xbffff8f8,
handler=0x40b4866c <scm_handle_by_message>, handler_data=0x0)
at throw.c:283
#36 0x40b2705c in scm_boot_guile_1 (base=0xbffff8f4, closure=0xbffff8f8)
at init.c:600
#37 0x40b26d8d in scm_boot_guile (argc=1, argv=0xbffff9b4,
main_func=0x40b23da8 <gh_launch_pad>, closure=0x40424bb0) at init.c:443
#38 0x40b23df1 in gh_enter (argc=1, argv=0xbffff9b4,
c_main_prog=0x40424bb0 <gnucash_main_helper>) at gh_init.c:70
#39 0x40424e94 in gnc_main (argc=1, argv=0xbffff9b4) at gnucash.c:176
#40 0x8048c36 in main (argc=1, argv=0xbffff9b4) at gnc-main.c:30
#41 0x40c4f9cb in __libc_start_main (main=0x8048c28 <main>, argc=1,
argv=0xbffff9b4, init=0x8048aec <_init>, fini=0x8048c6c <_fini>,
rtld_fini=0x4000ae60 <_dl_fini>, stack_end=0xbffff9ac)
at ../sysdeps/generic/libc-start.c:92
(gdb) quit
The program is running. Exit anyway? (y or n) y
Debugger finished
#endif /* 0 */

View File

@ -125,8 +125,8 @@
<spacing>0</spacing>
<child>
<padding>2</padding>
<expand>True</expand>
<fill>True</fill>
<expand>False</expand>
<fill>False</fill>
</child>
<widget>
@ -520,6 +520,8 @@
<widget>
<class>GnomeNumberEntry</class>
<name>end_gnome_nentry</name>
<sensitive>False</sensitive>
<title>Number of Occurrences</title>
<max_saved>10</max_saved>
<child>
<padding>0</padding>
@ -538,6 +540,47 @@
<text></text>
</widget>
</widget>
<widget>
<class>GtkLabel</class>
<name>label847876</name>
<label>Remaining Occurrences:</label>
<justify>GTK_JUSTIFY_LEFT</justify>
<wrap>False</wrap>
<xalign>0</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>False</fill>
</child>
</widget>
<widget>
<class>GnomeNumberEntry</class>
<name>remain_gnome_nentry</name>
<sensitive>False</sensitive>
<title>Remaining Number of Occurrences</title>
<max_saved>10</max_saved>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>False</fill>
</child>
<widget>
<class>GtkEntry</class>
<child_name>GnomeEntry:entry</child_name>
<name>remain_nentry</name>
<can_focus>True</can_focus>
<editable>True</editable>
<text_visible>True</text_visible>
<text_max_length>0</text_max_length>
<text></text>
</widget>
</widget>
</widget>
</widget>
</widget>
@ -4571,6 +4614,18 @@ Anually
<class>GnomeDruid</class>
<name>sincelast_druid</name>
<widget>
<class>GnomeDruidPageStart</class>
<name>druidpagestart1</name>
<title>Start page</title>
<text>I don't know exactly what we do here, but this is just a test, anyways...</text>
<title_color>255,255,255</title_color>
<text_color>0,0,0</text_color>
<background_color>25,25,112</background_color>
<logo_background_color>255,255,255</logo_background_color>
<textbox_color>255,255,255</textbox_color>
</widget>
<widget>
<class>GnomeDruidPageStandard</class>
<name>reminders_page</name>