diff --git a/source/clog-gui.lisp b/source/clog-gui.lisp
index ab2621e..4934af1 100644
--- a/source/clog-gui.lisp
+++ b/source/clog-gui.lisp
@@ -1209,8 +1209,6 @@ interactions. Use window-end-modal to undo."))
;; Implementation - Dialog Boxes
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; to add - form by list
-
(defun alert-dialog (obj content &key (modal t)
(title "About")
(left nil) (top nil)
@@ -1246,6 +1244,7 @@ interactions. Use window-end-modal to undo."))
(setf (visiblep win) t)
(when modal
(window-make-modal win))
+ (focus btn)
(set-on-click btn (lambda (obj)
(declare (ignore obj))
(window-end-modal win)
@@ -1301,6 +1300,7 @@ Calls on-input with input box contents or nil if canceled."
(setf (visiblep win) t)
(when modal
(window-make-modal win))
+ (focus input)
(set-on-click cancel (lambda (obj)
(declare (ignore obj))
(window-close win))
@@ -1363,6 +1363,7 @@ Calls on-input with t if confirmed or nil if canceled."
(setf (visiblep win) t)
(when modal
(window-make-modal win))
+ (focus ok)
(set-on-click cancel (lambda (obj)
(declare (ignore obj))
(window-close win))
@@ -1417,7 +1418,7 @@ with a-list of field name to value if confirmed or nil if canceled."
:title title
:content (format nil
"
-
~A
+~A
-" content
+" (if content
+ (format nil "~A
" content)
+ "")
fls
html-id ok-text ; ok
html-id cancel-text) ; cancel
@@ -1447,6 +1450,9 @@ with a-list of field name to value if confirmed or nil if canceled."
(setf (visiblep win) t)
(when modal
(window-make-modal win))
+ (js-execute obj (format nil "$('[name=~A-~A]').focus()"
+ html-id
+ (cadar fields)))
(set-on-click cancel (lambda (obj)
(declare (ignore obj))
(window-close win))
diff --git a/tools/clog-db-admin.lisp b/tools/clog-db-admin.lisp
index 2089824..085eae8 100644
--- a/tools/clog-db-admin.lisp
+++ b/tools/clog-db-admin.lisp
@@ -14,89 +14,38 @@
:documentation "Access to database connection")))
(defun on-db-open (obj)
- (let* ((app (connection-data-item obj "app-data"))
- (win (create-gui-window obj
- :title "Open Database"
- :content
-""
- :width 400
- :height 450
- :hidden t)))
- (window-center win)
- (setf (visiblep win) t)
- (set-on-click (attach-as-child obj "odb-open")
- (lambda (obj)
- (format t "open db : ~A" (name-value obj "db-name"))
- (setf (db-connection app)
- (sqlite:connect (name-value obj "db-name")))
- (setf (title (html-document (body app)))
- (format nil "CLOG DB Admin - ~A" (name-value obj "db-name")))
- (window-close win))
- :one-time t)
-
- (set-on-click (attach-as-child obj "odb-cancel") (lambda (obj)
- (window-close win)))))
+ (let* ((app (connection-data-item obj "app-data")))
+ (form-dialog obj nil
+ '(("Database Type" :db-type (("SQLite3" :sqlite3)))
+ ("Database Name" :db-name))
+ (lambda (results)
+ (when results
+ (format t "open db : ~A" (cadr (assoc :db-name results)))
+ (setf (db-connection app)
+ (sqlite:connect (cadr (assoc :db-name results))))
+ (setf (title (html-document (body app)))
+ (format nil "CLOG DB Admin - ~A" (cadr (assoc :db-name results))))))
+ :title "Open Database" :height 250)))
+
(defun on-db-close (obj)
(let ((app (connection-data-item obj "app-data")))
(when (db-connection app)
- (sqlite:disconnect (db-connection app)))
+ (sqlite:disconnect (db-connection app))
+ (setf (db-connection app) nil))
(print "db disconnected")
(setf (title (html-document (body app))) "CLOG DB Admin")))
(defun on-query-results (obj)
- (let ((app (connection-data-item obj "app-data"))
- (win (create-gui-window obj
- :title "Enter query:"
- :content
-""
- :width 400
- :height 200
- :hidden t)))
- (window-center win)
- (setf (visiblep win) t)
- (set-on-click (attach-as-child obj "odb-open")
- (lambda (obj)
- (format t "open query : ~A~%~%" (name-value obj "db-query"))
+ (let ((app (connection-data-item obj "app-data")))
+ (form-dialog obj nil
+ '(("Query" :db-query))
+ (lambda (results)
+ (when results
+ (format t "open query : ~A~%~%" (cadr (assoc :db-query results)))
(print (sqlite:execute-to-list
(db-connection app)
- (name-value obj "db-query")))
- (window-close win)))
-
- (set-on-click (attach-as-child obj "odb-cancel") (lambda (obj)
- (window-close win)))))
+ (cadr (assoc :db-query results))))))
+ :title "Run Database Query" :height 200)))
(defun on-help-about (obj)
(let ((about (create-gui-window obj
diff --git a/tutorial/22-tutorial.lisp b/tutorial/22-tutorial.lisp
index 9be3c01..0e6314f 100644
--- a/tutorial/22-tutorial.lisp
+++ b/tutorial/22-tutorial.lisp
@@ -83,7 +83,8 @@
("State" "st")
("Zip" "zip"))
(lambda (results)
- (alert-dialog obj results))))
+ (alert-dialog obj results))
+ :height 550))
(defun on-help-about (obj)
(let* ((about (create-gui-window obj