Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Comment: | * doc/*.html: Added a "Virtual Events" section to the reference manual; updated to reflect the changes. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: | 2f912ce0410c5726a0e4017effeaab807c710935 |
User & Date: | csaba 2013-04-13 18:39:17 |
2013-04-13
| ||
18:40 | * ../../examples/*.tcl: Bumped the version number to 5.8. check-in: e1ee5b45d2 user: csaba tags: trunk | |
18:39 | * doc/*.html: Added a "Virtual Events" section to the reference manual; updated to reflect the changes. check-in: 2f912ce041 user: csaba tags: trunk | |
18:36 | * CHANGES.txt: Updated to reflect the changes. check-in: ac6d4297ea user: csaba tags: trunk | |
Changes to modules/tablelist/doc/index.html.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
..
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
<html> <head> <title>The Multi-Column Listbox and Tree Widget Package Tablelist 5.7</title> <meta name="Author" content="Csaba Nemethi"> <meta name="Keywords" content= "tablelist, multi-column, listbox, tree, widget, tile"> </head> <body bgcolor="#FFFFFF"> <div align="center"> <h1>The Multi-Column Listbox and Tree Widget Package Tablelist 5.7</h1> <h3>by</h3> <h2>Csaba Nemethi</h2> <address> <a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a> ................................................................................ the BWidget Package</a></p> <p><a href="tablelistIwidgets.html">Interactive Tablelist Cell Editing Using the Iwidgets Package</a></p> <p><a href="tablelistCombobox.html">Interactive Tablelist Cell Editing Using the combobox Package</a></p> <p><a href="tablelistMentry.html">Interactive Tablelist Cell Editing Using the Mentry Package</a></p> <p><a href="tablelistThemes.html">Commands Related to Tile Themes</a></p> </body> </html> |
|
|
>
>
>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
..
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
<html> <head> <title>The Multi-Column Listbox and Tree Widget Package Tablelist 5.8</title> <meta name="Author" content="Csaba Nemethi"> <meta name="Keywords" content= "tablelist, multi-column, listbox, tree, widget, tile"> </head> <body bgcolor="#FFFFFF"> <div align="center"> <h1>The Multi-Column Listbox and Tree Widget Package Tablelist 5.8</h1> <h3>by</h3> <h2>Csaba Nemethi</h2> <address> <a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a> ................................................................................ the BWidget Package</a></p> <p><a href="tablelistIwidgets.html">Interactive Tablelist Cell Editing Using the Iwidgets Package</a></p> <p><a href="tablelistCombobox.html">Interactive Tablelist Cell Editing Using the combobox Package</a></p> <p><a href="tablelistCtext.html">Interactive Tablelist Cell Editing Using the ctext Package</a></p> <p><a href="tablelistMentry.html">Interactive Tablelist Cell Editing Using the Mentry Package</a></p> <p><a href="tablelistThemes.html">Commands Related to Tile Themes</a></p> </body> </html> |
Changes to modules/tablelist/doc/tablelist.html.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ... 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 ... 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 ... 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 ... 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 ... 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 ... 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 ... 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 ... 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 .... 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 .... 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 .... 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 .... 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 |
</style> </head> <body bgcolor="#FFFFFF"> <div align="center"> <h1>Tablelist Programmer's Guide</h1> <h2>For Tablelist Version 5.7</h2> <h3>by</h3> <h2>Csaba Nemethi</h2> <address> <a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a> ................................................................................ <p>The Tablelist package provides a great variety of tree styles controlling the look & feel of the column that displays the tree hierarchy with the aid of indentations and expand/collapse controls.</p> <p>Interactive editing of the elements of a tablelist widget can be enabled for individual cells and for entire columns. A great variety of widgets from the Tk core and from the packages tile, BWidget, Iwidgets, combobox, and Mentry (or Mentry_tile) is supported for being used as embedded edit window. In addition, a rich set of keyboard bindings is provided for a comfortable navigation between the editable cells.</p> <p>The Tcl command corresponding to a tablelist widget is very similar to the one associated with a normal listbox. There are column-, row-, and cell-specific counterparts of the <code>configure</code> and <code>cget</code> subcommands (<code>columnconfigure</code>, <code>rowconfigure</code>, <code>cellconfigure</code>, ...). They can be used, among others, to insert images into the cells and the header labels, ................................................................................ <a href="http://www.nemethi.de">http://www.nemethi.de</a> </address> </blockquote> <h3><a name="ov_get"></a>How to get it?</h3> <p>Tablelist is available for free download from the same URL as Wcb. The distribution file is <code>tablelist5.7.tar.gz</code> for UNIX and <code>tablelist5_7.zip</code> for Windows. These files contain the same information, except for the additional carriage return character preceding the linefeed at the end of each line in the text files for Windows.</p> <p>Tablelist is also hosted on SourceForge, as part of tklib, which in turn is contained in the tcllib project, having the address</p> <blockquote> <address> <a href= "http://core.tcl.tk/tklib">http://core.tcl.tk/tklib</a> </address> </blockquote> <h3><a name="ov_install"></a>How to install it?</h3> <p>Install the package as a subdirectory of one of the directories given by the <code>auto_path</code> variable. For example, you can install it as ................................................................................ a directory at the same level as the Tcl and Tk script libraries. The locations of these library directories are given by the <code>tcl_library</code> and <code>tk_library</code> variables, respectively.</p> <p>To install Tablelist <i>on UNIX</i>, <code>cd</code> to the desired directory and unpack the distribution file <code>tablelist5.7.tar.gz</code>:</p> <blockquote> <pre> gunzip -c tablelist5.7.tar.gz | tar -xf - </pre> </blockquote> <p>This command will create a directory named <code>tablelist5.7</code>, with the subdirectories <code>demos</code>, <code>doc</code>, and <code>scripts</code>.</p> <p><i>On Windows</i>, use WinZip or some other program capable of unpacking the distribution file <code>tablelist5_7.zip</code> into the directory <code>tablelist5.7</code>, with the subdirectories <code>demos</code>, <code>doc</code>, and <code>scripts</code>.</p> <p>The file <code>tablelistEdit.tcl</code> in the <code>scripts</code> directory is only needed for applications making use of interactive cell editing. Similarly, the file <code>tablelistMove.tcl</code> in the same directory is only required for scripts invoking the <code>move</code> or <code>movecolumn</code> command. Finally, the file ................................................................................ name per package.</p> <p>Please note that <b>ActiveTcl versions 8.5 and later use a modified package mechanism, which only exports the all-lowercase names <code>tablelist</code> and <code>tablelist_tile</code></b>.</p> <p><b>REMARK:</b> If you have an earlier Tablelist version as part of ActiveTcl 8.5 or above and the new Tablelist release 5.7, then it is highly recommended to specify the version number <code>5.7</code> in the <code>package require</code> command, because otherwise the interpreter will load the old Tablelist version included in ActiveTcl as Tcl Module. The <a href="#examples">examples</a> below use the statement <code>package require tablelist 5.7</code>, and their tile-based counterparts invoke the command <code>package require tablelist_tile 5.7</code>.</p> <p>Since the packages Tablelist and Tablelist_tile are implemented in the <code>tablelist</code> namespace, you must either invoke the</p> <blockquote> <pre> namespace import tablelist::<i>pattern</i> ?tablelist::<i>pattern ...</i>? ................................................................................ newer tile versions this is considered a Really Bad Idea, causing many things to break. Instead, <b>you should explicitly invoke <code>ttk::frame</code>, <code>ttk::label</code>, etc. whenever you want to use a tile widget</b>.</p> <p><b>Overriding some other Tk widgets at global scope may be equally dangerous when using various widgets from the Tk core and from the packages BWidget, Iwidgets, combobox (by Bryan Oakley), and Mentry for interactive cell editing</b>, because these packages expect Tk widgets, which may not always be replaced by their tile counterparts.</p> <p>Another restriction to be taken into account (as of tile version 0.8) is due to the fact that the <code>(ttk::)style theme use</code> command can only be used to set the current theme, but not to retrieve it. For this reason, the package Tablelist_tile makes use of the variable <code>ttk::currentTheme</code> or <code>tile::currentTheme</code> (depending on the tile version), which is set by the ................................................................................ use the <code>tablelist::library</code> variable to find the location of the file. For example, assuming that your Tablelist installation has the directory structure described in the <a href="#ov_install">How to install it?</a> section, the required commands are: <blockquote> <pre> package require tablelist 5.7 source [file join $tablelist::library demos config.tcl] </pre> </blockquote> </li> </ul> <p>In both cases, the script will print the following message to ................................................................................ known from the standard Tk widgets. The <code>demo::displayConfig</code> procedure inserts the items of this list into a scrolled tablelist with 5 dynamic-width columns and interactive sort capability, and returns the name of the newly created tablelist widget:</p> <blockquote> <pre> package require tablelist 5.7 namespace eval demo { # # Get the current windowing system ("x11", "win32", "classic", or "aqua") # and add some entries to the Tk option database for the following # widget hierarchy within a top-level widget of the class DemoTop: # ................................................................................ <code>browseTree.tcl</code>. We will restrict the description below to the second one, which requires Tk 8.3 or later, due to the use of several tree-related tablelist options and subcommands.</p> <blockquote> <pre> package require Tk 8.3 package require tablelist 5.7 namespace eval demo { variable dir [file dirname [info script]] # # Create two images, needed in the procedure putChildren # ................................................................................ in the <a href="#ex_browse">previous section</a>. In the following we will only present a few procedures that invoke tablelist commands not encountered in the examples above:</p> <blockquote> <pre> package require Tk 8.3 package require tablelist 5.7 # # Add some entries to the Tk option database # set dir [file dirname [info script]] source [file join $dir option.tcl] ................................................................................ <h3><a name="ex_editing"></a>Advanced interactive tablelist cell editing</h3> <p>The scripts <code>tileWidgets.tcl</code>, <code>bwidget.tcl</code>, <code>iwidgets.tcl</code>, and <code>miscWidgets.tcl</code> in the <code>demos</code> directory create a tablelist widget displaying some parameters of 16 serial lines, and demonstrate how to use various widgets from the Tk core and from the packages tile, BWidget, Iwidgets, combobox (by Bryan Oakley), and Mentry (or Mentry_tile) for interactive cell editing. The following figure shows the tablelist widget, together with a BWidget ComboBox used to edit the contents of one of its cells:</p> <p><img src="bwidget.png" alt="Serial Line Configuration" width="757" height= "369"></p> <p>Here is the relevant code segment from the script <code>bwidget.tcl</code> (the scripts <code>tileWidgets.tcl</code>, <code>iwidgets.tcl</code>, and <code>miscWidgets.tcl</code> are similar):</p> <blockquote> <pre> package require Tk 8.4 ;# because of "-compound" package require tablelist 5.7 package require BWidget wm title . "Serial Line Configuration" # # Add some entries to the Tk option database # ................................................................................ <p><img src="embeddedWindows.png" alt="Embedded Windows" width="399" height= "268"></p> <p>First, we create and populate the tablelist widget:</p> <blockquote> <pre> package require tablelist 5.7 wm title . "Tk Library Scripts" # # Add some entries to the Tk option database # set dir [file dirname [info script]] ................................................................................ red color:</p> <p>First, we replace the starting lines</p> <blockquote> <pre> package require Tk 8.3 ;# because of entry validation package require tablelist 5.7 </pre> </blockquote> <p>with</p> <blockquote> <pre> package require tablelist<span>_tile</span> 5.7 </pre> </blockquote> <p>and the command</p> <blockquote> <pre> |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ... 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 ... 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 ... 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 ... 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 ... 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 ... 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 ... 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 ... 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 .... 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 .... 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 .... 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 .... 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 |
</style> </head> <body bgcolor="#FFFFFF"> <div align="center"> <h1>Tablelist Programmer's Guide</h1> <h2>For Tablelist Version 5.8</h2> <h3>by</h3> <h2>Csaba Nemethi</h2> <address> <a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a> ................................................................................ <p>The Tablelist package provides a great variety of tree styles controlling the look & feel of the column that displays the tree hierarchy with the aid of indentations and expand/collapse controls.</p> <p>Interactive editing of the elements of a tablelist widget can be enabled for individual cells and for entire columns. A great variety of widgets from the Tk core and from the packages tile, BWidget, Iwidgets, combobox, ctext, and Mentry (or Mentry_tile) is supported for being used as embedded edit window. In addition, a rich set of keyboard bindings is provided for a comfortable navigation between the editable cells.</p> <p>The Tcl command corresponding to a tablelist widget is very similar to the one associated with a normal listbox. There are column-, row-, and cell-specific counterparts of the <code>configure</code> and <code>cget</code> subcommands (<code>columnconfigure</code>, <code>rowconfigure</code>, <code>cellconfigure</code>, ...). They can be used, among others, to insert images into the cells and the header labels, ................................................................................ <a href="http://www.nemethi.de">http://www.nemethi.de</a> </address> </blockquote> <h3><a name="ov_get"></a>How to get it?</h3> <p>Tablelist is available for free download from the same URL as Wcb. The distribution file is <code>tablelist5.8.tar.gz</code> for UNIX and <code>tablelist5_8.zip</code> for Windows. These files contain the same information, except for the additional carriage return character preceding the linefeed at the end of each line in the text files for Windows.</p> <p>Tablelist is also hosted on SourceForge, as part of tklib, which in turn is contained in the tcllib project, having the address</p> <blockquote> <address> <a href= "http://sourceforge.net/projects/tcllib">http://sourceforge.net/projects/tcllib</a> </address> </blockquote> <h3><a name="ov_install"></a>How to install it?</h3> <p>Install the package as a subdirectory of one of the directories given by the <code>auto_path</code> variable. For example, you can install it as ................................................................................ a directory at the same level as the Tcl and Tk script libraries. The locations of these library directories are given by the <code>tcl_library</code> and <code>tk_library</code> variables, respectively.</p> <p>To install Tablelist <i>on UNIX</i>, <code>cd</code> to the desired directory and unpack the distribution file <code>tablelist5.8.tar.gz</code>:</p> <blockquote> <pre> gunzip -c tablelist5.8.tar.gz | tar -xf - </pre> </blockquote> <p>This command will create a directory named <code>tablelist5.8</code>, with the subdirectories <code>demos</code>, <code>doc</code>, and <code>scripts</code>.</p> <p><i>On Windows</i>, use WinZip or some other program capable of unpacking the distribution file <code>tablelist5_8.zip</code> into the directory <code>tablelist5.8</code>, with the subdirectories <code>demos</code>, <code>doc</code>, and <code>scripts</code>.</p> <p>The file <code>tablelistEdit.tcl</code> in the <code>scripts</code> directory is only needed for applications making use of interactive cell editing. Similarly, the file <code>tablelistMove.tcl</code> in the same directory is only required for scripts invoking the <code>move</code> or <code>movecolumn</code> command. Finally, the file ................................................................................ name per package.</p> <p>Please note that <b>ActiveTcl versions 8.5 and later use a modified package mechanism, which only exports the all-lowercase names <code>tablelist</code> and <code>tablelist_tile</code></b>.</p> <p><b>REMARK:</b> If you have an earlier Tablelist version as part of ActiveTcl 8.5 or above and the new Tablelist release 5.8, then it is highly recommended to specify the version number <code>5.8</code> in the <code>package require</code> command, because otherwise the interpreter will load the old Tablelist version included in ActiveTcl as Tcl Module. The <a href="#examples">examples</a> below use the statement <code>package require tablelist 5.8</code>, and their tile-based counterparts invoke the command <code>package require tablelist_tile 5.8</code>.</p> <p>Since the packages Tablelist and Tablelist_tile are implemented in the <code>tablelist</code> namespace, you must either invoke the</p> <blockquote> <pre> namespace import tablelist::<i>pattern</i> ?tablelist::<i>pattern ...</i>? ................................................................................ newer tile versions this is considered a Really Bad Idea, causing many things to break. Instead, <b>you should explicitly invoke <code>ttk::frame</code>, <code>ttk::label</code>, etc. whenever you want to use a tile widget</b>.</p> <p><b>Overriding some other Tk widgets at global scope may be equally dangerous when using various widgets from the Tk core and from the packages BWidget, Iwidgets, combobox (by Bryan Oakley), ctext, and Mentry for interactive cell editing</b>, because these packages expect Tk widgets, which may not always be replaced by their tile counterparts.</p> <p>Another restriction to be taken into account (as of tile version 0.8) is due to the fact that the <code>(ttk::)style theme use</code> command can only be used to set the current theme, but not to retrieve it. For this reason, the package Tablelist_tile makes use of the variable <code>ttk::currentTheme</code> or <code>tile::currentTheme</code> (depending on the tile version), which is set by the ................................................................................ use the <code>tablelist::library</code> variable to find the location of the file. For example, assuming that your Tablelist installation has the directory structure described in the <a href="#ov_install">How to install it?</a> section, the required commands are: <blockquote> <pre> package require tablelist 5.8 source [file join $tablelist::library demos config.tcl] </pre> </blockquote> </li> </ul> <p>In both cases, the script will print the following message to ................................................................................ known from the standard Tk widgets. The <code>demo::displayConfig</code> procedure inserts the items of this list into a scrolled tablelist with 5 dynamic-width columns and interactive sort capability, and returns the name of the newly created tablelist widget:</p> <blockquote> <pre> package require tablelist 5.8 namespace eval demo { # # Get the current windowing system ("x11", "win32", "classic", or "aqua") # and add some entries to the Tk option database for the following # widget hierarchy within a top-level widget of the class DemoTop: # ................................................................................ <code>browseTree.tcl</code>. We will restrict the description below to the second one, which requires Tk 8.3 or later, due to the use of several tree-related tablelist options and subcommands.</p> <blockquote> <pre> package require Tk 8.3 package require tablelist 5.8 namespace eval demo { variable dir [file dirname [info script]] # # Create two images, needed in the procedure putChildren # ................................................................................ in the <a href="#ex_browse">previous section</a>. In the following we will only present a few procedures that invoke tablelist commands not encountered in the examples above:</p> <blockquote> <pre> package require Tk 8.3 package require tablelist 5.8 # # Add some entries to the Tk option database # set dir [file dirname [info script]] source [file join $dir option.tcl] ................................................................................ <h3><a name="ex_editing"></a>Advanced interactive tablelist cell editing</h3> <p>The scripts <code>tileWidgets.tcl</code>, <code>bwidget.tcl</code>, <code>iwidgets.tcl</code>, and <code>miscWidgets.tcl</code> in the <code>demos</code> directory create a tablelist widget displaying some parameters of 16 serial lines, and demonstrate how to use various widgets from the Tk core and from the packages tile, BWidget, Iwidgets, combobox (by Bryan Oakley), ctext, and Mentry (or Mentry_tile) for interactive cell editing. The following figure shows the tablelist widget, together with a BWidget ComboBox used to edit the contents of one of its cells:</p> <p><img src="bwidget.png" alt="Serial Line Configuration" width="757" height= "369"></p> <p>Here is the relevant code segment from the script <code>bwidget.tcl</code> (the scripts <code>tileWidgets.tcl</code>, <code>iwidgets.tcl</code>, and <code>miscWidgets.tcl</code> are similar):</p> <blockquote> <pre> package require Tk 8.4 ;# because of "-compound" package require tablelist 5.8 package require BWidget wm title . "Serial Line Configuration" # # Add some entries to the Tk option database # ................................................................................ <p><img src="embeddedWindows.png" alt="Embedded Windows" width="399" height= "268"></p> <p>First, we create and populate the tablelist widget:</p> <blockquote> <pre> package require tablelist 5.8 wm title . "Tk Library Scripts" # # Add some entries to the Tk option database # set dir [file dirname [info script]] ................................................................................ red color:</p> <p>First, we replace the starting lines</p> <blockquote> <pre> package require Tk 8.3 ;# because of entry validation package require tablelist 5.8 </pre> </blockquote> <p>with</p> <blockquote> <pre> package require tablelist<span>_tile</span> 5.8 </pre> </blockquote> <p>and the command</p> <blockquote> <pre> |
Changes to modules/tablelist/doc/tablelistBWidget.html.
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
..
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
<meta name="Keywords" content="tablelist, editing, BWidget"> </head> <body bgcolor="#FFFFFF"> <div align="center"> <h1>Interactive Tablelist Cell Editing Using the BWidget Package</h1> <h2>For Tablelist Version 5.7</h2> <h3>by</h3> <h2>Csaba Nemethi</h2> <address> <a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a> ................................................................................ <h2><a name="overview"></a>Overview</h2> <p>The BWidget package is a library extension for Tcl/Tk versions 8.1.1 or higher, written in pure Tcl/Tk code. Its download location is</p> <blockquote> <address> <a href="http://core.tcl.tk/bwidget">http://core.tcl.tk/bwidget</a> </address> </blockquote> <p>Tablelist supports interactive cell editing with the aid of the Entry, SpinBox, and ComboBox widgets from the BWidget package. The steps needed for using one of these widgets for editing the cells of a given column are as follows:</p> |
|
|
|
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
..
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
<meta name="Keywords" content="tablelist, editing, BWidget"> </head> <body bgcolor="#FFFFFF"> <div align="center"> <h1>Interactive Tablelist Cell Editing Using the BWidget Package</h1> <h2>For Tablelist Version 5.8</h2> <h3>by</h3> <h2>Csaba Nemethi</h2> <address> <a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a> ................................................................................ <h2><a name="overview"></a>Overview</h2> <p>The BWidget package is a library extension for Tcl/Tk versions 8.1.1 or higher, written in pure Tcl/Tk code. Its download location is</p> <blockquote> <address> <a href="http://tcllib.sourceforge.net">http://tcllib.sourceforge.net</a> </address> </blockquote> <p>Tablelist supports interactive cell editing with the aid of the Entry, SpinBox, and ComboBox widgets from the BWidget package. The steps needed for using one of these widgets for editing the cells of a given column are as follows:</p> |
Changes to modules/tablelist/doc/tablelistBinding.html.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<meta name="Keywords" content="tablelist, binding script">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<h1>Helper Commands Used in Tablelist Binding Scripts</h1>
<h2>For Tablelist Version 5.7</h2>
<h3>by</h3>
<h2>Csaba Nemethi</h2>
<address>
<a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a>
|
| |
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<meta name="Keywords" content="tablelist, binding script">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<h1>Helper Commands Used in Tablelist Binding Scripts</h1>
<h2>For Tablelist Version 5.8</h2>
<h3>by</h3>
<h2>Csaba Nemethi</h2>
<address>
<a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a>
|
Changes to modules/tablelist/doc/tablelistColSort.html.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 ... 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 |
<meta name="Keywords" content="tablelist, sort, column, widget"> </head> <body bgcolor="#FFFFFF"> <div align="center"> <h1>Commands for Interactive Sorting by One or More Columns</h1> <h2>For Tablelist Version 5.7</h2> <h3>by</h3> <h2>Csaba Nemethi</h2> <address> <a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a> ................................................................................ "tablelistWidget.html#resetsortinfo">resetsortinfo</a></b></code> subcommand was made, then the last argument passed to <code><b>sortbycolumn</b></code> will be <code><b>-decreasing</b></code>, otherwise <code><b>-increasing</b></code>. <p>After sorting the items, the virtual event <code><b><<TablelistColumnSorted>></b></code> is generated. The command returns the corresponding sort order, as <code><b>decreasing</b></code> or <code><b>increasing</b></code>.</p> <p>If the specified column's <code><b><a href= "tablelistWidget.html#col_showlinenumbers">-showlinenumbers</a></b></code> option has been set to true, then the actions described above are not performed and the return value is an empty string.</p> <p><code><b>tablelist::sortByColumn</b></code> is usually specified as ................................................................................ vice-versa; (b) otherwise the column index is appended to the list of sort columns and the value <code><b>increasing</b></code> is appended to the list of sort orders. <p>After sorting the items by passing the two updated lists to the <code><b>sortbycolumnlist</b></code> subcommand, the virtual event <code><b><<TablelistColumnsSorted>></b></code> (note the plural form!) is generated. The command returns the new sort order corresponding to the given column, as <code><b>decreasing</b></code> or <code><b>increasing</b></code>.</p> <p>If the specified column's <code><b><a href= "tablelistWidget.html#col_showlinenumbers">-showlinenumbers</a></b></code> option has been set to true, then the actions described above are not performed and the return value is an empty string.</p> <p><code><b>tablelist::addToSortColumns</b></code> is usually specified |
| | > > | > > | > > > | < > |
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 ... 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 |
<meta name="Keywords" content="tablelist, sort, column, widget"> </head> <body bgcolor="#FFFFFF"> <div align="center"> <h1>Commands for Interactive Sorting by One or More Columns</h1> <h2>For Tablelist Version 5.8</h2> <h3>by</h3> <h2>Csaba Nemethi</h2> <address> <a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a> ................................................................................ "tablelistWidget.html#resetsortinfo">resetsortinfo</a></b></code> subcommand was made, then the last argument passed to <code><b>sortbycolumn</b></code> will be <code><b>-decreasing</b></code>, otherwise <code><b>-increasing</b></code>. <p>After sorting the items, the virtual event <code><b><<TablelistColumnSorted>></b></code> is generated. For Tk versions 8.5 or higher, this virtual event is generated with its <code><b>-data</b></code> option set to a list consisting of the numerical column index and the sort order (<code><b>decreasing</b></code> or <code><b>increasing</b></code>). The command returns the sort order, as <code><b>decreasing</b></code> or <code><b>increasing</b></code>.</p> <p>If the specified column's <code><b><a href= "tablelistWidget.html#col_showlinenumbers">-showlinenumbers</a></b></code> option has been set to true, then the actions described above are not performed and the return value is an empty string.</p> <p><code><b>tablelist::sortByColumn</b></code> is usually specified as ................................................................................ vice-versa; (b) otherwise the column index is appended to the list of sort columns and the value <code><b>increasing</b></code> is appended to the list of sort orders. <p>After sorting the items by passing the two updated lists to the <code><b>sortbycolumnlist</b></code> subcommand, the virtual event <code><b><<TablelistColumnsSorted>></b></code> (note the plural form!) is generated. For Tk versions 8.5 or higher, this virtual event is generated with its <code><b>-data</b></code> option set to a list consisting of the two above-mentioned updated lists passed to <code><b>sortbycolumnlist</b></code> as arguments. The command returns the new sort order corresponding to the given column, as <code><b>decreasing</b></code> or <code><b>increasing</b></code>.</p> <p>If the specified column's <code><b><a href= "tablelistWidget.html#col_showlinenumbers">-showlinenumbers</a></b></code> option has been set to true, then the actions described above are not performed and the return value is an empty string.</p> <p><code><b>tablelist::addToSortColumns</b></code> is usually specified |
Changes to modules/tablelist/doc/tablelistCombobox.html.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<meta name="Keywords" content="tablelist, editing, combobox">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<h1>Interactive Tablelist Cell Editing Using the combobox Package</h1>
<h2>For Tablelist Version 5.7</h2>
<h3>by</h3>
<h2>Csaba Nemethi</h2>
<address>
<a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a>
|
| |
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<meta name="Keywords" content="tablelist, editing, combobox">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<h1>Interactive Tablelist Cell Editing Using the combobox Package</h1>
<h2>For Tablelist Version 5.8</h2>
<h3>by</h3>
<h2>Csaba Nemethi</h2>
<address>
<a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a>
|
Added modules/tablelist/doc/tablelistCtext.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 |
<html> <head> <title>Interactive Tablelist Cell Editing Using the ctext Package</title> <meta name="Author" content="Csaba Nemethi"> <meta name="Keywords" content="tablelist, editing, ctext"> </head> <body bgcolor="#FFFFFF"> <div align="center"> <h1>Interactive Tablelist Cell Editing Using the ctext Package</h1> <h2>For Tablelist Version 5.8</h2> <h3>by</h3> <h2>Csaba Nemethi</h2> <address> <a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a> </address> </div> <hr> <h2><a name="contents"></a>Contents</h2> <ul> <li><a href="#overview">Overview</a></li> <li><a href="#ctext">The <code><b>tablelist::addCtext</b></code> Command</a></li> </ul> <div align="center"> <p><a href="index.html">Start page</a></p> </div> <hr> <h2><a name="overview"></a>Overview</h2> <p>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 in turn is contained in the tcllib project, having the address</p> <blockquote> <address> <a href= "http://sourceforge.net/projects/tcllib">http://sourceforge.net/projects/tcllib</a> </address> </blockquote> <p>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:</p> <ol> <li>Register the ctext widget for interactive cell editing by invoking the <code><b><a href= "#ctext">tablelist::addCtext</a></b></code> command described below.<br> </li> <li>Use the tablelist widget's <code><b><a href= "tablelistWidget.html#columnconfigure">columnconfigure</a></b></code> subcommand to set the given column's <code><b><a href= "tablelistWidget.html#col_editable">-editable</a></b></code> option to true and its <code><b><a href= "tablelistWidget.html#col_editwindow">-editwindow</a></b></code> option to the value returned by the command mentioned above. (These options are supported at cell level, too, with the aid of the <code><b><a href= "tablelistWidget.html#cellconfigure">cellconfigure</a></b></code> subcommand.)</li> </ol> <div align="center"> <p><a href="#contents">Contents</a> <a href= "index.html">Start page</a></p> </div> <hr> <h2><a name="ctext"></a>The <code><b>tablelist::addCtext</b></code> Command</h2> <dl> <dt><b>NAME</b></dt> <dd><code>tablelist::addCtext</code> - Register the ctext widget for interactive cell editing</dd> <dt><br> <b>SYNOPSIS</b></dt> <dd> <pre> <b>tablelist::addCtext</b> ?<i>name</i>? </pre> </dd> <dt><b>DESCRIPTION</b></dt> <dd>This command registers the ctext widget for interactive cell editing in tablelist widgets. The optional argument specifies the name to be used for the ctext widget as the value of the <code><b><a href= "tablelistWidget.html#col_editwindow">-editwindow</a></b></code> column or cell configuration option. It may be any string that is different from the <a href="tablelistTkCore.html">Tk core</a> and <a href= "tablelistTile.html">tile</a> edit window names. The default is <code><b>ctext</b></code>. The command returns its <code><i>name</i></code> argument.</dd> <dd><br> The temporary embedded ctext widget used for interactive cell editing will be created with its <code><b>-padx</b></code> and <code><b>-pady</b></code> options set to <code>2</code>, its <code><b>-wrap</b></code> option set to <code><b>none</b></code>, and its initial height set to the number of lines contained in it. There is, however, an exception from this rule: If the <code><b><a href= "tablelistWidget.html#col_wrap">-wrap</a></b></code> 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 <code><b>-wrap</b></code> option will be set to <code><b>word</b></code> and its initial height will equal the number of <i>display</i> lines (taking into account the line wraps) contained in it. You can use the script corresponding to the <code><b><a href= "tablelistWidget.html#editstartcommand">-editstartcommand</a></b></code> tablelist configuration option to override the initial settings according to your needs.</dd> <dd><br> If the ctext widget's <code><b>-wrap</b></code> option was set to <code><b>word</b></code> or <code><b>char</b></code> (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 <code><b>count -displaylines</b></code> ctext widget subcommand, introduced in Tk 8.5.)</dd> <dd><br> If the widget callback package Wcb was loaded into the interpreter (via <code><b>package require Wcb</b></code> or <code><b>package require wcb</b></code>) 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-<code><b>insert</b></code> and after-<code><b>delete</b></code> callback for the edit window. You can use the script corresponding to the <code><b><a href= "tablelistWidget.html#editstartcommand">-editstartcommand</a></b></code> tablelist configuration option to define further callbacks for the ctext widget.  (The above-mentioned callback is created via <code><b>wcb::cbappend</b></code>, <i>after</i> returning from that script.)</dd> <dd><br> The <code>Tab</code> key is reserved for navigation between the editable cells, but the user can insert a tabulator character into the ctext widget by pressing <code>Control-i</code>.</dd> <dd><br> Unlike in the case of the other widgets used for interactive cell editing (except the Tk core text widget), the <code>Return</code> and <code>KP_Enter</code> keys insert a newline character into the ctext widget. <code>Control-j</code> can also be used for inserting a newline. <code>Control-Return</code> and <code>Control-KP_Enter</code> terminate the editing and destroy the edit window.</dd> <dd><br> <code>Control-Home</code> and <code>Control-End</code> have their well-known text widget-specific bindings, just like <code>Meta-<</code> and <code>Meta-></code> if <code><b>tk_strictMotif</b></code> 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 <code>Alt-Home</code>/<code>Alt-End</code> or <code>Meta-Home</code>/<code>Meta-End</code> (<code>Command-Home</code>/<code>Command-End</code> on Mac OS Classic and Mac OS X Aqua).</dd> <dt><br> <b>KEYWORDS</b></dt> <dd>tablelist, editing, ctext</dd> </dl> <div align="center"> <p><a href="index.html">Start page</a></p> </div> </body> </html> |
Changes to modules/tablelist/doc/tablelistIwidgets.html.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<meta name="Keywords" content="tablelist, editing, Iwidgets">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<h1>Interactive Tablelist Cell Editing Using the Iwidgets Package</h1>
<h2>For Tablelist Version 5.7</h2>
<h3>by</h3>
<h2>Csaba Nemethi</h2>
<address>
<a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a>
|
| |
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<meta name="Keywords" content="tablelist, editing, Iwidgets">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<h1>Interactive Tablelist Cell Editing Using the Iwidgets Package</h1>
<h2>For Tablelist Version 5.8</h2>
<h3>by</h3>
<h2>Csaba Nemethi</h2>
<address>
<a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a>
|
Changes to modules/tablelist/doc/tablelistMentry.html.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<meta name="Keywords" content="tablelist, editing, Mentry">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<h1>Interactive Tablelist Cell Editing Using the Mentry Package</h1>
<h2>For Tablelist Version 5.7</h2>
<h3>by</h3>
<h2>Csaba Nemethi</h2>
<address>
<a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a>
|
| |
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<meta name="Keywords" content="tablelist, editing, Mentry">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<h1>Interactive Tablelist Cell Editing Using the Mentry Package</h1>
<h2>For Tablelist Version 5.8</h2>
<h3>by</h3>
<h2>Csaba Nemethi</h2>
<address>
<a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a>
|
Changes to modules/tablelist/doc/tablelistThemes.html.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<meta name="Keywords" content="tablelist, theme, tile">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<h1>Commands Related to Tile Themes</h1>
<h2>For Tablelist Version 5.7</h2>
<h3>by</h3>
<h2>Csaba Nemethi</h2>
<address>
<a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a>
|
| |
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<meta name="Keywords" content="tablelist, theme, tile">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<h1>Commands Related to Tile Themes</h1>
<h2>For Tablelist Version 5.8</h2>
<h3>by</h3>
<h2>Csaba Nemethi</h2>
<address>
<a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a>
|
Changes to modules/tablelist/doc/tablelistTile.html.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<meta name="Keywords" content="tablelist, editing, tile">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<h1>Interactive Tablelist Cell Editing Using Tile Widgets</h1>
<h2>For Tablelist Version 5.7</h2>
<h3>by</h3>
<h2>Csaba Nemethi</h2>
<address>
<a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a>
|
| |
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<meta name="Keywords" content="tablelist, editing, tile">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<h1>Interactive Tablelist Cell Editing Using Tile Widgets</h1>
<h2>For Tablelist Version 5.8</h2>
<h3>by</h3>
<h2>Csaba Nemethi</h2>
<address>
<a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a>
|
Changes to modules/tablelist/doc/tablelistTkCore.html.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<meta name="Keywords" content="tablelist, editing, Tk core">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<h1>Interactive Tablelist Cell Editing Using Tk Core Widgets</h1>
<h2>For Tablelist Version 5.7</h2>
<h3>by</h3>
<h2>Csaba Nemethi</h2>
<address>
<a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a>
|
| |
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<meta name="Keywords" content="tablelist, editing, Tk core">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<h1>Interactive Tablelist Cell Editing Using Tk Core Widgets</h1>
<h2>For Tablelist Version 5.8</h2>
<h3>by</h3>
<h2>Csaba Nemethi</h2>
<address>
<a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a>
|
Changes to modules/tablelist/doc/tablelistWidget.html.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 ... 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 ... 508 509 510 511 512 513 514 515 516 517 518 519 520 521 .... 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 .... 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 .... 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 .... 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 .... 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 .... 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 .... 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 .... 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 .... 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 .... 5476 5477 5478 5479 5480 5481 5482 5483 5484 5485 5486 5487 5488 5489 5490 .... 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 .... 6350 6351 6352 6353 6354 6355 6356 6357 6358 6359 6360 6361 6362 6363 6364 6365 6366 6367 6368 6369 6370 6371 6372 6373 .... 7649 7650 7651 7652 7653 7654 7655 7656 7657 7658 7659 7660 7661 7662 7663 7664 .... 7671 7672 7673 7674 7675 7676 7677 7678 7679 7680 7681 7682 7683 7684 7685 7686 7687 .... 8059 8060 8061 8062 8063 8064 8065 8066 8067 8068 8069 8070 8071 8072 8073 .... 8138 8139 8140 8141 8142 8143 8144 8145 8146 8147 8148 8149 8150 8151 8152 .... 8157 8158 8159 8160 8161 8162 8163 8164 8165 8166 8167 8168 8169 8170 8171 .... 8194 8195 8196 8197 8198 8199 8200 8201 8202 8203 8204 8205 8206 8207 8208 8209 .... 8210 8211 8212 8213 8214 8215 8216 8217 8218 8219 8220 8221 8222 8223 8224 8225 8226 .... 8283 8284 8285 8286 8287 8288 8289 8290 8291 8292 8293 8294 8295 8296 8297 8298 8299 8300 .... 8309 8310 8311 8312 8313 8314 8315 8316 8317 8318 8319 8320 8321 8322 8323 8324 .... 8331 8332 8333 8334 8335 8336 8337 8338 8339 8340 8341 8342 8343 8344 8345 8346 8347 8348 8349 8350 8351 8352 8353 8354 8355 8356 8357 8358 8359 8360 8361 8362 8363 8364 8365 8366 8367 8368 8369 8370 8371 8372 8373 8374 8375 8376 8377 8378 8379 8380 8381 8382 8383 8384 8385 8386 8387 8388 8389 8390 8391 8392 8393 8394 8395 8396 8397 8398 8399 8400 8401 8402 8403 8404 8405 8406 8407 8408 |
"tablelist, multi-column, listbox, tree, widget"> </head> <body bgcolor="#FFFFFF"> <div align="center"> <h1>The <code><b>tablelist::tablelist</b></code> Command</h1> <h2>For Tablelist Version 5.7</h2> <h3>by</h3> <h2>Csaba Nemethi</h2> <address> <a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a> ................................................................................ <b> gtk</b>|<b>klearlooks</b>|<b>mint</b>|<b>newWave</b>|<b>oxygen1</b>|<b>oxygen2</b>|<br> <b> phase</b>|<b>plastik</b>|<b>plastique</b>|<b>radiance</b>|<b>ubuntu</b>|<br> <b> vistaAero</b>|<b>vistaClassic</b>|<b>win7Aero</b>|<b>win7Classic</b>|<br> <b> winnative</b>|<b>winxpBlue</b>|<b>winxpOlive</b>|<b>winxpSilver</b></code></dd> <dd><code><b><a href="#width">-width</a></b> <i>characters</i></code></dd> <dt><br> <a href="#description">DESCRIPTION</a></dt> <dt><br> <a href="#colors_and_fonts">COLORS AND FONTS</a></dt> <dt><br> <a href="#col_options">COLUMN CONFIGURATION OPTIONS</a></dt> <dd><code><b><a href="#col_align">-align</a></b> <b>left</b>|<b>right</b>|<b>center</b></code></dd> <dd><code><b><a href="#col_background">-background</a></b> ................................................................................ <dd><code><b><a href="#cell_windowdestroy">-windowdestroy</a></b> <i>command</i></code></dd> <dd><code><b><a href="#cell_windowupdate">-windowupdate</a></b> <i>command</i></code></dd> <dt><br> <a href="#tree_widget">USING A TABLELIST AS MULTI-COLUMN TREE WIDGET</a></dt> <dt><br> <a href="#cell_editing">INTERACTIVE CELL EDITING</a></dt> <dt><br> <a href="#row_indices">ROW INDICES</a></dt> <dd> <pre> <i>number</i> <b>k</b><i>number</i> <b>active</b> <b>anchor</b> <b>end</b> <b>top</b> <b>bottom</b> <b>@</b><i>x</i><b>,</b><i>y</i> <i>name</i> </pre> ................................................................................ <i>index</i></code></dd> <dd><code><i>pathName</i> <b><a href= "#bodypath">bodypath</a></b></code></dd> <dd><code><i>pathName</i> <b><a href="#bodytag">bodytag</a></b></code></dd> <dd><code><i>pathName</i> <b><a href= "#cancelediting">cancelediting</a></b></code></dd> <dd><code><i>pathName</i> <b><a href="#cellattrib">cellattrib</a></b> <i>cellIndex</i> ?<i>name</i>? ?<i>value</i> <i>name</i> <i>value</i> ...?</code></dd> ................................................................................ <p>Specifies the desired width for the window, in average-size characters of the widget's font. If zero or less then the desired width for the window is made just large enough to hold all the columns in the tablelist widget.</p> </blockquote> </dd> <dt><a name="description"></a><b>DESCRIPTION</b></dt> <dd>The <code><b>tablelist::tablelist</b></code> command creates a new window named <code><i>pathName</i></code> and of the class <code><b>Tablelist</b></code>, and makes it into a <b>tablelist</b> widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the tablelist such as its colors, font, and columns. The <code><b>tablelist::tablelist</b></code> command returns its <code><i>pathName</i></code> argument. At the time this command is invoked, there must not exist a window named <code><i>pathName</i></code>, but <code><i>pathName</i></code>'s parent must exist.</dd> <dd><br> A tablelist is a multi-column listbox and tree widget, implemented as a mega-widget, consisting of a <b>body</b> and a <b>header</b>. The body displays a list of <b>items</b>, one per line. Each item is a list of <b>elements</b>, which are aligned in columns. In other words, an item is the contents of a row, and an element is the text contained in a cell. The header consists of label widgets displaying the column titles. The labels can be used, among others, for interactive column resizing and column-based sorting of the items, as described below.</dd> <dd><br> Each cell and each header label of a tablelist widget can also contain an image, which is placed to the left or right of the text, depending on the column's alignment. Instead of an image, a tablelist cell can also contain an embedded window, placed to the left or right of the text, just like an embedded image.</dd> <dd><br> When a tablelist is used as a tree widget, one of its columns will display the tree hierarchy with the aid of indentations and expand/collapse controls. The Tablelist package provides a great variety of tree styles controlling the look & feel of that column, and chooses the correct default style depending on the windowing system, operating system version, and tile theme. In a tablelist used as a multi-column tree widget, every row is at the same time a tree <b>node</b>, having exactly one <b>parent</b> node and any number of <b>child</b> nodes. The tree's origin is the invisible <b>root</b> node, which has no parent itself and whose children are the <b>top-level</b> nodes.</dd> <dd><br> The elements of a tablelist widget can, per default, be only edited programmatically. However, interactive editing can be enabled for individual cells and for entire columns. Per default, the interactive cell editing uses a temporary embedded entry widget, thus making sure that all the validation facilities available for entry widgets can be used during the editing process. A great variety of widgets from the packages BWidget, Iwidgets, combobox (by Bryan Oakley), and Mentry (or Mentry_tile), as well as Tk core text, spinbox, checkbutton, and menubutton widgets, along with tile entry, spinbox, combobox, checkbutton, and menubutton widgets are also supported as temporary embedded widgets used for cell editing. In addition, a rich set of keyboard bindings is provided for a comfortable navigation between the editable cells.</dd> <dd><br> When first created, a new tablelist widget has no items. Items may be added, deleted, or updated using widget commands described below. In addition, one or more items or elements may be selected. If a tablelist widget is exporting its selection (see the <code><b>-exportselection</b></code> option), then it will observe the standard X11 protocols for handling the selection. Tablelist widget selections are available as types <code><b>STRING</b></code> and <code><b>UTF8_STRING</b></code>; the value of the selection will be a text built by taking all of the rows having at least one non-hidden selected element, joining these elements together with tabs, and the resulting strings in turn with newlines. If a tablelist widget that is exporting its selection is the selection owner and some other window claims ownership of the selection away from it, then the virtual event <code><b><<TablelistSelectionLost>></b></code> is generated.</dd> <dd><br> It is not necessary for all the elements to be displayed in the tablelist widget at once; commands described below may be used to change the view in the window. Tablelist widgets allow scrolling in both directions using the standard <code><b>-xscrollcommand</b></code> and <code><b>-yscrollcommand</b></code> options. They also support scanning, as described below.</dd> <dd><br> Each tablelist widget, as well as each tablelist column, row, and cell may have any number of <b>attributes</b>, which can be used in commands that create or manipulate tablelist widgets for particular purposes.</dd> <dt><br> <a name="colors_and_fonts"></a><b>COLORS AND FONTS</b></dt> <dd> The <code><b>-background</b></code>, <code><b>-font</b></code>, <code><b>-foreground</b></code>, <code><b>-selectbackground</b></code>, and <code><b>-selectforeground</b></code> options can also be specified at column, row, and cell level, by using the <code><b><a href= "#columnconfigure">columnconfigure</a></b></code> (or <code><b><a href= "#configcolumnlist">configcolumnlist</a></b></code>, or <code><b><a href= "#configcolumns">configcolumns</a></b></code>), <code><b><a href= "#rowconfigure">rowconfigure</a></b></code> (or <code><b><a href= "#configrowlist">configrowlist</a></b></code>, or <code><b><a href= "#configrows">configrows</a></b></code>), and <code><b><a href= "#cellconfigure">cellconfigure</a></b></code> (or <code><b><a href= "#configcelllist">configcelllist</a></b></code>, or <code><b><a href= "#configcells">configcells</a></b></code>) subcommands of the Tcl command associated with the tablelist widget. For this reason, a particular cell can have up to four values for one and the same color or font option. If these values conflict, then the option specified at the highest priority level is used. The decreasing priority order is cell, row, column, widget. <p>If one of these options hasn't been specified at cell, row, or column level, or if its value for that level is an empty string (this is explicitly allowed), then that option will not be used at that particular level.</p> </dd> <dt><a name="col_options"></a><b>COLUMN CONFIGURATION OPTIONS</b></dt> <dd>The following options are currently supported by the <code><b><a href= "#columncget">columncget</a></b></code>, <code><b><a href= "#columnconfigure">columnconfigure</a></b></code>, <code><b><a href= "#configcolumnlist">configcolumnlist</a></b></code>, and <code><b><a href= "#configcolumns">configcolumns</a></b></code> commands:</dd> ................................................................................ <code><b>ttk::combobox</b></code>, <code><b>ttk::checkbutton</b></code>, or <code><b>ttk::menubutton</b></code> (the latter five only in the presence of the tile widget engine), or the value returned by one of the registration commands for widgets from the packages <a href= "tablelistBWidget.html">BWidget</a>, <a href= "tablelistIwidgets.html">Iwidgets</a>, <a href= "tablelistCombobox.html">combobox</a> (by Bryan Oakley), and <a href= "tablelistMentry.html">Mentry (or Mentry_tile)</a>. For example, you can use <code><b>-editwindow ComboBox</b></code> <i>after</i> registering the ComboBox widget for interactive cell editing with the aid of the <code><b><a href= "tablelistBWidget.html#ComboBox">tablelist::addBWidgetComboBox</a></b></code> command. Similarly, you can use <code><b>-editwindow combobox</b></code> <i>after</i> registering Bryan Oakley's ................................................................................ <dt><a name="col_hide"></a><code><b>-hide</b> <i>boolean</i></code></dt> <dd>Specifies whether to hide the column when displaying the widget or exporting its selection. The default value is <code>0</code>. After toggling the hidden state of a column, the <code><b><<TablelistColHiddenStateChanged>></b></code> virtual event is generated.</dd> <dt><br> <a name="col_labelalign"></a><code><b>-labelalign</b> <i>alignment</i></code></dt> <dd>Specifies how to align the column's title. It must be one of <code><b>left</b></code>, <code><b>right</b></code>, or ................................................................................ <a name="row_hide"></a><code><b>-hide</b> <i>boolean</i></code></dt> <dd> Specifies whether to hide the row when displaying the widget or exporting its selection. The default value is <code>0</code>. After toggling the hidden state of a row, the <code><b><<TablelistRowHiddenStateChanged>></b></code> virtual event is generated. <p>For technical reasons (the use of the <code><b>-elide</b></code> option for a text widget tag), this option is not supported for Tk versions earlier than 8.3.</p> <p><b>CAUTION:</b> Tk versions 8.3 - 8.4.12 had a bug that caused a segmentation fault if the whole content of a text widget was ................................................................................ <code><b>-background</b></code> and the cell's current background color, as well as the option name <code><b>-foreground</b></code> and the cell's current foreground color. The resulting script is then evaluated in the global scope. The specified command can use the colors passed to it as arguments to set the corresponding colors of the embedded window to the same values. <p>For example, if the embedded window is a text widget and you want for its background and foreground colors to be automatically adapted to the cell's current background and foreground colors, then you can achieve this by setting the <code><b>-windowupdate</b></code> cell configuration option to <code>updateWindow</code>, where the latter is the procedure implemented as follows:</p> <blockquote> <pre> proc updateWindow {tbl row col w args} { eval [list $w configure] $args } </pre> ................................................................................ level if the specified value is not an empty string. See the <a href="#colors_and_fonts">COLORS AND FONTS</a> section for further details on these options.</dt> </dl> </dd> <dt><br> <a name="tree_widget"></a><b>USING A TABLELIST AS MULTI-COLUMN TREE WIDGET</b></dt> <dd> When using a tablelist widget to display a tree hierarchy, there are a few rules to follow:<br> <ol> ................................................................................ <code>Return</code> or <code>KP_Enter</code>. Per default, the <code><b>editcell</b></code> subcommand creates a temporary entry widget and embeds it into the cell whose index was passed to it as argument. You can, however, use the <code><b>-editwindow</b></code> <a href= "#col_editwindow">column</a> or <a href="#cell_editwindow">cell</a> configuration option to specify another widget instead of an entry, like a Tk core text, spinbox, checkbutton, or menubutton widget, or a tile entry, spinbox, combobox, checkbutton, or menubutton, or one of the 18 currently supported widgets from the packages <a href= "tablelistBWidget.html">BWidget</a>, <a href= "tablelistIwidgets.html">Iwidgets</a>, <a href= "tablelistCombobox.html">combobox</a> (by Bryan Oakley), and <a href= "tablelistMentry.html">Mentry (or Mentry_tile)</a>. Before specifying a widget from one of these library packages as the value of the <code><b>-editwindow</b></code> column or cell configuration option, you must register it for interactive cell editing by invoking the corresponding <code><b>tablelist::add*</b></code> command. The above-mentioned Tk core and tile widgets are automatically registered for cell editing.</dd> ................................................................................ <dd><br> The editing of the text inserted into the edit window uses the widget-specific bindings for mouse and keyboard events, with a few extensions and changes, as described in the <a href= "#edit_bindings">DEFAULT BINDINGS FOR INTERACTIVE CELL EDITING</a> section. For example, in entry or entry-like components of the edit window, <code>Control-i</code> inserts a tab, <code>Control-j</code> inserts a newline, and if the edit window is a text widget then <code>Return</code> and <code>KP_Enter</code> insert a newline character, too. <code>Tab</code> and <code>Shift-Tab</code> are used for navigation between the editable cells, just like <code>Alt-Left</code>, <code>Alt-Right</code>, <code>Alt-Up</code>, <code>Alt-Down</code>, <code>Alt-Prior</code>, <code>Alt-Next</code>, <code>Alt-Home</code>, and <code>Alt-End</code> (as well as <code>Control-Home</code> and <code>Control-End</code>, except in the case of a text widget). On Mac OS Classic and Mac OS X Aqua the <code>Command</code> key is used instead of <code>Alt</code>. The editing can be aborted with the <code>Escape</code> key (or by invoking the <code><b><a href= "#cancelediting">cancelediting</a></b></code> subcommand) and terminated normally with <code>Return</code> or <code>KP_Enter</code> (together with <code>Control</code> for a text widget). The bindings for the keys used for normal termination of the editing just invoke the <code><b><a href="#finishediting">finishediting</a></b></code> subcommand; the latter can also be called explicitly to terminate the editing programmatically. Normal termination is also triggered by clicking with the left mouse button anywhere in the tablelist's body, outside the cell just being edited, or moving into another editable cell by using keyboard navigation.</dd> ................................................................................ <code><b>-editendcommand</b></code> option is to convert the edit window's text to the cell's new <i>internal</i> contents, which is necessary if, due to the <code><b><a href="#col_formatcommand">-formatcommand</a></b></code> column configuration option, the cell's internal value is different from its external representation. See the description of the <code><b><a href="#forceeditendcommand">-forceeditendcommand</a></b></code> option for more about the invocation of the command mentioned above.</dd> <dt><br> <a name="row_indices"></a><b>ROW INDICES</b></dt> <dd> Many of the widget commands for tablelist widgets take one or more row indices as arguments. A row index specifies a particular item of ................................................................................ be used when defining individual binding scripts for tablelist widgets. The main advantage of using this tag instead of the path name of the tablelist's body is that it enables you to write event handling scripts that are valid not only for the tablelist's body but also for the separators, multi-line cells, and embedded images.</dd> <dt><br> <a name="cancelediting"></a><code><i>pathName</i> <b>cancelediting</b></code></dt> <dd>This subcommand cancels the interactive editing of the contents of the cell whose index was passed to the <code><b><a href= "#editcell">editcell</a></b></code> subcommand, destroys the temporary widget embedded into the cell, and restores the original cell contents. This command enables you to cancel the interactive cell ................................................................................ "#editstartcommand">-editstartcommand</a></b></code> configuration option if that pre-edit callback encounters an error when preparing the text to be inserted into the edit window. The command is also invoked implicitly by pressing the <code>Escape</code> key when a cell is being edited. The return value is an empty string. Immediately before returning this value, the command generates the virtual event <code><b><<TablelistCellRestored>></b></code>. If no cell was being edited when the command was invoked then an empty string is returned without generating a virtual event.</dd> <dt><br> <a name="cellattrib"></a><code><i>pathName</i> <b>cellattrib</b> <i>cellIndex</i> ?<i>name</i>? ?<i>value</i> <i>name</i> <i>value</i> ...?</code></dt> <dd>Queries or modifies the attributes of the cell given by ................................................................................ if from within this script the <code><b><a href= "#rejectinput">rejectinput</a></b></code> subcommand was invoked then the cell's value is not changed and the embedded widget remains displayed in the cell; in this case the command returns the boolean value <code>0</code>. In all the other cases, the return value is <code>1</code>. Immediately before returning the value <code>1</code>, the command generates the virtual event <code><b><<TablelistCellUpdated>></b></code>. If no cell was being edited when the command was invoked then the same value <code>1</code> is returned but no virtual event is generated. <p>This subcommand is called <i>implicitly</i> by pressing <code>Return</code> or <code>KP_Enter</code> (together with <code>Control</code> if the edit window is a text widget) when editing a cell, or by clicking with the left mouse button anywhere in the tablelist's body, outside the cell just being edited, or moving into another editable cell by using keyboard navigation.</p> <p><b>REMARK:</b> There are also situations where an <i>explicit</i> invocation of this subcommand is needed, in order to make sure that the cell just being edited gets updated with the text entered by the user. For example, if a tablelist widget is part of a dialog used for editing some data, then the command associated with the button designed to accept the data should call this ................................................................................ <code><i>firstColumn</i></code> and <code><i>lastColumn</i></code> are indices specifying the first and last columns in the range whose visibility is to be toggled. The command's second form accepts a list <code><i>columnIndexList</i></code> of indices specifying the columns whose visibility is to be toggled. Returns an empty string. After toggling the hidden state of the specified columns, the <code><b><<TablelistColHiddenStateChanged>></b></code> virtual event is generated. The main advantage of using this command instead of invoking <code><b><a href= "#columnconfigure">columnconfigure</a></b></code> for each of the specified columns is that it causes only one redisplay of the widget's contents, thus being significantly faster.</dd> <dt><br> <a name="togglerowhide"></a><code><i>pathName</i> <b>togglerowhide</b> <i>first</i> <i>last</i></code><br> ................................................................................ <code><i>first</i></code> and <code><i>last</i></code> are indices specifying the first and last rows in the range whose visibility is to be toggled. The command's second form accepts a list <code><i>indexList</i></code> of indices specifying the rows whose visibility is to be toggled. Returns an empty string. After toggling the hidden state of the specified rows, the <code><b><<TablelistRowHiddenStateChanged>></b></code> virtual event is generated. Just like the <code><b>-hide</b></code> row configuration option, this subcommand is not supported for Tk versions earlier than 8.3. <p><b>CAUTION:</b> Tk versions 8.3 - 8.4.12 had a bug that caused a segmentation fault if the whole content of a text widget was elided. This bug was also present in Tk 8.5.a1 - 8.5.a3. When using one of these earlier Tk versions, this bug will produce a crash if all the rows of a tablelist widget are hidden. It is your responsibility to avoid such situations when using a Tk version ................................................................................ it. This <b>local drag & drop</b> operation ends when mouse button 1 is released, and can be canceled by pressing the <code>Escape</code> key. In both cases, the mouse cursor is reset to its original value, specified by the <code><b>-cursor</b></code> configuration option. After releasing mouse button 1 in the presence of a valid target, the source item is moved before the target row or just before the latter's first child, and the virtual event <code><b><<TablelistRowMoved>></b></code> is generated.</p> <p>Notice that, depending on the current mouse position during the local drag & drop, there can be a corresponding potential target row or not. For instance, a tree item cannot become a sibling of one of its descendants, and not all items might be allowed to have children or to become top-level ones (example: in a file manager, regular file items cannot be parents of other items and should not be ................................................................................ amount of the cursor motion. The interactive column resizing ends when mouse button 1 is released, and can be canceled by pressing the <code>Escape</code> key. In both cases, the mouse cursor is reset to its original value, specified by the <code><b>-cursor</b></code> configuration option. When the column resize operation is finished, the virtual event <code><b><<TablelistColumnResized>></b></code> is generated.<br> </li> <li>If mouse button 1 is pressed over a header label but outside the resize area described above and then dragged outside the label, and the value of the <code><b><a href= "#movablecolumns">-movablecolumns</a></b></code> configuration option is true, then the mouse cursor takes on the shape specified by the ................................................................................ 1 is released, and can be canceled by pressing the <code>Escape</code> key when the mouse pointer is outside the label. In both cases, the mouse cursor is reset to its original value, specified by the <code><b>-cursor</b></code> configuration option. After releasing mouse button 1, the source column is moved before the one indicated by the gap mentioned above and the virtual event <code><b><<TablelistColumnMoved>></b></code> is generated.<br> </li> <li>If mouse button 1 is pressed over a header label but outside the resize area described above and later released over the same label, and the command specified by the <code><b><a href= "#labelcommand">-labelcommand</a></b></code> option is a nonempty string, then this command is concatenated with the name of the ................................................................................ corresponding to that label are true, then the width of that column is set to zero, i.e., it is made just large enough to hold all the elements in the column, including the header (but no larger than the maximum width indicated by the <code><b><a href= "#col_maxwidth">-maxwidth</a></b></code> column configuration option), and the virtual event <code><b><<TablelistColumnResized>></b></code> is generated. The same action is triggered by double-clicking the resize area of a header label.<br> </li> <li>The Tablelist package defines the virtual event <code><b><<ShiftButton3>></b></code> as <code><b><Shift-Button-3></b></code> for all windowing systems and additionally as <code><b><Shift-Control-Button-1></b></code> for Mac OS Classic and Mac OS X Aqua. If this event occurs over a ................................................................................ header label and both the value of the <code><b><a href= "#resizablecolumns">-resizablecolumns</a></b></code> configuration option and that of the <code><b><a href= "#col_resizable">-resizable</a></b></code> option for the column corresponding to that label are true, then the width of that column is set to its last static width (if any) and the virtual event <code><b><<TablelistColumnResized>></b></code> is generated. The same action is triggered by double-clicking the resize area of a header label with the <code>Shift</code> key held down.</li> </ol> <p>If the tablelist's <code><b><a href="#state">state</a></b></code> is <code><b>disabled</b></code> then none of the above actions occur: the labels are completely insensitive.</p> <p>If you want to define non-default bindings for the header labels, it ................................................................................ </li> <li><code>Control-j</code> inserts a newline character into the edit window's entry or entry-like components (if any), at the point of the insertion cursor.<br> </li> <li>If the edit window is a text widget then <code>Return</code> and <code>KP_Enter</code> insert a newline character at the point of the insertion cursor. Otherwise they terminate the editing and destroy the edit window.<br> </li> <li><code>Control-Return</code> and <code>Control-KP_Enter</code> terminate the editing and destroy the edit window.<br> </li> <li><code>Escape</code> aborts the editing and destroys the edit ................................................................................ <li>When editing a cell that is not the only editable cell of the tablelist widget, <code>Tab</code> and <code>Shift-Tab</code> terminate the editing in the current cell, move the edit window into the next/previous editable cell of the tablelist, select the contents of the edit window's first entry or entry-like component (if any), and set the insertion cursor to its end. If the new edit window is a text widget then its contents are left unselected. Notice that these bindings replace the common inter-widget navigation via <code>Tab</code> and <code>Shift-Tab</code> with inter-cell navigation. Just like in the case of the text widget, <code>Control-Tab</code> and <code>Control-Shift-Tab</code> are intended to be used for widget-to-widget keyboard navigation during interactive cell editing. Unfortunately, this won't always work because some window managers intercept the latter key sequences and use them for their own purposes (like inter-workplace navigation). ................................................................................ <li>When editing a cell that is not the first/last editable cell within its row, <code>Alt-Left</code>/<code>Alt-Right</code> (<code>Command-Left</code>/<code>Command-Right</code> on Mac OS Classic and Mac OS X Aqua) terminates the editing in the current cell, moves the edit window into the previous/next editable cell of the row, selects the contents of the edit window's first entry or entry-like component (if any), and sets the insertion cursor to its end. If the new edit window is a text widget then its contents are left unselected. The key sequence <code>Meta-Left</code>/<code>Meta-Right</code> has the same effect as <code>Alt-Left</code>/<code>Alt-Right</code>. If <code><b>tk_strictMotif</b></code> is false and the edit window is not a text widget then <code>Meta-b</code> and <code>Meta-f</code> behave the same as <code>Alt-Left</code> and <code>Alt-Right</code>, respectively. If the edit window is a Tk or tile checkbutton or menubutton widget then <code>Left</code>/<code>Right</code> has the same effect as <code>Alt-Left</code>/<code>Alt-Right</code>.<br> </li> <li>When editing a cell that is not the first/last editable cell within its column, <code>Alt-Up</code>/<code>Alt-Down</code> (<code>Command-Up</code>/<code>Command-Down</code> on Mac OS Classic and Mac OS X Aqua) terminates the editing in the current cell, moves the edit window one line up/down within the column, selects the contents of the edit window's first entry or entry-like component (if any), and sets the insertion cursor to its end. If the new edit window is a text widget then its contents are left unselected. The key sequence <code>Meta-Up</code>/<code>Meta-Down</code> has the same effect as <code>Alt-Up</code>/<code>Alt-Down</code>. If <code><b>tk_strictMotif</b></code> is false and the edit window is not a text widget or an Iwidgets combobox, then <code>Control-p</code> and <code>Control-n</code> behave the same as <code>Alt-Up</code> and <code>Alt-Down</code>, respectively. If the edit window is a Tk or tile entry, Tk or tile checkbutton, Tk or tile menubutton, BWidget Entry, Iwidgets entryfield/spinner/spinint, or a mentry widget of type <code>"FixedPoint"</code>, then <code>Up</code>/<code>Down</code> has the same effect as <code>Alt-Up</code>/<code>Alt-Down</code>.<br> </li> <li>When editing a cell that is not the first/last editable cell within its column, <code>Alt-Prior</code>/<code>Alt-Next</code> (<code>Command-Prior</code>/<code>Command-Next</code> on Mac OS Classic and Mac OS X Aqua) terminates the editing in the current cell, moves the edit window up/down by one page within the column, selects the contents of the edit window's first entry or entry-like component (if any), and sets the insertion cursor to its end. If the new edit window is a text widget then its contents are left unselected. The key sequence <code>Meta-Prior</code>/<code>Meta-Next</code> has the same effect as <code>Alt-Prior</code>/<code>Alt-Next</code>. If the edit window is not a text widget, BWidget SpinBox, Oakley combobox, or a mentry widget of type <code>"Date"</code>, <code>"Time"</code>, <code>"DateTime"</code>, <code>"IPAddr"</code>, or <code>"IPv6Addr"</code>, then <code>Prior</code>/<code>Next</code> has the same effect as <code>Alt-Prior</code>/<code>Alt-Next</code>.<br> </li> <li>When editing a cell that is not the only editable cell of the tablelist widget, <code>Alt-Home</code>/<code>Alt-End</code> (<code>Command-Home</code>/<code>Command-End</code> on Mac OS Classic and Mac OS X Aqua) terminates the editing in the current cell, moves the edit window into the first/last editable cell of the tablelist, selects the contents of the edit window's first entry or entry-like component (if any), and sets the insertion cursor to its end. If the new edit window is a text widget then its contents are left unselected. The key sequence <code>Meta-Home</code>/<code>Meta-End</code> has the same effect as <code>Alt-Home</code>/<code>Alt-End</code>. If <code><b>tk_strictMotif</b></code> is false and the edit window is not a text widget then <code>Meta-<</code> and <code>Meta-></code> behave the same as <code>Alt-Home</code> and <code>Alt-End</code>, respectively. If the edit window is not a text widget then <code>Control-Home</code>/<code>Control-End</code> has the same effect as <code>Alt-Home</code>/<code>Alt-End</code>.</li> </ol> <p>Before moving the edit window, the key sequences mentioned under 7 - 11 move the active item or element and change the (cell)selection and the (cell)selection anchor in the body of the tablelist widget. For |
| < < < < < < > > > > > > > > > > > > < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | > | > | > | | | | | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | > | | > | | | | | | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | > > > | | > | > > > | | > | | | | > | > > > | | > > > | | | > > > > > > > > | > | > > > > > > > | | > > | | < | | | | | | | | | | | > | | | < > | | | > | | | > | | | | | | | | | > |
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... 266 267 268 269 270 271 272 273 274 275 276 277 278 279 ... 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 ... 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 .... 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 .... 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 .... 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 .... 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 .... 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 .... 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 .... 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 .... 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 .... 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 .... 5618 5619 5620 5621 5622 5623 5624 5625 5626 5627 5628 5629 5630 5631 5632 5633 5634 5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 5648 5649 5650 5651 .... 5653 5654 5655 5656 5657 5658 5659 5660 5661 5662 5663 5664 5665 5666 5667 5668 5669 5670 5671 5672 5673 .... 6515 6516 6517 6518 6519 6520 6521 6522 6523 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6536 6537 6538 6539 6540 6541 6542 6543 .... 7819 7820 7821 7822 7823 7824 7825 7826 7827 7828 7829 7830 7831 7832 7833 7834 7835 7836 7837 .... 7844 7845 7846 7847 7848 7849 7850 7851 7852 7853 7854 7855 7856 7857 7858 7859 7860 7861 7862 7863 .... 8235 8236 8237 8238 8239 8240 8241 8242 8243 8244 8245 8246 8247 8248 8249 8250 8251 8252 8253 8254 8255 8256 8257 .... 8322 8323 8324 8325 8326 8327 8328 8329 8330 8331 8332 8333 8334 8335 8336 8337 .... 8342 8343 8344 8345 8346 8347 8348 8349 8350 8351 8352 8353 8354 8355 8356 8357 8358 8359 8360 8361 .... 8384 8385 8386 8387 8388 8389 8390 8391 8392 8393 8394 8395 8396 8397 8398 8399 8400 8401 .... 8402 8403 8404 8405 8406 8407 8408 8409 8410 8411 8412 8413 8414 8415 8416 8417 8418 8419 .... 8476 8477 8478 8479 8480 8481 8482 8483 8484 8485 8486 8487 8488 8489 8490 8491 8492 8493 .... 8502 8503 8504 8505 8506 8507 8508 8509 8510 8511 8512 8513 8514 8515 8516 8517 .... 8524 8525 8526 8527 8528 8529 8530 8531 8532 8533 8534 8535 8536 8537 8538 8539 8540 8541 8542 8543 8544 8545 8546 8547 8548 8549 8550 8551 8552 8553 8554 8555 8556 8557 8558 8559 8560 8561 8562 8563 8564 8565 8566 8567 8568 8569 8570 8571 8572 8573 8574 8575 8576 8577 8578 8579 8580 8581 8582 8583 8584 8585 8586 8587 8588 8589 8590 8591 8592 8593 8594 8595 8596 8597 8598 8599 8600 8601 8602 8603 8604 8605 |
"tablelist, multi-column, listbox, tree, widget"> </head> <body bgcolor="#FFFFFF"> <div align="center"> <h1>The <code><b>tablelist::tablelist</b></code> Command</h1> <h2>For Tablelist Version 5.8</h2> <h3>by</h3> <h2>Csaba Nemethi</h2> <address> <a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a> ................................................................................ <b> gtk</b>|<b>klearlooks</b>|<b>mint</b>|<b>newWave</b>|<b>oxygen1</b>|<b>oxygen2</b>|<br> <b> phase</b>|<b>plastik</b>|<b>plastique</b>|<b>radiance</b>|<b>ubuntu</b>|<br> <b> vistaAero</b>|<b>vistaClassic</b>|<b>win7Aero</b>|<b>win7Classic</b>|<br> <b> winnative</b>|<b>winxpBlue</b>|<b>winxpOlive</b>|<b>winxpSilver</b></code></dd> <dd><code><b><a href="#width">-width</a></b> <i>characters</i></code></dd> <dt><br> <a href="#col_options">COLUMN CONFIGURATION OPTIONS</a></dt> <dd><code><b><a href="#col_align">-align</a></b> <b>left</b>|<b>right</b>|<b>center</b></code></dd> <dd><code><b><a href="#col_background">-background</a></b> ................................................................................ <dd><code><b><a href="#cell_windowdestroy">-windowdestroy</a></b> <i>command</i></code></dd> <dd><code><b><a href="#cell_windowupdate">-windowupdate</a></b> <i>command</i></code></dd> <dt><br> <a href="#description">DESCRIPTION</a></dt> <dt><br> <a href="#colors_and_fonts">COLORS AND FONTS</a></dt> <dt><br> <a href="#tree_widget">USING A TABLELIST AS MULTI-COLUMN TREE WIDGET</a></dt> <dt><br> <a href="#cell_editing">INTERACTIVE CELL EDITING</a></dt> <dt><br> <a href="#virtual_events">VIRTUAL EVENTS</a></dt> <dt><br> <a href="#row_indices">ROW INDICES</a></dt> <dd> <pre> <i>number</i> <b>k</b><i>number</i> <b>active</b> <b>anchor</b> <b>end</b> <b>top</b> <b>bottom</b> <b>@</b><i>x</i><b>,</b><i>y</i> <i>name</i> </pre> ................................................................................ <i>index</i></code></dd> <dd><code><i>pathName</i> <b><a href= "#bodypath">bodypath</a></b></code></dd> <dd><code><i>pathName</i> <b><a href="#bodytag">bodytag</a></b></code></dd> <dd><code><i>pathName</i> <b><a href= "#canceledediting">canceledediting</a></b></code></dd> <dd><code><i>pathName</i> <b><a href= "#cancelediting">cancelediting</a></b></code></dd> <dd><code><i>pathName</i> <b><a href="#cellattrib">cellattrib</a></b> <i>cellIndex</i> ?<i>name</i>? ?<i>value</i> <i>name</i> <i>value</i> ...?</code></dd> ................................................................................ <p>Specifies the desired width for the window, in average-size characters of the widget's font. If zero or less then the desired width for the window is made just large enough to hold all the columns in the tablelist widget.</p> </blockquote> </dd> <dt><a name="col_options"></a><b>COLUMN CONFIGURATION OPTIONS</b></dt> <dd>The following options are currently supported by the <code><b><a href= "#columncget">columncget</a></b></code>, <code><b><a href= "#columnconfigure">columnconfigure</a></b></code>, <code><b><a href= "#configcolumnlist">configcolumnlist</a></b></code>, and <code><b><a href= "#configcolumns">configcolumns</a></b></code> commands:</dd> ................................................................................ <code><b>ttk::combobox</b></code>, <code><b>ttk::checkbutton</b></code>, or <code><b>ttk::menubutton</b></code> (the latter five only in the presence of the tile widget engine), or the value returned by one of the registration commands for widgets from the packages <a href= "tablelistBWidget.html">BWidget</a>, <a href= "tablelistIwidgets.html">Iwidgets</a>, <a href= "tablelistCombobox.html">combobox</a> (by Bryan Oakley), <a href= "tablelistCtext.html">ctext</a>, and <a href= "tablelistMentry.html">Mentry (or Mentry_tile)</a>. For example, you can use <code><b>-editwindow ComboBox</b></code> <i>after</i> registering the ComboBox widget for interactive cell editing with the aid of the <code><b><a href= "tablelistBWidget.html#ComboBox">tablelist::addBWidgetComboBox</a></b></code> command. Similarly, you can use <code><b>-editwindow combobox</b></code> <i>after</i> registering Bryan Oakley's ................................................................................ <dt><a name="col_hide"></a><code><b>-hide</b> <i>boolean</i></code></dt> <dd>Specifies whether to hide the column when displaying the widget or exporting its selection. The default value is <code>0</code>. After toggling the hidden state of a column, the <code><b><<TablelistColHiddenStateChanged>></b></code> virtual event is generated, with its <code><b>-data</b></code> option set to the numerical column index for Tk versions 8.5 or higher.</dd> <dt><br> <a name="col_labelalign"></a><code><b>-labelalign</b> <i>alignment</i></code></dt> <dd>Specifies how to align the column's title. It must be one of <code><b>left</b></code>, <code><b>right</b></code>, or ................................................................................ <a name="row_hide"></a><code><b>-hide</b> <i>boolean</i></code></dt> <dd> Specifies whether to hide the row when displaying the widget or exporting its selection. The default value is <code>0</code>. After toggling the hidden state of a row, the <code><b><<TablelistRowHiddenStateChanged>></b></code> virtual event is generated, with its <code><b>-data</b></code> option set to the numerical row index for Tk versions 8.5 or higher. <p>For technical reasons (the use of the <code><b>-elide</b></code> option for a text widget tag), this option is not supported for Tk versions earlier than 8.3.</p> <p><b>CAUTION:</b> Tk versions 8.3 - 8.4.12 had a bug that caused a segmentation fault if the whole content of a text widget was ................................................................................ <code><b>-background</b></code> and the cell's current background color, as well as the option name <code><b>-foreground</b></code> and the cell's current foreground color. The resulting script is then evaluated in the global scope. The specified command can use the colors passed to it as arguments to set the corresponding colors of the embedded window to the same values. <p>For example, if the embedded window is a text or ctext widget and you want for its background and foreground colors to be automatically adapted to the cell's current background and foreground colors, then you can achieve this by setting the <code><b>-windowupdate</b></code> cell configuration option to <code>updateWindow</code>, where the latter is the procedure implemented as follows:</p> <blockquote> <pre> proc updateWindow {tbl row col w args} { eval [list $w configure] $args } </pre> ................................................................................ level if the specified value is not an empty string. See the <a href="#colors_and_fonts">COLORS AND FONTS</a> section for further details on these options.</dt> </dl> </dd> <dt><br> <a name="description"></a><b>DESCRIPTION</b></dt> <dd>The <code><b>tablelist::tablelist</b></code> command creates a new window named <code><i>pathName</i></code> and of the class <code><b>Tablelist</b></code>, and makes it into a <b>tablelist</b> widget. Additional options, described above, may be specified on the command line or in the option database to configure aspects of the tablelist such as its colors, font, and columns. The <code><b>tablelist::tablelist</b></code> command returns its <code><i>pathName</i></code> argument. At the time this command is invoked, there must not exist a window named <code><i>pathName</i></code>, but <code><i>pathName</i></code>'s parent must exist.</dd> <dd><br> A tablelist is a multi-column listbox and tree widget, implemented as a mega-widget, consisting of a <b>body</b> and a <b>header</b>. The body displays a list of <b>items</b>, one per line. Each item is a list of <b>elements</b>, which are aligned in columns. In other words, an item is the contents of a row, and an element is the text contained in a cell. The header consists of label widgets displaying the column titles. The labels can be used, among others, for interactive column resizing and column-based sorting of the items, as described below.</dd> <dd><br> Each cell and each header label of a tablelist widget can also contain an image, which is placed to the left or right of the text, depending on the column's alignment. Instead of an image, a tablelist cell can also contain an embedded window, placed to the left or right of the text, just like an embedded image.</dd> <dd><br> When a tablelist is used as a tree widget, one of its columns will display the tree hierarchy with the aid of indentations and expand/collapse controls. The Tablelist package provides a great variety of tree styles controlling the look & feel of that column, and chooses the correct default style depending on the windowing system, operating system version, and tile theme. In a tablelist used as a multi-column tree widget, every row is at the same time a tree <b>node</b>, having exactly one <b>parent</b> node and any number of <b>child</b> nodes. The tree's origin is the invisible <b>root</b> node, which has no parent itself and whose children are the <b>top-level</b> nodes.</dd> <dd><br> The elements of a tablelist widget can, per default, be only edited programmatically. However, interactive editing can be enabled for individual cells and for entire columns. Per default, the interactive cell editing uses a temporary embedded entry widget, thus making sure that all the validation facilities available for entry widgets can be used during the editing process. A great variety of widgets from the packages BWidget, Iwidgets, combobox (by Bryan Oakley), ctext, and Mentry (or Mentry_tile), as well as Tk core text, spinbox, checkbutton, and menubutton widgets, along with tile entry, spinbox, combobox, checkbutton, and menubutton widgets are also supported as temporary embedded widgets used for cell editing. In addition, a rich set of keyboard bindings is provided for a comfortable navigation between the editable cells.</dd> <dd><br> When first created, a new tablelist widget has no items. Items may be added, deleted, or updated using widget commands described below. In addition, one or more items or elements may be selected. If a tablelist widget is exporting its selection (see the <code><b>-exportselection</b></code> option), then it will observe the standard X11 protocols for handling the selection. Tablelist widget selections are available as types <code><b>STRING</b></code> and <code><b>UTF8_STRING</b></code>; the value of the selection will be a text built by taking all of the rows having at least one non-hidden selected element, joining these elements together with tabs, and the resulting strings in turn with newlines. If a tablelist widget that is exporting its selection is the selection owner and some other window claims ownership of the selection away from it, then the virtual event <code><b><<TablelistSelectionLost>></b></code> is generated.</dd> <dd><br> It is not necessary for all the elements to be displayed in the tablelist widget at once; commands described below may be used to change the view in the window. Tablelist widgets allow scrolling in both directions using the standard <code><b>-xscrollcommand</b></code> and <code><b>-yscrollcommand</b></code> options. They also support scanning, as described below.</dd> <dd><br> Each tablelist widget, as well as each tablelist column, row, and cell may have any number of <b>attributes</b>, which can be used in commands that create or manipulate tablelist widgets for particular purposes.</dd> <dt><br> <a name="colors_and_fonts"></a><b>COLORS AND FONTS</b></dt> <dd> The <code><b>-background</b></code>, <code><b>-font</b></code>, <code><b>-foreground</b></code>, <code><b>-selectbackground</b></code>, and <code><b>-selectforeground</b></code> options can also be specified at column, row, and cell level, by using the <code><b><a href= "#columnconfigure">columnconfigure</a></b></code> (or <code><b><a href= "#configcolumnlist">configcolumnlist</a></b></code>, or <code><b><a href= "#configcolumns">configcolumns</a></b></code>), <code><b><a href= "#rowconfigure">rowconfigure</a></b></code> (or <code><b><a href= "#configrowlist">configrowlist</a></b></code>, or <code><b><a href= "#configrows">configrows</a></b></code>), and <code><b><a href= "#cellconfigure">cellconfigure</a></b></code> (or <code><b><a href= "#configcelllist">configcelllist</a></b></code>, or <code><b><a href= "#configcells">configcells</a></b></code>) subcommands of the Tcl command associated with the tablelist widget. For this reason, a particular cell can have up to four values for one and the same color or font option. If these values conflict, then the option specified at the highest priority level is used. The decreasing priority order is cell, row, column, widget. <p>If one of these options hasn't been specified at cell, row, or column level, or if its value for that level is an empty string (this is explicitly allowed), then that option will not be used at that particular level.</p> </dd> <dt><a name="tree_widget"></a><b>USING A TABLELIST AS MULTI-COLUMN TREE WIDGET</b></dt> <dd> When using a tablelist widget to display a tree hierarchy, there are a few rules to follow:<br> <ol> ................................................................................ <code>Return</code> or <code>KP_Enter</code>. Per default, the <code><b>editcell</b></code> subcommand creates a temporary entry widget and embeds it into the cell whose index was passed to it as argument. You can, however, use the <code><b>-editwindow</b></code> <a href= "#col_editwindow">column</a> or <a href="#cell_editwindow">cell</a> configuration option to specify another widget instead of an entry, like a Tk core text, spinbox, checkbutton, or menubutton widget, or a tile entry, spinbox, combobox, checkbutton, or menubutton, or one of the 19 currently supported widgets from the packages <a href= "tablelistBWidget.html">BWidget</a>, <a href= "tablelistIwidgets.html">Iwidgets</a>, <a href= "tablelistCombobox.html">combobox</a> (by Bryan Oakley), <a href= "tablelistCtext.html">ctext</a>, and <a href= "tablelistMentry.html">Mentry (or Mentry_tile)</a>. Before specifying a widget from one of these library packages as the value of the <code><b>-editwindow</b></code> column or cell configuration option, you must register it for interactive cell editing by invoking the corresponding <code><b>tablelist::add*</b></code> command. The above-mentioned Tk core and tile widgets are automatically registered for cell editing.</dd> ................................................................................ <dd><br> The editing of the text inserted into the edit window uses the widget-specific bindings for mouse and keyboard events, with a few extensions and changes, as described in the <a href= "#edit_bindings">DEFAULT BINDINGS FOR INTERACTIVE CELL EDITING</a> section. For example, in entry or entry-like components of the edit window, <code>Control-i</code> inserts a tab, <code>Control-j</code> inserts a newline, and if the edit window is a text or ctext widget then <code>Return</code> and <code>KP_Enter</code> insert a newline character, too. <code>Tab</code> and <code>Shift-Tab</code> are used for navigation between the editable cells, just like <code>Alt-Left</code>, <code>Alt-Right</code>, <code>Alt-Up</code>, <code>Alt-Down</code>, <code>Alt-Prior</code>, <code>Alt-Next</code>, <code>Alt-Home</code>, and <code>Alt-End</code> (as well as <code>Control-Home</code> and <code>Control-End</code>, except in the case of a text or ctext widget). On Mac OS Classic and Mac OS X Aqua the <code>Command</code> key is used instead of <code>Alt</code>. The editing can be aborted with the <code>Escape</code> key (or by invoking the <code><b><a href= "#cancelediting">cancelediting</a></b></code> subcommand) and terminated normally with <code>Return</code> or <code>KP_Enter</code> (together with <code>Control</code> for a text or ctext widget). The bindings for the keys used for normal termination of the editing just invoke the <code><b><a href="#finishediting">finishediting</a></b></code> subcommand; the latter can also be called explicitly to terminate the editing programmatically. Normal termination is also triggered by clicking with the left mouse button anywhere in the tablelist's body, outside the cell just being edited, or moving into another editable cell by using keyboard navigation.</dd> ................................................................................ <code><b>-editendcommand</b></code> option is to convert the edit window's text to the cell's new <i>internal</i> contents, which is necessary if, due to the <code><b><a href="#col_formatcommand">-formatcommand</a></b></code> column configuration option, the cell's internal value is different from its external representation. See the description of the <code><b><a href="#forceeditendcommand">-forceeditendcommand</a></b></code> option for more about the invocation of the command mentioned above.</dd> <dt><br> <a name="virtual_events"></a><b>VIRTUAL EVENTS</b></dt> <dd>Tablelist defines a few virtual events for the purposes of notification, and makes use of the <code><b>event generate</b></code> command to send them to the tablelist widget in question (whose path name will be the value of the <code><b>%W</b></code> substitution in event scripts). When using Tk 8.5 or above, most of these virtual events are generated with their <code><b>-data</b></code> option set to an appropriate event-specific value. Binding scripts can access this user data as the value of the <code><b>%d</b></code> substitution. Unfortunately, the <code><b>-data</b></code> option to <code><b>event generate</b></code> was not supported by Tk versions earlier than 8.5. For these Tk versions, the <code><b>event generate</b></code> command will be invoked without the <code><b>-data</b></code> option.</dd> <dd> <p>The virtual events generated by Tablelist are as follows:</p> <table border="2" cellspacing="0" cellpadding="3"> <tr bgcolor="#FFFFE0"> <th align="left">Virtual Event</th> <th align="left">Description</th> <th align="left">User Data (for Tk 8.5 or Later)</th> </tr> <tr> <td><code><b><<TablelistCellRestored>></b></code></td> <td>Generated by the <code><b><a href= "#cancelediting">cancelediting</a></b></code> subcommand.</td> <td>A list consisting of the numerical row and column indices of the cell whose content is being edited.</td> </tr> <tr> <td><code><b><<TablelistCellUpdated>></b></code></td> <td>Generated by the <code><b><a href= "#finishediting">finishediting</a></b></code> subcommand.</td> <td>A list consisting of the numerical row and column indices of the cell whose content is being edited.</td> </tr> <tr> <td><code><b><<TablelistColHiddenStateChanged>></b></code></td> <td>Generated whenever the hidden state of one or more columns is toggled by using the <code><b><a href= "#columnconfigure">columnconfigure</a></b></code>, <code><b><a href= "#configcolumnlist">configcolumnlist</a></b></code>, <ccode><b><a href="#configcolumns">configcolumns</a></b></code>, or <ccode><b><a href="#togglecolumnhide">togglecolumnhide</a></b></code> subcommand.</td> <td>A list consisting of the numerical indices of the columns whose hidden state changed.</td> </tr> <tr> <td><code><b><<TablelistColumnMoved>></b></code></td> <td>Generated by the default bindings whenever a column is moved interactively to a new position.</td> <td>A list consisting of the two arguments passed to the <code><b><a href="#movecolumn">movecolumn</a></b></code> subcommand, invoked for moving the source column to the target position.</td> </tr> <tr> <td><code><b><<TablelistColumnResized>></b></code></td> <td>Generated by the default bindings whenever a column is resized interactively.</td> <td>The numerical index of the column that was resized.</td> </tr> <tr> <td><code><b><<TablelistColumnSorted>></b></code></td> <td>Generated by the <code><b><a href= "tablelistColSort.html#sortByColumn">tablelist::sortByColumn</a></b></code> command.</td> <td>A list consisting of the numerical column index and the sort order (<code><b>decreasing</b></code> or <code><b>increasing</b></code>).</td> </tr> <tr> <td><code><b><<TablelistColumnsSorted>></b></code></td> <td>Generated by the <code><b><a href= "tablelistColSort.html#addToSortColumns">tablelist::addToSortColumns</a></b></code> command.</td> <td>A list consisting of the two lists passed to the <code><b><a href= "tablelistWidget.html#sortbycolumnlist">sortbycolumnlist</a></b></code> subcommand, invoked to perform the multi-column sorting.</td> </tr> <tr> <td><code><b><<TablelistRowHiddenStateChanged>></b></code></td> <td>Generated whenever the hidden state of one or more rows is toggled by using the <code><b><a href= "#rowconfigure">rowconfigure</a></b></code>, <code><b><a href= "#configrowlist">configrowlist</a></b></code>, <ccode><b><a href= "#configrows">configrows</a></b></code>, or <ccode><b><a href= "#togglerowhide">togglerowhide</a></b></code> subcommand.</td> <td>A list consisting of the numerical indices of the rows whose hidden state changed.</td> </tr> <tr> <td><code><b><<TablelistRowMoved>></b></code></td> <td>Generated by the default bindings whenever a row is moved interactively to a new position.</td> <td>A list consisting of the three arguments passed to the second form of the <code><b><a href="#move">move</a></b></code> subcommand, invoked for moving the source row to the target position.</td> </tr> <tr> <td><code><b><<TablelistSelect>></b></code>, <code><b><<ListboxSelect>></b></code></td> <td>Generated by the default bindings whenever the selection changes in the tablelist widget due to user interaction.</td> <td>Not used.</td> </tr> <tr> <td><code><b><<TablelistSelectionLost>></b></code></td> <td>Sent to the tablelist widget whenever it loses ownership of the PRIMARY selection.</td> <td>Not used.</td> </tr> </table> </dd> <dt><br> <a name="row_indices"></a><b>ROW INDICES</b></dt> <dd> Many of the widget commands for tablelist widgets take one or more row indices as arguments. A row index specifies a particular item of ................................................................................ be used when defining individual binding scripts for tablelist widgets. The main advantage of using this tag instead of the path name of the tablelist's body is that it enables you to write event handling scripts that are valid not only for the tablelist's body but also for the separators, multi-line cells, and embedded images.</dd> <dt><br> <a name="canceledediting"></a><code><i>pathName</i> <b>canceledediting</b></code></dt> <dd> Returns the value <code>1</code> if the most recent interactive cell editing was canceled (by the user or programmatically, with the aid of the <code><b><a href="#cancelediting">cancelediting</a></b></code> subcommand) and <code>0</code> otherwise. <p><b>REMARK:</b> By invoking this subcommand from within the Tcl command specified by the <code><b><a href= "#editendcommand">-editendcommand</a></b></code> configuration option, you can find out whether the editing session was canceled or terminated normally. Remember that this Tcl command will be invoked in both cases mentioned above if the <code><b><a href= "#forceeditendcommand">-forceeditendcommand</a></b></code> option was set to true.</p> </dd> <dt><a name="cancelediting"></a><code><i>pathName</i> <b>cancelediting</b></code></dt> <dd>This subcommand cancels the interactive editing of the contents of the cell whose index was passed to the <code><b><a href= "#editcell">editcell</a></b></code> subcommand, destroys the temporary widget embedded into the cell, and restores the original cell contents. This command enables you to cancel the interactive cell ................................................................................ "#editstartcommand">-editstartcommand</a></b></code> configuration option if that pre-edit callback encounters an error when preparing the text to be inserted into the edit window. The command is also invoked implicitly by pressing the <code>Escape</code> key when a cell is being edited. The return value is an empty string. Immediately before returning this value, the command generates the virtual event <code><b><<TablelistCellRestored>></b></code>. For Tk versions 8.5 or higher, this virtual event is generated with its <code><b>-data</b></code> option set to a list consisting of the numerical row and column indices of the cell whose content is being edited. If no cell was being edited when the command was invoked then an empty string is returned without generating a virtual event.</dd> <dt><br> <a name="cellattrib"></a><code><i>pathName</i> <b>cellattrib</b> <i>cellIndex</i> ?<i>name</i>? ?<i>value</i> <i>name</i> <i>value</i> ...?</code></dt> <dd>Queries or modifies the attributes of the cell given by ................................................................................ if from within this script the <code><b><a href= "#rejectinput">rejectinput</a></b></code> subcommand was invoked then the cell's value is not changed and the embedded widget remains displayed in the cell; in this case the command returns the boolean value <code>0</code>. In all the other cases, the return value is <code>1</code>. Immediately before returning the value <code>1</code>, the command generates the virtual event <code><b><<TablelistCellUpdated>></b></code>. For Tk versions 8.5 or higher, this virtual event is generated with its <code><b>-data</b></code> option set to a list consisting of the numerical row and column indices of the cell whose content is being edited. If no cell was being edited when the command was invoked then the same value <code>1</code> is returned but no virtual event is generated. <p>This subcommand is called <i>implicitly</i> by pressing <code>Return</code> or <code>KP_Enter</code> (together with <code>Control</code> if the edit window is a text or ctext widget) when editing a cell, or by clicking with the left mouse button anywhere in the tablelist's body, outside the cell just being edited, or moving into another editable cell by using keyboard navigation.</p> <p><b>REMARK:</b> There are also situations where an <i>explicit</i> invocation of this subcommand is needed, in order to make sure that the cell just being edited gets updated with the text entered by the user. For example, if a tablelist widget is part of a dialog used for editing some data, then the command associated with the button designed to accept the data should call this ................................................................................ <code><i>firstColumn</i></code> and <code><i>lastColumn</i></code> are indices specifying the first and last columns in the range whose visibility is to be toggled. The command's second form accepts a list <code><i>columnIndexList</i></code> of indices specifying the columns whose visibility is to be toggled. Returns an empty string. After toggling the hidden state of the specified columns, the <code><b><<TablelistColHiddenStateChanged>></b></code> virtual event is generated. For Tk versions 8.5 or higher, this virtual event is generated with its <code><b>-data</b></code> option set to a list consisting of the numerical column indices of the columns whose <code><b>-hide</b></code> option was toggled. The main advantage of using this command instead of invoking <code><b><a href= "#columnconfigure">columnconfigure</a></b></code> for each of the specified columns is that it causes only one redisplay of the widget's contents, thus being significantly faster.</dd> <dt><br> <a name="togglerowhide"></a><code><i>pathName</i> <b>togglerowhide</b> <i>first</i> <i>last</i></code><br> ................................................................................ <code><i>first</i></code> and <code><i>last</i></code> are indices specifying the first and last rows in the range whose visibility is to be toggled. The command's second form accepts a list <code><i>indexList</i></code> of indices specifying the rows whose visibility is to be toggled. Returns an empty string. After toggling the hidden state of the specified rows, the <code><b><<TablelistRowHiddenStateChanged>></b></code> virtual event is generated. For Tk versions 8.5 or higher, this virtual event is generated with its <code><b>-data</b></code> option set to a list consisting of the numerical row indices of the rows whose <code><b>-hide</b></code> option was toggled. Just like the <code><b>-hide</b></code> row configuration option, this subcommand is not supported for Tk versions earlier than 8.3. <p><b>CAUTION:</b> Tk versions 8.3 - 8.4.12 had a bug that caused a segmentation fault if the whole content of a text widget was elided. This bug was also present in Tk 8.5.a1 - 8.5.a3. When using one of these earlier Tk versions, this bug will produce a crash if all the rows of a tablelist widget are hidden. It is your responsibility to avoid such situations when using a Tk version ................................................................................ it. This <b>local drag & drop</b> operation ends when mouse button 1 is released, and can be canceled by pressing the <code>Escape</code> key. In both cases, the mouse cursor is reset to its original value, specified by the <code><b>-cursor</b></code> configuration option. After releasing mouse button 1 in the presence of a valid target, the source item is moved before the target row or just before the latter's first child, and the virtual event <code><b><<TablelistRowMoved>></b></code> is generated. For Tk versions 8.5 or higher, this virtual event is is generated with its <code><b>-data</b></code> option set to a list consisting of the three arguments passed to the second form of the <code><b><a href="#move">move</a></b></code> subcommand, invoked for moving the source row to its new position. All the three list elements will be numerical values, except the second one (<code><i>targetParentNodeIndex</i></code>), which can also be <code><b>root</b></code>.</p> <p>Notice that, depending on the current mouse position during the local drag & drop, there can be a corresponding potential target row or not. For instance, a tree item cannot become a sibling of one of its descendants, and not all items might be allowed to have children or to become top-level ones (example: in a file manager, regular file items cannot be parents of other items and should not be ................................................................................ amount of the cursor motion. The interactive column resizing ends when mouse button 1 is released, and can be canceled by pressing the <code>Escape</code> key. In both cases, the mouse cursor is reset to its original value, specified by the <code><b>-cursor</b></code> configuration option. When the column resize operation is finished, the virtual event <code><b><<TablelistColumnResized>></b></code> is generated, with its <code><b>-data</b></code> option set to the numerical column index for Tk versions 8.5 or higher.<br> </li> <li>If mouse button 1 is pressed over a header label but outside the resize area described above and then dragged outside the label, and the value of the <code><b><a href= "#movablecolumns">-movablecolumns</a></b></code> configuration option is true, then the mouse cursor takes on the shape specified by the ................................................................................ 1 is released, and can be canceled by pressing the <code>Escape</code> key when the mouse pointer is outside the label. In both cases, the mouse cursor is reset to its original value, specified by the <code><b>-cursor</b></code> configuration option. After releasing mouse button 1, the source column is moved before the one indicated by the gap mentioned above and the virtual event <code><b><<TablelistColumnMoved>></b></code> is generated. For Tk versions 8.5 or higher, this virtual event is generated with its <code><b>-data</b></code> option set to a list consisting of the two arguments passed to the <code><b><a href= "#movecolumn">movecolumn</a></b></code> subcommand, invoked for moving the source column to its new position. Both list elements will be numerical column indices.<br> </li> <li>If mouse button 1 is pressed over a header label but outside the resize area described above and later released over the same label, and the command specified by the <code><b><a href= "#labelcommand">-labelcommand</a></b></code> option is a nonempty string, then this command is concatenated with the name of the ................................................................................ corresponding to that label are true, then the width of that column is set to zero, i.e., it is made just large enough to hold all the elements in the column, including the header (but no larger than the maximum width indicated by the <code><b><a href= "#col_maxwidth">-maxwidth</a></b></code> column configuration option), and the virtual event <code><b><<TablelistColumnResized>></b></code> is generated, with its <code><b>-data</b></code> option set to the numerical column index for Tk versions 8.5 or higher. The same action is triggered by double-clicking the resize area of a header label.<br> </li> <li>The Tablelist package defines the virtual event <code><b><<ShiftButton3>></b></code> as <code><b><Shift-Button-3></b></code> for all windowing systems and additionally as <code><b><Shift-Control-Button-1></b></code> for Mac OS Classic and Mac OS X Aqua. If this event occurs over a ................................................................................ header label and both the value of the <code><b><a href= "#resizablecolumns">-resizablecolumns</a></b></code> configuration option and that of the <code><b><a href= "#col_resizable">-resizable</a></b></code> option for the column corresponding to that label are true, then the width of that column is set to its last static width (if any) and the virtual event <code><b><<TablelistColumnResized>></b></code> is generated, with its <code><b>-data</b></code> option set to the numerical column index for Tk versions 8.5 or higher. The same action is triggered by double-clicking the resize area of a header label with the <code>Shift</code> key held down.</li> </ol> <p>If the tablelist's <code><b><a href="#state">state</a></b></code> is <code><b>disabled</b></code> then none of the above actions occur: the labels are completely insensitive.</p> <p>If you want to define non-default bindings for the header labels, it ................................................................................ </li> <li><code>Control-j</code> inserts a newline character into the edit window's entry or entry-like components (if any), at the point of the insertion cursor.<br> </li> <li>If the edit window is a text or ctext widget then <code>Return</code> and <code>KP_Enter</code> insert a newline character at the point of the insertion cursor. Otherwise they terminate the editing and destroy the edit window.<br> </li> <li><code>Control-Return</code> and <code>Control-KP_Enter</code> terminate the editing and destroy the edit window.<br> </li> <li><code>Escape</code> aborts the editing and destroys the edit ................................................................................ <li>When editing a cell that is not the only editable cell of the tablelist widget, <code>Tab</code> and <code>Shift-Tab</code> terminate the editing in the current cell, move the edit window into the next/previous editable cell of the tablelist, select the contents of the edit window's first entry or entry-like component (if any), and set the insertion cursor to its end. If the new edit window is a text or ctext widget then its contents are left unselected. Notice that these bindings replace the common inter-widget navigation via <code>Tab</code> and <code>Shift-Tab</code> with inter-cell navigation. Just like in the case of the text widget, <code>Control-Tab</code> and <code>Control-Shift-Tab</code> are intended to be used for widget-to-widget keyboard navigation during interactive cell editing. Unfortunately, this won't always work because some window managers intercept the latter key sequences and use them for their own purposes (like inter-workplace navigation). ................................................................................ <li>When editing a cell that is not the first/last editable cell within its row, <code>Alt-Left</code>/<code>Alt-Right</code> (<code>Command-Left</code>/<code>Command-Right</code> on Mac OS Classic and Mac OS X Aqua) terminates the editing in the current cell, moves the edit window into the previous/next editable cell of the row, selects the contents of the edit window's first entry or entry-like component (if any), and sets the insertion cursor to its end. If the new edit window is a text or ctext widget then its contents are left unselected. The key sequence <code>Meta-Left</code>/<code>Meta-Right</code> has the same effect as <code>Alt-Left</code>/<code>Alt-Right</code>. If <code><b>tk_strictMotif</b></code> is false and the edit window is not a text or ctext widget then <code>Meta-b</code> and <code>Meta-f</code> behave the same as <code>Alt-Left</code> and <code>Alt-Right</code>, respectively. If the edit window is a Tk or tile checkbutton or menubutton widget then <code>Left</code>/<code>Right</code> has the same effect as <code>Alt-Left</code>/<code>Alt-Right</code>.<br> </li> <li>When editing a cell that is not the first/last editable cell within its column, <code>Alt-Up</code>/<code>Alt-Down</code> (<code>Command-Up</code>/<code>Command-Down</code> on Mac OS Classic and Mac OS X Aqua) terminates the editing in the current cell, moves the edit window one line up/down within the column, selects the contents of the edit window's first entry or entry-like component (if any), and sets the insertion cursor to its end. If the new edit window is a text or ctext widget then its contents are left unselected. The key sequence <code>Meta-Up</code>/<code>Meta-Down</code> has the same effect as <code>Alt-Up</code>/<code>Alt-Down</code>. If <code><b>tk_strictMotif</b></code> is false and the edit window is not a text or ctext widget or an Iwidgets combobox, then <code>Control-p</code> and <code>Control-n</code> behave the same as <code>Alt-Up</code> and <code>Alt-Down</code>, respectively. If the edit window is a Tk or tile entry, Tk or tile checkbutton, Tk or tile menubutton, BWidget Entry, Iwidgets entryfield/spinner/spinint, or a mentry widget of type <code>"FixedPoint"</code>, then <code>Up</code>/<code>Down</code> has the same effect as <code>Alt-Up</code>/<code>Alt-Down</code>.<br> </li> <li>When editing a cell that is not the first/last editable cell within its column, <code>Alt-Prior</code>/<code>Alt-Next</code> (<code>Command-Prior</code>/<code>Command-Next</code> on Mac OS Classic and Mac OS X Aqua) terminates the editing in the current cell, moves the edit window up/down by one page within the column, selects the contents of the edit window's first entry or entry-like component (if any), and sets the insertion cursor to its end. If the new edit window is a text or ctext widget then its contents are left unselected. The key sequence <code>Meta-Prior</code>/<code>Meta-Next</code> has the same effect as <code>Alt-Prior</code>/<code>Alt-Next</code>. If the edit window is not a text or ctext widget, BWidget SpinBox, Oakley combobox, or a mentry widget of type <code>"Date"</code>, <code>"Time"</code>, <code>"DateTime"</code>, <code>"IPAddr"</code>, or <code>"IPv6Addr"</code>, then <code>Prior</code>/<code>Next</code> has the same effect as <code>Alt-Prior</code>/<code>Alt-Next</code>.<br> </li> <li>When editing a cell that is not the only editable cell of the tablelist widget, <code>Alt-Home</code>/<code>Alt-End</code> (<code>Command-Home</code>/<code>Command-End</code> on Mac OS Classic and Mac OS X Aqua) terminates the editing in the current cell, moves the edit window into the first/last editable cell of the tablelist, selects the contents of the edit window's first entry or entry-like component (if any), and sets the insertion cursor to its end. If the new edit window is a text or ctext widget then its contents are left unselected. The key sequence <code>Meta-Home</code>/<code>Meta-End</code> has the same effect as <code>Alt-Home</code>/<code>Alt-End</code>. If <code><b>tk_strictMotif</b></code> is false and the edit window is not a text or ctext widget then <code>Meta-<</code> and <code>Meta-></code> behave the same as <code>Alt-Home</code> and <code>Alt-End</code>, respectively. If the edit window is not a text or ctext widget then <code>Control-Home</code>/<code>Control-End</code> has the same effect as <code>Alt-Home</code>/<code>Alt-End</code>.</li> </ol> <p>Before moving the edit window, the key sequences mentioned under 7 - 11 move the active item or element and change the (cell)selection and the (cell)selection anchor in the body of the tablelist widget. For |