Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Tablelist: Updated for version 7.6. See the ChangeLog for details. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
d000059d372385e196bc167871981e89 |
User & Date: | csaba 2025-05-16 17:46:56.656 |
Context
2025-05-16
| ||
19:47 | Scrollutil: Updated for version 2.6. See the ChangeLog for details. check-in: 10f204257d user: csaba tags: trunk | |
17:46 | Tablelist: Updated for version 7.6. See the ChangeLog for details. check-in: d000059d37 user: csaba tags: trunk | |
2025-03-24
| ||
11:11 | Released Tsw 1.0. check-in: 70a3e7bfe4 user: csaba tags: trunk | |
Changes
Changes to examples/tablelist/bwidget.tcl.
︙ | ︙ | |||
195 196 197 198 199 200 201 | available { # # Update the image contained in the cell and the checkbutton # embedded into the header label of the column "available" # set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img | | | 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 | available { # # Update the image contained in the cell and the checkbutton # embedded into the header label of the column "available" # set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img after idle [list updateHdrCkbtn $tbl $col] } baudRate { # # Check whether the baud rate is an integer in the range 50..921600 # if {![regexp {^[0-9]+$} $text] || $text < 50 || $text > 921600} { |
︙ | ︙ |
Changes to examples/tablelist/bwidget_tile.tcl.
︙ | ︙ | |||
202 203 204 205 206 207 208 | available { # # Update the image contained in the cell and the checkbutton # embedded into the header label of the column "available" # set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img | | | 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 | available { # # Update the image contained in the cell and the checkbutton # embedded into the header label of the column "available" # set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img after idle [list updateHdrCkbtn $tbl $col] } baudRate { # # Check whether the baud rate is an integer in the range 50..921600 # if {![regexp {^[0-9]+$} $text] || $text < 50 || $text > 921600} { |
︙ | ︙ |
Changes to examples/tablelist/iwidgets.tcl.
︙ | ︙ | |||
205 206 207 208 209 210 211 | available { # # Update the image contained in the cell and the checkbutton # embedded into the header label of the column "available" # set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img | | | 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 | available { # # Update the image contained in the cell and the checkbutton # embedded into the header label of the column "available" # set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img after idle [list updateHdrCkbtn $tbl $col] } baudRate { # # Check whether the baud rate is an integer in the range 50..921600 # if {![regexp {^[0-9]+$} $text] || $text < 50 || $text > 921600} { |
︙ | ︙ |
Changes to examples/tablelist/iwidgets_tile.tcl.
︙ | ︙ | |||
210 211 212 213 214 215 216 | available { # # Update the image contained in the cell and the checkbutton # embedded into the header label of the column "available" # set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img | | | 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 | available { # # Update the image contained in the cell and the checkbutton # embedded into the header label of the column "available" # set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img after idle [list updateHdrCkbtn $tbl $col] } baudRate { # # Check whether the baud rate is an integer in the range 50..921600 # if {![regexp {^[0-9]+$} $text] || $text < 50 || $text > 921600} { |
︙ | ︙ |
Changes to examples/tablelist/miscWidgets.tcl.
︙ | ︙ | |||
205 206 207 208 209 210 211 | available { # # Update the image contained in the cell and the checkbutton # embedded into the header label of the column "available" # set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img | | | 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 | available { # # Update the image contained in the cell and the checkbutton # embedded into the header label of the column "available" # set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img after idle [list updateHdrCkbtn $tbl $col] } baudRate { # # Check whether the baud rate is an integer in the range 50..921600 # if {![regexp {^[0-9]+$} $text] || $text < 50 || $text > 921600} { |
︙ | ︙ |
Changes to examples/tablelist/miscWidgets_tile.tcl.
︙ | ︙ | |||
212 213 214 215 216 217 218 | available { # # Update the image contained in the cell and the checkbutton # embedded into the header label of the column "available" # set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img | | | 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 | available { # # Update the image contained in the cell and the checkbutton # embedded into the header label of the column "available" # set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img after idle [list updateHdrCkbtn $tbl $col] } baudRate { # # Check whether the baud rate is an integer in the range 50..921600 # if {![regexp {^[0-9]+$} $text] || $text < 50 || $text > 921600} { |
︙ | ︙ |
Changes to examples/tablelist/serialParams.tcl.
1 2 3 | #============================================================================== # Populates a tablelist widget with the parameters of 16 serial lines, # configures the checkbutton embedded into the header label of the column | | | 1 2 3 4 5 6 7 8 9 10 11 | #============================================================================== # Populates a tablelist widget with the parameters of 16 serial lines, # configures the checkbutton embedded into the header label of the column # "available", and implements the procedures updateHdrCkbtn and afterCopyCmd. # # Copyright (c) 2021-2024 Csaba Nemethi (E-mail: [email protected]) #============================================================================== # # Populate the tablelist widget; set the activation # date & time to 10 minutes past the current clock value |
︙ | ︙ | |||
49 50 51 52 53 54 55 | unset $varName } # # Selects/deselects the checkbutton embedded into the header label # of the specified column or sets it into the tri-state mode. # | | | 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | unset $varName } # # Selects/deselects the checkbutton embedded into the header label # of the specified column or sets it into the tri-state mode. # proc updateHdrCkbtn {tbl col} { set lst [$tbl getcolumns $col] set ckbtn [$tbl labelwindowpath $col] upvar #0 [$ckbtn cget -variable] var if {[lsearch -exact $lst 1] < 0} { ;# all 0 set var 0 ;# deselect } elseif {[lsearch -exact $lst 0] < 0} { ;# all 1 |
︙ | ︙ | |||
81 82 83 84 85 86 87 | # the checkbutton embedded into the column's header label # for {set row 0} {$row < 16} {incr row} { set text [$tbl cellcget $row,$col -text] set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img } | | | 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | # the checkbutton embedded into the column's header label # for {set row 0} {$row < 16} {incr row} { set text [$tbl cellcget $row,$col -text] set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img } updateHdrCkbtn $tbl $col } color { # # Update the images contained in the column's cells # for {set row 0} {$row < 16} {incr row} { set text [$tbl cellcget $row,$col -text] $tbl cellconfigure $row,$col -image img$::colors($text) } } } } |
Changes to examples/tablelist/tileWidgets.tcl.
︙ | ︙ | |||
233 234 235 236 237 238 239 | available { # # Update the image contained in the cell and the checkbutton # embedded into the header label of the column "available" # set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img | | | 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 | available { # # Update the image contained in the cell and the checkbutton # embedded into the header label of the column "available" # set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img after idle [list updateHdrCkbtn $tbl $col] } baudRate { # # Check whether the baud rate is an integer in the range 50..921600 # if {![regexp {^[0-9]+$} $text] || $text < 50 || $text > 921600} { |
︙ | ︙ |
Changes to examples/tablelist/tileWidgets2.tcl.
1 2 3 4 | #! /usr/bin/env tclsh #============================================================================== # Demonstrates the interactive tablelist cell editing with the aid of some Ttk | | | 1 2 3 4 5 6 7 8 9 10 11 12 | #! /usr/bin/env tclsh #============================================================================== # Demonstrates the interactive tablelist cell editing with the aid of some Ttk # widgets and the toggleswitch widget. # # Copyright (c) 2005-2025 Csaba Nemethi (E-mail: [email protected]) #============================================================================== package require Tk package require tsw package require tablelist_tile |
︙ | ︙ | |||
221 222 223 224 225 226 227 | available { # # Update the image contained in the cell and the checkbutton # embedded into the header label of the column "available" # set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img | | | 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 | available { # # Update the image contained in the cell and the checkbutton # embedded into the header label of the column "available" # set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img after idle [list updateHdrCkbtn $tbl $col] } baudRate { # # Check whether the baud rate is an integer in the range 50..921600 # if {![regexp {^[0-9]+$} $text] || $text < 50 || $text > 921600} { |
︙ | ︙ |
Changes to modules/tablelist/CHANGES.txt.
|
| | > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | What is new in Tablelist 7.6? ----------------------------- 1. The implementation of the interactive cell editing with the aid of a (ttk::)menubutton now takes into acount that in Tk 9 the menu index "none" was replaced with the empty string. 2. Eliminated a few artifacts related to the "showtargetmark" subcommand when using TkDND on Windows or macOS Aqua (thanks to Nicolas Bats for his bug report). 3. Made sure that the "autoscrolltarget" subcommand works as expected (again, thanks to Nicolas Bats for reporting that on Windows and macOS Aqua this was not always the case). 4. Made sure that in multi-line cell texts the substring "%W" won't be substituted by the path name of the tablelist's body (thanks to Harald Oehlmann for his bug report). 5. Minor improvements in the demo scripts related to interactive cell editing. 6. Improved the documentation by extending the CSS stylesheet used in the HTML files. What was new in Tablelist 7.5? ------------------------------ 1. Support for interactive cell editing with the aid of the new toggleswitch widget. 2. Improvements related to the use of various system colors on aqua and win32. |
︙ | ︙ |
Changes to modules/tablelist/COPYRIGHT.txt.
|
| | | | 1 2 3 4 5 6 7 8 9 | Multi-column listbox and tree widget package Tablelist, version 7.6 Copyright (c) 2000-2025 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. This software is distributed WITHOUT ANY WARRANTY; without even the |
︙ | ︙ |
Changes to modules/tablelist/ChangeLog.
1 2 3 4 5 6 7 | 2025-03-24 Csaba Nemethi <[email protected]> * Released Tablelist 7.5. 2025-03-20 Csaba Nemethi <[email protected]> * *.tcl: Bumped the version number to 7.5. | > > > > > > > > > > > > > > > > > > > > > | 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 | 2025-05-16 Csaba Nemethi <[email protected]> * *.tcl: Bumped the version number to 7.6. * COPYRIGHT.txt: * README.txt: * CHANGES.txt: Updated to reflect the changes. * doc/*.html: * scripts/*.tcl: Eliminated a few artifacts related to the "showtargetmark" subcommand when using TkDND on Windows or macOS Aqua; made sure that the "autoscrolltarget" subcommand works as expected; made sure that in multi-line cell texts the substring "%W" won't be substituted by the path name of the tablelist's body; the implementation of the interactive cell editing with the aid of a (ttk::)menubutton now takes into acount that in Tk 9 the menu index "none" was replaced with the empty string. * ../../examples/tablelist/*.tcl: Minor improvements related to interactive cell editing. 2025-03-24 Csaba Nemethi <[email protected]> * Released Tablelist 7.5. 2025-03-20 Csaba Nemethi <[email protected]> * *.tcl: Bumped the version number to 7.5. |
︙ | ︙ |
Changes to modules/tablelist/README.txt.
︙ | ︙ | |||
84 85 86 87 88 89 90 | https://www.nemethi.de How to Get It? -------------- Tablelist is available for free download from the same URL as Wcb. The | | | | | | | | | 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 | 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.6.tar.gz" for UNIX and "tablelist7_6.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 subdirectory of the "lib" directory within your Tcl/Tk installation. To install Tablelist on UNIX, "cd" to the desired directory and unpack the distribution file "tablelist7.6.tar.gz": gunzip -c tablelist7.6.tar.gz | tar -xf - On most UNIX systems this can be replaced with tar -zxf tablelist7.6.tar.gz Both commands will create a directory named "tablelist7.6 with the subdirectories "demos", "doc", and "scripts". On Windows, use WinZip or some other program capable of unpacking the distribution file "tablelist7_6.zip" into the directory "tablelist7.6", 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 | <!DOCTYPE html> <html> <head> | | | | 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.6</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.6</h1> <h3>by</h3> <h2>Csaba Nemethi</h2> <address> <a href="mailto:[email protected]">[email protected]</a> |
︙ | ︙ |
Changes to modules/tablelist/doc/stylesheet.css.
1 2 3 4 5 6 7 8 9 10 11 | /* generic class defining a top margin whose height equals the font size */ .tm {margin-top: 1em} /* background, border, border-radius, and padding for the <pre> tag */ pre { background: #F7F7F7; border: silver solid 1px; border-radius: 4px; padding: 4px; } | > > > > > > > > > > | > | | < > | | < < < | 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 | /* generic class defining a top margin whose height equals the font size */ .tm {margin-top: 1em} /* text-align for the <div> tag */ div {text-align: center} /* background for the <body> tag */ body {background: #FFFFFF} /* color for the <span> tag */ span.red {color: #E00000} span.cmt {color: #36648b} /* background, border, border-radius, and padding for the <pre> tag */ pre { background: #F7F7F7; border: silver solid 1px; border-radius: 4px; padding: 4px; } /* background, border, border-radius, and padding for the <code> tag */ code { background: #F7F7F7; border: #F0F0F0 solid 1px; border-radius: 3px; padding: 2px; } |
Changes to modules/tablelist/doc/tablelist.html.
︙ | ︙ | |||
10 11 12 13 14 15 16 | <link rel="stylesheet" type="text/css" href="stylesheet.css"> </head> <body> <div> <h1>Tablelist Programmer's Guide</h1> | | | 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.6</h2> <h3>by</h3> <h2>Csaba Nemethi</h2> <address> <a href="mailto:[email protected]">[email protected]</a> |
︙ | ︙ | |||
175 176 177 178 179 180 181 | <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. | | | | | | | | | | 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 | <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. The distribution file is <code>tablelist7.6.tar.gz</code> for UNIX and <code>tablelist7_6.zip</code> for Windows. These files contain the same information, except for the additional carriage return character preceding the linefeed at the end of each line in the text files for Windows.</p> <p>Tablelist is also included in tklib, which has the address</p> <blockquote> <address> <a href="https://core.tcl.tk/tklib">https://core.tcl.tk/tklib</a> </address> </blockquote> <h3 id="ov_install">How to Install It?</h3> <p>Install the package as a subdirectory of one of the directories given by the <code>auto_path</code> variable. For example, you can install it as a subdirectory of the <code>lib</code> directory within your Tcl/Tk installation.</p> <p>To install Tablelist <i>on UNIX</i>, <code>cd</code> to the desired directory and unpack the distribution file <code>tablelist7.6.tar.gz</code>:</p> <blockquote> <pre> gunzip -c tablelist7.6.tar.gz | tar -xf - </pre> </blockquote> <p>On most UNIX systems this can be replaced with</p> <blockquote> <pre> tar -zxf tablelist7.6.tar.gz </pre> </blockquote> <p>Both commands will create a directory named <code>tablelist7.6</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_6.zip</code> into the directory <code>tablelist7.6</code>, with the subdirectories <code>demos</code>, <code>doc</code>, and <code>scripts</code>.</p> <p>The file <code>tablelistEdit.tcl</code> in the <code>scripts</code> directory is only needed for applications making use of interactive cell editing. Similarly, the file <code>tablelistMove.tcl</code> in the same directory is only required for scripts invoking the <code>move</code> or <code>movecolumn</code> command. Finally, the file |
︙ | ︙ | |||
2576 2577 2578 2579 2580 2581 2582 | unset $varName } <span class="cmt"># # Selects/deselects the checkbutton embedded into the header label # of the specified column or sets it into the tri-state mode. #</span> | | | 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 | unset $varName } <span class="cmt"># # Selects/deselects the checkbutton embedded into the header label # of the specified column or sets it into the tri-state mode. #</span> proc updateHdrCkbtn {tbl col} { set lst [$tbl getcolumns $col] set ckbtn [$tbl labelwindowpath $col] upvar #0 [$ckbtn cget -variable] var if {[lsearch -exact $lst 1] < 0} { ;<span class="cmt"># all 0</span> set var 0 ;<span class="cmt"># deselect</span> } elseif {[lsearch -exact $lst 0] < 0} { ;<span class="cmt"># all 1</span> |
︙ | ︙ | |||
2608 2609 2610 2611 2612 2613 2614 | # the checkbutton embedded into the column's header label #</span> for {set row 0} {$row < 16} {incr row} { set text [$tbl cellcget $row,$col -text] set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img } | | | 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 | # the checkbutton embedded into the column's header label #</span> for {set row 0} {$row < 16} {incr row} { set text [$tbl cellcget $row,$col -text] set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img } updateHdrCkbtn $tbl $col }</span> color { <span class="cmt"># # Update the images contained in the column's cells #</span> for {set row 0} {$row < 16} {incr row} { |
︙ | ︙ | |||
2732 2733 2734 2735 2736 2737 2738 | <span class="red">available { <span class="cmt"># # Update the image contained in the cell and the checkbutton # embedded into the header label of the column "available" #</span> set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img | | | 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 | <span class="red">available { <span class="cmt"># # Update the image contained in the cell and the checkbutton # embedded into the header label of the column "available" #</span> set img [expr {$text ? "checkedImg" : "uncheckedImg"}] $tbl cellconfigure $row,$col -image $img after idle [list updateHdrCkbtn $tbl $col] }</span> baudRate { <span class="cmt"># # Check whether the baud rate is an integer in the range 50..921600 #</span> if {![regexp {^[0-9]+$} $text] || $text < 50 || $text > 921600} { |
︙ | ︙ | |||
2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 | "tablelistWidget.html#embedcheckbuttons">embedcheckbuttons</a></code> subcommand to populate the column with <i>persistently</i> embedded checkbuttons. The necessary changes are as follows:</p> <ul> <li class="tm">Remove those parts of the code above that are shown in <span class="red">red</span> color.</li> <li class="tm"> After populating the tablelist widget, invoke <blockquote> <pre> | > > > > > > > > > > | | 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 | "tablelistWidget.html#embedcheckbuttons">embedcheckbuttons</a></code> subcommand to populate the column with <i>persistently</i> embedded checkbuttons. The necessary changes are as follows:</p> <ul> <li class="tm">Remove those parts of the code above that are shown in <span class="red">red</span> color.</li> <li class="tm"> Implement the procedure <code>ckbtnCmd</code> as follows: <blockquote> <pre> proc ckbtnCmd {tbl row col} { return [updateHdrCkbtn $tbl $col] } </pre> </blockquote> </li> <li class="tm"> After populating the tablelist widget, invoke <blockquote> <pre> $tbl embedcheckbuttons 1 ckbtnCmd </pre> </blockquote> </li> <li class="tm"> Instead of the two deleted lines of the <code>onCkbtnToggle</code> procedure, insert the following loop: |
︙ | ︙ |
Changes to modules/tablelist/doc/tablelistBWidget.html.
︙ | ︙ | |||
9 10 11 12 13 14 15 | <link rel="stylesheet" type="text/css" href="stylesheet.css"> </head> <body> <div> <h1>Interactive Tablelist Cell Editing Using the BWidget Package</h1> | | | 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.6</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 | <link rel="stylesheet" type="text/css" href="stylesheet.css"> </head> <body> <div> <h1>Commands Related to Binding Scripts</h1> | | | 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.6</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 | <link rel="stylesheet" type="text/css" href="stylesheet.css"> </head> <body> <div> <h1>Commands for Interactive Sorting by One or More Columns</h1> | | | 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.6</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 | <link rel="stylesheet" type="text/css" href="stylesheet.css"> </head> <body> <div> <h1>Interactive Tablelist Cell Editing Using the combobox Package</h1> | | | 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.6</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 | <link rel="stylesheet" type="text/css" href="stylesheet.css"> </head> <body> <div> <h1>Interactive Tablelist Cell Editing Using the ctext Package</h1> | | | 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.6</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 | <link rel="stylesheet" type="text/css" href="stylesheet.css"> </head> <body> <div> <h1>Interactive Tablelist Cell Editing Using the Iwidgets Package</h1> | | | 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.6</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 | <link rel="stylesheet" type="text/css" href="stylesheet.css"> </head> <body> <div> <h1>Interactive Tablelist Cell Editing Using the Mentry Package</h1> | | | 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.6</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 | <link rel="stylesheet" type="text/css" href="stylesheet.css"> </head> <body> <div> <h1>Commands Related to Tile Themes</h1> | | | 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.6</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 | <link rel="stylesheet" type="text/css" href="stylesheet.css"> </head> <body> <div> <h1>Interactive Tablelist Cell Editing Using Tile Widgets</h1> | | | 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.6</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 | <link rel="stylesheet" type="text/css" href="stylesheet.css"> </head> <body> <div> <h1>Interactive Tablelist Cell Editing Using Tk Core Widgets</h1> | | | 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.6</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 | <link rel="stylesheet" type="text/css" href="stylesheet.css"> </head> <body> <div> <h1>The <code><b>tablelist::tablelist</b></code> Command</h1> | | | 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.6</h2> <h3>by</h3> <h2>Csaba Nemethi</h2> <address> <a href="mailto:[email protected]">[email protected]</a> |
︙ | ︙ | |||
96 97 98 99 100 101 102 | <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> | > > > | | > > > > | > > > > | > > > > | > > > > | > > > > | > > > | 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | <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> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td><code><b><a href="#arrowstyle">-arrowstyle</a></b></code></td> <td><code><b>flat7x4</b>|<b>flat7x7</b>|<b>flat8x4</b>|<b>flat8x5</b>|<b>flat9x5</b>|<b>flat10x5</b>|</code></td> </tr> <tr> <td></td> <td><code><b>flat11x6</b>|<b>flat12x6</b>|<b>flat13x7</b>|<b>flat14x7</b>|<b>flat15x8</b>|<b>flat16x8</b>|</code></td> </tr> <tr> <td></td> <td><code><b>flatAngle7x4</b>|<b>flatAngle7x5</b>|<b>flatAngle9x5</b>|<b>flatAngle9x6</b>|</code></td> </tr> <tr> <td></td> <td><code><b>flatAngle10x6</b>|<b>flatAngle11x6</b>|<b>flatAngle13x7</b>|<b>flatAngle15x8</b>|</code></td> </tr> <tr> <td></td> <td><code><b>photo0x0</b>|<b>photo7x4</b>|<b>photo7x7</b>|<b>photo9x5</b>|<b>photo11x6</b>|</code></td> </tr> <tr> <td></td> <td><code><b>photo13x7</b>|<b>photo15x8</b>|<b>sunken8x7</b>|<b>sunken10x9</b>|<b>sunken12x11</b></code></td> </tr> </table> </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> |
︙ | ︙ | |||
310 311 312 313 314 315 316 | <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> | > > > | | > > > > | > > > > | > > > > | > > > > | > > > > | > > > > | > > > > | > > > | 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 | <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> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td><code><b><a href="#treestyle">-treestyle</a></b></code></td> <td><code><b>adwaita</b>|<b>ambiance</b>|<b>aqua</b>|<b>aqua11</b>|<b>arc</b>|<b>baghira</b>|<b>bicolor</b>|<b>bicolor100</b>|</code></td> </tr> <tr> <td></td> <td><code><b>bicolor125</b>|<b>bicolor150</b>|<b>bicolor175</b>|<b>bicolor200</b>|<b>blueMenta</b>|<b>classic</b>|</code></td> </tr> <tr> <td></td> <td><code><b>classic100</b>|<b>classic125</b>|<b>classic150</b>|<b>classic175</b>|<b>classic200</b>|<b>dust</b>|<b>dustSand</b>|</code></td> </tr> <tr> <td></td> <td><code><b>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>|<b>phase</b>|</code></td> </tr> <tr> <td></td> <td><code><b>plain100</b>|<b>plain125</b>|<b>plain150</b>|<b>plain175</b>|<b>plain200</b>|<b>plastik</b>|<b>plastique</b>|</code></td> </tr> <tr> <td></td> <td><code><b>radiance</b>|<b>ubuntu</b>|<b>ubuntu2</b>|<b>ubuntu3</b>|<b>ubuntuMate</b>|<b>vistaAero</b>|<b>vistaClassic</b>|</code></td> </tr> <tr> <td></td> <td><code><b>white</b>|<b>white100</b>|<b>white125</b>|<b>white150</b>|<b>white175</b>|<b>white200</b>|<b>win7Aero</b>|</code></td> </tr> <tr> <td></td> <td><code><b>win7Classic</b>|<b>win10</b>|<b>winnative</b>|<b>winxpBlue</b>|<b>winxpOlive</b>|<b>winxpSilver</b>|<b>yuyo</b></code></td> </tr> </table> </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> |
︙ | ︙ | |||
1548 1549 1550 1551 1552 1553 1554 | ctext, Mentry (or Mentry_tile), and Tsw, as well as Tk core text, spinbox, checkbutton, and menubutton widgets, along with tile entry, spinbox, combobox, checkbutton, and menubutton widgets are also supported as temporary embedded widgets used for cell editing. In addition, a rich set of keyboard bindings is provided for a comfortable navigation between the editable cells.</dd> | | | | | | | 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 | ctext, Mentry (or Mentry_tile), and Tsw, as well as Tk core text, spinbox, checkbutton, and menubutton widgets, along with tile entry, spinbox, combobox, checkbutton, and menubutton widgets are also supported as temporary embedded widgets used for cell editing. In addition, a rich set of keyboard bindings is provided for a comfortable navigation between the editable cells.</dd> <dd class="tm">When created, a new tablelist widget has no items. Items (in both the body and the header) may be added, deleted, or updated using widget commands described below. In addition, one or more items or elements of the widget's body may be selected. If a tablelist widget is exporting its selection (see the <code><b>-exportselection</b></code> option), then it will observe the standard X11 protocols for handling the selection. Tablelist widget selections are available as types <code><b>STRING</b></code> and <code><b>UTF8_STRING</b></code>; the value of the selection will be a text built by taking all of the rows having at least one <a href= "#isviewable">viewable</a> selected element, joining these elements together with tabs, and the resulting strings in turn with newlines. |
︙ | ︙ | |||
4297 4298 4299 4300 4301 4302 4303 | <td><code><b> TargetColor</b></code></td> </tr> </table> <blockquote> <p>Specifies the color of the gap displayed in the tablelist's body or header label area to indicate the target position when moving a row or | | | | 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 | <td><code><b> TargetColor</b></code></td> </tr> </table> <blockquote> <p>Specifies the color of the gap displayed in the tablelist's body or header label area to indicate the target position when moving a row or column interactively. The target indicator for the tablelist's body can also be displayed explicitly with the aid of the <code><b><a href="#showtargetmark">showtargetmark</a></b></code> subcommand, and its path name can be retrieved via <code><b><a href= "#targetmarkpath">targetmarkpath</a></b></code>. The default value is <code><b>black</b></code>.</p> </blockquote> </dd> |
︙ | ︙ | |||
11388 11389 11390 11391 11392 11393 11394 | SUPPORT</a> section for examples of how to use this subcommand during a drag & drop operation.</dd> <dt class="tm" id="targetmarkpath"><code><i>pathName</i> <b>targetmarkpath</b></code></dt> <dd>Returns the path name of the drop target indicator (displayed as a | | | 11448 11449 11450 11451 11452 11453 11454 11455 11456 11457 11458 11459 11460 11461 11462 | SUPPORT</a> section for examples of how to use this subcommand during a drag & drop operation.</dd> <dt class="tm" id="targetmarkpath"><code><i>pathName</i> <b>targetmarkpath</b></code></dt> <dd>Returns the path name of the drop target indicator (displayed as a horizontal gap or vertical bar).</dd> <dt class="tm" id="targetmarkpos"><code><i>pathName</i> <b>targetmarkpos</b> <i>y</i> ?<b>-any</b>|<b>-horizontal</b>|<b>-vertical</b>?</code></dt> <dd>Given a y-coordinate within the tablelist window, this command returns a two-element list containing the arguments to be passed to the |
︙ | ︙ |
Changes to modules/tablelist/pkgIndex.tcl.
1 2 3 4 5 6 7 8 9 | #============================================================================== # Tablelist and Tablelist_tile package index file. # # Copyright (c) 2000-2025 Csaba Nemethi (E-mail: [email protected]) #============================================================================== # # Regular packages: # | | | | | | | | | 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-2025 Csaba Nemethi (E-mail: [email protected]) #============================================================================== # # Regular packages: # package ifneeded tablelist 7.6 \ [list source [file join $dir tablelist.tcl]] package ifneeded tablelist_tile 7.6 \ [list source [file join $dir tablelist_tile.tcl]] # # Aliases: # package ifneeded Tablelist 7.6 \ [list package require -exact tablelist 7.6] package ifneeded Tablelist_tile 7.6 \ [list package require -exact tablelist_tile 7.6] # # Code common to all packages: # package ifneeded tablelist::common 7.6 \ [list source [file join $dir tablelistCommon.tcl]] |
Changes to modules/tablelist/scripts/tablelistBind.tcl.
︙ | ︙ | |||
2010 2011 2012 2013 2014 2015 2016 | # the mouse leaves the area obtained by trimming the scrollable part of a # tablelist widget's body text child on each side by (scaled) 4 px. It scrolls # the child up, down, left, or right, depending on where the mouse left that # area, and reschedules itself as an "after" command so that the child # continues to scroll until the mouse moves back into that area or no more # scrolling in that direction is possible. #------------------------------------------------------------------------------ | | | 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 | # the mouse leaves the area obtained by trimming the scrollable part of a # tablelist widget's body text child on each side by (scaled) 4 px. It scrolls # the child up, down, left, or right, depending on where the mouse left that # area, and reschedules itself as an "after" command so that the child # continues to scroll until the mouse moves back into that area or no more # scrolling in that direction is possible. #------------------------------------------------------------------------------ proc tablelist::autoScan2 {win margin seqNum} { if {[destroyed $win]} { return "" } if {$seqNum < 10} { set units 1 } elseif {$seqNum < 20} { |
︙ | ︙ | |||
2032 2033 2034 2035 2036 2037 2038 | } upvar ::tablelist::ns${win}::data data set w [::$win bodypath] set x [expr {$data(x) - [winfo x $w]}] ;# relative to the body set y [expr {$data(y) - [winfo y $w]}] ;# relative to the body | < | | | | | 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 | } upvar ::tablelist::ns${win}::data data set w [::$win bodypath] set x [expr {$data(x) - [winfo x $w]}] ;# relative to the body set y [expr {$data(y) - [winfo y $w]}] ;# relative to the body set minX [expr {[minScrollableX $win] + $margin}] ;# relative to the body set minY $margin ;# relative to the body set maxX [expr {[winfo width $w] - 1 - $margin}] ;# relative to the body set maxY [expr {[winfo height $w] - 1 - $margin}] ;# relative to the body if {$y > $maxY} { foreach {first last} [::$win yview] {} if {$last == 1} { return "" } else { ::$win yview scroll $units units |
︙ | ︙ | |||
2081 2082 2083 2084 2085 2086 2087 | set ms 500 } } else { return "" } incr seqNum | > | > | 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 | set ms 500 } } else { return "" } incr seqNum set data(afterId2) \ [after $ms [list tablelist::autoScan2 $win $margin $seqNum]] update } #------------------------------------------------------------------------------ # tablelist::motion # # This procedure is called to process mouse motion events in the body of a # tablelist widget or in one of its separators, while button 1 is down. It may |
︙ | ︙ | |||
2313 2314 2315 2316 2317 2318 2319 2320 | unset data(targetRow) unset data(targetChildIdx) $w configure -cursor $data(-cursor) place forget $data(rowGap) } else { $w configure -cursor $data(-movecursor) if {$data(targetChildIdx) == 0} { | > | > < | | 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 | unset data(targetRow) unset data(targetChildIdx) $w configure -cursor $data(-cursor) place forget $data(rowGap) } else { $w configure -cursor $data(-movecursor) variable scaled4 if {$data(targetChildIdx) == 0} { place $data(rowGap) -in $w -anchor w -y $gapY -height $lineHeight \ -width $scaled4 } else { place $data(rowGap) -in $w -anchor w -y $gapY -height $scaled4 \ -width [winfo width $data(hdrTxtFrm)] } raise $data(rowGap) } } #------------------------------------------------------------------------------ |
︙ | ︙ |
Changes to modules/tablelist/scripts/tablelistConfig.tcl.
︙ | ︙ | |||
2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 | set snipSide "" } adjustMlElem $win list auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) set msgScript [list ::tablelist::displayText $win $key \ $col [join $list "\n"] $cellFont \ $maxTextWidth $alignment] } else { adjustElem $win text auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) } if {$inBody && $row == $data(editRow) && $col == $data(editCol)} { | > | 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 | set snipSide "" } adjustMlElem $win list auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) set msgScript [list ::tablelist::displayText $win $key \ $col [join $list "\n"] $cellFont \ $maxTextWidth $alignment] set msgScript [string map {"%" "%%"} $msgScript] } else { adjustElem $win text auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) } if {$inBody && $row == $data(editRow) && $col == $data(editCol)} { |
︙ | ︙ | |||
2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 | set snipSide "" } adjustMlElem $win list auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) set msgScript [list ::tablelist::displayText $win $key \ $col [join $list "\n"] $cellFont \ $maxTextWidth $alignment] } else { adjustElem $win text auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) } if {!$inBody || $row != $data(editRow) || $col != $data(editCol)} { | > | 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 | set snipSide "" } adjustMlElem $win list auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) set msgScript [list ::tablelist::displayText $win $key \ $col [join $list "\n"] $cellFont \ $maxTextWidth $alignment] set msgScript [string map {"%" "%%"} $msgScript] } else { adjustElem $win text auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) } if {!$inBody || $row != $data(editRow) || $col != $data(editCol)} { |
︙ | ︙ | |||
3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 | set snipSide "" } adjustMlElem $win list auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) set msgScript [list ::tablelist::displayText $win $key \ $col [join $list "\n"] $cellFont \ $maxTextWidth $alignment] } else { adjustElem $win text auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) } if {!$data($col-hide)} { if {$inBody && | > | 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 | set snipSide "" } adjustMlElem $win list auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) set msgScript [list ::tablelist::displayText $win $key \ $col [join $list "\n"] $cellFont \ $maxTextWidth $alignment] set msgScript [string map {"%" "%%"} $msgScript] } else { adjustElem $win text auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) } if {!$data($col-hide)} { if {$inBody && |
︙ | ︙ | |||
3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 | set snipSide "" } adjustMlElem $win list auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) set msgScript [list ::tablelist::displayText $win $key \ $col [join $list "\n"] $cellFont \ $maxTextWidth $alignment] } else { adjustElem $win text auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) } if {!$inBody || $row != $data(editRow) || $col != $data(editCol)} { # | > | 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 | set snipSide "" } adjustMlElem $win list auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) set msgScript [list ::tablelist::displayText $win $key \ $col [join $list "\n"] $cellFont \ $maxTextWidth $alignment] set msgScript [string map {"%" "%%"} $msgScript] } else { adjustElem $win text auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) } if {!$inBody || $row != $data(editRow) || $col != $data(editCol)} { # |
︙ | ︙ | |||
3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 | set snipSide "" } adjustMlElem $win list auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) set msgScript [list ::tablelist::displayText $win $key \ $col [join $list "\n"] $cellFont \ $maxTextWidth $alignment] } else { adjustElem $win text auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) } if {$row != $data(editRow) || $col != $data(editCol)} { # | > | 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 | set snipSide "" } adjustMlElem $win list auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) set msgScript [list ::tablelist::displayText $win $key \ $col [join $list "\n"] $cellFont \ $maxTextWidth $alignment] set msgScript [string map {"%" "%%"} $msgScript] } else { adjustElem $win text auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) } if {$row != $data(editRow) || $col != $data(editCol)} { # |
︙ | ︙ | |||
3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 | set snipSide "" } adjustMlElem $win list auxWidth indentWidth $cellFont \ $pixels $snipSide $data(-snipstring) set msgScript [list ::tablelist::displayText $win $key $row \ [join $list "\n"] $cellFont \ $maxTextWidth $alignment] } else { adjustElem $win text auxWidth indentWidth $cellFont \ $pixels $snipSide $data(-snipstring) } # # Update the text widget's content between the two tabs | > | 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 | set snipSide "" } adjustMlElem $win list auxWidth indentWidth $cellFont \ $pixels $snipSide $data(-snipstring) set msgScript [list ::tablelist::displayText $win $key $row \ [join $list "\n"] $cellFont \ $maxTextWidth $alignment] set msgScript [string map {"%" "%%"} $msgScript] } else { adjustElem $win text auxWidth indentWidth $cellFont \ $pixels $snipSide $data(-snipstring) } # # Update the text widget's content between the two tabs |
︙ | ︙ | |||
3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 | set snipSide "" } adjustMlElem $win list auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) set msgScript [list ::tablelist::displayText $win $key \ $col [join $list "\n"] $cellFont \ $maxTextWidth $alignment] } else { adjustElem $win text auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) } if {!$inBody || $row != $data(editRow) || $col != $data(editCol)} { # | > | 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 | set snipSide "" } adjustMlElem $win list auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) set msgScript [list ::tablelist::displayText $win $key \ $col [join $list "\n"] $cellFont \ $maxTextWidth $alignment] set msgScript [string map {"%" "%%"} $msgScript] } else { adjustElem $win text auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) } if {!$inBody || $row != $data(editRow) || $col != $data(editCol)} { # |
︙ | ︙ | |||
3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 | set snipSide "" } adjustMlElem $win list auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) set msgScript [list ::tablelist::displayText $win $key \ $col [join $list "\n"] $cellFont \ $maxTextWidth $alignment] } else { adjustElem $win text auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) } if {!$inBody || $row != $data(editRow) || $col != $data(editCol)} { # | > | 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 | set snipSide "" } adjustMlElem $win list auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) set msgScript [list ::tablelist::displayText $win $key \ $col [join $list "\n"] $cellFont \ $maxTextWidth $alignment] set msgScript [string map {"%" "%%"} $msgScript] } else { adjustElem $win text auxWidth indentWidth $cellFont \ $workPixels $snipSide $data(-snipstring) } if {!$inBody || $row != $data(editRow) || $col != $data(editCol)} { # |
︙ | ︙ |
Changes to modules/tablelist/scripts/tablelistEdit.tcl.
︙ | ︙ | |||
1203 1204 1205 1206 1207 1208 1209 | # menubutton's text. #------------------------------------------------------------------------------ proc tablelist::postMenuCmd w { set menu [$w cget -menu] variable winSys if {$winSys eq "x11"} { set last [$menu index last] | | | 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 | # menubutton's text. #------------------------------------------------------------------------------ proc tablelist::postMenuCmd w { set menu [$w cget -menu] variable winSys if {$winSys eq "x11"} { set last [$menu index last] if {$last ne "" && $last ne "none"} { set text [$w cget -text] for {set idx 0} {$idx <= $last} {incr idx} { if {[$menu type $idx] eq "radiobutton" && [$menu entrycget $idx -value] eq $text} { $menu activate $idx } } |
︙ | ︙ | |||
1802 1803 1804 1805 1806 1807 1808 | $editWin($name-putValueCmd)] } } if {$isMenubtn} { set menu [$w cget -menu] set last [$menu index last] | | | 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 | $editWin($name-putValueCmd)] } } if {$isMenubtn} { set menu [$w cget -menu] set last [$menu index last] if {$last ne "" && $last ne "none"} { set varName [$w cget -textvariable] for {set idx 0} {$idx <= $last} {incr idx} { if {[$menu type $idx] eq "radiobutton"} { $menu entryconfigure $idx -variable $varName } } } |
︙ | ︙ | |||
2280 2281 2282 2283 2284 2285 2286 | } } Menubutton - TMenubutton { set menu [$w cget -menu] set last [$menu index last] | | | 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 | } } Menubutton - TMenubutton { set menu [$w cget -menu] set last [$menu index last] if {$last ne "" && $last ne "none"} { for {set idx 0} {$idx <= $last} {incr idx} { if {[regexp {^(command|checkbutton|radiobutton)$} \ [$menu type $idx]]} { set cmd [$menu entrycget $idx -command] $menu entryconfigure $idx -command [format { eval [list %s] after 0 [list %s finishediting] |
︙ | ︙ | |||
2495 2496 2497 2498 2499 2500 2501 | } if {[string match "*Menubutton" [winfo class $w]]} { set menu [$w cget -menu] set last [$menu index last] set types {} | | | 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 | } if {[string match "*Menubutton" [winfo class $w]]} { set menu [$w cget -menu] set last [$menu index last] set types {} if {$last ne "" && $last ne "none"} { for {set idx 0} {$idx <= $last} {incr idx} { lappend types [$menu type $idx] foreach configSet [$menu entryconfigure $idx] { set default [lindex $configSet 3] set current [lindex $configSet 4] if {$default ne $current} { set opt [lindex $configSet 0] |
︙ | ︙ |
Changes to modules/tablelist/scripts/tablelistSort.tcl.
1 2 3 4 5 6 7 8 9 | #============================================================================== # Contains the implementation of the tablelist::sortByColumn and # tablelist::addToSortColumns commands, as well as of the tablelist sort, # sortbycolumn, and sortbycolumnlist subcommands. # # Structure of the module: # - Public procedures related to sorting # - Private procedures implementing the sorting # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #============================================================================== # Contains the implementation of the tablelist::sortByColumn and # tablelist::addToSortColumns commands, as well as of the tablelist sort, # sortbycolumn, and sortbycolumnlist subcommands. # # Structure of the module: # - Public procedures related to sorting # - Private procedures implementing the sorting # # Copyright (c) 2000-2025 Csaba Nemethi (E-mail: [email protected]) #============================================================================== # # Public procedures related to sorting # ==================================== # |
︙ | ︙ | |||
487 488 489 490 491 492 493 494 495 496 497 498 499 500 | # # Embed the message widgets displaying multiline elements # foreach {col text font pixels alignment} $multilineData { findTabs $win $w $line $col $col tabIdx1 tabIdx2 set msgScript [list ::tablelist::displayText $win $key \ $col $text $font $pixels $alignment] $w window create $tabIdx2 -pady $padY -create $msgScript $w tag add elidedWin $tabIdx2 } } else { foreach text $dispItem \ colFont $data(colFontList) \ | > | 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 | # # Embed the message widgets displaying multiline elements # foreach {col text font pixels alignment} $multilineData { findTabs $win $w $line $col $col tabIdx1 tabIdx2 set msgScript [list ::tablelist::displayText $win $key \ $col $text $font $pixels $alignment] set msgScript [string map {"%" "%%"} $msgScript] $w window create $tabIdx2 -pady $padY -create $msgScript $w tag add elidedWin $tabIdx2 } } else { foreach text $dispItem \ colFont $data(colFontList) \ |
︙ | ︙ |
Changes to modules/tablelist/scripts/tablelistUtil.tcl.
︙ | ︙ | |||
1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 | set padY [expr {[$w cget -spacing1] == 0}] if {[catch {$w window cget $index1 -create} script] == 0 && [string match "::tablelist::displayText*" $script]} { $w window configure $index1 -pady $padY -create $msgScript set path [lindex [$w dump -window $index1] 1] if {$path ne "" && [winfo class $path] eq "Message"} { eval $msgScript } } else { if {!$areEqual} { $w delete $index1 } $w window create $index1 -pady $padY -create $msgScript | > | 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 | set padY [expr {[$w cget -spacing1] == 0}] if {[catch {$w window cget $index1 -create} script] == 0 && [string match "::tablelist::displayText*" $script]} { $w window configure $index1 -pady $padY -create $msgScript set path [lindex [$w dump -window $index1] 1] if {$path ne "" && [winfo class $path] eq "Message"} { set msgScript [string map {"%%" "%"} $msgScript] eval $msgScript } } else { if {!$areEqual} { $w delete $index1 } $w window create $index1 -pady $padY -create $msgScript |
︙ | ︙ | |||
2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 | set padY [expr {[$w cget -spacing1] == 0}] if {[catch {$w window cget $msgIdx -create} script] == 0 && [string match "::tablelist::displayText*" $script]} { $w window configure $msgIdx -pady $padY -create $msgScript set path [lindex [$w dump -window $msgIdx] 1] if {$path ne "" && [winfo class $path] eq "Message"} { eval $msgScript } } elseif {$alignment eq "right"} { $w window create index2Mark-1$pu -pady $padY -create $msgScript $w tag add elidedWin index2Mark-1$pu $w delete $index1 index2Mark-2$pu } else { | > | 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 | set padY [expr {[$w cget -spacing1] == 0}] if {[catch {$w window cget $msgIdx -create} script] == 0 && [string match "::tablelist::displayText*" $script]} { $w window configure $msgIdx -pady $padY -create $msgScript set path [lindex [$w dump -window $msgIdx] 1] if {$path ne "" && [winfo class $path] eq "Message"} { set msgScript [string map {"%%" "%"} $msgScript] eval $msgScript } } elseif {$alignment eq "right"} { $w window create index2Mark-1$pu -pady $padY -create $msgScript $w tag add elidedWin index2Mark-1$pu $w delete $index1 index2Mark-2$pu } else { |
︙ | ︙ | |||
2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 | if {$data($col-wrap)} { set snipSide "" } adjustMlElem $win list auxWidth indentWidth $cellFont $pixels \ $snipSide $snipStr set msgScript [list ::tablelist::displayText $win $key $col \ [join $list "\n"] $cellFont $maxTextWidth $alignment] } else { adjustElem $win text auxWidth indentWidth $cellFont $pixels \ $snipSide $snipStr } # # Insert the text and the auxiliary object (if any) just before the newline | > | 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 | if {$data($col-wrap)} { set snipSide "" } adjustMlElem $win list auxWidth indentWidth $cellFont $pixels \ $snipSide $snipStr set msgScript [list ::tablelist::displayText $win $key $col \ [join $list "\n"] $cellFont $maxTextWidth $alignment] set msgScript [string map {"%" "%%"} $msgScript] } else { adjustElem $win text auxWidth indentWidth $cellFont $pixels \ $snipSide $snipStr } # # Insert the text and the auxiliary object (if any) just before the newline |
︙ | ︙ | |||
4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 | # # Embed the message widgets displaying multiline elements # foreach {col text font pixels alignment} $multilineData { if {[findTabs $win $w $line $col $col tabIdx1 tabIdx2]} { set msgScript [list ::tablelist::displayText $win $key \ $col $text $font $pixels $alignment] $w window create $tabIdx2 -pady $padY -create $msgScript $w tag add elidedWin $tabIdx2 } } } else { foreach fmtCmdFlag $data(fmtCmdFlagList) \ | > | 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 | # # Embed the message widgets displaying multiline elements # foreach {col text font pixels alignment} $multilineData { if {[findTabs $win $w $line $col $col tabIdx1 tabIdx2]} { set msgScript [list ::tablelist::displayText $win $key \ $col $text $font $pixels $alignment] set msgScript [string map {"%" "%%"} $msgScript] $w window create $tabIdx2 -pady $padY -create $msgScript $w tag add elidedWin $tabIdx2 } } } else { foreach fmtCmdFlag $data(fmtCmdFlagList) \ |
︙ | ︙ | |||
5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 | if {$data($col-wrap)} { set snipSide2 "" } adjustMlElem $win list auxWidth indentWidth $cellFont \ $pixels $snipSide2 $snipStr set msgScript [list ::tablelist::displayText $win $key $col \ [join $list "\n"] $cellFont $maxTextWidth $alignment] } else { adjustElem $win text auxWidth indentWidth $cellFont \ $pixels $snipSide $snipStr } # # Update the text widget's content between the two tabs | > | 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 | if {$data($col-wrap)} { set snipSide2 "" } adjustMlElem $win list auxWidth indentWidth $cellFont \ $pixels $snipSide2 $snipStr set msgScript [list ::tablelist::displayText $win $key $col \ [join $list "\n"] $cellFont $maxTextWidth $alignment] set msgScript [string map {"%" "%%"} $msgScript] } else { adjustElem $win text auxWidth indentWidth $cellFont \ $pixels $snipSide $snipStr } # # Update the text widget's content between the two tabs |
︙ | ︙ | |||
5454 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 | if {$data($col-wrap)} { set snipSide2 "" } adjustMlElem $win list auxWidth indentWidth $cellFont \ $pixels $snipSide2 $snipStr set msgScript [list ::tablelist::displayText $win $key $col \ [join $list "\n"] $cellFont $maxTextWidth $alignment] } else { adjustElem $win text auxWidth indentWidth $cellFont \ $pixels $snipSide $snipStr } # # Update the text widget's content between the two tabs | > | 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 | if {$data($col-wrap)} { set snipSide2 "" } adjustMlElem $win list auxWidth indentWidth $cellFont \ $pixels $snipSide2 $snipStr set msgScript [list ::tablelist::displayText $win $key $col \ [join $list "\n"] $cellFont $maxTextWidth $alignment] set msgScript [string map {"%" "%%"} $msgScript] } else { adjustElem $win text auxWidth indentWidth $cellFont \ $pixels $snipSide $snipStr } # # Update the text widget's content between the two tabs |
︙ | ︙ |
Changes to modules/tablelist/scripts/tablelistWidget.tcl.
︙ | ︙ | |||
924 925 926 927 928 929 930 | set data(bodyTag) body$win set data(headerTag) header$win set data(labelTag) label$win set data(editwinTag) editwin$win set data(body) $win.body set data(bodyFrm) $data(body).f set data(bodyFrmEd) $data(bodyFrm).e | < > | 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 | set data(bodyTag) body$win set data(headerTag) header$win set data(labelTag) label$win set data(editwinTag) editwin$win set data(body) $win.body set data(bodyFrm) $data(body).f set data(bodyFrmEd) $data(bodyFrm).e set data(hdr) $win.hdr set data(hdrTxt) $data(hdr).t set data(hdrTxtFrm) $data(hdrTxt).f set data(hdrTxtFrmFrm) $data(hdrTxtFrm).f ;# for the aqua theme set data(hdrTxtFrmCanv) $data(hdrTxtFrm).c set data(hdrTxtFrmLbl) $data(hdrTxtFrm).l set data(hdrFrm) $data(hdr).f set data(hdrFrmFrm) $data(hdrFrm).f ;# for the aqua theme set data(hdrFrmLbl) $data(hdrFrm).l set data(colGap) $data(hdr).g set data(rowGap) $win.g set data(lb) $win.lb set data(vsep) $win.vsep set data(hsep) $win.hsep set data(topWin) [winfo toplevel $win] # # Get unique names for the north-east and south-west corner |
︙ | ︙ | |||
1350 1351 1352 1353 1354 1355 1356 | set wY [winfo y $w] incr x -$wX ;# relative to the body incr y -$wY ;# relative to the body incr prevX -$wX ;# relative to the body incr prevY -$wY ;# relative to the body variable scaled4 | > | | | | | | 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 | set wY [winfo y $w] incr x -$wX ;# relative to the body incr y -$wY ;# relative to the body incr prevX -$wX ;# relative to the body incr prevY -$wY ;# relative to the body variable scaled4 set margin [expr {3 * $scaled4}] set minX [expr {[minScrollableX $win] + $margin}] ;# relative to the body set minY $margin ;# relative to the body set maxX [expr {[winfo width $w] - 1 - $margin}] ;# relative to the body set maxY [expr {[winfo height $w] - 1 - $margin}] ;# relative to the body if {($y > $maxY && $prevY <= $maxY) || ($y < $minY && $prevY >= $minY) || ($x > $maxX && $prevX <= $maxX) || ($x < $minX && $prevX >= $minX)} { autoScan2 $win $margin 0 } elseif {($y <= $maxY && $prevY > $maxY) || ($y >= $minY && $prevY < $minY) || ($x <= $maxX && $prevX > $maxX) || ($x >= $minX && $prevX < $minX)} { after cancel $data(afterId2) } |
︙ | ︙ | |||
2372 2373 2374 2375 2376 2377 2378 | foreach item $data(itemList) { set key [lindex $item end] lappend parentList [keyToRow $win $data($key-parent)] lappend itemList [lrange $item 0 $lastCol] } set str "" | | | | 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 | foreach item $data(itemList) { set key [lindex $item end] lappend parentList [keyToRow $win $data($key-parent)] lappend itemList [lrange $item 0 $lastCol] } set str "" append str [string map {"\n" "\\n"} [::$win cget -columntitles]] \n append str [list [::$win sortcolumnlist] [::$win sortorderlist]] \n append str [string map {"\n" "\\n"} $hdr_itemList] \n append str $parentList \n append str $itemList return $str } #------------------------------------------------------------------------------ # tablelist::editcellSubCmd |
︙ | ︙ | |||
4767 4768 4769 4770 4771 4772 4773 | #------------------------------------------------------------------------------ proc tablelist::hidetargetmarkSubCmd {win argList} { if {[llength $argList] != 0} { mwutil::wrongNumArgs "$win hidetargetmark" } upvar ::tablelist::ns${win}::data data | > > | > > > > > | 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 | #------------------------------------------------------------------------------ proc tablelist::hidetargetmarkSubCmd {win argList} { if {[llength $argList] != 0} { mwutil::wrongNumArgs "$win hidetargetmark" } upvar ::tablelist::ns${win}::data data if {[winfo ismapped $data(rowGap)]} { lower $data(rowGap) place forget $data(rowGap) place $data(rowGap) -in $data(body) -anchor w -height 1 -width 1 tkwait visibility $data(rowGap) ;# instead of invoking update } return "" } #------------------------------------------------------------------------------ # tablelist::imagelabelpathSubCmd #------------------------------------------------------------------------------ proc tablelist::imagelabelpathSubCmd {win argList} { |
︙ | ︙ | |||
5247 5248 5249 5250 5251 5252 5253 | } else { variable expCollOpts set opt [mwutil::fullOpt "option" [lindex $argList 1] $expCollOpts] } set idx [string first \n $str] set line [string range $str 0 [expr {$idx - 1}]] | | | | 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283 | } else { variable expCollOpts set opt [mwutil::fullOpt "option" [lindex $argList 1] $expCollOpts] } set idx [string first \n $str] set line [string range $str 0 [expr {$idx - 1}]] set columnTitles [string map {"\\n" "\n"} $line] if {$columnTitles ne [::$win cget -columntitles]} { return -code error \ "the specified string is not compatible with this tablelist widget" } set startIdx [incr idx] set idx [string first \n $str $startIdx] set line [string range $str $startIdx [expr {$idx - 1}]] foreach {sortColumnList sortOrderList} $line {} set startIdx [incr idx] set idx [string first \n $str $startIdx] set line [string range $str $startIdx [expr {$idx - 1}]] set hdr_itemList [string map {"\\n" "\n"} $line] set startIdx [incr idx] set idx [string first \n $str $startIdx] set parentList [string range $str $startIdx [expr {$idx - 1}]] set itemList [string range $str [incr idx] end] |
︙ | ︙ | |||
6014 6015 6016 6017 6018 6019 6020 6021 6022 6023 6024 6025 6026 6027 6028 | synchronize $win displayItems $win variable targetOpts set opt [mwutil::fullOpt "option" [lindex $argList 0] $targetOpts] set index [lindex $argList 1] upvar ::tablelist::ns${win}::data data set w $data(body) switch $opt { before { set row [rowIndex $win $index 1] if {$data(itemCount) == 0} { set y 0 } elseif {$row >= $data(itemCount)} { | > > | 6022 6023 6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 | synchronize $win displayItems $win variable targetOpts set opt [mwutil::fullOpt "option" [lindex $argList 0] $targetOpts] set index [lindex $argList 1] upvar ::tablelist::ns${win}::data data place forget $data(rowGap) set w $data(body) variable scaled4 switch $opt { before { set row [rowIndex $win $index 1] if {$data(itemCount) == 0} { set y 0 } elseif {$row >= $data(itemCount)} { |
︙ | ︙ | |||
6042 6043 6044 6045 6046 6047 6048 | if {[llength $dlineinfo] == 0} { return "" } set y [lindex $dlineinfo 1] } | < | | > > > > > > > | 6052 6053 6054 6055 6056 6057 6058 6059 6060 6061 6062 6063 6064 6065 6066 6067 6068 6069 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 6080 6081 6082 6083 6084 6085 6086 6087 6088 6089 6090 6091 6092 | if {[llength $dlineinfo] == 0} { return "" } set y [lindex $dlineinfo 1] } place $data(rowGap) -in $w -anchor w -y $y -height $scaled4 \ -width [winfo width $data(hdrTxtFrm)] } inside { set row [rowIndex $win $index 0 1] set dlineinfo [$w dlineinfo [expr {$row + 1}].0] if {[llength $dlineinfo] == 0} { return "" } set lineY [lindex $dlineinfo 1] set lineHeight [lindex $dlineinfo 3] set y [expr {$lineY + $lineHeight/2}] place $data(rowGap) -in $w -anchor w -y $y -height $lineHeight \ -width $scaled4 } } raise $data(rowGap) variable winSys if {$winSys eq "aqua"} { update idletasks } else { tkwait visibility $data(rowGap) ;# instead of invoking update } return "" } #------------------------------------------------------------------------------ # tablelist::sizeSubCmd #------------------------------------------------------------------------------ proc tablelist::sizeSubCmd {win argList} { |
︙ | ︙ | |||
8073 8074 8075 8076 8077 8078 8079 8080 8081 8082 8083 8084 8085 8086 | # # Embed the message widgets displaying multiline elements # foreach {line key col text font pixels alignment} $multilineData { findTabs $win $w $line $col $col tabIdx1 tabIdx2 set msgScript [list ::tablelist::displayText $win $key $col $text \ $font $pixels $alignment] $w window create $tabIdx2 -pady $padY -create $msgScript } # # Check whether the width of any column has changed # set colWidthsChanged 0 | > | 8089 8090 8091 8092 8093 8094 8095 8096 8097 8098 8099 8100 8101 8102 8103 | # # Embed the message widgets displaying multiline elements # foreach {line key col text font pixels alignment} $multilineData { findTabs $win $w $line $col $col tabIdx1 tabIdx2 set msgScript [list ::tablelist::displayText $win $key $col $text \ $font $pixels $alignment] set msgScript [string map {"%" "%%"} $msgScript] $w window create $tabIdx2 -pady $padY -create $msgScript } # # Check whether the width of any column has changed # set colWidthsChanged 0 |
︙ | ︙ | |||
8348 8349 8350 8351 8352 8353 8354 8355 8356 8357 8358 8359 8360 8361 | # # Embed the message widgets displaying multiline elements # foreach {line key col text font pixels alignment} $multilineData { findTabs $win $w $line $col $col tabIdx1 tabIdx2 set msgScript [list ::tablelist::displayText $win $key $col $text \ $font $pixels $alignment] $w window create $tabIdx2 -pady $padY -create $msgScript $w tag add elidedWin $tabIdx2 } } # # Adjust the heights of the body text widget | > | 8365 8366 8367 8368 8369 8370 8371 8372 8373 8374 8375 8376 8377 8378 8379 | # # Embed the message widgets displaying multiline elements # foreach {line key col text font pixels alignment} $multilineData { findTabs $win $w $line $col $col tabIdx1 tabIdx2 set msgScript [list ::tablelist::displayText $win $key $col $text \ $font $pixels $alignment] set msgScript [string map {"%" "%%"} $msgScript] $w window create $tabIdx2 -pady $padY -create $msgScript $w tag add elidedWin $tabIdx2 } } # # Adjust the heights of the body text widget |
︙ | ︙ |
Changes to modules/tablelist/scripts/utils/mwutil.tcl.
︙ | ︙ | |||
17 18 19 20 21 22 23 | # ======================== # namespace eval mwutil { # # Public variables: # | | | | 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 | # ======================== # namespace eval mwutil { # # Public variables: # variable version 2.25 variable library [file dirname [file normalize [info script]]] # # Public procedures: # namespace export wrongNumArgs getAncestorByClass convEventFields \ defineKeyNav processTraversal focusNext focusPrev \ configureWidget fullConfigOpt fullOpt enumOpts \ configureSubCmd attribSubCmdEx attribSubCmd \ hasattribSubCmdEx hasattribSubCmd unsetattribSubCmdEx \ unsetattribSubCmd getScrollInfo getScrollInfo2 \ isScrollable scrollByUnits genMouseWheelEvent \ containsPointer hasFocus windowingSystem currentTheme \ isColorLight normalizeColor parsePadding # # Make modified versions of the procedures tk_focusNext and # tk_focusPrev, to be invoked in the processTraversal command # proc makeFocusProcs {} { # |
︙ | ︙ | |||
703 704 705 706 707 708 709 710 711 712 713 714 715 716 | return $::ttk::currentTheme } elseif {[info exists ::tile::currentTheme]} { return $::tile::currentTheme } else { return "" } } #------------------------------------------------------------------------------ # mwutil::normalizeColor # # Returns the representation of a given color in the form "#RRGGBB". #------------------------------------------------------------------------------ proc mwutil::normalizeColor color { | > > > > > > > > > > > > > | 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 | return $::ttk::currentTheme } elseif {[info exists ::tile::currentTheme]} { return $::tile::currentTheme } else { return "" } } #------------------------------------------------------------------------------ # mwutil::isColorLight # # A quick & dirty method to check whether a given color can be classified as # light. Inspired by article "Support Dark and Light themes in Win32 apps" # (see https://learn.microsoft.com/en-us/windows/apps/desktop/modernize/ui/ # apply-windows-themes). #------------------------------------------------------------------------------ proc mwutil::isColorLight color { foreach {r g b} [winfo rgb . $color] {} return [expr {5 * ($g >> 8) + 2 * ($r >> 8) + ($b >> 8) > 8 * 128}] } #------------------------------------------------------------------------------ # mwutil::normalizeColor # # Returns the representation of a given color in the form "#RRGGBB". #------------------------------------------------------------------------------ proc mwutil::normalizeColor color { |
︙ | ︙ |
Changes to modules/tablelist/scripts/utils/pkgIndex.tcl.
1 2 3 4 5 6 | #============================================================================== # mwutil, scaleutil, and scaleutilmisc package index file. # # Copyright (c) 2020-2025 Csaba Nemethi (E-mail: [email protected]) #============================================================================== | | | 1 2 3 4 5 6 7 8 9 10 11 | #============================================================================== # mwutil, scaleutil, and scaleutilmisc package index file. # # Copyright (c) 2020-2025 Csaba Nemethi (E-mail: [email protected]) #============================================================================== package ifneeded mwutil 2.25 [list source [file join $dir mwutil.tcl]] package ifneeded scaleutil 1.15 [list source [file join $dir scaleutil.tcl]] package ifneeded themepatch 1.8 [list source [file join $dir themepatch.tcl]] package ifneeded scaleutilmisc 1.7.1 \ [list source [file join $dir scaleutilMisc.tcl]] |
Changes to modules/tablelist/tablelist.tcl.
1 2 3 4 5 6 | #============================================================================== # Main Tablelist package module. # # Copyright (c) 2000-2025 Csaba Nemethi (E-mail: [email protected]) #============================================================================== | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 | #============================================================================== # Main Tablelist package module. # # Copyright (c) 2000-2025 Csaba Nemethi (E-mail: [email protected]) #============================================================================== package require -exact tablelist::common 7.6 package provide tablelist $tablelist::version package provide Tablelist $tablelist::version tablelist::useTile 0 tablelist::createBindings |
Changes to modules/tablelist/tablelistCommon.tcl.
︙ | ︙ | |||
8 9 10 11 12 13 14 | proc - {} { return [expr {$::tcl_version >= 8.5 ? "-" : ""}] } package require Tk 8.4[-] # # Public variables: # | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | proc - {} { return [expr {$::tcl_version >= 8.5 ? "-" : ""}] } package require Tk 8.4[-] # # Public variables: # variable version 7.6 variable library [file dirname [file normalize [info script]]] # # Creates a new tablelist widget: # namespace export tablelist |
︙ | ︙ | |||
92 93 94 95 96 97 98 | # # Load the packages mwutil, scaleutil, and scaleutilmisc from the directory # "scripts/utils". Take into account that mwutil is also included in Mentry, # Scrollutil, and Tsw, and scaleutil is also included in Scrollutil and Tsw. # proc tablelist::loadUtils {} { if {[catch {package present mwutil} version] == 0 && | | | | 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, # Scrollutil, and Tsw, and scaleutil is also included in Scrollutil and Tsw. # proc tablelist::loadUtils {} { if {[catch {package present mwutil} version] == 0 && [package vcompare $version 2.25] < 0} { package forget mwutil } package require mwutil 2.25[-] if {[catch {package present scaleutil} version] == 0 && [package vcompare $version 1.15] < 0} { package forget scaleutil } package require scaleutil 1.15[-] package require scaleutilmisc 1.7.1[-] } tablelist::loadUtils |
Changes to modules/tablelist/tablelist_tile.tcl.
1 2 3 4 5 6 | #============================================================================== # Main Tablelist_tile package module. # # Copyright (c) 2000-2025 Csaba Nemethi (E-mail: [email protected]) #============================================================================== | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #============================================================================== # Main Tablelist_tile package module. # # Copyright (c) 2000-2025 Csaba Nemethi (E-mail: [email protected]) #============================================================================== package require -exact tablelist::common 7.6 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 |
︙ | ︙ |