diff --git a/clog.asd b/clog.asd
index 1a9a54b..6eac9dd 100644
--- a/clog.asd
+++ b/clog.asd
@@ -63,6 +63,7 @@
(:file "systems")
(:file "sys-browser")
(:file "projects")
+ (:file "project-directory")
(:file "clog-builder-repl")
(:file "dir-view")
;; clog-builder code
diff --git a/tools/clog-builder-templates.lisp b/tools/clog-builder-templates.lisp
index d2eddf6..9e1de89 100644
--- a/tools/clog-builder-templates.lisp
+++ b/tools/clog-builder-templates.lisp
@@ -13,31 +13,34 @@
(www-dir (format nil "~A~A"
(asdf:system-source-directory :clog)
(getf tmpl-rec :www))))
- (setf (hiddenp panel) t)
+ (setf (hiddenp (win panel)) t)
(input-dialog
(win panel) "Enter new system name:"
(lambda (sys-name)
(cond (sys-name
- (let ((fname (if (uiop:directory-exists-p #P"~/common-lisp/")
- #P"~/common-lisp/"
- (car ql:*local-project-directories*))))
- (server-file-dialog
- (win panel) "Output Directory" fname
- (lambda (filename)
- (cond (filename
- (cond ((uiop:directory-exists-p (format nil "~A~A" filename sys-name))
- (clog-gui:alert-toast (win panel) "Cancel" "Canceled - Project directory exists")
- (window-close (win panel)))
+ (let* ((pwin (create-gui-window panel :title "Local Project Directory"
+ :width 500 :height 250))
+ (prjs (create-project-dir (window-content pwin))))
+ (window-center pwin)
+ (setf (on-done prjs)
+ (lambda (obj)
+ (declare (ignore obj))
+ (let ((filename (value (project-list prjs))))
+ (window-close pwin)
+ (cond (filename
+ (cond ((uiop:directory-exists-p (format nil "~A~A" filename sys-name))
+ (clog-gui:alert-toast (win panel) "Cancel" "Canceled - Project directory exists")
+ (window-close (win panel)))
+ (t
+ (template-copy sys-name start-dir filename :panel (window-content (win panel)))
+ (when (getf tmpl-rec :www)
+ (template-copy sys-name www-dir filename :panel (window-content (win panel))))
+ (asdf:clear-source-registry)
+ (when (project-win app)
+ (clog-gui:window-close (project-win app)))
+ (on-show-project panel :project sys-name)
+ (create-div (window-content (win panel)) :content "
done."))))
(t
- (template-copy sys-name start-dir filename :panel (window-content (win panel)))
- (when (getf tmpl-rec :www)
- (template-copy sys-name www-dir filename :panel (window-content (win panel))))
- (asdf:clear-source-registry)
- (when (project-win app)
- (clog-gui:window-close (project-win app)))
- (on-show-project panel :project sys-name)
- (create-div (window-content (win panel)) :content "
done."))))
- (t
- (window-close (win panel))))))))
+ (window-close (win panel)))))))))
(t
(window-close (win panel))))))))
diff --git a/tools/clog-builder.lisp b/tools/clog-builder.lisp
index 5fce4fe..58b3f66 100644
--- a/tools/clog-builder.lisp
+++ b/tools/clog-builder.lisp
@@ -1993,7 +1993,8 @@ It parse the string TEXT without using READ functions."
(save obj nil))
(t
(setf is-dirty nil)
- (window-close win)))))
+ (window-close win))))
+ :ok-text "Yes" :cancel-text "No")
nil)
(t
t))))
@@ -2689,7 +2690,8 @@ It parse the string TEXT without using READ functions."
(setf is-dirty nil)
(when result
(save obj nil))
- (window-close win)))
+ (window-close win))
+ :ok-text "Yes" :cancel-text "No")
nil)
(t
t))))
diff --git a/tools/project-directory.clog b/tools/project-directory.clog
new file mode 100644
index 0000000..d8d9c85
--- /dev/null
+++ b/tools/project-directory.clog
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/tools/project-directory.lisp b/tools/project-directory.lisp
new file mode 100644
index 0000000..b32b395
--- /dev/null
+++ b/tools/project-directory.lisp
@@ -0,0 +1,39 @@
+;;;; CLOG Builder generated code - modify original clog file
+(in-package :clog-tools)
+(defclass project-dir (clog:clog-panel)
+ ((select-button :reader select-button)
+ (project-list :reader project-list) (frame :reader frame)
+ (on-done :accessor on-done :initform nil)))
+(defun create-project-dir
+ (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)
+ 'project-dir)))
+ (setf (slot-value panel 'select-button)
+ (attach-as-child clog-obj "CLOGB3871639551" :clog-type
+ 'clog:clog-button :new-id t))
+ (setf (slot-value panel 'project-list)
+ (attach-as-child clog-obj "CLOGB3871639550" :clog-type
+ 'clog:clog-select :new-id t))
+ (setf (slot-value panel 'frame)
+ (attach-as-child clog-obj "CLOGB3871639549" :clog-type
+ 'clog:clog-div :new-id t))
+ (let ((target (project-list panel)))
+ (declare (ignorable target))
+ (add-select-options (project-list panel)
+ quicklisp-client:*local-project-directories*)
+ (setf (value (project-list panel))
+ (car quicklisp-client:*local-project-directories*)))
+ (clog:set-on-double-click (project-list panel)
+ (lambda (target)
+ (declare (ignorable target))
+ (funcall (on-done panel) panel)))
+ (clog:set-on-click (select-button panel)
+ (lambda (target)
+ (declare (ignorable target))
+ (funcall (on-done panel) panel)))
+ panel))
\ No newline at end of file