27
|
1
|
(in-package :demo-ui) |
12
|
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
|
|
0
|
24
|
(defun on-new-window (body) |
|
25
|
"Handle new window event." |
12
|
26
|
(clog:debug-mode body) |
0
|
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." |
12
|
35
|
(clog:initialize #'on-new-window |
|
36
|
:extended-routing t |
|
37
|
:host ui-server-host |
|
38
|
:port ui-server-port) |
0
|
39
|
(clog:open-browser)) |
12
|
40
|
|
|
41
|
(defun stop-ui () |
|
42
|
"Stop the UI." |
|
43
|
(clog:shutdown)) |