		ARK WIDGETS
		===========

OVERVIEW
========

This small document presents the use of Ark Widgets.
1) Hierarchy
2) Functions
3) Style customisation 

The goal of the Ark Widget library is to make customisation of the interface really easy.


WIDGET HIERARCHY
================

All Ark widgets are designed as derivated objects from the base one.


Widget	
|
\-Box
| |
| \-Window	
| | |
| | \-MenuPopup
| |
| \-Button
|   |
|   \-Menu
|
\-Label
|
\-Pixmap
|
\-TextInput


Explanations:

- A Box widget can contain any widget.

- The Window widget is the topmost container widget. The graphic
  representation of a Window widget using 3D will be a billboard.

- Label and Pixmap are inactive widgets. In the dialog Window, the face of the
  interlocutor will be a pixmap, its last sentence a Label.

- Buttons are interactive clickable widgets. In the dialogue example, the
  multiple choices will be Button objects containing Label with answers.

- Menu system. A menu bar will be a Box (with an horizontal layout), filled
  with Menu widgets. The Menu contained elements *are not* the menu items,
  they are the menu label for instance (File, Edit, Help...) and icon...
  When the Menu widget is clicked, a MenuPopup appears. The menu items are 
  elements contained by the MenuPopup (which is a Box). A menu item can thus
  be a separator (Label), clickable menu item (Button), sub menu (Menu)...

Helper functions will be provided to create common widget. For example textual
buttons are a Button with a Label, a function taking as parameter a string
will return such Widget all set.


WIDGET FUNCTIONS
================

Widget:
GetParent
draw

    Box:
    align
    setStyle
    basic container functions (add/remove elements)

	Window:
	get/setPos
	move
	resize
	close

	    MenuPopup:
	    ? roll(in/out)


	Button:
	set/getAction
	set/getSensitive

	    Menu:
	    set/getMenuPopup


    Label:
    setText

    TextInput:
    set/getText


STYLE:
=====

The style is a separated class which attributes are defined in a
stylesheet file.

The style implementation will first be a sub set of standard W3C CSS
 (Cascading Style Sheet; see http://www.w3.org/Style/).

The Ark Widget configuration file lets you override default values for
each widget.  Inheritance passes any basic widget customization to
it's derivated class, and from container class to contained class.

Nowadays most people knows basic HTML scripting, that's why we've
chosen to use a light version of it for text information (row data and
styles).  To display enlightened text, a simple html-like text is
needed.  In most cases you would create a .css file to define your
preferences for each tag and maybe add your owns.
