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
~A
@@ -1425,7 +1426,9 @@ with a-list of field name to value if confirmed or nil if canceled."
-
" 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