RE: [Cxxgui-devel] Design / lists / MVC
Brought to you by:
davidturner
From: David T. <Da...@fi...> - 2004-03-11 15:47:20
|
Hi > > The user must provide an adaptor class, called the Model. =20 > Canned models > > for various STL container types will be provided. The model also > > supplies metadata, such as column names. The Model derived=20 > from an ABC > called > > gui::data_model. >=20 > What would be the purpose of the metadata? Column names and types. I've decided that the MVC plan is just too unwieldy, so here's a simpler plan: struct column_type { std::string title; std::string type; // "string" | "bool" // + some nice constructors }; class data_view { public: template<typename ColIt> data_view(ColIt col_begin, ColIt col_end); // + other constructors // + swap(), operator =3D int column_count() const; void insert_column(int order, const column_type& col); void append_column(const column_type& col); void erase_column(int order); iterator insert(const_iterator where); iterator insert(const_iterator parent, const_iterator where); iterator append(); iterator append(const_iterator parent); iterator erase(iterator which); // + begin, end, rbegin, rend iterator children_begin(iterator parent); iterator children_end(iterator parent); // + const_iterator forms // + iterator_swap boost::signal1<iterator>& selection_signal(); }; where data_view::iterator::value_type =3D=3D std::vector<std::string> = (or an equivalent). How about that? It's much simpler, and if you really want it, an MVC framework can be built on top. This fits in better with the philosophy of keeping the GUI library as lean as possible. I'm going to have to use some or other bridged iterator pattern. Possibly use iterator_facade and make the implementation functions virtual. I'm looking into good ways of doing this (if anyone knows of a good way, please tell me ;-)). Regards David Turner |