ClanGUI
-------
The GUI is work-in-progress. It means we are currently lacking some
components, and some components are unfinished. Some parts of the GUI API
is not quite done, and changes will occur. But it has become very stable,
and should be by far good enough to start play around with in your projects.

Contributions are as always welcome! Help us create a good API, create
new components, create new styles, create cool games and apps using the GUI!

We will write proper overviews in the Documentation folder later on,
describing in detail how the GUI works, how to use it, how to create new
themes etc.

Don't hesitate asking us questions regarding the GUI; we appreciate
feedback and try to help as good and fast as we can.

--
Enjoy,
The ClanLib development team

----

The following section is mostly for internal use for the ClanLib GUI developers.
It will contain known bugs, ideas and notes, status for the components etc.

GUI Bugs:
---------
- When creating new GUIManagers, it has to create a state of the previous, so when it gives control
  to the previous manager, it gets for instance mouse_up signalled correctly.
- GUIDynamic: Select "View 12" then "View 5". Quit. Crashes in listbox destructor.
- Scrollbars: Move mouse outside area, and then within, repeat a couple of times - the position which the bar moves
  is changed. Probably some broken delta values.
- CL_Menu, CL_PopupMenu, CL_ComboBox is broken.
- CL_TreeView:
  - Make CL_TreeView_Node stylable ?
  - Add icon-support to TreeView
  - Stop drawing when out of component-range
- CL_ListBox:
  - Stop drawing when out of component-range

GUI Memory-leaks:
-----------------
- The following classes might still have memory-leaks:
  - Component
  - Component_Generic
  - Component_Manager
  - Component_Manager_Generic
  - Component_Move_Handler
  - Component_Resize_Handler
  - Component_Tokenizer
  - ComponentFile_Preprocess

GUI Ideas:
----------
  - Add dockable windows?
  - Add toolbar?
  - Keyboard control sucks
  - Rewrite hierarchy handling; enabling treeviews, menues etc.
    (This might also affect the .gui format)
  - Add minimum/maximum sizes to components
  - Improve the LayoutManager: (The Java way - generic, good, but alot of work)
    {
	BorderLayout layout = new BorderLayout;
	setLayerManager(layout);

	toolbar = new ToolbarWidget(bla bla bla...);
	layout.setPosition("north", toolbar);

	statusbar = new Status....
	layout.setPosition("south", statusbar);

	treeview = new TreeView...
	layout.setPosition("west", treeview);

	listview = new ListView...
	layout.setPosition("center", listview);
    }

GUI status:
-----------

             API   Resizing   Autosize   GUIFile  NoSizeConstr Implemented
Button        X      ?          ?          ?          Yes      ?
CheckBox      X      ?          ?          ?          Yes      Yes
ComboBox      .      ?          ?          ?          Yes      Currently untested
Frame         .      ?          ?          No         Yes      
Image         .      ?          ?          No         Yes      
InputBox      X      ?          ?          ?          Yes      Missing mouse-selection, bad scrolling
Label         X      ?          ?          ?          Yes      Missing alignment
ListBox       X      ?          ?          ?          Yes      Some unimpl. func.
RadioButton   X      ?          ?          ?          Yes
ProgressBar   X      ?          ?          ?          Yes      
ScrollBar     x      ?          ?          ?          Yes      Missing fixed-length sliders
TreeView      x      ?          ?          ?          Yes      Some unimpl. func.
Window        .      No         No         ?          Yes      ?
	
FileDialog    X      No         ?          ?       
MessageBox    X      No         ?          ?       

API = API complete (X=complete, x=mostly complete, .=under construction)
Resizing = Handles resize of component
Autosize = Supports autosize of component
GUIFile = GUIFile-support for all attributes
NoSizeConstr = Constructor without size-requirement exists
Implemented = All functions implemented and other comments
