mirror of
https://github.com/rabbibotton/clog.git
synced 2025-12-06 10:40:45 -08:00
OS Shell
This commit is contained in:
parent
b617f65a4b
commit
535b0af25c
6 changed files with 20 additions and 41 deletions
3
clog.asd
vendored
3
clog.asd
vendored
|
|
@ -93,6 +93,8 @@
|
|||
(:file "clog-builder-asdf-browser")
|
||||
(:file "clog-builder-sys-browser")
|
||||
(:file "clog-builder-dir-win")
|
||||
(:file "clog-builder-repl")
|
||||
(:file "clog-builder-shell")
|
||||
(:file "clog-builder-images")
|
||||
;; clog-builder panels (post-render)
|
||||
(:file "panel-clog-templates")
|
||||
|
|
@ -104,4 +106,5 @@
|
|||
(:file "panel-projects")
|
||||
(:file "panel-project-directory")
|
||||
(:file "panel-clog-builder-repl")
|
||||
(:file "panel-shell")
|
||||
(:file "panel-dir-view")))
|
||||
|
|
|
|||
|
|
@ -2270,6 +2270,12 @@ make-two-way-stream to provide a *query-io* using a clog-gui instead of console)
|
|||
((null c))
|
||||
(setf q (format nil "~A~&[~D] ~A~%<br>" q i (car c))))
|
||||
(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))
|
||||
(setq i (read-from-string (input-dialog obj q (lambda (result) (or result ""))
|
||||
:title title
|
||||
|
|
|
|||
|
|
@ -73,6 +73,8 @@ provide an interactive console.)"))
|
|||
;; Lisp code evaluation utilities
|
||||
(defun capture-eval (form &key (capture-console t)
|
||||
(capture-result t)
|
||||
(capture-result-form "=>~A~%")
|
||||
(eval-form "~A~%=>~A~%")
|
||||
(clog-obj nil)
|
||||
(eval-in-package "clog-user"))
|
||||
"Capture lisp evaluaton of FORM."
|
||||
|
|
@ -112,10 +114,11 @@ provide an interactive console.)"))
|
|||
(*package* (find-package (string-upcase eval-in-package))))
|
||||
(setf eval-result (eval (read-from-string (format nil "(progn ~A)" form))))
|
||||
(unless capture-result
|
||||
(format st "~%=>~A~%" eval-result))
|
||||
(format st capture-result-form eval-result))
|
||||
(values
|
||||
(format nil "~A~%=>~A~%" result eval-result)
|
||||
*package*))))))))
|
||||
(format nil eval-form result eval-result)
|
||||
*package*
|
||||
eval-result))))))))
|
||||
|
||||
(defun do-eval (obj form-string cname &key (package "clog-user") (test t) custom-boot)
|
||||
"Render, evalute and run code for panel"
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@
|
|||
;; CLOG Builder REPL
|
||||
(defparameter *clog-repl-use-console* t)
|
||||
(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
|
||||
|
||||
|
|
|
|||
|
|
@ -212,7 +212,7 @@ clog-builder window.")
|
|||
(create-div body :content params)
|
||||
(destructuring-bind (stream fname content-type)
|
||||
(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))
|
||||
(pic-data ""))
|
||||
(setf pic-data (format nil "data:~A;base64,~A" content-type
|
||||
|
|
@ -235,40 +235,6 @@ clog-builder window.")
|
|||
:client-movement *client-side-movement*)))
|
||||
(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)
|
||||
"Open callers window"
|
||||
(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 "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 "OS Shell" :on-click 'on-shell)
|
||||
(create-gui-menu-item tools :content "Copy/Cut History" :on-click 'on-show-copy-history-win)
|
||||
(unless *clogframe-mode*
|
||||
(create-gui-menu-item tools :content "Image to HTML Data" :on-click 'on-image-to-data))
|
||||
|
|
|
|||
2
tools/preferences.lisp.sample
vendored
2
tools/preferences.lisp.sample
vendored
|
|
@ -54,7 +54,7 @@
|
|||
;; CLOG Builder REPL
|
||||
(setf *clog-repl-use-console* t)
|
||||
(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
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue