Author: Csaba Nemethi
Keywords: tablelist, editing, Tk core

# Interactive Tablelist Cell Editing Using Tk Core Widgets

### by

## Csaba Nemethi

## Contents

- Overview
- Interactive Cell Editing Using the entry Widget
- Interactive Cell Editing Using the text Widget
- Interactive Cell Editing Using the spinbox Widget
- Interactive Cell Editing Using the checkbutton Widget

Start page

## Overview

Tablelist supports interactive cell editing with the aid of the Tk core entry, text, spinbox, and checkbutton widgets. These widgets are automatically registered for cell editing, hence the only action needed for using one of them for editing the cells of a given column is as follows:

Use the tablelist widget's `columnconfigure` subcommand to set the given column's `-editable` option to true and its `-editwindow` option to `entry`, `text`, `spinbox`, or `checkbutton`, respectively. (These options are supported at cell level, too, with the aid of the `cellconfigure` subcommand.) Since the default value of the `-editwindow` column configuration option is `entry`, it is not necessary to set it explicitly if the editing should take place with the aid of an embedded entry widget.

Contents Start page

## Interactive Cell Editing Using the entry Widget

DESCRIPTION
  As mentioned above, the interactive cell editing in a tablelist widget takes place per default with the aid of an embedded entry widget. Refer to the INTERACTIVE CELL EDITING section of the reference page describing the `tablelist::tablelist` command for details on the editing process.
KEYWORDS
  tablelist, editing, entry

Contents Start page

## Interactive Cell Editing Using the text Widget

DESCRIPTION
  The temporary embedded text widget used for interactive cell editing will be created with its `-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 text 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.
  If the text widget's `-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` text widget subcommand, introduced in Tk 8.5.)
  If the widget callback package Wcb was loaded into the interpreter (via `package require Wcb` or `package require wcb`) then the text 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 text widget. (The above-mentioned callback is created via `wcb::cbappend`, after returning from that script.)
  The `Tab` key is reserved for navigation between the editable cells, but the user can insert a tabulator character into the text widget by pressing `Control-i`.
  Unlike in the case of the other widgets used for interactive cell editing, the `Return` and `KP_Enter` keys insert a newline character into the text 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. 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).
KEYWORDS
  tablelist, editing, text

Contents Start page

## Interactive Cell Editing Using the spinbox Widget

DESCRIPTION
  The temporary embedded spinbox widget used for interactive cell editing will be created with its `-state` option set to `normal`, which makes the widget editable. You can use the script corresponding to the `-editstartcommand` tablelist configuration option to set the state of the spinbox to `readonly` or define validations for it, as well as for setting its (range of) values and its `-wrap` option.
KEYWORDS
  tablelist, editing, spinbox

Contents Start page

## Interactive Cell Editing Using the checkbutton Widget

DESCRIPTION
  On Windows, Mac OS Classic, and Mac OS X Aqua the temporary embedded checkbutton widget used for interactive cell editing will be created with explicitly set values for its `-borderwidth`, `-font`, `-padx`, `-pady`, and `-variable` options. In an X11 environment it will be created with explicitly set values for its `-borderwidth`, `-indicatoron`, `-image`, `-selectimage`, `-selectcolor`, and `-variable` options. You can use the script corresponding to the `-editstartcommand` tablelist configuration option to set any other configuration options, like `-offvalue` and `-onvalue`, according to the internal values of the cells. Since the default values of the `-offvalue` and `-onvalue` checkbutton options are `0` and `1`, you don't need to change these options if the cells have the same internal values `0` and `1`.
KEYWORDS
  tablelist, editing, checkbutton

Contents Start page