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" <[EMAIL PROTECTED]> To: "Boost mailing list" <[EMAIL PROTECTED]> 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 > _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost