# Copyright (C) 1999 - Martin Strauss - under terms of GPL
#####################################################
# show help
# ok !
proc Help {NAME} {
global T HLP
global hlppath hlptxt hlpfile
if [info exists HLP($NAME)] {
# Liste vorhandener Hilfen
set ii 0
foreach i $HLP($NAME) {
if [string match "$T(language)*" $i] {
incr ii
lappend liste $i "$T(language) $ii"
}
}
foreach i $HLP($NAME) {
if ![string match "$T(language)*" $i] {
incr ii
lappend liste $i "[lindex [split $i "/"] 0] $ii"
}
}
HLP_open $NAME [lindex $liste 0] [lindex $liste 1]
if [winfo exists .whelp] {
.whelp.f2.mb.m delete 0 end
foreach {i t} $liste {
.whelp.f2.mb.m add command -label $t -command "HLP_open $NAME $i {$t}"
}
.whelp.f2.e delete 0 end
.whelp.f2.e insert 0 $NAME
}
}
HLP_gif $NAME
}
###############################################
# help from inside a text
# ok !
proc HelpTo {NAME} {
global T HLP
set flag 1
set key [$NAME get insert insert+1c]
if ![string compare $key "\\"] then {
set strt insert+1c
} else {
set strt insert
}
set ID [array startsearch HLP]
while {[array anymore HLP $ID]} {
set elm [array nextelement HLP $ID]
set velm [$NAME get $strt insert+[expr [string length $elm] + 1]c]
if ![string compare $elm $velm] then {
Help $elm
set flag 0
}
}
array donesearch HLP $ID
if $flag then {
Help $T(Helpto-Help)
}
}
##########################
##########################
proc HLP_load {} {
global hlppath HLP
if [file exists $hlppath/index] {
set f [open $hlppath/index r]
set L [read $f]
close $f
array set HLP $L
} {set HLP(ERROR) ERROR}
}
proc HLP_open {NAME FILE Text} {
global T hlppath hlptxt hlpfile
if ![winfo exists .whelp] {set hlpfile ""}
if {[string compare $FILE $hlpfile] != 0} {
if [file exists "$hlppath/$FILE"] then {
set f [open "$hlppath/$FILE" r]
HLP_plainwindow
.whelp.f2.mb configure -text $Text
.whelp.f.l configure -state normal
.whelp.f.l delete 1.0 end
.whelp.f.l insert 1.0 [read $f]
.whelp.f.l configure -state disabled
close $f
set hlpfile $FILE
set pos [.whelp.f.l search "::" 1.0 end]
while {$pos!=""} {
.whelp.f.l tag add invisible $pos "$pos lineend"
set pos [.whelp.f.l search "::" "$pos+1c" end]
}
set ksp "::"
set ksp [.whelp.f.l search -- $ksp$NAME$ksp pos]
if {$ksp != ""} then {
.whelp.f.l mark set pos $ksp
.whelp.f.l see pos
}
focus .whelp
} {
if [winfo exists .whelp] then {
.whelp.f.l configure -state normal
.whelp.f.l delete 1.0 end
eval ".whelp.f.l insert 1.0 \"$T(whelp-no-source)\""
.whelp.f.l configure -state disabled
}
}
}
}
proc HLP_plainwindow {} {
global T
if ![winfo exists .whelp] then {
toplevel .whelp
wm title .whelp $T(whelp-titel)
frame .whelp.f
scrollbar .whelp.f.vscroll -relief sunken -command {.whelp.f.l yview}
text .whelp.f.l -yscroll {.whelp.f.vscroll set}
pack .whelp.f.vscroll -side right -fill y
pack .whelp.f.l -expand yes -fill both
frame .whelp.f2
menubutton .whelp.f2.mb -menu .whelp.f2.mb.m
menu .whelp.f2.mb.m
button .whelp.f2.butup -text up -command {
.whelp.f.l tag remove show 1.0 end
set ksp [.whelp.f.l search -backwards -- [.whelp.f2.e get] pos]
if {$ksp != ""} then {
.whelp.f.l mark set pos $ksp
.whelp.f.l see pos
.whelp.f.l tag add show pos "pos wordend"
}
}
button .whelp.f2.butdown -text down -command {
.whelp.f.l tag remove show 1.0 end
set ksp [.whelp.f.l search -- [.whelp.f2.e get] pos+1c]
if {$ksp != ""} then {
.whelp.f.l mark set pos $ksp
.whelp.f.l see pos
.whelp.f.l tag add show pos "pos wordend"
}
}
entry .whelp.f2.e
button .whelp.f2.butQ -text $T(quit) -command {
destroy .whelp
}
pack .whelp.f -expand yes -fill y
pack .whelp.f2.mb .whelp.f2.butup .whelp.f2.butdown .whelp.f2.e .whelp.f2.butQ -side left
pack .whelp.f2
COLOR .whelp
.whelp.f.l tag add invisible 1.0 1.0
.whelp.f.l tag add show 1.0 1.0
.whelp.f.l tag configure invisible -foreground [.whelp.f.l cget -bg]
.whelp.f.l tag configure show -foreground Red
.whelp.f.l tag raise invisible
.whelp.f.l mark set pos 1.0
}
}
proc HLP_gif Name {
global gifpath I_txt
if [info exists I_txt($Name)] {
if [file exists "$gifpath/$I_txt($Name).gif"] then {
if ![winfo exists .whelpgif] then {
toplevel .whelpgif