clog/templates/projects/clog-plugin/tmpl.lisp.lt
2024-02-18 20:40:55 -05:00

85 lines
3.4 KiB
Text
Vendored

(defpackage #:<%= (@ sys-name) %>
(:use #:cl #:clog)
(:export <%= (@ sys-name) %>-element
create-<%= (@ sys-name) %>-element
init-<%= (@ sys-name) %>
attach-<%= (@ sys-name) %>
start-test))
(in-package :<%= (@ sys-name) %>)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Implementation - <%= (@ sys-name) %>-element
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defclass <%= (@ sys-name) %>-element (clog-element)()
(:documentation "<%= (@ sys-name) %> Element Object."))
(defgeneric create-<%= (@ sys-name) %>-element (clog-obj &key hidden class html-id auto-place)
(:documentation "Create a new <%= (@ sys-name) %>-element as child of CLOG-OBJ."))
(defmethod create-<%= (@ sys-name) %>-element ((obj clog:clog-obj)
&key
(hidden nil)
(class nil)
(html-id nil)
(auto-place t))
"Create control - used at design time and in code"
(let ((new-obj (create-div obj
:class class
:hidden hidden
:html-id html-id
:auto-place auto-place)))
(set-geometry new-obj :width 200 :height 100)
(change-class new-obj '<%= (@ sys-name) %>-element)
(attach-<%= (@ sys-name) %> new-obj)
new-obj))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Events - <%= (@ sys-name) %>-element
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Properties - <%= (@ sys-name) %>-element
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Methods - <%= (@ sys-name) %>-element
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Implementation - js binding
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defgeneric init-<%= (@ sys-name) %> (<%= (@ sys-name) %>-element)
(:documentation "Initialize libraries"))
(defmethod init-<%= (@ sys-name) %> ((obj <%= (@ sys-name) %>-element))
(check-type obj clog:clog-obj)
;; Only init once
;; Use load-css for any css files to load
;; Use load-script for any js files to load
)
(defgeneric attach-<%= (@ sys-name) %> (<%= (@ sys-name) %>-element)
(:documentation "Initialize plugin"))
(defmethod attach-<%= (@ sys-name) %> ((obj <%= (@ sys-name) %>-element))
(init-<%= (@ sys-name) %> obj))
(defun on-test-<%= (@ sys-name) %> (body)
(clog:debug-mode body)
;; Use the panel-box-layout to center horizontally
;; and vertically our div on the screen.
(let* ((layout (create-panel-box-layout body))
(test (create-<%= (@ sys-name) %>-element (center-panel layout))))
(center-children (center-panel layout))))
(defun start-test ()
(initialize 'on-test-<%= (@ sys-name) %>
:static-root (merge-pathnames "./www/"
(asdf:system-source-directory :<%= (@ sys-name) %>)))
(open-browser))