Improved handling of case where child is killed by a signal
[tcl-tlc.git] / scripts / datasource_list.itcl
blobdda6e8f2a1c7224ed9f96f4c92723c5a254abfea
1 # vim: foldmarker=<<<,>>>
3 class tlc::DSlist {
4 inherit tlc::Datasource
6 constructor {args} {}
8 public {
9 variable list {} {invoke_handlers onchange}
10 variable headers {} {invoke_handlers onchange}
11 variable id_column 0 {invoke_handlers onchange}
13 method get_list {criteria {headersvar {}}}
14 method add_item {row {col_list ""}}
15 method add_row {row}
16 method update_item {oldrow newrow {old_col_list ""} {new_col_list ""}}
17 method remove_item {row {col_list ""}}
18 method get_headers {}
23 body tlc::DSlist::constructor {args} { #<<<1
24 can_do lookup 1
25 can_do insert 1
26 can_do update 1
27 can_do delete 1
29 eval configure $args
33 body tlc::DSlist::get_list {criteria {headersvar {}}} { #<<<1
34 if {$headersvar != {}} {
35 upvar $headersvar h
36 set h $headers
37 #puts "DSlist::get_list: setting headers: ($h)"
40 set last_headers $headers
42 #puts "DSlist::get_list: returning list: ($list)"
43 return $list
47 body tlc::DSlist::add_item {row {col_list ""}} { #<<<1
48 array set dat $row
49 #puts "dat:"
50 #parray dat
52 set item {}
53 set res {}
54 foreach h $headers {
55 if {[info exists dat($h)]} {
56 lappend item $dat($h)
57 lappend res $h $dat($h)
58 } else {
59 lappend item ""
60 lappend res $h ""
64 #puts "Adding item: ($item)"
65 lappend list $item
66 invoke_handlers onchange
68 return $res
72 body tlc::DSlist::add_row {row} { #<<<1
73 lappend list $row
74 invoke_handlers onchange
78 body tlc::DSlist::update_item {oldrow newrow {old_col_list ""} {new_col_list ""}} { #<<<1
82 body tlc::DSlist::remove_item {row {col_list ""}} { #<<<1
86 body tlc::DSlist::get_headers {} { #<<<1
87 return $headers