This commit is contained in:
David Botton 2024-04-11 21:06:41 -04:00
parent b617f65a4b
commit 535b0af25c
6 changed files with 20 additions and 41 deletions

3
clog.asd vendored
View file

@ -93,6 +93,8 @@
(:file "clog-builder-asdf-browser") (:file "clog-builder-asdf-browser")
(:file "clog-builder-sys-browser") (:file "clog-builder-sys-browser")
(:file "clog-builder-dir-win") (:file "clog-builder-dir-win")
(:file "clog-builder-repl")
(:file "clog-builder-shell")
(:file "clog-builder-images") (:file "clog-builder-images")
;; clog-builder panels (post-render) ;; clog-builder panels (post-render)
(:file "panel-clog-templates") (:file "panel-clog-templates")
@ -104,4 +106,5 @@
(:file "panel-projects") (:file "panel-projects")
(:file "panel-project-directory") (:file "panel-project-directory")
(:file "panel-clog-builder-repl") (:file "panel-clog-builder-repl")
(:file "panel-shell")
(:file "panel-dir-view"))) (:file "panel-dir-view")))

View file

@ -2270,6 +2270,12 @@ make-two-way-stream to provide a *query-io* using a clog-gui instead of console)
((null c)) ((null c))
(setf q (format nil "~A~&[~D] ~A~%<br>" q i (car c)))) (setf q (format nil "~A~&[~D] ~A~%<br>" q i (car c))))
(do () ((typep i `(integer 1 ,n))) (do () ((typep i `(integer 1 ,n)))
(let ((trc (make-array '(0) :element-type 'base-char
:fill-pointer 0 :adjustable t)))
(with-output-to-string (s trc)
(uiop:print-condition-backtrace intro :stream s))
(when trc
(format t "~A" trc)))
(setf q (format nil "~A~&~A:" q prompt)) (setf q (format nil "~A~&~A:" q prompt))
(setq i (read-from-string (input-dialog obj q (lambda (result) (or result "")) (setq i (read-from-string (input-dialog obj q (lambda (result) (or result ""))
:title title :title title

View file

@ -73,6 +73,8 @@ provide an interactive console.)"))
;; Lisp code evaluation utilities ;; Lisp code evaluation utilities
(defun capture-eval (form &key (capture-console t) (defun capture-eval (form &key (capture-console t)
(capture-result t) (capture-result t)
(capture-result-form "=>~A~%")
(eval-form "~A~%=>~A~%")
(clog-obj nil) (clog-obj nil)
(eval-in-package "clog-user")) (eval-in-package "clog-user"))
"Capture lisp evaluaton of FORM." "Capture lisp evaluaton of FORM."
@ -112,10 +114,11 @@ provide an interactive console.)"))
(*package* (find-package (string-upcase eval-in-package)))) (*package* (find-package (string-upcase eval-in-package))))
(setf eval-result (eval (read-from-string (format nil "(progn ~A)" form)))) (setf eval-result (eval (read-from-string (format nil "(progn ~A)" form))))
(unless capture-result (unless capture-result
(format st "~%=>~A~%" eval-result)) (format st capture-result-form eval-result))
(values (values
(format nil "~A~%=>~A~%" result eval-result) (format nil eval-form result eval-result)
*package*)))))))) *package*
eval-result))))))))
(defun do-eval (obj form-string cname &key (package "clog-user") (test t) custom-boot) (defun do-eval (obj form-string cname &key (package "clog-user") (test t) custom-boot)
"Render, evalute and run code for panel" "Render, evalute and run code for panel"

View file

@ -46,7 +46,7 @@
;; CLOG Builder REPL ;; CLOG Builder REPL
(defparameter *clog-repl-use-console* t) (defparameter *clog-repl-use-console* t)
(defparameter *clog-repl-open-console-on-start* nil) (defparameter *clog-repl-open-console-on-start* nil)
(defparameter *clog-repl-send-result-to-console* t) (defparameter *clog-repl-send-result-to-console* nil)
;; Builder Look and Feel ;; Builder Look and Feel

View file

@ -212,7 +212,7 @@ clog-builder window.")
(create-div body :content params) (create-div body :content params)
(destructuring-bind (stream fname content-type) (destructuring-bind (stream fname content-type)
(form-data-item params "filename") (form-data-item params "filename")
(create-div body :content (format nil "filename = ~A - (contents printed in REPL)" fname)) (create-div body :content (format nil "filename = ~A - " fname))
(let ((s (flexi-streams:make-flexi-stream stream)) (let ((s (flexi-streams:make-flexi-stream stream))
(pic-data "")) (pic-data ""))
(setf pic-data (format nil "data:~A;base64,~A" content-type (setf pic-data (format nil "data:~A;base64,~A" content-type
@ -235,40 +235,6 @@ clog-builder window.")
:client-movement *client-side-movement*))) :client-movement *client-side-movement*)))
(create-thread-list (window-content win)))) (create-thread-list (window-content win))))
(defun on-repl (obj)
"Open a REPL"
(let* ((*default-title-class* *builder-title-class*)
(*default-border-class* *builder-border-class*)
(win (create-gui-window obj :title "CLOG Builder REPL"
:top 40 :left 225
:width 600 :height 400
:client-movement *client-side-movement*)))
(set-geometry (create-clog-builder-repl (window-content win))
:units "%" :width 100 :height 100)))
(defun repl-on-create (panel target)
(declare (ignore target))
(when *clog-repl-open-console-on-start*
(on-open-console panel)))
(defun repl-on-commmand (panel target data)
(if (equalp data "(clog-builder-repl)")
(let* ((*default-title-class* *builder-title-class*)
(*default-border-class* *builder-border-class*)
(win (create-gui-window panel :title "CLOG Builder REPL GUI Window"
:height 400 :width 600
:has-pinner t
:client-movement *client-side-movement*)))
(setf clog-user::*body* (window-content win)))
(multiple-value-bind (result new-package)
(capture-eval data :clog-obj panel
:capture-console (not *clog-repl-use-console*)
:capture-result (not *clog-repl-send-result-to-console*)
: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))))
(defun on-show-callers (body) (defun on-show-callers (body)
"Open callers window" "Open callers window"
(let ((*default-title-class* *builder-title-class*) (let ((*default-title-class* *builder-title-class*)
@ -405,6 +371,7 @@ clog-builder window.")
(create-gui-menu-item tools :content "Thread Viewer" :on-click 'on-show-thread-viewer) (create-gui-menu-item tools :content "Thread Viewer" :on-click 'on-show-thread-viewer)
(create-gui-menu-item tools :content "CLOG Builder REPL" :on-click 'on-repl) (create-gui-menu-item tools :content "CLOG Builder REPL" :on-click 'on-repl)
(create-gui-menu-item tools :content "CLOG Builder Console" :on-click 'on-open-console) (create-gui-menu-item tools :content "CLOG Builder Console" :on-click 'on-open-console)
(create-gui-menu-item tools :content "OS Shell" :on-click 'on-shell)
(create-gui-menu-item tools :content "Copy/Cut History" :on-click 'on-show-copy-history-win) (create-gui-menu-item tools :content "Copy/Cut History" :on-click 'on-show-copy-history-win)
(unless *clogframe-mode* (unless *clogframe-mode*
(create-gui-menu-item tools :content "Image to HTML Data" :on-click 'on-image-to-data)) (create-gui-menu-item tools :content "Image to HTML Data" :on-click 'on-image-to-data))
@ -576,4 +543,4 @@ instead of the project window will be displayed."
(format nil "~A" 1280) (format nil "~A" 840)))) (format nil "~A" 1280) (format nil "~A" 840))))
(when start-browser (when start-browser
(format t "~%If browser does not start go to http://127.0.0.1:~A/builder~%~%" port) (format t "~%If browser does not start go to http://127.0.0.1:~A/builder~%~%" port)
(open-browser :url (format nil "http://127.0.0.1:~A/builder" port)))) (open-browser :url (format nil "http://127.0.0.1:~A/builder" port))))

View file

@ -54,7 +54,7 @@
;; CLOG Builder REPL ;; CLOG Builder REPL
(setf *clog-repl-use-console* t) (setf *clog-repl-use-console* t)
(setf *clog-repl-open-console-on-start* nil) (setf *clog-repl-open-console-on-start* nil)
(setf *clog-repl-send-result-to-console* t) (setf *clog-repl-send-result-to-console* nil)
;; Builder Look and Feel ;; Builder Look and Feel