mirror of
https://github.com/rabbibotton/clog.git
synced 2025-12-15 15:00:24 -08:00
prety printing of generated code
This commit is contained in:
parent
3a2a80d891
commit
b24c728ee9
7 changed files with 301 additions and 182 deletions
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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 ; 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 ; 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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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\"> <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 <ctrl/cmd><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 <shift><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 <shift>+<ctrl/cmd><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 <shift> 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 <shift> 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\"> <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 <ctrl/cmd><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 <shift><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 <shift>+<ctrl/cmd><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 <shift> 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 <shift> 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))
|
||||
|
|
|
|||
|
|
@ -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=\" 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\"> </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=\" 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\"> </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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue