1 6b4d9ef2 2020-11-09 op (in-package #:phos/ui)
3 6b4d9ef2 2020-11-09 op (defgeneric render (obj frame)
4 6b4d9ef2 2020-11-09 op (:documentation "Render OBJ in the ltk FRAME"))
6 6b4d9ef2 2020-11-09 op (defmethod render ((l list) f)
8 6b4d9ef2 2020-11-09 op (render el f)))
10 6b4d9ef2 2020-11-09 op (defmethod render ((title gemtext:title) f)
11 6b4d9ef2 2020-11-09 op (with-slots ((text phos/gemtext:text)
12 6b4d9ef2 2020-11-09 op (level phos/gemtext:level))
14 6b4d9ef2 2020-11-09 op (let ((w (make-instance 'label
16 6b4d9ef2 2020-11-09 op :text (format nil "#(level ~a) ~a" level text))))
17 6b4d9ef2 2020-11-09 op (pack w :side :top))))
19 6b4d9ef2 2020-11-09 op (defmethod render ((link gemtext:link) f)
20 6b4d9ef2 2020-11-09 op (with-slots ((text phos/gemtext:text)
21 6b4d9ef2 2020-11-09 op (url phos/gemtext:url))
23 6b4d9ef2 2020-11-09 op (let ((w (make-instance 'button
25 6b4d9ef2 2020-11-09 op :text (format nil "~a" (or text url)))))
26 6b4d9ef2 2020-11-09 op (pack w :side :top))))
28 6b4d9ef2 2020-11-09 op (defmethod render ((item gemtext:item) f)
29 6b4d9ef2 2020-11-09 op (with-slots ((text phos/gemtext:text)) item
30 6b4d9ef2 2020-11-09 op (let ((w (make-instance 'label
32 6b4d9ef2 2020-11-09 op :text (format nil "* ~a" text))))
33 6b4d9ef2 2020-11-09 op (pack w :side :top))))
35 6b4d9ef2 2020-11-09 op (defmethod render ((par gemtext:paragraph) f)
36 6b4d9ef2 2020-11-09 op (with-slots ((text phos/gemtext:text)) par
37 6b4d9ef2 2020-11-09 op (let ((w (make-instance 'label
40 6b4d9ef2 2020-11-09 op (pack w :side :top))))
42 6b4d9ef2 2020-11-09 op (defmethod render ((v gemtext:verbatim) f)
43 6b4d9ef2 2020-11-09 op (with-slots ((text phos/gemtext:text)
44 6b4d9ef2 2020-11-09 op (alt phos/gemtext:alt))
46 6b4d9ef2 2020-11-09 op (let ((w (make-instance 'label
48 6b4d9ef2 2020-11-09 op :text (format nil "```~a~%~a~&```"
51 6b4d9ef2 2020-11-09 op (pack w :side :top))))
53 6b4d9ef2 2020-11-09 op (defun render-page (page)
55 6b4d9ef2 2020-11-09 op (let ((frame (make-instance 'frame)))
57 6b4d9ef2 2020-11-09 op (render page frame))))
59 6b4d9ef2 2020-11-09 op (defvar doc (with-open-file (stream #P"~/quicklisp/local-projects/phos/test.gmi")
60 6b4d9ef2 2020-11-09 op (gemtext:parse stream)))
62 6b4d9ef2 2020-11-09 op ;; (render-page doc)