diff --git a/tools/clog-builder-sys-browser.lisp b/tools/clog-builder-sys-browser.lisp index 0c6880c..f979f58 100644 --- a/tools/clog-builder-sys-browser.lisp +++ b/tools/clog-builder-sys-browser.lisp @@ -15,6 +15,121 @@ (declare (ignore obj)) (clog-ace:resize (src-box panel)))))) +(defun sys-browser-type-box-create (panel target) + (declare (ignore panel)) + (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) "GLOBAL-DEFINITION")) + +(defun sys-browser-package-box (panel target) + (add-select-option target "All" + "All") + (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) "All") + (sys-browser-populate panel)) + +(defun sys-browser-search-box-key-up (panel target data) + (declare (ignore target)) + (cond ((equal (text-value (package-box panel)) "All") + (when (equalp "enter" (getf data :key)) + (sys-browser-populate panel))) + (t + (sys-browser-populate panel)))) + +(defun sys-browser-src-box-on-input (panel target) + (declare (ignore target)) + (unless (state panel) + (when (fname panel) + (setf (state panel) t) + (setf (disabledp (save-button panel)) nil)))) + +(defun sys-browser-file-name-on-click (panel target) + (declare (ignore panel)) + (on-open-file target :open-file (text-value target))) + +(defun sys-browser-eval-form-button-on-click (panel target) + (declare (ignore target)) + (let ((p (parse-integer + (js-query panel + (format nil "~A.session.doc.positionToIndex (~A.selection.getCursor(), 0);" + (clog-ace::js-ace (src-box panel)) + (clog-ace::js-ace (src-box panel)))) + :junk-allowed t)) + (tv (text-value (src-box panel))) + (pk (text-value (pac-box panel))) + (lf nil) + (cp 0)) + (loop + (setf (values lf cp) (read-from-string tv nil nil :start cp)) + (unless lf (return nil)) + (when (> cp p) (return lf))) + (when lf + (let ((result (capture-eval lf + :clog-obj (connection-body panel) + :eval-in-package (format nil "~A" pk)))) + (clog-web-alert (connection-body panel) "Result" + (format nil "~&result: ~A" result) + :color-class "w3-green" + :time-out 3))))) + +(defun sys-browser-eval-sel-button-on-click (panel target) + (declare (ignore target)) + (let ((pac (text-value (pac-box panel))) + (val (clog-ace:selected-text (src-box panel)))) + (unless (equal val "") + (let ((result (capture-eval val :clog-obj panel + :eval-in-package pac))) + (clog-web-alert (connection-body panel) "Result" + (format nil "~&result: ~A" result) + :color-class "w3-green" + :time-out 3))))) + +(defun sys-browser-eval-button-on-click (panel target) + (declare (ignore target)) + (let ((pac (text-value (pac-box panel))) + (val (clog-ace:text-value (src-box panel)))) + (unless (equal val "") + (let ((result (capture-eval val :clog-obj panel + :eval-in-package pac))) + (clog-web-alert (connection-body panel) "Result" + (format nil "~&result: ~A" result) + :color-class "w3-green" + :time-out 3))))) + +(defun sys-browser-save-button-on-click (panel target) + (when (fname panel) + (write-file (text-value (src-box panel)) (fname panel)) + (setf (state panel) nil) + (setf (disabledp (save-button panel)) t))) + (defun sys-browser-populate (panel) (ignore-errors ; ignore invalid searches (setf (inner-html (class-box panel)) "") diff --git a/tools/panel-sys-browser.clog b/tools/panel-sys-browser.clog index 8a7f09b..876d025 100644 --- a/tools/panel-sys-browser.clog +++ b/tools/panel-sys-browser.clog @@ -1,84 +1 @@ -
status
\ No newline at end of file +
status
\ No newline at end of file diff --git a/tools/panel-sys-browser.lisp b/tools/panel-sys-browser.lisp index 8ff5359..154e545 100644 --- a/tools/panel-sys-browser.lisp +++ b/tools/panel-sys-browser.lisp @@ -18,75 +18,61 @@ (let ((panel (change-class (clog:create-div clog-obj :content - "
status
" + "
status
" :hidden hidden :class class :html-id html-id :auto-place auto-place) 'sys-browser))) (setf (slot-value panel 'status-box) - (attach-as-child clog-obj "CLOGB3921103981" :clog-type + (attach-as-child clog-obj "CLOGB3921162239" :clog-type 'clog:clog-div :new-id t)) (setf (slot-value panel 'save-button) - (attach-as-child clog-obj "CLOGB3921103980" :clog-type + (attach-as-child clog-obj "CLOGB3921162238" :clog-type 'clog:clog-form-element :new-id t)) (setf (slot-value panel 'eval-button) - (attach-as-child clog-obj "CLOGB3921103979" :clog-type + (attach-as-child clog-obj "CLOGB3921162237" :clog-type 'clog:clog-form-element :new-id t)) (setf (slot-value panel 'eval-sel-button) - (attach-as-child clog-obj "CLOGB3921103978" :clog-type + (attach-as-child clog-obj "CLOGB3921162236" :clog-type 'clog:clog-form-element :new-id t)) (setf (slot-value panel 'eval-form-button) - (attach-as-child clog-obj "CLOGB3921103977" :clog-type + (attach-as-child clog-obj "CLOGB3921162235" :clog-type 'clog:clog-form-element :new-id t)) (setf (slot-value panel 'file-name) - (attach-as-child clog-obj "CLOGB3921103976" :clog-type + (attach-as-child clog-obj "CLOGB3921162234" :clog-type 'clog:clog-form-element :new-id t)) (setf (slot-value panel 'src-box) - (attach-as-child clog-obj "CLOGB3921103975" :clog-type + (attach-as-child clog-obj "CLOGB3921162233" :clog-type 'clog-ace:clog-ace-element :new-id t)) (setf (slot-value panel 'pac-box) - (attach-as-child clog-obj "CLOGB3921103974" :clog-type + (attach-as-child clog-obj "CLOGB3921162232" :clog-type 'clog:clog-form-element :new-id t)) (setf (slot-value panel 'doc-box) - (attach-as-child clog-obj "CLOGB3921103973" :clog-type + (attach-as-child clog-obj "CLOGB3921162231" :clog-type 'clog:clog-text-area :new-id t)) (setf (slot-value panel 'class-box) - (attach-as-child clog-obj "CLOGB3921103972" :clog-type + (attach-as-child clog-obj "CLOGB3921162230" :clog-type 'clog:clog-select :new-id t)) (setf (slot-value panel 'search-box) - (attach-as-child clog-obj "CLOGB3921103971" :clog-type + (attach-as-child clog-obj "CLOGB3921162229" :clog-type 'clog:clog-form-element :new-id t)) (setf (slot-value panel 'class-only) - (attach-as-child clog-obj "CLOGB3921103970" :clog-type + (attach-as-child clog-obj "CLOGB3921162228" :clog-type 'clog:clog-form-element :new-id t)) (setf (slot-value panel 'label-class-only) - (attach-as-child clog-obj "CLOGB3921103969" :clog-type + (attach-as-child clog-obj "CLOGB3921162227" :clog-type 'clog:clog-label :new-id t)) (setf (slot-value panel 'package-box) - (attach-as-child clog-obj "CLOGB3921103968" :clog-type + (attach-as-child clog-obj "CLOGB3921162226" :clog-type 'clog:clog-select :new-id t)) (setf (slot-value panel 'type-box) - (attach-as-child clog-obj "CLOGB3921103967" :clog-type + (attach-as-child clog-obj "CLOGB3921162225" :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) "GLOBAL-DEFINITION")) + (sys-browser-type-box-create panel target)) (let ((target (package-box panel))) (declare (ignorable target)) - (add-select-option target "All" "All") - (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) "All") - (sys-browser-populate panel)) + (sys-browser-package-box panel target)) (let ((target (label-class-only panel))) (declare (ignorable target)) (setf (attribute target "for") @@ -114,11 +100,7 @@ (clog:set-on-key-up (search-box panel) (lambda (target data) (declare (ignorable target data)) - (cond - ((equal (text-value (package-box panel)) "All") - (when (equalp "enter" (getf data :key)) - (sys-browser-populate panel))) - (t (sys-browser-populate panel))))) + (sys-browser-search-box-key-up panel target data))) (clog:set-on-click (class-box panel) (lambda (target) (declare (ignorable target)) @@ -130,73 +112,25 @@ (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))))) + (sys-browser-src-box-on-input panel target))) (clog:set-on-click (file-name panel) (lambda (target) (declare (ignorable target)) - (on-open-file target :open-file (text-value target)))) + (sys-browser-file-name-on-click panel target))) (clog:set-on-click (eval-form-button panel) (lambda (target) (declare (ignorable target)) - (let ((p - (parse-integer - (js-query panel - (format nil - "~A.session.doc.positionToIndex (~A.selection.getCursor(), 0);" - (clog-ace::js-ace (src-box panel)) - (clog-ace::js-ace (src-box panel)))) - :junk-allowed t)) - (tv (text-value (src-box panel))) - (pk (text-value (pac-box panel))) - (lf nil) - (cp 0)) - (loop - (setf (values lf cp) - (read-from-string tv nil nil :start cp)) - (unless lf (return nil)) - (when (> cp p) (return lf))) - (when lf - (let ((result - (capture-eval lf :clog-obj - (connection-body panel) :eval-in-package - (format nil "~A" pk)))) - (clog-web-alert (connection-body panel) "Result" - (format nil "~&result: ~A" result) :color-class - "w3-green" :time-out 3)))))) + (sys-browser-eval-form-button-on-click panel target))) (clog:set-on-click (eval-sel-button panel) (lambda (target) (declare (ignorable target)) - (let ((pac (text-value (pac-box panel))) - (val (clog-ace:selected-text (src-box panel)))) - (unless (equal val "") - (let ((result - (capture-eval val :clog-obj panel - :eval-in-package pac))) - (clog-web-alert (connection-body panel) "Result" - (format nil "~&result: ~A" result) :color-class - "w3-green" :time-out 3)))))) + (sys-browser-eval-sel-button-on-click panel target))) (clog:set-on-click (eval-button panel) (lambda (target) (declare (ignorable target)) - (let ((pac (text-value (pac-box panel))) - (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 panel) "Result" - (format nil "~&result: ~A" result) :color-class - "w3-green" :time-out 3)))))) + (sys-browser-eval-button-on-click panel target))) (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)))) + (sys-browser-save-button-on-click panel-target))) panel)) \ No newline at end of file