original commit: 8b372620ae76c9a61067c61192f05fe32877c08a
This commit is contained in:
Robby Findler 2001-10-23 03:44:55 +00:00
parent ca0a970012
commit c071b7efa2
2 changed files with 341 additions and 323 deletions

View File

@ -67,7 +67,8 @@
with-syntax
module
let/cc let/ec letcc catch
let-syntax letrec-syntax syntax-case
let-syntax letrec-syntax
syntax-case syntax-case*
let-signature fluid-let
let-struct let-macro let-values let*-values
case when unless match

View File

@ -147,18 +147,24 @@
is-selected?
select
user-data
get-allow-selection?
set-allow-selection
get-clickable-snip))
(define hierarchical-list-item%
(class100* object% (hierarchical-list-item<%>) (snp)
(private-field
[snip snp]
[data #f])
[data #f]
[allow-selection #t])
(public
[get-allow-selection? (lambda () allow-selection)]
[set-allow-selection (lambda (_a) (set! allow-selection _a))]
[get-clickable-snip (lambda () snip)]
[get-editor (lambda () (send snip get-item-buffer))]
[is-selected? (lambda () (send (send snip get-editor) is-selected?))]
[select (lambda (on?) (send (send snip get-editor) select on?))]
[select (lambda (on?) (send snip select on?))]
[scroll-to (lambda () (let* ([admin (send snip get-admin)]
[dc (send admin get-dc)]
[h-box (box 0.0)])
@ -176,6 +182,10 @@
new-list
delete-item
get-items
open
close
toggle-open/closed
is-open?
get-arrow-snip))
(define hierarchical-list-compound-item%
@ -270,7 +280,8 @@
(send dc set-brush b))))])
(public
[select (lambda (on?)
(unless (eq? (not selected?) (not on?))
(unless (eq? (not selected?)
(not on?))
(top-select (if on? item #f) snip)))]
[double-select (lambda () (send top on-double-select item))]
[select-prev (lambda () (send top select-prev))])
@ -557,6 +568,7 @@
[on-item-closed (lambda (i) (void))]
[on-double-select (lambda (i) (void))]
[on-select (lambda (i) (void))]
[on-click (lambda (i) (void))]
[new-item (lambda x (send top-buffer new-item . x))]
[new-list (lambda x (send top-buffer new-list . x))]
[delete-item (lambda (i) (send top-buffer delete-item i))]
@ -682,13 +694,18 @@
[show-focus? #f])
(private
[do-select (lambda (item s)
(when selectable?
(cond
[(and selectable?
item
(send item get-allow-selection?))
(unless (eq? item selected-item)
(when selected (send selected show-select #f))
(set! selected (if item s #f))
(set! selected-item item)
(when selected (send selected show-select #t))
(on-select item))))])
(on-select item))]
[item
(on-click item)]))])
(private-field
[top-buffer (make-object hierarchical-list-text% this (lambda (i s) (do-select i s)) 0 #f)]
[selected #f]