From 59ec912928bf387f29b6e20df2a817064c9cc72c Mon Sep 17 00:00:00 2001 From: Christopher Lam Date: Thu, 3 Dec 2020 22:31:13 +0800 Subject: [PATCH] [modularise] (gnucash app-utils) --- libgnucash/app-utils/CMakeLists.txt | 7 +- libgnucash/app-utils/app-utils.scm | 296 +----------------- libgnucash/app-utils/business-options.scm | 68 ++++ libgnucash/app-utils/business-prefs.scm | 9 + libgnucash/app-utils/c-interface.scm | 13 +- libgnucash/app-utils/date-utilities.scm | 99 ++++++ libgnucash/app-utils/options.scm | 134 +++++++- .../app-utils/test/test-c-interface.scm | 4 +- 8 files changed, 342 insertions(+), 288 deletions(-) diff --git a/libgnucash/app-utils/CMakeLists.txt b/libgnucash/app-utils/CMakeLists.txt index 2cc9c82f1a..70012b4f89 100644 --- a/libgnucash/app-utils/CMakeLists.txt +++ b/libgnucash/app-utils/CMakeLists.txt @@ -170,7 +170,6 @@ install(FILES ${app_utils_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gnuca set (app_utils_SCHEME_1 business-options.scm - business-prefs.scm c-interface.scm date-utilities.scm options.scm @@ -191,11 +190,15 @@ gnc_add_scheme_targets(scm-app-utils-1 OUTPUT_DIR "gnucash/app-utils" DEPENDS "${GUILE_DEPENDS}" MAKE_LINKS) + gnc_add_scheme_targets(scm-bus-prefs + SOURCES "business-prefs.scm" + OUTPUT_DIR "gnucash/app-utils" + DEPENDS "scm-app-utils-1") gnc_add_scheme_targets(scm-app-utils-2 SOURCES "${app_utils_SCHEME_2}" OUTPUT_DIR "gnucash" - DEPENDS "scm-app-utils-1") + DEPENDS "scm-bus-prefs") # Module interfaces deprecated in 4.x, will be removed for 5.x gnc_add_scheme_deprecated_module (OLD_MODULE "migrate-prefs") diff --git a/libgnucash/app-utils/app-utils.scm b/libgnucash/app-utils/app-utils.scm index 64d6488029..9a5f5269ab 100644 --- a/libgnucash/app-utils/app-utils.scm +++ b/libgnucash/app-utils/app-utils.scm @@ -16,304 +16,36 @@ ;; Boston, MA 02110-1301, USA gnu@gnu.org (define-module (gnucash app-utils)) -(eval-when - (compile load eval expand) - (load-extension "libgnc-app-utils" "scm_init_sw_app_utils_module")) -(use-modules (sw_app_utils)) -; Export the swig-wrapped symbols in the public interface of this module -(let ((i (module-public-interface (current-module)))) - (module-use! i (resolve-interface '(sw_app_utils)))) +(eval-when (compile load eval expand) + (load-extension "libgnc-app-utils" "scm_init_sw_app_utils_module")) (use-modules (srfi srfi-1)) (use-modules (gnucash utilities)) (use-modules (gnucash engine)) (use-modules (gnucash core-utils)) -;; c-interface.scm -(export gnc:apply-with-error-handling) -(export gnc:eval-string-with-error-handling) -(export gnc:backtrace-if-exception) -(export gnc:make-string-database) -;; options.scm -(export gnc:make-option) -(export gnc:option-section) -(export gnc:option-name) -(export gnc:option-sort-tag) -(export gnc:option-type) -(export gnc:option-documentation) -(export gnc:option-getter) -(export gnc:option-setter) -(export gnc:option-default-getter) -(export gnc:option-generate-restore-form) -(export gnc:option-scm->kvp) -(export gnc:set-option-scm->kvp) -(export gnc:option-kvp->scm) -(export gnc:set-option-kvp->scm) -(export gnc:option-value-validator) -(export gnc:option-data) -(export gnc:option-data-fns) -(export gnc:option-set-changed-callback) -(export gnc:option-strings-getter) -(export gnc:option-widget-changed-proc) -(export gnc:option-value) -(export gnc:option-set-value) -(export gnc:option-index-get-name) -(export gnc:option-index-get-description) -(export gnc:option-index-get-value) -(export gnc:option-value-get-index) -(export gnc:option-number-of-indices) -(export gnc:option-default-value) -(export gnc:option-set-default-value) -(export gnc:restore-form-generator) -(export gnc:value->string) -(export gnc:make-string-option) -(export gnc:make-text-option) -(export gnc:make-font-option) -(export gnc:make-currency-option) -(export gnc:make-commodity-option) -(export gnc:make-simple-boolean-option) -(export gnc:make-complex-boolean-option) -(export gnc:make-pixmap-option) -(export gnc:make-date-option) -(export gnc:make-budget-option) -(export gnc:get-rd-option-data-subtype) -(export gnc:get-rd-option-data-show-time) -(export gnc:get-rd-option-data-rd-list) -(export gnc:date-option-get-subtype) -(export gnc:date-option-show-time?) -(export gnc:date-option-value-type) -(export gnc:date-option-absolute-time) -(export gnc:date-option-relative-time) -(export gnc:make-account-list-option) -(export gnc:make-account-list-limited-option) -(export gnc:make-account-sel-option) -(export gnc:make-account-sel-limited-option) -(export gnc:multichoice-list-lookup) -(export gnc:make-multichoice-option) -(export gnc:make-multichoice-callback-option) -(export gnc:make-radiobutton-option) -(export gnc:make-radiobutton-callback-option) -(export gnc:make-list-option) -(export gnc:options-make-end-date!) -(export gnc:options-make-date-interval!) -(export gnc:option-make-internal!) -(export gnc:make-number-range-option) -(export gnc:make-number-plot-size-option) -(export gnc:plot-size-option-value-type) -(export gnc:plot-size-option-value) +(load-and-reexport (sw_app_utils) + (gnucash app-utils date-utilities) + (gnucash app-utils business-options) + (gnucash app-utils business-prefs) + (gnucash app-utils options) + (gnucash app-utils c-interface)) -(export gnc:make-internal-option) -(export gnc:make-query-option) -(export gnc:make-color-option) -(export gnc:make-dateformat-option) -(export gnc:dateformat-get-format) -(export gnc:currency-accounting-option-get-curr-doc-string) -(export gnc:currency-accounting-option-get-default-curr) -(export gnc:currency-accounting-option-get-policy-doc-string) -(export gnc:currency-accounting-option-get-default-policy) -(export gnc:currency-accounting-option-get-gain-loss-account-doc-string) -(export gnc:currency-accounting-option-selected-method) -(export gnc:currency-accounting-option-selected-currency) -(export gnc:currency-accounting-option-selected-policy) -(export gnc:currency-accounting-option-selected-gain-loss-account) - -(export gnc:color->html) -(export gnc:color-option->html) -(export gnc:color-option->hex-string) -(export gnc:new-options) - -(export gnc:register-option) -(export gnc:unregister-option) -(export gnc:options-register-callback) -(export gnc:options-register-c-callback) -(export gnc:options-unregister-callback-id) -(export gnc:options-for-each) -(export gnc:options-for-each-general) -(export gnc:lookup-option) -(export gnc:generate-restore-forms) -(export gnc:options-fancy-date) -(export gnc:options-scm->kvp) -(export gnc:options-kvp->scm) -(export gnc:options-clear-changes) -(export gnc:options-touch) -(export gnc:options-run-callbacks) -(export gnc:options-set-default-section) -(export gnc:options-get-default-section) -(export gnc:options-copy-values) -(export gnc:send-options) - -(define (gnc:option-get-value book category key) - ;;Access an option directly - (qof-book-get-option book - (if (list? key) - (append (list category) key) - (list category key)))) -(export gnc:option-get-value) - -;; gw-engine-spec.scm (re-export HOOK-SAVE-OPTIONS) -;; date-utilities.scm - -(export gnc:reldate-list) -(export gnc:date-get-year) -(export gnc:date-get-quarter) -(export gnc:date-get-month-day) -(export gnc:date-get-month) -(export gnc:date-get-week-day) -(export gnc:date-get-week) -(export gnc:date-get-year-day) -(export gnc:time64-get-year) -(export gnc:time64-get-quarter) -(export gnc:time64-get-month-day) -(export gnc:time64-get-month) -(export gnc:time64-get-week-day) -(export gnc:time64-get-week) -(export gnc:time64-get-year-day) -(export gnc:date-get-year-string) -(export gnc:date-get-quarter-string) -(export gnc:date-get-quarter-year-string) -(export gnc:date-get-month-string) -(export gnc:date-get-month-year-string) -(export gnc:date-get-week-year-string) -(export gnc:leap-year?) -(export gnc:days-in-year) -(export gnc:days-in-month) -(export gnc:date-to-year-fraction) -(export gnc:date-year-delta) -(export gnc:date-to-month-fraction) -(export gnc:date-to-week-fraction) -(export gnc:date-to-week) -(export gnc:date-to-day-fraction) -(export gnc:date-get-fraction-func) -(export moddatek) -(export decdate) -(export incdate) -(export decdate) -(export incdate) -(export gnc:make-date-interval-list) -(export gnc:make-date-list) -(export SecDelta) -(export DayDelta) -(export WeekDelta ) -(export TwoWeekDelta) -(export MonthDelta) -(export QuarterDelta) -(export HalfYearDelta) -(export YearDelta ) -(export ThirtyDayDelta) -(export NinetyDayDelta) -(export gnc:deltasym-to-delta) -(export gnc:time64-start-day-time) -(export gnc:time64-end-day-time) -(export gnc:time64-previous-day) -(export gnc:time64-next-day) -(export gnc:reldate-get-symbol) -(export gnc:reldate-get-string) -(export gnc:reldate-get-desc) -(export gnc:reldate-get-fn) -(export gnc:get-absolute-from-relative-date) -(export gnc:get-relative-date-string) -(export gnc:get-relative-date-desc) -(export gnc:get-start-cal-year) -(export gnc:get-end-cal-year) -(export gnc:get-start-prev-year) -(export gnc:get-end-prev-year) -(export gnc:get-start-this-month) -(export gnc:get-end-this-month) -(export gnc:get-start-prev-month) -(export gnc:get-end-prev-month) -(export gnc:get-start-current-quarter) -(export gnc:get-end-current-quarter) -(export gnc:get-start-prev-quarter) -(export gnc:get-end-prev-quarter) -(export gnc:get-today) -(export gnc:get-one-month-ago) -(export gnc:get-three-months-ago) -(export gnc:get-six-months-ago) -(export gnc:get-one-year-ago) -(export gnc:reldate-initialize) -(export gnc:get-end-next-month) -(export gnc:get-end-next-quarter) -(export gnc:get-end-next-year) -(export gnc:get-one-month-ahead) -(export gnc:get-one-year-ahead) -(export gnc:get-six-months-ahead) -(export gnc:get-start-next-month) -(export gnc:get-start-next-quarter) -(export gnc:get-start-next-year) -(export gnc:get-three-months-ahead) - -(define gnc:*kvp-option-path* (list KVP-OPTION-PATH)) -(export gnc:*kvp-option-path*) - -(load-from-path "gnucash/app-utils/c-interface") -(load-from-path "gnucash/app-utils/options") -(load-from-path "gnucash/app-utils/date-utilities") - -;; Business options -(define gnc:*business-label* (N_ "Business")) -(define gnc:*company-name* (N_ "Company Name")) -(define gnc:*company-addy* (N_ "Company Address")) -(define gnc:*company-id* (N_ "Company ID")) -(define gnc:*company-phone* (N_ "Company Phone Number")) -(define gnc:*company-fax* (N_ "Company Fax Number")) -(define gnc:*company-url* (N_ "Company Website URL")) -(define gnc:*company-email* (N_ "Company Email Address")) -(define gnc:*company-contact* (N_ "Company Contact Person")) -(define gnc:*fancy-date-label* (N_ "Fancy Date Format")) -(define gnc:*fancy-date-format* (N_ "custom")) -(define gnc:*tax-label* (N_ "Tax")) -(define gnc:*tax-nr-label* (N_ "Tax Number")) - -(define (gnc:company-info book key) - ;; Access company info from key-value pairs for current book - (gnc:option-get-value book gnc:*business-label* key)) - -(define (gnc:fancy-date-info book key) - ;; Access fancy date info from key-value pairs for current book - (gnc:option-get-value book gnc:*business-label* (list gnc:*fancy-date-label* key))) - -(export gnc:*business-label* gnc:*company-name* gnc:*company-addy* - gnc:*company-id* gnc:*company-phone* gnc:*company-fax* - gnc:*company-url* gnc:*company-email* gnc:*company-contact* - gnc:*fancy-date-label* gnc:*fancy-date-format* - gnc:company-info gnc:fancy-date-info) - -(define gnc:*option-section-accounts* OPTION-SECTION-ACCOUNTS) -(define gnc:*option-name-trading-accounts* OPTION-NAME-TRADING-ACCOUNTS) -(define gnc:*option-name-currency-accounting* OPTION-NAME-CURRENCY-ACCOUNTING) -(define gnc:*option-name-book-currency* OPTION-NAME-BOOK-CURRENCY) -(define gnc:*option-name-default-gains-policy* OPTION-NAME-DEFAULT-GAINS-POLICY) -(define gnc:*option-name-default-gain-loss-account* OPTION-NAME-DEFAULT-GAINS-LOSS-ACCT-GUID) -(define gnc:*option-name-auto-readonly-days* OPTION-NAME-AUTO-READONLY-DAYS) -(define gnc:*option-name-num-field-source* OPTION-NAME-NUM-FIELD-SOURCE) - -(export gnc:*option-section-accounts* gnc:*option-name-trading-accounts* - gnc:*option-name-currency-accounting* gnc:*option-name-book-currency* - gnc:*option-name-default-gains-policy* - gnc:*option-name-default-gain-loss-account* - gnc:*tax-label* gnc:*tax-nr-label* - gnc:*option-name-auto-readonly-days* gnc:*option-name-num-field-source*) - -(define gnc:*option-section-budgeting* OPTION-SECTION-BUDGETING) -(define gnc:*option-name-default-budget* OPTION-NAME-DEFAULT-BUDGET) - -(export gnc:*option-section-budgeting* gnc:*option-name-default-budget*) - -(load-from-path "gnucash/app-utils/business-options") -(load-from-path "gnucash/app-utils/business-prefs") - +(export gnc:get-debit-string) +(export gnc:get-credit-string) +(export gnc:config-file-format-version) ;; Symbols deprecated in 4.x, to remove for 5.x -(define-public (gnc:get-debit-string acct-type) +(define (gnc:get-debit-string acct-type) (issue-deprecation-warning "gnc:get-debit-string is deprecated in 4.x. Please use (gnucash engine)'s gnc-account-get-debit-string instead.") (gnc-account-get-debit-string acct-type)) -(define-public (gnc:get-credit-string acct-type) +(define (gnc:get-credit-string acct-type) (issue-deprecation-warning "gnc:get-credit-string is deprecated in 4.x. Please use (gnucash engine)'s gnc-account-get-credit-string instead.") (gnc-account-get-debit-string acct-type)) -(define-public (gnc:config-file-format-version version) +(define (gnc:config-file-format-version version) (issue-deprecation-warning "gnc:config-file-format-version is deprecated in 4.x and will be removed from a future version.") #t) diff --git a/libgnucash/app-utils/business-options.scm b/libgnucash/app-utils/business-options.scm index 792ec8c350..3bdb7a403b 100644 --- a/libgnucash/app-utils/business-options.scm +++ b/libgnucash/app-utils/business-options.scm @@ -24,8 +24,76 @@ ;; invoice pointers may be used to set the value of the option. The ;; option always returns a single invoice pointer. +(define-module (gnucash app-utils business-options)) + +(eval-when (compile load eval expand) + (load-extension "libgnc-app-utils" "scm_init_sw_app_utils_module")) + +(use-modules (gnucash core-utils)) (use-modules (gnucash engine)) (use-modules (gnucash utilities)) +(use-modules (gnucash app-utils options)) +(use-modules (sw_app_utils)) + +(export gnc:*business-label*) +(export gnc:*company-name*) +(export gnc:*company-addy*) +(export gnc:*company-id*) +(export gnc:*company-phone*) +(export gnc:*company-fax*) +(export gnc:*company-url*) +(export gnc:*company-email*) +(export gnc:*company-contact*) +(export gnc:*fancy-date-label*) +(export gnc:*fancy-date-format*) +(export gnc:*tax-label*) +(export gnc:*tax-nr-label*) +(export gnc:company-info) +(export gnc:fancy-date-info) +(export gnc:*option-section-budgeting*) +(export gnc:*option-name-auto-readonly-days*) +(export gnc:*option-name-num-field-source*) +(export gnc:*kvp-option-path*) +(export gnc:options-fancy-date) +(export gnc:*option-name-default-budget*) + +(define gnc:*kvp-option-path* (list KVP-OPTION-PATH)) +(define gnc:*option-name-auto-readonly-days* OPTION-NAME-AUTO-READONLY-DAYS) +(define gnc:*option-name-num-field-source* OPTION-NAME-NUM-FIELD-SOURCE) + +(define gnc:*option-section-budgeting* OPTION-SECTION-BUDGETING) +(define gnc:*option-name-default-budget* OPTION-NAME-DEFAULT-BUDGET) + +(define gnc:*business-label* (N_ "Business")) +(define gnc:*company-name* (N_ "Company Name")) +(define gnc:*company-addy* (N_ "Company Address")) +(define gnc:*company-id* (N_ "Company ID")) +(define gnc:*company-phone* (N_ "Company Phone Number")) +(define gnc:*company-fax* (N_ "Company Fax Number")) +(define gnc:*company-url* (N_ "Company Website URL")) +(define gnc:*company-email* (N_ "Company Email Address")) +(define gnc:*company-contact* (N_ "Company Contact Person")) +(define gnc:*fancy-date-label* (N_ "Fancy Date Format")) +(define gnc:*fancy-date-format* (N_ "custom")) +(define gnc:*tax-label* (N_ "Tax")) +(define gnc:*tax-nr-label* (N_ "Tax Number")) + + +(define (gnc:options-fancy-date book) + (let ((date-format (gnc:fancy-date-info book gnc:*fancy-date-format*))) + (if (boolean? date-format) ;; date-format does not exist + (qof-date-format-get-string (qof-date-format-get)) + date-format))) + +(define (gnc:company-info book key) + ;; Access company info from key-value pairs for current book + (gnc:option-get-value book gnc:*business-label* key)) + +(define (gnc:fancy-date-info book key) + ;; Access fancy date info from key-value pairs for current book + (gnc:option-get-value book gnc:*business-label* (list gnc:*fancy-date-label* key))) + + (define (gnc:options-fancy-date book) (let ((date-format (gnc:fancy-date-info book gnc:*fancy-date-format*))) diff --git a/libgnucash/app-utils/business-prefs.scm b/libgnucash/app-utils/business-prefs.scm index f90584e13f..9e50ae3c12 100644 --- a/libgnucash/app-utils/business-prefs.scm +++ b/libgnucash/app-utils/business-prefs.scm @@ -19,7 +19,16 @@ ;; 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 ;; Boston, MA 02110-1301, USA gnu@gnu.org +(define-module (gnucash app-utils business-prefs)) + +(eval-when (compile load eval expand) + (load-extension "libgnc-app-utils" "scm_init_sw_app_utils_module")) + +(use-modules (sw_app_utils)) (use-modules (gnucash core-utils)) +(use-modules (gnucash engine)) +(use-modules (gnucash app-utils options)) +(use-modules (gnucash app-utils business-options)) (define gnc:*option-section-counters* (N_ "Counters")) diff --git a/libgnucash/app-utils/c-interface.scm b/libgnucash/app-utils/c-interface.scm index 486b4d442f..650b871cca 100644 --- a/libgnucash/app-utils/c-interface.scm +++ b/libgnucash/app-utils/c-interface.scm @@ -15,7 +15,18 @@ ;; 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 ;; Boston, MA 02110-1301, USA gnu@gnu.org +(define-module (gnucash app-utils c-interface)) + (use-modules (ice-9 match)) +(use-modules (gnucash core-utils) + (gnucash utilities)) + +(export gnc:make-string-database) +(export gnc:call-with-error-handling) +(export gnc:apply-with-error-handling) +(export gnc:eval-string-with-error-handling) +(export gnc:backtrace-if-exception) +(export gnc:last-captured-error) (define (gnc:call-with-error-handling cmd args) (let ((captured-stack #f) @@ -71,7 +82,7 @@ (when (defined? 'gnc:warn) (gnc:warn captured-error)) #f))) -(define-public gnc:last-captured-error "") +(define gnc:last-captured-error "") ;; This database can be used to store and retrieve translatable ;; strings. Strings that are returned by the lookup function are diff --git a/libgnucash/app-utils/date-utilities.scm b/libgnucash/app-utils/date-utilities.scm index 4f89fc98c7..84c5706979 100644 --- a/libgnucash/app-utils/date-utilities.scm +++ b/libgnucash/app-utils/date-utilities.scm @@ -21,7 +21,106 @@ ;; Boston, MA 02110-1301, USA gnu@gnu.org +(define-module (gnucash app-utils date-utilities)) + +(eval-when (compile load eval expand) + (load-extension "libgnc-app-utils" "scm_init_sw_app_utils_module")) + +(use-modules (gnucash engine)) (use-modules (gnucash core-utils)) +(use-modules (gnucash utilities)) +(use-modules (sw_app_utils)) +(use-modules (gnucash app-utils c-interface)) +(use-modules (ice-9 match)) + +(export gnc:reldate-list) +(export gnc:date-get-year) +(export gnc:date-get-quarter) +(export gnc:date-get-month-day) +(export gnc:date-get-month) +(export gnc:date-get-week-day) +(export gnc:date-get-week) +(export gnc:date-get-year-day) +(export gnc:time64-get-year) +(export gnc:time64-get-quarter) +(export gnc:time64-get-month-day) +(export gnc:time64-get-month) +(export gnc:time64-get-week-day) +(export gnc:time64-get-week) +(export gnc:time64-get-year-day) +(export gnc:date-get-year-string) +(export gnc:date-get-quarter-string) +(export gnc:date-get-quarter-year-string) +(export gnc:date-get-month-string) +(export gnc:date-get-month-year-string) +(export gnc:date-get-week-year-string) +(export gnc:leap-year?) +(export gnc:days-in-year) +(export gnc:days-in-month) +(export gnc:date-to-year-fraction) +(export gnc:date-year-delta) +(export gnc:date-to-month-fraction) +(export gnc:date-to-week-fraction) +(export gnc:date-to-week) +(export gnc:date-to-day-fraction) +(export gnc:date-get-fraction-func) +(export moddatek) +(export decdate) +(export incdate) +(export decdate) +(export incdate) +(export gnc:make-date-interval-list) +(export gnc:make-date-list) +(export SecDelta) +(export DayDelta) +(export WeekDelta) +(export TwoWeekDelta) +(export MonthDelta) +(export QuarterDelta) +(export HalfYearDelta) +(export YearDelta) +(export ThirtyDayDelta) +(export NinetyDayDelta) +(export gnc:deltasym-to-delta) +(export gnc:time64-start-day-time) +(export gnc:time64-end-day-time) +(export gnc:time64-previous-day) +(export gnc:time64-next-day) +(export gnc:reldate-get-symbol) +(export gnc:reldate-get-string) +(export gnc:reldate-get-desc) +(export gnc:reldate-get-fn) +(export gnc:get-absolute-from-relative-date) +(export gnc:get-relative-date-string) +(export gnc:get-relative-date-desc) +(export gnc:get-start-cal-year) +(export gnc:get-end-cal-year) +(export gnc:get-start-prev-year) +(export gnc:get-end-prev-year) +(export gnc:get-start-this-month) +(export gnc:get-end-this-month) +(export gnc:get-start-prev-month) +(export gnc:get-end-prev-month) +(export gnc:get-start-current-quarter) +(export gnc:get-end-current-quarter) +(export gnc:get-start-prev-quarter) +(export gnc:get-end-prev-quarter) +(export gnc:get-today) +(export gnc:get-one-month-ago) +(export gnc:get-three-months-ago) +(export gnc:get-six-months-ago) +(export gnc:get-one-year-ago) +(export gnc:reldate-initialize) +(export gnc:get-end-next-month) +(export gnc:get-end-next-quarter) +(export gnc:get-end-next-year) +(export gnc:get-one-month-ahead) +(export gnc:get-one-year-ahead) +(export gnc:get-six-months-ahead) +(export gnc:get-start-next-month) +(export gnc:get-start-next-quarter) +(export gnc:get-start-next-year) +(export gnc:get-three-months-ahead) ;; get stuff from localtime date vector (define (gnc:date-get-year datevec) diff --git a/libgnucash/app-utils/options.scm b/libgnucash/app-utils/options.scm index 01b621537b..6982089c67 100644 --- a/libgnucash/app-utils/options.scm +++ b/libgnucash/app-utils/options.scm @@ -16,8 +16,140 @@ ;; Free Software Foundation Voice: +1-617-542-5942 ;; 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 ;; Boston, MA 02110-1301, USA gnu@gnu.org -(use-modules (ice-9 regex)) + +(define-module (gnucash app-utils options)) + +(eval-when (compile load eval expand) + (load-extension "libgnc-app-utils" "scm_init_sw_app_utils_module")) + (use-modules (gnucash core-utils)) +(use-modules (gnucash engine)) +(use-modules (sw_app_utils)) +(use-modules (gnucash app-utils date-utilities)) +(use-modules (gnucash utilities)) +(use-modules (ice-9 regex)) + +(export gnc:color->html) +(export gnc:color-option->hex-string) +(export gnc:color-option->html) +(export gnc:currency-accounting-option-get-curr-doc-string) +(export gnc:currency-accounting-option-get-default-curr) +(export gnc:currency-accounting-option-get-default-policy) +(export gnc:currency-accounting-option-get-gain-loss-account-doc-string) +(export gnc:currency-accounting-option-get-policy-doc-string) +(export gnc:currency-accounting-option-selected-currency) +(export gnc:currency-accounting-option-selected-gain-loss-account) +(export gnc:currency-accounting-option-selected-method) +(export gnc:currency-accounting-option-selected-policy) +(export gnc:date-option-absolute-time) +(export gnc:date-option-get-subtype) +(export gnc:date-option-relative-time) +(export gnc:date-option-show-time?) +(export gnc:date-option-value-type) +(export gnc:dateformat-get-format) +(export gnc:generate-restore-forms) +(export gnc:get-rd-option-data-rd-list) +(export gnc:get-rd-option-data-show-time) +(export gnc:get-rd-option-data-subtype) +(export gnc:lookup-option) +(export gnc:make-account-list-limited-option) +(export gnc:make-account-list-option) +(export gnc:make-account-sel-limited-option) +(export gnc:make-account-sel-option) +(export gnc:make-budget-option) +(export gnc:make-color-option) +(export gnc:make-commodity-option) +(export gnc:make-complex-boolean-option) +(export gnc:make-currency-option) +(export gnc:make-date-option) +(export gnc:make-dateformat-option) +(export gnc:make-font-option) +(export gnc:make-internal-option) +(export gnc:make-list-option) +(export gnc:make-multichoice-callback-option) +(export gnc:make-multichoice-option) +(export gnc:make-number-plot-size-option) +(export gnc:make-number-range-option) +(export gnc:make-option) +(export gnc:make-pixmap-option) +(export gnc:make-query-option) +(export gnc:make-radiobutton-callback-option) +(export gnc:make-radiobutton-option) +(export gnc:make-simple-boolean-option) +(export gnc:make-string-option) +(export gnc:make-text-option) +(export gnc:multichoice-list-lookup) +(export gnc:new-options) +(export gnc:option-data) +(export gnc:option-data-fns) +(export gnc:option-default-getter) +(export gnc:option-default-value) +(export gnc:option-documentation) +(export gnc:option-generate-restore-form) +(export gnc:option-get-value) +(export gnc:option-getter) +(export gnc:option-index-get-description) +(export gnc:option-index-get-name) +(export gnc:option-index-get-value) +(export gnc:option-kvp->scm) +(export gnc:option-make-internal!) +(export gnc:option-name) +(export gnc:option-number-of-indices) +(export gnc:option-scm->kvp) +(export gnc:option-section) +(export gnc:option-set-changed-callback) +(export gnc:option-set-default-value) +(export gnc:option-set-value) +(export gnc:option-setter) +(export gnc:option-sort-tag) +(export gnc:option-strings-getter) +(export gnc:option-type) +(export gnc:option-value) +(export gnc:option-value-get-index) +(export gnc:option-value-validator) +(export gnc:option-widget-changed-proc) +(export gnc:options-clear-changes) +(export gnc:options-copy-values) +(export gnc:options-for-each) +(export gnc:options-for-each-general) +(export gnc:options-get-default-section) +(export gnc:options-kvp->scm) +(export gnc:options-make-date-interval!) +(export gnc:options-make-end-date!) +(export gnc:options-register-c-callback) +(export gnc:options-register-callback) +(export gnc:options-run-callbacks) +(export gnc:options-scm->kvp) +(export gnc:options-set-default-section) +(export gnc:options-touch) +(export gnc:options-unregister-callback-id) +(export gnc:plot-size-option-value) +(export gnc:plot-size-option-value-type) +(export gnc:register-option) +(export gnc:restore-form-generator) +(export gnc:send-options) +(export gnc:set-option-kvp->scm) +(export gnc:set-option-scm->kvp) +(export gnc:unregister-option) +(export gnc:value->string) + +(export gnc:*option-name-trading-accounts*) +(export gnc:*option-name-book-currency*) +(export gnc:*option-section-accounts*) +(export gnc:*option-name-default-gains-policy*) +(export gnc:*option-name-default-gain-loss-account*) + +(define gnc:*option-section-accounts* OPTION-SECTION-ACCOUNTS) +(define gnc:*option-name-trading-accounts* OPTION-NAME-TRADING-ACCOUNTS) +(define gnc:*option-name-currency-accounting* OPTION-NAME-CURRENCY-ACCOUNTING) +(define gnc:*option-name-book-currency* OPTION-NAME-BOOK-CURRENCY) +(define gnc:*option-name-default-gains-policy* OPTION-NAME-DEFAULT-GAINS-POLICY) +(define gnc:*option-name-default-gain-loss-account* + OPTION-NAME-DEFAULT-GAINS-LOSS-ACCT-GUID) + +(define (gnc:option-get-value book category key) + (define acc (if (pair? key) cons list)) + (qof-book-get-option book (acc category key))) (define (rpterror-earlier type newoption fallback) ;; Translators: the 3 ~a below refer to (1) option type (2) unknown diff --git a/libgnucash/app-utils/test/test-c-interface.scm b/libgnucash/app-utils/test/test-c-interface.scm index 8b41b62106..6c39db846b 100644 --- a/libgnucash/app-utils/test/test-c-interface.scm +++ b/libgnucash/app-utils/test/test-c-interface.scm @@ -18,8 +18,8 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setenv "GNC_UNINSTALLED" "1") -(debug-set! stack 50000) -(load-from-path "gnucash/app-utils/c-interface") + +(use-modules (gnucash app-utils c-interface)) (use-modules (tests test-engine-extras)) (define (test-func a b)