Notes for the manual: It is very much a direct manipulation UI builder. Select widgets from the palette and place them onto windows. Use the property editor to edit properties of widgets. Context-sensitive popup menus are also provided. If you've used something like Visual Basic you should feel quite at home. However, Gtk interfaces differ from VB in that widgets are not normally given explicit positions, but are placed in containers such as boxes and tables which are able to resize dynamically as the window shrinks or expands. Thus creating the structure of the window requires a little initial thought and is best done by sketching on paper. Once you've decided on the layout you create the interface by adding the outermost containers first, and eventually adding the individual widgets which make up your interface. The UI Builder uses special 'placeholders' in the windows, which you replace with the widgets you want in your interface. (If you get really stuck with boxes and tables, there is a 'Fixed' container which supports a layout just like VB - but your windows won't look good when resized.) Main windows: Project window Lists the main components of the project, which consist of windows, dialog boxes, popups & popup menus. Menu bar has commands for opening/saving projects, writing source code, showing palette/properties windows, and setting grid/snap options (used for fixed containers only). Palette Shows icons representing the widgets available, as well as the 'selector' (shown as an arrow) which is used to select widgets. To add a widget to a window, select the widget in the palette, and select the position in the window where you want it to be added. Note that after adding a widget, the selector becomes active again. If you want to add multiple widgets of the same type, hold down the control key when selecting the widget in the palette. When you have finished adding the widgets, you will have to select the selector again yourself. Properties Shows the properties of the currently selected widget, and allows you to alter them. The properties are split over 6 pages - widget, place, basic, style, accelerators, & signals. Many of the properties also have tooltips which can be seen by holding the mouse over the property labels. The 'widget' page contains the name given to the widget and any properties specific to the type of widget, e.g. a label will have the label text property here. The 'place' page contains properties which relate to the widget's position in its container widget. It is only applicable for widgets in tables and boxes, and will be empty in all other cases. The 'basic' page contains properties common to all widgets, such as the width and the height of the widget. Some properties may be insensitive if they do not apply to the currently selected widget, e.g. a widget in a box container will have its x and y properties set insensitive since these should not be used in a box. The 'style' page shows the style of the widget - the various colours and backgrounds used for drawing the widget in each of its 5 possible states. The widget can inherit the style of its parent, in which case the rest of the style page will be insensitive. **Setting the font is pretty difficult at present. Styles can be named and shared between many widgets, by giving the style a name or selecting the name of a previously-created style. The notebook on the styles page shows the 5 possible states of a widget, and the colours used for that state. Colors and backgrounds can be copied and pasted. The 'accelerators' page... The 'signals' page... UI Components These are the actual windows of your user interface which are being created. When the selector is active, use the left mouse button to select widgets. Holding the control key enables the selection of multiple widget. Holding the shift key selects the widgets behind the widget being pointed at. This allows you to view and edit the properties of the containers. Pressing the right mouse button shows a context-sensitive popup menu. This contains commands relating to the particular widget, with submenus containing commands relating to all widgets behind this widget (i.e. its containers).