Noumena Corporation

Whitmore Lake

These are a collection of tools and packages developed to help code Tcl applications faster and easier.

Some functionality has since been duplicated in other places with other tools.

A tree display widget
An enhanced version of D. Richard Hipp's tree megawidget.
This widget is an enhancement of D. Richard Hipp's tree megawidget.

The modifications include:

  • Namespace and package support
  • Faster tree building (particularly for large trees)
  • Options to control how the widget behaves
    Can open a directory with a double click (not single) on text, icon, or [+]
    Highlights lines blue when the cursor is above them.
    Alternate color instead of blue
    -bind script
    Bind a script to a line in the tree. The binding is to a single left button click.
  • Options to modify how the tree appears
    If 1, color every other line (graybar/greenbar pattern).
    If set, this is the color to use for the gray lines.
    -text label
    Display a label instead of the node name.

Get tree.zip: (9257 bytes)

Sample Tcl Extension
A sample Tcl extension to demonstrate techniques.
This sample Tcl Extension is a dummy extension that provides examples of passing data and status between the Tcl interpreter and the C functions.

The code is commented and described in detail in my books.

Get sampleExtension.zip: (24884 bytes)

Tcl html widget
A pure Tcl html display widget
htmllib.tcl. This script was written by Steve Uhler while he was with Sun Labs. It's a pure Tcl html display package that is used in TclTutor, htmlview.tcl and TclPoint.

This version supports the Tcl/Tk 8.0 and newer Font conventions and simple tables.

Get htmllib-rel_0_3_4.zip: (112222 bytes)

EditTable: Automatically generated database display/editing GUI
Data-Driven GUI generator.
These utilities use the SQL Schema to define a GUI for displaying and editing entries in a table.

It will generate a "good enough" GUI from just the Schema, or you can use SQL comments to fine tune the GUI,

Using the package is described in the paper that was presented at the US Tcl Conference.

Get editTable20170530.zip: (152877 bytes)

Client-Server Skeleton
Bare-Bones TCP/IP client and server: Just add application
Client-Server Skeleton. These two scripts provide a simple outline for writing Tcl/Tk based client/server applications. The standard socket controls are here (opening a socket, waiting for input, etc), and you just add the code to process the data.

Note: The client/server skeleton uses parseArgs from the Tools package.

Get cli-serv-Rel_1_1.zip: (6634 bytes)

Tcl Tools
Small and useful Tcl scripts.
These tcl packages include:
  • parseargs - the command line argument parsing procedure used in many Noumena packages.
  • listx - more list handling procedures.
  • stringx - more string handling procedures.

More Info

Get tcltools.zip: (5841 bytes)

MegaWidget skeleton
Building megawidgets in namespaces (pre Tcl8.6)
The Mega Dummy is a dummy megawidget skeleton that simplifies building custom megawidgets. This is the latest version of the script described in Tcl/Tk for Real Programmers and Tcl/Tk: A Developer's Guide.

NOTE: This is a namespace based solution to making megawidgets.

Tcl/Tk: A Developer's Guide, 2'nd edition discusses TclOO and describes better object oriented techniques for creating megaWidgets.

This package includes a script to convert the dummy skeleton into a new package using a number of regular expression substitutions.

More Info

Get megaDummy.zip: (14322 bytes)

formattedText: Extended Text Widget
A text widget that supports wordprocessor controls and saves formatted text in RTF format
The formatted Text widget supports a GUI for selecting font, slant, weight, foreground and background.

It also supports saving a document as an XML doc, a "native" form document, or in RTF.

Import is supported for XML and native format. The RTF document can be loaded into MS Word, LibreOffice, OpenOffice, and other word processing tools.

Get formattedText-20181004.zip: (24988 bytes)

dlopen extension
Load shared libraries within Tcl scripts
The dlopen extension loads a shared library that does not contain a xx_Init entry point on Posix or Windows platforms.

This allows loading extensions that require other shared libraries to be resident before they can resolve their symbol tables.

This extension is a single .c file which should compile cleanly on Posix or Windows systems. It's been tested on Linux, and MS-Windows 95 with VC++ 5.0.

Get dlopen.zip: (2138 bytes)