| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| tixWidgetClass tixNoteBook { |
| -classname TixNoteBook |
| -superclass tixVStack |
| -method { |
| } |
| -flag { |
| } |
| -configspec { |
| {-takefocus takeFocus TakeFocus 0 tixVerifyBoolean} |
| } |
| -default { |
| {.nbframe.tabPadX 8} |
| {.nbframe.tabPadY 5} |
| {.nbframe.borderWidth 2} |
| {*nbframe.relief raised} |
| } |
| } |
|
|
| proc tixNoteBook:InitWidgetRec {w} { |
| upvar #0 $w data |
|
|
| tixChainMethod $w InitWidgetRec |
|
|
| set data(pad-x1) 0 |
| set data(pad-x2) 0 |
| set data(pad-y1) 20 |
| set data(pad-y2) 0 |
| } |
|
|
| proc tixNoteBook:ConstructWidget {w} { |
| upvar #0 $w data |
|
|
| tixChainMethod $w ConstructWidget |
|
|
| set data(w:top) [tixNoteBookFrame $w.nbframe -slave 1 -takefocus 1] |
| set data(w:nbframe) $data(w:top) |
|
|
| bind $data(w:top) <ButtonPress-1> [list tixNoteBook:MouseDown $w %x %y] |
| bind $data(w:top) <ButtonRelease-1> [list tixNoteBook:MouseUp $w %x %y] |
|
|
| bind $data(w:top) <B1-Motion> [list tixNoteBook:MouseDown $w %x %y] |
|
|
| bind $data(w:top) <Left> [list tixNoteBook:FocusNext $w prev] |
| bind $data(w:top) <Right> [list tixNoteBook:FocusNext $w next] |
|
|
| bind $data(w:top) <Return> [list tixNoteBook:SetFocusByKey $w] |
| bind $data(w:top) <space> [list tixNoteBook:SetFocusByKey $w] |
| } |
|
|
| |
| |
| |
| proc tixNoteBook:add {w child args} { |
| upvar #0 $w data |
|
|
| set ret [eval tixChainMethod $w add $child $args] |
|
|
| set new_args "" |
| foreach {flag value} $args { |
| if {$flag ne "-createcmd" && $flag ne "-raisecmd"} { |
| lappend new_args $flag |
| lappend new_args $value |
| } |
| } |
|
|
| eval [linsert $new_args 0 $data(w:top) add $child] |
|
|
| return $ret |
| } |
|
|
| proc tixNoteBook:raise {w child} { |
| upvar #0 $w data |
|
|
| tixChainMethod $w raise $child |
|
|
| if {[$data(w:top) pagecget $child -state] eq "normal"} { |
| $data(w:top) activate $child |
| } |
| } |
|
|
| proc tixNoteBook:delete {w child} { |
| upvar #0 $w data |
|
|
| tixChainMethod $w delete $child |
| $data(w:top) delete $child |
| } |
|
|
| |
| |
| |
| proc tixNoteBook:Resize {w} { |
| upvar #0 $w data |
|
|
| |
| |
| set rootReq [$data(w:top) geometryinfo] |
| set tW [lindex $rootReq 0] |
| set tH [lindex $rootReq 1] |
|
|
| set data(pad-x1) 2 |
| set data(pad-x2) 2 |
| set data(pad-y1) [expr {$tH + $data(-ipadx) + 1}] |
| set data(pad-y2) 2 |
| set data(minW) [expr {$tW}] |
| set data(minH) [expr {$tH}] |
|
|
| |
| |
| tixChainMethod $w Resize |
| } |
|
|
| proc tixNoteBook:MouseDown {w x y} { |
| upvar #0 $w data |
|
|
| focus $data(w:top) |
|
|
| set name [$data(w:top) identify $x $y] |
| $data(w:top) focus $name |
| set data(w:down) $name |
| } |
|
|
| proc tixNoteBook:MouseUp {w x y} { |
| upvar #0 $w data |
|
|
| |
| |
| if {![info exists data(w:down)] || ![info exists data(w:top)]} { |
| return |
| } |
|
|
| set name [$data(w:top) identify $x $y] |
|
|
| if {$name ne "" && $name eq $data(w:down) |
| && [$data(w:top) pagecget $name -state] eq "normal"} { |
| $data(w:top) activate $name |
| tixCallMethod $w raise $name |
| } else { |
| $data(w:top) focus "" |
| } |
| } |
|
|
|
|
| |
| |
| |
| |
| |
|
|
| proc tixNoteBook:FocusNext {w dir} { |
| upvar #0 $w data |
|
|
| if {[$data(w:top) info focus] == ""} { |
| set name [$data(w:top) info active] |
| $data(w:top) focus $name |
|
|
| if {$name ne ""} { |
| return |
| } |
| } else { |
| set name [$data(w:top) info focus$dir] |
| $data(w:top) focus $name |
| } |
| } |
|
|
| proc tixNoteBook:SetFocusByKey {w} { |
| upvar #0 $w data |
|
|
| set name [$data(w:top) info focus] |
|
|
| if {$name ne "" && [$data(w:top) pagecget $name -state] eq "normal"} { |
| tixCallMethod $w raise $name |
| $data(w:top) activate $name |
| } |
| } |
|
|
| |
| |
| |
| proc tixNoteBookFind {w char} { |
| set char [string tolower $char] |
|
|
| foreach child [winfo child $w] { |
| if {![winfo ismapped $w]} { |
| continue |
| } |
| switch -exact -- [winfo class $child] { |
| Toplevel { continue } |
| TixNoteBook { |
| set nbframe [$child subwidget nbframe] |
| foreach page [$nbframe info pages] { |
| set char2 [string index [$nbframe pagecget $page -label] \ |
| [$nbframe pagecget $page -underline]] |
| if {($char eq [string tolower $char2] || $char eq "") |
| && [$nbframe pagecget $page -state] ne "disabled"} { |
| return [list $child $page] |
| } |
| } |
| } |
| } |
| |
| |
| set match [tixNoteBookFind $child $char] |
| if {$match ne ""} { |
| return $match |
| } |
| } |
| return "" |
| } |
|
|
| proc tixTraverseToNoteBook {w char} { |
| if {$char eq ""} { |
| return 0 |
| } |
| if {![winfo exists $w]} { |
| return 0 |
| } |
| set list [tixNoteBookFind [winfo toplevel $w] $char] |
| if {$list ne ""} { |
| [lindex $list 0] raise [lindex $list 1] |
| return 1 |
| } |
| return 0 |
| } |
|
|
| |
| |
| |
|
|
| bind all <Alt-KeyPress> "+tixTraverseToNoteBook %W %A" |
| bind all <Meta-KeyPress> "+tixTraverseToNoteBook %W %A" |
|
|
|
|