/usr/share/tkinspect/help.tcl is in tkinspect 5.1.6p10-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | #
# $Id: help.tcl,v 1.9 2002/10/21 23:26:09 patthoyts Exp $
#
dialog help_window {
param topics {}
param width 100
param height 35
param helpdir .
member history {}
member history_ndx -1
member history_len 0
member rendering 0
method create {} {
frame $self.menu -relief raised -bd 2
menubutton $self.menu.topics -text "Topics" -underline 0 \
-menu $self.menu.topics.m
pack $self.menu.topics -in $self.menu -side left
set m [menu $self.menu.topics.m]
menubutton $self.menu.navigate -text "Navigate" -underline 0 \
-menu $self.menu.navigate.m
pack $self.menu.navigate -in $self.menu -side left
set m [menu $self.menu.navigate.m]
$m add command -label "Forward" -underline 0 -state disabled \
-command "$self forward" -accelerator f
$m add command -label "Back" -underline 0 -state disabled \
-command "$self back" -accelerator b
$m add cascade -label "Go" -underline 0 -menu $m.go
menu $m.go -postcommand "$self fill_go_menu"
frame $self.text -bd 2 -relief raised
scrollbar $self.text.sb -command "$self.text.t yview"
text $self.text.t -relief sunken -bd 2 -yscroll "$self.text.sb set" \
-wrap word -setgrid 1
set t $self.text.t
pack $self.text.sb -in $self.text -side right -fill y
pack $self.text.t -in $self.text -side left -fill both -expand yes
pack $self.menu -in $self -side top -fill x
pack $self.text -in $self -side bottom -fill both -expand yes
bind $self <Key-f> "$self forward"
bind $self <Key-b> "$self back"
bind $self <Alt-Right> "$self forward"
bind $self <Alt-Left> "$self back"
bind $self <Key-space> "$self page_forward"
bind $self <Key-Next> "$self page_forward"
bind $self <Key-BackSpace> "$self page_back"
bind $self <Key-Prior> "$self page_back"
bind $self <Key-Delete> "$self page_back"
bind $self <Key-Down> "$self line_forward"
bind $self <Key-Up> "$self line_back"
}
method reconfig {} {
set m $self.menu.topics.m
$m delete 0 last
foreach topic $slot(topics) {
$m add radiobutton -variable [object_slotname topic] \
-value $topic \
-label $topic \
-command [list $self show_topic $topic]
}
$m add separator
$m add command -label "Close Help" -underline 0 \
-command "destroy $self"
$self.text.t config -width $slot(width) -height $slot(height)
}
method show_topic {topic} {
incr slot(history_ndx)
set slot(history) [lrange $slot(history) 0 $slot(history_ndx)]
set slot(history_len) [expr $slot(history_ndx) + 1]
lappend slot(history) $topic
$self read_topic $topic
}
method read_topic {topic} {
# probably should use uri::geturl from tcllib
set slot(topic) $topic
wm title $self "Help: $topic"
set filename [file join $slot(helpdir) $topic]
if {![file exist $filename]} {
append filename .html
}
set f [open $filename r]
set txt [read $f]
close $f
# Fix for
if [string match -nocase "*ChangeLog" $filename] {
set txt "<html><body><pre>$txt</pre></body></html>"
}
feedback .help_feedback -steps [set slot(len) [string length $txt]] \
-title "Rendering HTML"
.help_feedback grab
set slot(remaining) $slot(len)
set slot(rendering) 1
tkhtml_set_render_hook "$self update_feedback"
tkhtml_set_command "$self follow_link"
tkhtml_render $self.text.t $txt
destroy .help_feedback
set slot(rendering) 0
set m $self.menu.navigate.m
if {($slot(history_ndx)+1) < $slot(history_len)} {
$m entryconfig 1 -state normal
} else {
$m entryconfig 1 -state disabled
}
if {$slot(history_ndx) > 0} {
$m entryconfig 2 -state normal
} else {
$m entryconfig 2 -state disabled
}
}
method follow_link {link} {
$self show_topic $link
}
method forward {} {
if {$slot(rendering) || ($slot(history_ndx)+1) >= $slot(history_len)} return
incr slot(history_ndx)
$self read_topic [lindex $slot(history) $slot(history_ndx)]
}
method back {} {
if {$slot(rendering) || $slot(history_ndx) <= 0} return
incr slot(history_ndx) -1
$self read_topic [lindex $slot(history) $slot(history_ndx)]
}
method fill_go_menu {} {
set m $self.menu.navigate.m.go
catch {$m delete 0 last}
for {set i [expr [llength $slot(history)]-1]} {$i >= 0} {incr i -1} {
set topic [lindex $slot(history) $i]
$m add command -label $topic \
-command [list $self show_topic $topic]
}
}
method update_feedback {n} {
if {($slot(remaining) - $n) > .1*$slot(len)} {
.help_feedback step [expr $slot(remaining) - $n]
update idletasks
set slot(remaining) $n
}
}
method page_forward {} {
$self.text.t yview scroll 1 pages
}
method page_back {} {
$self.text.t yview scroll -1 pages
}
method line_forward {} { $self.text.t yview scroll 1 units }
method line_back {} { $self.text.t yview scroll -1 units }
}
|