(in-package "CLOG-TOOLS") (defclass asdf-systems (clog:clog-panel) ((asd-label :reader asd-label) (remove-button :reader remove-button) (reload-button :reader reload-button) (load-new-button :reader load-new-button) (reset-list-button :reader reset-list-button) (button-panel :reader button-panel) (source-file :reader source-file) (files :reader files) (files-label :reader files-label) (deps :reader deps) (deps-label :reader deps-label) (loaded-systems :reader loaded-systems) (sys-label :reader sys-label))) (defun create-asdf-systems (clog-obj &key (hidden nil) (class nil) (html-id nil) (auto-place t)) (let ((panel (change-class (clog:create-div clog-obj :content "
" :hidden hidden :class class :html-id html-id :auto-place auto-place) 'asdf-systems))) (setf (slot-value panel 'asd-label) (attach-as-child clog-obj "CLOGB3868573822" :clog-type 'clog:clog-label :new-id t)) (setf (slot-value panel 'remove-button) (attach-as-child clog-obj "CLOGB3868573821" :clog-type 'clog:clog-button :new-id t)) (setf (slot-value panel 'reload-button) (attach-as-child clog-obj "CLOGB3868573820" :clog-type 'clog:clog-button :new-id t)) (setf (slot-value panel 'load-new-button) (attach-as-child clog-obj "CLOGB3868573819" :clog-type 'clog:clog-button :new-id t)) (setf (slot-value panel 'reset-list-button) (attach-as-child clog-obj "CLOGB3868573818" :clog-type 'clog:clog-button :new-id t)) (setf (slot-value panel 'button-panel) (attach-as-child clog-obj "CLOGB3868573817" :clog-type 'clog:clog-div :new-id t)) (setf (slot-value panel 'source-file) (attach-as-child clog-obj "CLOGB3868573816" :clog-type 'clog:clog-form-element :new-id t)) (setf (slot-value panel 'files) (attach-as-child clog-obj "CLOGB3868573815" :clog-type 'clog:clog-select :new-id t)) (setf (slot-value panel 'files-label) (attach-as-child clog-obj "CLOGB3868573814" :clog-type 'clog:clog-label :new-id t)) (setf (slot-value panel 'deps) (attach-as-child clog-obj "CLOGB3868573813" :clog-type 'clog:clog-select :new-id t)) (setf (slot-value panel 'deps-label) (attach-as-child clog-obj "CLOGB3868573812" :clog-type 'clog:clog-label :new-id t)) (setf (slot-value panel 'loaded-systems) (attach-as-child clog-obj "CLOGB3868573811" :clog-type 'clog:clog-select :new-id t)) (setf (slot-value panel 'sys-label) (attach-as-child clog-obj "CLOGB3868573810" :clog-type 'clog:clog-label :new-id t)) (let ((target (sys-label panel))) (declare (ignorable target)) (setf (attribute target "for") (clog:js-query target "$('[data-clog-name=\\'loaded-systems\\']').attr('id')"))) (let ((target (loaded-systems panel))) (declare (ignorable target)) (asdf-browser-reset panel)) (let ((target (deps-label panel))) (declare (ignorable target)) (setf (attribute target "for") (clog:js-query target "$('[data-clog-name=\\'deps\\']').attr('id')"))) (let ((target (files-label panel))) (declare (ignorable target)) nil) (let ((target (asd-label panel))) (declare (ignorable target)) nil) (clog:set-on-change (loaded-systems panel) (lambda (target) (declare (ignorable target)) (asdf-browser-populate panel))) (clog:set-on-double-click (deps panel) (lambda (target) (declare (ignorable target)) (setf (text-value (loaded-systems panel)) (text-value target)) (asdf-browser-populate panel))) (clog:set-on-double-click (files panel) (lambda (target) (declare (ignorable target)) (let ((disp (select-text target)) (item (text-value target))) (cond ((equal (subseq item (1- (length item))) "/") (setf (inner-html (files panel)) "") (dolist (n (asdf/component:module-components (asdf/component:find-component (asdf/system:find-system (text-value (loaded-systems panel))) (subseq disp 0 (1- (length disp)))))) (let ((name (asdf/component:component-relative-pathname n)) (path (asdf/component:component-pathname n))) (add-select-option (files panel) path name)))) ((and (> (length item) 5) (equal (subseq item (- (length item) 5)) ".clog")) (on-new-builder-panel panel :open-file item)) (t (on-open-file panel :open-file item)))))) (clog:set-on-double-click (source-file panel) (lambda (target) (declare (ignorable target)) (on-open-file panel :open-file (text-value target)))) (clog:set-on-click (reset-list-button panel) (lambda (target) (declare (ignorable target)) (asdf-browser-reset panel))) (clog:set-on-click (load-new-button panel) (lambda (target) (declare (ignorable target)) (clog-gui:input-dialog panel "Load New System:" (lambda (fname) (quicklisp-client:quickload fname) (asdf-browser-reset panel) (setf (text-value (loaded-systems panel)) fname) (asdf-browser-populate panel)) :title "Quickload"))) (clog:set-on-click (reload-button panel) (lambda (target) (declare (ignorable target)) (let ((fname (text-value (loaded-systems panel)))) (quicklisp-client:quickload fname) (setf (text-value (loaded-systems panel)) fname) (asdf-browser-populate panel)))) (clog:set-on-click (remove-button panel) (lambda (target) (declare (ignorable target)) (asdf/system-registry:clear-system (text-value (loaded-systems panel))) (asdf-browser-reset panel))) panel))