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.

58 lines
2.2 KiB

(in-package #:cl-bible.chapter)
(defun book/chapter-window (canvas title)
(let* ((win (window-content
(create-gui-window canvas
:title title
:height 400
:width 650)))
(mbar (create-gui-menu-bar win))
(drop-down (create-gui-menu-drop-down mbar :content "Translations")))
(values (create-div win)
drop-down)))
(defmacro translations-drop-down ()
`(progn
,@(mapcar
(lambda (translation)
`(labels ((verse-to-clog (verse)
(v:verse-to-clog verse
div
:translation ,(second translation)))
(hide-verse (verse) (setf (hiddenp verse) t))
(callback (obj)
(declare (ignore obj))
(mapc #'hide-verse display)
(setf display (mapcar #'verse-to-clog verses))))
(create-gui-menu-item drop-down
:content ,(first translation)
:on-click #'callback)))
d:*translations*)))
(defun display-chapter-or-book (canvas title verses)
(multiple-value-bind (div drop-down)
(book/chapter-window canvas title)
(flet ((verse-to-clog (verse)
(v:verse-to-clog verse
div
:translation d:*translation*)))
(let ((display (mapcar #'verse-to-clog verses)))
(translations-drop-down)))))
(defun load-chapter (canvas book chapter)
(display-chapter-or-book canvas
(format nil "~A: ~A ~A"
d:*translation*
book
chapter)
(s:find-chapter
(s:find-book d:*bible* book)
chapter)))
(defun load-book (canvas book)
(display-chapter-or-book canvas
(format nil "~A: ~A"
d:*translation*
book)
(s:find-book d:*bible* book)))