http://tkhtml.tcl.tk/ is the home page for one of the [Tk] [HTML widgets] that renders HTML into formatted text with hyperlinks. It is a compiled [extension].
As of late winter 2005, [Dan Kennedy] is revitalizing tkhtml
[http://tkhtml.tcl.tk]. The new version of tkhtml is [tkhtml3], which has
its own wiki page.
----
It appears that Tkhtml depends on Tk 8.0-8.3 . Pointers to modifications for
Tk 8.4 or newer would be appreciated.
It does work with Tk 8.4 (recent CVS sources), with non-threaded build. But with threaded build
I'm encountering misterious segfaults. [Victor Wagner]
Update 28.12.04. I've fixed problem with threaded build. It was related to mixed use of Tcl_Alloc and malloc and Tcl_Free and free respectively. Patches are available in my Debian package repository at http://45.free.net/debian/repository [Victor Wagner]
Has anyone done any new versions of the Windows DLL? Seems to also show occasonal windows errors with current builds of TCL. A pointer to the latest DLL build available would be appreciated. {Daniel B.]
---
The author writes, on the tkhtml mailing list, that he is working on
making the tkhtml cvs accessible as well as setting up a new web site
about tkhtml.
----
Does tkhtml '''only''' do HTML rendering, or is there actual code for
acting as a WWW client in the widget? I can't tell from the web site.
Only rendering - see below for www clients created using tkHTML.
During late 2003, the author of tkhtml wrote on the tkhtml mailing list:
> I've seen recent postings to news:comp.lang.tcl about people having all
> sorts of bug fixes and enhancements for this widget and now this week
> we see some uploaded files here for the widget.
>
> Has anyone contacted the original author to see if there would be interest
> in creating an sf.net project, getting tkhtml source into it, then letting
> people loose to start fixing and upgrading it?
Anybody who wants to undertake the task of starting a sf.net project
for tkhtml has my blessing.
Or if sf.net is too slow for you, I can put the code on the [CVS] server
at www.sqlite.org and turn folks loose on it there.
See http://www.sqlite.org/ (or [http://www.hwaci.com/sw/tkhtml]; also,
[Victor Wagner] has a recent image
[http://ftp.45.free.net/pub/debian-cosy/sarge/tcl/tkhtml_2.0.20040914.orig.tar.gz]
of the sources)
for the cvs server machine mentioned.
----
Note that TkHTML uses [LGPL].
2003-11-13 - In late 2002 [D. Richard Hipp] released the files that he wrote to the public domain.
The remaining LGPLed file htmlexts.c was written by Peter MacDonald, and he has indicated that this will be re-licensed in the next release. (New release with some simple [CSS] support still a few months off at least apparently)
Thanks to both of them for the great work and for releasing it with a [license] compatible with the Tcl/Tk core! Hopefully we'll see TkHTML included in the [Tk] distribution some time. (others have mentioned that this is on the cards..)
----
[Kitten], a compilation of extensions for the Tclkit user, includes compiled versions of tkhtml for Linux, Solaris, and Windows.
The [ActiveTcl] Batteries included distribution includes tkhtml [http://aspn.activestate.com/ASPN/Downloads/ActiveTcl/].
----
TkHTML is one of the numerous packages in the [Tcl] community which has its own pecular build requirements. Be certain to read carefully the COMPILE.txt instructions - and take their instructions literally ! You do '''NOT''' just do a compile; make ; make install on this package!
1. You have to build in a directory OTHER than in the source directory.
1. You have to be in that directory, and then invoke the source directory's configure
1. You '''MUST''' specify the --with-tcl and --with-tk flags, pointing to the source tree
1. You may very well have to modify the Makefile to do things like add -R flags, flags for locating the libraries for sockets, etc.
----
[Neil Madden] has provided a neat little 5 line .sig that points one to this wiki - see the code at [Simple Tkhtml web page displayer].
----
[Detlef Groth] has written a [snit]::widget wrapper for the tkhtml widget called [snitbrowser]. [snitbrowser] is also used inside the Tcl-documentation tool [dgHelpBrowser].
----
[kroc] has written a [Help.kit] with Tkhtml.
----
TkHTML shares its code base with [BrowseX]; the latter uses [TkHTML],
and [Peter MacDonald] regularly updates the TkHTML CVS repository.
----
[LV] We should determine ''which'' tkhtml cvs repository Peter MacDonald is
updating regularly and mention that here.
----
A mailing list for discussing D. Richard Hipp's Tk widget for
rendering HTML - see http://groups.yahoo.com/group/tkhtml/ for the subscription
info, mail archives, and even files of updates and enhancements like a [snit] wrapper!
----
What: Hipp miscellaneous widgets
Where: http://www.hwaci.com/sw/
http://tkhtml.hwaci.com/
Description: Author has a variety of software available.
A Tree and Notebook widget written in pure Tcl/Tk code is available.
Also there is a new tk_messageBox which uses color icons
and tkhtml, an HTML widget for Tcl/Tk.
There is a DLL for the TkHTML widget built using the Tcl 8.x
Stub library, as well as a shared library for RedHat Linux 6.0.
Support continues to improve - support for table, script and
applet tags recently added.
See cvs -d :pserver:anonymous@cvs.hwaci.com:/tkhtml
for the source code.
Note that the TkHTML widget is distributed as GPL.
Updated: 11/2004
Contact: mailto:drh@acm.org (D. Richard Hipp)
What: Scout
Where: http://www.sanmay.freeserve.co.uk/
Description: WWW browser which uses tkhtml .
Updated: 08/2001
Contact: mailto:hbyers@sanmay.freeserve.co.uk
What: Tixapps
Where: http://tix.sourceforge.net/Tixapps/
Description: Suite of development applications that run with
Tcl/Tk/Tix or Python/Tkinter/Tix. Includes an inspector,
debugger and GNU texinfo browser.
The code includes Python wrappers for TkHTML and TkTable.
Currently at version 1.6 .
Updated: 06/2002
Contact: See web site.
What: VAD (Visual Ada Developer)
Where: http://www.websamba.com/ldulman/vad.htm
Description: Tcl/Tk oriented Ada-95 GUI builder, portable to different
platforms such as Windows, unix, MacOS, and OS/2 . You can use
it as an IDE for any Ada-95 (C, C++, Tcl) project.
Uses GNAT, TASH, RAPID, Tcl/Tk 8.x, Img, icons, Help System,
TkPaint, BWidgets, mcListBox, mComboBox, Tktable, ftp_library, csh,
snack, BLT, itcl, Tix, QuickTimeTcl, XanimTcl, Tcl-gtk, Oratcl,
XBit, Tkogl, tom, Vtktcl, Tkhtml, Fve, August, ASED, TclDOM, Tclxml
Whiteboard, TkMC, tkxmlive, IDL_To_Ada.
Currently at version 6.0 .
Updated: 08/2002
Contact: See web site
What: WebSamba package repository
Where: http://www.websamba.com/tcltk
Description: A variety of packages for Tcl/Tk 8.4a3, working with
Windows and RedHat 7.1. Includes BLT, Snack, Tix, COST,
TclX, Tktable, Img, Tkhtml, itcl, and TkOgl.
Updated: 10/2001
Contact: mailto:dulman@attglobal.net ) (Leonid Dulman)
What: browser
Where: http://sourceforge.net/projects/tkbrowser
Description: A wrapper around TkHTML with default bindings and functionality
to create simple web browsing widgets.
Currently at version 0.1 .
Updated: 03/2002
Contact: mailto:nem@cs.nott.ac.uk (Neil Madden)
[NEM]: Note that the above code hasn't been touched for a while. I did spend quite a lot of time improving this, but apparently I neglected to upload the changes to sourceforge. I have no idea where the newer code is now (probably lost). Somebody created a [snit] wrapper on this wiki which has approximately the same functionality as my package, and is probably a better starting point.
What: kitten
Where: http://www.equi4.com/pub/tk/examples/
Description: Kitten is a tclkit collection of Tcl/Tk extensions aimed at
reducing the work a developer has to do while developing a
scripted document. It contains scripting extensions like tcllib and
BWidgets, as well as Expect, itcl/itk/iwidgets/tkhtml, and others.
Binary extensions are compiled for Windows, Linux, and Solaris as
possible.
Updated: 07/2001
Contact: See web site.
----
[EKB] I found this post from [c.l.t] by [Victor Wagner] to be invaluable:
I've build Tkhtml widget 2.0 from CVS and find out that it works very
strange way. hv.tcl works and processes hyperlinks fine, but
when I'm trying to use html widget in my code, mouse click events are
ignored.
It took me about half of day to find out that HtmlClip widget is
silently created when page is loaded into html widget, and silently
intercerts all events except on tiny border around widget.
Also mouse wheel scrolling is not supported.
I think that set of default bindings should be included into Tkhtml
package, just as it is done for core Tk widget.
At least following bindings should appear
1. binding which would change cursor to hand when over
hyperlink (such binding already present in the hv.tcl code)
2. binding to invoke a command, specified with -hyperlinkcommand
widget option
3. bindings (for instance, copied from text widget)
Here is an prototype for this bindings:
#
# Change cursor to hand if over hyperlink
# Copied from hv.tcl
#
bind HtmlClip {
set parent [winfo parent %W]
set url [$parent href %x %y]
if {[string length $url] > 0} {
$parent configure -cursor hand2
} else {
$parent configure -cursor {}
}
}
#
# Mouse Wheel bindings
# Cut'n'pasted from Text widget binding
#
if {[string equal [tk windowingsystem] "classic"]
|| [string equal [tk windowingsystem] "aqua"]} {
bind HtmlClip {
%W yview scroll [expr {- (%D)}] units
}
bind HtmlClip {
%W yview scroll [expr {-10 * (%D)}] units
}
bind HtmlClip {
%W xview scroll [expr {- (%D)}] units
}
bind HtmlClip {
%W xview scroll [expr {-10 * (%D)}] units
}
} else {
bind HtmlClip {
%W yview scroll [expr {- (%D / 120) * 4}] units
}
}
if {[string equal "x11" [tk windowingsystem]]} {
# Support for mousewheels on Linux/Unix commonly comes through mapping
# the wheel to the extended buttons. If you have a mousewheel, find
# Linux configuration info at:
# http://www.inria.fr/koala/colas/mouse-wheel-scroll/
bind HtmlClip <4> {
if {!$tk_strictMotif} {
%W yview scroll -5 units
}
}
bind HtmlClip <5> {
if {!$tk_strictMotif} {
%W yview scroll 5 units
}
}
}
#
# Invoke widget hyperlink command on the hyperlink
# Invented by myself
#
bind HtmlClip <1> {
set parent [winfo parent %W]
set url [$parent href %x %y]
if {[string length $url]} {
eval [$parent cget -hyperlinkcommand] $url
}
}
----
[[
[Category Package] | [Category Internet] | [Category Widget]
]]