The '_declspec' modifier is deprecated since the migration from Win16 to Win32, so by long time.
The correct modifier to be used for modern code is '__declspec', with two underscore characters as prefix.
MSVC can recognize both modifiers and '_declspec' has the same effect of '__declspec', depending on the presence of '/Za' option, which activates/deactivates the language extensions:
https://docs.microsoft.com/it-it/cpp/cpp/declspec?view=vs-2019
Unfortunately, GCC supports only '__declspec', so I recommend to use this one and also MSVC will be able to work indipendently from the language extensions. Since Audacity does not compile on anything less than GCC 4.9, it is not a big problem to use the same thing for _WIN32 in general, not only MSVC, and also Cygwin.
On Windows, the CONST macro is already defined by system include files.
MSVC tolerates that, but this is fatal for GCC.
The CONST macro is unused in this source anyways, so it would be worth to remove it.
FileDialog goes into audacity/src/widgets and the mod-* directories go into
audacity/modules.
This leaves nothing in lib-src that isn't a 3rd-party libs or supporting
files.
... Note that par1str and par2str aren't even shown, but comment out. Yet, I
did the work on them to serve as examples for the future.
Note the use of contexts too. Be aware of case distinctions that some languages
make.
... also restore the intended meaning of "allowDup" (for debugging checks only),
which had never been properly implemented because the label, not the
accelerator, was scanned for it; see commit f2f7568
I'm not sure exactly when the Window menu started working again,
but when built with wx313, the system provides the Window menu
just fine on all OSX versions from 10.7 - 10.15.
... and recompute popup menu tables that depend on preferences.
The code for labels in the rulers was unsatisfactory because
(1) rescanning and editing the post-translation strings is a hack to avoid, and
(2) separating the hints like "Shift-Left-Click" with a tab character made them
invisible on Mac. So instead, append strings like " (Shift-Left-Click)"
... Don't concatenate strings just to compare. Just do easy tuple comparisons.
Results might be different in case one plugin's symbol name, vendor, or family
is a prefix of the other one's.
... That is, present translators with msgids containing only the descriptions
of the file types. No punctuation.
This eliminates the last wxFileDialog, replacing it with FileDialogWrapper.