← Back to team overview

kicad-developers team mailing list archive

Re: validators

 

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
> 


Follow ups

References