run support on projects

This commit is contained in:
David Botton 2022-08-05 15:10:05 -04:00
parent 9c3274fca4
commit 7fd0d6f844
3 changed files with 158 additions and 119 deletions

View file

@ -1275,8 +1275,8 @@ of controls and double click to select control."
(if (project-win app)
(window-focus (project-win app))
(let* ((win (create-gui-window obj :title "Project Window"
:top 100 :left 232
:width 643 :height 560
:top 60 :left 232
:width 643 :height 625
:has-pinner t :client-movement t)))
(create-projects (window-content win))
(setf (project-win app) win)
@ -2563,6 +2563,16 @@ of controls and double click to select control."
(t
(setf (text-value (project-list panel)) "None")))))
(defun projects-run (panel)
(let ((val (text-value (entry-point panel))))
(unless (equal val "")
(let ((result (capture-eval (format nil "(~A)" val) :clog-obj panel
:eval-in-package "clog-user")))
(clog-web-alert (connection-body panel) "Result"
(format nil "~&result: ~A" result)
:color-class "w3-green"
:time-out 3)))))
(defun projects-populate (panel)
(let ((app (connection-data-item panel "builder-app-data"))
(already (asdf/operate:already-loaded-systems))
@ -2588,6 +2598,11 @@ of controls and double click to select control."
sel))
(when (current-project app)
(cond ((member sel already :test #'equal)
;; entry point
(setf (text-value (entry-point panel))
(or (asdf/system:component-entry-point
(asdf:find-system sel))
""))
;; fill runtime
(dolist (n (asdf:module-components
(asdf:find-system sel)))

View file

@ -1,13 +1,22 @@
<data id="I3868634961" data-in-package="clog-tools" data-custom-slots="" data-clog-next-id="39" 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="I3868715283" data-in-package="clog-tools" data-custom-slots="" data-clog-next-id="43" 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
(asdf:find-system sel))))">Edit .asd</button><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><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><label for="CLOGB3868452430" data-clog-type="label" data-clog-for="designtime-list" data-clog-name="dbl-click2" style="box-sizing: content-box; position: absolute; left: 290px; 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><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
(format nil &quot;~A/tools&quot; (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))))
(asdf:find-system sel))))">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;" readonly="readonly"><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)">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:clear-system sel)
(setf (text-value (project-list panel)) &quot;None&quot;)
(projects-populate panel))">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))))
(asdf:clear-system sel)
(projects-populate panel))">Reload</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-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: 95px; top: 320px; width: 65px; height: 22px;" data-on-click="(let ((sys (text-value (project-list panel)))
(file (select-text (runtime-list panel))))
(unless (equal file &quot;&quot;)
(setf file (subseq file 0 (- (length file) 5)))
(remove-file-from-defsystem sys file :file)
(projects-populate panel)))">Remove</button><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-populate panel)))">Remove</button><label for="CLOGB3868619266" data-clog-type="label" data-clog-for="runtime-deps" data-clog-name="runtime-deps-label" style="box-sizing: content-box; position: absolute; left: 5px; top: 365px;">Runtime Dependecies</label><select data-clog-type="listbox" size="4" data-clog-name="runtime-deps" style="box-sizing: content-box; position: absolute; left: 5px; top: 395px; width: 260px; height: 75px;"></select><button data-clog-type="button" data-clog-name="runtime-add-dep" style="box-sizing: content-box; position: absolute; left: 5px; top: 480px; width: 65px;" 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))))
(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><label for="CLOGB3868452430" data-clog-type="label" data-clog-for="designtime-list" data-clog-name="dbl-click2" style="box-sizing: content-box; position: absolute; left: 290px; top: 85px;">(double click to launch)</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
(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))
">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)))))
(projects-add-lisp panel sys))">Add .lisp</button><button data-clog-type="button" data-clog-name="designtime-delete" style="box-sizing: content-box; position: absolute; left: 478px; top: 320px; width: 65px; height: 22px;" data-on-click="(let ((sys (format nil &quot;~A/tools&quot; (text-value (project-list panel))))
@ -19,19 +28,10 @@
(remove-file-from-defsystem sys file (if (equalp ext &quot;.clog&quot;)
:clog-file
:file))
(projects-populate panel)))">Remove</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)">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:clear-system sel)
(setf (text-value (project-list panel)) &quot;None&quot;)
(projects-populate panel))">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))))
(asdf:clear-system sel)
(projects-populate panel))">Reload</button><label for="CLOGB3868619266" data-clog-type="label" data-clog-for="runtime-deps" data-clog-name="runtime-deps-label" style="box-sizing: content-box; position: absolute; left: 5px; top: 365px;">Runtime Dependecies</label><select data-clog-type="listbox" size="4" data-clog-name="runtime-deps" style="box-sizing: content-box; position: absolute; left: 5px; top: 395px; width: 260px; height: 75px;"></select><label for="CLOGB3868619268" data-clog-type="label" data-clog-for="design-deps" data-clog-name="design-deps-label" style="box-sizing: content-box; position: absolute; left: 290px; top: 365px;">Design Dependecies</label><select data-clog-type="listbox" size="4" data-clog-name="design-deps" style="box-sizing: content-box; position: absolute; left: 290px; top: 395px; width: 263.358px; height: 75px;"></select><button data-clog-type="button" data-clog-name="runtime-add-dep" style="box-sizing: content-box; position: absolute; left: 5px; top: 480px; width: 65px;" 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))))
(remove-dep-from-defsystem sys file)
(projects-populate panel))">Remove</button><button data-clog-type="button" data-clog-name="design-add-dep" style="box-sizing: content-box; position: absolute; left: 290px; top: 480px; width: 65px; height: 22px;" data-on-click="(let ((sys (format nil &quot;~A/tools&quot; (text-value (project-list panel)))))
(projects-populate panel)))">Remove</button><label for="CLOGB3868619268" data-clog-type="label" data-clog-for="design-deps" data-clog-name="design-deps-label" style="box-sizing: content-box; position: absolute; left: 290px; top: 365px;">Design Dependecies</label><select data-clog-type="listbox" size="4" data-clog-name="design-deps" style="box-sizing: content-box; position: absolute; left: 290px; top: 395px; width: 263.358px; height: 75px;"></select><button data-clog-type="button" data-clog-name="design-add-dep" style="box-sizing: content-box; position: absolute; left: 290px; top: 480px; width: 65px; height: 22px;" data-on-click="(let ((sys (format nil &quot;~A/tools&quot; (text-value (project-list panel)))))
(projects-add-dep panel sys))">Add</button><button data-clog-type="button" data-clog-name="design-del-dep" style="box-sizing: content-box; position: absolute; left: 380px; top: 480px; width: 65px; height: 22px;" data-on-click="(let ((sys (format nil &quot;~A/tools&quot; (text-value (project-list panel))))
(file (select-text (design-deps panel))))
(remove-dep-from-defsystem sys file)
(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))
">Plugin</button>
">Plugin</button></div>

File diff suppressed because one or more lines are too long