66 lines
1.7 KiB
Racket
66 lines
1.7 KiB
Racket
#lang scheme/base
|
|
|
|
(require mzlib/unit
|
|
scheme/gui/base
|
|
"hierlist/hierlist-sig.rkt"
|
|
"hierlist/hierlist-unit.rkt")
|
|
|
|
(define-values/invoke-unit/infer hierlist@)
|
|
|
|
(provide-signature-elements hierlist^)
|
|
|
|
#|
|
|
|
|
;; Testing
|
|
(define f (make-object frame% "test"))
|
|
(define p (make-object horizontal-panel% f))
|
|
(define c (make-object (class hierarchical-list% args
|
|
(override
|
|
[on-item-opened
|
|
(lambda (i)
|
|
(let ([f (send i user-data)])
|
|
(when f (f i))))]
|
|
[on-select
|
|
(lambda (i)
|
|
(printf "Selected: ~a\n"
|
|
(if i
|
|
(send (send i get-editor) get-flattened-text)
|
|
i)))]
|
|
[on-double-select
|
|
(lambda (s)
|
|
(printf "Double-click: ~a\n"
|
|
(send (send s get-editor) get-flattened-text)))])
|
|
(sequence (apply super-init args)))
|
|
p))
|
|
|
|
(define a (send c new-list))
|
|
(send (send a get-editor) insert "First Item: List")
|
|
(send (send (send a new-item) get-editor) insert "Sub1")
|
|
(send (send (send a new-item) get-editor) insert "Sub2")
|
|
(define a.1 (send a new-list))
|
|
(send (send a.1 get-editor) insert "Deeper List")
|
|
(send (send (send a.1 new-item) get-editor) insert "Way Down")
|
|
|
|
(define b (send c new-item))
|
|
(send (send b get-editor) insert "Second Item")
|
|
|
|
(define d (send c new-list))
|
|
(send (send d get-editor) insert "dynamic")
|
|
(send d user-data (lambda (d)
|
|
(time (let loop ([i 30])
|
|
(unless (zero? i)
|
|
(send (send (send d new-item) get-editor) insert (number->string i))
|
|
(loop (sub1 i)))))))
|
|
|
|
(define x (send c new-list))
|
|
(send (send x get-editor) insert "x")
|
|
|
|
(define y (send c new-item))
|
|
(send (send y get-editor) insert "y")
|
|
|
|
(send f show #t)
|
|
|
|
(yield (make-semaphore))
|
|
|
|
|#
|