|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set tix_demo_running 1 |
|
set samples_dir [file join $demo_dir samples] |
|
set sample_filename {} |
|
|
|
uplevel #0 source [list [file join $samples_dir AllSampl.tcl]] |
|
|
|
|
|
proc MkSample {nb page} { |
|
global tixOption |
|
|
|
|
|
set w [$nb subwidget $page] |
|
|
|
set pane [tixPanedWindow $w.pane -orient horizontal] |
|
pack $pane -expand yes -fill both |
|
|
|
set f1 [$pane add 1 -expand 1] |
|
set f2 [$pane add 2 -expand 3] |
|
$f1 config -relief flat |
|
$f2 config -relief flat |
|
|
|
|
|
|
|
set lab [label $f1.lab -text "Select a sample program:" -anchor w] |
|
set tree [tixTree $f1.slb \ |
|
-options { |
|
hlist.selectMode single |
|
hlist.width 40 |
|
}] |
|
$tree config \ |
|
-command "Sample:Action $w $tree run" \ |
|
-browsecmd "Sample:Action $w $tree browse" |
|
|
|
pack $lab -side top -fill x -padx 5 -pady 5 |
|
pack $tree -side top -fill both -expand yes -padx 5 |
|
|
|
|
|
|
|
set labe [tixLabelEntry $f2.lab -label "Source:" -options { |
|
label.anchor w |
|
}] |
|
|
|
$labe subwidget entry config -state disabled |
|
|
|
set stext [tixScrolledText $f2.stext] |
|
set f3 [frame $f2.f3] |
|
|
|
set run [button $f3.run -text "Run ..." \ |
|
-command "Sample:Action $w $tree run"] |
|
set view [button $f3.view -text "View Source in Browser ..." \ |
|
-command "Sample:Action $w $tree view"] |
|
|
|
pack $run $view -side left -fill y -pady 2 |
|
|
|
pack $labe -side top -fill x -padx 7 -pady 2 |
|
pack $f3 -side bottom -fill x -padx 7 |
|
pack $stext -side top -fill both -expand yes -padx 7 |
|
|
|
|
|
|
|
|
|
set text [$stext subwidget text] |
|
bind $text <Up> "%W yview scroll -1 unit" |
|
bind $text <Down> "%W yview scroll 1 unit" |
|
bind $text <Left> "%W xview scroll -1 unit" |
|
bind $text <Right> "%W xview scroll 1 unit" |
|
bind $text <Tab> {focus [tk_focusNext %W]; break} |
|
|
|
bindtags $text "$text Text [winfo toplevel $text] all" |
|
|
|
$text config -bg [$tree subwidget hlist cget -bg] \ |
|
-state disabled -font $tixOption(fixed_font) -wrap none |
|
|
|
$run config -state disabled |
|
$view config -state disabled |
|
|
|
global demo |
|
set demo(w:run) $run |
|
set demo(w:view) $view |
|
set demo(w:tree) $tree |
|
set demo(w:lab1) $labe |
|
set demo(w:stext) $stext |
|
|
|
set hlist [$tree subwidget hlist] |
|
$hlist config -separator "." -width 30 -drawbranch 0 \ |
|
-wideselect false |
|
|
|
set style [tixDisplayStyle imagetext -refwindow $hlist \ |
|
-fg $tixOption(fg) -padx 4] |
|
|
|
set file [tix getimage textfile] |
|
set folder [tix getimage openfold] |
|
|
|
ForAllSamples root "" \ |
|
[list AddSampleToHList $tree $hlist $style $file $folder] |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
proc AddSampleToHList {tree hlist style file folder token type text dest} { |
|
case $type { |
|
d { |
|
return [$hlist addchild $token -itemtype imagetext -style $style \ |
|
-image $folder -text $text] |
|
} |
|
done { |
|
if {![tixStrEq $token ""]} { |
|
$tree setmode $token close |
|
$tree close $token |
|
} |
|
} |
|
f { |
|
return [$hlist addchild $token -itemtype imagetext \ |
|
-image $file -text $text -data [list $text $dest]] |
|
} |
|
} |
|
} |
|
|
|
proc Sample:Action {w slb action args} { |
|
global samples demo_dir demo samples_dir |
|
|
|
set hlist [$slb subwidget hlist] |
|
set ent [$hlist info anchor] |
|
|
|
if {$ent == ""} { |
|
$demo(w:run) config -state disabled |
|
$demo(w:view) config -state disabled |
|
return |
|
} |
|
if {[$hlist info data $ent] == {}} { |
|
|
|
$demo(w:run) config -state disabled |
|
$demo(w:view) config -state disabled |
|
return |
|
} else { |
|
$demo(w:run) config -state normal |
|
$demo(w:view) config -state normal |
|
} |
|
|
|
set theSample [$hlist info data $ent] |
|
set title [lindex $theSample 0] |
|
set prog [lindex $theSample 1] |
|
|
|
case $action { |
|
"run" { |
|
RunProg $title $prog |
|
} |
|
"view" { |
|
LoadFile [file join $samples_dir $prog] |
|
} |
|
"browse" { |
|
|
|
|
|
|
|
set text [$demo(w:stext) subwidget text] |
|
uplevel #0 set sample_filename [list [file join $samples_dir $prog]] |
|
tixWidgetDoWhenIdle ReadFileWhenIdle $text |
|
|
|
$demo(w:lab1) subwidget entry config -state normal |
|
$demo(w:lab1) subwidget entry delete 0 end |
|
$demo(w:lab1) subwidget entry insert end [file join $samples_dir $prog] |
|
$demo(w:lab1) subwidget entry xview end |
|
$demo(w:lab1) subwidget entry config -state disabled |
|
} |
|
} |
|
} |
|
|
|
proc RunProg {title prog} { |
|
global samples demo_dir demo samples_dir |
|
|
|
set w .[lindex [split $prog .] 0] |
|
set w [string tolower $w] |
|
|
|
if [winfo exists $w] { |
|
wm deiconify $w |
|
raise $w |
|
return |
|
} |
|
|
|
uplevel #0 source [list [file join $samples_dir $prog]] |
|
|
|
toplevel $w |
|
wm title $w $title |
|
RunSample $w |
|
} |
|
|
|
|
|
proc LoadFile {filename} { |
|
global tixOption |
|
|
|
set tmp $filename |
|
regsub -all . $filename _ tmp |
|
set w [string tolower .$tmp] |
|
|
|
if [winfo exists $w] { |
|
wm deiconify $w |
|
raise $w |
|
return |
|
} |
|
|
|
toplevel $w |
|
wm title $w "Source View: $filename" |
|
|
|
button $w.b -text Close -command "destroy $w" |
|
set t [tixScrolledText $w.text] |
|
tixForm $w.b -left 0 -bottom -0 -padx 4 -pady 4 |
|
tixForm $w.text -left 0 -right -0 -top 0 -bottom $w.b |
|
|
|
$t subwidget text config -highlightcolor [$t cget -bg] -bd 2 \ |
|
-bg [$t cget -bg] -font $tixOption(fixed_font) |
|
if {$filename == {}} { |
|
return |
|
} |
|
|
|
set text [$w.text subwidget text] |
|
$text config -wrap none |
|
|
|
ReadFile $text $filename |
|
} |
|
|
|
proc ReadFileWhenIdle {text} { |
|
global sample_filename |
|
|
|
if ![file isdir $sample_filename] { |
|
ReadFile $text $sample_filename |
|
} |
|
} |
|
|
|
proc ReadFile {text filename} { |
|
set oldState [$text cget -state] |
|
$text config -state normal |
|
$text delete 0.0 end |
|
|
|
set fd [open $filename {RDONLY}] |
|
$text delete 1.0 end |
|
|
|
while {![eof $fd]} { |
|
$text insert end [gets $fd]\n |
|
} |
|
close $fd |
|
|
|
$text see 1.0 |
|
$text config -state $oldState |
|
} |
|
|