Re: Making custom class objects viewable via TreeView



On Wed, 2011-08-31 at 17:49 +0200, Adrian Zgorzalek wrote:
> But what have custom signals to do with making an object viewable via
> TreeView?
> 
> I have to specify TreeModelColumnRecord, should I put there a column
> which stores Foo?
> Then how to make certain fields visible in a View?

You can create your own Gtk::TreeViewColumn for the object which would
be appended to the TreeView, add a Gtk::CellRendererText to the column
and set the renderer on the column for the object using
Gtk::TreeViewColumn::set_renderer().  Also set a custom rendering
callback on the column for the object using
Gtk::TreeViewColumn::set_cell_data_func().  The slot can set the
Gtk::CellRendererText::property_text() property so that the appropriate
text is displayed.  Hope that helps.

> How those signals can help with exposing data?
> 
> 2011/8/31 lecas malecas <darkiiiiii gmail com>
>         I'm not sure if I understand what you're saying, but have you
>         considered using custom signals?
>         You could emit a signal in the Foo class which would send the
>         data you
>         want (but there could be a better way).
>         
>         On Tue, Aug 30, 2011 at 4:27 PM, Adrian Zgorzalek
>         <a zgorzalek gmail com> wrote:
>         > Hello,
>         >
>         > I got a bunch of questions connected with TreeView, making
>         data viewable
>         > via TreeView and some design issues.
>         >
>         > Firstly, I'll state a problem. I would like to have a
>         collection of Foo
>         > objects.
>         > They have their methods, store some data. I want the
>         collection to supply
>         > me, besides collection interface, some methods to call on
>         stored data.
>         > I also want to expose objects stored in the collection to
>         user, allow they
>         > to modify them, add, delete and reorder.
>         >
>         > Obvious idea is to use TreeView, but I met some serious
>         problems.
>         >
>         > First, how to make Foo objects viewable? Deriving from
>         > Gtk::TreeModelColumnRecord
>         > leads me to nowhere, since then I have no access to data
>         stored inside Foo,
>         > Gtk::TreeModelColumn<T> seems to be just a meta-data for a
>         model to create
>         > View and
>         > Store. More clearly, I want to e.g. have object representing
>         triple on plain
>         > (int, int, int),
>         > and got some methods like symmetry along a given line etc.
>         Implemeting it
>         > inside
>         > TreeModelColumnRecord is impossible - no access to stored
>         data. Making a
>         > class Foo
>         > that got 3 private ints leads me to no idea how to make this
>         object viewable
>         > through
>         > view.
>         >
>         > Ideally, I look for something like as follows:
>         > I have a Store that has Foo objects. Then to a View I add
>         columns like (x),
>         > (y), (z),
>         > corresponding to example above, and specify accessors
>         methods inside Foo
>         > object, so that
>         > View can correctly save and show data to/from a Foo.
>         >
>         > One more problem connected with deriving from
>         Gtk::TreeModelColumnRecord is
>         > that in my
>         > opinion it brakes OOP rule: its not Foo business to take
>         care of being
>         > viewable,
>         > it exposes methods to modify itself and get stored data, but
>         how it is done
>         > is just a matter of somebody
>         > writing class responsible for showing data to a user. Also
>         storing
>         > everything in one place:
>         > data and display issues, is making code messy.
>         >
>         > I suppose that deriving my collection from ListStore or
>         TreeStore will solve
>         > a problem
>         > of adding some methods to call on stored data.
>         >
>         > So far, after investigating materials I've found and after
>         some talks on IRC
>         > channel
>         > the only idea I have is to keep data in two places and try
>         to sync them, but
>         > it seems
>         > to be a pain in the neck, it also makes my memory usage
>         twice as more... so
>         > its not
>         > a solution at all.
>         >
>         > I would appreciate any help with this problem, I am not
>         looking for easy
>         > solutions,
>         > rather elegant.
>         > If elegant solution does not exist, then please point me the
>         least awful way
>         > to do what I want.
>         >
>         > Looking forward to hearing from you,
>         >
>         > Regards,
>         > Adrian
>         >
>         >
>         
>         > _______________________________________________
>         > gtkmm-list mailing list
>         > gtkmm-list gnome org
>         > http://mail.gnome.org/mailman/listinfo/gtkmm-list
>         >
>         >
> 
> _______________________________________________
> gtkmm-list mailing list
> gtkmm-list gnome org
> http://mail.gnome.org/mailman/listinfo/gtkmm-list

-- 
José



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