|
|
|
(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)))
|
|
|
|
|
|
|
|
(defun translations-drop-down (div display verses drop-down)
|
|
|
|
(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 div display verses 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)))
|