TIP 248: Integrate Tile into Tk as Ttk

Login
Bounty program for improvements to Tcl and certain Tcl packages.
Author:         Jeff Hobbs <jeffh@activestate.com>
Author:         Donal K. Fellows <dkf@users.sf.net>
State:          Final
Type:           Project
Vote:           Done
Created:        08-Jun-2005
Post-History:   
Tcl-Version:    8.5
Obsoletes:	172

Abstract

This TIP proposes that the tile themed widget set be integrated into Tk from 8.5 onwards as the static package Ttk.

Rationale

It is well known that Tk has been lacking in graphical glitz for a few years; GUI standards have moved on whereas Tk has remained largely static. The core of Tk is still great (e.g. its resizing behaviour is second to none) but fancy shaded buttons are what modern users expect. Through the sterling work of Joe English and others, the Tile package is available which offers a new set of widgets for use on top of the Tk foundation, and which provide that extra graphical polish by leveraging underlying graphics layers (e.g. the Luna theming engine on Windows XP, the Aqua theming on MacOSX, etc.) This is exactly what we need, so we should ensure that every user of Tk can take advantage of these new capabilities (universality is important) through updating our distribution strategy.

This TIP acknowledges that Tile is a project that is still in development, but the current state is stable enough for inclusion and will encourage wider use. It is expected that more changes will come later. This TIP proposes integration of Tile into the Tk core as the Ttk package. It would be part of the standard core, but have a version different from the overarching Tk (much as Tcl has the http package). This will allow for minor user-level changes and continued rapid development as part of the larger Tk framework (eg, Tk patchlevel releases can have minor version bumps to the Ttk package).

Note that although the Tile widgets are mostly drop-in replacements for the Tk core widgets, they are not perfect stand-ins due to the differences in the way state is managed. This means that this TIP categorically does not propose the replacement of Tk's widgets with Tile's.

Proposed Changes

  1. Full integration of the Tile package into the Tk source tree. This would include renaming of source files to fit inside the Tk directory structure. A static package named Ttk will signify their availability and specific version.

  2. To facilitate mixing of widgets between Tk and Tile, all Tk's widget creation commands are to be additionally declared in the ::tk namespace and [namespace export]ed from there. Allowing users to mix class Tk and themed Ttk widgets improves the overall richness and flexibility of Tk applications.

Discussion

See the discussion in the thread at http://aspn.activestate.com/ASPN/Mail/Message/tcl-core/2761205.

Tile is expected to continue as an 8.4-compatible package while 8.4 is still the standard stable version.

Copyright

This document has been placed in the public domain.

History