kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #09710
Re: Locale fix in KiCAD is not working (breaks my build)
sprintf and others will render also using the LC_NUMERIC, or locale set in program, yet looking
how to workaround this...
http://www.stroustrup.com/3rd_loc.pdf
Miguel Angel Ajo
http://www.nbee.es
+34911407752
skype: ajoajoajo
On 15/03/2013, at 11:30, Miguel Angel Ajo Pelayo <miguelangel@xxxxxxx> wrote:
> Thanks edwin, I will try to fix it this night with a 2.8 compatible solution,
>
> Also thanks a lot for the suggestion,
>
> Anyway, I don't like changing the locale back and forth, I know the risk
> is minimal, but in a multithreading UI environment It could break anything
> running/displaying/printing elsewhere.
>
> So, for the moment I will stay with a replace solution, or use a system printf
> ignoring the locale settings. I will check for that other option on the change.
>
> My solution could break if we go into a locale that sets numbers like 1.000.000,1111
>
>
> I'll change that in a few minutes and re-commit.
>
>
>
> Miguel Angel Ajo
> http://www.nbee.es
> +34911407752
> skype: ajoajoajo
>
> On 15/03/2013, at 11:25, Edwin van den Oetelaar <oetelaar.automatisering@xxxxxxxxx> wrote:
>
>> Hello Miguel,
>>
>> My WX is 2.8
>>
>> Your WX is 2.9 I guess
>> http://wiki.wxwidgets.org/Converting_everything_to_and_from_wxString
>>
>> I think there should be a cleaner way to handle this kind of thing.
>> (comma/dot in floating point)
>> Would it be possible to set LC_NUMERIC someway?
>>
>> char prvlocale[255];
>> strcpy( prvlocale, wxSetlocale(LC_NUMERIC, NULL) );
>> const char *oldLocale = wxSetlocale(LC_NUMERIC, "C");
>>
>> /* DO STUFF HERE */
>>
>> if ( !oldLocale )
>> {
>> /* the current locale was not changed; no need to */
>> /* restore the previous one... */
>> } else {
>> /* restore the original locale */
>> wxSetlocale(LC_NUMERIC, prvlocale);
>> }
>>
>> /home/oetelaar/kicad_dev/kicad/pcbnew/footprint_wizard.cpp: In member
>> function ‘void FOOTPRINT_WIZARD_FRAME::ParametersUpdated(wxGridEvent&)’:
>> /home/oetelaar/kicad_dev/kicad/pcbnew/footprint_wizard.cpp:190: error:
>> no matching function for call to ‘wxString::Replace(const char [2],
>> const char [2])’
>> /usr/include/wx-2.8/wx/string.h:1173: note: candidates are: size_t
>> wxString::Replace(const wxChar*, const wxChar*, bool)
>> make[2]: *** [pcbnew/CMakeFiles/_pcbnew.dir/footprint_wizard.cpp.o] Error 1
>> make[1]: *** [pcbnew/CMakeFiles/_pcbnew.dir/all] Error 2
>
Follow ups
References