[pygtk] gtk.TreeModel.iter_children() method, how often should it be called?

John Finlay finlay at moeraki.com
Tue Jun 23 00:35:20 WST 2009


Try asking this question on the gtk list gtk-list at gnome.org. It's more 
likely someone there would have the answer.

John

Gerald Britton wrote:
> I don't think that makes sense.  For example, it does stop calling
> iter_children at some point and display the tree.  In my case, the
> first time the tree is build, it makes two calls to iter_children and
> then displays the tree and waits for something to happen (I still
> think that two is one too many, but I can live with it).  The next
> time, it calls iter_children over 2000 times before it displays the
> tree.
>
> That can't be right!
>
> So, the question remains, "When does the TreeModel stop calling
> iter_children and display the tree?"
>
> It obviously does stop calling iter_children at some point,  I can
> show that. But, what are the circumstances?  What is it looking for?
>
> On Mon, Jun 22, 2009 at 6:28 AM, Chris Camacho<chris_camacho at yahoo.com> wrote:
>   
>> As far as I could tell that's just the way it works *if* you could
>> suspend the calls to iter_children it would stop working...
>>
>> --- On Sat, 20/6/09, Gerald Britton <gerald.britton at gmail.com> wrote:
>>
>>     
>>> From: Gerald Britton <gerald.britton at gmail.com>
>>> Subject: Re: [pygtk] gtk.TreeModel.iter_children() method, how often should it  be called?
>>> To: "Chris Camacho" <chris_camacho at yahoo.com>
>>> Cc: pygtk at daa.com.au
>>> Date: Saturday, 20 June, 2009, 11:11 PM
>>> I hear you, but I still need a direct
>>> answer to the question, "What
>>> makes the TreeModel stop calling iter_children?  I
>>> can't find a clear
>>> explanation and I can't figure it out by looking at the
>>> calls that
>>> come into my method either.
>>>
>>> On Thu, Jun 18, 2009 at 11:18 AM, Chris Camacho<chris_camacho at yahoo.com>
>>> wrote:
>>>       
>>>> jeeze not being able to just reply is a pain
>>>>         
>>> anyhow....
>>>       
>>>> I looked into using treemodels connecting to
>>>>         
>>> databases
>>>       
>>>> from what I could tell it seems to initially iterate
>>>>         
>>> all items
>>>       
>>>> and either copies them or creates meta data about the
>>>>         
>>> items
>>>       
>>>> (I didnt look into the implementation)
>>>> Depending on how things were added it would also seem
>>>>         
>>> to iterate the whole
>>>       
>>>> set again!
>>>> I think the standard treemodel is ok for small numbers
>>>>         
>>> (sub 200)
>>>       
>>>> but I had to end up paging 1,000's of items 100 at a
>>>>         
>>> time
>>>       
>>>> (interestingly this is what the gnome db widgets
>>>>         
>>> do...)
>>>       
>>>> I've been tempted to weld together my own data grid
>>>>         
>>> with a viewport
>>>       
>>>> and moving entry widgets but this would at a guess
>>>>         
>>> need C and I haven't
>>>       
>>>> had the time to look into it
>>>>
>>>>
>>>> --- On Thu, 18/6/09, Gerald Britton <gerald.britton at gmail.com>
>>>>         
>>> wrote:
>>>       
>>>>> From: Gerald Britton <gerald.britton at gmail.com>
>>>>> Subject: [pygtk] gtk.TreeModel.iter_children()
>>>>>           
>>> method, how often should it be called?
>>>       
>>>>> To: pygtk at daa.com.au
>>>>> Date: Thursday, 18 June, 2009, 2:50 PM
>>>>> Hi -- I think I have a problem but
>>>>> I'm not sure since I'm relatively
>>>>> new to the TreeModel and how it works.  Here's
>>>>>           
>>> the
>>>       
>>>>> scenario:
>>>>>
>>>>> I use TreeModel to display rows of data from a
>>>>> database.  Upon
>>>>> startup, the TreeModel is built and I notice two
>>>>>           
>>> calls to
>>>       
>>>>> the
>>>>> gtk.TreeModel.iter_children() method.  Later, I
>>>>>           
>>> change
>>>       
>>>>> some data in
>>>>> one of the rows.  The next time the TreeModel is
>>>>> built,
>>>>> gtk.TreeModel.iter_children() is called thousands
>>>>>           
>>> of times
>>>       
>>>>> before the
>>>>> display is refreshed. Oh, the database has less
>>>>>           
>>> than 50
>>>       
>>>>> rows of data
>>>>> in it!
>>>>>
>>>>> So, two questions:
>>>>>
>>>>> 1. Is this normal (I hope not!) behavior?
>>>>>
>>>>> 2. What tells the TreeModel to stop calling
>>>>> gtk.TreeModel.iter_children()?  How does the TM
>>>>>           
>>> know
>>>       
>>>>> that it has done
>>>>> everything it needs to do?
>>>>>
>>>>> --
>>>>> Gerald Britton
>>>>> _______________________________________________
>>>>> pygtk mailing list   pygtk at daa.com.au
>>>>> http://www.daa.com.au/mailman/listinfo/pygtk
>>>>> Read the PyGTK FAQ: http://faq.pygtk.org/
>>>>>
>>>>>           
>>>>
>>>>
>>>>         
>>>
>>> --
>>> Gerald Britton
>>>
>>>       
>>
>>
>>     
>
>
>
>   



More information about the pygtk mailing list