mirror of
https://github.com/rabbibotton/clog.git
synced 2025-12-06 02:30:42 -08:00
34 lines
976 B
Common Lisp
34 lines
976 B
Common Lisp
(defpackage #:clog-user
|
|
(:use #:cl #:clog #:clog-gui)
|
|
(:export start-tutorial))
|
|
|
|
(in-package :clog-user)
|
|
|
|
;; This is a simple demo using semaphores to wait for user input
|
|
(defun ask (obj)
|
|
(let ((result nil)
|
|
(hold (bordeaux-threads:make-semaphore))
|
|
(q-box (create-div obj)))
|
|
(set-on-click (create-button q-box :content "Yes")
|
|
(lambda (obj)
|
|
(setf result :yes)
|
|
(bordeaux-threads:signal-semaphore hold)))
|
|
(set-on-click (create-button q-box :content "No")
|
|
(lambda (obj)
|
|
(setf result :no)
|
|
(bordeaux-threads:signal-semaphore hold)))
|
|
(bordeaux-threads:wait-on-semaphore hold :timeout 10)
|
|
(destroy q-box)
|
|
result))
|
|
|
|
(defun on-new-window (body)
|
|
(set-on-click (create-button body :content
|
|
"Click for my question. You have 10 seconds to answer.")
|
|
(lambda (obj)
|
|
(create-div body :content (ask body))))
|
|
(run body))
|
|
|
|
(defun start-tutorial ()
|
|
"Start turtorial."
|
|
(initialize #'on-new-window)
|
|
(open-browser))
|