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).