RE: Vaiidators

2013-02-12 Thread steveco.1959
Hi James,

 I want to enter a time of day value such as ##:## and ensure the colon
 was entered.

I'd live to hear if you manage to do this.


2. I have tried a number of regex strings:
  (\d+)  allows entry of numbers
  (:)  allows entry of colons
  (\d+:) allows no entry at all
 (\d+:\d+) allows no entry at all
 (\d{2,}:\d{2,})allows no entry at all

Do validators not allow for mixed alphanumeric fields? Seems like a
common need.

I only managed to get a one character code, like \d+.

But the whole concept of these transfer buffers seemed a bit
counter-intuitive and old-school to me and so I didn't try very hard.

Let me know if you crack it.  As I'm writing this, I realise I never used
any regex feedback like \1 or whatever.

Good luck,

Regards

Steve.



Re: Vaiidators

2013-02-12 Thread Sergei Steshenko




- Original Message -
 From: James Lynes jmlyne...@gmail.com
 To: wxperl-users@perl.org
 Cc: 
 Sent: Monday, February 11, 2013 2:15 AM
 Subject: Vaiidators
 
 Hi:
 
 I am playing with creating a custom dialog using validators and I seem to
 have hit a wall. I am using the code from the wxPerl demo program.
 
 My setup is:
     my $timeval = LCDAlarmClockDialog::Validator-new( qr/(\d+)/,
 \($self-{data}) );
 
     I want to enter a time of day value such as ##:## and ensure the colon
 was entered.
 
 print Dumper($timeval) says:
     $VAR1 = bless( {
                  'data' = \'10:00',
                  'validate' = qr/(?^:(\d+:))/
                }, 'LCDAlarmClockDialog::Validator' );
 
 1. Not sure what the pre-pended ?^: means. It was added by
 Wx::Perl::TextValidator
 
 2. I have tried a number of regex strings:
       (\d+)              allows entry of numbers
       (:)                  allows entry of colons
       (\d+:)             allows no entry at all
      (\d+:\d+)         allows no entry at all
      (\d{2,}:\d{2,})    allows no entry at all
 
     Do validators not allow for mixed alphanumeric fields? Seems like a
 common need.
     If they do, how do you structure it?
 
 Thanks, James
 

I don't know wxPerl specifics, but how about a very basic regular expression:

^(\d+)\:(\d+)$

?

Try this in a junk script first.

Regards,
  Sergei.



Re: Vaiidators

2013-02-12 Thread Johan Vromans
James Lynes jmlyne...@gmail.com writes:

 print Dumper($timeval) says:
 $VAR1 = bless( {
  'data' = \'10:00',
  'validate' = qr/(?^:(\d+:))/
}, 'LCDAlarmClockDialog::Validator' );

 1. Not sure what the pre-pended ?^: means. It was added by
 Wx::Perl::TextValidator

 2. I have tried a number of regex strings:
   (\d+)  allows entry of numbers
   (:)  allows entry of colons
   (\d+:) allows no entry at all
  (\d+:\d+) allows no entry at all
  (\d{2,}:\d{2,})allows no entry at all


It's a long time ago that I playes with Validators, but I seem to recall
that there was something with the moment the test was applied. 
The validator is really a filter, so it restrics what characters can be
input. When you try (\d+:) then youy're matching more than one character
against the input, which will always fail since the input initially is
empty and the first character will never match the pattern.

So the validator pattern should be sort of character class, e.g. [\d:]
and you need an additional end-form validator ^(\d{2,}:\d{2,})$ in
TransferFromWindow.

-- Johan