fixes to eval

This commit is contained in:
David Botton 2022-08-01 14:34:24 -04:00
parent bcb011c6fb
commit 4d87d26ec8
4 changed files with 70 additions and 41 deletions

View file

@ -844,8 +844,8 @@ propetery will be set to nil on creation."))
is placed in DOM at top of OBJ instead of bottom of OBJ." is placed in DOM at top of OBJ instead of bottom of OBJ."
(unless html-id (unless html-id
(setf html-id (clog-connection:generate-id))) (setf html-id (clog-connection:generate-id)))
(let* ((panel (create-child obj (let* ((panel (create-child obj
(format nil (format nil
" <div class='w3-panel ~A w3-animate-right w3-display-container'>~ " <div class='w3-panel ~A w3-animate-right w3-display-container'>~
<span id='~A-closer' class='w3-button w3-large w3-display-topright'>&times;</span>~ <span id='~A-closer' class='w3-button w3-large w3-display-topright'>&times;</span>~
<h3>~A</h3>~ <h3>~A</h3>~

View file

@ -2110,9 +2110,11 @@ of controls and double click to select control."
(btn-del (create-img tool-bar :alt-text "delete" :url-src img-btn-del :class btn-class)) (btn-del (create-img tool-bar :alt-text "delete" :url-src img-btn-del :class btn-class))
(btn-undo (create-img tool-bar :alt-text "undo" :url-src img-btn-undo :class btn-class)) (btn-undo (create-img tool-bar :alt-text "undo" :url-src img-btn-undo :class btn-class))
(btn-redo (create-img tool-bar :alt-text "redo" :url-src img-btn-redo :class btn-class)) (btn-redo (create-img tool-bar :alt-text "redo" :url-src img-btn-redo :class btn-class))
(btn-test (create-img tool-bar :alt-text "eval" :url-src img-btn-test :class btn-class))
(btn-save (create-img tool-bar :alt-text "save" :url-src img-btn-save :class btn-class)) (btn-save (create-img tool-bar :alt-text "save" :url-src img-btn-save :class btn-class))
(btn-load (create-img tool-bar :alt-text "load" :url-src img-btn-load :class btn-class)) (btn-load (create-img tool-bar :alt-text "load" :url-src img-btn-load :class btn-class))
(spacer (create-span tool-bar :content "&nbsp"))
(btn-esel (create-button tool-bar :content "Eval Sel" :class (format nil "w3-tiny ~A" btn-class)))
(btn-test (create-button tool-bar :content "Eval" :class (format nil "w3-tiny ~A" btn-class)))
(content (center-panel box)) (content (center-panel box))
(ace (clog-ace:create-clog-ace-element content)) (ace (clog-ace:create-clog-ace-element content))
(status (create-div content :class "w3-tiny w3-border")) (status (create-div content :class "w3-tiny w3-border"))
@ -2129,18 +2131,22 @@ of controls and double click to select control."
(setf (advisory-title btn-del) "delete") (setf (advisory-title btn-del) "delete")
(setf (advisory-title btn-undo) "undo") (setf (advisory-title btn-undo) "undo")
(setf (advisory-title btn-redo) "redo") (setf (advisory-title btn-redo) "redo")
(setf (advisory-title btn-test) "evaluate")
(setf (advisory-title btn-save) "save") (setf (advisory-title btn-save) "save")
(setf (advisory-title btn-load) "load") (setf (advisory-title btn-load) "load")
(setf (advisory-title btn-esel) "evaluate selection")
(setf (advisory-title btn-test) "evaluate")
(setf (height btn-copy) "12px") (setf (height btn-copy) "12px")
(setf (height btn-paste) "12px") (setf (height btn-paste) "12px")
(setf (height btn-cut) "12px") (setf (height btn-cut) "12px")
(setf (height btn-del) "12px") (setf (height btn-del) "12px")
(setf (height btn-undo) "12px") (setf (height btn-undo) "12px")
(setf (height btn-redo) "12px") (setf (height btn-redo) "12px")
(setf (height btn-test) "12px")
(setf (height btn-save) "12px") (setf (height btn-save) "12px")
(setf (height btn-load) "12px") (setf (height btn-load) "12px")
(setf (height btn-esel) "12px")
(setf (height btn-test) "12px")
(setf (width btn-esel) "40px")
(setf (width btn-test) "40px")
(setf (positioning ace) :absolute) (setf (positioning ace) :absolute)
(setf (positioning status) :absolute) (setf (positioning status) :absolute)
(set-geometry ace :units "" :width "" :height "" (set-geometry ace :units "" :width "" :height ""
@ -2202,11 +2208,24 @@ of controls and double click to select control."
(set-on-click btn-redo (lambda (obj) (set-on-click btn-redo (lambda (obj)
(declare (ignore obj)) (declare (ignore obj))
(clog-ace:execute-command ace "redo"))) (clog-ace:execute-command ace "redo")))
(set-on-click btn-esel (lambda (obj)
(let ((val (clog-ace:selected-text ace)))
(unless (equal val "")
(let ((result (capture-eval val :clog-obj obj
:eval-in-package "CLOG-USER")))
(clog-web-alert (connection-body obj) "Result"
(format nil "~&result: ~A" result)
:color-class "w3-green"
:time-out 3))))))
(set-on-click btn-test (lambda (obj) (set-on-click btn-test (lambda (obj)
(alert-dialog obj (let ((val (text-value ace)))
(capture-eval (text-value ace)) (unless (equal val "")
:title "Eval Result"))))) (let ((result (capture-eval val :clog-obj obj
:eval-in-package "CLOG-USER")))
(clog-web-alert (connection-body obj) "Result"
(format nil "~&result: ~A" result)
:color-class "w3-green"
:time-out 3))))))))
(defun on-repl (obj) (defun on-repl (obj)
"Open quick start" "Open quick start"
(let* ((win (create-gui-window obj :title "CLOG Builder REPL" (let* ((win (create-gui-window obj :title "CLOG Builder REPL"
@ -2220,7 +2239,7 @@ of controls and double click to select control."
(let* ((app (connection-data-item obj "builder-app-data")) (let* ((app (connection-data-item obj "builder-app-data"))
(win (create-gui-window obj :title "ASDF System Browser" (win (create-gui-window obj :title "ASDF System Browser"
:top 40 :left 225 :top 40 :left 225
:width 592 :height 430 :width 592 :height 435
:client-movement t)) :client-movement t))
(panel (create-asdf-systems (window-content win)))) (panel (create-asdf-systems (window-content win))))
(when project (when project

View file

@ -1,4 +1,4 @@
<data id="I3868308897" data-in-package="clog-tools" data-custom-slots="(classes :accessor classes) (fname :accessor fname) (state :accessor state :initform t)" data-clog-next-id="22" data-clog-title="sys-browser"></data><select data-clog-type="dropdown" data-clog-name="type-box" style="box-sizing: content-box; position: absolute; left: 5px; top: 10px; width: 190px; height: 20px;" data-on-create="(add-select-options target '(ALIEN-TYPE <data id="I3868359720" data-in-package="clog-tools" data-custom-slots="(classes :accessor classes) (fname :accessor fname) (state :accessor state :initform t)" data-clog-next-id="22" data-clog-title="sys-browser"></data><select data-clog-type="dropdown" data-clog-name="type-box" style="box-sizing: content-box; position: absolute; left: 5px; top: 10px; width: 190px; height: 20px;" data-on-create="(add-select-options target '(ALIEN-TYPE
CALLABLE CALLABLE
CLASS CLASS
COMPILER-MACRO COMPILER-MACRO
@ -43,18 +43,24 @@
(sys-browser-populate panel)))" placeholder="search" name=""><input type="BUTTON" value="Save" data-clog-type="fbutton" data-clog-name="save-button" style="box-sizing: content-box; position: absolute; width: 50px; height: 15px; right: 5px; bottom: 25px;" class="w3-small" disabled="disabled" data-on-click="(when (fname panel) (sys-browser-populate panel)))" placeholder="search" name=""><input type="BUTTON" value="Save" data-clog-type="fbutton" data-clog-name="save-button" style="box-sizing: content-box; position: absolute; width: 50px; height: 15px; right: 5px; bottom: 25px;" class="w3-small" disabled="disabled" data-on-click="(when (fname panel)
(write-file (text-value (src-box panel)) (fname panel)) (write-file (text-value (src-box panel)) (fname panel))
(setf (state panel) nil) (setf (state panel) nil)
(setf (disabledp (save-button panel)) t))"><input type="BUTTON" value="Eval File" data-clog-type="fbutton" data-clog-name="eval-button" style="box-sizing: content-box; position: absolute; width: 50px; height: 15px; right: 75px; bottom: 25px;" class="w3-small" data-on-click="(let ((val (text-value (src-box panel)))) (setf (disabledp (save-button panel)) t))"><input type="BUTTON" value="Eval File" data-clog-type="fbutton" data-clog-name="eval-button" style="box-sizing: content-box; position: absolute; width: 50px; height: 15px; right: 75px; bottom: 25px;" class="w3-small" data-on-click="(let ((pac (text-value (package-box panel)))
(val (clog-ace:selected-text (src-box panel))))
(when (equalp &quot;All&quot; pac)
(setf pac &quot;CLOG-USER&quot;))
(unless (equal val &quot;&quot;) (unless (equal val &quot;&quot;)
(let ((result (capture-eval val :clog-obj panel (let ((result (capture-eval val :clog-obj panel
:eval-in-package (text-value (package-box panel))))) :eval-in-package (text-value (package-box panel)))))
(clog-web-alert (connection-body clog-obj) &quot;Result&quot; (clog-web-alert (connection-body panel) &quot;Result&quot;
(format nil &quot;~&amp;result: ~A&quot; result) (format nil &quot;~&amp;result: ~A&quot; result)
:color-class &quot;w3-green&quot; :color-class &quot;w3-green&quot;
:time-out 3))))" disabled="disabled"><input type="BUTTON" value="Eval Sel" data-clog-type="fbutton" data-clog-name="eval-sel-button" style="box-sizing: content-box; position: absolute; width: 50px; height: 15px; right: 145px; bottom: 25px;" class="w3-small" data-on-click="(let ((val (clog-ace:selected-text (src-box panel)))) :time-out 3))))" disabled="disabled"><input type="BUTTON" value="Eval Sel" data-clog-type="fbutton" data-clog-name="eval-sel-button" style="box-sizing: content-box; position: absolute; width: 50px; height: 15px; right: 145px; bottom: 25px;" class="w3-small" data-on-click="(let ((pac (text-value (package-box panel)))
(val (clog-ace:selected-text (src-box panel))))
(when (equalp &quot;All&quot; pac)
(setf pac &quot;CLOG-USER&quot;))
(unless (equal val &quot;&quot;) (unless (equal val &quot;&quot;)
(let ((result (capture-eval val :clog-obj panel (let ((result (capture-eval val :clog-obj panel
:eval-in-package (text-value (package-box panel))))) :eval-in-package pac)))
(clog-web-alert (connection-body clog-obj) &quot;Result&quot; (clog-web-alert (connection-body panel) &quot;Result&quot;
(format nil &quot;~&amp;result: ~A&quot; result) (format nil &quot;~&amp;result: ~A&quot; result)
:color-class &quot;w3-green&quot; :color-class &quot;w3-green&quot;
:time-out 3))))" placeholder="" disabled="disabled"><div data-clog-type="div" data-clog-name="file-name" style="box-sizing: content-box; position: absolute; left: 5px; bottom: 27px; right: 220px;" class="w3-small">&nbsp;</div> :time-out 3))))" placeholder="" disabled="disabled"><div data-clog-type="div" data-clog-name="file-name" style="box-sizing: content-box; position: absolute; left: 5px; bottom: 27px; right: 220px;" class="w3-small">&nbsp;</div>

View file

@ -1,3 +1,4 @@
(in-package "CLOG-TOOLS") (in-package "CLOG-TOOLS")
(defclass sys-browser (clog:clog-panel) (defclass sys-browser (clog:clog-panel)
((file-name :reader file-name) ((file-name :reader file-name)
@ -15,48 +16,48 @@
(let ((panel (let ((panel
(change-class (change-class
(clog:create-div clog-obj :content (clog:create-div clog-obj :content
"<select style=\"box-sizing: content-box; position: absolute; left: 5px; top: 10px; width: 190px; height: 20px;\" id=\"CLOGB3868308743\" 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=\"CLOGB3868308744\" data-clog-name=\"package-box\"></select><select size=\"4\" style=\"box-sizing: content-box; position: absolute; left: 5px; top: 40px; right: 5px; height: 125px;\" class=\"w3-small\" id=\"CLOGB3868308745\" data-clog-name=\"class-box\"></select><textarea name=\"\" cols=\"20\" rows=\"2\" style=\"box-sizing: content-box; position: absolute; right: 5px; height: 50px; resize: none; min-width: 0px; top: 175px; left: 5px;\" class=\"&nbsp;w3-small\" id=\"CLOGB3868308746\" 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: 240px 5px 50px;\" id=\"CLOGB3868308747\" 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=\"CLOGB3868308748\" data-clog-name=\"status-box\">status</div><label for=\"CLOGB386795982312\" style=\"box-sizing: content-box; position: absolute; left: 535px; top: 9px;\" class=\"\" id=\"CLOGB3868308749\" 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=\"CLOGB3868308750\" 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=\"CLOGB3868308751\" 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=\"CLOGB3868308752\" 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=\"CLOGB3868308753\" 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=\"CLOGB3868308754\" data-clog-name=\"eval-sel-button\"><div style=\"box-sizing: content-box; position: absolute; left: 5px; bottom: 27px; right: 220px;\" class=\"w3-small\" id=\"CLOGB3868308755\" data-clog-name=\"file-name\">&nbsp;</div>" "<select style=\"box-sizing: content-box; position: absolute; left: 5px; top: 10px; width: 190px; height: 20px;\" id=\"CLOGB3868359570\" 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=\"CLOGB3868359571\" data-clog-name=\"package-box\"></select><select size=\"4\" style=\"box-sizing: content-box; position: absolute; left: 5px; top: 40px; right: 5px; height: 125px;\" class=\"w3-small\" id=\"CLOGB3868359572\" data-clog-name=\"class-box\"></select><textarea name=\"\" cols=\"20\" rows=\"2\" style=\"box-sizing: content-box; position: absolute; right: 5px; height: 50px; resize: none; min-width: 0px; top: 175px; left: 5px;\" class=\"&nbsp;w3-small\" id=\"CLOGB3868359573\" 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: 240px 5px 50px;\" id=\"CLOGB3868359574\" 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=\"CLOGB3868359575\" data-clog-name=\"status-box\">status</div><label for=\"CLOGB386795982312\" style=\"box-sizing: content-box; position: absolute; left: 535px; top: 9px;\" class=\"\" id=\"CLOGB3868359576\" 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=\"CLOGB3868359577\" 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=\"CLOGB3868359578\" 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=\"CLOGB3868359579\" 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=\"CLOGB3868359580\" 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=\"CLOGB3868359581\" data-clog-name=\"eval-sel-button\"><div style=\"box-sizing: content-box; position: absolute; left: 5px; bottom: 27px; right: 220px;\" class=\"w3-small\" id=\"CLOGB3868359582\" data-clog-name=\"file-name\">&nbsp;</div>"
:hidden hidden :class class :html-id html-id :hidden hidden :class class :html-id html-id
:auto-place auto-place) :auto-place auto-place)
'sys-browser))) 'sys-browser)))
(setf (slot-value panel 'file-name) (setf (slot-value panel 'file-name)
(attach-as-child clog-obj "CLOGB3868308755" :clog-type (attach-as-child clog-obj "CLOGB3868359582" :clog-type
'clog:clog-div :new-id t)) 'clog:clog-div :new-id t))
(setf (slot-value panel 'eval-sel-button) (setf (slot-value panel 'eval-sel-button)
(attach-as-child clog-obj "CLOGB3868308754" :clog-type (attach-as-child clog-obj "CLOGB3868359581" :clog-type
'clog:clog-form-element :new-id t)) 'clog:clog-form-element :new-id t))
(setf (slot-value panel 'eval-button) (setf (slot-value panel 'eval-button)
(attach-as-child clog-obj "CLOGB3868308753" :clog-type (attach-as-child clog-obj "CLOGB3868359580" :clog-type
'clog:clog-form-element :new-id t)) 'clog:clog-form-element :new-id t))
(setf (slot-value panel 'save-button) (setf (slot-value panel 'save-button)
(attach-as-child clog-obj "CLOGB3868308752" :clog-type (attach-as-child clog-obj "CLOGB3868359579" :clog-type
'clog:clog-form-element :new-id t)) 'clog:clog-form-element :new-id t))
(setf (slot-value panel 'search-box) (setf (slot-value panel 'search-box)
(attach-as-child clog-obj "CLOGB3868308751" :clog-type (attach-as-child clog-obj "CLOGB3868359578" :clog-type
'clog:clog-form-element :new-id t)) 'clog:clog-form-element :new-id t))
(setf (slot-value panel 'class-only) (setf (slot-value panel 'class-only)
(attach-as-child clog-obj "CLOGB3868308750" :clog-type (attach-as-child clog-obj "CLOGB3868359577" :clog-type
'clog:clog-form-element :new-id t)) 'clog:clog-form-element :new-id t))
(setf (slot-value panel 'label-class-only) (setf (slot-value panel 'label-class-only)
(attach-as-child clog-obj "CLOGB3868308749" :clog-type (attach-as-child clog-obj "CLOGB3868359576" :clog-type
'clog:clog-label :new-id t)) 'clog:clog-label :new-id t))
(setf (slot-value panel 'status-box) (setf (slot-value panel 'status-box)
(attach-as-child clog-obj "CLOGB3868308748" :clog-type (attach-as-child clog-obj "CLOGB3868359575" :clog-type
'clog:clog-div :new-id t)) 'clog:clog-div :new-id t))
(setf (slot-value panel 'src-box) (setf (slot-value panel 'src-box)
(attach-as-child clog-obj "CLOGB3868308747" :clog-type (attach-as-child clog-obj "CLOGB3868359574" :clog-type
'clog-ace:clog-ace-element :new-id t)) 'clog-ace:clog-ace-element :new-id t))
(setf (slot-value panel 'doc-box) (setf (slot-value panel 'doc-box)
(attach-as-child clog-obj "CLOGB3868308746" :clog-type (attach-as-child clog-obj "CLOGB3868359573" :clog-type
'clog:clog-text-area :new-id t)) 'clog:clog-text-area :new-id t))
(setf (slot-value panel 'class-box) (setf (slot-value panel 'class-box)
(attach-as-child clog-obj "CLOGB3868308745" :clog-type (attach-as-child clog-obj "CLOGB3868359572" :clog-type
'clog:clog-select :new-id t)) 'clog:clog-select :new-id t))
(setf (slot-value panel 'package-box) (setf (slot-value panel 'package-box)
(attach-as-child clog-obj "CLOGB3868308744" :clog-type (attach-as-child clog-obj "CLOGB3868359571" :clog-type
'clog:clog-select :new-id t)) 'clog:clog-select :new-id t))
(setf (slot-value panel 'type-box) (setf (slot-value panel 'type-box)
(attach-as-child clog-obj "CLOGB3868308743" :clog-type (attach-as-child clog-obj "CLOGB3868359570" :clog-type
'clog:clog-select :new-id t)) 'clog:clog-select :new-id t))
(let ((target (type-box panel))) (let ((target (type-box panel)))
(declare (ignorable target)) (declare (ignorable target))
@ -132,25 +133,28 @@
(clog:set-on-click (eval-button panel) (clog:set-on-click (eval-button panel)
(lambda (target) (lambda (target)
(declare (ignorable target)) (declare (ignorable target))
(let ((val (text-value (src-box panel)))) (let ((pac (text-value (package-box panel)))
(val (clog-ace:selected-text (src-box panel))))
(when (equalp "All" pac) (setf pac "CLOG-USER"))
(unless (equal val "") (unless (equal val "")
(let ((result (let ((result
(capture-eval val :clog-obj panel (capture-eval val :clog-obj panel
:eval-in-package :eval-in-package
(text-value (package-box panel))))) (text-value (package-box panel)))))
(clog-web-alert (connection-body clog-obj) (clog-web-alert (connection-body panel) "Result"
"Result" (format nil "~&result: ~A" result) (format nil "~&result: ~A" result) :color-class
:color-class "w3-green" :time-out 3)))))) "w3-green" :time-out 3))))))
(clog:set-on-click (eval-sel-button panel) (clog:set-on-click (eval-sel-button panel)
(lambda (target) (lambda (target)
(declare (ignorable target)) (declare (ignorable target))
(let ((val (clog-ace:selected-text (src-box panel)))) (let ((pac (text-value (package-box panel)))
(val (clog-ace:selected-text (src-box panel))))
(when (equalp "All" pac) (setf pac "CLOG-USER"))
(unless (equal val "") (unless (equal val "")
(let ((result (let ((result
(capture-eval val :clog-obj panel (capture-eval val :clog-obj panel
:eval-in-package :eval-in-package pac)))
(text-value (package-box panel))))) (clog-web-alert (connection-body panel) "Result"
(clog-web-alert (connection-body clog-obj) (format nil "~&result: ~A" result) :color-class
"Result" (format nil "~&result: ~A" result) "w3-green" :time-out 3))))))
:color-class "w3-green" :time-out 3))))))
panel)) panel))