TLC

TLC is a commonly used three letter abbreviation/acronym for Tender Loving Care.


TLC is a Tcl package created by Cyan Ogilvie containing a bunch of Itk based widgets, a simple client / server rpc framework, and a mechanism for building arrays of virtual logic gates for state propagation. (and probably lots more too - I abuse this as a place to put anything I use all the time)

Hosted on sourceforge - http://sourceforge.net/projects/tcl-tlc

The intention was to document this lot here. Looking at the list I'm having second thoughts. Bug me at cyan.ogilvie at gmail.com if you have a need for any of this stuff and are hampered by the lack of documentation.


Widgets

  • Application - intended as the main window in the application
  • Border - base class for building widgets with a configurable border
  • Browse_tktreectrl - a tktreectrl based multicolumn listbox for displaying a tlc::Datasource
  • Browse_treeview_flat - multicolumn listbox (using BLT::Treeview) for displaying the contents of a tlc::Datasource (with the ability to define realtime filters)
  • Calendar - canvas based calendar day selection widget
  • Calpopup - popup window containing Calendar
  • Checkgroup - convenience widget for building a group of checkbuttons
  • Clock - I can't remember. probably a clock display
  • Comboselect - popup window handler for tlc::Mycombobox
  • Confirm - simple modal dialog box that displays a custom message and waits for the user to peck OK
  • Dateentry - label made to look like an entry, with a lookup button to pop up a Calpopup
  • Datelookup - lookup button for popping up a Calpopup
  • Dcontrol - a frame with multiple associated keys, mapping to child windows which are swapped in and out when their key is selected
  • Deny - a simple modal dialog box with a red icon for telling the user they don't have permission to do something, or there was an error
  • Dropselect - antiquated code
  • Fileselectbox - modified entry for selecting files, with a button to pop up a tkGetOpenFile / tkGetSaveFile
  • Formdialog - modal dialog box containing a tlc::Form
  • Form - a form rendering widget, for very quickly (and readably) rendering complex form type guis, based on a text schema. Supports validation, custom signals and much more
  • Getinf - very simple modal dialog box for asking the user for a few bits of info, suitable for use in an if {} statement
  • Hoverbox - tooltip-type toplevel window.
  • Infowin - a modal dialog box for informing the user of something
  • Label_link - a link that looks and behaves like a hyperlink
  • Login - a generic username / password login box, with support for custom password checking callback
  • Logtextbox - a text widget for displaying application logs
  • Lookup - the base for a lookup type widget
  • MDT - a widget based on blt::tabset for displaying multiple items in tabs
  • Modal - base class for modal dialog boxes
  • Mycombobox - terribly named dropdown combo box widget
  • Myentry - antiquated code, for adding tlc::Signal awareness to entry, superceded by tlc::StateToggle
  • Mylistbox - ancient (and obsolete) canvas based multi column listbox
  • Mymenu - convenience wrapper for creating hierarchies of menus from a list schema
  • Myscrollbar - thin wrapper on scrollbar to support fancy behaviour (like unmapping when no scrolling is needed)
  • Myscrollbar_win32 - Bad hack to make scrollbars on X11 look like the do on win32
  • Mytoplevel - itk::Archetype based toplevel mainly for allowing access to -menu
  • Mywidget - widget base class with all the things everything else in tlc relies on
  • Panelbar - a panelbar widget
  • Radiogroup - a convenience widget for creating a group of radiobuttons
  • Signal_monitor - a debugging aid for displaying the state of a tlc::Signalsource's exported signals in real time
  • Spinint - simple integer value spinbox
  • Spinner - custom value set spinbox, with typeahead and selection dropdown
  • Splash - a splash screen widget
  • Statusbar - a display area for short transient status messages
  • Tagentry - an augmented entry widget, with a configurable text display on the right, and simple validation
  • Theme - an attempt to make tk suck less ;)
  • Tools - a multi button bar, with tlc::Signal support
  • Tooltips - class for adding tooltips support to a widget
  • Vartextbox - a wrapper for the text to bind the contents to a -textvariable

Non-GUI classes

  • Baseconfig - a base class for config handling (defauls, command line and config file)
  • Baselog - a base class for doing nice colourised (on unix anyway) log output with threshold support
  • Browsegeneric - base class for things that display tlc::Datasources
  • Chain - an ADT for chains (linked list type thing)
  • Clientobj - part of the network framework
  • Conobj - part of the network framework
  • Console - a debugging aid - embedded console with history support, and the ability to dig into classes and display their state
  • Daftheme - one of the developer's favoured visual settings pack
  • Datasource - a baseclass for things that represent tabular data
  • DSchan / DSchan_backend - specialized tlc::Datasource that implements live updating network replicated datasets (needs another, not yet released network framework)
  • Datasource_filter - class for stacking on top of a tlc::Datasource to massage the data
  • Datasource_list - simple list backed implementation of a tlc::Datasource
  • Datasource_sql - implementation of a tlc::Datasource fleshed out with a few SQL queries
  • Domino - set them up and knock them over. wheeee
  • Expression - a tlc::Signal whose output is dependant on a custom expression
  • Filelog - send application log to a file
  • Gate - a tlc::Signal whose output is a logical operation of it's inputs
  • Handlers - a loosely-coupled, multiple-listener callback system
  • Hconfig - a value inherited hierarchical database for storing things like users and application settings
  • Interpolate - set up to get a callback with a value interpolated between to extremes over a certain time interval
  • Log - simple threshold based application logging framework
  • Probe - embed in an application to be able to interrogate it's internal state over the network (by default only localhost). Deprecated in favour of tlc::Console
  • Protocol - a snap in protocol translator for the network framework
  • Protocol_mpack - a very simple network protocol for the network framework, suitable for embedded devices
  • Selector - a tlc::Signal whose output is a selectable one of it's inputs
  • Servermodule - part of the network framework
  • Serverobj - part of the network framework
  • Sessionconobj - part of the network framework
  • Sessionobj - part of the network framework
  • Signal - the base of the logic signal framework. Has a true / false output and can be connected to other signal type things, and widgets (to control their enabled / disabled state for instance)
  • Signalsource - a base class for something that exposes some tlc::Signals
  • Stategate_target - a base class for a widget that can take a tlc::Signal to control it's enabled / disabled state
  • StateToggle - a class for controlling a peer widget's properties based on an input tlc::Signal
  • Textvariable - a base class for providing -textvariable support to a widget
  • Uri - a registry for URI type links, used by things like the Label_link
  • Vardomino - a tlc::Domino derivative that falls over when a variable is written
  • Varwatch - a tlc::Signal that changes to true when any of a set of watched variables is changed

Other bits

  • decomment - a routine for stripping comments (say from a config file)
  • fake_mainloop - enter the event loop in non-Tk apps (like network servers)
  • go_home - all the gymnastics needed to set pwd to the application's script dir (works when info script doesn't)
  • intersect3 - a reimplementation of the set intersection command from TclX, in native tcl (and much faster in my tests too)
  • stackdup - a command to return a simple call stack display, for debugging
  • state - eeek! This is bad old code
  • try - a neat wrapper on catch {} to make exception handling easier