Searches a list-panel.
list-panel-search-with-function list-panel function arg &key start-index wrap-around reset-time
A list-panel.
A function taking two arguments. The first is arg , the second is an item in list-panel .
Any Lisp object.
An integer, default 0.
A real number. The default is an internal value which can be set by set-list-panel-keyboard-search-reset-time.
A boolean, default t
.
The function list-panel-search-with-function
searches
list-panel
using
function
. list-panel-search-with-function
is intended to simplify the implementation of the
keyboard-search-callback
of list-panel.
list-panel-search-with-function
searches
list-panel
for a match. It applies
function
to each item and
arg
, until
function
returns non-nil.
When function returns non-nil, list-panel-search-with-function returns three values: the index of the item, arg , and reset-time .
The search starts at
start-index
if supplied, and at 0 otherwise. When the search reaches the end of the list panel and it did not start from 0, it wraps around to the beginning, unless
wrap-around
is supplied as nil
. The default value of
wrap-around
is t
.
(defun string-equal-prefix (string item)
(let* ((start 0)
(len (length item))
(end (+ start (length string))))
(and (>= len end )
(string-equal string item
:start2 start
:end2 end))))
(capi:contain
(make-instance
'capi:list-panel
:items '("ae" "af" "bb" "cc")
:keyboard-search-callback
#'(lambda (pane string position)
(capi:list-panel-search-with-function
pane
'string-equal-prefix ; or 'string-not-greaterp
string
:start position
:reset-time 1
:wrap-around t))))
Pressing "a" slowly cycles between "ae" and "af". Running the same example with string-not-greaterp
instead causes "a" to cycle around all of the items.
CAPI User Guide and Reference Manual (Windows version) - 3 Aug 2017