HI Robert: Here are a few things you need to change:
That very last statement (gnc:make-html-style-sheet "DWS_Stylesheet" (N_ "DWS Stylesheet")) the first parameter is actually the template name defined just above, so it should be "DWS Stylesheet" without the underscore. The second parameter is the name of the default stylesheet created based on that template. You can use the same name as the template or you could call your Template "DWS Template" both here and above, as in: (gnc:define-html-style-sheet 'version 3.0 'name (N_ "DWS Template") 'renderer dws-renderer 'options-generator dws-options) (gnc:make-html-style-sheet "DWS Template" (N_ "DWS Stylesheet")) I would also advise you put your code in a separate scm file, for instance dws.scm, then store it in the USER_DATA directory .local/share/gnucash and load it from config-user.scm by adding (load (gnc-build-userdata-path "dws.scm")) Finally, possibly you are hitting a bug with the inability to save or there is something I don't know about loading the template because I have the same problem. Actually it's saving fine, you can see it in local/share/gnucash/stylesheets-2.0. It's the loading that's not working. I am wondering if it's not trying to load the saved stylesheet before running config-user.scm and therefore not finding it or something like that. But if I put the scm file directly in the main template directory under gnucash then it works, it's loading the saved settings, so that's a work-around. You don't load it in config-user.scm; instead you copy the file to <gnucash install dir>/gnucash/share/guile/site/2.2/gnucash/report/stylesheets/ Sincerely, Vincent Dawans Then it saves fine for me. On Mon, Jul 3, 2023 at 7:17 AM Robert Heller <hel...@deepsoft.com> wrote: > > I have written a style sheet module and it *seems* to be loading now, but > things are wonky any I don't know why. > > What I am *trying to go: > > 1) Put my company letterhead across the top of the invoice > 2) Put a "button image" (Payments by PayPal) under the invoice table. > > My custom stylesheet code adds two options: the button image and some > (optional) text to put under the button image (typically the e-mail > address to > use as the payment target). > > Several things are not working: > > If I use the Edit->Style Sheets options and create a new stylesheet from my > template, the addition options are not available (why?) If I just edit the > template itselt (with Edit->Style Sheets) I can set the header image and > the > button image, and the header image shows up, but not the button image > (why?), > and the options not saved across runs (why?). > > This code used to work just fine with V 2.6. What has changed? What do I > need to change? The attached code was copied and modified from the V4.14 > source tree (footer.scm), but obviously something is wrong somewhere. > > > ;;***************************************************************************** > ;; > ;; System : > ;; Module : > ;; Object Name : $RCSfile$ > ;; Revision : $Revision$ > ;; Date : $Date$ > ;; Author : $Author$ > ;; Created By : Robert Heller > ;; Created : Sun Jul 2 15:09:23 2023 > ;; Last Modified : <230703.1014> > ;; > ;; Description > ;; > ;; Notes > ;; > ;; History > ;; > > ;;***************************************************************************** > ;;# @copyright > ;; Copyright (C) 2023 Robert Heller D/B/A Deepwoods Software > ;; 51 Locke Hill Road > ;; Wendell, MA 01379-9728 > ;; > ;; This program is free software; you can redistribute it and/or modify > ;; it under the terms of the GNU General Public License as published by > ;; the Free Software Foundation; either version 2 of the License, or > ;; (at your option) any later version. > ;; > ;; This program is distributed in the hope that it will be useful, > ;; but WITHOUT ANY WARRANTY; without even the implied warranty of > ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > ;; GNU General Public License for more details. > ;; > ;; You should have received a copy of the GNU General Public License > ;; along with this program; if not, write to the Free Software > ;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. > ;; @file dws-stylesheet.scm > ;; @author Robert Heller > ;; @date Sun Jul 2 15:09:23 2023 > ;; > ;; > > ;;***************************************************************************** > > (define-module (gnucash report stylesheets DWS)) > > (use-modules (gnucash engine)) > (use-modules (gnucash utilities)) > (use-modules (gnucash core-utils)) > (use-modules (gnucash app-utils)) > (use-modules (gnucash report)) > (use-modules (gnucash html)) > > (define (dws-options) > (let* ((options (gnc:new-options)) > (opt-register > (lambda (opt) > (gnc:register-option options opt)))) > > (opt-register > (gnc:make-string-option > (N_ "General") > (N_ "Preparer") "a" > (N_ "Name of person preparing the report.") > "")) > > (opt-register > (gnc:make-string-option > (N_ "General") > (N_ "Prepared for") "b" > (N_ "Name of organization or company prepared for.") > "")) > > (opt-register > (gnc:make-simple-boolean-option > (N_ "General") > (N_ "Show preparer info") "c" > (N_ "Name of organization or company.") > #f)) > > (opt-register > (gnc:make-simple-boolean-option > (N_ "General") > (N_ "Enable Links") "d" > (N_ "Enable hyperlinks in reports.") > #t)) > > (opt-register > (gnc:make-text-option > (N_ "General") > (N_ "Footer") "e" > (N_ "String to be placed as a footer.") > "")) > > (opt-register > (gnc:make-pixmap-option > (N_ "Images") > (N_ "Background Tile") "a" (N_ "Background tile for reports.") > "")) > > (opt-register > (gnc:make-pixmap-option > (N_ "Images") > ;;; Translators: Banner is an image like Logo. > (N_ "Heading Banner") "b" (N_ "Banner for top of report.") > "")) > > (opt-register > (gnc:make-multichoice-option > (N_ "Images") > (N_ "Heading Alignment") "c" (N_ "Banner for top of report.") > 'left > (list (vector 'left (N_ "Left")) > (vector 'center (N_ "Center")) > (vector 'right (N_ "Right"))))) > > (opt-register > (gnc:make-pixmap-option > (N_ "Images") > (N_ "Logo") "d" (N_ "Company logo image.") > "")) > > ;; RPH Mon Oct 8 10:46:26 2007 > ;; Button image and associated text options > (opt-register > (gnc:make-pixmap-option > (N_ "Images") > (N_ "Button Image") "e" (N_ "Button image.") > "")) > (opt-register > (gnc:make-string-option > (N_ "Images") > (N_ "Button Image Text") "f" (N_ "Text to place under Button > Image.") > "")) > > (opt-register > (gnc:make-color-option > (N_ "Colors") > (N_ "Background Color") "a" (N_ "General background color for > report.") > (list #xff #xff #xff #xff) > 255 #f)) > > (opt-register > (gnc:make-color-option > (N_ "Colors") > (N_ "Text Color") "b" (N_ "Normal body text color.") > (list #x00 #x00 #x00 #xff) > 255 #f)) > > (opt-register > (gnc:make-color-option > (N_ "Colors") > (N_ "Link Color") "c" (N_ "Link text color.") > (list #xb2 #x22 #x22 #xff) > 255 #f)) > > (opt-register > (gnc:make-color-option > (N_ "Colors") > (N_ "Table Cell Color") "c" (N_ "Default background for table > cells.") > (list #xff #xff #xff #xff) > 255 #f)) > > (opt-register > (gnc:make-color-option > (N_ "Colors") > (N_ "Alternate Table Cell Color") "d" > (N_ "Default alternate background for table cells.") > (list #xff #xff #xff #xff) > 255 #f)) > > (opt-register > (gnc:make-color-option > (N_ "Colors") > (N_ "Subheading/Subtotal Cell Color") "e" > (N_ "Default color for subtotal rows.") > (list #xee #xe8 #xaa #xff) > 255 #f)) > > (opt-register > (gnc:make-color-option > (N_ "Colors") > (N_ "Sub-subheading/total Cell Color") "f" > (N_ "Color for subsubtotals.") > (list #xfa #xfa #xd2 #xff) > 255 #f)) > > (opt-register > (gnc:make-color-option > (N_ "Colors") > (N_ "Grand Total Cell Color") "g" > (N_ "Color for grand totals.") > (list #xff #xff #x00 #xff) > 255 #f)) > > (opt-register > (gnc:make-number-range-option > (N_ "Tables") > (N_ "Table cell spacing") "a" (N_ "Space between table cells.") > 1 0 20 0 1)) > > (opt-register > (gnc:make-number-range-option > (N_ "Tables") > (N_ "Table cell padding") "b" (N_ "Space between table cell edge and > content.") > 1 0 20 0 1)) > > (opt-register > (gnc:make-number-range-option > (N_ "Tables") > (N_ "Table border width") "c" (N_ "Bevel depth on tables.") > 1 0 20 0 1)) > (register-font-options options) > > options)) > > (define (dws-renderer options doc) > (let* ((ssdoc (gnc:make-html-document)) > (opt-val > (lambda (section name) > (gnc:option-value > (gnc:lookup-option options section name)))) > (color-val > (lambda (section name) > (gnc:color-option->html > (gnc:lookup-option options section name)))) > (preparer (opt-val "General" "Preparer")) > (prepared-for (opt-val "General" "Prepared for")) > (show-preparer? (opt-val "General" "Show preparer info")) > (links? (opt-val "General" "Enable Links")) > (footer-text (opt-val "General" "Footer")) > (bgcolor (color-val "Colors" "Background Color")) > (textcolor (color-val "Colors" "Text Color")) > (linkcolor (color-val "Colors" "Link Color")) > (normal-row-color (color-val "Colors" "Table Cell Color")) > (alternate-row-color (color-val "Colors" "Alternate Table Cell > Color")) > (primary-subheading-color > (color-val "Colors" "Subheading/Subtotal Cell Color")) > (secondary-subheading-color > (color-val "Colors" "Sub-subheading/total Cell Color")) > (grand-total-color (color-val "Colors" "Grand Total Cell Color")) > (bgpixmap (opt-val "Images" "Background Tile")) > (headpixmap (opt-val "Images" "Heading Banner")) > (logopixmap (opt-val "Images" "Logo")) > ;; Fetch Button image options > (buttonpixmap (opt-val (N_ "Images") (N_ "Button Image"))) > (buttontext (opt-val (N_ "Images") (N_ "Button Image Text"))) > (align (gnc:value->string (opt-val "Images" "Heading Alignment"))) > (spacing (opt-val "Tables" "Table cell spacing")) > (padding (opt-val "Tables" "Table cell padding")) > (border (opt-val "Tables" "Table border width"))) > > (gnc:html-document-set-style! > ssdoc "body" > 'attribute (list "bgcolor" bgcolor) > 'attribute (list "text" textcolor) > 'attribute (list "link" linkcolor)) > ;;;; > ;;;; > ;;;; > (gnc:html-document-set-style! > ssdoc "column-heading-left" > 'tag "th" > 'attribute (list "class" "column-heading-left")) > > (gnc:html-document-set-style! > ssdoc "column-heading-center" > 'tag "th" > 'attribute (list "class" "column-heading-center")) > > (gnc:html-document-set-style! > ssdoc "column-heading-right" > 'tag "th" > 'attribute (list "class" "column-heading-right")) > > (gnc:html-document-set-style! > ssdoc "date-cell" > 'tag "td" > 'attribute (list "class" "date-cell")) > > (gnc:html-document-set-style! > ssdoc "anchor-cell" > 'tag "td" > 'attribute (list "class" "anchor-cell")) > > (gnc:html-document-set-style! > ssdoc "number-cell" > 'tag "td" > 'attribute (list "class" "number-cell")) > > (gnc:html-document-set-style! > ssdoc "number-cell-neg" > 'tag "td" > 'attribute (list "class" "number-cell neg")) > > (gnc:html-document-set-style! > ssdoc "number-header" > 'tag "th" > 'attribute (list "class" "number-header")) > > (gnc:html-document-set-style! > ssdoc "text-cell" > 'tag "td" > 'attribute (list "class" "text-cell")) > > (gnc:html-document-set-style! > ssdoc "total-number-cell" > 'tag '("td") > 'attribute (list "class" "total-number-cell")) > > (gnc:html-document-set-style! > ssdoc "total-number-cell-neg" > 'tag '("td") > 'attribute (list "class" "total-number-cell neg")) > > (gnc:html-document-set-style! > ssdoc "total-label-cell" > 'tag '("td") > 'attribute (list "class" "total-label-cell")) > > (gnc:html-document-set-style! > ssdoc "centered-label-cell" > 'tag '("td") > 'attribute (list "class" "centered-label-cell")) > > (if (and bgpixmap > (not (string=? bgpixmap ""))) > (gnc:html-document-set-style! > ssdoc "body" > 'attribute (list "background" (make-file-url bgpixmap)))) > > (gnc:html-document-set-style! > ssdoc "table" > 'attribute (list "border" border) > 'attribute (list "cellspacing" spacing) > 'attribute (list "cellpadding" padding)) > > (gnc:html-document-set-style! > ssdoc "normal-row" > 'attribute (list "bgcolor" normal-row-color) > 'tag "tr") > > (gnc:html-document-set-style! > ssdoc "alternate-row" > 'attribute (list "bgcolor" alternate-row-color) > 'tag "tr") > > (gnc:html-document-set-style! > ssdoc "primary-subheading" > 'attribute (list "bgcolor" primary-subheading-color) > 'tag "tr") > > (gnc:html-document-set-style! > ssdoc "secondary-subheading" > 'attribute (list "bgcolor" secondary-subheading-color) > 'tag "tr") > > (gnc:html-document-set-style! > ssdoc "grand-total" > 'attribute (list "bgcolor" grand-total-color) > 'tag "tr") > > ;; don't surround marked-up links with <a> </a> > (if (not links?) > (gnc:html-document-set-style! > ssdoc "a" 'tag "")) > > (add-css-information-to-doc options ssdoc doc) > > (let ((t (gnc:make-html-table)) > ;; set the header column to be the 2nd when we have a logo > ;; do this so that when logo is not present, the document is > ;; perfectly centered > (headcolumn (if (and logopixmap (> (string-length logopixmap) 0)) > 1 0))) > > ;; we don't want a bevel for this table, but we don't want > ;; that to propagate > (gnc:html-table-set-style! > t "table" > 'attribute (list "border" 0) > 'attribute (list "style" "margin-left:auto; margin-right:auto") > 'inheritable? #f) > > (let* ((headline (or (gnc:html-document-headline doc) > (gnc:html-document-title doc)))) > > (gnc:html-table-set-cell! > t 1 headcolumn > (if show-preparer? > ;; title plus preparer info > (gnc:make-html-text > (gnc:html-markup-h3 headline) > (gnc:html-markup-br) > (G_ "Prepared by: ") > (gnc:html-markup-b preparer) > (gnc:html-markup-br) > (G_ "Prepared for: ") > (gnc:html-markup-b prepared-for) > (gnc:html-markup-br) > (G_ "Date: ") > (qof-print-date > (current-time))) > > ;; title only > (gnc:make-html-text > (gnc:html-markup-h3 headline))))) > > ;; only setup an image if we specified one > (if (and logopixmap (> (string-length logopixmap) 0)) > (gnc:html-table-set-cell! > t 0 0 > (gnc:make-html-text > (gnc:html-markup-img (make-file-url logopixmap))))) > > (display "*** headpixmap is ")(display headpixmap)(newline) > (if (and headpixmap (> (string-length headpixmap) 0)) > (let* ((div (gnc:html-markup-img (make-file-url headpixmap))) > (cell (gnc:make-html-table-cell (gnc:make-html-text > div)))) > (gnc:html-table-cell-set-style! cell "td" 'attribute `("align" > ,align)) > (gnc:html-table-set-cell! t 0 headcolumn cell)) > (gnc:html-table-set-cell! t 0 headcolumn (gnc:make-html-text " > "))) > > (apply > gnc:html-table-set-cell! > t 2 headcolumn > (gnc:html-document-objects doc)) > > (display "*** buttonpixmap is ")(display buttonpixmap)(newline) > (display "*** buttontext is ")(display buttontext)(newline) > (if (and buttonpixmap > (not (string=? buttonpixmap ""))) > (gnc:html-table-set-cell! > t 0 headcolumn > (gnc:make-html-text > (gnc:html-markup-img (make-file-url buttonpixmap)) > ;; Include additional text (typically E-Mail address used for > ;; PayPal payments. > (if (and buttontext (not (string=? buttontext ""))) > (string-append "<BR>" buttontext "<BR>") ) )) ) > (gnc:html-document-add-object! ssdoc t) > > (gnc:html-table-set-cell! > t 3 headcolumn > (gnc:make-html-text footer-text))) > ssdoc)) > > (gnc:define-html-style-sheet > 'version 3.0 > 'name (N_ "DWS Stylesheet") > 'renderer dws-renderer > 'options-generator dws-options) > > (gnc:make-html-style-sheet "DWS_Stylesheet" (N_ "DWS Stylesheet")) > > > > -- > Robert Heller -- Cell: 413-658-7953 GV: 978-633-5364 > Deepwoods Software -- Custom Software Services > http://www.deepsoft.com/ -- Linux Administration Services > hel...@deepsoft.com -- Webhosting Services > > _______________________________________________ > gnucash-user mailing list > gnucash-user@gnucash.org > To update your subscription preferences or to unsubscribe: > https://lists.gnucash.org/mailman/listinfo/gnucash-user > ----- > Please remember to CC this list on all your replies. > You can do this by using Reply-To-List or Reply-All. > _______________________________________________ gnucash-user mailing list gnucash-user@gnucash.org To update your subscription preferences or to unsubscribe: https://lists.gnucash.org/mailman/listinfo/gnucash-user ----- Please remember to CC this list on all your replies. You can do this by using Reply-To-List or Reply-All.