mirror of
https://github.com/rabbibotton/clog.git
synced 2025-12-06 02:30:42 -08:00
CLOG Plugin Template added
This commit is contained in:
parent
35ec8e0259
commit
0528851ff7
7 changed files with 173 additions and 7 deletions
|
|
@ -1,5 +1,5 @@
|
|||
The new application project feature of CLOG Builder will use these
|
||||
templates to start new projects
|
||||
|
||||
www/* - static-file directories
|
||||
www/* - static-file directories commmon to projects
|
||||
projects/* - CLOG Builder templates
|
||||
|
|
|
|||
8
templates/projects/clog-plugin/README.md
Normal file
8
templates/projects/clog-plugin/README.md
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
# New CLOG project
|
||||
### _Your Name <your.name@example.com>_
|
||||
|
||||
This is a project to do ... something.
|
||||
|
||||
## License
|
||||
|
||||
Specify license here
|
||||
37
templates/projects/clog-plugin/tmpl-tools.lisp.lt
Normal file
37
templates/projects/clog-plugin/tmpl-tools.lisp.lt
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
(in-package :<%= (@ sys-name) %>)
|
||||
|
||||
(progn
|
||||
(clog-tools:add-supported-controls
|
||||
(list `(;; unique name to control used to identify it the .clog xml
|
||||
:name "<%= (@ sys-name) %>"
|
||||
;; how control appears in builder control list
|
||||
:description "<%= (@ sys-name) %>"
|
||||
;; the common lisp type of the control
|
||||
:clog-type <%= (@ sys-name) %>:<%= (@ sys-name) %>-element
|
||||
;; the create-function used to create the function
|
||||
;; at _design time_ at run time only clog:attach-as-child is used
|
||||
;; any initialization at _run time_ is done with :on-setup below.
|
||||
:create <%= (@ sys-name) %>:create-<%= (@ sys-name) %>-design
|
||||
;; clog has the following create-types
|
||||
;; :base - create
|
||||
;; :element - create create-content
|
||||
;; :form - create create-param create-value
|
||||
;; :text-area - create create-value
|
||||
;; :custom-query - create (ask user for string)
|
||||
;; :custom - create create-content
|
||||
:create-type :base
|
||||
;; setup the control at _design time_ and custom attributes
|
||||
:setup ,(lambda (control content control-record)
|
||||
(declare (ignore content) (ignore control-record))
|
||||
;; default custom attribute values and events at design time
|
||||
)
|
||||
;; code to run at _run time_ after all controls attached to panel
|
||||
:on-setup ,(lambda (control control-record)
|
||||
(declare (ignore control control-record))
|
||||
;; initialization at run time and apply custom attributes
|
||||
(format nil "(<%= (@ sys-name) %>:attach-<%= (@ sys-name) %> target)"))
|
||||
;; events handled
|
||||
:events (,@clog-tools::*events-element*)
|
||||
;; properties handled
|
||||
:properties (,@clog-tools::*props-element*))))
|
||||
(format t "~%<%= (@ SYS-NAME) %> installed in CLOG Builder"))
|
||||
12
templates/projects/clog-plugin/tmpl.asd.lt
Normal file
12
templates/projects/clog-plugin/tmpl.asd.lt
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
(asdf:defsystem #:<%= (@ sys-name) %>
|
||||
:description "New CLOG System"
|
||||
:author "some@one.com"
|
||||
:license "BSD"
|
||||
:version "0.0.0"
|
||||
:serial t
|
||||
:depends-on (#:clog)
|
||||
:components ((:file "<%= (@ sys-name) %>")))
|
||||
|
||||
(asdf:defsystem #:<%= (@ sys-name) %>/tools
|
||||
:depends-on (#:<%= (@ sys-name) %> #:clog/tools)
|
||||
:components ((:file "<%= (@ sys-name) %>-tools")))
|
||||
101
templates/projects/clog-plugin/tmpl.lisp.lt
Normal file
101
templates/projects/clog-plugin/tmpl.lisp.lt
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
(defpackage #:<%= (@ sys-name) %>
|
||||
(:use #:cl #:clog)
|
||||
(:export <%= (@ sys-name) %>-element
|
||||
create-<%= (@ sys-name) %>-element
|
||||
create-<%= (@ sys-name) %>-design
|
||||
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))
|
||||
"Not used by builder, but used to create in non-builder 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)
|
||||
(attach-<%= (@ sys-name) %> new-obj)
|
||||
(change-class new-obj '<%= (@ sys-name) %>-element)))
|
||||
|
||||
(defgeneric create-<%= (@ sys-name) %>-design (clog-obj &key hidden class html-id auto-place)
|
||||
(:documentation "Create a new <%= (@ sys-name) %>-element as child of CLOG-OBJ to display
|
||||
in builder representing <%= (@ sys-name) %> at design time."))
|
||||
|
||||
(defmethod create-<%= (@ sys-name) %>-design ((obj clog:clog-obj)
|
||||
&key
|
||||
(hidden nil)
|
||||
(class nil)
|
||||
(html-id nil)
|
||||
(auto-place t))
|
||||
(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)
|
||||
(setf (background-color new-obj) :black)
|
||||
new-obj))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Events - <%= (@ sys-name) %>-element
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Properties - <%= (@ sys-name) %>-element
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Methods - <%= (@ sys-name) %>-element
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Implementation - js binding
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defun init-<%= (@ sys-name) %> (obj)
|
||||
(check-type obj clog:clog-obj)
|
||||
;; Only init once
|
||||
;; use load-css for any css files to load
|
||||
;; ise load-script for any js files to load
|
||||
)
|
||||
|
||||
|
||||
(defun attach-<%= (@ sys-name) %> (obj)
|
||||
"Initialize plugin"
|
||||
(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))
|
||||
|
||||
|
|
@ -1691,4 +1691,9 @@
|
|||
:code "ncws"
|
||||
:type :system
|
||||
:www "templates/www/"
|
||||
:loc "templates/projects/clog-web-site/")))
|
||||
:loc "templates/projects/clog-web-site/")
|
||||
'(:name "New CLOG/CLOG-Builder Plugin Project"
|
||||
:code "ncplug"
|
||||
:type :system
|
||||
:www "templates/www/"
|
||||
:loc "templates/projects/clog-plugin/")))
|
||||
|
|
|
|||
|
|
@ -220,9 +220,12 @@ create-div's"
|
|||
(ensure-directories-exist out-dir)
|
||||
(cond ((equalp (pathname-type file) tmpl-ext)
|
||||
(let* ((nfile (pathname-name file))
|
||||
(afile (if (equalp (pathname-name nfile) "tmpl")
|
||||
(format nil "~A~A.~A" out-dir sys-name (pathname-type nfile))
|
||||
(format nil "~A~A" out-dir nfile))))
|
||||
(afile (cond ((equalp (pathname-name nfile) "tmpl")
|
||||
(format nil "~A~A.~A" out-dir sys-name (pathname-type nfile)))
|
||||
((equalp (pathname-name nfile) "tmpl-tools")
|
||||
(format nil "~A~A-tools.~A" out-dir sys-name (pathname-type nfile)))
|
||||
(t
|
||||
(format nil "~A~A" out-dir nfile)))))
|
||||
(write-file (funcall (cl-template:compile-template (read-file src-file))
|
||||
(list :sys-name sys-name))
|
||||
afile)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue