Let us create three more buttons:
(setf file-buttons
      (loop for image in file-images
            collect
            (make-instance 'toolbar-button
                           :image image
                           :name image
                           :text
                           (string-capitalize
                            (substitute #\Space #\-
                                        (string image))))))
and then include them along with the print button defined in 9.1 Creating a toolbar button:
(display (make-instance 'interface :toolbar-items (append file-buttons (list print-button))))
Remember that each instance of a toolbar button must not be used in more than one place at a time.
It is possible to include to include toolbar buttons which are not initially displayed, but which are available for the user to add. For the details, see 9.6 Modifying toolbars.
The toolbar-component class lets you group related buttons together in a toolbar. This allows similar buttons to:
Toolbar components are actually choices similar to button panels. By default, their interaction is :single-selection.
We can amend our example using toolbar components to group the file buttons separately from the print button:
(display
 (make-instance
  'interface
  :toolbar-items (list
                  (make-instance 'toolbar-component
                                 :items file-buttons)
                  (make-instance 'toolbar-component
                                 :items (list print-button)))
  :visible-min-width 200))
A toolbar-component may contain arbitrary Lisp objects as items. For each such object, a toolbar button is automatically created, using the appropriate elements of the component's images, names, texts and tooltips lists.
(display
 (make-instance
  'interface
  :toolbar-items
  (list (make-instance 'toolbar-component
                       :items file-images
                       :images file-images
                       :names file-images
                       :texts
                       (mapcar 'string-capitalize file-images)
                       :tooltips
                       (mapcar 'string-downcase file-images)
                       :selection-callback
                       (lambda (data interface)
                          (display-message "callback data ~S" data))
                       ))))
Rather than selection-callback above, you could supply callbacks to specify callback functions for each button.
CAPI User Guide and Reference Manual (Unix version) - 01 Dec 2021 19:32:36