custom treemodel?



Say I've got a class containing a list of values.  For example, a
Palette class containing a list of colors (something like the
following incomplete class declaration):

  class Palette
  {
     public:
        typedef std::vector<rgb_t> color_list_type;
        // snipped other methods
        color_list_type& colors(void);

     private:
        color_list_type m_colors;
  };

Now say I want to display these values in a treeview.  One option is
obviously to copy all of the values from m_colors into a
Gtk::ListModel.  But this has a rather large disadvantage in that when
I make some changes in the treeview (i.e. add a new item, re-order
items, remove items), I would need to copy these items out of the
listmodel into a Palette whenever I want to use this group of items as
a Palette type.

I'd rather just have the treeview display data directly from the
Palette class so that I don't need to copy / synchronize things back
and forth.  So in order to display data directly from the Palette
class, I'd need to have Palette inherit from Gtk::TreeModel (i.e.
implement a custom TreeModel).  There is an example in gtkmm CVS that
shows how to implement a custom TreeModel, but unfortunately I haven't
had much luck deciphering it (especially the GlueItem stuff).  And
besides the example, the documentation on implementing custom
TreeModels is pretty sparse,  Has anybody really done this before?
Does anybody know of other examples I could look at?  Is there a
better way to solve this problem than implementing a custom TreeModel?

What I think would be helpful is some guidance on what methods need to
be implemented / overridden and approximately what they're supposed to
do, etc.  I'd be willing to put together a document like this (maybe
as a section in the tutorial) if I can get it figured out.

Thanks,
Jonner



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]