diff --git a/templates/projects/clog-gui-panel/README.md b/templates/projects/clog-gui-panel/README.md new file mode 100644 index 0000000..3e1ddc4 --- /dev/null +++ b/templates/projects/clog-gui-panel/README.md @@ -0,0 +1,8 @@ +# New CLOG-GUI project +### _Your Name _ + +This is a project to do ... something. + +## License + +Specify license here diff --git a/templates/projects/clog-gui-panel/apanel.clog.lt b/templates/projects/clog-gui-panel/apanel.clog.lt new file mode 100644 index 0000000..87d9c6e --- /dev/null +++ b/templates/projects/clog-gui-panel/apanel.clog.lt @@ -0,0 +1 @@ +
A Panel
diff --git a/templates/projects/clog-gui-panel/apanel.lisp.lt b/templates/projects/clog-gui-panel/apanel.lisp.lt new file mode 100644 index 0000000..57052f0 --- /dev/null +++ b/templates/projects/clog-gui-panel/apanel.lisp.lt @@ -0,0 +1,16 @@ +;;;; CLOG Builder generated code - modify original clog file +(in-package :<%= (@ sys-name) %>) +(defclass apanel (clog:clog-panel) ((hello-div :reader hello-div))) +(defun create-apanel + (clog-obj &key (hidden nil) (class nil) (html-id nil) (auto-place t)) + (let ((panel + (change-class + (clog:create-div clog-obj :content + "
A Panel
" + :hidden hidden :class class :html-id html-id + :auto-place auto-place) + 'apanel))) + (setf (slot-value panel 'hello-div) + (attach-as-child clog-obj "CLOGB38714700541" :clog-type + 'clog:clog-div :new-id t)) + panel)) diff --git a/templates/projects/clog-gui-panel/tmpl.asd.lt b/templates/projects/clog-gui-panel/tmpl.asd.lt new file mode 100644 index 0000000..c76e78b --- /dev/null +++ b/templates/projects/clog-gui-panel/tmpl.asd.lt @@ -0,0 +1,15 @@ +(asdf:defsystem #:<%= (@ sys-name) %> + :description "New CLOG System" + :author "some@one.com" + :license "BSD" + :version "0.0.0" + :serial t + :entry-point "<%= (@ sys-name) %>:start-app" + :depends-on (#:clog) ; add clog plugins here as #:plugin for run time + :components ((:file "<%= (@ sys-name) %>") + (:file "apanel"))) + +(asdf:defsystem #:<%= (@ sys-name) %>/tools + :defsystem-depends-on (:clog) + :depends-on (#:<%= (@ sys-name) %> #:clog/tools) ; add clog plugins here as #:plugin/tools for design time + :components ((:clog-file "apanel"))) diff --git a/templates/projects/clog-gui-panel/tmpl.lisp.lt b/templates/projects/clog-gui-panel/tmpl.lisp.lt new file mode 100644 index 0000000..cb8aa3c --- /dev/null +++ b/templates/projects/clog-gui-panel/tmpl.lisp.lt @@ -0,0 +1,53 @@ +(defpackage #:<%= (@ sys-name) %> + (:use #:cl #:clog #:clog-gui) + (:export start-app)) + +(in-package :<%= (@ sys-name) %>) + +(defun on-file-new (obj) + (let* ((app (connection-data-item obj "app-data")) + (win (create-gui-window obj :title "New Window"))) + (declare (ignore app)) + (create-apanel win))) + +(defun on-help-about (obj) + (let* ((about (create-gui-window obj + :title "About" + :content "
+
+
<%= (@ sys-name) %>
+
<%= (@ sys-name) %>
+

A New App
+
(c) 2022 - Some One

" + :hidden t + :width 200 + :height 200))) + (window-center about) + (setf (visiblep about) t) + (set-on-window-can-size about (lambda (obj) + (declare (ignore obj))())))) + +(defclass app-data () + ((data + :accessor data))) + +(defun on-new-window (body) + (let ((app (make-instance 'app-data))) + (setf (connection-data-item body "app-data") app) + (setf (title (html-document body)) "New App") + (clog-gui-initialize body) + (add-class body "w3-teal") + (let* ((menu-bar (create-gui-menu-bar body)) + (icon-item (create-gui-menu-icon menu-bar :on-click 'on-help-about)) + (file-item (create-gui-menu-drop-down menu-bar :content "File")) + (file-new (create-gui-menu-item file-item :content "New Window" :on-click 'on-file-new)) + (help-item (create-gui-menu-drop-down menu-bar :content "Help")) + (help-about (create-gui-menu-item help-item :content "About" :on-click 'on-help-about)) + (full-screen (create-gui-menu-full-screen menu-bar))) + (declare (ignore icon-item file-new help-about full-screen))))) + +(defun start-app () + (initialize 'on-new-window + :static-root (merge-pathnames "./www/" + (asdf:system-source-directory :<%= (@ sys-name) %>))) + (open-browser)) diff --git a/tools/clog-builder-settings.lisp b/tools/clog-builder-settings.lisp index b7fc20e..a5a8eef 100644 --- a/tools/clog-builder-settings.lisp +++ b/tools/clog-builder-settings.lisp @@ -2270,16 +2270,21 @@ (list '(:name "CLOG Builder - Panel Projects" :code :group) - '(:name "Center Panel Project" + '(:name "Centered Panel Project" :code "nbp" :type :system :www "templates/www/" :loc "templates/projects/clog-panel/") - '(:name "Full screen/browser Panel Project" + '(:name "Full browser Panel Project" :code "nfp" :type :system :www "templates/www/" :loc "templates/projects/full-screen/") + '(:name "CLOG-GUI MDI Panel Project" + :code "nmp" + :type :system + :www "templates/www/" + :loc "templates/projects/clog-gui-panel/") '(:name "CLOG - General Projects" :code :group) '(:name "Basic HTML Project"