Subject: Added tooltip generation to contents and keywords pages.

From: "[email-masked]" <dkf>
Date: Thu, 8 Nov 2012 10:14:35 +0000

---
 tools/tcltk-man2html-utils.tcl | 21 +++++++++++++++++----
 tools/tcltk-man2html.tcl       | 29 +++++++++++++++++++++++------
 2 files changed, 40 insertions(+), 10 deletions(-)

diff --git a/tools/tcltk-man2html-utils.tcl b/tools/tcltk-man2html-utils.tcl
index 780cc6b..d02bcb6 100644
--- a/tools/tcltk-man2html-utils.tcl
+++ b/tools/tcltk-man2html-utils.tcl
@@ -636,6 +636,7 @@ proc output-name {line} {
 	lappend manual(wing-toc) $name
 	lappend manual(name-$name) $manual(wing-file)/$manual(name)
     }
+    set manual(tooltip-$manual(wing-file)/$manual(name).htm) $line
 }
 
 ##
@@ -1256,7 +1257,11 @@ proc make-manpage-section {outputDir sectionDescriptor} {
     # whistle
     puts stderr "scanning section $manual(wing-name)"
     # put the entry for this section into the short table of contents
-    puts $manual(short-toc-fp) "<DT><A HREF=\"$manual(wing-file)/[indexfile]\">$manual(wing-name)</A></DT><DD>$manual(wing-description)</DD>"
+    if {[regexp {^(.+), version (.+)$} $manual(wing-name) -> name version]} {
+	puts $manual(short-toc-fp) "<DT><A HREF=\"$manual(wing-file)/[indexfile]\" TITLE=\"version $version\">$name</A></DT><DD>$manual(wing-description)</DD>"
+    } else {
+	puts $manual(short-toc-fp) "<DT><A HREF=\"$manual(wing-file)/[indexfile]\">$manual(wing-name)</A></DT><DD>$manual(wing-description)</DD>"
+    }
     # initialize the wing table of contents
     puts $manual(wing-toc-fp) [htmlhead $manual(wing-name) \
 	    $manual(wing-name) $overall_title "../[indexfile]"]
@@ -1331,7 +1336,7 @@ proc make-manpage-section {outputDir sectionDescriptor} {
 	    }
 	    switch -exact -- $code {
 		.if - .nr - .ti - .in - .ie - .el -
-		.ad - .na - .so - .ne - .AS - .VE - .VS - . {
+		.ad - .na - .so - .ne - .AS - .HS - .VE - .VS - . {
 		    # ignore
 		    continue
 		}
@@ -1567,8 +1572,16 @@ proc make-manpage-section {outputDir sectionDescriptor} {
 	    set tail [lindex $tail [expr {[llength $tail]-1}]]
 	}
 	set tail [file tail $tail]
-	append rows([expr {$n%$nrows}]) \
-	    "<td> <a href=\"$tail.htm\">$name</a> </td>"
+	if {[info exists manual(tooltip-$manual(wing-file)/$tail.htm)]} {
+	    set tooltip $manual(tooltip-$manual(wing-file)/$tail.htm)
+	    set tooltip [string map {[ {\[} ] {\]} $ {\$} \\ \\\\} $tooltip]
+	    regsub {^[^-]+-\s*(.)} $tooltip {[string totitle \1]} tooltip
+	    append rows([expr {$n%$nrows}]) \
+		"<td> <a href=\"$tail.htm\" title=\"[subst $tooltip]\">$name</a> </td>"
+	} else {
+	    append rows([expr {$n%$nrows}]) \
+		"<td> <a href=\"$tail.htm\">$name</a> </td>"
+	}
 	incr n
     }
     puts $manual(wing-toc-fp) <table>
diff --git a/tools/tcltk-man2html.tcl b/tools/tcltk-man2html.tcl
index 585d76a..665a1d4 100755
--- a/tools/tcltk-man2html.tcl
+++ b/tools/tcltk-man2html.tcl
@@ -328,7 +328,15 @@ proc make-man-pages {html args} {
 	    foreach man $manual(keyword-$k) {
 		set name [lindex $man 0]
 		set file [lindex $man 1]
-		lappend refs "<A HREF=\"../$file\">$name</A>"
+		if {[info exists manual(tooltip-$file)]} {
+		    set tooltip $manual(tooltip-$file)
+		    if {[string match {*[<>""]*} $tooltip]} {
+			manerror "bad tooltip for $file: \"$tooltip\""
+		    }
+		    lappend refs "<A HREF=\"../$file\" TITLE=\"$tooltip\">$name</A>"
+		} else {
+		    lappend refs "<A HREF=\"../$file\">$name</A>"
+		}
 	    }
 	    puts $afp "[join $refs {, }]</DD>"
 	}
@@ -420,9 +428,18 @@ proc make-man-pages {html args} {
 ##
 ## Helper for assembling the descriptions of base packages (i.e., Tcl and Tk).
 ##
-proc plus-base {var glob name dir desc} {
+proc plus-base {var root glob name dir desc} {
     global tcltkdir
     if {$var} {
+	if {[file exists $tcltkdir/$root/README]} {
+	    set f [open $tcltkdir/$root/README]
+	    set d [read $f]
+	    close $f
+	    if {[regexp {This is the \w+ (\S+) source distribution} $d -> version]} {
+	       append name ", version $version"
+	    }
+	}
+	set glob $root/$glob
 	return [list $tcltkdir/$glob $name $dir $desc]
     }
 }
@@ -655,14 +672,14 @@ try {
     make-man-pages $webdir \
 	[list $tcltkdir/{$appdir}/doc/*.1 "$tcltkdesc Applications" UserCmd \
 	     "The interpreters which implement $cmdesc."] \
-	[plus-base $build_tcl $tcldir/doc/*.n {Tcl Commands} TclCmd \
+	[plus-base $build_tcl $tcldir doc/*.n {Tcl Commands} TclCmd \
 	     "The commands which the <B>tclsh</B> interpreter implements."] \
-	[plus-base $build_tk $tkdir/doc/*.n {Tk Commands} TkCmd \
+	[plus-base $build_tk $tkdir doc/*.n {Tk Commands} TkCmd \
 	     "The additional commands which the <B>wish</B> interpreter implements."] \
 	{*}[plus-pkgs n {*}$packageDirNameMap] \
-	[plus-base $build_tcl $tcldir/doc/*.3 {Tcl C API} TclLib \
+	[plus-base $build_tcl $tcldir doc/*.3 {Tcl C API} TclLib \
 	     "The C functions which a Tcl extended C program may use."] \
-	[plus-base $build_tk $tkdir/doc/*.3 {Tk C API} TkLib \
+	[plus-base $build_tk $tkdir doc/*.3 {Tk C API} TkLib \
 	     "The additional C functions which a Tk extended C program may use."] \
 	{*}[plus-pkgs 3 {*}$packageDirNameMap]
 } on error {msg opts} {
-- 
cgit v0.12