General Information
===================

This is version of VDK Builder 1.0.4,
a general purpose ide for constructing gui applications
using VDK.

VDKBuilder is distributed under GPL.
==============================

The official web site is:
  http://www.programmers.net/artic/Motta/vdkbuilder/index.htm

Installation
============

See the file 'INSTALL'


How to report bugs
==================

To report a bug, send mail to:
mmotta@guest.net


=========
TUTORIAL
=========
A complete tutorial does not exists yet,
however some chapters have been written.
You can see them from inside VDKBuilder
using help feature.

- ADDING WIDGETS TO A FORM
--------------------------
This actions is known also as "Dropping", so in the following
we mention "drop" to mean this two actions:
- select the widget you want from tool palette
- click on the container where you want the widget added.
Widget can be added only to containers, you want put a container
as first widget into the form, after that no others limitations
hold.

THE "PREVIEW" MODE
Gui editor can act in two modes "preview" and "non-preview".
"Preview" is the default mode,  applies to boxes only and affects
how the widget contained into a box are shown and how the form
will look like at run-time.
In "preview" mode widget are added to a box and expand to all
space available, if you want add more widgets simply drop
the new widget over the already existing one , the two widgets will
share all available space, any further drop will share the space
beween all widgets contained.
So dropping a widget into a container adds the widget to container,
dropping an widget over another widget make the latter to be added to
the underlying container.
Continuing to drop will make the available space be shared within
widgets, if no further space is available, container will expand
in the relative direction (vertically or horizontally) in order
to accomodate all widgets.
Sometimes happens that you make nested containers, for instance
an empty "B" box into an empty "A" box like shown:

.----------. A box (covered by B)
|.--------.|
||        || B box
||        ||
||        ||
||--------||
.----------.

in this case adding widget into B box is usual, but becomes difficult
(but not impossible) select underlying A box in order to add widgets
to it. In such case you have to use Widget Inspector (WI) in order
to select box A. (see below)
This apply only to put the first widget to a nested container,
all others widgets can be added in the usual way.

THE "NON PREVIEW" MODE
Even if not very useful a non-preview mode is provided, you
can switch to this mode using a check button into WI.
In non-preview mode all widgets are added to a contaier in their
minimim size and do not expand to all available space so underlying
container is almost always selectable( unless you fill it with widget).
The container will not look like at run-time unless you decide
to set widget packing flags: expand,fill,padding to false.
To see how container will be shown at run-time revert on Preview mode.

- EDITING WIDGET PROPERTIES
---------------------------
Once a widget is selected all his properties are shown and
become editable into Widget Inspector. Usually properties
changes are reflected into selected widget with few exceptions.

- CONSTRUCTING SIGNAL TABLE WITH WI
----------------------------------
If the selected widget is able to generate signal WI will
show you all available signals on that widget togheter
with signal table until this moment constructed.
Clicking on one of the signal button will add an entry to signal table.
The signal table looks like should be into source code.
Selecting a table entry and clicking on the list column
labeled "Write or jump to response method" will write or jumpt to
the response method signature both on .h and .cc form file.
You can achieve same result double clicking on an table entry.
To delete a table entry select it and use righ-button pop-menu at this end.
Response method comes with a default name, to change this use
the entry widget at the right side of the corresponding signal button.
If you change the widget name, signal table is updated and all corresponding
signal response names will be changed accordlying unless you have
already edited it or added it to signal table.

- ADDING  WIDGET WITH WI (Widget Inspector)
-------------------------------------------
WI let's you to select any widgets into the form.
The widget tree shows you widgets layout and dependencies,
clicking on a tree node select the underlying widget.
To add an widget using WI is straightforward:
- select an widget from tool palette
- select on widgte tree the widget where you drop the new
widget
- right click, a pop menu will show you what are you dropping
and where.
- select the pop-menu item, the  widget will be dropped
Tip:
The dropping pop-menu will appear only if you select a container as widget.


- EDITING  WIDGET WITH WI (Widget Inspector)
--------------------------------------------
Selecting an widget on widget tree is the same as selecting it
with the mouse on edit form, both properties page and
righ-button pop-menu are at your hands.


- EDITING MENUS
---------------
Editing menu items is a little different from other widgets.
Mainly there are two cases:
- a menu item that is contained into a menu bar and do not have
attached submenus
- a menu item that has attached submenus
The former is equal to other widgets, select it and edit
properties, the latter requires to "lock" before editing.
Locking is accomplished double clicking on the item, locking
a menu deactivates object inspector.
Attached menu will be marked and you can use right button pop menu
to edit properties or perform other actions. Properties setting
is made using a copy of object inspector modal showed.
To unlock menu double click again on menu.
Another easier way is using WI, in this case just select and edit
both menu items and menus in the usual way.
I have to admit that menu editing is difficult to some degree,
i suggest to use WI at this end, is easier and does not
requires to lock menus.
In the future a menu factory ala gtk+ will be supported.






