From: Mattia B. <mat...@li...> - 2005-09-25 08:20:38
|
On Mon, 19 Sep 2005 20:54:35 +0200 Jouke Visser <jo...@pv...> wrote: Hi, > I'm trying to use the Wx::Perl::TreeChecker's EVT_TREE_SEL_CHANGED. The > idea is to add extra items to the TreeChecker when an item in the tree > is selected. The event gets caught only one time however and when I > call GetSelection from within the eventhandler, it returns nothing (even > though I have certainly selected something. > > In the code I have something like: > > EVT_TREE_SEL_CHANGED($self, $THMTREEID, \&OnItemSelected); > > where $self is the dialog window and $THMTREEID is the id of the > Wx::Perl::TreeChecker. My sub OnItemSelected looks like this: > > sub OnItemSelected > { > my ($self, $event) = @_; > warn join(",",$self->{themetree}->GetSelection(TC_SEL_FULL)); > } The trouble here is that you are working at two different levels: the selection event that you are catching is the treectrl selection event that is fired when the item text is clicked. The treechecker however only selects items (and returns them in GetSelection) when the user clicks on the icons, and it does not give you any indication that anything happened. I am not sure if clicking on the text should be equivalent to clicking on the icon, but in any case EVT_TREE_SEL_CHANGED is not the event you need; IMHO it would be good for Wx::Perl::TreeChecker to provide a custom event to signal a change in the selection. Regards Mattia P.S.: note that with the current version of wxPerl the warn() above will print '1,1,1,1,1' if five items are checked because of a bug in my use of overload; this should only affect displaying the items, not functionality |