Boost logo

Boost :

From: Reece Dunn (msclrhd_at_[hidden])
Date: 2005-02-18 11:50:51


Matthew Johnson wrote:
> I spent some time reading the archives regarding the gui project that
> was started towards the end of last year. Is that project still
> underway? What is the best way of keeping up with the status of it?

Hi Matthew,

I am still interested in developing such a library and am using parts of
it in a few of my own projects. The general feelings I got from those
discussions was that:

1. A "traditional" heirarchy approach to the UI objects (buttons, list
boxes, etc.) is not the right way to go. There is a complexity here when
either (a) developing a framework from the underlying
C-style/Objective-C API, or (b) building the framework on top of an
existing framework such as Qt, wxWidgets, MFC or WTL.

2. Using boost::signals is the best way to go for event handling. The
issues here involve providing the event mechanism for the core API and
one that interacts with a frameworks event model (such as the WTL
message maps).

3. There was a lot of discussion relating to use of native components
vs custom-drawn graphics/UI objects. I still believe that there should
be a graphics unit that handles graphics/font operations and a native-ui
unit that provides an implementation of the native UI (frame, buttons, etc.)

4. Discussion relating to 3 was relating to the document model being
used. I believe that this can be done through a combination of graphics
and UI objects. For example (in Windows):
* Grid -- a custom control
* Table -- a listview UI component
* Document -- a richedit UI component
* HTML -- an mshtml component
* VectorGraphics -- custom use of the graphics unit to render the
vector elements

5. Relating to 3&4 was discussion about HTML/CSS. There are various
areas that this comes into play, for example a color object interacting
with the CSS color (name, RGB, etc.) and the rectangle/rect object.

My current thinking on a GUI library is to make it modular. Thus,
Boost.Platform would form the base (encapsulating OS and library
detection, strings (ASCII/Unicode builds in Windows, string conversions,
etc.), entry-point abstraction). Then you have Boost.Geometry (rect,
point, size), Boost.Event, Boost.Graphics and Boost.UI.

Regards,
Reece


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk