mirror of https://github.com/Gnucash/gnucash
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
2.2 KiB
61 lines
2.2 KiB
;; 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, contact:
|
|
;;
|
|
;; 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
|
|
|
|
(define (gnc:error->string tag args)
|
|
(define (write-error port)
|
|
(if (and (list? args) (not (null? args)))
|
|
(let ((func (car args)))
|
|
(if func
|
|
(begin
|
|
(display "Function: " port)
|
|
(display func port)
|
|
(display ", " port)
|
|
(display tag port)
|
|
(display "\n\n" port)))))
|
|
(false-if-exception
|
|
(apply display-error (fluid-ref the-last-stack) port args))
|
|
(display-backtrace (fluid-ref the-last-stack) port)
|
|
(force-output port))
|
|
|
|
(false-if-exception
|
|
(call-with-output-string write-error)))
|
|
|
|
|
|
;; This database can be used to store and retrieve translatable
|
|
;; strings. Strings that are returned by the lookup function are
|
|
;; translated with gettext.
|
|
(define (gnc:make-string-database)
|
|
|
|
(define string-hash (make-hash-table 23))
|
|
|
|
(define (lookup key)
|
|
(_ (hash-ref string-hash key)))
|
|
|
|
(define (store key string)
|
|
(hash-set! string-hash key string))
|
|
|
|
(define (dispatch message . args)
|
|
(let ((func (case message
|
|
((lookup) lookup)
|
|
((store) store)
|
|
(else #f))))
|
|
(if func
|
|
(apply func args)
|
|
(gnc:warn "string-database: bad message" message "\n"))))
|
|
|
|
dispatch)
|