added keyboard shortcuts for cut/copy/paste

This commit is contained in:
David Botton 2022-06-23 23:57:26 -04:00
parent 5f0aa0341f
commit 94b3e6768c

View file

@ -1034,7 +1034,7 @@ of controls and double click to select control."
(setf-next-id content 1)
(setf (overflow content) :auto)
(init-control-list app panel-id)
;; setup panel window
;; Setup panel window
(let ((panel-name (format nil "panel-~A" (incf (next-panel-id app)))))
(setf (window-title win) panel-name)
(setf (attribute content "data-clog-name") panel-name))
@ -1064,7 +1064,8 @@ of controls and double click to select control."
(declare (ignore obj))
(on-populate-control-properties-win content :win win)))
;; setup tool bar events
(set-on-click btn-copy (lambda (obj)
(flet (;; copy
(copy (obj)
(when (current-control app)
(maphash
(lambda (html-id control)
@ -1087,8 +1088,9 @@ of controls and double click to select control."
(lambda (html-id control)
(declare (ignore html-id))
(place-after control (get-placer control)))
(get-control-list app panel-id)))))
(set-on-click btn-paste (lambda (obj)
(get-control-list app panel-id))))
;; paste
(paste (obj)
(bordeaux-threads:with-lock-held ((new-control-lock app))
(let ((buf (or (system-clipboard-read obj)
(copy-buf app))))
@ -1109,13 +1111,23 @@ of controls and double click to select control."
(funcall (getf cr :on-load) control cr)))
(setup-control content control :win win)
(select-control control)
(on-populate-control-list-win content)))))))
(set-on-click btn-del (lambda (obj)
(on-populate-control-list-win content))))))
;; delete
(del (obj)
(declare (ignore obj))
(when (current-control app)
(delete-current-control app panel-id (html-id (current-control app)))
(on-populate-control-properties-win content :win win)
(on-populate-control-list-win content))))
;; set up del/cut/copy/paste handlers
(set-on-copy content #'copy)
(set-on-click btn-copy #'copy)
(set-on-paste content #'paste)
(set-on-click btn-paste #'paste)
(set-on-click btn-del #'del)
(set-on-cut content (lambda (obj)
(copy obj)
(del obj))))
(set-on-click btn-sim (lambda (obj)
(declare (ignore obj))
(cond (in-simulation
@ -1282,7 +1294,8 @@ of controls and double click to select control."
(declare (ignore html-id))
(place-after control (get-placer control)))
(get-control-list app panel-id)))))))
(set-on-click btn-copy (lambda (obj)
(flet (;; copy
(copy (obj)
(when (current-control app)
(maphash
(lambda (html-id control)
@ -1305,8 +1318,9 @@ of controls and double click to select control."
(lambda (html-id control)
(declare (ignore html-id))
(place-after control (get-placer control)))
(get-control-list app panel-id)))))
(set-on-click btn-paste (lambda (obj)
(get-control-list app panel-id))))
;; paste
(paste (obj)
(bordeaux-threads:with-lock-held ((new-control-lock app))
(let ((buf (or (system-clipboard-read obj)
(copy-buf app))))
@ -1327,13 +1341,23 @@ of controls and double click to select control."
(funcall (getf cr :on-load) control cr)))
(setup-control content control :win win)
(select-control control)
(on-populate-control-list-win content)))))))
(set-on-click btn-del (lambda (obj)
(on-populate-control-list-win content))))))
;; delete
(del (obj)
(declare (ignore obj))
(when (current-control app)
(delete-current-control app panel-id (html-id (current-control app)))
(on-populate-control-properties-win content :win win)
(on-populate-control-list-win content))))
;; set up del/cut/copy/paste handlers
(set-on-copy content #'copy)
(set-on-click btn-copy #'copy)
(set-on-paste content #'paste)
(set-on-click btn-paste #'paste)
(set-on-click btn-del #'del)
(set-on-cut content (lambda (obj)
(copy obj)
(del obj))))
(set-on-click btn-sim (lambda (obj)
(declare (ignore obj))
(cond (in-simulation