Tk Library Source Code

Check-in [3bb5a3d6fb]
Login
Bounty program for improvements to Tcl and certain Tcl packages.

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment: * CHANGES.txt: Updated to reflect the changes. * doc/*.html:
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 3bb5a3d6fb3b8e6be1683cbcb3401c41ee9a0c5462925a84c66cf8ea21956321
User & Date: csaba 2020-04-21 16:57:29
Context
2020-04-21
16:58
* scripts/*.tcl: Significantly extended and improved the code for initializing the variable "tablelist::scalingpct", especially on X11; added the percentage value 175 and the corresponding arrow styles "flat13x7", "flatAngle13x7", and "photo13x7"; removed the arrow styles "flat5x3" and "flat5x4"; changed the tree style names "(bicolor|classic|plain)1", ..., "(bicolor|classic|plain)4" to "(bicolor|classic|plain)100", "(bicolor|classic|plain)125", "(bicolor|classic|plain)150", and "(bicolor|classic|plain)200"; added the tree styles "(bicolor|classic|plain)175"; updated the tree styles "adwaita", "ubuntuMate", and "win10"; made the "refreshsorting" subcommand by orders of magnitude faster; fixed an issue related to the bindings for the edit window; fixed a bug related to the "expand" subcommand for a list of indices; updated the copyright information. check-in: 526e68681b user: csaba tags: trunk
16:57
* CHANGES.txt: Updated to reflect the changes. * doc/*.html: check-in: 3bb5a3d6fb user: csaba tags: trunk
16:56
* *.tcl: Bumped the version number to 6.9; updated the * COPYRIGHT.txt: copyright information. * README.txt: check-in: 1998c22155 user: csaba tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to modules/tablelist/CHANGES.txt.

1
2










































3
4
5
6
7
8
9
What is new in Tablelist 6.8?
-----------------------------











































1. Updated and significantly improved the support for Windows 10.

2. Adapted the "aqua" theme support to Tk release 8.6.10.  Note that
   this was tested on Mac OS X 10.13.6 (High Sierra) and currently
   doesn't support the "Dark Mode" appearance, introduced in Mac OS X
   version 10.14 (Mojave).
|

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







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
What is new in Tablelist 6.9?
-----------------------------

1. Significantly extended and improved the code for initializing the
   variable "tablelist::scalingpct", especially on X11, including GNOME
   and KDE on both Xorg and Wayland, Solus and Ubuntu Budgie, Cinnamon,
   MATE, and Xfce.  This variable now has the additional value 175.  See
   the new section "More on tablelist::scalingpct" in Tablelist
   Programmer's Guide for details.

2. Corresponding to the new scaling percentage 175, added the arrow
   styles "flat13x7", "flatAngle13x7", and "photo13x7".  Removed the not
   really useful arrow styles "flat5x3" and "flat5x4" (POTENTIAL
   INCOMPATIBILITY!).

3. Changed the tree style names "plain1", ..., "plain4" to the more
   suggestive ones "plain100", "plain125", "plain150", and "plain200",
   and added the tree style "plain175".  Similar changes for the tree
   styles "bicolor*" and "classic*".  POTENTIAL INCOMPATIBILITY!

4. The demo scripts "dirViewer.tcl" and "dirViewer_tile.tcl" now also
   demonstrate how to use the variable "tablelist::scalingpct" for
   developing scaling-aware applications.

5. Adapted the look & feel of the tree style "ubuntuMate" to version
   20.04 of the Ubuntu MATE distribution.

6. Made the "refreshsorting" subcommand by orders of magnitude faster
   (thanks to Ulrich Seidl for reporting the poor performance of this
   subcommand).

7. Fixed an issue related to the bindings for the edit window, which
   prevented the triple-clicks from being handled by the class bindings
   of the edit widget (thanks to Ulrich Seidl for his bug report and
   discussions on this subject).

8. Fixed a bug related to the "expand" subcommand for a list of indices
   (again, thanks to Ulrich Seidl for his bug report).

9. Several further improvements in the code and documentation, as well
   as minor bug fixes.

What was new in Tablelist 6.8?
------------------------------

1. Updated and significantly improved the support for Windows 10.

2. Adapted the "aqua" theme support to Tk release 8.6.10.  Note that
   this was tested on Mac OS X 10.13.6 (High Sierra) and currently
   doesn't support the "Dark Mode" appearance, introduced in Mac OS X
   version 10.14 (Mojave).

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
20
<!DOCTYPE html>
<html>
<head>
  <title>The Multi-Column Listbox and Tree Widget Package Tablelist 6.8</title>

  <meta name="Author" content="Csaba Nemethi">
  <meta name="Keywords" content=
  "tablelist, multi-column, listbox, tree, widget, tile">
</head>

<body>
  <div align="center">
    <h1>The Multi-Column Listbox and Tree Widget Package Tablelist 6.8</h1>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>


|








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html>
<html>
<head>
  <title>The Multi-Column Listbox and Tree Widget Package Tablelist 6.9</title>

  <meta name="Author" content="Csaba Nemethi">
  <meta name="Keywords" content=
  "tablelist, multi-column, listbox, tree, widget, tile">
</head>

<body>
  <div align="center">
    <h1>The Multi-Column Listbox and Tree Widget Package Tablelist 6.9</h1>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>

Changes to modules/tablelist/doc/tablelist.html.

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
..
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
...
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
...
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
228
229
...
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
...
347
348
349
350
351
352
353


354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
...
370
371
372
373
374
375
376




















































































377
378
379
380
381
382
383
...
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
...
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
....
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
....
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
....
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658

1659
1660
1661


1662











1663
1664
1665
1666
1667
1668
1669
....
1686
1687
1688
1689
1690
1691
1692


















1693
1694
1695
1696
1697
1698
1699
....
1721
1722
1723
1724
1725
1726
1727

































1728
1729
1730
1731
1732
1733
1734
....
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
....
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
....
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Tablelist Programmer's Guide</h1>

    <h2>For Tablelist Version 6.8</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>
................................................................................

    <li><a href="#ov_get">How to Get It?</a></li>

    <li><a href="#ov_install">How to Install It?</a></li>

    <li><a href="#ov_use">How to Use It?</a></li>




    <li><a href="#ov_tile">More on Tablelist_tile</a></li>
  </ul>

  <h4><a href="#examples">Examples</a></h4>

  <ul>
    <li><a href="#ex_config">A tablelist Widget for Displaying and Editing
    Configuration Options</a></li>

    <li><a href="#ex_browse">Two Widget Browsers Based on a tablelist</a></li>

    <li><a href="#ex_dirViewer">A Directory Viewer Based on a
    tablelist</a></li>

    <li><a href="#ex_styles">Improving the Look & Feel of a tablelist
    Widget</a></li>

    <li><a href="#ex_editing">Advanced Interactive tablelist Cell
    Editing</a></li>
................................................................................
      <a href="https://www.nemethi.de">https://www.nemethi.de</a>
    </address>
  </blockquote>

  <h3 id="ov_get">How to Get It?</h3>

  <p>Tablelist is available for free download from the same URL as Wcb.&nbsp;
  The distribution file is <code>tablelist6.8.tar.gz</code> for UNIX and
  <code>tablelist6_8.zip</code> for Windows.&nbsp; 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 included in tklib, which has the address</p>

  <blockquote>
    <address>
................................................................................
  a directory at the same level as the Tcl and Tk script libraries.&nbsp; 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>tablelist6.8.tar.gz</code>:</p>

  <blockquote>
    <pre>
gunzip -c tablelist6.8.tar.gz | tar -xf -
</pre>
  </blockquote>

  <p>On most UNIX systems this can be replaced with</p>

  <blockquote>
    <pre>
tar -zxf tablelist6.8.tar.gz
</pre>
  </blockquote>

  <p>Both commands will create a directory named <code>tablelist6.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>tablelist6_8.zip</code> into the directory
  <code>tablelist6.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.&nbsp; 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.&nbsp; 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>&nbsp; If you have an earlier Tablelist version as part of
  ActiveTcl 8.5 or above and the new Tablelist release 6.8, then it is highly
  recommended to specify the version number <code>6.8</code> in the&nbsp;
  <code>package require</code>&nbsp; command, because otherwise the interpreter
  will load the old Tablelist version included in ActiveTcl as Tcl
  Module.&nbsp; The <a href="#examples">examples</a> below use the
  statement&nbsp; <code>package require tablelist 6.8</code>,&nbsp; and their
  tile-based counterparts invoke the command&nbsp; <code>package require
  tablelist_tile 6.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>?
................................................................................
    <li>The variable <code>tablelist::version</code> holds the current version
    number of the Tablelist and Tablelist_tile packages.</li>

    <li>The variable <code>tablelist::library</code> holds the location of the
    Tablelist installation directory.</li>

    <li>The variable <code>tablelist::scalingpct</code> holds the scaling


    percentage used by Tablelist when adapting the sizes of the tree styles
    <code>vistaAero</code>, <code>vistaClassic</code>, <code>win7Aero</code>,
    <code>win7Classic</code>, and <code>win10</code> to the display's DPI
    scaling level.&nbsp; The currently supported values are <code>100</code>,
    <code>125</code>, <code>150</code>, and <code>200</code>.&nbsp; You can use
    the value of this variable, e.g., if you want to create images of different
    sizes, depending on the DPI scaling factor.&nbsp; For example, if your
    application uses images of size 16 x 16 on an unscaled display and
    <code>tablelist::scalingpct</code> has the value <code>150</code>, then the
    image size for this display should be 24 x 24.</li>

    <li>The boolean variable <code>tablelist::strictTk</code> (having the
    default value <code>0</code>) controls the strict listbox-compatibility of
    the default bindings.</li>

................................................................................
    the value <code>0</code> in the package Tablelist and the value
    <code>1</code> in Tablelist_tile.</li>

    <li>In Tablelist_tile the array <code>tablelist::themeDefaults</code> holds
    the theme-specific default values of a series of Tablelist configuration
    options.</li>
  </ul>





















































































  <h3 id="ov_tile">More on Tablelist_tile</h3>

  <p>A tablelist widget consists of a body (containing the items) and a header
  (displaying the column titles and optional header items).&nbsp; Both
  components are contained in a hull, implemented as a frame.&nbsp; The header
  has a rather complex structure, consisting, among others, of frame and label
................................................................................
      the <code>tablelist::library</code> variable to find the location of the
      file.&nbsp; 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 6.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.&nbsp; 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 6.8

namespace eval demo {
    <span class="cmt">#
    # 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 toplevel widget of the class DemoTop:
    #
................................................................................
  <code>browseTree.tcl</code>.&nbsp; 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 6.8

namespace eval demo {
    variable dir [file dirname [info script]]

    <span class="cmt">#
    # Create two images, needed in the procedure putChildren
    #</span>
................................................................................
  "tablelistWidget.html#childkeys">childkeys</a></code> tablelist
  subcommand.&nbsp; It then loops over this list, and for each key for which
  the corresponding row was previously expanded, it invokes the <code><a href=
  "tablelistWidget.html#expand">expand</a></code> tablelist subcommand and then
  calls itself recursively to restore the expanded states of that row's
  children.</p>

  <h3 id="ex_dirViewer">A Directory Viewer Based on a tablelist</h3>

  <p>The script <code>dirViewer.tcl</code> in the <code>demos</code> directory
  displays the contents of the volumes mounted on the system (e.g., the root
  <code>/</code> on UNIX and the local drives on Windows) in a tablelist used
  as multi-column tree widget:</p>

  <blockquote>
................................................................................
  in the <a href="#ex_browse">previous section</a>.&nbsp; 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 6.8

<span class="cmt">#
# Add some entries to the Tk option database
#</span>
set dir [file dirname [info script]]
source [file join $dir option.tcl]

<span class="cmt">#
# Create three images
#</span>

image create photo clsdFolderImg -file [file join $dir clsdFolder.gif]
image create photo openFolderImg -file [file join $dir openFolder.gif]
image create photo fileImg       -file [file join $dir file.gif]














<span class="cmt">#------------------------------------------------------------------------------
# displayContents
#
# Displays the content of the directory dir in a tablelist widget.
#------------------------------------------------------------------------------</span>
proc displayContents dir {
    <span class="cmt">#
................................................................................
        $tbl configure -spacing 1
    }
    $tbl columnconfigure 0 -formatcommand formatString -sortmode dictionary
    $tbl columnconfigure 1 -formatcommand formatSize -sortmode integer
    $tbl columnconfigure 2 -formatcommand formatString
    scrollbar $vsb -orient vertical   -command [list $tbl yview]
    scrollbar $hsb -orient horizontal -command [list $tbl xview]



















    . . .

    <span class="cmt">#
    # Populate the tablelist with the content of the given directory
    #</span>
    $tbl sortbycolumn 0
................................................................................
  <p>The procedure specifies a value not only for the <code><a href=
  "tablelistWidget.html#expandcommand">-expandcommand</a></code> option of the
  tablelist it creates, but also for its <code><a href=
  "tablelistWidget.html#collapsecommand">-collapsecommand</a></code>
  option.&nbsp; The latter will merely restore the image shown in the first
  column to the one displaying a closed folder (see below).</p>


































  <blockquote>
    <pre>
<span class="cmt">#------------------------------------------------------------------------------
# putContents
#
# Outputs the content of the directory dir into the tablelist widget tbl, as
# child items of the one identified by nodeIdx.
................................................................................
  <code>miscWidgets.tcl</code> are similar).&nbsp; A few parts of the code are
  shown in <span class="red">red</span> color &ndash; we will return to this
  towards the end of the section.</p>

  <blockquote>
    <pre>
package require Tk 8.4                          ;<span class="cmt"># because of "-compound"</span>
package require tablelist 6.8
package require BWidget

wm title . "Serial Line Configuration"

<span class="cmt">#
# Add some entries to the Tk option database
#</span>
................................................................................
    "310">
  </blockquote>

  <p>First, we create and populate the tablelist widget:</p>

  <blockquote>
    <pre>
package require tablelist 6.8

wm title . "Tk Library Scripts"

<span class="cmt">#
# Add some entries to the Tk option database
#</span>
set dir [file dirname [info script]]
................................................................................
  <span class="red">red</span> color:</p>

  <p>First, we replace the starting lines</p>

  <blockquote>
    <pre>
package require Tk 8.3                          ;<span class="cmt"># because of entry validation</span>
package require tablelist 6.8
</pre>
  </blockquote>

  <p>with</p>

  <blockquote>
    <pre>
package require tablelist<span class="red">_tile</span> 6.8
</pre>
  </blockquote>

  <p>and the command</p>

  <blockquote>
    <pre>






|







 







>
>
>











|







 







|
|







 







|



|







|



|




|
|







 







|
|



|

|







 







>
>
|
|
|
|
|
|
|
|







 







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







 







|







 







|







 







|







 







|







 







|








|

>
|
|
|
>
>

>
>
>
>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







 







|







 







|







 







|







|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
..
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
...
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
...
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
228
229
230
231
232
...
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
...
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
...
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
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
467
468
469
470
471
472
...
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
...
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
....
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
....
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
....
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
....
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
....
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
....
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
....
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
....
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Tablelist Programmer's Guide</h1>

    <h2>For Tablelist Version 6.9</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>
................................................................................

    <li><a href="#ov_get">How to Get It?</a></li>

    <li><a href="#ov_install">How to Install It?</a></li>

    <li><a href="#ov_use">How to Use It?</a></li>

    <li><a href="#ov_scaling">More on
    <code>tablelist::scalingpct</code></a></li>

    <li><a href="#ov_tile">More on Tablelist_tile</a></li>
  </ul>

  <h4><a href="#examples">Examples</a></h4>

  <ul>
    <li><a href="#ex_config">A tablelist Widget for Displaying and Editing
    Configuration Options</a></li>

    <li><a href="#ex_browse">Two Widget Browsers Based on a tablelist</a></li>

    <li><a href="#ex_dirViewer">A Scalable Directory Viewer Based on a
    tablelist</a></li>

    <li><a href="#ex_styles">Improving the Look & Feel of a tablelist
    Widget</a></li>

    <li><a href="#ex_editing">Advanced Interactive tablelist Cell
    Editing</a></li>
................................................................................
      <a href="https://www.nemethi.de">https://www.nemethi.de</a>
    </address>
  </blockquote>

  <h3 id="ov_get">How to Get It?</h3>

  <p>Tablelist is available for free download from the same URL as Wcb.&nbsp;
  The distribution file is <code>tablelist6.9.tar.gz</code> for UNIX and
  <code>tablelist6_9.zip</code> for Windows.&nbsp; 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 included in tklib, which has the address</p>

  <blockquote>
    <address>
................................................................................
  a directory at the same level as the Tcl and Tk script libraries.&nbsp; 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>tablelist6.9.tar.gz</code>:</p>

  <blockquote>
    <pre>
gunzip -c tablelist6.9.tar.gz | tar -xf -
</pre>
  </blockquote>

  <p>On most UNIX systems this can be replaced with</p>

  <blockquote>
    <pre>
tar -zxf tablelist6.9.tar.gz
</pre>
  </blockquote>

  <p>Both commands will create a directory named <code>tablelist6.9</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>tablelist6_9.zip</code> into the directory
  <code>tablelist6.9</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.&nbsp; 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.&nbsp; 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>&nbsp; If you have an earlier Tablelist version as part of
  ActiveTcl 8.5 or above and the new Tablelist release 6.9, then it is highly
  recommended to specify the version number <code>6.9</code> in the&nbsp;
  <code>package require</code>&nbsp; command, because otherwise the interpreter
  will load the old Tablelist version included in ActiveTcl as Tcl
  Module.&nbsp; The <a href="#examples">examples</a> below use the
  statement&nbsp; <code>package require tablelist 6.9</code>,&nbsp; and their
  tile-based counterparts invoke the command&nbsp; <code>package require
  tablelist_tile 6.9</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>?
................................................................................
    <li>The variable <code>tablelist::version</code> holds the current version
    number of the Tablelist and Tablelist_tile packages.</li>

    <li>The variable <code>tablelist::library</code> holds the location of the
    Tablelist installation directory.</li>

    <li>The variable <code>tablelist::scalingpct</code> holds the scaling
    percentage corresponding to the display's DPI scaling level.&nbsp;
    Tablelist adapts the default sort arrow style on Windows Vista, 7, 8, and
    10, as well as the sizes of the tree styles <code>vistaAero</code>,
    <code>vistaClassic</code>, <code>win7Aero</code>, <code>win7Classic</code>,
    and <code>win10</code> to the value of this variable.&nbsp; The currently
    supported values are <code>100</code>, <code>125</code>, <code>150</code>,
    <code>175</code>, and <code>200</code>.&nbsp; You can use this variable on
    all platforms, e.g., if you want to create images of different sizes,
    depending on the DPI scaling level.&nbsp; For example, if your application
    uses images of size 16 x 16 on an unscaled display and
    <code>tablelist::scalingpct</code> has the value <code>150</code>, then the
    image size for this display should be 24 x 24.</li>

    <li>The boolean variable <code>tablelist::strictTk</code> (having the
    default value <code>0</code>) controls the strict listbox-compatibility of
    the default bindings.</li>

................................................................................
    the value <code>0</code> in the package Tablelist and the value
    <code>1</code> in Tablelist_tile.</li>

    <li>In Tablelist_tile the array <code>tablelist::themeDefaults</code> holds
    the theme-specific default values of a series of Tablelist configuration
    options.</li>
  </ul>

  <h3 id="ov_scaling">More on <code>tablelist::scalingpct</code></h3>

  <p>The way Tablelist initializes the variable
  <code>tablelist::scalingpct</code> depends on the windowing system:</p>

  <p><i>On Windows and Mac OS X Aqua</i> the scaling percentage is computed
  from&nbsp; <code>[tk scaling]</code>.&nbsp; Note that on Mac OS X the result
  is always <code>100</code>, regardless of the display's scaling level, hence
  there is no need for scaling-dependent sizes for the sort arrow, tree style,
  or images.&nbsp; On Mac OS X Aqua the desktop engine automatically scales
  everything as needed.</p>

  <p><i>On X11</i>, computing the scaling percentage from&nbsp; <code>[tk
  scaling]</code>&nbsp; is done as fallback method only, because the
  implementation of display scaling is highly dependent on the desktop
  environment and it mostly manipulates system resources that are resident
  outside of Xlib, which Tk is based on.&nbsp; (Traditional X applications like
  <code>bitmap</code> and <code>xmag</code> are also affected by this.)&nbsp;
  With the exception of Xfce and MATE, Tablelist computes the scaling
  percentage from the value of the X resource <code>Xft.dpi</code>, by
  executing the <code>xrdb</code> application.&nbsp; On GNOME-based systems
  where <code>xrdb</code> is not installed per default (e.g., Solus GNOME and
  Solus Budgie), it uses the <code>xrandr</code> application and the file
  <code>~/.config/monitors.xml</code> instead.</p>

  <ul>
    <li class="tm">On <i>Xfce and MATE</i> the display scaling mode can be
    either unscaled (1x, normal) or scaled (2x, HiDPI), and the variable
    <code>tablelist::scalingpct</code> will be set accordingly to
    <code>100</code> or <code>200</code>.</li>

    <li class="tm">In case of <i>GNOME on Xorg, Budgie, and Cinnamon</i>, the
    display scaling can be either 100 % or 200 %, and Tablelist sets the
    variable <code>tablelist::scalingpct</code> accordingly to <code>100</code>
    or <code>200</code>.&nbsp; In newer GNOME and Budgie versions on Ubuntu one
    can enable the <code>x11-randr-fractional-scaling</code> as experimental
    feature, which adds 125 %, 150 %, and 175 % to the list of supported
    scaling percentages.&nbsp; Note that, due to the way this fractional
    scaling is implemented, if the display scaling was set to one of these
    intermediate levels, the value of <code>tablelist::scalingpct</code> will
    be <code>200</code>.&nbsp; Support for fractional scaling was also
    announced for the next Cinnamon version 4.6.</li>

    <li class="tm"><i>GNOME on Wayland</i> traditionally supports the display
    scaling values 100 % and 200 %, and the variable
    <code>tablelist::scalingpct</code> will be set accordingly to
    <code>100</code> or <code>200</code>.&nbsp; In newer GNOME versions one can
    enable the experimental feature <code>scale-monitor-framebuffer</code>,
    which adds 125 %, 150 %, and 175 % to the list of supported scaling
    percentages.&nbsp; With this feature enabled, the value of
    <code>tablelist::scalingpct</code> will be <code>100</code> for all scaling
    levels 100 %, 125 %, ..., 200 %.&nbsp; This is due to the fact that in this
    case, instead of window contents, monitor framebuffers will be scaled in a
    logical pixel coordinate space.</li>

    <li class="tm"><i>KDE Plasma on Xorg</i> provides fractional scaling
    support.&nbsp; On this desktop, Tablelist will set the variable
    <code>tablelist::scalingpct</code> to <code>100</code>, <code>125</code>,
    <code>150</code>, <code>175</code>, or <code>200</code>, depending on the
    display's scaling level.</li>

    <li class="tm"><i>KDE Plasma on Wayland</i> supports fractional scaling,
    too.&nbsp; In this case, the value of the variable
    <code>tablelist::scalingpct</code> will always be <code>100</code>,
    regardless of the display's scaling level.</li>
  </ul>

  <p>When initializing the variable <code>tablelist::scalingpct</code> on X11,
  Tablelist also corrects the sizes of the standard fonts if needed.&nbsp;
  These fonts (<code>TkDefaultFont</code>, <code>TkTextFont</code>, etc.) are
  defined in the file <code>$tk_library/ttk/fonts.tcl</code>.&nbsp; For quite a
  long time, the font sizes for X11 given in this file were sizes in pixels,
  which was not suitable for use on HiDPI displays.&nbsp; This caused several
  Linux distributions to bundle patched versions of this file, in which the
  sizes in pixels are replaced with sizes in points.&nbsp; The same fix was
  committed in February 2020 into the Tk core repository.&nbsp; To make sure
  that, regardless of the Tk version, the font sizes will suit the display's
  scaling level, Tablelist examines this library file and, if the latter
  contains sizes in pixels, then it sets the <code>-size</code> option of the
  standard fonts to corresponding sizes in points (without altering the
  file).&nbsp; In addition, for the HiDPI mode on Xfce and MATE, Tablelist
  doubles the sizes (in points) of the standard fonts (the way display scaling
  works on these desktops makes this necessary).</p>

  <h3 id="ov_tile">More on Tablelist_tile</h3>

  <p>A tablelist widget consists of a body (containing the items) and a header
  (displaying the column titles and optional header items).&nbsp; Both
  components are contained in a hull, implemented as a frame.&nbsp; The header
  has a rather complex structure, consisting, among others, of frame and label
................................................................................
      the <code>tablelist::library</code> variable to find the location of the
      file.&nbsp; 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 6.9
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.&nbsp; 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 6.9

namespace eval demo {
    <span class="cmt">#
    # 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 toplevel widget of the class DemoTop:
    #
................................................................................
  <code>browseTree.tcl</code>.&nbsp; 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 6.9

namespace eval demo {
    variable dir [file dirname [info script]]

    <span class="cmt">#
    # Create two images, needed in the procedure putChildren
    #</span>
................................................................................
  "tablelistWidget.html#childkeys">childkeys</a></code> tablelist
  subcommand.&nbsp; It then loops over this list, and for each key for which
  the corresponding row was previously expanded, it invokes the <code><a href=
  "tablelistWidget.html#expand">expand</a></code> tablelist subcommand and then
  calls itself recursively to restore the expanded states of that row's
  children.</p>

  <h3 id="ex_dirViewer">A Scalable Directory Viewer Based on a tablelist</h3>

  <p>The script <code>dirViewer.tcl</code> in the <code>demos</code> directory
  displays the contents of the volumes mounted on the system (e.g., the root
  <code>/</code> on UNIX and the local drives on Windows) in a tablelist used
  as multi-column tree widget:</p>

  <blockquote>
................................................................................
  in the <a href="#ex_browse">previous section</a>.&nbsp; 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 6.9

<span class="cmt">#
# Add some entries to the Tk option database
#</span>
set dir [file dirname [info script]]
source [file join $dir option.tcl]

<span class="cmt">#
# Create three images corresponding to the display's DPI scaling level
#</span>
set pct $tablelist::scalingpct
image create photo clsdFolderImg -file [file join $dir clsdFolder$pct.gif]
image create photo openFolderImg -file [file join $dir openFolder$pct.gif]
image create photo fileImg       -file [file join $dir       file$pct.gif]
</pre>
  </blockquote>

  <p>The three images representing a closed folder, an open folder, and a file,
  respectively, are created from files whose names contain the display's DPI
  scaling level, given by the public variable
  <code>tablelist::scalingpct</code>.&nbsp; The files
  <code>clsdFolder100.gif</code>, <code>openFolder100.gif</code>, and
  <code>file100.gif</code> contain images of size 16 x 16, the files
  <code>*125.gif</code> contain images of size 20 x 20, the files
  <code>*150.gif</code> contain images of size 24 x 24, and so on.</p>

  <blockquote>
    <pre>
<span class="cmt">#------------------------------------------------------------------------------
# displayContents
#
# Displays the content of the directory dir in a tablelist widget.
#------------------------------------------------------------------------------</span>
proc displayContents dir {
    <span class="cmt">#
................................................................................
        $tbl configure -spacing 1
    }
    $tbl columnconfigure 0 -formatcommand formatString -sortmode dictionary
    $tbl columnconfigure 1 -formatcommand formatSize -sortmode integer
    $tbl columnconfigure 2 -formatcommand formatString
    scrollbar $vsb -orient vertical   -command [list $tbl yview]
    scrollbar $hsb -orient horizontal -command [list $tbl xview]

    <span class="cmt">#
    # On X11 configure the tablelist and the scrollbars
    # according to the display's DPI scaling level
    #</span>
    global winSys                                       ;<span class="cmt"># see option.tcl</span>
    if {[string compare $winSys "x11"] == 0} {
        set pct $tablelist::scalingpct
        set arrowSizeList {7x4 9x5 11x6 13x7 15x8}
        set idx [expr {($pct - 100) / 25}]
        set arrowSize [lindex $arrowSizeList $idx]
        $tbl configure -arrowstyle flat$arrowSize -treestyle bicolor$pct

        set defaultSbWidth [lindex [$vsb configure -width] 3]
        set sbWidth [expr {$defaultSbWidth * $pct / 100}]
        $vsb configure -width $sbWidth
        $hsb configure -width $sbWidth
    }

    . . .

    <span class="cmt">#
    # Populate the tablelist with the content of the given directory
    #</span>
    $tbl sortbycolumn 0
................................................................................
  <p>The procedure specifies a value not only for the <code><a href=
  "tablelistWidget.html#expandcommand">-expandcommand</a></code> option of the
  tablelist it creates, but also for its <code><a href=
  "tablelistWidget.html#collapsecommand">-collapsecommand</a></code>
  option.&nbsp; The latter will merely restore the image shown in the first
  column to the one displaying a closed folder (see below).</p>

  <p>In a scaling-aware application the values of the <code><a href=
  "tablelistWidget.html#arrowstyle">-arrowstyle</a></code> and <code><a href=
  "tablelistWidget.html#treestyle">-treestyle</a></code> tablelist options
  should reflect the display's DPI scaling level.&nbsp; On Windows Vista, 7, 8,
  and 10 the default values of these options already fulfill this requirement,
  and on Mac OS X Aqua the desktop engine automatically scales everything as
  needed.&nbsp; On X11 we set the <code>-arrowstyle</code> option to one of
  <code>flat7x4</code>, ..., <code>flat15x8</code>, and the
  <code>-treestyle</code> option to one of <code>bicolor100</code>, ...,
  <code>bicolor200</code>, depending on the value of the public variable
  <code>tablelist::scalingpct</code>.&nbsp; On X11 (only) we also set the
  <code>-width</code> option of both scrollbars to a value that depends on the
  DPI scaling percentage.</p>

  <p>In the tile-based version <code>dirViewer_tile.tcl</code> of this demo
  script we create both scrollbars using the <code>ttk::scrollbar</code>
  command.&nbsp; Since ttk::scrollbar widgets have no <code>-width</code>
  option, the code for scaling them makes use of the <code>ttk::style</code>
  command:</p>

  <blockquote>
    <pre>
        ttk::style theme settings default {
            set defaultSbWidth [ttk::style lookup TScrollbar -width]
        }
        set sbWidth [expr {$defaultSbWidth * $pct / 100}]
        ttk::style configure TScrollbar -arrowsize $sbWidth -width $sbWidth
</pre>
  </blockquote>

  <p>Returning to the demo script <code>dirViewer.tcl</code>, let's see how it
  populates the tablelist with the content of the given directory:</p>

  <blockquote>
    <pre>
<span class="cmt">#------------------------------------------------------------------------------
# putContents
#
# Outputs the content of the directory dir into the tablelist widget tbl, as
# child items of the one identified by nodeIdx.
................................................................................
  <code>miscWidgets.tcl</code> are similar).&nbsp; A few parts of the code are
  shown in <span class="red">red</span> color &ndash; we will return to this
  towards the end of the section.</p>

  <blockquote>
    <pre>
package require Tk 8.4                          ;<span class="cmt"># because of "-compound"</span>
package require tablelist 6.9
package require BWidget

wm title . "Serial Line Configuration"

<span class="cmt">#
# Add some entries to the Tk option database
#</span>
................................................................................
    "310">
  </blockquote>

  <p>First, we create and populate the tablelist widget:</p>

  <blockquote>
    <pre>
package require tablelist 6.9

wm title . "Tk Library Scripts"

<span class="cmt">#
# Add some entries to the Tk option database
#</span>
set dir [file dirname [info script]]
................................................................................
  <span class="red">red</span> color:</p>

  <p>First, we replace the starting lines</p>

  <blockquote>
    <pre>
package require Tk 8.3                          ;<span class="cmt"># because of entry validation</span>
package require tablelist 6.9
</pre>
  </blockquote>

  <p>with</p>

  <blockquote>
    <pre>
package require tablelist<span class="red">_tile</span> 6.9
</pre>
  </blockquote>

  <p>and the command</p>

  <blockquote>
    <pre>

Changes to modules/tablelist/doc/tablelistBWidget.html.

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Interactive Tablelist Cell Editing Using the BWidget Package</h1>

    <h2>For Tablelist Version 6.8</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>






|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Interactive Tablelist Cell Editing Using the BWidget Package</h1>

    <h2>For Tablelist Version 6.9</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>

Changes to modules/tablelist/doc/tablelistBinding.html.

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Commands Related to Binding Scripts</h1>

    <h2>For Tablelist Version 6.8</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>






|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Commands Related to Binding Scripts</h1>

    <h2>For Tablelist Version 6.9</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>

Changes to modules/tablelist/doc/tablelistColSort.html.

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Commands for Interactive Sorting by One or More Columns</h1>

    <h2>For Tablelist Version 6.8</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>






|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Commands for Interactive Sorting by One or More Columns</h1>

    <h2>For Tablelist Version 6.9</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>

Changes to modules/tablelist/doc/tablelistCombobox.html.

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Interactive Tablelist Cell Editing Using the combobox Package</h1>

    <h2>For Tablelist Version 6.8</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>






|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Interactive Tablelist Cell Editing Using the combobox Package</h1>

    <h2>For Tablelist Version 6.9</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>

Changes to modules/tablelist/doc/tablelistCtext.html.

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Interactive Tablelist Cell Editing Using the ctext Package</h1>

    <h2>For Tablelist Version 6.8</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>






|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Interactive Tablelist Cell Editing Using the ctext Package</h1>

    <h2>For Tablelist Version 6.9</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>

Changes to modules/tablelist/doc/tablelistIwidgets.html.

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Interactive Tablelist Cell Editing Using the Iwidgets Package</h1>

    <h2>For Tablelist Version 6.8</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>






|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Interactive Tablelist Cell Editing Using the Iwidgets Package</h1>

    <h2>For Tablelist Version 6.9</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>

Changes to modules/tablelist/doc/tablelistMentry.html.

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Interactive Tablelist Cell Editing Using the Mentry Package</h1>

    <h2>For Tablelist Version 6.8</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>






|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Interactive Tablelist Cell Editing Using the Mentry Package</h1>

    <h2>For Tablelist Version 6.9</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>

Changes to modules/tablelist/doc/tablelistThemes.html.

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Commands Related to Tile Themes</h1>

    <h2>For Tablelist Version 6.8</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">csaba.n[email protected]</a>






|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Commands Related to Tile Themes</h1>

    <h2>For Tablelist Version 6.9</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>

Changes to modules/tablelist/doc/tablelistTile.html.

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Interactive Tablelist Cell Editing Using Tile Widgets</h1>

    <h2>For Tablelist Version 6.8</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>






|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Interactive Tablelist Cell Editing Using Tile Widgets</h1>

    <h2>For Tablelist Version 6.9</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>

Changes to modules/tablelist/doc/tablelistTkCore.html.

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Interactive Tablelist Cell Editing Using Tk Core Widgets</h1>

    <h2>For Tablelist Version 6.8</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>






|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>Interactive Tablelist Cell Editing Using Tk Core Widgets</h1>

    <h2>For Tablelist Version 6.9</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>

Changes to modules/tablelist/doc/tablelistWidget.html.

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
..
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
...
298
299
300
301
302
303
304
305
306
307


308

309
310
311
312
313
314
315
316
....
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847

1848
1849
1850
1851
1852
1853
1854

1855
1856
1857
1858
1859
1860
1861
1862
1863
1864

1865
1866
1867
1868

1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
....
4632
4633
4634
4635
4636
4637
4638

4639
4640
4641
4642
4643
4644

4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658


4659
4660
4661
4662
4663
4664
4665

4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678


4679
4680
4681
4682
4683
4684
4685

4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698


4699
4700
4701
4702
4703
4704
4705

4706
4707
4708
4709
4710
4711
4712
....
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
....
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
....
5034
5035
5036
5037
5038
5039
5040
5041
5042

5043
5044
5045
5046
5047
5048
5049
....
8218
8219
8220
8221
8222
8223
8224
8225


8226
8227
8228
8229
8230
8231
8232
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>The <code><b>tablelist::tablelist</b></code> Command</h1>

    <h2>For Tablelist Version 6.8</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>
................................................................................
    <dd><code><b><a href="#arrowcolor">-arrowcolor</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#arrowdisabledcolor">-arrowdisabledcolor</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#arrowstyle">-arrowstyle</a></b>
    <b>flat5x3</b>|<b>flat5x4</b>|<b>flat6x4</b>|<b>flat7x4</b>|<b>flat7x5</b>|<b>flat7x7</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flat8x4</b>|<b>flat8x5</b>|<b>flat9x5</b>|<b>flat9x6</b>|<b>flat11x6</b>|<b>flat15x8</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flatAngle7x4</b>|<b>flatAngle7x5</b>|<b>flatAngle9x5</b>|<b>flatAngle9x6</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flatAngle9x7</b>|<b>flatAngle10x6</b>|<b>flatAngle10x7</b>|<b>flatAngle11x6</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flatAngle15x8</b>|<b>photo7x4</b>|<b>photo7x7</b>|<b>photo9x5</b>|<b>photo11x6</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;photo15x8</b>|<b>sunken8x7</b>|<b>sunken10x9</b>|<b>sunken12x11</b></code></dd>

    <dd><code><b><a href="#autofinishediting">-autofinishediting</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#autoscan">-autoscan</a></b>
    <i>boolean</i></code></dd>

................................................................................
    <dd><code><b><a href="#tooltipdelcommand">-tooltipdelcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#treecolumn">-treecolumn</a></b>
    <i>columnIndex</i></code></dd>

    <dd><code><b><a href="#treestyle">-treestyle</a></b>
    <b>adwaita</b>|<b>ambiance</b>|<b>aqua</b>|<b>arc</b>|<b>baghira</b>|<b>bicolor1</b>|<b>bicolor2</b>|<b>bicolor3</b>|<b>bicolor4</b>|<b>blueMenta</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classic1</b>|<b>classic2</b>|<b>classic3</b>|<b>classic4</b>|<b>dust</b>|<b>dustSand</b>|<b>gtk</b>|<b>klearlooks</b>|<b>mate</b>|<b>menta</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mint</b>|<b>mint2</b>|<b>newWave</b>|<b>oxygen1</b>|<b>oxygen2</b>|<b>phase</b>|<b>plain1</b>|<b>plain2</b>|<b>plain3</b>|<b>plain4</b>|<b>plastik</b>|<br>


    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plastique</b>|<b>radiance</b>|<b>ubuntu</b>|<b>ubuntu2</b>|<b>ubuntu3</b>|<b>ubuntuMate</b>|<b>vistaAero</b>|<b>vistaClassic</b>|<br>

    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;win7Aero</b>|<b>win7Classic</b>|<b>win10</b>|<b>winnative</b>|<b>winxpBlue</b>|<b>winxpOlive</b>|<b>winxpSilver</b>|<b>yuyo</b></code></dd>

    <dd><code><b><a href="#width">-width</a></b> <i>characters</i></code></dd>

    <dd><code><b><a href="#xmousewheelwindow">-xmousewheelwindow</a></b>
    <i>window</i></code></dd>

    <dd><code><b><a href="#ymousewheelwindow">-ymousewheelwindow</a></b>
................................................................................
        <p>Specifies the relief, shape, width, and height of the up- or
        down-arrow placed into a column label by the <code><b><a href=
        "#sortbycolumn">sortbycolumn</a></b></code> or <code><b><a href=
        "#sortbycolumnlist">sortbycolumnlist</a></b></code> subcommand of the
        Tcl command associated with the widget.&nbsp; This option is only
        relevant if the value of the <code><b><a href=
        "#showarrow">-showarrow</a></b></code> option is true.&nbsp; The
        currently supported values are <code><b>flat5x3</b></code>,
        <code><b>flat5x4</b></code>, <code><b>flat6x4</b></code>,
        <code><b>flat7x4</b></code>, <code><b>flat7x5</b></code>,
        <code><b>flat7x7</b></code>, <code><b>flat8x4</b></code>,
        <code><b>flat8x5</b></code>, <code><b>flat9x5</b></code>,
        <code><b>flat9x6</b></code>, <code><b>flat11x6</b></code>,

        <code><b>flat15x8</b></code>, <code><b>flatAngle7x4</b></code>,
        <code><b>flatAngle7x5</b></code>, <code><b>flatAngle9x5</b></code>,
        <code><b>flatAngle9x6</b></code>, <code><b>flatAngle9x7</b></code>,
        <code><b>flatAngle10x6</b></code>, <code><b>flatAngle10x7</b></code>,
        <code><b>flatAngle11x6</b></code>, <code><b>flatAngle15x8</b></code>,
        <code><b>photo7x4</b></code>, <code><b>photo7x7</b></code>,
        <code><b>photo9x5</b></code>, <code><b>photo11x6</b></code>,

        <code><b>photo15x8</b></code>, <code><b>sunken8x7</b></code>,
        <code><b>sunken10x9</b></code>, and <code><b>sunken12x11</b></code>, as
        shown in the picture below (except <code><b>photo*</b></code>).&nbsp;
        The default value depends on the windowing system in the Tablelist
        package and on the current theme in Tablelist_tile; see the description
        of the <code><b><a href="#arrowcolor">-arrowcolor</a></b></code> option
        for details.&nbsp; As mentioned there, the default arrow style on
        Windows 10 is <code><b>flatAngle7x4</b></code>.&nbsp; While this is in
        most cases true, notice that the default chosen by Tablelist can also
        be <code><b>flatAngle9x5</b></code>, <code><b>flatAngle11x6</b></code>,

        or <code><b>flatAngle15x8</b></code>, depending on the display's
        scaling level.&nbsp; Similarly, on Windows Vista, 7, and 8, the default
        chosen by Tablelist will be <code><b>photo7x4</b></code>,
        <code><b>photo9x5</b></code>, <code><b>photo11x6</b></code>, or

        <code><b>photo15x8</b></code>, depending on the display's scaling
        level.</p>

        <p><img src="arrowStyles.png" alt="Arrow Styles" width="436" height=
        "174"></p>

        <p>While the sort arrows of the styles <code><b>flat*</b></code> and
        <code><b>sunken*</b></code> are created from bitmaps, the arrow styles
        <code><b>photo7x4</b></code>, <code><b>photo9x5</b></code>,
        <code><b>photo11x6</b></code>, and <code><b>photo15x8</b></code> use
        GIF images that look very close to the native sort arrows on Windows
        Vista, 7, and 8.&nbsp; When using one of these styles, the
        <code><b><a href="#arrowcolor">-arrowcolor</a></b></code> and
        <code><b><a href=
        "#arrowdisabledcolor">-arrowdisabledcolor</a></b></code> options have
        no effect.</p>

        <p>On Windows Vista, 7, 8, and 10, the sort arrows are shown
        horizontally centered in the header labels, just below their top
        edges:</p>

        <p><img src="arrowStyles_vista.png" alt="Arrow Styles Vista" width=
        "638" height="123"></p>

        <p>The arrow style <code><b>photo7x7</b></code> uses PNG images that
        look and behave very close to the native sort arrows on Mac OS X Aqua
        versions earlier than 10.10 (Yosemite).&nbsp; This arrow style is only
        supported if the Tk version is either 8.6 (with built-in PNG support),
        or 8.5 and the <code><b>img::png</b></code> package can be loaded into
        the interpreter.&nbsp; When supported, <code><b>photo7x7</b></code>
................................................................................
        following tree styles:</p>

        <table border="2" cellspacing="0" cellpadding="3" rules="groups">
          <colgroup></colgroup>
          <colgroup></colgroup>
          <colgroup></colgroup>
          <colgroup></colgroup>


          <tbody align="center">
            <tr bgcolor="#FFFFE0">
              <th>100 %</th>
              <th>125 %</th>
              <th>150 %</th>

              <th>200 %</th>
            </tr>
          </tbody>

          <tbody align="center">
            <tr>
              <td><img src="plain1.png" alt="plain1" width="120" height=
              "51"></td>
              <td><img src="plain2.png" alt="plain2" width="140" height=
              "63"></td>
              <td><img src="plain3.png" alt="plain3" width="160" height=
              "72"></td>
              <td><img src="plain4.png" alt="plain4" width="210" height=
              "93"></td>


            </tr>

            <tr>
              <th><code>plain1</code></th>
              <th><code>plain2</code></th>
              <th><code>plain3</code></th>
              <th><code>plain4</code></th>

            </tr>
          </tbody>

          <tbody align="center">
            <tr>
              <td><img src="bicolor1.png" alt="bicolor1" width="120" height=
              "51"></td>
              <td><img src="bicolor2.png" alt="bicolor2" width="140" height=
              "63"></td>
              <td><img src="bicolor3.png" alt="bicolor3" width="160" height=
              "72"></td>
              <td><img src="bicolor4.png" alt="bicolor4" width="210" height=
              "93"></td>


            </tr>

            <tr>
              <th><code>bicolor1</code></th>
              <th><code>bicolor2</code></th>
              <th><code>bicolor3</code></th>
              <th><code>bicolor4</code></th>

            </tr>
          </tbody>

          <tbody align="center">
            <tr>
              <td><img src="classic1.png" alt="classic1" width="120" height=
              "51"></td>
              <td><img src="classic2.png" alt="classic2" width="140" height=
              "63"></td>
              <td><img src="classic3.png" alt="classic3" width="160" height=
              "72"></td>
              <td><img src="classic4.png" alt="classic4" width="210" height=
              "93"></td>


            </tr>

            <tr>
              <th><code>classic1</code></th>
              <th><code>classic2</code></th>
              <th><code>classic3</code></th>
              <th><code>classic4</code></th>

            </tr>
          </tbody>
        </table>

        <p>If the tree style is <code><b>gtk</b></code>,
        <code><b>adwaita</b></code>, <code><b>blueMenta</b></code>,
        <code><b>ubuntu</b></code>, <code><b>ubuntu2</b></code>,
................................................................................
                  flavors of <code><b>qtcurve</b></code>.</td>
                </tr>
              </table>
            </td>
          </tr>

          <tr>
            <td><code><b>bicolor1</b></code>,<br>
            . . .<br>
            <code><b>bicolor4</b></code></td>
            <td><img src="bicolor1.png" alt="bicolor1" width="120" height=
            "51"></td>
            <td>While the tree style <code><b>bicolor1</b></code> uses "normal"
            sizes, the three other styles are suitable for use with large fonts
            and images (needed on high-resolution displays).</td>
          </tr>

          <tr>
            <td><code><b>classic1</b></code>,<br>
            . . .<br>
            <code><b>classic4</b></code></td>
            <td><img src="classic1.png" alt="classic1" width="120" height=
            "51"></td>
            <td>While the tree style <code><b>classic1</b></code> uses "normal"
            sizes, the three other styles are suitable for use with large fonts
            and images (needed on high-resolution displays).</td>
          </tr>

          <tr>
            <td><code><b>blueMenta</b></code></td>
            <td><img src="blueMenta.png" alt="blueMenta" width="120" height=
            "51"></td>
            <td>Inspired by the GTK 3 theme BlueMenta of versions 1.14 and
................................................................................
                  the <code><b>tileqt</b></code> theme.</td>
                </tr>
              </table>
            </td>
          </tr>

          <tr>
            <td><code><b>plain1</b></code>,<br>
            . . .<br>
            <code><b>plain4</b></code></td>
            <td><img src="plain1.png" alt="plain1" width="120" height=
            "51"></td>
            <td>While the tree style <code><b>plain1</b></code> uses "normal"
            sizes, the three other styles are suitable for use with large fonts
            and images (needed on high-resolution displays).</td>
          </tr>

          <tr>
            <td><code><b>plastik</b></code></td>
            <td><img src="plastik.png" alt="plastik" width="120" height=
            "51"></td>
................................................................................
            16.10 and later of the Ubuntu Linux distribution.</td>
          </tr>

          <tr>
            <td><code><b>ubuntuMate</b></code></td>
            <td><img src="ubuntuMate.png" alt="ubuntuMate" width="120" height=
            "51"></td>
            <td>Inspired by the themes Ambiant-MATE and Radiant-MATE bundled
            with versions 16.10 and later of the Ubuntu MATE distribution.</td>

          </tr>

          <tr>
            <td><code><b>vistaAero</b></code></td>
            <td><img src="vistaAero.png" alt="vistaAero" width="120" height=
            "54"></td>
            <td>
................................................................................
        added to the requested column width by a stretch operation (see the
        <code><b><a href="#stretch">-stretch</a></b></code> widget and
        <code><b><a href="#col_stretchable">-stretchable</a></b></code> column
        configuration options).&nbsp; Finally, if the optional argument is
        <code><b>-total</b></code> then the return value is the stretched
        column width increased by the number of pixels corresponding to the
        left and right margins within the column; this value equals the width
        of the header label if the tablelist widget is mapped.</dd>



        <dt class="tm" id="configcelllist"><code><i>pathName</i>
        <b>configcelllist</b> <i>cellConfigSpecList</i></code></dt>

        <dd>
          For each cell index, option, and value specified by the list
          <code><i>cellConfigSpecList</i></code>, the command modifies the






|







 







|
|
|
|

|







 







|
|
|
>
>
|
>
|







 







|
<




>
|
|
|
|
|


>
|
|
<







>
|
|
|
|
>
|
<

|
|




|
|
|
|
|








|







 







>






>






|
|
|
|
|
|
|

>
>



|
|
|
|
>





|
|
|
|
|
|
|
|
>
>



|
|
|
|
>





|
|
|
|
|
|
|
|
>
>



|
|
|
|
>







 







|

|
|
|
|
|
|



|

|
|
|
|
|
|







 







|

|
|
|
|
|







 







|
|
>







 







|
>
>







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
..
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
...
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
....
1838
1839
1840
1841
1842
1843
1844
1845

1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860

1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874

1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
....
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
....
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
....
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
....
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
....
8234
8235
8236
8237
8238
8239
8240
8241
8242
8243
8244
8245
8246
8247
8248
8249
8250
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div align="center">
    <h1>The <code><b>tablelist::tablelist</b></code> Command</h1>

    <h2>For Tablelist Version 6.9</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>
................................................................................
    <dd><code><b><a href="#arrowcolor">-arrowcolor</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#arrowdisabledcolor">-arrowdisabledcolor</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#arrowstyle">-arrowstyle</a></b>
    <b>flat6x4</b>|<b>flat7x4</b>|<b>flat7x5</b>|<b>flat7x7</b>|<b>flat8x4</b>|<b>flat8x5</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flat9x5</b>|<b>flat9x6</b>|<b>flat11x6</b>|<b>flat13x7</b>|<b>flat15x8</b>|<b>flatAngle7x4</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flatAngle7x5</b>|<b>flatAngle9x5</b>|<b>flatAngle9x6</b>|<b>flatAngle9x7</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flatAngle10x6</b>|<b>flatAngle10x7</b>|<b>flatAngle11x6</b>|<b>flatAngle13x7</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flatAngle15x8</b>|<b>photo7x4</b>|<b>photo7x7</b>|<b>photo9x5</b>|<b>photo11x6</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;photo13x7</b>|<b>photo15x8</b>|<b>sunken8x7</b>|<b>sunken10x9</b>|<b>sunken12x11</b></code></dd>

    <dd><code><b><a href="#autofinishediting">-autofinishediting</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#autoscan">-autoscan</a></b>
    <i>boolean</i></code></dd>

................................................................................
    <dd><code><b><a href="#tooltipdelcommand">-tooltipdelcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#treecolumn">-treecolumn</a></b>
    <i>columnIndex</i></code></dd>

    <dd><code><b><a href="#treestyle">-treestyle</a></b>
    <b>adwaita</b>|<b>ambiance</b>|<b>aqua</b>|<b>arc</b>|<b>baghira</b>|<b>bicolor100</b>|<b>bicolor125</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bicolor150</b>|<b>bicolor175</b>|<b>bicolor200</b>|<b>blueMenta</b>|<b>classic100</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classic125</b>|<b>classic150</b>|<b>classic175</b>|<b>classic200</b>|<b>dust</b>|<b>dustSand</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gtk</b>|<b>klearlooks</b>|<b>mate</b>|<b>menta</b>|<b>mint</b>|<b>mint2</b>|<b>newWave</b>|<b>oxygen1</b>|<b>oxygen2</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;phase</b>|<b>plain100</b>|<b>plain125</b>|<b>plain150</b>|<b>plain175</b>|<b>plain200</b>|<b>plastik</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plastique</b>|<b>radiance</b>|<b>ubuntu</b>|<b>ubuntu2</b>|<b>ubuntu3</b>|<b>ubuntuMate</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vistaAero</b>|<b>vistaClassic</b>|<b>win7Aero</b>|<b>win7Classic</b>|<b>win10</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;winnative</b>|<b>winxpBlue</b>|<b>winxpOlive</b>|<b>winxpSilver</b>|<b>yuyo</b></code></dd>

    <dd><code><b><a href="#width">-width</a></b> <i>characters</i></code></dd>

    <dd><code><b><a href="#xmousewheelwindow">-xmousewheelwindow</a></b>
    <i>window</i></code></dd>

    <dd><code><b><a href="#ymousewheelwindow">-ymousewheelwindow</a></b>
................................................................................
        <p>Specifies the relief, shape, width, and height of the up- or
        down-arrow placed into a column label by the <code><b><a href=
        "#sortbycolumn">sortbycolumn</a></b></code> or <code><b><a href=
        "#sortbycolumnlist">sortbycolumnlist</a></b></code> subcommand of the
        Tcl command associated with the widget.&nbsp; This option is only
        relevant if the value of the <code><b><a href=
        "#showarrow">-showarrow</a></b></code> option is true.&nbsp; The
        currently supported values are <code><b>flat6x4</b></code>,

        <code><b>flat7x4</b></code>, <code><b>flat7x5</b></code>,
        <code><b>flat7x7</b></code>, <code><b>flat8x4</b></code>,
        <code><b>flat8x5</b></code>, <code><b>flat9x5</b></code>,
        <code><b>flat9x6</b></code>, <code><b>flat11x6</b></code>,
        <code><b>flat13x7</b></code>, <code><b>flat15x8</b></code>,
        <code><b>flatAngle7x4</b></code>, <code><b>flatAngle7x5</b></code>,
        <code><b>flatAngle9x5</b></code>, <code><b>flatAngle9x6</b></code>,
        <code><b>flatAngle9x7</b></code>, <code><b>flatAngle10x6</b></code>,
        <code><b>flatAngle10x7</b></code>, <code><b>flatAngle11x6</b></code>,
        <code><b>flatAngle13x7</b></code>, <code><b>flatAngle15x8</b></code>,
        <code><b>photo7x4</b></code>, <code><b>photo7x7</b></code>,
        <code><b>photo9x5</b></code>, <code><b>photo11x6</b></code>,
        <code><b>photo13x7</b></code>, <code><b>photo15x8</b></code>,
        <code><b>sunken8x7</b></code>, <code><b>sunken10x9</b></code>, and
        <code><b>sunken12x11</b></code>, as shown in the picture below.&nbsp;

        The default value depends on the windowing system in the Tablelist
        package and on the current theme in Tablelist_tile; see the description
        of the <code><b><a href="#arrowcolor">-arrowcolor</a></b></code> option
        for details.&nbsp; As mentioned there, the default arrow style on
        Windows 10 is <code><b>flatAngle7x4</b></code>.&nbsp; While this is in
        most cases true, notice that the default chosen by Tablelist can also
        be <code><b>flatAngle9x5</b></code>, <code><b>flatAngle11x6</b></code>,
        <code><b>flatAngle13x7</b></code>, or
        <code><b>flatAngle15x8</b></code>, depending on the display's scaling
        level.&nbsp; Similarly, on Windows Vista, 7, and 8, the default chosen
        by Tablelist will be <code><b>photo7x4</b></code>,
        <code><b>photo9x5</b></code>, <code><b>photo11x6</b></code>,
        <code><b>photo13x7</b></code>, or <code><b>photo15x8</b></code>,
        depending on the display's scaling level.</p>


        <p><img src="arrowStyles.png" alt="Arrow Styles" width="826" height=
        "113"></p>

        <p>While the sort arrows of the styles <code><b>flat*</b></code> and
        <code><b>sunken*</b></code> are created from bitmaps, the arrow styles
        <code><b>photo7x4</b></code>, <code><b>photo9x5</b></code>,
        <code><b>photo11x6</b></code>, <code><b>photo13x7</b></code>, and
        <code><b>photo15x8</b></code> use GIF images that look very close to
        the native sort arrows on Windows Vista, 7, and 8.&nbsp; When using one
        of these styles, the <code><b><a href=
        "#arrowcolor">-arrowcolor</a></b></code> and <code><b><a href=
        "#arrowdisabledcolor">-arrowdisabledcolor</a></b></code> options have
        no effect.</p>

        <p>On Windows Vista, 7, 8, and 10, the sort arrows are shown
        horizontally centered in the header labels, just below their top
        edges:</p>

        <p><img src="arrowStyles_vista.png" alt="Arrow Styles Vista" width=
        "824" height="123"></p>

        <p>The arrow style <code><b>photo7x7</b></code> uses PNG images that
        look and behave very close to the native sort arrows on Mac OS X Aqua
        versions earlier than 10.10 (Yosemite).&nbsp; This arrow style is only
        supported if the Tk version is either 8.6 (with built-in PNG support),
        or 8.5 and the <code><b>img::png</b></code> package can be loaded into
        the interpreter.&nbsp; When supported, <code><b>photo7x7</b></code>
................................................................................
        following tree styles:</p>

        <table border="2" cellspacing="0" cellpadding="3" rules="groups">
          <colgroup></colgroup>
          <colgroup></colgroup>
          <colgroup></colgroup>
          <colgroup></colgroup>
          <colgroup></colgroup>

          <tbody align="center">
            <tr bgcolor="#FFFFE0">
              <th>100 %</th>
              <th>125 %</th>
              <th>150 %</th>
              <th>175 %</th>
              <th>200 %</th>
            </tr>
          </tbody>

          <tbody align="center">
            <tr>
              <td><img src="plain100.png" alt="plain100" width="120" height=
              "57"></td>
              <td><img src="plain125.png" alt="plain125" width="140" height=
              "69"></td>
              <td><img src="plain150.png" alt="plain150" width="160" height=
              "81"></td>
              <td><img src="plain175.png" alt="plain175" width="185" height=
              "93"></td>
              <td><img src="plain200.png" alt="plain200" width="210" height=
              "105"></td>
            </tr>

            <tr>
              <th><code>plain100</code></th>
              <th><code>plain125</code></th>
              <th><code>plain150</code></th>
              <th><code>plain175</code></th>
              <th><code>plain200</code></th>
            </tr>
          </tbody>

          <tbody align="center">
            <tr>
              <td><img src="bicolor100.png" alt="bicolor100" width="120"
              height="57"></td>
              <td><img src="bicolor125.png" alt="bicolor125" width="140"
              height="69"></td>
              <td><img src="bicolor150.png" alt="bicolor150" width="160"
              height="81"></td>
              <td><img src="bicolor175.png" alt="bicolor175" width="185"
              height="93"></td>
              <td><img src="bicolor200.png" alt="bicolor200" width="210"
              height="105"></td>
            </tr>

            <tr>
              <th><code>bicolor100</code></th>
              <th><code>bicolor125</code></th>
              <th><code>bicolor150</code></th>
              <th><code>bicolor175</code></th>
              <th><code>bicolor200</code></th>
            </tr>
          </tbody>

          <tbody align="center">
            <tr>
              <td><img src="classic100.png" alt="classic100" width="120"
              height="57"></td>
              <td><img src="classic125.png" alt="classic125" width="140"
              height="69"></td>
              <td><img src="classic150.png" alt="classic150" width="160"
              height="81"></td>
              <td><img src="classic175.png" alt="classic175" width="185"
              height="93"></td>
              <td><img src="classic200.png" alt="classic200" width="210"
              height="105"></td>
            </tr>

            <tr>
              <th><code>classic100</code></th>
              <th><code>classic125</code></th>
              <th><code>classic150</code></th>
              <th><code>classic175</code></th>
              <th><code>classic200</code></th>
            </tr>
          </tbody>
        </table>

        <p>If the tree style is <code><b>gtk</b></code>,
        <code><b>adwaita</b></code>, <code><b>blueMenta</b></code>,
        <code><b>ubuntu</b></code>, <code><b>ubuntu2</b></code>,
................................................................................
                  flavors of <code><b>qtcurve</b></code>.</td>
                </tr>
              </table>
            </td>
          </tr>

          <tr>
            <td><code><b>bicolor100</b></code>,<br>
            . . .<br>
            <code><b>bicolor200</b></code></td>
            <td><img src="bicolor100.png" alt="bicolor100" width="120" height=
            "57"></td>
            <td>While the tree style <code><b>bicolor100</b></code> uses
            "normal" sizes, the four other styles are suitable for use with
            large fonts and images (needed on high-resolution displays).</td>
          </tr>

          <tr>
            <td><code><b>classic100</b></code>,<br>
            . . .<br>
            <code><b>classic200</b></code></td>
            <td><img src="classic100.png" alt="classic100" width="120" height=
            "57"></td>
            <td>While the tree style <code><b>classic100</b></code> uses
            "normal" sizes, the four other styles are suitable for use with
            large fonts and images (needed on high-resolution displays).</td>
          </tr>

          <tr>
            <td><code><b>blueMenta</b></code></td>
            <td><img src="blueMenta.png" alt="blueMenta" width="120" height=
            "51"></td>
            <td>Inspired by the GTK 3 theme BlueMenta of versions 1.14 and
................................................................................
                  the <code><b>tileqt</b></code> theme.</td>
                </tr>
              </table>
            </td>
          </tr>

          <tr>
            <td><code><b>plain100</b></code>,<br>
            . . .<br>
            <code><b>plain200</b></code></td>
            <td><img src="plain100.png" alt="plain100" width="120" height=
            "57"></td>
            <td>While the tree style <code><b>plain100</b></code> uses "normal"
            sizes, the four other styles are suitable for use with large fonts
            and images (needed on high-resolution displays).</td>
          </tr>

          <tr>
            <td><code><b>plastik</b></code></td>
            <td><img src="plastik.png" alt="plastik" width="120" height=
            "51"></td>
................................................................................
            16.10 and later of the Ubuntu Linux distribution.</td>
          </tr>

          <tr>
            <td><code><b>ubuntuMate</b></code></td>
            <td><img src="ubuntuMate.png" alt="ubuntuMate" width="120" height=
            "51"></td>
            <td>Inspired by the themes Ambiant-MATE and Radiant-MATE, bundled
            with versions 16.10 and later of the Ubuntu MATE distribution and
	    noticeably improved in Ubuntu MATE 20.04.</td>
          </tr>

          <tr>
            <td><code><b>vistaAero</b></code></td>
            <td><img src="vistaAero.png" alt="vistaAero" width="120" height=
            "54"></td>
            <td>
................................................................................
        added to the requested column width by a stretch operation (see the
        <code><b><a href="#stretch">-stretch</a></b></code> widget and
        <code><b><a href="#col_stretchable">-stretchable</a></b></code> column
        configuration options).&nbsp; Finally, if the optional argument is
        <code><b>-total</b></code> then the return value is the stretched
        column width increased by the number of pixels corresponding to the
        left and right margins within the column; this value equals the width
        of the header label if the tablelist widget is mapped.&nbsp; Note that
        the width of the left and right margins within the column equals the
        width of the <code><b>0</b></code> character in the widget's font.</dd>

        <dt class="tm" id="configcelllist"><code><i>pathName</i>
        <b>configcelllist</b> <i>cellConfigSpecList</i></code></dt>

        <dd>
          For each cell index, option, and value specified by the list
          <code><i>cellConfigSpecList</i></code>, the command modifies the