Re: Speedup insert into treestore



Hi Muppet!

On Sun, 9 Oct 2005 14:44:29 -0400, muppet said:

[...]
Iters are good for the duration of a signal handler or function call,  
and are invalidated by changes to the model.  What you've said  
suggests that you're storing iters, and that's not a valid thing to do.

Nope, I didn't store them, I did something like:

$view->set_model (undef);
$iter = $model->insert_before (undef, undef);
$model->set ($iter, ...);
$view->set_model ($model);

And this failed on me. Perhaps I did something wrong. I will try it again
this evening, using your code example as a guide.

Ciao
Florian

This is the basic idiom; i've written it for a list, but you can  
expand that to a tree without much difficulty.

    sub repopulate_list {
        my $view = shift;

        my $model = $view->get_model ();

        # unset the model, so that the view doesn't waste time updating
        # itself on every change to the model.  we'll restore it below.
        # typically the main loop won't run between now and then,
        # so there should be no chance for the idle to run and paint
        # an empty list (i.e., typically will not flicker).
        $view->set_model (undef);

        # if the model is sorted, you'd do well to disable sorting, too.
        my $id = $model->get_sort_column_id ();
        $model->set_sort_column_id (-2);


        # now clear and refill the list.
        $model->clear ();
        foreach my $val (@big_list_of_data) {
            $model->append ($model->append, 0, $val);
        }


        # re-enable sorting
        $model->set_sort_column_id ($id);

        # restore the model; this will redraw the whole thing.
        $view->set_model ($model);
    }



--
To me, "hajime" means "the man standing opposite you is about to hit  
you with a stick".
   -- Ian Malpass, speaking of the Japanese word for "the beginning"


Attachment: pgpmNSEu1dWJg.pgp
Description: PGP signature



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]