The tablelist::setThemeDefaults Command

by

Csaba Nemethi

csaba.nemethi@t-online.de

NAME
tablelist::setThemeDefaults - Set theme-specific default values of some tablelist configuration options

SYNOPSIS
tablelist::setThemeDefaults
DESCRIPTION
This command should only be invoked when using the package Tablelist_tile.  It populates the array tablelist::themeDefaults with theme-specific default values of a series of Tablelist configuration options.  The array names are the command-line names of the options, and the corresponding array values are the default values of these configuration options for the currently set tile theme.

The options whose names and values are written into the array tablelist::themeDefaults are: -background, -foreground, -disabledforeground, -stripebackground, -selectbackground, -selectforeground, -selectborderwidth, -font, -labelbackground, -labelforeground, -labelfont, -labelborderwidth, -labelpady, -arrowcolor, -arrowdisabledcolor, and -arrowstyle.  In addition, the command sets some other array elements to theme-specific default values of the background and foreground colors of the column labels in disabled, active, and pressed states.  (Tablelist needs the label colors for handling sort arrows and images with transparent background in the column labels.)

The tablelist::setThemeDefaults command is invoked by Tablelist_tile automatically when the first tablelist widget is createad or a <<ThemeChanged>> virtual event is received by a tablelist widget.  In the latter case, the widget is reconfigured, using the new default values of those options that were not set explicitly to values different from the corresponding defaults.

Besides being used by the Tablelist_tile code, this command can also be invoked in Tcl scripts, still before creating tile-based tablelist widgets.  By calling it explicitly and using the values written by it into the array tablelist::themeDefaults, you can make sure that classical Tk widgets, e.g., listbox and text, will have a theme-specific appearance, just like the tile widgets.  For example, you can add some common configuration options to the option database as follows:

tablelist::setThemeDefaults
if {$tile::currentTheme eq "aqua"} {
    option add *Listbox.selectBackground \
	       $tablelist::themeDefaults(-selectbackground)
    option add *Listbox.selectForeground \
	       $tablelist::themeDefaults(-selectforeground)
} else {
    option add *selectBackground  $tablelist::themeDefaults(-selectbackground)
    option add *selectForeground  $tablelist::themeDefaults(-selectforeground)
}
option add *selectBorderWidth     $tablelist::themeDefaults(-selectborderwidth)
KEYWORDS
tablelist, theme, tile

Start page