ANNOUNCE: Multi-column listbox packege Tablelist 4.0
Available news archives: comp.lang.tcl - comp.lang.python - comp.security.firewalls - sci.crypt - comp.lang.php - comp.lang.javascript
Google
 
Web news.hping.org


comp.lang.tcl archive

ANNOUNCE: Multi-column listbox packege Tablelist 4.0

From: Csaba Nemethi <csaba.nemethi@t-online.de>
Date: Sun Jun 05 2005 - 19:48:55 CEST

I am pleased to announce Version 4.0 of the multi-column listbox
package Tablelist.

What is new in Tablelist 4.0?
-----------------------------

1. Support for the tile entry, combobox, and checkbutton widgets for
     interactive cell editing (thanks to Miguel Bagnon, Andy Black,
     Adrian Chan, and Mark Garvey for their proposals and to Mats
     Bengtsson and Kevin Walzer for their support on the Macintosh).
     See the new reference page "tablelistTile.html" for details.

2. Support for tile-compatibility: By just specifying "package
     require Tablelist_tile" instead of "package require Tablelist", the
     tablelist widgets will have a modern theme-specific appearance
     (again, thanks to the above-mentioned Tablelist users for their
     suggestions and assistance). See the "How to use it?" and "More on
     Tablelist_tile" sections of the tutorial "tablelist.html" for
     details.

3. New demo script "tileWidgets.tcl", illustrating the use of tile
     widgets for interactive cell editing and of the Tablelist_tile
     package. All the other demo scripts are now provided in both a
     traditional and a tile-based version. See the "Tile-based demo
     scripts" section of the tutorial "tablelist.html" for an example
     and some screenshots.

4. The Tk checkbutton used for interactive cell editing is now a
     platform-specific checkbutton widget on Windows and the Macintosh
     (thanks to Mats Bengtsson for his help related to the Macintosh
     platform).

5. The "-editwindow" option is now available at cell level, too
     (thanks to Kenneth Green for his proposal).

6. New subcommand "togglevisibility" for hiding/unhiding several
     columns at a time (thanks to Stefan Finzel and Kai Morrich for
     their proposals).

7. Support for the new virtual event <<TablelistSelectionLost>>,
     generated when a tablelist widget having "-exportselection 1" loses
     the selection (thanks to Aldo Buratti for his proposal).

8. After sorting the items, the "most important" row is automatically
     brought into view (thanks to Kai Morrich for his valuable input).

9. Worked around a peculiarity of Tk for Windows, related to mouse
     events (thanks to Tore Morkemo and Mike Collins for their bug
     reports).

10. Worked around a problem related to the visibility of the up/down-
     arrow on Mac OS X Aqua (thanks to Kevin Walzer for his bug report).

11. Fixed a bug in the "seecell" subcommand, introduced in Tablelist
     version 3.7 (thanks to Stefan Finzel for his bug report).

12. Fixed a bug in the "rowconfigure" subcommand, introduced in the
     previous Tablelist release (thanks to Tore Morkemo for his bug
     report).

13. Eliminated the memory leak caused by incomplete cleanup on deleting
     rows with embedded windows (thanks to David Cockerell for his bug
     report).

14. Fixed a small timing-related bug in the "editcell" subcommand
     (thanks to Kenneth Green for his bug report).

15. Numerous further improvements and minor bug fixes (thanks to Greg
     Reynolds for his valuable input).

What is Tablelist?
------------------

Tablelist is a library package for Tcl/Tk version 8.0 or higher,
written in pure Tcl/Tk code. It contains:

   - the implementation of the "tablelist" mega-widget, including a
     general utility module for mega-widgets;
   - a demo script containing a useful procedure that displays the
     configuration options of an arbitrary widget in a tablelist and
     enables you to edit their values interactively;
   - a second demo script, implementing a simple widget browser based on
     a tablelist;
   - a third demo script, showing several ways to improve the appearance
     of a tablelist widget;
   - four further demo scripts, illustrating the interactive cell
     editing with the aid of various widgets from the Tk core and from
     the packages tile, BWidget, Iwidgets, combobox (by Bryan Oakley),
     and Mentry;
   - one further demo script, with a tablelist widget containing
     embedded windows;
   - tile-based counterparts of the above-mentioned demo scripts;
   - a tutorial in HTML format;
   - reference pages in HTML format.

A tablelist widget is a multi-column listbox. The width of each column
can be dynamic (i.e., just large enough to hold all its elements,
including the header) or static (specified in characters or pixels).
The columns are, per default, resizable. The alignment of each column
can be specified as "left", "right", or "center".

The columns, rows, and cells can be configured individually. Several
of the global and column-specific options refer to the headers,
implemented as label widgets. For instance, the "-labelcommand" option
specifies a Tcl command to be invoked when mouse button 1 is released
over a label. The most common value of this option is
"tablelist::sortByColumn", which sorts the items based on the
respective column.

Interactive editing of the elements of a tablelist widget can be
enabled for individual cells and for entire columns. A great variety
of widgets from the Tk core and from the packages tile, BWidget,
Iwidgets, combobox, and Mentry is supported for being used as embedded
edit window. In addition, a rich set of keyboard bindings is provided
for a comfortable navigation between the editable cells.

The Tcl command corresponding to a tablelist widget is very similar to
the one associated with a normal listbox. There are column-, row-, and
cell-specific counterparts of the "configure" and "cget" subcommands
("columnconfigure", "rowconfigure", "cellconfigure", ...). They can be
used, among others, to insert images into the cells and the header
labels, or to insert embedded windows into the cells. The "index",
"nearest", and "see" command options refer to the rows, but similar
subcommands are provided for the columns and cells ("columnindex",
"cellindex", ...). The items can be sorted with the "sort" and
"sortbycolumn" command options.

The bindings defined for the body of a tablelist widget make it behave
just like a normal listbox. This includes the support for the virtual
event <<ListboxSelect>> (which is equivalent to <<TablelistSelect>>).
In addition, version 2.3 or higher of the widget callback package Wcb
(written in pure Tcl/Tk code as well) can be used to define callbacks
for the "activate", "selection set", and "selection clear" commands,
and Wcb version 3.0 or higher also supports callbacks for the
"activatecell", "cellselection set", and "cellselection clear"
commands. The download location of Wcb is

     http://www.nemethi.de

How to get it?
--------------

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

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 "tablelist4.0.tar.gz":

     gunzip -c tablelist4.0.tar.gz | tar -xf -

This command will create a directory named "tablelist4.0", with the
subdirectories "demos", "doc", "images", and "scripts".

On Windows, use WinZip or some other program capable of unpacking the
distribution file "tablelist4_0.zip" into the directory "tablelist4.0",
with the subdirectories "demos", "doc", "images", and "scripts".

Note that the directory "images" and the file "tablelistEdit.tcl" in
the "scripts" directory are only needed for applications making use of
interactive cell editing. Similarly, the file "tablelistMove.tcl" in
the same directory is only needed for applications invoking the "move"
or "movecolumn" tablelist command.

Next, you should check the exact version number of your Tcl/Tk
distribution, given by the "tcl_patchLevel" and "tk_patchLevel"
variables. If you are using Tcl/Tk version 8.2.X, 8.3.0 - 8.3.2, or
8.4a1, then you should proceed as described in the "How to install it?"
section of the file "tablelist.html", located in the "doc" directory.

How to use it?
--------------

The Tablelist distribution provides two packages, called Tablelist and
Tablelist_tile. The main difference between the two is that
Tablelist_tile enables the tile-based, theme-specific appearance of
tablelist widgets; this package requires Tcl/Tk 8.4 or higher and tile
0.6 or higher. It is not possible to use both packages in one and the
same application, because both are implemented in the same "tablelist"
namespace and provide identical commands.

To be able to use the commands and variables implemented in the package
Tablelist, your scripts must contain one of the lines

     package require Tablelist
     package require tablelist

Likewise, to be able to use the commands and variables implemented in
the package Tablelist_tile, your scripts must contain one of the lines

     package require Tablelist_tile
     package require tablelist_tile

Since the packagse Tablelist and Tablelist_tile are implemented in the
namespace "tablelist", you must either import the procedures you need,
or use qualified names like "tablelist::tablelist".

For a detailed description of the commands and variables provided by
Tablelist and of the examples contained in the "demos" directory, see
the tutorial "tablelist.html" and the reference pages, all located in
the "doc" directory.

-- 
Csaba Nemethi   http://www.nemethi.de   mailto:csaba.nemethi@t-online.de
Received on Thu Sep 29 16:11:55 2005