Re: SimpleList questions from a beginner
- From: Bjarne Steinsbø <bosteins broadpark no>
- To: Ross McFarland <rwmcfa1 neces com>
- Cc: gtk-perl-list gnome org
- Subject: Re: SimpleList questions from a beginner
- Date: Tue, 30 Sep 2003 21:39:30 +0200
Ross McFarland wrote:
Bjarne Steinsbø said:
Question one: I noticed that I couldn't "push" an array to the
SimpleList. Instead, I had to push row by row. Is this a bug, or is it
meant to work this way? Looking at the implementation, I would guess
the same applies to "unshift"...
the fill button/branch shows how to completely replace the data in the list
with an array of array references (read array of rows.) i'd have to know more
exactly what you're trying to do to tell what is/isn't the case with
push/unshift, it can get kinda tricky.
What I did was to add another button (called it "Many"), since I wanted
to test the performance of this widget when handling large amounts of
data. Adding the button was just a question of adding it to the list of
buttons to make. In "btn_clicked" I then added a case to the switch for
my new button "Many". I first tried the code
...
elsif( $op eq 'Many' )
{
my @more;
for (my $i = 0; $i < 10000; $i++)
{
push @more, [
'many', $i, $i + $i/100, 1, 'many', undef, 'many', []
];
}
push @{$slist->{data}}, @more;
}
...
This is probably closest to the way I want to add data to the model,
i.e. the data already prepared in an array for adding, and then added to
the model in one go. At the time I hadn't looked at the implementation
of the SimpleList, so I also thought that this would have a better
performance than adding the data one row at a time. I know see that it
doesn't really matter that much.
However, it didn't work as expected. Only one row (the first one) was
added to the model. I had expected the call signature of the "push"
function to be honored, but it's not. From the "SimpleList.pm". the
problem seems to be in the PUSH (and SHIFT) function in ...::TiedList.
It's not expecting more than one parameter in addtion to the object
itself. This making any sense to you?
It is of course no big deal to change the code to add the data one row
at the time.
Question three: Am I on the right track? Does anybody have any example
code for customized renderers I could look at? Would I have to write
the renderer in C, or is the class inheritance between GObjects and perl
classes transparant enough for me to write my own class that inherits
from Gtk::CellRenderer and take it from there?
you're doing some pretty fancy things and you may be better of working
directly with the mvc stuff, or perhaps making your own 'ComlexList' widget,
modled on SimpleList that is better suited for your needs. SimpleList was
intended to be a way for someone that doesn't under stand all of the mvc stuff
to put a list widget in their app with only a few mins work, but obviously
it's capible of more. but at some point you'll run into it being more trouble
than it's worth. those type of 'extensions' are where Gtk2-Perl will have room
tro grow/improve after the initial wrapper libs are done. and i suspect they
will, whether the gtk2-perl teams does it or others.
as for customized renderers i would suspect you'd have better luck doing those
in C and then writting wrappers for them, but in theory it would be possible.
there's plenty of doc on writting your own widgets, that's the starting point,
either way it's going to be some work. a possible, although perhaps not ideal,
workaround is to have the editing take place in a dialog that is created on
the double click signal, it would be simplier to do, but not quite as smooth.
I'm not doing it yet... :-) I might decide that it's not really *that*
important , when I see how much work it's going to be. It will
definitely be pushed down on the stack of things to do if it turns out
that I have to do it in C. And, as you say, there is more than one way
to do it. If I decide to make my own TreeView, having SimpleList to
look at will definitely be a great help.
Thanks.
Bjarne
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]