$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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