changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > demo / src/ui/ui.lisp

changeset 27: 529419ac94f3
parent: 2015d7277629
author: ellis <ellis@rwest.io>
date: Tue, 06 Jun 2023 18:55:17 -0400
permissions: -rw-r--r--
description: refactor 2 (wip)
1 (in-package :demo-ui)
2 
3 (defparameter ui-server-port 8080)
4 (defparameter ui-server-host "0.0.0.0")
5 
6 (defclass ui-element (clog-element) ()
7  (:documentation "UI Element Object."))
8 
9 (defgeneric create-ui-element (obj &key hidden class id mode)
10  (:documentation "Create a new ui-element as a child of OBJ."))
11 (defmethod create-ui-element ((obj clog:clog-obj)
12  &key (class nil)
13  (hidden nil)
14  (id nil)
15  (mode 'auto))
16  (let ((new (clog:create-div obj
17  :class class
18  :hidden hidden
19  :id id
20  :mode mode)))
21  (clog:set-geometry new :width 200 :height 100)
22  (change-class new 'ui-element)))
23 
24 (defun on-new-window (body)
25  "Handle new window event."
26  (clog:debug-mode body)
27  (let ((elt (clog:create-child body "<h1>foobar</h1>")))
28  (clog:set-on-click
29  elt
30  (lambda (o)
31  (setf (clog:color elt) "green")))))
32 
33 (defun start-ui ()
34  "Start the UI."
35  (clog:initialize #'on-new-window
36  :extended-routing t
37  :host ui-server-host
38  :port ui-server-port)
39  (clog:open-browser))
40 
41 (defun stop-ui ()
42  "Stop the UI."
43  (clog:shutdown))