Capability to open files and panels in new browser windows

This commit is contained in:
David Botton 2024-03-07 13:24:15 -05:00
parent 14a4f3630d
commit 2a2ef18c11
7 changed files with 161 additions and 83 deletions

View file

@ -22,9 +22,13 @@
(unless (equal item "") (unless (equal item "")
(cond ((and (> (length item) 5) (cond ((and (> (length item) 5)
(equal (subseq item (- (length item) 5)) ".clog")) (equal (subseq item (- (length item) 5)) ".clog"))
(on-new-builder-panel panel :open-file item)) (if (checkedp (open-file-ext panel))
(on-new-builder-panel-ext panel :open-file item)
(on-new-builder-panel panel :open-file item)))
(t (t
(on-open-file panel :open-file item)))))) (if (checkedp (open-file-ext panel))
(on-open-file-ext panel :open-file item)
(on-open-file panel :open-file item)))))))
(defun on-delete-dir-win (panel) (defun on-delete-dir-win (panel)
(let ((item (value (files panel)))) (let ((item (value (files panel))))

View file

@ -332,7 +332,7 @@
(pprint n s))))) (pprint n s)))))
(projects-load system)) (projects-load system))
(defun open-projects-component (target system list) (defun open-projects-component (target panel system list)
(let ((disp (select-text target)) (let ((disp (select-text target))
(item (text-value target))) (item (text-value target)))
(cond ((equal item "") (cond ((equal item "")
@ -348,6 +348,10 @@
(add-select-option list path name)))) (add-select-option list path name))))
((and (> (length item) 5) ((and (> (length item) 5)
(equal (subseq item (- (length item) 5)) ".clog")) (equal (subseq item (- (length item) 5)) ".clog"))
(on-new-builder-panel target :open-file item)) (if (checkedp (open-ext panel))
(on-new-builder-panel-ext target :open-file item)
(on-new-builder-panel target :open-file item)))
(t (t
(on-open-file target :open-file item))))) (if (checkedp (open-ext panel))
(on-open-file-ext target :open-file item)
(on-open-file target :open-file item))))))

View file

@ -8,6 +8,7 @@
(in-package :clog-tools) (in-package :clog-tools)
(defparameter *start-project* nil) (defparameter *start-project* nil)
(defparameter *start-dir* nil)
(defparameter *client-side-movement* nil) (defparameter *client-side-movement* nil)
@ -1779,6 +1780,17 @@ It parse the string TEXT without using READ functions."
(setf (hiddenp (right-panel app)) (not bool)) (setf (hiddenp (right-panel app)) (not bool))
(setf (hiddenp (left-panel app)) (not bool)))) (setf (hiddenp (left-panel app)) (not bool))))
(defun on-new-builder-panel-ext (obj &key open-file popup)
(open-window (window (connection-body obj))
(if open-file
(format nil "/panel-editor?open-file=~A"
open-file)
"/source-editor")
:specs (if popup
"width=645,height-430"
"")
:name "_blank"))
(defun on-new-builder-panel (obj &key (open-file nil)) (defun on-new-builder-panel (obj &key (open-file nil))
"Open new panel" "Open new panel"
(unless (and open-file (unless (and open-file
@ -2599,12 +2611,24 @@ It parse the string TEXT without using READ functions."
(defun on-open-file-window (body) (defun on-open-file-window (body)
(set-html-on-close body "Connection Lost") (set-html-on-close body "Connection Lost")
(let ((app (make-instance 'builder-app-data))) (let ((app (make-instance 'builder-app-data))
(file (form-data-item (form-get-data body) "open-file")))
(setf (connection-data-item body "builder-app-data") app) (setf (connection-data-item body "builder-app-data") app)
(setf (title (html-document body)) "CLOG Builder - Source Editor") (setf (title (html-document body)) "CLOG Builder - Source Editor")
(clog-gui-initialize body) (clog-gui-initialize body)
(add-class body "w3-blue-grey") (add-class body "w3-blue-grey")
(on-open-file body :maximized t))) (on-open-file body :open-file file :maximized t)))
(defun on-open-file-ext (obj &key open-file popup)
(open-window (window (connection-body obj))
(if open-file
(format nil "/source-editor?open-file=~A"
open-file)
"/source-editor")
:specs (if popup
"width=645,height-430"
"")
:name "_blank"))
(defun on-open-file (obj &key open-file (defun on-open-file (obj &key open-file
(title "New Source Editor") (title "New Source Editor")
@ -2715,22 +2739,26 @@ It parse the string TEXT without using READ functions."
(clog-ace:resize ace))) (clog-ace:resize ace)))
(flet ((open-file-name (fname) (flet ((open-file-name (fname)
(window-focus win) (window-focus win)
(when fname (handler-case
(setf last-date (file-write-date fname)) (when fname
(setf file-name fname) (setf last-date (file-write-date fname))
(setf (window-title win) fname) (setf file-name fname)
(let ((c (or (read-file fname) "" :clog-obj obj))) (setf (window-title win) fname)
(cond ((or (equalp (pathname-type fname) "lisp") (let ((c (or (read-file fname) "" :clog-obj obj)))
(equalp (pathname-type fname) "asd")) (cond ((or (equalp (pathname-type fname) "lisp")
(setf (clog-ace:mode ace) "ace/mode/lisp") (equalp (pathname-type fname) "asd"))
(setf (text-value pac-line) (get-package-from-string c)) (setf (clog-ace:mode ace) "ace/mode/lisp")
(setf lisp-file t) (setf (text-value pac-line) (get-package-from-string c))
(setf (current-editor-is-lisp app) (text-value pac-line))) (setf lisp-file t)
(t (setf (current-editor-is-lisp app) (text-value pac-line)))
(setf lisp-file nil) (t
(setf (current-editor-is-lisp app) nil) (setf lisp-file nil)
(setf (clog-ace:mode ace) (clog-ace:get-mode-from-extension ace fname)))) (setf (current-editor-is-lisp app) nil)
(setf (clog-ace:text-value ace) c))))) (setf (clog-ace:mode ace) (clog-ace:get-mode-from-extension ace fname))))
(setf (clog-ace:text-value ace) c)))
(error (condition)
(alert-toast obj "File Error" (format nil "Error: ~A" condition))
(format t "Error: ~A" condition)))))
(when open-file (when open-file
(open-file-name open-file)) (open-file-name open-file))
(set-on-click btn-load (lambda (obj) (set-on-click btn-load (lambda (obj)
@ -2888,9 +2916,10 @@ It parse the string TEXT without using READ functions."
:title-class "w3-red" :title-class "w3-red"
:text c))))))) :text c)))))))
(defun on-dir-win (obj &key dir) (defun on-dir-win (obj &key dir top left)
"Open dir window" "Open dir window"
(let* ((win (create-gui-window obj :title "Directory Window" (let* ((win (create-gui-window obj :title "Directory Window"
:top top :left left
:width 600 :height 400 :width 600 :height 400
:client-movement *client-side-movement*)) :client-movement *client-side-movement*))
(d (create-dir-view (window-content win)))) (d (create-dir-view (window-content win))))
@ -2898,10 +2927,14 @@ It parse the string TEXT without using READ functions."
(when dir (when dir
(populate-dir-win d dir)))) (populate-dir-win d dir))))
(defun on-open-panel-window (body)
(on-new-builder body))
(defun on-new-builder (body) (defun on-new-builder (body)
"Launch instance of the CLOG Builder" "Launch instance of the CLOG Builder"
(set-html-on-close body "Connection Lost") (set-html-on-close body "Connection Lost")
(let ((app (make-instance 'builder-app-data))) (let ((app (make-instance 'builder-app-data))
(open-file (form-data-item (form-get-data body) "open-file")))
(setf (connection-data-item body "builder-app-data") app) (setf (connection-data-item body "builder-app-data") app)
(setf (title (html-document body)) "CLOG Builder") (setf (title (html-document body)) "CLOG Builder")
(clog-gui-initialize body :body-left-offset 10 :body-right-offset 10) (clog-gui-initialize body :body-left-offset 10 :body-right-offset 10)
@ -2926,12 +2959,13 @@ It parse the string TEXT without using READ functions."
(create-gui-menu-item file :content "New Custom Boot Page" :on-click 'on-new-builder-custom) (create-gui-menu-item file :content "New Custom Boot Page" :on-click 'on-new-builder-custom)
(create-gui-menu-item file :content "New Application Template" :on-click 'on-new-app-template) (create-gui-menu-item file :content "New Application Template" :on-click 'on-new-app-template)
(create-gui-menu-item src :content "Project Window" :on-click 'on-show-project) (create-gui-menu-item src :content "Project Window" :on-click 'on-show-project)
(create-gui-menu-item src :content "Directory Window" :on-click 'on-dir-win)
(create-gui-menu-item src :content "New Source Editor" :on-click 'on-open-file) (create-gui-menu-item src :content "New Source Editor" :on-click 'on-open-file)
(create-gui-menu-item src :content "New Source Editor (New Tab)" :on-click (create-gui-menu-item src :content "New Source Editor (New Tab)" :on-click
(lambda (obj) (lambda (obj)
(declare (ignore obj)) (declare (ignore obj))
(open-window (window body) "/source-editor"))) (open-window (window body) "/source-editor")))
(Create-gui-menu-item src :content "New System Browser" :on-click 'on-new-sys-browser) (create-gui-menu-item src :content "New System Browser" :on-click 'on-new-sys-browser)
(create-gui-menu-item src :content "New ASDF System Browser" :on-click 'on-new-asdf-browser) (create-gui-menu-item src :content "New ASDF System Browser" :on-click 'on-new-asdf-browser)
(create-gui-menu-item tools :content "Control Events" :on-click 'on-show-control-events-win) (create-gui-menu-item tools :content "Control Events" :on-click 'on-show-control-events-win)
(create-gui-menu-item tools :content "Directory Window" :on-click 'on-dir-win) (create-gui-menu-item tools :content "Directory Window" :on-click 'on-dir-win)
@ -2991,7 +3025,13 @@ It parse the string TEXT without using READ functions."
(on-show-control-properties-win body) (on-show-control-properties-win body)
(on-show-control-list-win body) (on-show-control-list-win body)
(on-show-copy-history-win body) (on-show-copy-history-win body)
(on-show-project body :project *start-project*) (cond
(open-file
(on-new-builder-panel body :open-file open-file))
(*start-dir*
(on-dir-win body :dir *start-dir* :top 60 :left 232))
(t
(on-show-project body :project *start-project*)))
(set-on-before-unload (window body) (lambda(obj) (set-on-before-unload (window body) (lambda(obj)
(declare (ignore obj)) (declare (ignore obj))
;; return empty string to prevent nav off page ;; return empty string to prevent nav off page
@ -3006,15 +3046,17 @@ It parse the string TEXT without using READ functions."
clog-builder window.") clog-builder window.")
(defun clog-builder (&key (port 8080) (start-browser t) (defun clog-builder (&key (port 8080) (start-browser t)
app project static-root system clogframe) app project dir static-root system clogframe)
"Start clog-builder. When PORT is 0 choose a random port. When APP is "Start clog-builder. When PORT is 0 choose a random port. When APP is
t, shutdown applicatoin on termination of first window. If APP eq :BATCH then t, shutdown applicatoin on termination of first window. If APP eq :BATCH then
must specific default project :PROJECT and it will be batch rerendered must specific default project :PROJECT and it will be batch rerendered
and shutdown application. You can set the specific STATIC-ROOT or set SYSTEM and shutdown application. You can set the specific STATIC-ROOT or set SYSTEM
to use that asdf system's static root." to use that asdf system's static root. if DIR then the directory window
instead of the project window will be displayed."
(if project (if project
(setf *start-project* (string-downcase (format nil "~A" project))) (setf *start-project* (string-downcase (format nil "~A" project)))
(setf *start-project* nil)) (setf *start-project* nil))
(setf *start-dir* dir)
(when system (when system
(setf static-root (merge-pathnames "./www/" (setf static-root (merge-pathnames "./www/"
(asdf:system-source-directory system)))) (asdf:system-source-directory system))))
@ -3028,6 +3070,7 @@ to use that asdf system's static root."
(set-on-new-window 'on-new-db-admin :path "/dbadmin") (set-on-new-window 'on-new-db-admin :path "/dbadmin")
(set-on-new-window 'on-attach-builder-page :path "/builder-page") (set-on-new-window 'on-attach-builder-page :path "/builder-page")
(set-on-new-window 'on-convert-image :path "/image-to-data") (set-on-new-window 'on-convert-image :path "/image-to-data")
(set-on-new-window 'on-open-panel-window :path "/panel-editor")
(set-on-new-window 'on-open-file-window :path "/source-editor") (set-on-new-window 'on-open-file-window :path "/source-editor")
(when clogframe (when clogframe
(uiop:run-program (list "./clogframe" (uiop:run-program (list "./clogframe"

2
tools/dir-view.clog vendored
View file

@ -1 +1 @@
<data id="I3872110834" data-in-package="clog-tools" data-custom-slots="(current-dir :accessor current-dir :initform &quot;.&quot;)" data-clog-next-id="21" data-clog-title="dir-view"></data><select data-clog-type="listbox" size="4" data-clog-name="folders" style="box-sizing: content-box; position: absolute; left: 10px; top: 10px; right: 10px; height: 115px; overflow: auto;" data-on-create="(populate-dir-win panel &quot;./&quot;)" data-on-mouse-double-click="(populate-dir-win panel (value target))"></select><div data-clog-type="div" data-clog-name="divider" style="box-sizing: content-box; position: absolute; left: 10px; height: 5px; background-attachment: scroll; background-color: rgb(0, 0, 0); right: 10px; top: 166px;"></div><select data-clog-type="listbox" size="4" data-clog-name="files" style="box-sizing: content-box; position: absolute; inset: 175px 10px 40px; overflow: auto;" data-on-double-click="(on-select-dir-win panel)"></select><input type="BUTTON" value="Open" data-clog-type="fbutton" data-clog-name="open-dir-button" style="box-sizing: content-box; position: absolute; left: 10px; top: 132px; width: 70px;" data-on-click="(populate-dir-win panel (value (folders panel)))"><input type="BUTTON" value="New" data-clog-type="fbutton" data-clog-name="new-dir-button" style="box-sizing: content-box; position: absolute; left: 100px; top: 132px; width: 70px;" data-on-click="(on-new-dir-dir-win panel)"><input type="BUTTON" value="Delete" data-clog-type="fbutton" data-clog-name="del-dir-button" style="box-sizing: content-box; position: absolute; left: 190px; top: 132px; width: 70px;" data-on-click="(on-delete-dir-dir-win panel (value (folders panel)))"><input type="BUTTON" value="Rename" data-clog-type="fbutton" data-clog-name="rename-dir-button" style="box-sizing: content-box; position: absolute; left: 280px; top: 132px; width: 70px;" data-on-click="(on-rename-dir-dir-win panel (value (folders panel)))"><input type="BUTTON" value="Open" data-clog-type="fbutton" data-clog-name="open-button" style="box-sizing: content-box; position: absolute; left: 10px; bottom: 5px; width: 70px;" data-on-click="(on-select-dir-win panel)"><input type="BUTTON" value="Delete" data-clog-type="fbutton" data-clog-name="del-button" style="box-sizing: content-box; position: absolute; left: 100px; bottom: 5px; width: 70px;" data-on-click="(on-delete-dir-win panel)"><input type="BUTTON" value="Rename" data-clog-type="fbutton" data-clog-name="rename-button" style="box-sizing: content-box; position: absolute; left: 190px; bottom: 5px; width: 70px;" data-on-click="(on-rename-dir-win panel)"> <data id="I3918824408" data-in-package="clog-tools" data-custom-slots="(current-dir :accessor current-dir :initform &quot;.&quot;)" data-clog-next-id="23" data-clog-title="dir-view"></data><select data-clog-type="listbox" size="4" data-clog-name="folders" style="box-sizing: content-box; position: absolute; left: 10px; top: 10px; right: 10px; height: 115px; overflow: auto;" data-on-create="(populate-dir-win panel &quot;./&quot;)" data-on-mouse-double-click="(populate-dir-win panel (value target))"></select><div data-clog-type="div" data-clog-name="divider" style="box-sizing: content-box; position: absolute; left: 10px; height: 5px; background-attachment: scroll; background-color: rgb(0, 0, 0); right: 10px; top: 166px;"></div><select data-clog-type="listbox" size="4" data-clog-name="files" style="box-sizing: content-box; position: absolute; inset: 175px 10px 40px; overflow: auto;" data-on-double-click="(on-select-dir-win panel)"></select><input type="BUTTON" value="Open" data-clog-type="fbutton" data-clog-name="open-dir-button" style="box-sizing: content-box; position: absolute; left: 10px; top: 132px; width: 70px;" data-on-click="(populate-dir-win panel (value (folders panel)))"><input type="BUTTON" value="New" data-clog-type="fbutton" data-clog-name="new-dir-button" style="box-sizing: content-box; position: absolute; left: 100px; top: 132px; width: 70px;" data-on-click="(on-new-dir-dir-win panel)"><input type="BUTTON" value="Delete" data-clog-type="fbutton" data-clog-name="del-dir-button" style="box-sizing: content-box; position: absolute; left: 190px; top: 132px; width: 70px;" data-on-click="(on-delete-dir-dir-win panel (value (folders panel)))"><input type="BUTTON" value="Rename" data-clog-type="fbutton" data-clog-name="rename-dir-button" style="box-sizing: content-box; position: absolute; left: 280px; top: 132px; width: 70px;" data-on-click="(on-rename-dir-dir-win panel (value (folders panel)))"><input type="BUTTON" value="Open" data-clog-type="fbutton" data-clog-name="open-button" style="box-sizing: content-box; position: absolute; left: 10px; bottom: 5px; width: 70px;" data-on-click="(on-select-dir-win panel)"><input type="BUTTON" value="Delete" data-clog-type="fbutton" data-clog-name="del-button" style="box-sizing: content-box; position: absolute; left: 100px; bottom: 5px; width: 70px;" data-on-click="(on-delete-dir-win panel)"><input type="BUTTON" value="Rename" data-clog-type="fbutton" data-clog-name="rename-button" style="box-sizing: content-box; position: absolute; left: 190px; bottom: 5px; width: 70px;" data-on-click="(on-rename-dir-win panel)"><input type="CHECKBOX" value="" data-clog-type="checkbox" data-clog-name="open-file-ext" style="box-sizing: content-box; position: absolute; bottom: 12px; left: 290px;"><label for="CLOGB3918824377" data-clog-type="label" data-clog-for="open-file-ext" data-clog-name="open-ext-label" style="box-sizing: content-box; position: absolute; left: 308px; bottom: 7px;">Open External</label>

View file

@ -1,7 +1,9 @@
;;;; CLOG Builder generated code - modify original clog file ;;;; CLOG Builder generated code - modify original .clog file and rerender
(in-package :clog-tools) (in-package :clog-tools)
(defclass dir-view (clog:clog-panel) (defclass dir-view (clog:clog-panel)
((rename-button :reader rename-button) ((open-ext-label :reader open-ext-label)
(open-file-ext :reader open-file-ext)
(rename-button :reader rename-button)
(del-button :reader del-button) (open-button :reader open-button) (del-button :reader del-button) (open-button :reader open-button)
(rename-dir-button :reader rename-dir-button) (rename-dir-button :reader rename-dir-button)
(del-dir-button :reader del-dir-button) (del-dir-button :reader del-dir-button)
@ -14,43 +16,54 @@
(let ((panel (let ((panel
(change-class (change-class
(clog:create-div clog-obj :content (clog:create-div clog-obj :content
"<select size=\"4\" style=\"box-sizing: content-box; position: absolute; left: 10px; top: 10px; right: 10px; height: 115px; overflow: auto;\" id=\"CLOGB3872109090\" data-clog-name=\"folders\"></select><div style=\"box-sizing: content-box; position: absolute; left: 10px; height: 5px; background-attachment: scroll; background-color: rgb(0, 0, 0); right: 10px; top: 166px;\" id=\"CLOGB3872109091\" data-clog-name=\"divider\"></div><select size=\"4\" style=\"box-sizing: content-box; position: absolute; inset: 175px 10px 40px; overflow: auto;\" id=\"CLOGB3872109092\" data-clog-name=\"files\"></select><input type=\"BUTTON\" value=\"Open\" style=\"box-sizing: content-box; position: absolute; left: 10px; top: 132px; width: 70px;\" id=\"CLOGB3872109093\" data-clog-name=\"open-dir-button\"><input type=\"BUTTON\" value=\"New\" style=\"box-sizing: content-box; position: absolute; left: 100px; top: 132px; width: 70px;\" id=\"CLOGB3872109094\" data-clog-name=\"new-dir-button\"><input type=\"BUTTON\" value=\"Delete\" style=\"box-sizing: content-box; position: absolute; left: 190px; top: 132px; width: 70px;\" id=\"CLOGB387210909815\" data-clog-name=\"del-dir-button\"><input type=\"BUTTON\" value=\"Rename\" style=\"box-sizing: content-box; position: absolute; left: 280px; top: 132px; width: 70px;\" id=\"CLOGB387211008317\" data-clog-name=\"rename-dir-button\"><input type=\"BUTTON\" value=\"Open\" style=\"box-sizing: content-box; position: absolute; left: 10px; bottom: 5px; width: 70px;\" id=\"CLOGB3872109095\" data-clog-name=\"open-button\"><input type=\"BUTTON\" value=\"Delete\" style=\"box-sizing: content-box; position: absolute; left: 100px; bottom: 5px; width: 70px;\" id=\"CLOGB3872109096\" data-clog-name=\"del-button\"><input type=\"BUTTON\" value=\"Rename\" style=\"box-sizing: content-box; position: absolute; left: 190px; bottom: 5px; width: 70px;\" id=\"CLOGB387211077419\" data-clog-name=\"rename-button\">" "<select size=\"4\" style=\"box-sizing: content-box; position: absolute; left: 10px; top: 10px; right: 10px; height: 115px; overflow: auto;\" id=\"CLOGB3918824367\" data-clog-name=\"folders\"></select><div style=\"box-sizing: content-box; position: absolute; left: 10px; height: 5px; background-attachment: scroll; background-color: rgb(0, 0, 0); right: 10px; top: 166px;\" id=\"CLOGB3918824368\" data-clog-name=\"divider\"></div><select size=\"4\" style=\"box-sizing: content-box; position: absolute; inset: 175px 10px 40px; overflow: auto;\" id=\"CLOGB3918824369\" data-clog-name=\"files\"></select><input type=\"BUTTON\" value=\"Open\" style=\"box-sizing: content-box; position: absolute; left: 10px; top: 132px; width: 70px;\" id=\"CLOGB3918824370\" data-clog-name=\"open-dir-button\"><input type=\"BUTTON\" value=\"New\" style=\"box-sizing: content-box; position: absolute; left: 100px; top: 132px; width: 70px;\" id=\"CLOGB3918824371\" data-clog-name=\"new-dir-button\"><input type=\"BUTTON\" value=\"Delete\" style=\"box-sizing: content-box; position: absolute; left: 190px; top: 132px; width: 70px;\" id=\"CLOGB3918824372\" data-clog-name=\"del-dir-button\"><input type=\"BUTTON\" value=\"Rename\" style=\"box-sizing: content-box; position: absolute; left: 280px; top: 132px; width: 70px;\" id=\"CLOGB3918824373\" data-clog-name=\"rename-dir-button\"><input type=\"BUTTON\" value=\"Open\" style=\"box-sizing: content-box; position: absolute; left: 10px; bottom: 5px; width: 70px;\" id=\"CLOGB3918824374\" data-clog-name=\"open-button\"><input type=\"BUTTON\" value=\"Delete\" style=\"box-sizing: content-box; position: absolute; left: 100px; bottom: 5px; width: 70px;\" id=\"CLOGB3918824375\" data-clog-name=\"del-button\"><input type=\"BUTTON\" value=\"Rename\" style=\"box-sizing: content-box; position: absolute; left: 190px; bottom: 5px; width: 70px;\" id=\"CLOGB3918824376\" data-clog-name=\"rename-button\"><input type=\"CHECKBOX\" value=\"\" style=\"box-sizing: content-box; position: absolute; bottom: 12px; left: 290px;\" id=\"CLOGB3918824377\" data-clog-name=\"open-file-ext\"><label for=\"CLOGB3918824377\" style=\"box-sizing: content-box; position: absolute; left: 308px; bottom: 7px;\" id=\"CLOGB3918824378\" data-clog-name=\"open-ext-label\">Open External</label>"
:hidden hidden :class class :html-id html-id :hidden hidden :class class :html-id html-id
:auto-place auto-place) :auto-place auto-place)
'dir-view))) 'dir-view)))
(setf (slot-value panel 'open-ext-label)
(attach-as-child clog-obj "CLOGB3918824378" :clog-type
'clog:clog-label :new-id t))
(setf (slot-value panel 'open-file-ext)
(attach-as-child clog-obj "CLOGB3918824377" :clog-type
'clog:clog-form-element :new-id t))
(setf (slot-value panel 'rename-button) (setf (slot-value panel 'rename-button)
(attach-as-child clog-obj "CLOGB387211077419" :clog-type (attach-as-child clog-obj "CLOGB3918824376" :clog-type
'clog:clog-form-element :new-id t)) 'clog:clog-form-element :new-id t))
(setf (slot-value panel 'del-button) (setf (slot-value panel 'del-button)
(attach-as-child clog-obj "CLOGB3872109096" :clog-type (attach-as-child clog-obj "CLOGB3918824375" :clog-type
'clog:clog-form-element :new-id t)) 'clog:clog-form-element :new-id t))
(setf (slot-value panel 'open-button) (setf (slot-value panel 'open-button)
(attach-as-child clog-obj "CLOGB3872109095" :clog-type (attach-as-child clog-obj "CLOGB3918824374" :clog-type
'clog:clog-form-element :new-id t)) 'clog:clog-form-element :new-id t))
(setf (slot-value panel 'rename-dir-button) (setf (slot-value panel 'rename-dir-button)
(attach-as-child clog-obj "CLOGB387211008317" :clog-type (attach-as-child clog-obj "CLOGB3918824373" :clog-type
'clog:clog-form-element :new-id t)) 'clog:clog-form-element :new-id t))
(setf (slot-value panel 'del-dir-button) (setf (slot-value panel 'del-dir-button)
(attach-as-child clog-obj "CLOGB387210909815" :clog-type (attach-as-child clog-obj "CLOGB3918824372" :clog-type
'clog:clog-form-element :new-id t)) 'clog:clog-form-element :new-id t))
(setf (slot-value panel 'new-dir-button) (setf (slot-value panel 'new-dir-button)
(attach-as-child clog-obj "CLOGB3872109094" :clog-type (attach-as-child clog-obj "CLOGB3918824371" :clog-type
'clog:clog-form-element :new-id t)) 'clog:clog-form-element :new-id t))
(setf (slot-value panel 'open-dir-button) (setf (slot-value panel 'open-dir-button)
(attach-as-child clog-obj "CLOGB3872109093" :clog-type (attach-as-child clog-obj "CLOGB3918824370" :clog-type
'clog:clog-form-element :new-id t)) 'clog:clog-form-element :new-id t))
(setf (slot-value panel 'files) (setf (slot-value panel 'files)
(attach-as-child clog-obj "CLOGB3872109092" :clog-type (attach-as-child clog-obj "CLOGB3918824369" :clog-type
'clog:clog-select :new-id t)) 'clog:clog-select :new-id t))
(setf (slot-value panel 'divider) (setf (slot-value panel 'divider)
(attach-as-child clog-obj "CLOGB3872109091" :clog-type (attach-as-child clog-obj "CLOGB3918824368" :clog-type
'clog:clog-div :new-id t)) 'clog:clog-div :new-id t))
(setf (slot-value panel 'folders) (setf (slot-value panel 'folders)
(attach-as-child clog-obj "CLOGB3872109090" :clog-type (attach-as-child clog-obj "CLOGB3918824367" :clog-type
'clog:clog-select :new-id t)) 'clog:clog-select :new-id t))
(let ((target (folders panel))) (let ((target (folders panel)))
(declare (ignorable target)) (declare (ignorable target))
(populate-dir-win panel "./")) (populate-dir-win panel "./"))
(let ((target (open-ext-label panel)))
(declare (ignorable target))
(setf (attribute target "for")
(clog:js-query target
"$('[data-clog-name=\\'open-file-ext\\']').attr('id')")))
(clog:set-on-mouse-double-click (folders panel) (clog:set-on-mouse-double-click (folders panel)
(lambda (target data) (lambda (target data)
(declare (ignorable target data)) (declare (ignorable target data))

7
tools/projects.clog vendored
View file

@ -1,4 +1,4 @@
<data id="I3871066023" data-in-package="clog-tools" data-custom-slots="" data-clog-next-id="45" data-clog-title="projects"></data><label for="undefined" data-clog-type="label" data-clog-for="projects-list" data-clog-name="projects-label" style="box-sizing: content-box; position: absolute; left: 5px; top: 6.99858px;">Current Project</label><select data-clog-type="dropdown" data-clog-name="project-list" style="box-sizing: content-box; position: absolute; left: 5px; top: 35px; width: 386.54px; height: 22px; bottom: 309.041px;" data-on-create="(projects-setup panel)" data-on-change="(projects-populate panel)"></select><button data-clog-type="button" data-clog-name="edit-asd" style="box-sizing: content-box; position: absolute; left: 400px; top: 32px; height: 22px; width: 90px;" data-on-click="(let ((sel (text-value (project-list panel)))) <data id="I3918817107" data-in-package="clog-tools" data-custom-slots="" data-clog-next-id="47" data-clog-title="projects"></data><label for="undefined" data-clog-type="label" data-clog-for="projects-list" data-clog-name="projects-label" style="box-sizing: content-box; position: absolute; left: 5px; top: 6.99858px;">Current Project</label><select data-clog-type="dropdown" data-clog-name="project-list" style="box-sizing: content-box; position: absolute; left: 5px; top: 35px; width: 386.54px; height: 22px; bottom: 309.041px;" data-on-create="(projects-setup panel)" data-on-change="(projects-populate panel)"></select><button data-clog-type="button" data-clog-name="edit-asd" style="box-sizing: content-box; position: absolute; left: 400px; top: 32px; height: 22px; width: 90px;" data-on-click="(let ((sel (text-value (project-list panel))))
(on-open-file panel :open-file (asdf:system-source-file (on-open-file panel :open-file (asdf:system-source-file
(asdf:find-system sel))))" title="Manualy projects .asd file">Edit .asd</button><label for="CLOGB386871257741" data-clog-type="label" data-clog-for="entry-point" data-clog-name="entry-point-label" style="box-sizing: content-box; position: absolute; left: 5px; top: 69px;">Entry Point - package:function</label><input type="TEXT" value="" data-clog-type="input" data-clog-name="entry-point" style="box-sizing: content-box; position: absolute; left: 5px; top: 94px; width: 381px; height: 22.5px;" data-on-change="(projects-entry-point-change panel)"><button data-clog-type="button" data-clog-name="run-button" style="box-sizing: content-box; position: absolute; left: 400px; top: 92px; width: 90px; height: 22.5px;" data-on-click="(projects-run panel)">Run</button><button data-clog-type="button" data-clog-name="new-project-button" style="box-sizing: content-box; position: absolute; left: 520px; top: 8px; width: 100px; height: 22px;" data-on-click="(on-new-app-template panel)" title="Create new project from template">New</button><button data-clog-type="button" data-clog-name="unload-project-button" style="box-sizing: content-box; position: absolute; left: 520px; top: 43px; width: 100px; height: 22px; bottom: 309.041px;" data-on-click="(let ((sel (text-value (project-list panel)))) (asdf:find-system sel))))" title="Manualy projects .asd file">Edit .asd</button><label for="CLOGB386871257741" data-clog-type="label" data-clog-for="entry-point" data-clog-name="entry-point-label" style="box-sizing: content-box; position: absolute; left: 5px; top: 69px;">Entry Point - package:function</label><input type="TEXT" value="" data-clog-type="input" data-clog-name="entry-point" style="box-sizing: content-box; position: absolute; left: 5px; top: 94px; width: 381px; height: 22.5px;" data-on-change="(projects-entry-point-change panel)"><button data-clog-type="button" data-clog-name="run-button" style="box-sizing: content-box; position: absolute; left: 400px; top: 92px; width: 90px; height: 22.5px;" data-on-click="(projects-run panel)">Run</button><button data-clog-type="button" data-clog-name="new-project-button" style="box-sizing: content-box; position: absolute; left: 520px; top: 8px; width: 100px; height: 22px;" data-on-click="(on-new-app-template panel)" title="Create new project from template">New</button><button data-clog-type="button" data-clog-name="unload-project-button" style="box-sizing: content-box; position: absolute; left: 520px; top: 43px; width: 100px; height: 22px; bottom: 309.041px;" data-on-click="(let ((sel (text-value (project-list panel))))
(unless (equal sel &quot;None&quot;) (unless (equal sel &quot;None&quot;)
@ -7,7 +7,7 @@
(projects-populate panel)))" title="ASDF unload project from Lisp image">Unload</button><button data-clog-type="button" data-clog-name="reload-project-button" style="box-sizing: content-box; position: absolute; left: 521px; top: 79px; width: 100px; height: 22px; bottom: 309.041px;" data-on-click="(let ((sel (text-value (project-list panel)))) (projects-populate panel)))" title="ASDF unload project from Lisp image">Unload</button><button data-clog-type="button" data-clog-name="reload-project-button" style="box-sizing: content-box; position: absolute; left: 521px; top: 79px; width: 100px; height: 22px; bottom: 309.041px;" data-on-click="(let ((sel (text-value (project-list panel))))
(unless (equal sel &quot;None&quot;) (unless (equal sel &quot;None&quot;)
(asdf:clear-system sel) (asdf:clear-system sel)
(projects-populate panel)))" title="ASDF reload project in to Lisp image">Reload</button><button data-clog-type="button" data-clog-name="rerender-button" style="box-sizing: content-box; position: absolute; left: 521px; top: 116px; width: 100px;" tabindex="0" title="Rerender all clog files to Lisp" data-on-click="(projects-rerender panel)">Rerender</button><div data-clog-type="div" data-clog-name="file-group" style="box-sizing: content-box; position: absolute; left: 0px; top: 69px; width: 512px; height: 10px;"><label for="CLOGB3868393710" data-clog-type="label" data-clog-for="runtime-list" data-clog-name="runtime-label" style="box-sizing: content-box; position: absolute; left: 5px; top: 65px;">Runtime System</label><label for="CLOGB3868452429" data-clog-type="label" data-clog-for="runtime-list" data-clog-name="dbl-click1" style="box-sizing: content-box; position: absolute; left: 5px; top: 85px;">(double click to launch)</label><select data-clog-type="listbox" size="4" data-clog-name="runtime-list" style="box-sizing: content-box; position: absolute; left: 5px; top: 115px; width: 260px; height: 196px;" data-on-double-click="(open-projects-component target (text-value (project-list panel)) target)"></select><button data-clog-type="button" data-clog-name="runtime-add-lisp" style="box-sizing: content-box; position: absolute; left: 5px; top: 320px;" data-on-click="(let ((sys (text-value (project-list panel)))) (projects-populate panel)))" title="ASDF reload project in to Lisp image">Reload</button><button data-clog-type="button" data-clog-name="rerender-button" style="box-sizing: content-box; position: absolute; left: 521px; top: 116px; width: 100px;" tabindex="0" title="Rerender all clog files to Lisp" data-on-click="(projects-rerender panel)">Rerender</button><div data-clog-type="div" data-clog-name="file-group" style="box-sizing: content-box; position: absolute; left: 0px; top: 69px; width: 512px; height: 10px;"><label for="CLOGB3868393710" data-clog-type="label" data-clog-for="runtime-list" data-clog-name="runtime-label" style="box-sizing: content-box; position: absolute; left: 5px; top: 65px;">Runtime System</label><label for="CLOGB3868452429" data-clog-type="label" data-clog-for="runtime-list" data-clog-name="dbl-click1" style="box-sizing: content-box; position: absolute; left: 5px; top: 85px;">(double click to launch)</label><select data-clog-type="listbox" size="4" data-clog-name="runtime-list" style="box-sizing: content-box; position: absolute; left: 5px; top: 115px; width: 260px; height: 196px;" data-on-double-click="(open-projects-component target panel (text-value (project-list panel)) target)"></select><button data-clog-type="button" data-clog-name="runtime-add-lisp" style="box-sizing: content-box; position: absolute; left: 5px; top: 320px;" data-on-click="(let ((sys (text-value (project-list panel))))
(projects-add-lisp panel sys))">Add .lisp</button><button data-clog-type="button" data-clog-name="runtime-delete" style="box-sizing: content-box; position: absolute; left: 93px; top: 320px; width: 65px; height: 22px;" data-on-click="(let ((sys (text-value (project-list panel))) (projects-add-lisp panel sys))">Add .lisp</button><button data-clog-type="button" data-clog-name="runtime-delete" style="box-sizing: content-box; position: absolute; left: 93px; top: 320px; width: 65px; height: 22px;" data-on-click="(let ((sys (text-value (project-list panel)))
(file (select-text (runtime-list panel)))) (file (select-text (runtime-list panel))))
(unless (equal file &quot;&quot;) (unless (equal file &quot;&quot;)
@ -17,7 +17,7 @@
(projects-add-dep panel sys))">Add</button><button data-clog-type="button" data-clog-name="runtime-del-dep" style="box-sizing: content-box; position: absolute; left: 95px; top: 480px; width: 65px; height: 22px;" data-on-click="(let ((sys (text-value (project-list panel))) (projects-add-dep panel sys))">Add</button><button data-clog-type="button" data-clog-name="runtime-del-dep" style="box-sizing: content-box; position: absolute; left: 95px; top: 480px; width: 65px; height: 22px;" data-on-click="(let ((sys (text-value (project-list panel)))
(file (select-text (runtime-deps panel)))) (file (select-text (runtime-deps panel))))
(remove-dep-from-defsystem sys file) (remove-dep-from-defsystem sys file)
(projects-populate panel))">Remove</button><label for="CLOGB3868393704" data-clog-type="label" data-clog-for="designtime-list" data-clog-name="designtime-label" style="box-sizing: content-box; position: absolute; left: 290.007px; top: 65px;">Design Time System (/tools)</label><select data-clog-type="listbox" size="4" data-clog-name="designtime-list" style="box-sizing: content-box; position: absolute; left: 290px; top: 115px; width: 265px; height: 195.545px;" data-on-double-click="(open-projects-component target (projects-populate panel))">Remove</button><label for="CLOGB3868393704" data-clog-type="label" data-clog-for="designtime-list" data-clog-name="designtime-label" style="box-sizing: content-box; position: absolute; left: 290.007px; top: 65px;">Design Time System (/tools)</label><select data-clog-type="listbox" size="4" data-clog-name="designtime-list" style="box-sizing: content-box; position: absolute; left: 290px; top: 115px; width: 265px; height: 195.545px;" data-on-double-click="(open-projects-component target panel
(format nil &quot;~A/tools&quot; (text-value (project-list panel))) target)"></select><button data-clog-type="button" data-clog-name="designtime-add-clog" style="box-sizing: content-box; position: absolute; left: 290px; top: 320px;" data-on-click="(let ((sys (text-value (project-list panel)))) (format nil &quot;~A/tools&quot; (text-value (project-list panel))) target)"></select><button data-clog-type="button" data-clog-name="designtime-add-clog" style="box-sizing: content-box; position: absolute; left: 290px; top: 320px;" data-on-click="(let ((sys (text-value (project-list panel))))
(projects-add-clog panel sys)) (projects-add-clog panel sys))
">Add .clog</button><button data-clog-type="button" data-clog-name="designtime-add-lisp" style="box-sizing: content-box; position: absolute; left: 386px; top: 320px;" data-on-click="(let ((sys (format nil &quot;~A/tools&quot; (text-value (project-list panel))))) ">Add .clog</button><button data-clog-type="button" data-clog-name="designtime-add-lisp" style="box-sizing: content-box; position: absolute; left: 386px; top: 320px;" data-on-click="(let ((sys (format nil &quot;~A/tools&quot; (text-value (project-list panel)))))
@ -37,3 +37,4 @@
(projects-populate panel))">Remove</button><button data-clog-type="button" data-clog-name="design-plugin" style="box-sizing: content-box; position: absolute; left: 470px; top: 480px; width: 65px; height: 22px;" data-on-click="(let ((sys (text-value (project-list panel)))) (projects-populate panel))">Remove</button><button data-clog-type="button" data-clog-name="design-plugin" style="box-sizing: content-box; position: absolute; left: 470px; top: 480px; width: 65px; height: 22px;" data-on-click="(let ((sys (text-value (project-list panel))))
(projects-add-plugin panel sys)) (projects-add-plugin panel sys))
">Plugin</button></div> ">Plugin</button></div>
<label for="CLOGB391881683346" data-clog-type="label" data-clog-for="open-ext" data-clog-name="ext-win-label" style="box-sizing: content-box; position: absolute; left: 531px; top: 151px;" class="">Open External</label><input type="CHECKBOX" value="" data-clog-type="checkbox" data-clog-name="open-ext" style="box-sizing: content-box; position: absolute; left: 513px; top: 155px;">

File diff suppressed because one or more lines are too long