| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | 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" |
| |
|
| |
|