manyset [split $code _] inport class subclass lockown xabbrev
global smash_subclass
- if {$smash_subclass && [string length $subclass]} {
+ if {$smash_subclass > 1} {
+ set subclass {}
+ } elseif {$smash_subclass && [string length $subclass]} {
set subclass !
}
return [join [list $inport $class $subclass $lockown $xabbrev] _]
}
+proc make-smasher {sma label ekind} {
+ return [make-gridded-control .smash $sma $label $ekind]
+}
+
+proc make-radio-smasher {sma label variable descs} {
+ set w [make-smasher $sma $label frame]
+ for {set i 0} {$i < [llength $descs]} {incr i} {
+ radiobutton $w.v$i \
+ -variable $variable -value $i -command redraw-needed \
+ -text [lindex $descs $i]
+ pack $w.v$i -side left
+ }
+}
+
#---------- filtering ----------
set filters {}
proc make-tickbox-filter {fil label rows inrow} {
upvar #0 filter_$fil vars
- set fw [make-filter tickbox $fil $label frame]
+ set fw [make-filter $fil $label frame]
set values [filter-values/$fil]
set nvalues [llength $values]
if {!$inrow} {
global filterentered_$fil
upvar #0 filter_$fil realvar
set realvar $def
- set fw [make-filter entry $fil $label frame]
+ set fw [make-filter $fil $label frame]
entry $fw.entry -textvariable filterentered_$fil
label $fw.error
glset def_background [$fw.error cget -background]
pack $fw.entry $fw.error -side top -anchor w
}
-proc make-filter {kind fil label ekind} {
+proc make-gridded-control {parent name label ekind} {
+ debug "MAKE-GRIDDED-CONTROL [list $parent $name $label $ekind]"
+ label $parent.lab_$name -text $label -justify left
+ $ekind $parent.$name
+ manyset [grid size $parent] dummy row
+ incr row
+ grid configure $parent.lab_$name -row $row -column 0 -sticky nw -pady 4
+ grid configure $parent.$name -row $row -column 1 -sticky w -pady 3
+ return $parent.$name
+}
+
+proc make-filter {fil label ekind} {
global filters
- label .filter.lab_$fil -text $label -justify left
- $ekind .filter.$fil
lappend filters $fil
- set nfilters [llength $filters]
- grid configure .filter.lab_$fil -row $nfilters -column 0 -sticky nw -pady 4
- grid configure .filter.$fil -row $nfilters -column 1 -sticky w -pady 3
- return .filter.$fil
+ return [make-gridded-control .filter $fil $label $ekind]
}
proc make-filters {} {
frame .smash -relief groove -bd 2 -padx 1
frame .filter -relief groove -bd 2 -padx 1
frame .islands -pady 2
- pack .cp .smash .filter .islands -side top
+ pack .cp .filter .islands .smash -side top
label .smash.title -text Smash
- pack .smash.title -side left
+ grid .smash.title -row 0 -column 0 -columnspan 2
- checkbutton .smash.subclass -text Subclass \
- -variable smash_subclass -command redraw-needed
- pack .smash.subclass -side left
+ make-radio-smasher subclass Subclass smash_subclass \
+ {Show Normal/LE Hide}
set filterstyle 1
trace add variable filterstyle write filterstyle-changed