Re: liststore questions
- From: muppet <scott asofyet org>
- To: Dave M <dave nerd gmail com>
- Cc: gtk-perl-list gnome org
- Subject: Re: liststore questions
- Date: Fri, 8 Apr 2005 20:22:55 -0400
On Apr 8, 2005, at 7:38 PM, Dave M wrote:
1. I don't understand how the liststore works like this. In Tk, for
example, I would create an HList, and use something like this to add
to it:
$widget->itemCreate( entrypath, column, -text => "foo");
Is there a dummy's guide to how this works?
you can do
$model->set ($iter,
0, $col0_data,
1, $col1_data,
2, $col2_data,
3, $col3_data);
at any time during a tree model's lifetime, and all attached views will
update automatically.
you can update existing iters as well as add and remove iters at will.
there are other functions that you can use to keep the view scrolled to
the bottom as you append new rows.
it would help if you describe what you want you app to do, so we can
give you more specific advice.
if you're going to insert a whole lot of rows at once (more than a
hundred), it can be a good idea to remove the model from the view, do
the insertions, then put the model back into the view to avoid a deluge
of ui updates.
2. (Sorry to keep using Tk examples; it's all I know...) Is there a
gtk2 equivalent to $mw->update to refresh the screen? There are
various widgets that will need refreshed to create a "real-time" look
as data gets displayed in the columns.
depends on what $mw->update is supposed to do.
$toplevel->queue_draw;
will place a complete-redraw event on the queue to be handled at the
next idle. you can call this on any widget if you want finer
granularity.
in a lot of cases, if you have those other widgets listening to the
right events, it will all just work out; most widgets will call
queue_draw on themselves after a change. (using queue draw reduces
flicker resulting from rapid-fire repaints.)
if your ui isn't updating because you're in a tight loop or blocking on
a function call, there are other techniques.
something like this at the bottom of a loop can help:
# flush the event queue
Gtk2->main_iteration while Gtk2->events_pending;
if you're blocking on IO, then you want to look at
Glib::IO->add_watch().
if you have a function call that blocks or an intensive algorithm, you
may want to fork a child process to do that work, and monitor its
progress over a pipe.
--
"Ears! They help us -- Ears! They help us hear th--
Ea--E--E--E--Ears!"
-- A Sesame Street singing toy, with Yvonne gleefully pressing
the button over and over and over and over and...
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]