========================
The Tkinter 3000 Project
========================

The Tkinter 3000 Widget Construction Kit (WCK) allows you to write new
Tkinter widgets in Python.

This is the 1.1.1 release of the WCK implementation for Tkinter.  This
release is designed to work with Python 2.2 and newer.

For more information, documentation, articles and sample code, see:

    http://tkinter.effbot.org
    http://www.effbot.org/wck
    http://www.pythonware.com/products/tkinter

Enjoy /F

fredrik@pythonware.com
http://www.pythonware.com

--------------------------------------------------------------------
Contents

README               this file

WCK/*.py             WCK package, including Tkinter driver

_tk3draw.c           source code for the Tk graphics driver
_windraw.c           source code for the Windows GDI driver (alpha)

_tk3demo.c           a demo extension that contains a WCK widget
                     implemented in C (!)

setup.py             distutils build script for Tkinter 3000 WCK
setuplib.py          helpers for setup.py

demo*.py, bench*.py  assorted demo scripts and benchmarks

                     note that some demo scripts use decorators, and
                     will therefore only work under Python 2.4 and
                     newer.

WCK.html             api documentation
WCK.css              stylesheet for WCK.html

--------------------------------------------------------------------
Release History

(1.1.1 maintenance release)

+ Added 'bind' decorator for controllers.  This lets you write

    class myController(Controller):
        @bind("<Button-1>") # binds method to event
        def click(self, event):
            print "click at", event.x, event.y

  instead of

    class myController(Controller):
        def create(self, bind):
            bind("<Button-1>", self.click)
        def click(self, event):
            print "click at", event.x, event.y

  for Python versions that support decorators.

  Note that all event handlers must still have distinct names.  The
  decorator only flags the methods as event handlers; it doesn't do
  the actual binding.

+ Fixed widget destroy problem under 2.5.

(1.1 final release; 1.1b1 released)

+ Added some more error checking to the Tkinter interface.

(1.1a2 released)

+ Changed 'ui_image' to accept either a PIL image, a Tkinter
  Image object, or separate mode, size, and data arguments.
  The latter is compatible with PIL's "fromstring" function.
  In other words, the following two forms are equivalent:

	i = widget.ui_image(im)

	mode = im.mode
	size = im.size
	data = im.tostring()
	i = widget.ui_image(mode, size, data)

  The current version supports "L", "RGB", and "RGBA" images.

+ Added resource caching for pens/brushes and fonts.

+ Added attach/detach hook methods to the controller class.

+ Changed getcontroller() and ui_setcontroller() to match the
  documentation.  They now return a controller instance, not
  the tag.  You can use the controller's "tag" attribute to
  the the actual tag.

(1.1a1 released)

+ Added ui_setcontroller() method.  This can be used to replace the
  controller for an existing widget.

+ Added deprecation warning to the tk3 module.  Please change your
  applications to use the WCK interface instead (if you feel lazy,
  just change "import tk3" to "import WCK as tk3").

+ Added graphics driver for Windows GDI (work in progress).

+ Added Button, Form, and Input core widgets (work in progress).
	
(1.0 final release)

+ Added 'ui_path' dummy method, for compatibility with the WCK
  implementation used in effbot.exe 2.0.

(1.0c1 released)

+ added DrawInterface section to WCK.html

(1.0b5 released)

+ Added 'crop' method to pixmap objects.  This creates a reference
  to a subrectangle in a given pixmap; you can use this to copy a
  portion of a pixmap to the screen:

      dxy = (x, y) # destination offset
      sxy = (x0, y0, x1, y1) # source rectangle
      draw.paste(pixmap.crop(sxy), dxy)

+ Added 'settransform' method to draw and pixmap objects.  This
  release only supports translation, with the transform given as
  a (dx, dy) tuple.

      draw.settransform((dx, dy))
      draw.line(...)

  Note that settransform *replaces* the current transform; if you
  need to combine transformations, you have to merge them yourself.

(1.0b4 released)

2003-05-10: It's in beta, but I still cannot make up my mind about
naming: all the code is now moved to a "WCK" package.  The package
initialization code imports the right widget classes and all utility
classes, so instead of importing "wck" or "tk3", new code should
simply import "WCK", and use stuff from the "WCK" namespace.  The
"tk3" module (now a package) is still available as an alias.

2003-05-09: Added "wck" module (removed in the next release; see
above); moved Tkinter implementation to an internal "wckTkinter"
module.  The "tk3" module is simply an alias for "wck".  Changed
'ui_image' interface to accept PIL Image objects as well as Tkinter
PhotoImage objects.  Changed 'paste' method to take an optional
destination region instead of offset/size.  added unicode support to
the "text" and "textsize" methods.

2002-08-18: Added WCKSimple2DAPI hooks for implementing (parts of) a
WCK widget in C.  The demoC/tk3demo sample code shows how to use it.
for more info, see: http://effbot.org/zone/tkinter3000-wck-draw.htm

2002-08-14: First public beta, after a considerable time as an
internal beta.  The biggest change is the addition of pythondoc
markup.

2001-12-31: Third alpha; use smarter Tcl/Tk library search for Windows

2001-12-29: Second alpha; distutils build script; experimental pixmap
support; etc.

2001-02-03: Alpha cleanup; improved uiToolkit compatibility; changed
'ui_init' behaviour; moved utility functions to tk3utils.py (this
module shouldn't be used by user code; all public utilities are
available from tk3's namespace).

2001-01-17: Fifth public preview release.

2001-01-11: Use style object to draw default background and border;
fixed rollback on bogus relief setting; added support for horizontal
scrolling; don't let 'ui_damage' generate multiple expose events if we
can prevent it; fixed paste offset

2001-01-10: On the way to first alpha: draw highlight region and
border relief

2001-01-09: Minor demo tweaks; experimental framework support for
double buffered rendering (ui_doublebuffer)

2001-01-08: Fourth preview release; new license; added scroll mixin;
changed mixin method names; simplified textmixin (no repair method);
added standard button controller class.

2001-01-07: Third preview release; experimental support for
double-buffered rendering (see rough version in demoLissajou.py)

2001-01-06: Second preview release; includes driver source code

2001-01-05: Support for controllers; more demo scripts

2001-01-04: Support for Python 2.0/Tk 8.3; cursor option

2001-01-03: Initial sneak preview

--------------------------------------------------------------------
License

The Tkinter 3000 Widget Construction Kit is

Copyright (c) 1998-2006 by Secret Labs AB
Copyright (c) 1998-2006 by Fredrik Lundh

By obtaining, using, and/or copying this software and/or its
associated documentation, you agree that you have read, understood,
and will comply with the following terms and conditions:

Permission to use, copy, modify, and distribute this software and its
associated documentation for any purpose and without fee is hereby
granted, provided that the above copyright notice appears in all
copies, and that both that copyright notice and this permission notice
appear in supporting documentation, and that the name of Secret Labs
AB or the author not be used in advertising or publicity pertaining to
distribution of the software without specific, written prior
permission.

SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO
THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS.  IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR
ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

--------------------------------------------------------------------
