Re: intuitive concept of iter
- From: Daniel Kasak <dkasak nusconsulting com au>
- To: zentara <zentara zentara net>, gtk-perl-list gnome org
- Cc:
- Subject: Re: intuitive concept of iter
- Date: Fri, 03 Feb 2006 11:08:24 +1100
zentara wrote:
Hi,
Can anyone explain what an "iter" is?
I see it used in the docs for TextView, TreView, etc,
indifferent contexts, as if it is some basic entity.
Can someone define what an iter is, and why is it
so intertwined in the workings of Gtk2?
Are there any real-world analogies?
Thanks
I'll pass on my limited understand of what's going on :)
An iter is an 'iteration' - a single instance in a collection of
'things'. It's a pointer to a particular instance, that you can use to
refer to that instance immediately after getting hold of it ( apparently
it's invalid after anything has happened to the object you're dealing
with, so you can't hold onto them for any length of time ).
For example, a model for a combo might have 10 'rows' of data. To get a
pointer to the 1st row, you'd do:
my $iter = $model->get_iter_first
To get the next iter, you'd:
$iter = $model->iter_next($iter)
Or if someone has selected an item in with the combo box, and you want
to find out what they've selected, you want the 'active' iter ( ie a
pointer to the row containing the selected data ). So you'd do:
my $iter = $model->get_active_iter
Once you've got the iter ( a pointer to the right 'row' ), you can
extract data:
my $first_item = $model->get( $iter, 0);
my $second_item = $model->get( $iter, 1);
etc ...
When you come across other objects that use iters, it means that they're
basically storing & retrieving data in the same way. For example you
mentioned the TextView - to access characters in a TextView you do
something like:
my $textbuffer = $textview->get_buffer;
my ( $start_iter, $end_iter ) = $textbuffer->get_bounds;
That gives you pointers to the 1st and last characters. You can then go:
$value = $textbuffer->get_text( $start_iter, $end_iter, 1 );
to get the actual text.
--
Daniel Kasak
IT Developer
NUS Consulting Group
Level 5, 77 Pacific Highway
North Sydney, NSW, Australia 2060
T: (+61) 2 9922-7676 / F: (+61) 2 9922 7989
email: dkasak nusconsulting com au
website: http://www.nusconsulting.com.au
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]