Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages | Examples

ParaGUI Documentation

1.1.7

Introduction

ParaGUI is a cross-platform high-level application framework and GUI (graphical user interface) library.
It can be compiled on various platforms (Linux, Win32, BeOS, MacOS, ...)

ParaGUI is completely based on the Simple DirectMedia Layer (SDL).
ParaGUI is targeted on crossplatform multimedia applications and embedded devices operating on framebuffer displays.

Highlights of the library

Installation

Installing from RPM

That's the easiest method:

    rpm -Uhv paragui-x.x.x.rpm
    rpm -Uhv paragui-devel-x.x.x.rpm

and you're set.

Requirements for building the sources

You will also need the correponding development packages.

Installation for distributions:

    tar -zxvf paragui-x.x.x.tar.gz
    cd paragui-x.x.x
    ./configure [options]
    make
    make install (as root)

Installation for CVS snapshots

Get the snapshot via CVS checkout or by downloading a tarball

    tar -zxvf paragui-cvs.tar.gz
    cd paragui
    sh autogen.sh
    ./configure [options]
    make
    make install (as root)

Available configure options

--enable-internalexpat
Linking with the expat shared library may cause problems on some systems.
This configure switch will enable an internal version of expat. (So you don't need to install the expat library anymore).

--prefix="path"
I found that many people out there simply forgot that this option exists in every configure script. I suggest to use "--prefix=/usr" for any RedHat and compatible (Mandrake, ...) system.

--disable-static
This option is also a common one but not known by many people. Use it if you don't need to build static link libraries. It will greatly increase the compilation (and linking) speed.

--enable-debug
Will produce debug messages during execution (slow).

--with-themedir=DIR
ParaGUI themefiles will be placed in DIR.
Default location is PREFIX/share/paragui

Installation hint:

Several people had troubles compiling CVS snapshots on SuSE and Slackware. If you get error messages running the autogen.sh script please try the following:

Change this line in autogen.sh<br>

    aclocal
to:
    aclocal -I /usr/local/share/aclocal

Compiling the sample applications

I noticed that many people didn't even realize that there are some useful sample apps and code snippets included in the source distribution.

To build them simply change to the "test" directory in the sources after installation of the library and enter the followwing commands:

    make

I would suggest to browse the source of "paratest" (paratest.cpp) to learn more about ParaGUI.
Another very useful sample is "dblbuffer" which shows how to use ParaGUI in combination with the SDL doublebuffer mode (game developers know what I'm talking about).
The XML layout loader capabilities are shown in "layouttest".

If you downloaded the documentation tarball the described procedure also applies to the tutorials included in docs (in the "tutorial" directory).

Conceptual overview

Widget organization

Widgets of ParaGUI organize themselves in widget trees (PG_Rectlist). When you create a PG_Widget with another object as parent, it's added to the parent's children list, and is deleted when the parent is.

A child normally also becomes a child widget, i.e. it is displayed in its parent's coordinate system and is graphically clipped by its parent's boundaries. For example, when the an application deletes a message box after it has been closed, the message box's buttons and label are also deleted, just as we'd want, because the buttons and label are children of the message box.

You can also delete child objects yourself, and they will remove themselves from their parents.

!! UNFINISHED !! - Need to say a bit more


The ParaGUI Project - Alexander Pipelka