mirror of
https://github.com/rabbibotton/clog.git
synced 2025-12-06 02:30:42 -08:00
project render
This commit is contained in:
parent
0c744b3a02
commit
d05269e0d3
4 changed files with 83 additions and 38 deletions
|
|
@ -34,5 +34,3 @@
|
|||
(let ((name (asdf:component-relative-pathname n))
|
||||
(path (asdf:component-pathname n)))
|
||||
(add-select-option (files panel) path name))))
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -42,6 +42,44 @@
|
|||
(dolist (n (reverse sys-list))
|
||||
(pprint n s))))))
|
||||
|
||||
(defun projects-rerender (panel)
|
||||
(let* ((app (connection-data-item panel "builder-app-data"))
|
||||
(sel (text-value (project-list panel)))
|
||||
(sys (asdf:find-system (format nil "~A/tools" sel))))
|
||||
(dolist (n (asdf:module-components sys))
|
||||
(let ((name (format nil "~A" (asdf:component-relative-pathname n)))
|
||||
(file-name (asdf:component-pathname n)))
|
||||
(when (and (> (length name) 5)
|
||||
(equal (subseq name (- (length name) 5)) ".clog"))
|
||||
(let* ((win (create-gui-window panel :top 40 :left 225
|
||||
:width 645 :height 430))
|
||||
(box (create-panel-box-layout (window-content win)
|
||||
:left-width 0 :right-width 0
|
||||
:top-height 33 :bottom-height 0))
|
||||
(content (center-panel box))
|
||||
(panel-id (html-id content))
|
||||
(render-file-name (format nil "~A~A.lisp"
|
||||
(directory-namestring file-name)
|
||||
(pathname-name file-name))))
|
||||
(setf-next-id content 1)
|
||||
(setf (overflow content) :auto)
|
||||
(init-control-list app panel-id)
|
||||
(clrhash (get-control-list app panel-id))
|
||||
;; preset in case of empty clog file
|
||||
(setf (attribute content "data-clog-name") "empty-clog-file")
|
||||
(setf (attribute content "data-clog-type") "clog-data")
|
||||
(setf (attribute content "data-in-package") "clog-user")
|
||||
(setf (attribute content "data-custom-slots") "")
|
||||
(setf (inner-html content)
|
||||
(or (read-file file-name)
|
||||
""))
|
||||
(on-populate-loaded-window content :win win)
|
||||
(setf (window-title win) (attribute content "data-clog-name"))
|
||||
(write-file (render-clog-code content (bottom-panel box))
|
||||
render-file-name)
|
||||
(window-close win)
|
||||
(format t "~A -> ~A~%" file-name render-file-name)))))))
|
||||
|
||||
(defun projects-populate (panel)
|
||||
(let ((app (connection-data-item panel "builder-app-data"))
|
||||
(already (asdf/operate:already-loaded-systems))
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
<data id="I3868724677" 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))))
|
||||
<data id="I3870693089" data-in-package="clog-tools" data-custom-slots="" data-clog-next-id="44" 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="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)">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))))
|
||||
(asdf:clear-system sel)
|
||||
(setf (text-value (project-list panel)) "None")
|
||||
(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))))
|
||||
(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))))
|
||||
(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-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-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 "")
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue