changelog shortlog graph tags branches changeset files file revisions raw help

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