
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