Tk Library Source Code

Check-in [8eee6fc51d]
Login

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

Overview
Comment:Tablelist: Updated for version 7.3. See the ChangeLog for details.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 8eee6fc51de614e3cbf55e0e711ab92b441edb3a99d4b5074c7bb88e97cf639b
User & Date: csaba 2024-08-20 17:54:07.760
Context
2024-08-21
11:42
Scrollutil: Updated for version 2.3. See the ChangeLog for details. check-in: 1206d01c7e user: csaba tags: trunk
2024-08-20
17:54
Tablelist: Updated for version 7.3. See the ChangeLog for details. check-in: 8eee6fc51d user: csaba tags: trunk
16:55
Mentry: Updated for version 4.3. See the ChangeLog for details. check-in: ee57000d7f user: csaba tags: trunk
Changes
Unified Diff Ignore Whitespace Patch
Changes to modules/tablelist/CHANGES.txt.
1
2
























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

























1. Added the virtual event <<TablelistCopyFinished>>, generated by the
   default bindings for the key sequences that terminate the editing
   with an automatic postprocessing, when the copying of the new cell
   value to some other cells of the column is finished.

2. Added the "-aftercopycommand" configuration option, specifying a Tcl
|

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







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

1. Significantly improved the performance of "cellconfigure ... -text"
   (thanks to Paul Obermeier for his valuable contribution).

2. Guarded against the case that an embedded image was deleted (thanks
   to Paul Obermeier for his proposal).

3. Made sure that the handling of the <TouchpadScroll> event won't
   polluate the global namespace (thanks to Rolf Ade for drawing my
   attention to this issue).

4. Adapted the handling of the <FocusIn> and <FocusOut> events to recent
   changes made in Tk related to these events and the detail field
   "NotifyInferior".

5. Fixed a long-standing bug related to the optimization of item
   insertion.

6. Restored the support for Tcl/Tk 8.4, which was broken due to the use
   of package version numbers with a trailing "-" and of a submodifier
   in text widget indices (thanks to Samuel Brown for his bug report).

What was new in Tablelist 7.2?
------------------------------

1. Added the virtual event <<TablelistCopyFinished>>, generated by the
   default bindings for the key sequences that terminate the editing
   with an automatic postprocessing, when the copying of the new cell
   value to some other cells of the column is finished.

2. Added the "-aftercopycommand" configuration option, specifying a Tcl
Changes to modules/tablelist/COPYRIGHT.txt.
1
2
3
4
5
6
7
8
Multi-column listbox and tree widget package Tablelist, version 7.2
Copyright (c) 2000-2024  Csaba Nemethi (E-mail: [email protected])

This library is free software; you can use, modify, and redistribute it
for any purpose, provided that existing copyright notices are retained
in all copies and that this notice is included verbatim in any
distributions.

|







1
2
3
4
5
6
7
8
Multi-column listbox and tree widget package Tablelist, version 7.3
Copyright (c) 2000-2024  Csaba Nemethi (E-mail: [email protected])

This library is free software; you can use, modify, and redistribute it
for any purpose, provided that existing copyright notices are retained
in all copies and that this notice is included verbatim in any
distributions.

Changes to modules/tablelist/ChangeLog.




















1
2
3
4
5
6
7




















2024-05-15 Csaba Nemethi <[email protected]>

	* Released Tablelist 7.2.

2024-05-14 Csaba Nemethi <[email protected]>

	* CHANGES.txt:                 Adapted the default value of the
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







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
2024-08-20 Csaba Nemethi <[email protected]>

	* *.tcl:         Bumped the version number to 7.3; restored the support
	* COPYRIGHT.txt: for Tcl/Tk 8.4.
	* README.txt:

	* CHANGES.txt: Updated to reflect the changes.
	* doc/*.html:

	* scripts/*.tcl: Improved the performance of "cellconfigure ... -text";
	  guarded against the case that an embedded image was deleted; made
	  sure that the handling of the <TouchpadScroll> event won't polluate
	  the global namespace; adapted the handling of the <FocusIn> and
	  <FocusOut> events to recent changes made in Tk related to these
	  events and the detail field "NotifyInferior"; fixed a long-standing
	  bug related to the optimization of item insertion; restored the
	  support for Tcl/Tk 8.4.

	* scripts/utils/*.tcl: Restored the support for Tcl/Tk 8.4.

2024-05-15 Csaba Nemethi <[email protected]>

	* Released Tablelist 7.2.

2024-05-14 Csaba Nemethi <[email protected]>

	* CHANGES.txt:                 Adapted the default value of the
Changes to modules/tablelist/README.txt.
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

    https://www.nemethi.de

How to Get It?
--------------

Tablelist is available for free download from the same URL as Wcb.  The
distribution file is "tablelist7.2.tar.gz" for UNIX and
"tablelist7_2.zip" 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.

Tablelist is also included in tklib, which has the address

    https://core.tcl.tk/tklib

How to Install It?
------------------

Install the package as a subdirectory of one of the directories given
by the "auto_path" 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 "tcl_library"
and "tk_library" variables, respectively.

To install Tablelist on UNIX, "cd" to the desired directory and unpack
the distribution file "tablelist7.2.tar.gz":

    gunzip -c tablelist7.2.tar.gz | tar -xf -

On most UNIX systems this can be replaced with

    tar -zxf tablelist7.2.tar.gz

Both commands will create a directory named "tablelist7.2 with the
subdirectories "demos", "doc", and "scripts".

On Windows, use WinZip or some other program capable of unpacking the
distribution file "tablelist7_2.zip" into the directory "tablelist7.2",
with the subdirectories "demos", "doc", and "scripts".

The file "tablelistEdit.tcl" in the "scripts" directory is only needed
for applications making use of interactive cell editing.  Similarly, the
file "tablelistMove.tcl" in the same directory is only required for
scripts invoking the "move" or "movecolumn" tablelist command.  Finally,
the file "tablelistThemes.tcl" is only needed for applications using







|
|


















|

|



|

|



|







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

    https://www.nemethi.de

How to Get It?
--------------

Tablelist is available for free download from the same URL as Wcb.  The
distribution file is "tablelist7.3.tar.gz" for UNIX and
"tablelist7_3.zip" 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.

Tablelist is also included in tklib, which has the address

    https://core.tcl.tk/tklib

How to Install It?
------------------

Install the package as a subdirectory of one of the directories given
by the "auto_path" 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 "tcl_library"
and "tk_library" variables, respectively.

To install Tablelist on UNIX, "cd" to the desired directory and unpack
the distribution file "tablelist7.3.tar.gz":

    gunzip -c tablelist7.3.tar.gz | tar -xf -

On most UNIX systems this can be replaced with

    tar -zxf tablelist7.3.tar.gz

Both commands will create a directory named "tablelist7.3 with the
subdirectories "demos", "doc", and "scripts".

On Windows, use WinZip or some other program capable of unpacking the
distribution file "tablelist7_3.zip" into the directory "tablelist7.3",
with the subdirectories "demos", "doc", and "scripts".

The file "tablelistEdit.tcl" in the "scripts" directory is only needed
for applications making use of interactive cell editing.  Similarly, the
file "tablelistMove.tcl" in the same directory is only required for
scripts invoking the "move" or "movecolumn" tablelist command.  Finally,
the file "tablelistThemes.tcl" is only needed for applications using
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
21
22
<!DOCTYPE html>
<html>
<head>
  <title>The Multi-Column Listbox and Tree Widget Package Tablelist 7.2</title>

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

  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div>
    <h1>The Multi-Column Listbox and Tree Widget Package Tablelist 7.2</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
21
22
<!DOCTYPE html>
<html>
<head>
  <title>The Multi-Column Listbox and Tree Widget Package Tablelist 7.3</title>

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

  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div>
    <h1>The Multi-Column Listbox and Tree Widget Package Tablelist 7.3</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
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div>
    <h1>Tablelist Programmer's Guide</h1>

    <h2>For Tablelist Version 7.2</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

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







|







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

<body>
  <div>
    <h1>Tablelist Programmer's Guide</h1>

    <h2>For Tablelist Version 7.3</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
      <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>tablelist7.2.tar.gz</code> for UNIX and
  <code>tablelist7_2.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>







|
|







175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
      <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>tablelist7.3.tar.gz</code> for UNIX and
  <code>tablelist7_3.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>
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
233
234
235
  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>tablelist7.2.tar.gz</code>:</p>

  <blockquote>
    <pre>
gunzip -c tablelist7.2.tar.gz | tar -xf -
</pre>
  </blockquote>

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

  <blockquote>
    <pre>
tar -zxf tablelist7.2.tar.gz
</pre>
  </blockquote>

  <p>Both commands will create a directory named <code>tablelist7.2</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>tablelist7_2.zip</code> into the directory
  <code>tablelist7.2</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







|



|







|



|




|
|







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
233
234
235
  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>tablelist7.3.tar.gz</code>:</p>

  <blockquote>
    <pre>
gunzip -c tablelist7.3.tar.gz | tar -xf -
</pre>
  </blockquote>

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

  <blockquote>
    <pre>
tar -zxf tablelist7.3.tar.gz
</pre>
  </blockquote>

  <p>Both commands will create a directory named <code>tablelist7.3</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>tablelist7_3.zip</code> into the directory
  <code>tablelist7.3</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
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>
    <h1>Interactive Tablelist Cell Editing Using the BWidget Package</h1>

    <h2>For Tablelist Version 7.2</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>
    <h1>Interactive Tablelist Cell Editing Using the BWidget Package</h1>

    <h2>For Tablelist Version 7.3</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>
    <h1>Commands Related to Binding Scripts</h1>

    <h2>For Tablelist Version 7.2</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>
    <h1>Commands Related to Binding Scripts</h1>

    <h2>For Tablelist Version 7.3</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>
    <h1>Commands for Interactive Sorting by One or More Columns</h1>

    <h2>For Tablelist Version 7.2</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>
    <h1>Commands for Interactive Sorting by One or More Columns</h1>

    <h2>For Tablelist Version 7.3</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>
    <h1>Interactive Tablelist Cell Editing Using the combobox Package</h1>

    <h2>For Tablelist Version 7.2</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>
    <h1>Interactive Tablelist Cell Editing Using the combobox Package</h1>

    <h2>For Tablelist Version 7.3</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>
    <h1>Interactive Tablelist Cell Editing Using the ctext Package</h1>

    <h2>For Tablelist Version 7.2</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>
    <h1>Interactive Tablelist Cell Editing Using the ctext Package</h1>

    <h2>For Tablelist Version 7.3</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>
    <h1>Interactive Tablelist Cell Editing Using the Iwidgets Package</h1>

    <h2>For Tablelist Version 7.2</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>
    <h1>Interactive Tablelist Cell Editing Using the Iwidgets Package</h1>

    <h2>For Tablelist Version 7.3</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>
    <h1>Interactive Tablelist Cell Editing Using the Mentry Package</h1>

    <h2>For Tablelist Version 7.2</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>
    <h1>Interactive Tablelist Cell Editing Using the Mentry Package</h1>

    <h2>For Tablelist Version 7.3</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>
    <h1>Commands Related to Tile Themes</h1>

    <h2>For Tablelist Version 7.2</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>
    <h1>Commands Related to Tile Themes</h1>

    <h2>For Tablelist Version 7.3</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>
    <h1>Interactive Tablelist Cell Editing Using Tile Widgets</h1>

    <h2>For Tablelist Version 7.2</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>
    <h1>Interactive Tablelist Cell Editing Using Tile Widgets</h1>

    <h2>For Tablelist Version 7.3</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>
    <h1>Interactive Tablelist Cell Editing Using Tk Core Widgets</h1>

    <h2>For Tablelist Version 7.2</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>
    <h1>Interactive Tablelist Cell Editing Using Tk Core Widgets</h1>

    <h2>For Tablelist Version 7.3</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
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  <div>
    <h1>The <code><b>tablelist::tablelist</b></code> Command</h1>

    <h2>For Tablelist Version 7.2</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

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







|







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

<body>
  <div>
    <h1>The <code><b>tablelist::tablelist</b></code> Command</h1>

    <h2>For Tablelist Version 7.3</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:[email protected]">[email protected]</a>
Changes to modules/tablelist/pkgIndex.tcl.
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
#==============================================================================
# Tablelist and Tablelist_tile package index file.
#
# Copyright (c) 2000-2024  Csaba Nemethi (E-mail: [email protected])
#==============================================================================

#
# Regular packages:
#
package ifneeded tablelist         7.2 \
	[list source [file join $dir tablelist.tcl]]
package ifneeded tablelist_tile    7.2 \
	[list source [file join $dir tablelist_tile.tcl]]

#
# Aliases:
#
package ifneeded Tablelist         7.2 \
	[list package require -exact tablelist	    7.2]
package ifneeded Tablelist_tile    7.2 \
	[list package require -exact tablelist_tile 7.2]

#
# Code common to all packages:
#
package ifneeded tablelist::common 7.2 \
	[list source [file join $dir tablelistCommon.tcl]]









|

|





|
|
|
|




|

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
#==============================================================================
# Tablelist and Tablelist_tile package index file.
#
# Copyright (c) 2000-2024  Csaba Nemethi (E-mail: [email protected])
#==============================================================================

#
# Regular packages:
#
package ifneeded tablelist         7.3 \
	[list source [file join $dir tablelist.tcl]]
package ifneeded tablelist_tile    7.3 \
	[list source [file join $dir tablelist_tile.tcl]]

#
# Aliases:
#
package ifneeded Tablelist         7.3 \
	[list package require -exact tablelist	    7.3]
package ifneeded Tablelist_tile    7.3 \
	[list package require -exact tablelist_tile 7.3]

#
# Code common to all packages:
#
package ifneeded tablelist::common 7.3 \
	[list source [file join $dir tablelistCommon.tcl]]
Changes to modules/tablelist/scripts/tablelistBind.tcl.
904
905
906
907
908
909
910








911
912
913
914
915
916
917
	selChangePending	0
	justClicked		0
	justReleased		0
	clickedInEditWin	0
	clickedExpCollCtrl	0
    }









    foreach event {<Enter> <Motion> <Leave>} {
	bind TablelistBody $event [format {
	    tablelist::handleMotionDelayed %%W %%x %%y %%X %%Y %%m %s
	} $event]
    }
    bind TablelistBody <Button-1> {
	if {[winfo exists %W]} {







>
>
>
>
>
>
>
>







904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
	selChangePending	0
	justClicked		0
	justReleased		0
	clickedInEditWin	0
	clickedExpCollCtrl	0
    }

    bind TablelistBody <FocusIn> {
	tablelist::addActiveTag [tablelist::getTablelistPath %W]
    }
    bind TablelistBody <FocusOut> {
	if {"%d" ne "NotifyInferior"} {
	    tablelist::removeActiveTag [tablelist::getTablelistPath %W]
	}
    }
    foreach event {<Enter> <Motion> <Leave>} {
	bind TablelistBody $event [format {
	    tablelist::handleMotionDelayed %%W %%x %%y %%X %%Y %%m %s
	} $event]
    }
    bind TablelistBody <Button-1> {
	if {[winfo exists %W]} {
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
    }

    if {[llength [info commands ::tk::PreciseScrollDeltas]] != 0} {
	bind TablelistBody <TouchpadScroll> {
	    if {%# %% 5 != 0} {
		return
	    }
	    lassign [tk::PreciseScrollDeltas %D] deltaX deltaY
	    if {$deltaX != 0} {
		event generate %W <Shift-MouseWheel> -rootx %X -rooty %Y \
		    -delta [expr {40 * $deltaX}]
	    }
	    if {$deltaY != 0} {
		event generate %W <MouseWheel> -rootx %X -rooty %Y \
		    -delta [expr {40 * $deltaY}]
	    }
	}
    }

    if {$winSys ne "aqua"} {
	foreach event {<Control-Key-a> <Control-Lock-Key-A>} {
	    bind TablelistBody $event {







|
|

|

|

|







1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
    }

    if {[llength [info commands ::tk::PreciseScrollDeltas]] != 0} {
	bind TablelistBody <TouchpadScroll> {
	    if {%# %% 5 != 0} {
		return
	    }
	    lassign [tk::PreciseScrollDeltas %D] tablelist::dX tablelist::dY
	    if {$tablelist::dX != 0} {
		event generate %W <Shift-MouseWheel> -rootx %X -rooty %Y \
		    -delta [expr {40 * $tablelist::dX}]
	    }
	    if {$tablelist::dY != 0} {
		event generate %W <MouseWheel> -rootx %X -rooty %Y \
		    -delta [expr {40 * $tablelist::dY}]
	    }
	}
    }

    if {$winSys ne "aqua"} {
	foreach event {<Control-Key-a> <Control-Lock-Key-A>} {
	    bind TablelistBody $event {
Changes to modules/tablelist/scripts/tablelistConfig.tcl.
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
		updateCell $w $tabIdx1+1$pu $tabIdx2 $text $aux \
			   $auxType $auxWidth $indent $indentWidth \
			   $alignment [getOpt $win $key $col -valign]
	    }
	}

	-text {
	    if {$data(isDisabled)} {
		return ""
	    }

	    if {$inBody} {
		displayItems $win
	    }








|







3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
		updateCell $w $tabIdx1+1$pu $tabIdx2 $text $aux \
			   $auxType $auxWidth $indent $indentWidth \
			   $alignment [getOpt $win $key $col -valign]
	    }
	}

	-text {
	    if {$data(isDisabled) || ($inBody && $data($col-showlinenumbers))} {
		return ""
	    }

	    if {$inBody} {
		displayItems $win
	    }

3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
			      $newElemWidth < $oldElemWidth &&
			      [incr data($col-widestCount) -1] == 0} {
			adjustColumns $win $col 1
		    }
		}
	    }

	    if {$inBody} {
		showLineNumbersWhenIdle $win
	    }
	    updateViewWhenIdle $win
	}

	-valign {
	    set key [lindex $data(${p}keyList) $row]
	    set name $key,$col$opt
	    if {$val eq ""} {







<
<
<







3691
3692
3693
3694
3695
3696
3697



3698
3699
3700
3701
3702
3703
3704
			      $newElemWidth < $oldElemWidth &&
			      [incr data($col-widestCount) -1] == 0} {
			adjustColumns $win $col 1
		    }
		}
	    }




	    updateViewWhenIdle $win
	}

	-valign {
	    set key [lindex $data(${p}keyList) $row]
	    set name $key,$col$opt
	    if {$val eq ""} {
Changes to modules/tablelist/scripts/tablelistEdit.tcl.
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
# tablelist::createTileEntry
#
# Creates a tile entry widget of the given path name for interactive cell
# editing in a tablelist widget.
#------------------------------------------------------------------------------
proc tablelist::createTileEntry {w args} {
    if {$::tk_version < 8.5 || [regexp {^8\.5a[1-5]$} $::tk_patchLevel]} {
	package require tile 0.6-
    }
    createTileAliases

    #
    # The style of the tile entry widget should have -borderwidth
    # 2 and -padding 1.  For those themes that don't honor the
    # -borderwidth 2 setting, set the padding to another value.







|







1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
# tablelist::createTileEntry
#
# Creates a tile entry widget of the given path name for interactive cell
# editing in a tablelist widget.
#------------------------------------------------------------------------------
proc tablelist::createTileEntry {w args} {
    if {$::tk_version < 8.5 || [regexp {^8\.5a[1-5]$} $::tk_patchLevel]} {
	package require tile 0.6[-]
    }
    createTileAliases

    #
    # The style of the tile entry widget should have -borderwidth
    # 2 and -padding 1.  For those themes that don't honor the
    # -borderwidth 2 setting, set the padding to another value.
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
# tablelist::createTileSpinbox
#
# Creates a tile spinbox widget of the given path name for interactive cell
# editing in a tablelist widget.
#------------------------------------------------------------------------------
proc tablelist::createTileSpinbox {w args} {
    if {$::tk_version < 8.5 || [regexp {^8\.5a[1-5]$} $::tk_patchLevel]} {
	package require tile 0.8.3-
    }
    createTileAliases

    #
    # The style of the tile spinbox widget should have -borderwidth
    # 2 and -padding 1.  For those themes that don't honor the
    # -borderwidth 2 setting, set the padding to another value.







|







1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
# tablelist::createTileSpinbox
#
# Creates a tile spinbox widget of the given path name for interactive cell
# editing in a tablelist widget.
#------------------------------------------------------------------------------
proc tablelist::createTileSpinbox {w args} {
    if {$::tk_version < 8.5 || [regexp {^8\.5a[1-5]$} $::tk_patchLevel]} {
	package require tile 0.8.3[-]
    }
    createTileAliases

    #
    # The style of the tile spinbox widget should have -borderwidth
    # 2 and -padding 1.  For those themes that don't honor the
    # -borderwidth 2 setting, set the padding to another value.
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
# tablelist::createTileCombobox
#
# Creates a tile combobox widget of the given path name for interactive cell
# editing in a tablelist widget.
#------------------------------------------------------------------------------
proc tablelist::createTileCombobox {w args} {
    if {$::tk_version < 8.5 || [regexp {^8\.5a[1-5]$} $::tk_patchLevel]} {
	package require tile 0.6-
    }
    createTileAliases

    set win [getTablelistPath $w]
    variable currentTheme
    if {$currentTheme eq "aqua"} {
	styleConfig Tablelist.TCombobox -borderwidth 2 -padding 0







|







1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
# tablelist::createTileCombobox
#
# Creates a tile combobox widget of the given path name for interactive cell
# editing in a tablelist widget.
#------------------------------------------------------------------------------
proc tablelist::createTileCombobox {w args} {
    if {$::tk_version < 8.5 || [regexp {^8\.5a[1-5]$} $::tk_patchLevel]} {
	package require tile 0.6[-]
    }
    createTileAliases

    set win [getTablelistPath $w]
    variable currentTheme
    if {$currentTheme eq "aqua"} {
	styleConfig Tablelist.TCombobox -borderwidth 2 -padding 0
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
# tablelist::createTileMenubutton
#
# Creates a tile menubutton widget of the given path name for interactive cell
# editing in a tablelist widget.
#------------------------------------------------------------------------------
proc tablelist::createTileMenubutton {w args} {
    if {$::tk_version < 8.5 || [regexp {^8\.5a[1-5]$} $::tk_patchLevel]} {
	package require tile 0.6-
    }
    createTileAliases

    styleConfig Tablelist.TMenubutton -anchor w -justify left -padding 1 \
				      -relief raised

    set win [getTablelistPath $w]







|







1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
# tablelist::createTileMenubutton
#
# Creates a tile menubutton widget of the given path name for interactive cell
# editing in a tablelist widget.
#------------------------------------------------------------------------------
proc tablelist::createTileMenubutton {w args} {
    if {$::tk_version < 8.5 || [regexp {^8\.5a[1-5]$} $::tk_patchLevel]} {
	package require tile 0.6[-]
    }
    createTileAliases

    styleConfig Tablelist.TMenubutton -anchor w -justify left -padding 1 \
				      -relief raised

    set win [getTablelistPath $w]
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
	}
    }
    if {[llength [info commands ::tk::PreciseScrollDeltas]] != 0} {
	bind TablelistEdit <TouchpadScroll> {
	    if {%# %% 5 != 0} {
		return
	    }
	    lassign [tk::PreciseScrollDeltas %D] deltaX deltaY
	    if {$deltaX != 0} {
		event generate %W <Shift-MouseWheel> -rootx %X -rooty %Y \
		    -delta [expr {40 * $deltaX}]
	    }
	    if {$deltaY != 0} {
		event generate %W <MouseWheel> -rootx %X -rooty %Y \
		    -delta [expr {40 * $deltaY}]
	    }
	}
	bind TablelistEditBreak <TouchpadScroll> { break }
    }
}

#------------------------------------------------------------------------------







|
|

|

|

|







2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
	}
    }
    if {[llength [info commands ::tk::PreciseScrollDeltas]] != 0} {
	bind TablelistEdit <TouchpadScroll> {
	    if {%# %% 5 != 0} {
		return
	    }
	    lassign [tk::PreciseScrollDeltas %D] tablelist::dX tablelist::dY
	    if {$tablelist::dX != 0} {
		event generate %W <Shift-MouseWheel> -rootx %X -rooty %Y \
		    -delta [expr {40 * $tablelist::dX}]
	    }
	    if {$tablelist::dY != 0} {
		event generate %W <MouseWheel> -rootx %X -rooty %Y \
		    -delta [expr {40 * $tablelist::dY}]
	    }
	}
	bind TablelistEditBreak <TouchpadScroll> { break }
    }
}

#------------------------------------------------------------------------------
Changes to modules/tablelist/scripts/tablelistUtil.tcl.
3841
3842
3843
3844
3845
3846
3847

3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
	if {$data(-colorizecommand) eq ""} {
	    set hasColorizeCmd 0
	} else {
	    set hasColorizeCmd 1
	    set colorizeCmd $data(-colorizecommand)
	}


	set rightCol [colIndex $win @$data(rightX),0 0 0]
	set topLine [expr {int($topTextIdx)}]
	set btmLine [expr {int($btmTextIdx)}]
	if {$btmLine > $data(itemCount)} {
	    set btmLine $data(itemCount)
	}
	for {set line $topLine} {$line <= $btmLine} \
	    {set line [expr {int([$w index "$line.end + 1 display c"])}]} {
	    if {![findTabs $win $w $line $leftCol $leftCol tabIdx1 tabIdx2]} {
		continue
	    }

	    if {$hasItemBg} {
		$w tag add itembg $line.0 $line.end
	    }







>







|







3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
	if {$data(-colorizecommand) eq ""} {
	    set hasColorizeCmd 0
	} else {
	    set hasColorizeCmd 1
	    set colorizeCmd $data(-colorizecommand)
	}

	variable disp
	set rightCol [colIndex $win @$data(rightX),0 0 0]
	set topLine [expr {int($topTextIdx)}]
	set btmLine [expr {int($btmTextIdx)}]
	if {$btmLine > $data(itemCount)} {
	    set btmLine $data(itemCount)
	}
	for {set line $topLine} {$line <= $btmLine} \
	    {set line [expr {int([$w index "$line.end + 1 $disp c"])}]} {
	    if {![findTabs $win $w $line $leftCol $leftCol tabIdx1 tabIdx2]} {
		continue
	    }

	    if {$hasItemBg} {
		$w tag add itembg $line.0 $line.end
	    }
4082
4083
4084
4085
4086
4087
4088



4089
4090
4091
4092
4093
4094
4095
4096
		    } else {
			set fg $data(-foreground)
		    }
		}
	    }
	}
	if {[$path cget -background] ne $bg} {



	    $path configure -background $bg
	}
	if {$isMessage && [$path cget -foreground] ne $fg} {
	    $path configure -foreground $fg
	}
	if {$isTblWin} {
	    set cmd [getOpt $win $key $col -windowupdate]
	    if {$cmd ne ""} {







>
>
>
|







4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
		    } else {
			set fg $data(-foreground)
		    }
		}
	    }
	}
	if {[$path cget -background] ne $bg} {
	    #
	    # Guard against the deletion of embedded images
	    #
	    catch {$path configure -background $bg}
	}
	if {$isMessage && [$path cget -foreground] ne $fg} {
	    $path configure -foreground $fg
	}
	if {$isTblWin} {
	    set cmd [getOpt $win $key $col -windowupdate]
	    if {$cmd ne ""} {
4253
4254
4255
4256
4257
4258
4259



4260
4261
4262
4263
4264
4265
4266
4267
		    } else {
			set fg $data(-foreground)
		    }
		}
	    }
	}
	if {[$path cget -background] ne $bg} {



	    $path configure -background $bg
	}
	if {$isMessage && [$path cget -foreground] ne $fg} {
	    $path configure -foreground $fg
	}
	if {$isTblWin} {
	    set cmd [getOpt $win $key $col -windowupdate]
	    if {$cmd ne ""} {







>
>
>
|







4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
		    } else {
			set fg $data(-foreground)
		    }
		}
	    }
	}
	if {[$path cget -background] ne $bg} {
	    #
	    # Guard against the deletion of embedded images
	    #
	    catch {$path configure -background $bg}
	}
	if {$isMessage && [$path cget -foreground] ne $fg} {
	    $path configure -foreground $fg
	}
	if {$isTblWin} {
	    set cmd [getOpt $win $key $col -windowupdate]
	    if {$cmd ne ""} {
4464
4465
4466
4467
4468
4469
4470

4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
    set w $data(body)
    $w tag remove hiddenCol 1.0 end

    #
    # Add the "hiddenCol" tag to the contents of the hidden
    # columns from the top to the bottom window line
    #

    variable pu
    if {$data(hiddenColCount) > 0 && $data(itemCount) > 0} {
	set topLine [expr {int([$w index @0,0])}]
	set btmLine [expr {int([$w index @0,$data(btmY)])}]
	if {$btmLine > $data(itemCount)} {
	    set btmLine $data(itemCount)
	}
	for {set line $topLine} {$line <= $btmLine} \
	    {set line [expr {int([$w index "$line.end + 1 display c"])}]} {
	    set textIdx1 $line.0
	    for {set col 0; set count 0} \
		{$col < $data(colCount) && $count < $data(hiddenColCount)} \
		{incr col} {
		set textIdx2 \
		    [$w search -elide "\t" $textIdx1+1$pu $line.end]+1$pu
		if {$textIdx2 eq "+1$pu"} {







>








|







4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
    set w $data(body)
    $w tag remove hiddenCol 1.0 end

    #
    # Add the "hiddenCol" tag to the contents of the hidden
    # columns from the top to the bottom window line
    #
    variable disp
    variable pu
    if {$data(hiddenColCount) > 0 && $data(itemCount) > 0} {
	set topLine [expr {int([$w index @0,0])}]
	set btmLine [expr {int([$w index @0,$data(btmY)])}]
	if {$btmLine > $data(itemCount)} {
	    set btmLine $data(itemCount)
	}
	for {set line $topLine} {$line <= $btmLine} \
	    {set line [expr {int([$w index "$line.end + 1 $disp c"])}]} {
	    set textIdx1 $line.0
	    for {set col 0; set count 0} \
		{$col < $data(colCount) && $count < $data(hiddenColCount)} \
		{incr col} {
		set textIdx2 \
		    [$w search -elide "\t" $textIdx1+1$pu $line.end]+1$pu
		if {$textIdx2 eq "+1$pu"} {
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
	    if {$btmLine > $data(itemCount)} {
		set btmLine $data(itemCount)
	    }
	}

	if {[lindex [$w yview] 1] == 1} {
	    for {set line $btmLine} {$line >= $topLine} \
		{set line [expr {int([$w index "$line.0 - 1 display c"])}]} {
		set textIdx1 $line.0
		for {set col 0; set count 0} \
		    {$col < $data(colCount) && $count < $data(hiddenColCount)} \
		    {incr col} {
		    set textIdx2 \
			[$w search -elide "\t" $textIdx1+1$pu $line.end]+1$pu
		    if {$textIdx2 eq "+1$pu"} {







|







4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
	    if {$btmLine > $data(itemCount)} {
		set btmLine $data(itemCount)
	    }
	}

	if {[lindex [$w yview] 1] == 1} {
	    for {set line $btmLine} {$line >= $topLine} \
		{set line [expr {int([$w index "$line.0 - 1 $disp c"])}]} {
		set textIdx1 $line.0
		for {set col 0; set count 0} \
		    {$col < $data(colCount) && $count < $data(hiddenColCount)} \
		    {incr col} {
		    set textIdx2 \
			[$w search -elide "\t" $textIdx1+1$pu $line.end]+1$pu
		    if {$textIdx2 eq "+1$pu"} {
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
    if {$data(itemCount) > 0} {
	set topLine [expr {int([$w index @0,0])}]
	set btmLine [expr {int([$w index @0,$data(btmY)])}]
	if {$btmLine > $data(itemCount)} {
	    set btmLine $data(itemCount)
	}
	for {set line $topLine} {$line <= $btmLine} \
	    {set line [expr {int([$w index "$line.end + 1 display c"])}]} {
	    if {[findTabs $win $w $line $firstCol $lastCol \
		 tabIdx1 tabIdx2]} {
		$w tag add elidedCol $tabIdx1 $tabIdx2+1$pu
	    }

	    #
	    # Update btmLine because it may change due to the "elidedCol" tag
	    #
	    set btmLine [expr {int([$w index @0,$data(btmY)])}]
	    if {$btmLine > $data(itemCount)} {
		set btmLine $data(itemCount)
	    }
	}

	if {[lindex [$w yview] 1] == 1} {
	    for {set line $btmLine} {$line >= $topLine} \
		{set line [expr {int([$w index "$line.0 - 1 display c"])}]} {
		if {[findTabs $win $w $line $firstCol $lastCol \
		     tabIdx1 tabIdx2]} {
		    $w tag add elidedCol $tabIdx1 $tabIdx2+1$pu
		}

		if {$line == 1} {
		    break







|
















|







4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
    if {$data(itemCount) > 0} {
	set topLine [expr {int([$w index @0,0])}]
	set btmLine [expr {int([$w index @0,$data(btmY)])}]
	if {$btmLine > $data(itemCount)} {
	    set btmLine $data(itemCount)
	}
	for {set line $topLine} {$line <= $btmLine} \
	    {set line [expr {int([$w index "$line.end + 1 $disp c"])}]} {
	    if {[findTabs $win $w $line $firstCol $lastCol \
		 tabIdx1 tabIdx2]} {
		$w tag add elidedCol $tabIdx1 $tabIdx2+1$pu
	    }

	    #
	    # Update btmLine because it may change due to the "elidedCol" tag
	    #
	    set btmLine [expr {int([$w index @0,$data(btmY)])}]
	    if {$btmLine > $data(itemCount)} {
		set btmLine $data(itemCount)
	    }
	}

	if {[lindex [$w yview] 1] == 1} {
	    for {set line $btmLine} {$line >= $topLine} \
		{set line [expr {int([$w index "$line.0 - 1 $disp c"])}]} {
		if {[findTabs $win $w $line $firstCol $lastCol \
		     tabIdx1 tabIdx2]} {
		    $w tag add elidedCol $tabIdx1 $tabIdx2+1$pu
		}

		if {$line == 1} {
		    break
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
    set toTextIdx   "$btmTextIdx lineend"
    $w tag remove elidedWin $fromTextIdx $toTextIdx

    if {!$data(-displayondemand)} {
	return ""
    }


    variable snipSides
    variable pu

    set rightCol [colIndex $win @$data(rightX),0 0 0]
    set topLine [expr {int($topTextIdx)}]
    set btmLine [expr {int($btmTextIdx)}]
    if {$btmLine > $data(itemCount)} {
	set btmLine $data(itemCount)
    }
    set snipStr $data(-snipstring)

    for {set line $topLine} {$line <= $btmLine} \
	{set line [expr {int([$w index "$line.end + 1 display c"])}]} {
	if {![findTabs $win $w $line $leftCol $leftCol tabIdx1 tabIdx2]} {
	    continue
	}

	set row [expr {$line - 1}]
	set item [lindex $data(itemList) $row]
	set key [lindex $item end]







>












|







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
    set toTextIdx   "$btmTextIdx lineend"
    $w tag remove elidedWin $fromTextIdx $toTextIdx

    if {!$data(-displayondemand)} {
	return ""
    }

    variable disp
    variable snipSides
    variable pu

    set rightCol [colIndex $win @$data(rightX),0 0 0]
    set topLine [expr {int($topTextIdx)}]
    set btmLine [expr {int($btmTextIdx)}]
    if {$btmLine > $data(itemCount)} {
	set btmLine $data(itemCount)
    }
    set snipStr $data(-snipstring)

    for {set line $topLine} {$line <= $btmLine} \
	{set line [expr {int([$w index "$line.end + 1 $disp c"])}]} {
	if {![findTabs $win $w $line $leftCol $leftCol tabIdx1 tabIdx2]} {
	    continue
	}

	set row [expr {$line - 1}]
	set item [lindex $data(itemList) $row]
	set key [lindex $item end]
6683
6684
6685
6686
6687
6688
6689
6690
6691
6692
6693
6694
6695
6696


6697

6698
6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710
6711


6712

6713
6714
6715
6716
6717
6718
6719

    set frm [winfo parent $w]
    variable winSys
    switch $winSys {
	x11 {
	    variable checkedImg
	    variable uncheckedImg
	    variable tristateImg
	    if {![info exists checkedImg]} {
		createCheckbuttonImgs
	    }

	    $w configure -borderwidth 0 -indicatoron 0 \
		-image $uncheckedImg -offrelief sunken \


		-selectimage $checkedImg -tristateimage $tristateImg

	    pack $w
	    return [list [winfo reqwidth $w] [winfo reqheight $w]]
	}

	win32 {
	    variable checkedImg
	    variable uncheckedImg
	    variable tristateImg
	    if {![info exists checkedImg]} {
		createCheckbuttonImgs
	    }

	    $w configure -borderwidth 0 -indicatoron 0 \
		-image $uncheckedImg -offrelief sunken \


		-selectimage $checkedImg -tristateimage $tristateImg

	    pack $w
	    return [list [winfo reqwidth $w] [winfo reqheight $w]]
	}

	aqua {
	    $w configure -borderwidth 0 -font "system"
	    $frm configure -width 12 -height 12







<




|
|
>
>
|
>







<




|
|
>
>
|
>







6692
6693
6694
6695
6696
6697
6698

6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710
6711
6712
6713
6714
6715

6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732

    set frm [winfo parent $w]
    variable winSys
    switch $winSys {
	x11 {
	    variable checkedImg
	    variable uncheckedImg

	    if {![info exists checkedImg]} {
		createCheckbuttonImgs
	    }

	    $w configure -borderwidth 0 -indicatoron 0 -image $uncheckedImg \
		-offrelief sunken -selectimage $checkedImg
	    if {$::tk_version >= 8.5} {
		variable tristateImg
		$w configure -tristateimage $tristateImg
	    }
	    pack $w
	    return [list [winfo reqwidth $w] [winfo reqheight $w]]
	}

	win32 {
	    variable checkedImg
	    variable uncheckedImg

	    if {![info exists checkedImg]} {
		createCheckbuttonImgs
	    }

	    $w configure -borderwidth 0 -indicatoron 0 -image $uncheckedImg \
		-offrelief sunken -selectimage $checkedImg
	    if {$::tk_version >= 8.5} {
		variable tristateImg
		$w configure -tristateimage $tristateImg
	    }
	    pack $w
	    return [list [winfo reqwidth $w] [winfo reqheight $w]]
	}

	aqua {
	    $w configure -borderwidth 0 -font "system"
	    $frm configure -width 12 -height 12
6782
6783
6784
6785
6786
6787
6788
6789
6790
6791
6792
6793
6794
6795
6796
# tablelist::makeTtkCkbtn
#
# Creates a ttk::checkbutton widget of the given path name and manages it in
# its parent, which is supposed to be a frame widget.
#------------------------------------------------------------------------------
proc tablelist::makeTtkCkbtn w {
    if {$::tk_version < 8.5 || [regexp {^8\.5a[1-5]$} $::tk_patchLevel]} {
	package require tile 0.6-
    }
    createTileAliases

    #
    # Define the layout Tablelist.TCheckbutton
    #
    set ckbtnLayout [style layout TCheckbutton]







|







6795
6796
6797
6798
6799
6800
6801
6802
6803
6804
6805
6806
6807
6808
6809
# tablelist::makeTtkCkbtn
#
# Creates a ttk::checkbutton widget of the given path name and manages it in
# its parent, which is supposed to be a frame widget.
#------------------------------------------------------------------------------
proc tablelist::makeTtkCkbtn w {
    if {$::tk_version < 8.5 || [regexp {^8\.5a[1-5]$} $::tk_patchLevel]} {
	package require tile 0.6[-]
    }
    createTileAliases

    #
    # Define the layout Tablelist.TCheckbutton
    #
    set ckbtnLayout [style layout TCheckbutton]
Changes to modules/tablelist/scripts/tablelistWidget.tcl.
130
131
132
133
134
135
136


137
138
139
140
141
142
143
    }

    variable newAquaSupport [expr {
	($::tk_version == 8.6 &&
	 [package vcompare $::tk_patchLevel "8.6.10"] >= 0) ||
	($::tk_version >= 8.7 &&
	 [package vcompare $::tk_patchLevel "8.7a3"] >= 0)}]



    variable scaled4 [::scaleutil::scale 4 $::scaleutil::scalingPct]

    #
    # The array configSpecs is used to handle configuration options.  The
    # names of its elements are the configuration options for the Tablelist
    # class.  The value of an array element is either an alias name or a list







>
>







130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
    }

    variable newAquaSupport [expr {
	($::tk_version == 8.6 &&
	 [package vcompare $::tk_patchLevel "8.6.10"] >= 0) ||
	($::tk_version >= 8.7 &&
	 [package vcompare $::tk_patchLevel "8.7a3"] >= 0)}]

    variable disp [expr {$::tk_version >= 8.5 ? "display" : ""}]

    variable scaled4 [::scaleutil::scale 4 $::scaleutil::scalingPct]

    #
    # The array configSpecs is used to handle configuration options.  The
    # names of its elements are the configuration options for the Tablelist
    # class.  The value of an array element is either an alias name or a list
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
#------------------------------------------------------------------------------
proc tablelist::createBindings {} {
    #
    # Define some Tablelist class bindings
    #
    bind Tablelist <KeyPress> continue
    bind Tablelist <FocusIn> {
	tablelist::addActiveTag %W
	if {[focus -lastfor %W] eq "%W"} {
	    if {[winfo exists [%W editwinpath]]} {
		focus [set tablelist::ns%W::data(editFocus)]
	    } else {
		focus [%W bodypath]
	    }
	}
    }
    bind Tablelist <FocusOut> {
	tablelist::removeActiveTag %W
	if {[%W cget -editendonfocusout]} {
	    tablelist::finishEditingOnFocusOut %W
	}
    }
    bind Tablelist <<TablelistSelect>>	{ event generate %W <<ListboxSelect>> }
    bind Tablelist <Destroy>		{ tablelist::cleanup %W }
    variable usingTile







<









<







673
674
675
676
677
678
679

680
681
682
683
684
685
686
687
688

689
690
691
692
693
694
695
#------------------------------------------------------------------------------
proc tablelist::createBindings {} {
    #
    # Define some Tablelist class bindings
    #
    bind Tablelist <KeyPress> continue
    bind Tablelist <FocusIn> {

	if {[focus -lastfor %W] eq "%W"} {
	    if {[winfo exists [%W editwinpath]]} {
		focus [set tablelist::ns%W::data(editFocus)]
	    } else {
		focus [%W bodypath]
	    }
	}
    }
    bind Tablelist <FocusOut> {

	if {[%W cget -editendonfocusout]} {
	    tablelist::finishEditingOnFocusOut %W
	}
    }
    bind Tablelist <<TablelistSelect>>	{ event generate %W <<ListboxSelect>> }
    bind Tablelist <Destroy>		{ tablelist::cleanup %W }
    variable usingTile
7768
7769
7770
7771
7772
7773
7774



7775
7776
7777
7778
7779
7780
7781
    }

    upvar ::tablelist::ns${win}::data data
    if {$index < 0} {
	set index 0
    } elseif {$index > $data(itemCount)} {
	set index $data(itemCount)



    }

    set childCount [llength $data($parentKey-childList)]
    if {$childIdx < 0} {
	set childIdx 0
    } elseif {$childIdx > $childCount} {	;# e.g., if $childIdx is "end"
	set childIdx $childCount







>
>
>







7768
7769
7770
7771
7772
7773
7774
7775
7776
7777
7778
7779
7780
7781
7782
7783
7784
    }

    upvar ::tablelist::ns${win}::data data
    if {$index < 0} {
	set index 0
    } elseif {$index > $data(itemCount)} {
	set index $data(itemCount)
    }
    if {$index < $data(itemCount)} {
	displayItems $win
    }

    set childCount [llength $data($parentKey-childList)]
    if {$childIdx < 0} {
	set childIdx 0
    } elseif {$childIdx > $childCount} {	;# e.g., if $childIdx is "end"
	set childIdx $childCount
Changes to modules/tablelist/scripts/utils/mwutil.tcl.
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
#==============================================================================
# Contains utility procedures for mega-widgets.
#
# Structure of the module:
#   - Namespace initialization
#   - Public utility procedures
#
# Copyright (c) 2000-2024  Csaba Nemethi (E-mail: [email protected])
#==============================================================================


package require Tk 8.4-


#
# Namespace initialization
# ========================
#

namespace eval mwutil {
    #
    # Public variables:
    #
    variable version	2.22
    variable library	[file dirname [file normalize [info script]]]

    #
    # Public procedures:
    #
    namespace export	wrongNumArgs getAncestorByClass convEventFields \
			defineKeyNav processTraversal focusNext focusPrev \










>
|
>










|







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
#==============================================================================
# Contains utility procedures for mega-widgets.
#
# Structure of the module:
#   - Namespace initialization
#   - Public utility procedures
#
# Copyright (c) 2000-2024  Csaba Nemethi (E-mail: [email protected])
#==============================================================================

if {[catch {package require Tk 8.4-}]} {
    package require Tk 8.4
}

#
# Namespace initialization
# ========================
#

namespace eval mwutil {
    #
    # Public variables:
    #
    variable version	2.23
    variable library	[file dirname [file normalize [info script]]]

    #
    # Public procedures:
    #
    namespace export	wrongNumArgs getAncestorByClass convEventFields \
			defineKeyNav processTraversal focusNext focusPrev \
Changes to modules/tablelist/scripts/utils/pkgIndex.tcl.
1
2
3
4
5
6
7
8
9
10
11
#==============================================================================
# mwutil, scaleutil, and scaleutilmisc package index file.
#
# Copyright (c) 2020-2024  Csaba Nemethi (E-mail: [email protected])
#==============================================================================

package ifneeded mwutil     2.22 [list source [file join $dir mwutil.tcl]]
package ifneeded scaleutil  1.13 [list source [file join $dir scaleutil.tcl]]
package ifneeded themepatch 1.6  [list source [file join $dir themepatch.tcl]]
package ifneeded scaleutilmisc 1.6 \
	[list source [file join $dir scaleutilMisc.tcl]]






|
|
|
|

1
2
3
4
5
6
7
8
9
10
11
#==============================================================================
# mwutil, scaleutil, and scaleutilmisc package index file.
#
# Copyright (c) 2020-2024  Csaba Nemethi (E-mail: [email protected])
#==============================================================================

package ifneeded mwutil     2.23 [list source [file join $dir mwutil.tcl]]
package ifneeded scaleutil  1.14 [list source [file join $dir scaleutil.tcl]]
package ifneeded themepatch 1.7  [list source [file join $dir themepatch.tcl]]
package ifneeded scaleutilmisc 1.7 \
	[list source [file join $dir scaleutilMisc.tcl]]
Changes to modules/tablelist/scripts/utils/scaleutil.tcl.
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
#==============================================================================
# Contains scaling-related utility procedures.
#
# Structure of the module:
#   - Namespace initialization
#   - Public utility procedures
#   - Private helper procedures
#
# Copyright (c) 2020-2023  Csaba Nemethi (E-mail: [email protected])
#==============================================================================


package require Tk 8.4-


#
# Namespace initialization
# ========================
#

namespace eval scaleutil {
    #
    # Public variables:
    #
    variable version	1.13
    variable library	[file dirname [file normalize [info script]]]

    #
    # Public procedures:
    #
    namespace export	scalingPercentage scale












>
|
>










|







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
#==============================================================================
# Contains scaling-related utility procedures.
#
# Structure of the module:
#   - Namespace initialization
#   - Public utility procedures
#   - Private helper procedures
#
# Copyright (c) 2020-2023  Csaba Nemethi (E-mail: [email protected])
#==============================================================================

if {[catch {package require Tk 8.4-}]} {
    package require Tk 8.4
}

#
# Namespace initialization
# ========================
#

namespace eval scaleutil {
    #
    # Public variables:
    #
    variable version	1.14
    variable library	[file dirname [file normalize [info script]]]

    #
    # Public procedures:
    #
    namespace export	scalingPercentage scale

Changes to modules/tablelist/scripts/utils/scaleutilMisc.tcl.
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
#==============================================================================
# Contains miscellaneous scaling-related utility procedures.
#
# Structure of the module:
#   - Namespace initialization
#   - Public utility procedures
#   - Private helper procedures
#
# Copyright (c) 2020-2024  Csaba Nemethi (E-mail: [email protected])
#==============================================================================


package require Tk 8.4-


package require scaleutil 1.10-


#
# Namespace initialization
# ========================
#

namespace eval scaleutilmisc {
    #
    # Public variables:
    #
    variable version	1.6
    variable library	[file dirname [file normalize [info script]]]

    #
    # Public procedures:
    #
    namespace export	scaleBWidgetSpinBox scaleBWidgetComboBox \
			scaleIncrDateentry scaleIncrTimeentry \











>
|
>
>
|
>










|







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
#==============================================================================
# Contains miscellaneous scaling-related utility procedures.
#
# Structure of the module:
#   - Namespace initialization
#   - Public utility procedures
#   - Private helper procedures
#
# Copyright (c) 2020-2024  Csaba Nemethi (E-mail: [email protected])
#==============================================================================

if {[catch {package require Tk 8.4-}]} {
    package require Tk 8.4
}
if {[catch {package require scaleutil 1.10-}]} {
    package require scaleutil 1.10
}

#
# Namespace initialization
# ========================
#

namespace eval scaleutilmisc {
    #
    # Public variables:
    #
    variable version	1.7
    variable library	[file dirname [file normalize [info script]]]

    #
    # Public procedures:
    #
    namespace export	scaleBWidgetSpinBox scaleBWidgetComboBox \
			scaleIncrDateentry scaleIncrTimeentry \
Changes to modules/tablelist/scripts/utils/themepatch.tcl.
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
#==============================================================================
# Contains procedures designed for patching and unpatching the alt, clam and
# default themes.
#
# Structure of the module:
#   - Namespace initialization
#   - Public utility procedures
#   - Private helper procedures
#
# Copyright (c) 2022-2024  Csaba Nemethi (E-mail: [email protected])
#==============================================================================


package require Tk 8.4-

if {$::tk_version < 8.5 || [regexp {^8\.5a[1-5]$} $::tk_patchLevel]} {

    package require tile 0.8-
}

if {![info exists ::tk::scalingPct]} {		;# earlier than Tk 8.7b1

    package require scaleutil 1.10-

}

#
# Namespace initialization
# ========================
#

namespace eval themepatch {
    #
    # Public variables:
    #
    variable version	1.6
    variable library	[file dirname [file normalize [info script]]]

    #
    # Public procedures:
    #
    namespace export	patch unpatch ispatched













>
|
>

>
|
|
>

>
|
>











|







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
#==============================================================================
# Contains procedures designed for patching and unpatching the alt, clam and
# default themes.
#
# Structure of the module:
#   - Namespace initialization
#   - Public utility procedures
#   - Private helper procedures
#
# Copyright (c) 2022-2024  Csaba Nemethi (E-mail: [email protected])
#==============================================================================

if {[catch {package require Tk 8.4-}]} {
    package require Tk 8.4
}
if {$::tk_version < 8.5 || [regexp {^8\.5a[1-5]$} $::tk_patchLevel]} {
    if {[catch {package require tile 0.8-}]} {
	package require tile 0.8
    }
}
if {![info exists ::tk::scalingPct]} {		;# earlier than Tk 8.7b1
    if {[catch {package require scaleutil 1.10-}]} {
	package require scaleutil 1.10
    }
}

#
# Namespace initialization
# ========================
#

namespace eval themepatch {
    #
    # Public variables:
    #
    variable version	1.7
    variable library	[file dirname [file normalize [info script]]]

    #
    # Public procedures:
    #
    namespace export	patch unpatch ispatched

Changes to modules/tablelist/tablelist.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#==============================================================================
# Main Tablelist package module.
#
# Copyright (c) 2000-2024  Csaba Nemethi (E-mail: [email protected])
#==============================================================================

package require Tk 8.4-
package require -exact tablelist::common 7.2

package provide tablelist $::tablelist::version
package provide Tablelist $::tablelist::version

::tablelist::useTile 0
::tablelist::createBindings






<
|






1
2
3
4
5
6

7
8
9
10
11
12
13
#==============================================================================
# Main Tablelist package module.
#
# Copyright (c) 2000-2024  Csaba Nemethi (E-mail: [email protected])
#==============================================================================


package require -exact tablelist::common 7.3

package provide tablelist $::tablelist::version
package provide Tablelist $::tablelist::version

::tablelist::useTile 0
::tablelist::createBindings
Changes to modules/tablelist/tablelistCommon.tcl.
1
2
3
4
5
6
7




8
9
10
11
12
13
14
15
16
17
18
#==============================================================================
# Main Tablelist and Tablelist_tile package module.
#
# Copyright (c) 2000-2024  Csaba Nemethi (E-mail: [email protected])
#==============================================================================

namespace eval ::tablelist {




    #
    # Public variables:
    #
    variable version	7.2
    variable library	[file dirname [file normalize [info script]]]

    #
    # Creates a new tablelist widget:
    #
    namespace export	tablelist








>
>
>
>



|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#==============================================================================
# Main Tablelist and Tablelist_tile package module.
#
# Copyright (c) 2000-2024  Csaba Nemethi (E-mail: [email protected])
#==============================================================================

namespace eval ::tablelist {
    proc - {} { return [expr {$::tcl_version >= 8.5 ? "-" : ""}] }

    package require Tk 8.4[-]

    #
    # Public variables:
    #
    variable version	7.3
    variable library	[file dirname [file normalize [info script]]]

    #
    # Creates a new tablelist widget:
    #
    namespace export	tablelist

88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#
# Load the packages mwutil, scaleutil, and scaleutilmisc from the directory
# "scripts/utils".  Take into account that mwutil is also included in
# Mentry and Scrollutil, and scaleutil is also included in Scrollutil.
#
proc ::tablelist::loadUtils {} {
    if {[catch {package present mwutil} version] == 0 &&
	[package vcompare $version 2.22] < 0} {
	package forget mwutil
    }
    package require mwutil 2.22-

    if {[catch {package present scaleutil} version] == 0 &&
	[package vcompare $version 1.13] < 0} {
	package forget scaleutil
    }
    package require scaleutil 1.13-

    package require scaleutilmisc 1.6-
}
::tablelist::loadUtils







|


|


|


|

|


92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#
# Load the packages mwutil, scaleutil, and scaleutilmisc from the directory
# "scripts/utils".  Take into account that mwutil is also included in
# Mentry and Scrollutil, and scaleutil is also included in Scrollutil.
#
proc ::tablelist::loadUtils {} {
    if {[catch {package present mwutil} version] == 0 &&
	[package vcompare $version 2.23] < 0} {
	package forget mwutil
    }
    package require mwutil 2.23[-]

    if {[catch {package present scaleutil} version] == 0 &&
	[package vcompare $version 1.14] < 0} {
	package forget scaleutil
    }
    package require scaleutil 1.14[-]

    package require scaleutilmisc 1.7[-]
}
::tablelist::loadUtils
Changes to modules/tablelist/tablelist_tile.tcl.
1
2
3
4
5
6
7

8
9
10
11
12
13
14
15
16
17
18
#==============================================================================
# Main Tablelist_tile package module.
#
# Copyright (c) 2000-2024  Csaba Nemethi (E-mail: [email protected])
#==============================================================================

package require Tk 8.4-

if {$::tk_version < 8.5 || [regexp {^8\.5a[1-5]$} $::tk_patchLevel]} {
    package require tile 0.6-
}
package require -exact tablelist::common 7.2

package provide tablelist_tile $::tablelist::version
package provide Tablelist_tile $::tablelist::version

::tablelist::useTile 1
::tablelist::createBindings







|
>

|

<







1
2
3
4
5
6
7
8
9
10
11

12
13
14
15
16
17
18
#==============================================================================
# Main Tablelist_tile package module.
#
# Copyright (c) 2000-2024  Csaba Nemethi (E-mail: [email protected])
#==============================================================================

package require -exact tablelist::common 7.3

if {$::tk_version < 8.5 || [regexp {^8\.5a[1-5]$} $::tk_patchLevel]} {
    package require tile 0.6[::tablelist::-]
}


package provide tablelist_tile $::tablelist::version
package provide Tablelist_tile $::tablelist::version

::tablelist::useTile 1
::tablelist::createBindings