ui.gadgets.tables: more fixes

db4
Slava Pestov 2009-08-05 22:56:08 -05:00
parent dba67b1815
commit 926797d485
1 changed files with 10 additions and 9 deletions

View File

@ -55,7 +55,7 @@ multiple-selection? ;
over selected-indices>> conjoin ; over selected-indices>> conjoin ;
: multiple>single ( values -- value/f ? ) : multiple>single ( values -- value/f ? )
dup assoc-empty? [ drop f f ] [ keys first t ] if ; dup assoc-empty? [ drop f f ] [ values first t ] if ;
: selected-index ( table -- n ) : selected-index ( table -- n )
selected-indices>> multiple>single drop ; selected-indices>> multiple>single drop ;
@ -262,12 +262,13 @@ M: table pref-dim*
PRIVATE> PRIVATE>
: (selected-rows) ( table -- {row} ) : (selected-rows) ( table -- assoc )
[ selected-indices>> keys natural-sort ] keep [ selected-indices>> ] keep
'[ _ nth-row [ 1array ] [ drop { } ] if ] map concat ; '[ _ nth-row drop ] assoc-map ;
: selected-rows ( table -- {value} ) : selected-rows ( table -- assoc )
[ (selected-rows) ] [ renderer>> ] bi '[ _ row-value ] map ; [ selected-indices>> ] [ ] [ renderer>> ] tri
'[ _ nth-row drop _ row-value ] assoc-map ;
: (selected-row) ( table -- value/f ? ) (selected-rows) multiple>single ; : (selected-row) ( table -- value/f ? ) (selected-rows) multiple>single ;
@ -306,7 +307,7 @@ PRIVATE>
: (update-selected-indices) ( table -- set ) : (update-selected-indices) ( table -- set )
[ selection>> value>> dup array? [ 1array ] unless ] keep [ selection>> value>> dup array? [ 1array ] unless ] keep
[ find-row-index ] curry map sift unique f like ; [ find-row-index ] curry map sift unique f assoc-like ;
: initial-selected-indices ( table -- set ) : initial-selected-indices ( table -- set )
{ {
@ -315,7 +316,7 @@ PRIVATE>
[ drop { 0 } unique ] [ drop { 0 } unique ]
} 1&& ; } 1&& ;
: update-selected-indices ( table -- {n}/f ) : update-selected-indices ( table -- set )
{ {
[ (update-selected-indices) ] [ (update-selected-indices) ]
[ initial-selected-indices ] [ initial-selected-indices ]
@ -324,7 +325,7 @@ PRIVATE>
M: table model-changed M: table model-changed
nip dup update-selected-indices { nip dup update-selected-indices {
[ >>selected-indices f >>mouse-index drop ] [ >>selected-indices f >>mouse-index drop ]
[ [ f ] [ first ] if-empty show-row-summary ] [ multiple>single drop show-row-summary ]
[ drop update-selected ] [ drop update-selected ]
[ drop relayout ] [ drop relayout ]
} 2cleave ; } 2cleave ;