George Peter Staplin's ctext package is a library extension for Tcl/Tk versions 8.0 or higher, written in pure Tcl/Tk code. It is part of tklib, which has the address
http://core.tcl.tk/tklib
Tablelist supports interactive cell editing with the aid of the ctext widget implemented in the package mentioned above. The steps needed for using this widget for editing the cells of a given column are as follows:
tablelist::addCtext command described below.columnconfigure
subcommand to set the given column's -editable option to true
and its -editwindow option to
the value returned by the command mentioned above. (These options are
supported at cell level, too, with the aid of the cellconfigure
subcommand.)tablelist::addCtext
Commandtablelist::addCtext - Register the ctext widget for
interactive cell editingtablelist::addCtext ?name?
-editwindow column or
cell configuration option. It may be any string that is different
from the Tk core and tile edit window names. The default is
ctext. The command returns its
name argument.-padx and -pady
options set to 2, its -wrap option set to
none, and its initial height set to the number of lines
contained in it. There is, however, an exception from this
rule: If the -wrap option of the cell's
column was set to true and Tk version 8.5 or higher is being used, then the
ctext widget's -wrap option will be set to
word and its initial height will equal the number of
display lines (taking into account the line wraps) contained in
it. You can use the script corresponding to the -editstartcommand
tablelist configuration option to override the initial settings according
to your needs.-wrap option was set to
word or char (either by Tablelist
or from within the above-mentioned script) and Tk version 8.5 or higher is
being used, then, whenever its width changes (e.g., due to interactive
column resizing), its height will be set automatically to the number of
display lines contained in it. (The number of display lines is
retrieved with the aid of the
count -displaylines ctext widget subcommand,
introduced in Tk 8.5.)package require Wcb or
package require wcb) then the ctext widget's
height will be updated automatically whenever text is inserted into or
deleted from it, which makes the editing much more user-friendly.
This is achieved by using an appropriately defined
after-insert and after-delete
callback for the edit window. You can use the script corresponding to
the -editstartcommand
tablelist configuration option to define further callbacks for the ctext
widget.  (The above-mentioned callback is created via
wcb::cbappend, after returning from that
script.)Tab key is reserved for navigation between the editable
cells, but the user can insert a tabulator character into the ctext widget
by pressing Control-i.Return and
KP_Enter keys insert a newline character into the ctext
widget. Control-j can also be used for inserting a
newline. Control-Return and
Control-KP_Enter terminate the editing and destroy the edit
window.Control-Home and Control-End have their
well-known text widget-specific bindings, just like Meta-<
and Meta-> if tk_strictMotif is
false. Again, this is different from the behavior of the other
widgets used for interactive cell editing (except the Tk core text
widget). For jumping into the first/last editable cell, the user can
press Alt-Home/Alt-End or
Meta-Home/Meta-End
(Command-Home/Command-End on Mac OS Classic and
Mac OS X Aqua).