1 # vim: ft=tcl foldmethod=marker foldmarker=<<<,>>> ts=4 shiftwidth=4
3 option add *DSpopup.showRoot false widgetDefault
4 option add *DSpopup.yScrollMode "static" widgetDefault
5 option add *DSpopup.xScrollMode "dynamic" widgetDefault
6 option add *DSpopup.actionButtonWidth 9 widgetDefault
10 inherit tlc::Module tlc::Baselog
24 method headers_changed {new_headers}
25 method item_selected {item_arr}
31 configbody tlc::DSpopup::ds { #<<<1
32 if {[info exists old_ds] && [itcl::is object $old_ds]} {
33 $old_ds deregister_handler headers_changed [code $this headers_changed]
34 $old_ds deregister_handler onchange [code $this onchange]
36 $itk_component(list) configure -datasource $ds
39 $ds register_handler headers_changed [code $this headers_changed]
40 $ds register_handler onchange [code $this onchange]
43 headers_changed [$ds get_headers]
45 if {[info exists old_ds]} {
52 body tlc::DSpopup::constructor {args} { #<<<1
53 itk_component add list {
54 tlc::Browse_tktreectrl $w.list
56 keep -filter_options -actionside -criteria -column_defaults
57 keep -column_options -column_styles
59 keep -cursor -highlightbackground -highlightcolor
60 keep -highlightthickness -foreground -backgroundimage -backgroundmode
61 keep -buttonbitmap -buttoncolor -buttonimage -buttonsize
62 keep -buttonthickness -columnprefix -columnproxy
63 keep -columnresizemode -doublebuffer -height -indent
64 keep -itemheight -itemprefix -itemwidth -itemwidthequal
65 keep -itemwidthmultiple -linecolor -linestyle -linethickness
66 keep -minitemheight -scrollmargin -selectmode -showbuttons -showheader
67 keep -showlines -showroot -showrootbutton -showrootlines -treecolumn
68 keep -usetheme -width -wrap -orient -xscrolldelay -xscrollincrement
69 keep -yscrolldelay -yscrollincrement
70 #keep -borderwidth -relief -takefocus
73 eval itk_initialize $args
75 foreach reqf {parent} {
76 if {![info exists $reqf]} {
77 error "Must set -$reqf" "" [list missing_field $reqf]
81 $w.list filter_add "Search" {spec entry}
82 headers_changed [$ds get_headers]
84 $w.list register_handler onselect_arr [code $this item_selected]
88 body tlc::DSpopup::destructor {} { #<<<1
89 $ds deregister_handler headers_changed [code $this headers_changed]
90 $ds deregister_handler onchange [code $this onchange]
94 body tlc::DSpopup::headers_changed {new_headers} { #<<<1
97 foreach h $new_headers {
98 lappend filter [string map \
99 [list %field% [list $h]] \
100 {[string match -nocase "*$filter(spec)*" $row(%field%)]}]
103 $w.list filter_update "Search" [join $filter " ||\n"]
107 body tlc::DSpopup::item_selected {item_arr} { #<<<1
108 $parent set_choice $item_arr
112 body tlc::DSpopup::onchange {} { #<<<1
113 set row_cache [$ds get_list {}]