When the user specifies a different type in this dialog, the focus moves to the text input pane:
(let* ((tp (make-instance
'capi:text-input-pane
:text ""
:change-callback
:redisplay-interface
:visible-min-width
'(:character 30)))
(rp (make-instance
'capi:radio-button-panel
:items '(number string)
:selection 1
:print-function
'string-capitalize
:layout-class
'capi:column-layout
:callback-type :none
:selection-callback
(lambda ()
(capi:set-pane-focus tp)))))
(capi:popup-confirmer
(make-instance 'capi:row-layout
:description
(list tp rp))
"Specify type and new value for attribute"
:ok-check
(lambda (layout)
(declare (ignore layout))
(let ((txt (capi:text-input-pane-text tp)))
(plusp (length txt))))
:ok-function
(lambda (layout)
(declare (ignore layout))
(list (capi:text-input-pane-text tp)
(capi:choice-selected-item rp)))))