----------------------------
Whats new in ParaGUI 1.0.4 ?
----------------------------

- fixed a stupid PG_Window bug (buttons not shown correctly)
- made std:: the default workspace -> removed all std:: prefixes
- fixed a bug in showing "hidden" child widgets
- fixed a clipping bug in PG_ColumnItem
- Win32 (VC++) build fixes for physfs
- GNU build fixes (test dir), "make distcheck" passes now
- PG_Widget::SetSizeByText changes (Thanks H.C. <sebh@gmx.de>)
- added PG_RadioButton::SetFontColor methods (Thanks H.C. <sebh@gmx.de>)
- fixed PG_WidgetList::Remove(All) methods
  (Thanks Ivan Stankovic <pokemon@fly.srk.fer.hr>)
- new DevC++ workspaces (DevC++ >= 4.9.7.0)
- fixed a bug in PG_MessageObject::PumpIntoEventQueue(..)
  MOUSEMOTIONEVENT don't need to be passed to ALL objects
- added a method to PG_Application to clear and delete the background 
  (void DeleteBackground()) (Thanks H.C. <sebh@gmx.de>)
- fixed a potential memory leak in PG_Application resulting from changing
  non-scaled backgrounds (Thanks H.C. <sebh@gmx.de>)
- added a method to PG_RichEdit to set the default alignment (void
  SetAutoVerticalResize(...)) (Thanks H.C. <sebh@gmx.de>)
- added a method to PG_RichEdit to activate / deactivate auto vertical
  resize (void SetAlignment(...)) (Thanks H.C. <sebh@gmx.de>)
- SetIcon(const char* filename), SetIcon(SDL_Surface* icon) for 
  PG_Window's title bar (H.C. <sebh@gmx.de>)
- another wrapper function for PG_Widget::my_internaldata->quitmodal
  which allows one to set it to false (H.C. <sebh@gmx.de>)
- removed unnecessary Redraw() call in PG_RadioButton::SetText(...)
  (H.C. <sebh@gmx.de>)
- fixed a bug in the message-pump caused by objects be deleted and
  still having pending messages for it. (Thanks Michael Bartl)
- Added new fonts. Now using the open Bitstream Vera fonts.
- convert theme images automatically to screen format (may break things)
- added new PG_FileArchive::LoadSurface method with an option to
  specify the surface colorkey (Thanks Keith)
- added PG_Application::FlushEventQueue method
- merged patch from Steffen Blume <abszisse@web.de>
  Select[First,Next,Prev]Item for PG_DropDown
- fixed several bug in PG_WidgetList
  Thanks Alexander Opitz <opitz@primacom.net>
- fixed the layoutloader (child widgets are now shown properly)
- fixed a bug in the PG_Application::GetWidget template
- fixed userdata handling in PG_Widget
  Thanks Mark Junker <mjscod@gmx.de>

----------------------------
Whats new in ParaGUI 1.0.3 ?
----------------------------

- made PhysFS optional (like expat)
- autoconf / automake fixes
- fixed a problem in the destructor of PG_TimerObject
- added Ruby bindings
- added support for DevC++
- fixed wrong linebreaks in PG_RichEdit
- added overloaded functions for PG_Application::GetWidget<WidgetType>
- fixed autoconf macro to build nicely on Midori

----------------------------
Whats new in ParaGUI 1.0.2 ?
----------------------------

- Fixed a bug in DrawLineH, DrawLineV
  introduced in 1.0.1
- updated PhysFS to version 0.1.5
- removed unneccessary mutex locks while
  message processing
- fixed a crash in PG_ListBox when deleting an
  item in the event handler
- fixed Show()/Hide() on child widgets
- added functions returning vectors of strings instead of
  char** to PG_FileArchive
  Thanks Andrew Ford <andrewhford@yahoo.com>
- added PG_TimerObject
- added a switch to disable dirty widget updates
  globally (PG_Application::DisableDirtyUpdates(bool))
- GCC 3.1 compilation fixes 
  Thanks Guillaume Cottenceau <gc@mandrakesoft.com>
- added functions to add callback handlers to existing menu items
  Thanks John Rainey <John.Rainey@symmetron.com>
- added missing DECLSPEC to pgwidgetlistex.h
  Thanks Andrew Ford <andrewhford@yahoo.com>
- added CodeWarrior and MacOS support
  Thanks Keith Swyer <ksswyer@adventus.com>
- added wildcard matching for PG_FileArchive::GetFileList
- added PG_FileArchive::OpenFileRWops
- added PG_RadioButton:SetAlignment
- missing DECLSPEC added to pgfont.h
- added surface locking for direct pixel access rendering
  (text, gradient).
- added new messagetype to process XML layout tags
  from the <head> section (MSG_XMLTAG).
- fixed a clipping bug in PG_Widget::Hide() with simple backgrounds


----------------------------
Whats new in ParaGUI 1.0.1 ?
----------------------------

- Fixed permissions on zipped theme files
- 8bit surface fixes
- Enabling/Disabling of symlinks
- fixed a potential crash in PG_ListBox (SelectItem(NULL))
- PG_Button: Added Get/SetBlendLevel() functions
- SetBackground colorkey fixes
- Borland C++ Builder fixes
- remerge of expat (optional)
- optimized DrawHLine, DrawVLine
- fixed a widgetlist scrolling bug
- fixed a window-resize bug
- cached surfaces are generated in the screen format


--------------------------------------
Whats new in ParaGUI 1.0 RC1 (Beta3) ?
--------------------------------------

Bug fixes, bug fixes, ... :))
Cleaned up the font interface.
Some performance tweaks (see PG_Widget::SetDirtyUpdate()).
added PG_DataContainer to hold binary data.
added Python support (./configure --enable-python, refer to
the docs for a detailed description of the configuration
options )


--------------------------------------
Whats new in ParaGUI 1.0 RC0 (Beta2) ?
--------------------------------------

The really last thing i had to change was the internal
structure of the library.
The whole arrangement was also quite a mess.

Now the lib is separated into these main parts:

draw - all drawing and surface stuff
fonts - font handling and rendering
core - basic things like message handling, app class, ...
themes - the theme loader
widgets - all widget classes

I also cleaned up the header files.
Now there are only headers in the include dir that are
needed by client applications.

pgdrawobject.h has been removed - use pgdraw.h

There are also some compatiblity macros in pgdraw.h that
allow usage of some old style functions. e.g.:

#define PG_DrawLine PG_Draw::DrawLine



--------------------------------
Whats new in ParaGUI 1.0 Beta1 ?
--------------------------------

The widget system in the prior versions was quite a mess.
Now i decided to clean up the whole system and make it
more *defined*.

Due to this there are some changes in widget creation.
The following rules apply:

Now there are 2 basic widget types:

PG_Widget:
An unthemed widget that can have an internal drawing surface
or not.

PG_ThemeWidget:
A themed widget (loads it's style from the theme definition)
that can have an internal drawing surface or not.


Widgets with drawing surfaces:
-----------------------------

The  content is drawn into the surface and blitted to the
screen.

Construction with internal surface:
PG_Widget(PG_Widget* parent, const PG_Rect& rect, true);
PG_ThemeWidget(PG_Widget* parent, const PG_Rect& rect, true);

The param "true" indicates the creation of the drawing surfaces.

Redrawing & Blitting:

Redraw(bool doUpdate);
This function redraws the widget (by calling eventDraw()).
And calls Update(true) if doUpdate = true.

Update(bool doBlit);
This calls Blit() and updates the screen.

Blit();
This function blits the widget surface to the screen and
calls eventBlit() that can be used for custom blit behaviour.



Widget without drawing surfaces:
--------------------------------

The content of the widget is directly blitted to the screen.

Construction:
PG_Widget(PG_Widget* parent, const PG_Rect& rect);
PG_ThemeWidget(PG_Widget* parent, const PG_Rect& rect);

Blitting:

Update(bool doBlit);
This calls Blit() and updates the screen.

Blit();
This function blits the widget content directly to the
screen by calling eventBlit().


I hope this clarifies the widget behaviour stuff.
Please contact me if you have further suggestions and
additions.

For backward compatibility the *old* widgettypes
(PG_GradientWidget, PG_StaticFrame) still can be used but
I definitely wouldn't suggest this. Please try to port your
application to the new widgetclasses.

Porting should be quite easy by replacing PG_GradientWidget,
PG_StaticFrame with PG_ThemeWidget.


I hope this clarifies the widget behaviour stuff.
Please contact me if you have further suggestions and
additions.

Alexander Pipelka
pipelka@teleweb.at
