0.18.0
- added "clean" theme with experimental alpha support
- added pngs missing in "gray" theme
- added various checks for required style information
- added "down_offset" style for shifting button contents when clicked
- added support for PGU_THEME environment variable
- added code for handling widgets that need alpha blending
- bug fix in basic.is_color
- bug fix in basic.Label.set_font

0.17.0
- fixed a python3 compatibility problem with setup.py
- module html.py now working under python3
- added an "activate" signal to text input box
- removed some obsolete files
- removed html5.py example

0.16.0
- fixed the documentation generator script so it works with the new docstrings
- various fixes to make PGU compatible with python3
- better error handling in various places

0.15.0
- replaced use of __setattr__ with property and setter functions

0.14.0
- fixed: removed string exceptions
- fixed: converted docstrings to standard python format
- fixed: table properly expands vertically
- fixed: Widget.get_abs_rect now reporting correct rect
- fixed: unicode and font problems with button and label widgets
- fixed: various problems with handling of colors and alpha value

0.12.0 -
- active development and maintanence taken over by Peter Rogers
- bug fixes for pygame 1.8.1

0.11.0 -
- added: gui.TextArea - thanks to Clint Herron for this really nice widget!

0.10.6 - 
- fixed: python 2.5 compat issue
- fixed: mouse wheel doesn't send CLICK events anymore.
- fixed: reduced number of copy() operations (which was causing a bit of a memory leak)
- fixed: made ScrollArea creation work for more pixel perfect kinds of cases...
- fixed: added needed style info into style for dialog

0.10.5 - 
- added: support for style loading .ini files 
[link]
color: red
..
[link:hover]
color: blue
.. etc ..
- changed: filedialog now uses the dialog class for most all of its
parts.  main style change is that
filedialog.title.label => dialog.title.label
and all other filedialog items are gone, except for 
filedialog.folder
- changed: filedialog style requirements to be much simpler.  in general
it just uses dialog and default labels, etc now.
- fixed: some excessive repaints going on due to use of chsize() before a paint().
now chsize() doesn't do anything until after the widget is painted at least once.
- fixed: some code in VScroll, HScroll that was causing extra resizes within tables
for no particularily good reason.
- fixed: menu not working bugs 
- changed: menu so that the cls of a menu doesn't change, it just keeps
the down pcls while down.
- fixed: bug where get_abs_rect() was wrong due to theme stuff... kind of a HACK
- added: shift-TAB for previous support
- fixed: bug where TAB could cause a crash if no non-container widget
    was in focus at the time.
- changed: added support for width,height scaling for Image widgets
- changed: improved caching of style data so that complex screens repaint much quicker (removed .cache() method from style object)
- changed: misc changes to add better keyboard / nav support to many widgets (selects, sliders, etc)
- added: ability to move between widgets via arrow keys .. to stop this behaviour, make sure the
widget that has focus returns True to say that it "already used the event"
- changed: after an event() handler, user should return try if they used
    the event.  otherwise a container may use the TABS, arrow keys, etc for
    navigation or other purposes.  somewhat optional, will only impact
    widgets that use tabs/arrow keys ATM.
- added: a Link widget
- fixed: bug where pygame would crash if full screen was toggled 
- fixed: some style issue in the select widget
- fixed: some rendering issues with sliders being off by a few pixels
- fixed: some icon styling bugs due to incorrect init order.. but i'll still probably
    deprecate it anyways! ha!
- fixed: backgrounds of widgets that are getting repainted, etc.
- fixed: disabled backgrounds that didn't appear correctly

0.10.4 -
- fixed: bug in dialog.py -- directories with '!' at beginning were being sorted after '..'
        thanks Jason Liu for this patch
- fixed: bug in high.py
- fixed: scrollbars scroller not the right size

0.10.3 -
- added: gui16.py and gui17.py some new fun gui examples.
- fixed: isovid doesn't work when using run_codes 'cause it gets
width and height from the wrong thing!
- change: PIL support removed from tileedit, the code is still in there if someone
wants to troubleshoot it
- fixed: in tileedit, line 109 should be assert mode in ("RGB", "RGBA"), not assert mode in "RGB", "RGBA" 
- fixed: when the scroll area is really short, etc, having 3
scroll arrows can take up too much room.  so now it only shows as many magic scroll
buttons as it can fit neatly.
- fixed: using app.paint() with custom event loop skips chsize related stuff
- fixed: install script error, where Vera.ttf was not installed
- fixed: timer.py bug where the first frame is really long sometimes
	i think this is due to some kind of a pygame bug
	also, when FPS are set to 0, the timer is now set to
	go at "full rate" instead of give a div by zero error
- fixed: ScrollArea / SlideBox.widget = x doesn't work.

0.10.2 -
- fixed: gui11, when everything is removed scroll bar is removed
    too soon!
- fixed: gui11, graphical crud shows up after removing stuff, sometimes
- fixed: Select can drop below window sometimes, and it looks bad.
    now Selects that are at the bottom of the screen may go upwards.
- added: ProgressBar widget & documentation.
- fixed: if the widget in the scroll doesn't fill it up,
    doing any scrolling causes a crash
- fixed: gui.Menus not working due to focus related fixes
- added: widget.connect gets *values, not just value to pass on
    so that you can have multi-param methods.  See widget.connect
    documentation for details.
- added: widget.send can send the event and the widget to
    the reciever if the receiving fnc has the params named
    _widget or _event or _code.  See widget.connect documentation.
- fixed: disabled items in scrollarea don't get alpha-ized due to 
   alpha image that is being drawn to.
- fixed: scrollers don't scroll quite like normal scrollers do...
- fixed: slider size can get too small
- added: scrollbars added in arrows, so that they are scrollbars
    instead of just sliders.
- fixed: sliders & scrollbars inconsistent, and don't look good
- fixed: weird border in scrollarea, sometimes...
- fixed: internal cleanup of ScrollBox, etc.  the scollers will
    automatically appear when the sub-widget gets bigger, smaller, etc.
- fixed: when you click on a disabled widget, 
    the click can slip to a non-disabled widget
- added: .disabled, .focusable attributes to widgets, 
    see widget.widget documentation
- fixed: .add, .remove for Container, Table, Document so they
    all work properly.  gui14.py adjusted to demo accordingly
- fixed: select to work, by adding an improper use of resize ;)
- fixed: a number of improper uses of resize()
- fixed: gui.Table to only resize() something a second time
    if it _really_ needs to
- fixed: gui.Table to clear() out old rows properly
- fixed: gui.Widget so that chsize() would work a lot faster (thus
    the gui13.py example is very nice and smooth now, doesn't feel like
    it is lagging anymore.)
- fixed: ScrollBox a lot faster by using double buffering
    this will, however, require a lot of memory for large buffers
    but hopefully that won't be a problem, it makes examples/gui12.py blaze
    during scrolling, whereas before it was quite slow even on my 2x3 GHz machine.
- fixed: "calling Button.event() before Button.paint() causes crash"
- fixed: "container.remove makes a widget stop working but not disappear"
- fixed: some docs about a bug whereby container.add(w) won't work     
    after the app is running

0.10.1 -
- fixed setup.py to work on my system when installing pgu

0.10 -

- added in a Password widget -- submitted by Dr. L. Humbert <humbert@seminar.ham.nw.schule.de>

- added in new documentation -- HTML only now.

- added jhofmann's tiled preview widget to tileedit
        also included PIL support

- removed gui/background.py -- merged contents into Theme.  Made theme interface more cleanly seperated Widget.py
jhofmann: added tiled preview widget to tileedit

- zx64: in tilevid4,5 examples -- removed bold so that they work on more systems

2005-12-10 - 0.10-alpha-ludumdare-7-full-combat-version

I've released this one just hours before LD #7 so that you (and I) can both benefit from
some nice time saving features!

All this stuff is alpha and subject to change before a real release!

- fonts.py -- functions for loading bitmap based fonts (useful when TTF just doesn't cut it!)
- algo.py -- functions for path finding (useful for guards, etc in games)
- ani.py -- functions to help load animations into your vid objects (just plain useful)

A new script:
- levelfancy -- a script for taking a basic level and fancying it up -- try this in
examples:  ../scripts/levelfancy map.tga level.tga fancy.tga
then view each of those tgas with leveledit to see what is going on...

An old script:
I removed tganew ages ago, but I'm putting it back.  I like it.

During this contest I will be available in #ludumdare and #pygame for questions 
related to using pgu.  Have fun in the contest!  If you find any bugs or anything I'll be
glad to fix 'em and release a mid-contest version of pgu!

2005-12-01 - 0.9

I added INSTALL.txt with some install instructions, as well as instructions
for distributing pgu with your game/application.

**** Minor API Update ****************************************************
Sorry about this, but I realized after releasing 0.8 that the new theme loading
API wasn't very good...  (And had some bugs to boot!)

This update will be in comparison to 0.7, since I don't think many people 
downloaded 0.8 yet.

For using the default theme, the API remains the same (do nothing special).

For using an custom theme:

It was:
gui.theme.load("gray")

It is:
theme = gui.Theme("gray")
app = gui.App(theme=theme)

Also you can use your own fully custom theme (oooh!)
theme = CustomTheme()
app = gui.App(theme=theme)
**************************************************************************


2005-11-30 - 0.8

phil: fixed tileedit and leveledit to use new theme loading API
phil: fixed tabbing bug where last item would not get tabbed to
phil: fixed setup.py to install pgu.gui
phil: fixed pgu.gui to import pygame.locals

**** Minor API Update ***************************************************
The API for loading a custom theme has been changed...

It was:
gui.theme.load("gray")

It is:
app = gui.App()
app.theme.load("gray")

Also you can use your own fully custom theme (oooh!)
theme = MyTheme()
app = gui.App(theme=theme)
*************************************************************************

Cthulhu32: found bug in leveledit where file name isn't picked correctly

2005-11-18 - 0.7 

**** Crazy API Update ****************************************************
Theme decorations are now seperate from the Widgets.  Thus:
  
  * Widget._resize() was removed
  * Widget.getspacing() was removed
  * Widget.resize() returns None was changed to Widget.resize() returns w,h.  
    The container is responsible to do this:
        widget.rect.w,widget.rect.h = widget.resize()
  * Widget.chsize() was added, it requests that a widget be re-resize()ed --
    similar to Widget.repaint()
  * To disable the theme decorations on a widget:
        widget = Widget(decorate=False)

**************************************************************************
        
- phil - added chsize() method which requests that a widget be re-size()ed.  (similar to repaint() or reupdate() except for the resize() method
- added default font (Vera)
- removed non-working hide,show calls
- fdarling - added a new table class that works a bit cleaner.  should
not have any noticiable API breaks.
- fdarling - reorganized pgu.gui to be a package

- added input type='file' to pgu.html
- fixed Toolbox bug (Toolbox.value = x wasn't working right)
- create circles in tileedit
- flip bkgr/tiles in leveledit

- tileedit / leveledit - illume added a feature where by you can check
a box to "auto-save" your tiles when you blur the window.  leveledit
will auto-reload those changes.
   
- since the getwidths() feature was broken anyways, it has been removed   
- when you create your main container for your app you _may_ need to
add align=-1, valign=-1 to get it in the top right corner the way
it used to be      
      
- phil -- added Vera.ttf to theme, did some cleanup
- gal koren -- added a FileDialog, List,  misc patches, etc, added gui11, gui12 as demos of new features
- fdarling -- fixed some UI issues in Menu
- gal koren -- fixed a focus bug
- exampes, gui9 - -save/saveas are broken -- fname is set to a widget

2005-10-21 - 0.6
- gal koren -- submitted an excellent ScrollArea widget to pgu.gui -- see it demoed
in examples/gui6.py
- added default size to HSlider, VSlider in the theme

2005-10-07 - 0.5
- fixed you can select a tile outside of the tile area by using the up arrow once .. 

- fdarling -- fixed some UI issues with menus and sliders and did some general code cleanup
- fdarling -- use None instead of 0 for nulls throughout the code

- added to leveledit/tileedit: "are you sure you want to quit" / "you still have files unsaved..." for before "quit" or "open" or "new"...
- added open/new/saveas/save, etc to tileedit/leveledit
- removed tganew.  update docs to reflect removal of this artifact

- fixed gui CLICK events so that they only occur when hovering over the widget
- fixed gui hovering so that when a mouse button is down, the mouse won't hover over widgets that aren't in focus
- fixed gui so that tabbing works a bit better
- fixed gui so that QUIT event is only sent when no (modal) windows are being displayed.

- added isovid, hexvid support to scripts/leveledit
- added pgu.high
- added pgu.isovid
- added pgu.hexvid
- added pgu.timer.Speedometer

- fixed gui.Button so that width,height works
- fixed html so that valign=middle (not center) works
- added better css for labels throughout gui, see new config.txt

- added shift+arrows to leveledit to move view by 1/8 screen
- added ctrl+arrows to leveledit to move view by 1 screen
- add scrollbars to leveledit
- fixed tutorial docs in gui10
- fixed bug where sprite wouldn't work without an ishape

2005-08-27 - 0.4
- fixed leveleditor so it displays backgroud / grid

2005-08-23 - 0.3
Bug Fixes:
- fixed do_br in html
- fixed rendertrim in html (no longer modifies the passed in rect)
- removed some debugging prints from html
- engine no longer requires screen for Game.run()
- ColorPicker in examples now works faster (doesn't repaint whole screen)
- fixed most of the crashes related to widgets going outside of their parent surface (when a widget is placed partly (or totaly) out of the screen: crash!) - input should move to the left when you max it out (gui.Input.paint)
- explain in tutorial/docs how to use tileedit and leveledit under windows
- fix .txt files so that they work under windows notepad
- fix tileedit, leveledit to work with new gui module
- make pcls work correctly for tool, input, keysym
- some not-so-standard-ascii characters make gui crash when inputted (gui.Input.event)
- when you tab after the final widget (at least in ReciPy): crash! (gui.Container.next)
- when you add something to a select (after it is already displayed): crash! (probably needs a resize)
- tab to next widget doesn't always work
- cleaned up the tiles.tga for the tilevid examples

Misc Changes:
- change container.resize to give out proper width/height depending on 
the widgets contained, or style.width/height if appropriate
- refine the table auto-sizing algorithm a bit more
- make document work with resizing sub widgets
- h1,h2,h3 css in themes 
- ul,li,ol work

API changes:
- in Tables, use .td() instead of .add() except when you want to add an object
as a "table cell" (it will be expanded to fill the cell)
	t.td(w,colspan=2)
- widgets are not given a size in __init__, they are given a size by resize(), and their rect_margin, etc are created using _resize()
- now you can set up margins, borders, padding, just like in CSS2 (more or less).  You may also
assign whole groups by omitting the _top/_right/_bottom/_left
	e = Widget(style={'border_left':2,'border_color':(255,0,0),'margin':4})
- backgrounds respond to .pcls
- Box (background) widget removed and replaced with a CSS2 Box widget.  The Box widget is used
by Tables for tds.
- Background widget created to replace old Box widget.  
- some style parameters like padding_* must now be passed via the style dict:	
	e = Widget(style={'padding_left':4})
- change getsizes api to getwidths()
- clean up table API -- colspan, rowspan, row, cols, etc.
- make table sizing work such that:
	- table.style.width, height force that min/max size
	- suggested width/height only _offers_ it to be that big
	- td.cell_width/height force min/max size, unless the min is greater
		than that size, then it will have to be bigger

2005-08-02 - 1.0
 - add default palette to tileedit code
 - add #s for default codes in leveledit
 - rewrite README.txt
 - add a leveledit / tileedit / tganew documentation page
 - rename tilecollide class -- merged into tilevid class
 - finish doc generation
 - make sure theme loading works in all cases ./$theme ../data/themes/$theme /usr/share/pgu/$theme
 - gui - make event, not _event work with tut10
 - get rid of /docs/tiles-samples and use the space shooter stuff
 - write documentation 
 - update tutorials to use my ## format
 - get text wrapping to work with paragraph breaks
 - antialias fonts
 - move /docs/examples to /examples
 
2005-07-?? - 1.0
 - combined PGU, PGL and KJV into one package
 
2004-07-23 - "pgu" 1.1
 - command line interface improved considerably
 - use .ini files for init
