prety printing of generated code

This commit is contained in:
David Botton 2022-07-28 22:51:44 -04:00
parent 3a2a80d891
commit b24c728ee9
7 changed files with 301 additions and 182 deletions

View file

@ -1,18 +1,35 @@
(in-package "CLOG-TOOLS")
(defclass clog-builder-repl (clog:clog-panel)
( (package-div :reader package-div)
(terminal :reader terminal)
))
(defun create-clog-builder-repl (clog-obj &key (hidden nil) (class nil) (html-id nil) (auto-place t))
(let ((panel (change-class (clog:create-div clog-obj :content "<div style=\"--pixel-density:0.994318; --char-width:7.20312; box-sizing: content-box; position: absolute; inset: 30px 0px 0px;\" class=\"terminal\" id=\"CLOGB3867357553\" data-clog-name=\"terminal\"></div><input type=\"TEXT\" value=\"clog-user\" style=\"box-sizing: content-box; position: absolute; inset: 0px 0px 338.5px; height: 25px;\" placeholder=\"\" class=\"w3-black\" id=\"CLOGB3867357554\" data-clog-name=\"package-div\">"
:hidden hidden :class class :html-id html-id :auto-place auto-place) 'clog-builder-repl)))
(setf (slot-value panel 'package-div) (attach-as-child clog-obj "CLOGB3867357554" :clog-type 'CLOG:CLOG-FORM-ELEMENT :new-id t))
(setf (slot-value panel 'terminal) (attach-as-child clog-obj "CLOGB3867357553" :clog-type 'CLOG-TERMINAL:CLOG-TERMINAL-ELEMENT :new-id t))
(let ((target (terminal panel))) (declare (ignorable target)) (clog-terminal:attach-clog-terminal target :greetings "CLOG Builder REPL") (clog-terminal:prompt target "> "))
(clog-terminal:set-on-command (terminal panel) (lambda (target data) (declare (ignorable target data)) (multiple-value-bind (result new-package)
(capture-eval data :clog-obj panel
:eval-in-package (text-value (package-div panel)))
(setf (text-value (package-div panel))
(string-downcase (package-name new-package)))
(clog-terminal:echo target result))))
((package-div :reader package-div) (terminal :reader terminal)))
(defun create-clog-builder-repl
(clog-obj &key (hidden nil) (class nil) (html-id nil) (auto-place t))
(let ((panel
(change-class
(clog:create-div clog-obj :content
"<div style=\"--pixel-density:0.994318; --char-width:7.24432; box-sizing: content-box; position: absolute; inset: 30px 0px 0px;\" class=\"terminal\" id=\"CLOGB3868051526\" data-clog-name=\"terminal\"></div><input type=\"TEXT\" value=\"clog-user\" style=\"box-sizing: content-box; position: absolute; inset: 0px 0px 338.5px; height: 25px;\" placeholder=\"\" class=\"w3-black\" id=\"CLOGB3868051527\" data-clog-name=\"package-div\">"
:hidden hidden :class class :html-id html-id
:auto-place auto-place)
'clog-builder-repl)))
(setf (slot-value panel 'package-div)
(attach-as-child clog-obj "CLOGB3868051527" :clog-type
'clog:clog-form-element :new-id t))
(setf (slot-value panel 'terminal)
(attach-as-child clog-obj "CLOGB3868051526" :clog-type
'clog-terminal:clog-terminal-element :new-id t))
(let ((target (terminal panel)))
(declare (ignorable target))
(clog-terminal:attach-clog-terminal target :greetings
"CLOG Builder REPL")
(clog-terminal:prompt target "> "))
(clog-terminal:set-on-command (terminal panel)
(lambda (target data)
(declare (ignorable target data))
(multiple-value-bind (result new-package)
(capture-eval data :clog-obj panel
:eval-in-package
(text-value (package-div panel)))
(setf (text-value (package-div panel))
(string-downcase
(package-name new-package)))
(clog-terminal:echo target result))))
panel))

View file

@ -797,7 +797,18 @@ not a temporary attached one when using select-control."
(declare (ignore html-id))
(place-after control (get-placer control)))
(get-control-list app panel-id))
result)))
;; prety print the code
(let ((r (make-array '(0) :element-type 'base-char
:fill-pointer 0 :adjustable t)))
(with-output-to-string (s r)
(with-input-from-string (n result)
(let ((*standard-output* s)
(*print-case* :downcase))
(loop
(let ((l (read n nil)))
(unless l (return))
(pprint l))))))
r))))
;; Population of utility windows

View file

@ -1,12 +1,24 @@
(in-package "CLOG-TOOLS")
(defclass clog-templates (clog:clog-panel)
( (fill-button :reader fill-button)
(template-box :reader template-box)
(win :accessor win)))
(defun create-clog-templates (clog-obj &key (hidden nil) (class nil) (html-id nil) (auto-place t))
(let ((panel (change-class (clog:create-div clog-obj :content "<form action=\"#\" onsubmit=\"return false;\" target=\"_self\" style=\"box-sizing: content-box; position: static; left: 162px; top: 216px;\" id=\"CLOGB3854134560\"><label for=\"\" style=\"box-sizing: content-box; position: absolute; left: 7px; top: 6px; text-align: start; cursor: default; font: bold 15px / 22.5px Verdana, sans-serif&nbsp;; bottom: 211.5px;\" id=\"CLOGB3854134561\">Available Templates:</label><div style=\"box-sizing: content-box; position: absolute; inset: 35px 7px 45px;\" id=\"CLOGB3854134562\"><select size=\"4\" style=\"box-sizing: content-box; position: static; inset: 40px 5px 5px; width: 100%; height: 100%;\" id=\"CLOGB3854134563\"></select></div><button class=\"\" style=\"box-sizing: content-box; position: absolute; left: 7px; bottom: 5px;\" id=\"CLOGB3854134564\">Fill Template</button></form>"
:hidden hidden :class class :html-id html-id :auto-place auto-place) 'clog-templates)))
(setf (slot-value panel 'fill-button) (attach-as-child clog-obj "CLOGB3854134564" :clog-type 'CLOG:CLOG-BUTTON :new-id t))
(setf (slot-value panel 'template-box) (attach-as-child clog-obj "CLOGB3854134563" :clog-type 'CLOG:CLOG-SELECT :new-id t))
(set-on-click (fill-button panel) (lambda (target) (declare (ignorable target)) (fill-button-clicked panel)))
((fill-button :reader fill-button)
(template-box :reader template-box) (win :accessor win)))
(defun create-clog-templates
(clog-obj &key (hidden nil) (class nil) (html-id nil) (auto-place t))
(let ((panel
(change-class
(clog:create-div clog-obj :content
"<form action=\"#\" onsubmit=\"return false;\" target=\"_self\" style=\"box-sizing: content-box; position: static; left: 162px; top: 216px;\" id=\"CLOGB3868051553\" data-clog-name=\"none-form\"><label for=\"\" style=\"box-sizing: content-box; position: absolute; left: 7px; top: 6px; text-align: start; cursor: default; font: bold 15px / 22.5px Verdana, sans-serif&nbsp;; bottom: 211.5px;\" id=\"CLOGB3868051554\" data-clog-name=\"none-label-2\">Available Templates:</label><div style=\"box-sizing: content-box; position: absolute; inset: 35px 7px 45px;\" id=\"CLOGB3868051555\" data-clog-name=\"none-div-1\"><select size=\"4\" style=\"box-sizing: content-box; position: static; inset: 40px 5px 5px; width: 100%; height: 100%;\" id=\"CLOGB3868051556\" data-clog-name=\"template-box\"></select></div><button class=\"\" style=\"box-sizing: content-box; position: absolute; left: 7px; bottom: 5px;\" id=\"CLOGB3868051557\" data-clog-name=\"fill-button\">Fill Template</button></form>"
:hidden hidden :class class :html-id html-id
:auto-place auto-place)
'clog-templates)))
(setf (slot-value panel 'fill-button)
(attach-as-child clog-obj "CLOGB3868051557" :clog-type
'clog:clog-button :new-id t))
(setf (slot-value panel 'template-box)
(attach-as-child clog-obj "CLOGB3868051556" :clog-type
'clog:clog-select :new-id t))
(clog:set-on-click (fill-button panel)
(lambda (target)
(declare (ignorable target))
(fill-button-clicked panel)))
panel))

View file

@ -1,14 +1,27 @@
(in-package "CLOG-TOOLS")
(defclass image-to-data (clog:clog-panel)
( (submit-8 :reader submit-8)
(file-2 :reader file-2)
(form-7 :reader form-7)
))
(defun create-image-to-data (clog-obj &key (hidden nil) (class nil) (html-id nil) (auto-place t))
(let ((panel (change-class (clog:create-div clog-obj :content "<form action=\"/image-to-data\" onsubmit=\"return false;\" enctype=\"multipart/form-data\" target=\"_blank\" style=\"box-sizing: content-box; position: static; width: 385px; height: 121px; left: 14px; top: 0px;\" method=\"post\" id=\"CLOGB3865596273\" data-clog-name=\"form-7\"><input type=\"FILE\" value=\"\" style=\"box-sizing: content-box; position: absolute; left: 38px; top: 29px;\" accept=\"image/*\" class=\"\" name=\"filename\" size=\"20\" id=\"CLOGB3865596274\" data-clog-name=\"file-2\"><input type=\"SUBMIT\" value=\"Convert Image to Data\" style=\"box-sizing: content-box; position: absolute; left: 38px; top: 67px; width: 188.922px; height: 22.5px;\" placeholder=\"\" id=\"CLOGB3865596275\" data-clog-name=\"submit-8\"></form>"
:hidden hidden :class class :html-id html-id :auto-place auto-place) 'image-to-data)))
(setf (slot-value panel 'submit-8) (attach-as-child clog-obj "CLOGB3865596275" :clog-type 'CLOG:CLOG-FORM-ELEMENT :new-id t))
(setf (slot-value panel 'file-2) (attach-as-child clog-obj "CLOGB3865596274" :clog-type 'CLOG:CLOG-FORM-ELEMENT :new-id t))
(setf (slot-value panel 'form-7) (attach-as-child clog-obj "CLOGB3865596273" :clog-type 'CLOG:CLOG-FORM :new-id t))
(clog:set-on-click (submit-8 panel) (lambda (target) (declare (ignorable target)) (submit (form-7 panel))))
((submit-8 :reader submit-8) (file-2 :reader file-2)
(form-7 :reader form-7)))
(defun create-image-to-data
(clog-obj &key (hidden nil) (class nil) (html-id nil) (auto-place t))
(let ((panel
(change-class
(clog:create-div clog-obj :content
"<form action=\"/image-to-data\" onsubmit=\"return false;\" enctype=\"multipart/form-data\" target=\"_blank\" style=\"box-sizing: content-box; position: static; width: 385px; height: 121px; left: 14px; top: 0px;\" method=\"post\" id=\"CLOGB3868051673\" data-clog-name=\"form-7\"><input type=\"FILE\" value=\"\" style=\"box-sizing: content-box; position: absolute; left: 38px; top: 29px;\" accept=\"image/*\" class=\"\" name=\"filename\" size=\"20\" id=\"CLOGB3868051674\" data-clog-name=\"file-2\"><input type=\"SUBMIT\" value=\"Convert Image to Data\" style=\"box-sizing: content-box; position: absolute; left: 38px; top: 67px; width: 188.922px; height: 22.5px;\" placeholder=\"\" id=\"CLOGB3868051675\" data-clog-name=\"submit-8\"></form>"
:hidden hidden :class class :html-id html-id
:auto-place auto-place)
'image-to-data)))
(setf (slot-value panel 'submit-8)
(attach-as-child clog-obj "CLOGB3868051675" :clog-type
'clog:clog-form-element :new-id t))
(setf (slot-value panel 'file-2)
(attach-as-child clog-obj "CLOGB3868051674" :clog-type
'clog:clog-form-element :new-id t))
(setf (slot-value panel 'form-7)
(attach-as-child clog-obj "CLOGB3868051673" :clog-type
'clog:clog-form :new-id t))
(clog:set-on-click (submit-8 panel)
(lambda (target)
(declare (ignorable target))
(submit (form-7 panel))))
panel))

View file

@ -1,34 +1,44 @@
(in-package "CLOG-TOOLS")
(defclass quick-start (clog:clog-panel)
( (Instructions :reader Instructions)
(span-13 :reader span-13)
(image-12 :reader image-12)
))
(defun create-quick-start (clog-obj &key (hidden nil) (class nil) (html-id nil) (auto-place t))
(let ((panel (change-class (clog:create-div clog-obj :content "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAABf2lDQ1BzUkdCIElFQzYxOTY2LTIuMQAAKJF1kc8rRFEUxz8zgxEjioVkMQkbM2LUxEYZCSVNY5TBZuaZH2p+vN4bSbbKdooSG78W/AVslbVSREqWsiY26DnXqJHMvd17Pvd7zzmdey7Yw2ktY1b0QCabN0KjAfdMZNbtfKSKFhxAV1Qz9aFgcIKy4+0Gm7JXXpWrvN+/o3YhbmpgqxYe1HQjLzwmPLGc1xVvCjdpqeiC8LGwx5ACha+VHivyk+JkkT8UG+HQMNgbhN3JXxz7xVrKyAjLy2nPpJe0n3rUS1zx7PSU2DZZrZiEGCWAm3FGGMZPLwOy+/Hio1tOlInv+Y6fJCexmuw6KxgskiRFHo+oS5I9LjYhelxmmhXV/799NRN9vmJ2VwAqHyzrpQOcG/BZsKz3fcv6PADHPZxlS/G5Peh/Fb1Q0tp3oX4NTs5LWmwLTteh+U6PGtFvSf28PZGA5yOoi0DjJdTMFXv2c8/hLYRX5asuYHsHOsW/fv4LI2xnxwFcS14AAADkUExURQcFAEEwASwgAD4uAU05AVZAAiEYAKuABJJuBOeuB/2+CAwIADYoAayBBP6/CGBIA1A8AfS4CFA7AR4WAGtPAigeATUnAfm7COCpB6p/BOWsB3VYBA8LAD0uAtWgByQbARkTAcmXBpJtBAgFAN6nB6B4BZBsBYFhBHJWBGNLA1U/Av/ACAQDAF9IA8KSBu+0B553BRsUAVE9A86bBrKGBgkHAKZ9BZ12Bfe6CNahBxMOAQMCAHdaBOatB5t1BQAAANymBwsIAMWUBsqYBr+QBl5HAzcpAvK2CNKeB8+cBumvByZFyZjjEKMAAABMdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////wCejeTMAAAACXBIWXMAAC4jAAAuIwF4pT92AAAA40lEQVQokYWSyQ6CMBCG56ShhxoORoJ7oqJWFEXcoe4aef/3scViZavfhdIv07T/DIQKQC41EqHlSEy+4JTUSQL9VyKSAkmZccJC9kx5Mpc/WzXju/xIeU+z3qBNU94ZZGHLBsrodHFcCqHW6w+s4WhcpQJw4jQgbE1oGns6i0ohdDKOM1+4XC5zJaXejMlugaQrJo0iuWZyUyS3/Ck78bNPuoPPQwhK/DHtsn60vNicKmci4kP+5bphgWHzFpXfgwcW8cngMUKPp+u+2BeTbMui7UTLlM1Wj4l6wNSj+Weo83gDWkirJ693IE0AAAAASUVORK5CYII=\" alt=\"Add image url\" style=\"box-sizing: content-box; position: static; left: 93px; top: 29px;\" id=\"CLOGB3865888353\" data-clog-name=\"image-12\"><span style=\"box-sizing: content-box; position: static; left: 38px; top: 13px;\" id=\"CLOGB3865888354\" data-clog-name=\"span-13\">&nbsp;<b id=\"CLOGB3865888355\" data-clog-name=\"none-b-1\">CLOG The Common Lisp Omnificent GUI</b></span><div id=\"CLOGB3865888356\" data-clog-name=\"Instructions\">
<h2 id=\"CLOGB3865888357\" data-clog-name=\"none-h2-1-11\">Quick Start</h2>
<h3 style=\"left: -75px; top: 298.5px;\" id=\"CLOGB3865888358\" data-clog-name=\"none-h3-2-11\">Placing Controls</h3>
<b id=\"CLOGB3865888359\" data-clog-name=\"none-b-3-11\">Placing Controls</b> - Click a control from the control pallets in the top left panel. Click on your panel<br id=\"CLOGB3865888360\" data-clog-name=\"none-br-4-11\">
<b id=\"CLOGB3865888361\" data-clog-name=\"none-b-5-11\">Static Placement</b> - Click a control from the control pallets in the top left panel. Click on your panel while holding down &lt;ctrl/cmd&gt;<br id=\"CLOGB3865888362\" data-clog-name=\"none-br-6-11\">
<b id=\"CLOGB3865888363\" data-clog-name=\"none-b-7-11\">Place as child control</b> - Click the parent control in your panel. Click a control from the control pallets in the top left panel. Click on your panel while holding down &lt;shift&gt;<br id=\"CLOGB3865888364\" data-clog-name=\"none-br-8-11\">
Place as static and child control - Click the parent control in your panel. Click a control from the control pallets in the top left panel. Click on your panel while holding down &lt;shift&gt;+&lt;ctrl/cmd&gt;<br id=\"CLOGB3865888365\" data-clog-name=\"none-br-9-11\">
<br id=\"CLOGB3865888366\" data-clog-name=\"none-br-10-11\">
<h3 id=\"CLOGB3865888367\" data-clog-name=\"none-h3-11-11\">Existing Controls as Children</h3>
<b id=\"CLOGB3865888368\" data-clog-name=\"none-b-12-11\">2 ways:</b><br id=\"CLOGB3865888369\" data-clog-name=\"none-br-13-11\">
1. Click the parent control in your panel. Holding &lt;shift&gt; click the control to make a child.<br id=\"CLOGB3865888370\" data-clog-name=\"none-br-14-11\">
2. Use the control list in the lower left to drag and drop holding the &lt;shift&gt; key<br id=\"CLOGB3865888371\" data-clog-name=\"none-br-15-11\">
<br id=\"CLOGB3865888372\" data-clog-name=\"none-br-16-11\">
<h3 id=\"CLOGB3865888373\" data-clog-name=\"none-h3-17-11\">Existing Controls as Static</h3>
Use the positioning property in the property panel<br id=\"CLOGB3865888374\" data-clog-name=\"none-br-18-11\">
<br id=\"CLOGB3865888375\" data-clog-name=\"none-br-19-11\">
<h3 id=\"CLOGB3865888376\" data-clog-name=\"none-h3-20-11\">Access Children Controls</h3>
Double click the parent control, it will freeze (unfreeze by double clicking it in the control list in the lower left panel), and children can not be manipulated<br id=\"CLOGB3865888377\" data-clog-name=\"none-br-21-11\">
<br id=\"CLOGB3865888378\" data-clog-name=\"none-br-22-11\">
<h3 id=\"CLOGB3865888379\" data-clog-name=\"none-h3-23-11\">Change Creation/Tab Order</h3>
Use the control list in lower left panel to drag and drop order<br id=\"CLOGB3865888380\" data-clog-name=\"none-br-24-11\">
((instructions :reader instructions) (span-13 :reader span-13)
(image-12 :reader image-12)))
(defun create-quick-start
(clog-obj &key (hidden nil) (class nil) (html-id nil) (auto-place t))
(let ((panel
(change-class
(clog:create-div clog-obj :content
"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAABf2lDQ1BzUkdCIElFQzYxOTY2LTIuMQAAKJF1kc8rRFEUxz8zgxEjioVkMQkbM2LUxEYZCSVNY5TBZuaZH2p+vN4bSbbKdooSG78W/AVslbVSREqWsiY26DnXqJHMvd17Pvd7zzmdey7Yw2ktY1b0QCabN0KjAfdMZNbtfKSKFhxAV1Qz9aFgcIKy4+0Gm7JXXpWrvN+/o3YhbmpgqxYe1HQjLzwmPLGc1xVvCjdpqeiC8LGwx5ACha+VHivyk+JkkT8UG+HQMNgbhN3JXxz7xVrKyAjLy2nPpJe0n3rUS1zx7PSU2DZZrZiEGCWAm3FGGMZPLwOy+/Hio1tOlInv+Y6fJCexmuw6KxgskiRFHo+oS5I9LjYhelxmmhXV/799NRN9vmJ2VwAqHyzrpQOcG/BZsKz3fcv6PADHPZxlS/G5Peh/Fb1Q0tp3oX4NTs5LWmwLTteh+U6PGtFvSf28PZGA5yOoi0DjJdTMFXv2c8/hLYRX5asuYHsHOsW/fv4LI2xnxwFcS14AAADkUExURQcFAEEwASwgAD4uAU05AVZAAiEYAKuABJJuBOeuB/2+CAwIADYoAayBBP6/CGBIA1A8AfS4CFA7AR4WAGtPAigeATUnAfm7COCpB6p/BOWsB3VYBA8LAD0uAtWgByQbARkTAcmXBpJtBAgFAN6nB6B4BZBsBYFhBHJWBGNLA1U/Av/ACAQDAF9IA8KSBu+0B553BRsUAVE9A86bBrKGBgkHAKZ9BZ12Bfe6CNahBxMOAQMCAHdaBOatB5t1BQAAANymBwsIAMWUBsqYBr+QBl5HAzcpAvK2CNKeB8+cBumvByZFyZjjEKMAAABMdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////wCejeTMAAAACXBIWXMAAC4jAAAuIwF4pT92AAAA40lEQVQokYWSyQ6CMBCG56ShhxoORoJ7oqJWFEXcoe4aef/3scViZavfhdIv07T/DIQKQC41EqHlSEy+4JTUSQL9VyKSAkmZccJC9kx5Mpc/WzXju/xIeU+z3qBNU94ZZGHLBsrodHFcCqHW6w+s4WhcpQJw4jQgbE1oGns6i0ohdDKOM1+4XC5zJaXejMlugaQrJo0iuWZyUyS3/Ck78bNPuoPPQwhK/DHtsn60vNicKmci4kP+5bphgWHzFpXfgwcW8cngMUKPp+u+2BeTbMui7UTLlM1Wj4l6wNSj+Weo83gDWkirJ693IE0AAAAASUVORK5CYII=\" alt=\"Add image url\" style=\"box-sizing: content-box; position: static; left: 93px; top: 29px;\" id=\"CLOGB3868051567\" data-clog-name=\"image-12\"><span style=\"box-sizing: content-box; position: static; left: 38px; top: 13px;\" id=\"CLOGB3868051568\" data-clog-name=\"span-13\">&nbsp;<b id=\"CLOGB3868051569\" data-clog-name=\"none-b-1\">CLOG The Common Lisp Omnificent GUI</b></span><div id=\"CLOGB3868051570\" data-clog-name=\"Instructions\">
<h2 id=\"CLOGB3868051571\" data-clog-name=\"none-h2-1-11\">Quick Start</h2>
<h3 style=\"left: -75px; top: 298.5px;\" id=\"CLOGB3868051572\" data-clog-name=\"none-h3-2-11\">Placing Controls</h3>
<b id=\"CLOGB3868051573\" data-clog-name=\"none-b-3-11\">Placing Controls</b> - Click a control from the control pallets in the top left panel. Click on your panel<br id=\"CLOGB3868051574\" data-clog-name=\"none-br-4-11\">
<b id=\"CLOGB3868051575\" data-clog-name=\"none-b-5-11\">Static Placement</b> - Click a control from the control pallets in the top left panel. Click on your panel while holding down &lt;ctrl/cmd&gt;<br id=\"CLOGB3868051576\" data-clog-name=\"none-br-6-11\">
<b id=\"CLOGB3868051577\" data-clog-name=\"none-b-7-11\">Place as child control</b> - Click the parent control in your panel. Click a control from the control pallets in the top left panel. Click on your panel while holding down &lt;shift&gt;<br id=\"CLOGB3868051578\" data-clog-name=\"none-br-8-11\">
Place as static and child control - Click the parent control in your panel. Click a control from the control pallets in the top left panel. Click on your panel while holding down &lt;shift&gt;+&lt;ctrl/cmd&gt;<br id=\"CLOGB3868051579\" data-clog-name=\"none-br-9-11\">
<br id=\"CLOGB3868051580\" data-clog-name=\"none-br-10-11\">
<h3 id=\"CLOGB3868051581\" data-clog-name=\"none-h3-11-11\">Existing Controls as Children</h3>
<b id=\"CLOGB3868051582\" data-clog-name=\"none-b-12-11\">2 ways:</b><br id=\"CLOGB3868051583\" data-clog-name=\"none-br-13-11\">
1. Click the parent control in your panel. Holding &lt;shift&gt; click the control to make a child.<br id=\"CLOGB3868051584\" data-clog-name=\"none-br-14-11\">
2. Use the control list in the lower left to drag and drop holding the &lt;shift&gt; key<br id=\"CLOGB3868051585\" data-clog-name=\"none-br-15-11\">
<br id=\"CLOGB3868051586\" data-clog-name=\"none-br-16-11\">
<h3 id=\"CLOGB3868051587\" data-clog-name=\"none-h3-17-11\">Existing Controls as Static</h3>
Use the positioning property in the property panel<br id=\"CLOGB3868051588\" data-clog-name=\"none-br-18-11\">
<br id=\"CLOGB3868051589\" data-clog-name=\"none-br-19-11\">
<h3 id=\"CLOGB3868051590\" data-clog-name=\"none-h3-20-11\">Access Children Controls</h3>
Double click the parent control, it will freeze (unfreeze by double clicking it in the control list in the lower left panel), and children can not be manipulated<br id=\"CLOGB3868051591\" data-clog-name=\"none-br-21-11\">
<br id=\"CLOGB3868051592\" data-clog-name=\"none-br-22-11\">
<h3 id=\"CLOGB3868051593\" data-clog-name=\"none-h3-23-11\">Change Creation/Tab Order</h3>
Use the control list in lower left panel to drag and drop order<br id=\"CLOGB3868051594\" data-clog-name=\"none-br-24-11\">
</div>"
:hidden hidden :class class :html-id html-id :auto-place auto-place) 'quick-start)))
(setf (slot-value panel 'Instructions) (attach-as-child clog-obj "CLOGB3865888356" :clog-type 'CLOG:CLOG-DIV :new-id t))
(setf (slot-value panel 'span-13) (attach-as-child clog-obj "CLOGB3865888354" :clog-type 'CLOG:CLOG-SPAN :new-id t))
(setf (slot-value panel 'image-12) (attach-as-child clog-obj "CLOGB3865888353" :clog-type 'CLOG:CLOG-IMG :new-id t))
:hidden hidden :class class :html-id html-id
:auto-place auto-place)
'quick-start)))
(setf (slot-value panel 'instructions)
(attach-as-child clog-obj "CLOGB3868051570" :clog-type
'clog:clog-div :new-id t))
(setf (slot-value panel 'span-13)
(attach-as-child clog-obj "CLOGB3868051568" :clog-type
'clog:clog-span :new-id t))
(setf (slot-value panel 'image-12)
(attach-as-child clog-obj "CLOGB3868051567" :clog-type
'clog:clog-img :new-id t))
panel))

View file

@ -1,102 +1,151 @@
(in-package "CLOG-TOOLS")
(defclass sys-browser (clog:clog-panel)
( (file-name :reader file-name)
(eval-sel-button :reader eval-sel-button)
(eval-button :reader eval-button)
(save-button :reader save-button)
(search-box :reader search-box)
(class-only :reader class-only)
(label-class-only :reader label-class-only)
(status-box :reader status-box)
(src-box :reader src-box)
(doc-box :reader doc-box)
(class-box :reader class-box)
(package-box :reader package-box)
(type-box :reader type-box)
(classes :accessor classes) (fname :accessor fname) (state :accessor state :initform t)))
(defun create-sys-browser (clog-obj &key (hidden nil) (class nil) (html-id nil) (auto-place t))
(let ((panel (change-class (clog:create-div clog-obj :content "<select style=\"box-sizing: content-box; position: absolute; left: 5px; top: 10px; width: 190px; height: 20px;\" id=\"CLOGB3868026227\" data-clog-name=\"type-box\"></select><select style=\"box-sizing: content-box; position: absolute; left: 205px; top: 10px; width: 300px; height: 20px; bottom: 335.028px;\" id=\"CLOGB3868026228\" data-clog-name=\"package-box\"></select><select size=\"4\" style=\"box-sizing: content-box; position: absolute; left: 5px; top: 45px; width: 350px; height: 145px;\" class=\"w3-small\" id=\"CLOGB3868026229\" data-clog-name=\"class-box\"></select><textarea name=\"\" cols=\"20\" rows=\"2\" style=\"box-sizing: content-box; position: absolute; inset: 45px 5px 176.051px 365px; height: 139.989px; resize: none; min-width: 0px;\" class=\"&nbsp;w3-small\" id=\"CLOGB3868026230\" data-clog-name=\"doc-box\"></textarea><div class=\"ace_editor ace_hidpi ace-xcode ace-tm\" style=\"border: thin solid black; box-sizing: content-box; position: absolute; inset: 198.991px 5px 50px;\" id=\"CLOGB3868026231\" data-clog-name=\"src-box\"></div><div style=\"box-sizing: content-box; position: absolute; left: 5px; bottom: 5px; right: 5px;\" class=\"w3-tiny w3-border\" id=\"CLOGB3868026232\" data-clog-name=\"status-box\">status</div><label for=\"CLOGB386795982312\" style=\"box-sizing: content-box; position: absolute; left: 535px; top: 9px;\" class=\"\" id=\"CLOGB3868026233\" data-clog-name=\"label-class-only\">pkg only</label><input type=\"CHECKBOX\" value=\"\" style=\"box-sizing: content-box; position: absolute; left: 516px; top: 15px;\" checked=\"checked\" id=\"CLOGB3868026234\" data-clog-name=\"class-only\"><input type=\"TEXT\" value=\"\" style=\"box-sizing: content-box; position: absolute; inset: 7px 5px 332.045px 605px; height: 22px;\" placeholder=\"search\" name=\"\" id=\"CLOGB3868026235\" data-clog-name=\"search-box\"><input type=\"BUTTON\" value=\"Save\" style=\"box-sizing: content-box; position: absolute; width: 50px; height: 15px; right: 5px; bottom: 25px;\" class=\"w3-small\" disabled=\"disabled\" id=\"CLOGB3868026236\" data-clog-name=\"save-button\"><input type=\"BUTTON\" value=\"Eval File\" style=\"box-sizing: content-box; position: absolute; width: 50px; height: 15px; right: 75px; bottom: 25px;\" class=\"w3-small\" disabled=\"disabled\" id=\"CLOGB3868026237\" data-clog-name=\"eval-button\"><input type=\"BUTTON\" value=\"Eval Sel\" style=\"box-sizing: content-box; position: absolute; width: 50px; height: 15px; right: 145px; bottom: 25px;\" class=\"w3-small\" placeholder=\"\" disabled=\"disabled\" id=\"CLOGB3868026238\" data-clog-name=\"eval-sel-button\"><div style=\"box-sizing: content-box; position: absolute; left: 5px; bottom: 25px; right: 220px;\" class=\"w3-small\" id=\"CLOGB3868026239\" data-clog-name=\"file-name\">&nbsp;</div>"
:hidden hidden :class class :html-id html-id :auto-place auto-place) 'sys-browser)))
(setf (slot-value panel 'file-name) (attach-as-child clog-obj "CLOGB3868026239" :clog-type 'CLOG:CLOG-DIV :new-id t))
(setf (slot-value panel 'eval-sel-button) (attach-as-child clog-obj "CLOGB3868026238" :clog-type 'CLOG:CLOG-FORM-ELEMENT :new-id t))
(setf (slot-value panel 'eval-button) (attach-as-child clog-obj "CLOGB3868026237" :clog-type 'CLOG:CLOG-FORM-ELEMENT :new-id t))
(setf (slot-value panel 'save-button) (attach-as-child clog-obj "CLOGB3868026236" :clog-type 'CLOG:CLOG-FORM-ELEMENT :new-id t))
(setf (slot-value panel 'search-box) (attach-as-child clog-obj "CLOGB3868026235" :clog-type 'CLOG:CLOG-FORM-ELEMENT :new-id t))
(setf (slot-value panel 'class-only) (attach-as-child clog-obj "CLOGB3868026234" :clog-type 'CLOG:CLOG-FORM-ELEMENT :new-id t))
(setf (slot-value panel 'label-class-only) (attach-as-child clog-obj "CLOGB3868026233" :clog-type 'CLOG:CLOG-LABEL :new-id t))
(setf (slot-value panel 'status-box) (attach-as-child clog-obj "CLOGB3868026232" :clog-type 'CLOG:CLOG-DIV :new-id t))
(setf (slot-value panel 'src-box) (attach-as-child clog-obj "CLOGB3868026231" :clog-type 'CLOG-ACE:CLOG-ACE-ELEMENT :new-id t))
(setf (slot-value panel 'doc-box) (attach-as-child clog-obj "CLOGB3868026230" :clog-type 'CLOG:CLOG-TEXT-AREA :new-id t))
(setf (slot-value panel 'class-box) (attach-as-child clog-obj "CLOGB3868026229" :clog-type 'CLOG:CLOG-SELECT :new-id t))
(setf (slot-value panel 'package-box) (attach-as-child clog-obj "CLOGB3868026228" :clog-type 'CLOG:CLOG-SELECT :new-id t))
(setf (slot-value panel 'type-box) (attach-as-child clog-obj "CLOGB3868026227" :clog-type 'CLOG:CLOG-SELECT :new-id t))
(let ((target (type-box panel))) (declare (ignorable target)) (add-select-options target '(ALIEN-TYPE
CALLABLE
CLASS
COMPILER-MACRO
CONDITION
CONSTANT
DECLARATION
DEFINITION
FUNCTION
GENERIC-FUNCTION
GLOBAL-DEFINITION
IR1-CONVERT
MACRO
METHOD
METHOD-COMBINATION
OPTIMIZER
SETF-EXPANDER
SOURCE-TRANSFORM
SPECIAL-OPERATOR
STRUCTURE
SYMBOL-MACRO
TRANSFORM
TYPE
TYPE-DEFINITION
VARIABLE
VOP))
(setf (value target) "CALLABLE")
)
(let ((target (package-box panel))) (declare (ignorable target)) (dolist (p (sort (list-all-packages) (lambda (a b)
(string-lessp (package-name a)
(package-name b)))))
(add-select-option target (package-name p)
(package-name p)))
(setf (value target) "CLOG-USER")
(sys-browser-populate panel))
(let ((target (src-box panel))) (declare (ignorable target)) (clog-ace:attach-clog-ace target)
(setf (clog-ace:theme target) "ace/theme/xcode")
(setf (clog-ace:mode target) "ace/mode/lisp")
(setf (clog-ace:tab-size target) 2)(setup-lisp-ace target (status-box panel)))
(let ((target (label-class-only panel))) (declare (ignorable target)) (setf (attribute target "for") (clog:js-query target "$('[data-clog-name=\\'class-only\\']').attr('id')")))
(clog:set-on-change (type-box panel) (lambda (target) (declare (ignorable target)) (sys-browser-populate panel)))
(clog:set-on-change (package-box panel) (lambda (target) (declare (ignorable target)) (sys-browser-populate panel)))
(clog:set-on-change (class-box panel) (lambda (target) (declare (ignorable target)) (sys-browser-select panel target)))
(clog:set-on-input (src-box panel) (lambda (target) (declare (ignorable target)) (unless (state panel)
(when (fname panel)
(setf (state panel) t)
(setf (disabledp (save-button panel)) nil)))))
(clog:set-on-change (class-only panel) (lambda (target) (declare (ignorable target)) (sys-browser-populate panel)))
(clog:set-on-key-up (search-box panel) (lambda (target data) (declare (ignorable target data)) (sys-browser-populate panel)))
(clog:set-on-click (save-button panel) (lambda (target) (declare (ignorable target)) (when (fname panel)
(write-file (text-value (src-box panel)) (fname panel))
(setf (state panel) nil)
(setf (disabledp (save-button panel)) t))))
(clog:set-on-click (eval-button panel) (lambda (target) (declare (ignorable target)) (let ((val (text-value (src-box panel))))
(unless (equal val "")
(let ((result (capture-eval val :clog-obj panel
:eval-in-package (text-value (package-box panel)))))
(clog-web-alert (connection-body clog-obj) "Result"
(format nil "~&result: ~A" result)
:color-class "w3-green"
:time-out 3))))))
(clog:set-on-click (eval-sel-button panel) (lambda (target) (declare (ignorable target)) (let ((val (clog-ace:selected-text (src-box panel))))
(unless (equal val "")
(let ((result (capture-eval val :clog-obj panel
:eval-in-package (text-value (package-box panel)))))
(clog-web-alert (connection-body clog-obj) "Result"
(format nil "~&result: ~A" result)
:color-class "w3-green"
:time-out 3))))))
((file-name :reader file-name)
(eval-sel-button :reader eval-sel-button)
(eval-button :reader eval-button) (save-button :reader save-button)
(search-box :reader search-box) (class-only :reader class-only)
(label-class-only :reader label-class-only)
(status-box :reader status-box) (src-box :reader src-box)
(doc-box :reader doc-box) (class-box :reader class-box)
(package-box :reader package-box) (type-box :reader type-box)
(classes :accessor classes) (fname :accessor fname)
(state :accessor state :initform t)))
(defun create-sys-browser
(clog-obj &key (hidden nil) (class nil) (html-id nil) (auto-place t))
(let ((panel
(change-class
(clog:create-div clog-obj :content
"<select style=\"box-sizing: content-box; position: absolute; left: 5px; top: 10px; width: 190px; height: 20px;\" id=\"CLOGB3868051282\" data-clog-name=\"type-box\"></select><select style=\"box-sizing: content-box; position: absolute; left: 205px; top: 10px; width: 300px; height: 20px; bottom: 335.028px;\" id=\"CLOGB3868051283\" data-clog-name=\"package-box\"></select><select size=\"4\" style=\"box-sizing: content-box; position: absolute; left: 5px; top: 45px; width: 350px; height: 145px;\" class=\"w3-small\" id=\"CLOGB3868051284\" data-clog-name=\"class-box\"></select><textarea name=\"\" cols=\"20\" rows=\"2\" style=\"box-sizing: content-box; position: absolute; inset: 45px 5px 176.051px 365px; height: 139.989px; resize: none; min-width: 0px;\" class=\"&nbsp;w3-small\" id=\"CLOGB3868051285\" data-clog-name=\"doc-box\"></textarea><div class=\"ace_editor ace_hidpi ace-xcode ace-tm\" style=\"border: thin solid black; box-sizing: content-box; position: absolute; inset: 198.991px 5px 50px;\" id=\"CLOGB3868051286\" data-clog-name=\"src-box\"></div><div style=\"box-sizing: content-box; position: absolute; left: 5px; bottom: 5px; right: 5px;\" class=\"w3-tiny w3-border\" id=\"CLOGB3868051287\" data-clog-name=\"status-box\">status</div><label for=\"CLOGB386795982312\" style=\"box-sizing: content-box; position: absolute; left: 535px; top: 9px;\" class=\"\" id=\"CLOGB3868051288\" data-clog-name=\"label-class-only\">pkg only</label><input type=\"CHECKBOX\" value=\"\" style=\"box-sizing: content-box; position: absolute; left: 516px; top: 15px;\" checked=\"checked\" id=\"CLOGB3868051289\" data-clog-name=\"class-only\"><input type=\"TEXT\" value=\"\" style=\"box-sizing: content-box; position: absolute; inset: 7px 5px 332.045px 605px; height: 22px;\" placeholder=\"search\" name=\"\" id=\"CLOGB3868051290\" data-clog-name=\"search-box\"><input type=\"BUTTON\" value=\"Save\" style=\"box-sizing: content-box; position: absolute; width: 50px; height: 15px; right: 5px; bottom: 25px;\" class=\"w3-small\" disabled=\"disabled\" id=\"CLOGB3868051291\" data-clog-name=\"save-button\"><input type=\"BUTTON\" value=\"Eval File\" style=\"box-sizing: content-box; position: absolute; width: 50px; height: 15px; right: 75px; bottom: 25px;\" class=\"w3-small\" disabled=\"disabled\" id=\"CLOGB3868051292\" data-clog-name=\"eval-button\"><input type=\"BUTTON\" value=\"Eval Sel\" style=\"box-sizing: content-box; position: absolute; width: 50px; height: 15px; right: 145px; bottom: 25px;\" class=\"w3-small\" placeholder=\"\" disabled=\"disabled\" id=\"CLOGB3868051293\" data-clog-name=\"eval-sel-button\"><div style=\"box-sizing: content-box; position: absolute; left: 5px; bottom: 25px; right: 220px;\" class=\"w3-small\" id=\"CLOGB3868051294\" data-clog-name=\"file-name\">&nbsp;</div>"
:hidden hidden :class class :html-id html-id
:auto-place auto-place)
'sys-browser)))
(setf (slot-value panel 'file-name)
(attach-as-child clog-obj "CLOGB3868051294" :clog-type
'clog:clog-div :new-id t))
(setf (slot-value panel 'eval-sel-button)
(attach-as-child clog-obj "CLOGB3868051293" :clog-type
'clog:clog-form-element :new-id t))
(setf (slot-value panel 'eval-button)
(attach-as-child clog-obj "CLOGB3868051292" :clog-type
'clog:clog-form-element :new-id t))
(setf (slot-value panel 'save-button)
(attach-as-child clog-obj "CLOGB3868051291" :clog-type
'clog:clog-form-element :new-id t))
(setf (slot-value panel 'search-box)
(attach-as-child clog-obj "CLOGB3868051290" :clog-type
'clog:clog-form-element :new-id t))
(setf (slot-value panel 'class-only)
(attach-as-child clog-obj "CLOGB3868051289" :clog-type
'clog:clog-form-element :new-id t))
(setf (slot-value panel 'label-class-only)
(attach-as-child clog-obj "CLOGB3868051288" :clog-type
'clog:clog-label :new-id t))
(setf (slot-value panel 'status-box)
(attach-as-child clog-obj "CLOGB3868051287" :clog-type
'clog:clog-div :new-id t))
(setf (slot-value panel 'src-box)
(attach-as-child clog-obj "CLOGB3868051286" :clog-type
'clog-ace:clog-ace-element :new-id t))
(setf (slot-value panel 'doc-box)
(attach-as-child clog-obj "CLOGB3868051285" :clog-type
'clog:clog-text-area :new-id t))
(setf (slot-value panel 'class-box)
(attach-as-child clog-obj "CLOGB3868051284" :clog-type
'clog:clog-select :new-id t))
(setf (slot-value panel 'package-box)
(attach-as-child clog-obj "CLOGB3868051283" :clog-type
'clog:clog-select :new-id t))
(setf (slot-value panel 'type-box)
(attach-as-child clog-obj "CLOGB3868051282" :clog-type
'clog:clog-select :new-id t))
(let ((target (type-box panel)))
(declare (ignorable target))
(add-select-options target
'(alien-type callable class compiler-macro condition constant
declaration definition function generic-function global-definition
ir1-convert macro method method-combination optimizer setf-expander
source-transform special-operator structure symbol-macro transform
type type-definition variable vop))
(setf (value target) "CALLABLE"))
(let ((target (package-box panel)))
(declare (ignorable target))
(dolist
(p
(sort (list-all-packages)
(lambda (a b)
(string-lessp (package-name a) (package-name b)))))
(add-select-option target (package-name p) (package-name p)))
(setf (value target) "CLOG-USER")
(sys-browser-populate panel))
(let ((target (src-box panel)))
(declare (ignorable target))
(clog-ace:attach-clog-ace target)
(setf (clog-ace:theme target) "ace/theme/xcode")
(setf (clog-ace:mode target) "ace/mode/lisp")
(setf (clog-ace:tab-size target) 2)
(setup-lisp-ace target (status-box panel)))
(let ((target (label-class-only panel)))
(declare (ignorable target))
(setf (attribute target "for")
(clog:js-query target
"$('[data-clog-name=\\'class-only\\']').attr('id')")))
(clog:set-on-change (type-box panel)
(lambda (target)
(declare (ignorable target))
(sys-browser-populate panel)))
(clog:set-on-change (package-box panel)
(lambda (target)
(declare (ignorable target))
(sys-browser-populate panel)))
(clog:set-on-change (class-box panel)
(lambda (target)
(declare (ignorable target))
(sys-browser-select panel target)))
(clog:set-on-input (src-box panel)
(lambda (target)
(declare (ignorable target))
(unless (state panel)
(when (fname panel)
(setf (state panel) t)
(setf (disabledp (save-button panel)) nil)))))
(clog:set-on-change (class-only panel)
(lambda (target)
(declare (ignorable target))
(sys-browser-populate panel)))
(clog:set-on-key-up (search-box panel)
(lambda (target data)
(declare (ignorable target data))
(sys-browser-populate panel)))
(clog:set-on-click (save-button panel)
(lambda (target)
(declare (ignorable target))
(when (fname panel)
(write-file (text-value (src-box panel))
(fname panel))
(setf (state panel) nil)
(setf (disabledp (save-button panel)) t))))
(clog:set-on-click (eval-button panel)
(lambda (target)
(declare (ignorable target))
(let ((val (text-value (src-box panel))))
(unless (equal val "")
(let ((result
(capture-eval val :clog-obj panel
:eval-in-package
(text-value (package-box panel)))))
(clog-web-alert (connection-body clog-obj)
"Result" (format nil "~&result: ~A" result)
:color-class "w3-green" :time-out 3))))))
(clog:set-on-click (eval-sel-button panel)
(lambda (target)
(declare (ignorable target))
(let ((val (clog-ace:selected-text (src-box panel))))
(unless (equal val "")
(let ((result
(capture-eval val :clog-obj panel
:eval-in-package
(text-value (package-box panel)))))
(clog-web-alert (connection-body clog-obj)
"Result" (format nil "~&result: ~A" result)
:color-class "w3-green" :time-out 3))))))
panel))

View file

@ -1,19 +1,26 @@
(in-package "CLOG-TOOLS")
(defclass thread-list (clog:clog-panel)
( (w3-table-1 :reader w3-table-1)
))
(defun create-thread-list (clog-obj &key (hidden nil) (class nil) (html-id nil) (auto-place t))
(let ((panel (change-class (clog:create-div clog-obj :content "<table class=\"w3-table w3-striped w3-border w3-bordered w3-hoverable w3-small\" style=\"box-sizing: content-box; position: static; inset: 0px 0px 0px 1px; width: 100%; height: 100%;\" id=\"CLOGB3867860624\" data-clog-name=\"w3-table-1\"></table>"
:hidden hidden :class class :html-id html-id :auto-place auto-place) 'thread-list)))
(setf (slot-value panel 'w3-table-1) (attach-as-child clog-obj "CLOGB3867860624" :clog-type 'CLOG:CLOG-TABLE :new-id t))
(let ((target (w3-table-1 panel))) (declare (ignorable target)) (loop
(let ((threads (swank:list-threads)))
(dolist (thread threads)
(let ((tr (create-table-row target)))
(create-table-column tr :content (second thread))
(create-table-column tr :content (third thread)))))
(sleep 1)
(setf (inner-html target) "")
(unless (visiblep target)
(return))))
(defclass thread-list (clog:clog-panel) ((w3-table-1 :reader w3-table-1)))
(defun create-thread-list
(clog-obj &key (hidden nil) (class nil) (html-id nil) (auto-place t))
(let ((panel
(change-class
(clog:create-div clog-obj :content
"<table class=\"w3-table w3-striped w3-border w3-bordered w3-hoverable w3-small\" style=\"box-sizing: content-box; position: static; inset: 0px 0px 0px 1px; width: 100%; height: 100%;\" id=\"CLOGB3868051588\" data-clog-name=\"w3-table-1\"></table>"
:hidden hidden :class class :html-id html-id
:auto-place auto-place)
'thread-list)))
(setf (slot-value panel 'w3-table-1)
(attach-as-child clog-obj "CLOGB3868051588" :clog-type
'clog:clog-table :new-id t))
(let ((target (w3-table-1 panel)))
(declare (ignorable target))
(loop
(let ((threads (swank:list-threads)))
(dolist (thread threads)
(let ((tr (create-table-row target)))
(create-table-column tr :content (second thread))
(create-table-column tr :content (third thread)))))
(sleep 1)
(setf (inner-html target) "")
(unless (visiblep target) (return))))
panel))