← Back to team overview

kicad-developers team mailing list archive

Re: A fix for our TEXT_CTRL_EVAL class.

 

Cool.  I'll just wait till Michael’s changes are merged.

> On 25 Feb 2018, at 15:14, jp charras <jp.charras@xxxxxxxxxx> wrote:
> 
> Le 25/02/2018 à 15:03, Jeff Young a écrit :
>> Cool.  Thanks for the confirmation, Michael.
>> 
>> BTW, JP, could you let me know if you’re going to make this change.  I’ve been doing some work in
>> the NumericEvaluator to support the new units architecture and the hungarian notation is starting to
>> hurt my brain, so I’d like to reformat it (for 6.0, of course, but the fewer merge conflicts the
>> better).
>> 
>> Cheers,
>> Jeff.
> 
> I do not want to modify myself the code associated to TEXT_CTRL_EVAL, because  do not really know
> this code.
> 
> This is the reason my fix does not really change the current code.
> 
> I'll leave these changes to guys who know the NumericEvaluator code.
> 
>> 
>> 
>>> On 25 Feb 2018, at 12:40, Michael Geselbracht <mgeselbracht3@xxxxxxxxx
>>> <mailto:mgeselbracht3@xxxxxxxxx>> wrote:
>>> 
>>> The original idea was to have one evaluator object per dialog so that several text entries could
>>> access a common set of variables.
>>> Now that there is one evaluator object per entry field I think there is no reason to retain the
>>> (single) input text in clear().
>>> If there is ever to be support for variables the class could be extended to support a shared
>>> object with a map of variables. This could be useful in the footprint editor.
>>> 
>>> 
>>> 
>>> On 25.02.2018 12:37, Jeff Young wrote:
>>>> Hmmm, pObj isn’t stored.  Since we use an instance of NumericEvaluator for each control, we don’t
>>>> actually need the storage to be a map (there’s only ever one key in it).  For now, probably
>>>> easiest to just do:
>>>> 
>>>>  NumericEvaluator::clear(constvoid*pObj)
>>>>  {
>>>> free(clToken.token);
>>>> clToken.token=nullptr;
>>>> clToken.input=nullptr;
>>>> bClError=true;
>>>> +
>>>> +if(bClTextInputStorage)
>>>> +clObjMap.clear();
>>>>  }
>>>> 
>>>> 
>>>>> On 25 Feb 2018, at 11:26, Jeff Young <jeff@xxxxxxxxx <mailto:jeff@xxxxxxxxx>> wrote:
>>>>> 
>>>>> Hi JP,
>>>>> 
>>>>> Rather than calling evaluate() in the new TEXT_CTRL_EVAL::SetValue(), I’d call clear(), and add
>>>>> these two lines to NumericEvaluator::clear():
>>>>> 
>>>>> void
>>>>>  NumericEvaluator::clear()
>>>>>  {
>>>>> free(clToken.token);
>>>>> clToken.token=nullptr;
>>>>> clToken.input=nullptr;
>>>>> bClError=true;
>>>>> +
>>>>> +if(bClTextInputStorage)
>>>>> +clObjMap[pObj]=nullptr;
>>>>>  }
>>>>> That will zero out the stored text.
>>>>> 
>>>>> Cheers,
>>>>> Jeff.
>>>>> 
>>>>> 
>>>>> 
>>>>>> On 25 Feb 2018, at 10:17, jp charras <jp.charras@xxxxxxxxxx <mailto:jp.charras@xxxxxxxxxx>> wrote:
>>>>>> 
>>>>>> Hi Orson,
>>>>>> 
>>>>>> Could you have a look into this small patch.
>>>>>> I am not sure I used the better way to fix an issue.
>>>>>> 
>>>>>> It fixes an issue when using SetValue() to change the value shown by this widget.
>>>>>> 
>>>>>> The issue was due to the fact TEXT_CTRL_EVAL stores internally the last entered value in a buffer.
>>>>>> So when calling SetValue() after a value was already entered, and if we try to modify
>>>>>> the displayed value by calling SetValue(), as soon as the widget has the focus, the previous value
>>>>>> replaces the new value.
>>>>>> 
>>>>>> This is easy to see in Move Exactly dialog:
>>>>>> - enter a value
>>>>>> - reset the value by the Reset button
>>>>>> - move the cursor to the corresponding text control widgets and click on it to give it the focus.
>>>>>> 
>>>>>> -- 
>>>>>> Jean-Pierre CHARRAS
>>>>>> <fix_text_ctrl_eval_SetValue.patch>_______________________________________________
>>>>>> Mailing list: https://launchpad.net/~kicad-developers <https://launchpad.net/%7Ekicad-developers>
>>>>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>>>>>> Unsubscribe : https://launchpad.net/~kicad-developers <https://launchpad.net/%7Ekicad-developers>
>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>> 
>>>>> _______________________________________________
>>>>> Mailing list: https://launchpad.net/~kicad-developers <https://launchpad.net/%7Ekicad-developers>
>>>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>>>>> Unsubscribe : https://launchpad.net/~kicad-developers <https://launchpad.net/%7Ekicad-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
>>> 
>>> 
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~kicad-developers <https://launchpad.net/%7Ekicad-developers>
>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>>> Unsubscribe : https://launchpad.net/~kicad-developers <https://launchpad.net/%7Ekicad-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
>> 
> 
> 
> -- 
> Jean-Pierre CHARRAS
> 
> _______________________________________________
> 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