[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gtk-app-devel
Subject:    Re: Setting a Tree View Cell to insensitive and uneditable
From:       dhk <dhkuhl () optonline ! net>
Date:       2010-04-22 10:22:21
Message-ID: 4BD0235D.1000206 () optonline ! net
[Download RAW message or body]

On 04/22/2010 02:55 AM, Freddie Unpenstein wrote:
> From: "dhk", Date: 20/04/2010 09:46:
> 
> > On 04/19/2010 01:34 PM, Nicolas Soubeiran wrote:
> > > When creating your model set a specific column with a boolean property.
> > > gtk_list_store_new(N_COLUMN, G_TYPE_STRING, G_TYPE_BOOLEAN);
> > > 
> > > Then in the treeview create a column using
> > > gtk_tree_view_column_new_with_attributes("title", text_cell,"string",
> > > STRING_COLUMN, "editable", EDITABLE_COLUMN, NULL);
> > 
> > Both replies seem to be saying the same thing, but I still don't
> > understand why the attribute values need to be stored in other columns.
> > Also I don't see how storing the attributes in other columns affect an
> > individual cell.
> 
> They are.  That is the typical way of doing it.  ANY table column (as long as it's \
> the right type) can be linked to ANY attributes of ANY cells in that row (note the \
> plurals - the mapping is essentially restricted only by value type).  Notice also \
> that for a column showing a text string, the text shown in that column is just \
> another attribute of the cell, as is its colour, font, editability, whatever.  A \
> value in a table can also be linked to any compatible attriute of any one of the \
> cells in the table, or even several attributes of the same cell.  So you could have \
> a cells editability controlled by a table column, and in the very next cell be \
> showing true/false whether the previous cell is editable, from the same table \
> value, or two boolean attributes of a single cell controlled from the same table \
> value, etc. 
> 
> > So this is the way to control the editability and sensitivity of a
> > single cell without changing the cells above and below the cell in the
> > same column. Does this apply for all attributes?
> 
> There is also another method of controlling cell attributes.  For every row, an \
> optional function will be called (I forget the name off-hand).  But this function \
> is called once per row, and can extract information from the table, and set the \
> attributes of however many of the cells as it wishes.  I've used that a couple \
> times particularly where I woul have to have several values in the table to \
> accomplish one task, such as a colour, boolean and integer field, all to reflect \
> one property.  Instead I've set the row function to read the single boolean field, \
> and set the relevant cell attributes accordingly. 
> But for something simple like editability, using a table columns is certainly \
> simpler, and probably more understandable also. 
> 
> As I understand it, Gtk essentially iterates over the list of attribute/value \
> linkages, which are nothing more than "for row number n, place the value of table \
> column x, into attribute y of tree view cell z", blindly and faithfully performing \
> each value copy in turn, per row of your tree view.  Any attribute you don't set, \
> will remain as it was at the time that cell renderer was established.  Likewise \
> there's nothing at all stopping you from setting one cell attribute more than once \
> (pretty useless), or setting several attributes to one value (often quite useful).  \
> The row function is simply another way of doing this same job, except that you do \
> the value copying yourself, ie. fetch the table value (or any other value), and you \
> set the relevant cell attributes from it as you see fit. 
> 
> Fredderic
> 

Thanks, for explaining.  I think I know what to do, I just have to get
comfortable with the idea.  After all these years, I never looked at
trees this way.

Thanks again,

dhk
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic