
Hi, On Wed, 2009-07-01 at 23:32 -0300, Felipe Magno de Almeida wrote:
On Wed, Jul 1, 2009 at 9:08 PM, David Abrahams<dave@boostpro.com> wrote:
[snip]
Have you looked at Adam and Eve from Adobe,
Yes.
and the associated research papers?
No. Do you know where can I find it? They are linked at Adobe's web site.
I think these guys have gone a long way down the road to figuring out how to do things "right" in that domain.
They did. But they took a very different approach. With another language and all. Though I understand it can help a lot using a more specific language for GUI, I'm not still convinced it is the best approach. I think a C++-only, with RAII, exceptions, library can be very easy to use as well.
[ snip ] DSL's are a design concept. Embedding one is a implementation choice that is not required to learn the lessons of Adam and Eve.
Though I do have plans for creating a DSEL to model windows in the very far future. It would still be C++. No parsers, nor highly-dynamic-scripted languages involved. I just hope there's space for cppgui's goals after adam and eve.
You might want to look at Interviews first ( www.ivtools.org ) . It also has papers explaining layout and I *believe* use some of these concepts. It also had hglue and vglue ( h & V = horizontal and vertical ) which is where spring tabs comes from ( I think ). This work was later expanded by Mark Linton in FRESCO ( the original if it is still available on the net was distributed with a project called TargetJr ) - Not the FRESCO that morphed into Berlin. It extended Interviews idea of Object linking and Embedding. Unidraw ( built on top of Interviews ) extended layout concepts greatly by using QOCA which is a linear equations and inequalities solver that could make a reasonable attempt at graph layout ( a very non-trivial problem not normally associated with GUI's ). hth /ikh -- "I disapprove of what you say, but I will defend to the death your right to say it," Evelyn Beatrice Hall who wrote under the pseudonym S.G. Tallentyre in a biography of Voltaire. #include <std_disclaimer>