gnucash maint: Multiple changes pushed
Christopher Lam
clam at code.gnucash.org
Sat Jul 11 12:22:35 EDT 2020
Updated via https://github.com/Gnucash/gnucash/commit/c87870f9 (commit)
via https://github.com/Gnucash/gnucash/commit/b69d3fe3 (commit)
via https://github.com/Gnucash/gnucash/commit/a6ac9b74 (commit)
via https://github.com/Gnucash/gnucash/commit/738c04fe (commit)
via https://github.com/Gnucash/gnucash/commit/c65d0ef1 (commit)
via https://github.com/Gnucash/gnucash/commit/309539b8 (commit)
via https://github.com/Gnucash/gnucash/commit/916bdc2a (commit)
from https://github.com/Gnucash/gnucash/commit/90c8a1e3 (commit)
commit c87870f9d080ee38fddd2678ee758f9d5312edcd
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Sun Jul 12 00:12:51 2020 +0800
[html-style-info] use srfi-9 records for <html-data-style-info>
diff --git a/gnucash/report/html-style-info.scm b/gnucash/report/html-style-info.scm
index 0da74ca2d..8975e7aa0 100644
--- a/gnucash/report/html-style-info.scm
+++ b/gnucash/report/html-style-info.scm
@@ -132,41 +132,25 @@
;; style. The return should be an HTML string.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(define <html-data-style-info>
- (make-record-type "<html-data-style-info>"
- '(renderer data inheritable?)))
-
-(define gnc:html-data-style-info?
- (record-predicate <html-data-style-info>))
-
-(define gnc:make-html-data-style-info-internal
- (record-constructor <html-data-style-info>))
+(define-record-type <html-data-style-info>
+ (make-html-data-style-info-internal renderer data inheritable?)
+ data-style-info?
+ (renderer html-data-style-info-renderer html-data-style-info-set-renderer)
+ (data html-data-style-info-data html-data-style-info-set-data)
+ (inheritable? html-data-style-info-inherit html-data-style-info-set-inherit))
+
+(define gnc:make-html-data-style-info-internal make-html-data-style-info-internal)
+(define gnc:html-data-style-info? data-style-info?)
+(define gnc:html-data-style-info-renderer html-data-style-info-renderer)
+(define gnc:html-data-style-info-set-renderer! html-data-style-info-set-renderer)
+(define gnc:html-data-style-info-data html-data-style-info-data)
+(define gnc:html-data-style-info-set-data! html-data-style-info-set-data)
+(define gnc:html-data-style-info-inheritable? html-data-style-info-inherit)
+(define gnc:html-data-style-info-set-inheritable?! html-data-style-info-set-inherit)
(define (gnc:make-html-data-style-info renderer data)
(gnc:make-html-data-style-info-internal renderer data #t))
-(define gnc:html-data-style-info?
- (record-predicate <html-data-style-info>))
-
-(define gnc:html-data-style-info-renderer
- (record-accessor <html-data-style-info> 'renderer))
-
-(define gnc:html-data-style-info-set-renderer!
- (record-modifier <html-data-style-info> 'renderer))
-
-(define gnc:html-data-style-info-data
- (record-accessor <html-data-style-info> 'data))
-
-(define gnc:html-data-style-info-set-data!
- (record-modifier <html-data-style-info> 'data))
-
-(define gnc:html-data-style-info-inheritable?
- (record-accessor <html-data-style-info> 'inheritable?))
-
-(define gnc:html-data-style-info-set-inheritable?!
- (record-modifier <html-data-style-info> 'inheritable?))
-
-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; default renderers for some data types.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
commit b69d3fe38a90001475a3217ee22ef8cd8b4175fb
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Sun Jul 12 00:12:44 2020 +0800
[html-style-info] use srfi-9 records for <html-markup-style-info>
diff --git a/gnucash/report/html-style-info.scm b/gnucash/report/html-style-info.scm
index 8c6da4aff..0da74ca2d 100644
--- a/gnucash/report/html-style-info.scm
+++ b/gnucash/report/html-style-info.scm
@@ -22,6 +22,7 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(use-modules (ice-9 match))
+(use-modules (srfi srfi-9))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; <html-markup-style-info> class
@@ -38,31 +39,36 @@
;; attribute : single attribute-value pair in a list
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define <html-markup-style-info>
- (make-record-type "<html-markup-style-info>"
- '(tag
- attributes
- inheritable?)))
-
-(define gnc:html-markup-style-info?
- (record-predicate <html-markup-style-info>))
-
-(define gnc:make-html-markup-style-info-internal
- (record-constructor <html-markup-style-info>))
+(define-record-type <html-markup-style-info>
+ (make-html-markup-style-info-internal tag attributes inheritable?)
+ html-markup-style-info?
+ (tag style-info-tag style-info-set-tag)
+ (attributes style-info-attributes style-info-set-attributes)
+ (inheritable? style-info-inheritable? style-info-set-inheritable?))
+
+(define gnc:make-html-markup-style-info-internal make-html-markup-style-info-internal)
+(define gnc:html-markup-style-info? html-markup-style-info?)
+(define gnc:html-markup-style-info-tag style-info-tag)
+(define gnc:html-markup-style-info-set-tag! style-info-set-tag)
+(define gnc:html-markup-style-info-attributes style-info-attributes)
+(define gnc:html-markup-style-info-set-attributes! style-info-set-attributes)
+(define gnc:html-markup-style-info-inheritable? style-info-inheritable?)
+(define gnc:html-markup-style-info-set-inheritable?! style-info-set-inheritable?)
(define (gnc:make-html-markup-style-info . rest)
- (let ((retval (gnc:make-html-markup-style-info-internal
- #f (make-hash-table) #t)))
+ (let ((retval (gnc:make-html-markup-style-info-internal #f (make-hash-table) #t)))
(apply gnc:html-markup-style-info-set! retval rest)
retval))
(define (gnc:html-markup-style-info-set! style . rest)
(let loop ((arglist rest))
(match arglist
- (('attribute (key . val) . rest)
- (gnc:html-markup-style-info-set-attribute!
- style key (and (pair? val) (car val)))
+ (('attribute (key val) . rest)
+ (gnc:html-markup-style-info-set-attribute! style key val)
+ (loop rest))
+
+ (('attribute (key) . rest)
+ (gnc:html-markup-style-info-set-attribute! style key #f)
(loop rest))
((field value . rest)
@@ -71,24 +77,6 @@
(else style))))
-(define gnc:html-markup-style-info-tag
- (record-accessor <html-markup-style-info> 'tag))
-
-(define gnc:html-markup-style-info-set-tag!
- (record-modifier <html-markup-style-info> 'tag))
-
-(define gnc:html-markup-style-info-attributes
- (record-accessor <html-markup-style-info> 'attributes))
-
-(define gnc:html-markup-style-info-set-attributes!
- (record-modifier <html-markup-style-info> 'attributes))
-
-(define gnc:html-markup-style-info-inheritable?
- (record-accessor <html-markup-style-info> 'inheritable?))
-
-(define gnc:html-markup-style-info-set-inheritable?!
- (record-modifier <html-markup-style-info> 'inheritable?))
-
(define (gnc:html-markup-style-info-set-attribute! info attr val)
(hash-set! (gnc:html-markup-style-info-attributes info) attr val))
commit a6ac9b748c78e8aeff62f99b2e55771c08ac3c2f
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Sat Jul 11 23:16:54 2020 +0800
[html-document] use srfi-9 records for <html-object>
diff --git a/gnucash/report/html-document.scm b/gnucash/report/html-document.scm
index 36f82cde9..47f544f31 100644
--- a/gnucash/report/html-document.scm
+++ b/gnucash/report/html-document.scm
@@ -265,14 +265,18 @@
;; want.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(define <html-object>
- (make-record-type "<html-object>"
- '(renderer data)))
-(define gnc:html-object?
- (record-predicate <html-object>))
-
-(define gnc:make-html-object-internal
- (record-constructor <html-object>))
+(define-record-type <html-object>
+ (make-html-object-internal renderer data)
+ html-object?
+ (renderer html-object-renderer html-object-set-renderer!)
+ (data html-object-data html-object-set-data!))
+
+(define gnc:html-object? html-object?)
+(define gnc:make-html-object-internal make-html-object-internal)
+(define gnc:html-object-renderer html-object-renderer)
+(define gnc:html-object-set-renderer! html-object-set-renderer!)
+(define gnc:html-object-data html-object-data)
+(define gnc:html-object-set-data! html-object-set-data!)
(define (gnc:make-html-object obj)
(cond
@@ -320,18 +324,6 @@
(lambda (obj doc)
(gnc:html-document-render-data doc obj)) obj))))
-(define gnc:html-object-renderer
- (record-accessor <html-object> 'renderer))
-
-(define gnc:html-object-set-renderer!
- (record-modifier <html-object> 'renderer))
-
-(define gnc:html-object-data
- (record-accessor <html-object> 'data))
-
-(define gnc:html-object-set-data!
- (record-modifier <html-object> 'data))
-
(define (gnc:html-object-render obj doc)
(if (gnc:html-object? obj)
((gnc:html-object-renderer obj) (gnc:html-object-data obj) doc)
commit 738c04fe26b67835ac2aaa82bed036e8315a7926
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Sat Jul 11 23:16:37 2020 +0800
[html-document] use srfi-9 records for <html-document>
diff --git a/gnucash/report/html-document.scm b/gnucash/report/html-document.scm
index a5a4c994b..36f82cde9 100644
--- a/gnucash/report/html-document.scm
+++ b/gnucash/report/html-document.scm
@@ -22,6 +22,7 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(use-modules (gnucash html))
+(use-modules (srfi srfi-9))
(use-modules (ice-9 match))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -29,15 +30,35 @@
;; this is the top-level object representing an entire HTML document.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(define <html-document>
- (make-record-type "<html-document>"
- '(style-sheet style-stack style style-text title headline objects)))
-
-(define gnc:html-document?
- (record-predicate <html-document>))
-
-(define gnc:make-html-document-internal
- (record-constructor <html-document>))
+(define-record-type <html-document>
+ (make-html-document-internal style-sheet style-stack style
+ style-text title headline objects)
+ html-document?
+ (style-sheet html-document-style-sheet html-document-set-style-sheet)
+ (style-stack html-document-style-stack html-document-set-style-stack)
+ (style html-document-style html-document-set-style)
+ (style-text html-document-style-text html-document-set-style-text)
+ (title html-document-title html-document-set-title)
+ (headline html-document-headline html-document-set-headline)
+ (objects html-document-objects html-document-set-objects))
+
+(define gnc:html-document-set-title! html-document-set-title)
+(define gnc:html-document-title html-document-title)
+(define gnc:html-document-set-headline! html-document-set-headline)
+(define gnc:html-document-headline html-document-headline)
+(define gnc:html-document-set-style-sheet! html-document-set-style-sheet)
+(define gnc:html-document-set-style-sheet! html-document-set-style-sheet)
+(define gnc:html-document-style-sheet html-document-style-sheet)
+(define gnc:html-document-set-style-stack! html-document-set-style-stack)
+(define gnc:html-document-style-stack html-document-style-stack)
+(define gnc:html-document-set-style-text! html-document-set-style-text)
+(define gnc:html-document-style-text html-document-style-text)
+(define gnc:html-document-set-style-internal! html-document-set-style)
+(define gnc:html-document-style html-document-style)
+(define gnc:html-document-set-objects! html-document-set-objects)
+(define gnc:html-document-objects html-document-objects)
+(define gnc:html-document? html-document?)
+(define gnc:make-html-document-internal make-html-document-internal)
(define (gnc:make-html-document)
(gnc:make-html-document-internal
@@ -50,54 +71,6 @@
'() ;; subobjects
))
-(define gnc:html-document-set-title!
- (record-modifier <html-document> 'title))
-
-(define gnc:html-document-title
- (record-accessor <html-document> 'title))
-
-(define gnc:html-document-set-headline!
- (record-modifier <html-document> 'headline))
-
-(define gnc:html-document-headline
- (record-accessor <html-document> 'headline))
-
-(define gnc:html-document-set-style-sheet!
- (record-modifier <html-document> 'style-sheet))
-
-(define gnc:html-document-set-style-sheet!
- (record-modifier <html-document> 'style-sheet))
-
-(define gnc:html-document-style-sheet
- (record-accessor <html-document> 'style-sheet))
-
-(define gnc:html-document-set-style-stack!
- (record-modifier <html-document> 'style-stack))
-
-(define gnc:html-document-style-stack
- (record-accessor <html-document> 'style-stack))
-
-(define gnc:html-document-set-style-text!
- (record-modifier <html-document> 'style-text))
-
-(define gnc:html-document-style-text
- (record-accessor <html-document> 'style-text))
-
-(define gnc:html-document-set-style-internal!
- (record-modifier <html-document> 'style))
-
-(define gnc:html-document-style
- (record-accessor <html-document> 'style))
-
-(define gnc:html-document-set-objects!
- (record-modifier <html-document> 'objects))
-
-(define gnc:html-document-objects
- (record-accessor <html-document> 'objects))
-
-(define gnc:html-document?
- (record-predicate <html-document>))
-
(define (gnc:html-document-set-style! doc tag . rest)
(gnc:html-style-table-set!
(gnc:html-document-style doc) tag
commit c65d0ef1c391e551fdf9486479001870ee087809
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Sat Jul 11 23:01:56 2020 +0800
[html-chart] use srfi-9 records for <html-chart>
diff --git a/gnucash/report/html-chart.scm b/gnucash/report/html-chart.scm
index 0ebf105b4..147bcc3b3 100644
--- a/gnucash/report/html-chart.scm
+++ b/gnucash/report/html-chart.scm
@@ -25,6 +25,7 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(use-modules (gnucash json builder)) ;for building JSON options
+(use-modules (srfi srfi-9))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
@@ -106,26 +107,42 @@
;; width - pair
;; height - pair
-(define <html-chart>
- (make-record-type "<html-chart>"
- '(width
- height
- chart-options
- currency-iso
- currency-symbol
- custom-x-axis-ticks?
- custom-y-axis-ticks?)))
-
-(define gnc:html-chart?
- (record-predicate <html-chart>))
+(define-record-type <html-chart>
+ (make-html-chart width height chart-options currency-iso
+ currency-symbol custom-x-axis-ticks? custom-y-axis-ticks?)
+ html-chart?
+ (width html-chart-width html-chart-set-width)
+ (height html-chart-height html-chart-set-height)
+ (chart-options html-chart-chart-options html-chart-set-chart-options)
+ (currency-iso html-chart-currency-iso html-chart-set-currency-iso)
+ (currency-symbol html-chart-currency-symbol html-chart-set-currency-symbol)
+ (custom-x-axis-ticks? html-chart-custom-x-axis-ticks?
+ html-chart-set-custom-x-axis-ticks?)
+ (custom-y-axis-ticks? html-chart-custom-y-axis-ticks?
+ html-chart-set-custom-y-axis-ticks?))
+
+(define gnc:make-html-chart-internal make-html-chart)
+(define gnc:html-chart? html-chart?)
+(define gnc:html-chart-width html-chart-width)
+(define gnc:html-chart-set-width! html-chart-set-width)
+(define gnc:html-chart-height html-chart-height)
+(define gnc:html-chart-set-height! html-chart-set-height)
+(define gnc:html-chart-currency-iso html-chart-currency-iso)
+(define gnc:html-chart-set-currency-iso! html-chart-set-currency-iso)
+(define gnc:html-chart-currency-symbol html-chart-currency-symbol)
+(define gnc:html-chart-set-currency-symbol! html-chart-set-currency-symbol)
+(define gnc:html-chart-custom-x-axis-ticks? html-chart-custom-x-axis-ticks?)
+(define gnc:html-chart-set-custom-x-axis-ticks?! html-chart-set-custom-x-axis-ticks?)
+(define gnc:html-chart-custom-y-axis-ticks? html-chart-custom-y-axis-ticks?)
+(define gnc:html-chart-set-custom-y-axis-ticks?! html-chart-set-custom-y-axis-ticks?)
+(define gnc:html-chart-get-options-internal html-chart-chart-options)
+(define gnc:html-chart-set-options-internal! html-chart-set-chart-options)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; <html-chart> class
;; generate the <object> form for an html chart.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(define gnc:make-html-chart-internal
- (record-constructor <html-chart>))
(define (gnc:make-html-chart)
(gnc:make-html-chart-internal
@@ -207,18 +224,6 @@
#t ;custom y-axis ticks?
))
-(define gnc:html-chart-width
- (record-accessor <html-chart> 'width))
-
-(define gnc:html-chart-set-width!
- (record-modifier <html-chart> 'width))
-
-(define gnc:html-chart-height
- (record-accessor <html-chart> 'height))
-
-(define gnc:html-chart-set-height!
- (record-modifier <html-chart> 'height))
-
(define (gnc:html-chart-type chart)
(gnc:html-chart-get chart '(type)))
@@ -288,12 +293,6 @@
(define-public (gnc:html-chart-set-y-axis-label! chart label)
(gnc:html-chart-set! chart '(options scales yAxes (0) scaleLabel labelString) label))
-(define gnc:html-chart-get-options-internal
- (record-accessor <html-chart> 'chart-options))
-
-(define gnc:html-chart-set-options-internal!
- (record-modifier <html-chart> 'chart-options))
-
(define (gnc:html-chart-get chart path)
(let ((options (gnc:html-chart-get-options-internal chart)))
(nested-alist-get options path)))
@@ -304,30 +303,6 @@
(nested-alist-set! options path val-vec)
(gnc:html-chart-set-options-internal! chart options)))
-(define gnc:html-chart-currency-iso
- (record-accessor <html-chart> 'currency-iso))
-
-(define gnc:html-chart-set-currency-iso!
- (record-modifier <html-chart> 'currency-iso))
-
-(define gnc:html-chart-currency-symbol
- (record-accessor <html-chart> 'currency-symbol))
-
-(define gnc:html-chart-set-currency-symbol!
- (record-modifier <html-chart> 'currency-symbol))
-
-(define gnc:html-chart-custom-x-axis-ticks?
- (record-accessor <html-chart> 'custom-x-axis-ticks?))
-
-(define-public gnc:html-chart-set-custom-x-axis-ticks?!
- (record-modifier <html-chart> 'custom-x-axis-ticks?))
-
-(define gnc:html-chart-custom-y-axis-ticks?
- (record-accessor <html-chart> 'custom-y-axis-ticks?))
-
-(define-public gnc:html-chart-set-custom-y-axis-ticks?!
- (record-modifier <html-chart> 'custom-y-axis-ticks?))
-
(define JS-Number-to-String "
// The following snippet from MDN
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString
diff --git a/gnucash/report/report.scm b/gnucash/report/report.scm
index e1a2eb7da..c5de10b9b 100644
--- a/gnucash/report/report.scm
+++ b/gnucash/report/report.scm
@@ -534,6 +534,8 @@
(export gnc:html-chart-currency-symbol)
(export gnc:html-chart-set-currency-symbol!)
(export gnc:html-chart-render)
+(export gnc:html-chart-set-custom-x-axis-ticks?!)
+(export gnc:html-chart-set-custom-y-axis-ticks?!)
;; html-table.scm
commit 309539b80edbb5f63b1e38ca33361f20f0417941
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Sat Jul 11 22:43:08 2020 +0800
[report-core] use srfi-9 records for <report>
diff --git a/gnucash/report/report-core.scm b/gnucash/report/report-core.scm
index fa0d9ecd1..97556a624 100644
--- a/gnucash/report/report-core.scm
+++ b/gnucash/report/report-core.scm
@@ -231,69 +231,42 @@ not found.")))
options)))
;; A <report> represents an instantiation of a particular report type.
-(define <report>
- (make-record-type
- "<report>"
- '(type id options dirty? needs-save? editor-widget ctext custom-template)))
-
-(define gnc:report-type
- (record-accessor <report> 'type))
-
-(define gnc:report-set-type!
- (record-modifier <report> 'type))
-
-(define gnc:report-id
- (record-accessor <report> 'id))
-
-(define gnc:report-set-id!
- (record-modifier <report> 'id))
-
-(define gnc:report-options
- (record-accessor <report> 'options))
-
-(define gnc:report-set-options!
- (record-modifier <report> 'options))
-
-(define gnc:report-needs-save?
- (record-accessor <report> 'needs-save?))
-
-(define gnc:report-set-needs-save?!
- (record-modifier <report> 'needs-save?))
-
-(define gnc:report-dirty?
- (record-accessor <report> 'dirty?))
-
-(define gnc:report-set-dirty?-internal!
- (record-modifier <report> 'dirty?))
+(define-record-type <report>
+ (make-report type id options dirty? needs-save? editor-widget ctext custom-template)
+ report?
+ (type report-type report-set-type!)
+ (id report-id report-set-id!)
+ (options report-options report-set-options!)
+ (dirty? report-dirty? report-set-dirty?!)
+ (needs-save? report-needs-save? report-set-needs-save?!)
+ (editor-widget report-editor-widget report-set-editor-widget!)
+ (ctext report-ctext report-set-ctext!)
+ (custom-template report-custom-template report-set-custom-template!))
+
+(define gnc:report-type report-type)
+(define gnc:report-set-type! report-set-type!)
+(define gnc:report-id report-id)
+(define gnc:report-set-id! report-set-id!)
+(define gnc:report-options report-options)
+(define gnc:report-set-options! report-set-options!)
+(define gnc:report-needs-save? report-needs-save?)
+(define gnc:report-set-needs-save?! report-set-needs-save?!)
+(define gnc:report-dirty? report-dirty?)
+(define gnc:report-set-dirty?-internal! report-set-dirty?!)
+(define gnc:report-editor-widget report-editor-widget)
+(define gnc:report-set-editor-widget! report-set-editor-widget!)
+(define gnc:report-ctext report-ctext)
+(define gnc:report-set-ctext! report-set-ctext!)
+(define gnc:report-custom-template report-custom-template)
+(define gnc:report-set-custom-template! report-set-custom-template!)
(define (gnc:report-set-dirty?! report val)
(gnc:report-set-dirty?-internal! report val)
- (let* ((template (hash-ref *gnc:_report-templates_*
- (gnc:report-type report)))
+ (let* ((template (hash-ref *gnc:_report-templates_* (gnc:report-type report)))
(cb (gnc:report-template-options-changed-cb template)))
(if (and cb (procedure? cb))
(cb report))))
-(define gnc:report-editor-widget
- (record-accessor <report> 'editor-widget))
-
-(define gnc:report-set-editor-widget!
- (record-modifier <report> 'editor-widget))
-
-;; ctext is for caching the rendered html
-(define gnc:report-ctext
- (record-accessor <report> 'ctext))
-
-(define gnc:report-set-ctext!
- (record-modifier <report> 'ctext))
-
-(define gnc:report-custom-template
- (record-accessor <report> 'custom-template))
-
-(define gnc:report-set-custom-template!
- (record-modifier <report> 'custom-template))
-
-
;; gnc:make-report instantiates a report from a report-template.
;; The actual report is stored away in a hash-table -- only the id is returned.
(define (gnc:make-report template-id . rest)
@@ -301,7 +274,7 @@ not found.")))
(hash-ref *gnc:_report-templates_* template-id)))
(report-type (or template-parent template-id))
(custom-template (if template-parent template-id ""))
- (r ((record-constructor <report>)
+ (r (make-report
report-type ;; type
#f ;; id
#f ;; options
@@ -329,8 +302,7 @@ not found.")))
(define (gnc:restore-report-by-guid id template-id template-name options)
(if options
- (let* ((r ((record-constructor <report>)
- template-id id options #t #t #f #f ""))
+ (let* ((r (make-report template-id id options #t #t #f #f ""))
(report-id (gnc-report-add r)))
(if (number? report-id)
(gnc:report-set-id! r report-id))
@@ -342,8 +314,7 @@ not found.")))
(define (gnc:restore-report-by-guid-with-custom-template
id template-id template-name custom-template-id options)
(if options
- (let* ((r ((record-constructor <report>)
- template-id id options #t #t #f #f custom-template-id))
+ (let* ((r (make-report template-id id options #t #t #f #f custom-template-id))
(report-id (gnc-report-add r)))
(if (number? report-id)
(gnc:report-set-id! r report-id))
commit 916bdc2a021b2753068a8b6499e33e96b9245dd4
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Sat Jul 11 22:32:12 2020 +0800
[report-core] use srfi-9 records for <report-template>
diff --git a/gnucash/report/report-core.scm b/gnucash/report/report-core.scm
index 3dce45f05..fa0d9ecd1 100644
--- a/gnucash/report/report-core.scm
+++ b/gnucash/report/report-core.scm
@@ -29,6 +29,7 @@
(use-modules (sw_report))
(use-modules (ice-9 match))
+(use-modules (srfi srfi-9))
; Export the swig-wrapped symbols in the public interface of this module
(let ((i (module-public-interface (current-module))))
@@ -82,14 +83,46 @@
(define gnc:optname-invoice-number (N_ "Invoice Number"))
;; A <report-template> represents one of the available report types.
-(define <report-template>
- (make-record-type
- "<report-template>"
- ;; The data items in a report record
- '(version name report-guid parent-type options-generator
- options-cleanup-cb options-changed-cb
- renderer in-menu? menu-path menu-name
- menu-tip export-types export-thunk)))
+(define-record-type <report-template>
+ (make-new-record-template version name report-guid parent-type options-generator
+ options-cleanup-cb options-changed-cb
+ renderer in-menu? menu-path menu-name
+ menu-tip export-types export-thunk)
+ report-template?
+ (version report-template-version)
+ (report-guid report-template-report-guid report-template-set-report-guid!)
+ (name report-template-name report-template-set-name)
+ (parent-type report-template-parent-type report-template-set-parent-type!)
+ (options-generator report-template-options-generator)
+ (options-cleanup-cb report-template-options-cleanup-cb)
+ (options-changed-cb report-template-options-changed-cb)
+ (renderer report-template-renderer)
+ (in-menu? report-template-in-menu?)
+ (menu-path report-template-menu-path)
+ (menu-name report-template-menu-name)
+ (menu-tip report-template-menu-tip)
+ (export-types report-template-export-types)
+ (export-thunk report-template-export-thunk))
+
+(define (make-report-template)
+ (make-new-record-template #f #f #f #f #f #f #f #f #t #f #f #f #f #f))
+(define gnc:report-template-version report-template-version)
+(define gnc:report-template-report-guid report-template-report-guid)
+(define gnc:report-template-set-report-guid! report-template-set-report-guid!)
+(define gnc:report-template-name report-template-name)
+(define gnc:report-template-set-name report-template-set-name)
+(define gnc:report-template-parent-type report-template-parent-type)
+(define gnc:report-template-set-parent-type! report-template-set-parent-type!)
+(define gnc:report-template-options-generator report-template-options-generator)
+(define gnc:report-template-options-cleanup-cb report-template-options-cleanup-cb)
+(define gnc:report-template-options-changed-cb report-template-options-changed-cb)
+(define gnc:report-template-renderer report-template-renderer)
+(define gnc:report-template-in-menu? report-template-in-menu?)
+(define gnc:report-template-menu-path report-template-menu-path)
+(define gnc:report-template-menu-name report-template-menu-name)
+(define gnc:report-template-menu-tip report-template-menu-tip)
+(define gnc:report-template-export-types report-template-export-types)
+(define gnc:report-template-export-thunk report-template-export-thunk)
;; define strings centrally to ease code clarity
(define rpterr-dupe
@@ -121,14 +154,16 @@ not found.")))
;; The renderer should be a function that accepts one argument, a
;; set of options, and generates the report. the renderer must
;; return as its final value an <html-document> object.
+ (define report-rec (make-report-template))
- (let* ((report-rec (let loop ((report-rec (make-report-template)) (args args))
- (match args
- (() report-rec)
- ((field val . rest)
- ((record-modifier <report-template> field) report-rec val)
- (loop report-rec rest)))))
- (report-guid (gnc:report-template-report-guid report-rec))
+ (let loop ((args args))
+ (match args
+ (() #f)
+ ((field val . rest)
+ ((record-modifier <report-template> field) report-rec val)
+ (loop rest))))
+
+ (let* ((report-guid (gnc:report-template-report-guid report-rec))
(report-name (gnc:report-template-name report-rec)))
(cond
@@ -144,60 +179,6 @@ not found.")))
(else
(hash-set! *gnc:_report-templates_* report-guid report-rec)))))
-(define gnc:report-template-version
- (record-accessor <report-template> 'version))
-(define gnc:report-template-report-guid
- (record-accessor <report-template> 'report-guid))
-(define gnc:report-template-set-report-guid!
- (record-modifier <report-template> 'report-guid))
-(define gnc:report-template-name
- (record-accessor <report-template> 'name))
-(define gnc:report-template-set-name
- (record-modifier <report-template> 'name))
-(define gnc:report-template-parent-type
- (record-accessor <report-template> 'parent-type))
-(define gnc:report-template-set-parent-type!
- (record-modifier <report-template> 'parent-type))
-(define gnc:report-template-options-generator
- (record-accessor <report-template> 'options-generator))
-(define gnc:report-template-options-cleanup-cb
- (record-accessor <report-template> 'options-cleanup-cb))
-(define gnc:report-template-options-changed-cb
- (record-accessor <report-template> 'options-changed-cb))
-(define gnc:report-template-renderer
- (record-accessor <report-template> 'renderer))
-(define gnc:report-template-in-menu?
- (record-accessor <report-template> 'in-menu?))
-(define gnc:report-template-menu-path
- (record-accessor <report-template> 'menu-path))
-(define gnc:report-template-menu-name
- (record-accessor <report-template> 'menu-name))
-(define gnc:report-template-menu-tip
- (record-accessor <report-template> 'menu-tip))
-(define gnc:report-template-export-types
- (record-accessor <report-template> 'export-types))
-(define gnc:report-template-export-thunk
- (record-accessor <report-template> 'export-thunk))
-(define (make-report-template)
- ((record-constructor <report-template>)
- #f ;; version
- #f ;; name
- #f ;; report-guid
- #f ;; parent-type (meaning guid of
- ;; report-template this template is
- ;; based on)
- #f ;; options-generator
- #f ;; options-cleanup-cb
- #f ;; options-changed-cb
- #f ;; renderer
- #t ;; in-menu?
- #f ;; menu-path
- #f ;; menu-name
- #f ;; menu-tip
- #f ;; export-types
- #f ;; export-thunk
- ))
-
(define (gnc:report-template-new-options/report-guid template-id template-name)
(let ((templ (hash-ref *gnc:_report-templates_* template-id)))
(and templ
Summary of changes:
gnucash/report/html-chart.scm | 87 ++++++---------
gnucash/report/html-document.scm | 117 +++++++-------------
gnucash/report/html-style-info.scm | 104 +++++++-----------
gnucash/report/report-core.scm | 212 ++++++++++++++-----------------------
gnucash/report/report.scm | 2 +
5 files changed, 194 insertions(+), 328 deletions(-)
More information about the gnucash-changes
mailing list