Re: Gtk2::ComboBox - setting value by string?
- From: muppet <scott asofyet org>
- To: gtk-perl mailing list <gtk-perl-list gnome org>
- Subject: Re: Gtk2::ComboBox - setting value by string?
- Date: Wed, 9 Aug 2006 07:47:09 -0400
On Aug 8, 2006, at 10:17 PM, Daniel Kasak wrote:
John M. Burian wrote:
It doesn't fix the 'bug', such as it is, but a technique I use is
to, as
I'm adding values to the ListStore, create a hash that maps the
strings
back to the indicies of the ListStore, then add a reference to
that hash
to the ComboBox object.
$list = Gtk2::ListStore->new ("Glib::String");
map {
$list->set ($iter = $list->append, 0, $_);
$$href{$_} = $list->get_string_from_iter ($iter);
} (qw/Option1 Option2 Option3/);
$combobox = Gtk2::ComboBox->new_with_model ($list);
$combobox->{hash} = $href;
Then later, to set the value of the combobox using the string:
$combobox->set_active ($combobox->{hash}{'Option1'});
This relies on both perl's implicit conversion from strings to
integers and the fact that list paths have only one index, so the
path string converts cleanly to an integer.
Are you allowed to do this? I've read in a number of places that it's
dangerous to keep iters around for any length of time ... ie that they
are only valid immediately.
He's calling Gtk2::TreeModel::get_string_from_iter(), which returns
"a string representation of an iter":
http://developer.gnome.org/doc/API/2.0/gtk/GtkTreeModel.html#id3249895
This is actually equivalent to $model->get_path ($iter)->to_string
(). It's safe to save treepath objects, because they are just lists
of integer indices, but it is important to remember that the indices
are invalid when the model is altered.
--
That's it! It's one thing for a ghost to scare my children, but it's
another to play my theremin!
- Homer Simpson
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]