From: James L. <ja...@mo...> - 2001-12-16 23:36:21
|
Dear Mattia (or others, if they can help), I've been delving into how to use wxValidators, and I think I understand the concept (and I like it!). However, I'm having real trouble deriving my own validator (called, unimaginitively, myValidator) from Wx::PlValidator. >From the wxWindows documentation, all validators must implement a Clone method. I have tried implementing a Clone method, which I can see getting called, but myValidator's Validate, TransferFromWindow, and TransferToWindow never seem to get called. Here is my code (with the methods apart from Clone doing nothing useful apart from printing to STDOUT): VVVVVVVVVVVVVVVVVVVV use Wx; package myValidator; use vars qw(@ISA); @ISA = qw(Wx::PlValidator); sub new { my $class = shift; my $this = $class->SUPER::new(); return $this; } # see the docs for the three following functions sub TransferFromWindow { print "TransferFromWindow called\n"; return 1; } sub TransferToWindow { print "TransferToWindow called\n"; return 1; } sub Validate { print "Validate called\n"; return 1; } sub Clone { my $this= shift; print "Clone called\n"; # clone by creating a new object, which should, in the real class, have copies of all # properties of $this # could/should we use something like Storable::dclone here?? my $tmp = myValidator->new; return $tmp; } 1; ^^^^^^^^^^^^ A code snip from my main program, where I'm trying to test the validator, looks like this: vvvvvvvvvvvvvvvvvv # add wxValidator for the raw text, using the getter generated by wxDesigner my $objText = $this->txtRaw; my $sText = 'Hello'; # note that the constructor for myValidator does nothing with arguments yet my $vldTmp = myValidator->new(0,\$sText); $objText->SetValidator($vldTmp); # various attempts to get the validator to kick in! $this->TransferDataToWindow(); $this->TransferDataFromWindow(); $objText->Validate(); ^^^^^^^^^ However, I do not see the validator's methods being invoked. Could you post a very simple example of how to create a validator class in Perl, and how to create a frame which uses it, please? Thanks a lot, James Lavery MicroSec Ltd/Monthtwo Systems Ltd |