Обсуждение: Mac Language and _()
I've isolated the pgAdmin3 crash on Mac:
listViews->AddPage(properties, _("Properties")); //
NBP_PROPERTIES
This fails, but this:
listViews->AddPage(properties, wxT("Properties")); //
NBP_PROPERTIES
succeeds, so clearly there is something amiss with the
unicode/translation stuff. It probably has something to do with the
fact that pgAdmin3 thinks I'm Chinese. I'm not sure what to do
next...any ideas?
ahp
Adam H.Pendleton wrote:
> I've isolated the pgAdmin3 crash on Mac:
>
> listViews->AddPage(properties, _("Properties")); // NBP_PROPERTIES
>
> This fails, but this:
>
> listViews->AddPage(properties, wxT("Properties")); // NBP_PROPERTIES
>
> succeeds, so clearly there is something amiss with the
> unicode/translation stuff. It probably has something to do with the
> fact that pgAdmin3 thinks I'm Chinese. I'm not sure what to do
> next...any ideas?
Maybe your mac detects the missing the slant eyes :-)
First you can remove language files, in that case it should fall back to
english.
Still, in any case a wrong/missing translation may not result in an
invalid string, apparently that's what's happening.
It might be quite hard to locate this with pgadmin sources. AFAIR
there's a locale sample in wx, can you try that?
Regards,
Andreas
Adam H. Pendleton wrote:
>
> Okay, removing the language files did the trick,
Good for the start, so this is a separated issue. This is hopefully
reproducable using a wx sample.
> though I still get the
> assert. Now the program runs but there are some minor problems. For
> starters, the "Cancel" button on dialogs doesn't work,
That's because the event is registered on wxID_CANCEL, which is not the
same as XRCID("wxID_CANCEL") although it should be.
Please set a breakpoint at contrib/src/xrc/xmlres.cpp line 1218 or so.
This is XRCID_Lookup, which retrieves an id from a string. It's called
from c++ runtime initialization code, to set all that
EVT_xxx(XRCID("...") ) stuff. Apparently, there's some other source
calling this, because there's no occurrence of XRCID("wxID_CANCEL") in
pgadmin's sources.
This initializer code is called before some other code is executed,
which assigns those well-known id values to the id strings (this is done
in xmlres.cpp AddStdXRCID_Records). If this code is not called prior to
requesting an XRCID for a well-known id string, a new id is generated
(which we don't like for wxID***) and the assert mentioned will rise.
With that breakpoint set, you'll get >300 calls, which is too much to
trace. You can remove all EVT_*** in any ui/*.cpp between
BEGIN_EVENT_TABLE and END_EVENT_TABLE; after that, there should be no
more call to to XRCID_Lookup before AddStdXRCID_Records(). Apparently on
Mac there *is* an illegal call, you'll catch it hopefully like this.
and the dialog
> sizes are messed up. I have attached two screenshots to show what I mean.
Obviously wxNotebook is f***ed up on mac. Could you please test this on
a wx sample?
Regards,
Andreas
On Sep 21, 2004, at 1:30 PM, Andreas Pflug wrote: > Maybe your mac detects the missing the slant eyes :-) > > First you can remove language files, in that case it should fall back > to english. > > Still, in any case a wrong/missing translation may not result in an > invalid string, apparently that's what's happening. > > It might be quite hard to locate this with pgadmin sources. AFAIR > there's a locale sample in wx, can you try that? Sorry it's taken so long to get back to you on this. The "internat" wxWidgets sample works correctly on my Mac. When I run it, I get the language selection dialog, then I get French, English, German, etc. menus depending on which language I select. Looks like I'm probably doing something wrong when I build pgAdmin3. ahp