← Back to team overview

kicad-developers team mailing list archive

Re: validators

 

A couple of additional data-points:

The wheel isn’t much to reinvent.  There’s not a lot to the wxWidgets numeric validators.  (The num validator, int validator and floating point validator together make up only 300 lines of commented code.)

The developer has to add UNIT_BINDERs for each unit-scaled control anyway; at that point having to set up a validator in wxFormBuilder is more work as opposed to less.

The same for evaluation: the UNIT_BINDER handles that by default, or you can turn it off, but there’s nothing you have to add.

Cheers,
Jeff.

PS: this version of the Grid Settings dialog shows just how simple a dialog using the unit binder can be.  It handles typed-in unit conversions, evaluation, and validation.

https://git.launchpad.net/~jeyjey/kicad/tree/pcbnew/dialogs/dialog_set_grid.cpp 


> On 26 Feb 2018, at 14:23, Wayne Stambaugh <stambaughw@xxxxxxxxx> wrote:
> 
> Hey Jeff,
> 
> This is a better argument.  I will counter by suggesting that the
> OnChar() event handler can be overridden to provide the behavior we
> need.  I realize that it would be difficult to perform units
> verification and/or numerical evaluation in the OnChar() event handler
> but you can prevent any illegal characters from be entered which AFAIK
> UNIT_BINDER does not handle.  UNIT_BINDER handles everything after the
> characters have been entered into the control so the user has to clean
> up any entry issues after the fact.  I'm not shooting down the idea of
> UNIT_BINDER, I just want to be sure we are not reinventing the wheel.
> 
> Cheers,
> 
> Wayne
> 
> On 2/25/2018 6:01 PM, Jeff Young wrote:
>> Hi Wayne,
>> 
>> The primary issue is that they try to do all their validation through OnChar().  As JP mentioned, this leads to problems like typing 0 to start a number.  But it also means the only way they have to guarantee a number is to allow only digits, zero-or-one minus sign, and zero-or-one decimal separator.  This strategy is completely unsuitable for handling typed-in units, never mind evaluation.
>> 
>> Cheers,
>> Jeff.
>> 
>> 
>>> On 25 Feb 2018, at 22:21, Wayne Stambaugh <stambaughw@xxxxxxxxx> wrote:
>>> 
>>> Jeff,
>>> 
>>> I'm not opposed to this solution but I need technical information as to why we should use one solution over another.  "Brain dead" is not a technical reason and doesn't really help me make an informed decision. I've used validators for simple edit control validation in the past and they worked just fine so I need something tangible as to why they are unacceptable in this case.  I'm not saying I agree or disagree with you, I just need something more to go on.
>>> 
>>> Cheers,
>>> 
>>> Wayne
>>> 
>>> On 02/24/2018 04:18 PM, Jeff Young wrote:
>>>> I looked in to wxWidget’s validators, and they’re definitely challenged.  (Brain-dead might be more accurate.)
>>>> As part of the units overhaul I’m going to propose making widespread use of the UNIT_BINDER, which is a wrapper for a wxTextEntry/wxStaticText-tuple.
>>>> As a wrapper it’ll be easy to add evaluation and validation to it, and allow most all other clients to wash their hands of unit display, unit conversion, evaluation, and validation.
>>>> (We’ll probably want to rename UNIT_BINDER something more generic at that point.)
>>>> Cheers,
>>>> Jeff.
>>>>> On 23 Feb 2018, at 20:10, Wayne Stambaugh <1751315@xxxxxxxxxxxxxxxxxx> wrote:
>>>>> 
>>>>> @JP,
>>>>> 
>>>>> Understood but we can always create our own validator derive from the
>>>>> base wxNumValidator or wxValidator object if wxFloatingPointValidator is
>>>>> to restrictive.  As for the numeric limiting, if you set the limit's to
>>>>> 0.5 than 0.6 is illegal both as an initial value and as user entered
>>>>> value so that is just the behavior of the validator which we could also
>>>>> override in a derived object.
>>>>> 
>>>>> On 02/23/2018 02:39 PM, jean-pierre charras wrote:
>>>>>> @Wayne,
>>>>>> 
>>>>>> I was never impressed by the wxFloatingPointValidator.
>>>>>> 
>>>>>> AFAIK, for instance, if a minimal value is fixed to 0.5, you cannot enter a value starting by 0 like 0.6 (just because starting a value by 0 is too small)
>>>>>> You need to enter 1.6 and after change 1.6 to 0.6
>>>>>> 
>>>>>> But the issue here is different:
>>>>>> In countries using a comma as separator, we use both the . or the , to enter a floating point value.
>>>>>> In a dialog, these 2 separators *must be* equivalent when the separator is the comma.
>>>>>> 
>>>>>> But wxFloatingPointValidator does not accept both separators, only the
>>>>>> comma.
>>>>>> 
>>>>>> This is very annoying.
>>>>>> 
>>>>>> If we want to use a FloatingPointValidator, we need to create our own validator.
>>>>>> For me wxFloatingPointValidator just does not work in Kicad.
>>>>>> 
>>>>> 
>>>>> -- 
>>>>> You received this bug notification because you are a member of KiCad Bug
>>>>> Squad, which is subscribed to KiCad.
>>>>> https://bugs.launchpad.net/bugs/1751315
>>>>> 
>>>>> Title:
>>>>> pcbnew: float point separator '.' truncate fractional part (default
>>>>> separator is ',')
>>>>> 
>>>>> Status in KiCad:
>>>>> New
>>>>> 
>>>>> Bug description:
>>>>> For example: if set in dialog 'Move exactly' `Move vector X` to 2.5 then number truncated up to 2.
>>>>> If set 2,5 then number not truncated (OK).
>>>>> I use the RU locale.
>>>>> 
>>>>> Application: kicad
>>>>> Version: 5.0-dev-unknown-997d4de~62~ubuntu17.10.1, release build
>>>>> Libraries:
>>>>>     wxWidgets 3.0.3
>>>>>     libcurl/7.55.1 OpenSSL/1.0.2g zlib/1.2.11 libidn2/2.0.2 libpsl/0.18.0 (+libidn2/2.0.2) librtmp/2.3
>>>>> Platform: Linux 4.13.0-32-generic x86_64, 64 bit, Little endian, wxGTK
>>>>> Build Info:
>>>>>     wxWidgets: 3.0.3 (wchar_t,wx containers,compatible with 2.8) GTK+ 2.24
>>>>>     Boost: 1.62.0
>>>>>     Curl: 7.55.1
>>>>>     Compiler: GCC 7.2.0 with C++ ABI 1011
>>>>> 
>>>>> Build settings:
>>>>>     USE_WX_GRAPHICS_CONTEXT=OFF
>>>>>     USE_WX_OVERLAY=OFF
>>>>>     KICAD_SCRIPTING=ON
>>>>>     KICAD_SCRIPTING_MODULES=ON
>>>>>     KICAD_SCRIPTING_WXPYTHON=ON
>>>>>     KICAD_SCRIPTING_ACTION_MENU=ON
>>>>>     BUILD_GITHUB_PLUGIN=ON
>>>>>     KICAD_USE_OCE=ON
>>>>>     KICAD_SPICE=ON
>>>>> 
>>>>> To manage notifications about this bug go to:
>>>>> https://bugs.launchpad.net/kicad/+bug/1751315/+subscriptions
>>>> _______________________________________________
>>>> Mailing list: https://launchpad.net/~kicad-developers
>>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>>> More help   : https://help.launchpad.net/ListHelp
>>> 
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~kicad-developers
>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>> More help   : https://help.launchpad.net/ListHelp
>> 



References