Boost logo

Boost :

From: John Torjo (john.lists_at_[hidden])
Date: 2003-08-09 05:12:05


Hi Eugene,

I know this is a little late ;), but I've been so busy lately.

I took a look at guist.zip.
Well, I have to say that I don't like it :(

Basically, I don't think you should be concerned about data at such a low
level.

I think there should be a layer that represents gui objects (windows, views,
controls, dcs, etc.), and ON TOP OF THIS, have representations of data,
based on real-life scenarios.

Like, for a list_control that should show employees, we would expect it to
show an array of employees. Therefore, have a
list_control_with_data< employee> employees_list;

You link a container of employees, somewhat like this:

typedef gui_container< std::list< employee> > gui_employees;
gui_employees empls;
... // fill it

employees_list.bind_to( empls);

// to read employees, do something like
gui_employees::lock_for_read cont = gui_employees.for_read();
// cont.get() returns an STL-like container for reading.
std::for_each( cont.get().begin(), cont.get().end(),
    print_to_cout);

// to modify employees, do something like:
gui_employees::lock_for_write cont = gui_employees.for_write();
employee john_doe = ...;
*cont.get().first() = john_doe;

As a matter of fact, I wanna build a GUI but for win32 only.
I'm not sure when I'll have the time, but I'll do it. This is because I only
have experience with win32 GUI and it will take much less time.

Best,
John

----- Original Message -----
From: "E. Gladyshev" <egladysh_at_[hidden]>
To: "Boost mailing list" <boost_at_[hidden]>
Sent: Thursday, July 31, 2003 2:57 AM
Subject: [boost] GUI/GDI template library

> I really enjoyed discussing the library with you guys.
> I think I am getting a bit close to what the library
> should look like from my personal standpoint.
>
> The main ideas come from the MFC's document/view
> architecture, STL and present discussion.
>
> The main building blocks of the libarary will be two
> classes, 'view' and 'viewdata'. Both classes will be
> thread-safe.
>
> It is similar to the document/view architecture in
> MFC.
>
> The 'viewdata' provides a connection between
> 'real-world' data
> and instances of the 'view' class. Several 'view'
> objects can be
> connected together in terms of sharing an instance of
> data.
>
> The 'view' class is just something that can show the
> data.
> For example a single cell in the standard list control
>
> will be derived from the 'view' class as will the
> whole list control itself.
>
> The 'view' class will have an event map. The event
> map
> will be implemented as pairs, (event, action).
> It'll need to be discussed.
> The events will be asynchronous, so that the actions
> will
> be called in the context of an internal thread.
> I think the boost::signal libarary will work just
> fine.
>
> The 'view' classes could be combined as STL
> containers.
> There will a set of gui managers that will be able to
> traverse
> such view containers and perform various actions or
> enforce
> layout rules. I think the gui managers will be
> implemented
> using the 'visitor' design pattern.
>
> The attached file is a demonstration of some these
> ideas. It is very simple.
>
> The main file is gui.h
> The example consists of a dialog box with connected
> static controls. If you change data in one control
> the connected control is updated automatically.
> It also shows how the GUI library communicates
> to the physical GUI platform (win32 in this case).
> The physical platform can be easily replaced w/o
> any changes to the library itself.
>
> The example doesn't have any event mechanism yet
> and it is not a thread-safe implementation.
>
> The example uses the boost::shared_ptr template.
>
> Eugene
>
>
>
> __________________________________
> Do you Yahoo!?
> Yahoo! SiteBuilder - Free, easy-to-use web site design software
> http://sitebuilder.yahoo.com

----------------------------------------------------------------------------

----
> _______________________________________________
> Unsubscribe & other changes:
http://lists.boost.org/mailman/listinfo.cgi/boost
>

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